pax_global_header00006660000000000000000000000064143461313650014520gustar00rootroot0000000000000052 comment=90a2c8b8e5fd57bbda52aa700c1f663fd1d9f9ca belle-sip-5.2.0+dfsg/000077500000000000000000000000001434613136500143175ustar00rootroot00000000000000belle-sip-5.2.0+dfsg/.clang-format000066400000000000000000000036721434613136500167020ustar00rootroot00000000000000--- # BasedOnStyle: LLVM AccessModifierOffset: -2 AlignAfterOpenBracket: true AlignEscapedNewlinesLeft: false AlignOperands: true AlignTrailingComments: true AllowAllParametersOfDeclarationOnNextLine: true AllowShortBlocksOnASingleLine: false AllowShortCaseLabelsOnASingleLine: false AllowShortFunctionsOnASingleLine: false AllowShortIfStatementsOnASingleLine: false AllowShortLoopsOnASingleLine: false AlwaysBreakAfterDefinitionReturnType: false AlwaysBreakBeforeMultilineStrings: false AlwaysBreakTemplateDeclarations: false BinPackArguments: true BinPackParameters: true BreakBeforeBinaryOperators: None BreakBeforeBraces: Attach BreakBeforeTernaryOperators: true BreakConstructorInitializersBeforeComma: false ColumnLimit: 120 CommentPragmas: '^ IWYU pragma:' ConstructorInitializerAllOnOneLineOrOnePerLine: false ConstructorInitializerIndentWidth: 4 ContinuationIndentWidth: 4 Cpp11BracedListStyle: true DerivePointerAlignment: false DisableFormat: false ExperimentalAutoDetectBinPacking: false ForEachMacros: [ foreach, Q_FOREACH, BOOST_FOREACH ] IndentCaseLabels: false IndentFunctionDeclarationAfterType: false IndentWidth: 4 IndentWrappedFunctionNames: false KeepEmptyLinesAtTheStartOfBlocks: true Language: Cpp MaxEmptyLinesToKeep: 1 NamespaceIndentation: None ObjCBlockIndentWidth: 2 ObjCSpaceAfterProperty: false ObjCSpaceBeforeProtocolList: true PenaltyBreakBeforeFirstCallParameter: 19 PenaltyBreakComment: 300 PenaltyBreakFirstLessLess: 120 PenaltyBreakString: 1000 PenaltyExcessCharacter: 1000000 PenaltyReturnTypeOnItsOwnLine: 60 PointerAlignment: Right SpaceAfterCStyleCast: false SpaceBeforeAssignmentOperators: true SpaceBeforeParens: ControlStatements SpaceInEmptyParentheses: false SpacesBeforeTrailingComments: 1 SpacesInAngles: false SpacesInContainerLiterals: true SpacesInCStyleCastParentheses: false SpacesInParentheses: false SpacesInSquareBrackets: false Standard: Cpp11 TabWidth: 4 UseTab: Always ... belle-sip-5.2.0+dfsg/.cproject000066400000000000000000000456521434613136500161450ustar00rootroot00000000000000 make install true true true make CFLAGS="-g -Wall " -j3 all true true true make CFLAGS="-g -Wall " -j3 test true true true belle-sip-5.2.0+dfsg/.git-pre-commit000077500000000000000000000043501434613136500171620ustar00rootroot00000000000000#!/bin/bash # This hook purpose is to keep coding style consistent between all developers # It is automatically installed in .git/hooks folder by cmake on first run. # From https://github.com/tatsuhiro-t/nghttp2/blob/master/pre-commit function invalid-format-detected { cat git-clang-format.diff echo "*****************" echo "$0: Invalid coding style detected (see git-clang-format.diff for issues). Please correct it using one of the following:" echo "1) Apply patch located at git-clang-format.diff using:" echo " cd $(git rev-parse --show-toplevel) && $1" echo "2) Use clang-format to correctly format source code using:" echo " $2" echo "3) Reformat these lines manually." echo "*** Aborting commit.***" exit 1 } function git-clang-format-diffing { format_diff=$(which git-clang-format) format_diff_options="--style=file" #only diffing commited files, ignored staged one $format_diff $format_diff_options --diff $(git --no-pager diff --cached --name-status | grep -v '^D' | cut -f2) > git-clang-format.diff if ! grep -q -E '(no modified files to format|clang-format did not modify any files)' git-clang-format.diff; then invalid-format-detected "git apply git-clang-format.diff" "clang-format $format_diff_options -i " fi } function clang-format-diff-diffing { format_diff=$(find /usr/bin/ -name 'clang-format-diff*' -type f | tail -n1) format_diff_options="-style file" git diff-index --cached --diff-filter=ACMR -p HEAD -- | $format_diff $format_diff_options -p1 > git-clang-format.diff if [ -s git-clang-format.diff ]; then invalid-format-detected "patch -p0 < git-clang-format.diff" "${format_diff/-diff/} $format_diff_options -i " fi } set -e if which git-clang-format &>/dev/null; then git-clang-format-diffing $@ elif [ ! -z "$(find /usr/bin/ /usr/local/bin/ /opt/bin/ -name 'clang-format-diff*' -type f 2>/dev/null)" ]; then # Warning! We need at least version 1.6... clang-format-diff-diffing $@ else echo "$0: Please install clang-format (coding style checker) - could not find git-clang-format nor clang-format-diff in PATH. Skipping code verification..." exit 0 fi belle-sip-5.2.0+dfsg/.github/000077500000000000000000000000001434613136500156575ustar00rootroot00000000000000belle-sip-5.2.0+dfsg/.github/ISSUE_TEMPLATE/000077500000000000000000000000001434613136500200425ustar00rootroot00000000000000belle-sip-5.2.0+dfsg/.github/ISSUE_TEMPLATE/bug_report.yml000066400000000000000000000134721434613136500227440ustar00rootroot00000000000000--- name: Bug report description: File a bug/issue title: "[Bug]: " labels: ["bug"] body: - type: markdown attributes: value: '# Reminder' - type: markdown attributes: value: | The responses are provided by the **community** and, on a **best effort** basis, by some Belledonne Communications SARL engineers working on Linphone and its related projects. The community means any people all around the world simply willing to participate to the discussions. Belledonne Communications SARL **disclaims any WARRANTY** that the content posted on github issues or mailing lists is technically correct. Responses from Belledonne Communications SARL engineers shall be considered as individual contributions and shall not be seen as Belledonne Communications's official point of view or commitment. The Github issue tracker must be seen as a place for **collaboration**. Issues submitted should be of general interest, in the goal of improving the software. Consider that a **well documented** issue (with precise reproduction procedure, logs, stack trace if relevant, possibly a corrective patch) has a higher chance to receive interest and feedback from community members and Belledonne Communications' engineers. __Issues poorly documented, with no facts, or asking for debugging assistance for a custom app using Linphone's libraries, or for a modified version of Linphone are unlikely to receive any kind of response.__ People using Linphone or its related projects within the scope of their company job are invited to contact [Belledonne Communications](https://linphone.org/contact#content-bottom3) in order to obtain commercial support. - type: markdown attributes: value: | # Well ordered issues are treated issues **In our apps, the [Linphone-SDK](https://github.com/BelledonneCommunications/linphone-sdk) is used.** Please report your issue here **ONLY** if you are sure that the origin of the error is in this module. Otherwise, open an issue in the repository of the app you are using or in the Linphone-SDK, and we will move it to the related module. - type: markdown attributes: value: | # Useful links [Linphone.org](https://linphone.org) [Linphone commercial contact](https://linphone.org/contact#content-bottom3) Linphone Vulnerability/Security contact: vulnerabilities@linphone.org [Contributor agreement (to sign and to return to sales@belledonne-communications.com for a pull request)](https://linphone.org/sites/default/files/bc-contributor-agreement_0.pdf) - type: textarea attributes: label: | Context description: | - For which purpose do you use the project ? - With which software/hardware it is integrated ? - Did you use sip.linphone.org or a different SIP service (in this case specify which one and which version) ? value: | I use this project in a custom app running on Linux with the sip.linphone.org service for my company. I want to do a simple call between an Android phone and a Linux client. There is an error with a method of this project and I'm sure that I followed the documentation and double checked before posting. validations: required: true - type: textarea attributes: label: General information description: | Complete it multiple time if there are multiple devices involved. Please note that the issue has more chances to be read if you report a bug seen in the latest version of the module. Ex: - Device: [e.g. Samsung Note 20 Ultra] - OS: [e.g. Android 11] - Version of the App [e.g. 4.3.1] - Version of the SDK [e.g 4.4.16] value: | - Device: - OS: - Version of the App: - Version of the SDK: validations: required: true - type: textarea attributes: label: Expected behaviour description: "A clear and concise description of what you expected to happen." value: | I wanted to do a simple call with the Linux client calling the Android phone. However, the phone doesn't ring when it is asleep. validations: required: true - type: textarea attributes: label: To Reproduce description: "Steps to reproduce the behavior:" value: | 1. Go to '...' 2. Click on '....' 3. Scroll down to '....' 4. See error validations: required: true - type: textarea attributes: label: 'Additional context' value: Add any other context about the problem here. - type: markdown attributes: value: | # Logs ## Module logs Enable debug logs in advanced section of the settings, restart the app, reproduce the issue and then go to About page, click on "Send logs" and copy/paste the link here. If you doesn't have such an option, just provide the logs in attachments. - type: input attributes: label: 'SDK logs URL' - type: markdown attributes: value: | ## Module crash logs In case of a crash related to this module, please also provide the backtrace of the crash in attachments using adb logcat (Android) or the device console (iOS). For desktop versions, you can get the backtrace from a core dump. - type: markdown attributes: value: | # Screenshots Please add screenshots in attachments to help us to understand your problem. - type: markdown attributes: value: | # Pcap file If this is a network issue, join a pcap file of your attempt in attachments (done with Wireshark or TCPDump, for example) belle-sip-5.2.0+dfsg/.gitignore000066400000000000000000000012621434613136500163100ustar00rootroot00000000000000INSTALL aclocal.m4 *~ configure Makefile.in Makefile build-aux m4 autom4te.cache *.o *.lo *.la config.log config.status .deps .libs libtool compile depcomp missing install-sh config.guess config.h.in config.sub ltmain.sh stamp-h1 .anjuta belle-sip.anjuta .kdev4/ belle-sip.kdev4 config.h src/specs.c belle-sip.pc belle-sip.spec html/ *.orig tester/belle_sip_object_describe tester/belle_sip_parse tester/belle_sip_tester tester/belle_http_get tester/belle_sip_resolve tester/CUnitAutomated-Results.xml tester/download.tar.gz tester/tmp_resolv.conf tester/belle_sip_tester_crt tester/CUnitAutomated-Results.xml.tmp-Results.xml belle-sip-tests.log git-clang-format.diff .bc_tester_utils.tmp belle-sip-5.2.0+dfsg/.project000066400000000000000000000053541434613136500157750ustar00rootroot00000000000000 belle-sip org.eclipse.cdt.managedbuilder.core.genmakebuilder clean,full,incremental, ?name? org.eclipse.cdt.make.core.append_environment true org.eclipse.cdt.make.core.autoBuildTarget all org.eclipse.cdt.make.core.buildArguments CFLAGS="-g -Wall " V=1 org.eclipse.cdt.make.core.buildCommand make org.eclipse.cdt.make.core.cleanBuildTarget clean org.eclipse.cdt.make.core.contents org.eclipse.cdt.make.core.activeConfigSettings org.eclipse.cdt.make.core.enableAutoBuild false org.eclipse.cdt.make.core.enableCleanBuild true org.eclipse.cdt.make.core.enableFullBuild true org.eclipse.cdt.make.core.fullBuildTarget all org.eclipse.cdt.make.core.stopOnError true org.eclipse.cdt.make.core.useDefaultBuildCmd false org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder full,incremental, org.eclipse.cdt.core.cnature org.eclipse.cdt.managedbuilder.core.managedBuildNature org.eclipse.cdt.managedbuilder.core.ScannerConfigNature 1329213830469 22 org.eclipse.ui.ide.multiFilter 1.0-name-matches-false-false-*.lo 1329213830473 22 org.eclipse.ui.ide.multiFilter 1.0-name-matches-false-false-*.o belle-sip-5.2.0+dfsg/AUTHORS.md000066400000000000000000000001101434613136500157560ustar00rootroot00000000000000Belledonne Communications SARL belle-sip-5.2.0+dfsg/CHANGELOG.md000066400000000000000000000056361434613136500161420ustar00rootroot00000000000000# Changelog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] ## [5.2.0] - 2022-11-07 ## Added - Support for authentication headers with multiple challenges. ## Fixed - various weaknesses within multipart decoding process. - endless UDP transaction in a specific scenario. - crash on iOS 16 because of kCFStreamNetworkServiceTypeVoIP that no longer works. - crashes. ## [5.1.0] - 2022-02-14 ### Fixed - Multipart boundaries are random and used-once. - Avoid using V4MAPPED formatted IP addresses in CONNECT http requests, because http proxies may not be always IPv6-capable. ## [5.0.0] - 2021-07-08 ### Added - Added SDP API for Capability Negociation headers (RFC5939). ### Changed - SDP parser no longer uses antlr, but belr. ### Fixed - Erroneous closing of file description 0, causing unexpected behaviors. - Crash when receiving invalid from header. ## [4.5.0] - 2021-03-29 ### Changed - Use DNSService framework on iOS, to workaround the local network permission request triggered on iOS >= 14 ### Fixed - Fix routing according to RFC3263: uri with a port number shall not be resolved with SRV. - See git commits for full list of fixes. ## [4.4.0] - 2020-06-09 ### Added - New C++ facilities: * HybridObject implements toString() using typeid() operator. * Mainloop's do_later() and create_timer() with lambdas. - Session-Expires header ### Changed - version number is aligned for all components of linphone-sdk, for simplicity. - Via header parsing is more tolerant, following recommandation of https://tools.ietf.org/html/rfc5118#section-4.5 ### Fixed - bad channel selection in some specific cases. - an undefined behavior and a memory leak when timer is added with an interval greater than MAX_INT. - accumulation of data in main loop's control file descriptor (for use with threads). ## [1.7.0] - 2019-09-06 ### Added - RFC3262 (100 rel) support. - Use maddr for http uris. ### Changed - License is now GPLv3. ### Removed - Some useless files. ## [1.6.0] - 2017-02-23 ## [1.5.0] - 2016-08-16 ### Added - support for zlib in body handling. ### Changed - move general purpose and encryption related functions to bctoolbox, which becomes a mandatory dependency. - mbedTLS support through bctoolbox. - SUBSCRIBE/NOTIFY dialog improvements: can be created upon reception of NOTIFY (as requested by RFC), automatic deletion when dialog expires. ### Fixed - retransmit 200Ok of a reINVITE (was formely only done for initial INVITE) ## [1.4.0] - 2015-03-11 ### Added - Accept, Content-Disposition and Supported headers. - Support of display names of type (token LWS)* instead of just token. - Support for absolute URIs. ### Fixed - various things. ## [1.3.0] - 2014-09-18 ### Added - First mature version of belle-sip. belle-sip-5.2.0+dfsg/CMakeLists.txt000066400000000000000000000224731434613136500170670ustar00rootroot00000000000000# CMakeLists.txt # Copyright (C) 2010-2021 Belledonne Communications, Grenoble France # ############################################################################ # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # ############################################################################ cmake_minimum_required(VERSION 3.1) # CMP0077 policy is required by Flexisip build. Remove it once the CMake required # version is higer or equal to 3.13. if(NOT CMAKE_VERSION VERSION_LESS 3.13) cmake_policy(SET CMP0077 NEW) endif() project(belle-sip VERSION 5.2.0 LANGUAGES C CXX) set(PACKAGE "${PROJECT_NAME}") set(PACKAGE_NAME "${PROJECT_NAME}") set(PACKAGE_VERSION "${PROJECT_VERSION}") set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}") set(PACKAGE_BUGREPORT "jehan.monnier@linphone.org") set(PACKAGE_TARNAME "${PROJECT_NAME}") set(PACKAGE_URL "") set(VERSION "${PACKAGE_VERSION}") set(BELLESIP_SO_VERSION 1) # set for 4.4.0 release. option(ENABLE_SHARED "Build shared library." YES) option(ENABLE_STATIC "Build static library." YES) option(ENABLE_RTP_MAP_ALWAYS_IN_SDP "Always include rtpmap in SDP." OFF) option(ENABLE_STRICT "Build with strict compile options." YES) option(ENABLE_TUNNEL "Enable tunnel support" OFF) option(ENABLE_TESTS "Enable compilation of tests" ON) option(ENABLE_MDNS "Enable multicast DNS" OFF) option(ENABLE_PACKAGE_SOURCE "Create 'package_source' target for source archive making (CMake >= 3.11)" OFF) # Hidden non-cache options: # * DISABLE_BC_PACKAGE_SEARCH: skip find_package() for every BC package (bctoolbox, ortp, etc.) include(CheckLibraryExists) include(CheckSymbolExists) include(CheckCSourceCompiles) include(CMakePushCheckState) include(GNUInstallDirs) include(CMakeDependentOption) CMAKE_DEPENDENT_OPTION(ENABLE_DNS_SERVICE "Enable Apple DNS Service. Available on Mac and iOS. Incompatible with ENABLE_MDNS." ON "APPLE" OFF) if(NOT CMAKE_INSTALL_RPATH AND CMAKE_INSTALL_PREFIX) set(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_FULL_LIBDIR}) message(STATUS "Setting install rpath to ${CMAKE_INSTALL_RPATH}") endif() set(MSVC_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/include/MSVC") if(MSVC) list(APPEND CMAKE_REQUIRED_INCLUDES ${MSVC_INCLUDE_DIR}) endif() list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") check_library_exists("dl" "dlopen" "" HAVE_LIBDL) check_library_exists("rt" "clock_gettime" "" HAVE_LIBRT) cmake_push_check_state(RESET) check_symbol_exists("res_ndestroy" "resolv.h" HAVE_RES_NDESTROY) set(CMAKE_REQUIRED_LIBRARIES resolv) check_c_source_compiles("#include int main(int argc, char *argv[]) { res_getservers(NULL,NULL,0); return 0; }" HAVE_RES_GETSERVERS) if(HAVE_RES_NDESTROY AND HAVE_RES_GETSERVERS) set(HAVE_RESINIT 1) endif() cmake_pop_check_state() find_package(Threads) find_package(ZLIB) if(NOT DISABLE_BC_PACKAGE_SEARCH) find_package(belr REQUIRED CONFIG) endif() if(ENABLE_RTP_MAP_ALWAYS_IN_SDP) set(BELLE_SDP_FORCE_RTP_MAP 1) endif() if(NOT DISABLE_BC_PACKAGE_SEARCH) find_package(bctoolbox 0.5.0 REQUIRED OPTIONAL_COMPONENTS tester) endif() if(ENABLE_TUNNEL) if(LINPHONE_BUILDER_GROUP_EXTERNAL_SOURCE_PATH_BUILDERS) include("${EP_tunnel_CONFIG_DIR}/TunnelConfig.cmake") else() find_package(Tunnel) endif() if(TUNNEL_FOUND) set(HAVE_TUNNEL 1) else() message(WARNING "Could not find the tunnel library!") set(ENABLE_TUNNEL OFF CACHE BOOL "Enable tunnel support" FORCE) endif() endif() if(ZLIB_FOUND) set(HAVE_ZLIB 1) endif() if (ENABLE_DNS_SERVICE) if(ENABLE_MDNS) message(FATAL_ERROR "ENABLE_MDNS and ENABLE_DNS_SERVICE are incompatible options") endif() if (NOT APPLE) message(FATAL_ERROR "ENABLE_DNS_SERVICE is available on APPLE platforms only") endif() message("Using Apple DNSService") set(HAVE_DNS_SERVICE 1) endif() if(ENABLE_MDNS) find_package(DNSSD REQUIRED) if(DNSSD_FOUND) set(HAVE_MDNS 1) endif() endif() configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h) set(prefix ${CMAKE_INSTALL_PREFIX}) set(exec_prefix ${prefix}/${CMAKE_INSTALL_BINDIR}) set(libdir ${prefix}/${CMAKE_INSTALL_LIBDIR}) set(includedir ${prefix}/include) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/belle-sip.pc.in ${CMAKE_CURRENT_BINARY_DIR}/belle-sip.pc) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/belle-sip.pc DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig") include_directories( include src ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_BINARY_DIR}/src ) if(TUNNEL_FOUND) include_directories(${TUNNEL_INCLUDE_DIRS}) endif() if(ZLIB_FOUND) include_directories(${ZLIB_INCLUDE_DIRS}) endif() if(DNSSD_FOUND) include_directories(${DNSSD_INCLUDE_DIRS}) endif() if(MSVC) include_directories(${MSVC_INCLUDE_DIR}) endif() add_definitions("-DHAVE_CONFIG_H") set(STRICT_OPTIONS_CPP ) set(STRICT_OPTIONS_C ) set(STRICT_OPTIONS_OBJC "-fmodules") if(MSVC) list(APPEND STRICT_OPTIONS_CPP "/wd4068") # Disable "unknown pragma" warnings from antlr. list(APPEND STRICT_OPTIONS_CPP "/wd4129") # Disable "unrecognized character escape sequence" warnings from antlr. list(APPEND STRICT_OPTIONS_CPP "/wd4996") # Disable POSIX functions warnings from bctbx. if(ENABLE_STRICT) list(APPEND STRICT_OPTIONS_CPP "/WX") endif() else() list(APPEND STRICT_OPTIONS_CPP "-Wall" "-Wuninitialized" "-Wno-error=deprecated-declarations") if(CMAKE_C_COMPILER_ID MATCHES "Clang") list(APPEND STRICT_OPTIONS_CPP "-Wno-error=unknown-warning-option" "-Qunused-arguments" "-Wno-tautological-compare" "-Wno-builtin-requires-header" "-Wno-unused-function" "-Wno-gnu-designator" "-Wno-array-bounds") elseif(CMAKE_C_COMPILER_ID STREQUAL "GNU") list(APPEND STRICT_OPTIONS_C "-Werror=vla") # Forbids usage of variable length arrays since Visual Studio's compiler does not support them. list(APPEND STRICT_OPTIONS_CPP "-Wno-error=pragmas") if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 8) list(APPEND STRICT_OPTIONS_C "-Wno-error=cast-function-type" ) endif() endif() if(APPLE) list(APPEND STRICT_OPTIONS_CPP "-Wno-error=unknown-warning-option" "-Qunused-arguments" "-Wno-tautological-compare" "-Wno-unused-function" "-Wno-array-bounds") endif() if(ENABLE_STRICT) list(APPEND STRICT_OPTIONS_CPP "-Werror" "-Wextra" "-Wno-unused-parameter" "-Wno-error=unknown-pragmas" "-Wuninitialized" "-fno-strict-aliasing") list(APPEND STRICT_OPTIONS_C " -Wno-missing-field-initializers" "-Wno-error=unused-result" "-Wno-cast-function-type") endif() # this warning is generated by antlr so ignore it for now list(APPEND STRICT_OPTIONS_C "-Wno-error=sign-compare") endif() if(STRICT_OPTIONS_CPP) list(REMOVE_DUPLICATES STRICT_OPTIONS_CPP) endif() if(STRICT_OPTIONS_C) list(REMOVE_DUPLICATES STRICT_OPTIONS_C) endif() set(LINK_FLAGS ) if(APPLE) list(APPEND LINK_FLAGS "-framework Foundation") if(IOS) list(APPEND LINK_FLAGS "-framework CoreFoundation" "-framework CFNetwork" "-framework UIKit") endif() endif() string(REPLACE ";" " " LINK_FLAGS_STR "${LINK_FLAGS}") set(BELLESIP_CPPFLAGS ${BCTOOLBOX_CPPFLAGS}) if(ENABLE_STATIC) list(APPEND BELLESIP_CPPFLAGS "-DBELLESIP_STATIC") endif() if(BELLESIP_CPPFLAGS) list(REMOVE_DUPLICATES BELLESIP_CPPFLAGS) add_definitions(${BELLESIP_CPPFLAGS}) endif() add_definitions("-DBELLESIP_EXPORTS") if(CMAKE_SYSTEM_NAME STREQUAL "WindowsPhone") add_definitions( -DHAVE_COMPILER_TLS -DUSE_FIXED_NAMESERVERS -DUSE_GETADDRINFO_FALLBACK ) elseif (CMAKE_SYSTEM_NAME STREQUAL "WindowsStore") add_definitions( -DHAVE_COMPILER_TLS -DUSE_FIXED_NAMESERVERS ) endif() if(LINPHONE_BUILDER_GROUP_EXTERNAL_SOURCE_PATH_BUILDERS) set(EXPORT_TARGETS_NAME "LinphoneBuilder") else() set(EXPORT_TARGETS_NAME "BelleSIP") endif() add_subdirectory(include) add_subdirectory(src) if(ENABLE_TESTS) enable_testing() add_subdirectory(tester) endif() include(CMakePackageConfigHelpers) set(CONFIG_PACKAGE_LOCATION "${CMAKE_INSTALL_LIBDIR}/cmake/BelleSIP") write_basic_package_version_file( "${CMAKE_CURRENT_BINARY_DIR}/BelleSIPConfigVersion.cmake" VERSION ${PACKAGE_VERSION} COMPATIBILITY AnyNewerVersion ) if(LINPHONE_BUILDER_GROUP_EXTERNAL_SOURCE_PATH_BUILDERS) export(EXPORT ${EXPORT_TARGETS_NAME}Targets FILE "${CMAKE_CURRENT_BINARY_DIR}/BelleSIPTargets.cmake" ) endif() configure_package_config_file(cmake/BelleSIPConfig.cmake.in "${CMAKE_CURRENT_BINARY_DIR}/BelleSIPConfig.cmake" INSTALL_DESTINATION ${CONFIG_PACKAGE_LOCATION} NO_SET_AND_CHECK_MACRO ) install(EXPORT ${EXPORT_TARGETS_NAME}Targets FILE BelleSIPTargets.cmake DESTINATION ${CONFIG_PACKAGE_LOCATION} ) #Yes, an install directive is necessary. The INSTALL_DESTINATION parameter of configure_package_config_file() above does NOTHING. install(FILES "${CMAKE_CURRENT_BINARY_DIR}/BelleSIPConfig.cmake" "${CMAKE_CURRENT_BINARY_DIR}/BelleSIPConfigVersion.cmake" DESTINATION ${CONFIG_PACKAGE_LOCATION} ) if (ENABLE_PACKAGE_SOURCE) add_subdirectory(build) endif() belle-sip-5.2.0+dfsg/LICENSE.txt000066400000000000000000000773311434613136500161550ustar00rootroot00000000000000 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS belle-sip-5.2.0+dfsg/Makefile.am000066400000000000000000000011421434613136500163510ustar00rootroot00000000000000#ACLOCAL_AMFLAGS = -I m4 SUBDIRS=include src tester all-local: belle-sip.spec belle-sip.spec: belle-sip.spec.in test: cd tester $(MAKE) -C tester test rpm: $(MAKE) dist TAR_OPTIONS=--wildcards rpmbuild -ta --clean --rmsource --rmspec $(PACKAGE)-$(VERSION).tar.gz pkgconfigdir = $(libdir)/pkgconfig pkgconfig_DATA = belle-sip.pc EXTRA_DIST= \ belle-sip.spec \ belle-sip.spec.in \ autogen.sh \ CMakeLists.txt \ cmake/BelleSIPConfig.cmake.in \ cmake/FindAntlr3.cmake \ cmake/FindZlib.cmake \ config.h.cmake \ include/CMakeLists.txt \ src/CMakeLists.txt \ tester/CMakeLists.txt \ README.md belle-sip-5.2.0+dfsg/README.md000066400000000000000000000064051434613136500156030ustar00rootroot00000000000000[![pipeline status](https://gitlab.linphone.org/BC/public/belle-sip/badges/master/pipeline.svg)](https://gitlab.linphone.org/BC/public/belle-sip/commits/master) Belle-sip ========= Overview -------- Belle-sip is a modern library implementing SIP (RFC3261) transport, transaction and dialog layers. It is written in C, with an object oriented API. It also comprises a simple HTTP/HTTPS client implementation. License ------- Copyright © Belledonne Communications Belle-sip is dual licensed, and is available either : - under a [GNU/GPLv3 license](https://www.gnu.org/licenses/gpl-3.0.en.html), for free (open source). Please make sure that you understand and agree with the terms of this license before using it (see LICENSE.txt file for details). - under a proprietary license, for a fee, to be used in closed source applications. Contact [Belledonne Communications](https://www.linphone.org/contact) for any question about costs and services. Features -------- - RFC3261 compliant implementation of SIP parser, writer, transactions and dialog layers. - SIP transaction state machines with lastest updates (RFC6026). - fully asynchronous transport layer (UDP, TCP, TLS), comprising DNS resolver (SRV, A, AAAA). - full dual-stack IPv6 support. - automatic management of request refreshes with network disconnection resiliency thanks to the "refresher" object. - supported platforms: Linux, Mac OSX, windows XP+, iOS, Android, Blackberry 10. - HTTP/HTTPS client implementation. Dependencies ------------ ### Build-time dependencies These are required to generate a C sourcefile from SIP grammar using [antlr3](http://www.antlr3.org/) generator: * [Java SE](http://www.oracle.com/technetwork/java/javase/downloads/index.html) or OpenJDK * [antlr 3.4](https://github.com/antlr/website-antlr3/blob/gh-pages/download/antlr-3.4-complete.jar) ### Runtime dependencies - *libantlr3c* version 3.2 or 3.4 - but its source is included in belle-sip, no need to install it. - *bctoolbox* (git://git.linphone.org/bctoolbox.git or ) Building belle-sip with CMake ----------------------------- cmake . make make install Generating the grammar sources ------------------------------ If you edit the `.g` files in the grammars directory you'll need to regenerate the sources. cd src/antlr3c ./generate_grammar_sources.py Build options ------------- * `CMAKE_INSTALL_PREFIX=` : install prefix. * `CMAKE_PREFIX_PATH=` : column-separated list of prefixes where to find dependencies. * `ENABLE_TESTS=NO` : disable non-regression tests. * `ENABLE_STRICT=NO` : build without strict build options like `-Wall -Werror` * `ENABLE_SHARED=NO` : do not build the shared library * `ENABLE_STATIC=NO` : do not build the static library Note for packagers ------------------ Our CMake scripts may automatically add some paths into research paths of generated binaries. To ensure that the installed binaries are striped of any rpath, use `-DCMAKE_SKIP_INSTALL_RPATH=ON` while you invoke cmake. Rpm packaging belle-sip can be generated with cmake3 using the following command: mkdir WORK cd WORK cmake3 ../ make package_source rpmbuild -ta --clean --rmsource --rmspec belle-sip--.tar.gz belle-sip-5.2.0+dfsg/autogen.sh000077500000000000000000000037471434613136500163330ustar00rootroot00000000000000#!/bin/sh ## ## Copyright (c) 2012-2019 Belledonne Communications SARL. ## ## This file is part of belle-sip. ## ## This program is free software: you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation, either version 3 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program. If not, see . ## srcdir=`dirname $0` test -z "$srcdir" && srcdir=. THEDIR=`pwd` cd $srcdir #AM_VERSION="1.10" if ! type aclocal-$AM_VERSION 1>/dev/null 2>&1; then # automake-1.10 (recommended) is not available on Fedora 8 AUTOMAKE=automake ACLOCAL=aclocal else ACLOCAL=aclocal-${AM_VERSION} AUTOMAKE=automake-${AM_VERSION} fi libtoolize="libtoolize" for lt in glibtoolize libtoolize15 libtoolize14 libtoolize13 ; do if test -x /usr/bin/$lt ; then libtoolize=$lt ; break fi if test -x /usr/local/bin/$lt ; then libtoolize=$lt ; break fi if test -x /opt/local/bin/$lt ; then libtoolize=$lt ; break fi done if test -d /usr/local/share/aclocal ; then ACLOCAL_ARGS="$ACLOCAL_ARGS -I /usr/local/share/aclocal" fi if test -d /share/aclocal ; then ACLOCAL_ARGS="$ACLOCAL_ARGS -I /share/aclocal" fi set -x rm -rf config.cache autom4te.cache $libtoolize --copy --force $ACLOCAL -I m4 $ACLOCAL_ARGS autoheader $AUTOMAKE --force-missing --add-missing --copy autoconf #install git pre-commit hooks if possible if [ -d .git/hooks ] && [ ! -f .git/hooks/pre-commit ]; then cp .git-pre-commit .git/hooks/pre-commit chmod +x .git/hooks/pre-commit fi cd $THEDIR belle-sip-5.2.0+dfsg/belle-sip.pc.in000066400000000000000000000005371434613136500171310ustar00rootroot00000000000000# This is a comment prefix=@prefix@ exec_prefix=@exec_prefix@ includedir=@includedir@ Name: belle-sip Description: A c based implementation of the SIP (RFC 3261) telephony protocol Requires: bctoolbox Requires.private: @REQUIRES_PRIVATE@ @TLS_PC@ Version: @VERSION@ Libs: -L@libdir@ -lbellesip Libs.private: @LIBS_PRIVATE@ Cflags: -I@includedir@ belle-sip-5.2.0+dfsg/belle-sip.spec.in000077500000000000000000000044401434613136500174610ustar00rootroot00000000000000# -*- rpm-spec -*- ## rpmbuild options # These 2 lines are here because we can build the RPM for flexisip, in which # case we prefix the entire installation so that we don't break compatibility # with the user's libs. # To compile with bc prefix, use rpmbuild -ba --with bc [SPEC] %define pkg_name %{?_with_bc:bc-belle-sip}%{!?_with_bc:belle-sip} %{?_with_bc: %define _prefix /opt/belledonne-communications} %define srtp %{?_without_srtp:0}%{?!_without_srtp:1} # re-define some directories for older RPMBuild versions which don't. This messes up the doc/ dir # taken from https://fedoraproject.org/wiki/Packaging:RPMMacros?rd=Packaging/RPMMacros %define _datarootdir %{_prefix}/share %define _datadir %{_datarootdir} %define _docdir %{_datadir}/doc Name: %{pkg_name} Version: @VERSION@ Release: %(version=`git describe --tags --abbrev=40 | sed -rn 's/^.*-([0-9]+)-g[a-z0-9]{40}$/\1/p'` && if test -z "$version" ; then echo 0 ; else echo $version ; fi)%{?dist} Summary: Linphone sip stack Group: Applications/Communications License: GPL URL: http://www.belle-sip.org BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) Source0: %{name}-%{version}.tar.gz %description Belle-sip is an object oriented SIP stack, written in C, used by Linphone. BuildRequires: antlr3-tool antlr3-C-devel %package devel Summary: Development libraries for belle-sip Group: Development/Libraries Requires: %{name} = %{version}-%{release} %description devel Libraries and headers required to develop software with belle-sip %prep %setup -q %build %configure \ --disable-tests --enable-static --docdir=%{_docdir} %__make %{?_smp_mflags} %install rm -rf $RPM_BUILD_ROOT make install DESTDIR=$RPM_BUILD_ROOT %clean rm -rf $RPM_BUILD_ROOT %post -p /sbin/ldconfig %postun -p /sbin/ldconfig %files %defattr(-,root,root) %doc AUTHORS ChangeLog COPYING NEWS README.md %{_libdir}/*.so.* %files devel %defattr(-,root,root) %{_includedir}/belle-sip %{_libdir}/libbellesip.a %{_libdir}/libbellesip.la %{_libdir}/libbellesip.so %{_libdir}/pkgconfig/belle-sip.pc %changelog * Mon Aug 19 2013 jehan.monnier - Initial RPM release. belle-sip-5.2.0+dfsg/build/000077500000000000000000000000001434613136500154165ustar00rootroot00000000000000belle-sip-5.2.0+dfsg/build/CMakeLists.txt000066400000000000000000000024671434613136500201670ustar00rootroot00000000000000############################################################################ # CMakeLists.txt # Copyright (C) 2010-2019 Belledonne Communications, Grenoble France # ############################################################################ # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # ############################################################################ cmake_minimum_required(VERSION 3.11) # we need CMake 3.11 for defining 'package_source' target as custom target if(NOT CPACK_PACKAGE_NAME) set(CPACK_PACKAGE_NAME "belle-sip") ENDIF() set(CPACK_SOURCE_IGNORE_FILES "${CMAKE_BINARY_DIR}" "^${PROJECT_SOURCE_DIR}/.git*" ) bc_make_package_source_target() belle-sip-5.2.0+dfsg/build/android/000077500000000000000000000000001434613136500170365ustar00rootroot00000000000000belle-sip-5.2.0+dfsg/build/android/Android.mk000066400000000000000000000051631434613136500207540ustar00rootroot00000000000000## ## Android.mk -Android build script- ## ## ## Copyright (C) 2013 Belledonne Communications, Grenoble, France ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 2 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; if not, write to the Free Software ## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ## LOCAL_PATH:= $(call my-dir)/../../src include $(CLEAR_VARS) LOCAL_MODULE := libbellesip LOCAL_CFLAGS += \ -DHAVE_CONFIG_H -DHAVE_ZLIB=1 \ -DBELLESIP_VERSION=\"$(BELLESIP_VERSION)\" LOCAL_C_INCLUDES += \ $(LOCAL_PATH)/../../externals/antlr3/runtime/C/include \ $(LOCAL_PATH)/../include \ $(LOCAL_PATH)/../build/android LOCAL_SRC_FILES := \ auth_event.c \ auth_helper.c \ belle_sdp_impl.c \ http-listener.c \ http-provider.c \ http-message.c \ generic-uri.c \ belle_sip_headers_impl.c \ belle_sip_loop.c \ grammars/belle_sip_messageLexer.c \ grammars/belle_sip_messageParser.c \ grammars/belle_sdpLexer.c \ grammars/belle_sdpParser.c \ belle_sip_object.c \ belle_sip_dict.c \ belle_sip_parameters.c \ belle_sip_resolver.c \ belle_sip_uri_impl.c \ belle_sip_utils.c \ channel.c \ clock_gettime.c \ dialog.c \ dns.c \ ict.c \ ist.c \ listeningpoint.c \ md5.c \ message.c \ nict.c \ nist.c \ port.c \ provider.c \ refresher.c \ siplistener.c \ sipstack.c \ transaction.c \ bodyhandler.c \ transports/stream_channel.c \ transports/stream_listeningpoint.c \ transports/tls_channel.c \ transports/tls_listeningpoint.c \ transports/udp_channel.c \ transports/udp_listeningpoint.c \ wakelock.c ifeq ($(BUILD_TUNNEL), 1) LOCAL_CFLAGS += -DHAVE_TUNNEL LOCAL_C_INCLUDES += $(LOCAL_PATH)/../../tunnel/include LOCAL_SRC_FILES += \ transports/tunnel_listeningpoint.c \ transports/tunnel_channel.c \ transports/tunnel_wrapper.cc endif ifeq ($(BUILD_RTP_MAP),1) LOCAL_CFLAGS += -DBELLE_SDP_FORCE_RTP_MAP endif ifeq ($(BUILD_DONT_CHECK_HEADERS_IN_MESSAGE),1) LOCAL_CFLAGS += -DBELLE_SIP_DONT_CHECK_HEADERS_IN_MESSAGE endif LOCAL_STATIC_LIBRARIES := \ antlr3 LOCAL_C_INCLUDES += $(LOCAL_PATH)/../../bctoolbox/include LOCAL_STATIC_LIBRARIES += bctoolbox include $(BUILD_STATIC_LIBRARY) belle-sip-5.2.0+dfsg/build/android/config.h000066400000000000000000000051331434613136500204560ustar00rootroot00000000000000/* config.h. Generated from config.h.in by configure. */ /* config.h.in. Generated from configure.ac by autoheader. */ /* Define to 1 if you have the header file. */ #define HAVE_ANTLR3_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_BCUNIT_BCUNIT_H */ /* defined when CU_curses_run_tests is available */ /* #undef HAVE_CU_CURSES */ /* defined when CU_get_suite is available */ /* #undef HAVE_CU_GET_SUITE */ /* Define to 1 if you have the header file. */ #define HAVE_DLFCN_H 1 /* Defined when gnutls api is available */ /* #undef HAVE_GNUTLS */ /* Define to 1 if you have the header file. */ #define HAVE_INTTYPES_H 1 /* Define to 1 if you have the `dl' library (-ldl). */ #define HAVE_LIBDL 1 /* Define to 1 if you have the `rt' library (-lrt). */ /* #undef HAVE_CLOCK_GETTIME */ #define HAVE_ZLIB 1 /* Define to 1 if you have the header file. */ #define HAVE_MEMORY_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDINT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDLIB_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STRINGS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STRING_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STAT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TYPES_H 1 /* Define to 1 if you have the header file. */ #define HAVE_UNISTD_H 1 /* Define to the sub-directory in which libtool stores uninstalled libraries. */ #define LT_OBJDIR ".libs/" /* Define to 1 if your C compiler doesn't accept -c and -o together. */ /* #undef NO_MINUS_C_MINUS_O */ /* Name of package */ #define PACKAGE "belle-sip" /* Define to the address where bug reports for this package should be sent. */ #define PACKAGE_BUGREPORT "jehan.monnier@linphone.org" /* Define to the full name of this package. */ #define PACKAGE_NAME "belle-sip" /* Define to the full name and version of this package. */ #define PACKAGE_STRING "belle-sip 0.0.1" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "belle-sip" /* Define to the home page for this package. */ #define PACKAGE_URL "" /* Define to the version of this package. */ //#define PACKAGE_VERSION "0.0.1" /* Define to 1 if you have the ANSI C header files. */ #define STDC_HEADERS 1 /* Version number of package */ #define VERSION "0.0.1" /* Defined when antlr 3.4 api is detected */ #define HAVE_ANTLR_STRING_STREAM_NEW 1 #define ENABLE_SERVER_SOCKETS 1 belle-sip-5.2.0+dfsg/build/osx/000077500000000000000000000000001434613136500162275ustar00rootroot00000000000000belle-sip-5.2.0+dfsg/build/osx/Info.plist.in000066400000000000000000000025661434613136500206150ustar00rootroot00000000000000 CFBundleDevelopmentRegion English CFBundleExecutable ${MACOSX_FRAMEWORK_NAME} CFBundleGetInfoString ${MACOSX_BUNDLE_INFO_STRING} CFBundleIconFile ${MACOSX_BUNDLE_ICON_FILE} CFBundleIdentifier ${MACOSX_FRAMEWORK_IDENTIFIER} LSMinimumSystemVersion ${MIN_OS} MinimumOSVersion ${MIN_OS} CFBundleInfoDictionaryVersion 6.0 CFBundleLongVersionString ${MACOSX_BUNDLE_LONG_VERSION_STRING} CFBundleName ${MACOSX_BUNDLE_BUNDLE_NAME} CFBundlePackageType FMWK CFBundleShortVersionString ${VERSION} CFBundleSignature ???? CFBundleVersion ${VERSION} CSResourcesFileMapped NSHumanReadableCopyright ${MACOSX_BUNDLE_COPYRIGHT} NSPrincipalClass NSApplication NSHighResolutionCapable True belle-sip-5.2.0+dfsg/build/rpm/000077500000000000000000000000001434613136500162145ustar00rootroot00000000000000belle-sip-5.2.0+dfsg/build/rpm/belle-sip.spec.cmake000077500000000000000000000052661434613136500220370ustar00rootroot00000000000000# -*- rpm-spec -*- %define _prefix @CMAKE_INSTALL_PREFIX@ %define pkg_prefix @BC_PACKAGE_NAME_PREFIX@ %define package_name @CPACK_PACKAGE_NAME@-${FULL_VERSION} # re-define some directories for older RPMBuild versions which don't. This messes up the doc/ dir # taken from https://fedoraproject.org/wiki/Packaging:RPMMacros?rd=Packaging/RPMMacros %define _datarootdir %{_prefix}/share %define _datadir %{_datarootdir} %define _docdir %{_datadir}/doc Name: @CPACK_PACKAGE_NAME@ Version: ${RPM_VERSION} Release: ${RPM_RELEASE}%{?dist} Summary: Linphone's sip stack Group: Applications/Communications License: GPL URL: http://www.belle-sip.org Source0: %{package_name}.tar.gz BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot Requires: %{pkg_prefix}bctoolbox %description Belle-sip is an object oriented SIP stack, written in C, used by Linphone. %package devel Summary: Development libraries for belle-sip Group: Development/Libraries Requires: %{name} = %{version}-%{release} %description devel Libraries and headers required to develop software with belle-sip %if 0%{?rhel} && 0%{?rhel} <= 7 %global cmake_name cmake3 %define ctest_name ctest3 %else %global cmake_name cmake %define ctest_name ctest %endif # This is for debian builds where debug_package has to be manually specified, whereas in centos it does not %define custom_debug_package %{!?_enable_debug_packages:%debug_package}%{?_enable_debug_package:%{nil}} %custom_debug_package %prep %setup -n %{package_name} %build %{expand:%%%cmake_name} . -DCMAKE_BUILD_TYPE=@CMAKE_BUILD_TYPE@ -DCMAKE_PREFIX_PATH:PATH=%{_prefix} @RPM_ALL_CMAKE_OPTIONS@ make %{?_smp_mflags} %install make install DESTDIR=%{buildroot} # Dirty workaround to give exec rights for all shared libraries. Debian packaging needs this # TODO : set CMAKE_INSTALL_SO_NO_EXE for a cleaner workaround chmod +x `find %{buildroot} *.so.*` %check #%{ctest_name} -V %{?_smp_mflags} %clean rm -rf $RPM_BUILD_ROOT %post -p /sbin/ldconfig %postun -p /sbin/ldconfig %files %defattr(-,root,root) %doc AUTHORS.md CHANGELOG.md LICENSE.txt README.md %{_libdir}/*.so.* %files devel %defattr(-,root,root) %{_includedir}/belle-sip %if @ENABLE_STATIC@ %{_libdir}/libbellesip.a %endif %if @ENABLE_SHARED@ %{_libdir}/libbellesip.so %endif %{_libdir}/pkgconfig/belle-sip.pc %{_libdir}/cmake/BelleSIP/BelleSIPConfig*.cmake %{_libdir}/cmake/BelleSIP/BelleSIPTargets*.cmake %changelog * Tue Nov 27 2018 ronan.abhamon - Do not set CMAKE_INSTALL_LIBDIR. * Mon Aug 19 2013 jehan.monnier - Initial RPM release. belle-sip-5.2.0+dfsg/build/wp8/000077500000000000000000000000001434613136500161345ustar00rootroot00000000000000belle-sip-5.2.0+dfsg/build/wp8/belle-sip-tester-wp8/000077500000000000000000000000001434613136500220305ustar00rootroot00000000000000belle-sip-5.2.0+dfsg/build/wp8/belle-sip-tester-wp8/belle-sip-tester-native/000077500000000000000000000000001434613136500264745ustar00rootroot00000000000000belle-sip-tester-native.cpp000066400000000000000000000056471434613136500336010ustar00rootroot00000000000000belle-sip-5.2.0+dfsg/build/wp8/belle-sip-tester-wp8/belle-sip-tester-native#include #include "belle-sip-tester-native.h" #include "belle-sip/belle-sip.h" #include "bcunit/Util.h" using namespace belle_sip_tester_native; using namespace Platform; #define MAX_TRACE_SIZE 512 #define MAX_SUITE_NAME_SIZE 128 static OutputTraceListener^ sTraceListener; static void nativeOutputTraceHandler(int lev, const char *fmt, va_list args) { if (sTraceListener) { wchar_t wstr[MAX_TRACE_SIZE]; std::string str; str.resize(MAX_TRACE_SIZE); vsnprintf((char *)str.c_str(), MAX_TRACE_SIZE, fmt, args); mbstowcs(wstr, str.c_str(), sizeof(wstr)); String^ msg = ref new String(wstr); sTraceListener->outputTrace(msg); } } static void belleSipNativeOutputTraceHandler(belle_sip_log_level lev, const char *fmt, va_list args) { nativeOutputTraceHandler((int)lev, fmt, args); } BelleSipTesterNative::BelleSipTesterNative() { belle_sip_tester_init(); } BelleSipTesterNative::~BelleSipTesterNative() { belle_sip_tester_uninit(); } void BelleSipTesterNative::setOutputTraceListener(OutputTraceListener^ traceListener) { sTraceListener = traceListener; } void BelleSipTesterNative::run(Platform::String^ suiteName, Platform::String^ caseName, Platform::Boolean verbose) { std::wstring all(L"ALL"); std::wstring wssuitename = suiteName->Data(); std::wstring wscasename = caseName->Data(); char csuitename[MAX_SUITE_NAME_SIZE] = { 0 }; char ccasename[MAX_SUITE_NAME_SIZE] = { 0 }; wcstombs(csuitename, wssuitename.c_str(), sizeof(csuitename)); wcstombs(ccasename, wscasename.c_str(), sizeof(ccasename)); if (verbose) { belle_sip_set_log_level(BELLE_SIP_LOG_DEBUG); } else { belle_sip_set_log_level(BELLE_SIP_LOG_ERROR); } belle_sip_set_log_handler(belleSipNativeOutputTraceHandler); CU_set_trace_handler(nativeOutputTraceHandler); belle_sip_tester_set_root_ca_path("Assets/rootca.pem"); belle_sip_tester_run_tests(wssuitename == all ? 0 : csuitename, wscasename == all ? 0 : ccasename); } unsigned int BelleSipTesterNative::nbTestSuites() { return belle_sip_tester_nb_test_suites(); } unsigned int BelleSipTesterNative::nbTests(Platform::String^ suiteName) { std::wstring suitename = suiteName->Data(); char cname[MAX_SUITE_NAME_SIZE] = { 0 }; wcstombs(cname, suitename.c_str(), sizeof(cname)); return belle_sip_tester_nb_tests(cname); } Platform::String^ BelleSipTesterNative::testSuiteName(int index) { const char *cname = belle_sip_tester_test_suite_name(index); wchar_t wcname[MAX_SUITE_NAME_SIZE]; mbstowcs(wcname, cname, sizeof(wcname)); return ref new String(wcname); } Platform::String^ BelleSipTesterNative::testName(Platform::String^ suiteName, int testIndex) { std::wstring suitename = suiteName->Data(); char csuitename[MAX_SUITE_NAME_SIZE] = { 0 }; wcstombs(csuitename, suitename.c_str(), sizeof(csuitename)); const char *cname = belle_sip_tester_test_name(csuitename, testIndex); wchar_t wcname[MAX_SUITE_NAME_SIZE]; mbstowcs(wcname, cname, sizeof(wcname)); return ref new String(wcname); } belle-sip-tester-native.h000066400000000000000000000013321434613136500332310ustar00rootroot00000000000000belle-sip-5.2.0+dfsg/build/wp8/belle-sip-tester-wp8/belle-sip-tester-native#pragma once #include "belle-sip/belle-sip.h" #include "belle_sip_tester.h" namespace belle_sip_tester_native { public interface class OutputTraceListener { public: void outputTrace(Platform::String^ msg); }; public ref class BelleSipTesterNative sealed { public: BelleSipTesterNative(); virtual ~BelleSipTesterNative(); void setOutputTraceListener(OutputTraceListener^ traceListener); unsigned int nbTestSuites(); unsigned int nbTests(Platform::String^ suiteName); Platform::String^ testSuiteName(int index); Platform::String^ testName(Platform::String^ suiteName, int testIndex); void run(Platform::String^ suiteName, Platform::String^ caseName, Platform::Boolean verbose); }; }belle-sip-tester-native.vcxproj000066400000000000000000000153521434613136500345040ustar00rootroot00000000000000belle-sip-5.2.0+dfsg/build/wp8/belle-sip-tester-wp8/belle-sip-tester-native Debug Win32 Debug ARM Release Win32 Release ARM {3b4e9c2c-d5dc-4cf9-a7f4-5cb4ab55af79} belle_sip_tester_native en-US 11.0 true DynamicLibrary true v110_wp80 DynamicLibrary false true v110_wp80 $(SolutionDir)$(Platform)\$(Configuration)\ $(SolutionDir)$(Platform)\$(Configuration)\ false Level4 $(ProjectDir);$(GeneratedFilesDir);$(IntDir);$(ProjectDir)..\..\..\..\include;$(ProjectDir)..\..\..\..\src;$(ProjectDir)..\..\..\..\tester;$(ProjectDir)..\..\..\..\..\bcunit\build\wp8\bcunit\$(Platform)\$(Configuration);%(AdditionalIncludeDirectories) WIN32;_WINDOWS;_WINRT_DLL;_CRT_SECURE_NO_WARNINGS;HAVE_CU_GET_SUITE;PACKAGE_VERSION=$(BELLESIP_PACKAGE_VERSION);%(PreprocessorDefinitions) Default NotUsing $(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories) false Console false ole32.lib;%(IgnoreSpecificDefaultLibraries) true WindowsPhoneCore.lib;RuntimeObject.lib;PhoneAppModelHost.lib;ws2_32.lib;%(AdditionalDependencies) $(SolutionDir)$(Platform)\$(Configuration) _DEBUG;%(PreprocessorDefinitions) NDEBUG;%(PreprocessorDefinitions) MaxSpeed true true true true false true {902daf1d-ebf1-4d03-b598-143500a50ab4} {4c225a82-800b-427b-ba7b-61686a9b347f} belle-sip-5.2.0+dfsg/build/wp8/belle-sip-tester-wp8/belle-sip-tester-wp8.sln000066400000000000000000000151151434613136500264450ustar00rootroot00000000000000 Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Express 2012 for Windows Phone Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "belle-sip-tester-wp8", "belle-sip-tester-wp8\belle-sip-tester-wp8.csproj", "{2CEBCF29-6B23-46C2-B579-588321228F3E}" ProjectSection(ProjectDependencies) = postProject {3B4E9C2C-D5DC-4CF9-A7F4-5CB4AB55AF79} = {3B4E9C2C-D5DC-4CF9-A7F4-5CB4AB55AF79} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "belle-sip-tester-native", "belle-sip-tester-native\belle-sip-tester-native.vcxproj", "{3B4E9C2C-D5DC-4CF9-A7F4-5CB4AB55AF79}" ProjectSection(ProjectDependencies) = postProject {4C225A82-800B-427B-BA7B-61686A9B347F} = {4C225A82-800B-427B-BA7B-61686A9B347F} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bcunit", "..\..\..\..\bcunit\build\wp8\bcunit\bcunit.vcxproj", "{902DAF1D-EBF1-4D03-B598-143500A50AB4}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libantlr3c", "..\..\..\..\antlr3\runtime\C\build\wp8\libantlr3c\libantlr3c.vcxproj", "{8FA74260-151B-429B-83EF-3CF3EAC8CFD9}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "belle-sip", "..\belle-sip\belle-sip.vcxproj", "{4C225A82-800B-427B-BA7B-61686A9B347F}" ProjectSection(ProjectDependencies) = postProject {8FA74260-151B-429B-83EF-3CF3EAC8CFD9} = {8FA74260-151B-429B-83EF-3CF3EAC8CFD9} {E9F8C5D1-13A2-46B6-A9BC-878030D4BE09} = {E9F8C5D1-13A2-46B6-A9BC-878030D4BE09} EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "polarssl", "..\..\..\..\polarssl\build\wp8\polarssl\polarssl.vcxproj", "{E9F8C5D1-13A2-46B6-A9BC-878030D4BE09}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tunnel", "..\..\..\..\tunnel\build\wp8\tunnel\tunnel.vcxproj", "{59500DD1-B192-4DDF-A402-8A8E3739E032}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|ARM = Debug|ARM Debug|x86 = Debug|x86 Release|ARM = Release|ARM Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {2CEBCF29-6B23-46C2-B579-588321228F3E}.Debug|ARM.ActiveCfg = Debug|ARM {2CEBCF29-6B23-46C2-B579-588321228F3E}.Debug|ARM.Build.0 = Debug|ARM {2CEBCF29-6B23-46C2-B579-588321228F3E}.Debug|ARM.Deploy.0 = Debug|ARM {2CEBCF29-6B23-46C2-B579-588321228F3E}.Debug|x86.ActiveCfg = Debug|x86 {2CEBCF29-6B23-46C2-B579-588321228F3E}.Debug|x86.Build.0 = Debug|x86 {2CEBCF29-6B23-46C2-B579-588321228F3E}.Debug|x86.Deploy.0 = Debug|x86 {2CEBCF29-6B23-46C2-B579-588321228F3E}.Release|ARM.ActiveCfg = Release|ARM {2CEBCF29-6B23-46C2-B579-588321228F3E}.Release|ARM.Build.0 = Release|ARM {2CEBCF29-6B23-46C2-B579-588321228F3E}.Release|ARM.Deploy.0 = Release|ARM {2CEBCF29-6B23-46C2-B579-588321228F3E}.Release|x86.ActiveCfg = Release|x86 {2CEBCF29-6B23-46C2-B579-588321228F3E}.Release|x86.Build.0 = Release|x86 {2CEBCF29-6B23-46C2-B579-588321228F3E}.Release|x86.Deploy.0 = Release|x86 {3B4E9C2C-D5DC-4CF9-A7F4-5CB4AB55AF79}.Debug|ARM.ActiveCfg = Debug|ARM {3B4E9C2C-D5DC-4CF9-A7F4-5CB4AB55AF79}.Debug|ARM.Build.0 = Debug|ARM {3B4E9C2C-D5DC-4CF9-A7F4-5CB4AB55AF79}.Debug|x86.ActiveCfg = Debug|Win32 {3B4E9C2C-D5DC-4CF9-A7F4-5CB4AB55AF79}.Debug|x86.Build.0 = Debug|Win32 {3B4E9C2C-D5DC-4CF9-A7F4-5CB4AB55AF79}.Release|ARM.ActiveCfg = Release|ARM {3B4E9C2C-D5DC-4CF9-A7F4-5CB4AB55AF79}.Release|ARM.Build.0 = Release|ARM {3B4E9C2C-D5DC-4CF9-A7F4-5CB4AB55AF79}.Release|x86.ActiveCfg = Release|Win32 {3B4E9C2C-D5DC-4CF9-A7F4-5CB4AB55AF79}.Release|x86.Build.0 = Release|Win32 {902DAF1D-EBF1-4D03-B598-143500A50AB4}.Debug|ARM.ActiveCfg = Debug|ARM {902DAF1D-EBF1-4D03-B598-143500A50AB4}.Debug|ARM.Build.0 = Debug|ARM {902DAF1D-EBF1-4D03-B598-143500A50AB4}.Debug|x86.ActiveCfg = Debug|Win32 {902DAF1D-EBF1-4D03-B598-143500A50AB4}.Debug|x86.Build.0 = Debug|Win32 {902DAF1D-EBF1-4D03-B598-143500A50AB4}.Release|ARM.ActiveCfg = Release|ARM {902DAF1D-EBF1-4D03-B598-143500A50AB4}.Release|ARM.Build.0 = Release|ARM {902DAF1D-EBF1-4D03-B598-143500A50AB4}.Release|x86.ActiveCfg = Release|Win32 {902DAF1D-EBF1-4D03-B598-143500A50AB4}.Release|x86.Build.0 = Release|Win32 {8FA74260-151B-429B-83EF-3CF3EAC8CFD9}.Debug|ARM.ActiveCfg = Debug|ARM {8FA74260-151B-429B-83EF-3CF3EAC8CFD9}.Debug|ARM.Build.0 = Debug|ARM {8FA74260-151B-429B-83EF-3CF3EAC8CFD9}.Debug|x86.ActiveCfg = Debug|Win32 {8FA74260-151B-429B-83EF-3CF3EAC8CFD9}.Debug|x86.Build.0 = Debug|Win32 {8FA74260-151B-429B-83EF-3CF3EAC8CFD9}.Release|ARM.ActiveCfg = Release|ARM {8FA74260-151B-429B-83EF-3CF3EAC8CFD9}.Release|ARM.Build.0 = Release|ARM {8FA74260-151B-429B-83EF-3CF3EAC8CFD9}.Release|x86.ActiveCfg = Release|Win32 {8FA74260-151B-429B-83EF-3CF3EAC8CFD9}.Release|x86.Build.0 = Release|Win32 {4C225A82-800B-427B-BA7B-61686A9B347F}.Debug|ARM.ActiveCfg = Debug|ARM {4C225A82-800B-427B-BA7B-61686A9B347F}.Debug|ARM.Build.0 = Debug|ARM {4C225A82-800B-427B-BA7B-61686A9B347F}.Debug|x86.ActiveCfg = Debug|Win32 {4C225A82-800B-427B-BA7B-61686A9B347F}.Debug|x86.Build.0 = Debug|Win32 {4C225A82-800B-427B-BA7B-61686A9B347F}.Release|ARM.ActiveCfg = Release|ARM {4C225A82-800B-427B-BA7B-61686A9B347F}.Release|ARM.Build.0 = Release|ARM {4C225A82-800B-427B-BA7B-61686A9B347F}.Release|x86.ActiveCfg = Release|Win32 {4C225A82-800B-427B-BA7B-61686A9B347F}.Release|x86.Build.0 = Release|Win32 {E9F8C5D1-13A2-46B6-A9BC-878030D4BE09}.Debug|ARM.ActiveCfg = Debug|ARM {E9F8C5D1-13A2-46B6-A9BC-878030D4BE09}.Debug|ARM.Build.0 = Debug|ARM {E9F8C5D1-13A2-46B6-A9BC-878030D4BE09}.Debug|x86.ActiveCfg = Debug|Win32 {E9F8C5D1-13A2-46B6-A9BC-878030D4BE09}.Debug|x86.Build.0 = Debug|Win32 {E9F8C5D1-13A2-46B6-A9BC-878030D4BE09}.Release|ARM.ActiveCfg = Release|ARM {E9F8C5D1-13A2-46B6-A9BC-878030D4BE09}.Release|ARM.Build.0 = Release|ARM {E9F8C5D1-13A2-46B6-A9BC-878030D4BE09}.Release|x86.ActiveCfg = Release|Win32 {E9F8C5D1-13A2-46B6-A9BC-878030D4BE09}.Release|x86.Build.0 = Release|Win32 {59500DD1-B192-4DDF-A402-8A8E3739E032}.Debug|ARM.ActiveCfg = Debug|ARM {59500DD1-B192-4DDF-A402-8A8E3739E032}.Debug|ARM.Build.0 = Debug|ARM {59500DD1-B192-4DDF-A402-8A8E3739E032}.Debug|x86.ActiveCfg = Debug|Win32 {59500DD1-B192-4DDF-A402-8A8E3739E032}.Debug|x86.Build.0 = Debug|Win32 {59500DD1-B192-4DDF-A402-8A8E3739E032}.Release|ARM.ActiveCfg = Release|ARM {59500DD1-B192-4DDF-A402-8A8E3739E032}.Release|ARM.Build.0 = Release|ARM {59500DD1-B192-4DDF-A402-8A8E3739E032}.Release|x86.ActiveCfg = Release|Win32 {59500DD1-B192-4DDF-A402-8A8E3739E032}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal belle-sip-5.2.0+dfsg/build/wp8/belle-sip-tester-wp8/belle-sip-tester-wp8/000077500000000000000000000000001434613136500257245ustar00rootroot00000000000000belle-sip-5.2.0+dfsg/build/wp8/belle-sip-tester-wp8/belle-sip-tester-wp8/App.xaml000066400000000000000000000016451434613136500273350ustar00rootroot00000000000000 belle-sip-5.2.0+dfsg/build/wp8/belle-sip-tester-wp8/belle-sip-tester-wp8/App.xaml.cs000066400000000000000000000222371434613136500277410ustar00rootroot00000000000000using System; using System.Diagnostics; using System.Resources; using System.Windows; using System.Windows.Markup; using System.Windows.Navigation; using Microsoft.Phone.Controls; using Microsoft.Phone.Shell; using belle_sip_tester_wp8.Resources; using belle_sip_tester_native; namespace belle_sip_tester_wp8 { public partial class App : Application { /// /// Provides easy access to the root frame of the Phone Application. /// /// The root frame of the Phone Application. public static PhoneApplicationFrame RootFrame { get; private set; } /// /// Constructor for the Application object. /// public App() { // Global handler for uncaught exceptions. UnhandledException += Application_UnhandledException; // Standard XAML initialization InitializeComponent(); // Phone-specific initialization InitializePhoneApplication(); // Language display initialization InitializeLanguage(); // Show graphics profiling information while debugging. if (Debugger.IsAttached) { // Display the current frame rate counters. Application.Current.Host.Settings.EnableFrameRateCounter = true; // Show the areas of the app that are being redrawn in each frame. //Application.Current.Host.Settings.EnableRedrawRegions = true; // Enable non-production analysis visualization mode, // which shows areas of a page that are handed off to GPU with a colored overlay. //Application.Current.Host.Settings.EnableCacheVisualization = true; // Prevent the screen from turning off while under the debugger by disabling // the application's idle detection. // Caution:- Use this under debug mode only. Application that disables user idle detection will continue to run // and consume battery power when the user is not using the phone. PhoneApplicationService.Current.UserIdleDetectionMode = IdleDetectionMode.Disabled; } tester = new BelleSipTesterNative(); suite = null; } // Code to execute when the application is launching (eg, from Start) // This code will not execute when the application is reactivated private void Application_Launching(object sender, LaunchingEventArgs e) { } // Code to execute when the application is activated (brought to foreground) // This code will not execute when the application is first launched private void Application_Activated(object sender, ActivatedEventArgs e) { } // Code to execute when the application is deactivated (sent to background) // This code will not execute when the application is closing private void Application_Deactivated(object sender, DeactivatedEventArgs e) { } // Code to execute when the application is closing (eg, user hit Back) // This code will not execute when the application is deactivated private void Application_Closing(object sender, ClosingEventArgs e) { } // Code to execute if a navigation fails private void RootFrame_NavigationFailed(object sender, NavigationFailedEventArgs e) { if (Debugger.IsAttached) { // A navigation has failed; break into the debugger Debugger.Break(); } } // Code to execute on Unhandled Exceptions private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e) { if (Debugger.IsAttached) { // An unhandled exception has occurred; break into the debugger Debugger.Break(); } } #region Phone application initialization // Avoid double-initialization private bool phoneApplicationInitialized = false; // Do not add any additional code to this method private void InitializePhoneApplication() { if (phoneApplicationInitialized) return; // Create the frame but don't set it as RootVisual yet; this allows the splash // screen to remain active until the application is ready to render. RootFrame = new PhoneApplicationFrame(); RootFrame.Navigated += CompleteInitializePhoneApplication; // Handle navigation failures RootFrame.NavigationFailed += RootFrame_NavigationFailed; // Handle reset requests for clearing the backstack RootFrame.Navigated += CheckForResetNavigation; // Ensure we don't initialize again phoneApplicationInitialized = true; } // Do not add any additional code to this method private void CompleteInitializePhoneApplication(object sender, NavigationEventArgs e) { // Set the root visual to allow the application to render if (RootVisual != RootFrame) RootVisual = RootFrame; // Remove this handler since it is no longer needed RootFrame.Navigated -= CompleteInitializePhoneApplication; } private void CheckForResetNavigation(object sender, NavigationEventArgs e) { // If the app has received a 'reset' navigation, then we need to check // on the next navigation to see if the page stack should be reset if (e.NavigationMode == NavigationMode.Reset) RootFrame.Navigated += ClearBackStackAfterReset; } private void ClearBackStackAfterReset(object sender, NavigationEventArgs e) { // Unregister the event so it doesn't get called again RootFrame.Navigated -= ClearBackStackAfterReset; // Only clear the stack for 'new' (forward) and 'refresh' navigations if (e.NavigationMode != NavigationMode.New && e.NavigationMode != NavigationMode.Refresh) return; // For UI consistency, clear the entire page stack while (RootFrame.RemoveBackEntry() != null) { ; // do nothing } } #endregion // Initialize the app's font and flow direction as defined in its localized resource strings. // // To ensure that the font of your application is aligned with its supported languages and that the // FlowDirection for each of those languages follows its traditional direction, ResourceLanguage // and ResourceFlowDirection should be initialized in each resx file to match these values with that // file's culture. For example: // // AppResources.es-ES.resx // ResourceLanguage's value should be "es-ES" // ResourceFlowDirection's value should be "LeftToRight" // // AppResources.ar-SA.resx // ResourceLanguage's value should be "ar-SA" // ResourceFlowDirection's value should be "RightToLeft" // // For more info on localizing Windows Phone apps see http://go.microsoft.com/fwlink/?LinkId=262072. // private void InitializeLanguage() { try { // Set the font to match the display language defined by the // ResourceLanguage resource string for each supported language. // // Fall back to the font of the neutral language if the Display // language of the phone is not supported. // // If a compiler error is hit then ResourceLanguage is missing from // the resource file. RootFrame.Language = XmlLanguage.GetLanguage(AppResources.ResourceLanguage); // Set the FlowDirection of all elements under the root frame based // on the ResourceFlowDirection resource string for each // supported language. // // If a compiler error is hit then ResourceFlowDirection is missing from // the resource file. FlowDirection flow = (FlowDirection)Enum.Parse(typeof(FlowDirection), AppResources.ResourceFlowDirection); RootFrame.FlowDirection = flow; } catch { // If an exception is caught here it is most likely due to either // ResourceLangauge not being correctly set to a supported language // code or ResourceFlowDirection is set to a value other than LeftToRight // or RightToLeft. if (Debugger.IsAttached) { Debugger.Break(); } throw; } } public bool suiteRunning() { return (suite != null) && (suite.running); } public BelleSipTesterNative tester { get; set; } public UnitTestSuite suite { get; set; } } }belle-sip-5.2.0+dfsg/build/wp8/belle-sip-tester-wp8/belle-sip-tester-wp8/Assets/000077500000000000000000000000001434613136500271665ustar00rootroot00000000000000belle-sip-5.2.0+dfsg/build/wp8/belle-sip-tester-wp8/belle-sip-tester-wp8/Assets/AlignmentGrid.png000066400000000000000000000215221434613136500324220ustar00rootroot00000000000000‰PNG  IHDRðQ5´ pHYs  šœ OiCCPPhotoshop ICC profilexÚSgTSé=÷ÞôBKˆ€”KoR RB‹€‘&*! Jˆ!¡ÙQÁEEÈ ˆŽŽ€ŒQ, Š Øä!¢Žƒ£ˆŠÊûá{£kÖ¼÷æÍþµ×>ç¬ó³ÏÀ –H3Q5€ ©BàƒÇÄÆáä.@ $p³d!sý#ø~<<+"À¾xÓ ÀM›À0‡ÿêB™\€„Àt‘8K€@zŽB¦@F€˜&S `ËcbãP-`'æÓ€ø™{[”! ‘ eˆDh;¬ÏVŠEX0fKÄ9Ø-0IWfH°·ÀÎ ² 0Qˆ…){`È##x„™FòW<ñ+®ç*x™²<¹$9E[-qWW.(ÎI+6aaš@.Ây™24àóÌ ‘àƒóýxήÎÎ6޶_-ê¿ÿ"bbãþåÏ«p@át~Ñþ,/³€;€mþ¢%îh^  u÷‹f²@µ éÚWópø~<ß5°j>{‘-¨]cöK'XtÀâ÷ò»oÁÔ(€hƒáÏwÿï?ýG %€fI’q^D$.Tʳ?ÇD *°AôÁ,ÀÁÜÁ ü`6„B$ÄÂBB d€r`)¬‚B(†Í°*`/Ô@4ÀQh†“p.ÂU¸=púažÁ(¼ AÈa!ÚˆbŠX#Ž™…ø!ÁH‹$ ɈQ"K‘5H1RŠT UHò=r9‡\Fº‘;È2‚ü†¼G1”²Q=Ô µC¹¨7„F¢ Ðdt1š ›Ðr´=Œ6¡çЫhÚ>CÇ0Àè3Äl0.ÆÃB±8, “c˱"¬ «Æ°V¬»‰õcϱwEÀ 6wB aAHXLXNØH¨ $4Ú 7 „QÂ'"“¨K´&ºùÄb21‡XH,#Ö/{ˆCÄ7$‰C2'¹I±¤TÒÒFÒnR#é,©›4H#“ÉÚdk²9”, +È…ääÃä3ää!ò[ b@q¤øSâ(RÊjJåå4åe˜2AU£šRݨ¡T5ZB­¡¶R¯Q‡¨4uš9̓IK¥­¢•Óhh÷i¯ètºÝ•N—ÐWÒËéGè—èôw †ƒÇˆg(›gw¯˜L¦Ó‹ÇT071ë˜ç™™oUX*¶*|‘Ê •J•&•*/T©ª¦ªÞª UóUËT©^S}®FU3Sã© Ô–«UªPëSSg©;¨‡ªg¨oT?¤~Yý‰YÃLÃOC¤Q ±_ã¼Æ c³x,!k «†u5Ä&±ÍÙ|v*»˜ý»‹=ª©¡9C3J3W³Ró”f?ã˜qøœtN ç(§—ó~ŠÞï)â)¦4L¹1e\kª–—–X«H«Q«Gë½6®í§¦½E»YûAÇJ'\'GgÎçSÙSݧ §M=:õ®.ªk¥¡»Dw¿n§î˜ž¾^€žLo§Þy½çú}/ýTýmú§õG X³ $Û Î<Å5qo</ÇÛñQC]Ã@C¥a•a—á„‘¹Ñ<£ÕFFŒiÆ\ã$ãmÆmÆ£&&!&KMêMîšRM¹¦)¦;L;LÇÍÌÍ¢ÍÖ™5›=1×2ç›ç›×›ß·`ZxZ,¶¨¶¸eI²äZ¦Yî¶¼n…Z9Y¥XUZ]³F­­%Ö»­»§§¹N“N«žÖgðñ¶É¶©·°åØÛ®¶m¶}agbg·Å®Ã“}º}ý= ‡Ù«Z~s´r:V:ޚΜî?}Åô–é/gXÏÏØ3ã¶Ë)ÄiS›ÓGgg¹sƒóˆ‹‰K‚Ë.—>.›ÆÝȽäJtõq]ázÒõ›³›Âí¨Û¯î6îiî‡ÜŸÌ4Ÿ)žY3sÐÃÈCàQåÑ? Ÿ•0k߬~OCOgµç#/c/‘W­×°·¥wª÷aï>ö>rŸã>ã<7Þ2ÞY_Ì7À·È·ËOÃož_…ßC#ÿdÿzÿѧ€%g‰A[ûøz|!¿Ž?:Ûeö²ÙíAŒ ¹AA‚­‚åÁ­!hÈì­!÷ç˜Î‘Îi…P~èÖÐaæa‹Ã~ '…‡…W†?ŽpˆXÑ1—5wÑÜCsßDúD–DÞ›g1O9¯-J5*>ª.j<Ú7º4º?Æ.fYÌÕXXIlK9.*®6nl¾ßüíó‡ââ ã{˜/È]py¡ÎÂô…§©.,:–@LˆN8”ðA*¨Œ%òw%Ž yÂÂg"/Ñ6шØC\*NòH*Mz’쑼5y$Å3¥,幄'©¼L LÝ›:žšv m2=:½1ƒ’‘qBª!M“¶gêgæfvˬe…²þÅn‹·/•Ék³¬Y- ¶B¦èTZ(×*²geWf¿Í‰Ê9–«ž+Íí̳ÊÛ7œïŸÿíÂá’¶¥†KW-X潬j9²‰Š®Û—Ø(Üxå‡oÊ¿™Ü”´©«Ä¹dÏfÒféæÞ-ž[–ª—æ—n ÙÚ´ ßV´íõöEÛ/—Í(Û»ƒ¶C¹£¿<¸¼e§ÉÎÍ;?T¤TôTúT6îÒݵa×ønÑî{¼ö4ìÕÛ[¼÷ý>ɾÛUUMÕfÕeûIû³÷?®‰ªéø–ûm]­NmqíÇÒý#¶×¹ÔÕÒ=TRÖ+ëGǾþïw- 6 UœÆâ#pDyäé÷ ß÷ :ÚvŒ{¬áÓvg/jBšòšF›Sšû[b[ºOÌ>ÑÖêÞzüGÛœ499â?rýéü§CÏdÏ&žþ¢þË®/~øÕë×Îјѡ—ò—“¿m|¥ýêÀë¯ÛÆÂƾÉx31^ôVûíÁwÜwï£ßOä| (ÿhù±õSЧû“““ÿ˜óüc3-Û cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF}IDATxÚìÙ Ü0DÁ(¸ ÷â:Ý‹;Ú4!ŽíLZa ­$€]@€ @ @€ € @€@€ @€ @€ € @€@€ @€ @€  Ø5út÷zFŸïËk«­¶ÚzôÖé{›¶úŽmµµû_¼‘("@€ @ @€ € @€@ø/­$nJx@€ @€ @Øì}º{=£Ï÷åµÕV[m=zëô½M[}ǶÚÚý/ÞÈ  @€ € @€@€ @ `¶•Ä-@ / @€ € à7®Ñ§»×3ú|_^[mµÕÖ£·NßÛ´Õwl«­Ýÿâ¼@€ @€@€ @€ @€ @€f[IÜ”ð€ @€@€~ã}º{=£Ï÷åµÕV[m=zëô½M[}ǶÚÚý/ÞÈ  @€ € @€@€ @ `¶•Ä-@ / @€ € à7®Ñ§»×3ú|_^[mµÕÖ£·NßÛ´Õwl«­Ýÿâ¼@€ @€@€ @€ @€ @€f[IÜ”ð€ @€@€~ã}º{=£Ï÷åµÕV[m=zëô½M[}ǶÚÚý/ÞÈ  @€ € @€@€ @ `¶•Ä-@ / @€ € à7®Ñ§»×3ú|_^[mµÕÖ£·NßÛ´Õwl«­Ýÿâ¼@€ @€@€ @€ @€ @€f[IÜ”ð€ @€@€~ã}º{=£Ï÷åµÕV[m=zëô½M[}ǶÚÚý/ÞÈ  @€ € @€@€ @ `¶•Ä-@ / @€ € @›]£Ow¯gôù¾¼¶Új«­Go¾·i«ïØV[»ÿÅy€" @€ € @€@€ @€ €ÿÒJâ „€ @€@€ €Í®Ñ§»×3ú|_^[mµÕÖ£·NßÛ´Õwl«­Ýÿâ¼@€ @€@€ @€ @€ @€f[IÜ”ð€ @€@€~ã}º{=£Ï÷åµÕV[m=zëô½M[}ǶÚÚý/ÞÈ  @€ € @€@€ @ `¶•Ä-@ / @€ € à7®Ñ§»×3ú|_^[mµÕÖ£·NßÛ´Õwl«­Ýÿâ¼@€ @€@€ @€ @€ @€f[IÜ”ð€ @€@€~ã}º{=£Ï÷åµÕV[m=zëô½M[}ǶÚÚý/ÞÈ  @€ € @€@€ @ `¶•Ä-@ / @€ € à7®Ñ§»×3ú|_^[mµÕÖ£·NßÛ´Õwl«­Ýÿâ¼@€ @€@€ @€ @€ @€f[IÜ”ð€ @€@€~ã}º{=£Ï÷åµÕV[m=zëô½M[}ǶÚÚý/ÞÈ  @€ € @€@€ @ `¶•Ä-@ / @€ € à7®Ñ§»×3ú|_^[mµÕÖ£·NßÛ´Õwl«­Ýÿâ¼@€ @€@€ @€ @€ @€f[IÜ”ð€ @€@€~ã}º{=£Ï÷åµÕV[m=zëô½M[}ǶÚÚý/ÞÈ  @€ € @€@€ @ `¶•Ä-@ / @€ € @›]£Ow¯gôù¾¼¶Új«­Go¾·i«ïØV[»ÿÅy€" @€ € @€@€ @€ ̶’¸(á @€ € üÆ5út÷zFŸïËk«­¶ÚzôÖé{›¶úŽmµµû_¼‘("@€ @ @€ € @€@Àl+‰[€^@€ @ @Ào\£Ow¯gôù¾¼¶Új«­Go¾·i«ïØV[»ÿÅy€" @€ € @€@€ @€ ̶’¸(á @€ € @€àÿ›W`g“&IEND®B`‚belle-sip-5.2.0+dfsg/build/wp8/belle-sip-tester-wp8/belle-sip-tester-wp8/Assets/ApplicationIcon.png000066400000000000000000000065001434613136500327510ustar00rootroot00000000000000‰PNG  IHDRddpâ•TsRGB®ÎégAMA± üa pHYs.#.#x¥?v ÕIDATx^í]{tUŸ<š&-¡o‘RµzDWQëz_+]+¥ìÊ9+¨kÕŽ‹® ÈžÍîqñQW÷, ²¨È>Ú"/[E^-"²-}µ¥¥Ï¤MÓ$Ís23É$Ùï–öœò˜ffÒIÍüÍw¿ûû¾ß½÷»ß{‚3IØd,‹?cï±TŒaE?L{$qC.€‘ø#$Ä €%NHœy@`pâ=$NˆÀ< 08ñ'D`œx‰"0 N¼‡Ä ˜'æzÈmÅÉL}8CÕ$Ãæ—2•†\Œ­öVw9Š´Ø–0q^Cã½²Z}YAÈ qK„–ÈtV—ÖNº_Ô™nåÄc?Xž¤Ýo«Ž,„³™€ˆ5BÊj­wè°:[Vÿ§mb ;÷5ò”ÛŽäLÚºðýÎTþ1áWD0„̯H<Öb}»h¼½ ñ\Ð’{.Ñqéi×S1LuY|ù³¾ÌA;Ýé+ºŸ¥÷ÅÏ:&•ÕZVòëmÚCÈo“-ÚÛgv6—Ö[ï ½ð“¶,é&|þ}¦ ß0"‚¸zÐYå/Ó¡'«»C%þºÉ¶êÖµß0p¿"B!dÕç=Ù†üHºÜ®zµ£Ø¿·œhµ­öw4ú?òÐGžBA< átÓªýê\_o®ß£ŸŒâ‹{x ì0P§ùõ6íB!dÃÞžHçppöèå½E%î6P5œþ-|ðÄëză=µÝ„ê’KTâã-Ög ŒÉW¶SO50p¿"B!dëQí=.úJgŽô–åêñbá*®`QœqѨ‚Ðè­ôWŒQ LÐåöbÕ­Ö#Ñ€5BÎtÛA<†Mœ×¡·Ñ]/~t²sÅFU¯hê v÷`4Œâº á®ÂJ—º¹ÖHŸhèÕ?§kÙVöüNõ”t¥7M®HPdÈ%‰I EJ²8)Q,NJ’‹’%"‘âÚ Ù³SÓe3ÙÖíòµÝøg8å=E{D¸ÝEãá"씈°9Ý ‹²Q˜£ÇHhKŸ»Á —ÓÞƒ¶%0eô_ÞíD46äQžb°¹Œë÷ë&±"æré¤àvåžNY:ö¯ÝX»eT €¬^ãX½qÁ$ݨ æ2†x·|Õ»ÒBxô\‹íz羇oIùœ+¼\‚mzúFýévó*Ôj~ ÄÁÿ³<¶rf0§„ ™QÚ1@îï„ F× qü«¡jÄ_œ‚ZËîãJX*1ŒgR: ®Š¹7Mü”kù ÛPpMoM¾f¼]ÐØÌûë œU|ö +,‘œï&Ú ìçº AŸÖâªõb"Æ[ZG‡™Ã‹OBrxªÃþ ,§7„ÚpFh”°ÏÛ‹¾=Öl+ZSÒ”>:§‘æ"1Ì.:“t Á¼´µŸü@²~÷‹d â´£EK–”TE£CÄä°"¤°IVÙbù‹ÞæÒÅ¢ùÀì†ÕÓ^Õûõyûï#"…U¦^:ÃÙm&Ë`VÀný&"äÂ,$†n¯èb³†Ø)BV³¬å÷N:»vwÿ½Ýgy¤ÆK9Þ™œÓ8¶,*=ûКG³X,ÖrÔ窤µ]øÎñɃŒsV’¶¿`þëÆÅ*†¨ýðyó/œ…ñY¨:ugë®ZÛ-¬É@ Xž5uÏ®ÓÝz;]?Þ—³PÒÛ6@•í8¤¾û׳”œmCeCµŠ¢ÙY­M}äǰ—“F#T%VÒckÒÚ‹_]Êò¥”Ÿœ’»º-ñœß:;7y“fãùIUH”ßœzâd›õníä"¨¢7ª§ôšœ'„:Öó… ÍcšµÄ§áN1"« ~°Ñü ÙAkø2:ôBc¬ûä[ÝõŒLˆ}PW‰¿o·¿ôÈtå×) IÈÆ@áìÔ„;ß™Q}¤Œ ÜÈc,Ôõ¬Ûžw}òßdRqŒÎgã²àeS’$³såÿ`~=Ò"'–N6Öÿñt;¾Vcr5Äê&¸Hç_Ž€7gõ©‹Ž*ÎÛ¶F®—‹ +œ[* wŸU;6ÿ˜Q@ï39»àÜË_ß=d¸9r†KrÔ}\ZŽ7¢åørÒé¦b! #,·ãp¾åß»k?gµÜîÏ „ŒÔñv…&njӆÑ òHØ ïå>Ñb?Ë ÖI½¢Å³27£ Ǻ PÁu™²ù•­ø > EÔC 9Ò‚/»>K¶€ÀBÐ)†ª?™"ïÇ59\ã᜔±ßuMâßèñü@ïOÍŸ‘¹ läÔP® -¹+ëý”$iæx&cĶi²ücÍö'¸´•SB¾i2/ɽJVÈ%@!ëBgßïœ*ßÄÉÎ÷aC9#¤®Eºçº [ÈÓCWúò<å‡\ÙÌÙ²3¦å3s €$‰Xœ,¼IFb1¦Š¨D¥\¬œ(¹ìÒ® áSÁFÛ w@"èòzEœÌ#0‘‡]&Cÿ†{XÈõæ ë ²[Xáà3ñ&Âà½;ܸS y†?Æ“mö×8Mƒ±Æ_rEÞ¹=‘š©”ÄÜq6dÉÕ¥FëŒ!g1$\W}5ÿêù±8\!»²”Ò9¼ßâÀuPGÈÔ4ÙCád„úûD…$᩼œŸE_tz¬§ÊÅs¢a_uÜ’­XÈ—n_½Q!ä­s¦g*¦EàHë·I&U.y =*„Üó„üÉåù E{1µÉÙy^K~XÙfçl)!6ÊcßYmZÖÔçØÞoquù¿pƒ82 5¬Hõ3-B2'Hæ¡7êPíÔÑSñ—7WéfLM3wf¶âœð¹Æ•©ìå`o®kÅ»-ûn’\4y펛^?Ø{[u±.^«Ä)5¨û§OÈg_S8 \¼1 U¼{‡k\ßÙSgzüñ·[^±·«Æ2¬ó“~‹s¬Lù©ª)ý‹Óâϫφs'«ß£˜†Ä¹½Êðß„„ºdÕ Ûxº¢#B:"ЉaH8IãÁ. ²8Üæšnü¿¬Z†‹š)¸;q ,sÐtÁ^]$¶õ°-•¤™ lè|…ï-ƒ;vË·UõÏ,>¤[iÂݶ`zP|ÒYé7HôÙè/gMM^µ¿Ñ2¯ßêºà¯‹vcføÛ˜oH!˜#}g5¨Wœh·?•{•¼`]~Žݲ£³¹ö#¤m€Üõñ‘ÞÛ´®@2ˆ°óÇNôÛÒ»ÒOþi—áÎ5ñ®“öR>òcÞ;.aá;¨‡ëðû¢ÍÍpöÛ‹ÎèÁ‚/Ñ ÿbÿú®ÿ@ç µ7«†?[q Ñr/<%ýãúæć+ööoõ³ vÀÑ ô¥ò0¨üŠ%¨cp?.L/MÇ[­+ÀâÀ/T Û‡•¾Î¶Âýí;NÜè륑¹øÊë#>æÉÜÕ‰5¸ ®É8À¯·h!%ô pÏtâq´Óåö½`]¨ lØÛ4"bÞmÇúóÂé~¤øâUádxÿ]0„0´}r}z9»v +6ü‘¡£=FªiÌïtghߥð!€Â/’ƒÛ*; ä¡p9Ã;åW£/í|ßi_7ýc*‹„”Õ æo¬Ð2º_½ñ¾×Ëû®S'¦òX$d4öÅœ¬P2õ˜s€…‘òh`¬©Ž"0Æâ„Ä ˜'ÞCâ„̃ï!qBæÁ‰÷8!ó€ÀàÄ{ˆÀa¿=7 Sqb„@Œ$aâÿ&²™[è3UIEND®B`‚belle-sip-5.2.0+dfsg/build/wp8/belle-sip-tester-wp8/belle-sip-tester-wp8/Assets/Tiles/000077500000000000000000000000001434613136500302465ustar00rootroot00000000000000FlipCycleTileLarge.png000066400000000000000000000233121434613136500343410ustar00rootroot00000000000000belle-sip-5.2.0+dfsg/build/wp8/belle-sip-tester-wp8/belle-sip-tester-wp8/Assets/Tiles‰PNG  IHDR³P¬ßöª pHYs.#.#x¥?v OiCCPPhotoshop ICC profilexÚSgTSé=÷ÞôBKˆ€”KoR RB‹€‘&*! Jˆ!¡ÙQÁEEÈ ˆŽŽ€ŒQ, Š Øä!¢Žƒ£ˆŠÊûá{£kÖ¼÷æÍþµ×>ç¬ó³ÏÀ –H3Q5€ ©BàƒÇÄÆáä.@ $p³d!sý#ø~<<+"À¾xÓ ÀM›À0‡ÿêB™\€„Àt‘8K€@zŽB¦@F€˜&S `ËcbãP-`'æÓ€ø™{[”! ‘ eˆDh;¬ÏVŠEX0fKÄ9Ø-0IWfH°·ÀÎ ² 0Qˆ…){`È##x„™FòW<ñ+®ç*x™²<¹$9E[-qWW.(ÎI+6aaš@.Ây™24àóÌ ‘àƒóýxήÎÎ6޶_-ê¿ÿ"bbãþåÏ«p@át~Ñþ,/³€;€mþ¢%îh^  u÷‹f²@µ éÚWópø~<ß5°j>{‘-¨]cöK'XtÀâ÷ò»oÁÔ(€hƒáÏwÿï?ýG %€fI’q^D$.Tʳ?ÇD *°AôÁ,ÀÁÜÁ ü`6„B$ÄÂBB d€r`)¬‚B(†Í°*`/Ô@4ÀQh†“p.ÂU¸=púažÁ(¼ AÈa!ÚˆbŠX#Ž™…ø!ÁH‹$ ɈQ"K‘5H1RŠT UHò=r9‡\Fº‘;È2‚ü†¼G1”²Q=Ô µC¹¨7„F¢ Ðdt1š ›Ðr´=Œ6¡çЫhÚ>CÇ0Àè3Äl0.ÆÃB±8, “c˱"¬ «Æ°V¬»‰õcϱwEÀ 6wB aAHXLXNØH¨ $4Ú 7 „QÂ'"“¨K´&ºùÄb21‡XH,#Ö/{ˆCÄ7$‰C2'¹I±¤TÒÒFÒnR#é,©›4H#“ÉÚdk²9”, +È…ääÃä3ää!ò[ b@q¤øSâ(RÊjJåå4åe˜2AU£šRݨ¡T5ZB­¡¶R¯Q‡¨4uš9̓IK¥­¢•Óhh÷i¯ètºÝ•N—ÐWÒËéGè—èôw †ƒÇˆg(›gw¯˜L¦Ó‹ÇT071ë˜ç™™oUX*¶*|‘Ê •J•&•*/T©ª¦ªÞª UóUËT©^S}®FU3Sã© Ô–«UªPëSSg©;¨‡ªg¨oT?¤~Yý‰YÃLÃOC¤Q ±_ã¼Æ c³x,!k «†u5Ä&±ÍÙ|v*»˜ý»‹=ª©¡9C3J3W³Ró”f?ã˜qøœtN ç(§—ó~ŠÞï)â)¦4L¹1e\kª–—–X«H«Q«Gë½6®í§¦½E»YûAÇJ'\'GgÎçSÙSݧ §M=:õ®.ªk¥¡»Dw¿n§î˜ž¾^€žLo§Þy½çú}/ýTýmú§õG X³ $Û Î<Å5qo</ÇÛñQC]Ã@C¥a•a—á„‘¹Ñ<£ÕFFŒiÆ\ã$ãmÆmÆ£&&!&KMêMîšRM¹¦)¦;L;LÇÍÌÍ¢ÍÖ™5›=1×2ç›ç›×›ß·`ZxZ,¶¨¶¸eI²äZ¦Yî¶¼n…Z9Y¥XUZ]³F­­%Ö»­»§§¹N“N«žÖgðñ¶É¶©·°åØÛ®¶m¶}agbg·Å®Ã“}º}ý= ‡Ù«Z~s´r:V:ޚΜî?}Åô–é/gXÏÏØ3ã¶Ë)ÄiS›ÓGgg¹sƒóˆ‹‰K‚Ë.—>.›ÆÝȽäJtõq]ázÒõ›³›Âí¨Û¯î6îiî‡ÜŸÌ4Ÿ)žY3sÐÃÈCàQåÑ? Ÿ•0k߬~OCOgµç#/c/‘W­×°·¥wª÷aï>ö>rŸã>ã<7Þ2ÞY_Ì7À·È·ËOÃož_…ßC#ÿdÿzÿѧ€%g‰A[ûøz|!¿Ž?:Ûeö²ÙíAŒ ¹AA‚­‚åÁ­!hÈì­!÷ç˜Î‘Îi…P~èÖÐaæa‹Ã~ '…‡…W†?ŽpˆXÑ1—5wÑÜCsßDúD–DÞ›g1O9¯-J5*>ª.j<Ú7º4º?Æ.fYÌÕXXIlK9.*®6nl¾ßüíó‡ââ ã{˜/È]py¡ÎÂô…§©.,:–@LˆN8”ðA*¨Œ%òw%Ž yÂÂg"/Ñ6шØC\*NòH*Mz’쑼5y$Å3¥,幄'©¼L LÝ›:žšv m2=:½1ƒ’‘qBª!M“¶gêgæfvˬe…²þÅn‹·/•Ék³¬Y- ¶B¦èTZ(×*²geWf¿Í‰Ê9–«ž+Íí̳ÊÛ7œïŸÿíÂá’¶¥†KW-X潬j9²‰Š®Û—Ø(Üxå‡oÊ¿™Ü”´©«Ä¹dÏfÒféæÞ-ž[–ª—æ—n ÙÚ´ ßV´íõöEÛ/—Í(Û»ƒ¶C¹£¿<¸¼e§ÉÎÍ;?T¤TôTúT6îÒݵa×ønÑî{¼ö4ìÕÛ[¼÷ý>ɾÛUUMÕfÕeûIû³÷?®‰ªéø–ûm]­NmqíÇÒý#¶×¹ÔÕÒ=TRÖ+ëGǾþïw- 6 UœÆâ#pDyäé÷ ß÷ :ÚvŒ{¬áÓvg/jBšòšF›Sšû[b[ºOÌ>ÑÖêÞzüGÛœ499â?rýéü§CÏdÏ&žþ¢þË®/~øÕë×Îјѡ—ò—“¿m|¥ýêÀë¯ÛÆÂƾÉx31^ôVûíÁwÜwï£ßOä| (ÿhù±õSЧû“““ÿ˜óüc3-Û cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFõIDATxÚìÝ}¬d÷Yðç93÷}_¼»Y{µX§II”@œÚ$ÈqÒ'iœÔy!B©‚¥¹»T‚ºR S5‰Á© ‰³­ ì­±yIƒTBÈÚ P°BbßÝ묽Ùû²3s~ýÃ×îe¹ï3÷Þ½w>)’wæÌ9sŸ3ùïùÍ3çd)%`'ª”a„Yff@˜a„Y„Yf@˜@˜a„Yff@˜aa„Yf@˜@˜a„Y„Yf@˜aa„Yff@˜a„Y„Yf@˜@˜a„Yff@˜aa„Yf@˜@˜a„Yff@˜aa„Yf@˜@˜a„Y„Yf@˜aa„Yff@˜a„Yv‹¦À`ËLEXƒéé齇>¿Û*¥Œeæì–³c€gf`õÐø²C‡ݽÛšœœ¬"â7K)ר<€0 зe曺ÝîäfoèCúÐŽˆ›êº¾MÙV—¾¦‚´¬¨”2RJy"3”RJfÞœ™lÒ¶~8">½ðÏ/gæw®²¼ <3³+ûÁÌ<°ü3"îž››ûöM²/ŽˆO,zè…¥”—)?€0 ЋÛ.ù÷á‘‘‘ÿYJë×Î;w0ž™‘[eÛ³kÓjµ®.¥Ü´ÄS/®ëú£ýØÆäädµo߾߈ˆ^ú\)奔{`yzfaÐ=³Ë*¥üTDܾÜóu]ÿD£ÑøH/Ûèv»?WUÕWXä–Ì<±Ìû³“Ç1ƒ!³,VOeæÑÂn;3_›™mdýNç‡Æo®²Ø}™ùa@˜vY˜m·Û7EÄ…¡¡¡?ê÷º~|õù5,:=;;ûÝããã_[ÏúçççÿñðððCqÅ*ï£;;;ûü‰‰‰'6áo¼ivvö‘ñññ¿Û©ŸÇ0@Ï,°c5›Íok4—R~±Ÿ?ÈZpÛ—;<::úéõlzzzïððð‰Õ‚ìÂÉFc||üÖ~þagÏžÝ_JùxD|flllŸO Ìlƒº®÷/\.ë'"âÏÛíö÷õc½ ×–}ÇZ—ÏÌïˆÿ²–e'''«…»‰½pïç¶~Õ¬”rÓW\ñ¥ˆxß³aÜ' f¶c«ªÅ¿ôAgiŸ»¶ì:üH§Óyÿj }øÃþ`f¾i=+ÎÌ£ סݰų±™ùÍ>=€0 °ýö]úú5K{ÛÃõ¯\¼xñåË=ßét~¨”ò6øž6Üj°Älìbffa`›,w Ö ÏÒ®pmÙUeæÐÐÐн­Vëê%å5Fã×rƒ¿¸+¥¼ëäÉ“Íõ¼Æl, ÌìÌ0»áYÚñññ[3³ÑÃ{ºfllìÞÅÁszzzoDÜkøÁ× ϑ믿~Í!{•ÙØÅü f¶ÉZ‚غfiûñc«Ì¼þÕ¯~õÏF<󃯃~<"¾«×õ6±Ú2˜u‡1`Gk*°ƒ­)ˆ-š¥}c»Ý~Ïr×¥]¸¶ìѾÌTÕ;ΗÆ?Šˆ[úô÷þ`)å`fž]æýß´d×ÜRP×õ~#`'33 ìdëýŠ|µYÚÛú:ÀVÕGK)ÇûÞß~都ôÆ^rEa`«”RF×ûšåzi×{mÙ5nk¼ÇþÛX-p¯£7¶_'Â,@ŸÂb/AìïÍÒv»Ý×nàÚ²Ûáeóóó×õñJffMÏ,°“õÄ÷Ò6'vÊ=44ô³øžˆø–>¬ÎÌ, Ìl“~±,üoGÈÌ7_.'ÛM›°“ b—Ï €0 ˆ9!fËJ»Ýþ¾¥nñÚ‹RŠÖŸ:öý:³ßøÆ7ž777÷ª ³ÀîhªêÆÇǯëú/ºÝî/¶Ûíמ:uj¸ÇÕš•íƒÌìù¤àäÉ“Ív»}}·Ûý¹RÊç÷ìÙsfddä%ª lÉ8VJQì0³éÛh·Û×7›Í‡?VJ™É̇뺾¯Ýnß7::ú×ëYçÌÌÌóÇÆÆ¾böì«™ùüõ¾h¡þ¯/¥Ü¯^|Y³RJ·Õj}ÓÞ½{Ïlö›w „Yf·d;¥”3qx…E«ëú÷J)÷?õÔSŸ=|øðùUÖw]D|ÉìÙtf^¹†ý7ÖívoÈÌ›3ó2ó;WXöªªºa‹>Wö 8—æ¶ÊƒñÃ+<MUUˆˆ:t¨]×õÿ.¥Ü×ívþ?K,¯g¶?–mטŸŸ¿®ÙlÞTUÕë"âUFclóAe¶Š™YôA`ëffo‹ˆ_Ûàk§K)¿_UÕýçÏŸÿ̾}ûž,¥Ü'íÁ¾|r¡ÎWDÄÔu}sUU¯‰ß”áå™ù§[ô¹²A˜5€0»ùΟ?åž={N÷!¼”ˆøbDüuf¾Åì]]×?Ÿ™¯Žˆ—eæP«[SÛ‚0 ³ÀŽ ³ ¡éTfUõ]íDfÞ"Ì[Å¥¹€­ ο« »Þ}J³€ ÃŽtáÂûØRÚ `Ð-l3X¸k×¹p%‚]©”òHUU×mñ6œ™Y`+ƒó|D|V%víþÕF³ÀîV×µ¯¡w/ûfÝ­Óé<¨ »Ò|Dü‰2Â,°«ŒŒœŠˆ/«ÄîRJ¹o¡@˜v=}³»/ÌÚ§€0 Œ•`wÑ>³ÀÀ8}úô}ñL%»Ã—ÚG„Y`÷;räH«”ò9•Ø5´Â,0XôXîÝn×¾¶;€Á [x°Åæçç¯þ’=°ãÍGÄþíº’c`fØ =–Ó*±³•R>ç’\Àv23 ƒ>¬aföÔ©SÃGŸ¨ªj¢ªªñÌœh6›ãÝnw""F"b¢ÑhŒ×u=1UU—R&"b"3Ÿûï…ç¯ÎÌ!{aG‡Ù™ˆ8™­…ÿnef+"f#b¶®ë™ˆhEÄLD´ªªju»Ý™ˆh5V§Ó™)¥´J)3¥”ÖÈÈHëÉ'Ÿœ¹ãŽ;Z“““õ¶o'€0k avÕÀ𙈸IµØBwfæû…Y@˜úf¿%"þ<"®P1¶ÀW"â%™ù´0 ¬FÏ,°–Àû•ˆø7*ÁùÀZ‚,€0 ¬'ÐÞ¨›ìÎÌô9Ö~|ò |H]ó²Ú Ødkn/Xô™T5pffõ_íl&í€0 lz ÕnÀfÐ^lì¸ä+øpºî×h7 ÏÖÝ^°è³¨z0àÌÌ ÀÚ è'í€0 ly Õn@?Ü£½èéxä+øPºá×j7 G§#â;{™•u Ì̽aíôB{Ðû±ÈY- | íy¥”ÏDÄMªÉ:Ü“™ïêÃgO%A˜5€0Ûs ÐnÀzôÜ^ ÌÏÒfô#k7`=´ý;9«…¢}[—vÖ /í‹>s* ¬„Ù¾ í¬¤oíÂ,ð,m@?ƒ±vV¢½fËÛ… ~§”òU•`±RÊßFÄTfË1¨Œu:·•R~gbbâñÌüfUa±Ì¼¶”òX)åd§ÓyïÔÔÔ„ªÂ,°­Úíö+K)wDÄãFãSñÆÌl¨ ËÚŒˆÆW^yåT)åívûµ“““ŽEÀÆÇÍó0ðc]ËÏÍÍ}ëÐÐЭ™ykf¾@éU)åñÌüÕùùù»GGGÿr¯U@f  Ì®lzzzïóž÷¼7GÄ{"âUcƒíç2óîóçÏzß¾}O ³Àj|µ,éäÉ“ÍRÊMÝn÷×:4ŸdÙ‚“«WDÄ{÷îýj·Û½·”òÆ“'O6UXvÜpV þÞ¿ççç¿«ÙlÞš™ïÍÌ#*Äv+¥Lgæ'#âÎÌüâ%Ï)³ô0{þüù+÷ìÙóöRÊ»3ó{T…Ë8Øþy)å¿ÏÍÍ}rbbâ Ç0@˜þIDüqDŒ);(Ô~#3¯ˆ/ª 6=³0èg´™_èt:¯)¥<®ì û·ívûU—¶Â,0 †††þdvvö¥¥”?V .ó û{.\xùÈÈÈ_¨ ÌÏ™˜˜xâÑG½1">¦\¦þÓñãÇo^Ë%»€Á¡g}Xâ:³NçUU}<3ÇUˆíVJ™©ëú½ÍfóÞ%žS f  ÌþCóóó× ýNf^«Jl£¿ºxñâ[–k+p ´K9uþüù—–R>£l“§OŸþný±€0 lÈþýûÏ?~ü u]ß^L±EJ)¥®ë;vìíGŽi©°m0èƒÀ2m—êt:o¨ªê™yHÕØÄ ûT]×ïl6›÷¯qyEƒgfX“f³ù»/^|y)åKªÁ&ÙG.^¼øÒµYaX—ÑÑÑ¿9sæÌ+êºþ´jÐg'Μ9óòÑÑÑ¿Q @˜6Í‘#GZFãmñÓúhéU)¥]×õOè6JÏ, ú °ÆžÙ¥´ÛíëƧ2ó›T’ Ù©n·ûÖ¡¡¡?êa ÎÌ,°aCCC» . ¡Ÿ›››{i/A@˜z611ñD)å>•`=2ówo¿ýö'Tèy<ñ |¨Øðk§¦¦&>ü«UUÝ¢’lÀ‰Ó§O¿§—^YÇ0@˜avC¯›ŸŸ¿nxxø7#âªHaô‘Ìü¡Ìü+aØmÀFÄ }^¥'SGK)_èt:oS @˜6ÕäädÕívÿc)åÞÌWúhÇƧJ)·ONN:.ëC|E$ִܹsçîÝ»÷×3óuªÆf)¥üÞ… Þ¹oß¾'׸¼¢0k aveívû•ÍfóSñ-*ÆÚ¿m·Ûoù aX¯s€u:÷7?dÙ¬k‡††>§f ;uêÔp)å£Fãc™9¤"lq o4Ÿêv»9uêÔ°ŠË޾¢ ÿà±V«uõØØØÿÈÌïU!¶ÛÂÝÂÞ:>>þµ%žS f  Ìþívû¦F£qwfV.£@;ÕívßzéíoÃmÀâ`ðSFã~A–Ëð¤ëH£Ñ8YJùÕ„Yàššèv»÷FÄíÙËýmasíPD|´Ûí~\-ðÜØà+lóóóß:<<ü[™ù"Õ`§x¶vllìkªƒÍÌ, ¸™™™¯—R~9"þP5Ø)A63ïît:󪘙…Au”R^X×õ»«ªº5\W–Ë+À>^J¹§ÓéÜ522òè¢Çœ™Y`q°ýr£Ñø™cÇŽ]7FÄ=¥”•a›ÌÖuýén·ûÆãÇ?¿ÑhüÛÅA ÂÌ,Vù½×ôôôÞ¼¥Ñh¼/"^¥bl¶gÛ"â72óéU–U0f  Ì®ÍÜÜÜ· ÝZUÕ{"âÕ£vÉ6‚5¼Nñ`Ài3ÖlttôoÆñcÇŽ}[<Ó†pg)å*Ãi#zff}èñ²²SSSW]uÕ[J)ïwZV³ž6‚5¬KAA˜5€0Û·rM]×ïÎÌw1.ùl77÷’ñññ¯õy½Š NÏ,Ð7“““Õðð卿,qÒthllìWTèûøâ¬>dôm]Ýn÷'«ªúUeïÊÌ{úµ2Ç0@˜a¶/ëÑ^ÀÃg_Û Ãm@Ï´°Ž“'í@Çgµ0ðá¢çuh/`úÒnà³ Ìöôzíl0„ö¥ÝÀ1 Ðfl˜öz8‰ÒnôgªêÛggg¿¹Ûí¾'"NDÄÓ=„Ù£­VëjU„Y`Wi6›ën1(¥üY]×?ßétn|ôÑGdæ›2ó¿ŽŽþe<óc#úd||ükÍfó®Ì¼åÁ<¯¨ëúX)åse¿²ÕjlW3€A¶èju]ŸÊÌ£«„ׯ—R¨ªêþ™™™ÏNLL<±Â²×E„+#ôn:3¯\isçÎÜ·oßk꺾93oÎÌ#«¬óDfÞ²oÞ1 03 lºV«uõRA¶”Ò-¥üa]×ÿ."^~üøñ+Æ;3óž•‚lDÄüü¼™Ù-²ÿþ³™y¢Ñh¼·ªª«/^¼øâº®ÿuD|¶”Ò^â%7œlÁÌl·Ûý±ªª~y!À~µ”r_)åþV«õÐþýûÏnd¥”ÃqÆìÙ#™¹áÛÐNMMM\uÕU¯ªëú ™ùúÌü¶…§nÌÌ7ûÍ;†Â,³›¾RÊ×u]u:ßy´OëÜçìÁí ³Kì—k"â¦n·û•f³y¿0 ³À޳›d `½{03oÜÁŸ{œžY`'Ó7 ÌìXßP‚žM+ Ìl¾ÍÌ–R.ì”?º”ò”] Ì;_Ï3³¥”¯FÄë2óøNù£ëº~WDÜRJéǬª™Y@˜Ø¥”^gfï|úé§_”™ÌÌÌÜSJéyêá‡~ 3O´Z­Å3·ŸfvšÌÜÐ¥¹ÍƾÿàÁƒç""&&&žÈÌv@˜=qã7v""öîÝ{fáN[½ÌÒš™„Y€m²‘™Ùçfc—xî®>Ïß*¥üi_íªº{‰Po–fv 5÷Ì.5»„ßî㫾xæÌ™wÎÍͽ¹”òxŸÂñ#™¹d8îa–Ö]Ôaàrµpc…•fcŸ“™ó™ùÉ>lóBDÜräÈ‘Öøøø×ºÝî;J)í^×›™w­a™­VëEu]ÿ†½³—·Õf ÿªÛí^¿Êlì¥îêå •RJ]×·dæ—Ÿ}lhhè¡Ìü±×Û™™¹g-ËîÝ»÷L£ÑxgD¼naFz%®Õ ³—“…ÙØ_Šˆ— ýÑz^›™ZJyd£ÛÎÌŸk6›÷/ñøÇ"âžÖûÀÄÄÄë}ÍÓO?ý¢ˆ¸s…ÅÜE f¶ÉR3³ÏÎÆþdfÎn08ÞµÁý[ÇŽûÐrÏ?òÈ#ïëáazO<—™ïågiÍÌ;Z>3 ì ¹cß{)e2">¼ðß%3??³Ñû¬V«uõØØØßefc/{,"¾;3Ÿ^å=_SJù“Ì<²Ž¿ó©Ì¼:3{šE={öìþüBD¼oÑÃ7fæƒ;ø3àÿÄ0àÌÌ;Ù³¿Äïy6v±õ^svá_o^-È.œ<<Öívß¶ž4dæ'{ ²ËÎÒš™„Y€íP×õ†{c×à®u¼ÍÌ/¬uù¡¡¡‡J)?½Öå;Χúù‡]ÒK«gØÑ´À ;¸Í`rr²šœœ¬7cÝ¥”‘RÊ™y`• ûKFã'7²n·ûëUUýóU{,3¯]æ=úÏÌ,°“Ãl½Yë^Ë5gK)?ôÐC?½ÑmLOO`µ„Õuý {`…ñÚ™= ø °ƒgf7[)åeñùež~lffæ{×{¹¬%¶qMDüYD\±Ì"×fæc˼ÖNž™Y€åƒþ’ל-¥´ÛíöÛz ² Ûx,"ÞºÌÂ\.È Ì¬%lÞuécu]ÿËáááÏ÷qŸ-¥,u}Z-«¡¾¦‚kа‚%®9û±ÌüÀflkñÂJ)3gΜ¹òÈ‘#­å–7~˜™XÑâkΖRþ8"þÕfmëìÙ³?.lëÄJAa`­NDÄôÜÜÜ-ý¸)Ãr>|>"^OWUu—²¬N› ú  Í`USSS‡zåÐÐÐÿÚŠí•R^“™Ÿ]Ãrvà8f0`§Òf€0 Â,³³ Ì€0 Â,Â,³ Ì Ì€0 Â,³³ Ì€0 €0 Â,³ Ì Ì€0 Â,Â,³ Ì€0 €0 Â,³³ Ì€0 Â,Â,³ Ì Ì€0 Â,³³ Ì€0 €0 Â,³ Ì Ì€0 Â,³³ Ì€0 €0 Â,³ Ì Ì€0 Â,Â,³ Ì€0 €0 Â,³³ Ì€0 Â,Â,³ Ì Ì€0 Â,³³pYøëKœÐ­|G¤IEND®B`‚FlipCycleTileMedium.png000066400000000000000000000215561434613136500345370ustar00rootroot00000000000000belle-sip-5.2.0+dfsg/build/wp8/belle-sip-tester-wp8/belle-sip-tester-wp8/Assets/Tiles‰PNG  IHDRPPéè&Ù pHYs.#.#x¥?v OiCCPPhotoshop ICC profilexÚSgTSé=÷ÞôBKˆ€”KoR RB‹€‘&*! Jˆ!¡ÙQÁEEÈ ˆŽŽ€ŒQ, Š Øä!¢Žƒ£ˆŠÊûá{£kÖ¼÷æÍþµ×>ç¬ó³ÏÀ –H3Q5€ ©BàƒÇÄÆáä.@ $p³d!sý#ø~<<+"À¾xÓ ÀM›À0‡ÿêB™\€„Àt‘8K€@zŽB¦@F€˜&S `ËcbãP-`'æÓ€ø™{[”! ‘ eˆDh;¬ÏVŠEX0fKÄ9Ø-0IWfH°·ÀÎ ² 0Qˆ…){`È##x„™FòW<ñ+®ç*x™²<¹$9E[-qWW.(ÎI+6aaš@.Ây™24àóÌ ‘àƒóýxήÎÎ6޶_-ê¿ÿ"bbãþåÏ«p@át~Ñþ,/³€;€mþ¢%îh^  u÷‹f²@µ éÚWópø~<ß5°j>{‘-¨]cöK'XtÀâ÷ò»oÁÔ(€hƒáÏwÿï?ýG %€fI’q^D$.Tʳ?ÇD *°AôÁ,ÀÁÜÁ ü`6„B$ÄÂBB d€r`)¬‚B(†Í°*`/Ô@4ÀQh†“p.ÂU¸=púažÁ(¼ AÈa!ÚˆbŠX#Ž™…ø!ÁH‹$ ɈQ"K‘5H1RŠT UHò=r9‡\Fº‘;È2‚ü†¼G1”²Q=Ô µC¹¨7„F¢ Ðdt1š ›Ðr´=Œ6¡çЫhÚ>CÇ0Àè3Äl0.ÆÃB±8, “c˱"¬ «Æ°V¬»‰õcϱwEÀ 6wB aAHXLXNØH¨ $4Ú 7 „QÂ'"“¨K´&ºùÄb21‡XH,#Ö/{ˆCÄ7$‰C2'¹I±¤TÒÒFÒnR#é,©›4H#“ÉÚdk²9”, +È…ääÃä3ää!ò[ b@q¤øSâ(RÊjJåå4åe˜2AU£šRݨ¡T5ZB­¡¶R¯Q‡¨4uš9̓IK¥­¢•Óhh÷i¯ètºÝ•N—ÐWÒËéGè—èôw †ƒÇˆg(›gw¯˜L¦Ó‹ÇT071ë˜ç™™oUX*¶*|‘Ê •J•&•*/T©ª¦ªÞª UóUËT©^S}®FU3Sã© Ô–«UªPëSSg©;¨‡ªg¨oT?¤~Yý‰YÃLÃOC¤Q ±_ã¼Æ c³x,!k «†u5Ä&±ÍÙ|v*»˜ý»‹=ª©¡9C3J3W³Ró”f?ã˜qøœtN ç(§—ó~ŠÞï)â)¦4L¹1e\kª–—–X«H«Q«Gë½6®í§¦½E»YûAÇJ'\'GgÎçSÙSݧ §M=:õ®.ªk¥¡»Dw¿n§î˜ž¾^€žLo§Þy½çú}/ýTýmú§õG X³ $Û Î<Å5qo</ÇÛñQC]Ã@C¥a•a—á„‘¹Ñ<£ÕFFŒiÆ\ã$ãmÆmÆ£&&!&KMêMîšRM¹¦)¦;L;LÇÍÌÍ¢ÍÖ™5›=1×2ç›ç›×›ß·`ZxZ,¶¨¶¸eI²äZ¦Yî¶¼n…Z9Y¥XUZ]³F­­%Ö»­»§§¹N“N«žÖgðñ¶É¶©·°åØÛ®¶m¶}agbg·Å®Ã“}º}ý= ‡Ù«Z~s´r:V:ޚΜî?}Åô–é/gXÏÏØ3ã¶Ë)ÄiS›ÓGgg¹sƒóˆ‹‰K‚Ë.—>.›ÆÝȽäJtõq]ázÒõ›³›Âí¨Û¯î6îiî‡ÜŸÌ4Ÿ)žY3sÐÃÈCàQåÑ? Ÿ•0k߬~OCOgµç#/c/‘W­×°·¥wª÷aï>ö>rŸã>ã<7Þ2ÞY_Ì7À·È·ËOÃož_…ßC#ÿdÿzÿѧ€%g‰A[ûøz|!¿Ž?:Ûeö²ÙíAŒ ¹AA‚­‚åÁ­!hÈì­!÷ç˜Î‘Îi…P~èÖÐaæa‹Ã~ '…‡…W†?ŽpˆXÑ1—5wÑÜCsßDúD–DÞ›g1O9¯-J5*>ª.j<Ú7º4º?Æ.fYÌÕXXIlK9.*®6nl¾ßüíó‡ââ ã{˜/È]py¡ÎÂô…§©.,:–@LˆN8”ðA*¨Œ%òw%Ž yÂÂg"/Ñ6шØC\*NòH*Mz’쑼5y$Å3¥,幄'©¼L LÝ›:žšv m2=:½1ƒ’‘qBª!M“¶gêgæfvˬe…²þÅn‹·/•Ék³¬Y- ¶B¦èTZ(×*²geWf¿Í‰Ê9–«ž+Íí̳ÊÛ7œïŸÿíÂá’¶¥†KW-X潬j9²‰Š®Û—Ø(Üxå‡oÊ¿™Ü”´©«Ä¹dÏfÒféæÞ-ž[–ª—æ—n ÙÚ´ ßV´íõöEÛ/—Í(Û»ƒ¶C¹£¿<¸¼e§ÉÎÍ;?T¤TôTúT6îÒݵa×ønÑî{¼ö4ìÕÛ[¼÷ý>ɾÛUUMÕfÕeûIû³÷?®‰ªéø–ûm]­NmqíÇÒý#¶×¹ÔÕÒ=TRÖ+ëGǾþïw- 6 UœÆâ#pDyäé÷ ß÷ :ÚvŒ{¬áÓvg/jBšòšF›Sšû[b[ºOÌ>ÑÖêÞzüGÛœ499â?rýéü§CÏdÏ&žþ¢þË®/~øÕë×Îјѡ—ò—“¿m|¥ýêÀë¯ÛÆÂƾÉx31^ôVûíÁwÜwï£ßOä| (ÿhù±õSЧû“““ÿ˜óüc3-Û cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF™IDATxÚìÝÜu}Çñ÷ûóýîíÝn.¿sI¨8`•9«È5p b-‚¨®Ú‘qm‹?f(— B¡£•±¶EÐ` HBÑb ¡CT­£ÈÑŽ0bÍyùu·{··ûý¼û›ô¼Þåîö»{·ßÝçc&Éí}w÷ýÝïëû~¿ßÝU3Àì9J( @€ @€P @( @€ (€P @( @€ (€P @€ @€ (€P @€ @€ ( P @€ @€ ( P @€@€ ( P @€ðÿ„” U¥Ól_±bÅÐ\ÝŸ™µ©ê•Ÿ¶NõnéÒ¥_2³us §ŠÈfªŽ9i Ø ÑÖR¶££c@D ªz¦ª>_Ãð\af?‘Õ###Çf³Ù½¬:P:P$ÖòåË/VÕŒª.‘-fÖV‹ûéëëk‘{Uõ5ª´¶¶®§ú @‘hAtûë©Þû;jq?'tÒ­"rþ‘¶sÝTŒðŒð‰•ËåV·µµ½¤ªÁø÷Þ"‚¿¯â(º^D¶Lü÷±±±SÒétk‚ž‰“Édº'†gy§s«™]¥8UDîžìg---d-€ER;œ+¦èÚS"ò@>Ÿÿƒ˜Ë_afŠHÛ?ÿóÞÞ^.ÕŠÄ…ç[UuÍQn²¢µµµâ“J===ND6«êNuU]µvíÚu¬  ¨EÈuïÛ·oQÅt7PÕ³DäK•,üú믿ID¦ Ç j2Æ÷õõµ”J¥wñ*jnœDŠ[ÀŸD2³^3{½ª^­ªÛ«¸Ü´™í-_º4­(Š® ÃðΙ.¿T*]Á·fx󂈣ªûªøüÞdf›Tu¿ªž›àõÏLŠP«ª¾FD1³;«Ø^<ÓðqÎ}ell쌥a¡ðÆ ¾>‹Ç’‘T«ëŒ¢¨ÇÌv«êif¶ˆWŠæížŽûëU‹/~¶o¹4³?›åãH¥R©ûs¹Üê£Ýnpp°½¥¥e«ˆ,®å㙪ë<ùä“w;çn(ŸUMó*"@ѼÒ‚,v7jfKUõ¢ ~õ¸¶¶¶û§:kÞÓÓã–-[¶EDN¬`Gñv3;®]ç„/ä%ÄÇŸ¾îl Þû—*éFÍì£CE_˜b¹Ÿ¹ÜžJºNïýO޲ضýæþCJ:U×Vi7zE¬‘ȹO”J¥ËÆÿ[©TºÄÌ>s¹3>?M×IŠÿÛN8û8b’;›áí~3“3õ…B¡³¥¥åÙ*<®aU=CUŸ=!N?%³<î9…sUuÇt]gù ûi3\ÿšàõÏhóº™ñ ™v£Õz뤪.‘mù|þØt:ýP•ÂS¼÷WT¡ëœXGºP:P4[jf+Dd ‚ß›´ííí Ï9眗TuUæ¡jŽÉf–èXµjU.N×9A‡ªÒÒ¢‰ŒŒŒ´V¸Ã˜´]»víº*‡§H•1ªjfåÊ•ëãv[p-(ŠfÓÖÖ7œ~ïºÑZ½e²>x¸ëœx]g%Òé4ׂ hB±7üñݨˆ\œçÝef§ë¬e—Œd᣾šW57ü«öÜÿ²ŠÇ®é@é@A :P `ÃgG"¯¾¼T*]Xƒo³dïÓÑØØØ›gs.æׯ-à\ê½ï+òú.Ù>66¶-î—¥™ÙGEäXƒ±]«ª_‰³€C‡-Ïd2ë‚ ¸ÀÌÞ¡ªªvÔú³íÓ63{¼Ü1ž'"·¶´´<ë½ÿŸ(Š6™Ùz3[\A(·RÙªìÜf}hoooX,×FQt³™í^°`Á@÷ˆH·ª®òÞ?Ne PTk%9÷à$ï1åÈØbf/›Ù“Qõ‹Å3Ëß4Ý29Zu3£Q;ŸÏkfñÞûœsÎÃp§sîÓ"ò։履l}ƒž¾ò4-"e†Ç-Íl¿ª>EÑ#…Báál6»w’ÛÜ,"Ÿf ÆöEUýä$õm‹¢¨KU/TÕóUõ¤™.pxxxe{{ûÀ¼®X{1qh2BºPã/šáí—ˆÈú Ög2ñÞ?kfßóÞoûÅ/~±³³³sL8 _-Gvj…B¡3 Ãuι DäíATrâïé¹OÐ6M*"Eѵι/W¡ëÈ«êf¶\UßÂŒ]ÏÝfÖçœ;OD^wyÞû AôÌÑcg Í Õú¬MÔ½i?³”%@ ÐÊ^ð/ˆÈqT½a»ÙýªºZU h2p>Y¶Q‚†Þ?6Wá ´í Ë{ÿ}ªÀÏ_»‘k©ˆüVxf£:^U_œÃ×§mª°ÞgfOR‰Æcf{æ2϶OÚ¬÷ˆ™=ÉåK(æHEŒ{ –!@1WFFFø¼ÈR*•XŸ Å1иœ‡c ""ÞûgTõ¬ÄwŸýιÕót߬:PÆ>$zÌz$@1ç+ιT¡!°á᦯¯¯eÍš5™‘‘‘¬s.ëœË¨j6 ÃLEYÉAñÞgE$+"É:ç2Þû¬ªfU5cfG~®ª Dd5k ñ~gf‡D$/"9UÍ™YÞÌrιœ÷>/"¹Ã?wÎå¢(Ê‹H.‚\©TÊ›YÎ{Ÿ÷ÞçÚÚÚr{öìÉ—?4›žMv€:thù‚ ö¨*×mbN”?4ûͪú<ÊŸh .|YU¯¥˜Ã½~ºðš¤.u«ˆl¥˜»vîÜy;e`„oˆ~\W°ÂÌúå1ߣ;#<hƒvQŒî(åÁèFø¹áåQ/£;#<(£<ÀèN€2ÊŒîŒðŒð³íVŠÈÏEd1UD…¯¡b±X<-N?WáïSD:ÐÄïïDäcT1ô†JÃh#„è="ò•@žÞ¹sçm”¾)GxFyÌ×èÎOÊ(Fw `”£;#<#<£<1º3ÂÓ2ʃÑ(åÁèN€¢*¢(º‹*`"ïý·¨B6=‰Ý5Æ^F.—[ÝÚÚz¹ªv«ê)TSŒðƒªzŸˆÜ¥ªÏTay•Mf€šY[EAÐmfªj@51‹×ÏOÍ죣£÷e³Ù½(ÚZ,Ï Ãð*3[¯ª © bi$"ßóÞßÁwTµ@€   £££¯K¥RÝåý T 5rÀ{¿Å9·YUw hbtpp°}ùòå—ŠÈ•"ÒE¥0Çž÷Þo.‡é¯ ÐÚà,|õôô83[Eѽ˖-ë‘» OÌ“sŸ3³ͬ·T*}¨¿¿?KYª+¤ñ …“Ã0ìvÎu‹Èkc¿„º™TDº‚ èêèèø’™=X*•6ßtÓMÿ!"ž 1ÂÏ+ïýGœsÿD%0w‰ÈÕ”~^AðÏQ]cfEª„¸mÆ ¦ t õ0"‰È«—'Að€ªCUPÌ,ï½ÿP†÷—ÿNQè@ëC*•úÑÈÈÈéföCª: ÏŠÅâÛ‡'к“Íf÷>÷ÜsçŠÈW©ê(<>#NÿŒj u­³³sLU?EÑ5"2BE0ÁiÞû[7nÜxáÂ… _¦"ÕÇ1и<Ê;‘ …Bg*•úŽªO¥0Çá¹ß{Y†å6Š´~¥Ó龡¡¡ÓÍìª9 Ï=ccc§-joëÀÀÀ­­­¿¢Œð‰á'é Ö›Ù&UÍP9T¹ë43ûÌ7Þx[OOŸáïP849*ÂqQÔ$<§=ÞI€2Â7„qÇEùŠTÃSï$@›Ê¢E‹ö9çÞ+"×q\•òÞßµgÏž³9ÞÉß4#üDÅbq]÷ªê2ª‰ŽÞEU½VU¿s9“4ÙòùüÓ"ò •À,ü¦P(Z·šËåV·µµ= ªgQ%ÌSˆ¾P,ß3Õ'ѳí3Â×¥b±xf[[Ûž˜çûñ©TêÉR©ô~ªA€&B©Tº:‚ïó휨“ÍAðMŽ‹2Â×õÏñN$`¤ÿ½ã¢lûh](Ç;‘ =r\”mŸ­‡‘ýÌ `dG‚B4ï½ÿP|G|L‰) ܪ~ÛÌ^¡H@xEd{9ªAZ#¼È«Ç@O<ñÄ‹œsݪúnISÔQp>©ª›‡††¶p ”­»ïàÁƒK.\Ømf—«ê[¨æ)4kf÷”J¥Métú¹I~N‘áëÏ¢E‹ö©êíιÓÇÆÆÖxï?ofýTsšyùF©T:ãÆÇAð©ÉÂt uÛN¦··7ìêê:Ï{¹ª^ÂGÙ¡Š¡iªú}¹gÿþý,]ºôà â ÉÐñÛ—,Yò§A\%"o§Š¨08_0³MιMªúë ~Ÿ" É ÐñFGG_—J¥ºUµ[Uß@E1Þû-ιͪº+fSM4Ù:áÝ彿Ü9w%•Å„×F¯÷þ«A<¨ª…*-“ÂÆÄI¤ú ã"ò_T“„ÝSaÞW­ðh#v Ç™Y'˜0Ék#*•Jgµ´´ì®â2),hcèééqfö5ÂS쨃0 ï2³6ªAJ:AE×:ç¾LEq4Þû[‚ ø (J€2ºcGy¶}FxFw0ʃ´Y;PFwÌ×(϶O€&:@Ý1Ÿ£<Û>#|Ò7FwÄå{{{CªAÚt¨™]%"wRAÄå7AÐCJ€6M€šÙkEä§"²˜ "æSTÕ3Tõ'(#|³¸ƒðD•và)¹›Qž´):PFwÔË(϶O€&*@ÝQO£<Û>#<£;À(OÚè(£;êm”gÛ'@ Œî¨ÇQžmŸžÑ`”§mÔthh¨#“É\)"YɈHÖ9—‘6i3³¬ˆdU5cfGþ[þ7¥ÂMßQšˆäT5gfùÃÿ=üo"2""#Þû¼ˆäD$/"¹b±¸µµµõWt hâGøOÛÐÐP6•Je[[[3Åb1›J¥2QeUµÓ9wk ñ>EÑ® rÅb1ŸJ¥r£££ùb±˜kooÏ©êH __T?&Úüúç‘r‡ñòÄŸEQô:*”|Þûb†S‰dâhRWœsçP…†ØIvQFxFø9dfi3ÛÇ'9%Ÿ™E¹\î˜öööy¸oVhS:“ðl˜p°`Á¦ sÅ{ÏØ×XXŸŒðŒðs Ï¨ê©~ÃŒñýιՌðt ¨±¡¡¡³áv« …B'• @QcmmmçQ…Ɔ!ë•E­Ap)UhÈ.ô½T!ëã ±_øszf6 "+¨|Ã)ˆÈ"U-Ìák‰ªÓ63;•ðlXéR©´–2 ¨ï=c^ ÃÃ3(jx¸ ‹*4ô„Áú%@Q ýýýYU}•hèäš\.·šJ ¨²•+W^$"é*.²@U«â™«µ°ÖÖVÓ ¨X㙑‡Dä/Däx¹‹’VÅ=KDä=Þû;Ìì—±6H>e+Qø<Ðä¸h–i"òŒ™=ì½ß¶k×®{î¹¥q?§­’U«VåÊ;§‡DDFGG_ŸJ¥.RÕu"r¶ª.˜Åz{‡™¥çòr&  ­ü6¿ãf°ñ šÙ÷œs?²pá—6zRÙªœd ÿo¹]Dnïëëk9á„ÎÃðföNU=íh SÕ%"r¦ˆì ´(ª±’°kŠÀ,ŠÈSf¶-Š¢í---?žé2½÷ç8‚Skc"òXùÏu¹\nu:¾0‚wšÙ;TuÙ$릋M¶ $¬$çÆï/zïèÒW^ye™snm7Ï&<ËËv›ÙÊ?EÑ_Oœ‡——6³½åĈó¸þÍ9wɸ¿o‘î˜O· "Ǩê¾Üÿ:3ûGU=~ë_¼þÙ€é@Ãt]èÖááágžå0)¨ê}1Ó3—ÿ‡={ö\efqÏò?4“ð<ܪj§ˆ|qš Ý'({¡&î@'ýŠd3TÕk+y‹¢™½UDvWøx†UõtU}~’Ÿgf?®´»¢èÝa~w¶¿W,ÿ8 ï‹È&Û©j((è@t¹\î”Jßß­ªO›ÙžJ'xïß7Yx–—ûbE—TrRÉÌúŸx≊Np¥R©ˆÈiSt£t (ðj×)¯~0ÆûÚÛÛc]š£ª›*ø›Ã0|xš0Ûif×U°ìÍã?¿‚ßQÕOFQ´VDÆeŸ'@€¢‰ T£ëœ(ŸÏß3ËNqÛŽ;n˜É ƒ ø‚÷þ_fóxÆÆÆî®ÆóšØ–¿g MŒc q ˜ìc [Ddk->ŽÍ{ÿ˜ªž7ƒ›¾("¤ªf|Üap°}ùòå;EäM3xŽ?sÎZíçW>6úAUýp‚×?0(*µaÆÔê³,UõžlÀÃ"rélÂSDdÅŠC"r©ˆ˜ÁãØ\‹ç—J¥~äð(hëïïÏvtt ¨jfªÛDQÔ†á½1:¨óÌl»ªSü<96›ÍîeÐÒ"1V­Z•3³­Gñ¿'<Ë;¯ÇUõoŽòóí„'P$óÅåܦ):Ÿ'vîÜy]5îcÆ ·xï§új’M¬0Â3Â'yL|A~ÿ;í_ÌçógU³3,ŸTzJDNw¿ûUuµªr©#<(’É{÷¸ ¶X,ß_í±º|Ré"wRIUï#„ßižþrN@ú[q‹Ñì÷Š-á%|wWXœcccð÷žOxgdd¤ž¿·ˆå0F«_ZÇqn@Ø)¯xÜÿerc£8EðûJƒ°òõ¦¨ù¿ávÀõD Kÿ‘*„0Oéôà·?@<3"êFñáû'‚Ââ·CQpÀÿ=Hï¿nœ_–~3$àÁL[ATöpˆ€äçíÞ¢á»u-f}”+ðԵvõá8` §åwŸ>Wh+ˆ0_3Þ¬Œf­•ÿ®„;k6lÎÏÓÚQ|ZešÔXg€¶‚3h" ñ#\½ÃÃËð÷Ópðç;ç× µ«¶Ï´üô—!ÔXWüú‚‡Z€0£D$<2ÀhÝÐÚQ|ê(VÒ/^¼ÅPDW[A˜Ñû Ã4í­6çgÐÚÕ§õX, d—j¬ÇT!u­à>Ó0ÍúCšÄþýº‘¬I”-)¾Ø“±v%)µNSߟÁ¿?…»ß4L³þdiþüù/áó³âêŽà77^[Q|m¹¡_ðŒªŸôÝd^–¬"Ö‘qË1Þ,½wEM\ø%±'1jºQü«À} óôòÒ¥K?A§è \?íM–™ ÙòO;nÖõÐ<‡þämmmïÏ›7ï+QÄ@¿uñMoo\¦8dĈïe÷É/0|·Ñ¤Ÿ3?»ü„!7#Xü ey®ê-Óùóç[²¯hå&‘9»)(ü=)&ÆÝ=üX΄e’Ý=\n6¸ÜÍ®'CØ [©¤&‘ÑžÚ p+Èœñ‚<üÿc$ùeµ…Š‘1”KVFNÁ­AÙæF± ~aè7oÚÅ×ð"¦ë2¡“ïD×‚Ûæ"¨p4À›€;¨ Ò¼M _ÿTš·«ÙR->É%útoh‡¨-°¯Ê«-_Þü¨¦þ¡¢¶üA|¹`¦^|˜¯’g"Žk«`ÍùÉË «^|nßOuÇY“åF•VSžå%âüV.̈† ×>­g” ña™m?2­¾­A|¸Q_Õ“<äB|2rƒ9yÛ¤@÷357SSÖ'™e lË–-åeË–•°6Y†°Ä•äsÁ‚%ܹòpuK˜f™ý®„Eòïà“ åw—¬ðÀí„—*œfxÎþ ž²‰UÖwØAßÐ9sæLuppÐA½LÛ¾q­‹ÿ ùÛez  NÞÅÍß wÁ&'ëfwš<\Í“›lÖrpky-â#¶…'Y².¾®®®ó0+a_øl !ضhÑ¢#Y€°nvk…„Ñ'iÉc²¨È8ifenkyµÞòÕÆ£ƒ¿¢ù#™d€}fæ6sñÑü&#¢¸±dinkyÎÌìÒüÆ•Móá²6·™·|4¿Í‹(N Ì­ñÑüÆ‘Pü0Ì­³Kó_HQCj1·jZ>šß¨Šç_“¹U'>šßx¢2 ¥ÉܪŸ{ŠûCXüþµ<‹j ”þÌ `ùl&öŸ‘W5˜‡jQŸîÞòš©]rlXÐÐü-Yà}TN:Ó÷³”—õy>Üy«°uj#–Ö6¢àŸË²ðEO[ú`ðwˆñX¿Ù~âÍŠøPÈ%(àP¸‡eëNÑ+]iùÿ‡:ÚƒFaêè-yLM|rÎq¥R¹Â{…ù SÈÓ£lTbÒiÈš;Ünñ¨»’Ž?õǪU«äz?Dæ ðÒª¾tâE}îGØç—껂SkùjXpÉ[}žq M‡cM”êëm.ù`©T’ÉR»RßRÑmÃÈj= $'HñRN@'Nœ¸;má †Ô[¾kÜI7cÇì¾V;¾L¹–Œ³‡Æau³îÆšô˜zËWËßâÅ‹?½CFTMæ™Á&áÀ:É‘jÖ„gµå«çÅ~`Âêi":[ý;¿,Zkùêg?° µ$ÔfÿÎ/ÛÖú|~‰³˜ ’"D•EÿNMËÇ~`¥$ì5«þ:ñÕ2„™ô©„3º ÙÍA%%Å›]¼7ãyRžó~IK+<>0__Û1½²C^X"ÖG»²…þ%¶ð¼KÓ)c5!€îÎ#Xƒ-a&[Û¬šÝsçÎ]ßÑÑñˆî»&pèLjï¬lÁ>Ë×ì¤x%k-Ÿ¼' Â{‡Â³Y½fi¡N®C+¸_,’X&³PÍû²ÒòáÎ’—ôí”C ›Ï2cH™ÀÞÓ§Oo^±b…“r:é¶|Ò™•‡V ¼¿RxiWebñ÷uwwA}!±D”ZË'¯Û,—Ë/Ctw¦]ÆŸ<ˆ¯Š~à&ô÷&{Ê}>ôïFÑêýɼ€‚|šVoòP_2Ö_­Vßø'©µ|õ™AaÚ!Ä 2´Ç÷ßâ®æ8U•nYvƒû3¶ÎïÆAáÿN7µ+±[_}Ap7ÝØÞÞ¾Ù}°(õ~… ˆ9Nc¦uŸ<±644t`íÚµV—9­‹ÏÓ"V𿼖¾­agŽ+1WYwÍê‹è—ïéìì<“Uæ3_­Ð###ååË—ËSn›áD¼&…Y +‚ ñÕ2 @߀B+hú*÷°òñw—ÌëÓXÒ|R5âs[¿Η4j•¼¸;YäE/Gµ”ÉÚRJXqDÚÓ^¥ø¿»;Y^”“$âÇ’lH-Ím²•ÌïS0¿öRlœRæâ£¹µ+Mæ7s³KskW|šÌo¦-Í­]áÕ§¦Áüf&>šÛì„')k0¿™™]šÛlŧÁüfÒòÑÜf+<-æ×ºøhnõ/kókÝìÒÜê_–æ×zË'[ëW¯^]ºpáB[yÄ• Œ³%ìù+£jʘ-a46û7œ<÷Q†Ÿu|Æ7X¸r'Ünø’ç/ªò ¾¸Îþ ®öëUáÇ_Ù©ì`{›süøñjOOÏ%Û·…uñÅ- @Ɇƒ»ã†/H¸ ”óZp’Oõ—u³‡îÔ6½#NØ‚…iC+÷í¼”9âÐû”¯R0PLë½ÞTxÉ…øt Z9ȬD%ÙœÍb.Ä—' YW<º'«q:Ä­YçÃ$}õâÔ¤0ôs…fra)Ô‹// 5 _¦¥4å§Q^Ô‹óTœ^‰¨$ˆOÞy§~€¦Z|.7S5’¦wÞš4H"nÕâ€r|—iAÝþwMýçÅÊuî-8y?®é¥~ÊEµø°ª8m •!•¿Á²Ñ[·ní†XoZ;yñ‡2½ƒîÇ7ñ¹ y~åÝŽÏ‚ò.27Ê+.@~ç\øî&wÊ)pK¼qã;9¡Õ®]~ åÀMy]= û:œ¬Ùι䤰¸ì NÀ Iˆí>Âõ ì0(®([M|ƒånGë¿b|Ì>øûÇaáø»¼èÀÜ066Ö˜ßßjÊCyBÅçe$üpâ¿êAGnvµ˜ %ýÄTÏ•3ÍK‚þžBo ÁøTD¥zÀ“P.¶Å,[KkEñŸ‚ŠVrR!ÄçK¶jUèNÈHÇ"¤9Áon¼¶œø0(1jù¤òaÊzåèðO¶j éî]¸páa¼J¾×þ¤­´™NÊP¹]A=c8PÿÚ'9<ße "S>p¯D ãú•>éÕ ßÝŽxކÄÓ—26FŸTbg£Št+ùv¿tæ·¦Bãêãoym€éuÒ/m÷•ÒË´’ßEñ%!qxkϯµóæCæM„>Û£µð³î¬IXiqƒÊÐ Îi-m0d1  /ÖÄÔÚy£G“VL–¶æ\·éLpeX‘´‚_8-¿C£&­ˆúCú‹‡ñ{{³ýDˆø"Í=zZÁЕ-ì ŸTœ¬uúöí‚à8ŽsC@ 6*¯qh^^˜2Ùµbj­ V+¾5,ýçD»ß¯Ïˆïî +Ž,Âß{>á9&$,</8GvË̹0PxÜ .·y ² Ç4<ý˜„Óó9^SŸ¼ >*ÙáÑ/ Q!Õ?÷¼+žcaldzn¾s{aáù{A @41c€qS\2AÂæöâÆÏp-L ‰½p_W3na¼, €!ÿ©õÌì£ÝlIEND®B`‚IconicTileMediumLarge.png000066400000000000000000000115111434613136500350320ustar00rootroot00000000000000belle-sip-5.2.0+dfsg/build/wp8/belle-sip-tester-wp8/belle-sip-tester-wp8/Assets/Tiles‰PNG  IHDR†Ê`ã8† pHYs  šœ OiCCPPhotoshop ICC profilexÚSgTSé=÷ÞôBKˆ€”KoR RB‹€‘&*! Jˆ!¡ÙQÁEEÈ ˆŽŽ€ŒQ, Š Øä!¢Žƒ£ˆŠÊûá{£kÖ¼÷æÍþµ×>ç¬ó³ÏÀ –H3Q5€ ©BàƒÇÄÆáä.@ $p³d!sý#ø~<<+"À¾xÓ ÀM›À0‡ÿêB™\€„Àt‘8K€@zŽB¦@F€˜&S `ËcbãP-`'æÓ€ø™{[”! ‘ eˆDh;¬ÏVŠEX0fKÄ9Ø-0IWfH°·ÀÎ ² 0Qˆ…){`È##x„™FòW<ñ+®ç*x™²<¹$9E[-qWW.(ÎI+6aaš@.Ây™24àóÌ ‘àƒóýxήÎÎ6޶_-ê¿ÿ"bbãþåÏ«p@át~Ñþ,/³€;€mþ¢%îh^  u÷‹f²@µ éÚWópø~<ß5°j>{‘-¨]cöK'XtÀâ÷ò»oÁÔ(€hƒáÏwÿï?ýG %€fI’q^D$.Tʳ?ÇD *°AôÁ,ÀÁÜÁ ü`6„B$ÄÂBB d€r`)¬‚B(†Í°*`/Ô@4ÀQh†“p.ÂU¸=púažÁ(¼ AÈa!ÚˆbŠX#Ž™…ø!ÁH‹$ ɈQ"K‘5H1RŠT UHò=r9‡\Fº‘;È2‚ü†¼G1”²Q=Ô µC¹¨7„F¢ Ðdt1š ›Ðr´=Œ6¡çЫhÚ>CÇ0Àè3Äl0.ÆÃB±8, “c˱"¬ «Æ°V¬»‰õcϱwEÀ 6wB aAHXLXNØH¨ $4Ú 7 „QÂ'"“¨K´&ºùÄb21‡XH,#Ö/{ˆCÄ7$‰C2'¹I±¤TÒÒFÒnR#é,©›4H#“ÉÚdk²9”, +È…ääÃä3ää!ò[ b@q¤øSâ(RÊjJåå4åe˜2AU£šRݨ¡T5ZB­¡¶R¯Q‡¨4uš9̓IK¥­¢•Óhh÷i¯ètºÝ•N—ÐWÒËéGè—èôw †ƒÇˆg(›gw¯˜L¦Ó‹ÇT071ë˜ç™™oUX*¶*|‘Ê •J•&•*/T©ª¦ªÞª UóUËT©^S}®FU3Sã© Ô–«UªPëSSg©;¨‡ªg¨oT?¤~Yý‰YÃLÃOC¤Q ±_ã¼Æ c³x,!k «†u5Ä&±ÍÙ|v*»˜ý»‹=ª©¡9C3J3W³Ró”f?ã˜qøœtN ç(§—ó~ŠÞï)â)¦4L¹1e\kª–—–X«H«Q«Gë½6®í§¦½E»YûAÇJ'\'GgÎçSÙSݧ §M=:õ®.ªk¥¡»Dw¿n§î˜ž¾^€žLo§Þy½çú}/ýTýmú§õG X³ $Û Î<Å5qo</ÇÛñQC]Ã@C¥a•a—á„‘¹Ñ<£ÕFFŒiÆ\ã$ãmÆmÆ£&&!&KMêMîšRM¹¦)¦;L;LÇÍÌÍ¢ÍÖ™5›=1×2ç›ç›×›ß·`ZxZ,¶¨¶¸eI²äZ¦Yî¶¼n…Z9Y¥XUZ]³F­­%Ö»­»§§¹N“N«žÖgðñ¶É¶©·°åØÛ®¶m¶}agbg·Å®Ã“}º}ý= ‡Ù«Z~s´r:V:ޚΜî?}Åô–é/gXÏÏØ3ã¶Ë)ÄiS›ÓGgg¹sƒóˆ‹‰K‚Ë.—>.›ÆÝȽäJtõq]ázÒõ›³›Âí¨Û¯î6îiî‡ÜŸÌ4Ÿ)žY3sÐÃÈCàQåÑ? Ÿ•0k߬~OCOgµç#/c/‘W­×°·¥wª÷aï>ö>rŸã>ã<7Þ2ÞY_Ì7À·È·ËOÃož_…ßC#ÿdÿzÿѧ€%g‰A[ûøz|!¿Ž?:Ûeö²ÙíAŒ ¹AA‚­‚åÁ­!hÈì­!÷ç˜Î‘Îi…P~èÖÐaæa‹Ã~ '…‡…W†?ŽpˆXÑ1—5wÑÜCsßDúD–DÞ›g1O9¯-J5*>ª.j<Ú7º4º?Æ.fYÌÕXXIlK9.*®6nl¾ßüíó‡ââ ã{˜/È]py¡ÎÂô…§©.,:–@LˆN8”ðA*¨Œ%òw%Ž yÂÂg"/Ñ6шØC\*NòH*Mz’쑼5y$Å3¥,幄'©¼L LÝ›:žšv m2=:½1ƒ’‘qBª!M“¶gêgæfvˬe…²þÅn‹·/•Ék³¬Y- ¶B¦èTZ(×*²geWf¿Í‰Ê9–«ž+Íí̳ÊÛ7œïŸÿíÂá’¶¥†KW-X潬j9²‰Š®Û—Ø(Üxå‡oÊ¿™Ü”´©«Ä¹dÏfÒféæÞ-ž[–ª—æ—n ÙÚ´ ßV´íõöEÛ/—Í(Û»ƒ¶C¹£¿<¸¼e§ÉÎÍ;?T¤TôTúT6îÒݵa×ønÑî{¼ö4ìÕÛ[¼÷ý>ɾÛUUMÕfÕeûIû³÷?®‰ªéø–ûm]­NmqíÇÒý#¶×¹ÔÕÒ=TRÖ+ëGǾþïw- 6 UœÆâ#pDyäé÷ ß÷ :ÚvŒ{¬áÓvg/jBšòšF›Sšû[b[ºOÌ>ÑÖêÞzüGÛœ499â?rýéü§CÏdÏ&žþ¢þË®/~øÕë×Îјѡ—ò—“¿m|¥ýêÀë¯ÛÆÂƾÉx31^ôVûíÁwÜwï£ßOä| (ÿhù±õSЧû“““ÿ˜óüc3-Û cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFtIDATxÚìëqâJF{(ÀfÀf "0Ž`µ,ŽàÚ,ŽßŒ#G`ÈÀdÌýAëše%¡‘4 Ω¢\åG{Ôó©#d¬µpÊ„ @€0a„„ @€0a„„ @€0a´ kí§µvØ ½¡µöÏv[S{ iÐf¢6§x¸»ÂXÚ/^°÷rdo‰‡»)Š‘ý›i {Ó {#<Ý=a<Øl¢ ¶¢[xº{ÂHr&Ó©M‹Í[ ž¾à™Þ€¼3<åÝÁÖû[Q޹°z¶G5lÌíyæ—²sFÀ‰å)¼¥…‘2«hcgË1u,6³ØUãìØ3ï& çèa­myvY¶õLÞ9؉«D „QONÑãdí¢ £gŠÍ<–U¢¨·öP:zè¤VaYCX)C×(ÁšHyaLJNÂÌqí¢”Í¢3º®Qâ„ ¨/ŒÌèQâ¬ôIR!J´V]¾ì‰H’F ÅÑ5Ç“¦SråñÔâ&€@óÛZûCD¶-˼E'Ñ£ “âÏÖ¥’>Wæ#„0ú%ŒtM@ÛFúrÿ]\¤¾^6½HÖt±Ò<k!¶‘µˆ¼‰ÈÚ³g:k a("ù¡_G'¾o­0>N °‘ˆLõ#ÖÚµþÎʳaªËEõé­Š¡È÷­ŽE—¡'úùm­Ýëï§B!š|E…T±ˆ |߯Ã}V,¤6G­g©sü[cÌ÷¶w%뎯E\‹:Ç¿jz0>„ñFB¸8Mô‘J†"²c®.Ê·¦k´Æ#†pÍ\] /˾V>I'—˯} ƒˆqÁˆáèñ5Z½{zȼy¥ñ6ÕwÄðÒBÁå"³Oa|0oÝkS/‘Jh[;ئz:à sçÏëK7ŽQ Ê)(ó¾OñéaÎ6мrïrEÛˆ`*"/ø?hî1 çC0Áav4Ƙ»Jŧޞ—‚c/"cc̶Rñ©ø„ƒã©H¥ÛURJRˆ«0H)=I!¥R )¥)Ä)bRú“Bª ƒ”x qJ%¤”þ¤Jƒ”~ ©+ RJ )¤R*!¥„ŸBjE RJ¸)¤VÄPQDÒŽÇA6Û:ÝvmW‡rعþKú½°KlDäUD.7ö”]U 1~î4+y5Ƭ* CÃÐ/táu+ Éæ¬0´ Eäé÷ó°zU‹ˆÈ¿rxFÉöaèm|?H¤y3Æ,L@ÀQd "cá6ø³‹Œ1{cÌX‹è7 cÌØ³ÿËs/"÷Z±Bÿº”{Õ@v»ªmê’º£W]ÉÏÓ¶5sCW8—ÂuÐY«(þÊ™×J´î¸‘g|,ÏÆ˜»¼eò³KâºÆ1V?C«'VE¿TöZI$‡}¬~í|+z_fssé««Zw¼«£]e¥¢(Õu–¾C뎟Â[]äÉóÓå²ûŸA©„¶'©Ä¥ødÑ«ûl%c1«R*ÑvõQÁHDÞuN«G kí\Dðg<c„A=ÑÖ’³$ÎE4Ȭ;õD‚(¨;Ì‘(^Dßv½e‘Þ“a´žx®ƒÀˆÜq30dÖ}ߎð øZýž·áˆ½©ýJ¯’µá( ¶(Í^\¶(ˆ$"1>í|ª¨·©9G CùÚÛJªéNªH÷¦îËþQå'êh=2'Š´::Gn­M„µ_lôÁ½^0E1‘óç•o.we¹àó‰:1óæo>ö)Œ[æÍ;Þ|ì3•ìhu½³Õ c݈Ý 4˨Λ¯‘JhQ/ǤKÂøÁ|] /¾n¼Æ M £mõ1H#¤ жúH%UIJѯQO'·Îñ7Þ¶ÅÈA{9lÅ¿×9‘·Ÿõoêƒoê“…”?ÝH}ß7 \|æçk9\\UÙÕ´ˆ\¤'®SÄrþJu, ¾‘ªiaœæº­ŠáMDÖ¾.ø.”Mšf´ã›h79‰Î·mF,‡í÷iTØ2µG“•~Ò扊"nòÝ4« ëÌØfy˜ywa$.÷5Zkc‡ ÝeÙÖ3|ç`'v_fô`æÝ„1«h£ì¤N lLËŠ«âgÃ]I»Ÿ­µó:¿”2у™?﬇lDg&óÝÁÖû[QŽÊ;;)Sl–°STŒò\².Fž¦Îð‚Ä™Țȴ†½)káˆãxMã¥{/®kÐNaL›®Žj—)î¶8œŠÍ²Åhè~3´ÐÅ„ @€0a„„ @€0a„„ @€0a@×øoÌÇöúhWIEND®B`‚IconicTileSmall.png000066400000000000000000000072141434613136500337140ustar00rootroot00000000000000belle-sip-5.2.0+dfsg/build/wp8/belle-sip-tester-wp8/belle-sip-tester-wp8/Assets/Tiles‰PNG  IHDRGnuá pHYs  šœ OiCCPPhotoshop ICC profilexÚSgTSé=÷ÞôBKˆ€”KoR RB‹€‘&*! Jˆ!¡ÙQÁEEÈ ˆŽŽ€ŒQ, Š Øä!¢Žƒ£ˆŠÊûá{£kÖ¼÷æÍþµ×>ç¬ó³ÏÀ –H3Q5€ ©BàƒÇÄÆáä.@ $p³d!sý#ø~<<+"À¾xÓ ÀM›À0‡ÿêB™\€„Àt‘8K€@zŽB¦@F€˜&S `ËcbãP-`'æÓ€ø™{[”! ‘ eˆDh;¬ÏVŠEX0fKÄ9Ø-0IWfH°·ÀÎ ² 0Qˆ…){`È##x„™FòW<ñ+®ç*x™²<¹$9E[-qWW.(ÎI+6aaš@.Ây™24àóÌ ‘àƒóýxήÎÎ6޶_-ê¿ÿ"bbãþåÏ«p@át~Ñþ,/³€;€mþ¢%îh^  u÷‹f²@µ éÚWópø~<ß5°j>{‘-¨]cöK'XtÀâ÷ò»oÁÔ(€hƒáÏwÿï?ýG %€fI’q^D$.Tʳ?ÇD *°AôÁ,ÀÁÜÁ ü`6„B$ÄÂBB d€r`)¬‚B(†Í°*`/Ô@4ÀQh†“p.ÂU¸=púažÁ(¼ AÈa!ÚˆbŠX#Ž™…ø!ÁH‹$ ɈQ"K‘5H1RŠT UHò=r9‡\Fº‘;È2‚ü†¼G1”²Q=Ô µC¹¨7„F¢ Ðdt1š ›Ðr´=Œ6¡çЫhÚ>CÇ0Àè3Äl0.ÆÃB±8, “c˱"¬ «Æ°V¬»‰õcϱwEÀ 6wB aAHXLXNØH¨ $4Ú 7 „QÂ'"“¨K´&ºùÄb21‡XH,#Ö/{ˆCÄ7$‰C2'¹I±¤TÒÒFÒnR#é,©›4H#“ÉÚdk²9”, +È…ääÃä3ää!ò[ b@q¤øSâ(RÊjJåå4åe˜2AU£šRݨ¡T5ZB­¡¶R¯Q‡¨4uš9̓IK¥­¢•Óhh÷i¯ètºÝ•N—ÐWÒËéGè—èôw †ƒÇˆg(›gw¯˜L¦Ó‹ÇT071ë˜ç™™oUX*¶*|‘Ê •J•&•*/T©ª¦ªÞª UóUËT©^S}®FU3Sã© Ô–«UªPëSSg©;¨‡ªg¨oT?¤~Yý‰YÃLÃOC¤Q ±_ã¼Æ c³x,!k «†u5Ä&±ÍÙ|v*»˜ý»‹=ª©¡9C3J3W³Ró”f?ã˜qøœtN ç(§—ó~ŠÞï)â)¦4L¹1e\kª–—–X«H«Q«Gë½6®í§¦½E»YûAÇJ'\'GgÎçSÙSݧ §M=:õ®.ªk¥¡»Dw¿n§î˜ž¾^€žLo§Þy½çú}/ýTýmú§õG X³ $Û Î<Å5qo</ÇÛñQC]Ã@C¥a•a—á„‘¹Ñ<£ÕFFŒiÆ\ã$ãmÆmÆ£&&!&KMêMîšRM¹¦)¦;L;LÇÍÌÍ¢ÍÖ™5›=1×2ç›ç›×›ß·`ZxZ,¶¨¶¸eI²äZ¦Yî¶¼n…Z9Y¥XUZ]³F­­%Ö»­»§§¹N“N«žÖgðñ¶É¶©·°åØÛ®¶m¶}agbg·Å®Ã“}º}ý= ‡Ù«Z~s´r:V:ޚΜî?}Åô–é/gXÏÏØ3ã¶Ë)ÄiS›ÓGgg¹sƒóˆ‹‰K‚Ë.—>.›ÆÝȽäJtõq]ázÒõ›³›Âí¨Û¯î6îiî‡ÜŸÌ4Ÿ)žY3sÐÃÈCàQåÑ? Ÿ•0k߬~OCOgµç#/c/‘W­×°·¥wª÷aï>ö>rŸã>ã<7Þ2ÞY_Ì7À·È·ËOÃož_…ßC#ÿdÿzÿѧ€%g‰A[ûøz|!¿Ž?:Ûeö²ÙíAŒ ¹AA‚­‚åÁ­!hÈì­!÷ç˜Î‘Îi…P~èÖÐaæa‹Ã~ '…‡…W†?ŽpˆXÑ1—5wÑÜCsßDúD–DÞ›g1O9¯-J5*>ª.j<Ú7º4º?Æ.fYÌÕXXIlK9.*®6nl¾ßüíó‡ââ ã{˜/È]py¡ÎÂô…§©.,:–@LˆN8”ðA*¨Œ%òw%Ž yÂÂg"/Ñ6шØC\*NòH*Mz’쑼5y$Å3¥,幄'©¼L LÝ›:žšv m2=:½1ƒ’‘qBª!M“¶gêgæfvˬe…²þÅn‹·/•Ék³¬Y- ¶B¦èTZ(×*²geWf¿Í‰Ê9–«ž+Íí̳ÊÛ7œïŸÿíÂá’¶¥†KW-X潬j9²‰Š®Û—Ø(Üxå‡oÊ¿™Ü”´©«Ä¹dÏfÒféæÞ-ž[–ª—æ—n ÙÚ´ ßV´íõöEÛ/—Í(Û»ƒ¶C¹£¿<¸¼e§ÉÎÍ;?T¤TôTúT6îÒݵa×ønÑî{¼ö4ìÕÛ[¼÷ý>ɾÛUUMÕfÕeûIû³÷?®‰ªéø–ûm]­NmqíÇÒý#¶×¹ÔÕÒ=TRÖ+ëGǾþïw- 6 UœÆâ#pDyäé÷ ß÷ :ÚvŒ{¬áÓvg/jBšòšF›Sšû[b[ºOÌ>ÑÖêÞzüGÛœ499â?rýéü§CÏdÏ&žþ¢þË®/~øÕë×Îјѡ—ò—“¿m|¥ýêÀë¯ÛÆÂƾÉx31^ôVûíÁwÜwï£ßOä| (ÿhù±õSЧû“““ÿ˜óüc3-Û cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF·IDATxÚìÝuâ0…ïøP€K ˜ „t*XSAB¦Ø’ pq¸ƒÙkŒ­Ÿ]C,4÷œ<tléËŒf4²bfˆš #pŽÀ8Gà#8Gà#pŽÀÝF̼`æÔ²mÊÌ‹à|óQSC»©j÷ ˜„ÿêÀ̉¦Ý¡Ò6ñ}à©E›Œ/µgæ¸Ö&VŸW•uqÿŸ„sl¢isàke€Ì̃5î¹ÏûLµÁ¤ ßϸ]‹ÊdݦYË„}–/p®¬ˆ™·¬Wjø~Ûd-½‡£æ Ý ‡Ü†ˆqáL ƒ:tÇt‰rܳëtG%n[5©=K1†ªß[—„ràpÀTý€™ ;_D´ë!)€±êoõ¹»ÅÍf_ßs?dêÇÌvÌäbšaóDDE§sŽº`î9˜ÜÌ¿D«OÏá8õßΗçpœúO®Wg"$"§ñLKICH÷±¶’7dÏ9•Öõ[©Ö­˜yï©etÉF¦ yŽ057F+"ʬ³Rã¶‹V¹×•;Ùä9óPÝÉ'÷jt'«$P-6÷÷,0ÝQ%€‘n­iÊ[µ ÔjbçžÖrÔ.Á›*ÅO%Ž…°õÉÕHí½á²Zº ëHY‰€¹Ô@LÊ¥¦²@ݩɽæD´£ZdÚº®ªV^O,ªä5€g›@Ál /// Provides access to string resources. /// public class LocalizedStrings { private static AppResources _localizedResources = new AppResources(); public AppResources LocalizedResources { get { return _localizedResources; } } } }belle-sip-5.2.0+dfsg/build/wp8/belle-sip-tester-wp8/belle-sip-tester-wp8/MainPage.xaml000066400000000000000000000074611434613136500303000ustar00rootroot00000000000000 belle-sip-5.2.0+dfsg/build/wp8/belle-sip-tester-wp8/belle-sip-tester-wp8/MainPage.xaml.cs000066400000000000000000000054061434613136500307010ustar00rootroot00000000000000using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Navigation; using Microsoft.Phone.Controls; using Microsoft.Phone.Shell; using belle_sip_tester_wp8.Resources; namespace belle_sip_tester_wp8 { public partial class MainPage : PhoneApplicationPage { // Constructor public MainPage() { InitializeComponent(); var tester = (Application.Current as App).tester; List source = new List(); source.Add(new UnitTestSuiteName("ALL")); for (int i = 0; i < tester.nbTestSuites(); i++) { source.Add(new UnitTestSuiteName(tester.testSuiteName(i))); } Tests.ItemsSource = source; // Sample code to localize the ApplicationBar //BuildLocalizedApplicationBar(); } private void Tests_Tap(object sender, System.Windows.Input.GestureEventArgs e) { UnitTestSuiteName test = (sender as LongListSelector).SelectedItem as UnitTestSuiteName; if (test == null) return; if (test.Name == "ALL") { NavigationService.Navigate(new Uri("/TestResultPage.xaml?SuiteName=" + test.Name + "&Verbose=" + Verbose.IsChecked.GetValueOrDefault(), UriKind.Relative)); } else { NavigationService.Navigate(new Uri("/TestCasePage.xaml?SuiteName=" + test.Name + "&Verbose=" + Verbose.IsChecked.GetValueOrDefault(), UriKind.Relative)); } } // Sample code for building a localized ApplicationBar //private void BuildLocalizedApplicationBar() //{ // // Set the page's ApplicationBar to a new instance of ApplicationBar. // ApplicationBar = new ApplicationBar(); // // Create a new button and set the text value to the localized string from AppResources. // ApplicationBarIconButton appBarButton = new ApplicationBarIconButton(new Uri("/Assets/AppBar/appbar.add.rest.png", UriKind.Relative)); // appBarButton.Text = AppResources.AppBarButtonText; // ApplicationBar.Buttons.Add(appBarButton); // // Create a new menu item with the localized string from AppResources. // ApplicationBarMenuItem appBarMenuItem = new ApplicationBarMenuItem(AppResources.AppBarMenuItemText); // ApplicationBar.MenuItems.Add(appBarMenuItem); //} } public class UnitTestSuiteName { public string Name { get; set; } public UnitTestSuiteName(string name) { this.Name = name; } } }belle-sip-5.2.0+dfsg/build/wp8/belle-sip-tester-wp8/belle-sip-tester-wp8/Properties/000077500000000000000000000000001434613136500300605ustar00rootroot00000000000000belle-sip-5.2.0+dfsg/build/wp8/belle-sip-tester-wp8/belle-sip-tester-wp8/Properties/AppManifest.xml000066400000000000000000000003111434613136500330040ustar00rootroot00000000000000 belle-sip-5.2.0+dfsg/build/wp8/belle-sip-tester-wp8/belle-sip-tester-wp8/Properties/AssemblyInfo.cs000066400000000000000000000027721434613136500330120ustar00rootroot00000000000000using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Resources; // General Information about an assembly is controlled through the following // set of attributes. Change these attribute values to modify the information // associated with an assembly. [assembly: AssemblyTitle("BelleSip Tester")] [assembly: AssemblyDescription("BelleSip tester for Windows Phone 8")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("Belledonne Communications")] [assembly: AssemblyProduct("BelleSip Tester")] [assembly: AssemblyCopyright("Copyright © Belledonne Communications 2013")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] // Setting ComVisible to false makes the types in this assembly not visible // to COM components. If you need to access a type in this assembly from // COM, set the ComVisible attribute to true on that type. [assembly: ComVisible(false)] // The following GUID is for the ID of the typelib if this project is exposed to COM [assembly: Guid("9455c69c-2077-4be0-b75c-13dc43bafef6")] // Version information for an assembly consists of the following four values: // // Major Version // Minor Version // Build Number // Revision // // You can specify all the values or you can default the Revision and Build Numbers // by using the '*' as shown below: [assembly: AssemblyVersion("1.0.0.0")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: NeutralResourcesLanguageAttribute("en-US")] WMAppManifest.xml000066400000000000000000000036611434613136500332040ustar00rootroot00000000000000belle-sip-5.2.0+dfsg/build/wp8/belle-sip-tester-wp8/belle-sip-tester-wp8/Properties Assets\ApplicationIcon.png Assets\Tiles\FlipCycleTileSmall.png 0 Assets\Tiles\FlipCycleTileMedium.png belle_sip_tester_wp8 belle-sip-5.2.0+dfsg/build/wp8/belle-sip-tester-wp8/belle-sip-tester-wp8/Resources/000077500000000000000000000000001434613136500276765ustar00rootroot00000000000000AppResources.Designer.cs000066400000000000000000000104461434613136500343250ustar00rootroot00000000000000belle-sip-5.2.0+dfsg/build/wp8/belle-sip-tester-wp8/belle-sip-tester-wp8/Resources//------------------------------------------------------------------------------ // // This code was generated by a tool. // Runtime Version:4.0.30319.17626 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. // //------------------------------------------------------------------------------ namespace belle_sip_tester_wp8.Resources { using System; /// /// A strongly-typed resource class, for looking up localized strings, etc. /// // This class was auto-generated by the StronglyTypedResourceBuilder // class via a tool like ResGen or Visual Studio. // To add or remove a member, edit your .ResX file then rerun ResGen // with the /str option, or rebuild your VS project. [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] public class AppResources { private static global::System.Resources.ResourceManager resourceMan; private static global::System.Globalization.CultureInfo resourceCulture; [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] internal AppResources() { } /// /// Returns the cached ResourceManager instance used by this class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] public static global::System.Resources.ResourceManager ResourceManager { get { if (object.ReferenceEquals(resourceMan, null)) { global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("belle_sip_tester_wp8.Resources.AppResources", typeof(AppResources).Assembly); resourceMan = temp; } return resourceMan; } } /// /// Overrides the current thread's CurrentUICulture property for all /// resource lookups using this strongly typed resource class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] public static global::System.Globalization.CultureInfo Culture { get { return resourceCulture; } set { resourceCulture = value; } } /// /// Looks up a localized string similar to LeftToRight. /// public static string ResourceFlowDirection { get { return ResourceManager.GetString("ResourceFlowDirection", resourceCulture); } } /// /// Looks up a localized string similar to us-EN. /// public static string ResourceLanguage { get { return ResourceManager.GetString("ResourceLanguage", resourceCulture); } } /// /// Looks up a localized string similar to MY APPLICATION. /// public static string ApplicationTitle { get { return ResourceManager.GetString("ApplicationTitle", resourceCulture); } } /// /// Looks up a localized string similar to button. /// public static string AppBarButtonText { get { return ResourceManager.GetString("AppBarButtonText", resourceCulture); } } /// /// Looks up a localized string similar to menu item. /// public static string AppBarMenuItemText { get { return ResourceManager.GetString("AppBarMenuItemText", resourceCulture); } } } } belle-sip-5.2.0+dfsg/build/wp8/belle-sip-tester-wp8/belle-sip-tester-wp8/Resources/AppResources.resx000066400000000000000000000144551434613136500332250ustar00rootroot00000000000000 text/microsoft-resx 2.0 System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 LeftToRight Controls the FlowDirection for all elements in the RootFrame. Set to the traditional direction of this resource file's language en-US Controls the Language and ensures that the font for all elements in the RootFrame aligns with the app's language. Set to the language code of this resource file's language. MY APPLICATION add Menu Item belle-sip-5.2.0+dfsg/build/wp8/belle-sip-tester-wp8/belle-sip-tester-wp8/TestCasePage.xaml000066400000000000000000000040661434613136500311250ustar00rootroot00000000000000 belle-sip-5.2.0+dfsg/build/wp8/belle-sip-tester-wp8/belle-sip-tester-wp8/TestCasePage.xaml.cs000066400000000000000000000036671434613136500315370ustar00rootroot00000000000000using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Navigation; using Microsoft.Phone.Controls; using Microsoft.Phone.Shell; namespace belle_sip_tester_wp8 { public partial class TestCasePage : PhoneApplicationPage { public TestCasePage() { InitializeComponent(); } protected override void OnNavigatedTo(NavigationEventArgs e) { base.OnNavigatedTo(e); suiteName = NavigationContext.QueryString["SuiteName"]; verbose = Convert.ToBoolean(NavigationContext.QueryString["Verbose"]); var tester = (Application.Current as App).tester; List source = new List(); source.Add(new UnitTestCaseName("ALL")); for (int i = 0; i < tester.nbTests(suiteName); i++) { source.Add(new UnitTestCaseName(tester.testName(suiteName, i))); } Tests.ItemsSource = source; } private void Tests_Tap(object sender, System.Windows.Input.GestureEventArgs e) { UnitTestCaseName test = (sender as LongListSelector).SelectedItem as UnitTestCaseName; if (test == null) return; test.Name = test.Name.Replace("+", "%2B").Replace(" ", "%20"); if (!(Application.Current as App).suiteRunning()) { NavigationService.Navigate(new Uri("/TestResultPage.xaml?SuiteName=" + suiteName + "&CaseName=" + test.Name + "&Verbose=" + verbose, UriKind.Relative)); } } private string suiteName; private bool verbose; } public class UnitTestCaseName { public string Name { get; set; } public UnitTestCaseName(string name) { this.Name = name; } } }belle-sip-5.2.0+dfsg/build/wp8/belle-sip-tester-wp8/belle-sip-tester-wp8/TestResultPage.xaml000066400000000000000000000036661434613136500315350ustar00rootroot00000000000000 belle-sip-5.2.0+dfsg/build/wp8/belle-sip-tester-wp8/belle-sip-tester-wp8/TestResultPage.xaml.cs000066400000000000000000000057231434613136500321350ustar00rootroot00000000000000using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Navigation; using Microsoft.Phone.Controls; using Microsoft.Phone.Shell; using belle_sip_tester_native; using belle_sip_tester_wp8; namespace belle_sip_tester_wp8 { public delegate void OutputDisplayDelegate(String msg); public partial class TestResultPage : PhoneApplicationPage { public TestResultPage() { InitializeComponent(); } protected override void OnNavigatedTo(NavigationEventArgs e) { base.OnNavigatedTo(e); string suiteName = NavigationContext.QueryString["SuiteName"]; string caseName; if (NavigationContext.QueryString.ContainsKey("CaseName")) { caseName = NavigationContext.QueryString["CaseName"]; } else { caseName = "ALL"; } bool verbose = Convert.ToBoolean(NavigationContext.QueryString["Verbose"]); var app = (Application.Current as App); app.suite = new UnitTestSuite(suiteName, caseName, verbose, new OutputDisplayDelegate(OutputDisplay)); app.suite.run(); } public void OutputDisplay(String msg) { this.Dispatcher.BeginInvoke(() => { TestResults.Text += msg; }); } } public class UnitTestSuite : OutputTraceListener { public UnitTestSuite(string SuiteName, string CaseName, bool Verbose, OutputDisplayDelegate OutputDisplay) { this.SuiteName = SuiteName; this.CaseName = CaseName; this.Verbose = Verbose; this.Running = false; this.OutputDisplay = OutputDisplay; } async public void run() { Running = true; var tup = new Tuple(SuiteName, CaseName, Verbose); var t = Task.Factory.StartNew((object parameters) => { var tester = (Application.Current as App).tester; tester.setOutputTraceListener(this); var p = parameters as Tuple; tester.run(p.Item1, p.Item2, p.Item3); }, tup); await t; Running = false; } public void outputTrace(String msg) { if (OutputDisplay != null) { OutputDisplay(msg); } System.Diagnostics.Debug.WriteLine(msg); } public bool running { get { return Running; } protected set { Running = value; } } private string SuiteName; private string CaseName; private bool Verbose; private bool Running; private OutputDisplayDelegate OutputDisplay; } }belle-sip-5.2.0+dfsg/build/wp8/belle-sip-tester-wp8/belle-sip-tester-wp8/belle-sip-tester-wp8.csproj000066400000000000000000000175241434613136500330530ustar00rootroot00000000000000 Debug AnyCPU 10.0.20506 2.0 {2CEBCF29-6B23-46C2-B579-588321228F3E} {C089C8C0-30E0-4E22-80C0-CE093F111A43};{fae04ec0-301f-11d3-bf4b-00c04f79efbc} Library Properties belle_sip_tester_wp8 belle_sip_tester_wp8 WindowsPhone v8.0 $(TargetFrameworkVersion) true true true belle_sip_tester_wp8_$(Configuration)_$(Platform).xap Properties\AppManifest.xml belle_sip_tester_wp8.App true 11.0 true true full false Bin\Debug\ DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE true true prompt 4 pdbonly true Bin\Release\ TRACE;SILVERLIGHT;WINDOWS_PHONE true true prompt 4 true full false Bin\x86\Debug\ DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE true true prompt 4 pdbonly true Bin\x86\Release\ TRACE;SILVERLIGHT;WINDOWS_PHONE true true prompt 4 true full false Bin\ARM\Debug\ DEBUG;TRACE;SILVERLIGHT;WINDOWS_PHONE true true prompt 4 pdbonly true Bin\ARM\Release\ TRACE;SILVERLIGHT;WINDOWS_PHONE true true prompt 4 App.xaml MainPage.xaml True True AppResources.resx TestCasePage.xaml TestResultPage.xaml Designer MSBuild:Compile Designer MSBuild:Compile Designer MSBuild:Compile Designer MSBuild:Compile PreserveNewest Designer PreserveNewest PreserveNewest PreserveNewest PreserveNewest PreserveNewest PreserveNewest PublicResXFileCodeGenerator AppResources.Designer.cs {3B4E9C2C-D5DC-4CF9-A7F4-5CB4AB55AF79} belle-sip-tester-native belle-sip-5.2.0+dfsg/build/wp8/belle-sip/000077500000000000000000000000001434613136500200105ustar00rootroot00000000000000belle-sip-5.2.0+dfsg/build/wp8/belle-sip/belle-sip.props000066400000000000000000000007761434613136500227630ustar00rootroot00000000000000 "1.3.2" $(BELLESIP_PACKAGE_VERSION) belle-sip-5.2.0+dfsg/build/wp8/belle-sip/belle-sip.sln000066400000000000000000000071041434613136500224040ustar00rootroot00000000000000 Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Express 2012 for Windows Phone Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "belle-sip", "belle-sip.vcxproj", "{4C225A82-800B-427B-BA7B-61686A9B347F}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libantlr3c", "..\..\..\..\antlr3\runtime\C\build\wp8\libantlr3c\libantlr3c.vcxproj", "{8FA74260-151B-429B-83EF-3CF3EAC8CFD9}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tunnel", "..\..\..\..\tunnel\build\wp8\tunnel\tunnel.vcxproj", "{59500DD1-B192-4DDF-A402-8A8E3739E032}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "polarssl", "..\..\..\..\polarssl\build\wp8\polarssl\polarssl.vcxproj", "{E9F8C5D1-13A2-46B6-A9BC-878030D4BE09}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|ARM = Debug|ARM Debug|Win32 = Debug|Win32 Release|ARM = Release|ARM Release|Win32 = Release|Win32 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {4C225A82-800B-427B-BA7B-61686A9B347F}.Debug|ARM.ActiveCfg = Debug|ARM {4C225A82-800B-427B-BA7B-61686A9B347F}.Debug|ARM.Build.0 = Debug|ARM {4C225A82-800B-427B-BA7B-61686A9B347F}.Debug|Win32.ActiveCfg = Debug|Win32 {4C225A82-800B-427B-BA7B-61686A9B347F}.Debug|Win32.Build.0 = Debug|Win32 {4C225A82-800B-427B-BA7B-61686A9B347F}.Release|ARM.ActiveCfg = Release|ARM {4C225A82-800B-427B-BA7B-61686A9B347F}.Release|ARM.Build.0 = Release|ARM {4C225A82-800B-427B-BA7B-61686A9B347F}.Release|Win32.ActiveCfg = Release|Win32 {4C225A82-800B-427B-BA7B-61686A9B347F}.Release|Win32.Build.0 = Release|Win32 {8FA74260-151B-429B-83EF-3CF3EAC8CFD9}.Debug|ARM.ActiveCfg = Debug|ARM {8FA74260-151B-429B-83EF-3CF3EAC8CFD9}.Debug|ARM.Build.0 = Debug|ARM {8FA74260-151B-429B-83EF-3CF3EAC8CFD9}.Debug|Win32.ActiveCfg = Debug|Win32 {8FA74260-151B-429B-83EF-3CF3EAC8CFD9}.Debug|Win32.Build.0 = Debug|Win32 {8FA74260-151B-429B-83EF-3CF3EAC8CFD9}.Release|ARM.ActiveCfg = Release|ARM {8FA74260-151B-429B-83EF-3CF3EAC8CFD9}.Release|ARM.Build.0 = Release|ARM {8FA74260-151B-429B-83EF-3CF3EAC8CFD9}.Release|Win32.ActiveCfg = Release|Win32 {8FA74260-151B-429B-83EF-3CF3EAC8CFD9}.Release|Win32.Build.0 = Release|Win32 {59500DD1-B192-4DDF-A402-8A8E3739E032}.Debug|ARM.ActiveCfg = Debug|ARM {59500DD1-B192-4DDF-A402-8A8E3739E032}.Debug|ARM.Build.0 = Debug|ARM {59500DD1-B192-4DDF-A402-8A8E3739E032}.Debug|Win32.ActiveCfg = Debug|Win32 {59500DD1-B192-4DDF-A402-8A8E3739E032}.Debug|Win32.Build.0 = Debug|Win32 {59500DD1-B192-4DDF-A402-8A8E3739E032}.Release|ARM.ActiveCfg = Release|ARM {59500DD1-B192-4DDF-A402-8A8E3739E032}.Release|ARM.Build.0 = Release|ARM {59500DD1-B192-4DDF-A402-8A8E3739E032}.Release|Win32.ActiveCfg = Release|Win32 {59500DD1-B192-4DDF-A402-8A8E3739E032}.Release|Win32.Build.0 = Release|Win32 {E9F8C5D1-13A2-46B6-A9BC-878030D4BE09}.Debug|ARM.ActiveCfg = Debug|ARM {E9F8C5D1-13A2-46B6-A9BC-878030D4BE09}.Debug|ARM.Build.0 = Debug|ARM {E9F8C5D1-13A2-46B6-A9BC-878030D4BE09}.Debug|Win32.ActiveCfg = Debug|Win32 {E9F8C5D1-13A2-46B6-A9BC-878030D4BE09}.Debug|Win32.Build.0 = Debug|Win32 {E9F8C5D1-13A2-46B6-A9BC-878030D4BE09}.Release|ARM.ActiveCfg = Release|ARM {E9F8C5D1-13A2-46B6-A9BC-878030D4BE09}.Release|ARM.Build.0 = Release|ARM {E9F8C5D1-13A2-46B6-A9BC-878030D4BE09}.Release|Win32.ActiveCfg = Release|Win32 {E9F8C5D1-13A2-46B6-A9BC-878030D4BE09}.Release|Win32.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection EndGlobal belle-sip-5.2.0+dfsg/build/wp8/belle-sip/belle-sip.vcxproj000066400000000000000000000304751434613136500233120ustar00rootroot00000000000000 Debug Win32 Debug ARM Release Win32 Release ARM {4C225A82-800B-427B-BA7B-61686A9B347F} belle_sip en-US 11.0 DynamicLibrary true v110_wp80 false DynamicLibrary false true v110_wp80 false $(SolutionDir)$(Platform)\$(Configuration)\ $(SolutionDir)$(Platform)\$(Configuration)\$(TargetName)\ false Level4 WIN32;_WINDOWS;_USRDLL;BELLESIP_EXPORTS;BELLESIP_INTERNAL_EXPORTS;HAVE_POLARSSL;HAVE_TUNNEL;HAVE_ANTLR_STRING_STREAM_NEW;HAVE_COMPILER_TLS;_CRT_SECURE_NO_WARNINGS;_UNICODE;UNICODE;USE_FIXED_NAMESERVERS;USE_GETADDRINFO_FALLBACK;ENABLE_SERVER_SOCKETS;HAVE_CONFIG_H;%(PreprocessorDefinitions) $(ProjectDir)..\..\..\include;$(ProjectDir)..\..\..\..\antlr3\runtime\C\include;$(ProjectDir)..\..\..\src;$(ProjectDir)..\..\..\..\polarssl\include;$(ProjectDir)..\..\..\..\tunnel\include;$(ProjectDir);%(AdditionalIncludeDirectories) Default NotUsing false $(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories) Console false false ws2_32.lib;libantlr3c.lib;polarssl.lib;tunnel.lib;%(AdditionalDependencies) $(SolutionDir)$(Platform)\$(Configuration);%(AdditionalLibraryDirectories) $(TargetDir)$(TargetName).lib java -jar $(ProjectDir)..\..\..\..\antlr3\antlr-3.4-complete.jar -make -fo $(ProjectDir)..\..\..\src\grammars\ %(FullPath) version.bat Sets the package version _DEBUG;%(PreprocessorDefinitions) true NDEBUG;%(PreprocessorDefinitions) MaxSpeed true true true false Document $(ProjectDir)..\..\..\src\grammars\belle_sdpLexer.c;$(ProjectDir)..\..\..\src\grammars\belle_sdpLexer.h;$(ProjectDir)..\..\..\src\grammars\belle_sdpParser.c;$(ProjectDir)..\..\..\src\grammars\belle_sdpParser.h Document $(ProjectDir)..\..\..\src\grammars\belle_sip_messageLexer.c;$(ProjectDir)..\..\..\src\grammars\belle_sip_messageLexer.h;$(ProjectDir)..\..\..\src\grammars\belle_sip_messageParser.c;$(ProjectDir)..\..\..\src\grammars\belle_sip_messageParser.h true true false {8fa74260-151b-429b-83ef-3cf3eac8cfd9} {e9f8c5d1-13a2-46b6-a9bc-878030d4be09} {59500dd1-b192-4ddf-a402-8a8e3739e032} belle-sip-5.2.0+dfsg/build/wp8/belle-sip/belle-sip_no_tunnel.vcxproj000066400000000000000000000275311434613136500253720ustar00rootroot00000000000000 Debug Win32 Debug ARM Release Win32 Release ARM {4C225A82-800B-427B-BA7B-61686A9B347F} belle_sip en-US 11.0 DynamicLibrary true v110_wp80 false DynamicLibrary false true v110_wp80 false $(SolutionDir)$(Platform)\$(Configuration)\ $(SolutionDir)$(Platform)\$(Configuration)\$(TargetName)\ false Level4 WIN32;_WINDOWS;_USRDLL;BELLESIP_EXPORTS;BELLESIP_INTERNAL_EXPORTS;HAVE_POLARSSL;HAVE_ANTLR_STRING_STREAM_NEW;HAVE_COMPILER_TLS;_CRT_SECURE_NO_WARNINGS;_UNICODE;UNICODE;USE_FIXED_NAMESERVERS;USE_GETADDRINFO_FALLBACK;ENABLE_SERVER_SOCKETS;HAVE_CONFIG_H;%(PreprocessorDefinitions) $(ProjectDir)..\..\..\include;$(ProjectDir)..\..\..\..\antlr3\runtime\C\include;$(ProjectDir)..\..\..\src;$(ProjectDir)..\..\..\..\polarssl\include;$(ProjectDir)..\..\..\..\tunnel\include;$(ProjectDir);%(AdditionalIncludeDirectories) Default NotUsing false $(WindowsSDK_MetadataPath);$(AdditionalUsingDirectories) Console false false ws2_32.lib;libantlr3c.lib;polarssl.lib;%(AdditionalDependencies) $(SolutionDir)$(Platform)\$(Configuration);%(AdditionalLibraryDirectories) $(TargetDir)$(TargetName).lib java -jar $(ProjectDir)..\..\..\..\antlr3\antlr-3.4-complete.jar -make -fo $(ProjectDir)..\..\..\src\grammars\ %(FullPath) version.bat Sets the package version _DEBUG;%(PreprocessorDefinitions) true NDEBUG;%(PreprocessorDefinitions) MaxSpeed true true true false Document $(ProjectDir)..\..\..\src\grammars\belle_sdpLexer.c;$(ProjectDir)..\..\..\src\grammars\belle_sdpLexer.h;$(ProjectDir)..\..\..\src\grammars\belle_sdpParser.c;$(ProjectDir)..\..\..\src\grammars\belle_sdpParser.h Document $(ProjectDir)..\..\..\src\grammars\belle_sip_messageLexer.c;$(ProjectDir)..\..\..\src\grammars\belle_sip_messageLexer.h;$(ProjectDir)..\..\..\src\grammars\belle_sip_messageParser.c;$(ProjectDir)..\..\..\src\grammars\belle_sip_messageParser.h true true false {8fa74260-151b-429b-83ef-3cf3eac8cfd9} {e9f8c5d1-13a2-46b6-a9bc-878030d4be09} belle-sip-5.2.0+dfsg/build/wp8/belle-sip/version.bat000066400000000000000000000003071434613136500221650ustar00rootroot00000000000000@ECHO off FOR /F "delims=" %%a IN ('findstr /B AC_INIT ..\..\..\configure.ac') DO ( FOR /F "tokens=1,2,3 delims=[,]" %%1 IN ("%%a") DO ( ECHO #define PACKAGE_VERSION "%%3" > config.h ) ) belle-sip-5.2.0+dfsg/cmake/000077500000000000000000000000001434613136500153775ustar00rootroot00000000000000belle-sip-5.2.0+dfsg/cmake/BelleSIPConfig.cmake.in000066400000000000000000000044741434613136500215440ustar00rootroot00000000000000############################################################################ # BelleSIPConfig.cmake # Copyright (C) 2015 Belledonne Communications, Grenoble France # ############################################################################ # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # ############################################################################ # # Config file for the belle-sip package. # It defines the following variables: # # BELLESIP_FOUND - system has belle-sip # BELLESIP_INCLUDE_DIRS - the belle-sip include directory # BELLESIP_LIBRARIES - The libraries needed to use belle-sip # BELLESIP_CPPFLAGS - The compilation flags needed to use belle-sip # BELLESIP_LDFLAGS - The linking flags needed to use belle-sip @PACKAGE_INIT@ if(NOT LINPHONE_BUILDER_GROUP_EXTERNAL_SOURCE_PATH_BUILDERS) include("${CMAKE_CURRENT_LIST_DIR}/BelleSIPTargets.cmake") endif() if(@ENABLE_SHARED@) set(BELLESIP_TARGETNAME bellesip) set(BELLESIP_LIBRARIES ${BELLESIP_TARGETNAME}) else() set(BELLESIP_TARGETNAME bellesip-static) if(TARGET ${BELLESIP_TARGETNAME}) if(LINPHONE_BUILDER_GROUP_EXTERNAL_SOURCE_PATH_BUILDERS) set(BELLESIP_LIBRARIES ${BELLESIP_TARGETNAME}) else() get_target_property(BELLESIP_LIBRARIES ${BELLESIP_TARGETNAME} LOCATION) endif() get_target_property(BELLESIP_LINK_LIBRARIES ${BELLESIP_TARGETNAME} INTERFACE_LINK_LIBRARIES) if(BELLESIP_LINK_LIBRARIES) list(APPEND BELLESIP_LIBRARIES ${BELLESIP_LINK_LIBRARIES}) endif() endif() endif() get_target_property(BELLESIP_INCLUDE_DIRS ${BELLESIP_TARGETNAME} INTERFACE_INCLUDE_DIRECTORIES) set(BELLESIP_CPPFLAGS @BELLESIP_CPPFLAGS@) set(BELLESIP_LDFLAGS "@LINK_FLAGS_STR@") set(BELLESIP_FOUND 1) belle-sip-5.2.0+dfsg/cmake/FindDNSSD.cmake000066400000000000000000000110761434613136500200620ustar00rootroot00000000000000# # Copyright 2011 Stefan Eilemann # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # # - Redistributions of source code must retain the above copyright notice, this # list of conditions and the following disclaimer. # - Redistributions in binary form must reproduce the above copyright notice, # this list of conditions and the following disclaimer in the documentation # and/or other materials provided with the distribution. # - Neither the name of Eyescale Software GmbH nor the names of its # contributors may be used to endorse or promote products derived from this # software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. # #================================== # # - Find ZeroConf headers # #================================== # # The following environment variables are respected for finding Dnssd. # CMAKE_PREFIX_PATH can also be used for this (see find_library() CMake # documentation). # # DNSSD_ROOT # # This module defines the following output variables: # # DNSSD_FOUND - Was Dnssd and all of the specified components found? # # DNSSD_INCLUDE_DIRS - Where to find the headers # # DNSSD_LIBRARIES - The Dnssd libraries # #================================== # Example Usage: # # find_package(DNSSD REQUIRED) # include_directories(${DNSSD_INCLUDE_DIRS}) # # add_executable(foo foo.cc) # target_link_libraries(foo ${DNSSD_LIBRARIES}) # #================================== # Naming convention: # Local variables of the form _dnssd_foo # Output variables of the form DNSSD_FOO # if(WIN32) if("$ENV{ProgramW6432}" STREQUAL "") set(_dnssd_lib_paths "$ENV{ProgramFiles}/Bonjour SDK") else() set(_dnssd_lib_paths "$ENV{ProgramW6432}/Bonjour SDK") endif() else() list(APPEND _dnssd_lib_paths /usr /usr/local /opt/local /opt) endif() find_path(_dnssd_INCLUDE_DIR dns_sd.h HINTS $ENV{DNSSD_ROOT} ${DNSSD_ROOT} PATH_SUFFIXES include PATHS ${_dnssd_lib_paths} ) if(DNSSD_FIND_REQUIRED) set(_dnssd_output_type FATAL_ERROR) set(_dnssd_output 1) else() set(_dnssd_output_type STATUS) if(NOT DNSSD_FIND_QUIETLY) set(_dnssd_output 1) endif() endif() if(NOT _dnssd_INCLUDE_DIR) set(_dnssd_EPIC_FAIL TRUE) if(_dnssd_output) message(${_dnssd_output_type} "Can't find dns_sd.h header file.") endif() endif() if(APPLE) find_library(_dnssd_LIBRARY System HINTS $ENV{DNSSD_ROOT} ${DNSSD_ROOT} PATH_SUFFIXES lib PATHS ${_dnssd_lib_paths} ) elseif(WIN32) if("${CMAKE_SHARED_LINKER_FLAGS}" MATCHES "x64") set(_dnssd_lib_postfix "x64") else() set(_dnssd_lib_postfix "Win32") endif() find_library(_dnssd_LIBRARY dnssd.lib HINTS $ENV{DNSSD_ROOT} ${DNSSD_ROOT} PATH_SUFFIXES lib PATHS ${_dnssd_lib_paths}/Lib/${_dnssd_lib_postfix}) else() find_library(_dnssd_LIBRARY dns_sd HINTS $ENV{DNSSD_ROOT} ${DNSSD_ROOT} PATH_SUFFIXES lib PATHS ${_dnssd_lib_paths} ) endif() if(DNSSD_FIND_REQUIRED) if(_dnssd_LIBRARY MATCHES "_dnssd_LIBRARY-NOTFOUND") set(_dnssd_EPIC_FAIL TRUE) message(FATAL_ERROR "Missing the ZeroConf library.\n" "Consider using CMAKE_PREFIX_PATH or the DNSSD_ROOT environment variable. " "See the ${CMAKE_CURRENT_LIST_FILE} for more details.") endif() endif() include(FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS(DNSSD DEFAULT_MSG _dnssd_LIBRARY _dnssd_INCLUDE_DIR) if(_dnssd_EPIC_FAIL) # Zero out everything, we didn't meet version requirements set(DNSSD_FOUND FALSE) set(_dnssd_LIBRARY) set(_dnssd_INCLUDE_DIR) endif() set(DNSSD_INCLUDE_DIRS ${_dnssd_INCLUDE_DIR}) set(DNSSD_LIBRARIES ${_dnssd_LIBRARY}) if(DNSSD_FOUND AND _dnssd_output) message(STATUS "Found ZeroConf in ${DNSSD_INCLUDE_DIRS};${DNSSD_LIBRARIES}") endif() belle-sip-5.2.0+dfsg/config.h.cmake000066400000000000000000000031431434613136500170150ustar00rootroot00000000000000/*************************************************************************** * config.h.cmake * Copyright (C) 2014 Belledonne Communications, Grenoble France * **************************************************************************** * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ****************************************************************************/ #cmakedefine PACKAGE "@PACKAGE@" #cmakedefine PACKAGE_NAME "@PACKAGE_NAME@" #cmakedefine PACKAGE_VERSION "@PACKAGE_VERSION@" #cmakedefine PACKAGE_STRING "@PACKAGE_STRING@" #cmakedefine PACKAGE_TARNAME "@PACKAGE_TARNAME@" #cmakedefine PACKAGE_BUGREPORT "@PACKAGE_BUGREPORT@" #cmakedefine PACKAGE_URL "@PACKAGE_URL@" #cmakedefine VERSION "@VERSION@" #cmakedefine HAVE_LIBDL #cmakedefine HAVE_CLOCK_GETTIME #cmakedefine HAVE_RESINIT #cmakedefine HAVE_TUNNEL #cmakedefine HAVE_ZLIB #cmakedefine BELLE_SDP_FORCE_RTP_MAP #cmakedefine ENABLE_SERVER_SOCKETS #cmakedefine HAVE_MDNS #cmakedefine HAVE_DNS_SERVICE belle-sip-5.2.0+dfsg/configure.ac000077500000000000000000000240501434613136500166110ustar00rootroot00000000000000# -*- Autoconf -*- # Process this file with autoconf to produce a configure script. AC_PREREQ([2.63]) AC_INIT([belle-sip],[1.6.1],[jehan.monnier@linphone.org]) BELLESIP_SO_CURRENT=0 dnl increment this number when you add/change/remove an interface BELLESIP_SO_REVISION=0 dnl increment this number when you change source code, without changing interfaces; set to 0 when incrementing CURRENT BELLESIP_SO_AGE=0 dnl increment this number when you add an interface, set to 0 if you remove an interface BELLESIP_SO_VERSION=$BELLESIP_SO_CURRENT:$BELLESIP_SO_REVISION:$BELLESIP_SO_AGE AC_SUBST(BELLESIP_SO_CURRENT, $BELLESIP_SO_CURRENT) AC_SUBST(BELLESIP_SO_VERSION) AC_CONFIG_SRCDIR([src/belle_sip_utils.c]) AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_HEADERS([config.h]) AC_CANONICAL_SYSTEM dnl initialize pkg-config so that we can use it within if else fi statements. PKG_PROG_PKG_CONFIG() AM_INIT_AUTOMAKE([subdir-objects foreign]) AM_SILENT_RULES(yes) # Checks for programs. dnl do not put anythingelse before AC_PROG_CC unless checking if macro still work for clang dnl because of tunnel library wrapper, C++ is required. AC_PROG_CXX(["xcrun clang++" g++]) AC_PROG_CC(["xcrun clang" gcc]) AC_PROG_OBJC(["xcrun clang" gcc]) AM_PROG_CC_C_O case $INSTALL in *ginstall*) INSTALL="$INSTALL -C" ;; esac AC_PROG_CC_C99 LT_INIT(win32-dll) case "$target" in *-apple-darwin.ios|i386-apple*|armv6-apple*|armv7-apple*|armv7s-apple*|arm64-apple*|aarch64-apple*) LIBS="$LIBS -framework Foundation -framework CoreFoundation -framework CFNetwork -framework UIKit" build_apple=yes ;; #macosx 64 bits x86_64-apple-darwin*) LIBS="$LIBS -framework Foundation" OBJCFLAGS="$OBJCFLAGS -fmodules" build_apple=yes ;; esac AM_CONDITIONAL([BUILD_APPLE], [test "x$build_apple" = "xyes"]) dnl Workaround for mingw, whose compiler does not check in /usr/include ... case "$target_os" in *mingw*) if test "$cross_compiling" != "yes"; then if test "$prefix" = "/usr" ; then CPPFLAGS="$CPPFLAGS -I/usr/include" LDFLAGS="$LDFLAGS -L/usr/lib" fi fi ;; esac if test -f /etc/debian_version ; then use_deb=true; else use_rpm=true; fi AC_ARG_ENABLE(debug, [ --enable-debug Turn on debug mode (default=no)], [case "${enableval}" in yes) debug=true ;; no) debug=false ;; *) AC_MSG_ERROR(bad value ${enableval} for --enable-debug) ;; esac],[debug=false]) CFLAGS="$CFLAGS -fms-extensions" if test "$debug" = "no" ; then CFLAGS="$CFLAGS -g -O2" else CFLAGS="$CFLAGS -g" fi AC_ARG_ENABLE(strict, [ --enable-strict Turn on strict mode compilation, no warnings allowed (default=yes)], [case "${enableval}" in yes) strict=true ;; no) strict=false ;; *) AC_MSG_ERROR(bad value ${enableval} for --enable-strict) ;; esac],[strict=true]) STRICT_OPTIONS="-Wall" STRICT_OPTIONS_CC="-Wstrict-prototypes" STRICT_OPTIONS_CXX="" case "$CC" in *clang*) STRICT_OPTIONS="$STRICT_OPTIONS -Wno-error=unknown-warning-option -Qunused-arguments -Wno-tautological-compare -Wno-builtin-requires-header -Wno-unused-function -Wno-gnu-designator " #disabled due to wrong optimization false positive with small string #(cf. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=35903) STRICT_OPTIONS="$STRICT_OPTIONS -Wno-array-bounds " ;; gcc*) STRICT_OPTIONS="$STRICT_OPTIONS -Wno-error=pragmas" ;; esac # because Darwin's gcc is actually clang, we need to check it... case "$target_os" in *darwin*) STRICT_OPTIONS="$STRICT_OPTIONS -Wno-error=unknown-warning-option -Qunused-arguments -Wno-tautological-compare -Wno-unused-function " #disabled due to wrong optimization false positive with small string #(cf. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=35903) STRICT_OPTIONS="$STRICT_OPTIONS -Wno-array-bounds " ;; esac if test "$strict" = "true"; then STRICT_OPTIONS="$STRICT_OPTIONS -Werror -Wextra -Wno-unused-parameter -Wno-error=unknown-pragmas -Wuninitialized -Wno-error=strict-prototypes -Wno-missing-field-initializers -Wno-error=deprecated-declarations" fi dnl because of antlr3 we must accept a few warnings... dnl more portable for the moment LESS_STRICT_OPTIONS="-Wno-error=sign-compare" AC_SUBST(STRICT_OPTIONS) AC_SUBST(STRICT_OPTIONS_CC) AC_SUBST(STRICT_OPTIONS_CXX) AC_SUBST(LESS_STRICT_OPTIONS) # Checks for libraries. # Checks for header files. AC_ARG_WITH( antlr, [ --with-antlr Set prefix where libantlr3c can be found (ex:/usr or /usr/local)[default=PREFIX] ], [ antlr_prefix=${withval}],[ antlr_prefix=${prefix} ]) found_antlr3=no if test "$antlr_prefix" != "NONE" && test "$antlr_prefix" != "/usr" ; then ANTLR_CFLAGS="-I${antlr_prefix}/include" ANTLR_LIBS="-L${antlr_prefix}/lib" fi ANTLR_LIBS="$ANTLR_LIBS -lantlr3c" dnl check antlr headers CPPFLAGS_save=$CPPFLAGS CPPFLAGS="$ANTLR_CFLAGS $CPPFLAGS" AC_CHECK_HEADERS([antlr3.h], [found_antlr3=yes]) AC_CHECK_DECL([antlr3StringStreamNew], [AC_DEFINE(HAVE_ANTLR_STRING_STREAM_NEW,1,[Defined when antlr 3.4 api is detected])], [foo=bar], [#include ]) libresolv_have_res_get_servers=no resolv_h_hav_res_ndestroy=no LIBS_save=$LIBS LIBS="$LIBS -lresolv" AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]], [[res_getservers(NULL,NULL,0)]])] ,[libresolv_have_res_get_servers=yes AC_MSG_NOTICE([res_getservers usable])] ,[LIBS=$LIBS_save AC_MSG_WARN([res_getservers not usable])]) AC_CHECK_DECL([res_ndestroy], [resolv_h_hav_res_ndestroy=yes], [foo=bar], [#include ]) if test "${libresolv_have_res_get_servers}${resolv_h_hav_res_ndestroy}" == "yesyes" ; then AC_DEFINE(HAVE_RESINIT,1,[Defined when res_ninit api is available]) fi CPPFLAGS=$CPPFLAGS_save if test "$found_antlr3" != "yes" ; then AC_MSG_ERROR([Could not find antlr3 development files. Please install antlr3 version > 3.2 (libantlr3c-dev on debian/ubuntu systems)]) ANTLR_CFLAGS= ANTLR_LIBS= fi AC_PATH_PROG([ANTLR],[antlr3],[no],[$antlr_prefix/bin /usr/bin]) if test $ANTLR = "no" ; then antlr_java_prefixes="$antlr_prefix/share/java /usr/local/share/java /usr/share/java /opt/local/share/java" for antlr_java_prefix in $antlr_java_prefixes do antlr_jar=$antlr_java_prefix/antlr.jar if test -f $antlr_jar ; then break else antlr_jar=no fi antlr_jar=$antlr_java_prefix/antlr3.jar if test -f $antlr_jar ; then break else antlr_jar=no fi done if test $antlr_jar = "no" ; then AC_MSG_ERROR([Could not find antlr.jar. Please install antlr3 ]) fi AC_PATH_PROG([JAVA],[java],[no]) if test $JAVA = "no" ; then AC_MSG_ERROR([Could not find java prog. Please install java ]) else ANTLR="$JAVA -Xmx512m -jar $antlr_jar" fi fi AC_SUBST(ANTLR_CFLAGS) AC_SUBST(ANTLR_LIBS) AC_ARG_ENABLE( tls, [ --enable-tls Enable TLS support (default=yes)], [case "${enableval}" in yes) use_tls=true ;; no) use_tls=false ;; *) AC_MSG_ERROR(bad value ${enableval} for --enable-tls) ;; esac],[use_tls=true]) PKG_CHECK_MODULES(BCTOOLBOX, bctoolbox, [found_bctoolbox=yes],[found_bctoolbox=no]) if test "x$found_bctoolbox" = "xyes" ; then TLS_CFLAGS=$BCTOOLBOX_CFLAGS TLS_LIBS=$BCTOOLBOX_LIBS else AC_MSG_ERROR(["Could not find bctoolbox (required dependency)"]) fi AC_SUBST(TLS_CFLAGS) AC_SUBST(TLS_LIBS) AC_SUBST(TLS_PC) AC_ARG_ENABLE(tunnel, [AS_HELP_STRING([--enable-tunnel], [Enable tunnel support (default=no)])]) if test "$enable_tunnel" = "yes" ; then PKG_CHECK_MODULES(TUNNEL, tunnel, [found_tunnel=yes], [found_tunnel=no]) if test "$found_tunnel" = "yes" ; then AC_DEFINE(HAVE_TUNNEL, 1, [Defined when tunnel is enabled and available]) fi fi AM_CONDITIONAL(BUILD_TUNNEL, test "$found_tunnel" = "yes") PKG_CHECK_MODULES(BCTOOLBOXTESTER, bctoolbox-tester, [found_pkg_config_bctoolboxtester=yes],[found_pkg_config_bctoolboxtester=no]) case "$target_os" in *mingw*) LIBBELLESIP_CFLAGS="-DBELLESIP_EXPORTS" CPPFLAGS="$CPPFLAGS -D_WIN32_WINNT=0x0501" LIBS="$LIBS -lws2_32 -liphlpapi" LDFLAGS="$LDFLAGS -Wl,--export-all-symbols" ;; esac AC_SUBST(LIBBELLESIP_CFLAGS) if test "$found_pkg_config_bctoolboxtester" = "no" ; then AC_MSG_WARN([Could not find bctoolbox tester wrapper, tests are not compiled.]) fi AC_ARG_ENABLE(tests, [AS_HELP_STRING([--disable-tests], [Disable compilation of tests])], [case "${enableval}" in yes) tests_enabled=true ;; no) tests_enabled=false ;; *) AC_MSG_ERROR(bad value ${enableval} for --disable-tests) ;; esac], [tests_enabled=yes] ) AM_CONDITIONAL(ENABLE_TESTS, test x$tests_enabled = xyes && test x$found_pkg_config_bctoolboxtester = xyes) dnl check zlib AC_ARG_ENABLE(zlib, [AS_HELP_STRING([--disable-zlib], [Disable ZLib support])], [case "${enableval}" in yes) build_zlib=true ;; no) build_zlib=false ;; *) AC_MSG_ERROR(bad value ${enableval} for --disable-zlib) ;; esac], [build_zlib=auto] ) if test "$build_zlib" != "false" ; then PKG_CHECK_MODULES(ZLIB, [zlib], [found_zlib=yes], [found_zlib=no]) if test "x$found_zlib" = "xno" ; then AC_CHECK_LIB(z, inflate, [AC_CHECK_HEADER([zlib.h], [AC_COMPILE_IFELSE( [AC_LANG_PROGRAM([[ #include #if !defined(ZLIB_VERNUM) || (ZLIB_VERNUM < 0x1230) // compile error #endif ]],[])], [found_zlib=yes])])]) if test "x$found_zlib" = "xno" ; then AC_MSG_NOTICE([zlib library and headers not found]) else AC_DEFINE( HAVE_ZLIB, 1, [ZLIB support] ) ZLIB_LIBS='-lz' AC_SUBST(ZLIB_LIBS) fi else AC_MSG_NOTICE([ZLIB found]) AC_DEFINE( HAVE_ZLIB, 1, [ZLIB support] ) fi fi LIBS_PRIVATE="$LIBS_PRIVATE $ANTLR_LIBS $POLARSSL_LIBS" AC_SUBST(LIBS_PRIVATE) REQUIRES_PRIVATE="" AC_SUBST(REQUIRES_PRIVATE) # Checks for typedefs, structures, and compiler characteristics. # Eliminate -lstdc++ addition to postdeps for cross compiles. postdeps_CXX=`echo " $postdeps_CXX " | sed 's, -lstdc++ ,,g'` # Checks for library functions. AC_CHECK_LIB(rt, clock_gettime) AC_CHECK_LIB(dl, dlopen) AC_CHECK_LIB(pthread, pthread_getspecific,, [AC_MSG_ERROR([pthread library not found])]) AC_CONFIG_FILES( [ Makefile include/Makefile include/belle-sip/Makefile src/Makefile src/grammars/Makefile tester/Makefile belle-sip.pc belle-sip.spec ]) AC_OUTPUT belle-sip-5.2.0+dfsg/include/000077500000000000000000000000001434613136500157425ustar00rootroot00000000000000belle-sip-5.2.0+dfsg/include/CMakeLists.txt000066400000000000000000000034241434613136500205050ustar00rootroot00000000000000############################################################################ # CMakeLists.txt # Copyright (C) 2015 Belledonne Communications, Grenoble France # ############################################################################ # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # ############################################################################ set(HEADER_FILES auth-helper.h belle-sdp.h belle-sip.h bodyhandler.h defs.h dialog.h dict.h generic-uri.h headers.h http-listener.h http-message.h http-provider.h list.h listener.h listeningpoint.h mainloop.h mdns_register.h message.h object.h object++.hh parameters.h provider.h refresher.h resolver.h sipstack.h sip-uri.h transaction.h types.h utils.h wakelock.h ) set(BELLE_SIP_HEADER_FILES ) foreach(HEADER_FILE ${HEADER_FILES}) list(APPEND BELLE_SIP_HEADER_FILES "${CMAKE_CURRENT_LIST_DIR}/belle-sip/${HEADER_FILE}") endforeach() set(BELLE_SIP_HEADER_FILES ${BELLE_SIP_HEADER_FILES} PARENT_SCOPE) install(FILES ${BELLE_SIP_HEADER_FILES} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/belle-sip PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ ) belle-sip-5.2.0+dfsg/include/MSVC/000077500000000000000000000000001434613136500165125ustar00rootroot00000000000000belle-sip-5.2.0+dfsg/include/MSVC/inttypes.h000066400000000000000000000174541434613136500205550ustar00rootroot00000000000000// ISO C9x compliant inttypes.h for Microsoft Visual Studio // Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124 // // Copyright (c) 2006 Alexander Chemeris // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // 1. Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // // 2. Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // 3. The name of the author may be used to endorse or promote products // derived from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED // WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO // EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; // OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR // OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF // ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // /////////////////////////////////////////////////////////////////////////////// #ifndef _MSC_VER // [ #error "Use this header only with Microsoft Visual C++ compilers!" #endif // _MSC_VER ] #ifndef _MSC_INTTYPES_H_ // [ #define _MSC_INTTYPES_H_ #if _MSC_VER > 1000 #pragma once #endif #include "stdint.h" // 7.8 Format conversion of integer types typedef struct { intmax_t quot; intmax_t rem; } imaxdiv_t; // 7.8.1 Macros for format specifiers #if !defined(__cplusplus) || defined(__STDC_FORMAT_MACROS) // [ See footnote 185 at page 198 // The fprintf macros for signed integers are: #define PRId8 "d" #define PRIi8 "i" #define PRIdLEAST8 "d" #define PRIiLEAST8 "i" #define PRIdFAST8 "d" #define PRIiFAST8 "i" #define PRId16 "hd" #define PRIi16 "hi" #define PRIdLEAST16 "hd" #define PRIiLEAST16 "hi" #define PRIdFAST16 "hd" #define PRIiFAST16 "hi" #define PRId32 "I32d" #define PRIi32 "I32i" #define PRIdLEAST32 "I32d" #define PRIiLEAST32 "I32i" #define PRIdFAST32 "I32d" #define PRIiFAST32 "I32i" #define PRId64 "I64d" #define PRIi64 "I64i" #define PRIdLEAST64 "I64d" #define PRIiLEAST64 "I64i" #define PRIdFAST64 "I64d" #define PRIiFAST64 "I64i" #define PRIdMAX "I64d" #define PRIiMAX "I64i" #define PRIdPTR "Id" #define PRIiPTR "Ii" // The fprintf macros for unsigned integers are: #define PRIo8 "o" #define PRIu8 "u" #define PRIx8 "x" #define PRIX8 "X" #define PRIoLEAST8 "o" #define PRIuLEAST8 "u" #define PRIxLEAST8 "x" #define PRIXLEAST8 "X" #define PRIoFAST8 "o" #define PRIuFAST8 "u" #define PRIxFAST8 "x" #define PRIXFAST8 "X" #define PRIo16 "ho" #define PRIu16 "hu" #define PRIx16 "hx" #define PRIX16 "hX" #define PRIoLEAST16 "ho" #define PRIuLEAST16 "hu" #define PRIxLEAST16 "hx" #define PRIXLEAST16 "hX" #define PRIoFAST16 "ho" #define PRIuFAST16 "hu" #define PRIxFAST16 "hx" #define PRIXFAST16 "hX" #define PRIo32 "I32o" #define PRIu32 "I32u" #define PRIx32 "I32x" #define PRIX32 "I32X" #define PRIoLEAST32 "I32o" #define PRIuLEAST32 "I32u" #define PRIxLEAST32 "I32x" #define PRIXLEAST32 "I32X" #define PRIoFAST32 "I32o" #define PRIuFAST32 "I32u" #define PRIxFAST32 "I32x" #define PRIXFAST32 "I32X" #define PRIo64 "I64o" #define PRIu64 "I64u" #define PRIx64 "I64x" #define PRIX64 "I64X" #define PRIoLEAST64 "I64o" #define PRIuLEAST64 "I64u" #define PRIxLEAST64 "I64x" #define PRIXLEAST64 "I64X" #define PRIoFAST64 "I64o" #define PRIuFAST64 "I64u" #define PRIxFAST64 "I64x" #define PRIXFAST64 "I64X" #define PRIoMAX "I64o" #define PRIuMAX "I64u" #define PRIxMAX "I64x" #define PRIXMAX "I64X" #define PRIoPTR "Io" #define PRIuPTR "Iu" #define PRIxPTR "Ix" #define PRIXPTR "IX" // The fscanf macros for signed integers are: #define SCNd8 "d" #define SCNi8 "i" #define SCNdLEAST8 "d" #define SCNiLEAST8 "i" #define SCNdFAST8 "d" #define SCNiFAST8 "i" #define SCNd16 "hd" #define SCNi16 "hi" #define SCNdLEAST16 "hd" #define SCNiLEAST16 "hi" #define SCNdFAST16 "hd" #define SCNiFAST16 "hi" #define SCNd32 "ld" #define SCNi32 "li" #define SCNdLEAST32 "ld" #define SCNiLEAST32 "li" #define SCNdFAST32 "ld" #define SCNiFAST32 "li" #define SCNd64 "I64d" #define SCNi64 "I64i" #define SCNdLEAST64 "I64d" #define SCNiLEAST64 "I64i" #define SCNdFAST64 "I64d" #define SCNiFAST64 "I64i" #define SCNdMAX "I64d" #define SCNiMAX "I64i" #ifdef _WIN64 // [ # define SCNdPTR "I64d" # define SCNiPTR "I64i" #else // _WIN64 ][ # define SCNdPTR "ld" # define SCNiPTR "li" #endif // _WIN64 ] // The fscanf macros for unsigned integers are: #define SCNo8 "o" #define SCNu8 "u" #define SCNx8 "x" #define SCNX8 "X" #define SCNoLEAST8 "o" #define SCNuLEAST8 "u" #define SCNxLEAST8 "x" #define SCNXLEAST8 "X" #define SCNoFAST8 "o" #define SCNuFAST8 "u" #define SCNxFAST8 "x" #define SCNXFAST8 "X" #define SCNo16 "ho" #define SCNu16 "hu" #define SCNx16 "hx" #define SCNX16 "hX" #define SCNoLEAST16 "ho" #define SCNuLEAST16 "hu" #define SCNxLEAST16 "hx" #define SCNXLEAST16 "hX" #define SCNoFAST16 "ho" #define SCNuFAST16 "hu" #define SCNxFAST16 "hx" #define SCNXFAST16 "hX" #define SCNo32 "lo" #define SCNu32 "lu" #define SCNx32 "lx" #define SCNX32 "lX" #define SCNoLEAST32 "lo" #define SCNuLEAST32 "lu" #define SCNxLEAST32 "lx" #define SCNXLEAST32 "lX" #define SCNoFAST32 "lo" #define SCNuFAST32 "lu" #define SCNxFAST32 "lx" #define SCNXFAST32 "lX" #define SCNo64 "I64o" #define SCNu64 "I64u" #define SCNx64 "I64x" #define SCNX64 "I64X" #define SCNoLEAST64 "I64o" #define SCNuLEAST64 "I64u" #define SCNxLEAST64 "I64x" #define SCNXLEAST64 "I64X" #define SCNoFAST64 "I64o" #define SCNuFAST64 "I64u" #define SCNxFAST64 "I64x" #define SCNXFAST64 "I64X" #define SCNoMAX "I64o" #define SCNuMAX "I64u" #define SCNxMAX "I64x" #define SCNXMAX "I64X" #ifdef _WIN64 // [ # define SCNoPTR "I64o" # define SCNuPTR "I64u" # define SCNxPTR "I64x" # define SCNXPTR "I64X" #else // _WIN64 ][ # define SCNoPTR "lo" # define SCNuPTR "lu" # define SCNxPTR "lx" # define SCNXPTR "lX" #endif // _WIN64 ] #endif // __STDC_FORMAT_MACROS ] // 7.8.2 Functions for greatest-width integer types // 7.8.2.1 The imaxabs function #define imaxabs _abs64 // 7.8.2.2 The imaxdiv function // This is modified version of div() function from Microsoft's div.c found // in %MSVC.NET%\crt\src\div.c #ifdef STATIC_IMAXDIV // [ static #else // STATIC_IMAXDIV ][ _inline #endif // STATIC_IMAXDIV ] imaxdiv_t __cdecl imaxdiv(intmax_t numer, intmax_t denom) { imaxdiv_t result; result.quot = numer / denom; result.rem = numer % denom; if (numer < 0 && result.rem > 0) { // did division wrong; must fix up ++result.quot; result.rem -= denom; } return result; } // 7.8.2.3 The strtoimax and strtoumax functions #define strtoimax _strtoi64 #define strtoumax _strtoui64 // 7.8.2.4 The wcstoimax and wcstoumax functions #define wcstoimax _wcstoi64 #define wcstoumax _wcstoui64 #endif // _MSC_INTTYPES_H_ ] belle-sip-5.2.0+dfsg/include/MSVC/stdint.h000066400000000000000000000170601434613136500201740ustar00rootroot00000000000000// ISO C9x compliant stdint.h for Microsoft Visual Studio // Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124 // // Copyright (c) 2006-2008 Alexander Chemeris // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // 1. Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // // 2. Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // // 3. The name of the author may be used to endorse or promote products // derived from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED // WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO // EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; // OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR // OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF // ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // /////////////////////////////////////////////////////////////////////////////// #ifndef _MSC_VER // [ #error "Use this header only with Microsoft Visual C++ compilers!" #endif // _MSC_VER ] #ifndef _MSC_STDINT_H_ // [ #define _MSC_STDINT_H_ #if _MSC_VER > 1000 #pragma once #endif #include // For Visual Studio 6 in C++ mode and for many Visual Studio versions when // compiling for ARM we should wrap include with 'extern "C++" {}' // or compiler give many errors like this: // error C2733: second C linkage of overloaded function 'wmemchr' not allowed #ifdef __cplusplus extern "C" { #endif # include #ifdef __cplusplus } #endif // Define _W64 macros to mark types changing their size, like intptr_t. #ifndef _W64 # if !defined(__midl) && (defined(_X86_) || defined(_M_IX86)) && _MSC_VER >= 1300 # define _W64 __w64 # else # define _W64 # endif #endif // 7.18.1 Integer types // 7.18.1.1 Exact-width integer types // Visual Studio 6 and Embedded Visual C++ 4 doesn't // realize that, e.g. char has the same size as __int8 // so we give up on __intX for them. #if (_MSC_VER < 1300) typedef signed char int8_t; typedef signed short int16_t; typedef signed int int32_t; typedef unsigned char uint8_t; typedef unsigned short uint16_t; typedef unsigned int uint32_t; #else typedef signed __int8 int8_t; typedef signed __int16 int16_t; typedef signed __int32 int32_t; typedef unsigned __int8 uint8_t; typedef unsigned __int16 uint16_t; typedef unsigned __int32 uint32_t; #endif typedef signed __int64 int64_t; typedef unsigned __int64 uint64_t; // 7.18.1.2 Minimum-width integer types typedef int8_t int_least8_t; typedef int16_t int_least16_t; typedef int32_t int_least32_t; typedef int64_t int_least64_t; typedef uint8_t uint_least8_t; typedef uint16_t uint_least16_t; typedef uint32_t uint_least32_t; typedef uint64_t uint_least64_t; // 7.18.1.3 Fastest minimum-width integer types typedef int8_t int_fast8_t; typedef int16_t int_fast16_t; typedef int32_t int_fast32_t; typedef int64_t int_fast64_t; typedef uint8_t uint_fast8_t; typedef uint16_t uint_fast16_t; typedef uint32_t uint_fast32_t; typedef uint64_t uint_fast64_t; // 7.18.1.4 Integer types capable of holding object pointers #ifdef _WIN64 // [ typedef signed __int64 intptr_t; typedef unsigned __int64 uintptr_t; #else // _WIN64 ][ typedef _W64 signed int intptr_t; typedef _W64 unsigned int uintptr_t; #endif // _WIN64 ] // 7.18.1.5 Greatest-width integer types typedef int64_t intmax_t; typedef uint64_t uintmax_t; // 7.18.2 Limits of specified-width integer types #if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) // [ See footnote 220 at page 257 and footnote 221 at page 259 // 7.18.2.1 Limits of exact-width integer types #define INT8_MIN ((int8_t)_I8_MIN) #define INT8_MAX _I8_MAX #define INT16_MIN ((int16_t)_I16_MIN) #define INT16_MAX _I16_MAX #define INT32_MIN ((int32_t)_I32_MIN) #define INT32_MAX _I32_MAX #define INT64_MIN ((int64_t)_I64_MIN) #define INT64_MAX _I64_MAX #define UINT8_MAX _UI8_MAX #define UINT16_MAX _UI16_MAX #define UINT32_MAX _UI32_MAX #define UINT64_MAX _UI64_MAX // 7.18.2.2 Limits of minimum-width integer types #define INT_LEAST8_MIN INT8_MIN #define INT_LEAST8_MAX INT8_MAX #define INT_LEAST16_MIN INT16_MIN #define INT_LEAST16_MAX INT16_MAX #define INT_LEAST32_MIN INT32_MIN #define INT_LEAST32_MAX INT32_MAX #define INT_LEAST64_MIN INT64_MIN #define INT_LEAST64_MAX INT64_MAX #define UINT_LEAST8_MAX UINT8_MAX #define UINT_LEAST16_MAX UINT16_MAX #define UINT_LEAST32_MAX UINT32_MAX #define UINT_LEAST64_MAX UINT64_MAX // 7.18.2.3 Limits of fastest minimum-width integer types #define INT_FAST8_MIN INT8_MIN #define INT_FAST8_MAX INT8_MAX #define INT_FAST16_MIN INT16_MIN #define INT_FAST16_MAX INT16_MAX #define INT_FAST32_MIN INT32_MIN #define INT_FAST32_MAX INT32_MAX #define INT_FAST64_MIN INT64_MIN #define INT_FAST64_MAX INT64_MAX #define UINT_FAST8_MAX UINT8_MAX #define UINT_FAST16_MAX UINT16_MAX #define UINT_FAST32_MAX UINT32_MAX #define UINT_FAST64_MAX UINT64_MAX // 7.18.2.4 Limits of integer types capable of holding object pointers #ifdef _WIN64 // [ # define INTPTR_MIN INT64_MIN # define INTPTR_MAX INT64_MAX # define UINTPTR_MAX UINT64_MAX #else // _WIN64 ][ # define INTPTR_MIN INT32_MIN # define INTPTR_MAX INT32_MAX # define UINTPTR_MAX UINT32_MAX #endif // _WIN64 ] // 7.18.2.5 Limits of greatest-width integer types #define INTMAX_MIN INT64_MIN #define INTMAX_MAX INT64_MAX #define UINTMAX_MAX UINT64_MAX // 7.18.3 Limits of other integer types #ifdef _WIN64 // [ # define PTRDIFF_MIN _I64_MIN # define PTRDIFF_MAX _I64_MAX #else // _WIN64 ][ # define PTRDIFF_MIN _I32_MIN # define PTRDIFF_MAX _I32_MAX #endif // _WIN64 ] #define SIG_ATOMIC_MIN INT_MIN #define SIG_ATOMIC_MAX INT_MAX #ifndef SIZE_MAX // [ # ifdef _WIN64 // [ # define SIZE_MAX _UI64_MAX # else // _WIN64 ][ # define SIZE_MAX _UI32_MAX # endif // _WIN64 ] #endif // SIZE_MAX ] // WCHAR_MIN and WCHAR_MAX are also defined in #ifndef WCHAR_MIN // [ # define WCHAR_MIN 0 #endif // WCHAR_MIN ] #ifndef WCHAR_MAX // [ # define WCHAR_MAX _UI16_MAX #endif // WCHAR_MAX ] #define WINT_MIN 0 #define WINT_MAX _UI16_MAX #endif // __STDC_LIMIT_MACROS ] // 7.18.4 Limits of other integer types #if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) // [ See footnote 224 at page 260 // 7.18.4.1 Macros for minimum-width integer constants #define INT8_C(val) val##i8 #define INT16_C(val) val##i16 #define INT32_C(val) val##i32 #define INT64_C(val) val##i64 #define UINT8_C(val) val##ui8 #define UINT16_C(val) val##ui16 #define UINT32_C(val) val##ui32 #define UINT64_C(val) val##ui64 // 7.18.4.2 Macros for greatest-width integer constants #define INTMAX_C INT64_C #define UINTMAX_C UINT64_C #endif // __STDC_CONSTANT_MACROS ] #endif // _MSC_STDINT_H_ ] belle-sip-5.2.0+dfsg/include/Makefile.am000066400000000000000000000000221434613136500177700ustar00rootroot00000000000000SUBDIRS=belle-sip belle-sip-5.2.0+dfsg/include/belle-sip/000077500000000000000000000000001434613136500176165ustar00rootroot00000000000000belle-sip-5.2.0+dfsg/include/belle-sip/Makefile.am000066400000000000000000000010551434613136500216530ustar00rootroot00000000000000bellesipdir=$(includedir)/belle-sip bellesip_HEADERS=\ object.h \ sip-uri.h \ list.h \ headers.h \ parameters.h \ mainloop.h \ transaction.h \ message.h \ listeningpoint.h \ sipstack.h \ provider.h \ listener.h \ dialog.h \ utils.h \ auth-helper.h \ belle-sdp.h \ belle-sip.h \ refresher.h \ defs.h \ resolver.h \ dict.h \ http-provider.h \ http-message.h \ http-listener.h \ generic-uri.h \ types.h \ bodyhandler.h EXTRA_DIST=$(bellesip_HEADERS) belle-sip-5.2.0+dfsg/include/belle-sip/auth-helper.h000066400000000000000000000414741434613136500222170ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef AUTHENTICATION_HELPER_H_ #define AUTHENTICATION_HELPER_H_ #include "belle-sip/defs.h" #include "belle-sip/belle-sip.h" #include "bctoolbox/crypto.h" #define MAX_LENGTH_BYTE 32 #define MAX_RESPONSE_SIZE 65 BELLE_SIP_BEGIN_DECLS /** * Create an authorization header from an www_authenticate header, all common parameters are copyed. * copy params: scheme, realm, nonce, algorithm, opaque * @param authentication source to be used as input * @return belle_sip_header_authorization_t* */ BELLESIP_EXPORT belle_sip_header_authorization_t* belle_sip_auth_helper_create_authorization(const belle_sip_header_www_authenticate_t* authentication); /** * Create an www_authenticate header from an authorization header, all common parameters are copyed. * copy params: scheme, realm, nonce, algorithm, opaque * @param authorization source to be used as input * @return belle_sip_header_www_authenticate_t* */ BELLESIP_EXPORT belle_sip_header_www_authenticate_t* belle_sip_auth_helper_create_www_authenticate(const belle_sip_header_authorization_t* authorization); /** * Create an http authorization header from an www_authenticate header, all common parameters are copyed. * copy params: scheme, realm, nonce, algorithm, opaque * @param authentication source to be used as input * @return belle_http_header_authorization_t* */ BELLESIP_EXPORT belle_http_header_authorization_t* belle_http_auth_helper_create_authorization(const belle_sip_header_www_authenticate_t* authentication); /** * Create an proxy_authorization header from an www_authenticate header, all common parameters are copyed. * copy params: scheme, realm, nonce, algorithm, opaque * @param authentication source to be used as input * @return belle_sip_header_authorization_t* */ BELLESIP_EXPORT belle_sip_header_proxy_authorization_t* belle_sip_auth_helper_create_proxy_authorization(const belle_sip_header_proxy_authenticate_t* proxy_authentication); /** * return size which depends on algorithm * @return 0 if failed */ BELLESIP_EXPORT int belle_sip_auth_define_size(const char* algo); /** * compute and set response value according to parameters * HA1=MD5(username:realm:passwd) * fills cnonce if needed (qop=auth); * fills qop * * @return 0 if succeed */ BELLESIP_EXPORT int belle_sip_auth_helper_fill_authorization(belle_sip_header_authorization_t* authorization ,const char* method ,const char* ha1); /** * compute and set response value according to parameters * @return 0 if succeed */ BELLESIP_EXPORT int belle_sip_auth_helper_fill_proxy_authorization(belle_sip_header_proxy_authorization_t* proxy_authorization ,const char* method ,const char* ha1); /* * compute HA1 (NULL terminated) * HA1=MD5(userid:realm:passwd) * return 0 in case of success * */ BELLESIP_EXPORT int belle_sip_auth_helper_compute_ha1(const char* userid,const char* realm,const char* password, char ha1[33]); /* * compute HA1 (NULL terminated) * HA1=MD5(userid:realm:passwd) or SHA-256(userid:realm:passwd) * return 0 in case of success * */ BELLESIP_EXPORT int belle_sip_auth_helper_compute_ha1_for_algorithm(const char* userid,const char* realm,const char* password, char *ha1, size_t size, const char* algo); /* * compute HA2 (NULL terminated) * HA2=MD5(method:uri) * return 0 in case of success * */ BELLESIP_EXPORT int belle_sip_auth_helper_compute_ha2(const char* method,const char* uri, char ha2[33]); /* * compute HA2 (NULL terminated) * HA2=MD5(method:uri) or SHA-256(method:uri) * return 0 in case of success * */ BELLESIP_EXPORT int belle_sip_auth_helper_compute_ha2_for_algorithm(const char* method,const char* uri, char *ha2, size_t size, const char* algo); /* * compute response(NULL terminated) * res=MD5(ha1:nonce:ha2) * return 0 in case of success * */ BELLESIP_EXPORT int belle_sip_auth_helper_compute_response(const char* ha1,const char* nonce, const char* ha2, char response[33]); /* * compute response(NULL terminated) * res=MD5(ha1:nonce:ha2) or SHA-256(ha1:nonce:ha2) * return 0 in case of success * */ BELLESIP_EXPORT int belle_sip_auth_helper_compute_response_for_algorithm(const char* ha1,const char* nonce, const char* ha2, char *response, size_t size, const char* algo); /* * compute response(NULL terminated) * res=MD5(HA1:nonce:nonce_count:cnonce:qop:HA2) * return 0 in case of success * */ BELLESIP_EXPORT int belle_sip_auth_helper_compute_response_qop_auth( const char* ha1 , const char* nonce , unsigned int nonce_count , const char* cnonce , const char* qop , const char* ha2 , char response[33]); /* * compute response(NULL terminated) * res=MD5(HA1:nonce:nonce_count:cnonce:qop:HA2) or SHA-256(HA1:nonce:nonce_count:cnonce:qop:HA2) * return 0 in case of success * */ BELLESIP_EXPORT int belle_sip_auth_helper_compute_response_qop_auth_for_algorithm(const char* ha1 , const char* nonce , unsigned int nonce_count , const char* cnonce , const char* qop , const char* ha2 , char *response , size_t size, const char* algo); /*TLS client certificate auth*/ /** * Set TLS certificate verification callback * * @param callback function pointer for callback, or NULL to unset * @deprecated on 2018/03/31 in favor of belle_tls_crypto_config_set_verify_callback() * Callback signature is: * int (*verify_cb_error_cb_t)(unsigned char* der, int length, int depth, int* flags); * der - raw certificate data, in DER format * length - length of certificate DER data * depth - position of certificate in cert chain, ending at 0 = root or top * flags - verification state for CURRENT certificate only */ BELLESIP_DEPRECATED BELLESIP_EXPORT int belle_sip_tls_set_verify_error_cb(void *callback); /** * Format of certificate buffer **/ typedef enum belle_sip_certificate_raw_format { BELLE_SIP_CERTIFICATE_RAW_FORMAT_PEM, /** PEM format*/ BELLE_SIP_CERTIFICATE_RAW_FORMAT_DER /** ASN.1 raw format*/ }belle_sip_certificate_raw_format_t; /** * Parse a buffer containing either a certificate chain order in PEM format or a single DER cert * @param buff raw buffer * @param size buffer size * @param format either PEM or DER * @return belle_sip_certificates_chain_t or NULL if cannot be decoded */ BELLESIP_EXPORT belle_sip_certificates_chain_t* belle_sip_certificates_chain_parse(const char* buff, size_t size,belle_sip_certificate_raw_format_t format); /** * Parse a buffer containing either a private or public rsa key in PEM format * @param buff raw buffer * @param size buffer size * @param passwd password (optionnal) * @return list of belle_sip_signing_key_t or NULL if cannot be decoded */ BELLESIP_EXPORT belle_sip_signing_key_t* belle_sip_signing_key_parse(const char* buff, size_t size,const char* passwd); /** * Parse a pather containing either a certificate chain order in PEM format or a single DER cert * @param path file * @param format either PEM or DER * @return belle_sip_certificates_chain_t or NUL if cannot be decoded */ BELLESIP_EXPORT belle_sip_certificates_chain_t* belle_sip_certificates_chain_parse_file(const char* path, belle_sip_certificate_raw_format_t format); /** * Parse a directory for *.pem file containing a certificate and private key in PEM format or a single DER cert with subject CNAME as given * * @param[in] path directory to parse * @param[in] subject subject CNAME to look for * @param[out] certificate result certificate, NULL if not found. Is allocated by this function, caller must do a belle_sip_object_unref on it after use * @param[out] pkey result private key, NULL if not found. Is allocated by this function, caller must do a belle_sip_object_unref on it after use * @param[in] format either PEM or DER * @return 0 if we found a certificate and key matching given subject common name */ BELLESIP_EXPORT int belle_sip_get_certificate_and_pkey_in_dir(const char *path, const char *subject, belle_sip_certificates_chain_t **certificate, belle_sip_signing_key_t **pkey, belle_sip_certificate_raw_format_t format); /** * Generate a self signed certificate and key and save them in a file if a path is given, file will be .pem * * @param[in] path If not NULL a file will be written in the given directory. filename is .pem * @param[in] subject used in the CN= field of issuer and subject name * @param[out] certificate the generated certificate. Must be destroyed using belle_sip_certificates_chain_destroy * @param[out] key the generated key. Must be destroyed using belle_sip_signing_key_destroy * @return 0 on success */ BELLESIP_EXPORT int belle_sip_generate_self_signed_certificate(const char* path, const char *subject, belle_sip_certificates_chain_t **certificate, belle_sip_signing_key_t **pkey); /** * Convert a certificate into a its PEM format string * * @param[in] cert The certificate to be converted into PEM format string * @return the PEM representation of certificate. Buffer is allocated by this function and must be freed by caller */ BELLESIP_EXPORT char *belle_sip_certificates_chain_get_pem(belle_sip_certificates_chain_t *cert); /** * Convert a key into a its PEM format string * * @param[in] key The key to be converted into PEM format string * @return the PEM representation of key. Buffer is allocated by this function and must be freed by caller */ BELLESIP_EXPORT char *belle_sip_signing_key_get_pem(belle_sip_signing_key_t *key); /** * Generate a certificate fingerprint as described in RFC4572 * Note: only SHA1 signing algo is supported for now * * @param[in] certificate The certificate used to generate the fingerprint * @return The generated fingerprint formatted according to RFC4572 section 5. Is a null terminated string, must be freed by caller */ BELLESIP_EXPORT char *belle_sip_certificates_chain_get_fingerprint(belle_sip_certificates_chain_t *certificate); /** * Parse a pather containing either a private or public rsa key * @param path file * @param passwd password (optionnal) * @return list of belle_sip_signing_key_t or NUL iff cannot be decoded */ BELLESIP_EXPORT belle_sip_signing_key_t* belle_sip_signing_key_parse_file(const char* path, const char* passwd); #define BELLE_TLS_VERIFY_NONE (0) #define BELLE_TLS_VERIFY_CN_MISMATCH (1) #define BELLE_TLS_VERIFY_ANY_REASON (0xff) /* Set of functions deprecated on 2016/02/02 use the belle_tls_crypto_config_XXX ones */ BELLESIP_DEPRECATED BELLESIP_EXPORT belle_tls_verify_policy_t *belle_tls_verify_policy_new(void); BELLESIP_DEPRECATED BELLESIP_EXPORT int belle_tls_verify_policy_set_root_ca(belle_tls_verify_policy_t *obj, const char *path); BELLESIP_DEPRECATED BELLESIP_EXPORT void belle_tls_verify_policy_set_exceptions(belle_tls_verify_policy_t *obj, int flags); BELLESIP_DEPRECATED BELLESIP_EXPORT unsigned int belle_tls_verify_policy_get_exceptions(const belle_tls_verify_policy_t *obj); /** * Create a new crypto configuration object * The crypto configuration may be passed to a http provider or a listening point using the appropriate methods * It can be used to provide : * - a path to the trusted root certificates * - a way to override certificate verification exceptions * - a ssl configuration structure provided directly to the underlying crypto library (mbedtls 2 or above), * @return an empty belle_tls_crypto_config object, trusted certificate path is initialised to the default system path without any warranty */ BELLESIP_EXPORT belle_tls_crypto_config_t *belle_tls_crypto_config_new(void); /** * Set the path to the trusted certificate chain * @param[in/out] obj The crypto configuration object to set * @param[in] path The path to the trusted certificate chain file(NULL terminated string) * * @return 0 on success */ BELLESIP_EXPORT int belle_tls_crypto_config_set_root_ca(belle_tls_crypto_config_t *obj, const char *path); /** * Set the content of the trusted certificate chain * @param[in/out] obj The crypto configuration object to set * @param[in] data The content to the trusted certificate chain data(NULL terminated string) * * @return 0 on success */ BELLESIP_EXPORT int belle_tls_crypto_config_set_root_ca_data(belle_tls_crypto_config_t *obj, const char *data); /** * Set the exception flags to manage exception overriding during peer certificate verification * @param[in/out] obj The crypto configuration object to set * @param[in] flags Flags value to set: * BELLE_TLS_VERIFY_NONE to raise and error on any exception * BELLE_TLS_VERIFY_CN_MISMATCH to ignore Common Name mismatch * BELLE_TLS_VERIFY_ANY_REASON to ignore any exception * * @return 0 on success */ BELLESIP_EXPORT void belle_tls_crypto_config_set_verify_exceptions(belle_tls_crypto_config_t *obj, int flags); /** * Get the exception flags used to manage exception overriding during peer certificate verification * @param[in]i obj The crypto configuration object to set * @return Possible flags value : * BELLE_TLS_VERIFY_NONE to raise and error on any exception * BELLE_TLS_VERIFY_CN_MISMATCH to ignore Common Name mismatch * BELLE_TLS_VERIFY_ANY_REASON to ignore any exception * */ BELLESIP_EXPORT unsigned int belle_tls_crypto_config_get_verify_exceptions(const belle_tls_crypto_config_t *obj); /** * Callback prototype to override certificate check at upper level. * @param user_data the user pointer passed to belle_tls_crypto_config_set_verify_callback() * @param cert the x509 certificate * @param depth depth of certificate in the certificate chain (the callback is called for each certificate of the chain * @param flags i/o parameter containing the error flags reported by the crypto library (BCTBX_CERTIFICATE_VERIFY_* flags). * The application may freely alterate the flags on output, in order to bypass verifications or add new error flags. * The flags MUST be set or unset with bctbx_x509_certificate_set_flag() bctbx_x509_certificate_unset_flag() **/ typedef void (*belle_tls_crypto_config_verify_callback_t)(void *user_data, bctbx_x509_certificate_t *cert , int depth, uint32_t *flags); /** * Set a callback function to call during each TLS handshake in order to override certificate verification. * @param obj the crypto config object * @param cb the application callback * @param cb_data an application data pointer that will be passed to callback when invoked. **/ BELLESIP_EXPORT void belle_tls_crypto_config_set_verify_callback(belle_tls_crypto_config_t *obj, belle_tls_crypto_config_verify_callback_t cb, void *cb_data); /** * Callback prototype to check remote certificate once hanshake is completed (post-check). * @param user_data the user pointer passed to belle_tls_crypto_config_set_postcheck_callback() * @param cert the peer x509 certificate * @return 0 if all is good, -1 otherwise **/ typedef int (*belle_tls_crypto_config_postcheck_callback_t)(void *user_data, const bctbx_x509_certificate_t *cert); /** * Set the post-check callback function executed upon successfull TLS handshake.. * @param obj the crypto config object * @param cb the application callback * @param cb_data an application data pointer that will be passed to callback when invoked. **/ BELLESIP_EXPORT void belle_tls_crypto_config_set_postcheck_callback(belle_tls_crypto_config_t *obj, belle_tls_crypto_config_postcheck_callback_t cb, void *cb_data); /** * Set the pointer to an externally provided ssl configuration for the crypto library * @param[in/out] obj The crypto configuration object to set * @param[in] ssl_config A pointer to an opaque structure which will be provided directly to the crypto library used in bctoolbox. Use with extra care. * This ssl_config structure is responsability of the caller and will not be freed at the connection's end. */ BELLESIP_EXPORT void belle_tls_crypto_config_set_ssl_config(belle_tls_crypto_config_t *obj, void *ssl_config); BELLE_SIP_END_DECLS #endif /* AUTHENTICATION_HELPER_H_ */ belle-sip-5.2.0+dfsg/include/belle-sip/belle-sdp.h000066400000000000000000001226251434613136500216460ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef BELLE_SDP_H_ #define BELLE_SDP_H_ #include "belle-sip/defs.h" #include "belle-sip/list.h" #define BELLE_SDP_CAST(obj,t) BELLE_SIP_CAST(obj,t) BELLE_SIP_BEGIN_DECLS /*************************************************************************************** * Attribute * **************************************************************************************/ typedef struct _belle_sdp_attribute belle_sdp_attribute_t; BELLESIP_EXPORT belle_sdp_attribute_t* belle_sdp_attribute_new(void); BELLESIP_EXPORT belle_sdp_attribute_t* belle_sdp_attribute_parse (const char* attribute); BELLESIP_EXPORT belle_sdp_attribute_t* belle_sdp_attribute_create (const char* name,const char* value); BELLESIP_EXPORT const char* belle_sdp_attribute_get_name(const belle_sdp_attribute_t* attribute); BELLESIP_EXPORT void belle_sdp_attribute_set_name(belle_sdp_attribute_t* attribute, const char* name); BELLESIP_EXPORT const char* belle_sdp_attribute_get_value(belle_sdp_attribute_t* attribute); BELLESIP_EXPORT unsigned int belle_sdp_attribute_has_value(belle_sdp_attribute_t* attribute); #define BELLE_SDP_ATTRIBUTE(t) BELLE_SDP_CAST(t,belle_sdp_attribute_t) #define belle_sdp_attribute_init(obj) /*nothing*/ /*************************************************************************************** * Attributes Holder * **************************************************************************************/ typedef struct _belle_sdp_attribute_holder belle_sdp_attribute_holder_t; BELLESIP_EXPORT belle_sdp_attribute_holder_t* belle_sdp_attribute_holder_new(void); BELLESIP_EXPORT void belle_sdp_attribute_holder_set_attribute(belle_sdp_attribute_holder_t* holder, void* attribute); BELLESIP_EXPORT belle_sdp_attribute_t* belle_sdp_attribute_holder_get_attribute(belle_sdp_attribute_holder_t* holder); /*************************************************************************************** * RAW Attribute * **************************************************************************************/ typedef struct _belle_sdp_raw_attribute belle_sdp_raw_attribute_t; BELLESIP_EXPORT belle_sdp_raw_attribute_t* belle_sdp_raw_attribute_new(void); BELLESIP_EXPORT belle_sdp_raw_attribute_t* belle_sdp_raw_attribute_parse(const char* attribute); BELLESIP_EXPORT belle_sdp_raw_attribute_t* belle_sdp_raw_attribute_create(const char* name, const char* value); BELLESIP_EXPORT void belle_sdp_raw_attribute_set_value(belle_sdp_raw_attribute_t* attribute, const char* value); BELLESIP_EXPORT void belle_sdp_raw_attribute_set_name(belle_sdp_raw_attribute_t* attribute, const char* name); #define BELLE_SDP_RAW_ATTRIBUTE(t) BELLE_SDP_CAST(t,belle_sdp_raw_attribute_t) /*************************************************************************************** * RFC4574 Attributes * **************************************************************************************/ // label typedef struct _belle_sdp_label_attribute belle_sdp_label_attribute_t; BELLESIP_EXPORT belle_sdp_label_attribute_t* belle_sdp_label_attribute_new(void); BELLESIP_EXPORT belle_sdp_label_attribute_t* belle_sdp_label_attribute_parse(const char* attribute); BELLESIP_EXPORT belle_sdp_label_attribute_t* belle_sdp_label_attribute_create(void); BELLESIP_EXPORT const char* belle_sdp_label_attribute_get_pointer(const belle_sdp_label_attribute_t* attribute); BELLESIP_EXPORT void belle_sdp_label_attribute_set_pointer(belle_sdp_label_attribute_t* attribute, const char* pointer); #define BELLE_SDP_LABEL_ATTRIBUTE(t) BELLE_SDP_CAST(t,belle_sdp_label_attribute_t) /*************************************************************************************** * RFC4796 Attributes * **************************************************************************************/ // content typedef struct _belle_sdp_content_attribute belle_sdp_content_attribute_t; BELLESIP_EXPORT belle_sdp_content_attribute_t* belle_sdp_content_attribute_parse(const char* attribute); BELLESIP_EXPORT belle_sdp_content_attribute_t* belle_sdp_content_attribute_new(void); BELLESIP_EXPORT belle_sdp_content_attribute_t* belle_sdp_content_attribute_create(void); BELLESIP_EXPORT void belle_sdp_content_attribute_add_media_tag(belle_sdp_content_attribute_t* attribute, const char* media_tag); BELLESIP_EXPORT belle_sip_list_t* belle_sdp_content_attribute_get_media_tags(belle_sdp_content_attribute_t* attribute); #define BELLE_SDP_CONTENT_ATTRIBUTE(t) BELLE_SDP_CAST(t,belle_sdp_content_attribute_t) /*************************************************************************************** * RFC5939 Attributes * **************************************************************************************/ // csup typedef struct _belle_sdp_csup_attribute belle_sdp_csup_attribute_t; BELLESIP_EXPORT belle_sdp_csup_attribute_t* belle_sdp_csup_attribute_new(void); BELLESIP_EXPORT belle_sdp_csup_attribute_t* belle_sdp_csup_attribute_parse(const char* attribute); BELLESIP_EXPORT belle_sdp_csup_attribute_t* belle_sdp_csup_attribute_create(void); BELLESIP_EXPORT void belle_sdp_csup_attribute_add_option_tag(belle_sdp_csup_attribute_t* attribute, const char* option_tag); BELLESIP_EXPORT belle_sip_list_t* belle_sdp_csup_attribute_get_option_tags(belle_sdp_csup_attribute_t* attribute); #define BELLE_SDP_CSUP_ATTRIBUTE(t) BELLE_SDP_CAST(t,belle_sdp_csup_attribute_t) // creq typedef struct _belle_sdp_creq_attribute belle_sdp_creq_attribute_t; BELLESIP_EXPORT belle_sdp_creq_attribute_t* belle_sdp_creq_attribute_new(void); BELLESIP_EXPORT belle_sdp_creq_attribute_t* belle_sdp_creq_attribute_parse(const char* attribute); BELLESIP_EXPORT belle_sdp_creq_attribute_t* belle_sdp_creq_attribute_create(void); BELLESIP_EXPORT void belle_sdp_creq_attribute_add_option_tag(belle_sdp_creq_attribute_t* attribute, const char* option_tag); BELLESIP_EXPORT belle_sip_list_t* belle_sdp_creq_attribute_get_option_tags(belle_sdp_creq_attribute_t* attribute); #define BELLE_SDP_CREQ_ATTRIBUTE(t) BELLE_SDP_CAST(t,belle_sdp_creq_attribute_t) //tcap typedef struct _belle_sdp_tcap_attribute belle_sdp_tcap_attribute_t; BELLESIP_EXPORT belle_sdp_tcap_attribute_t* belle_sdp_tcap_attribute_new(void); BELLESIP_EXPORT belle_sdp_tcap_attribute_t* belle_sdp_tcap_attribute_parse(const char* attribute); BELLESIP_EXPORT belle_sdp_tcap_attribute_t* belle_sdp_tcap_attribute_create(void); BELLESIP_EXPORT void belle_sdp_tcap_attribute_set_id(belle_sdp_tcap_attribute_t* attribute, int id); BELLESIP_EXPORT int belle_sdp_tcap_attribute_get_id(const belle_sdp_tcap_attribute_t* attribute); BELLESIP_EXPORT void belle_sdp_tcap_attribute_add_proto(belle_sdp_tcap_attribute_t* attribute, const char* proto); BELLESIP_EXPORT belle_sip_list_t* belle_sdp_tcap_attribute_get_protos(belle_sdp_tcap_attribute_t* attribute); #define BELLE_SDP_TCAP_ATTRIBUTE(t) BELLE_SDP_CAST(t,belle_sdp_tcap_attribute_t) // acap typedef struct _belle_sdp_acap_attribute belle_sdp_acap_attribute_t; BELLESIP_EXPORT belle_sdp_acap_attribute_t* belle_sdp_acap_attribute_new(void); BELLESIP_EXPORT belle_sdp_acap_attribute_t* belle_sdp_acap_attribute_parse(const char* attribute); BELLESIP_EXPORT belle_sdp_acap_attribute_t* belle_sdp_acap_attribute_create(void); BELLESIP_EXPORT int belle_sdp_acap_attribute_get_id(const belle_sdp_acap_attribute_t* attribute); BELLESIP_EXPORT void belle_sdp_acap_attribute_set_id(belle_sdp_acap_attribute_t* attribute, int id); BELLESIP_EXPORT const char* belle_sdp_acap_attribute_get_name(const belle_sdp_acap_attribute_t* attribute); BELLESIP_EXPORT void belle_sdp_acap_attribute_set_name(belle_sdp_acap_attribute_t* attribute, const char* name); BELLESIP_EXPORT const char* belle_sdp_acap_attribute_get_value(const belle_sdp_acap_attribute_t* attribute); BELLESIP_EXPORT void belle_sdp_acap_attribute_set_value(belle_sdp_acap_attribute_t* attribute, const char* value); #define BELLE_SDP_ACAP_ATTRIBUTE(t) BELLE_SDP_CAST(t,belle_sdp_acap_attribute_t) // acfg typedef struct _belle_sdp_acfg_attribute belle_sdp_acfg_attribute_t; BELLESIP_EXPORT belle_sdp_acfg_attribute_t* belle_sdp_acfg_attribute_new(void); BELLESIP_EXPORT belle_sdp_acfg_attribute_t* belle_sdp_acfg_attribute_parse(const char* attribute); BELLESIP_EXPORT belle_sdp_acfg_attribute_t* belle_sdp_acfg_attribute_create(void); BELLESIP_EXPORT int belle_sdp_acfg_attribute_get_id(const belle_sdp_acfg_attribute_t* attribute); BELLESIP_EXPORT void belle_sdp_acfg_attribute_set_id(belle_sdp_acfg_attribute_t* attribute, int id); BELLESIP_EXPORT void belle_sdp_acfg_attribute_add_config(belle_sdp_acfg_attribute_t* attribute, const char* config); BELLESIP_EXPORT belle_sip_list_t* belle_sdp_acfg_attribute_get_configs(const belle_sdp_acfg_attribute_t* attribute); #define BELLE_SDP_ACFG_ATTRIBUTE(t) BELLE_SDP_CAST(t,belle_sdp_acfg_attribute_t) // pcfg typedef struct _belle_sdp_pcfg_attribute belle_sdp_pcfg_attribute_t; BELLESIP_EXPORT belle_sdp_pcfg_attribute_t* belle_sdp_pcfg_attribute_new(void); BELLESIP_EXPORT belle_sdp_pcfg_attribute_t* belle_sdp_pcfg_attribute_parse(const char* attribute); BELLESIP_EXPORT belle_sdp_pcfg_attribute_t* belle_sdp_pcfg_attribute_create(void); BELLESIP_EXPORT int belle_sdp_pcfg_attribute_get_id(const belle_sdp_pcfg_attribute_t* attribute); BELLESIP_EXPORT void belle_sdp_pcfg_attribute_set_id(belle_sdp_pcfg_attribute_t* attribute, int id); BELLESIP_EXPORT void belle_sdp_pcfg_attribute_add_config(belle_sdp_pcfg_attribute_t* attribute, const char* config); BELLESIP_EXPORT belle_sip_list_t* belle_sdp_pcfg_attribute_get_configs(const belle_sdp_pcfg_attribute_t* attribute);; #define BELLE_SDP_PCFG_ATTRIBUTE(t) BELLE_SDP_CAST(t,belle_sdp_pcfg_attribute_t) /*************************************************************************************** * RTCP-FB Attribute * **************************************************************************************/ typedef enum _belle_sdp_rtcp_fb_val_type { BELLE_SDP_RTCP_FB_ACK, BELLE_SDP_RTCP_FB_NACK, BELLE_SDP_RTCP_FB_TRR_INT, BELLE_SDP_RTCP_FB_CCM } belle_sdp_rtcp_fb_val_type_t; typedef enum _belle_sdp_rtcp_fb_val_param { BELLE_SDP_RTCP_FB_NONE, BELLE_SDP_RTCP_FB_PLI, BELLE_SDP_RTCP_FB_SLI, BELLE_SDP_RTCP_FB_RPSI, BELLE_SDP_RTCP_FB_APP, BELLE_SDP_RTCP_FB_FIR, BELLE_SDP_RTCP_FB_TMMBR } belle_sdp_rtcp_fb_val_param_t; typedef struct _belle_sdp_rtcp_fb_attribute belle_sdp_rtcp_fb_attribute_t; BELLESIP_EXPORT belle_sdp_rtcp_fb_attribute_t* belle_sdp_rtcp_fb_attribute_new(void); BELLESIP_EXPORT belle_sdp_rtcp_fb_attribute_t* belle_sdp_rtcp_fb_attribute_parse(const char* attribute); BELLESIP_EXPORT belle_sdp_rtcp_fb_attribute_t* belle_sdp_rtcp_fb_attribute_create(void); BELLESIP_EXPORT int8_t belle_sdp_rtcp_fb_attribute_get_id(const belle_sdp_rtcp_fb_attribute_t* attribute); BELLESIP_EXPORT void belle_sdp_rtcp_fb_attribute_set_id(belle_sdp_rtcp_fb_attribute_t* attribute, int8_t id); BELLESIP_EXPORT void belle_sdp_rtcp_fb_attribute_set_raw_id(belle_sdp_rtcp_fb_attribute_t* attribute, const char* value); BELLESIP_EXPORT belle_sdp_rtcp_fb_val_type_t belle_sdp_rtcp_fb_attribute_get_type(const belle_sdp_rtcp_fb_attribute_t* attribute); BELLESIP_EXPORT void belle_sdp_rtcp_fb_attribute_set_type(belle_sdp_rtcp_fb_attribute_t* attribute, belle_sdp_rtcp_fb_val_type_t type); BELLESIP_EXPORT void belle_sdp_rtcp_fb_attribute_set_raw_type(belle_sdp_rtcp_fb_attribute_t* attribute, const char* type); BELLESIP_EXPORT belle_sdp_rtcp_fb_val_param_t belle_sdp_rtcp_fb_attribute_get_param(const belle_sdp_rtcp_fb_attribute_t* attribute); BELLESIP_EXPORT void belle_sdp_rtcp_fb_attribute_set_param(belle_sdp_rtcp_fb_attribute_t* attribute, belle_sdp_rtcp_fb_val_param_t param); BELLESIP_EXPORT void belle_sdp_rtcp_fb_attribute_set_raw_param(belle_sdp_rtcp_fb_attribute_t* attribute, const char* value); BELLESIP_EXPORT uint16_t belle_sdp_rtcp_fb_attribute_get_trr_int(const belle_sdp_rtcp_fb_attribute_t* attribute); BELLESIP_EXPORT void belle_sdp_rtcp_fb_attribute_set_trr_int(belle_sdp_rtcp_fb_attribute_t* attribute, uint16_t milliseconds); BELLESIP_EXPORT void belle_sdp_rtcp_fb_attribute_set_trr_raw(belle_sdp_rtcp_fb_attribute_t* attribute, const char* value); BELLESIP_EXPORT uint32_t belle_sdp_rtcp_fb_attribute_get_smaxpr(const belle_sdp_rtcp_fb_attribute_t* attribute); BELLESIP_EXPORT void belle_sdp_rtcp_fb_attribute_set_smaxpr(belle_sdp_rtcp_fb_attribute_t* attribute, uint32_t smaxpr); #define BELLE_SDP_RTCP_FB_ATTRIBUTE(t) BELLE_SDP_CAST(t,belle_sdp_rtcp_fb_attribute_t) /*************************************************************************************** * RTCP-XR Attribute * **************************************************************************************/ typedef struct _belle_sdp_rtcp_xr_attribute belle_sdp_rtcp_xr_attribute_t; BELLESIP_EXPORT belle_sdp_rtcp_xr_attribute_t* belle_sdp_rtcp_xr_attribute_new(void); BELLESIP_EXPORT belle_sdp_rtcp_xr_attribute_t* belle_sdp_rtcp_xr_attribute_parse(const char* attribute); BELLESIP_EXPORT belle_sdp_rtcp_xr_attribute_t* belle_sdp_rtcp_xr_attribute_create(void); BELLESIP_EXPORT const char* belle_sdp_rtcp_xr_attribute_get_rcvr_rtt_mode(const belle_sdp_rtcp_xr_attribute_t* attribute); BELLESIP_EXPORT void belle_sdp_rtcp_xr_attribute_set_rcvr_rtt_mode(belle_sdp_rtcp_xr_attribute_t* attribute, const char *mode); BELLESIP_EXPORT int belle_sdp_rtcp_xr_attribute_get_rcvr_rtt_max_size(const belle_sdp_rtcp_xr_attribute_t* attribute); BELLESIP_EXPORT void belle_sdp_rtcp_xr_attribute_set_rcvr_rtt_max_size(belle_sdp_rtcp_xr_attribute_t* attribute, int max_size); BELLESIP_EXPORT unsigned int belle_sdp_rtcp_xr_attribute_has_stat_summary(const belle_sdp_rtcp_xr_attribute_t* attribute); BELLESIP_EXPORT void belle_sdp_rtcp_xr_attribute_set_stat_summary(belle_sdp_rtcp_xr_attribute_t* attribute, unsigned int enable); BELLESIP_EXPORT void belle_sdp_rtcp_xr_attribute_enable_stat_summary(belle_sdp_rtcp_xr_attribute_t* attribute, const char* flag); BELLESIP_EXPORT const belle_sip_list_t* belle_sdp_rtcp_xr_attribute_get_stat_summary_flags(const belle_sdp_rtcp_xr_attribute_t* attribute); BELLESIP_EXPORT void belle_sdp_rtcp_xr_attribute_add_stat_summary_flag(belle_sdp_rtcp_xr_attribute_t* attribute, const char* flag); BELLESIP_EXPORT unsigned int belle_sdp_rtcp_xr_attribute_has_voip_metrics(const belle_sdp_rtcp_xr_attribute_t* attribute); BELLESIP_EXPORT void belle_sdp_rtcp_xr_attribute_set_voip_metrics(belle_sdp_rtcp_xr_attribute_t* attribute, unsigned int enable); BELLESIP_EXPORT void belle_sdp_rtcp_xr_attribute_enable_voip_metrics(belle_sdp_rtcp_xr_attribute_t* attribute, const char* flag); #define BELLE_SDP_RTCP_XR_ATTRIBUTE(t) BELLE_SDP_CAST(t,belle_sdp_rtcp_xr_attribute_t) /*************************************************************************************** * Bandwidth * **************************************************************************************/ typedef struct _belle_sdp_bandwidth belle_sdp_bandwidth_t; BELLESIP_EXPORT belle_sdp_bandwidth_t* belle_sdp_bandwidth_new(void); BELLESIP_EXPORT belle_sdp_bandwidth_t* belle_sdp_bandwidth_parse (const char* bandwidth); BELLESIP_EXPORT int belle_sdp_bandwidth_get_value(const belle_sdp_bandwidth_t* attribute); BELLESIP_EXPORT const char* belle_sdp_bandwidth_get_type(const belle_sdp_bandwidth_t* attribute); BELLESIP_EXPORT void belle_sdp_bandwidth_set_value(belle_sdp_bandwidth_t* attribute, int value); BELLESIP_EXPORT void belle_sdp_bandwidth_set_type(belle_sdp_bandwidth_t* attribute, const char* type); #define BELLE_SDP_BANDWIDTH(t) BELLE_SDP_CAST(t,belle_sdp_bandwidth_t) /*************************************************************************************** * Connection * **************************************************************************************/ typedef struct _belle_sdp_connection belle_sdp_connection_t; BELLESIP_EXPORT belle_sdp_connection_t* belle_sdp_connection_new(void); BELLESIP_EXPORT belle_sdp_connection_t* belle_sdp_connection_create(const char* net_type, const char* addr_type, const char* addr); BELLESIP_EXPORT belle_sdp_connection_t* belle_sdp_connection_parse (const char* connection); BELLESIP_EXPORT const char* belle_sdp_connection_get_address(const belle_sdp_connection_t* connection); BELLESIP_EXPORT const char* belle_sdp_connection_get_address_type(const belle_sdp_connection_t* connection); BELLESIP_EXPORT const char* belle_sdp_connection_get_network_type(const belle_sdp_connection_t* connection); BELLESIP_EXPORT int belle_sdp_connection_get_ttl(const belle_sdp_connection_t* connection); BELLESIP_EXPORT int belle_sdp_connection_get_range(const belle_sdp_connection_t* connection); BELLESIP_EXPORT void belle_sdp_connection_set_address(belle_sdp_connection_t* connection, const char* addr); BELLESIP_EXPORT void belle_sdp_connection_set_address_type(belle_sdp_connection_t* connection, const char* type); BELLESIP_EXPORT void belle_sdp_connection_set_network_type(belle_sdp_connection_t* connection, const char* type); BELLESIP_EXPORT void belle_sdp_connection_set_ttl(belle_sdp_connection_t* connection, int ttl); BELLESIP_EXPORT void belle_sdp_connection_set_range(belle_sdp_connection_t* connection, int range); #define BELLE_SDP_CONNECTION(t) BELLE_SDP_CAST(t,belle_sdp_connection_t) /*************************************************************************************** * Email * **************************************************************************************/ typedef struct _belle_sdp_email belle_sdp_email_t; BELLESIP_EXPORT belle_sdp_email_t* belle_sdp_email_new(void); BELLESIP_EXPORT belle_sdp_email_t* belle_sdp_email_parse (const char* email); BELLESIP_EXPORT const char* belle_sdp_email_get_value(const belle_sdp_email_t* email); BELLESIP_EXPORT void belle_sdp_email_set_value(belle_sdp_email_t* email, const char* value); #define BELLE_SDP_EMAIL(t) BELLE_SDP_CAST(t,belle_sdp_email_t) /*************************************************************************************** * Info * **************************************************************************************/ typedef struct _belle_sdp_info belle_sdp_info_t; BELLESIP_EXPORT belle_sdp_info_t* belle_sdp_info_new(void); BELLESIP_EXPORT belle_sdp_info_t* belle_sdp_info_parse (const char* info); BELLESIP_EXPORT const char* belle_sdp_info_get_value(const belle_sdp_info_t* info); BELLESIP_EXPORT void belle_sdp_info_set_value(belle_sdp_info_t* info, const char* value); #define BELLE_SDP_INFO(t) BELLE_SDP_CAST(t,belle_sdp_info_t) /*************************************************************************************** * Key * **************************************************************************************/ //typedef struct _belle_sdp_key belle_sdp_key_t; //belle_sdp_key_t* belle_sdp_key_new(void); //belle_sdp_key_t* belle_sdp_key_parse (const char* key); //const char* belle_sdp_key_get_key(const belle_sdp_key_t* key); //const char* belle_sdp_key_get_method(const belle_sdp_key_t* key); //unsigned int belle_sdp_key_as_key(const belle_sdp_key_t* key); //void belle_sdp_key_set_key(belle_sdp_key_t* key, const char* keyvalue); //void belle_sdp_key_set_method(belle_sdp_key_t* key, const char* method); //#define BELLE_SDP_KEY(t) BELLE_SDP_CAST(t,belle_sdp_key_t); /*************************************************************************************** * Media * **************************************************************************************/ typedef struct _belle_sdp_media belle_sdp_media_t; BELLESIP_EXPORT belle_sdp_media_t* belle_sdp_media_new(void); BELLESIP_EXPORT belle_sdp_media_t* belle_sdp_media_parse (const char* media); BELLESIP_EXPORT belle_sdp_media_t* belle_sdp_media_create(const char* media_type , int media_port , int port_count ,const char* protocol ,belle_sip_list_t* static_media_formats); BELLESIP_EXPORT belle_sip_list_t* belle_sdp_media_get_media_formats(const belle_sdp_media_t* media); BELLESIP_EXPORT const char* belle_sdp_media_get_raw_fmt(const belle_sdp_media_t* media); BELLESIP_EXPORT int belle_sdp_media_get_media_port(const belle_sdp_media_t* media); BELLESIP_EXPORT const char* belle_sdp_media_get_media_type(const belle_sdp_media_t* media); BELLESIP_EXPORT int belle_sdp_media_get_port_count(const belle_sdp_media_t* media); BELLESIP_EXPORT const char* belle_sdp_media_get_protocol(const belle_sdp_media_t* media); BELLESIP_EXPORT void belle_sdp_media_set_media_formats(belle_sdp_media_t* media, belle_sip_list_t* mediaFormats); BELLESIP_EXPORT void belle_sdp_media_set_raw_fmt(belle_sdp_media_t* media, const char* fmt); BELLESIP_EXPORT void belle_sdp_media_media_formats_add(belle_sdp_media_t* media, const char* fmt); BELLESIP_EXPORT void belle_sdp_media_set_media_port(belle_sdp_media_t* media, int port); BELLESIP_EXPORT void belle_sdp_media_set_media_type(belle_sdp_media_t* media, const char* mediaType); BELLESIP_EXPORT void belle_sdp_media_set_port_count(belle_sdp_media_t* media, int port_count); BELLESIP_EXPORT void belle_sdp_media_set_protocol(belle_sdp_media_t* media, const char* protocole); #define BELLE_SDP_MEDIA(t) BELLE_SDP_CAST(t,belle_sdp_media_t) /*************************************************************************************** * mime_parameter * **************************************************************************************/ typedef struct _belle_sdp_mime_parameter belle_sdp_mime_parameter_t; BELLESIP_EXPORT belle_sdp_mime_parameter_t* belle_sdp_mime_parameter_new(void); BELLESIP_EXPORT belle_sdp_mime_parameter_t* belle_sdp_mime_parameter_create(const char* type, int media_format, int rate, int channel_count); BELLESIP_EXPORT int belle_sdp_mime_parameter_get_rate(const belle_sdp_mime_parameter_t* mime_parameter); BELLESIP_EXPORT void belle_sdp_mime_parameter_set_rate(belle_sdp_mime_parameter_t* mime_parameter, int rate); BELLESIP_EXPORT int belle_sdp_mime_parameter_get_channel_count(const belle_sdp_mime_parameter_t* mime_parameter); BELLESIP_EXPORT void belle_sdp_mime_parameter_set_channel_count(belle_sdp_mime_parameter_t* mime_parameter, int count); BELLESIP_EXPORT int belle_sdp_mime_parameter_get_ptime(const belle_sdp_mime_parameter_t* mime_parameter); BELLESIP_EXPORT void belle_sdp_mime_parameter_set_ptime(belle_sdp_mime_parameter_t* mime_parameter, int ptime); BELLESIP_EXPORT int belle_sdp_mime_parameter_get_max_ptime(const belle_sdp_mime_parameter_t* mime_parameter); BELLESIP_EXPORT void belle_sdp_mime_parameter_set_max_ptime(belle_sdp_mime_parameter_t* mime_parameter, int max_ptime); BELLESIP_EXPORT const char* belle_sdp_mime_parameter_get_type(const belle_sdp_mime_parameter_t* mime_parameter); BELLESIP_EXPORT void belle_sdp_mime_parameter_set_type(belle_sdp_mime_parameter_t* mime_parameter,const char* type); BELLESIP_EXPORT int belle_sdp_mime_parameter_get_media_format(const belle_sdp_mime_parameter_t* mime_parameter); BELLESIP_EXPORT void belle_sdp_mime_parameter_set_media_format(belle_sdp_mime_parameter_t* mime_parameter, int format); BELLESIP_EXPORT const char* belle_sdp_mime_parameter_get_parameters(const belle_sdp_mime_parameter_t* mime_parameter); BELLESIP_EXPORT void belle_sdp_mime_parameter_set_parameters(belle_sdp_mime_parameter_t* mime_parameter,const char* parameters); #define BELLE_SDP_MIME_PARAMETER(t) BELLE_SDP_CAST(t,belle_sdp_mime_parameter_t) /*************************************************************************************** * Media Description * **************************************************************************************/ typedef struct _belle_sdp_media_description belle_sdp_media_description_t; BELLESIP_EXPORT belle_sdp_media_description_t* belle_sdp_media_description_new(void); BELLESIP_EXPORT belle_sdp_media_description_t* belle_sdp_media_description_parse (const char* media_description); BELLESIP_EXPORT belle_sdp_media_description_t* belle_sdp_media_description_create(const char* media_type , int media_port , int port_count ,const char* protocol ,belle_sip_list_t* static_media_formats); BELLESIP_EXPORT void belle_sdp_media_description_add_dynamic_payloads(belle_sdp_media_description_t* media_description, belle_sip_list_t* payloadNames, belle_sip_list_t* payloadValues); BELLESIP_EXPORT const char* belle_sdp_media_description_get_attribute_value(const belle_sdp_media_description_t* media_description, const char* name); BELLESIP_EXPORT belle_sdp_attribute_t* belle_sdp_media_description_get_attribute(const belle_sdp_media_description_t* media_description, const char* name); BELLESIP_EXPORT belle_sip_list_t* belle_sdp_media_description_get_attributes(const belle_sdp_media_description_t* media_description); // belle_sdp_media_description_find_attributes_with_name creates a list of attributes with a given name. // The list must be freed after usage BELLESIP_EXPORT belle_sip_list_t * belle_sdp_media_description_find_attributes_with_name(const belle_sdp_media_description_t *media_description, const char* name); BELLESIP_EXPORT int belle_sdp_media_description_get_bandwidth(const belle_sdp_media_description_t* media_description, const char* name); BELLESIP_EXPORT belle_sip_list_t* belle_sdp_media_description_get_bandwidths(const belle_sdp_media_description_t* media_description); BELLESIP_EXPORT belle_sdp_connection_t* belle_sdp_media_description_get_connection(const belle_sdp_media_description_t* media_description); BELLESIP_EXPORT belle_sdp_info_t* belle_sdp_media_description_get_info(const belle_sdp_media_description_t* media_description); BELLESIP_EXPORT belle_sdp_media_t* belle_sdp_media_description_get_media(const belle_sdp_media_description_t* media_description); BELLESIP_EXPORT belle_sip_list_t* belle_sdp_media_description_build_mime_parameters(const belle_sdp_media_description_t* media_description); BELLESIP_EXPORT void belle_sdp_media_description_remove_attribute(belle_sdp_media_description_t* media_description,const char* attribute); BELLESIP_EXPORT void belle_sdp_media_description_remove_bandwidth(belle_sdp_media_description_t* media_description,const char* bandwidth); BELLESIP_EXPORT void belle_sdp_media_description_set_attribute_value(belle_sdp_media_description_t* media_description, const char* name, const char* value); BELLESIP_EXPORT void belle_sdp_media_description_add_attribute(belle_sdp_media_description_t* media_description, belle_sdp_attribute_t* attr); BELLESIP_EXPORT void belle_sdp_media_description_set_attributes(belle_sdp_media_description_t* media_description, belle_sip_list_t* Attributes); BELLESIP_EXPORT void belle_sdp_media_description_set_bandwidth(belle_sdp_media_description_t* media_description, const char* name, int value); BELLESIP_EXPORT void belle_sdp_media_description_add_bandwidth(belle_sdp_media_description_t* media_description, belle_sdp_bandwidth_t* bandwidth); BELLESIP_EXPORT void belle_sdp_media_description_set_bandwidths(belle_sdp_media_description_t* media_description, belle_sip_list_t* bandwidths); BELLESIP_EXPORT void belle_sdp_media_description_set_connection(belle_sdp_media_description_t* media_description, belle_sdp_connection_t* conn); BELLESIP_EXPORT void belle_sdp_media_description_set_info(belle_sdp_media_description_t* media_description,belle_sdp_info_t* i); BELLESIP_EXPORT void belle_sdp_media_description_set_media(belle_sdp_media_description_t* media_description, belle_sdp_media_t* media); BELLESIP_EXPORT void belle_sdp_media_description_append_values_from_mime_parameter(belle_sdp_media_description_t* media_description, const belle_sdp_mime_parameter_t* mime_parameter); BELLESIP_EXPORT void belle_sdp_media_description_add_attribute_holder(belle_sdp_media_description_t* media_description, belle_sdp_attribute_holder_t *holder); #define BELLE_SDP_MEDIA_DESCRIPTION(t) BELLE_SDP_CAST(t,belle_sdp_media_description_t) /*************************************************************************************** * Origin * **************************************************************************************/ typedef struct _belle_sdp_origin belle_sdp_origin_t; BELLESIP_EXPORT belle_sdp_origin_t* belle_sdp_origin_new(void); BELLESIP_EXPORT belle_sdp_origin_t* belle_sdp_origin_parse (const char* origin); BELLESIP_EXPORT belle_sdp_origin_t* belle_sdp_origin_create(const char* user_name , unsigned int session_id , unsigned int session_version , const char* network_type , const char* addr_type , const char* address); BELLESIP_EXPORT const char* belle_sdp_origin_get_address(const belle_sdp_origin_t* origin); BELLESIP_EXPORT const char* belle_sdp_origin_get_address_type(const belle_sdp_origin_t* origin); BELLESIP_EXPORT const char* belle_sdp_origin_get_network_type(const belle_sdp_origin_t* origin); BELLESIP_EXPORT unsigned int belle_sdp_origin_get_session_id(const belle_sdp_origin_t* origin); BELLESIP_EXPORT unsigned int belle_sdp_origin_get_session_version(const belle_sdp_origin_t* origin); BELLESIP_EXPORT const char* belle_sdp_origin_get_username(const belle_sdp_origin_t* origin); BELLESIP_EXPORT void belle_sdp_origin_set_address(belle_sdp_origin_t* origin, const char* address); BELLESIP_EXPORT void belle_sdp_origin_set_address_type(belle_sdp_origin_t* origin, const char* address); BELLESIP_EXPORT void belle_sdp_origin_set_network_type(belle_sdp_origin_t* origin, const char* network_type); BELLESIP_EXPORT void belle_sdp_origin_set_session_id(belle_sdp_origin_t* origin, unsigned int session_id); BELLESIP_EXPORT void belle_sdp_origin_set_session_version(belle_sdp_origin_t* origin, unsigned int version); BELLESIP_EXPORT void belle_sdp_origin_set_username(belle_sdp_origin_t* origin, const char* username); #define BELLE_SDP_ORIGIN(t) BELLE_SDP_CAST(t,belle_sdp_origin_t) /*************************************************************************************** * Phone * **************************************************************************************/ typedef struct _belle_sdp_phone belle_sdp_phone_t; BELLESIP_EXPORT belle_sdp_phone_t* belle_sdp_phone_new(void); BELLESIP_EXPORT belle_sdp_phone_t* belle_sdp_phone_parse (const char* phone); BELLESIP_EXPORT const char* belle_sdp_phone_get_value(const belle_sdp_phone_t* phone); BELLESIP_EXPORT void belle_sdp_phone_set_value(belle_sdp_phone_t* phone, const char* value); #define BELLE_SDP_PHONE(t) BELLE_SDP_CAST(t,belle_sdp_phone_t) /*************************************************************************************** * Repeat time * **************************************************************************************/ typedef struct _belle_sdp_repeate_time belle_sdp_repeate_time_t; BELLESIP_EXPORT belle_sdp_repeate_time_t* belle_sdp_repeate_time_new(void); BELLESIP_EXPORT belle_sdp_repeate_time_t* belle_sdp_repeate_time_parse (const char* repeate_time); BELLESIP_EXPORT const char* belle_sdp_repeate_time_get_value(const belle_sdp_repeate_time_t* repeate_time); BELLESIP_EXPORT void belle_sdp_repeate_time_set_value(belle_sdp_repeate_time_t* repeate_time, const char* value); #define BELLE_SDP_REPEATE_TIME(t) BELLE_SDP_CAST(t,belle_sdp_repeate_time_t) /*************************************************************************************** * Session Name * **************************************************************************************/ typedef struct _belle_sdp_session_name belle_sdp_session_name_t; BELLESIP_EXPORT belle_sdp_session_name_t* belle_sdp_session_name_new(void); BELLESIP_EXPORT belle_sdp_session_name_t* belle_sdp_session_name_create (const char* name); BELLESIP_EXPORT const char* belle_sdp_session_name_get_value(const belle_sdp_session_name_t* session_name); BELLESIP_EXPORT void belle_sdp_session_name_set_value(belle_sdp_session_name_t* session_name, const char* value); #define BELLE_SDP_SESSION_NAME(t) BELLE_SDP_CAST(t,belle_sdp_session_name_t) /*************************************************************************************** * Time * **************************************************************************************/ typedef struct _belle_sdp_time belle_sdp_time_t; BELLESIP_EXPORT belle_sdp_time_t* belle_sdp_time_new(void); BELLESIP_EXPORT belle_sdp_time_t* belle_sdp_time_parse (const char* time); BELLESIP_EXPORT long long belle_sdp_time_get_start(const belle_sdp_time_t* time); BELLESIP_EXPORT long long belle_sdp_time_get_stop(const belle_sdp_time_t* time); BELLESIP_EXPORT void belle_sdp_time_set_start(belle_sdp_time_t* time, long long value); BELLESIP_EXPORT void belle_sdp_time_set_stop(belle_sdp_time_t* time, long long value); #define BELLE_SDP_TIME(t) BELLE_SDP_CAST(t,belle_sdp_time_t) /*************************************************************************************** * Time description * **************************************************************************************/ typedef struct _belle_sdp_time_description belle_sdp_time_description_t; BELLESIP_EXPORT belle_sdp_time_description_t* belle_sdp_time_description_new(void); BELLESIP_EXPORT belle_sdp_time_description_t* belle_sdp_time_description_parse (const char* time_description); BELLESIP_EXPORT belle_sdp_time_description_t* belle_sdp_time_description_create (long long start, long long stop); BELLESIP_EXPORT belle_sip_list_t* belle_sdp_time_description_get_repeate_times(const belle_sdp_time_description_t* time_description); BELLESIP_EXPORT belle_sdp_time_t* belle_sdp_time_description_get_time(const belle_sdp_time_description_t* time_description); BELLESIP_EXPORT void belle_sdp_time_description_set_repeate_times(belle_sdp_time_description_t* time_description, belle_sip_list_t* times); BELLESIP_EXPORT void belle_sdp_time_description_set_time(belle_sdp_time_description_t* time_description, belle_sdp_time_t* times); #define BELLE_SDP_TIME_DESCRIPTION(t) BELLE_SDP_CAST(t,belle_sdp_time_description_t) /*************************************************************************************** * URI * **************************************************************************************/ typedef struct _belle_sdp_uri belle_sdp_uri_t; BELLESIP_EXPORT belle_sdp_uri_t* belle_sdp_uri_new(void); BELLESIP_EXPORT belle_sdp_uri_t* belle_sdp_uri_parse (const char* uri); BELLESIP_EXPORT const char* belle_sdp_uri_get_value(const belle_sdp_uri_t* uri); BELLESIP_EXPORT void belle_sdp_uri_set_value(belle_sdp_uri_t* uri, const char* value); #define BELLE_SDP_URI(t) BELLE_SDP_CAST(t,belle_sdp_uri_t) /*************************************************************************************** * Version * **************************************************************************************/ typedef struct _belle_sdp_version belle_sdp_version_t; belle_sdp_version_t* belle_sdp_version_new(void); BELLESIP_EXPORT belle_sdp_version_t* belle_sdp_version_create(int version); BELLESIP_EXPORT int belle_sdp_version_get_version(const belle_sdp_version_t* version); BELLESIP_EXPORT void belle_sdp_version_set_version(belle_sdp_version_t* version, int value); #define BELLE_SDP_VERSION(t) BELLE_SDP_CAST(t,belle_sdp_version_t) /*************************************************************************************** * Session Description * **************************************************************************************/ typedef struct _belle_sdp_session_description belle_sdp_session_description_t; BELLESIP_EXPORT belle_sdp_session_description_t* belle_sdp_session_description_new(void); BELLESIP_EXPORT belle_sdp_session_description_t* belle_sdp_session_description_parse (const char* session_description); BELLESIP_EXPORT belle_sip_list_t * belle_sdp_session_description_get_attributes(const belle_sdp_session_description_t *session_description); BELLESIP_EXPORT const char* belle_sdp_session_description_get_attribute_value(const belle_sdp_session_description_t* session_description, const char* name); BELLESIP_EXPORT const belle_sdp_attribute_t* belle_sdp_session_description_get_attribute(const belle_sdp_session_description_t* session_description, const char* name); // belle_sdp_session_description_find_attributes_with_name creates a list of attributes with a given name. // The list must be freed after usage BELLESIP_EXPORT belle_sip_list_t * belle_sdp_session_description_find_attributes_with_name(const belle_sdp_session_description_t *session_description, const char* name); BELLESIP_EXPORT int belle_sdp_session_description_get_bandwidth(const belle_sdp_session_description_t* session_description, const char* name); BELLESIP_EXPORT belle_sip_list_t* belle_sdp_session_description_get_bandwidths(const belle_sdp_session_description_t* session_description); BELLESIP_EXPORT belle_sdp_connection_t* belle_sdp_session_description_get_connection(const belle_sdp_session_description_t* session_description); BELLESIP_EXPORT belle_sip_list_t* belle_sdp_session_description_get_emails(const belle_sdp_session_description_t* session_description); BELLESIP_EXPORT belle_sdp_info_t* belle_sdp_session_description_get_info(const belle_sdp_session_description_t* session_description); BELLESIP_EXPORT belle_sip_list_t* belle_sdp_session_description_get_media_descriptions(const belle_sdp_session_description_t* session_description); BELLESIP_EXPORT belle_sdp_origin_t* belle_sdp_session_description_get_origin(const belle_sdp_session_description_t* session_description); BELLESIP_EXPORT belle_sip_list_t* belle_sdp_session_description_get_phones(const belle_sdp_session_description_t* session_description); BELLESIP_EXPORT belle_sdp_session_name_t* belle_sdp_session_description_get_session_name(const belle_sdp_session_description_t* session_description); BELLESIP_EXPORT belle_sip_list_t* belle_sdp_session_description_get_time_descriptions(const belle_sdp_session_description_t* session_description); BELLESIP_EXPORT belle_sdp_uri_t* belle_sdp_session_description_get_uri(const belle_sdp_session_description_t* session_description); BELLESIP_EXPORT belle_sdp_version_t* belle_sdp_session_description_get_version(const belle_sdp_session_description_t* session_description); BELLESIP_EXPORT belle_sdp_uri_t* belle_sdp_session_description_get_zone_adjustments(const belle_sdp_session_description_t* session_description); BELLESIP_EXPORT void belle_sdp_session_description_remove_attribute(belle_sdp_session_description_t* session_description, const char* name); BELLESIP_EXPORT void belle_sdp_session_description_remove_bandwidth(belle_sdp_session_description_t* session_description, const char* name); BELLESIP_EXPORT void belle_sdp_session_description_set_attribute_value(belle_sdp_session_description_t* session_description, const char* name, const char* value); BELLESIP_EXPORT void belle_sdp_session_description_add_attribute(belle_sdp_session_description_t* session_description, belle_sdp_attribute_t* attribute); BELLESIP_EXPORT void belle_sdp_session_description_set_attributes(belle_sdp_session_description_t* session_description, belle_sip_list_t* Attributes); BELLESIP_EXPORT void belle_sdp_session_description_set_bandwidth(belle_sdp_session_description_t* session_description, const char* name, int value); BELLESIP_EXPORT void belle_sdp_session_description_set_bandwidths(belle_sdp_session_description_t* session_description, belle_sip_list_t* bandwidths); BELLESIP_EXPORT void belle_sdp_session_description_add_bandwidth(belle_sdp_session_description_t* session_description, belle_sdp_bandwidth_t* bandwidth); BELLESIP_EXPORT void belle_sdp_session_description_set_connection(belle_sdp_session_description_t* session_description, belle_sdp_connection_t* conn); BELLESIP_EXPORT void belle_sdp_session_description_set_emails(belle_sdp_session_description_t* session_description, belle_sip_list_t* emails); BELLESIP_EXPORT void belle_sdp_session_description_set_info(belle_sdp_session_description_t* session_description, belle_sdp_info_t* i); BELLESIP_EXPORT void belle_sdp_session_description_set_media_descriptions(belle_sdp_session_description_t* session_description, belle_sip_list_t* mediaDescriptions); BELLESIP_EXPORT void belle_sdp_session_description_add_media_description(belle_sdp_session_description_t* session_description, belle_sdp_media_description_t* media_description); BELLESIP_EXPORT void belle_sdp_session_description_set_origin(belle_sdp_session_description_t* session_description, belle_sdp_origin_t* origin); BELLESIP_EXPORT void belle_sdp_session_description_set_phones(belle_sdp_session_description_t* session_description, belle_sip_list_t* phones); BELLESIP_EXPORT void belle_sdp_session_description_set_session_name(belle_sdp_session_description_t* session_description, belle_sdp_session_name_t* sessionName); BELLESIP_EXPORT void belle_sdp_session_description_set_time_descriptions(belle_sdp_session_description_t* session_description, belle_sip_list_t* times); BELLESIP_EXPORT void belle_sdp_session_description_set_time_description(belle_sdp_session_description_t* session_description, belle_sdp_time_description_t* time_desc); BELLESIP_EXPORT void belle_sdp_session_description_set_uri(belle_sdp_session_description_t* session_description, belle_sdp_uri_t* uri); BELLESIP_EXPORT void belle_sdp_session_description_set_version(belle_sdp_session_description_t* session_description, belle_sdp_version_t* v); BELLESIP_EXPORT void belle_sdp_session_description_set_zone_adjustments(belle_sdp_session_description_t* session_description, belle_sdp_uri_t* zoneAdjustments); BELLESIP_EXPORT void belle_sdp_session_description_add_attribute_holder(belle_sdp_session_description_t* session_description, belle_sdp_attribute_holder_t *holder); #define BELLE_SDP_SESSION_DESCRIPTION(t) BELLE_SDP_CAST(t,belle_sdp_session_description_t) BELLE_SIP_END_DECLS #endif /* BELLE_SDP_H_ */ belle-sip-5.2.0+dfsg/include/belle-sip/belle-sip.h000066400000000000000000000034221434613136500216440ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef BELLE_SIP_H #define BELLE_SIP_H #include "belle-sip/types.h" #include "belle-sip/utils.h" #include "belle-sip/list.h" #include "belle-sip/listener.h" #include "belle-sip/mainloop.h" #include "belle-sip/sip-uri.h" #include "belle-sip/headers.h" #include "belle-sip/parameters.h" #include "belle-sip/message.h" #include "belle-sip/refresher.h" #include "belle-sip/transaction.h" #include "belle-sip/dialog.h" #include "belle-sip/sipstack.h" #include "belle-sip/resolver.h" #include "belle-sip/listeningpoint.h" #include "belle-sip/provider.h" #include "belle-sip/auth-helper.h" #include "belle-sip/generic-uri.h" #include "belle-sip/http-listener.h" #include "belle-sip/http-provider.h" #include "belle-sip/http-listener.h" #include "belle-sip/http-message.h" #include "belle-sip/belle-sdp.h" #include "belle-sip/bodyhandler.h" #include "belle-sip/mdns_register.h" #ifdef __ANDROID__ #include "belle-sip/wakelock.h" #endif #define BELLE_SIP_POINTER_TO_INT(p) ((int)(intptr_t)(p)) #define BELLE_SIP_INT_TO_POINTER(i) ((void*)(intptr_t)(i)) #endif belle-sip-5.2.0+dfsg/include/belle-sip/bodyhandler.h000066400000000000000000000164461434613136500222750ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef belle_sip_body_handler_h #define belle_sip_body_handler_h BELLE_SIP_BEGIN_DECLS #define BELLE_SIP_BODY_HANDLER(obj) BELLE_SIP_CAST(obj,belle_sip_body_handler_t) /* * Body handler base class. **/ typedef void (*belle_sip_body_handler_progress_callback_t)(belle_sip_body_handler_t *obj, belle_sip_message_t *msg, void *user_data, size_t transfered, size_t expected_total); BELLESIP_EXPORT void belle_sip_body_handler_add_header(belle_sip_body_handler_t *obj, belle_sip_header_t *header); BELLESIP_EXPORT void belle_sip_body_handler_remove_header_from_ptr(belle_sip_body_handler_t *obj, belle_sip_header_t *header); BELLESIP_EXPORT const belle_sip_list_t* belle_sip_body_handler_get_headers(const belle_sip_body_handler_t *obj); BELLESIP_EXPORT size_t belle_sip_body_handler_get_size(const belle_sip_body_handler_t *obj); BELLESIP_EXPORT void belle_sip_body_handler_set_size(belle_sip_body_handler_t *obj, size_t size); BELLESIP_EXPORT size_t belle_sip_body_handler_get_transfered_size(const belle_sip_body_handler_t *obj); /* * body handler that read/write from a memory buffer. **/ #define BELLE_SIP_MEMORY_BODY_HANDLER(obj) BELLE_SIP_CAST(obj,belle_sip_memory_body_handler_t) BELLESIP_EXPORT belle_sip_memory_body_handler_t *belle_sip_memory_body_handler_new(belle_sip_body_handler_progress_callback_t progress_cb, void *data); BELLESIP_EXPORT belle_sip_memory_body_handler_t *belle_sip_memory_body_handler_new_copy_from_buffer(const void *buffer, size_t bufsize, belle_sip_body_handler_progress_callback_t cb, void *user_data); BELLESIP_EXPORT belle_sip_memory_body_handler_t *belle_sip_memory_body_handler_new_from_buffer(void *buffer, size_t bufsize, belle_sip_body_handler_progress_callback_t cb, void *user_data); BELLESIP_EXPORT void *belle_sip_memory_body_handler_get_buffer(const belle_sip_memory_body_handler_t *obj); BELLESIP_EXPORT void belle_sip_memory_body_handler_set_buffer(belle_sip_memory_body_handler_t *obj, void *buffer); BELLESIP_EXPORT int belle_sip_memory_body_handler_apply_encoding(belle_sip_memory_body_handler_t *obj, const char *encoding); BELLESIP_EXPORT int belle_sip_memory_body_handler_unapply_encoding(belle_sip_memory_body_handler_t *obj, const char *encoding); /* * body handler that get/puts data from application. **/ #define BELLE_SIP_USER_BODY_HANDLER(obj) BELLE_SIP_CAST(obj,belle_sip_user_body_handler_t) typedef void (*belle_sip_user_body_handler_start_callback_t)(belle_sip_user_body_handler_t *obj, void *user_data); typedef void (*belle_sip_user_body_handler_recv_callback_t)(belle_sip_user_body_handler_t *obj, belle_sip_message_t *msg, void *user_data, size_t offset, uint8_t* buffer, size_t size); typedef int (*belle_sip_user_body_handler_send_callback_t)(belle_sip_user_body_handler_t *obj, belle_sip_message_t *msg, void *user_data, size_t offset, uint8_t* buffer, size_t *size); typedef void (*belle_sip_user_body_handler_stop_callback_t)(belle_sip_user_body_handler_t *obj, void *user_data); BELLESIP_EXPORT belle_sip_user_body_handler_t *belle_sip_user_body_handler_new( size_t total_size, belle_sip_body_handler_progress_callback_t progress_cb, belle_sip_user_body_handler_start_callback_t start_cb, belle_sip_user_body_handler_recv_callback_t recv_cb, belle_sip_user_body_handler_send_callback_t send_cb, belle_sip_user_body_handler_stop_callback_t stop_cb, void *data); /** * @brief Buffering user body handler creation * Buffering file bodyhandler will buffer the received chunks to deliver only modulo(buffer_size) chunks. * The bufferized part, if any, is prepended to the next chunk, * what remains in buffer when the end function is called is delivered through a last call to rcv_chunk * The original purpose of this is to be able to deliver modulo(16) size chunks to the file transfer decryption function */ BELLESIP_EXPORT belle_sip_user_body_handler_t *belle_sip_buffering_user_body_handler_new( size_t total_size, size_t buffer_size, belle_sip_body_handler_progress_callback_t progress_cb, belle_sip_user_body_handler_start_callback_t start_cb, belle_sip_user_body_handler_recv_callback_t recv_cb, belle_sip_user_body_handler_send_callback_t send_cb, belle_sip_user_body_handler_stop_callback_t stop_cb, void *data); /** * Body handler that gets/puts data from/to a file. **/ #define BELLE_SIP_FILE_BODY_HANDLER(obj) BELLE_SIP_CAST(obj, belle_sip_file_body_handler_t) BELLESIP_EXPORT belle_sip_file_body_handler_t *belle_sip_file_body_handler_new(const char *filepath, belle_sip_body_handler_progress_callback_t progress_cb, void *data); /** * @brief Buffering file body handler creation * Buffering file bodyhandler will buffer the received chunks to deliver only modulo(buffer_size) chunks. * The bufferized part, if any, is prepended to the next chunk, * what remains in buffer when the end function is called is delivered through a last call to rcv_chunk * The original purpose of this is to be able to deliver modulo(16) size chunks to the file transfer decryption function */ BELLESIP_EXPORT belle_sip_file_body_handler_t *belle_sip_buffering_file_body_handler_new(const char *filepath, const size_t buffer_size, belle_sip_body_handler_progress_callback_t progress_cb, void *data); BELLESIP_EXPORT size_t belle_sip_file_body_handler_get_file_size(belle_sip_file_body_handler_t *file_bh); BELLESIP_EXPORT void belle_sip_file_body_handler_set_user_body_handler(belle_sip_file_body_handler_t *file_bh, belle_sip_user_body_handler_t *user_bh); /* * Multipart body handler */ #define BELLE_SIP_MULTIPART_BODY_HANDLER(obj) BELLE_SIP_CAST(obj,belle_sip_multipart_body_handler_t) BELLESIP_EXPORT const char *belle_sip_multipart_body_handler_get_boundary(const belle_sip_multipart_body_handler_t *obj); BELLESIP_EXPORT belle_sip_multipart_body_handler_t *belle_sip_multipart_body_handler_new(belle_sip_body_handler_progress_callback_t progress_cb, void *data, belle_sip_body_handler_t *first_part, const char *boundary); BELLESIP_EXPORT belle_sip_multipart_body_handler_t *belle_sip_multipart_body_handler_new_from_buffer(const void *buffer, size_t bufsize, const char *boundary); BELLESIP_EXPORT void belle_sip_multipart_body_handler_add_part(belle_sip_multipart_body_handler_t *obj, belle_sip_body_handler_t *part); BELLESIP_EXPORT const belle_sip_list_t* belle_sip_multipart_body_handler_get_parts(const belle_sip_multipart_body_handler_t *obj); /* *multipar body in sens of rfc2387 */ BELLESIP_EXPORT unsigned int belle_sip_multipart_body_handler_is_related(const belle_sip_multipart_body_handler_t *obj); BELLESIP_EXPORT void belle_sip_multipart_body_handler_set_related(belle_sip_multipart_body_handler_t *obj, unsigned int yesno); BELLE_SIP_END_DECLS #endif belle-sip-5.2.0+dfsg/include/belle-sip/defs.h000066400000000000000000000032301434613136500207060ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef BELLE_SIP_DEFS_H #define BELLE_SIP_DEFS_H #ifdef __cplusplus #define BELLE_SIP_BEGIN_DECLS extern "C"{ #define BELLE_SIP_END_DECLS } #else #define BELLE_SIP_BEGIN_DECLS #define BELLE_SIP_END_DECLS #endif #ifdef _MSC_VER #define BELLESIP_INLINE __inline typedef signed char int8_t; typedef unsigned char uint8_t; typedef __int16 int16_t; typedef unsigned __int16 uint16_t; typedef __int32 int32_t; typedef unsigned __int32 uint32_t; typedef __int64 int64_t; typedef unsigned __int64 uint64_t; #else #include #define BELLESIP_INLINE inline #endif #ifdef _MSC_VER #ifdef BELLESIP_STATIC #define BELLESIP_EXPORT #else #ifdef BELLESIP_EXPORTS #define BELLESIP_EXPORT __declspec(dllexport) #else #define BELLESIP_EXPORT __declspec(dllimport) #endif #endif #else #define BELLESIP_EXPORT #endif #define BELLESIP_UNUSED(a) (void)a; #undef TRUE #define TRUE 1 #undef FALSE #define FALSE 0 #endif belle-sip-5.2.0+dfsg/include/belle-sip/dialog.h000066400000000000000000000150331434613136500212300ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef belle_sip_dialog_h #define belle_sip_dialog_h enum belle_sip_dialog_state{ BELLE_SIP_DIALOG_NULL, BELLE_SIP_DIALOG_EARLY, BELLE_SIP_DIALOG_CONFIRMED, BELLE_SIP_DIALOG_TERMINATED }; typedef enum belle_sip_dialog_state belle_sip_dialog_state_t; enum belle_sip_dialog_termination_cause{ BELLE_SIP_DIALOG_TERMINATION_CAUSE_NORMAL, BELLE_SIP_DIALOG_TERMINATION_CAUSE_ABORT_NO_ACK }; typedef enum belle_sip_dialog_termination_cause belle_sip_dialog_termination_cause_t; BELLE_SIP_BEGIN_DECLS BELLESIP_EXPORT const char* belle_sip_dialog_state_to_string(const belle_sip_dialog_state_t state); BELLESIP_EXPORT belle_sip_request_t *belle_sip_dialog_create_ack(belle_sip_dialog_t *dialog, unsigned int cseq); BELLESIP_EXPORT bool_t belle_sip_dialog_can_create_asynchronous_request(belle_sip_dialog_t *obj, const char *method); BELLESIP_EXPORT bool_t belle_sip_dialog_can_create_synchronous_request(belle_sip_dialog_t *obj, const char *method); /** * Create a request part of this dialog. * @param dialog dialog associated to the request * @param method method of the request **/ BELLESIP_EXPORT belle_sip_request_t *belle_sip_dialog_create_request(belle_sip_dialog_t *dialog, const char *method); /** * Create a request within a dialog keeping non system header from an initial request. This function is very useful to resend request after expiration or chalenge. * @param obj dialog associated to the request * @param initial_req, all headers + body are re-used from this request except: Via,From, To, Allows, CSeq, Call-ID, Max-Forwards * */ BELLESIP_EXPORT belle_sip_request_t * belle_sip_dialog_create_request_from(belle_sip_dialog_t *obj, const belle_sip_request_t *initial_req); /** * Create a new request part of this dialog. If dialog is busy (pending transaction), the request can be created anyway and will be sent by the transaction * when the dialog becomes available. * @param obj dialog associated to the request * @param method method of the request **/ BELLESIP_EXPORT belle_sip_request_t * belle_sip_dialog_create_queued_request(belle_sip_dialog_t *obj, const char *method); /** * Create a new request part of this dialog keeping non system header from an initial request. If dialog is busy (pending transaction), the request can be created anyway and will be sent by the transaction * when the dialog becomes available. * @param obj dialog associated to the request * @param initial_req, all headers + body are re-used from this request except: Via,From, To, Allows, CSeq, Call-ID, Max-Forwards **/ BELLESIP_EXPORT belle_sip_request_t *belle_sip_dialog_create_queued_request_from(belle_sip_dialog_t *obj, const belle_sip_request_t *initial_req); BELLESIP_EXPORT void belle_sip_dialog_delete(belle_sip_dialog_t *dialog); BELLESIP_EXPORT void *belle_sip_dialog_get_application_data(const belle_sip_dialog_t *dialog); BELLESIP_EXPORT void belle_sip_dialog_set_application_data(belle_sip_dialog_t *dialog, void *data); BELLESIP_EXPORT const belle_sip_header_call_id_t *belle_sip_dialog_get_call_id(const belle_sip_dialog_t *dialog); BELLESIP_EXPORT const belle_sip_header_address_t *belle_sip_dialog_get_local_party(const belle_sip_dialog_t *dialog); BELLESIP_EXPORT const belle_sip_header_address_t *belle_sip_dialog_get_remote_party(const belle_sip_dialog_t *dialog); /** * get the value of the last cseq used to issue a request * @return local cseq **/ BELLESIP_EXPORT unsigned int belle_sip_dialog_get_local_seq_number(const belle_sip_dialog_t *dialog); BELLESIP_EXPORT unsigned int belle_sip_dialog_get_remote_seq_number(const belle_sip_dialog_t *dialog); BELLESIP_EXPORT const char *belle_sip_dialog_get_local_tag(const belle_sip_dialog_t *dialog); BELLESIP_EXPORT const char *belle_sip_dialog_get_remote_tag(const belle_sip_dialog_t *dialog); BELLESIP_EXPORT const belle_sip_header_address_t *belle_sip_dialog_get_remote_target(belle_sip_dialog_t *dialog); BELLESIP_EXPORT const belle_sip_list_t* belle_sip_dialog_get_route_set(belle_sip_dialog_t *dialog); BELLESIP_EXPORT belle_sip_dialog_state_t belle_sip_dialog_get_state(const belle_sip_dialog_t *dialog); /** * return the dialog state before last transition. Can be useful to detect early aborted dialogs * @param dialog * @returns state **/ BELLESIP_EXPORT belle_sip_dialog_state_t belle_sip_dialog_get_previous_state(const belle_sip_dialog_t *dialog); BELLESIP_EXPORT int belle_sip_dialog_is_server(const belle_sip_dialog_t *dialog); BELLESIP_EXPORT int belle_sip_dialog_is_secure(const belle_sip_dialog_t *dialog); BELLESIP_EXPORT void belle_sip_dialog_send_ack(belle_sip_dialog_t *dialog, belle_sip_request_t *request); BELLESIP_EXPORT void belle_sip_dialog_terminate_on_bye(belle_sip_dialog_t *dialog, int val); /** * Give access to the last transaction processed by a dialog. Can be useful to get reason code for dialog terminated before reaching established state * @param dialog * @return last transaction */ BELLESIP_EXPORT belle_sip_transaction_t* belle_sip_dialog_get_last_transaction(const belle_sip_dialog_t *dialog); BELLESIP_EXPORT int belle_sip_dialog_request_pending(const belle_sip_dialog_t *dialog); BELLESIP_EXPORT int belle_sip_dialog_expired(const belle_sip_dialog_t *dialog); BELLESIP_EXPORT int belle_sip_dialog_get_request_retry_timeout(const belle_sip_dialog_t *dialog); /*for debugging purpose only, allow to disable checking for pending transaction*/ BELLESIP_EXPORT int belle_sip_dialog_pending_trans_checking_enabled( const belle_sip_dialog_t *dialog) ; BELLESIP_EXPORT int belle_sip_dialog_enable_pending_trans_checking(belle_sip_dialog_t *dialog, int value) ; BELLESIP_EXPORT belle_sip_dialog_termination_cause_t belle_sip_dialog_get_termination_cause(const belle_sip_dialog_t *dialog); /*for testing purposes only*/ BELLESIP_EXPORT void belle_sip_dialog_set_simulate_lost_ack_enabled(belle_sip_dialog_t *dialog, int enable); BELLE_SIP_END_DECLS #endif belle-sip-5.2.0+dfsg/include/belle-sip/dict.h000066400000000000000000000117171434613136500207210ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DICT_H #define DICT_H #ifndef _WIN32 #include #endif #include "belle-sip/object.h" BELLE_SIP_BEGIN_DECLS typedef struct belle_sip_dict belle_sip_dict_t; #define BELLE_SIP_DICT(obj) BELLE_SIP_CAST(obj,belle_sip_dict_t) /** * @brief belle_sip_dict_create * @return an instance of a belle_sip_dict_t object. * @note The object is not owned by default. * @note all belle_sip_dict_set_* functions will overwrite existing values. */ BELLESIP_EXPORT belle_sip_dict_t* belle_sip_dict_create(void); /** * @brief belle_sip_dict_set_int stores an integer into the dictionary * @param obj the dictionary instance * @param key the name of the integer to store * @param value value to store */ BELLESIP_EXPORT void belle_sip_dict_set_int(belle_sip_dict_t* obj, const char* key, int value); /** * @brief belle_sip_dict_get_int retrieves an integer from the dictionary * @param obj the dictionary instance * @param key name of the integer to retrieve * @param default_value value to return if the key is not found * @return the searched integer if the key exists, default_value if not found */ BELLESIP_EXPORT int belle_sip_dict_get_int(belle_sip_dict_t* obj, const char* key, int default_value); /** * @brief belle_sip_dict_set_string stores a string into the dictionary * @param obj the dictionary instance * @param key the name of the string to store * @param value value to store */ BELLESIP_EXPORT void belle_sip_dict_set_string(belle_sip_dict_t* obj, const char* key, const char*value); /** * @brief belle_sip_dict_get_string retrieves a string from the dictionary * @param obj the dictionary instance * @param key the name of the string to retrieve * @param default_value * @return the searched string if the key exists, default_value if not found */ BELLESIP_EXPORT const char* belle_sip_dict_get_string(belle_sip_dict_t* obj, const char* key, const char* default_value); /** * @brief belle_sip_dict_set_int64 stores an int64 in the dictionary * @param obj the dictionary instance * @param key the name of the integer to store * @param value value to store */ BELLESIP_EXPORT void belle_sip_dict_set_int64(belle_sip_dict_t* obj, const char* key, int64_t value); /** * @brief belle_sip_dict_get_int64 retrieves an int64 from the dictionary * @param obj the dictionary instance * @param key the name of the integer to retrieve * @param default_value value to return if the key is not found * @return the searched int64 if the key exists, default_value if not found */ BELLESIP_EXPORT int64_t belle_sip_dict_get_int64(belle_sip_dict_t* obj, const char* key, int64_t default_value); /** * @brief belle_sip_dict_remove will erase the value for a key * @param obj the dictionary instance * @param key the name of the integer to remove * @return 0 if the key was found, 1 otherwise */ BELLESIP_EXPORT int belle_sip_dict_remove(belle_sip_dict_t* obj, const char* key); /** * @brief belle_sip_dict_clear will clear the object's dictionary. * @param obj the dictionary instance */ BELLESIP_EXPORT void belle_sip_dict_clear(belle_sip_dict_t* obj); /** * Clones the source dictionary into the dst dictionary. The dst dictionary is cleared before the cloning * is done. * @param src source dictionary * @param dst destination dictionary */ BELLESIP_EXPORT void belle_sip_dict_clone( const belle_sip_dict_t* src, belle_sip_dict_t* dst); /** * Merge the source dictionary into the destination dictionary. * * Same function as #belle_sip_dict_clone, except the destination dictionary is not cleared before inserting the source data. * This overwrites common keys, and keeps existing keys. */ BELLESIP_EXPORT void belle_sip_dict_merge( const belle_sip_dict_t* src, belle_sip_dict_t* dst); /** * @brief belle_sip_dict_haskey tells if a key exists in the dictionary. * @param obj the dictionary instance * @param key the key to look for * @return 1 if the key exists, 0 otherwise * @todo create unit test */ BELLESIP_EXPORT int belle_sip_dict_haskey(const belle_sip_dict_t* obj, const char* key); /** * Apply a function for all keys stored in the dictionary */ BELLESIP_EXPORT void belle_sip_dict_foreach(const belle_sip_dict_t* obj, void (*apply_func)(const char*, void*, void*), void* userdata); BELLE_SIP_END_DECLS #endif // DICT_H belle-sip-5.2.0+dfsg/include/belle-sip/generic-uri.h000066400000000000000000000105701434613136500222030ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef BELLE_GENERIC_URI_H_ #define BELLE_GENERIC_URI_H_ #include "belle-sip/defs.h" #include "belle-sip/list.h" #include "belle-sip/utils.h" BELLE_SIP_BEGIN_DECLS /** * */ BELLESIP_EXPORT belle_generic_uri_t* belle_generic_uri_new(void); /** * */ BELLESIP_EXPORT belle_generic_uri_t* belle_generic_uri_parse (const char* uri); /* * Returns the host part of this uri. * */ BELLESIP_EXPORT const char* belle_generic_uri_get_host(const belle_generic_uri_t* uri) ; /** * Returns the value of the maddr parameter, or null if this is not set. * */ BELLESIP_EXPORT int belle_generic_uri_get_port(const belle_generic_uri_t* uri) ; /** * Returns the port of the uri, if not specified in the uri returns the well known port according to the transport. **/ BELLESIP_EXPORT int belle_generic_uri_get_listening_port(const belle_generic_uri_t *uri); /** * Returns the user part of this URI. * */ BELLESIP_EXPORT const char* belle_generic_uri_get_user(const belle_generic_uri_t* uri) ; /** * Gets user password of uri, or null if it is not set. * */ BELLESIP_EXPORT const char* belle_generic_uri_get_user_password(const belle_generic_uri_t* uri) ; /** * * Returns uri scheme. * */ BELLESIP_EXPORT const char* belle_generic_uri_get_scheme(const belle_generic_uri_t* uri) ; /** * * Returns uri path. * */ BELLESIP_EXPORT const char* belle_generic_uri_get_path(const belle_generic_uri_t* uri) ; /** * * Returns uri query. * */ BELLESIP_EXPORT const char* belle_generic_uri_get_query(const belle_generic_uri_t* uri) ; /** * Removes the port part of this uri. * */ BELLESIP_EXPORT void belle_generic_uri_remove_port(belle_generic_uri_t* uri) ; /** * Set the host part of this uri to the newly supplied host parameter. * */ BELLESIP_EXPORT void belle_generic_uri_set_host(belle_generic_uri_t* uri,const char*host) ; /** * Set the port part of this uri to the newly supplied port parameter. * */ BELLESIP_EXPORT void belle_generic_uri_set_port(belle_generic_uri_t* uri, int port) ; /** * Sets the scheme of this URI . * */ BELLESIP_EXPORT void belle_generic_uri_set_scheme(belle_generic_uri_t* uri,const char* scheme) ; /** * Sets the path of this URI . * */ BELLESIP_EXPORT void belle_generic_uri_set_path(belle_generic_uri_t* uri,const char* scheme) ; /** * Sets the query of this URI . * */ BELLESIP_EXPORT void belle_generic_uri_set_query(belle_generic_uri_t* uri,const char* scheme) ; /** * Sets the user of uri. * */ BELLESIP_EXPORT void belle_generic_uri_set_user(belle_generic_uri_t* uri,const char*user) ; /** * Sets the user password associated with the user of uri. * */ BELLESIP_EXPORT void belle_generic_uri_set_user_password(belle_generic_uri_t* uri,const char*userPassword) ; /** * This method returns the URI as a string. * */ BELLESIP_EXPORT char* belle_generic_uri_to_string(belle_generic_uri_t* uri) ; BELLESIP_EXPORT belle_sip_error_code belle_generic_uri_marshal(const belle_generic_uri_t* uri, char* buff, size_t buff_size, size_t *offset); /** * gets opaque part of this uri if hierarchies part not detected. * */ BELLESIP_EXPORT const char* belle_generic_uri_get_opaque_part(const belle_generic_uri_t* uri) ; /** * sets opaque part of this uri. Means hierarchies part is ignored if present. * */ BELLESIP_EXPORT void belle_generic_uri_set_opaque_part(belle_generic_uri_t* uri,const char * opaque_part) ; #define BELLE_GENERIC_URI(obj) BELLE_SIP_CAST(obj,belle_generic_uri_t) BELLE_SIP_END_DECLS #endif /* belle_generic_uri_H_ */ belle-sip-5.2.0+dfsg/include/belle-sip/headers.h000066400000000000000000001474631434613136500214210ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * This file is part of belle-sip. * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef HEADERS_H_ #define HEADERS_H_ #include "belle-sip/defs.h" #include "belle-sip/sip-uri.h" #include "belle-sip/generic-uri.h" #include "belle-sip/utils.h" #include "belle-sip/parameters.h" #include BELLE_SIP_BEGIN_DECLS /*************************************************************************************** * header address **************************************************************************************/ typedef struct _belle_sip_header_address belle_sip_header_address_t; BELLESIP_EXPORT belle_sip_header_address_t* belle_sip_header_address_new(void); /* * creates an address from a display name and an uri * Note the uri not copied but only its ref count is incremented * @param display display name. May be null. * @param uri uri set to the newly created header_address * @return * */ BELLESIP_EXPORT belle_sip_header_address_t* belle_sip_header_address_create(const char* display, belle_sip_uri_t* uri); /* * creates an address from a display name and an absolute uri * Note the uri not copied but only its ref count is incremented * @param display display name. May be null. * @param uri uri set to the newly created header_address * @return * */ BELLESIP_EXPORT belle_sip_header_address_t* belle_sip_header_address_create2(const char* display, belle_generic_uri_t* uri); BELLESIP_EXPORT belle_sip_header_address_t* belle_sip_header_address_parse (const char* address) ; /* same as belle_sip_header_address_parse but with less syntax checking */ BELLESIP_EXPORT belle_sip_header_address_t* belle_sip_header_address_fast_parse (const char* address) ; /** * returns a sip uri. A header address cannot have both a sip uri and an absolute uri. */ BELLESIP_EXPORT belle_sip_uri_t* belle_sip_header_address_get_uri(const belle_sip_header_address_t* address); /** * set an absolute uri. A header address cannot have both a sip uri and an absolute uri. This function also to absolute uri to NULL */ BELLESIP_EXPORT void belle_sip_header_address_set_uri(belle_sip_header_address_t* address, belle_sip_uri_t* uri); /** * returns an absolute uri. A header address cannot have both a sip uri and an absolute uri. */ BELLESIP_EXPORT belle_generic_uri_t* belle_sip_header_address_get_absolute_uri(const belle_sip_header_address_t* address); /** * set an absolute uri. A header address cannot have both a sip uri and an absolute uri. This function also to uri to NULL */ BELLESIP_EXPORT void belle_sip_header_address_set_absolute_uri(belle_sip_header_address_t* address, belle_generic_uri_t* uri); /** * Enable automatic filling of the contact ip, port and transport according to the channel that sends this message. **/ BELLESIP_EXPORT void belle_sip_header_address_set_automatic(belle_sip_header_address_t *address, int automatic); BELLESIP_EXPORT int belle_sip_header_address_get_automatic(const belle_sip_header_address_t *address); /** */ BELLESIP_EXPORT const char* belle_sip_header_address_get_displayname(const belle_sip_header_address_t* address); /** */ BELLESIP_EXPORT void belle_sip_header_address_set_displayname(belle_sip_header_address_t* address, const char* uri); /* * Clone both display name and an uri from an belle_sip_header_address_t to a newly allocated belle_sip_header_address_t * @param orig, originating header adderss. * @return belle_sip_header_address_t * */ BELLESIP_EXPORT belle_sip_header_address_t* belle_sip_header_address_clone(const belle_sip_header_address_t* orig); /** * returns 0 if the header addresses are identical, -1 otherwise. */ BELLESIP_EXPORT int belle_sip_header_address_equals(const belle_sip_header_address_t* addr_a, const belle_sip_header_address_t* addr_b); #define BELLE_SIP_HEADER_ADDRESS(t) BELLE_SIP_CAST(t,belle_sip_header_address_t) /*************************************************************************************** * header common **************************************************************************************/ BELLESIP_EXPORT belle_sip_header_t* belle_sip_header_parse (const char* header); BELLESIP_EXPORT belle_sip_header_t* belle_sip_header_create (const char* name,const char* value); BELLESIP_EXPORT belle_sip_header_t* belle_http_header_create (const char* name,const char* value); BELLESIP_EXPORT belle_sip_header_t* belle_sip_header_get_next(const belle_sip_header_t* headers); BELLESIP_EXPORT const char* belle_sip_header_get_name (const belle_sip_header_t* obj); BELLESIP_EXPORT void belle_sip_header_set_name (belle_sip_header_t* obj,const char* value); BELLESIP_EXPORT belle_sip_error_code belle_sip_header_marshal(belle_sip_header_t* header, char* buff, size_t buff_size, size_t *offset); BELLESIP_EXPORT const char *belle_sip_header_get_unparsed_value(belle_sip_header_t* obj); #define BELLE_SIP_HEADER(t) BELLE_SIP_CAST(t,belle_sip_header_t) /****************************** * Allow header inherit from header ******************************/ typedef struct _belle_sip_header_allow belle_sip_header_allow_t; belle_sip_header_allow_t* belle_sip_header_allow_new(void); BELLESIP_EXPORT belle_sip_header_allow_t* belle_sip_header_allow_parse (const char* allow) ; BELLESIP_EXPORT belle_sip_header_allow_t* belle_sip_header_allow_create (const char* methods) ; BELLESIP_EXPORT const char* belle_sip_header_allow_get_method(const belle_sip_header_allow_t* allow); BELLESIP_EXPORT void belle_sip_header_allow_set_method(belle_sip_header_allow_t* allow,const char* method); #define BELLE_SIP_HEADER_ALLOW(t) BELLE_SIP_CAST(t,belle_sip_header_allow_t) #define BELLE_SIP_ALLOW "Allow" /*********************** * Contact header object ************************/ typedef struct _belle_sip_header_contact belle_sip_header_contact_t; BELLESIP_EXPORT belle_sip_header_contact_t* belle_sip_header_contact_new(void); BELLESIP_EXPORT belle_sip_header_contact_t* belle_sip_header_contact_parse (const char* contact) ; BELLESIP_EXPORT belle_sip_header_contact_t* belle_sip_header_contact_create (const belle_sip_header_address_t* contact) ; /** * Returns the value of the expires parameter or -1 if no expires parameter was specified or if the parameter value cannot be parsed as an int. *@returns value of the expires parameter measured in delta-seconds, O implies removal of Registration specified in Contact Header. */ BELLESIP_EXPORT int belle_sip_header_contact_get_expires(const belle_sip_header_contact_t* contact); /** * Returns the value of the q-value parameter of this ContactHeader. The q-value parameter indicates the relative preference amongst a set of locations. q-values are decimal numbers from 0 to 1, with higher values indicating higher preference. * @return the q-value parameter of this ContactHeader, -1 if the q-value is not set. */ BELLESIP_EXPORT float belle_sip_header_contact_get_qvalue(const belle_sip_header_contact_t* contact); /** * Returns a boolean value that indicates if the contact header has the format of Contact: *. * @return true if this is a wildcard address, false otherwise. */ BELLESIP_EXPORT unsigned int belle_sip_header_contact_is_wildcard(const belle_sip_header_contact_t* contact); /** */ BELLESIP_EXPORT int belle_sip_header_contact_set_expires(belle_sip_header_contact_t* contact, int expires); /** * Sets the qValue value of the Name Address. */ BELLESIP_EXPORT int belle_sip_header_contact_set_qvalue(belle_sip_header_contact_t* contact, float qvalue); /** * Sets a wildcard on this contact address that is "*" is assigned to the contact header so that the header will have the format of Contact: *. */ BELLESIP_EXPORT void belle_sip_header_contact_set_wildcard(belle_sip_header_contact_t* contact,unsigned int is_wildcard); /** Contact header equality function * @return 0 if not equals * */ BELLESIP_EXPORT unsigned int belle_sip_header_contact_equals(const belle_sip_header_contact_t* a,const belle_sip_header_contact_t* b); /** Contact header equality function, same as #belle_sip_header_contact_equals but return 0 if equals, very useful with #belle_sip_list * @return 0 if equals * */ BELLESIP_EXPORT unsigned int belle_sip_header_contact_not_equals(const belle_sip_header_contact_t* a,const belle_sip_header_contact_t* b); /** Contact header equality function * @return 0 if not equals * */ BELLESIP_EXPORT unsigned int belle_sip_header_contact_equals_with_uri_omitting(const belle_sip_header_contact_t* a,const belle_sip_header_contact_t* b); /** Contact header equality function, same as #belle_sip_header_contact_equals but return 0 if equals, very useful with #belle_sip_list * @return 0 if equals * */ BELLESIP_EXPORT unsigned int belle_sip_header_contact_not_equals_with_uri_omitting(const belle_sip_header_contact_t* a,const belle_sip_header_contact_t* b); /** * Enable automatic filling of the contact ip, port and transport according to the channel that sends this message. * @deprecated use belle_sip_header_address_set_automatic(); **/ BELLESIP_EXPORT void belle_sip_header_contact_set_automatic(belle_sip_header_contact_t *a, int enabled); BELLESIP_EXPORT int belle_sip_header_contact_get_automatic(const belle_sip_header_contact_t *a); /** * Indicates whether a contact in automatic mode (see belle_sip_header_contact_set_automatic()) could be filled properly when the message was sent. * If a message is sent through a connection that has just been initiated, public IP and port are unknown, they will be learned after receiving the first response. * This can be used by the upper layer to decide to resubmit the request. **/ BELLESIP_EXPORT int belle_sip_header_contact_is_unknown(const belle_sip_header_contact_t *a); #define BELLE_SIP_RANDOM_TAG ((const char*)-1) #define BELLE_SIP_HEADER_CONTACT(t) BELLE_SIP_CAST(t,belle_sip_header_contact_t) #define BELLE_SIP_CONTACT "Contact" /****************************** * From header object inherit from header_address ******************************/ typedef struct _belle_sip_header_from belle_sip_header_from_t; BELLESIP_EXPORT belle_sip_header_from_t* belle_sip_header_from_new(void); BELLESIP_EXPORT belle_sip_header_from_t* belle_sip_header_from_create(const belle_sip_header_address_t* address, const char *tag); BELLESIP_EXPORT belle_sip_header_from_t* belle_sip_header_from_create2(const char *address, const char *tag); BELLESIP_EXPORT belle_sip_header_from_t* belle_sip_header_from_parse(const char* from) ; BELLESIP_EXPORT void belle_sip_header_from_set_tag(belle_sip_header_from_t* from, const char* tag); BELLESIP_EXPORT const char* belle_sip_header_from_get_tag(const belle_sip_header_from_t* from); BELLESIP_EXPORT void belle_sip_header_from_set_random_tag(belle_sip_header_from_t *obj); #define BELLE_SIP_HEADER_FROM(t) BELLE_SIP_CAST(t,belle_sip_header_from_t) #define BELLE_SIP_FROM "From" /****************************** * To header object inherit from header_address ******************************/ typedef struct _belle_sip_header_to belle_sip_header_to_t; BELLESIP_EXPORT belle_sip_header_to_t* belle_sip_header_to_new(void); BELLESIP_EXPORT belle_sip_header_to_t* belle_sip_header_to_parse(const char* to) ; BELLESIP_EXPORT belle_sip_header_to_t* belle_sip_header_to_create(const belle_sip_header_address_t *address, const char *tag); BELLESIP_EXPORT belle_sip_header_to_t* belle_sip_header_to_create2(const char *address, const char *tag); BELLESIP_EXPORT void belle_sip_header_to_set_tag(belle_sip_header_to_t* from, const char* tag); BELLESIP_EXPORT const char* belle_sip_header_to_get_tag(const belle_sip_header_to_t* from); BELLESIP_EXPORT void belle_sip_header_to_set_random_tag(belle_sip_header_to_t *obj); #define BELLE_SIP_HEADER_TO(t) BELLE_SIP_CAST(t,belle_sip_header_to_t) #define BELLE_SIP_TO "To" /****************************** * Diversion header object inherit from header_address ******************************/ typedef struct _belle_sip_header_diversion belle_sip_header_diversion_t; BELLESIP_EXPORT belle_sip_header_diversion_t* belle_sip_header_diversion_new(void); BELLESIP_EXPORT belle_sip_header_diversion_t* belle_sip_header_diversion_parse(const char* diversion) ; BELLESIP_EXPORT belle_sip_header_diversion_t* belle_sip_header_diversion_create(const belle_sip_header_address_t *address, const char *tag); BELLESIP_EXPORT belle_sip_header_diversion_t* belle_sip_header_diversion_create2(const char *address, const char *tag); BELLESIP_EXPORT void belle_sip_header_diversion_set_tag(belle_sip_header_diversion_t* diversion, const char* tag); BELLESIP_EXPORT const char* belle_sip_header_diversion_get_tag(const belle_sip_header_diversion_t* from); BELLESIP_EXPORT void belle_sip_header_diversion_set_random_tag(belle_sip_header_diversion_t *obj); #define BELLE_SIP_HEADER_DIVERSION(t) BELLE_SIP_CAST(t,belle_sip_header_diversion_t) #define BELLE_SIP_DIVERSION "Diversion" /****************************** * Via header object inherit from header_address ******************************/ typedef struct _belle_sip_header_via belle_sip_header_via_t; BELLESIP_EXPORT belle_sip_header_via_t* belle_sip_header_via_new(void); BELLESIP_EXPORT belle_sip_header_via_t* belle_sip_header_via_create(const char *host, int port, const char *transport, const char *branch); BELLESIP_EXPORT belle_sip_header_via_t* belle_sip_header_via_parse (const char* via) ; BELLESIP_EXPORT const char* belle_sip_header_via_get_branch(const belle_sip_header_via_t* via); BELLESIP_EXPORT const char* belle_sip_header_via_get_transport(const belle_sip_header_via_t* via); /** * Get lower case version of the transport * @return the lower case version of the transport if from tcp,udp,tls or dtls else, return the value from #belle_sip_header_via_get_transport */ BELLESIP_EXPORT const char* belle_sip_header_via_get_transport_lowercase(const belle_sip_header_via_t* via); BELLESIP_EXPORT const char* belle_sip_header_via_get_host(const belle_sip_header_via_t* via); BELLESIP_EXPORT int belle_sip_header_via_get_port(const belle_sip_header_via_t* via); BELLESIP_EXPORT int belle_sip_header_via_get_listening_port(const belle_sip_header_via_t *via); BELLESIP_EXPORT const char* belle_sip_header_via_get_maddr(const belle_sip_header_via_t* via); BELLESIP_EXPORT const char* belle_sip_header_via_get_protocol(const belle_sip_header_via_t* via); BELLESIP_EXPORT const char* belle_sip_header_via_get_received(const belle_sip_header_via_t* via); BELLESIP_EXPORT int belle_sip_header_via_get_rport(const belle_sip_header_via_t* via); BELLESIP_EXPORT int belle_sip_header_via_get_ttl(const belle_sip_header_via_t* via); BELLESIP_EXPORT void belle_sip_header_via_set_branch(belle_sip_header_via_t* via,const char* branch); BELLESIP_EXPORT void belle_sip_header_via_set_host(belle_sip_header_via_t* via, const char* host); BELLESIP_EXPORT int belle_sip_header_via_set_port(belle_sip_header_via_t* via,int port); BELLESIP_EXPORT void belle_sip_header_via_set_maddr(belle_sip_header_via_t* via, const char* maddr); BELLESIP_EXPORT void belle_sip_header_via_set_protocol(belle_sip_header_via_t* via, const char* protocol); BELLESIP_EXPORT void belle_sip_header_via_set_received(belle_sip_header_via_t* via, const char* received); BELLESIP_EXPORT int belle_sip_header_via_set_rport(belle_sip_header_via_t* via,int rport); BELLESIP_EXPORT void belle_sip_header_via_set_transport(belle_sip_header_via_t* via,const char* transport); BELLESIP_EXPORT int belle_sip_header_via_set_ttl(belle_sip_header_via_t* via, int ttl); #define BELLE_SIP_HEADER_VIA(t) BELLE_SIP_CAST(t,belle_sip_header_via_t) #define BELLE_SIP_VIA "Via" /****************************** * Call id object inherit from object ******************************/ typedef struct _belle_sip_header_call_id belle_sip_header_call_id_t; BELLESIP_EXPORT belle_sip_header_call_id_t* belle_sip_header_call_id_new(void); BELLESIP_EXPORT belle_sip_header_call_id_t* belle_sip_header_call_id_parse (const char* call_id) ; BELLESIP_EXPORT const char* belle_sip_header_call_id_get_call_id(const belle_sip_header_call_id_t* call_id); BELLESIP_EXPORT void belle_sip_header_call_id_set_call_id(belle_sip_header_call_id_t* call_id,const char* id); unsigned int belle_sip_header_call_id_equals(const belle_sip_header_call_id_t* a,const belle_sip_header_call_id_t* b); #define BELLE_SIP_HEADER_CALL_ID(t) BELLE_SIP_CAST(t,belle_sip_header_call_id_t) #define BELLE_SIP_CALL_ID "Call-ID" /****************************** * Retry-After object inherit from object ******************************/ typedef struct _belle_sip_header_retry_after belle_sip_header_retry_after_t; BELLESIP_EXPORT belle_sip_header_retry_after_t* belle_sip_header_retry_after_new(void); BELLESIP_EXPORT belle_sip_header_retry_after_t* belle_sip_header_retry_after_create (int retry_after); BELLESIP_EXPORT belle_sip_header_retry_after_t* belle_sip_header_retry_after_parse (const char *retry_after) ; BELLESIP_EXPORT int belle_sip_header_retry_after_get_retry_after(const belle_sip_header_retry_after_t* retry_after); BELLESIP_EXPORT void belle_sip_header_retry_after_set_retry_after(belle_sip_header_retry_after_t* retry_after,int second); #define BELLE_SIP_HEADER_RETRY_AFTER(t) BELLE_SIP_CAST(t,belle_sip_header_retry_after_t) #define BELLE_SIP_RETRY_AFTER "Retry-After" /****************************** * cseq object inherit from object ******************************/ typedef struct _belle_sip_header_cseq belle_sip_header_cseq_t; BELLESIP_EXPORT belle_sip_header_cseq_t* belle_sip_header_cseq_new(void); BELLESIP_EXPORT belle_sip_header_cseq_t* belle_sip_header_cseq_create(unsigned int number, const char *method); BELLESIP_EXPORT belle_sip_header_cseq_t* belle_sip_header_cseq_parse (const char* cseq) ; BELLESIP_EXPORT const char* belle_sip_header_cseq_get_method(const belle_sip_header_cseq_t* cseq); BELLESIP_EXPORT void belle_sip_header_cseq_set_method(belle_sip_header_cseq_t* cseq,const char* method); BELLESIP_EXPORT unsigned int belle_sip_header_cseq_get_seq_number(const belle_sip_header_cseq_t* cseq); BELLESIP_EXPORT void belle_sip_header_cseq_set_seq_number(belle_sip_header_cseq_t* cseq,unsigned int seq_number); #define BELLE_SIP_HEADER_CSEQ(t) BELLE_SIP_CAST(t,belle_sip_header_cseq_t) #define BELLE_SIP_CSEQ "CSeq" /****************************** * content type object inherit from parameters ******************************/ typedef struct _belle_sip_header_content_type belle_sip_header_content_type_t; BELLESIP_EXPORT belle_sip_header_content_type_t* belle_sip_header_content_type_new(void); BELLESIP_EXPORT belle_sip_header_content_type_t* belle_sip_header_content_type_parse (const char* content_type) ; BELLESIP_EXPORT belle_sip_header_content_type_t* belle_sip_header_content_type_parse (const char* content_type) ; BELLESIP_EXPORT belle_sip_header_content_type_t* belle_sip_header_content_type_create (const char* type,const char* sub_type) ; BELLESIP_EXPORT const char* belle_sip_header_content_type_get_type(const belle_sip_header_content_type_t* content_type); BELLESIP_EXPORT void belle_sip_header_content_type_set_type(belle_sip_header_content_type_t* content_type,const char* type); BELLESIP_EXPORT const char* belle_sip_header_content_type_get_subtype(const belle_sip_header_content_type_t* content_type); BELLESIP_EXPORT void belle_sip_header_content_type_set_subtype(belle_sip_header_content_type_t* content_type,const char* sub_type); #define BELLE_SIP_HEADER_CONTENT_TYPE(t) BELLE_SIP_CAST(t,belle_sip_header_content_type_t) #define BELLE_SIP_CONTENT_TYPE "Content-Type" /****************************** * Session-Expires inherit from header ******************************/ typedef struct _belle_sip_header_session_expires belle_sip_header_session_expires_t; typedef enum { BELLE_SIP_HEADER_SESSION_EXPIRES_UNSPECIFIED, BELLE_SIP_HEADER_SESSION_EXPIRES_UAS, BELLE_SIP_HEADER_SESSION_EXPIRES_UAC } belle_sip_header_session_expires_refresher_t; BELLESIP_EXPORT belle_sip_header_session_expires_t* belle_sip_header_session_expires_new(void); BELLESIP_EXPORT belle_sip_header_session_expires_t* belle_sip_header_session_expires_create( int delta, belle_sip_header_session_expires_refresher_t refresher ); BELLESIP_EXPORT belle_sip_header_session_expires_t* belle_sip_header_session_expires_parse (const char* session_expires) ; BELLESIP_EXPORT int belle_sip_header_session_expires_get_delta(const belle_sip_header_session_expires_t* session_expires); BELLESIP_EXPORT void belle_sip_header_session_expires_set_delta(belle_sip_header_session_expires_t* session_expires, int delta); BELLESIP_EXPORT belle_sip_header_session_expires_refresher_t belle_sip_header_session_expires_get_refresher_value( const belle_sip_header_session_expires_t* session_expires ); BELLESIP_EXPORT void belle_sip_header_session_expires_set_refresher_value( belle_sip_header_session_expires_t* session_expires, belle_sip_header_session_expires_refresher_t refresher ); #define BELLE_SIP_HEADER_SESSION_EXPIRES(t) BELLE_SIP_CAST(t, belle_sip_header_session_expires_t) #define BELLE_SIP_SESSION_EXPIRES "Session-Expires" #define BELLE_SIP_SESSION_EXPIRES_MSE "Min-SE" /****************************** * Expires inherit from header ******************************/ typedef struct _belle_sip_header_expires belle_sip_header_expires_t; BELLESIP_EXPORT belle_sip_header_expires_t* belle_sip_header_expires_new(void); BELLESIP_EXPORT belle_sip_header_expires_t* belle_sip_header_expires_parse (const char* expires) ; BELLESIP_EXPORT int belle_sip_header_expires_get_expires(const belle_sip_header_expires_t* expires); BELLESIP_EXPORT void belle_sip_header_expires_set_expires(belle_sip_header_expires_t* expires,int value); BELLESIP_EXPORT int belle_sip_header_expires_decrement_expires(belle_sip_header_expires_t* expires); BELLESIP_EXPORT belle_sip_header_expires_t* belle_sip_header_expires_create(int expires); #define BELLE_SIP_HEADER_EXPIRES(t) BELLE_SIP_CAST(t,belle_sip_header_expires_t) #define BELLE_SIP_EXPIRES "Expires" /****************************** * Route header object inherit from header_address ******************************/ typedef struct _belle_sip_header_route belle_sip_header_route_t; BELLESIP_EXPORT belle_sip_header_route_t* belle_sip_header_route_new(void); BELLESIP_EXPORT belle_sip_header_route_t* belle_sip_header_route_parse (const char* route) ; BELLESIP_EXPORT belle_sip_header_route_t* belle_sip_header_route_create(const belle_sip_header_address_t* route); #define BELLE_SIP_HEADER_ROUTE(t) BELLE_SIP_CAST(t,belle_sip_header_route_t) #define BELLE_SIP_ROUTE "Route" /****************************** * Record route header object inherit from header_address ******************************/ typedef struct _belle_sip_header_record_route belle_sip_header_record_route_t; BELLESIP_EXPORT belle_sip_header_record_route_t* belle_sip_header_record_route_new(void); BELLESIP_EXPORT belle_sip_header_record_route_t* belle_sip_header_record_route_parse (const char* route); BELLESIP_EXPORT belle_sip_header_record_route_t* belle_sip_header_record_route_new_auto_outgoing(void); BELLESIP_EXPORT unsigned char belle_sip_header_record_route_get_auto_outgoing(const belle_sip_header_record_route_t *a); #define BELLE_SIP_HEADER_RECORD_ROUTE(t) BELLE_SIP_CAST(t,belle_sip_header_record_route_t) #define BELLE_SIP_RECORD_ROUTE "Record-route" /****************************** * Service route header object inherit from header_address ******************************/ typedef struct _belle_sip_header_service_route belle_sip_header_service_route_t; BELLESIP_EXPORT belle_sip_header_service_route_t* belle_sip_header_service_route_new(void); BELLESIP_EXPORT belle_sip_header_service_route_t* belle_sip_header_service_route_parse (const char* route) ; #define BELLE_SIP_HEADER_SERVICE_ROUTE(t) BELLE_SIP_CAST(t,belle_sip_header_service_route_t) #define BELLE_SIP_SERVICE_ROUTE "Service-route" /****************************** * user-Agent header inherit from header ******************************/ typedef struct _belle_sip_header_user_agent belle_sip_header_user_agent_t; BELLESIP_EXPORT belle_sip_header_user_agent_t* belle_sip_header_user_agent_new(void); BELLESIP_EXPORT belle_sip_header_user_agent_t* belle_sip_header_user_agent_parse (const char* user_agent) ; BELLESIP_EXPORT belle_sip_list_t* belle_sip_header_user_agent_get_products(const belle_sip_header_user_agent_t* user_agent); /** * concatenates products * @param user_agent [in] user agent header * @param value [out]buffer where to put result in * @param value_size [in] size of the buffer * @return number of written characters or -1 inca se of error; */ BELLESIP_EXPORT int belle_sip_header_user_agent_get_products_as_string(const belle_sip_header_user_agent_t* user_agent,char* value,unsigned int value_size); BELLESIP_EXPORT void belle_sip_header_user_agent_set_products(belle_sip_header_user_agent_t* user_agent,belle_sip_list_t* value); BELLESIP_EXPORT void belle_sip_header_user_agent_add_product(belle_sip_header_user_agent_t* user_agent,const char* product); #define BELLE_SIP_HEADER_USER_AGENT(t) BELLE_SIP_CAST(t,belle_sip_header_user_agent_t) #define BELLE_SIP_USER_AGENT "User-Agent" /****************************** * Content length inherit from object ******************************/ typedef struct _belle_sip_header_content_length belle_sip_header_content_length_t; BELLESIP_EXPORT belle_sip_header_content_length_t* belle_sip_header_content_length_new(void); BELLESIP_EXPORT belle_sip_header_content_length_t* belle_sip_header_content_length_parse (const char* content_length) ; BELLESIP_EXPORT belle_sip_header_content_length_t* belle_sip_header_content_length_create (size_t content_length) ; BELLESIP_EXPORT size_t belle_sip_header_content_length_get_content_length(const belle_sip_header_content_length_t* content_length); BELLESIP_EXPORT void belle_sip_header_content_length_set_content_length(belle_sip_header_content_length_t* content_length,size_t length); #define BELLE_SIP_HEADER_CONTENT_LENGTH(t) BELLE_SIP_CAST(t,belle_sip_header_content_length_t) #define BELLE_SIP_CONTENT_LENGTH "Content-Length" /****************************** * authorization header inherit from parameters ******************************/ typedef struct _belle_sip_header_authorization belle_sip_header_authorization_t; BELLESIP_EXPORT belle_sip_header_authorization_t* belle_sip_header_authorization_new(void); BELLESIP_EXPORT belle_sip_header_authorization_t* belle_sip_header_authorization_parse(const char* authorization); BELLESIP_EXPORT const char* belle_sip_header_authorization_get_algorithm(const belle_sip_header_authorization_t* authorization ); BELLESIP_EXPORT const char* belle_sip_header_authorization_get_cnonce(const belle_sip_header_authorization_t* authorization ); BELLESIP_EXPORT const char* belle_sip_header_authorization_get_nonce(const belle_sip_header_authorization_t* authorization); /*convert nonce count as string id present * @return 0 in case of success * */ BELLESIP_EXPORT int belle_sip_header_authorization_get_nonce_count_as_string(const belle_sip_header_authorization_t* authorization,char nounce_count[9]); BELLESIP_EXPORT int belle_sip_header_authorization_get_nonce_count(const belle_sip_header_authorization_t* authorization); BELLESIP_EXPORT const char* belle_sip_header_authorization_get_opaque(const belle_sip_header_authorization_t* authorization); BELLESIP_EXPORT const char* belle_sip_header_authorization_get_qop(const belle_sip_header_authorization_t* authorization); BELLESIP_EXPORT const char* belle_sip_header_authorization_get_realm(const belle_sip_header_authorization_t* authorization); BELLESIP_EXPORT const char* belle_sip_header_authorization_get_response(const belle_sip_header_authorization_t* authorization); BELLESIP_EXPORT const char* belle_sip_header_authorization_get_scheme(const belle_sip_header_authorization_t* authorization); BELLESIP_EXPORT belle_sip_uri_t* belle_sip_header_authorization_get_uri(const belle_sip_header_authorization_t* authorization); BELLESIP_EXPORT const char* belle_sip_header_authorization_get_username(const belle_sip_header_authorization_t* authorization); BELLESIP_EXPORT void belle_sip_header_authorization_set_algorithm(belle_sip_header_authorization_t* authorization, const char* algorithm); BELLESIP_EXPORT void belle_sip_header_authorization_set_cnonce(belle_sip_header_authorization_t* authorization, const char* cNonce); BELLESIP_EXPORT void belle_sip_header_authorization_set_nonce(belle_sip_header_authorization_t* authorization, const char* nonce); BELLESIP_EXPORT void belle_sip_header_authorization_set_nonce_count(belle_sip_header_authorization_t* authorization, int nonceCount); BELLESIP_EXPORT void belle_sip_header_authorization_set_opaque(belle_sip_header_authorization_t* authorization, const char* opaque); BELLESIP_EXPORT void belle_sip_header_authorization_set_qop(belle_sip_header_authorization_t* authorization, const char* qop); BELLESIP_EXPORT void belle_sip_header_authorization_add_qop(belle_sip_header_authorization_t* authorization, const char* qop); BELLESIP_EXPORT void belle_sip_header_authorization_set_realm(belle_sip_header_authorization_t* authorization, const char* realm); BELLESIP_EXPORT void belle_sip_header_authorization_set_response(belle_sip_header_authorization_t* authorization, const char* response); BELLESIP_EXPORT void belle_sip_header_authorization_set_scheme(belle_sip_header_authorization_t* authorization, const char* scheme); BELLESIP_EXPORT void belle_sip_header_authorization_set_uri(belle_sip_header_authorization_t* authorization, belle_sip_uri_t* uri); BELLESIP_EXPORT void belle_sip_header_authorization_set_username(belle_sip_header_authorization_t* authorization, const char* username); #define BELLE_SIP_HEADER_AUTHORIZATION(t) BELLE_SIP_CAST(t,belle_sip_header_authorization_t) #define BELLE_SIP_AUTHORIZATION "Authorization" /******************************* * proxy_authorization inherit from Authorization *******************************/ typedef struct _belle_sip_header_proxy_authorization belle_sip_header_proxy_authorization_t; BELLESIP_EXPORT belle_sip_header_proxy_authorization_t* belle_sip_header_proxy_authorization_new(void); BELLESIP_EXPORT belle_sip_header_proxy_authorization_t* belle_sip_header_proxy_authorization_parse(const char* proxy_authorization); #define BELLE_SIP_HEADER_PROXY_AUTHORIZATION(t) BELLE_SIP_CAST(t,belle_sip_header_proxy_authorization_t) #define BELLE_SIP_PROXY_AUTHORIZATION "Proxy-Authorization" /******************************* * http_authorization inherit from Authorization *******************************/ typedef struct _belle_http_header_authorization belle_http_header_authorization_t; BELLESIP_EXPORT belle_http_header_authorization_t* belle_http_header_authorization_new(void); /*cannot be parsed for now BELLESIP_EXPORT belle_http_header_authorization_t* belle_http_header_authorization_parse(const char* proxy_authorization); */ BELLESIP_EXPORT void belle_http_header_authorization_set_uri(belle_http_header_authorization_t* authorization, belle_generic_uri_t* uri); BELLESIP_EXPORT belle_generic_uri_t* belle_http_header_authorization_get_uri(const belle_http_header_authorization_t* authorization); #define BELLE_HTTP_HEADER_AUTHORIZATION(t) BELLE_SIP_CAST(t,belle_http_header_authorization_t) #define BELLE_HTTP_AUTHORIZATION "Authorization" /******************************* * www_authenticate inherit from parameters *******************************/ typedef struct _belle_sip_header_www_authenticate belle_sip_header_www_authenticate_t; BELLESIP_EXPORT belle_sip_header_www_authenticate_t* belle_sip_header_www_authenticate_new(void); BELLESIP_EXPORT belle_sip_header_www_authenticate_t* belle_sip_header_www_authenticate_parse(const char* www_authenticate); BELLESIP_EXPORT const char* belle_sip_header_www_authenticate_get_algorithm(const belle_sip_header_www_authenticate_t* www_authenticate ); BELLESIP_EXPORT const char* belle_sip_header_www_authenticate_get_nonce(const belle_sip_header_www_authenticate_t* www_authenticate); BELLESIP_EXPORT const char* belle_sip_header_www_authenticate_get_opaque(const belle_sip_header_www_authenticate_t* www_authenticate); BELLESIP_EXPORT belle_sip_list_t* belle_sip_header_www_authenticate_get_qop(const belle_sip_header_www_authenticate_t* www_authetication); BELLESIP_EXPORT const char* belle_sip_header_www_authenticate_get_qop_first(const belle_sip_header_www_authenticate_t* www_authetication); BELLESIP_EXPORT const char* belle_sip_header_www_authenticate_get_realm(const belle_sip_header_www_authenticate_t* www_authenticate); BELLESIP_EXPORT const char* belle_sip_header_www_authenticate_get_scheme(const belle_sip_header_www_authenticate_t* www_authenticate); BELLESIP_EXPORT const char* belle_sip_header_www_authenticate_get_domain(const belle_sip_header_www_authenticate_t* www_authenticate); BELLESIP_EXPORT unsigned int belle_sip_header_www_authenticate_is_stale(const belle_sip_header_www_authenticate_t* www_authenticate); BELLESIP_EXPORT void belle_sip_header_www_authenticate_set_algorithm(belle_sip_header_www_authenticate_t* www_authenticate, const char* algorithm); BELLESIP_EXPORT void belle_sip_header_www_authenticate_set_nonce(belle_sip_header_www_authenticate_t* www_authenticate, const char* nonce); BELLESIP_EXPORT void belle_sip_header_www_authenticate_set_opaque(belle_sip_header_www_authenticate_t* www_authenticate, const char* opaque); BELLESIP_EXPORT void belle_sip_header_www_authenticate_set_qop(belle_sip_header_www_authenticate_t* www_authentication, belle_sip_list_t* qop); BELLESIP_EXPORT void belle_sip_header_www_authenticate_add_qop(belle_sip_header_www_authenticate_t* www_authentication, const char* qop_param); BELLESIP_EXPORT void belle_sip_header_www_authenticate_set_realm(belle_sip_header_www_authenticate_t* www_authenticate, const char* realm); BELLESIP_EXPORT void belle_sip_header_www_authenticate_set_scheme(belle_sip_header_www_authenticate_t* www_authenticate, const char* scheme); BELLESIP_EXPORT void belle_sip_header_www_authenticate_set_domain(belle_sip_header_www_authenticate_t* www_authenticate,const char* domain); BELLESIP_EXPORT void belle_sip_header_www_authenticate_set_stale(belle_sip_header_www_authenticate_t* www_authenticate, unsigned int enable); #define BELLE_SIP_HEADER_WWW_AUTHENTICATE(t) BELLE_SIP_CAST(t,belle_sip_header_www_authenticate_t) #define BELLE_SIP_WWW_AUTHENTICATE "WWW-Authenticate" /******************************* * proxy_authenticate inherit from www_authenticate *******************************/ typedef struct _belle_sip_header_proxy_authenticate belle_sip_header_proxy_authenticate_t; BELLESIP_EXPORT belle_sip_header_proxy_authenticate_t* belle_sip_header_proxy_authenticate_new(void); BELLESIP_EXPORT belle_sip_header_proxy_authenticate_t* belle_sip_header_proxy_authenticate_parse(const char* proxy_authenticate); #define BELLE_SIP_HEADER_PROXY_AUTHENTICATE(t) BELLE_SIP_CAST(t,belle_sip_header_proxy_authenticate_t) #define BELLE_SIP_PROXY_AUTHENTICATE "Proxy-Authenticate" /****************************** * Max forward inherit from header ******************************/ typedef struct _belle_sip_header_max_forwards belle_sip_header_max_forwards_t; BELLESIP_EXPORT belle_sip_header_max_forwards_t* belle_sip_header_max_forwards_new(void); BELLESIP_EXPORT belle_sip_header_max_forwards_t* belle_sip_header_max_forwards_create(int value); BELLESIP_EXPORT belle_sip_header_max_forwards_t* belle_sip_header_max_forwards_parse (const char* max_forwards) ; BELLESIP_EXPORT int belle_sip_header_max_forwards_get_max_forwards(const belle_sip_header_max_forwards_t* max_forwards); BELLESIP_EXPORT void belle_sip_header_max_forwards_set_max_forwards(belle_sip_header_max_forwards_t* max_forwards,int value); BELLESIP_EXPORT int belle_sip_header_max_forwards_decrement_max_forwards(belle_sip_header_max_forwards_t* max_forwards); #define BELLE_SIP_HEADER_MAX_FORWARDS(t) BELLE_SIP_CAST(t,belle_sip_header_max_forwards_t) #define BELLE_SIP_MAX_FORWARDS "Max-Forwards" /****************************** * Subscription state inherit from parameters ******************************/ typedef struct _belle_sip_header_subscription_state belle_sip_header_subscription_state_t; BELLESIP_EXPORT belle_sip_header_subscription_state_t* belle_sip_header_subscription_state_new(void); BELLESIP_EXPORT belle_sip_header_subscription_state_t* belle_sip_header_subscription_state_parse (const char* subscription_state) ; BELLESIP_EXPORT belle_sip_header_subscription_state_t* belle_sip_header_subscription_state_create (const char* subscription_state,int expires); BELLESIP_EXPORT const char* belle_sip_header_subscription_state_get_state(const belle_sip_header_subscription_state_t* subscription_state); BELLESIP_EXPORT int belle_sip_header_subscription_state_get_expires(const belle_sip_header_subscription_state_t* subscription_state); BELLESIP_EXPORT const char* belle_sip_header_subscription_state_get_reason(const belle_sip_header_subscription_state_t* subscription_state); BELLESIP_EXPORT int belle_sip_header_subscription_state_get_retry_after(const belle_sip_header_subscription_state_t* subscription_state); BELLESIP_EXPORT void belle_sip_header_subscription_state_set_state(belle_sip_header_subscription_state_t* subscription_state,const char* state); BELLESIP_EXPORT void belle_sip_header_subscription_state_set_expires(belle_sip_header_subscription_state_t* subscription_state,int expire); BELLESIP_EXPORT void belle_sip_header_subscription_state_set_reason(belle_sip_header_subscription_state_t* subscription_state, const char* reason); BELLESIP_EXPORT void belle_sip_header_subscription_state_set_retry_after(belle_sip_header_subscription_state_t* subscription_state, int retry_after ); #define BELLE_SIP_HEADER_SUBSCRIPTION_STATE(t) BELLE_SIP_CAST(t,belle_sip_header_subscription_state_t) #define BELLE_SIP_SUBSCRIPTION_STATE "Subscription-State" #define BELLE_SIP_SUBSCRIPTION_STATE_ACTIVE "active" #define BELLE_SIP_SUBSCRIPTION_STATE_PENDING "pending" #define BELLE_SIP_SUBSCRIPTION_STATE_TERMINATED "terminated" /****************************** * Refer-To header object inherits from header_address ******************************/ typedef struct _belle_sip_header_refer_to belle_sip_header_refer_to_t; BELLESIP_EXPORT belle_sip_header_refer_to_t* belle_sip_header_refer_to_new(void); BELLESIP_EXPORT belle_sip_header_refer_to_t* belle_sip_header_refer_to_parse(const char* refer_to) ; BELLESIP_EXPORT belle_sip_header_refer_to_t* belle_sip_header_refer_to_create(const belle_sip_header_address_t *address); #define BELLE_SIP_HEADER_REFER_TO(t) BELLE_SIP_CAST(t,belle_sip_header_refer_to_t) #define BELLE_SIP_REFER_TO "Refer-To" /****************************** * Referred-by header object inherits from header_address ******************************/ typedef struct _belle_sip_header_referred_by belle_sip_header_referred_by_t; BELLESIP_EXPORT belle_sip_header_referred_by_t* belle_sip_header_referred_by_new(void); BELLESIP_EXPORT belle_sip_header_referred_by_t* belle_sip_header_referred_by_parse(const char* referred_by) ; BELLESIP_EXPORT belle_sip_header_referred_by_t* belle_sip_header_referred_by_create(const belle_sip_header_address_t *address); #define BELLE_SIP_HEADER_REFERRED_BY(t) BELLE_SIP_CAST(t,belle_sip_header_referred_by_t) #define BELLE_SIP_REFERRED_BY "Referred-By" /****************************** * Replace header object inherits from parameters ******************************/ typedef struct _belle_sip_header_replaces belle_sip_header_replaces_t; BELLESIP_EXPORT belle_sip_header_replaces_t* belle_sip_header_replaces_new(void); BELLESIP_EXPORT belle_sip_header_replaces_t* belle_sip_header_replaces_parse(const char* replaces) ; BELLESIP_EXPORT belle_sip_header_replaces_t* belle_sip_header_replaces_create(const char* call_id,const char* from_tag,const char* to_tag); /* * Creates a Eeplaces header from an escaped value that can be found in Referred-by header * @param escaped_replace ex : 12345%40192.168.118.3%3Bto-tag%3D12345%3Bfrom-tag%3D5FFE-3994 * @return a newly allocated Replace header * */ BELLESIP_EXPORT belle_sip_header_replaces_t* belle_sip_header_replaces_create2(const char* escaped_replace); BELLESIP_EXPORT const char* belle_sip_header_replaces_get_call_id(const belle_sip_header_replaces_t* obj); BELLESIP_EXPORT const char* belle_sip_header_replaces_get_from_tag(const belle_sip_header_replaces_t* obj); BELLESIP_EXPORT const char* belle_sip_header_replaces_get_to_tag(const belle_sip_header_replaces_t* obj); BELLESIP_EXPORT void belle_sip_header_replaces_set_call_id(belle_sip_header_replaces_t* obj, const char* callid); BELLESIP_EXPORT void belle_sip_header_replaces_set_from_tag(belle_sip_header_replaces_t* obj,const char* from_tag); BELLESIP_EXPORT void belle_sip_header_replaces_set_to_tag(belle_sip_header_replaces_t* obj,const char* to_tag); /*return a newly allocated string with the content of the header value in escaped form. *
Purpose of this function is to be used to set Refer-To uri header Replaces * @param obj Replaces object * @return newly allocated string ex: 12345%40192.168.118.3%3Bto-tag%3D12345%3Bfrom-tag%3D5FFE-3994*/ BELLESIP_EXPORT char* belle_sip_header_replaces_value_to_escaped_string(const belle_sip_header_replaces_t* obj); #define BELLE_SIP_HEADER_REPLACES(t) BELLE_SIP_CAST(t,belle_sip_header_replaces_t) #define BELLE_SIP_REPLACES "Replaces" /****************************** * Date header ******************************/ typedef struct belle_sip_header_date belle_sip_header_date_t; BELLESIP_EXPORT belle_sip_header_date_t* belle_sip_header_date_new(void); BELLESIP_EXPORT belle_sip_header_date_t* belle_sip_header_date_parse(const char* date) ; BELLESIP_EXPORT belle_sip_header_date_t* belle_sip_header_date_create_from_time(const time_t *utc_time); BELLESIP_EXPORT time_t belle_sip_header_date_get_time(belle_sip_header_date_t *obj); BELLESIP_EXPORT void belle_sip_header_date_set_time(belle_sip_header_date_t *obj, const time_t *utc_time); BELLESIP_EXPORT const char * belle_sip_header_date_get_date(const belle_sip_header_date_t *obj); BELLESIP_EXPORT void belle_sip_header_date_set_date(belle_sip_header_date_t *obj, const char *date); #define BELLE_SIP_HEADER_DATE(obj) BELLE_SIP_CAST(obj,belle_sip_header_date_t) #define BELLE_SIP_DATE "Date" /****************************** * P-Preferred-Identity header object inherit from header_address ******************************/ typedef struct _belle_sip_header_p_preferred_identity belle_sip_header_p_preferred_identity_t; BELLESIP_EXPORT belle_sip_header_p_preferred_identity_t* belle_sip_header_p_preferred_identity_new(void); BELLESIP_EXPORT belle_sip_header_p_preferred_identity_t* belle_sip_header_p_preferred_identity_parse(const char* p_preferred_identity) ; BELLESIP_EXPORT belle_sip_header_p_preferred_identity_t* belle_sip_header_p_preferred_identity_create(const belle_sip_header_address_t *address); #define BELLE_SIP_HEADER_P_PREFERRED_IDENTITY(t) BELLE_SIP_CAST(t,belle_sip_header_p_preferred_identity_t) #define BELLE_SIP_P_PREFERRED_IDENTITY "P-Preferred-Identity" /****************************** * Privacy header object inherit from header ******************************/ typedef struct _belle_sip_header_privacy belle_sip_header_privacy_t; BELLESIP_EXPORT belle_sip_header_privacy_t* belle_sip_header_privacy_new(void); BELLESIP_EXPORT belle_sip_header_privacy_t* belle_sip_header_privacy_parse(const char* privacy) ; BELLESIP_EXPORT belle_sip_header_privacy_t* belle_sip_header_privacy_create(const char* privacy); BELLESIP_EXPORT void belle_sip_header_privacy_add_privacy(belle_sip_header_privacy_t* privacy, const char* value); BELLESIP_EXPORT void belle_sip_header_privacy_set_privacy(belle_sip_header_privacy_t* privacy, belle_sip_list_t* privacy_values); BELLESIP_EXPORT belle_sip_list_t* belle_sip_header_privacy_get_privacy(const belle_sip_header_privacy_t* privacy); #define BELLE_SIP_HEADER_PRIVACY(t) BELLE_SIP_CAST(t,belle_sip_header_privacy_t) #define BELLE_SIP_PRIVACY "Privacy" /****************************** * Event header object inherit from parameters ******************************/ typedef struct _belle_sip_header_event belle_sip_header_event_t; BELLESIP_EXPORT belle_sip_header_event_t* belle_sip_header_event_new(void); BELLESIP_EXPORT belle_sip_header_event_t* belle_sip_header_event_parse(const char* event) ; BELLESIP_EXPORT belle_sip_header_event_t* belle_sip_header_event_create(const char* event); BELLESIP_EXPORT const char* belle_sip_header_event_get_package_name(const belle_sip_header_event_t* event); BELLESIP_EXPORT void belle_sip_header_event_set_package_name(belle_sip_header_event_t* event, const char* package_name); BELLESIP_EXPORT const char* belle_sip_header_event_get_id(const belle_sip_header_event_t* event); BELLESIP_EXPORT void belle_sip_header_event_set_id(belle_sip_header_event_t* event, const char* id); #define BELLE_SIP_HEADER_EVENT(t) BELLE_SIP_CAST(t,belle_sip_header_event_t) #define BELLE_SIP_EVENT "Event" /****************************** * Supported header object inherit from header ******************************/ typedef struct _belle_sip_header_supported belle_sip_header_supported_t; BELLESIP_EXPORT belle_sip_header_supported_t* belle_sip_header_supported_new(void); BELLESIP_EXPORT belle_sip_header_supported_t* belle_sip_header_supported_parse(const char* supported) ; BELLESIP_EXPORT belle_sip_header_supported_t* belle_sip_header_supported_create(const char* supported); BELLESIP_EXPORT void belle_sip_header_supported_add_supported(belle_sip_header_supported_t* supported, const char* value); BELLESIP_EXPORT void belle_sip_header_supported_set_supported(belle_sip_header_supported_t* supported, belle_sip_list_t* supported_values); BELLESIP_EXPORT belle_sip_list_t* belle_sip_header_supported_get_supported(const belle_sip_header_supported_t* supported); #define BELLE_SIP_HEADER_SUPPORTED(t) BELLE_SIP_CAST(t,belle_sip_header_supported_t) #define BELLE_SIP_SUPPORTED "Supported" /****************************** * Require header object inherit from header ******************************/ typedef struct _belle_sip_header_require belle_sip_header_require_t; BELLESIP_EXPORT belle_sip_header_require_t* belle_sip_header_require_new(void); BELLESIP_EXPORT belle_sip_header_require_t* belle_sip_header_require_parse(const char* require) ; BELLESIP_EXPORT belle_sip_header_require_t* belle_sip_header_require_create(const char* require); BELLESIP_EXPORT void belle_sip_header_require_add_require(belle_sip_header_require_t* require, const char* value); BELLESIP_EXPORT void belle_sip_header_require_set_require(belle_sip_header_require_t* require, belle_sip_list_t* require_values); BELLESIP_EXPORT belle_sip_list_t* belle_sip_header_require_get_require(const belle_sip_header_require_t* require); #define BELLE_SIP_HEADER_REQUIRE(t) BELLE_SIP_CAST(t,belle_sip_header_require_t) #define BELLE_SIP_REQUIRE "Require" /****************************** * Content Disposition header object inherit from header ******************************/ typedef struct _belle_sip_header_content_disposition belle_sip_header_content_disposition_t; BELLESIP_EXPORT belle_sip_header_content_disposition_t* belle_sip_header_content_disposition_new(void); BELLESIP_EXPORT belle_sip_header_content_disposition_t* belle_sip_header_content_disposition_parse (const char* content_disposition) ; BELLESIP_EXPORT belle_sip_header_content_disposition_t* belle_sip_header_content_disposition_create (const char* content_disposition); BELLESIP_EXPORT const char* belle_sip_header_content_disposition_get_content_disposition(const belle_sip_header_content_disposition_t* content_disposition); BELLESIP_EXPORT void belle_sip_header_content_disposition_set_content_disposition(belle_sip_header_content_disposition_t* obj,const char* content_disposition); #define BELLE_SIP_HEADER_CONTENT_DISPOSITION(t) BELLE_SIP_CAST(t,belle_sip_header_content_disposition_t) #define BELLE_SIP_CONTENT_DISPOSITION "Content-Disposition" /****************************** * Accept header object inherit from parameters ******************************/ typedef struct _belle_sip_header_accept belle_sip_header_accept_t; BELLESIP_EXPORT belle_sip_header_accept_t* belle_sip_header_accept_new(void); BELLESIP_EXPORT belle_sip_header_accept_t* belle_sip_header_accept_parse (const char* accept) ; BELLESIP_EXPORT belle_sip_header_accept_t* belle_sip_header_accept_create (const char* type,const char* sub_type) ; BELLESIP_EXPORT belle_sip_header_accept_t* belle_sip_header_accept_parse (const char* accept) ; BELLESIP_EXPORT const char* belle_sip_header_accept_get_type(const belle_sip_header_accept_t* accept); BELLESIP_EXPORT void belle_sip_header_accept_set_type(belle_sip_header_accept_t* accept,const char* type); BELLESIP_EXPORT const char* belle_sip_header_accept_get_subtype(const belle_sip_header_accept_t* accept); BELLESIP_EXPORT void belle_sip_header_accept_set_subtype(belle_sip_header_accept_t* accept,const char* sub_type); #define BELLE_SIP_HEADER_ACCEPT(t) BELLE_SIP_CAST(t,belle_sip_header_accept_t) #define BELLE_SIP_ACCEPT "Accept" /****************************** * Reason header object inherit from parameters ******************************/ typedef struct _belle_sip_header_reason belle_sip_header_reason_t; BELLESIP_EXPORT belle_sip_header_reason_t* belle_sip_header_reason_new(void); BELLESIP_EXPORT belle_sip_header_reason_t* belle_sip_header_reason_parse (const char* reason) ; BELLESIP_EXPORT const char* belle_sip_header_reason_get_protocol(const belle_sip_header_reason_t* reason); BELLESIP_EXPORT void belle_sip_header_reason_set_protocol(belle_sip_header_reason_t* reason,const char* protocol); BELLESIP_EXPORT int belle_sip_header_reason_get_cause(const belle_sip_header_reason_t* reason); BELLESIP_EXPORT void belle_sip_header_reason_set_cause(belle_sip_header_reason_t* reason,int cause); BELLESIP_EXPORT void belle_sip_header_reason_set_text(belle_sip_header_reason_t* reason,const char* text); BELLESIP_EXPORT const char* belle_sip_header_reason_get_text(const belle_sip_header_reason_t* reason); #define BELLE_SIP_HEADER_REASON(t) BELLE_SIP_CAST(t,belle_sip_header_reason_t) #define BELLE_SIP_REASON "Reason" /****************************** * Authentication-Info header inherit from header ******************************/ typedef struct _belle_sip_header_authentication_info belle_sip_header_authentication_info_t; BELLESIP_EXPORT belle_sip_header_authentication_info_t* belle_sip_header_authentication_info_new(void); BELLESIP_EXPORT belle_sip_header_authentication_info_t* belle_sip_header_authentication_info_parse(const char* authentication_info ); BELLESIP_EXPORT const char* belle_sip_header_authentication_info_get_next_nonce(const belle_sip_header_authentication_info_t* authentication_info ); BELLESIP_EXPORT void belle_sip_header_authentication_info_set_next_nonce(belle_sip_header_authentication_info_t* authentication_info, const char* next_nonce); /*limited to a sinle value*/ BELLESIP_EXPORT const char* belle_sip_header_authentication_info_get_qop(const belle_sip_header_authentication_info_t* authentication_info); BELLESIP_EXPORT void belle_sip_header_authentication_info_set_qop(belle_sip_header_authentication_info_t* authentication_info, const char* qop); BELLESIP_EXPORT const char* belle_sip_header_authentication_info_get_rsp_auth(const belle_sip_header_authentication_info_t* rsp_auth); BELLESIP_EXPORT void belle_sip_header_authentication_info_set_rsp_auth(belle_sip_header_authentication_info_t* authentication_info, const char* rsp_auth); BELLESIP_EXPORT const char* belle_sip_header_authentication_info_get_cnonce(const belle_sip_header_authentication_info_t* authentication_info); BELLESIP_EXPORT void belle_sip_header_authentication_info_set_cnonce(belle_sip_header_authentication_info_t* authentication_info, const char* cNonce); BELLESIP_EXPORT void belle_sip_header_authentication_info_set_nonce_count(belle_sip_header_authentication_info_t* authentication_info, int nonceCount); BELLESIP_EXPORT int belle_sip_header_authentication_info_get_nonce_count(const belle_sip_header_authentication_info_t* authentication_info); #define BELLE_SIP_HEADER_AUTHENTICATION_INFO(t) BELLE_SIP_CAST(t,belle_sip_header_authentication_info_t) #define BELLE_SIP_AUTHENTICATION_INFO "Authentication-Info" BELLE_SIP_END_DECLS #endif /* HEADERS_H_ */ belle-sip-5.2.0+dfsg/include/belle-sip/http-listener.h000066400000000000000000000045041434613136500225740ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef belle_http_listener_h #define belle_http_listener_h struct belle_http_response_event{ belle_sip_object_t *source; belle_http_request_t *request; belle_http_response_t *response; }; typedef struct belle_http_response_event belle_http_response_event_t; #define BELLE_HTTP_INTERFACE_FUNCS(argT) \ void (*process_response_headers)(argT *user_ctx, const belle_http_response_event_t *event); \ void (*process_response)(argT *user_ctx, const belle_http_response_event_t *event); \ void (*process_io_error)(argT *user_ctx, const belle_sip_io_error_event_t *event); \ void (*process_timeout)(argT *user_ctx, const belle_sip_timeout_event_t *event); \ void (*process_auth_requested)(argT *user_ctx, belle_sip_auth_event_t *event); BELLE_SIP_DECLARE_INTERFACE_BEGIN(belle_http_request_listener_t) BELLE_HTTP_INTERFACE_FUNCS(belle_http_request_listener_t) BELLE_SIP_DECLARE_INTERFACE_END struct belle_http_request_listener_callbacks{ BELLE_HTTP_INTERFACE_FUNCS(void) void (*listener_destroyed)(void *user_ctx); }; typedef struct belle_http_request_listener_callbacks belle_http_request_listener_callbacks_t; #define BELLE_HTTP_REQUEST_LISTENER(obj) BELLE_SIP_INTERFACE_CAST(obj,belle_http_request_listener_t) BELLE_SIP_BEGIN_DECLS /** * Creates an object implementing the belle_http_request_listener_t interface. * This object passes the events to the callbacks, providing also the user context. **/ BELLESIP_EXPORT belle_http_request_listener_t *belle_http_request_listener_create_from_callbacks(const belle_http_request_listener_callbacks_t *callbacks, void *user_ctx); BELLE_SIP_END_DECLS #endif belle-sip-5.2.0+dfsg/include/belle-sip/http-message.h000066400000000000000000000052011434613136500223660ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef BELLE_HTTP_MESSAGE_H #define BELLE_HTTP_MESSAGE_H #include "belle-sip/generic-uri.h" #define BELLE_HTTP_REQUEST(obj) BELLE_SIP_CAST(obj,belle_http_request_t) #define BELLE_HTTP_RESPONSE(obj) BELLE_SIP_CAST(obj,belle_http_response_t) BELLE_SIP_BEGIN_DECLS /** * Create an http request. * @param method * @param uri the http uri * @param ... optional list of belle_sip_header_t* to be included in the request, ending with NULL. */ BELLESIP_EXPORT belle_http_request_t *belle_http_request_create(const char *method, belle_generic_uri_t *uri, ...); BELLESIP_EXPORT belle_http_request_t* belle_http_request_new(void); BELLESIP_EXPORT belle_http_request_t* belle_http_request_parse(const char* raw); BELLESIP_EXPORT int belle_http_request_is_cancelled(const belle_http_request_t *req); BELLESIP_EXPORT void belle_http_request_cancel(belle_http_request_t *req); BELLESIP_EXPORT belle_generic_uri_t* belle_http_request_get_uri(const belle_http_request_t* request); BELLESIP_EXPORT void belle_http_request_set_uri(belle_http_request_t* request, belle_generic_uri_t* uri); BELLESIP_EXPORT const char* belle_http_request_get_method(const belle_http_request_t* request); BELLESIP_EXPORT void belle_http_request_set_method(belle_http_request_t* request,const char* method); BELLESIP_EXPORT belle_http_response_t *belle_http_request_get_response(belle_http_request_t *req); /** * http response * */ BELLESIP_EXPORT int belle_http_response_get_status_code(const belle_http_response_t *response); BELLESIP_EXPORT void belle_http_response_set_status_code(belle_http_response_t *response,int status); BELLESIP_EXPORT const char* belle_http_response_get_reason_phrase(const belle_http_response_t *response); BELLESIP_EXPORT void belle_http_response_set_reason_phrase(belle_http_response_t *response,const char* reason_phrase); BELLESIP_EXPORT belle_http_response_t *belle_http_response_new(void); BELLE_SIP_END_DECLS #endif belle-sip-5.2.0+dfsg/include/belle-sip/http-provider.h000066400000000000000000000041371434613136500226030ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef belle_sip_http_provider_h #define belle_sip_http_provider_h BELLE_SIP_BEGIN_DECLS #define BELLE_SIP_HTTP_PROVIDER(obj) BELLE_SIP_CAST(obj,belle_http_provider_t) /** * Set the certificate verify policy for the TLS connection * @return 0 on succes * @deprecated Use belle_http_provider_set_tls_crypto_config() instead */ BELLESIP_DEPRECATED BELLESIP_EXPORT int belle_http_provider_set_tls_verify_policy(belle_http_provider_t *obj, belle_tls_verify_policy_t *verify_ctx); /** * Set the certificate crypto configuration used by this TLS connection * @return 0 on succes */ BELLESIP_EXPORT int belle_http_provider_set_tls_crypto_config(belle_http_provider_t *obj, belle_tls_crypto_config_t *crypto_config); /** * Can be used to simulate network recv error, for tests. * @param obj * @param recv_error if <=0, will cause channel error to be reported **/ BELLESIP_EXPORT void belle_http_provider_set_recv_error(belle_http_provider_t *obj, int recv_error); BELLESIP_EXPORT int belle_http_provider_send_request(belle_http_provider_t *obj, belle_http_request_t *req, belle_http_request_listener_t *listener); BELLESIP_EXPORT void belle_http_provider_cancel_request(belle_http_provider_t *obj, belle_http_request_t *req); BELLESIP_EXPORT belle_sip_list_t** belle_http_provider_get_channels(belle_http_provider_t *obj, const char *transport_name); BELLE_SIP_END_DECLS #endif belle-sip-5.2.0+dfsg/include/belle-sip/list.h000066400000000000000000000046211434613136500207450ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef BELLE_SIP_LIST_H_ #define BELLE_SIP_LIST_H_ #include "bctoolbox/list.h" typedef struct _bctbx_list belle_sip_list_t; #define belle_sip_list_new bctbx_list_new #define belle_sip_list_append bctbx_list_append #define belle_sip_list_prepend bctbx_list_prepend #define belle_sip_list_prepend_link bctbx_list_prepend_link #define belle_sip_list_last_elem bctbx_list_last_elem #define belle_sip_list_free bctbx_list_free #define belle_sip_list_concat bctbx_list_concat #define belle_sip_list_remove bctbx_list_remove #define belle_sip_list_pop_front bctbx_list_pop_front #define belle_sip_list_size bctbx_list_size #define belle_sip_list_for_each bctbx_list_for_each #define belle_sip_list_for_each2 bctbx_list_for_each2 #define belle_sip_list_remove_link bctbx_list_unlink #define belle_sip_list_delete_link bctbx_list_erase_link #define belle_sip_list_find bctbx_list_find #define belle_sip_list_free bctbx_list_free #define belle_sip_list_free_with_data bctbx_list_free_with_data #define belle_sip_list_delete_custom bctbx_list_delete_custom #define belle_sip_list_first_elem bctbx_list_first_elem #define belle_sip_compare_func bctbx_compare_func #define belle_sip_list_find_custom bctbx_list_find_custom #define belle_sip_list_nth_data bctbx_list_nth_data #define belle_sip_list_position bctbx_list_position #define belle_sip_list_index bctbx_list_index #define belle_sip_list_insert_sorted bctbx_list_insert_sorted #define belle_sip_list_insert bctbx_list_insert #define belle_sip_list_copy bctbx_list_copy #define belle_sip_list_copy_with_data bctbx_list_copy_with_data #define belle_sip_list_copy_reverse_with_data bctbx_list_copy_reverse_with_data #endif /* BELLE_SIP_LIST_H_ */ belle-sip-5.2.0+dfsg/include/belle-sip/listener.h000066400000000000000000000226041434613136500216200ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef belle_sip_listener_h #define belle_sip_listener_h BELLE_SIP_BEGIN_DECLS typedef struct belle_sip_dialog_terminated_event belle_sip_dialog_terminated_event_t; typedef struct belle_sip_io_error_event belle_sip_io_error_event_t; typedef struct belle_sip_request_event belle_sip_request_event_t; typedef struct belle_sip_response_event belle_sip_response_event_t; typedef struct belle_sip_timeout_event belle_sip_timeout_event_t; typedef struct belle_sip_transaction_terminated_event belle_sip_transaction_terminated_event_t; typedef struct belle_sip_auth_event belle_sip_auth_event_t; typedef struct belle_sip_certificates_chain belle_sip_certificates_chain_t; typedef struct belle_sip_signing_key belle_sip_signing_key_t; BELLE_SIP_DECLARE_INTERFACE_BEGIN(belle_sip_listener_t) void (*process_dialog_terminated)(belle_sip_listener_t *user_ctx, const belle_sip_dialog_terminated_event_t *event); void (*process_io_error)(belle_sip_listener_t *user_ctx, const belle_sip_io_error_event_t *event); void (*process_request_event)(belle_sip_listener_t *user_ctx, const belle_sip_request_event_t *event); void (*process_response_event)(belle_sip_listener_t *user_ctx, const belle_sip_response_event_t *event); void (*process_timeout)(belle_sip_listener_t *user_ctx, const belle_sip_timeout_event_t *event); void (*process_transaction_terminated)(belle_sip_listener_t *user_ctx, const belle_sip_transaction_terminated_event_t *event); void (*process_auth_requested)(belle_sip_listener_t *user_ctx, belle_sip_auth_event_t *event); BELLE_SIP_DECLARE_INTERFACE_END #define BELLE_SIP_LISTENER(obj) BELLE_SIP_INTERFACE_CAST(obj,belle_sip_listener_t) /*Response event*/ BELLESIP_EXPORT belle_sip_response_t* belle_sip_response_event_get_response(const belle_sip_response_event_t* event); BELLESIP_EXPORT belle_sip_client_transaction_t *belle_sip_response_event_get_client_transaction(const belle_sip_response_event_t* event); BELLESIP_EXPORT belle_sip_dialog_t *belle_sip_response_event_get_dialog(const belle_sip_response_event_t* event); /*Request event*/ BELLESIP_EXPORT belle_sip_request_t* belle_sip_request_event_get_request(const belle_sip_request_event_t* event); BELLESIP_EXPORT belle_sip_server_transaction_t *belle_sip_request_event_get_server_transaction(const belle_sip_request_event_t* event); BELLESIP_EXPORT belle_sip_dialog_t *belle_sip_request_event_get_dialog(const belle_sip_request_event_t* event); /*Dialog terminated event*/ BELLESIP_EXPORT belle_sip_dialog_t* belle_sip_dialog_terminated_event_get_dialog(const belle_sip_dialog_terminated_event_t *event); BELLESIP_EXPORT int belle_sip_dialog_terminated_event_is_expired(const belle_sip_dialog_terminated_event_t *event); /** * Timeout Event */ BELLESIP_EXPORT belle_sip_client_transaction_t *belle_sip_timeout_event_get_client_transaction(const belle_sip_timeout_event_t* event); belle_sip_server_transaction_t *belle_sip_timeout_event_get_server_transaction(const belle_sip_timeout_event_t* event); /** * Transaction Termonated Event */ BELLESIP_EXPORT belle_sip_client_transaction_t *belle_sip_transaction_terminated_event_get_client_transaction(const belle_sip_transaction_terminated_event_t* event); BELLESIP_EXPORT belle_sip_server_transaction_t *belle_sip_transaction_terminated_event_get_server_transaction(const belle_sip_transaction_terminated_event_t* event); /** * auth event mode * */ typedef enum belle_sip_auth_mode { BELLE_SIP_AUTH_MODE_HTTP_DIGEST, /** Digest authentication has been requested by the server*/ BELLE_SIP_AUTH_MODE_TLS /** Client certificate has been requested by the server*/ } belle_sip_auth_mode_t; BELLESIP_EXPORT void belle_sip_auth_event_destroy(belle_sip_auth_event_t* event); BELLESIP_EXPORT const char* belle_sip_auth_event_get_username(const belle_sip_auth_event_t* event); BELLESIP_EXPORT void belle_sip_auth_event_set_username(belle_sip_auth_event_t* event, const char* value); BELLESIP_EXPORT const char* belle_sip_auth_event_get_userid(const belle_sip_auth_event_t* event); BELLESIP_EXPORT void belle_sip_auth_event_set_userid(belle_sip_auth_event_t* event, const char* value); BELLESIP_EXPORT const char* belle_sip_auth_event_get_realm(const belle_sip_auth_event_t* event); BELLESIP_EXPORT void belle_sip_auth_event_set_realm(belle_sip_auth_event_t* event, const char* value); BELLESIP_EXPORT const char* belle_sip_auth_event_get_algorithm(const belle_sip_auth_event_t* event); BELLESIP_EXPORT void belle_sip_auth_event_set_algorithm(belle_sip_auth_event_t* event, const char* value); BELLESIP_EXPORT const char* belle_sip_auth_event_get_domain(const belle_sip_auth_event_t* event); BELLESIP_EXPORT void belle_sip_auth_event_set_domain(belle_sip_auth_event_t* event, const char* value); BELLESIP_EXPORT const char* belle_sip_auth_event_get_passwd(const belle_sip_auth_event_t* event); BELLESIP_EXPORT void belle_sip_auth_event_set_passwd(belle_sip_auth_event_t* event, const char* value); BELLESIP_EXPORT const char* belle_sip_auth_event_get_ha1(const belle_sip_auth_event_t* event); BELLESIP_EXPORT void belle_sip_auth_event_set_ha1(belle_sip_auth_event_t* event, const char* value); /** * get the authentication mode requested by the server, can be either TLS client certificates of http digest * @param event * @return belle_sip_auth_mode_t * */ BELLESIP_EXPORT belle_sip_auth_mode_t belle_sip_auth_event_get_mode(const belle_sip_auth_event_t* event); /** * In case of TLS auth, get value of the distinguished name sent by the server * @param event * @return DN has sent by the server * */ BELLESIP_EXPORT const char* belle_sip_auth_event_get_distinguished_name(const belle_sip_auth_event_t* event); /** * get client certificate * @return belle_sip_certificate_t* * */ BELLESIP_EXPORT belle_sip_certificates_chain_t* belle_sip_auth_event_get_client_certificates_chain(const belle_sip_auth_event_t* event); /** * set client certificate to be sent in answer to the certificate request issued by the server for the DN belle_sip_auth_event_get_distinguished_name() name * @return belle_sip_certificate_t* * */ BELLESIP_EXPORT void belle_sip_auth_event_set_client_certificates_chain(belle_sip_auth_event_t* event, belle_sip_certificates_chain_t* value); /** * get client certificate private key * @return belle_sip_signing_key_t* * */ BELLESIP_EXPORT belle_sip_signing_key_t* belle_sip_auth_event_get_signing_key(const belle_sip_auth_event_t* event); /** * set the private key attached to the client certificate. * @param event belle_sip_auth_event_t * @param value belle_sip_signing_key_t signing key * */ BELLESIP_EXPORT void belle_sip_auth_event_set_signing_key(belle_sip_auth_event_t* event, belle_sip_signing_key_t* value); /*Io error event*/ /* * Give access to the remote host * @param event object * @return host value the socket is pointing to * */ const char* belle_sip_io_error_event_get_host(const belle_sip_io_error_event_t* event); /* * Give access to the used transport * @param event object * @return host value the socket is pointing to * */ const char* belle_sip_io_error_event_get_transport(const belle_sip_io_error_event_t* event); /* * Give access to the remote port * @param event object * @return port value the socket is pointing to * */ unsigned int belle_sip_io_error_event_port(const belle_sip_io_error_event_t* event); /* * Get access to the object involved in this error, can be either belle_sip_dialog_t or belle_sip_transaction_t or belle_sip_provider_t * @param event * @return belle_sip_object_t source, use belle_sip_object_is_instance_of to check returns type * */ BELLESIP_EXPORT belle_sip_object_t* belle_sip_io_error_event_get_source(const belle_sip_io_error_event_t* event); struct belle_sip_listener_callbacks{ void (*process_dialog_terminated)(void *user_ctx, const belle_sip_dialog_terminated_event_t *event); void (*process_io_error)(void *user_ctx, const belle_sip_io_error_event_t *event); void (*process_request_event)(void *user_ctx, const belle_sip_request_event_t *event); void (*process_response_event)(void *user_ctx, const belle_sip_response_event_t *event); void (*process_timeout)(void *user_ctx, const belle_sip_timeout_event_t *event); void (*process_transaction_terminated)(void *user_ctx, const belle_sip_transaction_terminated_event_t *event); void (*process_auth_requested)(void *user_ctx, belle_sip_auth_event_t *auth_event); void (*listener_destroyed)(void *user_ctx); }; typedef struct belle_sip_listener_callbacks belle_sip_listener_callbacks_t; /** * Creates an object implementing the belle_sip_listener_t interface. * This object passes the events to the callbacks, providing also the user context. **/ BELLESIP_EXPORT belle_sip_listener_t *belle_sip_listener_create_from_callbacks(const belle_sip_listener_callbacks_t *callbacks, void *user_ctx); BELLE_SIP_END_DECLS #endif belle-sip-5.2.0+dfsg/include/belle-sip/listeningpoint.h000066400000000000000000000106251434613136500230410ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef BELLE_SIP_TRANSPORT_H #define BELLE_SIP_TRANSPORT_H BELLE_SIP_BEGIN_DECLS /*This is passed as port information to listening point URIs and means that it shall use a random port.*/ #define BELLE_SIP_LISTENING_POINT_RANDOM_PORT (-1) /*This is passed as port information to listening point URIs and means that it shall not bind.*/ #define BELLE_SIP_LISTENING_POINT_DONT_BIND (-2) BELLESIP_EXPORT const char *belle_sip_listening_point_get_ip_address(const belle_sip_listening_point_t *lp); BELLESIP_EXPORT int belle_sip_listening_point_get_port(const belle_sip_listening_point_t *lp); BELLESIP_EXPORT const char *belle_sip_listening_point_get_transport(const belle_sip_listening_point_t *lp); BELLESIP_EXPORT const char *belle_sip_listening_point_get_ip_address(const belle_sip_listening_point_t *lp); /* * set keep alive frequency in ms * @param lp object * @param ms keep alive period in ms. Values <=0 disable keep alive * */ BELLESIP_EXPORT void belle_sip_listening_point_set_keep_alive(belle_sip_listening_point_t *lp, int ms); /* * sends a keep alive right away * @param lp object * */ BELLESIP_EXPORT void belle_sip_listening_point_send_keep_alive(belle_sip_listening_point_t *lp); /* * get keep alive frequency in ms * @param lp object * @return keep alive period in ms. Values <=0 disable keep alive * */ BELLESIP_EXPORT int belle_sip_listening_point_get_keep_alive(const belle_sip_listening_point_t *lp); /** * get the listening information as an URI * @return IP/port/transport as an URI */ BELLESIP_EXPORT const belle_sip_uri_t* belle_sip_listening_point_get_uri(const belle_sip_listening_point_t *ip); BELLESIP_EXPORT int belle_sip_listening_point_is_reliable(const belle_sip_listening_point_t *lp); /** * Clean (close) all channels (connection) managed by this listening point. **/ BELLESIP_EXPORT void belle_sip_listening_point_clean_channels(belle_sip_listening_point_t *lp); /* * Clean unreliable channels. * See belle_sip_provider_clean_unreliable_channels() for a detailed explanation. */ BELLESIP_EXPORT void belle_sip_listening_point_clean_unreliable_channels(belle_sip_listening_point_t *lp); /** * Get the number of channels managed by this listening point. **/ BELLESIP_EXPORT int belle_sip_listening_point_get_channel_count(const belle_sip_listening_point_t *lp); BELLESIP_EXPORT int belle_sip_listening_point_get_well_known_port(const char *transport); BELLESIP_DEPRECATED BELLESIP_EXPORT int belle_sip_tls_listening_point_set_root_ca(belle_sip_tls_listening_point_t *s, const char *path); #define BELLE_SIP_TLS_LISTENING_POINT_BADCERT_CN_MISMATCH BELLE_TLS_VERIFY_CN_MISMATCH #define BELLE_SIP_TLS_LISTENING_POINT_BADCERT_ANY_REASON BELLE_TLS_VERIFY_ANY_REASON BELLESIP_DEPRECATED BELLESIP_EXPORT int belle_sip_tls_listening_point_set_verify_exceptions(belle_sip_tls_listening_point_t *s, int flags); BELLESIP_DEPRECATED BELLESIP_EXPORT int belle_sip_tls_listening_point_set_verify_policy(belle_sip_tls_listening_point_t *s, belle_tls_verify_policy_t *pol); BELLESIP_EXPORT int belle_sip_tls_listening_point_set_crypto_config(belle_sip_tls_listening_point_t *s, belle_tls_crypto_config_t *crypto_config); BELLESIP_EXPORT belle_tls_crypto_config_t *belle_sip_tls_listening_point_get_crypto_config(belle_sip_tls_listening_point_t *s); BELLESIP_EXPORT belle_sip_listening_point_t * belle_sip_tunnel_listening_point_new(belle_sip_stack_t *s, void *tunnelclient); #define BELLE_SIP_UDP_LISTENING_POINT(obj) BELLE_SIP_CAST(obj,belle_sip_udp_listening_point_t) #define BELLE_SIP_STREAM_LISTENING_POINT(obj) BELLE_SIP_CAST(obj,belle_sip_stream_listening_point_t) #define BELLE_SIP_TLS_LISTENING_POINT(obj) BELLE_SIP_CAST(obj,belle_sip_tls_listening_point_t) BELLE_SIP_END_DECLS #endif belle-sip-5.2.0+dfsg/include/belle-sip/mainloop.h000066400000000000000000000263741434613136500216210ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef BELLE_SIP_MAINLOOP_H #define BELLE_SIP_MAINLOOP_H #include "defs.h" #include "utils.h" #include "types.h" #define BELLE_SIP_EVENT_READ 1 #define BELLE_SIP_EVENT_WRITE (1<<1) #define BELLE_SIP_EVENT_ERROR (1<<2) #define BELLE_SIP_EVENT_TIMEOUT (1<<3) typedef struct belle_sip_source belle_sip_source_t; BELLESIP_EXPORT int belle_sip_source_set_events(belle_sip_source_t* source, int event_mask); BELLESIP_EXPORT belle_sip_socket_t belle_sip_source_get_socket(const belle_sip_source_t* source); /** * Callback function prototype for main loop notifications. * Return value is important: * BELLE_SIP_STOP => source is removed from main loop. * BELLE_SIP_CONTINUE => source is kept, timeout is restarted if any according to last expiry time * BELLE_SIP_CONTINUE_WITHOUT_CATCHUP => source is kept, timeout is restarted if any according to current time **/ typedef int (*belle_sip_source_func_t)(void *user_data, unsigned int events); /* * Call back fonction invoked when source is removed from main loop */ typedef void (*belle_sip_source_remove_callback_t)(belle_sip_source_t *); typedef void (*belle_sip_callback_t)(void *user_data); typedef struct belle_sip_main_loop belle_sip_main_loop_t; #define BELLE_SIP_CONTINUE_WITHOUT_CATCHUP 2 #define BELLE_SIP_CONTINUE 1 #define BELLE_SIP_STOP 0 BELLE_SIP_BEGIN_DECLS BELLESIP_EXPORT void belle_sip_main_loop_add_source(belle_sip_main_loop_t *ml, belle_sip_source_t *source); BELLESIP_EXPORT void belle_sip_main_loop_remove_source(belle_sip_main_loop_t *ml, belle_sip_source_t *source); /** * Creates a mainloop. **/ BELLESIP_EXPORT belle_sip_main_loop_t *belle_sip_main_loop_new(void); /** * Adds a timeout into the main loop * @param ml * @param func a callback function to be called to notify timeout expiration * @param data a pointer to be passed to the callback * @param timeout_value_ms duration of the timeout. * @returns timeout id **/ BELLESIP_EXPORT unsigned long belle_sip_main_loop_add_timeout(belle_sip_main_loop_t *ml, belle_sip_source_func_t func, void *data, unsigned int timeout_value_ms); /** * Adds a timeout into the main loop * The caller of this function is responsible for freeing (with belle_sip_object_unref()) the returned belle_sip_source_t object when it is no longer * needed. * @param ml * @param func a callback function to be called to notify timeout expiration * @param data a pointer to be passed to the callback * @param timeout_value_ms duration of the timeout. * @param timer_name name of the timer, can be null * @returns timeout belle_sip_source_t with ref count = 1 **/ BELLESIP_EXPORT belle_sip_source_t* belle_sip_main_loop_create_timeout(belle_sip_main_loop_t *ml , belle_sip_source_func_t func , void *data , unsigned int timeout_value_ms ,const char* timer_name); /** * Adds a timeout into the main loop * The caller of this function is responsible for freeing (with belle_sip_object_unref()) the returned belle_sip_source_t object when it is no longer * needed. * @param ml * @param func a callback function to be called to notify timeout expiration * @param data a pointer to be passed to the callback * @param timeout_value_ms duration of the timeout. * @param timer_name name of the timer, can be null * @param function called when source is removed, can be null * @returns timeout belle_sip_source_t with ref count = 1 **/ BELLESIP_EXPORT belle_sip_source_t* belle_sip_main_loop_create_timeout_with_remove_cb (belle_sip_main_loop_t *ml , belle_sip_source_func_t func , void *data , unsigned int timeout_value_ms , const char* timer_name , belle_sip_source_remove_callback_t remove_func); /** * Schedule an arbitrary task at next main loop iteration. * @note thread-safe **/ BELLESIP_EXPORT void belle_sip_main_loop_do_later(belle_sip_main_loop_t *ml, belle_sip_callback_t func, void *data); /** * Same as #belle_sip_main_loop_do_later() but allow to give a name to the task. * @param[in] timer_name The name of the task. If NULL, the task will be named as though * #belle_sip_main_loop_do_later() was called. * @note thread-safe **/ BELLESIP_EXPORT void belle_sip_main_loop_do_later_with_name( belle_sip_main_loop_t *ml, belle_sip_callback_t func, void *data, const char *timer_name ); /** * Creates a timeout source, similarly to belle_sip_main_loop_add_timeout(). * However in this case the timeout must be entered manually using belle_sip_main_loop_add_source(). * Its pointer can be used to remove it from the source (that is cancelling it). **/ BELLESIP_EXPORT belle_sip_source_t * belle_sip_timeout_source_new(belle_sip_source_func_t func, void *data, unsigned int timeout_value_ms); /** * Set the timeout duration. * @param[in] s The source to modify. * @param[in] value_ms The new timeout duration in milliseconds. Only values in [0;INT_MAX] are valid to define a new * duration. Higher values will cause the timer to be disabled. * @deprecated Since 2020-05-20 (SDK 4.4). Use belle_sip_source_set_timeout_int64() instead. */ BELLESIP_DEPRECATED BELLESIP_EXPORT void belle_sip_source_set_timeout(belle_sip_source_t *s, unsigned int value_ms); /** * Set the timeout duration. * @param[in] s The source to modify. * @param[in] value_ms Positive values willbe taken as the new duration to set. Negative values will cause the timer * to be disabled. */ BELLESIP_EXPORT void belle_sip_source_set_timeout_int64(belle_sip_source_t *s, int64_t value_ms); /** * Cancel a source. Will be removed at next iterate. It is not freed. **/ BELLESIP_EXPORT void belle_sip_source_cancel(belle_sip_source_t * src); BELLESIP_DEPRECATED BELLESIP_EXPORT unsigned int belle_sip_source_get_timeout(const belle_sip_source_t *s); BELLESIP_EXPORT int64_t belle_sip_source_get_timeout_int64(const belle_sip_source_t *s); BELLESIP_EXPORT belle_sip_source_t * belle_sip_socket_source_new(belle_sip_source_func_t func, void *data, belle_sip_socket_t fd, unsigned int events, unsigned int timeout_value_ms); /* * register a callback invoked once source is removed from mainloop */ BELLESIP_EXPORT void belle_sip_source_set_remove_cb(belle_sip_source_t *s, belle_sip_source_remove_callback_t func); BELLESIP_EXPORT unsigned long belle_sip_source_get_id(const belle_sip_source_t *s); BELLESIP_EXPORT void * belle_sip_source_get_user_data(const belle_sip_source_t *s); BELLESIP_EXPORT void belle_sip_source_set_user_data(belle_sip_source_t *s, void *user_data); BELLESIP_EXPORT belle_sip_source_t *belle_sip_main_loop_find_source(belle_sip_main_loop_t *ml, unsigned long id); /** * Executes the main loop forever (or until belle_sip_main_loop_quit() is called) **/ BELLESIP_EXPORT void belle_sip_main_loop_run(belle_sip_main_loop_t *ml); /** * Executes the main loop for the time specified in milliseconds. **/ BELLESIP_EXPORT void belle_sip_main_loop_sleep(belle_sip_main_loop_t *ml, int milliseconds); /** * Break out the main loop. **/ BELLESIP_EXPORT int belle_sip_main_loop_quit(belle_sip_main_loop_t *ml); /** * Cancel (removes) a source. It is not freed. **/ BELLESIP_EXPORT void belle_sip_main_loop_cancel_source(belle_sip_main_loop_t *ml, unsigned long id); BELLE_SIP_END_DECLS #if (defined(WIN32) && defined(__cplusplus)) || __cplusplus >= 201103L /*Only Visual Studio 2018 properly defines __cplusplus according to c++ level. */ #include #include /** * A generic deleter for belle_sip_object_t objects that limits itself to decrementing the * reference counter. This class is to be used by std::unique_ptr and std::shared_ptr maybe. */ template struct BelleSipObjectDeleter { constexpr BelleSipObjectDeleter() noexcept = default; void operator()(T *ptr) const noexcept {belle_sip_object_unref(ptr);} }; using BelleSipSourcePtr = std::unique_ptr>; using belle_sip_source_cpp_func_t = std::function; using BelleSipDoLaterFunc = std::function; /** * The purpose of this function is to simplify c++ timer integration. * ex: * std::string helloworld("Hello world): * belle_sip_source_cpp_func_t *func = new belle_sip_source_cpp_func_t([helloworld](unsigned int events) { * std::cout << helloworld << std::endl; * return BELLE_SIP_STOP; * }); * // create timer * belle_sip_source_t *timer = belle_sip_main_loop_create_cpp_timeout( mainloop * , func * , 1000 * ,"timer for c++"); * [...] * // Unref the timer when you doesn't need it anymore * belle_sip_object_unref(timer); * * @warning Not thread-sfae * @deprecated Since 2020-04-17. */ BELLESIP_DEPRECATED BELLESIP_EXPORT belle_sip_source_t *belle_sip_main_loop_create_cpp_timeout(belle_sip_main_loop_t *ml , belle_sip_source_cpp_func_t *func , unsigned int timeout_value_ms , const char* timer_name); /* * This variant does the same except that: * - it does not require to pass the std::function as a pointer allocated with new() * - the std::function shall return true/false instead of BELLE_SIP_CONTINUE/BELLE_SIP_STOP. */ BELLESIP_EXPORT belle_sip_source_t * belle_sip_main_loop_create_cpp_timeout_2(belle_sip_main_loop_t *ml, const std::function &func, unsigned int timeout_value_ms, const std::string &timer_name); /** * The purpose of this function is to simplify c++ timer integration. * Unlike the deprecated overload of this function, there is no need to * allocate anything with new and to unref the timer. * * ex: * std::string helloworld{"Hello world}; * auto func = [helloworld](unsigned int events) { * std::cout << helloworld << std::endl; * return BELLE_SIP_STOP; * }); * * // create the timer * auto timer = belle_sip_main_loop_create_cpp_timeout( mainloop * , func * , 1000 * ,"timer for c++"); * */ BELLESIP_EXPORT BelleSipSourcePtr belle_sip_main_loop_create_cpp_timeout(belle_sip_main_loop_t *ml , const belle_sip_source_cpp_func_t &func , unsigned int timeout_value_ms , const char* timer_name); /** * C++ wrapper for #belle_sip_main_loop_do_later(). * @note thread-safe */ BELLESIP_EXPORT void belle_sip_main_loop_cpp_do_later(belle_sip_main_loop_t *ml, const BelleSipDoLaterFunc &func); /** * Overload of the previous function that allow to give a name to the task. * @note thread-safe */ BELLESIP_EXPORT void belle_sip_main_loop_cpp_do_later( belle_sip_main_loop_t *ml, const BelleSipDoLaterFunc &func, const char *task_name ); #endif // C++ declarations #endif // #ifndef BELLE_SIP_MAINLOOP_H belle-sip-5.2.0+dfsg/include/belle-sip/mdns_register.h000066400000000000000000000056271434613136500226460ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef BELLE_SIP_MDNS_REGISTER_H #define BELLE_SIP_MDNS_REGISTER_H typedef struct belle_sip_mdns_register belle_sip_mdns_register_t; #define BELLE_SIP_MDNS_REGISTER(obj) BELLE_SIP_CAST(obj,belle_sip_mdns_register_t) /** * Callback prototype for asynchronous multicast DNS registration (advertisement). */ typedef void (*belle_sip_mdns_register_callback_t)(void *data, int error); BELLE_SIP_BEGIN_DECLS #ifdef __cplusplus extern "C" { #endif /** * Tells if multicast DNS is available. * @return true if it is available, false otherwise. **/ BELLESIP_EXPORT int belle_sip_mdns_register_available(void); /** * Asynchronously performs the mdns registration (advertisement). * @param service the queried service ("sip", "stun", "turn"...). * @param transport the queried transport ("udp", "tcp", "tls"). * @param domain the local domain name in which the service will be registered. * @param name the name of the mdns service, if NULL it is the computer's name. Only useful for multiple registrations to avoid conflicts. * @param port the port of the service. * @param priority the priority of the service, lower value means more preferred. * @param weight a relative weight for services within the same local domain that have the same priority, higher value means more preferred. * @param ttl the time to live of the resulted srv * @param cb a callback function that will be called to notify the results. * @param data a user pointer passed through the callback as first argument. * @return a #belle_sip_register_t that can be used to cancel the registration if needed. The context must have been ref'd with belle_sip_object_ref(). **/ BELLESIP_EXPORT belle_sip_mdns_register_t *belle_sip_mdns_register(const char *service, const char *transport, const char *domain, const char* name, int port, int prio, int weight, int ttl, belle_sip_mdns_register_callback_t cb, void *data); /** * Cancels the mdns registration. * @param context the belle_sip_mdns_register_t used to register the service. **/ BELLESIP_EXPORT void belle_sip_mdns_unregister(belle_sip_mdns_register_t *context); #ifdef __cplusplus } /* end extern "C" */ #endif BELLE_SIP_END_DECLS #endif /* BELLE_SIP_MDNS_REGISTER_H */ belle-sip-5.2.0+dfsg/include/belle-sip/message.h000066400000000000000000000170701434613136500214200ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef BELLE_SIP_MESSAGE_H #define BELLE_SIP_MESSAGE_H #include "belle-sip/headers.h" #define BELLE_SIP_MESSAGE(obj) BELLE_SIP_CAST(obj,belle_sip_message_t) #define BELLE_SIP_REQUEST(obj) BELLE_SIP_CAST(obj,belle_sip_request_t) #define BELLE_SIP_RESPONSE(obj) BELLE_SIP_CAST(obj,belle_sip_response_t) BELLE_SIP_BEGIN_DECLS BELLESIP_EXPORT belle_sip_message_t* belle_sip_message_parse(const char* raw); /** * Parse sip message from a raw buffer * @param [in] buff buffer to be parsed * @param [in] buff_length size of the buffer to be parsed * @param [out] message_length number of bytes read * @return parsed message */ BELLESIP_EXPORT belle_sip_message_t* belle_sip_message_parse_raw (const char* buff, size_t buff_length,size_t* message_length ); BELLESIP_EXPORT int belle_sip_message_is_request(belle_sip_message_t *msg); BELLESIP_EXPORT belle_sip_request_t* belle_sip_request_new(void); BELLESIP_EXPORT belle_sip_request_t* belle_sip_request_parse(const char* raw); BELLESIP_EXPORT belle_sip_request_t* belle_sip_request_create(belle_sip_uri_t *requri, const char* method, belle_sip_header_call_id_t *callid, belle_sip_header_cseq_t *cseq, belle_sip_header_from_t *from, belle_sip_header_to_t *to, belle_sip_header_via_t *via, int max_forwards); BELLESIP_EXPORT belle_sip_uri_t* belle_sip_request_get_uri(const belle_sip_request_t* request); BELLESIP_EXPORT void belle_sip_request_set_uri(belle_sip_request_t* request, belle_sip_uri_t* uri); BELLESIP_EXPORT const char* belle_sip_request_get_method(const belle_sip_request_t* request); BELLESIP_EXPORT void belle_sip_request_set_method(belle_sip_request_t* request,const char* method); /** * Guess the origin of the received sip message from VIA header (thanks to received/rport) * @param req request to be analyzed * @ return a newly allocated uri * */ BELLESIP_EXPORT belle_sip_uri_t* belle_sip_request_extract_origin(const belle_sip_request_t* req); /** * Clone all sip headers + body if any * @param req message to be cloned * @return newly allocated request */ BELLESIP_EXPORT belle_sip_request_t * belle_sip_request_clone_with_body(const belle_sip_request_t *initial_req); /** * returns an absolute uri. A header address cannot have both a sip uri and an absolute uri. */ BELLESIP_EXPORT belle_generic_uri_t* belle_sip_request_get_absolute_uri(const belle_sip_request_t* req); /** * set an absolute uri. A header address cannot have both a sip uri and an absolute uri. This function also to uri to NULL */ BELLESIP_EXPORT void belle_sip_request_set_absolute_uri(belle_sip_request_t* req, belle_generic_uri_t* uri); BELLESIP_EXPORT int belle_sip_message_is_response(const belle_sip_message_t *msg); BELLESIP_EXPORT belle_sip_header_t *belle_sip_message_get_header(const belle_sip_message_t *msg, const char *header_name); BELLESIP_EXPORT int belle_sip_header_supported_contains_tag(const belle_sip_header_supported_t* supported, const char* tag); BELLESIP_EXPORT belle_sip_object_t *_belle_sip_message_get_header_by_type_id(const belle_sip_message_t *message, belle_sip_type_id_t id); #define belle_sip_message_get_header_by_type(msg,header_type)\ (header_type*)_belle_sip_message_get_header_by_type_id(BELLE_SIP_MESSAGE(msg),BELLE_SIP_TYPE_ID(header_type)) BELLESIP_EXPORT const belle_sip_list_t* belle_sip_message_get_headers(const belle_sip_message_t *message,const char* header_name); /** * Get list of all headers present in the message. * @param message * @return a newly allocated list of belle_sip_header_t * */ BELLESIP_EXPORT belle_sip_list_t* belle_sip_message_get_all_headers(const belle_sip_message_t *message); BELLESIP_EXPORT void belle_sip_message_add_first(belle_sip_message_t *msg, belle_sip_header_t* header); /** * add an header to this message * @param msg * @param header to add, must be one of header type */ BELLESIP_EXPORT void belle_sip_message_add_header(belle_sip_message_t *msg, belle_sip_header_t* header); BELLESIP_EXPORT void belle_sip_message_add_headers(belle_sip_message_t *message, const belle_sip_list_t *header_list); BELLESIP_EXPORT void belle_sip_message_set_header(belle_sip_message_t *msg, belle_sip_header_t* header); BELLESIP_EXPORT void belle_sip_message_remove_first(belle_sip_message_t *msg, const char *header_name); BELLESIP_EXPORT void belle_sip_message_remove_last(belle_sip_message_t *msg, const char *header_name); BELLESIP_EXPORT void belle_sip_message_remove_header(belle_sip_message_t *msg, const char *header_name); BELLESIP_EXPORT void belle_sip_message_remove_header_from_ptr(belle_sip_message_t *msg, belle_sip_header_t* header); BELLESIP_EXPORT char *belle_sip_message_to_string(belle_sip_message_t *msg); BELLESIP_EXPORT belle_sip_body_handler_t *belle_sip_message_get_body_handler(const belle_sip_message_t *msg); BELLESIP_EXPORT void belle_sip_message_set_body_handler(belle_sip_message_t *msg, belle_sip_body_handler_t *body_handler); BELLESIP_EXPORT const char* belle_sip_message_get_body(belle_sip_message_t *msg); BELLESIP_EXPORT size_t belle_sip_message_get_body_size(const belle_sip_message_t *msg); BELLESIP_EXPORT void belle_sip_message_set_body(belle_sip_message_t *msg,const char* body,size_t size); BELLESIP_EXPORT void belle_sip_message_assign_body(belle_sip_message_t *msg, char* body, size_t size); BELLESIP_EXPORT int belle_sip_response_get_status_code(const belle_sip_response_t *response); BELLESIP_EXPORT void belle_sip_response_set_status_code(belle_sip_response_t *response,int status); BELLESIP_EXPORT const char* belle_sip_response_get_reason_phrase(const belle_sip_response_t *response); BELLESIP_EXPORT void belle_sip_response_set_reason_phrase(belle_sip_response_t *response,const char* reason_phrase); BELLESIP_EXPORT belle_sip_response_t *belle_sip_response_new(void); BELLESIP_EXPORT belle_sip_response_t *belle_sip_response_create_from_request(belle_sip_request_t *req, int status_code); /** * This method takes received/rport/via value of the reponse and update the contact IP/port accordingly * @param response use to extract via/received/rport from top most via. * @param contact contact to be updated * @returns 0 if no error * */ BELLESIP_EXPORT int belle_sip_response_fix_contact(const belle_sip_response_t* response,belle_sip_header_contact_t* contact); /** * Check for mandatory headers and parameters. * If message does not satisfy minimum requirements return FALSE, otherwise return TRUE. **/ BELLESIP_EXPORT int belle_sip_message_check_headers(const belle_sip_message_t* message); /** * check uri components of headers and req uri. * return 0 if not compliant * */ BELLESIP_EXPORT int belle_sip_request_check_uris_components(const belle_sip_request_t* request); BELLE_SIP_END_DECLS #endif belle-sip-5.2.0+dfsg/include/belle-sip/object++.hh000066400000000000000000000222021434613136500215310ustar00rootroot00000000000000/* belle-sip - SIP (RFC3261) library. Copyright (C) 2019 Belledonne Communications SARL This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #ifndef belle_sip_object_plusplus_h #define belle_sip_object_plusplus_h #include "belle-sip/types.h" #include "belle-sip/object.h" #include "belle-sip/utils.h" #include #include #include namespace bellesip { class ObjectCAccessors; class BELLESIP_EXPORT Object{ friend ObjectCAccessors; public: Object(); Object *ref(); const Object *ref() const; void unref(); //Overrides should keep the size of toString() lower than BELLE_SIP_MAX_TO_STRING_SIZE virtual std::string toString() const; virtual Object *clone()const; belle_sip_cpp_object_t *getCObject(); const belle_sip_cpp_object_t *getCObject()const; void *getCPtr(){ return static_cast(getCObject()); } const void *getCPtr()const{ return static_cast(getCObject()); } static Object *getCppObject(void *); static const Object *getCppObject(const void *); protected: virtual ~Object(); /*the destructor must be kept protected, never public, including for all classes inherting from this*/ Object(const Object &other); void constUnref()const; private: void init(); mutable belle_sip_cpp_object_t mObject; belle_sip_error_code marshal(char* buff, size_t buff_size, size_t *offset); }; /** * Template class to help define an Object usable in both C and C++ * The template arguments are: * - _CType : the type used to represent this object in C * - _CppType : the type used in C++ to implement this object. _CppType is used to be set to the type * of the class inheriting from HybridObject. * Example: * typedef struct _CExample CExample; * class Example : public HybridObject{ * ... * } * The C object can be obtained with toC() method, directly casted in the expected type. * The C++ object can be obtained from C object with static method toCpp(). * * VERY IMPORTANT USAGE RULES: * - The destructor MUST be kept protected so that no one can call delete operator on the object. Instead unref() must be used. * - make_shared<>() or shared_ptr<>(new ...) MUST NOT be used to instanciate an HybridObject, use create() instead. * * A shared_ptr<> can be obtained at any time from an HybridObject using getSharedFromThis(). * The static getSharedFromThis(_Ctype*) method can be used to directly obtain a shared_ptr from the C object. * * The clone() method must be overriden to return a new _CppType contructed with copy contructor, * or return nullptr if the object is defined to be not clonable. * * Rational for using this template: * - You have an existing library in C where all C objects are inheriting from belle_sip_object_t (for refcounting, data_set etc...). * - You want to use C++ in your library without making any disruption in the API. * IMPORTANT: * If you don't care about belle_sip_object_t inheritance in your C api, * or if you don't need any C api associated to this object at all, DON'T USE THIS. * An usage example is shown in tester/object_tester.cc . **/ template class HybridObject : public Object { public: //Create the C++ object returned as a shared_ptr. Reference counting is managed by shared_ptr automatically. template static inline std::shared_ptr<_CppType> create(_Args&&... __args) { return (new _CppType(std::forward<_Args>(__args)...))->toSharedPtr(); } //Convenience creator to get the C object object instead. Automatically acquires a ref. Consumers have the responsibility to unref template static inline _CType *createCObject(_Args&&... __args) { return (new _CppType(std::forward<_Args>(__args)...))->toC(); } //Obtain the C object from this. _CType *toC(){ return static_cast<_CType*>(getCPtr()); } //Obtain the C object this, when it is const. const _CType *toC()const{ return static_cast(getCPtr()); } //Obtain the C++ object as a normal pointer. static _CppType *toCpp(_CType *ptr){ return static_cast<_CppType *>(getCppObject(ptr)); } //Obtain the C++ object as a normal pointer, when the c++ object is const. static const _CppType *toCpp(const _CType *ptr){ return static_cast(getCppObject(ptr)); } //Obtain a shared_ptr from the C++ object. std::shared_ptr<_CppType> getSharedFromThis() { return sharedFromThis(false); } //Obtain a shared_ptr from the C++ object in the const case. std::shared_ptr getSharedFromThis () const { return sharedFromThis(false); } //Convenience method for easy CType -> shared_ptr conversion static std::shared_ptr<_CppType> getSharedFromThis(_CType *ptr) { return toCpp(ptr)->getSharedFromThis(); } //Convenience method for easy CType -> shared_ptr conversion static std::shared_ptr getSharedFromThis(const _CType *ptr) { return toCpp(const_cast<_CType *>(ptr))->getSharedFromThis(); } // Obtain a shared_ptr that takes ownership of the object. // Use this method with caution as it will transfer the ownership of the object to the shared_ptr, unlike getSharedFromThis() that // gives you a new reference to the object. // This method should be only useful to transfer into a shared_ptr an object that was created as a normal pointer, for example // by clone() or createCObject() methods. // There should be NO public const variant of this method. std::shared_ptr<_CppType> toSharedPtr(){ return sharedFromThis(true); } //Convenience method for easy bctbx_list(_Ctype) -> std::list<_CppType> conversion //It does not take ownership of the hybrid object, but takes a ref. static std::list> getCppListFromCList(const bctbx_list_t *cList) { std::list> result; for (auto it = cList; it != nullptr; it = bctbx_list_next(it)) result.push_back(toCpp(static_cast<_CType*>(bctbx_list_get_data(it)))->getSharedFromThis() ); return result; } //Convenience method for easy bctbx_list(_Ctype) -> std::list<_CppType> conversion //Applies 'func' to get _CppType from _CType. Used in case we do not want to call `toCpp` on _Ctype static std::list> getCppListFromCList(const bctbx_list_t *cList, const std::function (_CType *)> &func) { std::list> result; for (auto it = cList; it != nullptr; it = bctbx_list_next(it)) result.push_back(func(static_cast<_CType*>(bctbx_list_get_data(it)))); return result; } //Convenience method for easy std::list> -> bctbx_list(CType) conversion //It does not take ownership of the hybrid object, but takes a ref. static bctbx_list_t* getCListFromCppList(const std::list > &cppList) { bctbx_list_t *result = nullptr; for (auto it = cppList.begin(); it != cppList.end(); it++) { std::shared_ptr<_CppType> cppPtr = static_cast>(*it); cppPtr->ref(); _CType *cptr = cppPtr->toC(); result = bctbx_list_append(result, cptr); } return result; } //Convenience method for easy std::list -> bctbx_list(CType) conversion //It does not take ownership of the hybrid object, but takes a ref. static bctbx_list_t* getCListFromCppList(const std::list<_CppType*> &cppList) { bctbx_list_t *result = nullptr; for (auto it = cppList.begin(); it != cppList.end(); it++) { _CppType *cppPtr = static_cast<_CppType*>(*it); cppPtr->ref(); _CType *cptr = cppPtr->toC(); result = bctbx_list_append(result, cptr); } return result; } static const char * nullifyEmptyString(const std::string& cppString){ if (cppString.empty()) return nullptr; else return cppString.c_str(); } protected: virtual ~HybridObject() = default; HybridObject() {} HybridObject(const HybridObject<_CType, _CppType> &other) : Object(other) {} private: std::shared_ptr<_CppType> sharedFromThis(bool withTransfer)const{ std::shared_ptr<_CppType> sp; if ((sp = mSelf.lock()) == nullptr){ sp = std::shared_ptr<_CppType>(static_cast<_CppType *>(const_cast *>(this)), std::mem_fn(&HybridObject<_CType, _CppType>::constUnref)); mSelf = sp; if (!withTransfer){ sp->ref(); } }else{ if (withTransfer){ belle_sip_fatal("This HybridObject already has shared_ptr<> instances pointing to it."); } } return sp; } mutable std::weak_ptr<_CppType> mSelf; }; }//end of namespace extern "C" { BELLE_SIP_DECLARE_VPTR(belle_sip_cpp_object_t); } #endif //belle_sip_object_plusplus_h belle-sip-5.2.0+dfsg/include/belle-sip/object.h000066400000000000000000000560401434613136500212420ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef belle_sip_object_h #define belle_sip_object_h #include "belle-sip/defs.h" #include "belle-sip/utils.h" #include "belle-sip/list.h" /* * typedefs, macros and functions for object definition and manipulation. */ #define BELLE_SIP_DEFAULT_BUFSIZE_HINT 0 #define BELLE_SIP_TYPE_ID(_type) _type##_id typedef unsigned int belle_sip_type_id_t; #define BELLE_SIP_DECLARE_TYPES_BEGIN(namezpace,unique_namespace_id) \ enum namezpace##type_ids{\ namezpace##type_id_first=unique_namespace_id, #define BELLE_SIP_DECLARE_TYPES_END }; #define BELLE_SIP_OBJECT_VPTR_NAME(object_type) object_type##_vptr #define BELLE_SIP_OBJECT_GET_VPTR_FUNC(object_type) object_type##_vptr_get #define BELLE_SIP_OBJECT_VPTR_TYPE(object_type) object_type##_vptr_t #define BELLE_SIP_DECLARE_VPTR(object_type) \ typedef belle_sip_object_vptr_t BELLE_SIP_OBJECT_VPTR_TYPE(object_type);\ BELLESIP_EXPORT BELLE_SIP_OBJECT_VPTR_TYPE(object_type) * BELLE_SIP_OBJECT_GET_VPTR_FUNC(object_type)(void); #define BELLE_SIP_DECLARE_CUSTOM_VPTR_BEGIN(object_type, parent_type) \ typedef struct object_type##_vptr_struct BELLE_SIP_OBJECT_VPTR_TYPE(object_type);\ BELLESIP_EXPORT BELLE_SIP_OBJECT_VPTR_TYPE(object_type) * BELLE_SIP_OBJECT_GET_VPTR_FUNC(object_type)(void); \ struct object_type##_vptr_struct{\ BELLE_SIP_OBJECT_VPTR_TYPE(parent_type) base; #define BELLE_SIP_DECLARE_VPTR_NO_EXPORT(object_type) \ typedef belle_sip_object_vptr_t BELLE_SIP_OBJECT_VPTR_TYPE(object_type);\ BELLE_SIP_OBJECT_VPTR_TYPE(object_type) * BELLE_SIP_OBJECT_GET_VPTR_FUNC(object_type)(void); #define BELLE_SIP_DECLARE_CUSTOM_VPTR_BEGIN_NO_EXPORT(object_type, parent_type) \ typedef struct object_type##_vptr_struct BELLE_SIP_OBJECT_VPTR_TYPE(object_type);\ BELLE_SIP_OBJECT_VPTR_TYPE(object_type) * BELLE_SIP_OBJECT_GET_VPTR_FUNC(object_type)(void); \ struct object_type##_vptr_struct{\ BELLE_SIP_OBJECT_VPTR_TYPE(parent_type) base; #define BELLE_SIP_DECLARE_CUSTOM_VPTR_END }; #define BELLE_SIP_INSTANCIATE_CUSTOM_VPTR_BEGIN(object_type) \ extern BELLE_SIP_OBJECT_VPTR_TYPE(object_type) BELLE_SIP_OBJECT_VPTR_NAME(object_type);\ BELLE_SIP_OBJECT_VPTR_TYPE(object_type) * BELLE_SIP_OBJECT_GET_VPTR_FUNC(object_type)(void){\ return &BELLE_SIP_OBJECT_VPTR_NAME(object_type); \ }\ BELLE_SIP_OBJECT_VPTR_TYPE(object_type) BELLE_SIP_OBJECT_VPTR_NAME(object_type)={ #define BELLE_SIP_INSTANCIATE_CUSTOM_VPTR_END }; #define BELLE_SIP_VPTR_INIT(object_type,parent_type,unowned) \ BELLE_SIP_TYPE_ID(object_type), \ sizeof(object_type), \ #object_type,\ unowned,\ (belle_sip_object_get_vptr_t)BELLE_SIP_OBJECT_GET_VPTR_FUNC(parent_type), \ (belle_sip_interface_desc_t**)object_type##interfaces_table #define BELLE_SIP_INSTANCIATE_VPTR3(object_type,parent_type,destroy,clone,marshal,on_first_ref,on_last_ref,unowned,is_cpp) \ static BELLE_SIP_OBJECT_VPTR_TYPE(object_type) BELLE_SIP_OBJECT_VPTR_NAME(object_type)={ \ BELLE_SIP_VPTR_INIT(object_type,parent_type,unowned), \ (belle_sip_object_destroy_t)destroy, \ (belle_sip_object_clone_t)clone, \ (belle_sip_object_marshal_t)marshal,\ (belle_sip_object_on_first_ref_t)on_first_ref,\ (belle_sip_object_on_last_ref_t)on_last_ref,\ BELLE_SIP_DEFAULT_BUFSIZE_HINT,\ is_cpp, 0\ }; \ BELLE_SIP_OBJECT_VPTR_TYPE(object_type) * BELLE_SIP_OBJECT_GET_VPTR_FUNC(object_type)(void){\ return &BELLE_SIP_OBJECT_VPTR_NAME(object_type); \ } #define BELLE_SIP_INSTANCIATE_VPTR2(object_type,parent_type,destroy,clone,marshal,on_first_ref,on_last_ref,unowned) \ BELLE_SIP_INSTANCIATE_VPTR3(object_type,parent_type,destroy,clone,marshal,on_first_ref,on_last_ref,unowned,FALSE) #define BELLE_SIP_INSTANCIATE_VPTR(object_type,parent_type,destroy,clone,marshal,unowned) \ BELLE_SIP_INSTANCIATE_VPTR2(object_type, parent_type, destroy, clone, marshal, NULL, NULL, unowned) /** * belle_sip_object_t is the base object. * It is the base class for all belle sip non trivial objects. * It owns a reference count which allows to trigger the destruction of the object when the last * user of it calls belle_sip_object_unref(). * * It contains a generic data store that allows users to store named data in it and retrieve them afterwards. * * About object lifecycle
* In belle-sip, objects can be, depending on their types, initially owned, meaning that they are created with a ref count of 1, or * initially unowned, meaning that they are created with reference count of 0. Such objets are also referred as "floating object". They are automatically destroyed * by the main loop iteration, so a floating object can be seen as a temporary object, until someones calls belle_sip_object_ref() on it. * * In order to know whether a kind of object is initially owned or initially unowned, you can use the test program tester/belle_sip_object_describe. * This tool gives the hierarchy and properties of the object type whose name is supplied in argument. For example: * *
./tester/belle_sip_object_describe belle_sip_request_t
* * The object memory management depends slightly on whether an object type is created initially owned or not. * In order not to be lost and make memory fault or leaks, consider the following rules: * * When an object is of type initially unowned: * * call belle_sip_object_ref() on it only if you need a pointer to this object to be used outside the scope of the current function. * * call belle_sip_object_unref() on it only if you previously called belle_sip_object_ref(). * * When an object is of type initially owned: * * you can safely store its pointer. * * use belle_sip_object_unref() when you no longer need it. * * Also, keep in mind that most objects of belle-sip are initially unowned, especially * * all objects who are usually required to be used inside another object (for example: an URI is part of a from header, a contact header is part of a message) * * all objects whose lifecyle is maintained by the stack: transactions, dialogs. * * On the contrary, top level objects whose lifecyle belongs only to the application are initially owned: * * belle_sip_provider_t, belle_sip_stack_t, belle_sip_source_t. * * Internally, belle-sip objects containing pointers to other objects must take a reference count on the other objects they hold; and leave this reference * when they no longer need it. This rule must be strictly followed by developers doing things inside belle-sip. **/ typedef struct _belle_sip_object belle_sip_object_t; //cpp object differ only in vptr, just typedef to belle_sip_object_t for simplicity typedef struct _belle_sip_object belle_sip_cpp_object_t; typedef void (*belle_sip_object_destroy_t)(belle_sip_object_t*); typedef void (*belle_sip_object_clone_t)(belle_sip_object_t* obj, const belle_sip_object_t *orig); typedef belle_sip_error_code (*belle_sip_object_marshal_t)(belle_sip_object_t* obj, char* buff, size_t buff_size, size_t *offset); typedef struct _belle_sip_object_vptr *(*belle_sip_object_get_vptr_t)(void); typedef void (*belle_sip_object_on_first_ref_t)(belle_sip_object_t*); typedef void (*belle_sip_object_on_last_ref_t)(belle_sip_object_t*); struct _belle_sip_object_vptr{ belle_sip_type_id_t id; size_t size; /*the size of the object - not the vptr size*/ const char *type_name; int initially_unowned; belle_sip_object_get_vptr_t get_parent; struct belle_sip_interface_desc **interfaces; /*NULL terminated table of */ belle_sip_object_destroy_t destroy; belle_sip_object_clone_t clone; belle_sip_object_marshal_t marshal; belle_sip_object_on_first_ref_t on_first_ref; /*called when object is ref'd for the first time*/ belle_sip_object_on_last_ref_t on_last_ref; /*called in unref() when the last reference of the object remains*/ int tostring_bufsize_hint; /*optimization: you can suggest here the typical size for a to_string() result.*/ int is_cpp; /*indicates whether this object kind is defined in c++*/ int cpp_offset; /*offset to apply to the belle_sip_object_t to find the pointer to the corresponding bellesip::Object, if any*/ }; typedef struct _belle_sip_object_vptr belle_sip_object_vptr_t; struct _belle_sip_object{ belle_sip_object_vptr_t *vptr; int ref; char* name; struct weak_ref *weak_refs; struct belle_sip_object_pool *pool; belle_sip_list_t *pool_iterator; belle_sip_list_t *data_store; }; BELLE_SIP_BEGIN_DECLS BELLESIP_EXPORT belle_sip_object_t * _belle_sip_object_new(size_t objsize, belle_sip_object_vptr_t *vptr); #ifdef __cplusplus #define belle_sip_object_new(_type) reinterpret_cast<_type*>(static_cast(_belle_sip_object_new(sizeof(_type),(belle_sip_object_vptr_t*)BELLE_SIP_OBJECT_GET_VPTR_FUNC(_type)()))) #else #define belle_sip_object_new(_type) (_type*)_belle_sip_object_new(sizeof(_type),(belle_sip_object_vptr_t*)BELLE_SIP_OBJECT_GET_VPTR_FUNC(_type)()) #endif /** * Activates checks on object marshalling. * Useful for debug purposes. * @param enable TRUE to enable, FALSE to disable. **/ BELLESIP_EXPORT void belle_sip_object_enable_marshal_check(int enable); /** * Activates an object leak detector. When enabled, belle-sip will reference all created objects. * At program termination, application can check if objects remain alive using belle_sip_object_get_object_count() and dump them with * belle_sip_object_dump_active_objects(). * @warning this must not be used in multi-threaded programs (when multiple threads can access belle-sip at the same time) * Useful for debug purposes. * @param enable TRUE to enable, FALSE to disable. **/ BELLESIP_EXPORT void belle_sip_object_enable_leak_detector(int enable); BELLESIP_EXPORT int belle_sip_object_get_object_count(void); BELLESIP_EXPORT void belle_sip_object_flush_active_objects(void); BELLESIP_EXPORT void belle_sip_object_dump_active_objects(void); /* * Might be used to explicitly remove an object from leak detector. */ BELLESIP_EXPORT void belle_sip_object_remove_from_leak_detector(belle_sip_object_t *obj); /** * Suspend leak detector from this point. If the leak detector wasn't activated, this function does nothing. * This can be useful to make object allocation that have to remain active beyond the scope of a test. **/ BELLESIP_EXPORT void belle_sip_object_inhibit_leak_detector(int yes); int belle_sip_object_is_unowed(const belle_sip_object_t *obj); /** * Increments reference counter, which prevents the object from being destroyed. * If the object is initially unowed, this acquires the first reference. * **/ BELLESIP_EXPORT belle_sip_object_t * belle_sip_object_ref(void *obj); /** * Decrements the reference counter. When it drops to zero, the object is destroyed. **/ BELLESIP_EXPORT void belle_sip_object_unref(void *obj); /** * Decrements the reference counter. When it drops to zero, the object is destroyed and returns TRUE. Otherwise returns FALSE. **/ BELLESIP_EXPORT int belle_sip_object_unref_2(void *obj); typedef void (*belle_sip_object_destroy_notify_t)(void *userpointer, belle_sip_object_t *obj_being_destroyed); /** * Add a weak reference to object. * When object will be destroyed, then the destroy_notify callback will be called. * This allows another object to be informed when object is destroyed, and then possibly * cleanups pointer it holds to this object. **/ BELLESIP_EXPORT belle_sip_object_t *belle_sip_object_weak_ref(void *obj, belle_sip_object_destroy_notify_t destroy_notify, void *userpointer); /** * Remove a weak reference to object. **/ BELLESIP_EXPORT void belle_sip_object_weak_unref(void *obj, belle_sip_object_destroy_notify_t destroy_notify, void *userpointer); /** * Set object name. **/ BELLESIP_EXPORT void belle_sip_object_set_name(belle_sip_object_t *obj,const char* name); /** * Get object name. **/ BELLESIP_EXPORT const char* belle_sip_object_get_name(belle_sip_object_t *obj); /*copy the content of ref object to new object, for the part they have in common in their inheritence diagram*/ void _belle_sip_object_copy(belle_sip_object_t *newobj, const belle_sip_object_t *ref); /** * Clone an object. * * This clone function makes a deep copy of all object internal structure, so that the new object and the reference object have no dependencies at all. * **/ BELLESIP_EXPORT belle_sip_object_t *belle_sip_object_clone(const belle_sip_object_t *obj); /** * Same as #belle_sip_object_clone but with ref count set to 1 * **/ belle_sip_object_t *belle_sip_object_clone_and_ref(const belle_sip_object_t *obj); typedef void (*belle_sip_data_destroy)(void* data); typedef void* (*belle_sip_data_clone)(const char* name, void* data); /** * Add an entry to the object's embedded data store, with the key name specified. * The destroy function is used when the data is cleaned. * * If an entry already exists, the existing data will be cleaned by calling its destroy function and the new data will be placed instead. * * Returns -1 in case of error, 0 in case the insertion was successful, and 1 if existing data was present. **/ BELLESIP_EXPORT int belle_sip_object_data_set( belle_sip_object_t *obj, const char* name, void* data, belle_sip_data_destroy destroy_func ); /** * Retrieve data that has been stored in the object data store. **/ BELLESIP_EXPORT void* belle_sip_object_data_get( belle_sip_object_t *obj, const char* name ); /** * Return 1 if the key exists in the data store, 0 otherwise **/ BELLESIP_EXPORT int belle_sip_object_data_exists( const belle_sip_object_t *obj, const char* name ); /** * Destroys the named data associated by the name provided. * * Returns 0 for success, -1 for error **/ BELLESIP_EXPORT int belle_sip_object_data_remove( belle_sip_object_t *obj, const char* name); /** * Retrieve the data from the data store and removes it from the data store, without calling the destructor. * This transfers ownership of the data to the caller, which will be in charge of releasing it. **/ BELLESIP_EXPORT void* belle_sip_object_data_grab( belle_sip_object_t* obj, const char* name); /** * Clears all data in the object's storage, invoking the destroy_func when possible **/ BELLESIP_EXPORT void belle_sip_object_data_clear( belle_sip_object_t* obj ); /** * clones the object's data store to another one, using the provided clone function to clone individual data items. * * The destination data store will be cleaned before pushing the source data into it. * For a merge, use #belle_sip_object_data_merge. * This is equivalent to the following code: * { * belle_sip_object_data_clear(dst); * belle_sip_object_data_merge(src, dst, clone_func); * } * * Note that providing NULL as a cloning function will simply assign the src object's data to the dst object. * **/ BELLESIP_EXPORT void belle_sip_object_data_clone( const belle_sip_object_t* src, belle_sip_object_t* dst, belle_sip_data_clone clone_func); /** * Merge the source data store into the destination data store. * * Same function as #belle_sip_object_data_clone, except the destination data store is not cleared before inserting the source data. * This overwrites common keys, and keeps existing keys. */ BELLESIP_EXPORT void belle_sip_object_data_merge( const belle_sip_object_t* src, belle_sip_object_t* dst, belle_sip_data_clone clone_func); /** * Apply a function for each entry in the data store */ BELLESIP_EXPORT void belle_sip_object_data_foreach( const belle_sip_object_t* obj, void (*apply_func)(const char* key, void* data, void* userdata), void* userdata); /** * Returns a string describing the inheritance diagram and implemented interfaces of object obj. **/ char *belle_sip_object_describe(void *obj); /** * Returns a string describing the inheritance diagram and implemented interfaces of an object given its type name. **/ BELLESIP_EXPORT char *belle_sip_object_describe_type_from_name(const char *name); BELLESIP_EXPORT void *belle_sip_object_cast(belle_sip_object_t *obj, belle_sip_type_id_t id, const char *castname, const char *file, int fileno); /** * Returns a newly allocated string representing the object. * WHen the object is a sip header, uri or message, this is the textual representation of the header, uri or message. * This function internally calls belle_sip_object_marshal(). **/ BELLESIP_EXPORT char* belle_sip_object_to_string(const void* obj); /** * Writes a string representation of the object into the supplied buffer. * Same as belle_sip_object_to_string(), but without allocating space for the output string. **/ BELLESIP_EXPORT belle_sip_error_code belle_sip_object_marshal(belle_sip_object_t* obj, char* buff, size_t buff_size, size_t *offset); /* use BELLE_SIP_OBJECT_IS_INSTANCE_OF macro(), this function is for use by the macro only*/ BELLESIP_EXPORT int _belle_sip_object_is_instance_of(belle_sip_object_t * obj,belle_sip_type_id_t id); BELLE_SIP_END_DECLS #define BELLE_SIP_CAST(obj,_type) ((_type*)belle_sip_object_cast((belle_sip_object_t *)(obj), _type##_id, #_type, __FILE__, __LINE__)) #define BELLE_SIP_OBJECT(obj) BELLE_SIP_CAST(obj,belle_sip_object_t) #define BELLE_SIP_OBJECT_IS_INSTANCE_OF(obj,_type) _belle_sip_object_is_instance_of((belle_sip_object_t*)obj,_type##_id) #define BELLE_SIP_OBJECT_VPTR(obj,object_type) ((BELLE_SIP_OBJECT_VPTR_TYPE(object_type)*)(((belle_sip_object_t*)obj)->vptr)) /*deprecated*/ #define BELLE_SIP_IS_INSTANCE_OF(obj,_type) BELLE_SIP_OBJECT_IS_INSTANCE_OF(obj,_type) #define belle_sip_object_describe_type(type) \ belle_sip_object_describe_type_from_name(#type) /* * typedefs, macros and functions for interface definition and manipulation. */ #define BELLE_SIP_INTERFACE_ID(_interface) _interface##_id typedef unsigned int belle_sip_interface_id_t; BELLE_SIP_BEGIN_DECLS BELLESIP_EXPORT void *belle_sip_object_interface_cast(belle_sip_object_t *obj, belle_sip_interface_id_t id, const char *castname, const char *file, int fileno); int belle_sip_object_implements(belle_sip_object_t *obj, belle_sip_interface_id_t id); BELLE_SIP_END_DECLS #define BELLE_SIP_INTERFACE_METHODS_TYPE(interface_name) methods_##interface_name #define BELLE_SIP_INTERFACE_CAST(obj,_iface) ((_iface*)belle_sip_object_interface_cast((belle_sip_object_t*)(obj),_iface##_id,#_iface,__FILE__,__LINE__)) #define BELLE_SIP_IMPLEMENTS(obj,_iface) belle_sip_object_implements((belle_sip_object_t*)obj,_iface##_id) typedef struct belle_sip_interface_desc{ belle_sip_interface_id_t id; const char *ifname; }belle_sip_interface_desc_t; #define BELLE_SIP_DECLARE_INTERFACE_BEGIN(interface_name) \ typedef struct struct##interface_name interface_name;\ typedef struct struct_methods_##interface_name BELLE_SIP_INTERFACE_METHODS_TYPE(interface_name);\ struct struct_methods_##interface_name {\ belle_sip_interface_desc_t desc;\ #define BELLE_SIP_DECLARE_INTERFACE_END }; #define BELLE_SIP_IMPLEMENT_INTERFACE_BEGIN(object_type,interface_name) \ static BELLE_SIP_INTERFACE_METHODS_TYPE(interface_name) methods_##object_type##_##interface_name={\ { BELLE_SIP_INTERFACE_ID(interface_name),\ #interface_name }, #define BELLE_SIP_IMPLEMENT_INTERFACE_END }; #define BELLE_SIP_DECLARE_NO_IMPLEMENTED_INTERFACES(object_type)\ static belle_sip_interface_desc_t * object_type##interfaces_table[]={\ NULL \ } #define BELLE_SIP_DECLARE_IMPLEMENTED_INTERFACES_1(object_type,iface1) \ static belle_sip_interface_desc_t * object_type##interfaces_table[]={\ (belle_sip_interface_desc_t*)&methods_##object_type##_##iface1, \ NULL \ } #define BELLE_SIP_DECLARE_IMPLEMENTED_INTERFACES_2(object_type,iface1,iface2) \ static belle_sip_interface_desc_t * object_type##interfaces_table[]={\ (belle_sip_interface_desc_t*)&methods_##object_type##_##iface1, \ (belle_sip_interface_desc_t*)&methods_##object_type##_##iface2, \ NULL \ } /** * Object holding unowned objects - used as a kind of garbage collector for temporary objects. **/ typedef struct belle_sip_object_pool belle_sip_object_pool_t; BELLE_SIP_BEGIN_DECLS /** * Push a new object pool for use for creation of new objects. * When no longer needed, this pool can be destroyed with belle_sip_object_unref(). **/ BELLESIP_EXPORT belle_sip_object_pool_t * belle_sip_object_pool_push(void); belle_sip_object_pool_t * belle_sip_object_pool_get_current(void); int belle_sip_object_pool_cleanable(belle_sip_object_pool_t *pool); void belle_sip_object_pool_clean(belle_sip_object_pool_t *obj); BELLE_SIP_DECLARE_VPTR(belle_sip_object_t) BELLE_SIP_END_DECLS /** * Adding a new type in belle-sip in 5 steps * ========================================= * * Let's suppose you want to add an object called belle_sip_something_t * 1) Declare the type in the enum in belle-sip.h: * BELLE_SIP_TYPE_ID(belle_sip_something_t) * 2) Declare the api of the new object in .h, including a typedef and a cast macro: * typedef struct belle_sip_something belle_sip_something_t; * #define BELLE_SIP_SOMETHING(obj) BELLE_SIP_CAST(obj,belle_sip_something_t) * * belle_sip_something_t *belle_sip_something_create(int arg1, int arg2); * void belle_sip_something_do_cooking(belle_sip_something_t *obj); * Do not add any destructor, belle_sip_object_unref() does it for all objects. * * 3) in the c file contaning the object's implementation, define the internal structure for your object. * The first field of the struct must be the parent type. * struct belle_sip_something{ * belle_sip_object_t base; * int myint1; * int myint2; * char *mychar; * }; * 4) still in the C file contaning the object's implementation, define a destructor and all functions of its API: * The destructor must only manage the fields from the type, not the parent. * static void belle_sip_something_destroy(belle_sip_something_t *obj){ * if (obj->mychar) belle_sip_free(obj->mychar); * } * * belle_sip_something_t *belle_sip_something_create(int arg1, int arg2){ * belle_sip_something_t *obj=belle_sip_object_new(belle_sip_something_t); * obj->myint1=arg1; * obj->myint2=arg2; * obj->mychar=belle_sip_strdup("Hello world"); * return obj; * } * Declare the interfaces implemented by the object (to be documented) and instanciate its "vptr", necessary for dynamic casting. * BELLE_SIP_DECLARE_NO_IMPLEMENTED_INTERFACES(belle_sip_something_t); * BELLE_SIP_INSTANCIATE_VPTR(belle_sip_something_t, belle_sip_object_t,belle_sip_something_destroy, NULL, NULL,FALSE); * * 5) in .h file included everywhere in the source (typically belle_sip_internal.h), declare the vptr * BELLE_SIP_DECLARE_VPTR(belle_sip_dns_srv_t); */ #if defined(__cplusplus) && defined(BELLE_SIP_USE_STL) #include inline std::ostream& operator<<( std::ostream& __os, const belle_sip_object_t* object) { char* object_as_string = belle_sip_object_to_string((void*)object); __os << object_as_string; belle_sip_free(object_as_string); return __os; } #endif #endif belle-sip-5.2.0+dfsg/include/belle-sip/parameters.h000066400000000000000000000055041434613136500221360ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef PARAMETERS_H_ #define PARAMETERS_H_ #include "belle-sip/utils.h" #include "belle-sip/list.h" BELLE_SIP_BEGIN_DECLS /*** * parameters * */ belle_sip_parameters_t* belle_sip_parameters_new(void); /* * remove all parameters */ BELLESIP_EXPORT void belle_sip_parameters_clean(belle_sip_parameters_t* params); /*BELLESIP_EXPORT void belle_sip_parameters_destroy(belle_sip_parameters_t* params);*/ BELLESIP_EXPORT const char* belle_sip_parameters_get_parameter(const belle_sip_parameters_t* obj,const char* name); /* * same as #belle_sip_parameters_get_parameter but name is case insensitive */ BELLESIP_EXPORT const char* belle_sip_parameters_get_case_parameter(const belle_sip_parameters_t* params,const char* name); /** * returns 0 if not found */ BELLESIP_EXPORT unsigned int belle_sip_parameters_has_parameter(const belle_sip_parameters_t* obj,const char* name); BELLESIP_EXPORT void belle_sip_parameters_set_parameter(belle_sip_parameters_t* obj,const char* name,const char* value); /** * Assign a full set of parameters to the belle_sip_parameters_t object. * Parameters are given as string of key=value pairs separated with semicolons, where value is optional. * @example belle_sip_parameters_set(parameters,"param1=value1;param2;param3=value3"); **/ BELLESIP_EXPORT void belle_sip_parameters_set(belle_sip_parameters_t *parameters, const char* params); BELLESIP_EXPORT const belle_sip_list_t * belle_sip_parameters_get_parameter_names(const belle_sip_parameters_t* obj); BELLESIP_EXPORT const belle_sip_list_t * belle_sip_parameters_get_parameters(const belle_sip_parameters_t* obj); BELLESIP_EXPORT void belle_sip_parameters_remove_parameter(belle_sip_parameters_t* obj,const char* name); BELLESIP_EXPORT belle_sip_error_code belle_sip_parameters_marshal(const belle_sip_parameters_t* obj, char* buff, size_t buff_size, size_t *offset); BELLESIP_EXPORT void belle_sip_parameters_copy_parameters_from(belle_sip_parameters_t *params, const belle_sip_parameters_t *orig); #define BELLE_SIP_PARAMETERS(obj) BELLE_SIP_CAST(obj,belle_sip_parameters_t) BELLE_SIP_END_DECLS #endif /*PARAMETERS_H_*/ belle-sip-5.2.0+dfsg/include/belle-sip/provider.h000066400000000000000000000167751434613136500216410ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef belle_sip_provider_h #define belle_sip_provider_h #define BELLE_SIP_BRANCH_MAGIC_COOKIE "z9hG4bK" BELLE_SIP_BEGIN_DECLS BELLESIP_EXPORT belle_sip_uri_t *belle_sip_provider_create_inbound_record_route(belle_sip_provider_t *p, belle_sip_request_t *req); BELLESIP_EXPORT int belle_sip_provider_is_us(belle_sip_provider_t *p, belle_sip_uri_t*); BELLESIP_EXPORT int belle_sip_provider_add_listening_point(belle_sip_provider_t *p, belle_sip_listening_point_t *lp); BELLESIP_EXPORT void belle_sip_provider_remove_listening_point(belle_sip_provider_t *p, belle_sip_listening_point_t *lp); BELLESIP_EXPORT belle_sip_listening_point_t *belle_sip_provider_get_listening_point(belle_sip_provider_t *p, const char *transport); BELLESIP_EXPORT const belle_sip_list_t *belle_sip_provider_get_listening_points(belle_sip_provider_t *p); BELLESIP_EXPORT void belle_sip_provider_add_sip_listener(belle_sip_provider_t *p, belle_sip_listener_t *l); BELLESIP_EXPORT void belle_sip_provider_remove_sip_listener(belle_sip_provider_t *p, belle_sip_listener_t *l); BELLESIP_EXPORT belle_sip_header_call_id_t * belle_sip_provider_create_call_id(const belle_sip_provider_t *prov); BELLESIP_EXPORT belle_sip_dialog_t *belle_sip_provider_create_dialog(belle_sip_provider_t *prov, belle_sip_transaction_t *t); BELLESIP_EXPORT belle_sip_client_transaction_t *belle_sip_provider_create_client_transaction(belle_sip_provider_t *p, belle_sip_request_t *req); BELLESIP_EXPORT belle_sip_server_transaction_t *belle_sip_provider_create_server_transaction(belle_sip_provider_t *p, belle_sip_request_t *req); BELLESIP_EXPORT belle_sip_stack_t *belle_sip_provider_get_sip_stack(belle_sip_provider_t *p); BELLESIP_EXPORT void belle_sip_provider_send_request(belle_sip_provider_t *p, belle_sip_request_t *req); BELLESIP_EXPORT void belle_sip_provider_send_response(belle_sip_provider_t *p, belle_sip_response_t *resp); BELLESIP_EXPORT void belle_sip_provider_clean_channels(belle_sip_provider_t *p); /* Close connections for which no data was received at all during last X seconds period of time. * This is useful because some routers don't send ICMP or TCP connection reset when they reallocate a port. * For the client, the connection is presumed to be alive, but in practice it is not and there will never be any error. * As a workaround, simply close these connections, and let the stack re-establish new ones, while refreshing registration for example. * The time period after which a channel is considered as "unreliable" is configured with * belle_sip_stack_set_unreliable_connection_timeout(belle_sip_stack_t *stack); */ BELLESIP_EXPORT void belle_sip_provider_clean_unreliable_channels(belle_sip_provider_t *p); /** * Add auth info to the request if found * @param p object * @param request to be updated * @param resp response to take authentication values from, might be NULL * @param from_uri optional - an uri to use instead of the from of the request, which can be anonymous. * @param auth_infos optional - A newly allocated belle_sip_auth_info_t object is added to this list. These object contains useful information like realm and username. * @param realm optional - If an outbound proxy realm is used, nounce can be reused from previous request to avoid re-authentication. * @returns 0 in case of success, * **/ BELLESIP_EXPORT int belle_sip_provider_add_authorization(belle_sip_provider_t *p, belle_sip_request_t* request,belle_sip_response_t *resp, belle_sip_uri_t *from_uri, belle_sip_list_t** auth_infos, const char* realm); /** * Provides access to a specific dialog * @param prov object * @param call_if of the dialog * @param local_tag of the dialog * @param remote_tag of the dialog * @returns dialog corresponding to this parameter or NULL if not found * **/ BELLESIP_EXPORT belle_sip_dialog_t* belle_sip_provider_find_dialog(const belle_sip_provider_t *prov, const char* call_id,const char* local_tag,const char* remote_tag); /** * Provides access to a specific dialog * @param prov object * @param call_if of the dialog * @param remote_tag of the dialog * @returns dialog that correspond to these parameters or NULL if not found * **/ BELLESIP_EXPORT belle_sip_dialog_t* belle_sip_provider_find_dialog_with_remote_tag(const belle_sip_provider_t *prov, const char* call_id,const char* remote_tag); /** * Enable rport in via header. Enabled by default * @param prov * @return enable 0 to disable **/ BELLESIP_EXPORT void belle_sip_provider_enable_rport(belle_sip_provider_t *prov, int enable); /** * get Enable rport in via header. Enabled by default * @param prov * @param enable 0 to disable **/ BELLESIP_EXPORT int belle_sip_provider_is_rport_enabled(belle_sip_provider_t *prov); /** * Enable discovery of NAT's public address and port during SIP exchanges. * When activated, automatic contacts ( see belle_sip_header_contact_set_automatic() ) * will use discovered public IP address and port (if any) instead of local ones. * NAT public address and port are discovered using received and rport parameters in via header of responses. * As a result, disabling rport ( see belle_sip_provider_enable_rport() ) will also break this feature. **/ BELLESIP_EXPORT void belle_sip_provider_enable_nat_helper(belle_sip_provider_t *prov, int enabled); /** * Returns if nat helper behavior is enabled. * @see belle_sip_provider_enable_nat_helper() **/ BELLESIP_EXPORT int belle_sip_provider_nat_helper_enabled(const belle_sip_provider_t *prov); /* * Following functions are used for tests ONLY */ /** * Can be used to simulate network recv error, for tests. * @param prov * @param recv_error if <=0, will cause channel error to be reported **/ BELLESIP_EXPORT void belle_sip_provider_set_recv_error(belle_sip_provider_t *prov, int recv_error); /** * Can be used to unconditionally answer to incoming sip messages. By default 480 is answered. * Can be enhanced by a new method belle_sip_provider_set_unconditional_answer to allows user to provide answer code * @param prov * @param enable 0 to disable **/ BELLESIP_EXPORT void belle_sip_provider_enable_unconditional_answer(belle_sip_provider_t *prov, int enable); /** * Can be used to choose unconditionally answer to incoming sip messages. * use belle_sip_provider_enable_unconditional_answer to enable/disable * @param prov * @param code 0 to sip response code **/ BELLESIP_EXPORT void belle_sip_provider_set_unconditional_answer(belle_sip_provider_t *prov, unsigned short code); /** * Check integrity of responses. By default it is true, however for testing purpose it might be useful * to receive and get notified of invalid responses. */ BELLESIP_EXPORT void belle_sip_provider_enable_response_integrity_checking(belle_sip_provider_t *prov, int value); /* * End of test features. */ BELLE_SIP_END_DECLS #define BELLE_SIP_PROVIDER(obj) BELLE_SIP_CAST(obj,belle_sip_provider_t) #endif belle-sip-5.2.0+dfsg/include/belle-sip/refresher.h000066400000000000000000000111261434613136500217550ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef REFRESHER_HELPER_H_ #define REFRESHER_HELPER_H_ #define BELLE_SIP_REFRESHER_REUSE_EXPIRES -1 BELLE_SIP_BEGIN_DECLS typedef struct belle_sip_refresher belle_sip_refresher_t; /** * Refresher listener invoked every time a refresh action is performed * @param refresher corresponding refresher object. * @param user_pointer user pointer * @param status_code status code for the last refresh action * @param reason_phrase * @param will_retry a boolean indicating wether the refresher is going to retry the request automatically. * */ typedef void (*belle_sip_refresher_listener_t) (belle_sip_refresher_t* refresher ,void* user_pointer ,unsigned int status_code ,const char* reason_phrase, int will_retry); /** * add a refresher listener */ BELLESIP_EXPORT void belle_sip_refresher_set_listener(belle_sip_refresher_t* refresher, belle_sip_refresher_listener_t listener,void* user_pointer); /** * start the refresher */ int belle_sip_refresher_start(belle_sip_refresher_t* refresher); /** * stop refresher. * If a transaction is pending, it will be terminated. */ BELLESIP_EXPORT void belle_sip_refresher_stop(belle_sip_refresher_t* refresher); /** * Manually initiate a new transaction . * @param refresher object * @param expires #BELLE_SIP_REFRESHER_REUSE_EXPIRES means value extracted from the transaction * @return 0 if succeed */ BELLESIP_EXPORT int belle_sip_refresher_refresh(belle_sip_refresher_t* refresher,int expires); /** * returns current expires value; */ BELLESIP_EXPORT int belle_sip_refresher_get_expires(const belle_sip_refresher_t* refresher); /** * returns delay in ms after which the refresher will retry in case of recoverable error (I.E 408, 480, 503, 504, io error); */ BELLESIP_EXPORT int belle_sip_refresher_get_retry_after(const belle_sip_refresher_t* refresher); /** * Delay in ms after which the refresher will retry in case of recoverable error (I.E 408, 480, 503, 504, io error); */ BELLESIP_EXPORT void belle_sip_refresher_set_retry_after(belle_sip_refresher_t* refresher, int delay_ms); /** * returns realm of the outbound proxy used for authentication, if any */ BELLESIP_EXPORT const char* belle_sip_refresher_get_realm(const belle_sip_refresher_t* refresher); /** * Realm of the outbound proxy used for authentication, if any */ BELLESIP_EXPORT void belle_sip_refresher_set_realm(belle_sip_refresher_t* refresher, const char* realm); /** * get current client transaction * @param refresher object * @return transaction */ BELLESIP_EXPORT const belle_sip_client_transaction_t* belle_sip_refresher_get_transaction(const belle_sip_refresher_t* refresher); /** * Get current list of auth info if any. Contains the list of filled #belle_sip_auth_event_t in case of a 401 or 407 is repported to the #belle_sip_refresher_listener_t ; * @param refresher object * @return list of #belle_sip_auth_info_t */ BELLESIP_EXPORT const belle_sip_list_t* belle_sip_refresher_get_auth_events(const belle_sip_refresher_t* refresher); /** * Enable manual mode: only belle_sip_refresher_refresh() called by application will cause requests to be resubmitted. **/ BELLESIP_EXPORT void belle_sip_refresher_enable_manual_mode(belle_sip_refresher_t *refresher, int enabled); /** * Retrieve current local address used by the underlying refresher's channel. **/ BELLESIP_EXPORT const char * belle_sip_refresher_get_local_address(belle_sip_refresher_t* refresher, int *port); /** * Retrieve current public address used by the underlying refresher's channel. **/ BELLESIP_EXPORT const char * belle_sip_refresher_get_public_address(belle_sip_refresher_t* refresher, int *port); /** * Retrieve last know contact header if known. Only available after a successful registration. **/ BELLESIP_EXPORT belle_sip_header_contact_t* belle_sip_refresher_get_contact(const belle_sip_refresher_t* refresher); BELLE_SIP_END_DECLS #endif /* REFRESHER_HELPER_H_ */ belle-sip-5.2.0+dfsg/include/belle-sip/resolver.h000066400000000000000000000153141434613136500216340ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef belle_sip_resolver_h #define belle_sip_resolver_h typedef struct belle_sip_dns_srv belle_sip_dns_srv_t; #define BELLE_SIP_DNS_SRV(obj) BELLE_SIP_CAST(obj,belle_sip_dns_srv_t) typedef struct belle_sip_resolver_context belle_sip_resolver_context_t; #define BELLE_SIP_RESOLVER_CONTEXT(obj) BELLE_SIP_CAST(obj,belle_sip_resolver_context_t) typedef struct belle_sip_resolver_results belle_sip_resolver_results_t; #define BELLE_SIP_RESOLVER_RESULTS(obj) BELLE_SIP_CAST(obj,belle_sip_resolver_results_t) /** * Callback prototype for asynchronous DNS SRV resolution. * The srv_list contains struct dns_srv elements that must be taken and (possibly later) freed by the callee, using belle_sip_free(). */ typedef void (*belle_sip_resolver_srv_callback_t)(void *data, const char *name, belle_sip_list_t *srv_list, uint32_t ttl); /** * Callback prototype for asynchronous DNS A and AAAA resolution. * The 'results' object must be acquired (ref'd) in order for being accessed outside of the callback. * The results object provides SRV records list and addrinfo list. **/ typedef void (*belle_sip_resolver_callback_t)(void *data, belle_sip_resolver_results_t *results); BELLE_SIP_BEGIN_DECLS BELLESIP_EXPORT const char *belle_sip_dns_srv_get_target(const belle_sip_dns_srv_t *obj); BELLESIP_EXPORT unsigned short belle_sip_dns_srv_get_priority(const belle_sip_dns_srv_t *obj); BELLESIP_EXPORT unsigned short belle_sip_dns_srv_get_weight(const belle_sip_dns_srv_t *obj); BELLESIP_EXPORT unsigned short belle_sip_dns_srv_get_port(const belle_sip_dns_srv_t *obj); /** * Find the belle_sip_dns_srv_t object associated with a particular addrinfo. * The srv_list and the addrinfo must be the ones given by the belle_sip_resolver_callback_t callback invoked consecutively to a call * to belle_sip_stack_resolve(). **/ BELLESIP_EXPORT const belle_sip_dns_srv_t * belle_sip_resolver_results_get_srv_from_addrinfo(const belle_sip_resolver_results_t *obj, const struct addrinfo *ai); BELLESIP_EXPORT const bctbx_list_t *belle_sip_resolver_results_get_srv_records(const belle_sip_resolver_results_t *obj); BELLESIP_EXPORT const struct addrinfo *belle_sip_resolver_results_get_addrinfos(const belle_sip_resolver_results_t *obj); BELLESIP_EXPORT int belle_sip_resolver_results_get_ttl(const belle_sip_resolver_results_t *obj); BELLESIP_EXPORT const char * belle_sip_resolver_results_get_name(const belle_sip_resolver_results_t *obj); /** * Asynchronously performs DNS SRV followed A/AAAA query. Automatically fallbacks to A/AAAA if SRV isn't found. * @param stack the belle_sip_stack_t, used to schedule asynchronous execution. * @param service the queried service ("sip", "stun", "turn"...) * @param transport the queried transport ("udp", "tcp", "tls") * @param name the SIP domain name * @param port a port that will be filled in the addrinfo list returned by the callback, for the case where no SRV records are found. * @param family address family expected in the addrinfo result list. AF_INET or AF_INET6. If AF_INET6 is used but no IPv6 records are found, the IPv4 addresses * will be returned as IPv6 with v4 mapping (AI_V4MAPPED). * @param cb a callback function that will be called to notify the results. * @param data a user pointer passed through the callback as first argument. * @return a #belle_sip_resolver_context_t that can be used to cancel the resolution if needed. The context must have been ref'd with belle_sip_object_ref(). **/ BELLESIP_EXPORT belle_sip_resolver_context_t * belle_sip_stack_resolve(belle_sip_stack_t *stack, const char *service, const char *transport, const char *name, int port, int family, belle_sip_resolver_callback_t cb, void *data); /** * Asynchronously performs DNS A or AAAA query. * @param stack the belle_sip_stack_t, used to schedule asynchronous execution. * @param name the SIP domain name * @param port a port that will be filled in the addrinfo list returned by the callback, for the case where no SRV records are found. * @param family address family expected in the addrinfo result list. AF_INET or AF_INET6. If AF_INET6 is used but no IPv4 records are found, the IPv4 addresses * will be returned as IPv6 with v4 mapping (AI_V4MAPPED). * @param cb a callback function that will be called to notify the results. * @param data a user pointer passed through the callback as first argument. * @return a #belle_sip_resolver_context_t that can be used to cancel the resolution if needed. The context must have been ref'd with belle_sip_object_ref(). **/ BELLESIP_EXPORT belle_sip_resolver_context_t * belle_sip_stack_resolve_a(belle_sip_stack_t *stack, const char *name, int port, int family, belle_sip_resolver_callback_t cb, void *data); /** * Asynchronously performs DNS SRV query. * @return a #belle_sip_resolver_context_t that can be used to cancel the resolution if needed. The context must have been ref'd with belle_sip_object_ref(). **/ BELLESIP_EXPORT belle_sip_resolver_context_t * belle_sip_stack_resolve_srv(belle_sip_stack_t *stack, const char *service, const char *transport, const char *name, belle_sip_resolver_srv_callback_t cb, void *data); /** * Cancel a pending asynchronous DNS query. The context is unref'd automatically, as a result the context shall no longer be used after this call. * If the query is already performed, cancellation has no effect, but context is unref'd anyway. **/ BELLESIP_EXPORT void belle_sip_resolver_context_cancel(belle_sip_resolver_context_t *ctx); /** * Lookups the source address from local interface that can be used to connect to a destination address. * local_port is only used to be assigned into the result source address. * This function always puts something in src and srclen (the loopback address) even if anything fails. * The return code is 0 if successful, or -errno if an error was encoutered. Typical error is -ENETUNREACH when IPv6 network is not reachable. **/ BELLESIP_EXPORT int belle_sip_get_src_addr_for(const struct sockaddr *dest, socklen_t destlen, struct sockaddr *src, socklen_t *srclen, int local_port); BELLE_SIP_END_DECLS #endif belle-sip-5.2.0+dfsg/include/belle-sip/sip-uri.h000066400000000000000000000214021434613136500213560ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef BELLE_SIP_URI_H_ #define BELLE_SIP_URI_H_ #include "belle-sip/defs.h" #include "belle-sip/list.h" #include "belle-sip/utils.h" #include "belle-sip/types.h" BELLE_SIP_BEGIN_DECLS /** * */ BELLESIP_EXPORT belle_sip_uri_t* belle_sip_uri_new(void); /** * */ BELLESIP_EXPORT belle_sip_uri_t* belle_sip_uri_parse (const char* uri) ; /** * */ BELLESIP_EXPORT belle_sip_uri_t* belle_sip_fast_uri_parse (const char* uri) ; /** * same as belle_sip_uri_parse but with much less checks */ BELLESIP_EXPORT belle_sip_uri_t* belle_sip_fast_uri_parse (const char* uri) ; /** * */ BELLESIP_EXPORT belle_sip_uri_t* belle_sip_uri_create (const char* username,const char* host) ; /** * Returns the value of the named header, or null if it is not set. * */ BELLESIP_EXPORT const char* belle_sip_uri_get_header(const belle_sip_uri_t* uri,const char* name); /** * Returns all URI headers * */ BELLESIP_EXPORT const belle_sip_parameters_t* belle_sip_uri_get_headers(const belle_sip_uri_t* uri); /** * Remove all headers * */ BELLESIP_EXPORT void belle_sip_uri_headers_clean(belle_sip_uri_t* uri); /** * Returns an Iterator over the const char*names of all headers present in this SipURI. * */ BELLESIP_EXPORT const belle_sip_list_t* belle_sip_uri_get_header_names(const belle_sip_uri_t* uri) ; /** * Returns the host part of this SipURI. * */ BELLESIP_EXPORT const char* belle_sip_uri_get_host(const belle_sip_uri_t* uri) ; /** * Returns the value of the maddr parameter, or null if this is not set. * */ BELLESIP_EXPORT const char* belle_sip_uri_get_maddr_param(const belle_sip_uri_t* uri) ; /** * Returns the value of the method parameter, or null if this is not set. * */ BELLESIP_EXPORT const char* belle_sip_uri_get_method_param(const belle_sip_uri_t* uri) ; /** * Returns the port part of this SipURI. * */ BELLESIP_EXPORT int belle_sip_uri_get_port(const belle_sip_uri_t* uri) ; /** * Returns the port of the uri, if not specified in the uri returns the well known port according to the transport. **/ BELLESIP_EXPORT int belle_sip_uri_get_listening_port(const belle_sip_uri_t *uri); /** * Returns the value of the "transport" parameter, or null if this is not set. * */ BELLESIP_EXPORT const char* belle_sip_uri_get_transport_param(const belle_sip_uri_t* uri) ; /** * Returns the value of the "ttl" parameter, or -1 if this is not set. * */ BELLESIP_EXPORT int belle_sip_uri_get_ttl_param(const belle_sip_uri_t* uri) ; /** * Returns the user part of this SipURI. * */ BELLESIP_EXPORT const char* belle_sip_uri_get_user(const belle_sip_uri_t* uri) ; /** * Returns the value of the userParam, or null if this is not set. * */ BELLESIP_EXPORT const char* belle_sip_uri_get_user_param(const belle_sip_uri_t* uri) ; /** * Gets user password of SipURI, or null if it is not set. * */ BELLESIP_EXPORT const char* belle_sip_uri_get_user_password(const belle_sip_uri_t* uri) ; /** * Returns whether the the lr parameter is set. * */ BELLESIP_EXPORT unsigned int belle_sip_uri_has_lr_param(const belle_sip_uri_t* uri) ; /** * * Returns true if this SipURI is secure i.e. if this SipURI represents a sips URI. * */ BELLESIP_EXPORT unsigned int belle_sip_uri_is_secure(const belle_sip_uri_t* uri) ; /** * Sets the value of the specified header fields to be included in a request constructed from the URI. * */ BELLESIP_EXPORT void belle_sip_uri_set_header(belle_sip_uri_t* uri,const char*name, const char*value) ; /** * Removes specified header from uri. **/ BELLESIP_EXPORT void belle_sip_uri_remove_header(belle_sip_uri_t *uri, const char *name); /** * Removes the port part of this SipURI. * */ BELLESIP_EXPORT void belle_sip_uri_remove_port(belle_sip_uri_t* uri) ; /** * Set the host part of this SipURI to the newly supplied host parameter. * */ BELLESIP_EXPORT void belle_sip_uri_set_host(belle_sip_uri_t* uri,const char*host) ; /** * Sets the value of the lr parameter of this SipURI. * */ BELLESIP_EXPORT void belle_sip_uri_set_lr_param(belle_sip_uri_t* uri,unsigned int param) ; /** * Sets the value of the maddr parameter of this SipURI. * */ BELLESIP_EXPORT void belle_sip_uri_set_maddr_param(belle_sip_uri_t* uri,const char*mAddr) ; /** * Sets the value of the method parameter. * */ BELLESIP_EXPORT void belle_sip_uri_set_method_param(belle_sip_uri_t* uri,const char*method) ; /** * Set the port part of this SipURI to the newly supplied port parameter. * */ BELLESIP_EXPORT void belle_sip_uri_set_port(belle_sip_uri_t* uri, int port) ; /** * Sets the scheme of this URI to sip or sips depending on whether the argument is true or false. * */ BELLESIP_EXPORT void belle_sip_uri_set_secure(belle_sip_uri_t* uri,unsigned int secure) ; /** * Sets the value of the "transport" parameter. * */ BELLESIP_EXPORT void belle_sip_uri_set_transport_param(belle_sip_uri_t* uri,const char*transport) ; /** * Sets the value of the ttl parameter. * */ BELLESIP_EXPORT void belle_sip_uri_set_ttl_param(belle_sip_uri_t* uri,int ttl) ; /** * Sets the user of SipURI. * */ BELLESIP_EXPORT void belle_sip_uri_set_user(belle_sip_uri_t* uri,const char*user) ; /** * Sets the value of the user parameter. * */ BELLESIP_EXPORT void belle_sip_uri_set_user_param(belle_sip_uri_t* uri,const char*userParam) ; /** * Sets the user password associated with the user of SipURI. * */ BELLESIP_EXPORT void belle_sip_uri_set_user_password(belle_sip_uri_t* uri,const char*userPassword) ; /** * This method returns the URI as a string. * */ BELLESIP_EXPORT char* belle_sip_uri_to_string(const belle_sip_uri_t* uri) ; belle_sip_error_code belle_sip_uri_marshal(const belle_sip_uri_t* uri, char* buff, size_t buff_size, size_t *offset); #define BELLE_SIP_URI(obj) BELLE_SIP_CAST(obj,belle_sip_uri_t) /**define URI equality as using comparison rules from RFC3261 section 19.1.4 * @param belle_sip_uri_t* uri_a * @param belle_sip_uri_t* uri_a * @return 0 if not matched. * * */ BELLESIP_EXPORT int belle_sip_uri_equals(const belle_sip_uri_t* uri_a,const belle_sip_uri_t* uri_b); /**define URI equality as belle_sip_uri_equals but allows URI omitting for the port * @param belle_sip_uri_t* uri_a * @param belle_sip_uri_t* uri_a * @return 0 if not matched. * * */ BELLESIP_EXPORT int belle_sip_uri_equals_with_uri_omitting(const belle_sip_uri_t* uri_a,const belle_sip_uri_t* uri_b); /** * returns 0 if uri does follows components requirement for being a request uri * */ BELLESIP_EXPORT int belle_sip_uri_check_components_from_request_uri(const belle_sip_uri_t* uri); /** * returns 0 if uri does follows components requirement for a given method/header */ BELLESIP_EXPORT int belle_sip_uri_check_components_from_context(const belle_sip_uri_t* uri,const char* method,const char* header_name); BELLE_SIP_END_DECLS #ifndef BELLE_SIP_USE_STL #define BELLE_SIP_USE_STL 1 #endif #if __cplusplus >= 201103L && BELLE_SIP_USE_STL #include inline std::ostream& operator<<( std::ostream& __os, const belle_sip_uri_t* uri) { char* uri_as_string = belle_sip_uri_to_string(uri); __os << uri_as_string; belle_sip_free(uri_as_string); return __os; } namespace std { template <> struct hash { size_t operator()(const belle_sip_uri_t *x ) const { hash H; size_t h=0; if (belle_sip_uri_get_user(x)) h = H(belle_sip_uri_get_user(x)); if (belle_sip_uri_get_host(x)) h ^=H(belle_sip_uri_get_host(x)); if (belle_sip_uri_get_port(x)>0) { std::hash H2; h ^=H2(belle_sip_uri_get_port(x)); } if (belle_sip_uri_get_transport_param(x)) { h ^=H(belle_sip_uri_get_transport_param(x)); } if (belle_sip_uri_is_secure(x)) h+=1; return h; } }; template <> struct equal_to { bool operator()(const belle_sip_uri_t* lhs, const belle_sip_uri_t* rhs) const { return belle_sip_uri_equals(lhs,rhs); } }; } #endif #endif /*BELLE_SIP_URI_H_*/ belle-sip-5.2.0+dfsg/include/belle-sip/sipstack.h000066400000000000000000000266401434613136500216200ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef belle_sip_stack_h #define belle_sip_stack_h struct belle_sip_timer_config{ int T1; int T2; int T3; int T4; }; typedef struct belle_sip_timer_config belle_sip_timer_config_t; typedef struct belle_sip_digest_authentication_policy belle_sip_digest_authentication_policy_t; BELLE_SIP_BEGIN_DECLS BELLESIP_EXPORT belle_sip_digest_authentication_policy_t * belle_sip_digest_authentication_policy_new(void); BELLESIP_EXPORT unsigned char belle_sip_digest_authentication_policy_get_allow_md5(const belle_sip_digest_authentication_policy_t *obj); BELLESIP_EXPORT void belle_sip_digest_authentication_policy_set_allow_md5(belle_sip_digest_authentication_policy_t *obj, unsigned char value); BELLESIP_EXPORT unsigned char belle_sip_digest_authentication_policy_get_allow_no_qop(const belle_sip_digest_authentication_policy_t *obj); BELLESIP_EXPORT void belle_sip_digest_authentication_policy_set_allow_no_qop(belle_sip_digest_authentication_policy_t *obj, unsigned char value); /** * This only affects the resolution of SIP URI in absence of port number, and in absence of SRV record for the SIP domain. The well known ports (udp/tcp and tls/dtls) are static. * @param well known port value **/ BELLESIP_EXPORT void belle_sip_stack_set_well_known_port (int value); BELLESIP_EXPORT void belle_sip_stack_set_well_known_port_tls (int value); BELLESIP_EXPORT int belle_sip_stack_get_well_known_port (void); BELLESIP_EXPORT int belle_sip_stack_get_well_known_port_tls (void); BELLESIP_EXPORT belle_sip_stack_t * belle_sip_stack_new(const char *properties); BELLESIP_EXPORT belle_sip_listening_point_t *belle_sip_stack_create_listening_point(belle_sip_stack_t *s, const char *ipaddress, int port, const char *transport); BELLESIP_EXPORT void belle_sip_stack_delete_listening_point(belle_sip_stack_t *s, belle_sip_listening_point_t *lp); BELLESIP_EXPORT belle_sip_provider_t *belle_sip_stack_create_provider(belle_sip_stack_t *s, belle_sip_listening_point_t *lp); BELLESIP_EXPORT belle_http_provider_t * belle_sip_stack_create_http_provider(belle_sip_stack_t *s, const char *bind_ip); #define BELLE_SIP_HTTP_TRANSPORT_TCP 0x01 #define BELLE_SIP_HTTP_TRANSPORT_TLS 0x02 /** * Create a HTTP provider attached to a given stack enabling specific transports * @param[in] s The stack to attach the transport * @param[in] bind_ip * @param[in] transports a mask of authorized transports for this provider, availables are BELLE_SIP_HTTP_TRANSPORT_TCP and BELLE_SIP_HTTP_TRANSPORT_TLS * * @return The HTTP provider * */ BELLESIP_EXPORT belle_http_provider_t * belle_sip_stack_create_http_provider_with_transports(belle_sip_stack_t *s, const char *bind_ip, const uint8_t transports); BELLESIP_EXPORT belle_sip_main_loop_t* belle_sip_stack_get_main_loop(belle_sip_stack_t *stack); BELLESIP_EXPORT void belle_sip_stack_main(belle_sip_stack_t *stack); BELLESIP_EXPORT void belle_sip_stack_sleep(belle_sip_stack_t *stack, unsigned int milliseconds); /*the transport timeout is typically the maximum time given for making a connection*/ BELLESIP_EXPORT void belle_sip_stack_set_transport_timeout(belle_sip_stack_t *stack, int timeout_ms); BELLESIP_EXPORT int belle_sip_stack_get_transport_timeout(const belle_sip_stack_t *stack); BELLESIP_EXPORT int belle_sip_stack_get_dns_timeout(const belle_sip_stack_t *stack); BELLESIP_EXPORT void belle_sip_stack_set_dns_timeout(belle_sip_stack_t *stack, int timeout); BELLESIP_EXPORT unsigned char belle_sip_stack_dns_srv_enabled(const belle_sip_stack_t *stack); BELLESIP_EXPORT void belle_sip_stack_enable_dns_srv(belle_sip_stack_t *stack, unsigned char enable); BELLESIP_EXPORT unsigned char belle_sip_stack_dns_search_enabled(const belle_sip_stack_t *stack); BELLESIP_EXPORT void belle_sip_stack_enable_dns_search(belle_sip_stack_t *stack, unsigned char enable); /** * Override system's DNS servers used for DNS resolving by app-supplied list of dns servers. * @param stack the stack * @param servers a list of char*. It is copied internally. **/ BELLESIP_EXPORT void belle_sip_stack_set_dns_servers(belle_sip_stack_t *stack, const belle_sip_list_t *servers); /** * Get the additional DNS hosts file. * @return The path to the additional DNS hosts file. **/ BELLESIP_EXPORT const char * belle_sip_stack_get_dns_user_hosts_file(const belle_sip_stack_t *stack); /** * Can be used to load an additional DNS hosts file for tests. * @param stack * @param hosts_file The path to the additional DNS hosts file to load. **/ BELLESIP_EXPORT void belle_sip_stack_set_dns_user_hosts_file(belle_sip_stack_t *stack, const char *hosts_file); /** * Get the overriding DNS resolv.conf file. * @return The path to the overriding DNS resolv.conf file. **/ BELLESIP_EXPORT const char * belle_sip_stack_get_dns_resolv_conf_file(const belle_sip_stack_t *stack); /** * Can be used to load an overriding DNS resolv.conf file for tests. * @param stack * @param hosts_file The path to the overriding DNS resolv.conf file to load. **/ BELLESIP_EXPORT void belle_sip_stack_set_dns_resolv_conf_file(belle_sip_stack_t *stack, const char *hosts_file); /** * Returns the time interval in seconds after which a connection must be closed when inactive. **/ BELLESIP_EXPORT int belle_sip_stack_get_inactive_transport_timeout(const belle_sip_stack_t *stack); /** * Sets the time interval in seconds after which a connection must be closed when inactive. * By inactive, it is meant that the connection hasn't been used to send or recv data. **/ BELLESIP_EXPORT void belle_sip_stack_set_inactive_transport_timeout(belle_sip_stack_t *stack, int seconds); /** * Set the time interval in seconds after which a connection is considered to be unreliable because * no data was received over it. * The special value 0 means that a connection will never be considered as unreliable. * See belle_sip_provider_clean_unreliable_channels(). */ BELLESIP_EXPORT void belle_sip_stack_set_unreliable_connection_timeout(belle_sip_stack_t *stack, int seconds); /** * Get the time interval in seconds after which a connection is considered to be unreliable because * no data was received over it. * See belle_sip_provider_clean_unreliable_channels(). */ BELLESIP_EXPORT int belle_sip_stack_get_unreliable_connection_timeout(const belle_sip_stack_t *stack); /** * Set the default dscp value to be used for all SIP sockets created and used in the stack. **/ BELLESIP_EXPORT void belle_sip_stack_set_default_dscp(belle_sip_stack_t *stack, int dscp); /** * Get the default dscp value to be used for all SIP sockets created and used in the stack. **/ BELLESIP_EXPORT int belle_sip_stack_get_default_dscp(belle_sip_stack_t *stack); /** * Returns TRUE if TLS support has been compiled into, FALSE otherwise. **/ BELLESIP_EXPORT int belle_sip_stack_tls_available(belle_sip_stack_t *stack); /** * Returns TRUE if the content encoding support has been compiled in, FALSE otherwise. **/ BELLESIP_EXPORT int belle_sip_stack_content_encoding_available(belle_sip_stack_t *stack, const char *content_encoding); /* * returns timer config for this stack **/ BELLESIP_EXPORT const belle_sip_timer_config_t *belle_sip_stack_get_timer_config(const belle_sip_stack_t *stack); /* * * set sip timer config to be used for this stack **/ BELLESIP_EXPORT void belle_sip_stack_set_timer_config(belle_sip_stack_t *stack, const belle_sip_timer_config_t *timer_config); BELLESIP_EXPORT void belle_sip_stack_set_http_proxy_host(belle_sip_stack_t *stack, const char* proxy_addr); BELLESIP_EXPORT void belle_sip_stack_set_http_proxy_port(belle_sip_stack_t *stack, int port); BELLESIP_EXPORT const char *belle_sip_stack_get_http_proxy_host(const belle_sip_stack_t *stack); BELLESIP_EXPORT int belle_sip_stack_get_http_proxy_port(const belle_sip_stack_t *stack); /** * Enable the reconnection to the primary server when it is up again as soon as possible. * When activated, instead of closing if the current server is not in the refreshed priority ordered servers' list * the bellesip channel will close if the current server is not the first server of this list. * As a result, it will try to reconnect to the server with the highest priority if it is not the case when records * are expiring. * @param prov * @param enabled 0 to disable **/ BELLESIP_EXPORT void belle_sip_stack_enable_reconnect_to_primary_asap(belle_sip_stack_t *stack, int enabled); /** * Returns if the reconnection to the primary server is enabled. * @param prov * @see belle_sip_provider_enable_reconnect_to_primary_asap() **/ BELLESIP_EXPORT int belle_sip_stack_reconnect_to_primary_asap_enabled(const belle_sip_stack_t *stack); /** * Configure security policies for digest authentication. */ BELLESIP_EXPORT void belle_sip_stack_set_digest_authentication_policy(belle_sip_stack_t *stack, belle_sip_digest_authentication_policy_t *policy); BELLESIP_EXPORT const belle_sip_digest_authentication_policy_t *belle_sip_stack_get_digest_authentication_policy(const belle_sip_stack_t *stack); /* * The following functions are for testing (non regression tests) ONLY */ /** * Can be used to simulate network transmission delays, for tests. **/ BELLESIP_EXPORT void belle_sip_stack_set_tx_delay(belle_sip_stack_t *stack, int delay_ms); /** * Can be used to simulate network sending error, for tests. * @param stack * @param send_error if <0, will cause channel error to be reported **/ BELLESIP_EXPORT void belle_sip_stack_set_send_error(belle_sip_stack_t *stack, int send_error); /** * Can be used to simulate network transmission delays, for tests. **/ BELLESIP_EXPORT void belle_sip_stack_set_resolver_tx_delay(belle_sip_stack_t *stack, int delay_ms); /** * Can be used to simulate network sending error, for tests. * @param stack * @param send_error if <0, will cause the resolver to fail with this error code. **/ BELLESIP_EXPORT void belle_sip_stack_set_resolver_send_error(belle_sip_stack_t *stack, int send_error); /** * Requests TCP/TLS client connection to bind a on specific port. This is for test ONLY. **/ BELLESIP_EXPORT void belle_sip_stack_set_client_bind_port(belle_sip_stack_t *stack, int port); #define BELLE_SIP_DNS_APPLE_DNS_SERVICE 0x01 #define BELLE_SIP_DNS_DNS_C 0x02 /** * Set the dns engine to use. * @param dns_engine Must be one of BELLE_SIP_DNS_APPLE_DNS_SERVICE or BELLE_SIP_DNS_DNS_C **/ BELLESIP_EXPORT void belle_sip_stack_set_dns_engine(belle_sip_stack_t *stack, unsigned char dns_engine); /** * Get the dns engine used * @return BELLE_SIP_DNS_APPLE_DNS_SERVICE or BELLE_SIP_DNS_DNS_C **/ BELLESIP_EXPORT unsigned char belle_sip_stack_get_dns_engine(const belle_sip_stack_t *stack); /** * Requests the stack to simulate a router that doesn't respond to SRV requests. This is for test ONLY. **/ BELLESIP_EXPORT void belle_sip_stack_simulate_non_working_srv(belle_sip_stack_t *stack, int yesno); /* * End of test functions. */ BELLE_SIP_END_DECLS #endif belle-sip-5.2.0+dfsg/include/belle-sip/transaction.h000066400000000000000000000122711434613136500223170ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef BELLE_SIP_TRANSACTION_H #define BELLE_SIP_TRANSACTION_H typedef enum belle_sip_transaction_state{ BELLE_SIP_TRANSACTION_INIT, BELLE_SIP_TRANSACTION_CALLING, BELLE_SIP_TRANSACTION_COMPLETED, BELLE_SIP_TRANSACTION_CONFIRMED, BELLE_SIP_TRANSACTION_ACCEPTED, /* BELLE_SIP_TRANSACTION_INIT, *
BELLE_SIP_TRANSACTION_CALLING, *
BELLE_SIP_TRANSACTION_PROCEEDING, *
BELLE_SIP_TRANSACTION_TRYING, * @param state * @return 0 if not transient * */ BELLESIP_EXPORT int belle_sip_transaction_state_is_transient(const belle_sip_transaction_state_t state); BELLESIP_EXPORT void *belle_sip_transaction_get_application_data(const belle_sip_transaction_t *t); BELLESIP_EXPORT void belle_sip_transaction_set_application_data(belle_sip_transaction_t *t, void *data); BELLESIP_EXPORT const char *belle_sip_transaction_get_branch_id(const belle_sip_transaction_t *t); BELLESIP_EXPORT belle_sip_transaction_state_t belle_sip_transaction_get_state(const belle_sip_transaction_t *t); BELLESIP_EXPORT const char *belle_sip_transaction_get_method(const belle_sip_transaction_t *t); BELLESIP_EXPORT void belle_sip_transaction_terminate(belle_sip_transaction_t *t); BELLESIP_EXPORT belle_sip_request_t *belle_sip_transaction_get_request(const belle_sip_transaction_t *t); BELLESIP_EXPORT belle_sip_response_t *belle_sip_transaction_get_response(const belle_sip_transaction_t *t); BELLESIP_EXPORT belle_sip_dialog_t* belle_sip_transaction_get_dialog(const belle_sip_transaction_t *t); BELLESIP_EXPORT void belle_sip_server_transaction_send_response(belle_sip_server_transaction_t *t, belle_sip_response_t *resp); BELLESIP_EXPORT belle_sip_request_t * belle_sip_client_transaction_create_cancel(belle_sip_client_transaction_t *t); BELLESIP_EXPORT int belle_sip_client_transaction_send_request(belle_sip_client_transaction_t *t); /* * Same as #belle_sip_client_transaction_send_request but with a predefined route. * @param t belle_sip_client_transaction_t * @param outbound_proxy uri use to directly send the request, useful for outbound proxy. * */ BELLESIP_EXPORT int belle_sip_client_transaction_send_request_to(belle_sip_client_transaction_t *t,belle_sip_uri_t* outbound_proxy); BELLESIP_EXPORT belle_sip_uri_t *belle_sip_client_transaction_get_route(belle_sip_client_transaction_t *t); /** * Creates an a sip refresher for transaction like REGISTER/SUBSCRIBE or INVITE which could be refreshed. * Transaction must in be in stated BELLE_SIP_TRANSACTION_COMPLETED. Refresher is created and started. A ref is taken on object transaction * */ BELLESIP_EXPORT belle_sip_refresher_t* belle_sip_client_transaction_create_refresher(belle_sip_client_transaction_t *t); /** * Create an authenticated request based on an existing terminated transaction. *
This function, update cseq, put route set and try to fill authorization headers. Initial request is not cloned. * @param transaction . must be in state completed * @param auth_infos if auth infos cannot be added for an authenticate header, * @param realm optional - If an outbound proxy realm is used, digestion authentication can be optimized. * a newly allocated belle_sip_auth_info_t object is added to this list. These object contains useful information like realm and username. May be NULL * */ BELLESIP_EXPORT belle_sip_request_t* belle_sip_client_transaction_create_authenticated_request(belle_sip_client_transaction_t *t,belle_sip_list_t** auth_infos,const char* realm); /** * For transactions over unreliable transports, stop retransmissions. This avoids for example to keep sending INVITE retransmissions of a call that has just been terminated, while * keeping the transaction alive in order to eventually let a response being handled, so that the transaction can be cancelled properly. **/ BELLESIP_EXPORT void belle_sip_client_transaction_stop_retransmissions(belle_sip_client_transaction_t *t); #define BELLE_SIP_TRANSACTION(t) BELLE_SIP_CAST(t,belle_sip_transaction_t) #define BELLE_SIP_SERVER_TRANSACTION(t) BELLE_SIP_CAST(t,belle_sip_server_transaction_t) #define BELLE_SIP_CLIENT_TRANSACTION(t) BELLE_SIP_CAST(t,belle_sip_client_transaction_t) BELLE_SIP_END_DECLS #endif belle-sip-5.2.0+dfsg/include/belle-sip/types.h000066400000000000000000000222721434613136500211400ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef BELLE_SIP_TYPES_H #define BELLE_SIP_TYPES_H #include "belle-sip/defs.h" #include "belle-sip/object.h" #include "belle-sip/dict.h" #ifndef BELLESIP_DEPRECATED #if defined(_MSC_VER) #define BELLESIP_DEPRECATED __declspec(deprecated) #else #define BELLESIP_DEPRECATED __attribute__ ((deprecated)) #endif #endif /** * This enum declares all object types used in belle-sip (see belle_sip_object_t) **/ BELLE_SIP_DECLARE_TYPES_BEGIN(belle_sip,1) BELLE_SIP_TYPE_ID(belle_sip_stack_t), BELLE_SIP_TYPE_ID(belle_sip_hop_t), BELLE_SIP_TYPE_ID(belle_sip_object_pool_t), BELLE_SIP_TYPE_ID(belle_sip_listening_point_t), BELLE_SIP_TYPE_ID(belle_sip_datagram_listening_point_t), BELLE_SIP_TYPE_ID(belle_sip_udp_listening_point_t), BELLE_SIP_TYPE_ID(belle_sip_stream_listening_point_t), BELLE_SIP_TYPE_ID(belle_sip_tls_listening_point_t), BELLE_SIP_TYPE_ID(belle_sip_tunnel_listening_point_t), BELLE_SIP_TYPE_ID(belle_sip_channel_t), BELLE_SIP_TYPE_ID(belle_sip_udp_channel_t), BELLE_SIP_TYPE_ID(belle_sip_stream_channel_t), BELLE_SIP_TYPE_ID(belle_sip_tls_channel_t), BELLE_SIP_TYPE_ID(belle_sip_tunnel_channel_t), BELLE_SIP_TYPE_ID(belle_sip_provider_t), BELLE_SIP_TYPE_ID(belle_sip_main_loop_t), BELLE_SIP_TYPE_ID(belle_sip_source_t), BELLE_SIP_TYPE_ID(belle_sip_mdns_source_t), BELLE_SIP_TYPE_ID(belle_sip_resolver_context_t), BELLE_SIP_TYPE_ID(belle_sip_transaction_t), BELLE_SIP_TYPE_ID(belle_sip_server_transaction_t), BELLE_SIP_TYPE_ID(belle_sip_client_transaction_t), BELLE_SIP_TYPE_ID(belle_sip_ict_t), BELLE_SIP_TYPE_ID(belle_sip_nict_t), BELLE_SIP_TYPE_ID(belle_sip_ist_t), BELLE_SIP_TYPE_ID(belle_sip_nist_t), BELLE_SIP_TYPE_ID(belle_sip_dialog_t), BELLE_SIP_TYPE_ID(belle_sip_header_address_t), BELLE_SIP_TYPE_ID(belle_sip_header_contact_t), BELLE_SIP_TYPE_ID(belle_sip_header_from_t), BELLE_SIP_TYPE_ID(belle_sip_header_to_t), BELLE_SIP_TYPE_ID(belle_sip_header_via_t), BELLE_SIP_TYPE_ID(belle_sip_header_diversion_t), BELLE_SIP_TYPE_ID(belle_sip_uri_t), BELLE_SIP_TYPE_ID(belle_sip_message_t), BELLE_SIP_TYPE_ID(belle_sip_request_t), BELLE_SIP_TYPE_ID(belle_sip_response_t), BELLE_SIP_TYPE_ID(belle_sip_object_t), BELLE_SIP_TYPE_ID(belle_sip_parameters_t), BELLE_SIP_TYPE_ID(belle_sip_header_call_id_t), BELLE_SIP_TYPE_ID(belle_sip_header_cseq_t), BELLE_SIP_TYPE_ID(belle_sip_header_content_type_t), BELLE_SIP_TYPE_ID(belle_sip_header_session_expires_t), BELLE_SIP_TYPE_ID(belle_sip_header_route_t), BELLE_SIP_TYPE_ID(belle_sip_header_record_route_t), BELLE_SIP_TYPE_ID(belle_sip_header_user_agent_t), BELLE_SIP_TYPE_ID(belle_sip_header_content_length_t), BELLE_SIP_TYPE_ID(belle_sip_header_t), BELLE_SIP_TYPE_ID(belle_sip_header_extension_t), BELLE_SIP_TYPE_ID(belle_sip_header_authorization_t), BELLE_SIP_TYPE_ID(belle_sip_header_proxy_authorization_t), BELLE_SIP_TYPE_ID(belle_sip_header_www_authenticate_t), BELLE_SIP_TYPE_ID(belle_sip_header_proxy_authenticate_t), BELLE_SIP_TYPE_ID(belle_sip_header_max_forwards_t), BELLE_SIP_TYPE_ID(belle_sip_header_expires_t), BELLE_SIP_TYPE_ID(belle_sip_header_allow_t), BELLE_SIP_TYPE_ID(belle_sdp_attribute_t), BELLE_SIP_TYPE_ID(belle_sdp_bandwidth_t), BELLE_SIP_TYPE_ID(belle_sdp_connection_t), BELLE_SIP_TYPE_ID(belle_sdp_email_t), BELLE_SIP_TYPE_ID(belle_sdp_info_t), BELLE_SIP_TYPE_ID(belle_sdp_key_t), BELLE_SIP_TYPE_ID(belle_sdp_media_t), BELLE_SIP_TYPE_ID(belle_sdp_media_description_t), BELLE_SIP_TYPE_ID(belle_sdp_origin_t), BELLE_SIP_TYPE_ID(belle_sdp_phone_t), BELLE_SIP_TYPE_ID(belle_sdp_raw_attribute_t), BELLE_SIP_TYPE_ID(belle_sdp_repeate_time_t), BELLE_SIP_TYPE_ID(belle_sdp_rtcp_fb_attribute_t), BELLE_SIP_TYPE_ID(belle_sdp_rtcp_xr_attribute_t), BELLE_SIP_TYPE_ID(belle_sdp_label_attribute_t), BELLE_SIP_TYPE_ID(belle_sdp_content_attribute_t), BELLE_SIP_TYPE_ID(belle_sdp_csup_attribute_t), BELLE_SIP_TYPE_ID(belle_sdp_creq_attribute_t), BELLE_SIP_TYPE_ID(belle_sdp_tcap_attribute_t), BELLE_SIP_TYPE_ID(belle_sdp_acap_attribute_t), BELLE_SIP_TYPE_ID(belle_sdp_acfg_attribute_t), BELLE_SIP_TYPE_ID(belle_sdp_pcfg_attribute_t), BELLE_SIP_TYPE_ID(belle_sdp_session_description_t), BELLE_SIP_TYPE_ID(belle_sdp_session_name_t), BELLE_SIP_TYPE_ID(belle_sdp_time_t), BELLE_SIP_TYPE_ID(belle_sdp_time_description_t), BELLE_SIP_TYPE_ID(belle_sdp_uri_t), BELLE_SIP_TYPE_ID(belle_sdp_version_t), BELLE_SIP_TYPE_ID(belle_sdp_base_description_t), BELLE_SIP_TYPE_ID(belle_sdp_mime_parameter_t), BELLE_SIP_TYPE_ID(belle_sip_callbacks_t), BELLE_SIP_TYPE_ID(belle_sip_refresher_t), BELLE_SIP_TYPE_ID(belle_sip_header_subscription_state_t), BELLE_SIP_TYPE_ID(belle_sip_header_service_route_t), BELLE_SIP_TYPE_ID(belle_sip_header_refer_to_t), BELLE_SIP_TYPE_ID(belle_sip_header_referred_by_t), BELLE_SIP_TYPE_ID(belle_sip_header_replaces_t), BELLE_SIP_TYPE_ID(belle_sip_header_date_t), BELLE_SIP_TYPE_ID(belle_sip_header_p_preferred_identity_t), BELLE_SIP_TYPE_ID(belle_sip_header_privacy_t), BELLE_SIP_TYPE_ID(belle_sip_certificates_chain_t), BELLE_SIP_TYPE_ID(belle_sip_signing_key_t), BELLE_SIP_TYPE_ID(belle_sip_dns_srv_t), BELLE_SIP_TYPE_ID(belle_sip_simple_resolver_context_t), BELLE_SIP_TYPE_ID(belle_sip_combined_resolver_context_t), BELLE_SIP_TYPE_ID(belle_sip_dict_t), BELLE_SIP_TYPE_ID(belle_sip_dual_resolver_context_t), BELLE_SIP_TYPE_ID(belle_http_provider_t), BELLE_SIP_TYPE_ID(belle_http_request_t), BELLE_SIP_TYPE_ID(belle_http_response_t), BELLE_SIP_TYPE_ID(belle_http_channel_context_t), BELLE_SIP_TYPE_ID(belle_generic_uri_t), BELLE_SIP_TYPE_ID(belle_http_callbacks_t), BELLE_SIP_TYPE_ID(belle_tls_crypto_config_t), BELLE_SIP_TYPE_ID(belle_http_header_authorization_t), BELLE_SIP_TYPE_ID(belle_sip_body_handler_t), BELLE_SIP_TYPE_ID(belle_sip_memory_body_handler_t), BELLE_SIP_TYPE_ID(belle_sip_user_body_handler_t), BELLE_SIP_TYPE_ID(belle_sip_file_body_handler_t), BELLE_SIP_TYPE_ID(belle_sip_multipart_body_handler_t), BELLE_SIP_TYPE_ID(belle_sip_header_event_t), BELLE_SIP_TYPE_ID(belle_sip_header_supported_t), BELLE_SIP_TYPE_ID(belle_sip_header_require_t), BELLE_SIP_TYPE_ID(belle_sip_header_content_disposition_t), BELLE_SIP_TYPE_ID(belle_sip_header_accept_t), BELLE_SIP_TYPE_ID(belle_sip_header_reason_t), BELLE_SIP_TYPE_ID(belle_sip_header_authentication_info_t), BELLE_SIP_TYPE_ID(belle_sip_mdns_register_t), BELLE_SIP_TYPE_ID(belle_sip_resolver_results_t), BELLE_SIP_TYPE_ID(belle_sip_cpp_object_t), BELLE_SIP_TYPE_ID(belle_sip_header_retry_after_t), BELLE_SIP_TYPE_ID(belle_sip_digest_authentication_policy_t) BELLE_SIP_DECLARE_TYPES_END enum belle_sip_interface_ids{ belle_sip_interface_id_first=1, BELLE_SIP_INTERFACE_ID(belle_sip_channel_listener_t), BELLE_SIP_INTERFACE_ID(belle_sip_listener_t), BELLE_SIP_INTERFACE_ID(belle_http_request_listener_t) }; /*these types are declared here because they are widely used in many headers included after*/ typedef struct belle_sip_listening_point belle_sip_listening_point_t; typedef struct belle_sip_tls_listening_point belle_sip_tls_listening_point_t; typedef struct belle_sip_stack belle_sip_stack_t; typedef struct belle_sip_provider belle_sip_provider_t; typedef struct belle_http_provider belle_http_provider_t; typedef struct belle_sip_dialog belle_sip_dialog_t; typedef struct belle_sip_transaction belle_sip_transaction_t; typedef struct belle_sip_server_transaction belle_sip_server_transaction_t; typedef struct belle_sip_client_transaction belle_sip_client_transaction_t; typedef struct _belle_sip_message belle_sip_message_t; typedef struct _belle_sip_request belle_sip_request_t; typedef struct _belle_sip_response belle_sip_response_t; typedef struct belle_http_request belle_http_request_t; typedef struct belle_http_response belle_http_response_t; typedef struct belle_sip_hop belle_sip_hop_t; typedef struct _belle_generic_uri belle_generic_uri_t; typedef struct _belle_sip_uri belle_sip_uri_t; typedef struct _belle_sip_parameters belle_sip_parameters_t; typedef struct belle_sip_param_pair belle_sip_param_pair_t; typedef struct _belle_sip_header belle_sip_header_t; typedef struct belle_tls_crypto_config belle_tls_crypto_config_t; typedef struct belle_tls_crypto_config belle_tls_verify_policy_t; /* belle_tls_verify_policy_t is deprecated, just for backward compatibility */ typedef struct belle_sip_body_handler belle_sip_body_handler_t; typedef struct belle_sip_memory_body_handler belle_sip_memory_body_handler_t; typedef struct belle_sip_user_body_handler belle_sip_user_body_handler_t; typedef struct belle_sip_file_body_handler belle_sip_file_body_handler_t; typedef struct belle_sip_multipart_body_handler belle_sip_multipart_body_handler_t; #endif belle-sip-5.2.0+dfsg/include/belle-sip/utils.h000066400000000000000000000114251434613136500211320ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef BELLE_SIP_UTILS_H #define BELLE_SIP_UTILS_H #include #include #include #include #include "belle-sip/defs.h" #include "bctoolbox/logging.h" #include "bctoolbox/vconnect.h" #define BELLE_SIP_LOG_DOMAIN "belle-sip" BELLE_SIP_BEGIN_DECLS #define belle_sip_malloc bctbx_malloc #define belle_sip_malloc0 bctbx_malloc0 #define belle_sip_realloc bctbx_realloc #define belle_sip_free bctbx_free #define belle_sip_strdup bctbx_strdup BELLE_SIP_END_DECLS /***************/ /* logging api */ /***************/ #define BELLE_SIP_LOG_FATAL BCTBX_LOG_FATAL #define BELLE_SIP_LOG_ERROR BCTBX_LOG_ERROR #define BELLE_SIP_LOG_WARNING BCTBX_LOG_WARNING #define BELLE_SIP_LOG_MESSAGE BCTBX_LOG_MESSAGE #define BELLE_SIP_LOG_DEBUG BCTBX_LOG_DEBUG #define BELLE_SIP_LOG_END BCTBX_LOG_END #define belle_sip_log_level BctbxLogLevel #define belle_sip_log_function_t BctbxLogFunc typedef enum { BELLE_SIP_NOT_IMPLEMENTED = -2, BELLE_SIP_BUFFER_OVERFLOW = -1, BELLE_SIP_OK = 0 } belle_sip_error_code; #ifdef __GNUC__ #define BELLE_SIP_CHECK_FORMAT_ARGS(m,n) __attribute__((format(printf,m,n))) #else #define BELLE_SIP_CHECK_FORMAT_ARGS(m,n) #endif BELLE_SIP_BEGIN_DECLS #define belle_sip_log_level_enabled(level) bctbx_log_level_enabled(BELLE_SIP_LOG_DOMAIN,level) #ifdef BELLE_SIP_DEBUG_MODE #define belle_sip_deb(...) bctbx_debug(...) #else #define belle_sip_debug(...) #endif #ifdef BELLE_SIP_NOMESSAGE_MODE #define belle_sip_log(...) #define belle_sip_message(...) #define belle_sip_warning(...) #else #define belle_sip_log bctbx_log #define belle_sip_message bctbx_message #define belle_sip_warning bctbx_warning #define belle_sip_error bctbx_error #define belle_sip_fatal bctbx_fatal #define belle_sip_logv bctbx_logv #endif BELLESIP_EXPORT void belle_sip_set_log_handler(belle_sip_log_function_t func); #define belle_sip_strdup_printf bctbx_strdup_printf #define belle_sip_strcat_vprintf bctbx_strcat_vprintf #define belle_sip_strcat_printf bctbx_strcat_printf BELLESIP_EXPORT belle_sip_error_code BELLE_SIP_CHECK_FORMAT_ARGS(4,5) belle_sip_snprintf(char *buff, size_t buff_size, size_t *offset, const char *fmt, ...); BELLESIP_EXPORT belle_sip_error_code belle_sip_snprintf_valist(char *buff, size_t buff_size, size_t *offset, const char *fmt, va_list args); #define belle_sip_set_log_level(level) bctbx_set_log_level(BELLE_SIP_LOG_DOMAIN,level); BELLESIP_EXPORT char * belle_sip_random_token(char *ret, size_t size); BELLESIP_EXPORT char * belle_sip_random_token_with_charset(char *ret, size_t size, const char * charset, size_t charset_length); BELLESIP_EXPORT unsigned char * belle_sip_random_bytes(unsigned char *ret, size_t size); BELLESIP_EXPORT uint32_t belle_sip_random(void); BELLESIP_EXPORT char * belle_sip_octets_to_text(const unsigned char *hash, size_t hash_len, char *ret, size_t size); BELLESIP_EXPORT char * belle_sip_create_tag(char *ret, size_t size); BELLESIP_EXPORT const char* belle_sip_version_to_string(void); /** * Returns string without surrounding quotes if any, else just call belle_sip_strdup(). **/ BELLESIP_EXPORT char *belle_sip_unquote_strdup(const char *str); BELLESIP_EXPORT uint64_t belle_sip_time_ms(void); /** Connect API */ BELLESIP_EXPORT void belle_sip_set_socket_api(bctbx_vsocket_api_t* my_api); #if defined(_WIN32) #include #include typedef SOCKET belle_sip_socket_t; typedef HANDLE belle_sip_fd_t; #else #include #include #include typedef int belle_sip_socket_t; typedef int belle_sip_fd_t; #endif typedef void (*belle_sip_background_task_end_callback_t)(void *); BELLESIP_EXPORT unsigned long belle_sip_begin_background_task(const char *name, belle_sip_background_task_end_callback_t cb, void *data); BELLESIP_EXPORT void belle_sip_end_background_task(unsigned long id); BELLESIP_EXPORT char* belle_sip_uri_to_escaped_username(const char* buff); BELLESIP_EXPORT char* belle_sip_username_unescape_unnecessary_characters(const char* buff); BELLESIP_EXPORT char* belle_sip_to_unescaped_string(const char* buff); BELLE_SIP_END_DECLS #endif belle-sip-5.2.0+dfsg/include/belle-sip/wakelock.h000066400000000000000000000025771434613136500216020ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef WAKE_LOCK_H #define WAKE_LOCK_H #include #include "belle-sip/defs.h" BELLE_SIP_BEGIN_DECLS /** * Initialize the Android wake lock system inside Belle-SIP. * This function must be called only once when the program starts. * @param env A JNI environment * @parma pm An android.os.PowerManager java object. */ BELLESIP_EXPORT void belle_sip_wake_lock_init(JNIEnv *env, jobject pm); /** * Uninit the the Android wake lock system. This function may be called * while the program stopping. * @param env A JNI environment. */ BELLESIP_EXPORT void belle_sip_wake_lock_uninit(JNIEnv *env); BELLE_SIP_END_DECLS #endif // WALE_LOCK_H belle-sip-5.2.0+dfsg/src/000077500000000000000000000000001434613136500151065ustar00rootroot00000000000000belle-sip-5.2.0+dfsg/src/.DS_Store000066400000000000000000000200041434613136500165650ustar00rootroot00000000000000Bud1 sports  @€ @€ @€ @ transportsbwspblobÉbplist00×  ]ShowStatusBar[ShowPathbar[ShowToolbar[ShowTabView_ContainerShowSidebar\WindowBounds[ShowSidebar  _{{121, 102}, {868, 564}} %1=I`myz{|}~™š transportslsvCblob—bplist00Ø IJ L_viewOptionsVersion_showIconPreviewWcolumns_calculateAllSizesXtextSizeZsortColumn_useRelativeDatesXiconSize « "&+05:?DÔ  ZidentifierUwidthYascendingWvisibleTname9 Ô WvisibleUwidthYascending#XubiquityÔ ! µ\dateModifiedÔ %[dateCreatedÔ '( Tsizea Ô ,- Tkinds Ô 12 Ulabeld Ô 67 WversionK Ô ;< Xcomments, Ô ACÈ^dateLastOpenedÔ EYdateAdded#@(Tname #@0.@H\epƒŒŽ›¤¯µ¿ÇÌÏÐÑÚâèòóõöÿ   "#$09>@ABKPRST]cefgpxz{|…Ž‘’“œŸ ¯¸ÂÃÄÅÎÓÔMÝ transportslsvpblob^bplist00Ø EF H_viewOptionsVersion_showIconPreviewWcolumns_calculateAllSizesXtextSizeZsortColumn_useRelativeDatesXiconSize Ù #(-27 @ 9 Ô %  #@(Tname #@0.@H\epƒŒŽ¢«ºÆËÑÖÞãðù')+,-68:;<EFHIKTUWXZcdfgirsuvx‚…†ˆ‘’“”¢£I¬ transportsvSrnlong E DSDB `€ @€ @€ @ÈÔ$%µÔ *, aÔ/ 1d Ô 4 6 s Ô9 ;K Ô > @ 9 Ô %  #@(Tname #@0.@H\epƒŒŽ¢«ºÆËÑÖÞãðù')+,-68:;<EFHIKTUWXZcdfgirsuvx‚…†ˆ‘’“”¢£I¬ transportsvSrnlongbelle-sip-5.2.0+dfsg/src/CMakeLists.txt000066400000000000000000000220411434613136500176450ustar00rootroot00000000000000############################################################################ # CMakeLists.txt # Copyright (C) 2014 Belledonne Communications, Grenoble France # ############################################################################ # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # ############################################################################ function(require_c99 target) if(CMAKE_C_COMPILER_ID STREQUAL "QCC") target_compile_options(${target} PRIVATE "-std=gnu99") else() if (CMAKE_VERSION VERSION_LESS "3.1") if (CMAKE_C_COMPILER_ID STREQUAL "GNU") target_compile_options(${target} PRIVATE "-std=gnu99") endif() else() set_property(TARGET ${target} PROPERTY C_STANDARD 99) set_property(TARGET ${target} PROPERTY C_STANDARD_REQUIRED TRUE) endif() endif() endfunction() set(PUBLIC_INCLUDE_DIRS $ $ $ ) set(PRIVATE_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/antlr3c/include ${CMAKE_CURRENT_BINARY_DIR}/antlr3c ) set(LIBS bctoolbox) if(Threads_FOUND) if(CMAKE_USE_PTHREADS_INIT AND NOT CMAKE_SYSTEM_NAME MATCHES "QNX" AND NOT ANDROID) list(APPEND LIBS ${CMAKE_THREAD_LIBS_INIT}) endif() endif() if(HAVE_LIBDL) list(APPEND LIBS dl) endif() if(HAVE_LIBRT) list(APPEND LIBS rt) endif() if(HAVE_RESINIT) list(APPEND LIBS resolv) endif() if(ZLIB_FOUND) list(APPEND LIBS ${ZLIB_LIBRARIES}) endif() if(DNSSD_FOUND) list(APPEND LIBS ${DNSSD_LIBRARIES}) endif() if(WIN32) list(APPEND LIBS ws2_32) endif() list(APPEND LIBS belr) set(SDP_GENERATED_SOURCE_FILES_C grammars/belle_sdpLexer.c grammars/belle_sdpLexer.h grammars/belle_sdpParser.c grammars/belle_sdpParser.h ) set(SIP_MESSAGE_GENERATED_SOURCE_FILES_C grammars/belle_sip_messageLexer.c grammars/belle_sip_messageLexer.h grammars/belle_sip_messageParser.c grammars/belle_sip_messageParser.h ) if(ENABLE_TUNNEL) set(TUNNEL_SOURCE_FILES_C transports/tunnel_listeningpoint.c transports/tunnel_channel.c ) set(TUNNEL_SOURCE_FILES_CXX transports/tunnel_wrapper.cc ) list(APPEND LIBS ${TUNNEL_LIBRARIES}) endif() add_subdirectory(antlr3c) set(BELLE_SIP_SOURCE_FILES_C auth_event.c auth_helper.c belle_sip_dict.c belle_sip_headers_impl.c belle_sip_loop.c belle_sip_mdns_register.c belle_sip_object.c belle_sip_parameters.c belle_sip_uri_impl.c belle_sip_utils.c belle_sip_resolver.c bodyhandler.c channel.c channel.h clock_gettime.c clock_gettime.h dialog.c dns/dns.c dns/dns.h generic-uri.c http-listener.c http-message.c http-provider.c ict.c ist.c listeningpoint.c listeningpoint_internal.h md5.c md5.h message.c nict.c nist.c parserutils.h port.c port.h provider.c refresher.c siplistener.c sipstack.c transaction.c transports/stream_channel.c transports/stream_channel.h transports/stream_listeningpoint.c transports/udp_channel.c transports/udp_listeningpoint.c transports/tls_listeningpoint.c transports/tls_channel.c ${SDP_GENERATED_SOURCE_FILES_C} ${SIP_MESSAGE_GENERATED_SOURCE_FILES_C} ${TUNNEL_SOURCE_FILES_C} ) add_definitions( -DBCTBX_LOG_DOMAIN="belle-sip" ) if(ANDROID) list(APPEND BELLE_SIP_SOURCE_FILES_C wakelock.c) endif() set(BELLE_SIP_SOURCE_FILES_CXX ${TUNNEL_SOURCE_FILES_CXX} object++.cc cpp_utils.cc #cpp_utils.hh belle_sdp_impl.cc #belle_sip_internal.h sdp/parser.cc #parser/sdp.hh ) set(GRAMMAR_FILES sdp/sdp_grammar ) if(APPLE) set(BELLE_SIP_SOURCE_FILES_OBJC backgroundtask.mm ios_check_version.m ) endif() bc_apply_compile_flags(BELLE_SIP_SOURCE_FILES_C STRICT_OPTIONS_CPP STRICT_OPTIONS_C) bc_apply_compile_flags(BELLE_SIP_SOURCE_FILES_OBJC STRICT_OPTIONS_CPP STRICT_OPTIONS_OBJC) if(BELLE_SIP_SOURCE_FILES_CXX) set_source_files_properties(${BELLE_SIP_SOURCE_FILES_CXX} PROPERTIES LANGUAGE CXX) bc_apply_compile_flags(BELLE_SIP_SOURCE_FILES_CXX STRICT_OPTIONS_CPP STRICT_OPTIONS_CXX) endif() if(MSVC) string(CONCAT DNS_C_COMPILE_FLAGS " /wd4267" # Disable "possible loss of data" warnings " /wd4804" # Disable "unsafe use of type 'bool' in operation" warnings " /wd4244" # Disable "conversion from 'intmax_t' to 'int', possible loss of data" warnings " /wd4305" # Disable "'initializing': truncation from 'unsigned int' to 'UCHAR'" warnings " /wd4018" # Disable "signed/unsigned mismatch" warnings ) set_property(SOURCE dns/dns.c APPEND_STRING PROPERTY COMPILE_FLAGS ${DNS_C_COMPILE_FLAGS}) set_property(SOURCE grammars/belle_sdpParser.c APPEND_STRING PROPERTY COMPILE_FLAGS " /wd4267") # Disable "possible loss of data" warnings set_property(SOURCE grammars/belle_sip_messageParser.c APPEND_STRING PROPERTY COMPILE_FLAGS " /wd4267") # Disable "possible loss of data" warnings else() set_property(SOURCE dns/dns.c APPEND_STRING PROPERTY COMPILE_FLAGS " -Wno-override-init -Wno-implicit-fallthrough -Wno-array-bounds") set_property(SOURCE grammars/belle_sip_messageParser.c APPEND_STRING PROPERTY COMPILE_FLAGS " -Wno-sign-compare") endif() set(BELLESIP_RESOURCES "${CMAKE_CURRENT_SOURCE_DIR}/../src/sdp/sdp_grammar") string(REPLACE ";" " " LINK_FLAGS_STR "${LINK_FLAGS}") if(ENABLE_STATIC) add_library(bellesip-static STATIC ${BELLE_SIP_HEADER_FILES} ${BELLE_SIP_SOURCE_FILES_C} ${BELLE_SIP_SOURCE_FILES_CXX} ${BELLE_SIP_SOURCE_FILES_OBJC} ${ANTLR3C_SOURCE_FILES} ${GRAMMAR_FILES}) set_target_properties(bellesip-static PROPERTIES OUTPUT_NAME bellesip) set_target_properties(bellesip-static PROPERTIES CXX_STANDARD 11 CXX_STANDARD_REQUIRED ON) target_include_directories(bellesip-static INTERFACE ${PUBLIC_INCLUDE_DIRS} PRIVATE ${PRIVATE_INCLUDE_DIRS}) target_link_libraries(bellesip-static PRIVATE ${LIBS}) if(NOT "${LINK_FLAGS_STR}" STREQUAL "") set_target_properties(bellesip-static PROPERTIES LINK_FLAGS "${LINK_FLAGS_STR}") endif() require_c99(bellesip-static) install(TARGETS bellesip-static EXPORT ${EXPORT_TARGETS_NAME}Targets ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE ) endif() if(ENABLE_SHARED) add_library(bellesip SHARED ${BELLE_SIP_HEADER_FILES} ${BELLE_SIP_SOURCE_FILES_C} ${BELLE_SIP_SOURCE_FILES_CXX} ${BELLE_SIP_SOURCE_FILES_OBJC} ${ANTLR3C_SOURCE_FILES} ${GRAMMAR_FILES}) set_target_properties(bellesip PROPERTIES SOVERSION ${BELLESIP_SO_VERSION}) set_target_properties(bellesip PROPERTIES LINKER_LANGUAGE CXX) set_target_properties(bellesip PROPERTIES CXX_STANDARD 11 CXX_STANDARD_REQUIRED ON) target_include_directories(bellesip INTERFACE ${PUBLIC_INCLUDE_DIRS} PRIVATE ${PRIVATE_INCLUDE_DIRS}) target_link_libraries(bellesip PRIVATE ${LIBS}) if(APPLE) if(IOS) set(MIN_OS ${LINPHONE_IOS_DEPLOYMENT_TARGET}) else() set(MIN_OS ${CMAKE_OSX_DEPLOYMENT_TARGET}) endif() set_target_properties(bellesip PROPERTIES FRAMEWORK TRUE MACOSX_FRAMEWORK_IDENTIFIER org.linphone.belle-sip MACOSX_FRAMEWORK_INFO_PLIST "${PROJECT_SOURCE_DIR}/build/osx/Info.plist.in" RESOURCE "${BELLESIP_RESOURCES}" PUBLIC_HEADER "${BELLE_SIP_HEADER_FILES}" ) SET_TARGET_PROPERTIES(bellesip PROPERTIES OUTPUT_NAME belle-sip) endif() if(NOT "${LINK_FLAGS_STR}" STREQUAL "") set_target_properties(bellesip PROPERTIES LINK_FLAGS "${LINK_FLAGS_STR}") endif() require_c99(bellesip) if(MSVC) if(CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo") install(FILES $ DESTINATION ${CMAKE_INSTALL_BINDIR} PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE ) endif() endif() if(APPLE) install(TARGETS bellesip EXPORT ${EXPORT_TARGETS_NAME}Targets RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} FRAMEWORK DESTINATION Frameworks PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE ) else() install(TARGETS bellesip EXPORT ${EXPORT_TARGETS_NAME}Targets RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE ) endif() endif() install(FILES ${GRAMMAR_FILES} DESTINATION "${CMAKE_INSTALL_DATADIR}/belr/grammars" ) #to avoid // build to generate code twice in // leading compilation issues. Might probably be done in a better way if (ENABLE_SHARED AND ENABLE_STATIC) add_dependencies(bellesip-static bellesip) endif() belle-sip-5.2.0+dfsg/src/Makefile.am000077500000000000000000000036221434613136500171500ustar00rootroot00000000000000SUBDIRS=grammars AUTOMAKE_OPTIONS = subdir-objects lib_LTLIBRARIES=libbellesip.la libbellesip_la_SOURCES= \ clock_gettime.c clock_gettime.h \ port.c port.h \ parserutils.h \ belle_sip_uri_impl.c \ belle_sip_headers_impl.c \ belle_sip_utils.c belle_sip_internal.h \ belle_sip_object.c \ belle_sip_loop.c \ belle_sip_resolver.c \ belle_sip_parameters.c \ belle_sdp_impl.c \ transaction.c \ listeningpoint.c listeningpoint_internal.h \ sipstack.c \ provider.c \ channel.c channel.h \ message.c \ md5.c md5.h \ auth_helper.c \ siplistener.c \ ict.c \ ist.c \ nict.c \ nist.c \ dialog.c \ auth_event.c \ transports/udp_listeningpoint.c \ transports/udp_channel.c \ transports/stream_channel.c \ transports/stream_channel.h \ transports/stream_listeningpoint.c \ transports/tls_listeningpoint.c \ transports/tls_channel.c \ refresher.c \ dns.c dns.h \ belle_sip_dict.c \ generic-uri.c \ http-provider.c \ http-message.c \ http-listener.c \ bodyhandler.c if BUILD_APPLE libbellesip_la_SOURCES+=backgroundtask.m endif if BUILD_TUNNEL libbellesip_la_SOURCES+=transports/tunnel_listeningpoint.c \ transports/tunnel_channel.c \ transports/tunnel_wrapper.cc endif libbellesip_la_CFLAGS=$(STRICT_OPTIONS) $(STRICT_OPTIONS_CC) $(ANTLR_CFLAGS) $(TLS_CFLAGS) $(TUNNEL_CFLAGS) $(LIBBELLESIP_CFLAGS) libbellesip_la_CXXFLAGS=$(STRICT_OPTIONS) $(STRICT_OPTIONS_CXX) $(TLS_CFLAGS) $(TUNNEL_CFLAGS) $(LIBBELLESIP_CFLAGS) libbellesip_la_LIBADD=grammars/libbellesip_generated.la $(ANTLR_LIBS) $(TLS_LIBS) $(TUNNEL_LIBS) $(ZLIB_LIBS) libbellesip_la_LDFLAGS=-no-undefined -version-info $(BELLESIP_SO_VERSION) AM_CPPFLAGS=-I$(top_srcdir)/include -I$(builddir)/grammars discovery: touch specs.c $(CC) $(CFLAGS) -include $(top_builddir)/config.h $(ANTLR_CFLAGS) $(BCTOOLBOXTESTER_CFLAGS) $(TLS_CFLAGS) -E -P -v -dD specs.c belle-sip-5.2.0+dfsg/src/antlr3c/000077500000000000000000000000001434613136500164545ustar00rootroot00000000000000belle-sip-5.2.0+dfsg/src/antlr3c/CMakeLists.txt000066400000000000000000000074471434613136500212300ustar00rootroot00000000000000############################################################################ # CMakeLists.txt # Copyright (C) 2014 Belledonne Communications, Grenoble France # ############################################################################ # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # ############################################################################ option(ENABLE_64BIT "Turns on flags that produce 64 bit object code if any are required." OFF) option(ENABLE_DEBUGGER "Turns on default flags that include the antlr debugger in the runtime. Disable to remove debugger and the socket dependancies." OFF) if(ENABLE_64BIT) set(ANTLR3_USE_64BIT 1) endif(ENABLE_64BIT) if(NOT ENABLE_DEBUGGER) set(ANTLR3_NODEBUGGER 1) endif(NOT ENABLE_DEBUGGER) include(CheckIncludeFile) check_include_file("arpa/nameser.h" HAVE_ARPA_NAMESER_H) check_include_file("ctype.h" HAVE_CTYPE_H) check_include_file("inttypes.h" HAVE_INTTYPES_H) check_include_file("malloc.h" HAVE_MALLOC_H) check_include_file("memory.h" HAVE_MEMORY_H) check_include_file("netdb.h" HAVE_NETDB_H) check_include_file("netinet/in.h" HAVE_NETINET_IN_H) check_include_file("netinet/tcp.h" HAVE_NETINET_TCP_H) check_include_file("socket.h" HAVE_SOCKET_H) check_include_file("stdarg.h" HAVE_STDARG_H) check_include_file("stdint.h" HAVE_STDINT_H) check_include_file("stdlib.h" HAVE_STDLIB_H) check_include_file("strings.h" HAVE_STRINGS_H) check_include_file("string.h" HAVE_STRING_H) check_include_file("sys/malloc.h" HAVE_SYS_MALLOC_H) check_include_file("sys/socket.h" HAVE_SYS_SOCKET_H) check_include_file("sys/stat.h" HAVE_SYS_STAT_H) check_include_file("sys/types.h" HAVE_SYS_TYPES_H) check_include_file("unistd.h" HAVE_UNISTD_H) foreach(KEYWORD "inline" "__inline__" "__inline") if(NOT DEFINED C_INLINE) try_compile(C_HAS_${KEYWORD} "${CMAKE_CURRENT_BINARY_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/test_inline.c" COMPILE_DEFINITIONS "-Dinline=${KEYWORD}") if(C_HAS_${KEYWORD}) set(C_INLINE TRUE) if(NOT "${KEYWORD}" STREQUAL "inline") set(inline ${KEYWORD}) endif(NOT "${KEYWORD}" STREQUAL "inline") endif(C_HAS_${KEYWORD}) endif(NOT DEFINED C_INLINE) endforeach(KEYWORD) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/antlr3config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/antlr3config.h) if(NOT MSVC) add_definitions("-Wall") endif() include_directories( include ${CMAKE_CURRENT_BINARY_DIR} ) set(ANTLR3C_SOURCE_FILES antlr3c/src/antlr3baserecognizer.c antlr3c/src/antlr3basetree.c antlr3c/src/antlr3basetreeadaptor.c antlr3c/src/antlr3bitset.c antlr3c/src/antlr3collections.c antlr3c/src/antlr3commontoken.c antlr3c/src/antlr3commontree.c antlr3c/src/antlr3commontreeadaptor.c antlr3c/src/antlr3commontreenodestream.c antlr3c/src/antlr3convertutf.c antlr3c/src/antlr3cyclicdfa.c antlr3c/src/antlr3debughandlers.c antlr3c/src/antlr3encodings.c antlr3c/src/antlr3exception.c antlr3c/src/antlr3filestream.c antlr3c/src/antlr3inputstream.c antlr3c/src/antlr3intstream.c antlr3c/src/antlr3lexer.c antlr3c/src/antlr3parser.c antlr3c/src/antlr3rewritestreams.c antlr3c/src/antlr3string.c antlr3c/src/antlr3tokenstream.c antlr3c/src/antlr3treeparser.c ${CMAKE_CURRENT_BINARY_DIR}/antlr3config.h PARENT_SCOPE ) belle-sip-5.2.0+dfsg/src/antlr3c/antlr3config.h.cmake000066400000000000000000000040351434613136500222770ustar00rootroot00000000000000/*************************************************************************** * antlr3config.h.cmake * Copyright (C) 2014 Belledonne Communications, Grenoble France * **************************************************************************** * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * ****************************************************************************/ #cmakedefine PACKAGE "@PACKAGE@" #cmakedefine PACKAGE_NAME "@PACKAGE_NAME@" #cmakedefine PACKAGE_VERSION "@PACKAGE_VERSION@" #cmakedefine PACKAGE_STRING "@PACKAGE_STRING@" #cmakedefine PACKAGE_TARNAME "@PACKAGE_TARNAME@" #cmakedefine PACKAGE_BUGREPORT "@PACKAGE_BUGREPORT@" #cmakedefine PACKAGE_URL "@PACKAGE_URL@" #cmakedefine VERSION "@VERSION@" #cmakedefine ANTLR3_NODEBUGGER #cmakedefine ANTLR3_USE_64BIT #cmakedefine HAVE_ARPA_NAMESER_H 1 #cmakedefine HAVE_CTYPE_H 1 #cmakedefine HAVE_INTTYPES_H 1 #cmakedefine HAVE_MALLOC_H 1 #cmakedefine HAVE_MEMORY_H 1 #cmakedefine HAVE_NETDB_H 1 #cmakedefine HAVE_NETINET_IN_H 1 #cmakedefine HAVE_NETINET_TCP_H 1 #cmakedefine HAVE_SOCKET_H 1 #cmakedefine HAVE_STDARG_H 1 #cmakedefine HAVE_STDINT_H 1 #cmakedefine HAVE_STDLIB_H 1 #cmakedefine HAVE_STRINGS_H 1 #cmakedefine HAVE_STRING_H 1 #cmakedefine HAVE_SYS_MALLOC_H 1 #cmakedefine HAVE_SYS_SOCKET_H 1 #cmakedefine HAVE_SYS_STAT_H 1 #cmakedefine HAVE_SYS_TYPES_H 1 #cmakedefine HAVE_UNISTD_H 1 #ifndef __cplusplus #cmakedefine inline @inline@ #endif belle-sip-5.2.0+dfsg/src/antlr3c/generate_grammar_sources.py000077500000000000000000000036351434613136500241030ustar00rootroot00000000000000#!/usr/bin/env python # # Copyright (c) 2012-2019 Belledonne Communications SARL. # # This file is part of belle-sip. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # import sys from glob import glob from subprocess import call def main(): print("Deleting old sources...") ret = call("rm -f ../grammars/belle_sdp*.c ../grammars/belle_sdp*.h ../grammars/belle_sip_message*.c ../grammars/belle_sip_message*.h", shell=True) if ret != 0: print("An error occured while deleting old sources") return -1 else: print("Done") print("Generating sources from belle_sdp.g...") ret = call(['java', '-jar', 'antlr-3.4-complete.jar', '-make', '-Xmultithreaded', '-Xconversiontimeout', '10000', '-fo', '../grammars', '../grammars/belle_sdp.g']) if ret != 0: print("An error occured while generating sources from belle_sdp.g") return -1 else: print("Done") print("Generating sources from belle_sip_message.g...") ret = call(['java', '-jar', 'antlr-3.4-complete.jar', '-make', '-Xmultithreaded', '-Xconversiontimeout', '10000', '-fo', '../grammars', '../grammars/belle_sip_message.g']) if ret != 0: print("An error occured while generating sources from belle_sip_message.g") return -1 else: print("Done") if __name__ == "__main__": sys.exit(main()) belle-sip-5.2.0+dfsg/src/antlr3c/test_inline.c000066400000000000000000000015611434613136500211400ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ typedef int foo_t; static inline foo_t static_foo(){return 0;} foo_t foo(){return 0;} int main(int argc, char *argv[]){return 0;}belle-sip-5.2.0+dfsg/src/auth_event.c000066400000000000000000000140511434613136500174150ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "belle-sip/auth-helper.h" #include "belle_sip_internal.h" GET_SET_STRING(belle_sip_auth_event,username) GET_SET_STRING(belle_sip_auth_event,userid) GET_SET_STRING(belle_sip_auth_event,realm) GET_SET_STRING(belle_sip_auth_event,domain) GET_SET_STRING(belle_sip_auth_event,passwd) GET_SET_STRING(belle_sip_auth_event,ha1) GET_SET_STRING(belle_sip_auth_event,distinguished_name) GET_SET_STRING(belle_sip_auth_event, algorithm) belle_sip_auth_event_t* belle_sip_auth_event_create(belle_sip_object_t *source, const char* realm, const belle_sip_uri_t *from_uri) { belle_sip_auth_event_t* result = belle_sip_new0(belle_sip_auth_event_t); result->source=source; belle_sip_auth_event_set_realm(result,realm); if (from_uri){ belle_sip_auth_event_set_username(result,belle_sip_uri_get_user(from_uri)); belle_sip_auth_event_set_domain(result,belle_sip_uri_get_host(from_uri)); } return result; } void belle_sip_auth_event_destroy(belle_sip_auth_event_t* event) { DESTROY_STRING(event,username); DESTROY_STRING(event,userid); DESTROY_STRING(event,realm); DESTROY_STRING(event,domain); DESTROY_STRING(event,passwd); DESTROY_STRING(event,ha1); DESTROY_STRING(event,distinguished_name); DESTROY_STRING(event,algorithm); if (event->cert) belle_sip_object_unref(event->cert); if (event->key) belle_sip_object_unref(event->key); belle_sip_free(event); } belle_sip_certificates_chain_t* belle_sip_auth_event_get_client_certificates_chain(const belle_sip_auth_event_t* event) { return event->cert; } void belle_sip_auth_event_set_client_certificates_chain(belle_sip_auth_event_t* event, belle_sip_certificates_chain_t* value) { SET_OBJECT_PROPERTY(event,cert,value); } belle_sip_signing_key_t* belle_sip_auth_event_get_signing_key(const belle_sip_auth_event_t* event) { return event->key; } void belle_sip_auth_event_set_signing_key(belle_sip_auth_event_t* event, belle_sip_signing_key_t* value) { SET_OBJECT_PROPERTY(event,key,value); } belle_sip_auth_mode_t belle_sip_auth_event_get_mode(const belle_sip_auth_event_t* event) { return event->mode; } /* deprecated on 2016/02/02 */ belle_tls_verify_policy_t *belle_tls_verify_policy_new(){ return (belle_tls_verify_policy_t *)belle_tls_crypto_config_new(); } int belle_tls_verify_policy_set_root_ca(belle_tls_verify_policy_t *obj, const char *path) { return belle_tls_crypto_config_set_root_ca(obj, path); } void belle_tls_verify_policy_set_exceptions(belle_tls_verify_policy_t *obj, int flags){ belle_tls_crypto_config_set_verify_exceptions(obj, flags); } unsigned int belle_tls_verify_policy_get_exceptions(const belle_tls_verify_policy_t *obj){ return belle_tls_crypto_config_get_verify_exceptions(obj); } /* end of deprecated on 2016/02/02 */ static void crypto_config_uninit(belle_tls_crypto_config_t *obj) { if (obj->root_ca) belle_sip_free(obj->root_ca); if (obj->root_ca_data) belle_sip_free(obj->root_ca_data); } BELLE_SIP_DECLARE_NO_IMPLEMENTED_INTERFACES(belle_tls_crypto_config_t); BELLE_SIP_INSTANCIATE_VPTR(belle_tls_crypto_config_t,belle_sip_object_t,crypto_config_uninit,NULL,NULL,FALSE); belle_tls_crypto_config_t *belle_tls_crypto_config_new(void){ belle_tls_crypto_config_t *obj=belle_sip_object_new(belle_tls_crypto_config_t); /*default to "system" default root ca, wihtout warranty...*/ #if defined(__ANDROID__) belle_tls_crypto_config_set_root_ca(obj,"/system/etc/security/cacerts"); #elif defined(__linux__) belle_tls_crypto_config_set_root_ca(obj,"/etc/ssl/certs"); #elif defined(__APPLE__) belle_tls_crypto_config_set_root_ca(obj,"/opt/local/share/curl/curl-ca-bundle.crt"); #elif defined(__QNX__) belle_tls_crypto_config_set_root_ca(obj,"/var/certs/web_trusted@personal@certmgr"); #endif obj->ssl_config = NULL; obj->exception_flags = BELLE_TLS_VERIFY_NONE; return obj; } int belle_tls_crypto_config_set_root_ca(belle_tls_crypto_config_t *obj, const char *path){ if (obj->root_ca) { belle_sip_free(obj->root_ca); obj->root_ca = NULL; } if (path) { obj->root_ca = belle_sip_strdup(path); belle_sip_message("Root ca path set to %s", obj->root_ca); } else { belle_sip_message("Root ca path disabled"); } return 0; } int belle_tls_crypto_config_set_root_ca_data(belle_tls_crypto_config_t *obj, const char *data) { if (obj->root_ca) { belle_sip_free(obj->root_ca); obj->root_ca = NULL; } if (obj->root_ca_data) { belle_sip_free(obj->root_ca_data); obj->root_ca_data = NULL; } if (data) { obj->root_ca_data = belle_sip_strdup(data); belle_sip_message("Root ca data set to %s", obj->root_ca_data); } else { belle_sip_message("Root ca data disabled"); } return 0; } void belle_tls_crypto_config_set_verify_exceptions(belle_tls_crypto_config_t *obj, int flags){ obj->exception_flags=flags; } unsigned int belle_tls_crypto_config_get_verify_exceptions(const belle_tls_crypto_config_t *obj){ return obj->exception_flags; } void belle_tls_crypto_config_set_ssl_config(belle_tls_crypto_config_t *obj, void *ssl_config) { obj->ssl_config = ssl_config; } void belle_tls_crypto_config_set_verify_callback(belle_tls_crypto_config_t *obj, belle_tls_crypto_config_verify_callback_t cb, void *cb_data){ obj->verify_cb = cb; obj->verify_cb_data = cb_data; } void belle_tls_crypto_config_set_postcheck_callback(belle_tls_crypto_config_t *obj, belle_tls_crypto_config_postcheck_callback_t cb, void *cb_data){ obj->postcheck_cb = cb; obj->postcheck_cb_data = cb_data; } belle-sip-5.2.0+dfsg/src/auth_helper.c000066400000000000000000000323231434613136500175550ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "belle-sip/auth-helper.h" #include "belle_sip_internal.h" #include #include "bctoolbox/crypto.h" #ifndef BELLE_SIP_CNONCE_LENGTH #define BELLE_SIP_CNONCE_LENGTH 16 #endif #define CHECK_IS_PRESENT(obj,header_name,name) \ if (!belle_sip_header_##header_name##_get_##name(obj)) {\ belle_sip_error("parameter ["#name"] not found for header ["#header_name"]");\ return-1;\ } static void belle_sip_auth_helper_clone_authorization(belle_sip_header_authorization_t* authorization, const belle_sip_header_www_authenticate_t* authentication) { CLONE_STRING_GENERIC(belle_sip_header_www_authenticate,belle_sip_header_authorization,scheme,authorization,authentication) CLONE_STRING_GENERIC(belle_sip_header_www_authenticate,belle_sip_header_authorization,realm,authorization,authentication) CLONE_STRING_GENERIC(belle_sip_header_www_authenticate,belle_sip_header_authorization,nonce,authorization,authentication) CLONE_STRING_GENERIC(belle_sip_header_www_authenticate,belle_sip_header_authorization,algorithm,authorization,authentication) CLONE_STRING_GENERIC(belle_sip_header_www_authenticate,belle_sip_header_authorization,opaque,authorization,authentication) } static void belle_sip_auth_helper_clone_www_authenticate(belle_sip_header_www_authenticate_t* authentication, const belle_sip_header_authorization_t* authorization) { CLONE_STRING_GENERIC(belle_sip_header_authorization,belle_sip_header_www_authenticate,scheme, authentication, authorization) CLONE_STRING_GENERIC(belle_sip_header_authorization,belle_sip_header_www_authenticate,realm, authentication, authorization) CLONE_STRING_GENERIC(belle_sip_header_authorization,belle_sip_header_www_authenticate,nonce, authentication, authorization) CLONE_STRING_GENERIC(belle_sip_header_authorization,belle_sip_header_www_authenticate,algorithm,authentication ,authorization) CLONE_STRING_GENERIC(belle_sip_header_authorization,belle_sip_header_www_authenticate,opaque,authentication, authorization) } belle_sip_header_authorization_t* belle_sip_auth_helper_create_authorization(const belle_sip_header_www_authenticate_t* authentication) { belle_sip_header_authorization_t* authorization = belle_sip_header_authorization_new(); belle_sip_auth_helper_clone_authorization(authorization,authentication); return authorization; } belle_sip_header_www_authenticate_t* belle_sip_auth_helper_create_www_authenticate(const belle_sip_header_authorization_t* authorization) { belle_sip_header_www_authenticate_t* www_authenticate = belle_sip_header_www_authenticate_new(); belle_sip_auth_helper_clone_www_authenticate(www_authenticate, authorization); return www_authenticate; } belle_http_header_authorization_t* belle_http_auth_helper_create_authorization(const belle_sip_header_www_authenticate_t* authentication) { belle_http_header_authorization_t* authorization = belle_http_header_authorization_new(); belle_sip_auth_helper_clone_authorization(BELLE_SIP_HEADER_AUTHORIZATION(authorization),authentication); return authorization; } belle_sip_header_proxy_authorization_t* belle_sip_auth_helper_create_proxy_authorization(const belle_sip_header_proxy_authenticate_t* proxy_authentication){ belle_sip_header_proxy_authorization_t* authorization = belle_sip_header_proxy_authorization_new(); belle_sip_auth_helper_clone_authorization(BELLE_SIP_HEADER_AUTHORIZATION(authorization),BELLE_SIP_HEADER_WWW_AUTHENTICATE(proxy_authentication)); return authorization; } static void belle_sip_auth_choose_method(const char *algo, const char *ask, uint8_t *out, size_t size) { if ((algo == NULL) || (!strcasecmp(algo, "MD5"))) { // By default, using MD5 when algorithm is NULL bctbx_md5((const uint8_t *)ask, strlen(ask), out); } else if (!strcasecmp(algo, "SHA-256")) { bctbx_sha256((const uint8_t *)ask, strlen(ask), (uint8_t)size, out); } } int belle_sip_auth_define_size(const char *algo) { if (algo == NULL || strcasecmp(algo, "MD5") == 0) { return 33; } else if (strcasecmp(algo, "SHA-256") == 0) { return 65; } else { return 0; } } int belle_sip_auth_helper_compute_ha1_for_algorithm(const char *userid, const char *realm, const char *password, char *ha1, size_t size, const char *algo) { size_t compared_size; compared_size = belle_sip_auth_define_size(algo); if (compared_size != size) { belle_sip_error("belle_sip_fill_authorization_header, size of ha1 must be 33 when MD5 or 65 when SHA-256 "); return -1; } size_t length_byte = (size - 1) / 2; uint8_t out[MAX_LENGTH_BYTE]; size_t di; char *ask; if (!userid) { belle_sip_error("belle_sip_fill_authorization_header, username not found "); return -1; } if (!password) { belle_sip_error("belle_sip_fill_authorization_header, password not found "); return -1; } if (!realm) { belle_sip_error("belle_sip_fill_authorization_header, realm not found "); return -1; } ask = bctbx_strdup_printf("%s:%s:%s", userid, realm, password); belle_sip_auth_choose_method(algo, ask, out, length_byte); for (di = 0; di < length_byte; ++di) sprintf(ha1 + di * 2, "%02x", out[di]); ha1[length_byte * 2] = '\0'; bctbx_free(ask); return 0; } int belle_sip_auth_helper_compute_ha1(const char *userid, const char *realm, const char *password, char ha1[33]) { belle_sip_auth_helper_compute_ha1_for_algorithm(userid, realm, password, ha1, 33, "MD5"); return 0; } int belle_sip_auth_helper_compute_ha2_for_algorithm(const char *method, const char *uri, char *ha2, size_t size, const char *algo) { size_t compared_size; compared_size = belle_sip_auth_define_size(algo); if (compared_size != size) { belle_sip_error("belle_sip_fill_authorization_header, size of ha1 must be 33 when MD5 or 65 when SHA-256 "); return -1; } size_t length_byte = (size - 1) / 2; uint8_t out[MAX_LENGTH_BYTE]; size_t di; char *ask; ha2[length_byte * 2] = '\0'; /*HA2=MD5(method:uri)*/ ask = bctbx_strdup_printf("%s:%s", method, uri); belle_sip_auth_choose_method(algo, ask, out, length_byte); for (di = 0; di < length_byte; ++di) sprintf(ha2 + di * 2, "%02x", out[di]); bctbx_free(ask); return 0; } int belle_sip_auth_helper_compute_ha2(const char *method, const char *uri, char ha2[33]) { belle_sip_auth_helper_compute_ha2_for_algorithm(method, uri, ha2, 33, "MD5"); return 0; } int belle_sip_auth_helper_compute_response_for_algorithm(const char *ha1, const char *nonce, const char *ha2, char *response, size_t size, const char *algo) { size_t compared_size; compared_size = belle_sip_auth_define_size(algo); if (compared_size != size) { belle_sip_error("belle_sip_fill_authorization_header, size of ha1 must be 33 when MD5 or 65 when SHA-256 "); return -1; } size_t length_byte = (size - 1) / 2; uint8_t out[MAX_LENGTH_BYTE]; size_t di; char *ask; response[length_byte * 2] = '\0'; ask = bctbx_strdup_printf("%s:%s:%s", ha1, nonce, ha2); belle_sip_auth_choose_method(algo, ask, out, length_byte); /*copy values*/ for (di = 0; di < length_byte; ++di) sprintf(response + di * 2, "%02x", out[di]); bctbx_free(ask); return 0; } int belle_sip_auth_helper_compute_response(const char *ha1, const char *nonce, const char *ha2, char response[33]) { belle_sip_auth_helper_compute_response_for_algorithm(ha1, nonce, ha2, response, 33, "MD5"); return 0; } int belle_sip_auth_helper_compute_response_qop_auth_for_algorithm(const char* ha1 , const char* nonce , unsigned int nonce_count , const char* cnonce , const char* qop , const char* ha2 , char *response , size_t size, const char* algo) { size_t compared_size; compared_size = belle_sip_auth_define_size(algo); if (compared_size != size) { belle_sip_error("belle_sip_fill_authorization_header, size of ha1 must be 33 when MD5 or 65 when SHA-256 "); return -1; } size_t length_byte = (size - 1) / 2; uint8_t out[MAX_LENGTH_BYTE]; size_t di; char *ask; char nounce_count_as_string[9]; response[length_byte * 2] = '\0'; snprintf(nounce_count_as_string, sizeof(nounce_count_as_string), "%08x", nonce_count); /*response=MD5(HA1:nonce:nonce_count:cnonce:qop:HA2)*/ ask = bctbx_strdup_printf("%s:%s:%s:%s:%s:%s", ha1, nonce, nounce_count_as_string, cnonce, qop, ha2); belle_sip_auth_choose_method(algo, ask, out, length_byte); /*copy values*/ for (di = 0; di < length_byte; ++di) sprintf(response + di * 2, "%02x", out[di]); bctbx_free(ask); return 0; } int belle_sip_auth_helper_compute_response_qop_auth(const char* ha1 , const char* nonce , unsigned int nonce_count , const char* cnonce , const char* qop , const char* ha2, char response[33]) { belle_sip_auth_helper_compute_response_qop_auth_for_algorithm(ha1, nonce, nonce_count, cnonce, qop, ha2, response, 33, "MD5"); return 0; } int belle_sip_auth_helper_fill_authorization(belle_sip_header_authorization_t* authorization ,const char* method ,const char* ha1) { const char *algo = belle_sip_header_authorization_get_algorithm(authorization); size_t size = belle_sip_auth_define_size(algo); if (!size) { belle_sip_error("Algorithm [%s] is not supported ", algo); return -1; } int auth_mode=0; char* uri; char ha2[MAX_RESPONSE_SIZE]; char response[MAX_RESPONSE_SIZE]; char cnonce[BELLE_SIP_CNONCE_LENGTH + 1]; response[size-1]=ha2[size-1]='\0'; if (belle_sip_header_authorization_get_scheme(authorization) != NULL && strcasecmp("Digest",belle_sip_header_authorization_get_scheme(authorization))!=0) { belle_sip_error("belle_sip_fill_authorization_header, unsupported schema [%s]" ,belle_sip_header_authorization_get_scheme(authorization)); return -1; } if (belle_sip_header_authorization_get_qop(authorization) && !(auth_mode=strcasecmp("auth",belle_sip_header_authorization_get_qop(authorization))==0)) { belle_sip_error("belle_sip_fill_authorization_header, unsupported qop [%s], use auth or nothing instead" ,belle_sip_header_authorization_get_qop(authorization)); return -1; } CHECK_IS_PRESENT(authorization,authorization,realm) CHECK_IS_PRESENT(authorization,authorization,nonce) if (BELLE_SIP_IS_INSTANCE_OF(authorization,belle_http_header_authorization_t)) { /*http case*/ if (!belle_http_header_authorization_get_uri(BELLE_HTTP_HEADER_AUTHORIZATION(authorization))) { belle_sip_error("parameter uri not found for http header authorization"); return-1; } } else { CHECK_IS_PRESENT(authorization,authorization,uri) } if (auth_mode) { CHECK_IS_PRESENT(authorization,authorization,nonce_count) if (!belle_sip_header_authorization_get_cnonce(authorization)) { belle_sip_header_authorization_set_cnonce(authorization, belle_sip_random_token((cnonce), sizeof(cnonce))); } } if (!method) { belle_sip_error("belle_sip_fill_authorization_header, method not found "); return -1; } if (BELLE_SIP_IS_INSTANCE_OF(authorization,belle_http_header_authorization_t)) { /*http case*/ uri=belle_generic_uri_to_string(belle_http_header_authorization_get_uri(BELLE_HTTP_HEADER_AUTHORIZATION(authorization))); } else { uri=belle_sip_uri_to_string(belle_sip_header_authorization_get_uri(authorization)); } belle_sip_auth_helper_compute_ha2_for_algorithm(method,uri,ha2,size,algo); belle_sip_free(uri); if (auth_mode) { /*response=MD5(HA1:nonce:nonce_count:cnonce:qop:HA2)*/ belle_sip_auth_helper_compute_response_qop_auth_for_algorithm(ha1 ,belle_sip_header_authorization_get_nonce(authorization) ,belle_sip_header_authorization_get_nonce_count(authorization) ,belle_sip_header_authorization_get_cnonce(authorization) ,belle_sip_header_authorization_get_qop(authorization) ,ha2 ,response ,size ,algo); } else { /*response=MD5(ha1:nonce:ha2)*/ belle_sip_auth_helper_compute_response_for_algorithm(ha1,belle_sip_header_authorization_get_nonce(authorization),ha2,response,size,algo); } belle_sip_header_authorization_set_response(authorization,(const char*)response); return 0; } int belle_sip_auth_helper_fill_proxy_authorization(belle_sip_header_proxy_authorization_t* proxy_authorization ,const char* method ,const char* ha1) { return belle_sip_auth_helper_fill_authorization(BELLE_SIP_HEADER_AUTHORIZATION(proxy_authorization) ,method, ha1); } belle-sip-5.2.0+dfsg/src/backgroundtask.mm000066400000000000000000000045461434613136500204540ustar00rootroot00000000000000/* belle-sip - SIP (RFC3261) library. Copyright (C) 2010 Belledonne Communications SARL This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #ifdef __APPLE__ #include #endif #include "belle_sip_internal.h" #if TARGET_OS_IPHONE #include #include "bctoolbox/ios_utils.hh" using namespace bctoolbox; unsigned long belle_sip_begin_background_task(const char *name, belle_sip_background_task_end_callback_t cb, void *data){ auto &iOSUtils = IOSUtils::getUtils(); std::function callback; if (cb) { callback = std::bind(cb, data); } return iOSUtils.beginBackgroundTask(name, callback); } void belle_sip_end_background_task(unsigned long id){ auto &iOSUtils = IOSUtils::getUtils(); iOSUtils.endBackgroundTask(id); } #else /*mac*/ #import static unsigned long dummy_id=0; static id activity_id=0; static int activity_refcnt=0; unsigned long belle_sip_begin_background_task(const char *name, belle_sip_background_task_end_callback_t cb, void *data){ activity_refcnt++; if (activity_refcnt==1){ NSProcessInfo *pinfo=[NSProcessInfo processInfo]; if (pinfo && [pinfo respondsToSelector:@selector(beginActivityWithOptions:reason:)]){ activity_id=[pinfo beginActivityWithOptions:NSActivityUserInitiatedAllowingIdleSystemSleep reason:@"Processing SIP signaling"]; [activity_id retain]; belle_sip_message("Activity started"); } } return ++dummy_id; } void belle_sip_end_background_task(unsigned long id){ activity_refcnt--; if (activity_refcnt==0){ if (activity_id!=0){ NSProcessInfo *pinfo=[NSProcessInfo processInfo]; [pinfo endActivity:activity_id]; [activity_id release]; belle_sip_message("Activity ended"); activity_id=0; } } } #endif belle-sip-5.2.0+dfsg/src/belle_sdp_impl.cc000066400000000000000000002605451434613136500204030ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "belle-sip/belle-sip.h" #include "grammars/belle_sdpParser.h" #include "grammars/belle_sdpLexer.h" #include "belle_sip_internal.h" #include "sdp/parser.hh" int belle_sdp_use_belr = 1; struct _belle_sdp_mime_parameter { belle_sip_object_t base; int rate; int channel_count; int ptime; int max_ptime; int media_format; const char* type; const char* parameters; }; static void belle_sip_object_freefunc(void* obj) { belle_sip_object_unref(BELLE_SIP_OBJECT(obj)); } static void* belle_sip_object_copyfunc(void* obj) { return belle_sip_object_clone_and_ref(BELLE_SIP_OBJECT(obj)); } static void * belle_sip_string_copyfunc(void *obj) { return (void *)belle_sip_strdup((const char *)obj); } /*************************************************************************************** * Attribute * **************************************************************************************/ typedef belle_sdp_attribute_t* (*attribute_parse_func)(const char*) ; struct attribute_name_func_pair { const char* name; attribute_parse_func func; }; static struct attribute_name_func_pair attribute_table[] = { { "rtcp-fb", (attribute_parse_func)belle_sdp_rtcp_fb_attribute_parse }, { "rtcp-xr", (attribute_parse_func)belle_sdp_rtcp_xr_attribute_parse }, { "content", (attribute_parse_func)belle_sdp_content_attribute_parse }, { "label", (attribute_parse_func)belle_sdp_label_attribute_parse }, { "creq", (attribute_parse_func)belle_sdp_creq_attribute_parse }, { "csup", (attribute_parse_func)belle_sdp_csup_attribute_parse }, { "tcap", (attribute_parse_func)belle_sdp_tcap_attribute_parse }, { "acap", (attribute_parse_func)belle_sdp_acap_attribute_parse }, { "csup", (attribute_parse_func)belle_sdp_csup_attribute_parse }, { "acfg", (attribute_parse_func)belle_sdp_acfg_attribute_parse }, { "pcfg", (attribute_parse_func)belle_sdp_pcfg_attribute_parse } }; struct _belle_sdp_attribute { belle_sip_object_t base; const char* name; char *unparsed_value; }; void belle_sdp_attribute_destroy(belle_sdp_attribute_t* attribute) { DESTROY_STRING(attribute,name) DESTROY_STRING(attribute,unparsed_value) } void belle_sdp_attribute_clone(belle_sdp_attribute_t *attribute, const belle_sdp_attribute_t *orig){ CLONE_STRING(belle_sdp_attribute,name,attribute,orig) } belle_sip_error_code belle_sdp_attribute_marshal(belle_sdp_attribute_t* attribute, char* buff, size_t buff_size, size_t *offset) { return belle_sip_snprintf(buff, buff_size, offset, "a=%s", attribute->name); } belle_sdp_attribute_t* belle_sdp_attribute_create(const char* name, const char* value) { belle_sdp_attribute_t* ret; size_t i; size_t elements = sizeof(attribute_table) / sizeof(attribute_table[0]); if (!name || name[0] == '\0') { belle_sip_error("Cannot create SDP attribute without name"); return NULL; } for (i = 0; i < elements; i++) { if (strcasecmp(attribute_table[i].name, name) == 0) { char* raw; if (value) raw = belle_sip_strdup_printf("a=%s:%s", name, value); else raw = belle_sip_strdup_printf("a=%s", name); ret = attribute_table[i].func(raw); belle_sip_free(raw); return ret; } } /* Not a specialized SDP attribute */ return BELLE_SDP_ATTRIBUTE(belle_sdp_raw_attribute_create(name, value)); } const char *belle_sdp_attribute_get_value(belle_sdp_attribute_t *attribute) { char *ret; char *end; if (attribute->unparsed_value) { belle_sip_free(attribute->unparsed_value); attribute->unparsed_value = NULL; } attribute->unparsed_value = belle_sip_object_to_string(attribute); ret = attribute->unparsed_value; ret += strlen(attribute->name) + 2; /* "a=" + name*/ if (*ret==':') ret++; for (; *ret == ' '; ret++) {}; /* skip eventual spaces */ return ret; } unsigned int belle_sdp_attribute_has_value(belle_sdp_attribute_t* attribute) { return belle_sdp_attribute_get_value(attribute) != NULL; } BELLE_SDP_NEW(attribute,belle_sip_object) belle_sdp_attribute_t* belle_sdp_attribute_parse (const char* line) { auto parser = bellesip::SDP::Parser::getInstance(); auto holder = (belle_sdp_attribute_holder_t*)parser->parse(line, "attribute"); if (holder == NULL) belle_sip_error("attribute parser error for [%s]", line); belle_sdp_attribute_t* attribute = belle_sdp_attribute_holder_get_attribute(holder); belle_sip_free(holder); return attribute; } GET_SET_STRING(belle_sdp_attribute,name); /*************************************************************************************** * Attributes Holder * **************************************************************************************/ struct _belle_sdp_attribute_holder { belle_sdp_attribute_t *attribute; }; belle_sdp_attribute_holder_t* belle_sdp_attribute_holder_new() { return (belle_sdp_attribute_holder_t*)belle_sip_malloc0(sizeof(belle_sdp_attribute_holder_t)); } void belle_sdp_attribute_holder_set_attribute(belle_sdp_attribute_holder_t* holder, void* attribute) { holder->attribute = (belle_sdp_attribute_t*)attribute; } belle_sdp_attribute_t* belle_sdp_attribute_holder_get_attribute(belle_sdp_attribute_holder_t* holder) { return holder->attribute; } /*************************************************************************************** * RAW Attribute * **************************************************************************************/ struct _belle_sdp_raw_attribute { belle_sdp_attribute_t base; const char* value; }; void belle_sdp_raw_attribute_destroy(belle_sdp_raw_attribute_t* attribute) { DESTROY_STRING(attribute,value) } void belle_sdp_raw_attribute_clone(belle_sdp_raw_attribute_t* attribute, const belle_sdp_raw_attribute_t* orig) { if (belle_sdp_attribute_get_value(BELLE_SDP_ATTRIBUTE(orig))) { belle_sdp_raw_attribute_set_value(attribute, belle_sdp_attribute_get_value(BELLE_SDP_ATTRIBUTE(orig))); } } belle_sip_error_code belle_sdp_raw_attribute_marshal(belle_sdp_raw_attribute_t* attribute, char* buff, size_t buff_size, size_t* offset) { belle_sip_error_code error = belle_sdp_attribute_marshal(BELLE_SDP_ATTRIBUTE(attribute), buff, buff_size, offset); if (error != BELLE_SIP_OK) return error; if (attribute->value) { error = belle_sip_snprintf(buff, buff_size, offset, ":%s", attribute->value); if (error != BELLE_SIP_OK) return error; } return error; } BELLE_SDP_NEW(raw_attribute,belle_sdp_attribute) belle_sdp_raw_attribute_t* belle_sdp_raw_attribute_create(const char* name, const char* value) { belle_sdp_raw_attribute_t* attribute = belle_sdp_raw_attribute_new(); belle_sdp_attribute_set_name(BELLE_SDP_ATTRIBUTE(attribute), name); belle_sdp_raw_attribute_set_value(attribute, value); return attribute; } void belle_sdp_raw_attribute_set_value(belle_sdp_raw_attribute_t* attribute, const char* value) { if (attribute->value != NULL) belle_sip_free((void*)attribute->value); if (value) { attribute->value = belle_sip_strdup(value); } else attribute->value = NULL; } void belle_sdp_raw_attribute_set_name(belle_sdp_raw_attribute_t* attribute, const char* name) { belle_sdp_attribute_set_name(BELLE_SDP_ATTRIBUTE(attribute), name); } /*************************************************************************************** * RFC4574 Attributes * **************************************************************************************/ struct _belle_sdp_label_attribute { belle_sdp_attribute_t base; const char* pointer; }; static void belle_sdp_label_attribute_init(belle_sdp_label_attribute_t* attribute) { belle_sdp_attribute_set_name(BELLE_SDP_ATTRIBUTE(attribute), "label"); } void belle_sdp_label_attribute_destroy(belle_sdp_label_attribute_t* attribute) { DESTROY_STRING(attribute,pointer) } void belle_sdp_label_attribute_clone(belle_sdp_label_attribute_t* attribute, const belle_sdp_label_attribute_t *orig) { belle_sdp_label_attribute_set_pointer(attribute, belle_sdp_label_attribute_get_pointer(orig)); } belle_sip_error_code belle_sdp_label_attribute_marshal(belle_sdp_label_attribute_t* attribute, char * buff, size_t buff_size, size_t *offset) { belle_sip_error_code error = belle_sip_snprintf( buff, buff_size, offset, "a=label:%s", attribute->pointer ); return error; } BELLE_SDP_NEW_WITH_CTR(label_attribute,belle_sdp_attribute) BELLE_SDP_BELR_PARSE(label_attribute) GET_SET_STRING(belle_sdp_label_attribute,pointer) /*************************************************************************************** * RFC4796 Attributes * **************************************************************************************/ // content struct _belle_sdp_content_attribute { belle_sdp_attribute_t base; belle_sip_list_t* media_tags; }; void belle_sdp_content_attribute_destroy(belle_sdp_content_attribute_t* attribute) { belle_sip_list_free_with_data(attribute->media_tags, belle_sip_free); } void belle_sdp_content_attribute_clone(belle_sdp_content_attribute_t* attribute, const belle_sdp_content_attribute_t *orig) { attribute->media_tags = belle_sip_list_copy_with_data(orig->media_tags, belle_sip_string_copyfunc); } belle_sip_error_code belle_sdp_content_attribute_marshal(belle_sdp_content_attribute_t* attribute, char * buff, size_t buff_size, size_t *offset) { belle_sip_list_t* media_tags=attribute->media_tags; belle_sip_error_code error = belle_sip_snprintf(buff,buff_size,offset,"a=content:"); if (error != BELLE_SIP_OK) return error; int i = 0; for (;media_tags != NULL;media_tags = media_tags->next){ error = belle_sip_snprintf( buff, buff_size, offset, "%s%s", i++ == 0 ? "" : ",", (const char*)media_tags->data ); if (error != BELLE_SIP_OK) return error; } return error; } void belle_sdp_content_attribute_add_media_tag(belle_sdp_content_attribute_t* attribute, const char* media_tag) { attribute->media_tags = belle_sip_list_append(attribute->media_tags, belle_sip_strdup(media_tag)); } belle_sip_list_t* belle_sdp_content_attribute_get_media_tags(belle_sdp_content_attribute_t* attribute) { return attribute->media_tags; } static void belle_sdp_content_attribute_init(belle_sdp_content_attribute_t* attribute) { belle_sdp_attribute_set_name(BELLE_SDP_ATTRIBUTE(attribute), "content"); } BELLE_SDP_NEW_WITH_CTR(content_attribute,belle_sdp_attribute) BELLE_SDP_BELR_PARSE(content_attribute) /*************************************************************************************** * RFC5939 Attributes * **************************************************************************************/ // csup struct _belle_sdp_csup_attribute { belle_sdp_attribute_t base; belle_sip_list_t* option_tags; }; void belle_sdp_csup_attribute_destroy(belle_sdp_csup_attribute_t* attribute) { belle_sip_list_free_with_data(attribute->option_tags, belle_sip_free); } void belle_sdp_csup_attribute_clone(belle_sdp_csup_attribute_t* attribute, const belle_sdp_csup_attribute_t *orig) { attribute->option_tags = belle_sip_list_copy_with_data(orig->option_tags, belle_sip_string_copyfunc); } belle_sip_error_code belle_sdp_csup_attribute_marshal(belle_sdp_csup_attribute_t* attribute, char * buff, size_t buff_size, size_t *offset) { belle_sip_list_t* option_tags=attribute->option_tags; belle_sip_error_code error = belle_sip_snprintf(buff,buff_size,offset,"a=csup:"); if (error != BELLE_SIP_OK) return error; int i = 0; for (;option_tags != NULL;option_tags = option_tags->next){ error = belle_sip_snprintf( buff, buff_size, offset, "%s%s", i++ == 0 ? "" : ",", (const char*)option_tags->data ); if (error != BELLE_SIP_OK) return error; } return error; } void belle_sdp_csup_attribute_add_option_tag(belle_sdp_csup_attribute_t* attribute, const char* option_tag) { attribute->option_tags = belle_sip_list_append(attribute->option_tags, belle_sip_strdup(option_tag)); } belle_sip_list_t* belle_sdp_csup_attribute_get_option_tags(belle_sdp_csup_attribute_t* attribute) { return attribute->option_tags; } static void belle_sdp_csup_attribute_init(belle_sdp_csup_attribute_t* attribute) { belle_sdp_attribute_set_name(BELLE_SDP_ATTRIBUTE(attribute), "csup"); } BELLE_SDP_NEW_WITH_CTR(csup_attribute,belle_sdp_attribute) BELLE_SDP_BELR_PARSE(csup_attribute) // creq struct _belle_sdp_creq_attribute { belle_sdp_attribute_t base; belle_sip_list_t* option_tags; }; void belle_sdp_creq_attribute_destroy(belle_sdp_creq_attribute_t* attribute) { belle_sip_list_free_with_data(attribute->option_tags, belle_sip_free); } void belle_sdp_creq_attribute_clone(belle_sdp_creq_attribute_t* attribute, const belle_sdp_creq_attribute_t *orig) { attribute->option_tags = belle_sip_list_copy_with_data(orig->option_tags, belle_sip_string_copyfunc); } belle_sip_error_code belle_sdp_creq_attribute_marshal(belle_sdp_creq_attribute_t* attribute, char * buff, size_t buff_size, size_t *offset) { belle_sip_list_t* option_tags = attribute->option_tags; belle_sip_error_code error = belle_sip_snprintf(buff, buff_size, offset, "a=creq:"); if (error != BELLE_SIP_OK) return error; int i = 0; for (;option_tags != NULL;option_tags = option_tags->next){ error = belle_sip_snprintf( buff, buff_size, offset, "%s%s", i++ == 0 ? "" : ",", (const char*)option_tags->data ); if (error != BELLE_SIP_OK) return error; } return error; } void belle_sdp_creq_attribute_add_option_tag(belle_sdp_creq_attribute_t* attribute, const char* option_tag) { attribute->option_tags = belle_sip_list_append(attribute->option_tags, belle_sip_strdup(option_tag)); } belle_sip_list_t* belle_sdp_creq_attribute_get_option_tags(belle_sdp_creq_attribute_t* attribute) { return attribute->option_tags; } static void belle_sdp_creq_attribute_init(belle_sdp_creq_attribute_t* attribute) { belle_sdp_attribute_set_name(BELLE_SDP_ATTRIBUTE(attribute), "creq"); } BELLE_SDP_NEW_WITH_CTR(creq_attribute,belle_sdp_attribute) BELLE_SDP_BELR_PARSE(creq_attribute) // tcap struct _belle_sdp_tcap_attribute { belle_sdp_attribute_t base; belle_sip_list_t* protos; int id; }; static void belle_sdp_tcap_attribute_init(belle_sdp_tcap_attribute_t* attribute) { belle_sdp_attribute_set_name(BELLE_SDP_ATTRIBUTE(attribute), "tcap"); } void belle_sdp_tcap_attribute_destroy(belle_sdp_tcap_attribute_t* attribute) { belle_sip_list_free_with_data(attribute->protos, belle_sip_free); } void belle_sdp_tcap_attribute_clone(belle_sdp_tcap_attribute_t* attribute, const belle_sdp_tcap_attribute_t *orig) { attribute->protos = belle_sip_list_copy_with_data(orig->protos, belle_sip_string_copyfunc); attribute->id = orig->id; } belle_sip_error_code belle_sdp_tcap_attribute_marshal(belle_sdp_tcap_attribute_t* attribute, char * buff, size_t buff_size, size_t *offset) { belle_sip_list_t* protos = attribute->protos; belle_sip_error_code error = belle_sip_snprintf(buff, buff_size, offset, "a=tcap:%d", attribute->id); if (error != BELLE_SIP_OK) return error; int i = 0; for (;protos != NULL;protos = protos->next){ error = belle_sip_snprintf( buff, buff_size, offset, " %s", (const char*)protos->data ); if (error != BELLE_SIP_OK) return error; } return error; } void belle_sdp_tcap_attribute_add_proto(belle_sdp_tcap_attribute_t* attribute, const char* proto) { attribute->protos = belle_sip_list_append(attribute->protos, belle_sip_strdup(proto)); } belle_sip_list_t* belle_sdp_tcap_attribute_get_protos(belle_sdp_tcap_attribute_t* attribute) { return attribute->protos; } BELLE_SDP_NEW_WITH_CTR(tcap_attribute,belle_sdp_attribute) BELLE_SDP_BELR_PARSE(tcap_attribute) GET_SET_INT(belle_sdp_tcap_attribute,id,int) // acap struct _belle_sdp_acap_attribute { belle_sdp_attribute_t base; int id; const char* name; const char* value; }; static void belle_sdp_acap_attribute_init(belle_sdp_acap_attribute_t* attribute) { belle_sdp_attribute_set_name(BELLE_SDP_ATTRIBUTE(attribute), "acap"); } void belle_sdp_acap_attribute_destroy(belle_sdp_acap_attribute_t* attribute) { DESTROY_STRING(attribute,name) DESTROY_STRING(attribute,value) } void belle_sdp_acap_attribute_clone(belle_sdp_acap_attribute_t* attribute, const belle_sdp_acap_attribute_t *orig) { attribute->id = orig->id; belle_sdp_acap_attribute_set_name(attribute, belle_sdp_acap_attribute_get_name(orig)); belle_sdp_acap_attribute_set_value(attribute, belle_sdp_acap_attribute_get_value(orig)); } belle_sip_error_code belle_sdp_acap_attribute_marshal(belle_sdp_acap_attribute_t* attribute, char * buff, size_t buff_size, size_t *offset) { belle_sip_error_code error = belle_sip_snprintf( buff, buff_size, offset, "a=acap:%d %s:%s", attribute->id, attribute->name, attribute->value ); return error; } BELLE_SDP_NEW_WITH_CTR(acap_attribute,belle_sdp_attribute) BELLE_SDP_BELR_PARSE(acap_attribute) GET_SET_INT(belle_sdp_acap_attribute,id,int) GET_SET_STRING(belle_sdp_acap_attribute,name) GET_SET_STRING(belle_sdp_acap_attribute,value) // acfg struct _belle_sdp_acfg_attribute { belle_sdp_attribute_t base; int id; belle_sip_list_t* configs; }; static void belle_sdp_acfg_attribute_init(belle_sdp_acfg_attribute_t* attribute) { belle_sdp_attribute_set_name(BELLE_SDP_ATTRIBUTE(attribute), "acfg"); } void belle_sdp_acfg_attribute_destroy(belle_sdp_acfg_attribute_t* attribute) { belle_sip_list_free_with_data(attribute->configs, belle_sip_free); } void belle_sdp_acfg_attribute_clone(belle_sdp_acfg_attribute_t* attribute, const belle_sdp_acfg_attribute_t *orig) { attribute->id = orig->id; attribute->configs = belle_sip_list_copy_with_data(orig->configs, belle_sip_string_copyfunc); } belle_sip_error_code belle_sdp_acfg_attribute_marshal(belle_sdp_acfg_attribute_t* attribute, char * buff, size_t buff_size, size_t *offset) { belle_sip_list_t* configs = attribute->configs; belle_sip_error_code error = belle_sip_snprintf( buff, buff_size, offset, "a=acfg:%d", attribute->id ); if (error != BELLE_SIP_OK) return error; int i = 0; for (;configs != NULL; configs = configs->next){ error = belle_sip_snprintf( buff, buff_size, offset, " %s", (const char*)configs->data ); if (error != BELLE_SIP_OK) return error; } return error; } void belle_sdp_acfg_attribute_add_config(belle_sdp_acfg_attribute_t* attribute, const char* config) { attribute->configs = belle_sip_list_append(attribute->configs, belle_sip_strdup(config)); } belle_sip_list_t* belle_sdp_acfg_attribute_get_configs(const belle_sdp_acfg_attribute_t* attribute) { return attribute->configs; } BELLE_SDP_NEW_WITH_CTR(acfg_attribute,belle_sdp_attribute) BELLE_SDP_BELR_PARSE(acfg_attribute) GET_SET_INT(belle_sdp_acfg_attribute,id,int) // pcfg struct _belle_sdp_pcfg_attribute { belle_sdp_attribute_t base; int id; belle_sip_list_t* configs; }; static void belle_sdp_pcfg_attribute_init(belle_sdp_pcfg_attribute_t* attribute) { belle_sdp_attribute_set_name(BELLE_SDP_ATTRIBUTE(attribute), "pcfg"); } void belle_sdp_pcfg_attribute_destroy(belle_sdp_pcfg_attribute_t* attribute) { belle_sip_list_free_with_data(attribute->configs, belle_sip_free); } void belle_sdp_pcfg_attribute_clone(belle_sdp_pcfg_attribute_t* attribute, const belle_sdp_pcfg_attribute_t *orig) { attribute->id = orig->id; attribute->configs = belle_sip_list_copy_with_data(orig->configs, belle_sip_string_copyfunc); } belle_sip_error_code belle_sdp_pcfg_attribute_marshal(belle_sdp_pcfg_attribute_t* attribute, char * buff, size_t buff_size, size_t *offset) { belle_sip_list_t* configs = attribute->configs; belle_sip_error_code error = belle_sip_snprintf( buff, buff_size, offset, "a=pcfg:%d", attribute->id ); int i = 0; for (;configs != NULL;configs = configs->next){ error = belle_sip_snprintf( buff, buff_size, offset, " %s", (const char*)configs->data ); if (error != BELLE_SIP_OK) return error; } return error; } void belle_sdp_pcfg_attribute_add_config(belle_sdp_pcfg_attribute_t* attribute, const char* config) { attribute->configs = belle_sip_list_append(attribute->configs, belle_sip_strdup(config)); } belle_sip_list_t* belle_sdp_pcfg_attribute_get_configs(const belle_sdp_pcfg_attribute_t* attribute) { return attribute->configs; } BELLE_SDP_NEW_WITH_CTR(pcfg_attribute,belle_sdp_attribute) BELLE_SDP_BELR_PARSE(pcfg_attribute) GET_SET_INT(belle_sdp_pcfg_attribute,id,int) /*************************************************************************************** * RTCP-FB Attribute * **************************************************************************************/ struct _belle_sdp_rtcp_fb_attribute { belle_sdp_attribute_t base; belle_sdp_rtcp_fb_val_type_t type; belle_sdp_rtcp_fb_val_param_t param; uint32_t smaxpr; uint16_t trr_int; int8_t id; }; BELLESIP_EXPORT unsigned int belle_sdp_rtcp_fb_attribute_has_pli(const belle_sdp_rtcp_fb_attribute_t* attribute); BELLESIP_EXPORT void belle_sdp_rtcp_fb_attribute_set_pli(belle_sdp_rtcp_fb_attribute_t* attribute, unsigned int enable); BELLESIP_EXPORT unsigned int belle_sdp_rtcp_fb_attribute_has_sli(const belle_sdp_rtcp_fb_attribute_t* attribute); BELLESIP_EXPORT void belle_sdp_rtcp_fb_attribute_set_sli(belle_sdp_rtcp_fb_attribute_t* attribute, unsigned int enable); BELLESIP_EXPORT unsigned int belle_sdp_rtcp_fb_attribute_has_rpsi(const belle_sdp_rtcp_fb_attribute_t* attribute); BELLESIP_EXPORT void belle_sdp_rtcp_fb_attribute_set_rpsi(belle_sdp_rtcp_fb_attribute_t* attribute, unsigned int enable); BELLESIP_EXPORT unsigned int belle_sdp_rtcp_fb_attribute_has_app(const belle_sdp_rtcp_fb_attribute_t* attribute); BELLESIP_EXPORT void belle_sdp_rtcp_fb_attribute_set_app(belle_sdp_rtcp_fb_attribute_t* attribute, unsigned int enable); void belle_sdp_rtcp_fb_attribute_destroy(belle_sdp_rtcp_fb_attribute_t* attribute) {} void belle_sdp_rtcp_fb_attribute_clone(belle_sdp_rtcp_fb_attribute_t* attribute, const belle_sdp_rtcp_fb_attribute_t *orig) { attribute->type = orig->type; attribute->param = orig->param; attribute->trr_int = orig->trr_int; attribute->id = orig->id; attribute->smaxpr = orig->smaxpr; } belle_sip_error_code belle_sdp_rtcp_fb_attribute_marshal(belle_sdp_rtcp_fb_attribute_t* attribute, char * buff, size_t buff_size, size_t *offset) { int8_t id = belle_sdp_rtcp_fb_attribute_get_id(attribute); belle_sdp_rtcp_fb_val_type_t type = belle_sdp_rtcp_fb_attribute_get_type(attribute); belle_sdp_rtcp_fb_val_param_t param = belle_sdp_rtcp_fb_attribute_get_param(attribute); belle_sip_error_code error = belle_sdp_attribute_marshal(BELLE_SDP_ATTRIBUTE(attribute), buff, buff_size, offset); if (error != BELLE_SIP_OK) return error; if (id < 0) { error = belle_sip_snprintf(buff, buff_size, offset, ":* "); } else { error = belle_sip_snprintf(buff, buff_size, offset, ":%u ", id); } if (error != BELLE_SIP_OK) return error; switch (type) { case BELLE_SDP_RTCP_FB_ACK: error = belle_sip_snprintf(buff, buff_size, offset, "ack"); if (error != BELLE_SIP_OK) return error; switch (param) { default: case BELLE_SDP_RTCP_FB_NONE: break; case BELLE_SDP_RTCP_FB_RPSI: error = belle_sip_snprintf(buff, buff_size, offset, " rpsi"); break; case BELLE_SDP_RTCP_FB_APP: error = belle_sip_snprintf(buff, buff_size, offset, " app"); break; } break; case BELLE_SDP_RTCP_FB_NACK: error = belle_sip_snprintf(buff, buff_size, offset, "nack"); if (error != BELLE_SIP_OK) return error; switch (param) { default: case BELLE_SDP_RTCP_FB_NONE: break; case BELLE_SDP_RTCP_FB_PLI: error = belle_sip_snprintf(buff, buff_size, offset, " pli"); break; case BELLE_SDP_RTCP_FB_SLI: error = belle_sip_snprintf(buff, buff_size, offset, " sli"); break; case BELLE_SDP_RTCP_FB_RPSI: error = belle_sip_snprintf(buff, buff_size, offset, " rpsi"); break; case BELLE_SDP_RTCP_FB_APP: error = belle_sip_snprintf(buff, buff_size, offset, " app"); break; } break; case BELLE_SDP_RTCP_FB_TRR_INT: error = belle_sip_snprintf(buff, buff_size, offset, "trr-int %u", belle_sdp_rtcp_fb_attribute_get_trr_int(attribute)); break; case BELLE_SDP_RTCP_FB_CCM: error = belle_sip_snprintf(buff, buff_size, offset, "ccm"); if (error != BELLE_SIP_OK) return error; switch (param) { case BELLE_SDP_RTCP_FB_FIR: error = belle_sip_snprintf(buff, buff_size, offset, " fir"); break; case BELLE_SDP_RTCP_FB_TMMBR: error = belle_sip_snprintf(buff, buff_size, offset, " tmmbr"); if (belle_sdp_rtcp_fb_attribute_get_smaxpr(attribute) > 0) { error = belle_sip_snprintf(buff, buff_size, offset, " smaxpr=%u", belle_sdp_rtcp_fb_attribute_get_smaxpr(attribute)); } break; default: break; } break; } return error; } void belle_sdp_rtcp_fb_attribute_set_raw_id(belle_sdp_rtcp_fb_attribute_t* attribute, const char* value) { attribute->id = strcmp(value, "*") == 0 ? -1 : atoi(value); } void belle_sdp_rtcp_fb_attribute_set_raw_type(belle_sdp_rtcp_fb_attribute_t* attribute, const char* value) { if (strcmp(value, "ack") == 0) { attribute->type = BELLE_SDP_RTCP_FB_ACK; } if (strcmp(value, "nack") == 0) { attribute->type = BELLE_SDP_RTCP_FB_NACK; } if (strcmp(value, "ccm") == 0) { attribute->type = BELLE_SDP_RTCP_FB_CCM; } } void belle_sdp_rtcp_fb_attribute_set_raw_param(belle_sdp_rtcp_fb_attribute_t* attribute, const char* value) { // Space is required here if (strcmp(value, " pli") == 0) { attribute->param = BELLE_SDP_RTCP_FB_PLI; } if (strcmp(value, " sli") == 0) { attribute->param = BELLE_SDP_RTCP_FB_SLI; } if (strcmp(value, " rpsi") == 0) { attribute->param = BELLE_SDP_RTCP_FB_RPSI; } if (strcmp(value, "fir") == 0) { attribute->param = BELLE_SDP_RTCP_FB_FIR; } if (strcmp(value, "tmmbr") == 0) { attribute->param = BELLE_SDP_RTCP_FB_TMMBR; } } static void belle_sdp_rtcp_fb_attribute_init(belle_sdp_rtcp_fb_attribute_t* attribute) { belle_sdp_attribute_set_name(BELLE_SDP_ATTRIBUTE(attribute), "rtcp-fb"); attribute->id = -1; attribute->type = BELLE_SDP_RTCP_FB_TRR_INT; attribute->param = BELLE_SDP_RTCP_FB_NONE; attribute->trr_int = 0; attribute->smaxpr = 0; } BELLE_SDP_NEW_WITH_CTR(rtcp_fb_attribute,belle_sdp_attribute) BELLE_SDP_PARSE(rtcp_fb_attribute) GET_SET_INT(belle_sdp_rtcp_fb_attribute,id,int8_t) GET_SET_INT(belle_sdp_rtcp_fb_attribute,type,belle_sdp_rtcp_fb_val_type_t) GET_SET_INT(belle_sdp_rtcp_fb_attribute,param,belle_sdp_rtcp_fb_val_param_t) GET_SET_INT(belle_sdp_rtcp_fb_attribute,trr_int,uint16_t) GET_SET_INT(belle_sdp_rtcp_fb_attribute,smaxpr,uint32_t) /*************************************************************************************** * RTCP-XR Attribute * **************************************************************************************/ struct _belle_sdp_rtcp_xr_attribute { belle_sdp_attribute_t base; const char* rcvr_rtt_mode; int rcvr_rtt_max_size; unsigned int stat_summary; belle_sip_list_t* stat_summary_flags; unsigned int voip_metrics; }; const belle_sip_list_t* belle_sdp_rtcp_xr_attribute_get_stat_summary_flags(const belle_sdp_rtcp_xr_attribute_t* attribute) { return attribute->stat_summary_flags; } void belle_sdp_rtcp_xr_attribute_add_stat_summary_flag(belle_sdp_rtcp_xr_attribute_t* attribute, const char* flag) { attribute->stat_summary_flags = belle_sip_list_append(attribute->stat_summary_flags, belle_sip_strdup(flag)); } void belle_sdp_rtcp_xr_attribute_enable_stat_summary(belle_sdp_rtcp_xr_attribute_t* attribute, const char* flag) { belle_sdp_rtcp_xr_attribute_set_stat_summary(attribute, 1); } void belle_sdp_rtcp_xr_attribute_enable_voip_metrics(belle_sdp_rtcp_xr_attribute_t* attribute, const char* flag) { belle_sdp_rtcp_xr_attribute_set_voip_metrics(attribute, 1); } void belle_sdp_rtcp_xr_attribute_destroy(belle_sdp_rtcp_xr_attribute_t* attribute) { DESTROY_STRING(attribute,rcvr_rtt_mode) belle_sip_list_free_with_data(attribute->stat_summary_flags, belle_sip_free); } void belle_sdp_rtcp_xr_attribute_clone(belle_sdp_rtcp_xr_attribute_t* attribute, const belle_sdp_rtcp_xr_attribute_t *orig) { CLONE_STRING(belle_sdp_rtcp_xr_attribute,rcvr_rtt_mode,attribute,orig) attribute->rcvr_rtt_max_size = orig->rcvr_rtt_max_size; attribute->stat_summary = orig->stat_summary; attribute->stat_summary_flags = belle_sip_list_copy_with_data(orig->stat_summary_flags, belle_sip_string_copyfunc); attribute->voip_metrics = orig->voip_metrics; } belle_sip_error_code belle_sdp_rtcp_xr_attribute_marshal(belle_sdp_rtcp_xr_attribute_t* attribute, char * buff, size_t buff_size, size_t *offset) { const char *rcvr_rtt_mode = NULL; int rcvr_rtt_max_size = -1; int nb_xr_formats = 0; belle_sip_error_code error = belle_sdp_attribute_marshal(BELLE_SDP_ATTRIBUTE(attribute), buff, buff_size, offset); if (error != BELLE_SIP_OK) return error; rcvr_rtt_mode = belle_sdp_rtcp_xr_attribute_get_rcvr_rtt_mode(attribute); if (rcvr_rtt_mode != NULL) { error = belle_sip_snprintf(buff, buff_size, offset, "%srcvr-rtt=%s", nb_xr_formats++ == 0 ? ":" : " ", rcvr_rtt_mode); if (error != BELLE_SIP_OK) return error; rcvr_rtt_max_size = belle_sdp_rtcp_xr_attribute_get_rcvr_rtt_max_size(attribute); if (rcvr_rtt_max_size > 0) { error = belle_sip_snprintf(buff, buff_size, offset, ":%u", rcvr_rtt_max_size); if (error != BELLE_SIP_OK) return error; } } if (belle_sdp_rtcp_xr_attribute_has_stat_summary(attribute)) { belle_sip_list_t* list; int nb_stat_flags = 0; error = belle_sip_snprintf(buff, buff_size, offset, "%sstat-summary", nb_xr_formats++ == 0 ? ":" : " "); if (error != BELLE_SIP_OK) return error; for (list = attribute->stat_summary_flags; list != NULL; list = list->next) { error = belle_sip_snprintf(buff, buff_size, offset, "%s%s", nb_stat_flags++ == 0 ? "=" : ",", (const char*)list->data); if (error != BELLE_SIP_OK) return error; } } if (belle_sdp_rtcp_xr_attribute_has_voip_metrics(attribute)) { error = belle_sip_snprintf(buff, buff_size, offset, "%svoip-metrics", nb_xr_formats++ == 0 ? ":" : " "); if (error != BELLE_SIP_OK) return error; } return error; } static void belle_sdp_rtcp_xr_attribute_init(belle_sdp_rtcp_xr_attribute_t* attribute) { belle_sdp_attribute_set_name(BELLE_SDP_ATTRIBUTE(attribute), "rtcp-xr"); } BELLE_SDP_NEW_WITH_CTR(rtcp_xr_attribute,belle_sdp_attribute) BELLE_SDP_PARSE(rtcp_xr_attribute) GET_SET_STRING(belle_sdp_rtcp_xr_attribute,rcvr_rtt_mode) GET_SET_INT(belle_sdp_rtcp_xr_attribute,rcvr_rtt_max_size,int) GET_SET_BOOL(belle_sdp_rtcp_xr_attribute,stat_summary,has) GET_SET_BOOL(belle_sdp_rtcp_xr_attribute,voip_metrics,has) /*************************************************************************************** * Bandwidth * **************************************************************************************/ struct _belle_sdp_bandwidth { belle_sip_object_t base; const char* type; int value; }; void belle_sdp_bandwidth_destroy(belle_sdp_bandwidth_t* bandwidth) { if (bandwidth->type) belle_sip_free((void*)bandwidth->type); } void belle_sdp_bandwidth_clone(belle_sdp_bandwidth_t *bandwidth, const belle_sdp_bandwidth_t *orig){ CLONE_STRING(belle_sdp_bandwidth,type,bandwidth,orig) bandwidth->value=orig->value; } belle_sip_error_code belle_sdp_bandwidth_marshal(belle_sdp_bandwidth_t* bandwidth, char* buff, size_t buff_size, size_t *offset) { return belle_sip_snprintf(buff,buff_size,offset,"b=%s:%i",bandwidth->type,bandwidth->value); } BELLE_SDP_NEW(bandwidth,belle_sip_object) BELLE_SDP_PARSE(bandwidth) GET_SET_STRING(belle_sdp_bandwidth,type); GET_SET_INT(belle_sdp_bandwidth,value,int) /************************ * connection ***********************/ struct _belle_sdp_connection { belle_sip_object_t base; const char* network_type; const char* address_type; const char* address; int ttl; int range; }; void belle_sdp_connection_destroy(belle_sdp_connection_t* connection) { DESTROY_STRING(connection,network_type) DESTROY_STRING(connection,address_type) DESTROY_STRING(connection,address) } void belle_sdp_connection_clone(belle_sdp_connection_t *connection, const belle_sdp_connection_t *orig){ CLONE_STRING(belle_sdp_connection,network_type,connection,orig) CLONE_STRING(belle_sdp_connection,address_type,connection,orig) CLONE_STRING(belle_sdp_connection,address,connection,orig) connection->range=orig->range; connection->ttl=orig->ttl; } belle_sip_error_code belle_sdp_connection_marshal(belle_sdp_connection_t* connection, char* buff, size_t buff_size, size_t *offset) { belle_sip_error_code error = belle_sip_snprintf(buff,buff_size,offset,"c=%s %s %s",connection->network_type,connection->address_type,connection->address); if (error != BELLE_SIP_OK) return error; if (connection->ttl>0) error = belle_sip_snprintf(buff,buff_size,offset,"/%i",connection->ttl); if (error != BELLE_SIP_OK) return error; if (connection->range>0) error = belle_sip_snprintf(buff,buff_size,offset,"/%i",connection->range); return error; } BELLE_SDP_NEW(connection,belle_sip_object) BELLE_SDP_PARSE(connection) belle_sdp_connection_t* belle_sdp_connection_create(const char* net_type, const char* addr_type, const char* addr) { belle_sdp_connection_t* connection = belle_sdp_connection_new(); belle_sdp_connection_set_network_type(connection,net_type); belle_sdp_connection_set_address_type(connection,addr_type); belle_sdp_connection_set_address(connection,addr); return connection; } GET_SET_STRING(belle_sdp_connection,network_type); GET_SET_STRING(belle_sdp_connection,address_type); GET_SET_STRING(belle_sdp_connection,address); GET_SET_INT(belle_sdp_connection,ttl,int); GET_SET_INT(belle_sdp_connection,range,int); /************************ * email ***********************/ struct _belle_sdp_email { belle_sip_object_t base; char* value; }; void belle_sdp_email_destroy(belle_sdp_email_t* email) { DESTROY_STRING(email,value) } void belle_sdp_email_clone(belle_sdp_email_t *email, const belle_sdp_email_t *orig){ CLONE_STRING(belle_sdp_email,value,email,orig) } belle_sip_error_code belle_sdp_email_marshal(belle_sdp_email_t* email, char* buff, size_t buff_size, size_t *offset) { return belle_sip_snprintf(buff,buff_size,offset,"e=%s",email->value); } BELLE_SDP_NEW(email,belle_sip_object) BELLE_SDP_PARSE(email) GET_SET_STRING(belle_sdp_email,value); /************************ * info ***********************/ struct _belle_sdp_info { belle_sip_object_t base; const char* value; }; void belle_sdp_info_destroy(belle_sdp_info_t* info) { DESTROY_STRING(info,value) } void belle_sdp_info_clone(belle_sdp_info_t *info, const belle_sdp_info_t *orig){ CLONE_STRING(belle_sdp_info,value,info,orig) } belle_sip_error_code belle_sdp_info_marshal(belle_sdp_info_t* info, char* buff, size_t buff_size, size_t *offset) { return belle_sip_snprintf(buff,buff_size,offset,"i=%s",info->value); } BELLE_SDP_NEW(info,belle_sip_object) BELLE_SDP_PARSE(info) GET_SET_STRING(belle_sdp_info,value); /************************ * media ***********************/ struct _belle_sdp_media { belle_sip_object_t base; const char* media_type; int media_port; belle_sip_list_t* media_formats; int port_count; const char* protocol; const char* raw_fmt; }; belle_sip_list_t* belle_sdp_media_get_media_formats(const belle_sdp_media_t* media) { return media->media_formats; } void belle_sdp_media_set_media_formats( belle_sdp_media_t* media, belle_sip_list_t* formats) { /*belle_sip_list_free(media->media_formats); to allow easy list management might be better to add an append format method*/ media->media_formats = formats; } void belle_sdp_media_media_formats_add(belle_sdp_media_t* media, const char* fmt) { media->media_formats = belle_sip_list_append(media->media_formats, (void*)(intptr_t)atoi(fmt)); } void belle_sdp_media_destroy(belle_sdp_media_t* media) { DESTROY_STRING(media,media_type) belle_sip_list_free(media->media_formats); DESTROY_STRING(media,protocol) } static void belle_sdp_media_init(belle_sdp_media_t* media) { media->port_count=1; } void belle_sdp_media_clone(belle_sdp_media_t *media, const belle_sdp_media_t *orig){ CLONE_STRING(belle_sdp_media,media_type,media,orig) media->media_port=orig->media_port; media->media_formats = belle_sip_list_copy(orig->media_formats); media->port_count=orig->port_count; CLONE_STRING(belle_sdp_media,protocol,media,orig) } belle_sip_error_code belle_sdp_media_marshal(belle_sdp_media_t* media, char* buff, size_t buff_size, size_t *offset) { belle_sip_list_t* list = media->media_formats; belle_sip_error_code error = belle_sip_snprintf(buff,buff_size,offset,"m=%s %i",media->media_type,media->media_port); if (error != BELLE_SIP_OK) return error; if (media->port_count>1) { error = belle_sip_snprintf(buff,buff_size,offset,"/%i",media->port_count); if (error != BELLE_SIP_OK) return error; } error = belle_sip_snprintf(buff,buff_size,offset," %s",media->protocol); if (error != BELLE_SIP_OK) return error; for (;list != NULL;list=list->next){ error = belle_sip_snprintf(buff,buff_size,offset," %li",(long)(intptr_t)list->data); if (error != BELLE_SIP_OK) return error; } return error; } BELLE_SDP_NEW_WITH_CTR(media,belle_sip_object) BELLE_SDP_PARSE(media) belle_sdp_media_t* belle_sdp_media_create(const char* media_type ,int media_port ,int port_count ,const char* protocol ,belle_sip_list_t* static_media_formats) { belle_sdp_media_t* media= belle_sdp_media_new(); belle_sdp_media_set_media_type(media,media_type); belle_sdp_media_set_media_port(media,media_port); belle_sdp_media_set_port_count(media,port_count); belle_sdp_media_set_protocol(media,protocol); if (static_media_formats) belle_sdp_media_set_media_formats(media,static_media_formats); return media; } GET_SET_STRING(belle_sdp_media,media_type); GET_SET_STRING(belle_sdp_media,protocol); GET_SET_INT(belle_sdp_media,media_port,int) GET_SET_INT(belle_sdp_media,port_count,int) /************************ * base_description ***********************/ typedef struct _belle_sdp_base_description { belle_sip_object_t base; belle_sdp_info_t* info; belle_sdp_connection_t* connection; belle_sip_list_t* bandwidths; belle_sip_list_t* attributes; } belle_sdp_base_description_t; static void belle_sdp_base_description_destroy(belle_sdp_base_description_t* base_description) { if (base_description->info) belle_sip_object_unref(BELLE_SIP_OBJECT(base_description->info)); if (base_description->connection) belle_sip_object_unref(BELLE_SIP_OBJECT(base_description->connection)); belle_sip_list_free_with_data(base_description->bandwidths,belle_sip_object_freefunc); belle_sip_list_free_with_data(base_description->attributes,belle_sip_object_freefunc); } static void belle_sdp_base_description_init(belle_sdp_base_description_t* base_description) {} static void belle_sdp_base_description_clone(belle_sdp_base_description_t *base_description, const belle_sdp_base_description_t *orig){ if (orig->info) base_description->info = BELLE_SDP_INFO(belle_sip_object_clone_and_ref(BELLE_SIP_OBJECT(orig->info))); if (orig->connection) base_description->connection = BELLE_SDP_CONNECTION(belle_sip_object_clone_and_ref(BELLE_SIP_OBJECT(orig->connection))); base_description->bandwidths = belle_sip_list_copy_with_data(orig->bandwidths,belle_sip_object_copyfunc); base_description->attributes = belle_sip_list_copy_with_data(orig->attributes,belle_sip_object_copyfunc); } belle_sip_error_code belle_sdp_base_description_marshal(belle_sdp_base_description_t* base_description, char* buff, size_t buff_size, size_t *offset) { belle_sip_error_code error = BELLE_SIP_OK; belle_sip_list_t* bandwidths; if (base_description->info) { error = belle_sip_object_marshal(BELLE_SIP_OBJECT(base_description->info), buff, buff_size, offset); if (error != BELLE_SIP_OK) return error; error = belle_sip_snprintf(buff, buff_size, offset, "\r\n"); if (error != BELLE_SIP_OK) return error; } if (base_description->connection) { error = belle_sip_object_marshal(BELLE_SIP_OBJECT(base_description->connection), buff, buff_size, offset); if (error != BELLE_SIP_OK) return error; error = belle_sip_snprintf(buff, buff_size, offset, "\r\n"); if (error != BELLE_SIP_OK) return error; } for (bandwidths=base_description->bandwidths;bandwidths != NULL;bandwidths=bandwidths->next){ error = belle_sip_object_marshal(BELLE_SIP_OBJECT(bandwidths->data), buff, buff_size, offset); if (error != BELLE_SIP_OK) return error; error = belle_sip_snprintf(buff, buff_size, offset, "\r\n"); if (error != BELLE_SIP_OK) return error; } return error; } BELLE_SIP_DECLARE_NO_IMPLEMENTED_INTERFACES(belle_sdp_base_description_t); BELLE_SIP_INSTANCIATE_VPTR(belle_sdp_base_description_t ,belle_sip_object_t ,belle_sdp_base_description_destroy ,belle_sdp_base_description_clone ,belle_sdp_base_description_marshal ,FALSE); static int belle_sdp_base_description_attribute_comp_func(const belle_sdp_attribute_t* a, const char*b) { return strcmp(a->name,b); } belle_sdp_attribute_t* belle_sdp_base_description_get_attribute(const belle_sdp_base_description_t* base_description, const char* name) { belle_sip_list_t* attribute; attribute = belle_sip_list_find_custom(base_description->attributes, (belle_sip_compare_func)belle_sdp_base_description_attribute_comp_func, name); if (attribute) { return ((belle_sdp_attribute_t*)attribute->data); } else { return NULL; } } const char* belle_sdp_base_description_get_attribute_value(const belle_sdp_base_description_t* base_description, const char* name) { belle_sdp_attribute_t* attribute = belle_sdp_base_description_get_attribute(base_description,name); if (attribute) { return belle_sdp_attribute_get_value(attribute); } else return NULL; } belle_sip_list_t* belle_sdp_base_description_get_attributes(const belle_sdp_base_description_t* base_description) { return base_description->attributes; } belle_sip_list_t* belle_sdp_base_description_find_attributes_with_name(const belle_sdp_base_description_t* base_description, const char* name) { belle_sip_list_t* matches = NULL; const belle_sip_list_t* attributes = belle_sdp_base_description_get_attributes(base_description); for(;attributes!=NULL;attributes=attributes->next){ belle_sdp_attribute_t* attribute = ((belle_sdp_attribute_t*)attributes->data); if (belle_sdp_base_description_attribute_comp_func(attribute,name)==0) { matches = belle_sip_list_append(matches,belle_sip_object_ref(attribute)); } } return matches; } static int belle_sdp_base_description_bandwidth_comp_func(const belle_sdp_bandwidth_t* a, const char*b) { return strcmp(a->type,b); } belle_sdp_bandwidth_t* belle_sdp_base_description_get_bandwidth(const belle_sdp_base_description_t *base_description, const char *name){ belle_sip_list_t* found = belle_sip_list_find_custom(base_description->bandwidths, (belle_sip_compare_func)belle_sdp_base_description_bandwidth_comp_func, name); if( found ){ return ((belle_sdp_bandwidth_t*)found->data); } else { return NULL; } } int belle_sdp_base_description_get_bandwidth_value(const belle_sdp_base_description_t* base_description, const char* name) { belle_sip_list_t* bandwidth; bandwidth = belle_sip_list_find_custom(base_description->bandwidths, (belle_sip_compare_func)belle_sdp_base_description_bandwidth_comp_func, name); if (bandwidth) { return ((belle_sdp_bandwidth_t*)bandwidth->data)->value; } else { return -1; } } void belle_sdp_base_description_remove_attribute(belle_sdp_base_description_t* base_description,const char* name) { belle_sip_list_t* attribute; attribute = belle_sip_list_find_custom(base_description->attributes, (belle_sip_compare_func)belle_sdp_base_description_attribute_comp_func, name); if (attribute) { belle_sip_object_unref(BELLE_SIP_OBJECT(attribute->data)); base_description->attributes = belle_sip_list_delete_link(base_description->attributes,attribute); } } void belle_sdp_base_description_remove_bandwidth(belle_sdp_base_description_t* base_description,const char* name) { belle_sip_list_t* bandwidth; bandwidth = belle_sip_list_find_custom(base_description->bandwidths, (belle_sip_compare_func)belle_sdp_base_description_bandwidth_comp_func, name); if (bandwidth) { belle_sip_object_unref(BELLE_SIP_OBJECT(bandwidth->data)); base_description->bandwidths = belle_sip_list_delete_link(base_description->bandwidths,bandwidth); } } void belle_sdp_base_description_set_attribute_value(belle_sdp_base_description_t* base_description, const char* name, const char* value) { belle_sdp_raw_attribute_t* attribute = belle_sdp_raw_attribute_new(); belle_sdp_attribute_set_name(BELLE_SDP_ATTRIBUTE(attribute),name); belle_sdp_raw_attribute_set_value(attribute,value); base_description->attributes = belle_sip_list_append(base_description->attributes,belle_sip_object_ref(attribute)); } #define SPECIALIZED_ATTRIBUTE_HAS_INCORRECT_TYPE(attribute_ptr, attribute_name, attribute_type)\ (strcmp((attribute_ptr)->name, attribute_name) == 0 && !BELLE_SIP_IS_INSTANCE_OF(attribute_ptr, attribute_type)) void belle_sdp_base_description_add_attribute(belle_sdp_base_description_t* base_description, belle_sdp_attribute_t* attribute) { /* Sanity check to avoid specialized attributes to be parsed as raw attribute as a fallback. * The application code will be confused not to be able to cast the attribute in its specialized type. */ if (SPECIALIZED_ATTRIBUTE_HAS_INCORRECT_TYPE(attribute, "rtcp-fb", belle_sdp_rtcp_fb_attribute_t) || SPECIALIZED_ATTRIBUTE_HAS_INCORRECT_TYPE(attribute, "rtcp-xr", belle_sdp_rtcp_xr_attribute_t) || SPECIALIZED_ATTRIBUTE_HAS_INCORRECT_TYPE(attribute, "content", belle_sdp_content_attribute_t) || SPECIALIZED_ATTRIBUTE_HAS_INCORRECT_TYPE(attribute, "label", belle_sdp_label_attribute_t) || SPECIALIZED_ATTRIBUTE_HAS_INCORRECT_TYPE(attribute, "creq", belle_sdp_creq_attribute_t) || SPECIALIZED_ATTRIBUTE_HAS_INCORRECT_TYPE(attribute, "csup", belle_sdp_csup_attribute_t) || SPECIALIZED_ATTRIBUTE_HAS_INCORRECT_TYPE(attribute, "tcap", belle_sdp_tcap_attribute_t) || SPECIALIZED_ATTRIBUTE_HAS_INCORRECT_TYPE(attribute, "acap", belle_sdp_acap_attribute_t) || SPECIALIZED_ATTRIBUTE_HAS_INCORRECT_TYPE(attribute, "csup", belle_sdp_csup_attribute_t) || SPECIALIZED_ATTRIBUTE_HAS_INCORRECT_TYPE(attribute, "acfg", belle_sdp_acfg_attribute_t) || SPECIALIZED_ATTRIBUTE_HAS_INCORRECT_TYPE(attribute, "pcfg", belle_sdp_pcfg_attribute_t) ){ belle_sip_error("Erroneously parsed attribute with name [%s] and value [%s], skipped", belle_sdp_attribute_get_name(attribute), belle_sdp_attribute_get_value(attribute)); belle_sip_object_unref(attribute); return; } base_description->attributes = belle_sip_list_append(base_description->attributes,(void*)belle_sip_object_ref(BELLE_SIP_OBJECT(attribute))); } #define SET_LIST(list_name,value) \ belle_sip_list_t* list;\ if (list_name) {\ belle_sip_list_free_with_data(list_name,belle_sip_object_unref);\ } \ for (list=value;list != NULL; list=list->next) {\ belle_sip_object_ref(BELLE_SIP_OBJECT(list->data));\ }\ list_name=value; void belle_sdp_base_description_set_attributes(belle_sdp_base_description_t* base_description, belle_sip_list_t* attributes) { SET_LIST(base_description->attributes,attributes) } void belle_sdp_base_description_set_bandwidth(belle_sdp_base_description_t* base_description, const char* type, int value) { belle_sdp_bandwidth_t* bandwidth = BELLE_SDP_BANDWIDTH(belle_sdp_base_description_get_bandwidth(base_description, type)); if( bandwidth == NULL ){ bandwidth= belle_sdp_bandwidth_new(); belle_sdp_bandwidth_set_type(bandwidth,type); belle_sdp_bandwidth_set_value(bandwidth,value); base_description->bandwidths = belle_sip_list_append(base_description->bandwidths,belle_sip_object_ref(bandwidth)); } else { belle_sdp_bandwidth_set_value(bandwidth,value); } } void belle_sdp_base_description_add_bandwidth(belle_sdp_base_description_t* base_description, const belle_sdp_bandwidth_t* bandwidth) { base_description->bandwidths = belle_sip_list_append(base_description->bandwidths,(void *)belle_sip_object_ref((void *)bandwidth)); } void belle_sdp_base_description_set_bandwidths(belle_sdp_base_description_t* base_description, belle_sip_list_t* bandwidths) { SET_LIST(base_description->bandwidths,bandwidths) } /************************ * media_description ***********************/ struct _belle_sdp_media_description { belle_sdp_base_description_t base_description; belle_sdp_media_t* media; }; void belle_sdp_media_description_destroy(belle_sdp_media_description_t* media_description) { if (media_description->media) belle_sip_object_unref(BELLE_SIP_OBJECT((media_description->media))); } void belle_sdp_media_description_clone(belle_sdp_media_description_t *media_description, const belle_sdp_media_description_t *orig){ if (orig->media) media_description->media = BELLE_SDP_MEDIA(belle_sip_object_clone_and_ref(BELLE_SIP_OBJECT((orig->media)))); } belle_sip_error_code belle_sdp_media_description_marshal(belle_sdp_media_description_t* media_description, char* buff, size_t buff_size, size_t *offset) { belle_sip_list_t* attributes; belle_sip_error_code error = belle_sip_object_marshal(BELLE_SIP_OBJECT(media_description->media), buff, buff_size, offset); if (error != BELLE_SIP_OK) return error; error = belle_sip_snprintf(buff, buff_size, offset, "\r\n"); if (error != BELLE_SIP_OK) return error; error = belle_sdp_base_description_marshal(BELLE_SIP_CAST(media_description,belle_sdp_base_description_t), buff, buff_size, offset); if (error != BELLE_SIP_OK) return error; for (attributes=media_description->base_description.attributes;attributes != NULL;attributes=attributes->next){ error = belle_sip_object_marshal(BELLE_SIP_OBJECT(attributes->data), buff, buff_size, offset); if (error != BELLE_SIP_OK) return error; error = belle_sip_snprintf(buff, buff_size, offset, "\r\n"); if (error != BELLE_SIP_OK) return error; } return error; } BELLE_SDP_NEW(media_description,belle_sdp_base_description) belle_sdp_media_description_t* belle_sdp_media_description_create(const char* media_type ,int media_port ,int port_count ,const char* protocol ,belle_sip_list_t* static_media_formats) { belle_sdp_media_description_t* media_desc=belle_sdp_media_description_new(); belle_sdp_media_description_set_media(media_desc,belle_sdp_media_create(media_type,media_port,port_count,protocol,static_media_formats)); return media_desc; } BELLE_SDP_PARSE(media_description) void belle_sdp_media_description_add_dynamic_payloads(belle_sdp_media_description_t* media_description, belle_sip_list_t* payloadNames, belle_sip_list_t* payloadValues) { belle_sip_error("belle_sdp_media_description_add_dynamic_payloads not implemented yet"); } belle_sdp_attribute_t* belle_sdp_media_description_get_attribute(const belle_sdp_media_description_t* media_description, const char* name) { return belle_sdp_base_description_get_attribute(BELLE_SIP_CAST(media_description,belle_sdp_base_description_t),name); } const char* belle_sdp_media_description_get_attribute_value(const belle_sdp_media_description_t* media_description, const char* name) { return belle_sdp_base_description_get_attribute_value(BELLE_SIP_CAST(media_description,belle_sdp_base_description_t),name); } belle_sip_list_t* belle_sdp_media_description_get_attributes(const belle_sdp_media_description_t* media_description) { return BELLE_SIP_CAST(media_description,belle_sdp_base_description_t)->attributes; } belle_sip_list_t * belle_sdp_media_description_find_attributes_with_name(const belle_sdp_media_description_t *media_description, const char* name) { return belle_sdp_base_description_find_attributes_with_name(BELLE_SIP_CAST(media_description, belle_sdp_base_description_t), name); } int belle_sdp_media_description_get_bandwidth(const belle_sdp_media_description_t* media_description, const char* name) { return belle_sdp_base_description_get_bandwidth_value(BELLE_SIP_CAST(media_description,belle_sdp_base_description_t),name); } belle_sip_list_t* belle_sdp_media_description_get_bandwidths(const belle_sdp_media_description_t* media_description) { return BELLE_SIP_CAST(media_description,belle_sdp_base_description_t)->bandwidths; } belle_sdp_connection_t* belle_sdp_media_description_get_connection(const belle_sdp_media_description_t* media_description) { return BELLE_SIP_CAST(media_description,belle_sdp_base_description_t)->connection; } belle_sdp_info_t* belle_sdp_media_description_get_info(const belle_sdp_media_description_t* media_description) { return BELLE_SIP_CAST(media_description,belle_sdp_base_description_t)->info; } /*belle_sdp_key_t* belle_sdp_media_description_get_key(const belle_sdp_media_description_t* media_description);*/ belle_sdp_media_t* belle_sdp_media_description_get_media(const belle_sdp_media_description_t* media_description) { return media_description->media; } void belle_sdp_media_description_add_attribute_holder(belle_sdp_media_description_t* media_description, belle_sdp_attribute_holder_t *holder) { belle_sdp_base_description_add_attribute(BELLE_SIP_CAST(media_description,belle_sdp_base_description_t), holder->attribute); belle_sip_free(holder); } struct static_payload { unsigned char number; int channel_count; const char* type; int rate; }; #define STATIC_PAYLOAD_LIST_LENTH 8 /* * rfc 3551 * PT encoding media type clock rate channels name (Hz) ___________________________________________________ 0 PCMU A 8,000 1 1 reserved A 2 reserved A 3 GSM A 8,000 1 4 G723 A 8,000 1 5 DVI4 A 8,000 1 6 DVI4 A 16,000 1 7 LPC A 8,000 1 8 PCMA A 8,000 1 9 G722 A 8,000 1 10 L16 A 44,100 2 11 L16 A 44,100 1 12 QCELP A 8,000 1 13 CN A 8,000 1 14 MPA A 90,000 (see text) 15 G728 A 8,000 1 16 DVI4 A 11,025 1 17 DVI4 A 22,050 1 18 G729 A 8,000 1 Table 4: Payload types (PT) for audio encodings PT encoding media type clock rate name (Hz) _____________________________________________ 24 unassigned V 25 CelB V 90,000 26 JPEG V 90,000 27 unassigned V 28 nv V 90,000 29 unassigned V 30 unassigned V 31 H261 V 90,000 32 MPV V 90,000 33 MP2T AV 90,000 34 H263 V 90,000 Table 5: Payload types (PT) for video and combined encodings * * */ const struct static_payload static_payload_list [] ={ /*audio*/ {0,1,"PCMU",8000}, {3,1,"GSM",8000}, {4,1,"G723",8000}, {5,1,"DVI4",8000}, {6,1,"DVI4",16000}, {7,1,"LPC",8000}, {8,1,"PCMA",8000}, {9,1,"G722",8000}, {10,2,"L16",44100}, {11,1,"L16",44100}, {12,1,"QCELP",8000}, {13,1,"CN",8000}, {14,1,"MPA",90000}, {15,1,"G728",8000}, {16,1,"DVI4",11025}, {17,1,"DVI4",22050}, {18,1,"G729",8000}, /*video*/ {25,0,"CelB",90000}, {26,0,"JPEG",90000}, {28,0,"nv",90000}, {31,0,"H261",90000}, {32,0,"MPV",90000}, {33,0,"MP2T",90000}, {34,0,"H263",90000} }; static const size_t payload_list_elements=sizeof(static_payload_list)/sizeof(struct static_payload); static int mime_parameter_is_static(const belle_sdp_mime_parameter_t *param){ const struct static_payload* iterator; size_t i; for (iterator = static_payload_list,i=0;inumber == param->media_format && strcasecmp(iterator->type,param->type)==0 && iterator->channel_count==param->channel_count && iterator->rate==param->rate ) { return TRUE; } } return FALSE; } static int mime_parameter_fill_from_static(belle_sdp_mime_parameter_t *mime_parameter,int format) { const struct static_payload* iterator; size_t i; for (iterator = static_payload_list,i=0;inumber == format) { belle_sdp_mime_parameter_set_type(mime_parameter,iterator->type); belle_sdp_mime_parameter_set_rate(mime_parameter,iterator->rate); belle_sdp_mime_parameter_set_channel_count(mime_parameter,iterator->channel_count); break; } } return 0; } static int mime_parameter_fill_from_rtpmap(belle_sdp_mime_parameter_t *mime_parameter, const char *rtpmap, int is_audio){ char *mime=belle_sip_strdup(rtpmap); char *p=strchr(mime,'/'); if (p){ char *chans; *p='\0'; p++; chans=strchr(p,'/'); if (chans){ *chans='\0'; chans++; belle_sdp_mime_parameter_set_channel_count(mime_parameter,atoi(chans)); }else if (is_audio) belle_sdp_mime_parameter_set_channel_count(mime_parameter,1); /*in absence of channel count, 1 is implicit for audio streams*/ belle_sdp_mime_parameter_set_rate(mime_parameter,atoi(p)); } belle_sdp_mime_parameter_set_type(mime_parameter,mime); belle_sip_free(mime); return 0; } /* return the value of attr "field" for payload pt at line pos (field=rtpmap,fmtp...)*/ static const char *belle_sdp_media_description_a_attr_value_get_with_pt(const belle_sdp_media_description_t* media_description,int pt,const char *field) { int tmppt=0,scanned=0; const char *tmp; belle_sdp_attribute_t *attr; belle_sip_list_t* attribute_list; for ( attribute_list =belle_sdp_media_description_get_attributes(media_description) ;attribute_list != NULL ;attribute_list=attribute_list->next) { attr = BELLE_SDP_ATTRIBUTE(attribute_list->data); if (strcmp(field,belle_sdp_attribute_get_name(attr))==0 && belle_sdp_attribute_get_value(attr) != NULL){ int nb = sscanf(belle_sdp_attribute_get_value(attr),"%i %n",&tmppt,&scanned); /* the return value may depend on how %n is interpreted by the libc: see manpage*/ if (nb == 1 || nb==2 ){ if (pt==tmppt){ tmp=belle_sdp_attribute_get_value(attr)+scanned; if (strlen(tmp)>0) return tmp; } }else belle_sip_warning("sdp has a strange a= line (%s) nb=%i",belle_sdp_attribute_get_value(attr),nb); } } return NULL; } belle_sip_list_t* belle_sdp_media_description_build_mime_parameters(const belle_sdp_media_description_t* media_description) { /*First, get media type*/ belle_sdp_media_t* media = belle_sdp_media_description_get_media(media_description); belle_sip_list_t* mime_parameter_list=NULL; belle_sip_list_t* media_formats=NULL; belle_sdp_mime_parameter_t* mime_parameter; const char* rtpmap=NULL; const char* fmtp=NULL; const char* ptime=NULL; const char* max_ptime=NULL; int ptime_as_int=-1; int max_ptime_as_int=-1; int is_audio=0; if (!media) { belle_sip_error("belle_sdp_media_description_build_mime_parameters: no media"); return NULL; } if (strcasecmp(belle_sdp_media_get_media_type(media),"audio")==0) is_audio=1; ptime = belle_sdp_media_description_get_attribute_value(media_description,"ptime"); ptime?ptime_as_int=atoi(ptime):-1; max_ptime = belle_sdp_media_description_get_attribute_value(media_description,"maxptime"); max_ptime?max_ptime_as_int=atoi(max_ptime):-1; for (media_formats = belle_sdp_media_get_media_formats(media);media_formats != NULL;media_formats=media_formats->next) { /*create mime parameters with format*/ mime_parameter = belle_sdp_mime_parameter_new(); belle_sdp_mime_parameter_set_ptime(mime_parameter,ptime_as_int); belle_sdp_mime_parameter_set_max_ptime(mime_parameter,max_ptime_as_int); belle_sdp_mime_parameter_set_media_format(mime_parameter,(int)(intptr_t)media_formats->data); /*get rtpmap*/ rtpmap = belle_sdp_media_description_a_attr_value_get_with_pt(media_description ,belle_sdp_mime_parameter_get_media_format(mime_parameter) ,"rtpmap"); if (rtpmap) { mime_parameter_fill_from_rtpmap(mime_parameter,rtpmap,is_audio); }else{ mime_parameter_fill_from_static(mime_parameter,belle_sdp_mime_parameter_get_media_format(mime_parameter)); } fmtp = belle_sdp_media_description_a_attr_value_get_with_pt(media_description ,belle_sdp_mime_parameter_get_media_format(mime_parameter) ,"fmtp"); if (fmtp) { belle_sdp_mime_parameter_set_parameters(mime_parameter,fmtp); } mime_parameter_list=belle_sip_list_append(mime_parameter_list,mime_parameter); } return mime_parameter_list; } #define MAX_FMTP_LENGTH 512 void belle_sdp_media_description_append_values_from_mime_parameter(belle_sdp_media_description_t* media_description, const belle_sdp_mime_parameter_t* mime_parameter) { belle_sdp_media_t* media = belle_sdp_media_description_get_media(media_description); char atribute_value [MAX_FMTP_LENGTH]; int current_ptime=0; int current_max_ptime=0; belle_sdp_media_set_media_formats(media,belle_sip_list_append(belle_sdp_media_get_media_formats(media) ,(void*)(intptr_t)(belle_sdp_mime_parameter_get_media_format(mime_parameter)))); if (belle_sdp_media_description_get_attribute_value(media_description,"ptime")) { current_ptime=atoi(belle_sdp_media_description_get_attribute_value(media_description,"ptime")); belle_sdp_media_description_remove_attribute(media_description,"ptime"); } if (belle_sdp_media_description_get_attribute_value(media_description,"maxptime")) { current_max_ptime=atoi(belle_sdp_media_description_get_attribute_value(media_description,"maxptime")); belle_sdp_media_description_remove_attribute(media_description,"maxptime"); } #ifndef BELLE_SDP_FORCE_RTP_MAP /* defined to for RTP map even for static codec*/ if (!mime_parameter_is_static(mime_parameter)) { /*dynamic payload*/ #endif if (belle_sdp_mime_parameter_get_channel_count(mime_parameter)>1) { snprintf(atribute_value,MAX_FMTP_LENGTH,"%i %s/%i/%i" ,belle_sdp_mime_parameter_get_media_format(mime_parameter) ,belle_sdp_mime_parameter_get_type(mime_parameter) ,belle_sdp_mime_parameter_get_rate(mime_parameter) ,belle_sdp_mime_parameter_get_channel_count(mime_parameter)); } else { snprintf(atribute_value,MAX_FMTP_LENGTH,"%i %s/%i" ,belle_sdp_mime_parameter_get_media_format(mime_parameter) ,belle_sdp_mime_parameter_get_type(mime_parameter) ,belle_sdp_mime_parameter_get_rate(mime_parameter)); } belle_sdp_media_description_set_attribute_value(media_description,"rtpmap",atribute_value); #ifndef BELLE_SDP_FORCE_RTP_MAP } #endif // always include fmtp parameters if available if (belle_sdp_mime_parameter_get_parameters(mime_parameter)) { snprintf(atribute_value,MAX_FMTP_LENGTH,"%i %s" ,belle_sdp_mime_parameter_get_media_format(mime_parameter) ,belle_sdp_mime_parameter_get_parameters(mime_parameter)); belle_sdp_media_description_set_attribute_value(media_description,"fmtp",atribute_value); } if (belle_sdp_mime_parameter_get_ptime(mime_parameter)>current_ptime) { current_ptime=belle_sdp_mime_parameter_get_ptime(mime_parameter); } if (current_ptime>0){ char ptime[12]; snprintf(ptime,sizeof(ptime),"%i",current_ptime); belle_sdp_media_description_set_attribute_value(media_description,"ptime",ptime); } if (belle_sdp_mime_parameter_get_max_ptime(mime_parameter)>current_max_ptime) { current_max_ptime=belle_sdp_mime_parameter_get_max_ptime(mime_parameter); } if (current_max_ptime>0){ char max_ptime[12]; snprintf(max_ptime,sizeof(max_ptime),"%i",current_max_ptime); belle_sdp_media_description_set_attribute_value(media_description,"maxptime",max_ptime); } } belle_sip_list_t* belle_sdp_media_description_get_mime_types(const belle_sdp_media_description_t* media_description) { belle_sip_error("belle_sdp_media_description_get_mime_types: not implemented yet"); return NULL; } void belle_sdp_media_description_remove_attribute(belle_sdp_media_description_t* media_description,const char* name) { belle_sdp_base_description_remove_attribute(BELLE_SIP_CAST(media_description,belle_sdp_base_description_t),name); } void belle_sdp_media_description_remove_bandwidth(belle_sdp_media_description_t* media_description,const char* name) { belle_sdp_base_description_remove_bandwidth(BELLE_SIP_CAST(media_description,belle_sdp_base_description_t),name); } void belle_sdp_media_description_set_attribute_value(belle_sdp_media_description_t* media_description, const char* name, const char* value) { belle_sdp_base_description_set_attribute_value(BELLE_SIP_CAST(media_description,belle_sdp_base_description_t),name,value); } void belle_sdp_media_description_set_attributes(belle_sdp_media_description_t* media_description, belle_sip_list_t* value) { belle_sdp_base_description_set_attributes(BELLE_SIP_CAST(media_description,belle_sdp_base_description_t),value); } void belle_sdp_media_description_add_attribute(belle_sdp_media_description_t* media_description, belle_sdp_attribute_t* attribute) { belle_sdp_base_description_add_attribute(BELLE_SIP_CAST(media_description,belle_sdp_base_description_t),attribute); } void belle_sdp_media_description_set_bandwidth(belle_sdp_media_description_t* media_description, const char* type, int value) { belle_sdp_base_description_set_bandwidth(BELLE_SIP_CAST(media_description,belle_sdp_base_description_t),type,value); } void belle_sdp_media_description_add_bandwidth(belle_sdp_media_description_t* media_description, belle_sdp_bandwidth_t* bandwidth) { belle_sdp_base_description_add_bandwidth(BELLE_SIP_CAST(media_description,belle_sdp_base_description_t),bandwidth); } void belle_sdp_media_description_set_bandwidths(belle_sdp_media_description_t* media_description, belle_sip_list_t* bandwidths) { belle_sdp_base_description_set_bandwidths(BELLE_SIP_CAST(media_description,belle_sdp_base_description_t),bandwidths); } #define SET_OBJECT(object,param,param_type) \ param_type** current = &object->param; \ if (param) belle_sip_object_ref(param); \ if (*current) { \ belle_sip_object_unref(BELLE_SIP_OBJECT(*current)); \ } \ *current=param; \ void belle_sdp_media_description_set_connection(belle_sdp_media_description_t* media_description, belle_sdp_connection_t* connection) { SET_OBJECT(BELLE_SIP_CAST(media_description,belle_sdp_base_description_t),connection,belle_sdp_connection_t) } void belle_sdp_media_description_set_info(belle_sdp_media_description_t* media_description,belle_sdp_info_t* info) { SET_OBJECT(BELLE_SIP_CAST(media_description,belle_sdp_base_description_t),info,belle_sdp_info_t) } void belle_sdp_media_description_set_media(belle_sdp_media_description_t* media_description, belle_sdp_media_t* media) { SET_OBJECT(media_description,media,belle_sdp_media_t) } /************************ * origin ***********************/ struct _belle_sdp_origin { belle_sip_object_t base; const char* address; const char* address_type; const char* network_type; const char* username; unsigned int session_id; unsigned int session_version; }; void belle_sdp_origin_destroy(belle_sdp_origin_t* origin) { DESTROY_STRING(origin,address) DESTROY_STRING(origin,address_type) DESTROY_STRING(origin,network_type) DESTROY_STRING(origin,username) } void belle_sdp_origin_clone(belle_sdp_origin_t *origin, const belle_sdp_origin_t *orig){ CLONE_STRING(belle_sdp_origin,username,origin,orig); CLONE_STRING(belle_sdp_origin,address,origin,orig); CLONE_STRING(belle_sdp_origin,address_type,origin,orig); CLONE_STRING(belle_sdp_origin,network_type,origin,orig); origin->session_id = orig->session_id; origin->session_version = orig->session_version; } belle_sip_error_code belle_sdp_origin_marshal(belle_sdp_origin_t* origin, char* buff, size_t buff_size, size_t *offset) { return belle_sip_snprintf( buff ,buff_size ,offset ,"o=%s %u %u %s %s %s" ,origin->username ,origin->session_id ,origin->session_version ,origin->network_type ,origin->address_type ,origin->address); } BELLE_SDP_NEW(origin,belle_sip_object) belle_sdp_origin_t* belle_sdp_origin_create(const char* user_name , unsigned int session_id , unsigned int session_version , const char* network_type , const char* addr_type , const char* address) { belle_sdp_origin_t* origin=belle_sdp_origin_new(); belle_sdp_origin_set_username(origin,user_name); belle_sdp_origin_set_session_id(origin,session_id); belle_sdp_origin_set_session_version(origin,session_version); belle_sdp_origin_set_network_type(origin,network_type); belle_sdp_origin_set_address_type(origin,addr_type); belle_sdp_origin_set_address(origin,address); return origin; } BELLE_SDP_PARSE(origin) GET_SET_STRING(belle_sdp_origin,username); GET_SET_STRING(belle_sdp_origin,address); GET_SET_STRING(belle_sdp_origin,address_type); GET_SET_STRING(belle_sdp_origin,network_type); GET_SET_INT(belle_sdp_origin,session_id,unsigned int); GET_SET_INT(belle_sdp_origin,session_version,unsigned int); /************************ * session_name ***********************/ struct _belle_sdp_session_name { belle_sip_object_t base; const char* value; }; void belle_sdp_session_name_destroy(belle_sdp_session_name_t* session_name) { DESTROY_STRING(session_name,value) } void belle_sdp_session_name_clone(belle_sdp_session_name_t *session_name, const belle_sdp_session_name_t *orig){ CLONE_STRING(belle_sdp_session_name,value,session_name,orig); } belle_sip_error_code belle_sdp_session_name_marshal(belle_sdp_session_name_t* session_name, char* buff, size_t buff_size, size_t *offset) { return belle_sip_snprintf(buff,buff_size,offset,"s=%s",session_name->value); } BELLE_SDP_NEW(session_name,belle_sip_object) belle_sdp_session_name_t* belle_sdp_session_name_create (const char* name) { belle_sdp_session_name_t* n=belle_sdp_session_name_new(); belle_sdp_session_name_set_value(n,name); return n; } GET_SET_STRING(belle_sdp_session_name,value); /************************ * session_description ***********************/ struct _belle_sdp_session_description { belle_sdp_base_description_t base_description; belle_sdp_version_t* version; belle_sip_list_t* emails; belle_sdp_origin_t* origin; belle_sdp_session_name_t* session_name; belle_sip_list_t* phones; belle_sip_list_t* times; belle_sdp_uri_t* uri; belle_sdp_uri_t* zone_adjustments; belle_sip_list_t* media_descriptions; }; void belle_sdp_session_description_destroy(belle_sdp_session_description_t* session_description) { if (session_description->version) belle_sip_object_unref(BELLE_SIP_OBJECT(session_description->version)); belle_sip_list_free_with_data(session_description->emails,belle_sip_object_freefunc); if (session_description->origin) belle_sip_object_unref(BELLE_SIP_OBJECT(session_description->origin)); if (session_description->session_name) belle_sip_object_unref(BELLE_SIP_OBJECT(session_description->session_name)); belle_sip_list_free_with_data(session_description->phones,belle_sip_object_freefunc); belle_sip_list_free_with_data(session_description->times,belle_sip_object_freefunc); if (session_description->uri) belle_sip_object_unref(BELLE_SIP_OBJECT(session_description->uri)); if (session_description->zone_adjustments) belle_sip_object_unref(BELLE_SIP_OBJECT(session_description->zone_adjustments)); belle_sip_list_free_with_data(session_description->media_descriptions,belle_sip_object_freefunc); } void belle_sdp_session_description_clone(belle_sdp_session_description_t *session_description, const belle_sdp_session_description_t *orig){ if (orig->version) session_description->version = BELLE_SDP_VERSION(belle_sip_object_clone_and_ref(BELLE_SIP_OBJECT(orig->version))); session_description->emails = belle_sip_list_copy_with_data(orig->emails,belle_sip_object_copyfunc); if (orig->origin) session_description->origin = BELLE_SDP_ORIGIN(belle_sip_object_clone_and_ref(BELLE_SIP_OBJECT(orig->origin))); if (orig->session_name) session_description->session_name = BELLE_SDP_SESSION_NAME(belle_sip_object_clone_and_ref(BELLE_SIP_OBJECT(orig->session_name))); session_description->phones = belle_sip_list_copy_with_data(orig->phones,belle_sip_object_copyfunc); session_description->times = belle_sip_list_copy_with_data(orig->times,belle_sip_object_copyfunc); if (orig->uri) session_description->uri = BELLE_SDP_URI(belle_sip_object_clone_and_ref(BELLE_SIP_OBJECT(orig->uri))); if (orig->zone_adjustments) session_description->zone_adjustments = BELLE_SDP_URI(belle_sip_object_clone_and_ref(BELLE_SIP_OBJECT(orig->zone_adjustments))); session_description->media_descriptions = belle_sip_list_copy_with_data(orig->media_descriptions,belle_sip_object_copyfunc); } belle_sip_error_code belle_sdp_session_description_marshal(belle_sdp_session_description_t* session_description, char* buff, size_t buff_size, size_t *offset) { belle_sip_error_code error = BELLE_SIP_OK; belle_sip_list_t* media_descriptions; belle_sip_list_t* times; belle_sip_list_t* attributes; if (session_description->version) { error = belle_sip_object_marshal(BELLE_SIP_OBJECT(session_description->version), buff, buff_size, offset); if (error != BELLE_SIP_OK) return error; error = belle_sip_snprintf(buff, buff_size, offset, "\r\n"); if (error != BELLE_SIP_OK) return error; } if (session_description->origin) { error = belle_sip_object_marshal(BELLE_SIP_OBJECT(session_description->origin), buff, buff_size, offset); if (error != BELLE_SIP_OK) return error; error = belle_sip_snprintf(buff, buff_size, offset, "\r\n"); if (error != BELLE_SIP_OK) return error; } if (session_description->session_name) { error = belle_sip_object_marshal(BELLE_SIP_OBJECT(session_description->session_name), buff, buff_size, offset); if (error != BELLE_SIP_OK) return error; error = belle_sip_snprintf(buff, buff_size, offset, "\r\n"); if (error != BELLE_SIP_OK) return error; } error = belle_sdp_base_description_marshal((belle_sdp_base_description_t*)(&session_description->base_description),buff,buff_size, offset); if (error != BELLE_SIP_OK) return error; error = belle_sip_snprintf(buff, buff_size, offset, "t="); if (error != BELLE_SIP_OK) return error; for (times=session_description->times;times != NULL;times=times->next){ error = belle_sip_object_marshal(BELLE_SIP_OBJECT(times->data), buff, buff_size, offset); if (error != BELLE_SIP_OK) return error; error = belle_sip_snprintf(buff, buff_size, offset, "\r\n"); if (error != BELLE_SIP_OK) return error; } for (attributes=session_description->base_description.attributes;attributes != NULL;attributes=attributes->next){ error = belle_sip_object_marshal(BELLE_SIP_OBJECT(attributes->data), buff, buff_size, offset); if (error != BELLE_SIP_OK) return error; error = belle_sip_snprintf(buff, buff_size, offset, "\r\n"); if (error != BELLE_SIP_OK) return error; } for (media_descriptions=session_description->media_descriptions;media_descriptions != NULL;media_descriptions=media_descriptions->next){ error = belle_sip_object_marshal(BELLE_SIP_OBJECT(media_descriptions->data), buff, buff_size, offset); if (error != BELLE_SIP_OK) return error; } return error; } BELLE_SDP_NEW(session_description,belle_sdp_base_description) BELLE_SDP_PARSE(session_description) belle_sip_list_t * belle_sdp_session_description_get_attributes(const belle_sdp_session_description_t *session_description) { return belle_sdp_base_description_get_attributes(BELLE_SIP_CAST(session_description, belle_sdp_base_description_t)); } belle_sip_list_t * belle_sdp_session_description_find_attributes_with_name(const belle_sdp_session_description_t *session_description, const char* name) { return belle_sdp_base_description_find_attributes_with_name(BELLE_SIP_CAST(session_description, belle_sdp_base_description_t), name); } const char* belle_sdp_session_description_get_attribute_value(const belle_sdp_session_description_t* session_description, const char* name) { return belle_sdp_base_description_get_attribute_value(BELLE_SIP_CAST(session_description,belle_sdp_base_description_t),name); } const belle_sdp_attribute_t* belle_sdp_session_description_get_attribute(const belle_sdp_session_description_t* session_description, const char* name) { return belle_sdp_base_description_get_attribute(BELLE_SIP_CAST(session_description,belle_sdp_base_description_t),name); } int belle_sdp_session_description_get_bandwidth(const belle_sdp_session_description_t* session_description, const char* name) { return belle_sdp_base_description_get_bandwidth_value(BELLE_SIP_CAST(session_description,belle_sdp_base_description_t),name); } belle_sip_list_t* belle_sdp_session_description_get_bandwidths(const belle_sdp_session_description_t* session_description) { return BELLE_SIP_CAST(session_description,belle_sdp_base_description_t)->bandwidths; } belle_sdp_connection_t* belle_sdp_session_description_get_connection(const belle_sdp_session_description_t* session_description) { return BELLE_SIP_CAST(session_description,belle_sdp_base_description_t)->connection; } belle_sip_list_t* belle_sdp_session_description_get_emails(const belle_sdp_session_description_t* session_description){ return session_description->emails; } belle_sdp_info_t* belle_sdp_session_description_get_info(const belle_sdp_session_description_t* session_description) { return BELLE_SIP_CAST(session_description,belle_sdp_base_description_t)->info; } belle_sip_list_t* belle_sdp_session_description_get_media_descriptions(const belle_sdp_session_description_t* session_description) { return session_description->media_descriptions; } belle_sdp_origin_t* belle_sdp_session_description_get_origin(const belle_sdp_session_description_t* session_description){ return session_description->origin; } belle_sip_list_t* belle_sdp_session_description_get_phones(const belle_sdp_session_description_t* session_description) { return session_description->phones; } belle_sdp_session_name_t* belle_sdp_session_description_get_session_name(const belle_sdp_session_description_t* session_description) { return session_description->session_name; } belle_sip_list_t* belle_sdp_session_description_get_time_descriptions(const belle_sdp_session_description_t* session_description) { return session_description->times; } belle_sdp_uri_t* belle_sdp_session_description_get_uri(const belle_sdp_session_description_t* session_description) { return session_description->uri; } belle_sdp_version_t* belle_sdp_session_description_get_version(const belle_sdp_session_description_t* session_description) { return session_description->version; } belle_sdp_uri_t* belle_sdp_session_description_get_zone_adjustments(const belle_sdp_session_description_t* session_description) { return session_description->zone_adjustments; } void belle_sdp_session_description_remove_attribute(belle_sdp_session_description_t* session_description, const char* name) { belle_sdp_base_description_remove_attribute(BELLE_SIP_CAST(session_description,belle_sdp_base_description_t),name); } void belle_sdp_session_description_remove_bandwidth(belle_sdp_session_description_t* session_description, const char* name) { belle_sdp_base_description_remove_bandwidth(BELLE_SIP_CAST(session_description,belle_sdp_base_description_t),name); } void belle_sdp_session_description_set_attribute_value(belle_sdp_session_description_t* session_description, const char* name, const char* value) { belle_sdp_base_description_set_attribute_value(BELLE_SIP_CAST(session_description,belle_sdp_base_description_t),name,value); } void belle_sdp_session_description_set_attributes(belle_sdp_session_description_t* session_description, belle_sip_list_t* attributes) { belle_sdp_base_description_set_attributes(BELLE_SIP_CAST(session_description,belle_sdp_base_description_t),attributes); } void belle_sdp_session_description_add_attribute(belle_sdp_session_description_t* session_description, belle_sdp_attribute_t* attribute) { belle_sdp_base_description_add_attribute(BELLE_SIP_CAST(session_description,belle_sdp_base_description_t),attribute); } void belle_sdp_session_description_set_bandwidth(belle_sdp_session_description_t* session_description, const char* type, int value) { belle_sdp_base_description_set_bandwidth(BELLE_SIP_CAST(session_description,belle_sdp_base_description_t),type,value); } void belle_sdp_session_description_set_bandwidths(belle_sdp_session_description_t* session_description, belle_sip_list_t* bandwidths) { belle_sdp_base_description_set_bandwidths(BELLE_SIP_CAST(session_description,belle_sdp_base_description_t),bandwidths); } void belle_sdp_session_description_add_bandwidth(belle_sdp_session_description_t* session_description, belle_sdp_bandwidth_t* bandwidth) { belle_sdp_base_description_add_bandwidth(BELLE_SIP_CAST(session_description,belle_sdp_base_description_t),bandwidth); } void belle_sdp_session_description_set_connection(belle_sdp_session_description_t* session_description, belle_sdp_connection_t* connection) { SET_OBJECT(BELLE_SIP_CAST(session_description,belle_sdp_base_description_t),connection,belle_sdp_connection_t) } void belle_sdp_session_description_set_emails(belle_sdp_session_description_t* session_description, belle_sip_list_t* emails) { SET_LIST(session_description->emails,emails) } void belle_sdp_session_description_set_info(belle_sdp_session_description_t* session_description, belle_sdp_info_t* info) { SET_OBJECT(BELLE_SIP_CAST(session_description,belle_sdp_base_description_t),info,belle_sdp_info_t) } void belle_sdp_session_description_set_media_descriptions(belle_sdp_session_description_t* session_description, belle_sip_list_t* media_descriptions) { SET_LIST(session_description->media_descriptions,media_descriptions) } void belle_sdp_session_description_add_media_description(belle_sdp_session_description_t* session_description, belle_sdp_media_description_t* media_description) { session_description->media_descriptions = belle_sip_list_append(session_description->media_descriptions,belle_sip_object_ref(media_description)); } void belle_sdp_session_description_set_origin(belle_sdp_session_description_t* session_description, belle_sdp_origin_t* origin) { SET_OBJECT(session_description,origin,belle_sdp_origin_t) } void belle_sdp_session_description_set_phones(belle_sdp_session_description_t* session_description, belle_sip_list_t* phones) { SET_LIST(session_description->phones,phones) } void belle_sdp_session_description_set_session_name(belle_sdp_session_description_t* session_description, belle_sdp_session_name_t* session_name) { SET_OBJECT(session_description,session_name,belle_sdp_session_name_t) } void belle_sdp_session_description_set_time_descriptions(belle_sdp_session_description_t* session_description, belle_sip_list_t* times) { SET_LIST(session_description->times,times) } void belle_sdp_session_description_set_time_description(belle_sdp_session_description_t* session_description, belle_sdp_time_description_t* time_desc) { belle_sdp_session_description_set_time_descriptions(session_description,belle_sip_list_new(time_desc)); } void belle_sdp_session_description_set_uri(belle_sdp_session_description_t* session_description, belle_sdp_uri_t* uri) { SET_OBJECT(session_description,uri,belle_sdp_uri_t) } void belle_sdp_session_description_set_version(belle_sdp_session_description_t* session_description, belle_sdp_version_t* version) { SET_OBJECT(session_description,version,belle_sdp_version_t) } void belle_sdp_session_description_set_zone_adjustments(belle_sdp_session_description_t* session_description, belle_sdp_uri_t* zone_adjustments) { SET_OBJECT(session_description,zone_adjustments,belle_sdp_uri_t) } void belle_sdp_session_description_add_attribute_holder(belle_sdp_session_description_t* session_description, belle_sdp_attribute_holder_t *holder) { belle_sdp_base_description_add_attribute(BELLE_SIP_CAST(session_description,belle_sdp_base_description_t), holder->attribute); belle_sip_free(holder); } /************************ * time ***********************/ struct _belle_sdp_time { belle_sip_object_t base; long long start; long long stop; }; void belle_sdp_time_destroy(belle_sdp_time_t* time) { } void belle_sdp_time_clone(belle_sdp_time_t *time, const belle_sdp_time_t *orig){ time->start=orig->start; time->stop=orig->stop; } belle_sip_error_code belle_sdp_time_marshal(belle_sdp_time_t* time, char* buff, size_t buff_size, size_t *offset) { return belle_sip_snprintf(buff,buff_size,offset,"%lld %lld",time->start,time->stop); } BELLE_SDP_NEW(time,belle_sip_object) GET_SET_INT(belle_sdp_time,start,long long); GET_SET_INT(belle_sdp_time,stop,long long); /************************ * time description ***********************/ struct _belle_sdp_time_description { belle_sip_object_t base; belle_sdp_time_t* time; }; void belle_sdp_time_description_destroy(belle_sdp_time_description_t* time_description) { if (time_description->time) belle_sip_object_unref(BELLE_SIP_OBJECT(time_description->time)); } void belle_sdp_time_description_clone(belle_sdp_time_description_t *time_description, const belle_sdp_time_description_t *orig){ if (orig->time) time_description->time = BELLE_SDP_TIME(belle_sip_object_clone_and_ref(BELLE_SIP_OBJECT(orig->time))); } belle_sip_error_code belle_sdp_time_description_marshal(belle_sdp_time_description_t* time_description, char* buff, size_t buff_size, size_t *offset) { return belle_sip_object_marshal(BELLE_SIP_OBJECT(time_description->time), buff, buff_size, offset); } BELLE_SDP_NEW(time_description,belle_sip_object) belle_sdp_time_description_t* belle_sdp_time_description_create (long long start,long long stop) { belle_sdp_time_description_t* time_desc= belle_sdp_time_description_new(); belle_sdp_time_t* time = belle_sdp_time_new(); belle_sdp_time_set_start(time,start); belle_sdp_time_set_stop(time,stop); belle_sdp_time_description_set_time(time_desc,time); return time_desc; } belle_sip_list_t* belle_sdp_time_description_get_repeate_times(const belle_sdp_time_description_t* time_description) { return NULL; } belle_sdp_time_t* belle_sdp_time_description_get_time(const belle_sdp_time_description_t* time_description) { return time_description->time; } void belle_sdp_time_description_set_repeate_times(belle_sdp_time_description_t* time_description, belle_sip_list_t* times) { belle_sip_error("time description repeat time not implemented"); } void belle_sdp_time_description_set_time(belle_sdp_time_description_t* time_description, belle_sdp_time_t* time) { SET_OBJECT(time_description,time,belle_sdp_time_t) } /************************ * version ***********************/ struct _belle_sdp_version { belle_sip_object_t base; int version; }; void belle_sdp_version_destroy(belle_sdp_version_t* version) { } void belle_sdp_version_clone(belle_sdp_version_t *version, const belle_sdp_version_t *orig){ version->version = orig->version; } belle_sip_error_code belle_sdp_version_marshal(belle_sdp_version_t* version, char* buff, size_t buff_size, size_t *offset) { return belle_sip_snprintf(buff,buff_size,offset,"v=%i",version->version); } BELLE_SDP_NEW(version,belle_sip_object) belle_sdp_version_t* belle_sdp_version_create(int version) { belle_sdp_version_t* v = belle_sdp_version_new(); belle_sdp_version_set_version(v,version); return v; } GET_SET_INT(belle_sdp_version,version,int); /*************************************************************************************** * mime_parameter * **************************************************************************************/ static void belle_sdp_mime_parameter_destroy(belle_sdp_mime_parameter_t *mime_parameter) { if (mime_parameter->type) belle_sip_free((void*)mime_parameter->type); if (mime_parameter->parameters) belle_sip_free((void*)mime_parameter->parameters); } static void belle_sdp_mime_parameter_clone(belle_sdp_mime_parameter_t *mime_parameter,belle_sdp_mime_parameter_t *orig) { mime_parameter->rate = orig->rate; mime_parameter->channel_count = orig->channel_count; mime_parameter->ptime = orig->ptime; mime_parameter->max_ptime = orig->max_ptime; mime_parameter->media_format = orig->media_format; CLONE_STRING(belle_sdp_mime_parameter,type,mime_parameter,orig); CLONE_STRING(belle_sdp_mime_parameter,parameters,mime_parameter,orig); } BELLE_SIP_DECLARE_NO_IMPLEMENTED_INTERFACES(belle_sdp_mime_parameter_t); BELLE_SIP_INSTANCIATE_VPTR(belle_sdp_mime_parameter_t ,belle_sip_object_t ,belle_sdp_mime_parameter_destroy ,belle_sdp_mime_parameter_clone ,NULL ,TRUE); belle_sdp_mime_parameter_t* belle_sdp_mime_parameter_new() { belle_sdp_mime_parameter_t* l_param = belle_sip_object_new(belle_sdp_mime_parameter_t); l_param->ptime = -1; l_param->max_ptime = -1; return l_param; } belle_sdp_mime_parameter_t* belle_sdp_mime_parameter_create(const char* type, int media_format, int rate,int channel_count) { belle_sdp_mime_parameter_t* mime_param= belle_sdp_mime_parameter_new(); belle_sdp_mime_parameter_set_type(mime_param,type); belle_sdp_mime_parameter_set_media_format(mime_param,media_format); belle_sdp_mime_parameter_set_rate(mime_param,rate); belle_sdp_mime_parameter_set_channel_count(mime_param,channel_count); return mime_param; } GET_SET_INT(belle_sdp_mime_parameter,rate,int); GET_SET_INT(belle_sdp_mime_parameter,channel_count,int); GET_SET_INT(belle_sdp_mime_parameter,ptime,int); GET_SET_INT(belle_sdp_mime_parameter,max_ptime,int); GET_SET_INT(belle_sdp_mime_parameter,media_format,int); GET_SET_STRING(belle_sdp_mime_parameter,type); GET_SET_STRING(belle_sdp_mime_parameter,parameters); belle-sip-5.2.0+dfsg/src/belle_sip_dict.c000066400000000000000000000076251434613136500202250ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "belle-sip/dict.h" #include "belle-sip/object.h" #include "belle-sip/belle-sip.h" #include "belle_sip_internal.h" #define BELLE_SIP_DICT(obj) BELLE_SIP_CAST(obj,belle_sip_dict_t) static void belle_sip_dict_string_destroy( void* data ) { belle_sip_free(data); } static void* belle_sip_dict_string_clone( const char* str, void* data ) { (void)str; return belle_sip_strdup((const char*)data); } belle_sip_dict_t* belle_sip_dict_create() { return belle_sip_object_new(belle_sip_dict_t); } static void belle_sip_dict_destroy( belle_sip_dict_t* obj) { } void belle_sip_dict_set_int(belle_sip_dict_t* obj, const char* key, int value) { char tmp[30]; snprintf(tmp,sizeof(tmp),"%i",value); belle_sip_dict_set_string(obj, key, tmp); } int belle_sip_dict_get_int(belle_sip_dict_t* obj, const char* key, int default_value) { const char *str=belle_sip_object_data_get(BELLE_SIP_OBJECT(obj),key); if (str!=NULL) { int ret=0; if (strstr(str,"0x")==str){ sscanf(str,"%x",&ret); }else ret=atoi(str); return ret; } else return default_value; } void belle_sip_dict_set_string(belle_sip_dict_t* obj, const char*key, const char*value) { belle_sip_object_data_set( BELLE_SIP_OBJECT(obj), key, (void*)belle_sip_strdup(value), belle_sip_dict_string_destroy ); } const char* belle_sip_dict_get_string(belle_sip_dict_t* obj, const char* key, const char* default_value) { void* data = belle_sip_object_data_get( BELLE_SIP_OBJECT(obj), key ); if( data ) return (const char *)data; else return default_value; } void belle_sip_dict_set_int64(belle_sip_dict_t* obj, const char* key, int64_t value) { char tmp[30]; #if defined (_MSC_VER) snprintf(tmp,sizeof(tmp),"%I64d",value); #else snprintf(tmp,sizeof(tmp),"%" PRId64"",value); #endif belle_sip_dict_set_string(obj,key,tmp); } int64_t belle_sip_dict_get_int64(belle_sip_dict_t* obj, const char* key, int64_t default_value) { const char *str= belle_sip_object_data_get( BELLE_SIP_OBJECT(obj), key ); if (str!=NULL) { #ifdef _WIN32 return (int64_t)_atoi64(str); #else return atoll(str); #endif } else return default_value; } int belle_sip_dict_remove(belle_sip_dict_t* obj, const char*key) { return belle_sip_object_data_remove(BELLE_SIP_OBJECT(obj), key); } void belle_sip_dict_clone( const belle_sip_dict_t* src, belle_sip_dict_t* dst) { belle_sip_dict_clear(dst); belle_sip_dict_merge(src, dst); } void belle_sip_dict_merge( const belle_sip_dict_t* src, belle_sip_dict_t* dst) { belle_sip_object_data_merge(BELLE_SIP_OBJECT(src), BELLE_SIP_OBJECT(dst), belle_sip_dict_string_clone); } int belle_sip_dict_haskey(const belle_sip_dict_t* obj, const char* key) { return belle_sip_object_data_exists(BELLE_SIP_OBJECT(obj), key); } void belle_sip_dict_foreach(const belle_sip_dict_t* obj, void (*apply_func)(const char*, void*, void*), void* userdata) { belle_sip_object_data_foreach(BELLE_SIP_OBJECT(obj),apply_func, userdata); } void belle_sip_dict_clear(belle_sip_dict_t* obj) { belle_sip_object_data_clear(BELLE_SIP_OBJECT(obj)); } BELLE_SIP_DECLARE_NO_IMPLEMENTED_INTERFACES(belle_sip_dict_t); BELLE_SIP_INSTANCIATE_VPTR(belle_sip_dict_t, belle_sip_object_t, belle_sip_dict_destroy, NULL, NULL, TRUE); belle-sip-5.2.0+dfsg/src/belle_sip_headers_impl.c000066400000000000000000002722311434613136500217330ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "belle-sip/headers.h" #include "belle-sip/parameters.h" #include #include #include #include "grammars/belle_sip_messageLexer.h" #include "grammars/belle_sip_messageParser.h" #include "belle_sip_internal.h" #include "listeningpoint_internal.h" /************************ * header ***********************/ GET_SET_STRING(belle_sip_header,name); #define PROTO_SIP 0x1 #define PROTO_HTTP 0x1<<1 typedef belle_sip_header_t* (*header_parse_func)(const char*); struct header_name_func_pair { int protocol; const char* name; header_parse_func func; }; static struct header_name_func_pair header_table[] = { {PROTO_SIP, "m", (header_parse_func)belle_sip_header_contact_parse} ,{PROTO_SIP, BELLE_SIP_CONTACT, (header_parse_func)belle_sip_header_contact_parse} ,{PROTO_SIP, "f", (header_parse_func)belle_sip_header_from_parse} ,{PROTO_SIP, BELLE_SIP_FROM, (header_parse_func)belle_sip_header_from_parse} ,{PROTO_SIP, "t", (header_parse_func)belle_sip_header_to_parse} ,{PROTO_SIP, BELLE_SIP_TO, (header_parse_func)belle_sip_header_to_parse} ,{PROTO_SIP, "d", (header_parse_func)belle_sip_header_diversion_parse} ,{PROTO_SIP, BELLE_SIP_DIVERSION, (header_parse_func)belle_sip_header_diversion_parse} ,{PROTO_SIP, "i", (header_parse_func)belle_sip_header_call_id_parse} ,{PROTO_SIP, BELLE_SIP_CALL_ID, (header_parse_func)belle_sip_header_call_id_parse} ,{PROTO_SIP, "r", (header_parse_func)belle_sip_header_retry_after_parse} ,{PROTO_SIP, BELLE_SIP_RETRY_AFTER, (header_parse_func)belle_sip_header_retry_after_parse} ,{PROTO_SIP, "l", (header_parse_func)belle_sip_header_content_length_parse} ,{PROTO_SIP|PROTO_HTTP, BELLE_SIP_CONTENT_LENGTH, (header_parse_func)belle_sip_header_content_length_parse} ,{PROTO_SIP, "c", (header_parse_func)belle_sip_header_content_type_parse} ,{PROTO_SIP|PROTO_HTTP, BELLE_SIP_CONTENT_TYPE, (header_parse_func)belle_sip_header_content_type_parse} ,{PROTO_SIP, BELLE_SIP_CSEQ, (header_parse_func)belle_sip_header_cseq_parse} ,{PROTO_SIP, BELLE_SIP_ROUTE, (header_parse_func)belle_sip_header_route_parse} ,{PROTO_SIP, BELLE_SIP_RECORD_ROUTE, (header_parse_func)belle_sip_header_record_route_parse} ,{PROTO_SIP, "v", (header_parse_func)belle_sip_header_via_parse} ,{PROTO_SIP, BELLE_SIP_VIA, (header_parse_func)belle_sip_header_via_parse} ,{PROTO_SIP, "x", (header_parse_func)belle_sip_header_session_expires_parse} ,{PROTO_SIP, BELLE_SIP_SESSION_EXPIRES, (header_parse_func)belle_sip_header_session_expires_parse} ,{PROTO_SIP, BELLE_SIP_AUTHORIZATION, (header_parse_func)belle_sip_header_authorization_parse} ,{PROTO_SIP, BELLE_SIP_PROXY_AUTHORIZATION, (header_parse_func)belle_sip_header_proxy_authorization_parse} ,{PROTO_SIP|PROTO_HTTP, BELLE_SIP_WWW_AUTHENTICATE, (header_parse_func)belle_sip_header_www_authenticate_parse} ,{PROTO_SIP|PROTO_HTTP, BELLE_SIP_PROXY_AUTHENTICATE, (header_parse_func)belle_sip_header_proxy_authenticate_parse} ,{PROTO_SIP, BELLE_SIP_MAX_FORWARDS, (header_parse_func)belle_sip_header_max_forwards_parse} ,{PROTO_SIP|PROTO_HTTP, BELLE_SIP_USER_AGENT, (header_parse_func)belle_sip_header_user_agent_parse} ,{PROTO_SIP, BELLE_SIP_EXPIRES, (header_parse_func)belle_sip_header_expires_parse} ,{PROTO_SIP|PROTO_HTTP, BELLE_SIP_ALLOW, (header_parse_func)belle_sip_header_allow_parse} ,{PROTO_SIP, BELLE_SIP_SUBSCRIPTION_STATE, (header_parse_func)belle_sip_header_subscription_state_parse} ,{PROTO_SIP, BELLE_SIP_SERVICE_ROUTE, (header_parse_func)belle_sip_header_service_route_parse} ,{PROTO_SIP, BELLE_SIP_REFER_TO, (header_parse_func)belle_sip_header_refer_to_parse} ,{PROTO_SIP, BELLE_SIP_REFERRED_BY, (header_parse_func)belle_sip_header_referred_by_parse} ,{PROTO_SIP, BELLE_SIP_REPLACES, (header_parse_func)belle_sip_header_replaces_parse} ,{PROTO_SIP, BELLE_SIP_DATE, (header_parse_func)belle_sip_header_date_parse} ,{PROTO_SIP, BELLE_SIP_P_PREFERRED_IDENTITY, (header_parse_func)belle_sip_header_p_preferred_identity_parse} ,{PROTO_SIP, BELLE_SIP_PRIVACY, (header_parse_func)belle_sip_header_privacy_parse} ,{PROTO_SIP, BELLE_SIP_EVENT, (header_parse_func)belle_sip_header_event_parse} ,{PROTO_SIP, "o", (header_parse_func)belle_sip_header_event_parse} ,{PROTO_SIP, BELLE_SIP_SUPPORTED, (header_parse_func)belle_sip_header_supported_parse} ,{PROTO_SIP, "k", (header_parse_func)belle_sip_header_supported_parse} ,{PROTO_SIP, BELLE_SIP_REQUIRE, (header_parse_func)belle_sip_header_require_parse} ,{PROTO_SIP, BELLE_SIP_CONTENT_DISPOSITION, (header_parse_func)belle_sip_header_content_disposition_parse} ,{PROTO_SIP, BELLE_SIP_ACCEPT, (header_parse_func)belle_sip_header_accept_parse} ,{PROTO_SIP, BELLE_SIP_REASON, (header_parse_func)belle_sip_header_reason_parse} ,{PROTO_SIP, BELLE_SIP_AUTHENTICATION_INFO, (header_parse_func)belle_sip_header_authentication_info_parse} }; static belle_sip_header_t* belle_header_create(const char* name,const char* value,int protocol) { size_t i; belle_sip_header_t* ret; size_t elements =sizeof(header_table)/sizeof(struct header_name_func_pair); if (!name || name[0]=='\0') { belle_sip_error("Cannot create header without name"); return NULL; } for(i=0;iname) belle_sip_free(header->name); if (header->unparsed_value) belle_sip_free(header->unparsed_value); if (header->next) belle_sip_object_unref(BELLE_SIP_OBJECT(header->next)); } void belle_sip_header_set_next(belle_sip_header_t* header,belle_sip_header_t* next) { if (next) belle_sip_object_ref(next); if (header->next) belle_sip_object_unref(header->next); header->next = next; } belle_sip_header_t* belle_sip_header_get_next(const belle_sip_header_t* header) { return header->next; } const char *belle_sip_header_get_unparsed_value(belle_sip_header_t* obj) { if (BELLE_SIP_OBJECT_IS_INSTANCE_OF(obj,belle_sip_header_extension_t)) { return belle_sip_header_extension_get_value(BELLE_SIP_HEADER_EXTENSION(obj)); } else { char *tmp=belle_sip_object_to_string(obj); char *ret; char *end; if (obj->unparsed_value) { belle_sip_free(obj->unparsed_value); obj->unparsed_value=NULL; } obj->unparsed_value=tmp; ret=tmp; ret+=strlen(obj->name)+1; /* name + semicolon*/ for(;*ret==' ';ret++) {};/*skip spaces*/ return ret; } } belle_sip_error_code belle_sip_header_marshal(belle_sip_header_t* header, char* buff, size_t buff_size, size_t *offset) { if (header->name) { return belle_sip_snprintf(buff,buff_size,offset,"%s: ",header->name); } else { belle_sip_warning("no header name found"); return BELLE_SIP_OK; } } BELLE_SIP_DECLARE_NO_IMPLEMENTED_INTERFACES(belle_sip_header_t); BELLE_SIP_INSTANCIATE_VPTR(belle_sip_header_t,belle_sip_object_t,belle_sip_header_destroy,belle_sip_header_clone,belle_sip_header_marshal,TRUE); BELLE_SIP_PARSE(header) /************************ * header_address ***********************/ struct _belle_sip_header_address { belle_sip_parameters_t base; char* displayname; belle_sip_uri_t* uri; belle_generic_uri_t* absolute_uri; unsigned char automatic; }; static void belle_sip_header_address_init(belle_sip_header_address_t* object) { belle_sip_parameters_init((belle_sip_parameters_t*)object); /*super*/ } static void belle_sip_header_address_destroy(belle_sip_header_address_t* address) { if (address->displayname) belle_sip_free(address->displayname); if (address->uri) belle_sip_object_unref(address->uri); if (address->absolute_uri) belle_sip_object_unref(address->absolute_uri); } static void _belle_sip_header_address_clone(belle_sip_header_address_t *addr, const belle_sip_header_address_t *orig) { CLONE_STRING(belle_sip_header_address,displayname,addr,orig) if (belle_sip_header_address_get_uri(orig)) { belle_sip_header_address_set_uri(addr,BELLE_SIP_URI(belle_sip_object_clone(BELLE_SIP_OBJECT(belle_sip_header_address_get_uri(orig))))); } if (belle_sip_header_address_get_absolute_uri(orig)) { belle_sip_header_address_set_absolute_uri(addr,BELLE_GENERIC_URI(belle_sip_object_clone(BELLE_SIP_OBJECT(belle_sip_header_address_get_absolute_uri(orig))))); } if (belle_sip_header_address_get_automatic(orig)) { belle_sip_header_address_set_automatic(addr,belle_sip_header_address_get_automatic(orig)); } belle_sip_parameters_copy_parameters_from(&addr->base, &orig->base); } belle_sip_header_address_t* belle_sip_header_address_clone(const belle_sip_header_address_t* orig) { belle_sip_header_address_t* new_address = belle_sip_header_address_new(); _belle_sip_header_address_clone(new_address, orig); return new_address; } static belle_sip_error_code _belle_sip_header_address_marshal(belle_sip_header_address_t* header, char* buff, size_t buff_size, size_t *offset, int force_angle_quote) { belle_sip_error_code error=BELLE_SIP_OK; /*1 display name*/ if (header->displayname) { char* escaped_display_name = belle_sip_display_name_to_backslashed_escaped_string(header->displayname); error=belle_sip_snprintf(buff,buff_size,offset,"\"%s\" ",escaped_display_name); belle_sip_free(escaped_display_name); if (error!=BELLE_SIP_OK) return error; } if (header->uri || header->absolute_uri) { /*cases where < is required*/ if (force_angle_quote || header->displayname || header->absolute_uri || belle_sip_parameters_get_parameter_names((belle_sip_parameters_t*)header->uri) || belle_sip_uri_get_header_names(header->uri) || belle_sip_parameters_get_parameter_names(&header->base)) { error=belle_sip_snprintf(buff,buff_size,offset,"%s","<"); if (error!=BELLE_SIP_OK) return error; } if (header->uri) { error=belle_sip_uri_marshal(header->uri,buff,buff_size,offset); } else { error=belle_generic_uri_marshal(header->absolute_uri,buff,buff_size,offset); } if (error!=BELLE_SIP_OK) return error; if (force_angle_quote || header->displayname || header->absolute_uri || belle_sip_parameters_get_parameter_names((belle_sip_parameters_t*)header->uri) || belle_sip_uri_get_header_names(header->uri) || belle_sip_parameters_get_parameter_names(&header->base)) { error=belle_sip_snprintf(buff,buff_size,offset,"%s",">"); if (error!=BELLE_SIP_OK) return error; } } error=belle_sip_parameters_marshal(&header->base,buff,buff_size,offset); if (error!=BELLE_SIP_OK) return error; return error; } belle_sip_error_code belle_sip_header_address_marshal(belle_sip_header_address_t* header, char* buff, size_t buff_size, size_t *offset) { return _belle_sip_header_address_marshal(header, buff, buff_size, offset, FALSE); } #define belle_sip_header_address_clone _belle_sip_header_address_clone /*because public clone function is not the one to be used internally*/ BELLE_SIP_NEW_HEADER(header_address,parameters,"header_address") BELLE_SIP_PARSE(header_address) GET_SET_STRING(belle_sip_header_address,displayname); void belle_sip_header_address_set_quoted_displayname(belle_sip_header_address_t* address,const char* value) { if (address->displayname != NULL) belle_sip_free(address->displayname); if (strlen(value)>2) address->displayname=_belle_sip_str_dup_and_unquote_string(value); else address->displayname=NULL; } belle_sip_uri_t* belle_sip_header_address_get_uri(const belle_sip_header_address_t* address) { return address->uri; } void belle_sip_header_address_set_uri(belle_sip_header_address_t* address, belle_sip_uri_t* uri) { if (uri) belle_sip_object_ref(uri); if (address->uri) { belle_sip_object_unref(address->uri); } address->uri=uri; if (address->absolute_uri && uri) { belle_sip_warning("sip absolute uri [%p] already set for header_address [%p], cleaning it",address->absolute_uri, address); belle_sip_header_address_set_absolute_uri(address,NULL); } } void belle_sip_header_address_set_automatic(belle_sip_header_address_t *address, int automatic) { address->automatic = (unsigned char)automatic; } int belle_sip_header_address_get_automatic(const belle_sip_header_address_t *address) { return address->automatic; } belle_generic_uri_t* belle_sip_header_address_get_absolute_uri(const belle_sip_header_address_t* address) { return address->absolute_uri; } void belle_sip_header_address_set_absolute_uri(belle_sip_header_address_t* address, belle_generic_uri_t* absolute_uri) { belle_sip_object_ref(absolute_uri); if (address->absolute_uri) { belle_sip_object_unref(address->absolute_uri); } address->absolute_uri=absolute_uri; if (address->uri && absolute_uri) { belle_sip_warning("sip uri [%p] already set for header_address [%p], cleaning it",address->uri, address); belle_sip_header_address_set_uri(address,NULL); } } belle_sip_header_address_t* belle_sip_header_address_create(const char* display, belle_sip_uri_t* uri) { belle_sip_header_address_t* address = belle_sip_header_address_new(); belle_sip_header_address_set_displayname(address,display); belle_sip_header_address_set_uri(address,uri); return address; } belle_sip_header_address_t* belle_sip_header_address_create2(const char* display, belle_generic_uri_t* uri) { belle_sip_header_address_t* address = belle_sip_header_address_new(); belle_sip_header_address_set_displayname(address,display); belle_sip_header_address_set_absolute_uri(address,uri); return address; } int belle_sip_header_address_equals(const belle_sip_header_address_t* addr_a, const belle_sip_header_address_t* addr_b) { // Addresses are not identical if either is NULL if (!addr_a | !addr_b) return -1; belle_sip_uri_t* uri_a = belle_sip_header_address_get_uri(addr_a); belle_sip_uri_t* uri_b = belle_sip_header_address_get_uri(addr_b); // URIs are not identical if either is NULL if (!uri_a | !uri_b) return -1; const bool_t uri_equal = (belle_sip_uri_equals(uri_a, uri_b) != 0); const char* displayname_a = belle_sip_header_address_get_displayname(addr_a); const char* displayname_b = belle_sip_header_address_get_displayname(addr_b); bool_t displayname_equal = FALSE; if (displayname_a && displayname_b) { displayname_equal = (strcmp(displayname_a, displayname_b) == 0); } else if (!displayname_a & !displayname_b) { displayname_equal = TRUE; } return ((uri_equal && displayname_equal) ? 0 : -1); } /*fast header address implemenation*/ typedef belle_sip_header_address_t belle_sip_fast_header_address_t; #define belle_sip_fast_header_address_parse belle_sip_header_address_fast_parse BELLE_SIP_PARSE(fast_header_address) /****************************** * Extension header inherits from header * ******************************/ struct _belle_sip_header_allow { belle_sip_header_t header; const char* method; }; static void belle_sip_header_allow_clone(belle_sip_header_allow_t *allow, const belle_sip_header_allow_t *orig) { CLONE_STRING(belle_sip_header_allow,method,allow,orig) } static void belle_sip_header_allow_destroy(belle_sip_header_allow_t* allow) { if (allow->method) belle_sip_free((void*)allow->method); } belle_sip_error_code belle_sip_header_allow_marshal(belle_sip_header_allow_t* allow, char* buff, size_t buff_size, size_t *offset) { belle_sip_error_code error=belle_sip_header_marshal(BELLE_SIP_HEADER(allow), buff, buff_size, offset); if (error!=BELLE_SIP_OK) return error; error=belle_sip_snprintf(buff,buff_size,offset,"%s",allow->method); if (error!=BELLE_SIP_OK) return error; return error; } BELLE_SIP_NEW_HEADER(header_allow,header,"Allow") BELLE_SIP_PARSE(header_allow) belle_sip_header_allow_t* belle_sip_header_allow_create (const char* methods) { belle_sip_header_allow_t* allow = belle_sip_header_allow_new(); belle_sip_header_allow_set_method(allow,methods); return allow; } GET_SET_STRING(belle_sip_header_allow,method); /************************ * header_contact ***********************/ struct _belle_sip_header_contact { belle_sip_header_address_t address; unsigned char wildcard; unsigned char unknown; unsigned char pad[2]; }; void belle_sip_header_contact_destroy(belle_sip_header_contact_t* contact) { } void belle_sip_header_contact_clone(belle_sip_header_contact_t *contact, const belle_sip_header_contact_t *orig) { contact->wildcard=orig->wildcard; } belle_sip_error_code belle_sip_header_contact_marshal(belle_sip_header_contact_t* contact, char* buff, size_t buff_size, size_t *offset) { belle_sip_error_code error=belle_sip_header_marshal(BELLE_SIP_HEADER(contact), buff, buff_size, offset); if (error!=BELLE_SIP_OK) return error; if (contact->wildcard) { error=belle_sip_snprintf(buff,buff_size,offset,"%s","*"); } else { error=belle_sip_header_address_marshal(&contact->address, buff, buff_size, offset); } return error; } BELLE_SIP_NEW_HEADER(header_contact,header_address,BELLE_SIP_CONTACT) BELLE_SIP_PARSE(header_contact) belle_sip_header_contact_t* belle_sip_header_contact_create (const belle_sip_header_address_t* contact) { belle_sip_header_contact_t* header = belle_sip_header_contact_new(); _belle_sip_object_copy(BELLE_SIP_OBJECT(header),BELLE_SIP_OBJECT(contact)); belle_sip_header_set_next(BELLE_SIP_HEADER(header),NULL); /*make sure only one header is kept*/ belle_sip_header_set_name(BELLE_SIP_HEADER(header),BELLE_SIP_CONTACT); /*restaure header name*/ return header; } GET_SET_INT_PARAM_PRIVATE(belle_sip_header_contact,expires,int,_) GET_SET_INT_PARAM_PRIVATE(belle_sip_header_contact,q,float,_); GET_SET_BOOL(belle_sip_header_contact,wildcard,is); int belle_sip_header_contact_set_expires(belle_sip_header_contact_t* contact, int expires) { if (expires < 0 ) { belle_sip_error("bad expires value [%i] for contact",expires); return -1; } _belle_sip_header_contact_set_expires(contact,expires); return 0; } int belle_sip_header_contact_set_qvalue(belle_sip_header_contact_t* contact, float qValue) { if (qValue != -1 && qValue < 0 && qValue >1) { belle_sip_error("bad q value [%f] for contact",qValue); return -1; } _belle_sip_header_contact_set_q(contact,qValue); return 0; } float belle_sip_header_contact_get_qvalue(const belle_sip_header_contact_t* contact) { return belle_sip_header_contact_get_q(contact); } unsigned int belle_sip_header_contact_equals(const belle_sip_header_contact_t* a,const belle_sip_header_contact_t* b) { if (!a | !b) return 0; return belle_sip_uri_equals(belle_sip_header_address_get_uri(BELLE_SIP_HEADER_ADDRESS(a)) ,belle_sip_header_address_get_uri(BELLE_SIP_HEADER_ADDRESS(b))); } unsigned int belle_sip_header_contact_not_equals(const belle_sip_header_contact_t* a,const belle_sip_header_contact_t* b) { return !belle_sip_header_contact_equals(a,b); } unsigned int belle_sip_header_contact_equals_with_uri_omitting(const belle_sip_header_contact_t* a,const belle_sip_header_contact_t* b) { if (!a | !b) return 0; return belle_sip_uri_equals_with_uri_omitting(belle_sip_header_address_get_uri(BELLE_SIP_HEADER_ADDRESS(a)) ,belle_sip_header_address_get_uri(BELLE_SIP_HEADER_ADDRESS(b))); } unsigned int belle_sip_header_contact_not_equals_with_uri_omitting(const belle_sip_header_contact_t* a,const belle_sip_header_contact_t* b) { return !belle_sip_header_contact_equals_with_uri_omitting(a,b); } void belle_sip_header_contact_set_automatic(belle_sip_header_contact_t *a, int enabled) { belle_sip_header_address_set_automatic((belle_sip_header_address_t*)a, enabled); } int belle_sip_header_contact_get_automatic(const belle_sip_header_contact_t *a) { return belle_sip_header_address_get_automatic((belle_sip_header_address_t*)a); } void belle_sip_header_contact_set_unknown(belle_sip_header_contact_t *a, int value) { a->unknown=value; } int belle_sip_header_contact_is_unknown(const belle_sip_header_contact_t *a) { return a->unknown; } /************************** * From header object inherit from header_address ***************************/ #define BELLE_SIP_FROM_LIKE_MARSHAL(header,force_angle_quote) \ belle_sip_error_code error=belle_sip_header_marshal(BELLE_SIP_HEADER(header), buff, buff_size, offset);\ if (error!=BELLE_SIP_OK) return error;\ error=_belle_sip_header_address_marshal(&header->address, buff, buff_size, offset, force_angle_quote); \ if (error!=BELLE_SIP_OK) return error;\ return error; struct _belle_sip_header_from { belle_sip_header_address_t address; }; static void belle_sip_header_from_destroy(belle_sip_header_from_t* from) { } static void belle_sip_header_from_clone(belle_sip_header_from_t* from, const belle_sip_header_from_t* cloned) { } belle_sip_error_code belle_sip_header_from_marshal(belle_sip_header_from_t* from, char* buff, size_t buff_size, size_t *offset) { BELLE_SIP_FROM_LIKE_MARSHAL(from,FALSE); } belle_sip_header_from_t* belle_sip_header_from_create2(const char *uri, const char *tag) { belle_sip_header_address_t* address = belle_sip_header_address_parse(uri); if (address) { belle_sip_header_from_t* from = belle_sip_header_from_create(address,tag); belle_sip_object_unref(address); return from; } else return NULL; } belle_sip_header_from_t* belle_sip_header_from_create(const belle_sip_header_address_t* address, const char *tag) { belle_sip_header_from_t* header= belle_sip_header_from_new(); belle_sip_uri_t* uri; _belle_sip_object_copy((belle_sip_object_t*)header,(belle_sip_object_t*)address); /*clear unwanted uri components*/ if ((uri=belle_sip_header_address_get_uri(BELLE_SIP_HEADER_ADDRESS(header)))) { belle_sip_parameters_t* params=BELLE_SIP_PARAMETERS(uri); belle_sip_parameters_remove_parameter(params,"lr"); belle_sip_parameters_remove_parameter(params,"ttl"); belle_sip_parameters_remove_parameter(params,"method"); belle_sip_parameters_remove_parameter(params,"maddr"); belle_sip_parameters_remove_parameter(params,"transport"); belle_sip_uri_set_port(uri,0); belle_sip_uri_headers_clean(uri); } belle_sip_header_set_next(BELLE_SIP_HEADER(header),NULL); /*make sure only one header is kept*/ belle_sip_header_set_name(BELLE_SIP_HEADER(header),BELLE_SIP_FROM); /*restore header name*/ if (tag) belle_sip_header_from_set_tag(header,tag); return header; } BELLE_SIP_NEW_HEADER(header_from,header_address,BELLE_SIP_FROM) BELLE_SIP_PARSE(header_from) GET_SET_STRING_PARAM2(belle_sip_header_from,tag,raw_tag); void belle_sip_header_from_set_random_tag(belle_sip_header_from_t *obj) { char tmp[BELLE_SIP_TAG_LENGTH]; belle_sip_header_from_set_raw_tag(obj,belle_sip_random_token(tmp,sizeof(tmp))); } void belle_sip_header_from_set_tag(belle_sip_header_from_t *obj, const char *tag) { if (tag==BELLE_SIP_RANDOM_TAG) belle_sip_header_from_set_random_tag(obj); else belle_sip_header_from_set_raw_tag(obj,tag); } const char *belle_sip_header_from_get_tag(const belle_sip_header_from_t *obj) { return belle_sip_header_from_get_raw_tag(obj); } /************************** * To header object inherits from header_address ***************************/ struct _belle_sip_header_to { belle_sip_header_address_t address; }; static void belle_sip_header_to_destroy(belle_sip_header_to_t* to) { } void belle_sip_header_to_clone(belle_sip_header_to_t *contact, const belle_sip_header_to_t *orig) { } belle_sip_error_code belle_sip_header_to_marshal(belle_sip_header_to_t* to, char* buff, size_t buff_size, size_t *offset) { BELLE_SIP_FROM_LIKE_MARSHAL(to,FALSE) } BELLE_SIP_NEW_HEADER(header_to,header_address,BELLE_SIP_TO) BELLE_SIP_PARSE(header_to) GET_SET_STRING_PARAM2(belle_sip_header_to,tag,raw_tag); belle_sip_header_to_t* belle_sip_header_to_create2(const char *uri, const char *tag) { belle_sip_header_address_t* address = belle_sip_header_address_parse(uri); if (address) { belle_sip_header_to_t* to = belle_sip_header_to_create(address,tag); belle_sip_object_unref(address); return to; } else return NULL; } belle_sip_header_to_t* belle_sip_header_to_create(const belle_sip_header_address_t* address, const char *tag) { belle_sip_header_to_t* header= belle_sip_header_to_new(); belle_sip_uri_t* uri; _belle_sip_object_copy((belle_sip_object_t*)header,(belle_sip_object_t*)address); /*clear unwanted uri components*/ if ((uri=belle_sip_header_address_get_uri(BELLE_SIP_HEADER_ADDRESS(header)))) { belle_sip_parameters_t* params=BELLE_SIP_PARAMETERS(uri); belle_sip_parameters_remove_parameter(params,"lr"); belle_sip_parameters_remove_parameter(params,"ttl"); belle_sip_parameters_remove_parameter(params,"method"); belle_sip_parameters_remove_parameter(params,"maddr"); belle_sip_parameters_remove_parameter(params,"transport"); belle_sip_uri_set_port(uri,0); belle_sip_uri_headers_clean(uri); } belle_sip_header_set_next(BELLE_SIP_HEADER(header),NULL); /*make sure only one header is kept*/ belle_sip_header_set_name(BELLE_SIP_HEADER(header),BELLE_SIP_TO); /*restaure header name*/ if (tag) belle_sip_header_to_set_tag(header,tag); return header; } void belle_sip_header_to_set_random_tag(belle_sip_header_to_t *obj) { char tmp[8]; /*not less than 32bit */ belle_sip_header_to_set_tag(obj,belle_sip_random_token(tmp,sizeof(tmp))); } void belle_sip_header_to_set_tag(belle_sip_header_to_t *obj, const char *tag) { if (tag==BELLE_SIP_RANDOM_TAG) belle_sip_header_to_set_random_tag(obj); else belle_sip_header_to_set_raw_tag(obj,tag); } const char *belle_sip_header_to_get_tag(const belle_sip_header_to_t *obj) { return belle_sip_header_to_get_raw_tag(obj); } /************************** * Diversion header object inherits from header_address ***************************/ struct _belle_sip_header_diversion { belle_sip_header_address_t address; }; static void belle_sip_header_diversion_destroy(belle_sip_header_diversion_t* diversion) { } void belle_sip_header_diversion_clone(belle_sip_header_diversion_t *contact, const belle_sip_header_diversion_t *orig) { } belle_sip_error_code belle_sip_header_diversion_marshal(belle_sip_header_diversion_t* diversion, char* buff, size_t buff_size, size_t *offset) { BELLE_SIP_FROM_LIKE_MARSHAL(diversion,FALSE) } BELLE_SIP_NEW_HEADER(header_diversion,header_address,BELLE_SIP_DIVERSION) BELLE_SIP_PARSE(header_diversion) GET_SET_STRING_PARAM2(belle_sip_header_diversion,tag,raw_tag); belle_sip_header_diversion_t* belle_sip_header_diversion_create2(const char *uri, const char *tag) { belle_sip_header_address_t* address = belle_sip_header_address_parse(uri); if (address) { belle_sip_header_diversion_t* diversion = belle_sip_header_diversion_create(address,tag); belle_sip_object_unref(address); return diversion; } else return NULL; } belle_sip_header_diversion_t* belle_sip_header_diversion_create(const belle_sip_header_address_t* address, const char *tag) { belle_sip_header_diversion_t* header= belle_sip_header_diversion_new(); belle_sip_uri_t* uri; _belle_sip_object_copy((belle_sip_object_t*)header,(belle_sip_object_t*)address); /*clear unwanted uri components*/ if ((uri=belle_sip_header_address_get_uri(BELLE_SIP_HEADER_ADDRESS(header)))) { belle_sip_parameters_t* params=BELLE_SIP_PARAMETERS(uri); belle_sip_parameters_remove_parameter(params,"lr"); belle_sip_parameters_remove_parameter(params,"ttl"); belle_sip_parameters_remove_parameter(params,"method"); belle_sip_parameters_remove_parameter(params,"maddr"); belle_sip_parameters_remove_parameter(params,"transport"); belle_sip_uri_set_port(uri,0); belle_sip_uri_headers_clean(uri); } belle_sip_header_set_name(BELLE_SIP_HEADER(header),BELLE_SIP_DIVERSION); /*restaure header name*/ if (tag) belle_sip_header_diversion_set_tag(header,tag); return header; } void belle_sip_header_diversion_set_random_tag(belle_sip_header_diversion_t *obj) { char tmp[8]; /*not less than 32bit */ belle_sip_header_diversion_set_tag(obj,belle_sip_random_token(tmp,sizeof(tmp))); } void belle_sip_header_diversion_set_tag(belle_sip_header_diversion_t *obj, const char *tag) { if (tag==BELLE_SIP_RANDOM_TAG) belle_sip_header_diversion_set_random_tag(obj); else belle_sip_header_diversion_set_raw_tag(obj,tag); } const char *belle_sip_header_diversion_get_tag(const belle_sip_header_diversion_t *obj) { return belle_sip_header_diversion_get_raw_tag(obj); } /****************************** * Session-Expires inherits from params ******************************/ struct _belle_sip_header_session_expires { belle_sip_parameters_t params_list; int delta; }; static void belle_sip_header_session_expires_destroy(belle_sip_header_session_expires_t* session_expires) {} static void belle_sip_header_session_expires_clone(belle_sip_header_session_expires_t* session_expires, const belle_sip_header_session_expires_t* orig) { session_expires->delta = orig->delta; belle_sip_header_session_expires_set_refresher_value(session_expires, belle_sip_header_session_expires_get_refresher_value(orig)); } belle_sip_error_code belle_sip_header_session_expires_marshal(belle_sip_header_session_expires_t* session_expires, char* buff, size_t buff_size, size_t *offset) { belle_sip_error_code error = belle_sip_header_marshal(BELLE_SIP_HEADER(session_expires), buff, buff_size, offset); if (session_expires->delta) { error = belle_sip_snprintf(buff, buff_size, offset, "%i", session_expires->delta); if (error!=BELLE_SIP_OK) return error; } error = belle_sip_parameters_marshal(&session_expires->params_list, buff, buff_size, offset); if (error != BELLE_SIP_OK) return error; return error; } belle_sip_header_session_expires_t* belle_sip_header_session_expires_create(int delta, belle_sip_header_session_expires_refresher_t refresher) { belle_sip_header_session_expires_t *session_expires = belle_sip_header_session_expires_new(); belle_sip_header_session_expires_set_delta(session_expires, delta); if (refresher != BELLE_SIP_HEADER_SESSION_EXPIRES_UNSPECIFIED) { belle_sip_header_session_expires_set_refresher_value(session_expires, refresher); } return session_expires; } BELLE_SIP_PARSE(header_session_expires) BELLE_SIP_NEW_HEADER(header_session_expires, parameters, BELLE_SIP_SESSION_EXPIRES) GET_SET_STRING_PARAM(belle_sip_header_session_expires, refresher) GET_SET_INT(belle_sip_header_session_expires, delta, int) belle_sip_header_session_expires_refresher_t belle_sip_header_session_expires_get_refresher_value(const belle_sip_header_session_expires_t* session_expires) { const char* refresher_value = belle_sip_header_session_expires_get_refresher(session_expires); if (refresher_value == NULL) { return BELLE_SIP_HEADER_SESSION_EXPIRES_UNSPECIFIED; } else if (strcmp("uac", refresher_value) == 0) { return BELLE_SIP_HEADER_SESSION_EXPIRES_UAC; } else if (strcmp("uas", refresher_value) == 0) { return BELLE_SIP_HEADER_SESSION_EXPIRES_UAS; } return BELLE_SIP_HEADER_SESSION_EXPIRES_UNSPECIFIED; } void belle_sip_header_session_expires_set_refresher_value(belle_sip_header_session_expires_t* session_expires, belle_sip_header_session_expires_refresher_t refresher_value) { switch (refresher_value) { case BELLE_SIP_HEADER_SESSION_EXPIRES_UNSPECIFIED: belle_sip_parameters_remove_parameter(BELLE_SIP_PARAMETERS(session_expires), "refresher"); break; case BELLE_SIP_HEADER_SESSION_EXPIRES_UAC: belle_sip_header_session_expires_set_refresher(session_expires, "uac"); break; case BELLE_SIP_HEADER_SESSION_EXPIRES_UAS: belle_sip_header_session_expires_set_refresher(session_expires, "uas"); break; } } /****************************** * User-Agent header inherits from header ******************************/ struct _belle_sip_header_user_agent { belle_sip_header_t header; belle_sip_list_t* products; }; static void belle_sip_header_user_agent_destroy(belle_sip_header_user_agent_t* user_agent) { belle_sip_header_user_agent_set_products(user_agent,NULL); } static void belle_sip_header_user_agent_clone(belle_sip_header_user_agent_t* user_agent, const belle_sip_header_user_agent_t* orig) { belle_sip_list_t* list=orig->products; for(;list!=NULL;list=list->next) { belle_sip_header_user_agent_add_product(user_agent,(const char *)list->data); } } belle_sip_error_code belle_sip_header_user_agent_marshal(belle_sip_header_user_agent_t* user_agent, char* buff, size_t buff_size, size_t *offset) { belle_sip_error_code error=BELLE_SIP_OK; belle_sip_list_t* list = user_agent->products; error=belle_sip_header_marshal(BELLE_SIP_HEADER(user_agent), buff, buff_size, offset); if (error!=BELLE_SIP_OK) return error; for(;list!=NULL;list=list->next) { error=belle_sip_snprintf(buff,buff_size,offset,list==user_agent->products ? "%s" : " %s",(const char *)list->data); if (error!=BELLE_SIP_OK) return error; } return error; } BELLE_SIP_NEW_HEADER(header_user_agent,header,"User-Agent") BELLE_SIP_PARSE(header_user_agent) belle_sip_list_t* belle_sip_header_user_agent_get_products(const belle_sip_header_user_agent_t* user_agent) { return user_agent->products; } void belle_sip_header_user_agent_set_products(belle_sip_header_user_agent_t* user_agent,belle_sip_list_t* products) { belle_sip_list_t* list; if (user_agent->products) { for (list=user_agent->products;list !=NULL; list=list->next) { belle_sip_free((void*)list->data); } belle_sip_list_free(user_agent->products); } user_agent->products=products; } void belle_sip_header_user_agent_add_product(belle_sip_header_user_agent_t* user_agent,const char* product) { user_agent->products = belle_sip_list_append(user_agent->products ,belle_sip_strdup(product)); } int belle_sip_header_user_agent_get_products_as_string(const belle_sip_header_user_agent_t* user_agent,char* value,unsigned int value_size) { size_t result = 0; belle_sip_error_code error=BELLE_SIP_OK; belle_sip_list_t* list = user_agent->products; for(;list!=NULL;list=list->next) { error=belle_sip_snprintf(value,value_size,&result,"%s ",(const char *)list->data); if (error!=BELLE_SIP_OK) return -1; } if (result>0) value[result-1]='\0'; /*remove last space */ return (int)result-1; } /************************** * Via header object inherits from parameters ***************************/ struct _belle_sip_header_via { belle_sip_parameters_t params_list; char* protocol; char* transport; char* host; int port; char* received; }; static void belle_sip_header_via_destroy(belle_sip_header_via_t* via) { if (via->protocol) belle_sip_free(via->protocol); if (via->transport) belle_sip_free(via->transport); if (via->host) belle_sip_free(via->host); DESTROY_STRING(via,received) } static void belle_sip_header_via_clone(belle_sip_header_via_t* via, const belle_sip_header_via_t*orig) { CLONE_STRING(belle_sip_header_via,protocol,via,orig) CLONE_STRING(belle_sip_header_via,transport,via,orig) CLONE_STRING(belle_sip_header_via,host,via,orig) CLONE_STRING(belle_sip_header_via,received,via,orig) via->port=orig->port; } belle_sip_error_code belle_sip_header_via_marshal(belle_sip_header_via_t* via, char* buff, size_t buff_size, size_t *offset) { belle_sip_error_code error=belle_sip_header_marshal(BELLE_SIP_HEADER(via), buff, buff_size, offset); if (error!=BELLE_SIP_OK) return error; error=belle_sip_snprintf(buff,buff_size,offset,"%s/%s",via->protocol,via->transport); if (error!=BELLE_SIP_OK) return error; if (via->host) { if (strchr(via->host,':')) { /*ipv6*/ error=belle_sip_snprintf(buff,buff_size,offset," [%s]",via->host); } else { error=belle_sip_snprintf(buff,buff_size,offset," %s",via->host); } if (error!=BELLE_SIP_OK) return error; } else { belle_sip_warning("no host found in this via"); } if (via->port > 0) { error=belle_sip_snprintf(buff,buff_size,offset,":%i",via->port); if (error!=BELLE_SIP_OK) return error; } if (via->received) { error=belle_sip_snprintf(buff,buff_size,offset,";received=%s",via->received); if (error!=BELLE_SIP_OK) return error; } error=belle_sip_parameters_marshal(&via->params_list, buff, buff_size, offset); if (error!=BELLE_SIP_OK) return error; return error; } belle_sip_header_via_t* belle_sip_header_via_create(const char *host, int port, const char *transport, const char *branch) { belle_sip_header_via_t *via=belle_sip_header_via_new(); via->host=belle_sip_strdup(host); via->port=port; via->transport=belle_sip_strdup(transport); via->protocol=belle_sip_strdup("SIP/2.0"); belle_sip_header_via_set_branch(via,branch); return via; } BELLE_SIP_NEW_HEADER(header_via,parameters,BELLE_SIP_VIA) BELLE_SIP_PARSE(header_via) GET_SET_STRING(belle_sip_header_via,protocol); GET_SET_STRING(belle_sip_header_via,transport); GET_SET_STRING(belle_sip_header_via,host); GET_SET_STRING(belle_sip_header_via,received); GET_SET_INT_PRIVATE(belle_sip_header_via,port,int,_); GET_SET_STRING_PARAM(belle_sip_header_via,branch); GET_SET_STRING_PARAM(belle_sip_header_via,maddr); GET_SET_INT_PARAM_PRIVATE(belle_sip_header_via,rport,int,_) GET_SET_INT_PARAM_PRIVATE(belle_sip_header_via,ttl,int,_) int belle_sip_header_via_set_rport (belle_sip_header_via_t* obj,int value) { if (value == -1) { belle_sip_parameters_set_parameter(BELLE_SIP_PARAMETERS(obj),"rport",NULL); return 0; } if (value>0 && value<65536) { _belle_sip_header_via_set_rport(obj,value); return 0; } else { belle_sip_error("bad rport value [%i] for via",value); return -1; } } int belle_sip_header_via_set_ttl (belle_sip_header_via_t* obj,int value) { if (value ==-1 || (value>0 && value<=255)) { _belle_sip_header_via_set_ttl(obj,value); return 0; } else { belle_sip_error("bad ttl value [%i] for via",value); return -1; } } int belle_sip_header_via_set_port (belle_sip_header_via_t* obj,int value) { if (value ==-1 || (value>0 && value<65536)) { _belle_sip_header_via_set_port(obj,value); return 0; } else { belle_sip_error("bad port value [%i] for via",value); return -1; } } int belle_sip_header_via_get_listening_port(const belle_sip_header_via_t *via) { int ret=belle_sip_header_via_get_port(via); if (ret==0) ret=belle_sip_listening_point_get_well_known_port(via->transport); return ret; } const char* belle_sip_header_via_get_transport_lowercase(const belle_sip_header_via_t* via) { if (strcasecmp("udp",via->transport)==0) return "udp"; else if (strcasecmp("tcp",via->transport)==0) return "tcp"; else if (strcasecmp("tls",via->transport)==0) return "tls"; else if (strcasecmp("dtls",via->transport)==0) return "dtls"; else { belle_sip_warning("Cannot convert [%s] to lower case",via->transport); return via->transport; } } /************************** * call_id header object inherits from object ***************************/ struct _belle_sip_header_call_id { belle_sip_header_t header; const char* call_id; }; static void belle_sip_header_call_id_destroy(belle_sip_header_call_id_t* call_id) { if (call_id->call_id) belle_sip_free((void*)call_id->call_id); } static void belle_sip_header_call_id_clone(belle_sip_header_call_id_t* call_id,const belle_sip_header_call_id_t *orig) { CLONE_STRING(belle_sip_header_call_id,call_id,call_id,orig); } belle_sip_error_code belle_sip_header_call_id_marshal(belle_sip_header_call_id_t* call_id, char* buff, size_t buff_size, size_t *offset) { belle_sip_error_code error=belle_sip_header_marshal(BELLE_SIP_HEADER(call_id), buff, buff_size, offset); if (error!=BELLE_SIP_OK) return error; error=belle_sip_snprintf(buff,buff_size,offset,"%s",call_id->call_id); if (error!=BELLE_SIP_OK) return error; return error; } unsigned int belle_sip_header_call_id_equals(const belle_sip_header_call_id_t* a,const belle_sip_header_call_id_t* b) { return strcasecmp(a->call_id,b->call_id) == 0; } BELLE_SIP_NEW_HEADER(header_call_id,header,BELLE_SIP_CALL_ID) BELLE_SIP_PARSE(header_call_id) GET_SET_STRING(belle_sip_header_call_id,call_id); /************************** * retry-after header object inherits from object ***************************/ struct _belle_sip_header_retry_after { belle_sip_header_t header; int retry_after; }; static void belle_sip_header_retry_after_destroy(belle_sip_header_retry_after_t* retry_after) { } static void belle_sip_header_retry_after_clone(belle_sip_header_retry_after_t* retry_after,const belle_sip_header_retry_after_t *orig) { retry_after->retry_after = orig->retry_after; } belle_sip_error_code belle_sip_header_retry_after_marshal(belle_sip_header_retry_after_t* retry_after, char* buff, size_t buff_size, size_t *offset) { belle_sip_error_code error=belle_sip_header_marshal(BELLE_SIP_HEADER(retry_after), buff, buff_size, offset); if (error!=BELLE_SIP_OK) return error; if (retry_after->retry_after > 0) { error=belle_sip_snprintf(buff,buff_size,offset,"%i",retry_after->retry_after); if (error!=BELLE_SIP_OK) return error; } return error; } BELLE_SIP_NEW_HEADER(header_retry_after,header,BELLE_SIP_RETRY_AFTER) BELLE_SIP_PARSE(header_retry_after) GET_SET_INT(belle_sip_header_retry_after,retry_after,int); belle_sip_header_retry_after_t* belle_sip_header_retry_after_create (int retry_after) { belle_sip_header_retry_after_t* obj; obj = belle_sip_header_retry_after_new(); belle_sip_header_retry_after_set_retry_after(obj,retry_after); return obj; } /************************** * cseq header object inherit from object ***************************/ struct _belle_sip_header_cseq { belle_sip_header_t header; char* method; unsigned int seq_number; }; static void belle_sip_header_cseq_destroy(belle_sip_header_cseq_t* cseq) { if (cseq->method) belle_sip_free(cseq->method); } static void belle_sip_header_cseq_clone(belle_sip_header_cseq_t* cseq, const belle_sip_header_cseq_t *orig) { CLONE_STRING(belle_sip_header_cseq,method,cseq,orig) cseq->seq_number=orig->seq_number; } belle_sip_error_code belle_sip_header_cseq_marshal(belle_sip_header_cseq_t* cseq, char* buff, size_t buff_size, size_t *offset) { belle_sip_error_code error=belle_sip_header_marshal(BELLE_SIP_HEADER(cseq), buff,buff_size, offset); if (error!=BELLE_SIP_OK) return error; error=belle_sip_snprintf(buff,buff_size,offset,"%i %s",cseq->seq_number,cseq->method); if (error!=BELLE_SIP_OK) return error; return error; } belle_sip_header_cseq_t * belle_sip_header_cseq_create(unsigned int number, const char *method) { belle_sip_header_cseq_t *cseq=belle_sip_header_cseq_new(); belle_sip_header_cseq_set_method(cseq,method); cseq->seq_number=number; return cseq; } BELLE_SIP_NEW_HEADER(header_cseq,header,BELLE_SIP_CSEQ) BELLE_SIP_PARSE(header_cseq) GET_SET_STRING(belle_sip_header_cseq,method); GET_SET_INT(belle_sip_header_cseq,seq_number,unsigned int) /************************** * content type header object inherit from parameters ***************************/ struct _belle_sip_header_content_type { belle_sip_parameters_t params_list; const char* type; const char* subtype; }; static void belle_sip_header_content_type_destroy(belle_sip_header_content_type_t* content_type) { if (content_type->type) belle_sip_free((void*)content_type->type); if (content_type->subtype) belle_sip_free((void*)content_type->subtype); } static void belle_sip_header_content_type_clone(belle_sip_header_content_type_t* content_type, const belle_sip_header_content_type_t* orig) { CLONE_STRING(belle_sip_header_content_type,type,content_type,orig); CLONE_STRING(belle_sip_header_content_type,subtype,content_type,orig); } belle_sip_error_code belle_sip_header_content_type_marshal(belle_sip_header_content_type_t* content_type, char* buff, size_t buff_size, size_t *offset) { belle_sip_error_code error=belle_sip_header_marshal(BELLE_SIP_HEADER(content_type), buff, buff_size, offset); if (error!=BELLE_SIP_OK) return error; error=belle_sip_snprintf(buff,buff_size,offset,"%s/%s",content_type->type, content_type->subtype); if (error!=BELLE_SIP_OK) return error; error=belle_sip_parameters_marshal(&content_type->params_list, buff, buff_size, offset); if (error!=BELLE_SIP_OK) return error; return error; } BELLE_SIP_NEW_HEADER(header_content_type,parameters,BELLE_SIP_CONTENT_TYPE) BELLE_SIP_PARSE(header_content_type) belle_sip_header_content_type_t* belle_sip_header_content_type_create (const char* type,const char* sub_type) { belle_sip_header_content_type_t* header = belle_sip_header_content_type_new(); belle_sip_header_content_type_set_type(header,type); belle_sip_header_content_type_set_subtype(header,sub_type); return header; } GET_SET_STRING(belle_sip_header_content_type,type); GET_SET_STRING(belle_sip_header_content_type,subtype); /************************** * Route header object inherit from header_address ***************************/ struct _belle_sip_header_route { belle_sip_header_address_t address; }; static void belle_sip_header_route_destroy(belle_sip_header_route_t* route) { } static void belle_sip_header_route_clone(belle_sip_header_route_t* route, const belle_sip_header_route_t* orig) { } belle_sip_error_code belle_sip_header_route_marshal(belle_sip_header_route_t* route, char* buff, size_t buff_size, size_t *offset) { BELLE_SIP_FROM_LIKE_MARSHAL(route,TRUE) } BELLE_SIP_NEW_HEADER(header_route,header_address,BELLE_SIP_ROUTE) BELLE_SIP_PARSE(header_route) belle_sip_header_route_t* belle_sip_header_route_create(const belle_sip_header_address_t* route) { belle_sip_header_route_t* header= belle_sip_header_route_new(); _belle_sip_object_copy((belle_sip_object_t*)header,(belle_sip_object_t*)route); belle_sip_header_set_next(BELLE_SIP_HEADER(header),NULL); /*make sure only one header is kept*/ belle_sip_header_set_name(BELLE_SIP_HEADER(header),BELLE_SIP_ROUTE); /*restore header name*/ return header; } /************************** * Record route header object inherit from header_address ***************************/ struct _belle_sip_header_record_route { belle_sip_header_address_t address; unsigned char auto_outgoing; unsigned char pad[3]; }; static void belle_sip_header_record_route_destroy(belle_sip_header_record_route_t* record_route) { } static void belle_sip_header_record_route_clone(belle_sip_header_record_route_t* record_route, const belle_sip_header_record_route_t* orig ) { } belle_sip_error_code belle_sip_header_record_route_marshal(belle_sip_header_record_route_t* record_route, char* buff, size_t buff_size, size_t *offset) { BELLE_SIP_FROM_LIKE_MARSHAL(record_route,TRUE) } belle_sip_header_record_route_t *belle_sip_header_record_route_new_auto_outgoing() { belle_sip_header_record_route_t *rr = belle_sip_header_record_route_new(); rr->auto_outgoing = TRUE; return rr; } unsigned char belle_sip_header_record_route_get_auto_outgoing(const belle_sip_header_record_route_t *a) { return a->auto_outgoing; } BELLE_SIP_NEW_HEADER(header_record_route,header_address,BELLE_SIP_RECORD_ROUTE) BELLE_SIP_PARSE(header_record_route) /************************** * Service route header object inherit from header_address ***************************/ struct _belle_sip_header_service_route { belle_sip_header_address_t address; }; static void belle_sip_header_service_route_destroy(belle_sip_header_service_route_t* service_route) { } static void belle_sip_header_service_route_clone(belle_sip_header_service_route_t* service_route, const belle_sip_header_service_route_t* orig ) { } belle_sip_error_code belle_sip_header_service_route_marshal(belle_sip_header_service_route_t* service_route, char* buff, size_t buff_size, size_t *offset) { BELLE_SIP_FROM_LIKE_MARSHAL(service_route,TRUE) } BELLE_SIP_NEW_HEADER(header_service_route,header_address,BELLE_SIP_SERVICE_ROUTE) BELLE_SIP_PARSE(header_service_route) /************************** * content length header object inherit from object ***************************/ struct _belle_sip_header_content_length { belle_sip_header_t header; size_t content_length; }; static void belle_sip_header_content_length_destroy(belle_sip_header_content_length_t* content_length) { } static void belle_sip_header_content_length_clone(belle_sip_header_content_length_t* content_length, const belle_sip_header_content_length_t *orig ) { content_length->content_length=orig->content_length; } belle_sip_error_code belle_sip_header_content_length_marshal(belle_sip_header_content_length_t* content_length, char* buff, size_t buff_size, size_t *offset) { belle_sip_error_code error=belle_sip_header_marshal(BELLE_SIP_HEADER(content_length), buff, buff_size, offset); if (error!=BELLE_SIP_OK) return error; error=belle_sip_snprintf(buff,buff_size,offset,FORMAT_SIZE_T,content_length->content_length); if (error!=BELLE_SIP_OK) return error; return error; } BELLE_SIP_NEW_HEADER(header_content_length,header,BELLE_SIP_CONTENT_LENGTH) BELLE_SIP_PARSE(header_content_length) GET_SET_INT(belle_sip_header_content_length,content_length,size_t) belle_sip_header_content_length_t* belle_sip_header_content_length_create (size_t content_length) { belle_sip_header_content_length_t* obj; obj = belle_sip_header_content_length_new(); belle_sip_header_content_length_set_content_length(obj,content_length); return obj; } /************************** * Expires header object inherit from header ***************************/ struct _belle_sip_header_expires { belle_sip_header_t header; int expires; }; static void belle_sip_header_expires_destroy(belle_sip_header_expires_t* expires) { } static void belle_sip_header_expires_clone(belle_sip_header_expires_t* expires, const belle_sip_header_expires_t *orig ) { expires->expires=orig->expires; } belle_sip_error_code belle_sip_header_expires_marshal(belle_sip_header_expires_t* expires, char* buff, size_t buff_size, size_t *offset) { belle_sip_error_code error=belle_sip_header_marshal(BELLE_SIP_HEADER(expires), buff, buff_size, offset); if (error!=BELLE_SIP_OK) return error; error=belle_sip_snprintf(buff,buff_size,offset,"%i",expires->expires); if (error!=BELLE_SIP_OK) return error; return error; } BELLE_SIP_NEW_HEADER(header_expires,header,BELLE_SIP_EXPIRES) BELLE_SIP_PARSE(header_expires) GET_SET_INT(belle_sip_header_expires,expires,int) belle_sip_header_expires_t* belle_sip_header_expires_create(int expires) { belle_sip_header_expires_t* obj = belle_sip_header_expires_new(); belle_sip_header_expires_set_expires(obj,expires); return obj; } /****************************** * Extension header hinerite from header ******************************/ struct _belle_sip_header_extension { belle_sip_header_t header; const char* value; }; static void belle_sip_header_extension_destroy(belle_sip_header_extension_t* extension) { if (extension->value) belle_sip_free((void*)extension->value); } static void belle_sip_header_extension_clone(belle_sip_header_extension_t* extension, const belle_sip_header_extension_t* orig) { CLONE_STRING(belle_sip_header_extension,value,extension,orig) } belle_sip_error_code belle_sip_header_extension_marshal(belle_sip_header_extension_t* extension, char* buff, size_t buff_size, size_t *offset) { belle_sip_error_code error=belle_sip_header_marshal(BELLE_SIP_HEADER(extension), buff, buff_size, offset); if (error!=BELLE_SIP_OK) return error; if (extension->value) error=belle_sip_snprintf(buff,buff_size,offset,"%s",extension->value); if (error!=BELLE_SIP_OK) return error; return error; } BELLE_SIP_NEW_HEADER(header_extension,header,NULL) belle_sip_header_extension_t* belle_sip_header_extension_create (const char* name,const char* value) { belle_sip_header_extension_t* ext = belle_sip_header_extension_new(); belle_sip_header_set_name(BELLE_SIP_HEADER(ext),name); belle_sip_header_extension_set_value(ext,value); return ext; } GET_SET_STRING(belle_sip_header_extension,value); /************************** *Authorization header object inherit from parameters ***************************/ #define AUTH_BASE \ belle_sip_parameters_t params_list; \ const char* scheme; \ const char* realm; \ const char* nonce; \ const char* algorithm; \ const char* opaque; #define AUTH_BASE_DESTROY(obj) \ if (obj->scheme) belle_sip_free((void*)obj->scheme);\ if (obj->realm) belle_sip_free((void*)obj->realm);\ if (obj->nonce) belle_sip_free((void*)obj->nonce);\ if (obj->algorithm) belle_sip_free((void*)obj->algorithm);\ if (obj->opaque) belle_sip_free((void*)obj->opaque);\ /*if (obj->params_list) FIXME free list*/ #define AUTH_BASE_CLONE(object_type,dest,src) \ CLONE_STRING(object_type,scheme,dest,src)\ CLONE_STRING(object_type,realm,dest,src)\ CLONE_STRING(object_type,nonce,dest,src)\ CLONE_STRING(object_type,algorithm,dest,src)\ CLONE_STRING(object_type,opaque,dest,src) \ #define AUTH_BASE_MARSHAL(header) \ char* border=" ";\ const belle_sip_list_t* list;\ belle_sip_error_code error=belle_sip_header_marshal(BELLE_SIP_HEADER(header), buff, buff_size, offset);\ if (error!=BELLE_SIP_OK) return error;\ list=belle_sip_parameters_get_parameters(&header->params_list);\ if (header->scheme) { \ error=belle_sip_snprintf(buff,buff_size,offset," %s",header->scheme);\ if (error!=BELLE_SIP_OK) return error;\ } else { \ belle_sip_error("missing mandatory scheme"); \ } \ for(;list!=NULL;list=list->next) {\ belle_sip_param_pair_t* container = list->data;\ error=belle_sip_snprintf(buff,buff_size,offset,"%s%s=%s",border, container->name,container->value);\ if (error!=BELLE_SIP_OK) return error;\ border=", ";\ }\ if (header->realm) {\ error=belle_sip_snprintf(buff,buff_size,offset,"%srealm=\"%s\"",border,header->realm);\ if (error!=BELLE_SIP_OK) return error;\ border=", ";\ }\ if (header->nonce) {\ error=belle_sip_snprintf(buff,buff_size,offset,"%snonce=\"%s\"",border,header->nonce);\ if (error!=BELLE_SIP_OK) return error;\ border=", ";\ }\ if (header->algorithm) {\ const char* format;\ if (BELLE_SIP_OBJECT_IS_INSTANCE_OF(header,belle_http_header_authorization_t)) {\ format="%salgorithm=\"%s\"";\ } else {\ format="%salgorithm=%s";\ }\ error=belle_sip_snprintf(buff,buff_size,offset,format,border,header->algorithm);\ if (error!=BELLE_SIP_OK) return error;\ border=", ";\ }\ if (header->opaque) {\ error=belle_sip_snprintf(buff,buff_size,offset,"%sopaque=\"%s\"",border,header->opaque);\ if (error!=BELLE_SIP_OK) return error;\ border=", ";\ } struct _belle_sip_header_authorization { AUTH_BASE const char* username; belle_sip_uri_t* uri; const char* response; const char* cnonce; int nonce_count; const char* qop; }; static void belle_sip_header_authorization_destroy(belle_sip_header_authorization_t* authorization) { if (authorization->username) belle_sip_free((void*)authorization->username); if (authorization->uri) { belle_sip_object_unref(authorization->uri); } if (authorization->cnonce) belle_sip_free((void*)authorization->cnonce); AUTH_BASE_DESTROY(authorization) DESTROY_STRING(authorization,response); DESTROY_STRING(authorization,qop); } static void belle_sip_header_authorization_clone(belle_sip_header_authorization_t* authorization, const belle_sip_header_authorization_t *orig ) { AUTH_BASE_CLONE(belle_sip_header_authorization,authorization,orig) CLONE_STRING(belle_sip_header_authorization,username,authorization,orig) if (belle_sip_header_authorization_get_uri(orig)) { belle_sip_header_authorization_set_uri(authorization,BELLE_SIP_URI(belle_sip_object_clone(BELLE_SIP_OBJECT(belle_sip_header_authorization_get_uri(orig))))); } CLONE_STRING(belle_sip_header_authorization,response,authorization,orig) CLONE_STRING(belle_sip_header_authorization,cnonce,authorization,orig) authorization->nonce_count=orig->nonce_count; CLONE_STRING(belle_sip_header_authorization,qop,authorization,orig) } static void belle_sip_header_authorization_init(belle_sip_header_authorization_t* authorization) { } belle_sip_uri_t* belle_sip_header_authorization_get_uri(const belle_sip_header_authorization_t* authorization) { return authorization->uri; } void belle_sip_header_authorization_set_uri(belle_sip_header_authorization_t* authorization, belle_sip_uri_t* uri) { if (uri) belle_sip_object_ref(uri); if (authorization->uri) { belle_sip_object_unref(BELLE_SIP_OBJECT(authorization->uri)); } authorization->uri=uri; } belle_sip_error_code belle_sip_header_authorization_marshal(belle_sip_header_authorization_t* authorization, char* buff, size_t buff_size, size_t *offset) { char nonce_count[10]; AUTH_BASE_MARSHAL(authorization) if (authorization->username) { error=belle_sip_snprintf(buff,buff_size,offset,"%susername=\"%s\"",border,authorization->username); if (error!=BELLE_SIP_OK) return error; border=", "; } if (authorization->uri) { error=belle_sip_snprintf(buff,buff_size,offset,"%s uri=\"",border); if (error!=BELLE_SIP_OK) return error; border=", "; error=belle_sip_uri_marshal(authorization->uri,buff,buff_size,offset); if (error!=BELLE_SIP_OK) return error; error=belle_sip_snprintf(buff,buff_size,offset,"%s","\""); if (error!=BELLE_SIP_OK) return error; } if (authorization->response) { error=belle_sip_snprintf(buff,buff_size,offset,"%sresponse=\"%s\"",border,authorization->response); if (error!=BELLE_SIP_OK) return error; border=", "; } if (authorization->cnonce) { error=belle_sip_snprintf(buff,buff_size,offset,"%scnonce=\"%s\"",border,authorization->cnonce); if (error!=BELLE_SIP_OK) return error; border=", "; } if (authorization->nonce_count>0) { belle_sip_header_authorization_get_nonce_count_as_string(authorization,nonce_count); error=belle_sip_snprintf(buff,buff_size,offset,"%snc=%s",border,nonce_count); if (error!=BELLE_SIP_OK) return error; border=", "; } if (authorization->qop) { const char* format; format="%sqop=%s"; error=belle_sip_snprintf(buff,buff_size,offset,format,border,authorization->qop); if (error!=BELLE_SIP_OK) return error; } return error; } BELLE_SIP_NEW_HEADER(header_authorization,parameters,BELLE_SIP_AUTHORIZATION) BELLE_SIP_PARSE(header_authorization) GET_SET_STRING(belle_sip_header_authorization,scheme); GET_SET_STRING(belle_sip_header_authorization,username); GET_SET_STRING(belle_sip_header_authorization,realm); GET_SET_STRING(belle_sip_header_authorization,nonce); GET_SET_STRING(belle_sip_header_authorization,response); GET_SET_STRING(belle_sip_header_authorization,algorithm); GET_SET_STRING(belle_sip_header_authorization,cnonce); GET_SET_STRING(belle_sip_header_authorization,opaque); GET_SET_STRING(belle_sip_header_authorization,qop); GET_SET_INT(belle_sip_header_authorization,nonce_count,int) int belle_sip_header_authorization_get_nonce_count_as_string(const belle_sip_header_authorization_t* authorization,char nounce_count[9]) { nounce_count[0]='\0'; if (authorization->nonce_count>0) { snprintf(nounce_count,9,"%08x",authorization->nonce_count); return 0; } else { return -1; } } /************************** *Proxy-Authorization header object inherit from parameters ***************************/ struct _belle_sip_header_proxy_authorization { belle_sip_header_authorization_t authorization; }; static void belle_sip_header_proxy_authorization_destroy(belle_sip_header_proxy_authorization_t* proxy_authorization) { } static void belle_sip_header_proxy_authorization_clone(belle_sip_header_proxy_authorization_t* proxy_authorization, const belle_sip_header_proxy_authorization_t *orig ) { } belle_sip_error_code belle_sip_header_proxy_authorization_marshal(belle_sip_header_proxy_authorization_t* proxy_authorization, char* buff, size_t buff_size, size_t *offset) { return belle_sip_header_authorization_marshal(&proxy_authorization->authorization,buff,buff_size,offset); } BELLE_SIP_NEW_HEADER(header_proxy_authorization,header_authorization,BELLE_SIP_PROXY_AUTHORIZATION) BELLE_SIP_PARSE(header_proxy_authorization) /************************** *HTTP Authorization header object inherit from Authorization ***************************/ struct _belle_http_header_authorization { belle_sip_header_authorization_t authorization; belle_generic_uri_t* uri; }; static void belle_http_header_authorization_init(belle_http_header_authorization_t* authorization) { belle_sip_header_set_name(BELLE_SIP_HEADER(authorization),BELLE_HTTP_AUTHORIZATION); } static void belle_http_header_authorization_destroy(belle_http_header_authorization_t* authorization) { if (authorization->uri) { belle_sip_object_unref(authorization->uri); } } static void belle_http_header_authorization_clone(belle_http_header_authorization_t* authorization, const belle_http_header_authorization_t *orig ) { if (belle_http_header_authorization_get_uri(orig)) { belle_http_header_authorization_set_uri(authorization,BELLE_GENERIC_URI(belle_sip_object_clone(BELLE_SIP_OBJECT(belle_http_header_authorization_get_uri(orig))))); } } belle_sip_error_code belle_http_header_authorization_marshal(belle_http_header_authorization_t* authorization, char* buff, size_t buff_size, size_t *offset) { belle_sip_error_code error=BELLE_SIP_OK; /*first make sure there is no sip uri*/ if (belle_sip_header_authorization_get_uri(BELLE_SIP_HEADER_AUTHORIZATION(authorization))) { belle_sip_error ("Cannot marshal http_header_authorization because a sip uri is set. Use belle_http_authorization_set uri instead of belle_sip_header_authorization_set_uri"); return BELLE_SIP_NOT_IMPLEMENTED; } belle_sip_header_authorization_marshal(BELLE_SIP_HEADER_AUTHORIZATION(authorization),buff,buff_size,offset); if (authorization->uri) { error=belle_sip_snprintf(buff,buff_size,offset,", uri=\""); if (error!=BELLE_SIP_OK) return error; error=belle_generic_uri_marshal(authorization->uri,buff,buff_size,offset); if (error!=BELLE_SIP_OK) return error; error=belle_sip_snprintf(buff,buff_size,offset,"%s","\""); if (error!=BELLE_SIP_OK) return error; } return error; } BELLE_NEW(belle_http_header_authorization,belle_sip_header_authorization) belle_generic_uri_t* belle_http_header_authorization_get_uri(const belle_http_header_authorization_t* authorization) { return authorization->uri; } void belle_http_header_authorization_set_uri( belle_http_header_authorization_t* authorization,belle_generic_uri_t* uri) { if (authorization->uri) belle_sip_object_unref(authorization->uri); if (uri) belle_sip_object_ref(uri); authorization->uri=uri; } /************************** * WWW-Authenticate header object inherit from parameters **************************/ struct _belle_sip_header_www_authenticate { AUTH_BASE const char* domain; int stale; belle_sip_list_t* qop; }; static void belle_sip_header_www_authenticate_destroy(belle_sip_header_www_authenticate_t* www_authenticate) { AUTH_BASE_DESTROY(www_authenticate) if (www_authenticate->domain) belle_sip_free((void*)www_authenticate->domain); if (www_authenticate->qop) belle_sip_list_free_with_data(www_authenticate->qop,belle_sip_free); } void belle_sip_header_www_authenticate_init(belle_sip_header_www_authenticate_t* www_authenticate) { www_authenticate->stale=-1; } static void belle_sip_header_www_authenticate_clone(belle_sip_header_www_authenticate_t* www_authenticate, const belle_sip_header_www_authenticate_t *orig ) { AUTH_BASE_CLONE(belle_sip_header_www_authenticate,www_authenticate,orig) CLONE_STRING(belle_sip_header_www_authenticate,domain,www_authenticate,orig) www_authenticate->stale=orig->stale; www_authenticate->qop=belle_sip_list_copy_with_data(orig->qop,(void* (*)(void*))belle_sip_strdup); } belle_sip_error_code belle_sip_header_www_authenticate_marshal(belle_sip_header_www_authenticate_t* www_authenticate, char* buff, size_t buff_size, size_t *offset) { belle_sip_list_t* qops=www_authenticate->qop; AUTH_BASE_MARSHAL(www_authenticate) if (www_authenticate->domain) { error=belle_sip_snprintf(buff,buff_size,offset,"%sdomain=\"%s\"",border,www_authenticate->domain); if (error!=BELLE_SIP_OK) return error; border=", "; } if (www_authenticate->stale>=0) { error=belle_sip_snprintf(buff,buff_size,offset,"%sstale=%s",border,www_authenticate->stale?"true":"false"); if (error!=BELLE_SIP_OK) return error; } if (qops!=NULL && qops->data!=NULL) { error=belle_sip_snprintf(buff,buff_size,offset,"%sqop=\"",border); if (error!=BELLE_SIP_OK) return error; border=""; for(;qops!=NULL;qops=qops->next) { error=belle_sip_snprintf(buff,buff_size,offset,"%s%s",border, (const char*)qops->data); if (error!=BELLE_SIP_OK) return error; border=","; }\ error=belle_sip_snprintf(buff,buff_size,offset,"\""); if (error!=BELLE_SIP_OK) return error; border=", "; } return error; } #define SET_ADD_STRING_LIST(header,name) \ void header##_set_##name(header##_t* obj, belle_sip_list_t* value) {\ if (obj->name) {\ belle_sip_list_free_with_data(obj->name,belle_sip_free);\ } \ obj->name=value;\ }\ void header##_add_##name(header##_t* obj, const char* value) {\ obj->name=belle_sip_list_append(obj->name,strdup(value));\ } BELLE_SIP_NEW_HEADER_INIT(header_www_authenticate,parameters,BELLE_SIP_WWW_AUTHENTICATE,header_www_authenticate) BELLE_SIP_PARSE(header_www_authenticate) GET_SET_STRING(belle_sip_header_www_authenticate,scheme); GET_SET_STRING(belle_sip_header_www_authenticate,realm); GET_SET_STRING(belle_sip_header_www_authenticate,nonce); GET_SET_STRING(belle_sip_header_www_authenticate,algorithm); GET_SET_STRING(belle_sip_header_www_authenticate,opaque); /*GET_SET_STRING(belle_sip_header_www_authenticate,qop);*/ SET_ADD_STRING_LIST(belle_sip_header_www_authenticate,qop) GET_SET_STRING(belle_sip_header_www_authenticate,domain) GET_SET_BOOL(belle_sip_header_www_authenticate,stale,is) belle_sip_list_t* belle_sip_header_www_authenticate_get_qop(const belle_sip_header_www_authenticate_t* www_authetication) { return www_authetication->qop; } const char* belle_sip_header_www_authenticate_get_qop_first(const belle_sip_header_www_authenticate_t* www_authetication) { return www_authetication->qop?(const char*)www_authetication->qop->data:NULL; } /************************** *Proxy-authenticate header object inherit from www_authenticate ***************************/ struct _belle_sip_header_proxy_authenticate { belle_sip_header_www_authenticate_t www_authenticate; }; static void belle_sip_header_proxy_authenticate_destroy(belle_sip_header_proxy_authenticate_t* proxy_authenticate) { } static void belle_sip_header_proxy_authenticate_clone(belle_sip_header_proxy_authenticate_t* proxy_authenticate, const belle_sip_header_proxy_authenticate_t *orig ) { } belle_sip_error_code belle_sip_header_proxy_authenticate_marshal(belle_sip_header_proxy_authenticate_t* proxy_authenticate, char* buff, size_t buff_size, size_t *offset) { return belle_sip_header_www_authenticate_marshal(&proxy_authenticate->www_authenticate,buff,buff_size,offset); } BELLE_SIP_NEW_HEADER(header_proxy_authenticate,header_www_authenticate,BELLE_SIP_PROXY_AUTHENTICATE) BELLE_SIP_PARSE(header_proxy_authenticate) /************************** * max forwards header object inherit from header ***************************/ struct _belle_sip_header_max_forwards { belle_sip_header_t header; int max_forwards; }; static void belle_sip_header_max_forwards_destroy(belle_sip_header_max_forwards_t* max_forwards) { } static void belle_sip_header_max_forwards_clone(belle_sip_header_max_forwards_t* max_forwards, const belle_sip_header_max_forwards_t *orig ) { max_forwards->max_forwards=orig->max_forwards; } belle_sip_error_code belle_sip_header_max_forwards_marshal(belle_sip_header_max_forwards_t* max_forwards, char* buff, size_t buff_size, size_t *offset) { belle_sip_error_code error=belle_sip_header_marshal(BELLE_SIP_HEADER(max_forwards), buff, buff_size, offset); if (error!=BELLE_SIP_OK) return error; error=belle_sip_snprintf(buff,buff_size,offset,"%i",max_forwards->max_forwards); if (error!=BELLE_SIP_OK) return error; return error; } BELLE_SIP_NEW_HEADER(header_max_forwards,header,"Max-Forwards") BELLE_SIP_PARSE(header_max_forwards) GET_SET_INT(belle_sip_header_max_forwards,max_forwards,int) int belle_sip_header_max_forwards_decrement_max_forwards(belle_sip_header_max_forwards_t* max_forwards) { return max_forwards->max_forwards--; } belle_sip_header_max_forwards_t* belle_sip_header_max_forwards_create(int value) { belle_sip_header_max_forwards_t* max_forwards=belle_sip_header_max_forwards_new(); max_forwards->max_forwards=value; return max_forwards; } /************************** * Subscription state header object inherit from parameters ***************************/ struct _belle_sip_header_subscription_state { belle_sip_parameters_t parameters; const char* state; }; static void belle_sip_header_subscription_state_destroy(belle_sip_header_subscription_state_t* subscription_state) { DESTROY_STRING(subscription_state,state); } static void belle_sip_header_subscription_state_clone(belle_sip_header_subscription_state_t* subscription_state, const belle_sip_header_subscription_state_t *orig ) { CLONE_STRING(belle_sip_header_subscription_state,state,subscription_state,orig) } belle_sip_error_code belle_sip_header_subscription_state_marshal(belle_sip_header_subscription_state_t* subscription_state, char* buff, size_t buff_size, size_t *offset) { belle_sip_error_code error=belle_sip_header_marshal(BELLE_SIP_HEADER(subscription_state), buff, buff_size, offset); if (error!=BELLE_SIP_OK) return error; error=belle_sip_snprintf(buff,buff_size,offset,"%s",subscription_state->state); if (error!=BELLE_SIP_OK) return error; error=belle_sip_parameters_marshal(BELLE_SIP_PARAMETERS(subscription_state), buff, buff_size, offset); if (error!=BELLE_SIP_OK) return error; return error; } BELLE_SIP_NEW_HEADER(header_subscription_state,parameters,BELLE_SIP_SUBSCRIPTION_STATE) BELLE_SIP_PARSE(header_subscription_state) GET_SET_STRING(belle_sip_header_subscription_state,state); GET_SET_STRING_PARAM(belle_sip_header_subscription_state,reason); GET_SET_INT_PARAM2(belle_sip_header_subscription_state,retry-after,int,retry_after); GET_SET_INT_PARAM(belle_sip_header_subscription_state,expires,int) belle_sip_header_subscription_state_t* belle_sip_header_subscription_state_create (const char* subscription_state,int expires) { belle_sip_header_subscription_state_t* sub_state=belle_sip_header_subscription_state_new(); belle_sip_header_subscription_state_set_state(sub_state,subscription_state); belle_sip_header_subscription_state_set_expires(sub_state,expires); return sub_state; } #define HEADER_TO_LIKE_IMPL(name,header_name) \ struct _belle_sip_header_##name { \ belle_sip_header_address_t address; \ }; \ \ static void belle_sip_header_##name##_destroy(belle_sip_header_##name##_t * obj) { \ } \ void belle_sip_header_##name##_clone(belle_sip_header_##name##_t *contact, const belle_sip_header_##name##_t *orig) { }\ belle_sip_error_code belle_sip_header_##name##_marshal(belle_sip_header_##name##_t* name, char* buff, size_t buff_size, size_t *offset) {\ BELLE_SIP_FROM_LIKE_MARSHAL(name,FALSE)\ }\ BELLE_SIP_NEW_HEADER(header_##name,header_address,header_name)\ BELLE_SIP_PARSE(header_##name)\ belle_sip_header_##name##_t* belle_sip_header_##name##_create(const belle_sip_header_address_t* address) { \ belle_sip_header_##name##_t* header= belle_sip_header_##name##_new();\ _belle_sip_object_copy((belle_sip_object_t*)header,(belle_sip_object_t*)address);\ belle_sip_header_set_next(BELLE_SIP_HEADER(header),NULL); /*make sure only one header is kept*/\ belle_sip_header_set_name(BELLE_SIP_HEADER(header),header_name); \ return header;\ } /************************** * Refer-To header object inherits from header_address ***************************/ HEADER_TO_LIKE_IMPL(refer_to,BELLE_SIP_REFER_TO) /************************** * Referred-By header object inherits from header_address ***************************/ HEADER_TO_LIKE_IMPL(referred_by,BELLE_SIP_REFERRED_BY) /************************** * Replaces state header object inherit from parameters ***************************/ struct _belle_sip_header_replaces { belle_sip_parameters_t parameters; char* call_id; }; static void belle_sip_header_replaces_destroy(belle_sip_header_replaces_t* replaces) { DESTROY_STRING(replaces,call_id); } static void belle_sip_header_replaces_clone(belle_sip_header_replaces_t* replaces, const belle_sip_header_replaces_t *orig ) { CLONE_STRING(belle_sip_header_replaces,call_id,replaces,orig) } belle_sip_error_code belle_sip_header_replaces_marshal(belle_sip_header_replaces_t* replaces, char* buff, size_t buff_size, size_t *offset) { belle_sip_error_code error=belle_sip_header_marshal(BELLE_SIP_HEADER(replaces), buff, buff_size, offset); if (error!=BELLE_SIP_OK) return error; error=belle_sip_snprintf(buff,buff_size,offset,"%s",replaces->call_id); if (error!=BELLE_SIP_OK) return error; error=belle_sip_parameters_marshal(BELLE_SIP_PARAMETERS(replaces), buff, buff_size, offset); if (error!=BELLE_SIP_OK) return error; return error; } BELLE_SIP_NEW_HEADER(header_replaces,parameters,BELLE_SIP_REPLACES) BELLE_SIP_PARSE(header_replaces) GET_SET_STRING(belle_sip_header_replaces,call_id); GET_SET_STRING_PARAM2(belle_sip_header_replaces,to-tag,to_tag); GET_SET_STRING_PARAM2(belle_sip_header_replaces,from-tag,from_tag); static void escaped_to_ascii(const char*a,char*b,size_t n) { size_t index_a=0,index_b=0; while (a[index_a]!='\0'&& index_acall_id); if (error!=BELLE_SIP_OK) return NULL; error=belle_sip_parameters_marshal(BELLE_SIP_PARAMETERS(replaces), buff, buff_size, &offset); if (error!=BELLE_SIP_OK) return NULL; buff[offset]='\0'; return strdup(buff); } belle_sip_header_replaces_t* belle_sip_header_replaces_create(const char* call_id,const char* from_tag,const char* to_tag) { belle_sip_header_replaces_t* replaces=belle_sip_header_replaces_new(); belle_sip_header_replaces_set_call_id(replaces,call_id); belle_sip_header_replaces_set_from_tag(replaces,from_tag); belle_sip_header_replaces_set_to_tag(replaces,to_tag); return replaces; } struct belle_sip_header_date{ belle_sip_header_t base; char *date; }; static void belle_sip_header_date_destroy(belle_sip_header_date_t* obj) { DESTROY_STRING(obj,date); } static void belle_sip_header_date_clone(belle_sip_header_date_t* obj, const belle_sip_header_date_t *orig ) { CLONE_STRING(belle_sip_header_date,date,obj,orig); } belle_sip_error_code belle_sip_header_date_marshal(belle_sip_header_date_t* obj, char* buff, size_t buff_size, size_t *offset) { belle_sip_error_code error=belle_sip_header_marshal(BELLE_SIP_HEADER(obj), buff, buff_size, offset); if (error!=BELLE_SIP_OK) return error; error=belle_sip_snprintf(buff,buff_size,offset,"%s",obj->date); if (error!=BELLE_SIP_OK) return error; return error; } BELLE_SIP_NEW_HEADER(header_date,header,BELLE_SIP_DATE) BELLE_SIP_PARSE(header_date) BELLESIP_EXPORT belle_sip_header_date_t* belle_sip_header_date_create_from_time(const time_t *utc_time) { belle_sip_header_date_t *obj=belle_sip_header_date_new(); belle_sip_header_date_set_time(obj,utc_time); return obj; } static const char *days[]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"}; static const char *months[]={"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"}; BELLESIP_EXPORT time_t belle_sip_header_date_get_time(belle_sip_header_date_t *obj) { struct tm ret ={0}; char tmp1[4] ={0}; char tmp2[17] ={0}; int i,j; time_t seconds; #if defined(BELLE_SIP_WINDOWS_UNIVERSAL) || defined(BELLE_SIP_MSC_VER_GREATER_19) long adjust_timezone; #else time_t adjust_timezone; #endif /* time headers are in GMT as spec says */ sscanf(obj->date,"%3c,%d %16s %d %d:%d:%d",tmp1,&ret.tm_mday,tmp2, &ret.tm_year,&ret.tm_hour,&ret.tm_min,&ret.tm_sec); ret.tm_year-=1900; for(i=0;i<7;i++) { if(strcmp(tmp1,days[i])==0) { ret.tm_wday=i; for(j=0;j<12;j++) { if(strcmp(tmp2,months[j])==0) { ret.tm_mon=j; goto success; } } } } belle_sip_warning("Failed to parse date %s",obj->date); return (time_t)-1; success: ret.tm_isdst=0; #if TARGET_IPHONE_SIMULATOR /* 'timezone' is buggy on iOS simulator, use the timegm() function to convert to UTC timestamp and discard the adjust timezone value */ seconds = timegm(&ret); adjust_timezone = 0; #else seconds = mktime(&ret); #if defined(BELLE_SIP_WINDOWS_UNIVERSAL) || defined(BELLE_SIP_MSC_VER_GREATER_19) _get_timezone(&adjust_timezone); #else adjust_timezone = timezone; #endif #endif if (seconds==(time_t)-1) { belle_sip_error("mktime() failed: %s",strerror(errno)); return (time_t)-1; } return seconds-(time_t)adjust_timezone; } BELLESIP_EXPORT void belle_sip_header_date_set_time(belle_sip_header_date_t *obj, const time_t *utc_time) { struct tm *ret; #ifndef _WIN32 struct tm gmt; ret=gmtime_r(utc_time,&gmt); #else ret=gmtime(utc_time); #endif /*cannot use strftime because it is locale dependant*/ if (obj->date) { belle_sip_free(obj->date); } /*SIP-date = rfc1123-date rfc1123-date = wkday "," SP date1 SP time SP "GMT" date1 = 2DIGIT SP month SP 4DIGIT ; day month year (e.g., 02 Jun 1982) time = 2DIGIT ":" 2DIGIT ":" 2DIGIT ; 00:00:00 - 23:59:59 wkday = "Mon" / "Tue" / "Wed" / "Thu" / "Fri" / "Sat" / "Sun" month = "Jan" / "Feb" / "Mar" / "Apr" / "May" / "Jun" / "Jul" / "Aug" / "Sep" / "Oct" / "Nov" / "Dec" */ obj->date=belle_sip_strdup_printf("%s, %02i %s %04i %02i:%02i:%02i GMT", days[ret->tm_wday],ret->tm_mday,months[ret->tm_mon],1900+ret->tm_year,ret->tm_hour,ret->tm_min,ret->tm_sec); } GET_SET_STRING(belle_sip_header_date,date); /************************ * header_p_prefered_identity ***********************/ struct _belle_sip_header_p_preferred_identity { belle_sip_header_address_t address; }; void belle_sip_header_p_preferred_identity_destroy(belle_sip_header_p_preferred_identity_t* p_preferred_identity) { } void belle_sip_header_p_preferred_identity_clone(belle_sip_header_p_preferred_identity_t *p_preferred_identity, const belle_sip_header_p_preferred_identity_t *orig) { } belle_sip_error_code belle_sip_header_p_preferred_identity_marshal(belle_sip_header_p_preferred_identity_t* p_preferred_identity, char* buff, size_t buff_size, size_t *offset) { belle_sip_error_code error=belle_sip_header_marshal(BELLE_SIP_HEADER(p_preferred_identity), buff, buff_size, offset); if (error!=BELLE_SIP_OK) return error; error=belle_sip_header_address_marshal(&p_preferred_identity->address, buff, buff_size, offset); if (error!=BELLE_SIP_OK) return error; return error; } BELLE_SIP_NEW_HEADER(header_p_preferred_identity,header_address,BELLE_SIP_P_PREFERRED_IDENTITY) BELLE_SIP_PARSE(header_p_preferred_identity) belle_sip_header_p_preferred_identity_t* belle_sip_header_p_preferred_identity_create (const belle_sip_header_address_t* p_preferred_identity) { belle_sip_header_p_preferred_identity_t* header = belle_sip_header_p_preferred_identity_new(); _belle_sip_object_copy(BELLE_SIP_OBJECT(header),BELLE_SIP_OBJECT(p_preferred_identity)); belle_sip_header_set_next(BELLE_SIP_HEADER(header),NULL); /*make sure only one header is kept*/ belle_sip_header_set_name(BELLE_SIP_HEADER(header),BELLE_SIP_P_PREFERRED_IDENTITY); /*restaure header name*/ return header; } #define PRIVACY_LIKE_HEADER(header_name, string_name,separator) \ struct _belle_sip_header_##header_name { \ belle_sip_header_t header;\ belle_sip_list_t* header_name;\ }; \ \ static void belle_sip_header_##header_name##_destroy(belle_sip_header_##header_name##_t* p) {\ belle_sip_header_##header_name##_set_##header_name(p,NULL);\ }\ \ static void belle_sip_header_##header_name##_clone(belle_sip_header_##header_name##_t* p, const belle_sip_header_##header_name##_t* orig) {\ belle_sip_list_t* list=orig->header_name;\ for(;list!=NULL;list=list->next) {\ belle_sip_header_##header_name##_add_##header_name(p,(const char *)list->data);\ }\ }\ \ belle_sip_error_code belle_sip_header_##header_name##_marshal(belle_sip_header_##header_name##_t* p, char* buff, size_t buff_size, size_t *offset) {\ belle_sip_error_code error=BELLE_SIP_OK;\ belle_sip_list_t* list = p->header_name;\ error=belle_sip_header_marshal(BELLE_SIP_HEADER(p), buff, buff_size, offset);\ if (error!=BELLE_SIP_OK) return error;\ for(;list!=NULL;list=list->next) {\ error=belle_sip_snprintf(buff,buff_size,offset,list==p->header_name ? "%s" : separator" %s",(const char *)list->data);\ if (error!=BELLE_SIP_OK) return error;\ }\ return error;\ }\ \ BELLE_SIP_NEW_HEADER(header_##header_name,header,string_name)\ BELLE_SIP_PARSE(header_##header_name)\ belle_sip_list_t* belle_sip_header_##header_name##_get_##header_name(const belle_sip_header_##header_name##_t* p) {\ return p->header_name;\ }\ SET_ADD_STRING_LIST(belle_sip_header_##header_name,header_name)\ \ belle_sip_header_##header_name##_t* belle_sip_header_##header_name##_create(const char* header_name) {\ belle_sip_header_##header_name##_t* header=belle_sip_header_##header_name##_new();\ belle_sip_header_##header_name##_add_##header_name(header,header_name);\ return header;\ } /****************************** * Privacy header inherits from header ******************************/ PRIVACY_LIKE_HEADER(privacy,BELLE_SIP_PRIVACY,";") /************************** * Event header object inherit from parameters ***************************/ struct _belle_sip_header_event { belle_sip_parameters_t parameters; const char* package_name; }; static void belle_sip_header_event_destroy(belle_sip_header_event_t* event) { DESTROY_STRING(event,package_name); } static void belle_sip_header_event_clone(belle_sip_header_event_t* event, const belle_sip_header_event_t *orig ) { CLONE_STRING(belle_sip_header_event,package_name,event,orig) } belle_sip_error_code belle_sip_header_event_marshal(belle_sip_header_event_t* event, char* buff, size_t buff_size, size_t *offset) { belle_sip_error_code error=belle_sip_header_marshal(BELLE_SIP_HEADER(event), buff, buff_size, offset); if (error!=BELLE_SIP_OK) return error; error=belle_sip_snprintf(buff,buff_size,offset,"%s",event->package_name); if (error!=BELLE_SIP_OK) return error; error=belle_sip_parameters_marshal(BELLE_SIP_PARAMETERS(event), buff, buff_size, offset); if (error!=BELLE_SIP_OK) return error; return error; } BELLE_SIP_NEW_HEADER(header_event,parameters,BELLE_SIP_EVENT) BELLE_SIP_PARSE(header_event) GET_SET_STRING(belle_sip_header_event,package_name); GET_SET_STRING_PARAM(belle_sip_header_event,id); belle_sip_header_event_t* belle_sip_header_event_create (const char* package_name) { belle_sip_header_event_t* event=belle_sip_header_event_new(); belle_sip_header_event_set_package_name(event,package_name); return event; } /****************************** * Supported header inherits from header ******************************/ PRIVACY_LIKE_HEADER(supported, BELLE_SIP_SUPPORTED, ",") int belle_sip_header_supported_contains_tag(const belle_sip_header_supported_t* supported, const char* tag) { belle_sip_list_t* list = belle_sip_header_supported_get_supported(supported); while (list) { if (strcmp(list->data, tag) == 0) return TRUE; list = list->next; } return FALSE; } /****************************** * Require header inherits from header ******************************/ PRIVACY_LIKE_HEADER(require,BELLE_SIP_REQUIRE,",") /****************************** * Content-Disposition header inherits from header ******************************/ struct _belle_sip_header_content_disposition { belle_sip_parameters_t parameters; const char* content_disposition; }; static void belle_sip_header_content_disposition_destroy(belle_sip_header_content_disposition_t* content_disposition) { DESTROY_STRING(content_disposition,content_disposition); } static void belle_sip_header_content_disposition_clone(belle_sip_header_content_disposition_t* content_disposition, const belle_sip_header_content_disposition_t *orig ) { CLONE_STRING(belle_sip_header_content_disposition,content_disposition,content_disposition,orig) } belle_sip_error_code belle_sip_header_content_disposition_marshal(belle_sip_header_content_disposition_t* content_disposition, char* buff, size_t buff_size, size_t *offset) { belle_sip_error_code error=belle_sip_header_marshal(BELLE_SIP_HEADER(content_disposition), buff, buff_size, offset); if (error!=BELLE_SIP_OK) return error; error=belle_sip_snprintf(buff,buff_size,offset,"%s",content_disposition->content_disposition); if (error!=BELLE_SIP_OK) return error; error=belle_sip_parameters_marshal(BELLE_SIP_PARAMETERS(content_disposition), buff, buff_size, offset); if (error!=BELLE_SIP_OK) return error; return error; } BELLE_SIP_NEW_HEADER(header_content_disposition,parameters,BELLE_SIP_CONTENT_DISPOSITION) BELLE_SIP_PARSE(header_content_disposition) GET_SET_STRING(belle_sip_header_content_disposition,content_disposition); belle_sip_header_content_disposition_t* belle_sip_header_content_disposition_create (const char* value) { belle_sip_header_content_disposition_t* header=belle_sip_header_content_disposition_new(); belle_sip_header_content_disposition_set_content_disposition(header,value); return header; } /****************************** * Accept header inherits from parameters ******************************/ struct _belle_sip_header_accept { belle_sip_parameters_t params_list; const char* type; const char* subtype; }; static void belle_sip_header_accept_destroy(belle_sip_header_accept_t* accept) { if (accept->type) belle_sip_free((void*)accept->type); if (accept->subtype) belle_sip_free((void*)accept->subtype); } static void belle_sip_header_accept_clone(belle_sip_header_accept_t* accept, const belle_sip_header_accept_t* orig) { CLONE_STRING(belle_sip_header_accept,type,accept,orig); CLONE_STRING(belle_sip_header_accept,subtype,accept,orig); } belle_sip_error_code belle_sip_header_accept_marshal(belle_sip_header_accept_t* accept, char* buff, size_t buff_size, size_t *offset) { belle_sip_error_code error=belle_sip_header_marshal(BELLE_SIP_HEADER(accept), buff, buff_size, offset); if (error!=BELLE_SIP_OK) return error; error=belle_sip_snprintf(buff,buff_size,offset,"%s/%s",accept->type, accept->subtype); if (error!=BELLE_SIP_OK) return error; error=belle_sip_parameters_marshal(&accept->params_list, buff, buff_size, offset); if (error!=BELLE_SIP_OK) return error; return error; } BELLE_SIP_NEW_HEADER(header_accept,parameters,BELLE_SIP_ACCEPT) BELLE_SIP_PARSE(header_accept) belle_sip_header_accept_t* belle_sip_header_accept_create (const char* type,const char* sub_type) { belle_sip_header_accept_t* header = belle_sip_header_accept_new(); belle_sip_header_accept_set_type(header,type); belle_sip_header_accept_set_subtype(header,sub_type); return header; } GET_SET_STRING(belle_sip_header_accept,type); GET_SET_STRING(belle_sip_header_accept,subtype); /****************************** * Reason header object inherit from parameters ******************************/ struct _belle_sip_header_reason { belle_sip_parameters_t params_list; const char* protocol; const char* unquoted_text; }; static void belle_sip_header_reason_destroy(belle_sip_header_reason_t* reason) { DESTROY_STRING(reason,protocol); DESTROY_STRING(reason,unquoted_text); } static void belle_sip_header_reason_clone(belle_sip_header_reason_t* reason, const belle_sip_header_reason_t* orig) { CLONE_STRING(belle_sip_header_reason,protocol,reason,orig) } belle_sip_error_code belle_sip_header_reason_marshal(belle_sip_header_reason_t* reason, char* buff, size_t buff_size, size_t *offset) { belle_sip_error_code error=belle_sip_header_marshal(BELLE_SIP_HEADER(reason), buff, buff_size, offset); if (error!=BELLE_SIP_OK) return error; error=belle_sip_snprintf(buff,buff_size,offset,"%s ",reason->protocol); if (error!=BELLE_SIP_OK) return error; error=belle_sip_parameters_marshal(BELLE_SIP_PARAMETERS(reason), buff, buff_size, offset); if (error!=BELLE_SIP_OK) return error; if (reason->unquoted_text) error=belle_sip_snprintf(buff,buff_size,offset,"; text=\"%s\"",reason->unquoted_text); return error; } GET_SET_STRING(belle_sip_header_reason,unquoted_text); void belle_sip_header_reason_set_text(belle_sip_header_reason_t* reason,const char* text) { belle_sip_parameters_remove_parameter(BELLE_SIP_PARAMETERS(reason),"text"); /*just in case*/ belle_sip_header_reason_set_unquoted_text((belle_sip_header_reason_t*)reason, text); } BELLESIP_EXPORT const char* belle_sip_header_reason_get_text(const belle_sip_header_reason_t* reason) { if (!reason->unquoted_text) { /*try from params*/ const char * quoted = belle_sip_parameters_get_parameter(BELLE_SIP_PARAMETERS(reason), "text"); if (quoted) { char* unquoted = _belle_sip_str_dup_and_unquote_string(quoted); belle_sip_header_reason_set_unquoted_text((belle_sip_header_reason_t*)reason, unquoted); /*change internal param, ,even if reason is const*/ belle_sip_parameters_remove_parameter(BELLE_SIP_PARAMETERS(reason),"text"); belle_sip_free(unquoted); } } return reason->unquoted_text; } GET_SET_STRING(belle_sip_header_reason,protocol); GET_SET_INT_PARAM(belle_sip_header_reason,cause,int); BELLE_SIP_PARSE(header_reason) BELLE_SIP_NEW_HEADER(header_reason,parameters,BELLE_SIP_REASON) /****************************** * AuthenticationInfo header hinerite from header ******************************/ struct _belle_sip_header_authentication_info { belle_sip_header_t header; const char* rsp_auth; const char* cnonce; int nonce_count; const char* qop; const char* next_nonce; }; static void belle_sip_header_authentication_info_destroy(belle_sip_header_authentication_info_t* authentication_info) { DESTROY_STRING(authentication_info,rsp_auth); DESTROY_STRING(authentication_info,cnonce); DESTROY_STRING(authentication_info,qop); DESTROY_STRING(authentication_info,next_nonce); } static void belle_sip_header_authentication_info_clone( belle_sip_header_authentication_info_t* authentication_info , const belle_sip_header_authentication_info_t* orig) { CLONE_STRING(belle_sip_header_authentication_info,rsp_auth,authentication_info,orig) CLONE_STRING(belle_sip_header_authentication_info,cnonce,authentication_info,orig) CLONE_STRING(belle_sip_header_authentication_info,qop,authentication_info,orig) CLONE_STRING(belle_sip_header_authentication_info,next_nonce,authentication_info,orig) } belle_sip_error_code belle_sip_header_authentication_info_marshal(belle_sip_header_authentication_info_t* authentication_info, char* buff, size_t buff_size, size_t *offset) { char* border=""; belle_sip_error_code error=belle_sip_header_marshal(BELLE_SIP_HEADER(authentication_info), buff, buff_size, offset); if (error!=BELLE_SIP_OK) return error; if (authentication_info->rsp_auth) { error=belle_sip_snprintf(buff,buff_size,offset,"%srspauth=\"%s\"", border,authentication_info->rsp_auth); border=", "; } if (error!=BELLE_SIP_OK) return error; if (authentication_info->cnonce) { error=belle_sip_snprintf(buff,buff_size,offset,"%scnonce=\"%s\"", border, authentication_info->cnonce); border=", "; } if (error!=BELLE_SIP_OK) return error; if (authentication_info->nonce_count >= 0) { error=belle_sip_snprintf(buff,buff_size,offset,"%snc=%08x", border, authentication_info->nonce_count); border=", "; } if (error!=BELLE_SIP_OK) return error; if (authentication_info->qop) { error=belle_sip_snprintf(buff,buff_size,offset,"%sqop=%s", border, authentication_info->qop); border=", "; } if (error!=BELLE_SIP_OK) return error; if (authentication_info->next_nonce) { error=belle_sip_snprintf(buff,buff_size,offset,"%snextnonce=\"%s\"", border, authentication_info->next_nonce); } return error; } void belle_sip_header_authentication_info_init(belle_sip_header_authentication_info_t* header_authentication) { header_authentication->nonce_count=-1; } BELLE_SIP_NEW_HEADER_INIT(header_authentication_info,header,BELLE_SIP_AUTHENTICATION_INFO,header_authentication_info) BELLE_SIP_PARSE(header_authentication_info) GET_SET_STRING(belle_sip_header_authentication_info,rsp_auth); GET_SET_STRING(belle_sip_header_authentication_info,qop); GET_SET_STRING(belle_sip_header_authentication_info,next_nonce); GET_SET_STRING(belle_sip_header_authentication_info,cnonce); GET_SET_INT(belle_sip_header_authentication_info,nonce_count,int); belle-sip-5.2.0+dfsg/src/belle_sip_internal.h000066400000000000000000001312371434613136500211200ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef belle_utils_h #define belle_utils_h #include #include #include #include #include /* include all public headers*/ #include "belle-sip/belle-sip.h" #include "bctoolbox/map.h" #include "port.h" #include #include #ifdef HAVE_CONFIG_H #ifdef PACKAGE #undef PACKAGE #endif #ifdef PACKAGE_BUGREPORT #undef PACKAGE_BUGREPORT #endif #ifdef PACKAGE_NAME #undef PACKAGE_NAME #endif #ifdef PACKAGE_STRING #undef PACKAGE_STRING #endif #ifdef PACKAGE_TARNAME #undef PACKAGE_TARNAME #endif #ifdef VERSION #undef VERSION #endif #ifdef PACKAGE_VERSION #undef PACKAGE_VERSION #endif #include "config.h" #else #ifndef PACKAGE_VERSION #error "PACKAGE_VERSION must be defined and equal to the VERSION file included in the belle-sip repository" #endif #endif #ifdef HAVE_DNS_SERVICE // must be tested after config.h is included #include "dispatch/dispatch.h" #endif /* HAVE_DNS_SERVICE */ #define SOCKET_NOT_SET ((belle_sip_socket_t)-1) /*etc*/ #define BELLE_SIP_INTERFACE_GET_METHODS(obj,interface) \ ((BELLE_SIP_INTERFACE_METHODS_TYPE(interface)*)belle_sip_object_get_interface_methods((belle_sip_object_t*)obj,BELLE_SIP_INTERFACE_ID(interface))) #define __BELLE_SIP_INVOKE_LISTENER_BEGIN(list,interface_name,method) \ if (list!=NULL) {\ belle_sip_list_t *__copy=belle_sip_list_copy_with_data((list), (void* (*)(void*))belle_sip_object_ref);\ const belle_sip_list_t *__elem=__copy;\ do{\ void *__method;\ interface_name *__obj=(interface_name*)__elem->data;\ __method=BELLE_SIP_INTERFACE_GET_METHODS(__obj,interface_name)->method;\ if (__method) BELLE_SIP_INTERFACE_GET_METHODS(__obj,interface_name)-> #define __BELLE_SIP_INVOKE_LISTENER_REVERSE_BEGIN(list,interface_name,method) \ if (list!=NULL) {\ belle_sip_list_t *__copy=belle_sip_list_copy_reverse_with_data((list), (void* (*)(void*))belle_sip_object_ref);\ const belle_sip_list_t *__elem=__copy;\ do{\ void *__method;\ interface_name *__obj=(interface_name*)__elem->data;\ __method=BELLE_SIP_INTERFACE_GET_METHODS(__obj,interface_name)->method;\ if (__method) BELLE_SIP_INTERFACE_GET_METHODS(__obj,interface_name)-> #define __BELLE_SIP_INVOKE_LISTENER_END \ __elem=__elem->next;\ }while(__elem!=NULL);\ belle_sip_list_free_with_data(__copy,belle_sip_object_unref);\ } #define BELLE_SIP_INVOKE_LISTENERS_VOID(list,interface_name,method) \ __BELLE_SIP_INVOKE_LISTENER_BEGIN(list,interface_name,method)\ method(__obj);\ __BELLE_SIP_INVOKE_LISTENER_END #define BELLE_SIP_INVOKE_LISTENERS_ARG(list,interface_name,method,arg) \ __BELLE_SIP_INVOKE_LISTENER_BEGIN(list,interface_name,method)\ method(__obj,arg);\ __BELLE_SIP_INVOKE_LISTENER_END #define BELLE_SIP_INVOKE_LISTENERS_ARG1_ARG2(list,interface_name,method,arg1,arg2) \ __BELLE_SIP_INVOKE_LISTENER_BEGIN(list,interface_name,method)\ method(__obj,arg1,arg2);\ __BELLE_SIP_INVOKE_LISTENER_END #define BELLE_SIP_INVOKE_LISTENERS_REVERSE_ARG1_ARG2(list,interface_name,method,arg1,arg2) \ __BELLE_SIP_INVOKE_LISTENER_REVERSE_BEGIN(list,interface_name,method)\ method(__obj,arg1,arg2);\ __BELLE_SIP_INVOKE_LISTENER_END #define BELLE_SIP_INVOKE_LISTENERS_ARG1_ARG2_ARG3(list,interface_name,method,arg1,arg2,arg3) \ __BELLE_SIP_INVOKE_LISTENER_BEGIN(list,interface_name)\ method(__obj,arg1,arg2,arg3);\ __BELLE_SIP_INVOKE_LISTENER_END #define BELLE_SIP_INVOKE_LISTENER_ARG(listener,interface_name,method,arg) \ ((BELLE_SIP_INTERFACE_GET_METHODS((listener),interface_name)->method!=NULL) ? \ BELLE_SIP_INTERFACE_GET_METHODS((listener),interface_name)->method(listener,(arg)) : 0 ) typedef struct weak_ref{ struct weak_ref *next; belle_sip_object_destroy_notify_t notify; void *userpointer; }weak_ref_t; #ifdef __cplusplus extern "C" { #endif void *belle_sip_object_get_interface_methods(belle_sip_object_t *obj, belle_sip_interface_id_t ifid); /*used internally by unref()*/ void belle_sip_object_delete(void *obj); void belle_sip_object_pool_add(belle_sip_object_pool_t *pool, belle_sip_object_t *obj); void belle_sip_object_pool_remove(belle_sip_object_pool_t *pool, belle_sip_object_t *obj); belle_sip_object_t * _belle_sip_object_init(belle_sip_object_t *obj, belle_sip_object_vptr_t *vptr); void belle_sip_cpp_object_delete(belle_sip_object_t *obj); const char * belle_sip_cpp_object_get_type_name(const belle_sip_object_t *obj); void belle_sip_object_uninit(belle_sip_object_t *obj); #define belle_sip_object_init(obj) /*nothing*/ /*list of all vptrs (classes) used in belle-sip*/ BELLE_SIP_DECLARE_VPTR(belle_sip_stack_t); BELLE_SIP_DECLARE_VPTR(belle_sip_datagram_listening_point_t); BELLE_SIP_DECLARE_VPTR(belle_sip_provider_t); BELLE_SIP_DECLARE_VPTR(belle_sip_main_loop_t); BELLE_SIP_DECLARE_VPTR(belle_sip_source_t); BELLE_SIP_DECLARE_VPTR(belle_sip_dialog_t); BELLE_SIP_DECLARE_VPTR(belle_sip_header_address_t); BELLE_SIP_DECLARE_VPTR(belle_sip_header_contact_t); BELLE_SIP_DECLARE_VPTR(belle_sip_header_from_t); BELLE_SIP_DECLARE_VPTR(belle_sip_header_to_t); BELLE_SIP_DECLARE_VPTR(belle_sip_header_via_t); BELLE_SIP_DECLARE_VPTR(belle_sip_header_diversion_t); BELLE_SIP_DECLARE_VPTR(belle_sip_uri_t); BELLE_SIP_DECLARE_VPTR(belle_sip_message_t); BELLE_SIP_DECLARE_VPTR(belle_sip_request_t); BELLE_SIP_DECLARE_VPTR(belle_sip_response_t); BELLE_SIP_DECLARE_VPTR(belle_sip_parameters_t); BELLE_SIP_DECLARE_VPTR(belle_sip_header_call_id_t); BELLE_SIP_DECLARE_VPTR(belle_sip_header_retry_after_t); BELLE_SIP_DECLARE_VPTR(belle_sip_header_cseq_t); BELLE_SIP_DECLARE_VPTR(belle_sip_header_content_type_t); BELLE_SIP_DECLARE_VPTR(belle_sip_header_route_t); BELLE_SIP_DECLARE_VPTR(belle_sip_header_record_route_t); BELLE_SIP_DECLARE_VPTR(belle_sip_header_user_agent_t); BELLE_SIP_DECLARE_VPTR(belle_sip_header_content_length_t); BELLE_SIP_DECLARE_VPTR(belle_sip_header_t); BELLE_SIP_DECLARE_VPTR(belle_sip_header_extension_t); BELLE_SIP_DECLARE_VPTR(belle_sip_header_authorization_t); BELLE_SIP_DECLARE_VPTR(belle_sip_header_www_authenticate_t); BELLE_SIP_DECLARE_VPTR(belle_sip_header_proxy_authenticate_t); BELLE_SIP_DECLARE_VPTR(belle_sip_header_proxy_authorization_t); BELLE_SIP_DECLARE_VPTR(belle_sip_header_max_forwards_t); BELLE_SIP_DECLARE_VPTR(belle_sip_header_expires_t); BELLE_SIP_DECLARE_VPTR(belle_sip_header_allow_t); BELLE_SIP_DECLARE_VPTR(belle_sdp_attribute_t); BELLE_SIP_DECLARE_VPTR(belle_sdp_bandwidth_t); BELLE_SIP_DECLARE_VPTR(belle_sdp_connection_t); BELLE_SIP_DECLARE_VPTR(belle_sdp_email_t); BELLE_SIP_DECLARE_VPTR(belle_sdp_info_t); BELLE_SIP_DECLARE_VPTR(belle_sdp_key_t); BELLE_SIP_DECLARE_VPTR(belle_sdp_media_t); BELLE_SIP_DECLARE_VPTR(belle_sdp_media_description_t); BELLE_SIP_DECLARE_VPTR(belle_sdp_origin_t); BELLE_SIP_DECLARE_VPTR(belle_sdp_phone_t); BELLE_SIP_DECLARE_VPTR(belle_sdp_raw_attribute_t); BELLE_SIP_DECLARE_VPTR(belle_sdp_repeate_time_t); BELLE_SIP_DECLARE_VPTR(belle_sdp_rtcp_fb_attribute_t); BELLE_SIP_DECLARE_VPTR(belle_sdp_rtcp_xr_attribute_t); BELLE_SIP_DECLARE_VPTR(belle_sdp_content_attribute_t); BELLE_SIP_DECLARE_VPTR(belle_sdp_label_attribute_t); BELLE_SIP_DECLARE_VPTR(belle_sdp_creq_attribute_t); BELLE_SIP_DECLARE_VPTR(belle_sdp_csup_attribute_t); BELLE_SIP_DECLARE_VPTR(belle_sdp_tcap_attribute_t); BELLE_SIP_DECLARE_VPTR(belle_sdp_acap_attribute_t); BELLE_SIP_DECLARE_VPTR(belle_sdp_acfg_attribute_t); BELLE_SIP_DECLARE_VPTR(belle_sdp_pcfg_attribute_t); BELLE_SIP_DECLARE_VPTR(belle_sdp_session_description_t); BELLE_SIP_DECLARE_VPTR(belle_sdp_session_name_t); BELLE_SIP_DECLARE_VPTR(belle_sdp_time_t); BELLE_SIP_DECLARE_VPTR(belle_sdp_time_description_t); BELLE_SIP_DECLARE_VPTR(belle_sdp_uri_t); BELLE_SIP_DECLARE_VPTR(belle_sdp_version_t); BELLE_SIP_DECLARE_VPTR(belle_sdp_base_description_t); BELLE_SIP_DECLARE_VPTR(belle_sdp_mime_parameter_t); BELLE_SIP_DECLARE_VPTR(belle_sip_refresher_t); BELLE_SIP_DECLARE_VPTR(belle_sip_header_subscription_state_t); BELLE_SIP_DECLARE_VPTR(belle_sip_header_service_route_t); BELLE_SIP_DECLARE_VPTR(belle_sip_header_refer_to_t); BELLE_SIP_DECLARE_VPTR(belle_sip_header_referred_by_t); BELLE_SIP_DECLARE_VPTR(belle_sip_header_replaces_t); BELLE_SIP_DECLARE_VPTR(belle_sip_header_session_expires_t); BELLE_SIP_DECLARE_VPTR(belle_sip_header_date_t); BELLE_SIP_DECLARE_VPTR(belle_sip_hop_t); BELLE_SIP_DECLARE_VPTR(belle_sip_object_pool_t); BELLE_SIP_DECLARE_VPTR(belle_sip_header_p_preferred_identity_t); BELLE_SIP_DECLARE_VPTR(belle_sip_header_privacy_t); BELLE_SIP_DECLARE_VPTR(belle_sip_certificates_chain_t); BELLE_SIP_DECLARE_VPTR(belle_sip_signing_key_t); BELLE_SIP_DECLARE_VPTR(belle_sip_dns_srv_t); BELLE_SIP_DECLARE_VPTR(belle_sip_dict_t) BELLE_SIP_DECLARE_VPTR(belle_http_provider_t); BELLE_SIP_DECLARE_VPTR(belle_http_channel_context_t); BELLE_SIP_DECLARE_VPTR(belle_http_request_t); BELLE_SIP_DECLARE_VPTR(belle_http_response_t); BELLE_SIP_DECLARE_VPTR(belle_generic_uri_t); BELLE_SIP_DECLARE_VPTR(belle_http_callbacks_t); BELLE_SIP_DECLARE_VPTR(belle_tls_crypto_config_t); BELLE_SIP_DECLARE_VPTR(belle_http_header_authorization_t); BELLE_SIP_DECLARE_VPTR(belle_sip_header_event_t); BELLE_SIP_DECLARE_VPTR(belle_sip_header_supported_t); BELLE_SIP_DECLARE_VPTR(belle_sip_header_require_t); BELLE_SIP_DECLARE_VPTR(belle_sip_header_content_disposition_t); BELLE_SIP_DECLARE_VPTR(belle_sip_header_accept_t); BELLE_SIP_DECLARE_VPTR(belle_sip_header_reason_t); BELLE_SIP_DECLARE_VPTR(belle_sip_header_authentication_info_t); #ifdef HAVE_MDNS BELLE_SIP_DECLARE_VPTR(belle_sip_mdns_source_t); BELLE_SIP_DECLARE_VPTR(belle_sip_mdns_register_t); #endif BELLE_SIP_DECLARE_VPTR(belle_sip_resolver_results_t); BELLE_SIP_DECLARE_VPTR(belle_sip_digest_authentication_policy_t); BELLE_SIP_DECLARE_CUSTOM_VPTR_BEGIN(belle_sip_resolver_context_t,belle_sip_source_t) void (*cancel)(belle_sip_resolver_context_t *); void (*notify)(belle_sip_resolver_context_t *); BELLE_SIP_DECLARE_CUSTOM_VPTR_END BELLE_SIP_DECLARE_CUSTOM_VPTR_BEGIN(belle_sip_simple_resolver_context_t,belle_sip_resolver_context_t) BELLE_SIP_DECLARE_CUSTOM_VPTR_END BELLE_SIP_DECLARE_CUSTOM_VPTR_BEGIN(belle_sip_combined_resolver_context_t,belle_sip_resolver_context_t) BELLE_SIP_DECLARE_CUSTOM_VPTR_END BELLE_SIP_DECLARE_CUSTOM_VPTR_BEGIN(belle_sip_dual_resolver_context_t,belle_sip_resolver_context_t) BELLE_SIP_DECLARE_CUSTOM_VPTR_END void belle_sip_resolver_context_notify(belle_sip_resolver_context_t *ctx); struct belle_sip_source{ belle_sip_object_t base; belle_sip_list_t node; unsigned long id; belle_sip_fd_t fd; unsigned short events,revents; #ifdef _WIN32 long armed_events; unsigned short pad; #endif int64_t timeout; void *data; uint64_t expire_ms; int index; /* index in pollfd table */ belle_sip_source_func_t notify; belle_sip_source_remove_callback_t on_remove; belle_sip_socket_t sock; unsigned char cancelled; unsigned char expired; unsigned char oneshot; unsigned char notify_required; /*for testing purpose, use to ask for being scheduled*/ bctbx_iterator_t *it; /*for fast removal*/ belle_sip_main_loop_t *ml; }; void belle_sip_socket_source_init(belle_sip_source_t *s, belle_sip_source_func_t func, void *data, belle_sip_socket_t fd, unsigned int events, unsigned int timeout_value_ms); void belle_sip_fd_source_init(belle_sip_source_t *s, belle_sip_source_func_t func, void *data, belle_sip_fd_t fd, unsigned int events, unsigned int timeout_value_ms); belle_sip_source_t * belle_sip_fd_source_new(belle_sip_source_func_t func, void *data, belle_sip_fd_t fd, unsigned int events, unsigned int timeout_value_ms); void belle_sip_source_uninit(belle_sip_source_t *s); void belle_sip_source_set_notify(belle_sip_source_t *s, belle_sip_source_func_t func); /* include private headers */ #include "channel.h" #define belle_sip_new(type) (type*)belle_sip_malloc(sizeof(type)) #define belle_sip_new0(type) (type*)belle_sip_malloc0(sizeof(type)) #define belle_sip_list_next(elem) ((elem)->next) /* dictionary */ struct belle_sip_dict { belle_sip_object_t base; }; #undef MIN #define MIN(a,b) ((a)>(b) ? (b) : (a)) #undef MAX #define MAX(a,b) ((a)>(b) ? (a) : (b)) #define belle_sip_concat bctbx_concat /*parameters accessors*/ #define GET_SET_STRING(object_type,attribute) \ const char* object_type##_get_##attribute (const object_type##_t* obj) {\ return obj->attribute;\ }\ void object_type##_set_##attribute (object_type##_t* obj,const char* value) {\ const char* previous_value = obj->attribute; /*preserve if same value re-asigned*/ \ if (value) {\ obj->attribute=belle_sip_strdup(value); \ } else obj->attribute=NULL;\ if (previous_value != NULL) belle_sip_free((void*)previous_value);\ } /*#define GET_SET_STRING_PARAM_NULL_ALLOWED(object_type,attribute) \ GET_STRING_PARAM2(object_type,attribute,attribute) \ void object_type##_set_##func_name (object_type##_t* obj,const char* value) {\ belle_sip_parameters_set_parameter(BELLE_SIP_PARAMETERS(obj),#attribute,value);\ } */ #define GET_SET_STRING_PARAM(object_type,attribute) GET_SET_STRING_PARAM2(object_type,attribute,attribute) #define GET_SET_STRING_PARAM2(object_type,attribute,func_name) \ GET_STRING_PARAM2(object_type,attribute,func_name) \ void object_type##_set_##func_name (object_type##_t* obj,const char* value) {\ if (belle_sip_parameters_has_parameter(BELLE_SIP_PARAMETERS(obj),#attribute) && !value) {\ belle_sip_parameters_remove_parameter(BELLE_SIP_PARAMETERS(obj),#attribute); \ } else \ belle_sip_parameters_set_parameter(BELLE_SIP_PARAMETERS(obj),#attribute,value);\ } #define GET_STRING_PARAM2(object_type,attribute,func_name) \ const char* object_type##_get_##func_name (const object_type##_t* obj) {\ const char* l_value = belle_sip_parameters_get_parameter(BELLE_SIP_PARAMETERS(obj),#attribute);\ if (l_value == NULL) { \ /*belle_sip_warning("cannot find parameters [%s]",#attribute);*/\ return NULL;\ }\ return l_value;\ } #define DESTROY_STRING(object,attribute) if (object->attribute) belle_sip_free((void*)object->attribute); #define CLONE_STRING_GENERIC(object_type_src,object_type_dest,attribute,dest,src) \ if ( object_type_src##_get_##attribute (src)) {\ object_type_dest##_set_##attribute(dest,object_type_src##_get_##attribute(src));\ } #define CLONE_STRING(object_type,attribute,dest,src) CLONE_STRING_GENERIC(object_type,object_type,attribute,dest,src) #define GET_SET_INT(object_type,attribute,type) GET_SET_INT_PRIVATE(object_type,attribute,type,) #define GET_SET_INT_PRIVATE(object_type,attribute,type,set_prefix) \ type object_type##_get_##attribute (const object_type##_t* obj) {\ return obj->attribute;\ }\ void set_prefix##object_type##_set_##attribute (object_type##_t* obj,type value) {\ obj->attribute=value;\ } #define GET_SET_INT_PARAM(object_type,attribute,type) GET_SET_INT_PARAM_PRIVATE(object_type,attribute,type,) #define GET_SET_INT_PARAM2(object_type,attribute,type,func_name) GET_SET_INT_PARAM_PRIVATE2(object_type,attribute,type,,func_name) #define ATO_(type,value) ATO_##type(value) #define ATO_int(value) atoi(value) #define ATO_float(value) (float)strtod(value,NULL) #define FORMAT_(type) FORMAT_##type #define FORMAT_int "%i" #define FORMAT_float "%f" #define GET_SET_INT_PARAM_PRIVATE(object_type,attribute,type,set_prefix) GET_SET_INT_PARAM_PRIVATE2(object_type,attribute,type,set_prefix,attribute) #define GET_SET_INT_PARAM_PRIVATE2(object_type,attribute,type,set_prefix,func_name) \ type object_type##_get_##func_name (const object_type##_t* obj) {\ const char* l_value = belle_sip_parameters_get_parameter(BELLE_SIP_PARAMETERS(obj),#attribute);\ if (l_value == NULL) { \ /*belle_sip_error("cannot find parameters [%s]",#attribute);*/\ return -1;\ }\ return ATO_(type,l_value);\ }\ void set_prefix##object_type##_set_##func_name (object_type##_t* obj,type value) {\ char l_str_value[16];\ if (value == -1) { \ belle_sip_parameters_remove_parameter(BELLE_SIP_PARAMETERS(obj),#attribute);\ return;\ }\ snprintf(l_str_value,16,FORMAT_(type),value);\ belle_sip_parameters_set_parameter(BELLE_SIP_PARAMETERS(obj),#attribute,(const char*)l_str_value);\ } #define GET_SET_BOOL(object_type,attribute,getter) \ unsigned int object_type##_##getter##_##attribute (const object_type##_t* obj) {\ return obj->attribute;\ }\ void object_type##_set_##attribute (object_type##_t* obj,unsigned int value) {\ obj->attribute=value;\ } #define GET_SET_BOOL_PARAM2(object_type,attribute,getter,func_name) \ unsigned int object_type##_##getter##_##func_name (const object_type##_t* obj) {\ return belle_sip_parameters_has_parameter(BELLE_SIP_PARAMETERS(obj),#attribute);\ }\ void object_type##_set_##func_name (object_type##_t* obj,unsigned int value) {\ belle_sip_parameters_set_parameter(BELLE_SIP_PARAMETERS(obj),#attribute,NULL);\ } #define ANTLR_STREAM_NEW(object_type, value,length) \ antlr3StringStreamNew((pANTLR3_UINT8)value,ANTLR3_ENC_8BIT,(ANTLR3_UINT32)length,(pANTLR3_UINT8)#object_type) #define BELLE_PARSE(parser_name, object_type_prefix, object_type) \ object_type_prefix##object_type##_t* object_type_prefix##object_type##_parse (const char* value) { \ pANTLR3_INPUT_STREAM input; \ pbelle_sip_messageLexer lex; \ pANTLR3_COMMON_TOKEN_STREAM tokens; \ p##parser_name parser; \ object_type_prefix##object_type##_t* l_parsed_object; \ input = ANTLR_STREAM_NEW(object_type,value,strlen(value));\ lex = belle_sip_messageLexerNew (input);\ tokens = antlr3CommonTokenStreamSourceNew (ANTLR3_SIZE_HINT, TOKENSOURCE(lex));\ parser = parser_name##New (tokens);\ l_parsed_object = parser->object_type(parser);\ parser ->free(parser);\ tokens ->free(tokens);\ lex ->free(lex);\ input ->close(input);\ if (l_parsed_object == NULL) belle_sip_error(#object_type" parser error for [%s]",value);\ return l_parsed_object;\ } #define BELLE_SIP_PARSE(object_type) BELLE_PARSE(belle_sip_messageParser,belle_sip_,object_type) #define BELLE_NEW(object_type,super_type) \ BELLE_SIP_DECLARE_NO_IMPLEMENTED_INTERFACES(object_type##_t); \ BELLE_SIP_INSTANCIATE_VPTR( object_type##_t\ , super_type##_t\ , object_type##_destroy\ , object_type##_clone\ , object_type##_marshal, TRUE); \ object_type##_t* object_type##_new () { \ object_type##_t* l_object = belle_sip_object_new(object_type##_t);\ super_type##_init((super_type##_t*)l_object); \ object_type##_init((object_type##_t*) l_object); \ return l_object;\ } #define BELLE_SIP_NEW(object_type,super_type) BELLE_NEW (belle_sip_##object_type, belle_sip_##super_type) #define BELLE_SIP_NEW_HEADER(object_type,super_type,name) BELLE_SIP_NEW_HEADER_INIT(object_type,super_type,name,header) #define BELLE_SIP_NEW_HEADER_INIT(object_type,super_type,name,init_type) \ BELLE_SIP_DECLARE_NO_IMPLEMENTED_INTERFACES(belle_sip_##object_type##_t); \ BELLE_SIP_INSTANCIATE_VPTR( belle_sip_##object_type##_t\ , belle_sip_##super_type##_t\ , belle_sip_##object_type##_destroy\ , belle_sip_##object_type##_clone\ , belle_sip_##object_type##_marshal, TRUE); \ belle_sip_##object_type##_t* belle_sip_##object_type##_new () { \ belle_sip_##object_type##_t* l_object = belle_sip_object_new(belle_sip_##object_type##_t);\ belle_sip_##super_type##_init((belle_sip_##super_type##_t*)l_object); \ belle_sip_##init_type##_init((belle_sip_##init_type##_t*) l_object); \ if (name) belle_sip_header_set_name(BELLE_SIP_HEADER(l_object),name);\ return l_object;\ } struct belle_sip_param_pair { int ref; char* name; char* value; } ; void belle_sip_param_pair_destroy(belle_sip_param_pair_t* pair) ; int belle_sip_param_pair_comp_func(const belle_sip_param_pair_t *a, const char*b) ; int belle_sip_param_pair_case_comp_func(const belle_sip_param_pair_t *a, const char*b) ; belle_sip_param_pair_t* belle_sip_param_pair_ref(belle_sip_param_pair_t* obj); void belle_sip_param_pair_unref(belle_sip_param_pair_t* obj); /*class header*/ struct _belle_sip_header { belle_sip_object_t base; belle_sip_header_t* next; char *name; char *unparsed_value; }; void belle_sip_response_fill_for_dialog(belle_sip_response_t *obj, belle_sip_request_t *req); void belle_sip_util_copy_headers(belle_sip_message_t *orig, belle_sip_message_t *dest, const char*header, int multiple); void belle_sip_header_init(belle_sip_header_t* obj); /*class parameters*/ struct _belle_sip_parameters { belle_sip_header_t base; belle_sip_list_t* param_list; belle_sip_list_t* paramnames_list; }; void belle_sip_parameters_init(belle_sip_parameters_t *obj); /* * Listening points */ #include "listeningpoint_internal.h" struct belle_sip_hop{ belle_sip_object_t base; char *cname; char *host; char *transport; int port; int port_is_explicit; }; /* belle_sip_stack_t */ struct belle_sip_stack{ belle_sip_object_t base; belle_sip_main_loop_t *ml; belle_sip_timer_config_t timer_config; int transport_timeout; int unreliable_transport_timeout; int inactive_transport_timeout; int dns_timeout; int tx_delay; /*used to simulate network transmission delay, for tests*/ int send_error; /* used to simulate network error. if <0, channel_send will return this value*/ int resolver_tx_delay; /*used to simulate network transmission delay, for tests*/ int resolver_send_error; /* used to simulate network error*/ int test_bind_port; int dscp; char *dns_user_hosts_file; /* used to load additional hosts file for tests */ char *dns_resolv_conf; /*used to load custom resolv.conf, for tests*/ belle_sip_list_t *dns_servers; /*used when dns servers are supplied by app layer*/ /*http proxy stuff to be used by both http and sip provider*/ char *http_proxy_host; int http_proxy_port; char *http_proxy_username; /*for future use*/ char *http_proxy_passwd; /*for future use*/ belle_sip_digest_authentication_policy_t *digest_auth_policy; unsigned char dns_srv_enabled; unsigned char dns_search_enabled; unsigned char reconnect_to_primary_asap; unsigned char simulate_non_working_srv; #ifdef HAVE_DNS_SERVICE dispatch_queue_t dns_service_queue; unsigned char use_dns_service; #endif /* HAVE_DNS_SERVICE */ }; BELLESIP_EXPORT belle_sip_hop_t* belle_sip_hop_new(const char* transport, const char *cname, const char* host,int port); BELLESIP_EXPORT belle_sip_hop_t* belle_sip_hop_new_from_uri(const belle_sip_uri_t *uri); BELLESIP_EXPORT belle_sip_hop_t* belle_sip_hop_new_from_generic_uri(const belle_generic_uri_t *uri); BELLESIP_EXPORT belle_sip_hop_t * belle_sip_stack_get_next_hop(belle_sip_stack_t *stack, belle_sip_request_t *req); /* Return -1 if requested authentication is not compatible with local digest authentication security policy, 0 if compatible. */ BELLESIP_EXPORT int belle_sip_stack_check_digest_compatibility(const belle_sip_stack_t *stack, const belle_sip_header_www_authenticate_t *authenticate); /* belle_sip_provider_t */ struct belle_sip_provider{ belle_sip_object_t base; belle_sip_stack_t *stack; belle_sip_list_t *lps; /*listening points*/ belle_sip_list_t *listeners; belle_sip_list_t *internal_listeners; /*for transaction internaly managed by belle-sip. I.E by refreshers*/ belle_sip_list_t *client_transactions; belle_sip_list_t *server_transactions; belle_sip_list_t *dialogs; belle_sip_list_t *auth_contexts; unsigned short unconditional_answer; unsigned char rport_enabled; /*0 if rport should not be set in via header*/ unsigned char nat_helper; unsigned char unconditional_answer_enabled; unsigned char response_integrity_checking_enabled; }; BELLESIP_EXPORT belle_sip_provider_t *belle_sip_provider_new(belle_sip_stack_t *s, belle_sip_listening_point_t *lp); void belle_sip_provider_add_client_transaction(belle_sip_provider_t *prov, belle_sip_client_transaction_t *t); belle_sip_client_transaction_t *belle_sip_provider_find_matching_client_transaction(belle_sip_provider_t *prov, belle_sip_response_t *resp); void belle_sip_provider_remove_client_transaction(belle_sip_provider_t *prov, belle_sip_client_transaction_t *t); void belle_sip_provider_add_server_transaction(belle_sip_provider_t *prov, belle_sip_server_transaction_t *t); BELLESIP_EXPORT belle_sip_server_transaction_t * belle_sip_provider_find_matching_server_transaction(belle_sip_provider_t *prov,belle_sip_request_t *req); void belle_sip_provider_remove_server_transaction(belle_sip_provider_t *prov, belle_sip_server_transaction_t *t); void belle_sip_provider_set_transaction_terminated(belle_sip_provider_t *p, belle_sip_transaction_t *t); void *belle_sip_transaction_get_application_data_internal(const belle_sip_transaction_t *t); BELLESIP_EXPORT belle_sip_channel_t * belle_sip_provider_get_channel(belle_sip_provider_t *p, const belle_sip_hop_t *hop); void belle_sip_provider_add_dialog(belle_sip_provider_t *prov, belle_sip_dialog_t *dialog); void belle_sip_provider_remove_dialog(belle_sip_provider_t *prov, belle_sip_dialog_t *dialog); void belle_sip_provider_release_channel(belle_sip_provider_t *p, belle_sip_channel_t *chan); void belle_sip_provider_add_internal_sip_listener(belle_sip_provider_t *p, belle_sip_listener_t *l, int prepend); void belle_sip_provider_remove_internal_sip_listener(belle_sip_provider_t *p, belle_sip_listener_t *l); belle_sip_client_transaction_t * belle_sip_provider_find_matching_client_transaction_from_req(belle_sip_provider_t *prov, belle_sip_request_t *req); belle_sip_dialog_t *belle_sip_provider_find_dialog_from_message(belle_sip_provider_t *prov, belle_sip_message_t *msg, int as_uas); /*for testing purpose only:*/ BELLESIP_EXPORT void belle_sip_provider_dispatch_message(belle_sip_provider_t *prov, belle_sip_message_t *msg); typedef struct listener_ctx{ belle_sip_listener_t *listener; void *data; }listener_ctx_t; #define BELLE_SIP_PROVIDER_INVOKE_LISTENERS_FOR_TRANSACTION(t,callback,event) \ BELLE_SIP_PROVIDER_INVOKE_LISTENERS((t)->is_internal?(t)->provider->internal_listeners:(t)->provider->listeners,callback,event) #define BELLE_SIP_PROVIDER_INVOKE_LISTENERS_FOR_DIALOG(d,callback,event) \ BELLE_SIP_PROVIDER_INVOKE_LISTENERS((d)->is_internal?(d)->provider->internal_listeners:(d)->provider->listeners,callback,event) #define BELLE_SIP_PROVIDER_INVOKE_LISTENERS(listeners,callback,event) \ BELLE_SIP_INVOKE_LISTENERS_ARG((listeners),belle_sip_listener_t,callback,(event)) /* * http provider */ belle_http_provider_t *belle_http_provider_new(belle_sip_stack_t *s, const char *bind_ip, const uint8_t transports); /* * SIP and http messages **/ void belle_sip_message_init(belle_sip_message_t *message); struct _belle_sip_message { belle_sip_object_t base; belle_sip_list_t* header_list; belle_sip_body_handler_t *body_handler; char *multipart_body_cache; }; struct _belle_sip_request { belle_sip_message_t base; char* method; belle_sip_uri_t* uri; belle_generic_uri_t *absolute_uri; belle_sip_dialog_t *dialog;/*set if request was created by a dialog to avoid to search in dialog list*/ char *rfc2543_branch; /*computed 'branch' id in case we receive this request from an old RFC2543 stack*/ unsigned char dialog_queued; }; /** HTTP request**/ struct belle_http_request{ belle_sip_message_t base; belle_generic_uri_t *req_uri; char* method; belle_http_request_listener_t *listener; belle_generic_uri_t *orig_uri;/*original uri before removing host and user/passwd*/ belle_http_response_t *response; belle_sip_channel_t *channel; int auth_attempt_count; int background_task_id; int cancelled; int resubmitted; /* Indicates whether this request has been resubmitted to a new channel after the first one was closed by the server.*/ }; void belle_http_request_set_listener(belle_http_request_t *req, belle_http_request_listener_t *l); void belle_http_request_set_channel(belle_http_request_t *req, belle_sip_channel_t *chan); void belle_http_request_set_response(belle_http_request_t *req, belle_http_response_t *resp); /* belle_sip_transaction_t */ struct belle_sip_transaction{ belle_sip_object_t base; belle_sip_provider_t *provider; /*the provider that created this transaction */ belle_sip_request_t *request; belle_sip_response_t *last_response; belle_sip_channel_t *channel; belle_sip_dialog_t *dialog; belle_sip_source_t *call_repair_timer; char *branch_id; belle_sip_transaction_state_t state; void *appdata; unsigned char is_internal; unsigned char timed_out; unsigned char sent_by_dialog_queue; unsigned long bg_task_id; }; BELLE_SIP_DECLARE_CUSTOM_VPTR_BEGIN(belle_sip_transaction_t,belle_sip_object_t) void (*on_terminate)(belle_sip_transaction_t *obj); BELLE_SIP_DECLARE_CUSTOM_VPTR_END static BELLESIP_INLINE const belle_sip_timer_config_t * belle_sip_transaction_get_timer_config(belle_sip_transaction_t *obj){ return belle_sip_stack_get_timer_config(obj->provider->stack); } static BELLESIP_INLINE void belle_sip_transaction_start_timer(belle_sip_transaction_t *obj, belle_sip_source_t *timer){ belle_sip_main_loop_add_source(obj->provider->stack->ml,timer); } /** */ static BELLESIP_INLINE void belle_sip_transaction_stop_timer(belle_sip_transaction_t *obj, belle_sip_source_t *timer){ belle_sip_main_loop_remove_source(obj->provider->stack->ml,timer); } int belle_sip_client_transaction_is_notify_matching_pending_subscribe(belle_sip_client_transaction_t *trans , belle_sip_request_t *notify); void belle_sip_transaction_notify_timeout(belle_sip_transaction_t *t); void belle_sip_transaction_set_dialog(belle_sip_transaction_t *t, belle_sip_dialog_t *dialog); void belle_sip_transaction_set_state(belle_sip_transaction_t *t, belle_sip_transaction_state_t state); /* * * * Client transaction * * */ struct belle_sip_client_transaction{ belle_sip_transaction_t base; belle_sip_uri_t* preset_route; /*use to store outbound proxy, will be helpful for refresher*/ belle_sip_hop_t* next_hop; /*use to send cancel request*/ }; BELLE_SIP_DECLARE_CUSTOM_VPTR_BEGIN(belle_sip_client_transaction_t,belle_sip_transaction_t) void (*send_request)(belle_sip_client_transaction_t *); void (*on_response)(belle_sip_client_transaction_t *obj, belle_sip_response_t *resp); void (*stop_retransmissions)(belle_sip_client_transaction_t *obj); BELLE_SIP_DECLARE_CUSTOM_VPTR_END void belle_sip_client_transaction_init(belle_sip_client_transaction_t *obj, belle_sip_provider_t *prov, belle_sip_request_t *req); void belle_sip_client_transaction_add_response(belle_sip_client_transaction_t *t, belle_sip_response_t *resp); void belle_sip_client_transaction_notify_response(belle_sip_client_transaction_t *t, belle_sip_response_t *resp); struct belle_sip_ict{ belle_sip_client_transaction_t base; belle_sip_source_t *timer_A; belle_sip_source_t *timer_B; belle_sip_source_t *timer_D; belle_sip_source_t *timer_M; belle_sip_request_t *ack; /*last acknoleged provisional response sequence number. Note that "The RSeq numbering space is within a single transaction."*/ unsigned int r_cseq; }; typedef struct belle_sip_ict belle_sip_ict_t; BELLE_SIP_DECLARE_CUSTOM_VPTR_BEGIN(belle_sip_ict_t,belle_sip_client_transaction_t) BELLE_SIP_DECLARE_CUSTOM_VPTR_END belle_sip_ict_t * belle_sip_ict_new(belle_sip_provider_t *prov, belle_sip_request_t *req); struct belle_sip_nict{ belle_sip_client_transaction_t base; belle_sip_source_t *timer_F; belle_sip_source_t *timer_E; belle_sip_source_t *timer_K; }; typedef struct belle_sip_nict belle_sip_nict_t; BELLE_SIP_DECLARE_CUSTOM_VPTR_BEGIN(belle_sip_nict_t,belle_sip_client_transaction_t) BELLE_SIP_DECLARE_CUSTOM_VPTR_END belle_sip_nict_t * belle_sip_nict_new(belle_sip_provider_t *prov, belle_sip_request_t *req); /* * * * Server transaction * * */ struct belle_sip_server_transaction{ belle_sip_transaction_t base; char to_tag[8]; }; BELLE_SIP_DECLARE_CUSTOM_VPTR_BEGIN(belle_sip_server_transaction_t,belle_sip_transaction_t) int (*send_new_response)(belle_sip_server_transaction_t *, belle_sip_response_t *resp); void (*on_request_retransmission)(belle_sip_server_transaction_t *obj); BELLE_SIP_DECLARE_CUSTOM_VPTR_END void belle_sip_server_transaction_init(belle_sip_server_transaction_t *t, belle_sip_provider_t *prov,belle_sip_request_t *req); void belle_sip_server_transaction_on_request(belle_sip_server_transaction_t *t, belle_sip_request_t *req); struct belle_sip_ist{ belle_sip_server_transaction_t base; belle_sip_source_t *timer_G; belle_sip_source_t *timer_H; belle_sip_source_t *timer_I; belle_sip_source_t *timer_L; }; typedef struct belle_sip_ist belle_sip_ist_t; BELLE_SIP_DECLARE_CUSTOM_VPTR_BEGIN(belle_sip_ist_t,belle_sip_server_transaction_t) BELLE_SIP_DECLARE_CUSTOM_VPTR_END belle_sip_ist_t * belle_sip_ist_new(belle_sip_provider_t *prov, belle_sip_request_t *req); /* returns 0 if the ack should be notified to TU, or -1 otherwise*/ int belle_sip_ist_process_ack(belle_sip_ist_t *obj, belle_sip_message_t *ack); struct belle_sip_nist{ belle_sip_server_transaction_t base; belle_sip_source_t *timer_J; }; typedef struct belle_sip_nist belle_sip_nist_t; BELLE_SIP_DECLARE_CUSTOM_VPTR_BEGIN(belle_sip_nist_t,belle_sip_server_transaction_t) BELLE_SIP_DECLARE_CUSTOM_VPTR_END belle_sip_nist_t * belle_sip_nist_new(belle_sip_provider_t *prov, belle_sip_request_t *req); typedef enum belle_sip_dialog_type{ BELLE_SIP_DIALOG_INVITE, BELLE_SIP_DIALOG_SUBSCRIBE_NOTIFY }belle_sip_dialog_type_t; /* * Dialogs */ struct belle_sip_dialog{ belle_sip_object_t base; void *appdata; belle_sip_dialog_type_t type; belle_sip_provider_t *provider; belle_sip_request_t *last_out_invite; belle_sip_request_t *last_out_ack; /*so that it can be retransmitted when needed*/ belle_sip_response_t *last_200Ok; belle_sip_source_t *timer_200Ok; belle_sip_source_t *timer_200Ok_end; belle_sip_dialog_state_t state; belle_sip_dialog_state_t previous_state; belle_sip_header_call_id_t *call_id; belle_sip_header_address_t *local_party; belle_sip_header_address_t *remote_party; belle_sip_list_t *route_set; belle_sip_header_address_t *remote_target; belle_sip_source_t *expiration_timer; belle_sip_dialog_termination_cause_t termination_cause; char *local_tag; char *remote_tag; unsigned int local_cseq; unsigned int remote_cseq; belle_sip_transaction_t* last_transaction; belle_sip_header_privacy_t* privacy; belle_sip_list_t *queued_ct;/* queued client transactions*/ unsigned int remote_invite_cseq; /*needed because multiple trans can be handled whithin invite transaction (I.E UPDATE, PRACK,etc*/ unsigned char is_server; unsigned char is_secure; unsigned char terminate_on_bye; unsigned char needs_ack; unsigned char is_expired; unsigned char pending_trans_checking_enabled; /*use to disabled pending transaction check at request creation (testing)*/ unsigned char is_internal; /*Internal dialogs are those created by refreshers. */ unsigned char simulate_lost_ack; /*used by testers*/ }; belle_sip_dialog_t *belle_sip_dialog_new(belle_sip_transaction_t *t); belle_sip_dialog_t * belle_sip_provider_create_dialog_internal(belle_sip_provider_t *prov, belle_sip_transaction_t *t,unsigned int check_last_resp); int belle_sip_dialog_can_accept_request(const belle_sip_dialog_t *dialog, belle_sip_request_t *request) ; /*returns 1 if message belongs to the dialog, 0 otherwise */ int belle_sip_dialog_is_null_dialog_with_matching_subscribe(belle_sip_dialog_t *obj, const char *call_id, const char *local_tag, belle_sip_request_t *notify); int _belle_sip_dialog_match(belle_sip_dialog_t *obj, const char *call_id, const char *local_tag, const char *remote_tag); int belle_sip_dialog_match(belle_sip_dialog_t *obj, belle_sip_message_t *msg, int as_uas); int belle_sip_dialog_update(belle_sip_dialog_t *obj,belle_sip_transaction_t* transaction, int as_uas); void belle_sip_dialog_check_ack_sent(belle_sip_dialog_t*obj); int belle_sip_dialog_handle_ack(belle_sip_dialog_t *obj, belle_sip_request_t *ack); void belle_sip_dialog_queue_client_transaction(belle_sip_dialog_t *dialog, belle_sip_client_transaction_t *tr); void belle_sip_dialog_stop_200Ok_retrans(belle_sip_dialog_t *obj); /* belle_sip_response_t */ belle_sip_hop_t* belle_sip_response_get_return_hop(belle_sip_response_t *msg); /********************************************************* * SDP */ #define BELLE_SDP_PARSE(object_type) \ belle_sdp_##object_type##_t* belle_sdp_##object_type##_parse (const char* value) { \ if (!belle_sdp_use_belr) {\ pANTLR3_INPUT_STREAM input; \ pbelle_sdpLexer lex; \ pANTLR3_COMMON_TOKEN_STREAM tokens; \ pbelle_sdpParser parser; \ belle_sdp_##object_type##_t* l_parsed_object; \ input = ANTLR_STREAM_NEW(object_type, value,strlen(value));\ lex = belle_sdpLexerNew (input);\ tokens = antlr3CommonTokenStreamSourceNew (ANTLR3_SIZE_HINT, TOKENSOURCE(lex));\ parser = belle_sdpParserNew (tokens);\ l_parsed_object = parser->object_type(parser).ret;\ parser ->free(parser);\ tokens ->free(tokens);\ lex ->free(lex);\ input ->close(input);\ if (l_parsed_object == NULL) belle_sip_error(#object_type" parser error for [%s]",value);\ return l_parsed_object;\ } else {\ auto parser = bellesip::SDP::Parser::getInstance();\ auto object = parser->parse(value, #object_type);\ if (object == NULL) belle_sip_error(#object_type" parser error for [%s]",value);\ return (belle_sdp_##object_type##_t *)object;\ }\ } #define BELLE_SDP_BELR_PARSE(object_type) \ belle_sdp_##object_type##_t* belle_sdp_##object_type##_parse (const char* value) { \ auto parser = bellesip::SDP::Parser::getInstance();\ auto object = parser->parse(value, #object_type);\ if (object == NULL) belle_sip_error(#object_type" parser error for [%s]",value);\ return (belle_sdp_##object_type##_t *)object;\ } #define BELLE_SDP_NEW(object_type,super_type) \ BELLE_SIP_DECLARE_NO_IMPLEMENTED_INTERFACES(belle_sdp_##object_type##_t); \ BELLE_SIP_INSTANCIATE_VPTR( belle_sdp_##object_type##_t\ , super_type##_t\ , belle_sdp_##object_type##_destroy\ , belle_sdp_##object_type##_clone\ , belle_sdp_##object_type##_marshal, TRUE); \ belle_sdp_##object_type##_t* belle_sdp_##object_type##_new () { \ belle_sdp_##object_type##_t* l_object = belle_sip_object_new(belle_sdp_##object_type##_t);\ super_type##_init((super_type##_t*)l_object); \ return l_object;\ } #define BELLE_SDP_NEW_WITH_CTR(object_type,super_type) \ BELLE_SIP_DECLARE_NO_IMPLEMENTED_INTERFACES(belle_sdp_##object_type##_t); \ BELLE_SIP_INSTANCIATE_VPTR( belle_sdp_##object_type##_t\ , super_type##_t\ , belle_sdp_##object_type##_destroy\ , belle_sdp_##object_type##_clone\ , belle_sdp_##object_type##_marshal,TRUE); \ belle_sdp_##object_type##_t* belle_sdp_##object_type##_new () { \ belle_sdp_##object_type##_t* l_object = belle_sip_object_new(belle_sdp_##object_type##_t);\ super_type##_init((super_type##_t*)l_object); \ belle_sdp_##object_type##_init(l_object); \ return l_object;\ } struct belle_sip_dialog_terminated_event{ belle_sip_provider_t *source; belle_sip_dialog_t *dialog; int is_expired; }; struct belle_sip_io_error_event{ belle_sip_object_t *source; /*the object impacted by this error*/ const char *transport; const char *host; unsigned int port; }; struct belle_sip_request_event{ belle_sip_object_t *source; belle_sip_server_transaction_t *server_transaction; belle_sip_dialog_t *dialog; belle_sip_request_t *request; }; struct belle_sip_response_event{ belle_sip_object_t *source; belle_sip_client_transaction_t *client_transaction; belle_sip_dialog_t *dialog; belle_sip_response_t *response; }; struct belle_sip_timeout_event{ belle_sip_object_t *source; belle_sip_transaction_t *transaction; int is_server_transaction; }; struct belle_sip_transaction_terminated_event{ belle_sip_provider_t *source; belle_sip_transaction_t *transaction; int is_server_transaction; }; struct belle_sip_auth_event { belle_sip_object_t *source; belle_sip_auth_mode_t mode; char* username; char* userid; char* realm; char* passwd; char* ha1; char* domain; char* distinguished_name; belle_sip_certificates_chain_t * cert; belle_sip_signing_key_t* key; char* algorithm; /* either MD5 ot SHA256*/ }; belle_sip_auth_event_t* belle_sip_auth_event_create(belle_sip_object_t *source, const char* realm,const belle_sip_uri_t * from_uri); void belle_sip_auth_event_set_distinguished_name(belle_sip_auth_event_t* event,const char* value); /* * refresher * */ belle_sip_refresher_t* belle_sip_refresher_new(belle_sip_client_transaction_t* transaction); /* * returns a char, even if entry is escaped*/ size_t belle_sip_get_char (const char*a,char*out); /*return an escaped string*/ BELLESIP_EXPORT char* belle_sip_uri_to_escaped_userpasswd(const char* buff) ; BELLESIP_EXPORT char* belle_sip_uri_to_escaped_parameter(const char* buff) ; BELLESIP_EXPORT char* belle_sip_uri_to_escaped_header(const char* buff) ; /*(uri RFC 2396)*/ BELLESIP_EXPORT char* belle_generic_uri_to_escaped_query(const char* buff); BELLESIP_EXPORT char* belle_generic_uri_to_escaped_path(const char* buff); #define BELLE_SIP_SOCKET_TIMEOUT 30000 #define BELLE_SIP_BRANCH_ID_LENGTH 10 /*Shall not be less than 32bit */ #define BELLE_SIP_TAG_LENGTH 6 #define BELLE_SIP_MAX_TO_STRING_SIZE 2048 void belle_sip_header_contact_set_unknown(belle_sip_header_contact_t *a, int value); void belle_sip_request_set_dialog(belle_sip_request_t *req, belle_sip_dialog_t *dialog); void belle_sip_request_set_rfc2543_branch(belle_sip_request_t *req, const char *rfc2543branch); void belle_sip_dialog_update_request(belle_sip_dialog_t *dialog, belle_sip_request_t *req); belle_sip_error_code belle_sip_headers_marshal(belle_sip_message_t *message, char* buff, size_t buff_size, size_t *offset); #define SET_OBJECT_PROPERTY(obj,property_name,new_value) \ if (new_value) belle_sip_object_ref(new_value); \ if (obj->property_name){ \ belle_sip_object_unref(obj->property_name); \ }\ obj->property_name=new_value; #include "parserutils.h" /****************************** * * private Extension header inherit from header * ******************************/ typedef struct _belle_sip_header_extension belle_sip_header_extension_t; belle_sip_header_extension_t* belle_sip_header_extension_new(void); belle_sip_header_extension_t* belle_sip_header_extension_parse (const char* extension) ; BELLESIP_EXPORT belle_sip_header_extension_t* belle_sip_header_extension_create (const char* name,const char* value); BELLESIP_EXPORT const char* belle_sip_header_extension_get_value(const belle_sip_header_extension_t* extension); void belle_sip_header_extension_set_value(belle_sip_header_extension_t* extension,const char* value); #define BELLE_SIP_HEADER_EXTENSION(t) BELLE_SIP_CAST(t,belle_sip_header_extension_t) /**************** * belle_sip_body_handler_t object ***************/ BELLE_SIP_DECLARE_CUSTOM_VPTR_BEGIN(belle_sip_body_handler_t,belle_sip_object_t) void (*begin_recv_transfer)(belle_sip_body_handler_t *obj); void (*begin_send_transfer)(belle_sip_body_handler_t *obj); void (*end_transfer)(belle_sip_body_handler_t *obj); void (*chunk_recv)(belle_sip_body_handler_t *obj, belle_sip_message_t *msg, off_t offset, uint8_t *buf, size_t size); int (*chunk_send)(belle_sip_body_handler_t *obj, belle_sip_message_t *msg, off_t offset, uint8_t *buf, size_t * size); BELLE_SIP_DECLARE_CUSTOM_VPTR_END void belle_sip_body_handler_begin_recv_transfer(belle_sip_body_handler_t *obj); void belle_sip_body_handler_begin_send_transfer(belle_sip_body_handler_t *obj); void belle_sip_body_handler_recv_chunk(belle_sip_body_handler_t *obj, belle_sip_message_t *msg, uint8_t *buf, size_t size); int belle_sip_body_handler_send_chunk(belle_sip_body_handler_t *obj, belle_sip_message_t *msg, uint8_t *buf, size_t *size); void belle_sip_body_handler_end_transfer(belle_sip_body_handler_t *obj); BELLE_SIP_DECLARE_CUSTOM_VPTR_BEGIN(belle_sip_memory_body_handler_t,belle_sip_body_handler_t) BELLE_SIP_DECLARE_CUSTOM_VPTR_END BELLE_SIP_DECLARE_CUSTOM_VPTR_BEGIN(belle_sip_user_body_handler_t,belle_sip_body_handler_t) BELLE_SIP_DECLARE_CUSTOM_VPTR_END BELLE_SIP_DECLARE_CUSTOM_VPTR_BEGIN(belle_sip_file_body_handler_t,belle_sip_body_handler_t) BELLE_SIP_DECLARE_CUSTOM_VPTR_END BELLE_SIP_DECLARE_CUSTOM_VPTR_BEGIN(belle_sip_multipart_body_handler_t,belle_sip_body_handler_t) BELLE_SIP_DECLARE_CUSTOM_VPTR_END /** * file manipulation */ typedef struct authorization_context authorization_context_t; typedef authorization_context_t belle_sip_authorization_t; BELLESIP_EXPORT void belle_sip_authorization_destroy(belle_sip_authorization_t* object); BELLESIP_EXPORT const char *belle_sip_authorization_get_algorithm(const belle_sip_authorization_t* object); /** * Generate a random unsigned int */ uint32_t belle_sip_random(void); #ifdef __cplusplus } #endif #if TARGET_OS_IPHONE int belle_sip_get_ios_device_major_version(); #endif #endif belle-sip-5.2.0+dfsg/src/belle_sip_loop.c000066400000000000000000000577631434613136500202630ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "belle-sip/belle-sip.h" #include "belle_sip_internal.h" #include "bctoolbox/map.h" #include #ifndef _WIN32 #include #include typedef struct pollfd belle_sip_pollfd_t; static int belle_sip_poll(belle_sip_pollfd_t *pfd, int count, int duration){ int err; err=poll(pfd,count,duration); if (err==-1 && errno!=EINTR) belle_sip_error("poll() error: %s",strerror(errno)); return err; } /* Poll() based implementation of event loop. */ static int belle_sip_event_to_poll(unsigned int events){ int ret=0; if (events & BELLE_SIP_EVENT_READ) ret|=POLLIN; if (events & BELLE_SIP_EVENT_WRITE) ret|=POLLOUT; if (events & BELLE_SIP_EVENT_ERROR) ret|=POLLERR; return ret; } static unsigned int belle_sip_poll_to_event(belle_sip_pollfd_t * pfd){ unsigned int ret=0; short events=pfd->revents; if (events & POLLIN) ret|=BELLE_SIP_EVENT_READ; if (events & POLLOUT) ret|=BELLE_SIP_EVENT_WRITE; if (events & POLLERR) ret|=BELLE_SIP_EVENT_ERROR; return ret; } static void belle_sip_source_to_poll(belle_sip_source_t *s, belle_sip_pollfd_t *pfd, int i){ pfd[i].fd=s->fd; pfd[i].events=belle_sip_event_to_poll(s->events); pfd[i].revents=0; s->index=i; } static unsigned int belle_sip_source_get_revents(belle_sip_source_t *s,belle_sip_pollfd_t *pfd){ return belle_sip_poll_to_event(&pfd[s->index]); } #else #include typedef HANDLE belle_sip_pollfd_t; static void belle_sip_source_to_poll(belle_sip_source_t *s, belle_sip_pollfd_t *pfd,int i){ s->index=i; pfd[i]=s->fd; /*special treatments for windows sockets*/ if (s->sock!=(belle_sip_socket_t)-1){ int err; long events=0; if (s->events & BELLE_SIP_EVENT_READ) events|=FD_READ|FD_ACCEPT; if (s->events & BELLE_SIP_EVENT_WRITE) events|=FD_WRITE|FD_CONNECT; if (events!=s->armed_events){ s->armed_events=events; err=WSAEventSelect(s->sock,s->fd,events); if (err!=0) belle_sip_error("WSAEventSelect() failed: %s",belle_sip_get_socket_error_string()); } } } static unsigned int belle_sip_source_get_revents(belle_sip_source_t *s,belle_sip_pollfd_t *pfd){ WSANETWORKEVENTS revents={0}; int err; unsigned int ret=0; if (WaitForSingleObjectEx(s->fd,0,FALSE)==WAIT_OBJECT_0){ if (s->sock!=(belle_sip_socket_t)-1){ /*special treatments for windows sockets*/ err=WSAEnumNetworkEvents(s->sock,s->fd,&revents); if (err!=0){ belle_sip_error("WSAEnumNetworkEvents() failed: %s socket=%x",belle_sip_get_socket_error_string(),(unsigned int)s->sock); return 0; } if (revents.lNetworkEvents & FD_READ || revents.lNetworkEvents & FD_ACCEPT){ ret|=BELLE_SIP_EVENT_READ; } if (revents.lNetworkEvents & FD_WRITE || revents.lNetworkEvents & FD_CONNECT){ ret|=BELLE_SIP_EVENT_WRITE; } s->armed_events=0; }else{ ret=BELLE_SIP_EVENT_READ; ResetEvent(s->fd); } } return ret; } static int belle_sip_poll(belle_sip_pollfd_t *pfd, int count, int duration){ DWORD ret; if (count == 0) { belle_sip_sleep(duration); return 0; } ret=WaitForMultipleObjectsEx(count,pfd,FALSE,duration,FALSE); if (ret==WAIT_FAILED){ belle_sip_error("WaitForMultipleObjectsEx() failed."); return -1; } if (ret==WAIT_TIMEOUT){ return 0; } return ret-WAIT_OBJECT_0; } #endif static void belle_sip_source_destroy(belle_sip_source_t *obj){ if (obj->node.next || obj->node.prev){ belle_sip_fatal("Destroying source currently used in main loop !"); } belle_sip_source_uninit(obj); } static void belle_sip_source_init(belle_sip_source_t *s, belle_sip_source_func_t func, void *data, belle_sip_fd_t fd, unsigned int events, unsigned int timeout_value_ms){ static unsigned long global_id=1; s->node.data=s; if (s->id==0) s->id=global_id++; s->fd=fd; s->events=events; s->timeout=timeout_value_ms; s->data=data; s->notify=func; s->sock=(belle_sip_socket_t)-1; } void belle_sip_source_uninit(belle_sip_source_t *obj){ #ifdef _WIN32 if (obj->sock!=(belle_sip_socket_t)-1){ WSACloseEvent(obj->fd); obj->fd=(WSAEVENT)-1; } #endif obj->fd=(belle_sip_fd_t)-1; obj->sock=(belle_sip_socket_t)-1; /* if (obj->it) { bctbx_iterator_delete(obj->it); obj->it=NULL; }*/ } void belle_sip_source_set_notify(belle_sip_source_t *s, belle_sip_source_func_t func) { s->notify = func; } void belle_sip_socket_source_init(belle_sip_source_t *s, belle_sip_source_func_t func, void *data, belle_sip_socket_t sock, unsigned int events, unsigned int timeout_value_ms){ #ifdef _WIN32 /*on windows, the fd to poll is not the socket */ belle_sip_fd_t fd=(belle_sip_fd_t)-1; if (sock!=(belle_sip_socket_t)-1) fd=WSACreateEvent(); else fd=(WSAEVENT)-1; belle_sip_source_init(s,func,data,fd,events,timeout_value_ms); #else belle_sip_source_init(s,func,data,sock,events,timeout_value_ms); #endif s->sock=sock; if (sock!=(belle_sip_socket_t)-1) belle_sip_socket_set_nonblocking(sock); } void belle_sip_fd_source_init(belle_sip_source_t *s, belle_sip_source_func_t func, void *data, belle_sip_fd_t fd, unsigned int events, unsigned int timeout_value_ms){ belle_sip_source_init(s,func,data,fd,events,timeout_value_ms); } BELLE_SIP_DECLARE_NO_IMPLEMENTED_INTERFACES(belle_sip_source_t); BELLE_SIP_INSTANCIATE_VPTR(belle_sip_source_t,belle_sip_object_t,belle_sip_source_destroy,NULL,NULL,FALSE); belle_sip_source_t * belle_sip_socket_source_new(belle_sip_source_func_t func, void *data, belle_sip_socket_t sock, unsigned int events, unsigned int timeout_value_ms){ belle_sip_source_t *s=belle_sip_object_new(belle_sip_source_t); belle_sip_socket_source_init(s,func,data,sock,events,timeout_value_ms); return s; } belle_sip_source_t * belle_sip_fd_source_new(belle_sip_source_func_t func, void *data, belle_sip_fd_t fd, unsigned int events, unsigned int timeout_value_ms){ belle_sip_source_t *s=belle_sip_object_new(belle_sip_source_t); belle_sip_fd_source_init(s,func,data,fd,events,timeout_value_ms); return s; } belle_sip_source_t * belle_sip_timeout_source_new(belle_sip_source_func_t func, void *data, unsigned int timeout_value_ms){ return belle_sip_socket_source_new(func,data,(belle_sip_socket_t)-1,0,timeout_value_ms); } unsigned long belle_sip_source_get_id(const belle_sip_source_t *s){ return s->id; } void * belle_sip_source_get_user_data(const belle_sip_source_t *s) { return s->data; } void belle_sip_source_set_user_data(belle_sip_source_t *s, void *user_data) { s->data = user_data; } int belle_sip_source_set_events(belle_sip_source_t* source, int event_mask) { source->events = event_mask; return 0; } belle_sip_socket_t belle_sip_source_get_socket(const belle_sip_source_t* source) { return source->sock; } struct belle_sip_main_loop{ belle_sip_object_t base; belle_sip_list_t *fd_sources; bctbx_map_t *timer_sources; bctbx_mutex_t sources_mutex; // mutex to avoid concurency between source addition/removing/cancelling and main loop iteration. belle_sip_object_pool_t *pool; int nsources; int run; int in_loop; #ifndef _WIN32 int control_fds[2]; unsigned long thread_id; #endif }; static void belle_sip_main_loop_remove_source_internal( belle_sip_main_loop_t *ml, belle_sip_source_t *source, bool_t destroy_timer_sources ) { int unrefs = 0; bctbx_mutex_lock(&ml->sources_mutex); if (source->node.next || source->node.prev || &source->node==ml->fd_sources) { ml->fd_sources=belle_sip_list_remove_link(ml->fd_sources,&source->node); unrefs++; } if (source->it) { if (destroy_timer_sources) bctbx_map_erase(ml->timer_sources, source->it); bctbx_iterator_delete(source->it); source->it=NULL; unrefs++; } if (unrefs) { source->cancelled=TRUE; ml->nsources--; bctbx_mutex_unlock(&ml->sources_mutex); if (source->on_remove) source->on_remove(source); // the mutex must be taken for unrefing because belle_sip_object_unref() isn't thread-safe bctbx_mutex_lock(&ml->sources_mutex); for (; unrefs > 0; --unrefs) belle_sip_object_unref(source); } bctbx_mutex_unlock(&ml->sources_mutex); } void belle_sip_main_loop_remove_source(belle_sip_main_loop_t *ml, belle_sip_source_t *source) { belle_sip_main_loop_remove_source_internal(ml, source, TRUE); } static void belle_sip_main_loop_destroy(belle_sip_main_loop_t *ml){ bctbx_iterator_t *it = bctbx_map_ullong_begin(ml->timer_sources); bctbx_iterator_t *end = bctbx_map_ullong_end(ml->timer_sources); while (!bctbx_iterator_ullong_equals(it, end)) { belle_sip_main_loop_remove_source_internal( ml, (belle_sip_source_t *)bctbx_pair_ullong_get_second(bctbx_iterator_ullong_get_pair(it)), FALSE ); it = bctbx_iterator_ullong_get_next(it); } bctbx_iterator_ullong_delete(it); bctbx_iterator_ullong_delete(end); while (ml->fd_sources){ belle_sip_main_loop_remove_source(ml,(belle_sip_source_t*)ml->fd_sources->data); } if (belle_sip_object_pool_cleanable(ml->pool)){ belle_sip_object_unref(ml->pool); } bctbx_mmap_ullong_delete(ml->timer_sources); bctbx_mutex_destroy(&ml->sources_mutex); #ifndef _WIN32 close(ml->control_fds[0]); close(ml->control_fds[1]); #endif } BELLE_SIP_DECLARE_NO_IMPLEMENTED_INTERFACES(belle_sip_main_loop_t); BELLE_SIP_INSTANCIATE_VPTR(belle_sip_main_loop_t,belle_sip_object_t,belle_sip_main_loop_destroy,NULL,NULL,FALSE); belle_sip_main_loop_t *belle_sip_main_loop_new(void){ belle_sip_main_loop_t*m=belle_sip_object_new(belle_sip_main_loop_t); m->pool=belle_sip_object_pool_push(); m->timer_sources = bctbx_mmap_ullong_new(); bctbx_mutex_init(&m->sources_mutex,NULL); #ifndef _WIN32 if (pipe(m->control_fds) == -1){ belle_sip_fatal("Cannot create control pipe of main loop thread: %s", strerror(errno)); } if (fcntl(m->control_fds[0], F_SETFL, O_NONBLOCK) < 0) { belle_sip_fatal("Fail to set O_NONBLOCK flag on the reading fd of the control pipe: %s", strerror(errno)); } m->thread_id = 0; #endif return m; } void belle_sip_main_loop_wake_up(belle_sip_main_loop_t *ml); void belle_sip_main_loop_add_source(belle_sip_main_loop_t *ml, belle_sip_source_t *source){ bctbx_mutex_lock(&ml->sources_mutex); if (source->node.next || source->node.prev){ belle_sip_fatal("Source is already linked somewhere else."); } if (source->node.data!=source){ belle_sip_fatal("Insane source passed to belle_sip_main_loop_add_source() !"); } source->ml=ml; if (source->timeout>=0){ belle_sip_object_ref(source); source->expire_ms=belle_sip_time_ms()+source->timeout; source->it = bctbx_map_insert_and_delete_with_returned_it( ml->timer_sources, (bctbx_pair_t*)bctbx_pair_ullong_new(source->expire_ms, source) ); } source->cancelled=FALSE; if (source->fd != (belle_sip_fd_t)-1 ) { belle_sip_object_ref(source); ml->fd_sources=belle_sip_list_prepend_link(ml->fd_sources,&source->node); } ml->nsources++; #ifndef _WIN32 if (ml->thread_id != bctbx_thread_self()) belle_sip_main_loop_wake_up(ml); #endif bctbx_mutex_unlock(&ml->sources_mutex); } belle_sip_source_t* belle_sip_main_loop_create_timeout_with_remove_cb( belle_sip_main_loop_t *ml , belle_sip_source_func_t func , void *data , unsigned int timeout_value_ms , const char* timer_name , belle_sip_source_remove_callback_t remove_func) { belle_sip_source_t * s=belle_sip_timeout_source_new(func,data,timeout_value_ms); belle_sip_object_set_name((belle_sip_object_t*)s,timer_name); if (remove_func) { belle_sip_source_set_remove_cb(s, remove_func); } belle_sip_main_loop_add_source(ml,s); return s; } belle_sip_source_t* belle_sip_main_loop_create_timeout(belle_sip_main_loop_t *ml , belle_sip_source_func_t func , void *data , unsigned int timeout_value_ms ,const char* timer_name) { return belle_sip_main_loop_create_timeout_with_remove_cb(ml, func, data, timeout_value_ms,timer_name,NULL); } unsigned long belle_sip_main_loop_add_timeout(belle_sip_main_loop_t *ml, belle_sip_source_func_t func, void *data, unsigned int timeout_value_ms){ belle_sip_source_t * s=belle_sip_main_loop_create_timeout(ml,func,data,timeout_value_ms,"Timer"); belle_sip_object_unref(s); return s->id; } typedef struct { belle_sip_callback_t func; void *user_data; belle_sip_source_t *source; } DoLaterData; static int _do_later_cb(void *user_data, unsigned int event) { DoLaterData *data = (DoLaterData *)user_data; data->func(data->user_data); belle_sip_object_unref(data->source); belle_sip_free(data); return BELLE_SIP_STOP; } void belle_sip_main_loop_do_later_with_name( belle_sip_main_loop_t *ml, belle_sip_callback_t func, void *data, const char *timer_name ){ DoLaterData *dolater_data = belle_sip_new0(DoLaterData); dolater_data->func = func; dolater_data->user_data = data; /* The belle_sip_source_t is stored in dolater_data in order to decrement the refcounter in the same thread than the main loop's. Otherwise, the ref counter may be corrupted because of race conditions if the belle_sip_source_t was after the call to belle_sip_main_loop_add_source() */ dolater_data->source = belle_sip_timeout_source_new(_do_later_cb, dolater_data, 0); belle_sip_object_set_name((belle_sip_object_t *)dolater_data->source, timer_name ? timer_name : "deferred task"); dolater_data->source->oneshot=TRUE; /* This function MUST be the last to guarantee thread-safety. */ belle_sip_main_loop_add_source(ml,dolater_data->source); } void belle_sip_main_loop_do_later(belle_sip_main_loop_t *ml, belle_sip_callback_t func, void *data){ belle_sip_main_loop_do_later_with_name(ml, func, data, NULL); } void belle_sip_source_set_timeout(belle_sip_source_t *s, unsigned int value_ms) { /* WARNING: that's important to cast 'value_ms' into 'int' before giving it to belle_sip_source_set_timeout_int64() in order to mimic the behavior of belle_sip_source_set_timeout() when the timeout was declared as 'int' in the belle_sip_source_t structure. That allows to write belle_sip_source_set_timeout(s, -1) to disable the timeout. */ belle_sip_source_set_timeout_int64(s, (int)value_ms); } void belle_sip_source_set_timeout_int64(belle_sip_source_t *s, int64_t value_ms) { belle_sip_main_loop_t *ml = s->ml; int removed_from_map = FALSE; // take the mutex only when the source has been added to the mail loop if (ml) bctbx_mutex_lock(&ml->sources_mutex); if (!s->expired){ s->expire_ms=belle_sip_time_ms()+value_ms; if (s->it){ /*this timeout is already sorted in the timer_sources map, we need to move it to its new place*/ bctbx_map_erase(ml->timer_sources, s->it); bctbx_iterator_delete(s->it); if (value_ms != -1){ s->it = bctbx_map_insert_and_delete_with_returned_it(ml->timer_sources, (bctbx_pair_t*)bctbx_pair_ullong_new(s->expire_ms, s)); }else { s->it = NULL; removed_from_map = TRUE; } } } s->timeout = value_ms; if (removed_from_map) belle_sip_object_unref(s); if (ml) bctbx_mutex_unlock(&ml->sources_mutex); } void belle_sip_source_set_remove_cb(belle_sip_source_t *s, belle_sip_source_remove_callback_t func) { s->on_remove=func; } unsigned int belle_sip_source_get_timeout(const belle_sip_source_t *s) { return (unsigned int)s->timeout; } int64_t belle_sip_source_get_timeout_int64(const belle_sip_source_t *s) { return s->timeout; } void belle_sip_source_cancel(belle_sip_source_t *s){ if (s->ml) { bctbx_mutex_lock(&s->ml->sources_mutex); s->cancelled = TRUE; if (s->it) { bctbx_map_erase(s->ml->timer_sources, s->it); bctbx_iterator_delete(s->it); /*put on front*/ s->it = bctbx_map_insert_and_delete_with_returned_it(s->ml->timer_sources, (bctbx_pair_t*)bctbx_pair_ullong_new(0, s)); } bctbx_mutex_unlock(&s->ml->sources_mutex); } else { s->cancelled = TRUE; } } static int match_source_id(const void *s, const void *pid){ if ( ((belle_sip_source_t*)s)->id==(unsigned long)(intptr_t)pid){ return 0; } return -1; } belle_sip_source_t *belle_sip_main_loop_find_source(belle_sip_main_loop_t *ml, unsigned long id){ bctbx_iterator_t *it; belle_sip_source_t *ret=NULL; belle_sip_list_t *elem=belle_sip_list_find_custom(ml->fd_sources,match_source_id,(const void*)(intptr_t)id); if (elem!=NULL) { ret = (belle_sip_source_t*)elem->data; } else if ((it = bctbx_map_find_custom(ml->timer_sources, match_source_id, (const void*)(intptr_t)id))) { ret = (belle_sip_source_t*)bctbx_pair_get_second(bctbx_iterator_get_pair(it)); bctbx_iterator_delete(it); } /*else ret = NULL;*/ return ret; } void belle_sip_main_loop_cancel_source(belle_sip_main_loop_t *ml, unsigned long id){ belle_sip_source_t *s=belle_sip_main_loop_find_source(ml,id); if (s) belle_sip_source_cancel(s); } /** * Clear all data of a pipe. * @param[in] read_fd Opened file descriptor used to read the pipe. This fd MUST have O_NONBLOCK flag set. * @return On success, return the number of bytes that have been cleard or zero if the pipe was already empty. * On failure, return -1 and set errno. */ static ssize_t clear_pipe(int read_fd) { char buffer[1024]; ssize_t nread, cum_nread = 0; do { nread = read(read_fd, buffer, sizeof(buffer)); if (nread > 0) cum_nread += nread; } while (nread > 0); if (nread < 0 && errno != EAGAIN) return -1; else return cum_nread; } static void belle_sip_main_loop_iterate(belle_sip_main_loop_t *ml){ size_t pfd_size = (ml->nsources + 1) * sizeof(belle_sip_pollfd_t); belle_sip_pollfd_t *pfd=(belle_sip_pollfd_t*)belle_sip_malloc0(pfd_size); int i=0; belle_sip_list_t *elem,*next; int duration=-1; int ret; uint64_t cur; belle_sip_list_t *to_be_notified=NULL; int can_clean=belle_sip_object_pool_cleanable(ml->pool); /*iterate might not be called by the thread that created the main loop*/ belle_sip_object_pool_t *tmp_pool=NULL; bctbx_iterator_t *it,*end; if (!can_clean){ /*Push a temporary pool for the time of the iterate loop*/ tmp_pool=belle_sip_object_pool_push(); } /*Step 1: prepare the pollfd table and get the next timeout value */ bctbx_mutex_lock(&ml->sources_mutex); // Lock for the whole step 1 for(elem=ml->fd_sources;elem!=NULL;elem=next) { next=elem->next; belle_sip_source_t *s=(belle_sip_source_t*)elem->data; if (!s->cancelled){ if (s->fd!=(belle_sip_fd_t)-1){ belle_sip_source_to_poll(s,pfd,i); ++i; } } } #ifndef _WIN32 pfd[i].fd = ml->control_fds[0]; pfd[i].events = POLLIN; ++i; #endif /*all source with timeout are in ml->timer_sources*/ if (bctbx_map_size(ml->timer_sources) >0) { int64_t diff; uint64_t next_wakeup_time; it = bctbx_map_begin(ml->timer_sources); /*use first because in case of canceled timer, key ==0 , key != s->expire_ms */ next_wakeup_time = bctbx_pair_ullong_get_first((const bctbx_pair_ullong_t *)bctbx_iterator_get_pair(it)); /* compute the amount of time to wait for shortest timeout*/ cur=belle_sip_time_ms(); diff=next_wakeup_time-cur; if (diff>0) duration=MIN((unsigned int)diff,INT_MAX); else duration=0; bctbx_iterator_delete(it); it = NULL; } bctbx_mutex_unlock(&ml->sources_mutex); /* do the poll */ ret=belle_sip_poll(pfd,i,duration); if (ret==-1){ goto end; } #ifndef _WIN32 if (pfd[i - 1].revents == POLLIN){ if (clear_pipe(ml->control_fds[0]) == -1) belle_sip_fatal("Cannot read control pipe of main loop thread: %s", strerror(errno)); } #endif /* Step 2: examine poll results and determine the list of source to be notified */ bctbx_mutex_lock(&ml->sources_mutex); // Lock for step 2 and step 3. cur=belle_sip_time_ms(); for(elem=ml->fd_sources;elem!=NULL;elem=elem->next){ unsigned revents=0; belle_sip_source_t *s=(belle_sip_source_t*)elem->data; if (!s->cancelled){ if (s->fd!=(belle_sip_fd_t)-1){ if (s->notify_required) { /*for testing purpose to force channel to read*/ revents=BELLE_SIP_EVENT_READ; s->notify_required=0; /*reset*/ } else { revents=belle_sip_source_get_revents(s,pfd); } s->revents=revents; } else { belle_sip_error("Source [%p] does not contains any fd !",s); } if (revents!=0){ to_be_notified=belle_sip_list_append(to_be_notified,belle_sip_object_ref(s)); } }else to_be_notified=belle_sip_list_append(to_be_notified,belle_sip_object_ref(s)); } /* Step 3: find timeouted sources */ it = bctbx_map_begin(ml->timer_sources); end = bctbx_map_end(ml->timer_sources); while (!bctbx_iterator_equals(it,end)) { /*use first because in case of canceled timer, key != s->expire_ms*/ uint64_t expire = bctbx_pair_ullong_get_first((const bctbx_pair_ullong_t *)bctbx_iterator_get_pair(it)); belle_sip_source_t *s = (belle_sip_source_t*)bctbx_pair_get_second(bctbx_iterator_get_pair(it)); if (expire > cur) { /* no need to continue looping because map is ordered*/ break; } else { if (s->revents==0) { s->expired=TRUE; to_be_notified=belle_sip_list_append(to_be_notified,belle_sip_object_ref(s)); } /*else already in to_be_notified by Step 2*/ s->revents|=BELLE_SIP_EVENT_TIMEOUT; it=bctbx_iterator_get_next(it); } } bctbx_iterator_delete(it); bctbx_iterator_delete(end); bctbx_mutex_unlock(&ml->sources_mutex); /* Step 4: notify those to be notified */ for(elem=to_be_notified;elem!=NULL;){ belle_sip_source_t *s=(belle_sip_source_t*)elem->data; next=elem->next; if (!s->cancelled){ if (belle_sip_log_level_enabled(BELLE_SIP_LOG_DEBUG)) { /*to avoid too many traces*/ char *objdesc=belle_sip_object_to_string((belle_sip_object_t*)s); belle_sip_debug("source %s notified revents=%u, timeout=%i",objdesc,s->revents,(int)s->timeout); belle_sip_free(objdesc); } ret=s->notify(s->data,s->revents); if (ret==BELLE_SIP_STOP || s->oneshot){ /*this source needs to be removed*/ belle_sip_main_loop_remove_source(ml,s); } else { bctbx_mutex_lock(&ml->sources_mutex); if (s->expired && s->it) { bctbx_map_erase(ml->timer_sources, s->it); bctbx_iterator_delete(s->it); s->it=NULL; belle_sip_object_unref(s); } if (!s->it && s->timeout >= 0){ /*timeout needs to be started again */ if (ret==BELLE_SIP_CONTINUE_WITHOUT_CATCHUP){ s->expire_ms=cur+s->timeout; }else{ s->expire_ms+=s->timeout; } s->expired=FALSE; s->it = bctbx_map_insert_and_delete_with_returned_it(ml->timer_sources, (bctbx_pair_t*)bctbx_pair_ullong_new(s->expire_ms, s)); belle_sip_object_ref(s); } bctbx_mutex_unlock(&ml->sources_mutex); } } else { belle_sip_main_loop_remove_source(ml,s); } s->revents=0; belle_sip_object_unref(s); belle_sip_free(elem); /*free just the element*/ elem=next; } if (can_clean) belle_sip_object_pool_clean(ml->pool); else if (tmp_pool) { belle_sip_object_unref(tmp_pool); tmp_pool=NULL; } end: belle_sip_free(pfd); } void belle_sip_main_loop_run(belle_sip_main_loop_t *ml){ #ifndef _WIN32 ml->thread_id = bctbx_thread_self(); #endif if (ml->in_loop){ belle_sip_warning("belle_sip_main_loop_run(): reentrancy detected, doing nothing"); return; } ml->run = TRUE; ml->in_loop = TRUE; while(ml->run){ belle_sip_main_loop_iterate(ml); } ml->in_loop = FALSE; } int belle_sip_main_loop_quit(belle_sip_main_loop_t *ml){ ml->run=0; return BELLE_SIP_STOP; } void belle_sip_main_loop_sleep(belle_sip_main_loop_t *ml, int milliseconds){ belle_sip_source_t * s=belle_sip_main_loop_create_timeout(ml,(belle_sip_source_func_t)belle_sip_main_loop_quit,ml,milliseconds,"Main loop sleep timer"); belle_sip_main_loop_run(ml); belle_sip_main_loop_remove_source(ml,s); belle_sip_object_unref(s); } #ifndef _WIN32 void belle_sip_main_loop_wake_up(belle_sip_main_loop_t *ml) { if (write(ml->control_fds[1], "wake up!", 1) == -1) { belle_sip_fatal("Cannot write to control pipe of main loop thread: %s", strerror(errno)); } } #endif belle-sip-5.2.0+dfsg/src/belle_sip_mdns_register.c000066400000000000000000000130001434613136500221270ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "belle_sip_internal.h" #include #ifdef HAVE_MDNS #include #ifndef _WIN32 #include #include typedef struct pollfd belle_sip_pollfd_t; static int belle_sip_poll(belle_sip_pollfd_t *pfd, int count, int duration) { int err = poll(pfd, count, duration); if (err == -1 && errno != EINTR) belle_sip_error("poll() error: %s",strerror(errno)); return err; } #else #include typedef WSAPOLLFD belle_sip_pollfd_t; static int belle_sip_poll(belle_sip_pollfd_t *pfd, int count, int duration) { int err = WSAPoll(pfd, count, duration); if (err == SOCKET_ERROR) belle_sip_error("WSAPoll() error: %d", WSAGetLastError()); return err; } #endif struct belle_sip_mdns_register { belle_sip_object_t base; DNSServiceRef service_ref; belle_sip_mdns_register_callback_t cb; void *data; bctbx_thread_t thread; volatile bool_t running; }; belle_sip_mdns_register_t *belle_sip_mdns_register_create(belle_sip_mdns_register_callback_t cb, void *data) { belle_sip_mdns_register_t *obj = belle_sip_object_new(belle_sip_mdns_register_t); obj->cb = cb; obj->data = data; obj->running = FALSE; return obj; } BELLE_SIP_DECLARE_NO_IMPLEMENTED_INTERFACES(belle_sip_mdns_register_t); BELLE_SIP_INSTANCIATE_VPTR(belle_sip_mdns_register_t, belle_sip_object_t, NULL, NULL, NULL, FALSE); static char * srv_prefix_from_service_and_transport(const char *service, const char *transport) { if (service == NULL) service = "sip"; if (strcasecmp(transport, "udp") == 0) { return belle_sip_strdup_printf("_%s._udp.", service); } else if (strcasecmp(transport, "tcp") == 0) { return belle_sip_strdup_printf("_%s._tcp.", service); } else if (strcasecmp(transport, "tls") == 0) { return belle_sip_strdup_printf("_%ss._tcp.", service); } return belle_sip_strdup_printf("_%s._udp.", service); } static void belle_sip_mdns_register_reply(DNSServiceRef service_ref , DNSServiceFlags flags , DNSServiceErrorType error_code , const char *name , const char *type , const char *domain , void *data) { belle_sip_mdns_register_t *reg = (belle_sip_mdns_register_t *)data; int error = 0; if (error_code != kDNSServiceErr_NoError) { belle_sip_error("%s error while registering %s [%s%s]: code %d", __FUNCTION__, name, type, domain, error_code); error = -1; } if (reg->cb) reg->cb(reg->data, error); } void *mdns_register_poll(void *data) { belle_sip_mdns_register_t *reg = (belle_sip_mdns_register_t *)data; belle_sip_pollfd_t pollfd = {0}; pollfd.fd = DNSServiceRefSockFD(reg->service_ref); pollfd.events = POLLIN; reg->running = TRUE; while(reg->running) { int err = belle_sip_poll(&pollfd, 1, 1000); if (err > 0) { DNSServiceProcessResult(reg->service_ref); } } return NULL; } #endif int belle_sip_mdns_register_available(void) { #ifdef HAVE_MDNS return TRUE; #else return FALSE; #endif } belle_sip_mdns_register_t *belle_sip_mdns_register(const char *service, const char *transport, const char *domain, const char *name, int port, int prio, int weight, int ttl, belle_sip_mdns_register_callback_t cb, void *data) { #ifdef HAVE_MDNS belle_sip_mdns_register_t *reg = belle_sip_mdns_register_create(cb, data); DNSServiceErrorType error; TXTRecordRef txt_ref; char number[10]; char *prefix; int n; TXTRecordCreate(&txt_ref, 0, NULL); n = snprintf(number, sizeof(number), "%d", prio); TXTRecordSetValue(&txt_ref, "prio\0", n, number); n = snprintf(number, sizeof(number), "%d", weight); TXTRecordSetValue(&txt_ref, "weight\0", n, number); n = snprintf(number, sizeof(number), "%d", ttl); TXTRecordSetValue(&txt_ref, "ttl\0", n, number); prefix = srv_prefix_from_service_and_transport(service, transport); error = DNSServiceRegister(®->service_ref , 0 , 0 , name , prefix , domain , NULL , port , TXTRecordGetLength(&txt_ref) , TXTRecordGetBytesPtr(&txt_ref) , belle_sip_mdns_register_reply , reg); belle_sip_free(prefix); TXTRecordDeallocate(&txt_ref); if (error != kDNSServiceErr_NoError) { belle_sip_error("%s Register error [_%s._%s.%s]: code %d", __FUNCTION__, service, transport, domain, error); belle_sip_object_unref(reg); return NULL; } else { int errnum = bctbx_thread_create(®->thread, NULL, mdns_register_poll, reg); if (errnum != 0) { belle_sip_error("%s Error creating register thread: code %d", __FUNCTION__, errnum); belle_sip_object_unref(reg); return NULL; } } return reg; #else return NULL; #endif } void belle_sip_mdns_unregister(belle_sip_mdns_register_t *reg) { #ifdef HAVE_MDNS if (!reg) return; if (reg->running) { reg->running = FALSE; bctbx_thread_join(reg->thread, NULL); } DNSServiceRefDeallocate(reg->service_ref); belle_sip_object_unref(reg); #endif } belle-sip-5.2.0+dfsg/src/belle_sip_object.c000066400000000000000000000655211434613136500205470ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "belle_sip_internal.h" static void _belle_sip_object_pool_remove_from_stack(belle_sip_object_pool_t *pool); static int _belle_sip_object_marshal_check_enabled = FALSE; static int has_type(belle_sip_object_t *obj, belle_sip_type_id_t id){ belle_sip_object_vptr_t *vptr=obj->vptr; while(vptr!=NULL){ if (vptr->id==id) return TRUE; vptr=vptr->get_parent(); } return FALSE; } int _belle_sip_object_is_instance_of(belle_sip_object_t * obj,belle_sip_type_id_t id) { return has_type(obj,id); } void belle_sip_object_enable_marshal_check(int enable) { _belle_sip_object_marshal_check_enabled = (enable) ? TRUE : FALSE; } static const char * belle_sip_object_vptr_get_type_name(const belle_sip_object_t *obj){ if (!obj->vptr->is_cpp) return obj->vptr->type_name; return belle_sip_cpp_object_get_type_name(obj); } static belle_sip_list_t *all_objects=NULL; static int belle_sip_leak_detector_enabled=FALSE; static int belle_sip_leak_detector_inhibited=FALSE; static void add_new_object(belle_sip_object_t *obj){ if (belle_sip_leak_detector_enabled && !belle_sip_leak_detector_inhibited){ all_objects=belle_sip_list_prepend(all_objects,obj); } } void belle_sip_object_remove_from_leak_detector(belle_sip_object_t *obj){ if (belle_sip_leak_detector_enabled && !belle_sip_leak_detector_inhibited){ belle_sip_list_t* it; it=belle_sip_list_find(all_objects,obj); if (it) all_objects = belle_sip_list_delete_link(all_objects,it); /*it may fail if the leak detector was inhibitted at the time the object was created*/ } } void belle_sip_object_inhibit_leak_detector(int yes){ belle_sip_leak_detector_inhibited=yes ? TRUE : FALSE; } void belle_sip_object_enable_leak_detector(int enable){ belle_sip_leak_detector_enabled=enable; } int belle_sip_object_get_object_count(void){ return (int)belle_sip_list_size(all_objects); } void belle_sip_object_flush_active_objects(void){ //do not free objects so that they are still detected as leaked by valgrind and such all_objects = belle_sip_list_free(all_objects); } void belle_sip_object_dump_active_objects(void){ belle_sip_list_t *elem; if (all_objects){ belle_sip_warning("List of leaked objects:"); for(elem=all_objects;elem!=NULL;elem=elem->next){ belle_sip_object_t *obj=(belle_sip_object_t*)elem->data; char* content= belle_sip_object_to_string(obj); belle_sip_warning("%s(%p) ref=%i, content [%10s...]",belle_sip_object_vptr_get_type_name(obj),obj,obj->ref,content); belle_sip_free(content); } }else belle_sip_warning("No objects leaked."); } belle_sip_object_t * _belle_sip_object_init(belle_sip_object_t *obj, belle_sip_object_vptr_t *vptr){ obj->vptr = vptr; obj->ref = vptr->initially_unowned ? 0 : 1; if (obj->ref == 0) { belle_sip_object_pool_t *pool=belle_sip_object_pool_get_current(); if (pool) belle_sip_object_pool_add(pool,obj); } add_new_object(obj); return obj; } belle_sip_object_t * _belle_sip_object_new(size_t objsize, belle_sip_object_vptr_t *vptr){ belle_sip_object_t *obj=(belle_sip_object_t *)belle_sip_malloc0(vptr->size); return _belle_sip_object_init(obj, vptr); } int belle_sip_object_is_initially_unowned(const belle_sip_object_t *obj){ return obj->vptr->initially_unowned; } belle_sip_object_t * belle_sip_object_ref(void *obj){ belle_sip_object_t *o=BELLE_SIP_OBJECT(obj); if (o->ref == 0 && o->pool) { belle_sip_object_pool_remove(o->pool,obj); } if (o->vptr->on_first_ref && (o->ref == 0 || (!o->vptr->initially_unowned && o->ref == 1))) o->vptr->on_first_ref(o); o->ref++; return obj; } void belle_sip_object_unref(void *ptr) { belle_sip_object_unref_2(ptr); } int belle_sip_object_unref_2(void *ptr) { belle_sip_object_t *obj=BELLE_SIP_OBJECT(ptr); if (obj->ref <= -1) { belle_sip_error("Object [%p] freed twice or corrupted !",obj); if (obj->vptr && obj->vptr->type_name) belle_sip_error("Object type might be [%s]",obj->vptr->type_name); if (obj->name) belle_sip_error("Object name might be [%s]",obj->name); belle_sip_fatal("Fatal object error encountered, aborting."); return 1; } if (obj->vptr->initially_unowned && obj->ref==0){ if (obj->pool) belle_sip_object_pool_remove(obj->pool,obj); obj->ref=-1; belle_sip_object_delete(obj); return 1; } if (obj->vptr->on_last_ref){ if ((obj->vptr->initially_unowned && obj->ref==1) || (!obj->vptr->initially_unowned && obj->ref == 2)){ obj->vptr->on_last_ref(obj); } } obj->ref--; /* keep the ref until here to make sure obj is not deleted by obj->vptr->on_last_ref*/ if (obj->ref == 0){ obj->ref = -1; belle_sip_object_delete(obj); return 1; } return 0; } static weak_ref_t *weak_ref_new(belle_sip_object_destroy_notify_t destroy_notify, void *userpointer){ weak_ref_t *r=belle_sip_new(weak_ref_t); r->next=NULL; r->notify=destroy_notify; r->userpointer=userpointer; return r; } belle_sip_object_t *belle_sip_object_weak_ref(void *obj, belle_sip_object_destroy_notify_t destroy_notify, void *userpointer){ belle_sip_object_t *o=BELLE_SIP_OBJECT(obj); weak_ref_t *old=o->weak_refs; o->weak_refs=weak_ref_new(destroy_notify,userpointer); o->weak_refs->next=old; return o; } void belle_sip_object_weak_unref(void *obj, belle_sip_object_destroy_notify_t destroy_notify, void *userpointer){ belle_sip_object_t *o=BELLE_SIP_OBJECT(obj); weak_ref_t *ref,*prevref=NULL,*next=NULL; int found=FALSE; if (o->ref==-1) return; /*too late and avoid recursions*/ for(ref=o->weak_refs;ref!=NULL;ref=next){ next=ref->next; if (ref->notify==destroy_notify && ref->userpointer==userpointer){ if (prevref==NULL) o->weak_refs=next; else prevref->next=next; belle_sip_free(ref); found=TRUE; /*do not break or return, someone could have put twice the same weak ref on the same object*/ }else{ prevref=ref; } } if (!found) belle_sip_fatal("Could not find weak_ref, you're a looser."); } static void belle_sip_object_loose_weak_refs(belle_sip_object_t *obj){ weak_ref_t *ref,*next; for(ref=obj->weak_refs;ref!=NULL;ref=next){ next=ref->next; ref->notify(ref->userpointer,obj); belle_sip_free(ref); } obj->weak_refs=NULL; } static void _belle_sip_object_uninit(belle_sip_object_t *obj){ if (obj->name) belle_sip_free(obj->name); } static void _belle_sip_object_clone(belle_sip_object_t *obj, const belle_sip_object_t *orig){ if (orig->name!=NULL) obj->name=belle_sip_strdup(orig->name); } static belle_sip_error_code _belle_object_marshal(belle_sip_object_t* obj, char* buff, size_t buff_size, size_t *offset) { return belle_sip_snprintf(buff,buff_size,offset,"{%s::%s %p}",belle_sip_object_vptr_get_type_name(obj),obj->name ? obj->name : "(no name)",obj); } static belle_sip_object_vptr_t *no_parent(void){ return NULL; } belle_sip_object_vptr_t belle_sip_object_t_vptr={ BELLE_SIP_TYPE_ID(belle_sip_object_t), sizeof(belle_sip_object_t), "belle_sip_object_t", FALSE, no_parent, /*no parent, it's god*/ NULL, _belle_sip_object_uninit, _belle_sip_object_clone, _belle_object_marshal, BELLE_SIP_DEFAULT_BUFSIZE_HINT }; belle_sip_object_vptr_t *belle_sip_object_t_vptr_get(void){ return &belle_sip_object_t_vptr; } void belle_sip_object_uninit(belle_sip_object_t *obj){ belle_sip_object_vptr_t *vptr; belle_sip_object_loose_weak_refs(obj); belle_sip_object_remove_from_leak_detector(obj); vptr = obj->vptr; while(vptr!=NULL){ if (vptr->destroy) vptr->destroy(obj); vptr=vptr->get_parent(); } belle_sip_object_data_clear(obj); } void belle_sip_object_delete(void *ptr){ belle_sip_object_t *obj=BELLE_SIP_OBJECT(ptr); if (obj->vptr->is_cpp){ /*This will call delete which calls the destructor chain*/ belle_sip_cpp_object_delete(obj); return; } /*otherwise we're in C, call the destructor chain and free the memory*/ belle_sip_object_uninit(obj); belle_sip_free(obj); } static belle_sip_object_vptr_t *find_common_floor(belle_sip_object_vptr_t *vptr1, belle_sip_object_vptr_t *vptr2){ belle_sip_object_vptr_t *it1,*it2; for (it1=vptr1;it1!=NULL;it1=it1->get_parent()){ if (it1==vptr2) return vptr2; } for(it2=vptr2;it2!=NULL;it2=it2->get_parent()){ if (vptr1==it2) return vptr1; } return find_common_floor(vptr1->get_parent(),vptr2); } /*copy the content of ref object to new object, for the part they have in common in their inheritence diagram*/ void _belle_sip_object_copy(belle_sip_object_t *newobj, const belle_sip_object_t *ref){ belle_sip_object_vptr_t *vptr; vptr=find_common_floor(newobj->vptr,ref->vptr); if (vptr==NULL){ belle_sip_fatal("Should not happen"); } while(vptr!=NULL){ if (vptr->clone==NULL){ belle_sip_fatal("Object of type %s cannot be cloned, it does not provide a clone() implementation.",vptr->type_name); return; }else vptr->clone(newobj,ref); vptr=vptr->get_parent(); } } belle_sip_object_t *belle_sip_object_clone(const belle_sip_object_t *obj){ belle_sip_object_t *newobj; newobj=belle_sip_malloc0(obj->vptr->size); newobj->ref=obj->vptr->initially_unowned ? 0 : 1; newobj->vptr=obj->vptr; _belle_sip_object_copy(newobj,obj); if (newobj->ref==0){ belle_sip_object_pool_t *pool=belle_sip_object_pool_get_current(); if (pool) belle_sip_object_pool_add(pool,newobj); } add_new_object(newobj); return newobj; } belle_sip_object_t *belle_sip_object_clone_and_ref(const belle_sip_object_t *obj) { return belle_sip_object_ref(belle_sip_object_clone(obj)); } struct belle_sip_object_data{ char* name; void* data; belle_sip_data_destroy destroy_func; }; static int belle_sip_object_data_find(const void* a, const void* b) { struct belle_sip_object_data* da = (struct belle_sip_object_data*)a; return strcmp(da->name, (const char*)b); } static void belle_sip_object_data_destroy(void* data) { struct belle_sip_object_data* da = (struct belle_sip_object_data*)data; if (da->destroy_func) da->destroy_func(da->data); belle_sip_free(da->name); belle_sip_free(da); } int belle_sip_object_data_set( belle_sip_object_t *obj, const char* name, void* data, belle_sip_data_destroy destroy_func ) { int ret = 0; belle_sip_list_t* list_entry = belle_sip_list_find_custom(obj->data_store, belle_sip_object_data_find, name); struct belle_sip_object_data* entry = (list_entry)? list_entry->data : NULL; if( entry == NULL){ entry = belle_sip_malloc0(sizeof( struct belle_sip_object_data)); obj->data_store = belle_sip_list_append(obj->data_store, entry); } else { // clean previous data if( entry->destroy_func ) entry->destroy_func(entry->data); belle_sip_free(entry->name); ret = 1; } if( entry ){ entry->data = data; entry->name = belle_sip_strdup(name); entry->destroy_func = destroy_func; } else { ret = -1; } return ret; } void* belle_sip_object_data_get( belle_sip_object_t *obj, const char* name ) { belle_sip_list_t *list_entry = belle_sip_list_find_custom(obj->data_store, belle_sip_object_data_find, name); struct belle_sip_object_data* entry = (list_entry)? list_entry->data : NULL; return entry? entry->data : NULL; } int belle_sip_object_data_remove( belle_sip_object_t *obj, const char* name) { belle_sip_list_t *list_entry = belle_sip_list_find_custom(obj->data_store, belle_sip_object_data_find, name); struct belle_sip_object_data* entry = (list_entry)? list_entry->data : NULL; if( entry ){ belle_sip_free(entry->name); if( entry->destroy_func ) entry->destroy_func(entry->data); belle_sip_free(entry); } if( list_entry ) obj->data_store = belle_sip_list_remove_link(obj->data_store, list_entry); return !(list_entry!= NULL); } int belle_sip_object_data_exists( const belle_sip_object_t *obj, const char* name ) { return (belle_sip_list_find_custom(obj->data_store, belle_sip_object_data_find, name) != NULL); } void* belle_sip_object_data_grab( belle_sip_object_t* obj, const char* name) { belle_sip_list_t *list_entry = belle_sip_list_find_custom(obj->data_store, belle_sip_object_data_find, name); struct belle_sip_object_data* entry = (list_entry)? list_entry->data : NULL; void* data =NULL; if( entry ){ belle_sip_free(entry->name); data = entry->data; } obj->data_store = belle_sip_list_remove_link(obj->data_store, list_entry); belle_sip_free(entry); return data; } void belle_sip_object_data_clear( belle_sip_object_t* obj ) { belle_sip_list_for_each(obj->data_store, belle_sip_object_data_destroy); obj->data_store = belle_sip_list_free(obj->data_store); } void belle_sip_object_data_clone( const belle_sip_object_t* src, belle_sip_object_t* dst, belle_sip_data_clone clone_func) { belle_sip_object_data_clear(dst); belle_sip_object_data_merge(src, dst, clone_func); } void belle_sip_object_data_merge( const belle_sip_object_t* src, belle_sip_object_t* dst, belle_sip_data_clone clone_func) { belle_sip_list_t *list = src->data_store; struct belle_sip_object_data* it = NULL; void* cloned_data = NULL; while( list ){ it = list->data; if( it ){ cloned_data = (clone_func)? clone_func( it->name, it->data ) : it->data; belle_sip_object_data_set(dst, it->name, cloned_data, it->destroy_func); } list = list->next; } } struct belle_sip_object_foreach_data { void (*apply_func)(const char*, void*, void*); void* userdata; }; static void belle_sip_object_for_each_cb(void* data, void* pvdata) { struct belle_sip_object_data* it = (struct belle_sip_object_data*)data; struct belle_sip_object_foreach_data* fd = (struct belle_sip_object_foreach_data*)pvdata; if( it && fd->apply_func ){ fd->apply_func(it->name, it->data, fd->userdata); } } void belle_sip_object_data_foreach( const belle_sip_object_t* obj, void (*apply_func)(const char* key, void* data, void* userdata), void* userdata) { struct belle_sip_object_foreach_data fd = { apply_func, userdata }; belle_sip_list_for_each2(obj->data_store, belle_sip_object_for_each_cb, &fd); } void *belle_sip_object_cast(belle_sip_object_t *obj, belle_sip_type_id_t id, const char *castname, const char *file, int fileno){ if (obj!=NULL){ if (has_type(obj,id)==0){ belle_sip_fatal("Bad cast to %s at %s:%i",castname,file,fileno); return NULL; } } return obj; } void *belle_sip_object_get_interface_methods(belle_sip_object_t *obj, belle_sip_interface_id_t ifid){ if (obj!=NULL){ belle_sip_object_vptr_t *vptr; for (vptr=obj->vptr;vptr!=NULL;vptr=vptr->get_parent()){ belle_sip_interface_desc_t **ifaces=vptr->interfaces; if (ifaces!=NULL){ for(;*ifaces!=0;++ifaces){ if ((*ifaces)->id==ifid){ return *ifaces; } } } } } return NULL; } int belle_sip_object_implements(belle_sip_object_t *obj, belle_sip_interface_id_t id){ return belle_sip_object_get_interface_methods(obj,id)!=NULL; } void *belle_sip_object_interface_cast(belle_sip_object_t *obj, belle_sip_interface_id_t ifid, const char *castname, const char *file, int fileno){ if (obj!=NULL){ if (belle_sip_object_get_interface_methods(obj,ifid)==0){ belle_sip_fatal("Bad cast to interface %s at %s:%i",castname,file,fileno); return NULL; } } return obj; } void belle_sip_object_set_name(belle_sip_object_t* object,const char* name) { if (object->name) { belle_sip_free(object->name); object->name=NULL; } if (name) object->name=belle_sip_strdup(name); } const char* belle_sip_object_get_name(belle_sip_object_t* object) { return object->name; } static belle_sip_error_code checked_marshal(belle_sip_object_vptr_t *vptr, belle_sip_object_t* obj, char* buff, size_t buff_size, size_t *offset){ size_t tmp_buf_size=buff_size*2; char *p=(char*)belle_sip_malloc0(tmp_buf_size); size_t i; size_t initial_offset=*offset; belle_sip_error_code error=vptr->marshal(obj,p,buff_size,offset); size_t written; for (i=initial_offset;itype_name,(int)written,(int)(*offset-initial_offset)); } memcpy(buff+initial_offset,p+initial_offset,*offset-initial_offset); }else if (error==BELLE_SIP_BUFFER_OVERFLOW){ /* Case where the object aborted the marshalling because of not enough room. * Should this happen, it is not allowed to write past buffer end anyway */ if (written > buff_size){ belle_sip_fatal("Object of type %s commited a buffer overflow by marshalling %i bytes", vptr->type_name,(int)(*offset-initial_offset)); } }else{ belle_sip_error("Object of type %s produced an error during marshalling: %i", vptr->type_name,error); } belle_sip_free(p); return error; } belle_sip_error_code belle_sip_object_marshal(belle_sip_object_t* obj, char* buff, size_t buff_size, size_t *offset) { belle_sip_object_vptr_t *vptr=obj->vptr; while (vptr != NULL) { if (vptr->marshal != NULL) { if (_belle_sip_object_marshal_check_enabled == TRUE) return checked_marshal(vptr,obj,buff,buff_size,offset); else return vptr->marshal(obj,buff,buff_size,offset); } else { vptr=vptr->get_parent(); } } return BELLE_SIP_NOT_IMPLEMENTED; /*no implementation found*/ } static char * belle_sip_object_to_alloc_string(const belle_sip_object_t *obj, int size_hint){ char *buf=belle_sip_malloc(size_hint); size_t offset=0; belle_sip_error_code error = belle_sip_object_marshal((belle_sip_object_t *)obj,buf,size_hint-1,&offset); obj->vptr->tostring_bufsize_hint=size_hint; if (error==BELLE_SIP_BUFFER_OVERFLOW){ belle_sip_message("belle_sip_object_to_alloc_string(): hint buffer was too short while doing to_string() for %s, retrying", belle_sip_object_vptr_get_type_name(obj)); belle_sip_free(buf); return belle_sip_object_to_alloc_string(obj,2*size_hint); } buf=belle_sip_realloc(buf,offset+1); buf[offset]='\0'; return buf; } static int get_hint_size(int size){ if (size<128) return 128; return size; } char* belle_sip_object_to_string(const void* _obj) { const belle_sip_object_t *obj=BELLE_SIP_OBJECT(_obj); if (obj->vptr->tostring_bufsize_hint!=0){ return belle_sip_object_to_alloc_string(obj,obj->vptr->tostring_bufsize_hint); }else{ char buff[BELLE_SIP_MAX_TO_STRING_SIZE]; size_t offset=0; belle_sip_error_code error = belle_sip_object_marshal((belle_sip_object_t *)obj,buff,sizeof(buff)-1,&offset); if (error==BELLE_SIP_BUFFER_OVERFLOW){ belle_sip_message("belle_sip_object_to_string(): temporary buffer is too short while doing to_string() for %s, retrying", obj->vptr->type_name); return belle_sip_object_to_alloc_string(obj,get_hint_size(2*(int)offset)); } buff[offset]='\0'; obj->vptr->tostring_bufsize_hint=get_hint_size(2*(int)offset); return belle_sip_strdup(buff); } } char * _belle_sip_object_describe_type(belle_sip_object_t *obj, belle_sip_object_vptr_t *vptr){ const int maxbufsize=2048; char *ret=belle_sip_malloc(maxbufsize); belle_sip_object_vptr_t *it; size_t pos=0; belle_sip_list_t *l=NULL,*elem; belle_sip_snprintf(ret,maxbufsize,&pos,"Ownership:\n"); belle_sip_snprintf(ret,maxbufsize,&pos,"\t%s is created initially %s\n", obj ? belle_sip_object_vptr_get_type_name(obj) : vptr->type_name, vptr->initially_unowned ? "unowned" : "owned"); belle_sip_snprintf(ret,maxbufsize,&pos,"\nInheritance diagram:\n"); for(it=vptr;it!=NULL;it=it->get_parent()){ l=belle_sip_list_prepend(l,it); } for(elem=l;elem!=NULL;elem=elem->next){ it=(belle_sip_object_vptr_t*)elem->data; belle_sip_snprintf(ret,maxbufsize,&pos,"\t%s\n",it->type_name); if (elem->next) belle_sip_snprintf(ret,maxbufsize,&pos,"\t |\n"); } belle_sip_list_free(l); belle_sip_snprintf(ret,maxbufsize,&pos,"\nImplemented interfaces:\n"); for(it=vptr;it!=NULL;it=it->get_parent()){ belle_sip_interface_desc_t **desc=it->interfaces; if (desc!=NULL){ for(;*desc!=NULL;desc++){ belle_sip_snprintf(ret,maxbufsize,&pos,"\t* %s\n",(*desc)->ifname); } } } return ret; } char *belle_sip_object_describe(void *obj){ belle_sip_object_t *o=BELLE_SIP_OBJECT(obj); return _belle_sip_object_describe_type(o, o->vptr); } #if !defined(_WIN32) #include char *belle_sip_object_describe_type_from_name(const char *name){ char *vptr_name; void *handle; void *symbol; belle_sip_object_get_vptr_t vptr_getter; handle=dlopen(NULL,RTLD_LAZY); if (handle==NULL){ belle_sip_error("belle_sip_object_describe_type_from_name: dlopen() failed: %s",dlerror()); return NULL; } vptr_name=belle_sip_strdup_printf("%s_vptr_get",name); symbol=dlsym(handle,vptr_name); belle_sip_free(vptr_name); dlclose(handle); if (symbol==NULL){ belle_sip_error("belle_sip_object_describe_type_from_name: could not find vptr for type %s",name); return NULL; } vptr_getter=(belle_sip_object_get_vptr_t)symbol; return _belle_sip_object_describe_type(NULL, vptr_getter()); } #else char *belle_sip_object_describe_type_from_name(const char *name){ return belle_sip_strdup_printf("Sorry belle_sip_object_describe_type_from_name() is not implemented on this platform."); } #endif struct belle_sip_object_pool{ belle_sip_object_t base; belle_sip_list_t *objects; unsigned long thread_id; }; static void belle_sip_object_pool_destroy(belle_sip_object_pool_t *pool){ belle_sip_object_pool_clean(pool); _belle_sip_object_pool_remove_from_stack(pool); } BELLE_SIP_DECLARE_NO_IMPLEMENTED_INTERFACES(belle_sip_object_pool_t); BELLE_SIP_INSTANCIATE_VPTR(belle_sip_object_pool_t,belle_sip_object_t,belle_sip_object_pool_destroy,NULL,NULL,FALSE); belle_sip_object_pool_t *belle_sip_object_pool_new(void){ belle_sip_object_pool_t *pool=belle_sip_object_new(belle_sip_object_pool_t); pool->thread_id=belle_sip_thread_self_id(); return pool; } void belle_sip_object_pool_add(belle_sip_object_pool_t *pool, belle_sip_object_t *obj){ if (obj->pool!=NULL){ belle_sip_fatal("It is not possible to add an object to multiple pools."); } pool->objects=belle_sip_list_prepend(pool->objects,obj); obj->pool_iterator=pool->objects; obj->pool=pool; } void belle_sip_object_pool_remove(belle_sip_object_pool_t *pool, belle_sip_object_t *obj){ unsigned long tid=belle_sip_thread_self_id(); if (obj->pool!=pool){ belle_sip_fatal("Attempting to remove object from an incorrect pool: obj->pool=%p, pool=%p",obj->pool,pool); return; } if (tid!=pool->thread_id){ belle_sip_fatal("It is forbidden (and unsafe()) to ref()/unref() an unowned object outside of the thread that created it."); return; } pool->objects=belle_sip_list_delete_link(pool->objects,obj->pool_iterator); obj->pool_iterator=NULL; obj->pool=NULL; } int belle_sip_object_pool_cleanable(belle_sip_object_pool_t *pool){ return pool->thread_id!=0 && belle_sip_thread_self_id()==pool->thread_id; } void belle_sip_object_pool_clean(belle_sip_object_pool_t *pool){ belle_sip_list_t *elem,*next; if (!belle_sip_object_pool_cleanable(pool)){ belle_sip_warning("Thread pool [%p] cannot be cleaned from thread [%lu] because it was created for thread [%lu]", pool,belle_sip_thread_self_id(),(unsigned long)pool->thread_id); return; } for(elem=pool->objects;elem!=NULL;elem=next){ belle_sip_object_t *obj=(belle_sip_object_t*)elem->data; if (obj->ref==0){ belle_sip_message("Garbage collecting unowned object of type %s",obj->vptr->type_name); obj->ref=-1; belle_sip_object_delete(obj); next=elem->next; belle_sip_free(elem); }else { belle_sip_fatal("Object %p is in unowned list but with ref count %i, bug.",obj,obj->ref); next=elem->next; } } pool->objects=NULL; } static void belle_sip_object_pool_detach_from_thread(belle_sip_object_pool_t *pool){ belle_sip_object_pool_clean(pool); pool->thread_id=(unsigned long)0; } static void cleanup_pool_stack(void *data){ belle_sip_list_t **pool_stack=(belle_sip_list_t**)data; if (*pool_stack){ /* * We would expect the pool_stack to be empty when the thread terminates. * Otherwise that means the management of object pool is not properly done by the application. * Since the object pools might be still referenced by the application, we can't destroy them. * Instead, we mark them as detached, so that when the thread that will attempt to destroy them will do it, * we'll accept (since anyway these object pool are no longer needed. */ belle_sip_warning("There were still [%u] object pools for thread [%lu] while the thread exited. ", (unsigned int)belle_sip_list_size(*pool_stack),belle_sip_thread_self_id()); belle_sip_list_free_with_data(*pool_stack,(void (*)(void*)) belle_sip_object_pool_detach_from_thread); } *pool_stack=NULL; belle_sip_free(pool_stack); } static belle_sip_list_t** get_current_pool_stack(int *first_time){ static belle_sip_thread_key_t pools_key; static int pools_key_created=0; belle_sip_list_t **pool_stack; if (first_time) *first_time=0; if (!pools_key_created){ pools_key_created=1; if (belle_sip_thread_key_create(&pools_key, cleanup_pool_stack)!=0){ return NULL; } } pool_stack=(belle_sip_list_t**)belle_sip_thread_getspecific(pools_key); if (pool_stack==NULL){ pool_stack=belle_sip_new(belle_sip_list_t*); *pool_stack=NULL; belle_sip_thread_setspecific(pools_key,pool_stack); if (first_time) *first_time=1; } return pool_stack; } static void _belle_sip_object_pool_remove_from_stack(belle_sip_object_pool_t *pool){ belle_sip_list_t **pools=get_current_pool_stack(NULL); unsigned long tid=belle_sip_thread_self_id(); if (tid!=pool->thread_id){ belle_sip_fatal("It is forbidden to destroy a pool outside the thread that created it."); return; } if (pools==NULL) { belle_sip_fatal("Not possible to pop a pool."); return; } if (*pools==NULL){ belle_sip_fatal("There is no current pool in stack."); return; } *pools=belle_sip_list_remove(*pools,pool); } belle_sip_object_pool_t * belle_sip_object_pool_push(void){ belle_sip_list_t **pools=get_current_pool_stack(NULL); belle_sip_object_pool_t *pool; if (pools==NULL) { belle_sip_error("Not possible to create a pool."); return NULL; } pool=belle_sip_object_pool_new(); *pools=belle_sip_list_prepend(*pools,pool); return pool; } belle_sip_object_pool_t *belle_sip_object_pool_get_current(void){ int first_time; belle_sip_list_t **pools=get_current_pool_stack(&first_time); if (pools==NULL) return NULL; if (*pools==NULL ){ if (first_time) { belle_sip_warning("There is no object pool created in thread [%lu]. " "Use belle_sip_object_pool_push() to create one. Unowned objects not unref'd will be leaked.", belle_sip_thread_self_id()); } return NULL; } return (belle_sip_object_pool_t*)(*pools)->data; } belle-sip-5.2.0+dfsg/src/belle_sip_parameters.c000066400000000000000000000142221434613136500214340ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "belle-sip/belle-sip.h" #include "belle-sip/parameters.h" #include "belle_sip_internal.h" #include "belle-sip/headers.h" void belle_sip_parameters_init(belle_sip_parameters_t *obj){ } void belle_sip_parameters_clean(belle_sip_parameters_t* params) { if (params->param_list) belle_sip_list_free_with_data (params->param_list, (void (*)(void*))belle_sip_param_pair_destroy); if (params->paramnames_list) belle_sip_list_free(params->paramnames_list); params->paramnames_list=NULL; params->param_list=NULL; } static void belle_sip_parameters_destroy(belle_sip_parameters_t* params) { belle_sip_parameters_clean(params); } void belle_sip_parameters_copy_parameters_from(belle_sip_parameters_t *params, const belle_sip_parameters_t *orig){ belle_sip_list_t* list=orig->param_list; for(;list!=NULL;list=list->next){ belle_sip_param_pair_t* container = (belle_sip_param_pair_t* )(list->data); belle_sip_parameters_set_parameter( params,container->name,container->value); } } static void belle_sip_parameters_clone(belle_sip_parameters_t *params, const belle_sip_parameters_t *orig){ belle_sip_parameters_copy_parameters_from(params,orig); } belle_sip_error_code belle_sip_parameters_marshal(const belle_sip_parameters_t* params, char* buff, size_t buff_size, size_t *offset) { belle_sip_list_t* list=params->param_list; belle_sip_error_code error=BELLE_SIP_OK; for(;list!=NULL;list=list->next){ belle_sip_param_pair_t* container = (belle_sip_param_pair_t* )(list->data); if (container->value) { error=belle_sip_snprintf(buff,buff_size,offset,";%s=%s", container->name, container->value); } else { error=belle_sip_snprintf(buff,buff_size,offset,";%s", container->name); } if (error!=BELLE_SIP_OK) return error; } return error; } BELLE_SIP_NEW_HEADER(parameters,header,"parameters") const belle_sip_list_t *belle_sip_parameters_get_parameters(const belle_sip_parameters_t* obj) { return obj->param_list; } const char* belle_sip_parameters_get_parameter_base(const belle_sip_parameters_t* params,const char* name,belle_sip_compare_func func) { belle_sip_list_t * lResult = belle_sip_list_find_custom(params->param_list, func, name); if (lResult) { return ((belle_sip_param_pair_t*)(lResult->data))->value; } else { return NULL; } } const char* belle_sip_parameters_get_parameter(const belle_sip_parameters_t* params,const char* name) { return belle_sip_parameters_get_parameter_base(params,name,(belle_sip_compare_func)belle_sip_param_pair_comp_func); } const char* belle_sip_parameters_get_case_parameter(const belle_sip_parameters_t* params,const char* name) { return belle_sip_parameters_get_parameter_base(params,name,(belle_sip_compare_func)belle_sip_param_pair_case_comp_func); } unsigned int belle_sip_parameters_has_parameter(const belle_sip_parameters_t* params,const char* name) { return belle_sip_list_find_custom(params->param_list, (belle_sip_compare_func)belle_sip_param_pair_comp_func, name) != NULL; } void belle_sip_parameters_set_parameter(belle_sip_parameters_t* params,const char* name,const char* value) { /*1 check if present*/ belle_sip_param_pair_t* lNewpair; belle_sip_list_t * lResult = belle_sip_list_find_custom(params->paramnames_list, (belle_sip_compare_func)strcmp, name); /* first remove from header names list*/ if (lResult) { params->paramnames_list=belle_sip_list_delete_link(params->paramnames_list,lResult); } /* next from header list*/ lResult = belle_sip_list_find_custom(params->param_list, (belle_sip_compare_func)belle_sip_param_pair_comp_func, name); if (lResult) { belle_sip_param_pair_destroy(lResult->data); params->param_list=belle_sip_list_delete_link(params->param_list,lResult); } /* 2 insert*/ lNewpair = belle_sip_param_pair_new(name,value); params->param_list=belle_sip_list_append(params->param_list,lNewpair); params->paramnames_list=belle_sip_list_append(params->paramnames_list,lNewpair->name); } void belle_sip_parameters_set(belle_sip_parameters_t *parameters, const char* params){ belle_sip_parameters_clean(parameters); if (params && *params!='\0'){ char *tmp=belle_sip_strdup(params); char *end_of_param; char *current=tmp; char *equal; char *next; do{ end_of_param=strchr(current,';'); equal=strchr(current,'='); if (!end_of_param) { end_of_param=current+strlen(current); next=end_of_param; }else{ *end_of_param='\0'; next=end_of_param+1; } if (equal && equalparamnames_list:NULL; } void belle_sip_parameters_remove_parameter(belle_sip_parameters_t* params,const char* name) { /*1 check if present*/ belle_sip_list_t * lResult = belle_sip_list_find_custom(params->paramnames_list, (belle_sip_compare_func)strcmp, name); /* first remove from header names list*/ if (lResult) { params->paramnames_list=belle_sip_list_delete_link(params->paramnames_list,lResult); /*next remove node*/ lResult = belle_sip_list_find_custom(params->param_list, (belle_sip_compare_func)belle_sip_param_pair_comp_func, name); if (lResult) { belle_sip_param_pair_destroy(lResult->data); params->param_list=belle_sip_list_delete_link(params->param_list,lResult); } } } belle-sip-5.2.0+dfsg/src/belle_sip_resolver.c000066400000000000000000002237741434613136500211500ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "belle_sip_internal.h" #include #ifdef HAVE_MDNS #include #endif #include #include #ifdef __APPLE__ #include "TargetConditionals.h" #endif #ifdef HAVE_DNS_SERVICE /* When HAVE_DNS_SERVICE is on, the resolve is performed using Apple DNSService */ #include "TargetConditionals.h" #include "dns.h" #include #include #include "bctoolbox/port.h" // mutex #endif /* HAVE_DNS_SERVICE */ #include "dns/dns.h" #define DNS_EAGAIN EAGAIN /* Default value for a timeout to wait AAAA results after A result for the same host have been received. * This is to compensate buggy routers that don't really support IPv6 and never provide any answer to AAAA queries. */ static const int belle_sip_aaaa_timeout_after_a_received = 3000; /* Default value for a timeout to wait for SRV results after a A/AAAA result for the same domain has been received. * This is to compensate buggy routers that don't really support SRV and never provide any answer to SRV queries. */ static const int belle_sip_srv_timeout_after_a_received = 3000; typedef struct belle_sip_simple_resolver_context belle_sip_simple_resolver_context_t; #define BELLE_SIP_SIMPLE_RESOLVER_CONTEXT(obj) BELLE_SIP_CAST(obj,belle_sip_simple_resolver_context_t) typedef struct belle_sip_combined_resolver_context belle_sip_combined_resolver_context_t; #define BELLE_SIP_COMBINED_RESOLVER_CONTEXT(obj) BELLE_SIP_CAST(obj,belle_sip_combined_resolver_context_t) typedef struct belle_sip_dual_resolver_context belle_sip_dual_resolver_context_t; #define BELLE_SIP_DUAL_RESOLVER_CONTEXT(obj) BELLE_SIP_CAST(obj,belle_sip_dual_resolver_context_t) struct belle_sip_dns_srv{ belle_sip_object_t base; unsigned short priority; unsigned short weight; unsigned short port; unsigned char a_done; unsigned char dont_free_a_results; int cumulative_weight; /*used only temporarily*/ char *target; belle_sip_combined_resolver_context_t *root_resolver;/* used internally to combine SRV and A queries*/ belle_sip_resolver_context_t *a_resolver; /* used internally to combine SRV and A queries*/ struct addrinfo *a_results; /* used internally to combine SRV and A queries*/ #ifdef HAVE_MDNS char *fullname; /* Used by mDNS */ #endif }; static void belle_sip_dns_srv_destroy(belle_sip_dns_srv_t *obj){ if (obj->target) { belle_sip_free(obj->target); obj->target=NULL; } if (obj->a_resolver){ belle_sip_resolver_context_cancel(obj->a_resolver); belle_sip_object_unref(obj->a_resolver); obj->a_resolver=NULL; } if (obj->a_results && !obj->dont_free_a_results){ bctbx_freeaddrinfo(obj->a_results); obj->a_results=NULL; } #ifdef HAVE_MDNS if (obj->fullname){ belle_sip_free(obj->fullname); obj->fullname = NULL; } #endif } #ifdef HAVE_MDNS belle_sip_dns_srv_t *belle_sip_mdns_srv_create(short unsigned int priority, short unsigned int weight, short unsigned int port, const char *target, const char *fullname){ belle_sip_dns_srv_t *obj=belle_sip_object_new(belle_sip_dns_srv_t); obj->priority=priority; obj->weight=weight; obj->port=port; obj->target=belle_sip_strdup(target); obj->fullname=belle_sip_strdup(fullname); return obj; } #endif #ifdef HAVE_DNS_SERVICE belle_sip_dns_srv_t *belle_sip_dns_srv_create_dns_service(dns_resource_record_t *rr){ belle_sip_dns_srv_t *obj=belle_sip_object_new(belle_sip_dns_srv_t); size_t end_pos; obj->priority=rr->data.SRV->priority; obj->weight=rr->data.SRV->weight; obj->port=rr->data.SRV->port; obj->target=belle_sip_strdup(rr->data.SRV->target); /*remove trailing '.' at the end*/ end_pos = strlen(obj->target); if (end_pos > 0){ end_pos--; if (obj->target[end_pos] == '.') obj->target[end_pos] = '\0'; } return obj; } #endif /* HAVE_DNS_SERVICE */ belle_sip_dns_srv_t *belle_sip_dns_srv_create(struct dns_srv *srv){ belle_sip_dns_srv_t *obj=belle_sip_object_new(belle_sip_dns_srv_t); size_t end_pos; obj->priority=srv->priority; obj->weight=srv->weight; obj->port=srv->port; obj->target=belle_sip_strdup(srv->target); /*remove trailing '.' at the end*/ end_pos = strlen(obj->target); if (end_pos > 0){ end_pos--; if (obj->target[end_pos] == '.') obj->target[end_pos] = '\0'; } return obj; } const char *belle_sip_dns_srv_get_target(const belle_sip_dns_srv_t *obj){ return obj->target; } unsigned short belle_sip_dns_srv_get_priority(const belle_sip_dns_srv_t *obj){ return obj->priority; } unsigned short belle_sip_dns_srv_get_weight(const belle_sip_dns_srv_t *obj){ return obj->weight; } unsigned short belle_sip_dns_srv_get_port(const belle_sip_dns_srv_t *obj){ return obj->port; } BELLE_SIP_DECLARE_NO_IMPLEMENTED_INTERFACES(belle_sip_dns_srv_t); BELLE_SIP_INSTANCIATE_VPTR(belle_sip_dns_srv_t, belle_sip_object_t,belle_sip_dns_srv_destroy, NULL, NULL,TRUE); struct belle_sip_resolver_results{ belle_sip_object_t base; struct addrinfo *ai_list; bctbx_list_t *srv_list; char *name; uint32_t ttl; }; static void belle_sip_resolver_results_destroy(belle_sip_resolver_results_t *obj){ if (obj->ai_list) bctbx_freeaddrinfo(obj->ai_list); bctbx_list_free_with_data(obj->srv_list, belle_sip_object_unref); if (obj->name) bctbx_free(obj->name); } BELLE_SIP_DECLARE_NO_IMPLEMENTED_INTERFACES(belle_sip_resolver_results_t); BELLE_SIP_INSTANCIATE_VPTR(belle_sip_resolver_results_t, belle_sip_object_t,belle_sip_resolver_results_destroy, NULL, NULL,FALSE); static int addrinfo_in_range(const struct addrinfo *ai, const struct addrinfo *begin, const struct addrinfo *end){ const struct addrinfo *it; for (it = begin ; it != end; it = it->ai_next){ if (it == NULL){ belle_sip_error("addrinfo_in_range(): it == NULL, this should not happen, this is a bug !"); break; } if (it == ai){ return 1; } } return 0; } static const belle_sip_dns_srv_t * _belle_sip_dns_srv_get_from_addrinfo(const belle_sip_list_t *srv_list, const struct addrinfo *ai){ /* We simply iterate on the addrinfo pointed by the srv objects in the srv list until we find "ai". * This is not very efficient but there is not that much alternatives: * - there is no user pointer in struct addrinfo * - there might not be srv record for a domain, in which case the srv_list is empty... */ const bctbx_list_t *elem; for (elem = srv_list; elem != NULL; elem = elem->next){ const belle_sip_dns_srv_t *srv = (const belle_sip_dns_srv_t *) elem->data; const belle_sip_dns_srv_t *next_srv = elem->next ? (const belle_sip_dns_srv_t *) elem->next->data : NULL; if (addrinfo_in_range(ai, srv->a_results, next_srv ? next_srv->a_results : NULL)){ return srv; } } return NULL; } const belle_sip_dns_srv_t * belle_sip_resolver_results_get_srv_from_addrinfo(const belle_sip_resolver_results_t *obj, const struct addrinfo *ai){ return _belle_sip_dns_srv_get_from_addrinfo(obj->srv_list, ai); } const bctbx_list_t *belle_sip_resolver_results_get_srv_records(const belle_sip_resolver_results_t *obj){ return obj->srv_list; } const struct addrinfo *belle_sip_resolver_results_get_addrinfos(const belle_sip_resolver_results_t *obj){ return obj->ai_list; } int belle_sip_resolver_results_get_ttl(const belle_sip_resolver_results_t *obj){ return obj->ttl; } const char *belle_sip_resolver_results_get_name(const belle_sip_resolver_results_t *obj){ return obj->name; } belle_sip_resolver_results_t *belle_sip_resolver_results_create(const char *name, struct addrinfo *ai_list, belle_sip_list_t *srv_list, int ttl){ belle_sip_resolver_results_t *obj = belle_sip_object_new(belle_sip_resolver_results_t); obj->ai_list = ai_list; obj->srv_list = srv_list; obj->ttl = ttl; obj->name = bctbx_strdup(name); return obj; } struct belle_sip_resolver_context{ belle_sip_source_t source; belle_sip_stack_t *stack; uint32_t min_ttl; uint8_t notified; uint8_t cancelled; #ifdef HAVE_DNS_SERVICE uint8_t use_dns_service; uint8_t pad[1]; #else /* HAVE_DNS_SERVICE */ uint8_t pad[2]; #endif /* else HAVE_DNS_SERVICE */ }; struct belle_sip_simple_resolver_context{ belle_sip_resolver_context_t base; belle_sip_resolver_callback_t cb; belle_sip_resolver_srv_callback_t srv_cb; void *cb_data; void *srv_cb_data; #ifdef HAVE_DNS_SERVICE bctbx_mutex_t notify_mutex; // result is notified first on a specific thread, mutex to manage interactions with cancel DNSServiceErrorType err; // used to pass the request dispatching status from the dns_service_queue to the main thread DNSServiceRef dns_service; dispatch_source_t dns_service_timer; uint16_t dns_service_type; dispatch_queue_t dns_service_queue; // this queue is created by the stack, but store a ref on it anyway #endif /*HAVE_DNS_SERVICE */ struct dns_resolv_conf *resconf; struct dns_hosts *hosts; struct dns_resolver *R; enum dns_type type; char *name; int port; struct addrinfo *ai_list; belle_sip_list_t *srv_list; /*list of belle_sip_dns_srv_t*/ int family; int flags; uint64_t start_time; #ifdef HAVE_MDNS char *srv_prefix; char *srv_name; int resolving; bool_t browse_finished; #endif #if defined(USE_GETADDRINFO_FALLBACK) || defined(HAVE_MDNS) struct addrinfo *getaddrinfo_ai_list; belle_sip_source_t *getaddrinfo_source; belle_sip_thread_t getaddrinfo_thread; unsigned char getaddrinfo_done; unsigned char getaddrinfo_cancelled; #ifdef _WIN32 HANDLE ctlevent; #else int ctlpipe[2]; #endif #endif bool_t not_using_dns_socket; }; struct belle_sip_combined_resolver_context{ belle_sip_resolver_context_t base; belle_sip_resolver_callback_t cb; void *cb_data; char *name; int port; int family; struct addrinfo *final_results; struct addrinfo *a_fallback_results; belle_sip_list_t *srv_results; belle_sip_resolver_context_t *srv_ctx; belle_sip_resolver_context_t *a_fallback_ctx; int a_fallback_ttl; unsigned char srv_completed; unsigned char a_fallback_completed; }; struct belle_sip_dual_resolver_context{ belle_sip_resolver_context_t base; belle_sip_resolver_callback_t cb; void *cb_data; char *name; belle_sip_resolver_context_t *a_ctx; belle_sip_resolver_context_t *aaaa_ctx; struct addrinfo *a_results; struct addrinfo *aaaa_results; uint8_t a_notified; uint8_t aaaa_notified; uint8_t pad[2]; }; void belle_sip_resolver_context_init(belle_sip_resolver_context_t *obj, belle_sip_stack_t *stack){ obj->stack=stack; obj->min_ttl = UINT32_MAX; #ifdef HAVE_DNS_SERVICE obj->use_dns_service = obj->stack->use_dns_service; // the object might actually survive the stack, so save crucial information #endif /* HAVE_DNS_SERVICE */ belle_sip_init_sockets(); /* Need to be called for DNS resolution to work on Windows platform. */ } static int dns_resconf_nameservers_from_list(struct dns_resolv_conf *resconf, const belle_sip_list_t *l) { int max_servers = sizeof(resconf->nameserver)/sizeof(struct sockaddr_storage); int i; const belle_sip_list_t *elem; for (i = 0, elem = l; i < max_servers && elem != NULL; elem = elem->next) { int error = dns_resconf_pton(&resconf->nameserver[i], (const char *) elem->data); if (error == 0) ++i; } return i > 0 ? 0 : -1; } static struct dns_resolv_conf *resconf(belle_sip_simple_resolver_context_t *ctx) { const char *path; const belle_sip_list_t *servers; int error; if (ctx->resconf) return ctx->resconf; if (!(ctx->resconf = dns_resconf_open(&error))) { belle_sip_error("%s dns_resconf_open error: %s", __FUNCTION__, dns_strerror(error)); return NULL; } path = belle_sip_stack_get_dns_resolv_conf_file(ctx->base.stack); servers = ctx->base.stack->dns_servers; if (servers){ belle_sip_message("%s using application supplied dns server list.", __FUNCTION__); error = dns_resconf_nameservers_from_list(ctx->resconf, servers); }else if (!path){ #if defined(USE_FIXED_NAMESERVERS) error = dns_resconf_load_fixed_nameservers(ctx->resconf); if (error) { belle_sip_error("%s dns_resconf_load_fixed_nameservers error", __FUNCTION__); } #elif defined(USE_STRUCT_RES_STATE_NAMESERVERS) error = dns_resconf_load_struct_res_state_nameservers(ctx->resconf); if (error) { belle_sip_error("%s dns_resconf_load_struct_res_state_nameservers error", __FUNCTION__); } #elif defined(_WIN32) error = dns_resconf_loadwin(ctx->resconf); if (error) { belle_sip_error("%s dns_resconf_loadwin error", __FUNCTION__); } #elif defined(__ANDROID__) error = dns_resconf_loadandroid(ctx->resconf); if (error) { belle_sip_error("%s dns_resconf_loadandroid error", __FUNCTION__); } #elif defined(HAVE_RESINIT) /*#elif HAVE_RESINIT && TARGET_OS_IPHONE*/ error = dns_resconf_loadfromresolv(ctx->resconf); if (error) { belle_sip_error("%s dns_resconf_loadfromresolv error", __FUNCTION__); } #else path = "/etc/resolv.conf"; error = dns_resconf_loadpath(ctx->resconf, path); if (error) { belle_sip_error("%s dns_resconf_loadpath error [%s]: %s", __FUNCTION__, path, dns_strerror(error)); return NULL; } path = "/etc/nsswitch.conf"; error = dns_nssconf_loadpath(ctx->resconf, path); if (error) { belle_sip_message("%s dns_nssconf_loadpath error [%s]: %s", __FUNCTION__, path, dns_strerror(error)); } #endif }else{ error = dns_resconf_loadpath(ctx->resconf, path); if (error) { belle_sip_error("%s dns_resconf_loadpath() of custom file error [%s]: %s", __FUNCTION__, path, dns_strerror(error)); return NULL; } } if (error==0){ char ip[64]; char serv[10]; int using_ipv6=FALSE; size_t i; belle_sip_message("Resolver is using DNS server(s):"); for(i=0;iresconf->nameserver)/sizeof(ctx->resconf->nameserver[0]);++i){ struct sockaddr *ns_addr=(struct sockaddr*)&ctx->resconf->nameserver[i]; if (ns_addr->sa_family==AF_UNSPEC) break; bctbx_getnameinfo(ns_addr,ns_addr->sa_family==AF_INET6 ? sizeof(struct sockaddr_in6) : sizeof(struct sockaddr) ,ip,sizeof(ip),serv,sizeof(serv),NI_NUMERICHOST|NI_NUMERICSERV); belle_sip_message("\t%s",ip); if (ns_addr->sa_family==AF_INET6) using_ipv6=TRUE; } ctx->resconf->iface.ss_family=using_ipv6 ? AF_INET6 : AF_INET; if (i==0) { belle_sip_error("- no DNS servers available - resolution aborted."); return NULL; } }else{ belle_sip_error("Error loading dns server addresses."); return NULL; } return ctx->resconf; } static struct dns_hosts *hosts(belle_sip_simple_resolver_context_t *ctx) { int error; if (ctx->hosts) return ctx->hosts; if (!(ctx->hosts = dns_hosts_local(&error))) { belle_sip_warning("%s dns_hosts_local error: %s", __FUNCTION__, dns_strerror(error)); /*in case of failure, create an empty host object to make further processing happy, knowing that we can live without /etc/hosts.*/ ctx->hosts=dns_hosts_open(&error); } if (ctx->base.stack->dns_user_hosts_file) { error = dns_hosts_loadpath(ctx->hosts, ctx->base.stack->dns_user_hosts_file); if (error) { belle_sip_error("%s dns_hosts_loadfile(\"%s\"): %s", __FUNCTION__,ctx->base.stack->dns_user_hosts_file,dns_strerror(error)); } } return ctx->hosts; } struct dns_cache *cache(belle_sip_simple_resolver_context_t *ctx) { return NULL; } static struct addrinfo * ai_list_append(struct addrinfo *ai_list, struct addrinfo *ai_to_append) { struct addrinfo *ai_current = ai_list; if (ai_to_append == NULL) return ai_list; if (ai_list == NULL) return ai_to_append; while (ai_current->ai_next != NULL) { ai_current = ai_current->ai_next; } ai_current->ai_next = ai_to_append; return ai_list; } static int srv_compare_prio(const void *psrv1, const void *psrv2){ belle_sip_dns_srv_t *srv1=(belle_sip_dns_srv_t*)psrv1; belle_sip_dns_srv_t *srv2=(belle_sip_dns_srv_t*)psrv2; if (srv1->priority < srv2->priority) return -1; if (srv1->priority == srv2->priority) return 0; return 1; } #ifdef HAVE_MDNS static int mdns_srv_compare_host_and_port(const void *psrv1, const void *psrv2){ belle_sip_dns_srv_t *srv1=(belle_sip_dns_srv_t*)psrv1; belle_sip_dns_srv_t *srv2=(belle_sip_dns_srv_t*)psrv2; int ret = strcmp(srv1->target, srv2->target); if (ret != 0) return ret; if (srv1->port < srv2->port) return -1; if (srv1->port == srv2->port) return 0; return 1; } static int mdns_srv_compare_fullname(const void *psrv1, const void *psrv2){ belle_sip_dns_srv_t *srv1=(belle_sip_dns_srv_t*)psrv1; belle_sip_dns_srv_t *srv2=(belle_sip_dns_srv_t*)psrv2; return strcmp(srv1->fullname, srv2->fullname); } #endif /* * see https://www.ietf.org/rfc/rfc2782.txt * 0 weighted must just appear first. **/ static int srv_sort_weight(const void *psrv1, const void *psrv2){ belle_sip_dns_srv_t *srv1=(belle_sip_dns_srv_t*)psrv1; if (srv1->weight==0) return -1; return 1; } static belle_sip_dns_srv_t *srv_elect_one(belle_sip_list_t *srv_list){ int sum=0; belle_sip_list_t *elem; belle_sip_dns_srv_t *srv; int rand_number; for(elem=srv_list;elem!=NULL;elem=elem->next){ srv=(belle_sip_dns_srv_t*)elem->data; sum+=srv->weight; srv->cumulative_weight=sum; } /*no weights given, return the first one*/ if (sum==0) return (belle_sip_dns_srv_t*)srv_list->data; rand_number=belle_sip_random() % sum; /*random number choosen in the range of the sum of weights*/ for(elem=srv_list;elem!=NULL;elem=elem->next){ srv=(belle_sip_dns_srv_t*)elem->data; if (rand_number<=srv->cumulative_weight) return srv; } return (belle_sip_dns_srv_t*)srv_list->data; } /* * Order an SRV list with entries having the same priority according to their weight */ static belle_sip_list_t *srv_elect(belle_sip_list_t **srv_list) { belle_sip_list_t *result = NULL; while (*srv_list != NULL) { belle_sip_list_t *it; belle_sip_dns_srv_t *entry = srv_elect_one(*srv_list); result = belle_sip_list_append(result, belle_sip_object_ref(entry)); it = belle_sip_list_find(*srv_list, entry); if (it) { *srv_list = belle_sip_list_remove_link(*srv_list, it); belle_sip_free(it); } } return result; } /* * this function will return a list of SRV, with only one SRV record per priority. */ static belle_sip_list_t *srv_select_by_weight(belle_sip_list_t *srv_list){ belle_sip_list_t *same_prio=NULL; belle_sip_list_t *elem; belle_sip_dns_srv_t *prev_srv=NULL; belle_sip_list_t *result=NULL; for (elem=srv_list;elem!=NULL;elem=elem->next){ belle_sip_dns_srv_t *srv=(belle_sip_dns_srv_t*)elem->data; if (prev_srv){ if (prev_srv->priority==srv->priority){ if (!same_prio){ same_prio=belle_sip_list_append(same_prio,prev_srv); } same_prio=belle_sip_list_insert_sorted(same_prio,srv,srv_sort_weight); }else{ if (same_prio){ result=belle_sip_list_concat(result,srv_elect(&same_prio)); } } } prev_srv=srv; } if (same_prio){ result=belle_sip_list_concat(result,srv_elect(&same_prio)); } if (result){ belle_sip_list_free_with_data(srv_list,belle_sip_object_unref); return result; } return srv_list;/*no weight election was necessary, return original list*/ } static void simple_resolver_context_notify(belle_sip_resolver_context_t *obj) { belle_sip_simple_resolver_context_t *ctx = BELLE_SIP_SIMPLE_RESOLVER_CONTEXT(obj); if ((ctx->type == DNS_T_A) || (ctx->type == DNS_T_AAAA) #ifdef HAVE_DNS_SERVICE || (ctx->dns_service_type == kDNSServiceType_A) || (ctx->dns_service_type == kDNSServiceType_AAAA) #endif /* HAVE_DNS_SERVICE */ ) { struct addrinfo **ai_list = &ctx->ai_list; belle_sip_resolver_results_t *results; #if defined(USE_GETADDRINFO_FALLBACK) || defined(HAVE_MDNS) if (ctx->getaddrinfo_ai_list != NULL) ai_list = &ctx->getaddrinfo_ai_list; #endif results = belle_sip_resolver_results_create(ctx->name, *ai_list, NULL, BELLE_SIP_RESOLVER_CONTEXT(obj)->min_ttl); ctx->cb(ctx->cb_data, results); *ai_list = NULL; belle_sip_object_unref(results); } else if (ctx->type == DNS_T_SRV #ifdef HAVE_DNS_SERVICE || (ctx->dns_service_type == kDNSServiceType_SRV) #endif /* HAVE_DNS_SERVICE */ ) { ctx->srv_list = srv_select_by_weight(ctx->srv_list); ctx->srv_cb(ctx->srv_cb_data, ctx->name, ctx->srv_list, BELLE_SIP_RESOLVER_CONTEXT(obj)->min_ttl); } } static void dual_resolver_context_notify(belle_sip_resolver_context_t *obj) { belle_sip_dual_resolver_context_t *ctx = BELLE_SIP_DUAL_RESOLVER_CONTEXT(obj); struct addrinfo *results = ctx->aaaa_results; belle_sip_resolver_results_t *result_obj; results = ai_list_append(results, ctx->a_results); ctx->a_results = NULL; ctx->aaaa_results = NULL; result_obj = belle_sip_resolver_results_create(ctx->name, results, NULL, BELLE_SIP_RESOLVER_CONTEXT(obj)->min_ttl); ctx->cb(ctx->cb_data, result_obj); belle_sip_object_unref(result_obj); } static void combined_resolver_context_cleanup(belle_sip_combined_resolver_context_t *ctx) { if (ctx->srv_ctx) { belle_sip_object_unref(ctx->srv_ctx); ctx->srv_ctx = NULL; } if (ctx->a_fallback_ctx) { belle_sip_object_unref(ctx->a_fallback_ctx); ctx->a_fallback_ctx = NULL; } belle_sip_list_free_with_data(ctx->srv_results, belle_sip_object_unref); ctx->srv_results = NULL; } static void combined_resolver_context_notify(belle_sip_resolver_context_t *obj) { belle_sip_combined_resolver_context_t *ctx = BELLE_SIP_COMBINED_RESOLVER_CONTEXT(obj); belle_sip_resolver_results_t *results = belle_sip_resolver_results_create(ctx->name, ctx->final_results, ctx->srv_results, BELLE_SIP_RESOLVER_CONTEXT(obj)->min_ttl); ctx->cb(ctx->cb_data, results); belle_sip_object_unref(results); ctx->final_results = NULL; ctx->srv_results = NULL; combined_resolver_context_cleanup(ctx); } static void append_dns_result(belle_sip_simple_resolver_context_t *ctx, struct addrinfo **ai_list, struct sockaddr *addr, socklen_t addrlen){ char host[NI_MAXHOST + 1]; int gai_err; int family=ctx->family; if ((gai_err=bctbx_getnameinfo(addr, addrlen, host, sizeof(host), NULL, 0, NI_NUMERICHOST)) != 0){ belle_sip_error("append_dns_result(): getnameinfo() failed: %s",gai_strerror(gai_err)); return; } if (ctx->flags & AI_V4MAPPED) family=AF_INET6; *ai_list = ai_list_append(*ai_list, bctbx_ip_address_to_addrinfo(family, SOCK_STREAM, host, ctx->port)); belle_sip_message("%s resolved to %s", ctx->name, host); } static int resolver_process_data(belle_sip_simple_resolver_context_t *ctx, unsigned int revents) { struct dns_packet *ans; struct dns_rr_i *I; struct dns_rr_i dns_rr_it; int error; unsigned char simulated_timeout=0; int timeout=belle_sip_stack_get_dns_timeout(ctx->base.stack); unsigned char search_enabled = belle_sip_stack_dns_search_enabled(ctx->base.stack); /*Setting timeout to 0 can be used to simulate DNS timeout*/ if ((revents!=0) && timeout==0){ belle_sip_warning("Simulating DNS timeout"); simulated_timeout=1; } if (simulated_timeout || ((revents & BELLE_SIP_EVENT_TIMEOUT) && ((int)(belle_sip_time_ms()-ctx->start_time)>=timeout))) { belle_sip_error("%s timed-out", __FUNCTION__); belle_sip_resolver_context_notify(BELLE_SIP_RESOLVER_CONTEXT(ctx)); return BELLE_SIP_STOP; } dns_res_enable_search(ctx->R, search_enabled); /*belle_sip_message("resolver_process_data(): revents=%i",revents);*/ error = dns_res_check(ctx->R); if (!error) { struct dns_rr rr; union dns_any any; enum dns_section section = DNS_S_AN; ans = dns_res_fetch(ctx->R, &error); memset(&dns_rr_it, 0, sizeof dns_rr_it); I = dns_rr_i_init(&dns_rr_it, ans); while (dns_rr_grep(&rr, 1, I, ans, &error)) { if (rr.section == section) { if ((error = dns_any_parse(dns_any_init(&any, sizeof(any)), &rr, ans))) { belle_sip_error("%s dns_any_parse error: %s", __FUNCTION__, dns_strerror(error)); break; } if ((ctx->type == DNS_T_AAAA) && (rr.class == DNS_C_IN) && (rr.type == DNS_T_AAAA)) { struct dns_aaaa *aaaa = &any.aaaa; struct sockaddr_in6 sin6; memset(&sin6, 0, sizeof(sin6)); memcpy(&sin6.sin6_addr, &aaaa->addr, sizeof(sin6.sin6_addr)); sin6.sin6_family = AF_INET6; sin6.sin6_port = ctx->port; append_dns_result(ctx,&ctx->ai_list,(struct sockaddr*)&sin6,sizeof(sin6)); if (rr.ttl < BELLE_SIP_RESOLVER_CONTEXT(ctx)->min_ttl) BELLE_SIP_RESOLVER_CONTEXT(ctx)->min_ttl = rr.ttl; } else if ((ctx->type == DNS_T_A) && (rr.class == DNS_C_IN) && (rr.type == DNS_T_A)) { struct dns_a *a = &any.a; struct sockaddr_in sin; memset(&sin, 0, sizeof(sin)); memcpy(&sin.sin_addr, &a->addr, sizeof(sin.sin_addr)); sin.sin_family = AF_INET; sin.sin_port = ctx->port; append_dns_result(ctx,&ctx->ai_list,(struct sockaddr*)&sin,sizeof(sin)); if (rr.ttl < BELLE_SIP_RESOLVER_CONTEXT(ctx)->min_ttl) BELLE_SIP_RESOLVER_CONTEXT(ctx)->min_ttl = rr.ttl; } else if ((ctx->type == DNS_T_SRV) && (rr.class == DNS_C_IN) && (rr.type == DNS_T_SRV)) { char host[NI_MAXHOST + 1]; struct dns_srv *srv = &any.srv; belle_sip_dns_srv_t * b_srv=belle_sip_dns_srv_create(srv); snprintf(host, sizeof(host), "[target:%s port:%d prio:%d weight:%d]", srv->target, srv->port, srv->priority, srv->weight); ctx->srv_list = belle_sip_list_insert_sorted(ctx->srv_list, belle_sip_object_ref(b_srv), srv_compare_prio); belle_sip_message("SRV %s resolved to %s", ctx->name, host); if (rr.ttl < BELLE_SIP_RESOLVER_CONTEXT(ctx)->min_ttl) BELLE_SIP_RESOLVER_CONTEXT(ctx)->min_ttl = rr.ttl; } } } free(ans); #if defined(USE_GETADDRINFO_FALLBACK) || defined(HAVE_MDNS) ctx->getaddrinfo_cancelled = TRUE; #endif if (dns_res_was_asymetric(ctx->R)){ belle_sip_warning("DNS answer was not received from the DNS server IP address the request was sent to. This seems to be a known issue with NAT64 networks created by Apple computers."); } belle_sip_resolver_context_notify(BELLE_SIP_RESOLVER_CONTEXT(ctx)); return BELLE_SIP_STOP; } if (error != DNS_EAGAIN) { belle_sip_error("%s dns_res_check() error: %s (%d)", __FUNCTION__, dns_strerror(error), error); #if defined(USE_GETADDRINFO_FALLBACK) || defined(HAVE_MDNS) if (ctx->getaddrinfo_done) { return BELLE_SIP_STOP; } else { // Wait for the getaddrinfo result return BELLE_SIP_CONTINUE; } #else belle_sip_resolver_context_notify(BELLE_SIP_RESOLVER_CONTEXT(ctx)); return BELLE_SIP_STOP; #endif } else { #if defined(USE_GETADDRINFO_FALLBACK) || defined(HAVE_MDNS) if (ctx->getaddrinfo_done) { return BELLE_SIP_STOP; } else #endif { belle_sip_message("%s dns_res_check() in progress", __FUNCTION__); } } return BELLE_SIP_CONTINUE; } #if defined(USE_GETADDRINFO_FALLBACK) || defined(HAVE_MDNS) static void * _resolver_getaddrinfo_thread(void *ptr) { belle_sip_simple_resolver_context_t *ctx = (belle_sip_simple_resolver_context_t *)ptr; struct addrinfo *res = NULL; struct addrinfo hints = { 0 }; char serv[10]; int err; belle_sip_message("Resolver getaddrinfo thread started."); snprintf(serv, sizeof(serv), "%i", ctx->port); hints.ai_family = ctx->family; hints.ai_flags = AI_NUMERICSERV; hints.ai_protocol = strstr(ctx->name, "udp") ? IPPROTO_UDP : IPPROTO_TCP; err = getaddrinfo(ctx->name, serv, &hints, &res); if (err != 0) { belle_sip_error("getaddrinfo DNS resolution of %s failed: %s", ctx->name, gai_strerror(err)); } else if (!ctx->getaddrinfo_cancelled) { struct addrinfo *res_it = res; do { append_dns_result(ctx, &ctx->getaddrinfo_ai_list, res_it->ai_addr, (socklen_t)res_it->ai_addrlen); res_it = res_it->ai_next; } while (res_it != NULL); } if (res) freeaddrinfo(res); ctx->getaddrinfo_done = TRUE; #ifdef _WIN32 SetEvent(ctx->ctlevent); #else if (write(ctx->ctlpipe[1], "q", 1) == -1) { belle_sip_error("_resolver_getaddrinfo_thread(): Fail to write on pipe."); } #endif return NULL; } static int _resolver_getaddrinfo_callback(belle_sip_simple_resolver_context_t *ctx, unsigned int revents) { if (!ctx->getaddrinfo_cancelled) { belle_sip_resolver_context_notify(BELLE_SIP_RESOLVER_CONTEXT(ctx)); } belle_sip_object_unref(ctx); return BELLE_SIP_STOP; } static void _resolver_getaddrinfo_start(belle_sip_simple_resolver_context_t *ctx) { belle_sip_fd_t fd = (belle_sip_fd_t)-1; belle_sip_object_ref(ctx); #ifdef _WIN32 ctx->ctlevent = CreateEventEx(NULL, NULL, CREATE_EVENT_MANUAL_RESET, EVENT_ALL_ACCESS); fd = (HANDLE)ctx->ctlevent; #else if (pipe(ctx->ctlpipe) == -1) { belle_sip_fatal("pipe() failed: %s", strerror(errno)); } fd = ctx->ctlpipe[0]; #endif bctbx_thread_create(&ctx->getaddrinfo_thread, NULL, _resolver_getaddrinfo_thread, ctx); ctx->getaddrinfo_source = belle_sip_fd_source_new((belle_sip_source_func_t)_resolver_getaddrinfo_callback, ctx, fd, BELLE_SIP_EVENT_READ, -1); belle_sip_main_loop_add_source(ctx->base.stack->ml, ctx->getaddrinfo_source); } #endif #ifdef HAVE_MDNS static int is_mdns_query(const char *name){ const char *suffix; char *tmp = NULL; int ret; int len = strlen(name); if (len > 0 && name[len-1] == '.'){ tmp = belle_sip_strdup(name); tmp[len-1] = '\0'; name = tmp; } /* Check if name ends with .local to determine if we'll use multicast DNS or not */ suffix = strrchr(name, '.'); ret = suffix && strcmp(suffix, ".local") == 0; if (tmp) belle_sip_free(tmp); return ret; } #endif #ifdef HAVE_DNS_SERVICE static void dns_service_deallocate(belle_sip_simple_resolver_context_t *ctx) { if (ctx->dns_service_timer) { dispatch_source_cancel(ctx->dns_service_timer); ctx->dns_service_timer = NULL; } if (ctx->dns_service) { DNSServiceRefDeallocate(ctx->dns_service); ctx->dns_service = NULL; } } static void dns_service_query_record_cb(DNSServiceRef dns_service, DNSServiceFlags flags, uint32_t interfaceIndex, DNSServiceErrorType errorCode, const char *fullname, uint16_t rrtype, uint16_t rrclass, uint16_t rdlen, const void *rdata, uint32_t ttl, void *context) { belle_sip_simple_resolver_context_t *ctx = (belle_sip_simple_resolver_context_t *)context; bctbx_mutex_lock(&(ctx->notify_mutex)); if (ctx->base.cancelled == TRUE) { dns_service_deallocate(ctx); // resolver was cancelled, we may not have the stack anymore, just unref ourselve bctbx_mutex_unlock(&(ctx->notify_mutex)); belle_sip_object_unref(ctx); return; } if (errorCode != kDNSServiceErr_NoError) { if (errorCode == kDNSServiceErr_NoSuchRecord) { belle_sip_message("%s : resolving %s : no such record", __FUNCTION__, fullname); } else { belle_sip_error("%s : resolving %s got error %d", __FUNCTION__, fullname, errorCode); } dns_service_deallocate(ctx); belle_sip_main_loop_do_later(ctx->base.stack->ml, (belle_sip_callback_t)belle_sip_resolver_context_notify, BELLE_SIP_RESOLVER_CONTEXT(ctx)); bctbx_mutex_unlock(&(ctx->notify_mutex)); return; } if (rrclass != kDNSServiceClass_IN) { belle_sip_error("%s : resolving %s got class %d while IN(0x01) expected", __FUNCTION__, fullname, rrclass); dns_service_deallocate(ctx); belle_sip_main_loop_do_later(ctx->base.stack->ml, (belle_sip_callback_t)belle_sip_resolver_context_notify, BELLE_SIP_RESOLVER_CONTEXT(ctx)); bctbx_mutex_unlock(&(ctx->notify_mutex)); return; } bool_t got_valid_answer = FALSE; switch (rrtype) { case kDNSServiceType_A : if (rdlen == 4) { struct sockaddr_in sin; memset(&sin, 0, sizeof(sin)); memcpy(&sin.sin_addr, rdata, sizeof(sin.sin_addr)); sin.sin_family = AF_INET; sin.sin_port = ctx->port; append_dns_result(ctx,&ctx->ai_list,(struct sockaddr*)&sin,sizeof(sin)); if (ttl < BELLE_SIP_RESOLVER_CONTEXT(ctx)->min_ttl) BELLE_SIP_RESOLVER_CONTEXT(ctx)->min_ttl = ttl; got_valid_answer = TRUE; } break; case kDNSServiceType_AAAA : if (rdlen == 16) { struct sockaddr_in6 sin; memset(&sin, 0, sizeof(sin)); memcpy(&sin.sin6_addr, rdata, sizeof(sin.sin6_addr)); sin.sin6_family = AF_INET6; sin.sin6_port = ctx->port; append_dns_result(ctx,&ctx->ai_list,(struct sockaddr*)&sin,sizeof(sin)); if (ttl < BELLE_SIP_RESOLVER_CONTEXT(ctx)->min_ttl) BELLE_SIP_RESOLVER_CONTEXT(ctx)->min_ttl = ttl; got_valid_answer = TRUE; } break; case kDNSServiceType_SRV : if (rdlen > 6) { /* re-create a DNS packet to be able to use dns_util.h dns_parse_resource_record */ /* Must add: name, type, class, ttl, rdlength before pasting the rdata to be parsed */ char *dnsPacket = belle_sip_malloc(rdlen+11); dnsPacket[0] = 0; // name is empty: 0 length dnsPacket[1] = 0xFF & (kDNSServiceType_SRV >> 8); // type is SRV dnsPacket[2] = 0xFF & kDNSServiceType_SRV; dnsPacket[3] = 0xFF & (kDNSServiceClass_IN >> 8); // Class is IN dnsPacket[4] = 0xFF & kDNSServiceClass_IN; dnsPacket[5] = 0x01; // ttl is not relevant, just put fixed value dnsPacket[6] = 0x01; // ttl is not relevant, just put fixed value dnsPacket[7] = 0x01; // ttl is not relevant, just put fixed value dnsPacket[8] = 0x01; // ttl is not relevant, just put fixed value dnsPacket[9] = 0xFF & (rdlen >> 8); // use the given size dnsPacket[10] = 0xFF & rdlen; memcpy(dnsPacket+11, rdata, rdlen); dns_resource_record_t *rr = dns_parse_resource_record(dnsPacket, rdlen+11); belle_sip_free(dnsPacket); char host[NI_MAXHOST + 1]; belle_sip_dns_srv_t * b_srv=belle_sip_dns_srv_create_dns_service(rr); snprintf(host, sizeof(host), "[target:%s port:%d prio:%d weight:%d]", b_srv->target, b_srv->port, b_srv->priority, b_srv->weight); ctx->srv_list = belle_sip_list_insert_sorted(ctx->srv_list, belle_sip_object_ref(b_srv), srv_compare_prio); belle_sip_message("SRV %s resolved to %s", ctx->name, host); if (ttl < BELLE_SIP_RESOLVER_CONTEXT(ctx)->min_ttl) BELLE_SIP_RESOLVER_CONTEXT(ctx)->min_ttl = ttl; got_valid_answer = TRUE; } break; case kDNSServiceType_CNAME : belle_sip_message("%s : resolving %s got CNAME DNS answer. Ignore it, DNS Service will recurse it by itself", __FUNCTION__, fullname); break; default: belle_sip_error("%s : resolving %s got DNS answer type %d - just ignore it", __FUNCTION__, fullname, rrtype); bctbx_mutex_unlock(&(ctx->notify_mutex)); return; } if (!(flags & kDNSServiceFlagsMoreComing) && (got_valid_answer==TRUE)) { // notify only when nothing more is coming and we had a valid answer dns_service_deallocate(ctx); belle_sip_main_loop_do_later(ctx->base.stack->ml, (belle_sip_callback_t)belle_sip_resolver_context_notify, BELLE_SIP_RESOLVER_CONTEXT(ctx)); } bctbx_mutex_unlock(&(ctx->notify_mutex)); } #endif /* HAVE_DNS_SERVICE */ static int _resolver_send_query(belle_sip_simple_resolver_context_t *ctx) { int error = 0; #ifdef HAVE_MDNS if (is_mdns_query(ctx->name)){ ctx->not_using_dns_socket = TRUE; _resolver_getaddrinfo_start(ctx); return 0; } #endif if (!ctx->base.stack->resolver_send_error) { error = dns_res_submit(ctx->R, ctx->name, ctx->type, DNS_C_IN); if (error) belle_sip_error("%s dns_res_submit error [%s]: %s", __FUNCTION__, ctx->name, dns_strerror(error)); } else { /* Error simulation */ error = ctx->base.stack->resolver_send_error; belle_sip_error("%s dns_res_submit error [%s]: simulated error %d", __FUNCTION__, ctx->name, error); } if (error < 0) { return -1; } if (resolver_process_data(ctx, 0) == BELLE_SIP_CONTINUE) { ctx->start_time=belle_sip_time_ms(); belle_sip_message("DNS resolution awaiting response, queued to main loop"); /*only init source if res inprogress*/ /*the timeout set to the source is 1 s, this is to allow dns.c to send request retransmissions*/ belle_sip_socket_source_init((belle_sip_source_t*)ctx, (belle_sip_source_func_t)resolver_process_data, ctx, dns_res_pollfd(ctx->R), BELLE_SIP_EVENT_READ | BELLE_SIP_EVENT_TIMEOUT, 1000); #if defined(USE_GETADDRINFO_FALLBACK) { int timeout = belle_sip_stack_get_dns_timeout(ctx->base.stack); if ((timeout != 0) && ((ctx->type == DNS_T_A) || (ctx->type == DNS_T_AAAA))) { _resolver_getaddrinfo_start(ctx); } } #endif } return 0; } static int resolver_process_data_delayed(belle_sip_simple_resolver_context_t *ctx, unsigned int revents) { int err=_resolver_send_query(ctx); if (err==0) return BELLE_SIP_CONTINUE; return BELLE_SIP_STOP; } #ifdef HAVE_MDNS typedef struct belle_sip_mdns_source belle_sip_mdns_source_t; #define BELLE_SIP_MDNS_SOURCE(obj) BELLE_SIP_CAST(obj,belle_sip_mdns_source_t) struct belle_sip_mdns_source { belle_sip_source_t base; DNSServiceRef service_ref; belle_sip_simple_resolver_context_t *ctx; bool_t resolve_finished; }; belle_sip_mdns_source_t *belle_sip_mdns_source_new(DNSServiceRef service_ref, belle_sip_simple_resolver_context_t *ctx, belle_sip_source_func_t func, int timeout) { belle_sip_mdns_source_t *obj = belle_sip_object_new(belle_sip_mdns_source_t); obj->service_ref = service_ref; obj->ctx = ctx; obj->resolve_finished = BELLE_SIP_CONTINUE; belle_sip_fd_source_init((belle_sip_source_t*)obj , func , obj , DNSServiceRefSockFD(service_ref) , BELLE_SIP_EVENT_READ | BELLE_SIP_EVENT_TIMEOUT , timeout); return obj; } void belle_sip_mdns_source_set_service_ref(belle_sip_mdns_source_t *source, DNSServiceRef service_ref) { source->service_ref = service_ref; source->base.fd = DNSServiceRefSockFD(service_ref); } static void belle_sip_mdns_source_destroy(belle_sip_mdns_source_t *obj){ if (obj->service_ref){ DNSServiceRefDeallocate(obj->service_ref); } } BELLE_SIP_DECLARE_NO_IMPLEMENTED_INTERFACES(belle_sip_mdns_source_t); BELLE_SIP_INSTANCIATE_VPTR(belle_sip_mdns_source_t, belle_sip_source_t, belle_sip_mdns_source_destroy, NULL, NULL, TRUE); static void resolver_process_mdns_resolve(DNSServiceRef service_ref , DNSServiceFlags flags , uint32_t interface , DNSServiceErrorType error_code , const char *fullname , const char *hosttarget , uint16_t port , uint16_t txt_len , const unsigned char *txt_record , belle_sip_mdns_source_t *source) { if (error_code != kDNSServiceErr_NoError) { belle_sip_error("%s error while resolving [%s]: code %d", __FUNCTION__, source->ctx->name, error_code); } else { uint8_t prio_size, weight_size, ttl_size; const char *prio_buf = TXTRecordGetValuePtr(txt_len, txt_record, "prio", &prio_size); const char *weight_buf = TXTRecordGetValuePtr(txt_len, txt_record, "weight", &weight_size); const char *ttl_buf = TXTRecordGetValuePtr(txt_len, txt_record, "ttl", &ttl_size); /* If the buffer is non-NULL then the key exist and if the result size is > 0 then the value is not empty */ if (prio_buf && prio_size > 0 && weight_buf && weight_size > 0 && ttl_buf && ttl_size > 0) { short unsigned int prio, weight, ttl; /* Don't use the VLAs since it doesn't work on Windows */ char *prio_value = belle_sip_malloc(prio_size + 1); char *weight_value = belle_sip_malloc(weight_size + 1); char *ttl_value = belle_sip_malloc(ttl_size + 1); memcpy(prio_value, prio_buf, prio_size); memcpy(weight_value, weight_buf, weight_size); memcpy(ttl_value, ttl_buf, ttl_size); prio_value[prio_size] = '\0'; weight_value[weight_size] = '\0'; ttl_value[ttl_size] = '\0'; prio = atoi(prio_value); weight = atoi(weight_value); ttl = atoi(ttl_value); belle_sip_dns_srv_t *b_srv = belle_sip_mdns_srv_create(prio, weight, port, hosttarget, fullname); if (!belle_sip_list_find_custom(source->ctx->srv_list, mdns_srv_compare_host_and_port, b_srv)) { source->ctx->srv_list = belle_sip_list_insert_sorted(source->ctx->srv_list, belle_sip_object_ref(b_srv), srv_compare_prio); if (ttl < BELLE_SIP_RESOLVER_CONTEXT(source->ctx)->min_ttl) BELLE_SIP_RESOLVER_CONTEXT(source->ctx)->min_ttl = ttl; belle_sip_message("mDNS %s resolved to [target:%s port:%d prio:%d weight:%d ttl:%d]", source->ctx->name, hosttarget, port, prio, weight, ttl); } else { belle_sip_object_unref(b_srv); } belle_sip_free(prio_value); belle_sip_free(weight_value); belle_sip_free(ttl_value); source->resolve_finished = BELLE_SIP_STOP; } else { belle_sip_warning("%s TXT record of %s does not contain a priority, weight or ttl key!", __FUNCTION__, hosttarget); } } source->ctx->resolving--; /* If this is the last resolve and the browse has already timed out then we notify */ if (source->ctx->resolving == 0 && source->ctx->browse_finished) belle_sip_resolver_context_notify(BELLE_SIP_RESOLVER_CONTEXT(source->ctx)); } static int resolver_process_mdns_resolve_result(belle_sip_mdns_source_t *source, unsigned int revents) { if (revents & BELLE_SIP_EVENT_READ) { DNSServiceProcessResult(source->service_ref); } if (revents & BELLE_SIP_EVENT_TIMEOUT) return BELLE_SIP_STOP; return source->resolve_finished; } static void resolver_process_mdns_browse(DNSServiceRef service_ref , DNSServiceFlags flags , uint32_t interface , DNSServiceErrorType error_code , const char *name , const char *type , const char *domain , belle_sip_simple_resolver_context_t *ctx) { if (error_code != kDNSServiceErr_NoError) { belle_sip_error("%s error while browing [%s]: code %d", __FUNCTION__, ctx->name, error_code); } else { if (flags & kDNSServiceFlagsAdd) { DNSServiceRef resolve_ref; DNSServiceErrorType error; belle_sip_mdns_source_t *source = belle_sip_mdns_source_new(NULL, ctx, (belle_sip_source_func_t)resolver_process_mdns_resolve_result, 1000); error = DNSServiceResolve(&resolve_ref, 0, interface, name, type, domain, (DNSServiceResolveReply)resolver_process_mdns_resolve, source); if (error == kDNSServiceErr_NoError) { ctx->resolving++; belle_sip_mdns_source_set_service_ref(source, resolve_ref); belle_sip_main_loop_add_source(ctx->base.stack->ml, (belle_sip_source_t*)source); } else { belle_sip_error("%s DNSServiceResolve error [%s]: code %d", __FUNCTION__, ctx->name, error); belle_sip_object_unref(source); } } else { belle_sip_list_t *elem; char fullname[512]; /* If the browse service does not have the Add flags then it has to be removed */ snprintf(fullname, sizeof(fullname), "%s.%s%s", name, type, domain); belle_sip_dns_srv_t *b_srv = belle_sip_mdns_srv_create(-1, -1, -1, NULL, fullname); elem = belle_sip_list_find_custom(ctx->srv_list, mdns_srv_compare_fullname, b_srv); if (elem) { belle_sip_object_unref((belle_sip_dns_srv_t *)elem->data); ctx->srv_list = belle_sip_list_delete_link(ctx->srv_list, elem); } belle_sip_object_unref(b_srv); } } } static int resolver_process_mdns_browse_result(belle_sip_mdns_source_t *source, unsigned int revents) { if (revents & BELLE_SIP_EVENT_READ) { DNSServiceProcessResult(source->service_ref); } if (revents & BELLE_SIP_EVENT_TIMEOUT) { if (source->ctx->resolving == 0) belle_sip_resolver_context_notify(BELLE_SIP_RESOLVER_CONTEXT(source->ctx)); source->ctx->browse_finished = TRUE; return BELLE_SIP_STOP; } return BELLE_SIP_CONTINUE; } #endif static int _resolver_start_query(belle_sip_simple_resolver_context_t *ctx) { if (!ctx->name) return -1; #ifdef HAVE_DNS_SERVICE if (ctx->base.use_dns_service == TRUE ) { // Take a ref on the context so we are sure it will still exists when the notify is called // When returning an error, the notify is called anyway so do not unref, the matching unref // is always performed in the belle_sip_resolver_context_notify function or directly in the callback // when the resolve has been cancelled belle_sip_object_ref(ctx); /* Create the DNSServiceRef */ DNSServiceErrorType err = kDNSServiceErr_NoError; err = DNSServiceQueryRecord( &(ctx->dns_service), kDNSServiceFlagsReturnIntermediates, 0, // interfaceIndex ctx->name, ctx->dns_service_type, kDNSServiceClass_IN, dns_service_query_record_cb, (void *)ctx); if (err != kDNSServiceErr_NoError) { belle_sip_error("DNS query resolving %s, DNSServiceQueryRecord returned %d", ctx->name, err); return -1; } /* Create a timer */ ctx->dns_service_timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, ctx->dns_service_queue); int timeout = belle_sip_stack_get_dns_timeout(ctx->base.stack); // timeout is in ms dispatch_source_set_event_handler(ctx->dns_service_timer, ^{ // block captures ctx bctbx_mutex_lock(&(ctx->notify_mutex)); dns_service_deallocate(ctx); /* disarm timer - we need it once and deallocate the query */ if (ctx->base.cancelled == TRUE) { // resolver was cancelled, we may not have the stack anymore, just unref ourselve bctbx_mutex_unlock(&(ctx->notify_mutex)); belle_sip_object_unref(ctx); return; } belle_sip_message("DNS timer fired while resolving %s ", ctx->name); belle_sip_main_loop_do_later(ctx->base.stack->ml, (belle_sip_callback_t)belle_sip_resolver_context_notify, BELLE_SIP_RESOLVER_CONTEXT(ctx)); bctbx_mutex_unlock(&(ctx->notify_mutex)); }); /* dispatch them */ if (!ctx->base.stack->resolver_send_error) { dispatch_sync(ctx->dns_service_queue, ^{ // disptach them from the queue listening their events to avoid troubles, this block captures the ctx bctbx_mutex_lock(&(ctx->notify_mutex)); dispatch_source_set_timer(ctx->dns_service_timer, dispatch_time(DISPATCH_TIME_NOW,timeout*NSEC_PER_MSEC), timeout*NSEC_PER_MSEC, 0); // timeout given is in Nano seconds dispatch_resume(ctx->dns_service_timer); ctx->err = DNSServiceSetDispatchQueue(ctx->dns_service, ctx->dns_service_queue); // could return an error to be passed back to the main thread if (ctx->err != kDNSServiceErr_NoError) { dns_service_deallocate(ctx); /* failed to dispatch, deallocate and disarm timer(which may already have fired) */ } bctbx_mutex_unlock(&(ctx->notify_mutex)); }); if (ctx->err != kDNSServiceErr_NoError) { belle_sip_message("DNS start_query resolving %s, DNSServiceSetDispatchQueue returned %d", ctx->name, err); return -1; } } else { /* Error simulation */ belle_sip_error("%s DNSServiceRefSockFD error [%s]: simulated error %d", __FUNCTION__, ctx->name, ctx->base.stack->resolver_send_error); return -1; } return 0; } #endif /* HAVE_DNS_SERVICE */ #ifdef HAVE_MDNS if (is_mdns_query(ctx->name) && ctx->type == DNS_T_SRV) { DNSServiceErrorType error; DNSServiceRef browse_ref; error = DNSServiceBrowse(&browse_ref, 0, 0, ctx->srv_prefix, ctx->srv_name, (DNSServiceBrowseReply)resolver_process_mdns_browse, ctx); if (error == kDNSServiceErr_NoError) { belle_sip_mdns_source_t *source = belle_sip_mdns_source_new(browse_ref, ctx, (belle_sip_source_func_t)resolver_process_mdns_browse_result, 1000); belle_sip_main_loop_add_source(ctx->base.stack->ml, (belle_sip_source_t*)source); return 0; } else { belle_sip_error("%s DNSServiceBrowse error [%s]: code %d", __FUNCTION__, ctx->name, error); return -1; } } else { #endif struct dns_options opts; int error; struct dns_resolv_conf *conf; conf=resconf(ctx); if (conf){ conf->options.recurse = 0; conf->options.timeout=2; conf->options.attempts=5; }else return -1; if (!hosts(ctx)) return -1; memset(&opts, 0, sizeof opts); /* When there are IPv6 nameservers, allow responses to arrive from an IP address that is not the IP address to which the request was sent originally. * Mac' NAT64 network tend to do this sometimes.*/ opts.udp_uses_connect = ctx->resconf->iface.ss_family != AF_INET6; if (!opts.udp_uses_connect) belle_sip_message("Resolver is not using connect()."); if (!(ctx->R = dns_res_open(ctx->resconf, ctx->hosts, dns_hints_mortal(dns_hints_local(ctx->resconf, &error)), cache(ctx), &opts, &error))) { belle_sip_error("%s dns_res_open error [%s]: %s", __FUNCTION__, ctx->name, dns_strerror(error)); return -1; } error=0; if (ctx->base.stack->resolver_tx_delay > 0) { belle_sip_socket_source_init((belle_sip_source_t*)ctx, (belle_sip_source_func_t)resolver_process_data_delayed, ctx, -1, BELLE_SIP_EVENT_TIMEOUT, ctx->base.stack->resolver_tx_delay + 1000); belle_sip_message("%s DNS resolution delayed by %d ms", __FUNCTION__, ctx->base.stack->resolver_tx_delay); } else { error=_resolver_send_query(ctx); } if (error==0 && !ctx->base.notified && !ctx->not_using_dns_socket) belle_sip_main_loop_add_source(ctx->base.stack->ml,(belle_sip_source_t*)ctx); return error; #ifdef HAVE_MDNS } #endif } static belle_sip_simple_resolver_context_t * resolver_start_query(belle_sip_simple_resolver_context_t *ctx) { int error; /* Take a ref for this part of code because _resolver_start_query() can notify the results and free the ctx if this is not the case. */ belle_sip_object_ref(ctx); error = _resolver_start_query(ctx); if (error == 0) { if (!ctx->base.notified) { /* The resolution could not be done synchronously, return the context */ belle_sip_object_unref(ctx); return ctx; } /* Otherwise, resolution could be done synchronously */ } else { /* An error occured. We must notify the app. */ belle_sip_resolver_context_notify(BELLE_SIP_RESOLVER_CONTEXT(ctx)); } belle_sip_object_unref(ctx); return NULL; } static void belle_sip_combined_resolver_context_destroy(belle_sip_combined_resolver_context_t *obj){ if (obj->name != NULL) { belle_sip_free(obj->name); obj->name = NULL; } if (obj->srv_ctx){ belle_sip_object_unref(obj->srv_ctx); obj->srv_ctx=NULL; } if (obj->a_fallback_ctx){ belle_sip_object_unref(obj->a_fallback_ctx); obj->a_fallback_ctx=NULL; } if (obj->a_fallback_results){ /* we don't a/aaaa results since SRV provided results*/ bctbx_freeaddrinfo(obj->a_fallback_results); obj->a_fallback_results = NULL; } } static void belle_sip_simple_resolver_context_destroy(belle_sip_simple_resolver_context_t *ctx){ /* Do not free elements of ctx->ai_list with bctbx_freeaddrinfo(). Let the caller do it, otherwise it will not be able to use them after the resolver has been destroyed. */ #if defined(USE_GETADDRINFO_FALLBACK) || defined(HAVE_MDNS) if (ctx->getaddrinfo_thread != 0) { bctbx_thread_join(ctx->getaddrinfo_thread, NULL); #ifdef _WIN32 if (ctx->ctlevent != (belle_sip_fd_t)-1) CloseHandle(ctx->ctlevent); #else close(ctx->ctlpipe[0]); close(ctx->ctlpipe[1]); #endif } if (ctx->getaddrinfo_source) belle_sip_object_unref(ctx->getaddrinfo_source); #endif if (ctx->ai_list != NULL) { bctbx_freeaddrinfo(ctx->ai_list); ctx->ai_list = NULL; } #if defined(USE_GETADDRINFO_FALLBACK) || defined(HAVE_MDNS) if (ctx->getaddrinfo_ai_list != NULL) { bctbx_freeaddrinfo(ctx->getaddrinfo_ai_list); ctx->getaddrinfo_ai_list = NULL; } #endif if (ctx->name != NULL) { belle_sip_free(ctx->name); ctx->name = NULL; } #ifdef HAVE_DNS_SERVICE if (ctx->base.use_dns_service == TRUE) { // deallocate the query and disarm timer on the dns service thread if (ctx->dns_service != NULL || ctx->dns_service_timer != NULL) { // make sure we do not call this if we are in the dns thread dispatch_sync(ctx->dns_service_queue, ^{ dns_service_deallocate(ctx); }); } // Cancel might not deallocate results when they arrive after the cancel, make sure they are if (ctx->base.cancelled == TRUE) { if (ctx->srv_list != NULL) { bctbx_list_free_with_data(ctx->srv_list, belle_sip_object_unref); ctx->srv_list = NULL; } } bctbx_mutex_destroy(&ctx->notify_mutex); dispatch_release(ctx->dns_service_queue); } #endif /* HAVE_DNS_SERVICE */ if (ctx->R != NULL) { dns_res_close(ctx->R); ctx->R = NULL; } if (ctx->hosts != NULL) { dns_hosts_close(ctx->hosts); ctx->hosts = NULL; } if (ctx->resconf != NULL) { free(ctx->resconf); ctx->resconf = NULL; } #ifdef HAVE_MDNS if (ctx->srv_prefix) { belle_sip_free(ctx->srv_prefix); ctx->srv_prefix = NULL; } if (ctx->srv_name) { belle_sip_free(ctx->srv_name); ctx->srv_name = NULL; } #endif } static void belle_sip_dual_resolver_context_destroy(belle_sip_dual_resolver_context_t *obj){ if (obj->a_ctx){ belle_sip_object_unref(obj->a_ctx); obj->a_ctx=NULL; } if (obj->aaaa_ctx){ belle_sip_object_unref(obj->aaaa_ctx); obj->aaaa_ctx=NULL; } if (obj->a_results){ bctbx_freeaddrinfo(obj->a_results); obj->a_results=NULL; } if (obj->aaaa_results){ bctbx_freeaddrinfo(obj->aaaa_results); obj->aaaa_results=NULL; } if (obj->name){ belle_sip_free(obj->name); obj->name=NULL; } } static void simple_resolver_context_cancel(belle_sip_resolver_context_t *obj) { belle_sip_main_loop_remove_source(obj->stack->ml, (belle_sip_source_t *)obj); } static void combined_resolver_context_cancel(belle_sip_resolver_context_t *obj) { belle_sip_combined_resolver_context_t *ctx = BELLE_SIP_COMBINED_RESOLVER_CONTEXT(obj); bctbx_list_t *elem; for(elem=ctx->srv_results;elem!=NULL;elem=elem->next){ belle_sip_dns_srv_t *srv=(belle_sip_dns_srv_t*)elem->data; if (srv->a_resolver){ belle_sip_resolver_context_cancel(srv->a_resolver); belle_sip_object_unref(srv->a_resolver); srv->a_resolver = NULL; } } if (ctx->srv_ctx) { belle_sip_resolver_context_cancel(ctx->srv_ctx); belle_sip_object_unref(ctx->srv_ctx); ctx->srv_ctx = NULL; } if (ctx->a_fallback_ctx) { belle_sip_resolver_context_cancel(ctx->a_fallback_ctx); belle_sip_object_unref(ctx->a_fallback_ctx); ctx->a_fallback_ctx = NULL; } combined_resolver_context_cleanup(ctx); } static void dual_resolver_context_cancel(belle_sip_resolver_context_t *obj) { belle_sip_dual_resolver_context_t *ctx= BELLE_SIP_DUAL_RESOLVER_CONTEXT(obj); if (ctx->a_ctx) { belle_sip_resolver_context_cancel(ctx->a_ctx); belle_sip_object_unref(ctx->a_ctx); ctx->a_ctx = NULL; } if (ctx->aaaa_ctx) { belle_sip_resolver_context_cancel(ctx->aaaa_ctx); belle_sip_object_unref(ctx->aaaa_ctx); ctx->aaaa_ctx = NULL; } } BELLE_SIP_DECLARE_NO_IMPLEMENTED_INTERFACES(belle_sip_resolver_context_t); BELLE_SIP_INSTANCIATE_CUSTOM_VPTR_BEGIN(belle_sip_resolver_context_t) { BELLE_SIP_VPTR_INIT(belle_sip_resolver_context_t,belle_sip_source_t,TRUE), (belle_sip_object_destroy_t) NULL, NULL, NULL, BELLE_SIP_DEFAULT_BUFSIZE_HINT }, NULL BELLE_SIP_INSTANCIATE_CUSTOM_VPTR_END BELLE_SIP_DECLARE_NO_IMPLEMENTED_INTERFACES(belle_sip_simple_resolver_context_t); BELLE_SIP_INSTANCIATE_CUSTOM_VPTR_BEGIN(belle_sip_simple_resolver_context_t) { { BELLE_SIP_VPTR_INIT(belle_sip_simple_resolver_context_t,belle_sip_resolver_context_t,TRUE), (belle_sip_object_destroy_t) belle_sip_simple_resolver_context_destroy, NULL, NULL, BELLE_SIP_DEFAULT_BUFSIZE_HINT }, simple_resolver_context_cancel, simple_resolver_context_notify } BELLE_SIP_INSTANCIATE_CUSTOM_VPTR_END BELLE_SIP_DECLARE_NO_IMPLEMENTED_INTERFACES(belle_sip_dual_resolver_context_t); BELLE_SIP_INSTANCIATE_CUSTOM_VPTR_BEGIN(belle_sip_dual_resolver_context_t) { { BELLE_SIP_VPTR_INIT(belle_sip_dual_resolver_context_t,belle_sip_resolver_context_t,TRUE), (belle_sip_object_destroy_t) belle_sip_dual_resolver_context_destroy, NULL, NULL, BELLE_SIP_DEFAULT_BUFSIZE_HINT }, dual_resolver_context_cancel, dual_resolver_context_notify } BELLE_SIP_INSTANCIATE_CUSTOM_VPTR_END BELLE_SIP_DECLARE_NO_IMPLEMENTED_INTERFACES(belle_sip_combined_resolver_context_t); BELLE_SIP_INSTANCIATE_CUSTOM_VPTR_BEGIN(belle_sip_combined_resolver_context_t) { { BELLE_SIP_VPTR_INIT(belle_sip_combined_resolver_context_t,belle_sip_resolver_context_t,TRUE), (belle_sip_object_destroy_t) belle_sip_combined_resolver_context_destroy, NULL, NULL, BELLE_SIP_DEFAULT_BUFSIZE_HINT }, combined_resolver_context_cancel, combined_resolver_context_notify } BELLE_SIP_INSTANCIATE_CUSTOM_VPTR_END static char * srv_prefix_from_service_and_transport(const char *service, const char *transport) { if (service == NULL) service = "sip"; if (strcasecmp(transport, "udp") == 0) { return belle_sip_strdup_printf("_%s._udp.", service); } else if (strcasecmp(transport, "tcp") == 0) { return belle_sip_strdup_printf("_%s._tcp.", service); } else if (strcasecmp(transport, "tls") == 0) { return belle_sip_strdup_printf("_%ss._tcp.", service); } return belle_sip_strdup_printf("_%s._udp.", service); } static void combined_resolver_context_check_finished(belle_sip_combined_resolver_context_t *obj, uint32_t ttl){ belle_sip_list_t *elem; struct addrinfo *final=NULL; if (ttl < BELLE_SIP_RESOLVER_CONTEXT(obj)->min_ttl) BELLE_SIP_RESOLVER_CONTEXT(obj)->min_ttl = ttl; if (!obj->srv_completed && obj->srv_results){ unsigned char finished = TRUE; for(elem=obj->srv_results;elem!=NULL;elem=elem->next){ belle_sip_dns_srv_t *srv=(belle_sip_dns_srv_t*)elem->data; if (!srv->a_done) { finished=FALSE; break; } } if (finished){ belle_sip_message("All A/AAAA results for combined resolution have arrived."); obj->srv_completed = TRUE; for(elem=obj->srv_results;elem!=NULL;elem=elem->next){ belle_sip_dns_srv_t *srv=(belle_sip_dns_srv_t*)elem->data; final=ai_list_append(final,srv->a_results); srv->dont_free_a_results = TRUE; } obj->final_results=final; } } if (obj->srv_completed && obj->a_fallback_completed){ if (obj->final_results == NULL){ /* No SRV results, use a/aaaa fallback */ obj->final_results = obj->a_fallback_results; obj->base.min_ttl = obj->a_fallback_ttl; obj->a_fallback_results = NULL; } belle_sip_resolver_context_notify(BELLE_SIP_RESOLVER_CONTEXT(obj)); } } static int combined_resolver_srv_timeout(belle_sip_combined_resolver_context_t *ctx){ belle_sip_message("No SRV results while A/AAAA fallback resulted arrived a while ago. Giving up SRV."); if (ctx->srv_ctx) { belle_sip_resolver_context_cancel(ctx->srv_ctx); belle_sip_object_unref(ctx->srv_ctx); ctx->srv_ctx = NULL; } ctx->srv_completed = TRUE; combined_resolver_context_check_finished(ctx, BELLE_SIP_RESOLVER_CONTEXT(ctx)->min_ttl); return BELLE_SIP_STOP; } static void process_a_fallback_result(void *data, belle_sip_resolver_results_t *results){ belle_sip_combined_resolver_context_t *ctx=(belle_sip_combined_resolver_context_t *)data; ctx->a_fallback_results = results->ai_list; results->ai_list = NULL; ctx->a_fallback_ttl = results->ttl; ctx->a_fallback_completed = TRUE; /* * Start a global timer in order to workaround buggy home routers that don't respond to SRV requests. * If A fallback response arrived, SRV shall not take a lot longer. */ belle_sip_message("resolver[%p]: starting SRV timer since A/AAAA fallback response is received.", ctx); belle_sip_socket_source_init((belle_sip_source_t*)ctx, (belle_sip_source_func_t)combined_resolver_srv_timeout, ctx, -1 , BELLE_SIP_EVENT_TIMEOUT, belle_sip_srv_timeout_after_a_received); belle_sip_main_loop_add_source(ctx->base.stack->ml, (belle_sip_source_t*)ctx); combined_resolver_context_check_finished(ctx, ctx->base.min_ttl); } static void process_a_from_srv(void *data, belle_sip_resolver_results_t *results){ belle_sip_dns_srv_t *srv=(belle_sip_dns_srv_t*)data; srv->a_results = results->ai_list; results->ai_list = NULL; srv->a_done=TRUE; belle_sip_message("A query finished for srv result [%s]",srv->target); if (results->ttl < BELLE_SIP_RESOLVER_CONTEXT(srv->root_resolver)->min_ttl) BELLE_SIP_RESOLVER_CONTEXT(srv->root_resolver)->min_ttl = results->ttl; combined_resolver_context_check_finished(srv->root_resolver, results->ttl); } static void srv_resolve_a(belle_sip_combined_resolver_context_t *obj, belle_sip_dns_srv_t *srv){ belle_sip_message("Starting A/AAAA query for srv result [%s]",srv->target); srv->root_resolver=obj; /* take a ref of the srv object because the A resolution may terminate synchronously and destroy the srv object before to store the returned value of belle_sip_stack_resolve_a(). That would lead to an invalid write */ belle_sip_object_ref(srv); srv->a_resolver=belle_sip_stack_resolve_a(obj->base.stack,srv->target,srv->port,obj->family,process_a_from_srv,srv); if (srv->a_resolver){ belle_sip_object_ref(srv->a_resolver); } belle_sip_object_unref(srv); } static void process_srv_results(void *data, const char *name, belle_sip_list_t *srv_results, uint32_t ttl){ belle_sip_combined_resolver_context_t *ctx=(belle_sip_combined_resolver_context_t *)data; /*take a ref here, because the A resolution might succeed synchronously and terminate the context before exiting this function*/ if (ctx->base.stack->simulate_non_working_srv) { belle_sip_list_free_with_data(srv_results, belle_sip_object_unref); belle_sip_message("SRV results ignored for testing."); return; } belle_sip_object_ref(ctx); if (ttl < BELLE_SIP_RESOLVER_CONTEXT(data)->min_ttl) BELLE_SIP_RESOLVER_CONTEXT(data)->min_ttl = ttl; if (srv_results){ belle_sip_list_t *elem; /* take a ref of each srv_results because the last A resolution may terminate synchronously and destroy the list before the loop terminate */ ctx->srv_results = belle_sip_list_copy(srv_results); belle_sip_list_for_each(srv_results, (void(*)(void *))belle_sip_object_ref); for(elem=srv_results;elem!=NULL;elem=elem->next){ belle_sip_dns_srv_t *srv=(belle_sip_dns_srv_t*)elem->data; srv_resolve_a(ctx,srv); } srv_results = belle_sip_list_free_with_data(srv_results, belle_sip_object_unref); /* Since we have SRV results, we can cancel the srv timeout, and cancel the fallback a/aaaa resolution */ belle_sip_source_cancel((belle_sip_source_t*)ctx); if (ctx->a_fallback_ctx){ ctx->a_fallback_completed = TRUE; /* we don't need a/aaaa fallback anymore.*/ belle_sip_resolver_context_cancel(ctx->a_fallback_ctx); belle_sip_object_unref(ctx->a_fallback_ctx); ctx->a_fallback_ctx = NULL; } }else{ /* No SRV result. Possibly notify the a/aaaa fallback if already arrived*/ ctx->srv_completed = TRUE; combined_resolver_context_check_finished(ctx, ctx->base.min_ttl); } belle_sip_object_unref(ctx); } /** * Perform combined SRV + A / AAAA resolution. **/ belle_sip_resolver_context_t * belle_sip_stack_resolve(belle_sip_stack_t *stack, const char *service, const char *transport, const char *name, int port, int family, belle_sip_resolver_callback_t cb, void *data) { struct addrinfo *res = bctbx_ip_address_to_addrinfo(family, SOCK_STREAM, name, port); if (res == NULL) { /* First perform asynchronous DNS SRV query */ belle_sip_combined_resolver_context_t *ctx = belle_sip_object_new(belle_sip_combined_resolver_context_t); belle_sip_resolver_context_init((belle_sip_resolver_context_t*)ctx,stack); belle_sip_object_ref(ctx);/*we don't want the object to be destroyed until the end of this function*/ ctx->cb=cb; ctx->cb_data = data; ctx->name = belle_sip_strdup(name); ctx->port=port; belle_sip_object_set_name((belle_sip_object_t*)ctx, ctx->name); if (family == 0) family = AF_UNSPEC; ctx->family = family; /* Take a ref for the entire duration of the DNS procedure, it will be released when it is finished */ belle_sip_object_ref(ctx); ctx->srv_ctx=belle_sip_stack_resolve_srv(stack,service,transport,name,process_srv_results,ctx); if (ctx->srv_ctx) { belle_sip_object_ref(ctx->srv_ctx); } /*In parallel and in case of no SRV result, perform A query */ ctx->a_fallback_ctx=belle_sip_stack_resolve_a(ctx->base.stack,ctx->name,ctx->port,ctx->family,process_a_fallback_result,ctx); if (ctx->a_fallback_ctx) belle_sip_object_ref(ctx->a_fallback_ctx); if (ctx->base.notified) { belle_sip_object_unref(ctx); return NULL; } belle_sip_object_unref(ctx); return BELLE_SIP_RESOLVER_CONTEXT(ctx); } else { /* There is no resolution to be done */ belle_sip_resolver_results_t *results = belle_sip_resolver_results_create(name, res, NULL, UINT32_MAX); cb(data, results); belle_sip_object_unref(results); return NULL; } } static belle_sip_resolver_context_t * belle_sip_stack_resolve_single(belle_sip_stack_t *stack, const char *name, int port, int family, int flags, belle_sip_resolver_callback_t cb , void *data){ /* Then perform asynchronous DNS A or AAAA query */ belle_sip_simple_resolver_context_t *ctx = belle_sip_object_new(belle_sip_simple_resolver_context_t); belle_sip_resolver_context_init((belle_sip_resolver_context_t*)ctx,stack); ctx->cb_data = data; ctx->cb = cb; ctx->name = belle_sip_strdup(name); ctx->port = port; ctx->flags = flags; belle_sip_object_set_name((belle_sip_object_t*)ctx, ctx->name); /* Take a ref for the entire duration of the DNS procedure, it will be released when it is finished */ belle_sip_object_ref(ctx); if (family == 0) family = AF_UNSPEC; ctx->family = family; #ifdef HAVE_DNS_SERVICE ctx->dns_service_queue = stack->dns_service_queue; dispatch_retain(ctx->dns_service_queue); // take a ref on the dispatch queue ctx->dns_service_type = (ctx->family == AF_INET6) ? kDNSServiceType_AAAA : kDNSServiceType_A; if (stack->use_dns_service == TRUE) { bctbx_mutex_init(&ctx->notify_mutex,NULL); } #endif /* HAVE_DNS_SERVICE */ ctx->type = (ctx->family == AF_INET6) ? DNS_T_AAAA : DNS_T_A; #if (defined(USE_GETADDRINFO_FALLBACK) || defined(HAVE_MDNS)) && defined(_WIN32) ctx->ctlevent = (belle_sip_fd_t)-1; #endif return (belle_sip_resolver_context_t*)resolver_start_query(ctx); } static uint8_t belle_sip_resolver_context_can_be_cancelled(belle_sip_resolver_context_t *obj) { return ((obj->cancelled == TRUE) || (obj->notified == TRUE)) ? FALSE : TRUE; } #define belle_sip_resolver_context_can_be_notified(obj) belle_sip_resolver_context_can_be_cancelled(obj) static void dual_resolver_context_check_finished(belle_sip_dual_resolver_context_t *ctx) { if (belle_sip_resolver_context_can_be_notified(BELLE_SIP_RESOLVER_CONTEXT(ctx)) && (ctx->a_notified == TRUE) && (ctx->aaaa_notified == TRUE)) { belle_sip_resolver_context_notify(BELLE_SIP_RESOLVER_CONTEXT(ctx)); } } static int dual_resolver_aaaa_timeout(void *data, unsigned int event){ belle_sip_dual_resolver_context_t *ctx = BELLE_SIP_DUAL_RESOLVER_CONTEXT(data); /* * It is too late to receive the AAAA query, so give up, and notify the A result we have already. */ if (ctx->aaaa_ctx){ belle_sip_resolver_context_cancel(ctx->aaaa_ctx); belle_sip_object_unref(ctx->aaaa_ctx); ctx->aaaa_ctx = NULL; } ctx->aaaa_notified = TRUE; dual_resolver_context_check_finished(ctx); return BELLE_SIP_STOP; } static void on_ipv4_results(void *data, belle_sip_resolver_results_t *results) { belle_sip_dual_resolver_context_t *ctx = BELLE_SIP_DUAL_RESOLVER_CONTEXT(data); ctx->a_results = results->ai_list; results->ai_list = NULL; ctx->a_notified = TRUE; if (!ctx->aaaa_notified && ctx->a_results && belle_sip_aaaa_timeout_after_a_received > 0){ /* * Start a global timer in order to workaround buggy home routers that don't respond to AAAA requests when there is no * corresponding AAAA record for the queried domain. It is only started if we have a A result. */ belle_sip_message("resolver[%p]: starting aaaa timeout since A response is received.", ctx); belle_sip_socket_source_init((belle_sip_source_t*)ctx, (belle_sip_source_func_t)dual_resolver_aaaa_timeout, ctx, -1 , BELLE_SIP_EVENT_TIMEOUT, belle_sip_aaaa_timeout_after_a_received); belle_sip_main_loop_add_source(ctx->base.stack->ml, (belle_sip_source_t*)ctx); } dual_resolver_context_check_finished(ctx); } static void on_ipv6_results(void *data, belle_sip_resolver_results_t *results) { belle_sip_dual_resolver_context_t *ctx = BELLE_SIP_DUAL_RESOLVER_CONTEXT(data); ctx->aaaa_results = results->ai_list; results->ai_list = NULL; ctx->aaaa_notified = TRUE; if (ctx->a_notified){ /* Cancel the aaaa timeout.*/ belle_sip_source_cancel((belle_sip_source_t*)ctx); } dual_resolver_context_check_finished(ctx); } static belle_sip_resolver_context_t * belle_sip_stack_resolve_dual(belle_sip_stack_t *stack, const char *name, int port, belle_sip_resolver_callback_t cb , void *data){ /* Then perform asynchronous DNS A or AAAA query */ belle_sip_dual_resolver_context_t *ctx = belle_sip_object_new(belle_sip_dual_resolver_context_t); belle_sip_resolver_context_init((belle_sip_resolver_context_t*)ctx,stack); belle_sip_object_ref(ctx);/*we don't want the object to be destroyed until the end of this function*/ ctx->cb_data = data; ctx->cb = cb; ctx->name = belle_sip_strdup(name); belle_sip_object_set_name((belle_sip_object_t*)ctx, ctx->name); /* Take a ref for the entire duration of the DNS procedure, it will be released when it is finished */ belle_sip_object_ref(ctx); ctx->a_ctx=belle_sip_stack_resolve_single(stack,name,port,AF_INET, AI_V4MAPPED, on_ipv4_results,ctx); if (ctx->a_ctx) belle_sip_object_ref(ctx->a_ctx); ctx->aaaa_ctx=belle_sip_stack_resolve_single(stack, name, port, AF_INET6, 0, on_ipv6_results, ctx); if (ctx->aaaa_ctx) belle_sip_object_ref(ctx->aaaa_ctx); if (ctx->base.notified){ /* All results were found synchronously */ belle_sip_object_unref(ctx); ctx = NULL; } else belle_sip_object_unref(ctx); return BELLE_SIP_RESOLVER_CONTEXT(ctx); } belle_sip_resolver_context_t * belle_sip_stack_resolve_a(belle_sip_stack_t *stack, const char *name, int port, int family, belle_sip_resolver_callback_t cb , void *data) { struct addrinfo *res = bctbx_ip_address_to_addrinfo(family, SOCK_STREAM, name, port); if (res == NULL) { switch(family){ case AF_UNSPEC: family=AF_INET6; BCTBX_NO_BREAK; /*intentionally no break*/ case AF_INET6: return belle_sip_stack_resolve_dual(stack,name,port,cb,data); break; case AF_INET: return belle_sip_stack_resolve_single(stack,name,port,AF_INET,0,cb,data); break; default: belle_sip_error("belle_sip_stack_resolve_a(): unsupported address family [%i]",family); } } else { /* There is no resolution to be done */ belle_sip_resolver_results_t *results = belle_sip_resolver_results_create(name, res, NULL, UINT32_MAX); cb(data, results); belle_sip_object_unref(results); } return NULL; } belle_sip_resolver_context_t * belle_sip_stack_resolve_srv(belle_sip_stack_t *stack, const char *service, const char *transport, const char *name, belle_sip_resolver_srv_callback_t cb, void *data) { belle_sip_simple_resolver_context_t *ctx = belle_sip_object_new(belle_sip_simple_resolver_context_t); char *srv_prefix = srv_prefix_from_service_and_transport(service, transport); belle_sip_resolver_context_init((belle_sip_resolver_context_t*)ctx,stack); ctx->srv_cb_data = data; ctx->srv_cb = cb; #ifdef HAVE_MDNS ctx->srv_prefix = belle_sip_strdup(srv_prefix); ctx->srv_name = belle_sip_strdup(name); ctx->resolving = 0; ctx->browse_finished = FALSE; #endif ctx->name = belle_sip_concat(srv_prefix, name, NULL); #ifdef HAVE_DNS_SERVICE ctx->dns_service_queue = stack->dns_service_queue; dispatch_retain(ctx->dns_service_queue); // take a ref on the dispatch queue ctx->dns_service_type = kDNSServiceType_SRV; if (stack->use_dns_service == TRUE) { bctbx_mutex_init(&ctx->notify_mutex,NULL); } #endif /* HAVE_DNS_SERVICE */ ctx->type = DNS_T_SRV; belle_sip_object_set_name((belle_sip_object_t*)ctx, ctx->name); /* Take a ref for the entire duration of the DNS procedure, it will be released when it is finished */ belle_sip_object_ref(ctx); belle_sip_free(srv_prefix); return (belle_sip_resolver_context_t*)resolver_start_query(ctx); } void belle_sip_resolver_context_cancel(belle_sip_resolver_context_t *obj) { #ifdef HAVE_DNS_SERVICE bctbx_mutex_t *notify_mutex = NULL; if ((obj->use_dns_service == TRUE) && (BELLE_SIP_OBJECT_IS_INSTANCE_OF(obj, belle_sip_simple_resolver_context_t) == TRUE)) { notify_mutex = &(BELLE_SIP_SIMPLE_RESOLVER_CONTEXT(obj)->notify_mutex); bctbx_mutex_lock(notify_mutex); } #endif /* HAVE_DNS_SERVICE */ if (belle_sip_resolver_context_can_be_cancelled(obj)) { obj->cancelled = TRUE; BELLE_SIP_OBJECT_VPTR(obj, belle_sip_resolver_context_t)->cancel(obj); #ifdef HAVE_DNS_SERVICE if (notify_mutex != NULL) { bctbx_mutex_unlock(notify_mutex); } #endif /* HAVE_DNS_SERVICE */ belle_sip_object_unref(obj); } #ifdef HAVE_DNS_SERVICE else { if (notify_mutex != NULL) { bctbx_mutex_unlock(notify_mutex); } } #endif /* HAVE_DNS_SERVICE */ } void belle_sip_resolver_context_notify(belle_sip_resolver_context_t *obj) { #ifdef HAVE_DNS_SERVICE /* When using DNS Service, a ref is taken in simple resolver to ensure * the context is always present if a notify rises after a cancel * Check before performing the actual notify if we must unref it * as the notify may destroy the object (when the resolver is not simple * and unref after the notify if needed */ bool_t unref_me = ((obj->use_dns_service == TRUE) && (BELLE_SIP_OBJECT_IS_INSTANCE_OF(obj, belle_sip_simple_resolver_context_t) == TRUE)); #endif /* HAVE_DNS_SERVICE */ if (belle_sip_resolver_context_can_be_notified(obj)) { obj->notified = TRUE; BELLE_SIP_OBJECT_VPTR(obj, belle_sip_resolver_context_t)->notify(obj); belle_sip_object_unref(obj); } #ifdef HAVE_DNS_SERVICE if(unref_me == TRUE) { belle_sip_object_unref(obj); } #endif /* HAVE_DNS_SERVICE */ } /* This function does the connect() method to get local ip address suitable to reach a given destination. It works on all platform except for windows using ipv6 sockets. TODO: find a workaround for win32+ipv6 socket */ int belle_sip_get_src_addr_for(const struct sockaddr *dest, socklen_t destlen, struct sockaddr *src, socklen_t *srclen, int local_port){ int af_type=dest->sa_family; int sock=(int)bctbx_socket(af_type,SOCK_DGRAM,IPPROTO_UDP); int ret = 0; if (sock==(belle_sip_socket_t)-1){ if (af_type == AF_INET){ belle_sip_fatal("Could not create socket: %s",belle_sip_get_socket_error_string()); } goto fail; } if (af_type==AF_INET6 && (IN6_IS_ADDR_V4MAPPED(&((struct sockaddr_in6*)dest)->sin6_addr))){ /*this is actually required only for windows, who is unable to provide an ipv4 mapped local address if the remote is ipv4 mapped, and unable to provide a correct local address if the remote address is true ipv6 address when in dual stack mode*/ belle_sip_socket_enable_dual_stack(sock); } if (bctbx_connect(sock,dest,destlen)==-1){ //if (connect(sock,dest,destlen)==-1){ ret = -get_socket_error(); belle_sip_error("belle_sip_get_src_addr_for: bctbx_connect() failed: %s",belle_sip_get_socket_error_string_from_code(-ret)); goto fail; } if (bctbx_getsockname(sock,src,srclen)==-1){ ret = -get_socket_error(); belle_sip_error("belle_sip_get_src_addr_for: bctbx_getsockname() failed: %s",belle_sip_get_socket_error_string_from_code(-ret)); goto fail; } if (af_type==AF_INET6){ struct sockaddr_in6 *sin6=(struct sockaddr_in6*)src; sin6->sin6_port=htons(local_port); }else{ struct sockaddr_in *sin=(struct sockaddr_in*)src; sin->sin_port=htons(local_port); } belle_sip_close_socket(sock); return ret; fail: { struct addrinfo *res = bctbx_ip_address_to_addrinfo(af_type, SOCK_STREAM, af_type == AF_INET ? "127.0.0.1" : "::1", local_port); if (res != NULL) { memcpy(src,res->ai_addr,MIN((size_t)*srclen,res->ai_addrlen)); *srclen=(socklen_t)res->ai_addrlen; bctbx_freeaddrinfo(res); } else { if (af_type == AF_INET) belle_sip_fatal("belle_sip_get_src_addr_for(): belle_sip_ip_address_to_addrinfo() failed"); } } if (sock!=(belle_sip_socket_t)-1) belle_sip_close_socket(sock); return ret; } belle-sip-5.2.0+dfsg/src/belle_sip_uri_impl.c000066400000000000000000000503051434613136500211130ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "belle-sip/sip-uri.h" #include "belle-sip/parameters.h" #include #include #include #include "grammars/belle_sip_messageParser.h" #include "grammars/belle_sip_messageLexer.h" #include "belle_sip_internal.h" #include "listeningpoint_internal.h" #define SIP_URI_GET_SET_STRING(attribute) GET_SET_STRING(belle_sip_uri,attribute) #define SIP_URI_GET_SET_STRING_PARAM(attribute) GET_SET_STRING_PARAM2(belle_sip_uri,attribute,attribute##_param) #define SIP_URI_GET_SET_UINT(attribute) GET_SET_INT(belle_sip_uri,attribute,unsigned int) #define SIP_URI_GET_SET_INT(attribute) GET_SET_INT(belle_sip_uri,attribute,int) #define SIP_URI_GET_SET_INT_PARAM(attribute) GET_SET_INT_PARAM2(belle_sip_uri,attribute,int,attribute##_param) #define SIP_URI_GET_SET_BOOL(attribute) GET_SET_BOOL(belle_sip_uri,attribute,is) #define SIP_URI_HAS_SET_BOOL(attribute) GET_SET_BOOL(belle_sip_uri,attribute,has) #define SIP_URI_HAS_SET_BOOL_PARAM(attribute) GET_SET_BOOL_PARAM2(belle_sip_uri,attribute,has,attribute##_param) struct _belle_sip_uri { belle_sip_parameters_t params; unsigned int secure; char* user; char* user_password; char* host; int port; belle_sip_parameters_t * header_list; }; static void belle_sip_uri_destroy(belle_sip_uri_t* uri) { if (uri->user) belle_sip_free (uri->user); if (uri->host) belle_sip_free (uri->host); if (uri->user_password) belle_sip_free (uri->user_password); belle_sip_object_unref(BELLE_SIP_OBJECT(uri->header_list)); } static void belle_sip_uri_clone(belle_sip_uri_t* uri, const belle_sip_uri_t *orig){ uri->secure=orig->secure; uri->user=orig->user?belle_sip_strdup(orig->user):NULL; uri->user_password=orig->user_password?belle_sip_strdup(orig->user_password):NULL; uri->host=orig->host?belle_sip_strdup(orig->host):NULL; uri->port=orig->port; if (orig->header_list){ uri->header_list=(belle_sip_parameters_t*)belle_sip_object_clone(BELLE_SIP_OBJECT(orig->header_list)); belle_sip_object_ref(uri->header_list); } } static void encode_params(belle_sip_param_pair_t* container, belle_sip_list_t** newlist) { char *escapedName = belle_sip_uri_to_escaped_parameter(container->name); char *escapedValue = container->value? belle_sip_uri_to_escaped_parameter(container->value) : NULL; *newlist = belle_sip_list_append(*newlist, belle_sip_param_pair_new(escapedName, escapedValue)); if (escapedName) free(escapedName); if (escapedValue) free(escapedValue); } static void encode_headers(belle_sip_param_pair_t* container, belle_sip_list_t** newlist) { char *escapedName = belle_sip_uri_to_escaped_header(container->name); char *escapedValue = container->value? belle_sip_uri_to_escaped_header(container->value) : NULL; *newlist = belle_sip_list_append(*newlist, belle_sip_param_pair_new(escapedName, escapedValue)); if (escapedName) free(escapedName); if (escapedValue) free(escapedValue); } belle_sip_error_code belle_sip_uri_marshal(const belle_sip_uri_t* uri, char* buff, size_t buff_size, size_t *offset) { const belle_sip_list_t* list; belle_sip_error_code error=BELLE_SIP_OK; error=belle_sip_snprintf(buff,buff_size,offset,"%s:",uri->secure?"sips":"sip"); if (error!=BELLE_SIP_OK) return error; if (uri->user && uri->user[0]!='\0') { char* escaped_username=belle_sip_uri_to_escaped_username(uri->user); error=belle_sip_snprintf(buff,buff_size,offset,"%s",escaped_username); belle_sip_free(escaped_username); if (error!=BELLE_SIP_OK) return error; if (uri->user_password) { char* escaped_password=belle_sip_uri_to_escaped_userpasswd(uri->user_password); error=belle_sip_snprintf(buff,buff_size,offset,":%s",escaped_password); belle_sip_free(escaped_password); if (error!=BELLE_SIP_OK) return error; } error=belle_sip_snprintf(buff,buff_size,offset,"@"); if (error!=BELLE_SIP_OK) return error; } if (uri->host) { if (strchr(uri->host,':')) { /*ipv6*/ error=belle_sip_snprintf(buff,buff_size,offset,"[%s]",uri->host); } else { error=belle_sip_snprintf(buff,buff_size,offset,"%s",uri->host); } if (error!=BELLE_SIP_OK) return error; } else { belle_sip_warning("no host found in this uri"); } if (uri->port!=0) { error=belle_sip_snprintf(buff,buff_size,offset,":%i",uri->port); if (error!=BELLE_SIP_OK) return error; } { belle_sip_parameters_t *encparams = belle_sip_parameters_new(); belle_sip_list_for_each2(uri->params.param_list, (void (*)(void *, void *))encode_params, &encparams->param_list); error=belle_sip_parameters_marshal(encparams,buff,buff_size,offset); belle_sip_object_unref(encparams); if (error!=BELLE_SIP_OK) return error; } { belle_sip_list_t * encheaders = NULL; belle_sip_list_for_each2(uri->header_list->param_list, (void (*)(void *, void *))encode_headers, &encheaders); for(list=encheaders;list!=NULL;list=list->next){ belle_sip_param_pair_t* container = list->data; if (list == encheaders) { //first case error=belle_sip_snprintf(buff,buff_size,offset,"?%s=%s",container->name,container->value?container->value:""); } else { //subsequent headers error=belle_sip_snprintf(buff,buff_size,offset,"&%s=%s",container->name,container->value?container->value:""); } if (error!=BELLE_SIP_OK) break; } belle_sip_list_free_with_data(encheaders,(void (*)(void*))belle_sip_param_pair_destroy); } return error; } BELLE_SIP_PARSE(uri); BELLE_SIP_DECLARE_NO_IMPLEMENTED_INTERFACES(belle_sip_uri_t); BELLE_SIP_INSTANCIATE_VPTR(belle_sip_uri_t,belle_sip_parameters_t,belle_sip_uri_destroy,belle_sip_uri_clone,belle_sip_uri_marshal,TRUE); belle_sip_uri_t* belle_sip_uri_new () { belle_sip_uri_t* l_object = belle_sip_object_new(belle_sip_uri_t); belle_sip_parameters_init((belle_sip_parameters_t*)l_object); /*super*/ l_object->header_list = belle_sip_parameters_new(); belle_sip_object_ref(l_object->header_list); return l_object; } belle_sip_uri_t* belle_sip_uri_create (const char* username,const char* host) { belle_sip_uri_t* uri = belle_sip_uri_new(); belle_sip_uri_set_user(uri,username); belle_sip_uri_set_host(uri,host); return uri; } char* belle_sip_uri_to_string(const belle_sip_uri_t* uri) { return belle_sip_object_to_string(BELLE_SIP_OBJECT(uri)); } const char* belle_sip_uri_get_header(const belle_sip_uri_t* uri,const char* name) { return belle_sip_parameters_get_parameter(uri->header_list,name); } void belle_sip_uri_set_header(belle_sip_uri_t* uri,const char* name,const char* value) { belle_sip_parameters_set_parameter(uri->header_list,name,value); } void belle_sip_uri_remove_header(belle_sip_uri_t *uri, const char *name){ belle_sip_parameters_remove_parameter(uri->header_list,name); } const belle_sip_list_t* belle_sip_uri_get_header_names(const belle_sip_uri_t* uri) { return belle_sip_parameters_get_parameter_names(uri->header_list); } int belle_sip_uri_get_listening_port(const belle_sip_uri_t *uri){ int port=belle_sip_uri_get_port(uri); const char *transport=belle_sip_uri_get_transport_param(uri); if (!transport) { transport=belle_sip_uri_is_secure(uri)?"tls":"udp"; } if (port==0) port=belle_sip_listening_point_get_well_known_port(transport); return port; } void belle_sip_uri_fix(belle_sip_uri_t *uri){ /*nop, to be removed*/ } SIP_URI_GET_SET_BOOL(secure) SIP_URI_GET_SET_STRING(user) SIP_URI_GET_SET_STRING(user_password) SIP_URI_GET_SET_STRING(host) SIP_URI_GET_SET_INT(port) SIP_URI_GET_SET_STRING_PARAM(transport) SIP_URI_GET_SET_STRING_PARAM(user) SIP_URI_GET_SET_STRING_PARAM(method) SIP_URI_GET_SET_STRING_PARAM(maddr) SIP_URI_GET_SET_INT_PARAM(ttl) SIP_URI_HAS_SET_BOOL_PARAM(lr) const belle_sip_parameters_t* belle_sip_uri_get_headers(const belle_sip_uri_t* uri) { return uri->header_list; } void belle_sip_uri_headers_clean(belle_sip_uri_t* uri) { belle_sip_parameters_clean(uri->header_list); } static int uri_strcmp(const char*a,const char*b,int case_sensitive) { int result = 0; size_t index_a=0,index_b=0; char char_a,char_b; if (a == NULL && b == NULL) { goto end; } if ((a != NULL && b == NULL) || (a == NULL && b != NULL)){ result = 1; goto end; } do { index_a+=belle_sip_get_char(a+index_a,&char_a); index_b+=belle_sip_get_char(b+index_b,&char_b); if (!case_sensitive && char_a<0x7B && char_a>0x60) char_a-=0x20; if (!case_sensitive && char_b<0x7B && char_b>0x60) char_b-=0x20; result=(char_a!=char_b); if (result) break; if (char_a == '\0' || char_b == '\0') break; }while(1); end: return result; } #define IS_EQUAL(a,b) (uri_strcmp(a,b,TRUE)==0) #define IS_EQUAL_CASE(a,b) (uri_strcmp(a,b,FALSE)==0) #define PARAM_CASE_CMP(uri_a,uri_b,param) \ a_param_value=belle_sip_parameters_get_case_parameter((belle_sip_parameters_t*) uri_a,param); \ b_param_value=belle_sip_parameters_get_case_parameter((belle_sip_parameters_t*) uri_b,param);\ if (!IS_EQUAL_CASE(a_param_value,b_param_value)) return 0; /* * RFC 3261 SIP: Session Initiation Protocol June 2002 * 19.1.4 URI Comparison Some operations in this specification require determining whether two SIP or SIPS URIs are equivalent. In this specification, registrars need to compare bindings in Contact URIs in REGISTER requests (see Section 10.3.). SIP and SIPS URIs are compared for equality according to the following rules: */ static int belle_sip_uri_equals_with_omission(const belle_sip_uri_t* uri_a,const belle_sip_uri_t* uri_b,bool_t uri_omitting) { const belle_sip_list_t * params; belle_sip_param_pair_t * a_param; const char * a_param_value; const char * b_param_value; /* o A SIP and SIPS URI are never equivalent. */ if (belle_sip_uri_is_secure(uri_a)!=belle_sip_uri_is_secure(uri_b)) { return 0; } /* o Comparison of the userinfo of SIP and SIPS URIs is case- sensitive. This includes userinfo containing passwords or formatted as telephone-subscribers. Comparison of all other components of the URI is case-insensitive unless explicitly defined otherwise. */ if (!IS_EQUAL(uri_a->user,uri_b->user)) return 0; /* o The ordering of parameters and header fields is not significant in comparing SIP and SIPS URIs. o Characters other than those in the "reserved" set (see RFC 2396 [5]) are equivalent to their ""%" HEX HEX" encoding. o An IP address that is the result of a DNS lookup of a host name does not match that host name. o For two URIs to be equal, the user, password, host, and port components must match. */ if (!IS_EQUAL_CASE(uri_a->host,uri_b->host)) { return 0; } if (uri_omitting) { int port_a = uri_a->port; int port_b = uri_b->port; if (port_a == 0) { const char* transport_a = belle_sip_parameters_get_case_parameter((belle_sip_parameters_t*) uri_a, "transport"); if (transport_a == NULL) port_a = belle_sip_listening_point_get_well_known_port("UDP"); else port_a = belle_sip_listening_point_get_well_known_port(transport_a); } if (port_b == 0) { const char* transport_b = belle_sip_parameters_get_case_parameter((belle_sip_parameters_t*) uri_b, "transport"); if (transport_b == NULL) port_b = belle_sip_listening_point_get_well_known_port("UDP"); else port_b = belle_sip_listening_point_get_well_known_port(transport_b); } if (port_a != port_b) return 0; } else { /* In this case (by default) we respect URI omitting */ if (uri_a->port != uri_b->port) return 0; } /* A URI omitting the user component will not match a URI that includes one. A URI omitting the password component will not match a URI that includes one. A URI omitting any component with a default value will not match a URI explicitly containing that component with its default value. For instance, a URI omitting the optional port component will not match a URI explicitly declaring port 5060. The same is true for the transport-parameter, ttl-parameter, user-parameter, and method components. Defining sip:user@host to not be equivalent to sip:user@host:5060 is a change from RFC 2543. When deriving addresses from URIs, equivalent addresses are expected from equivalent URIs. The URI sip:user@host:5060 will always resolve to port 5060. The URI sip:user@host may resolve to other ports through the DNS SRV mechanisms detailed in [4]. o URI uri-parameter components are compared as follows: - Any uri-parameter appearing in both URIs must match. */ /* * - A user, ttl, or method uri-parameter appearing in only one URI never matches, even if it contains the default value. - A URI that includes an maddr parameter will not match a URI that contains no maddr parameter. * */ PARAM_CASE_CMP(uri_a,uri_b,"transport") PARAM_CASE_CMP(uri_a,uri_b,"user") PARAM_CASE_CMP(uri_a,uri_b,"ttl") PARAM_CASE_CMP(uri_a,uri_b,"method") PARAM_CASE_CMP(uri_a,uri_b,"maddr") for(params=belle_sip_parameters_get_parameters((belle_sip_parameters_t*) uri_a);params!=NULL;params=params->next) { a_param = (belle_sip_param_pair_t*)(params->data); if ((b_param_value=belle_sip_parameters_get_parameter((belle_sip_parameters_t*) uri_b,a_param->name)) != NULL) { if (!IS_EQUAL_CASE(b_param_value,a_param->value)) return 0; } } /* - All other uri-parameters appearing in only one URI are ignored when comparing the URIs. */ /* *fixme ignored for now*/ /* o URI header components are never ignored. Any present header component MUST be present in both URIs and match for the URIs to match. The matching rules are defined for each header field in Section 20. */ return 1; } int belle_sip_uri_equals(const belle_sip_uri_t* uri_a,const belle_sip_uri_t* uri_b) { return belle_sip_uri_equals_with_omission(uri_a, uri_b, FALSE); } int belle_sip_uri_equals_with_uri_omitting(const belle_sip_uri_t* uri_a, const belle_sip_uri_t* uri_b) { return belle_sip_uri_equals_with_omission(uri_a, uri_b, TRUE); } /*uri checker*/ /* * From 19.1.1 SIP and SIPS URI Components * dialog reg./redir. Contact/ default Req.-URI To From Contact R-R/Route external user -- o o o o o o password -- o o o o o o host -- m m m m m m port (1) o - - o o o user-param ip o o o o o o method INVITE - - - - - o maddr-param -- o - - o o o ttl-param 1 o - - o - o transp.-param (2) o - - o o o lr-param -- o - - - o o other-param -- o o o o o o headers -- - - - o - o (1): The default port value is transport and scheme dependent. The default is 5060 for sip: using UDP, TCP, or SCTP. The default is 5061 for sip: using TLS over TCP and sips: over TCP. (2): The default transport is scheme dependent. For sip:, it is UDP. For sips:, it is TCP. Table 1: Use and default values of URI components for SIP header field values, Request-URI and references*/ typedef enum { m /*mandotory*/ , o /*optionnal*/ , na /*not allowd*/ } mark; static const char* mark_to_string(mark value) { switch (value) { case o: return "optionnal"; case m: return "mandatory"; case na: return "not allowed"; } return "unknown"; } typedef struct uri_components { const char * name; mark user; mark password; mark host; mark port; mark user_param; mark method; mark maddr_param; mark ttl_param; mark transp_param; mark lr_param; mark other_param; mark headers; } uri_components_t; /*belle sip allows contact header without host because stack will automatically put host if missing*/ static uri_components_t uri_component_use_for_request = {"Req.-URI" ,o ,o ,m ,o ,o ,na ,o ,o ,o ,o ,o ,na}; static uri_components_t uri_component_use_for_header_to = {"Header To" ,o ,o ,m ,na ,o ,na ,na ,na ,na ,na ,o ,na}; static uri_components_t uri_component_use_for_header_from = {"Header From" ,o ,o ,m ,na ,o ,na ,na ,na ,na ,na ,o ,na}; static uri_components_t uri_component_use_for_header_refer_to = {"Header Refer-To" ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o}; static uri_components_t uri_component_use_for_contact_in_reg = {"Contact in REG" ,o ,o ,/*m*/o ,o ,o ,na ,o ,o ,o ,na ,o ,o}; static uri_components_t uri_component_use_for_dialog_ct_rr_ro = {"Dialog Contact/R-R/Route" ,o ,o ,/*m*/o ,o ,o ,na ,o ,na ,o ,o ,o ,na}; static uri_components_t uri_component_use_for_external = {"External" ,o ,o ,m ,o ,o ,o ,o ,o ,o ,o ,o ,o}; static int check_component(int is_present,mark requirement) { switch (requirement) { case o: return TRUE; case m: return is_present; case na: return !is_present; } return 0; } #define CHECK_URI_COMPONENT(uri_component,uri_component_name,component_use_rule,component_use_rule_name) \ if (!check_component(uri_component,component_use_rule)) {\ belle_sip_error("Uri component [%s] does not follow reqs [%s] for context [%s]", uri_component_name,mark_to_string(component_use_rule),component_use_rule_name);\ return FALSE;\ } static int check_uri_components(const belle_sip_uri_t* uri, const uri_components_t* components_use) { CHECK_URI_COMPONENT(uri->user!=NULL,"user",components_use->user,components_use->name) CHECK_URI_COMPONENT(uri->host!=NULL,"host",components_use->host,components_use->name) CHECK_URI_COMPONENT(uri->port>0,"port",components_use->port,components_use->name) CHECK_URI_COMPONENT(belle_sip_parameters_has_parameter(&uri->params,"maddr"),"maddr-param",components_use->maddr_param,components_use->name) CHECK_URI_COMPONENT(belle_sip_parameters_has_parameter(&uri->params,"ttl"),"ttl-param",components_use->ttl_param,components_use->name) CHECK_URI_COMPONENT(belle_sip_parameters_has_parameter(&uri->params,"transport"),"transp.-param",components_use->transp_param,components_use->name) CHECK_URI_COMPONENT(belle_sip_parameters_has_parameter(&uri->params,"lr"),"lr-param",components_use->lr_param,components_use->name) /*..*/ CHECK_URI_COMPONENT(belle_sip_list_size(belle_sip_parameters_get_parameters(uri->header_list))>0,"headers",components_use->headers,components_use->name) return TRUE; } /*return 0 if not compliant*/ int belle_sip_uri_check_components_from_request_uri(const belle_sip_uri_t* uri) { return check_uri_components(uri,&uri_component_use_for_request); } int belle_sip_uri_check_components_from_context(const belle_sip_uri_t* uri,const char* method,const char* header_name) { if (strcasecmp(BELLE_SIP_FROM,header_name)==0) return check_uri_components(uri,&uri_component_use_for_header_from); else if (strcasecmp(BELLE_SIP_TO,header_name)==0) return check_uri_components(uri,&uri_component_use_for_header_to); else if (strcasecmp(BELLE_SIP_CONTACT,header_name)==0 && method && strcasecmp("REGISTER",method)==0) return check_uri_components(uri,&uri_component_use_for_contact_in_reg); else if (strcasecmp(BELLE_SIP_CONTACT,header_name)==0 || strcasecmp(BELLE_SIP_RECORD_ROUTE,header_name)==0 || strcasecmp(BELLE_SIP_ROUTE,header_name)==0) return check_uri_components(uri,&uri_component_use_for_dialog_ct_rr_ro); else if (strcasecmp(BELLE_SIP_REFER_TO, header_name) == 0) return check_uri_components(uri, &uri_component_use_for_header_refer_to); else return check_uri_components(uri,&uri_component_use_for_external); } /*fast uri implemenation*/ typedef belle_sip_uri_t belle_sip_fast_uri_t; BELLE_SIP_PARSE(fast_uri); belle-sip-5.2.0+dfsg/src/belle_sip_utils.c000066400000000000000000000413161434613136500204350ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #define _CRT_RAND_S #include #include #include #include "belle_sip_internal.h" #include "bctoolbox/parser.h" #include "bctoolbox/crypto.h" #include "clock_gettime.h" /*for apple*/ #ifndef _WIN32 #include #include /*for gettimeofday*/ #include /* available on POSIX system only */ #else #include #endif belle_sip_error_code belle_sip_snprintf(char *buff, size_t buff_size, size_t *offset, const char *fmt, ...) { belle_sip_error_code ret; va_list args; va_start(args, fmt); ret = belle_sip_snprintf_valist(buff, buff_size, offset, fmt, args); va_end(args); return ret; } belle_sip_error_code belle_sip_snprintf_valist(char *buff, size_t buff_size, size_t *offset, const char *fmt, va_list args) { int ret; belle_sip_error_code error = BELLE_SIP_OK; ret = vsnprintf(buff + *offset, buff_size - *offset, fmt, args); if ((ret < 0) || (ret >= (int)(buff_size - *offset))) { error = BELLE_SIP_BUFFER_OVERFLOW; *offset = buff_size; } else { *offset += ret; } return error; } #if defined(_WIN32) || defined(_WIN32_WCE) #define ENDLINE "\r\n" #else #define ENDLINE "\n" #endif #ifdef _WIN32 static int belle_sip_gettimeofday (struct timeval *tv, void* tz) { union { __int64 ns100; /*time since 1 Jan 1601 in 100ns units */ FILETIME fileTime; } now; GetSystemTimeAsFileTime (&now.fileTime); tv->tv_usec = (long) ((now.ns100 / 10LL) % 1000000LL); tv->tv_sec = (long) ((now.ns100 - 116444736000000000LL) / 10000000LL); return 0; } #else #define belle_sip_gettimeofday gettimeofday #endif #ifndef _WIN32 static int find_best_clock_id (void) { #if 0 struct timespec ts; static int clock_id=-1; #ifndef __ANDROID__ #define DEFAULT_CLOCK_MODE CLOCK_MONOTONIC #else #define DEFAULT_CLOCK_MODE CLOCK_REALTIME /*monotonic clock stop during sleep mode*/ #endif if (clock_id==-1) { if (clock_gettime(DEFAULT_CLOCK_MODE,&ts)!=1){ clock_id=DEFAULT_CLOCK_MODE; } else if (clock_gettime(CLOCK_REALTIME,&ts)!=1){ clock_id=CLOCK_REALTIME; } else { belle_sip_fatal("Cannot find suitable clock mode"); } } return clock_id; #else /* Tt seems that both Linux, iOS, and MacOS stop incrementing the CLOCK_MONOTONIC during sleep time. * This is a real problem, because all refreshable requests (SUBSCRIBE, REGISTER, PUBLISH) won't be sent on time due to * system going to sleep. Let's take an example: a REGISTER is sent at T0 with expire 3600, then the macbook suspends at T0+60s. * When the macbook resumes at T0+8000, nothing happens. The REGISTER refresh will be sent at T0+8000+3600-60. * The only reason for seeing the register is if the network address has changed, in which case it will trigger a shutdown of all sockets. * As a result, we fallback to CLOCK_REALTIME until the OS correctly implement CLOCK_MONOTONIC according to POSIX specifications */ #ifdef __APPLE__ #ifdef CLOCK_REALTIME #undef CLOCK_REALTIME #endif #define CLOCK_REALTIME BC_CLOCK_REALTIME #endif return CLOCK_REALTIME; #endif } uint64_t belle_sip_time_ms(void){ #ifdef __APPLE__ #define clock_gettime bc_clock_gettime #endif struct timespec ts; if (clock_gettime(find_best_clock_id(),&ts)==-1){ belle_sip_error("clock_gettime() error for clock_id=%i: %s",find_best_clock_id(),strerror(errno)); return 0; } return (ts.tv_sec*1000LL) + (ts.tv_nsec/1000000LL); } #else uint64_t belle_sip_time_ms(void){ #ifdef BELLE_SIP_WINDOWS_DESKTOP return GetTickCount(); #else return GetTickCount64(); #endif } #endif /** * parser parameter pair */ belle_sip_param_pair_t* belle_sip_param_pair_new(const char* name,const char* value) { belle_sip_param_pair_t* lPair = (belle_sip_param_pair_t*)belle_sip_new0(belle_sip_param_pair_t); lPair->name=name?belle_sip_strdup(name):NULL; lPair->value=value?belle_sip_strdup(value):NULL; return lPair; } void belle_sip_param_pair_destroy(belle_sip_param_pair_t* pair) { if (pair->name) belle_sip_free(pair->name); if (pair->value) belle_sip_free(pair->value); belle_sip_free(pair); } int belle_sip_param_pair_comp_func(const belle_sip_param_pair_t *a, const char*b) { return strcmp(a->name,b); } int belle_sip_param_pair_case_comp_func(const belle_sip_param_pair_t *a, const char*b) { return strcasecmp(a->name,b); } char* _belle_sip_str_dup_and_unquote_string(const char* quoted_string) { size_t value_size = strlen(quoted_string); char* unquoted_string = belle_sip_malloc0(value_size-2+1); strncpy(unquoted_string,quoted_string+1,value_size-2); return unquoted_string; } char *belle_sip_unquote_strdup(const char *str){ const char *p; if (str==NULL) return NULL; for(p=str;*p!='\0';++p){ switch(*p){ case ' ': case '\t': break; case '"': return _belle_sip_str_dup_and_unquote_string(p); default: return belle_sip_strdup(str); break; } } return belle_sip_strdup(str); } void belle_sip_set_socket_api(bctbx_vsocket_api_t* my_api){ bctbx_vsocket_api_set_default(my_api); } static const char *symbols="aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ0123456789-~"; /** * Write a random text token of supplied size. **/ char * belle_sip_random_token(char *ret, size_t size){ return belle_sip_random_token_with_charset(ret, size, symbols, 64); } char * belle_sip_random_token_with_charset(char *ret, size_t size, const char * charset, size_t charset_length){ unsigned int i; belle_sip_random_bytes((unsigned char *)ret, size-1); for(i=0;ibuffer=buffer; reader->buf_size=bufsize; reader->bit_index=0; } static int bits_reader_read(bits_reader_t *reader, int count, unsigned int *ret){ unsigned int tmp; size_t byte_index=reader->bit_index/8; size_t bit_index=reader->bit_index % 8; int shift=32-(int)bit_index-count; if (count>=24){ belle_sip_error("This bit reader cannot read more than 24 bits at once."); return -1; } if (byte_indexbuf_size) tmp=((unsigned int)reader->buffer[byte_index++])<<24; else{ belle_sip_error("Bit reader goes end of stream."); return -1; } if (byte_indexbuf_size) tmp|=((unsigned int)reader->buffer[byte_index++])<<16; if (byte_indexbuf_size) tmp|=((unsigned int)reader->buffer[byte_index++])<<8; if (byte_indexbuf_size) tmp|=((unsigned int)reader->buffer[byte_index++]); tmp=tmp>>shift; tmp=tmp & ((1<bit_index+=count; *ret=tmp; return 0; } char * belle_sip_octets_to_text(const uint8_t *hash, size_t hash_len, char *ret, size_t size){ int i; bits_reader_t bitctx; bits_reader_init(&bitctx,hash,hash_len); for(i=0;i<(int)size-1;++i){ unsigned int val=0; if (bits_reader_read(&bitctx,6,&val)==0){ ret[i]=symbols[val]; }else break; } ret[i]=0; return ret; } void belle_sip_util_copy_headers(belle_sip_message_t *orig, belle_sip_message_t *dest, const char*header, int multiple){ const belle_sip_list_t *elem; elem=belle_sip_message_get_headers(orig,header); for (;elem!=NULL;elem=elem->next){ belle_sip_header_t *ref_header=(belle_sip_header_t*)elem->data; if (ref_header){ ref_header=(belle_sip_header_t*)belle_sip_object_clone((belle_sip_object_t*)ref_header); if (!multiple){ belle_sip_message_set_header(dest,ref_header); break; }else belle_sip_message_add_header(dest,ref_header); } } } char* belle_sip_to_unescaped_string(const char* buff) { return bctbx_unescaped_string(buff); } size_t belle_sip_get_char(const char* a, char *b) { return bctbx_get_char(a,b); } /* static void print_noescapes_map(char noescapes[BELLE_SIP_NO_ESCAPES_SIZE], const char *name) { unsigned int i; printf("Noescapes %s :", name); for (i=' '; i <= '~'; ++i) { if (noescapes[i] == 1) printf ("%c", i); //if (noescapes[i] == 1) printf ("%c %d - %d\n", i, (char)i, noescapes[i]); } printf ("init: %d\n", noescapes[BELLE_SIP_NO_ESCAPES_SIZE-1]); } */ static const bctbx_noescape_rules_t* get_sip_uri_username_noescapes(void) { static bctbx_noescape_rules_t noescapes = {0}; if (noescapes[BCTBX_NOESCAPE_RULES_USER_INDEX] == 0) { // concurrent initialization should not be an issue /*user = 1*( unreserved / escaped / user-unreserved ) unreserved = alphanum / mark mark = "-" / "_" / "." / "!" / "~" / "*" / "'" / "(" / ")" user-unreserved = "&" / "=" / "+" / "$" / "," / ";" / "?" / "/" */ bctbx_noescape_rules_add_alfanums(noescapes); /*mark*/ bctbx_noescape_rules_add_list(noescapes, "-_.!~*'()"); /*user-unreserved*/ bctbx_noescape_rules_add_list(noescapes, "&=+$,;?/"); noescapes[BCTBX_NOESCAPE_RULES_USER_INDEX] = 1; // initialized // print_noescapes_map(noescapes, "uri_username"); } return (const bctbx_noescape_rules_t*)&noescapes;/*gcc asks for a cast, clang not*/ } /* * * password = *( unreserved / escaped / "&" / "=" / "+" / "$" / "," ) * */ static const bctbx_noescape_rules_t* get_sip_uri_userpasswd_noescapes(void) { static bctbx_noescape_rules_t noescapes = {0}; if (noescapes[BCTBX_NOESCAPE_RULES_USER_INDEX] == 0) { // unreserved bctbx_noescape_rules_add_alfanums(noescapes); bctbx_noescape_rules_add_list(noescapes, "-_.!~*'()"); bctbx_noescape_rules_add_list(noescapes, "&=+$,"); noescapes[BCTBX_NOESCAPE_RULES_USER_INDEX] = 1; // initialized } return (const bctbx_noescape_rules_t*)&noescapes;/*gcc asks for a cast, clang not*/ } static const bctbx_noescape_rules_t* get_sip_uri_parameter_noescapes(void) { static bctbx_noescape_rules_t noescapes= {0}; if (noescapes[BCTBX_NOESCAPE_RULES_USER_INDEX] == 0) { /* other-param = pname [ "=" pvalue ] pname = 1*paramchar pvalue = 1*paramchar paramchar = param-unreserved / unreserved / escaped param-unreserved = "[" / "]" / "/" / ":" / "&" / "+" / "$" unreserved = alphanum / mark mark = "-" / "_" / "." / "!" / "~" / "*" / "'" / "(" / ")" escaped = "%" HEXDIG HEXDIG token = 1*(alphanum / "-" / "." / "!" / "%" / "*" / "_" / "+" / "`" / "'" / "~" ) */ //param-unreserved = bctbx_noescape_rules_add_list(noescapes,"[]/:&+$"); // token bctbx_noescape_rules_add_alfanums(noescapes); bctbx_noescape_rules_add_list(noescapes, "-.!%*_+`'~"); // unreserved bctbx_noescape_rules_add_list(noescapes, "-_.!~*'()"); noescapes[BCTBX_NOESCAPE_RULES_USER_INDEX] = 1; // initialized // print_noescapes_map(noescapes, "uri_parameter"); } return (const bctbx_noescape_rules_t*)&noescapes;/*gcc asks for a cast, clang not*/ } static const bctbx_noescape_rules_t* get_sip_uri_header_noescapes(void) { static bctbx_noescape_rules_t noescapes= {0}; if (noescapes[BCTBX_NOESCAPE_RULES_USER_INDEX] == 0) { /* unreserved = alphanum / mark mark = "-" / "_" / "." / "!" / "~" / "*" / "'" / "(" / ")" escaped = "%" HEXDIG HEXDIG //.... header = hname "=" hvalue hname = 1*( hnv-unreserved / unreserved / escaped ) hvalue = *( hnv-unreserved / unreserved / escaped ) hnv-unreserved = "[" / "]" / "/" / "?" / ":" / "+" / "$" */ // unreserved //alphanum bctbx_noescape_rules_add_alfanums(noescapes); //mark bctbx_noescape_rules_add_list(noescapes, "-_.!~*'()"); bctbx_noescape_rules_add_list(noescapes, "[]/?:+$"); //hnv-unreserved noescapes[BCTBX_NOESCAPE_RULES_USER_INDEX] = 1; // initialized // print_noescapes_map(noescapes, "uri_parameter"); } return (const bctbx_noescape_rules_t*)&noescapes;/*gcc asks for a cast, clang not*/ } char* belle_sip_uri_to_escaped_username(const char* buff) { return bctbx_escape(buff, *get_sip_uri_username_noescapes()); } char* belle_sip_username_unescape_unnecessary_characters(const char* buff) { return bctbx_unescaped_string_only_chars_in_rules(buff, *get_sip_uri_username_noescapes()); } char* belle_sip_uri_to_escaped_userpasswd(const char* buff) { return bctbx_escape(buff, *get_sip_uri_userpasswd_noescapes()); } char* belle_sip_uri_to_escaped_parameter(const char* buff) { return bctbx_escape(buff, *get_sip_uri_parameter_noescapes()); } char* belle_sip_uri_to_escaped_header(const char* buff) { return bctbx_escape(buff, *get_sip_uri_header_noescapes()); } /*uri (I.E RFC 2396)*/ static const bctbx_noescape_rules_t *get_generic_uri_query_noescapes(void) { static bctbx_noescape_rules_t noescapes= {0}; if (noescapes[BCTBX_NOESCAPE_RULES_USER_INDEX] == 0) { /* uric = reserved | unreserved | escaped reserved = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" | "$" | "," unreserved = alphanum | mark mark = "-" | "_" | "." | "!" | "~" | "*" | "'" | "(" | ")" 3.4. Query Component query = *uric Within a query component, the characters ";", "/", "?", ":", "@", "&", "=", "+", ",", and "$" are reserved. */ /*unreserved*/ bctbx_noescape_rules_add_alfanums(noescapes); /*mark*/ bctbx_noescape_rules_add_list(noescapes, "-_.!~*'()"); bctbx_noescape_rules_add_list(noescapes, "=&"); // otherwise how to pass parameters? noescapes[BCTBX_NOESCAPE_RULES_USER_INDEX] = 1; // initialized } return (const bctbx_noescape_rules_t*)&noescapes;/*gcc asks for a cast, clang not*/ } static const bctbx_noescape_rules_t *get_generic_uri_path_noescapes(void) { static bctbx_noescape_rules_t noescapes= {0}; if (noescapes[BCTBX_NOESCAPE_RULES_USER_INDEX] == 0) { /* 3.3. Path Component The path component contains data, specific to the authority (or the scheme if there is no authority component), identifying the resource within the scope of that scheme and authority. path = [ abs_path | opaque_part ] path_segments = segment *( "/" segment ) segment = *pchar *( ";" param ) param = *pchar pchar = unreserved | escaped | ":" | "@" | "&" | "=" | "+" | "$" | "," The path may consist of a sequence of path segments separated by a single slash "/" character. Within a path segment, the characters "/", ";", "=", and "?" are reserved. Each path segment may include a sequence of parameters, indicated by the semicolon ";" character. The parameters are not significant to the parsing of relative references. */ /*unreserved*/ bctbx_noescape_rules_add_alfanums(noescapes); /*mark*/ bctbx_noescape_rules_add_list(noescapes, "-_.!~*'()"); /*pchar*/ bctbx_noescape_rules_add_list(noescapes, ":@&=+$,"); /*;*/ bctbx_noescape_rules_add_list(noescapes, ";"); bctbx_noescape_rules_add_list(noescapes, "/"); noescapes[BCTBX_NOESCAPE_RULES_USER_INDEX] = 1; // initialized } return (const bctbx_noescape_rules_t*)&noescapes;/*gcc asks for a cast, clang not*/ } char* belle_generic_uri_to_escaped_query(const char* buff) { return bctbx_escape(buff, *get_generic_uri_query_noescapes()); } char* belle_generic_uri_to_escaped_path(const char* buff) { return bctbx_escape(buff, *get_generic_uri_path_noescapes()); } char* belle_sip_string_to_backslash_less_unescaped_string(const char* buff) { size_t buff_len = strlen(buff); char *output_buff=belle_sip_malloc(buff_len+1); unsigned int i; unsigned int out_buff_index=0; for(i=0; buff[i] != '\0'; i++) { if (buff[i] == '\\' && i + 1 < buff_len ) { /*make sure escaped caracter exist*/ i++;/*skip \*/ } /*make sure to only remove one \ in case of \\*/ output_buff[out_buff_index++]=buff[i]; } output_buff[out_buff_index]='\0'; return output_buff; } char* belle_sip_display_name_to_backslashed_escaped_string(const char* buff) { char output_buff[BELLE_SIP_MAX_TO_STRING_SIZE]; unsigned int i; unsigned int out_buff_index=0; for(i=0; buff[i] != '\0' && out_buff_index < sizeof(output_buff)-2; i++) { /*-3 to make sure last param can be stored in escaped form*/ const char c = buff[i]; if (c == '\"' || c == '\\') { output_buff[out_buff_index++]='\\'; /*insert escape character*/ } output_buff[out_buff_index++]=c; } output_buff[out_buff_index]='\0'; return belle_sip_strdup(output_buff); } belle-sip-5.2.0+dfsg/src/bodyhandler.c000066400000000000000000001336171434613136500175600ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "belle_sip_internal.h" #include "bctoolbox/vfs.h" #ifdef HAVE_ZLIB #include "zlib.h" #endif /* * Body handler base class implementation */ struct belle_sip_body_handler{ belle_sip_object_t base; belle_sip_body_handler_progress_callback_t progress_cb; size_t expected_size; /* 0 if unknown*/ size_t transfered_size; belle_sip_list_t *headers; /**> used when this body is part of a multipart message to store the header of this part */ char *headerStringBuffer; /**> buffer populated with a string created from marshaling the headers */ void *user_data; }; static void belle_sip_body_handler_clone(belle_sip_body_handler_t *obj, const belle_sip_body_handler_t *orig){ obj->progress_cb=orig->progress_cb; obj->user_data=orig->user_data; obj->expected_size=orig->expected_size; obj->transfered_size=orig->transfered_size; obj->headers=belle_sip_list_copy_with_data(orig->headers,(void *(*)(void*))belle_sip_object_clone_and_ref); if (orig->headerStringBuffer!=NULL) { obj->headerStringBuffer = strdup(orig->headerStringBuffer); } } static void belle_sip_body_handler_destroy(belle_sip_body_handler_t *obj){ belle_sip_list_free_with_data(obj->headers,belle_sip_object_unref); belle_sip_free(obj->headerStringBuffer); } static belle_sip_error_code belle_sip_body_handler_marshal(belle_sip_body_handler_t *obj, char *buff, size_t buff_size, size_t *offset) { int ret; size_t len; if (*offset == 0) belle_sip_body_handler_begin_send_transfer(obj); do { len = buff_size - *offset; ret = belle_sip_body_handler_send_chunk(obj, NULL, (uint8_t*)buff + *offset, &len); *offset += len; } while ((ret == BELLE_SIP_CONTINUE) && (len > 0)); if ((ret == BELLE_SIP_CONTINUE) || (ret == BELLE_SIP_BUFFER_OVERFLOW)) return BELLE_SIP_BUFFER_OVERFLOW; if (ret == BELLE_SIP_STOP) belle_sip_body_handler_end_transfer(obj); return BELLE_SIP_OK; } BELLE_SIP_DECLARE_NO_IMPLEMENTED_INTERFACES(belle_sip_body_handler_t); BELLE_SIP_INSTANCIATE_CUSTOM_VPTR_BEGIN(belle_sip_body_handler_t) { BELLE_SIP_VPTR_INIT(belle_sip_body_handler_t,belle_sip_object_t,TRUE), (belle_sip_object_destroy_t) belle_sip_body_handler_destroy, (belle_sip_object_clone_t) belle_sip_body_handler_clone, (belle_sip_object_marshal_t) belle_sip_body_handler_marshal, (belle_sip_object_on_first_ref_t) NULL, (belle_sip_object_on_last_ref_t) NULL, BELLE_SIP_DEFAULT_BUFSIZE_HINT }, NULL, /* begin_recv_transfer */ NULL, /* begin_send_transfer */ NULL, /* end_transfer */ NULL, /*chunk_recv*/ NULL /*chunk_send*/ BELLE_SIP_INSTANCIATE_CUSTOM_VPTR_END void belle_sip_body_handler_init(belle_sip_body_handler_t *obj, belle_sip_body_handler_progress_callback_t progress_cb, void *user_data){ obj->user_data=user_data; obj->progress_cb=progress_cb; obj->headers = NULL; /* header is not used in most of the case, set it using a dedicated function if needed */ obj->headerStringBuffer = NULL; /* header string buffer is set when adding a body handler to a multipart body handler */ } void belle_sip_body_handler_add_header(belle_sip_body_handler_t *obj, belle_sip_header_t *header) { if (header != NULL) { obj->headers=belle_sip_list_append(obj->headers,belle_sip_object_ref(header)); } } void belle_sip_body_handler_remove_header_from_ptr(belle_sip_body_handler_t *obj, belle_sip_header_t* header) { belle_sip_list_t* it = belle_sip_list_find(obj->headers, header); if (it) { belle_sip_object_unref(header); obj->headers = belle_sip_list_delete_link(obj->headers, it); } } const belle_sip_list_t* belle_sip_body_handler_get_headers(const belle_sip_body_handler_t *obj) { return obj->headers; } size_t belle_sip_body_handler_get_size(const belle_sip_body_handler_t *obj){ return obj->expected_size; } void belle_sip_body_handler_set_size(belle_sip_body_handler_t *obj, size_t size){ obj->expected_size=size; } size_t belle_sip_body_handler_get_transfered_size(const belle_sip_body_handler_t *obj){ return obj->transfered_size; } static void update_progress(belle_sip_body_handler_t *obj, belle_sip_message_t *msg){ belle_sip_debug("body handler [%p] : %llu bytes exchanged of %llu ", obj, (unsigned long long)obj->transfered_size, (unsigned long long)obj->expected_size); if (obj->progress_cb) obj->progress_cb(obj,msg,obj->user_data,obj->transfered_size,obj->expected_size); } void belle_sip_body_handler_begin_recv_transfer(belle_sip_body_handler_t *obj){ BELLE_SIP_OBJECT_VPTR_TYPE(belle_sip_body_handler_t) *vptr = BELLE_SIP_OBJECT_VPTR(obj, belle_sip_body_handler_t); if (vptr->begin_recv_transfer != NULL) { vptr->begin_recv_transfer(obj); } obj->transfered_size=0; } void belle_sip_body_handler_begin_send_transfer(belle_sip_body_handler_t *obj) { BELLE_SIP_OBJECT_VPTR_TYPE(belle_sip_body_handler_t) *vptr = BELLE_SIP_OBJECT_VPTR(obj, belle_sip_body_handler_t); if (vptr->begin_send_transfer != NULL) { vptr->begin_send_transfer(obj); } obj->transfered_size = 0; } void belle_sip_body_handler_recv_chunk(belle_sip_body_handler_t *obj, belle_sip_message_t *msg, uint8_t *buf, size_t size){ BELLE_SIP_OBJECT_VPTR(obj,belle_sip_body_handler_t)->chunk_recv(obj,msg,(off_t)obj->transfered_size,buf,size); obj->transfered_size+=size; update_progress(obj,msg); } int belle_sip_body_handler_send_chunk(belle_sip_body_handler_t *obj, belle_sip_message_t *msg, uint8_t *buf, size_t *size){ int ret; size_t to_send = *size; if (obj->expected_size!=0){ to_send=MIN(*size,obj->expected_size-obj->transfered_size); } if (to_send==0 && obj->transfered_size==obj->expected_size) { // An eWouldBlock error added a call to the function, nothing to send so return // In some case to_send=0 because not buffer is available but sendings not finished. belle_sip_message("body handler [%p] : Nothing to send",obj); *size=0; return BELLE_SIP_STOP; } ret=BELLE_SIP_OBJECT_VPTR(obj,belle_sip_body_handler_t)->chunk_send(obj,msg,(off_t)obj->transfered_size,buf,&to_send); obj->transfered_size+=to_send; *size=to_send; update_progress(obj,msg); if (obj->expected_size!=0){ if (obj->transfered_size==obj->expected_size) { return BELLE_SIP_STOP; } if (ret==BELLE_SIP_STOP && obj->transfered_sizeexpected_size){ belle_sip_error("body handler [%p] transfered only [%i] bytes while [%i] were expected",obj, (int)obj->transfered_size,(int)obj->expected_size); } } return ret; } void belle_sip_body_handler_end_transfer(belle_sip_body_handler_t *obj){ BELLE_SIP_OBJECT_VPTR_TYPE(belle_sip_body_handler_t) *vptr = BELLE_SIP_OBJECT_VPTR(obj, belle_sip_body_handler_t); if (vptr->end_transfer != NULL) { vptr->end_transfer(obj); } if (obj->expected_size==0) obj->expected_size=obj->transfered_size; } /* * memory body handler implementation. **/ struct belle_sip_memory_body_handler{ belle_sip_body_handler_t base; uint8_t *buffer; uint8_t encoding_applied; }; static void belle_sip_memory_body_handler_destroy(belle_sip_memory_body_handler_t *obj){ if (obj->buffer) belle_sip_free(obj->buffer); } static void belle_sip_memory_body_handler_clone(belle_sip_memory_body_handler_t *obj, const belle_sip_memory_body_handler_t *orig){ if (orig->buffer) { obj->buffer=belle_sip_malloc(orig->base.expected_size+1); memcpy(obj->buffer,orig->buffer,orig->base.expected_size); obj->buffer[orig->base.expected_size]='\0'; } obj->encoding_applied = orig->encoding_applied; } static void belle_sip_memory_body_handler_recv_chunk(belle_sip_body_handler_t *base, belle_sip_message_t *msg, off_t offset, uint8_t *buf, size_t size){ belle_sip_memory_body_handler_t *obj=(belle_sip_memory_body_handler_t*)base; obj->buffer=belle_sip_realloc(obj->buffer,offset+size+1); memcpy(obj->buffer+offset,buf,size); obj->buffer[offset+size]='\0'; } static int belle_sip_memory_body_handler_send_chunk(belle_sip_body_handler_t *base, belle_sip_message_t *msg, off_t offset, uint8_t *buf, size_t *size){ belle_sip_memory_body_handler_t *obj=(belle_sip_memory_body_handler_t*)base; size_t to_send=MIN(*size,obj->base.expected_size-offset); if (obj->buffer == NULL) return BELLE_SIP_STOP; memcpy(buf,obj->buffer+offset,to_send); *size=to_send; return (obj->base.expected_size-offset==*size) ? BELLE_SIP_STOP : BELLE_SIP_CONTINUE; } BELLE_SIP_DECLARE_NO_IMPLEMENTED_INTERFACES(belle_sip_memory_body_handler_t); BELLE_SIP_INSTANCIATE_CUSTOM_VPTR_BEGIN(belle_sip_memory_body_handler_t) { { BELLE_SIP_VPTR_INIT(belle_sip_memory_body_handler_t,belle_sip_body_handler_t,TRUE), (belle_sip_object_destroy_t) belle_sip_memory_body_handler_destroy, (belle_sip_object_clone_t)belle_sip_memory_body_handler_clone, NULL, BELLE_SIP_DEFAULT_BUFSIZE_HINT }, NULL, NULL, NULL, belle_sip_memory_body_handler_recv_chunk, belle_sip_memory_body_handler_send_chunk } BELLE_SIP_INSTANCIATE_CUSTOM_VPTR_END void *belle_sip_memory_body_handler_get_buffer(const belle_sip_memory_body_handler_t *obj){ return obj->buffer; } void belle_sip_memory_body_handler_set_buffer(belle_sip_memory_body_handler_t *obj, void *buffer) { if (obj->buffer != NULL) belle_sip_free(obj->buffer); obj->buffer = (uint8_t *)buffer; } #define BELLE_SIP_MEMORY_BODY_HANDLER_MINIMUM_DEFLATE_INPUT_SIZE 256 #define BELLE_SIP_MEMORY_BODY_HANDLER_ZLIB_INITIAL_SIZE 2048 int belle_sip_memory_body_handler_apply_encoding(belle_sip_memory_body_handler_t *obj, const char *encoding) { if (obj->encoding_applied == TRUE) return 0; if (!obj->buffer || (belle_sip_body_handler_get_size(BELLE_SIP_BODY_HANDLER(obj)) < BELLE_SIP_MEMORY_BODY_HANDLER_MINIMUM_DEFLATE_INPUT_SIZE)) return -1; #ifdef HAVE_ZLIB if (strcmp(encoding, "deflate") == 0) { z_stream strm; size_t initial_size = belle_sip_body_handler_get_size(BELLE_SIP_BODY_HANDLER(obj)); size_t final_size; unsigned int avail_out = BELLE_SIP_MEMORY_BODY_HANDLER_ZLIB_INITIAL_SIZE; unsigned int outbuf_size = avail_out; unsigned char *outbuf = belle_sip_malloc(outbuf_size); unsigned char *outbuf_ptr = outbuf; int ret; strm.zalloc = Z_NULL; strm.zfree = Z_NULL; strm.opaque = Z_NULL; ret = deflateInit(&strm, Z_DEFAULT_COMPRESSION); if (ret != Z_OK) { belle_sip_free(outbuf); return -1; } strm.avail_in = (uInt)initial_size; strm.next_in = obj->buffer; do { if (avail_out < BELLE_SIP_MEMORY_BODY_HANDLER_ZLIB_INITIAL_SIZE) { unsigned int cursize = (unsigned int)(outbuf_ptr - outbuf); outbuf_size *= 2; outbuf = belle_sip_realloc(outbuf, outbuf_size); outbuf_ptr = outbuf + cursize; } strm.avail_out = avail_out; strm.next_out = outbuf_ptr; deflate(&strm, Z_FINISH); outbuf_ptr += avail_out - strm.avail_out; avail_out = outbuf_size - (unsigned int)(outbuf_ptr - outbuf); } while (strm.avail_out == 0); deflateEnd(&strm); final_size = outbuf_ptr - outbuf; if ((final_size + 27) >= initial_size) { // 27 is the size of the Content-Encoding header belle_sip_message("Body not compressed because its size would have increased"); belle_sip_free(outbuf); return -1; } belle_sip_message("Body has been compressed: %u->%u:\n%s", (unsigned int)initial_size, (unsigned int)final_size, obj->buffer); belle_sip_free(obj->buffer); obj->buffer = outbuf; belle_sip_body_handler_set_size(BELLE_SIP_BODY_HANDLER(obj), final_size); obj->encoding_applied = TRUE; return 0; } else #endif { belle_sip_warning("%s: unknown encoding '%s'", __FUNCTION__, encoding); return -1; } } int belle_sip_memory_body_handler_unapply_encoding(belle_sip_memory_body_handler_t *obj, const char *encoding) { if (obj->buffer == NULL) return -1; #ifdef HAVE_ZLIB if (strcmp(encoding, "deflate") == 0) { z_stream strm; size_t initial_size = belle_sip_body_handler_get_size(BELLE_SIP_BODY_HANDLER(obj)); size_t final_size; unsigned int avail_out = BELLE_SIP_MEMORY_BODY_HANDLER_ZLIB_INITIAL_SIZE; unsigned int outbuf_size = avail_out; unsigned char *outbuf = belle_sip_malloc(outbuf_size); unsigned char *outbuf_ptr = outbuf; bool_t outbuf_too_small = FALSE; int ret; strm.zalloc = Z_NULL; strm.zfree = Z_NULL; strm.opaque = Z_NULL; strm.avail_in = 0; strm.next_in = Z_NULL; ret = inflateInit(&strm); if (ret != Z_OK) return -1; strm.avail_in = (uInt)initial_size; strm.next_in = obj->buffer; do { if ((avail_out < BELLE_SIP_MEMORY_BODY_HANDLER_ZLIB_INITIAL_SIZE) || (outbuf_too_small == TRUE)) { unsigned int cursize = (unsigned int)(outbuf_ptr - outbuf); unsigned int increase = outbuf_size; outbuf_size *= 2; outbuf = belle_sip_realloc(outbuf, outbuf_size); outbuf_ptr = outbuf + cursize; avail_out += increase; } outbuf_too_small = FALSE; strm.avail_out = avail_out; strm.next_out = outbuf_ptr; ret = inflate(&strm, Z_NO_FLUSH); switch (ret) { case Z_OK: /* Error handling for truncated input buffer. Z_STREAM_END is not returned but there is no further input content */ if (strm.avail_out > 0) { belle_sip_error("%s: truncated compressed body. Cannot uncompress it...", __FUNCTION__); return -1; } break; case Z_STREAM_END: // Everything is ok, continue break; case Z_BUF_ERROR: // Ask for more output space outbuf_too_small = TRUE; break; case Z_NEED_DICT: case Z_DATA_ERROR: case Z_STREAM_ERROR: case Z_MEM_ERROR: default: inflateEnd(&strm); belle_sip_free(outbuf); return -1; } outbuf_ptr += avail_out - strm.avail_out; avail_out = outbuf_size - (unsigned int)(outbuf_ptr - outbuf); } while (ret != Z_STREAM_END); inflateEnd(&strm); final_size = outbuf_ptr - outbuf; if (final_size == outbuf_size) { /* If not enough space get it to be able to put the final NULL character. */ outbuf = belle_sip_realloc(outbuf, outbuf_size + 1); outbuf_ptr = outbuf + final_size; } *outbuf_ptr = '\0'; belle_sip_message("Body has been uncompressed: %u->%u:\n%s", (unsigned int)initial_size, (unsigned int)final_size, outbuf); belle_sip_free(obj->buffer); obj->buffer = outbuf; belle_sip_body_handler_set_size(BELLE_SIP_BODY_HANDLER(obj), final_size); return 0; } else #endif { belle_sip_warning("%s: unknown encoding '%s'", __FUNCTION__, encoding); return -1; } } belle_sip_memory_body_handler_t *belle_sip_memory_body_handler_new(belle_sip_body_handler_progress_callback_t cb, void *user_data){ belle_sip_memory_body_handler_t *obj=belle_sip_object_new(belle_sip_memory_body_handler_t); belle_sip_body_handler_init((belle_sip_body_handler_t*)obj,cb,user_data); return obj; } belle_sip_memory_body_handler_t *belle_sip_memory_body_handler_new_from_buffer(void *buffer, size_t bufsize, belle_sip_body_handler_progress_callback_t cb, void *user_data){ belle_sip_memory_body_handler_t *obj=belle_sip_object_new(belle_sip_memory_body_handler_t); belle_sip_body_handler_init((belle_sip_body_handler_t*)obj,cb,user_data); obj->buffer=(uint8_t*)buffer; obj->base.expected_size=bufsize; return obj; } belle_sip_memory_body_handler_t *belle_sip_memory_body_handler_new_copy_from_buffer(const void *buffer, size_t bufsize, belle_sip_body_handler_progress_callback_t cb, void *user_data){ belle_sip_memory_body_handler_t *obj=belle_sip_object_new(belle_sip_memory_body_handler_t); belle_sip_body_handler_init((belle_sip_body_handler_t*)obj,cb,user_data); obj->buffer=(uint8_t*)belle_sip_malloc(bufsize+1); obj->buffer[bufsize]='\0'; obj->base.expected_size=bufsize; memcpy(obj->buffer,buffer,bufsize); return obj; } /* * Buffer manager, used for buffering user or file body handler */ typedef struct belle_sip_body_handler_buffer { size_t size; /**< the maximum buffer size + 1, if != 0, all received chunks are modified to have a size which is 0 mod (buffer_size) */ size_t index; /**< amount of data currently stored in buffer */ uint8_t *data; /**< data stored from previous chunk */ off_t next_offset; /**< store the next offset value */ } belle_sip_body_handler_buffer_t; /** * Clone a belle_sip_body_handler_buffer_t structure */ static void belle_sip_body_handler_buffer_clone(belle_sip_body_handler_buffer_t *dst, const belle_sip_body_handler_buffer_t *src) { dst->size=src->size; dst->index=src->index; dst->next_offset=src->next_offset; if (src->data != NULL) { dst->data=(uint8_t *)belle_sip_malloc(src->size); memcpy(dst->data, src->data, src->size); } else { dst->data=NULL; } } /* * Buffer the received data if needed * if buffer.size is not 0, reorganise the incoming data to deliver chunk of which size is 0 mod buffer.size * * @param[in/out] buffer holds buffer and indexes * @param[in/out] offset points at the end of processed data * @param[in] input points to the incoming data * @param[out output points to the data affected by the buffering * @param[in/out] size of the incoming buffer and of the outgoing one * @param[out] free_output_flag set to TRUE if the caller must free the output buffer after usage */ static void belle_sip_buffering_recv(belle_sip_body_handler_buffer_t *buffer, off_t *offset, uint8_t *input, uint8_t **output, size_t *size, bool_t *free_output_flag) { *free_output_flag=FALSE; // default is: do not free the output /* Do we need to buffer stuff ? */ if (buffer->size > 0) { size_t bufferized_size = buffer->index; *offset = buffer->next_offset; /* adjust the offset to keep track of past bufferized parts */ size_t total_size = buffer->index+*size; if (total_size >= buffer->size) { /* we have enough data to produce a chunk of at least buffer size */ /* we must bufferize what is over for next time */ buffer->index = total_size%buffer->size; /* save the pointer to the part we shall bufferize as we cannot crash the buffer yet */ uint8_t *next_buffer_input = input + *size - buffer->index; *size = total_size - buffer->index; /* size must be 0 mod (buffer index) */ buffer->next_offset += (off_t)*size; /* create this chunk */ if (bufferized_size > 0) { /* if we had some previously buffered data, prepend, otherwise, directly use the input, the modified size will do the trick */ *output = (uint8_t *)belle_sip_malloc(*size); memcpy(*output, buffer->data, bufferized_size); memcpy(*output+bufferized_size, input, *size-bufferized_size); *free_output_flag=TRUE; } else { *output = input; } /* crash the buffer with content needed for next round */ memcpy(buffer->data, next_buffer_input, buffer->index); } else if (*size == 0 ) { /* this is the end, pass the content of the buffer */ *size = buffer->index; buffer->next_offset += (off_t)*size; *output = buffer->data; } else { /* just add the current chunk into the buffer */ memcpy(buffer->data+buffer->index, input, *size); buffer->index += *size; *size = 0; /* be sure we won't do anything with current data */ *output=NULL; } } else { /* nothing to do, just pass the input */ *output = input; } } /* * User body handler implementation */ struct belle_sip_user_body_handler{ belle_sip_body_handler_t base; belle_sip_user_body_handler_start_callback_t start_cb; belle_sip_user_body_handler_recv_callback_t recv_cb; belle_sip_user_body_handler_send_callback_t send_cb; belle_sip_user_body_handler_stop_callback_t stop_cb; belle_sip_body_handler_buffer_t buffer; }; static void belle_sip_user_body_handler_destroy(belle_sip_user_body_handler_t *obj) { if (obj->buffer.data) { belle_sip_free(obj->buffer.data); obj->buffer.data=NULL; } }; static void belle_sip_user_body_handler_begin_transfer(belle_sip_body_handler_t *base) { belle_sip_user_body_handler_t *obj = (belle_sip_user_body_handler_t *)base; if (obj->start_cb) obj->start_cb((belle_sip_user_body_handler_t*)base, base->user_data); } static void belle_sip_user_body_handler_recv_chunk(belle_sip_body_handler_t *base, belle_sip_message_t *msg, off_t offset, uint8_t *buf, size_t size){ belle_sip_user_body_handler_t *obj=(belle_sip_user_body_handler_t*)base; if (obj->recv_cb) { /* buffer the incoming data if requested */ uint8_t *bufferized_data = NULL; bool_t free_output_flag = FALSE; belle_sip_buffering_recv(&(obj->buffer), &offset, buf, &bufferized_data, &size, &free_output_flag); /* send it to the callback if there is data to process */ if (size > 0) { obj->recv_cb((belle_sip_user_body_handler_t*)base, msg, base->user_data, offset, bufferized_data, size); } /* cleaning */ if (free_output_flag) { belle_sip_free(bufferized_data); } } else { belle_sip_warning("belle_sip_user_body_handler_t ignoring received chunk."); } } static int belle_sip_user_body_handler_send_chunk(belle_sip_body_handler_t *base, belle_sip_message_t *msg, off_t offset, uint8_t *buf, size_t *size){ belle_sip_user_body_handler_t *obj=(belle_sip_user_body_handler_t*)base; if (obj->send_cb) return obj->send_cb((belle_sip_user_body_handler_t*)base, msg, base->user_data, offset, buf, size); else belle_sip_warning("belle_sip_user_body_handler_t ignoring send chunk."); *size=0; return BELLE_SIP_STOP; } static void belle_sip_user_body_handler_end_transfer(belle_sip_body_handler_t *base) { belle_sip_user_body_handler_t *obj = (belle_sip_user_body_handler_t *)base; /* Are we bufferizing things ? */ if (obj->buffer.size > 0 && obj->buffer.index > 0) { /* call the recv_chunk function with the buffer content */ belle_sip_user_body_handler_recv_chunk(base, NULL, obj->buffer.next_offset, NULL, 0); } if (obj->stop_cb) obj->stop_cb((belle_sip_user_body_handler_t*)base, base->user_data); } static void belle_sip_user_body_handler_clone(belle_sip_user_body_handler_t *obj, const belle_sip_user_body_handler_t *orig){ obj->start_cb=orig->start_cb; obj->recv_cb=orig->recv_cb; obj->send_cb=orig->send_cb; obj->stop_cb=orig->stop_cb; belle_sip_body_handler_buffer_clone(&(obj->buffer), &(orig->buffer)); } BELLE_SIP_DECLARE_NO_IMPLEMENTED_INTERFACES(belle_sip_user_body_handler_t); BELLE_SIP_INSTANCIATE_CUSTOM_VPTR_BEGIN(belle_sip_user_body_handler_t) { { BELLE_SIP_VPTR_INIT(belle_sip_user_body_handler_t,belle_sip_body_handler_t,TRUE), (belle_sip_object_destroy_t)belle_sip_user_body_handler_destroy, (belle_sip_object_clone_t)belle_sip_user_body_handler_clone, NULL, BELLE_SIP_DEFAULT_BUFSIZE_HINT }, belle_sip_user_body_handler_begin_transfer, belle_sip_user_body_handler_begin_transfer, belle_sip_user_body_handler_end_transfer, belle_sip_user_body_handler_recv_chunk, belle_sip_user_body_handler_send_chunk } BELLE_SIP_INSTANCIATE_CUSTOM_VPTR_END belle_sip_user_body_handler_t *belle_sip_user_body_handler_new( size_t total_size, belle_sip_body_handler_progress_callback_t progress_cb, belle_sip_user_body_handler_start_callback_t start_cb, belle_sip_user_body_handler_recv_callback_t recv_cb, belle_sip_user_body_handler_send_callback_t send_cb, belle_sip_user_body_handler_stop_callback_t stop_cb, void *data){ belle_sip_user_body_handler_t * obj=belle_sip_object_new(belle_sip_user_body_handler_t); belle_sip_body_handler_init((belle_sip_body_handler_t*)obj,progress_cb,data); obj->base.expected_size=total_size; obj->start_cb=start_cb; obj->recv_cb=recv_cb; obj->send_cb=send_cb; obj->stop_cb=stop_cb; obj->buffer.size=0; obj->buffer.index=0; obj->buffer.data=NULL; obj->buffer.next_offset=0; return obj; } belle_sip_user_body_handler_t *belle_sip_buffering_user_body_handler_new( size_t total_size, size_t buffer_size, belle_sip_body_handler_progress_callback_t progress_cb, belle_sip_user_body_handler_start_callback_t start_cb, belle_sip_user_body_handler_recv_callback_t recv_cb, belle_sip_user_body_handler_send_callback_t send_cb, belle_sip_user_body_handler_stop_callback_t stop_cb, void *data){ belle_sip_user_body_handler_t *obj = belle_sip_user_body_handler_new(total_size, progress_cb, start_cb, recv_cb, send_cb, stop_cb, data); obj->buffer.size=buffer_size; obj->buffer.data=(uint8_t *)belle_sip_malloc(buffer_size); return obj; } /** * File body handler implementation **/ struct belle_sip_file_body_handler{ belle_sip_body_handler_t base; char *filepath; bctbx_vfs_file_t *file; belle_sip_user_body_handler_t *user_bh; belle_sip_body_handler_buffer_t buffer; }; static void belle_sip_file_body_handler_destroy(belle_sip_file_body_handler_t *obj) { if (obj->filepath) belle_sip_free(obj->filepath); if (obj->file) { ssize_t ret; ret = bctbx_file_close(obj->file); if (ret == BCTBX_VFS_ERROR) { bctbx_error("Can't close file %s", obj->filepath); } obj->file = NULL; } if (obj->buffer.data) { belle_sip_free(obj->buffer.data); obj->buffer.data=NULL; } if (obj->user_bh) { belle_sip_object_unref(obj->user_bh); obj->user_bh = NULL; } } static void belle_sip_file_body_handler_clone(belle_sip_file_body_handler_t *obj, const belle_sip_file_body_handler_t *orig) { obj->filepath = belle_sip_strdup(orig->filepath); obj->file = orig->file; obj->user_bh = orig->user_bh; if (obj->user_bh) { belle_sip_object_ref(obj->user_bh); } else { obj->user_bh = NULL; } belle_sip_body_handler_buffer_clone(&(obj->buffer), &(orig->buffer)); } static void belle_sip_file_body_handler_begin_recv_transfer(belle_sip_body_handler_t *base) { belle_sip_file_body_handler_t *obj = (belle_sip_file_body_handler_t *)base; bctbx_vfs_t *vfs = bctbx_vfs_get_default(); if (obj->filepath == NULL) return; obj->file = bctbx_file_open(vfs, obj->filepath, "r+"); if (!obj->file) { bctbx_error("Can't open file %s", obj->filepath); } if (obj->user_bh && obj->user_bh->start_cb) { obj->user_bh->start_cb((belle_sip_user_body_handler_t*)&(obj->user_bh->base), obj->user_bh->base.user_data); } } static void belle_sip_file_body_handler_begin_send_transfer(belle_sip_body_handler_t *base) { belle_sip_file_body_handler_t *obj = (belle_sip_file_body_handler_t *)base; bctbx_vfs_t *vfs = bctbx_vfs_get_default(); if (obj->filepath == NULL) return; obj->file = bctbx_file_open(vfs, obj->filepath, "r"); if (!obj->file) { bctbx_error("Can't open file %s", obj->filepath); } if (obj->user_bh && obj->user_bh->start_cb) { obj->user_bh->start_cb((belle_sip_user_body_handler_t*)&(obj->user_bh->base), obj->user_bh->base.user_data); } } static void belle_sip_file_body_handler_recv_chunk(belle_sip_body_handler_t *base, belle_sip_message_t *msg, off_t offset, uint8_t *buf, size_t size) { belle_sip_file_body_handler_t *obj = (belle_sip_file_body_handler_t *)base; ssize_t ret=0; if (obj->file == NULL) return; uint8_t *bufferized_data = NULL; bool_t free_output_flag = FALSE; if (obj->user_bh && obj->user_bh->recv_cb) { // pass the incoming data through buffering belle_sip_buffering_recv(&(obj->buffer), &offset, buf, &bufferized_data, &size, &free_output_flag); if (size>0) { obj->user_bh->recv_cb((belle_sip_user_body_handler_t*)&(obj->user_bh->base), msg, obj->user_bh->base.user_data, offset, bufferized_data, size); } } if (size > 0 ) { ret = bctbx_file_write(obj->file, bufferized_data, size, offset); } if (free_output_flag == TRUE) { belle_sip_free(bufferized_data); } if (ret == BCTBX_VFS_ERROR) { bctbx_error("File body handler recv write error at offset %lu", (unsigned long)offset); } } static void belle_sip_file_body_handler_end_transfer(belle_sip_body_handler_t *base) { belle_sip_file_body_handler_t *obj = (belle_sip_file_body_handler_t *)base; /* Are we bufferizing things ? */ if (obj->buffer.size > 0 && obj->buffer.index > 0) { /* call the recv_chunk function with the buffer content */ belle_sip_file_body_handler_recv_chunk(base, NULL, obj->buffer.next_offset, NULL, 0); } if (obj->file) {// Close the file before calling stop callback to let cb to do file modifications like renaming. ssize_t ret; ret = bctbx_file_close(obj->file); if (ret == BCTBX_VFS_ERROR) { bctbx_error("Can't close file %s", obj->filepath); } obj->file = NULL; } if (obj->user_bh && obj->user_bh->stop_cb) { obj->user_bh->stop_cb((belle_sip_user_body_handler_t*)&(obj->user_bh->base), obj->user_bh->base.user_data); } } static int belle_sip_file_body_handler_send_chunk(belle_sip_body_handler_t *base, belle_sip_message_t *msg, off_t offset, uint8_t *buf, size_t *size) { belle_sip_file_body_handler_t *obj = (belle_sip_file_body_handler_t *)base; ssize_t size_t_ret; size_t to_send = MIN(*size, obj->base.expected_size - offset); if (obj->file == NULL) return BELLE_SIP_STOP; size_t_ret = bctbx_file_read(obj->file, buf, to_send, offset); if (size_t_ret == BCTBX_VFS_ERROR) { bctbx_error("File body handler send read error at offset %lu", (unsigned long)offset); return BELLE_SIP_STOP; } *size = (size_t)size_t_ret; if (obj->user_bh && obj->user_bh->send_cb) { int result = obj->user_bh->send_cb((belle_sip_user_body_handler_t*)&(obj->user_bh->base), msg, obj->user_bh->base.user_data, offset, buf, size); if (result == BELLE_SIP_STOP) return result; } return (((obj->base.expected_size - offset) == (size_t)size_t_ret) || (*size == 0)) ? BELLE_SIP_STOP : BELLE_SIP_CONTINUE; } BELLE_SIP_DECLARE_NO_IMPLEMENTED_INTERFACES(belle_sip_file_body_handler_t); BELLE_SIP_INSTANCIATE_CUSTOM_VPTR_BEGIN(belle_sip_file_body_handler_t) { { BELLE_SIP_VPTR_INIT(belle_sip_file_body_handler_t,belle_sip_body_handler_t,TRUE), (belle_sip_object_destroy_t) belle_sip_file_body_handler_destroy, (belle_sip_object_clone_t)belle_sip_file_body_handler_clone, NULL, BELLE_SIP_DEFAULT_BUFSIZE_HINT }, belle_sip_file_body_handler_begin_recv_transfer, belle_sip_file_body_handler_begin_send_transfer, belle_sip_file_body_handler_end_transfer, belle_sip_file_body_handler_recv_chunk, belle_sip_file_body_handler_send_chunk } BELLE_SIP_INSTANCIATE_CUSTOM_VPTR_END belle_sip_file_body_handler_t *belle_sip_file_body_handler_new(const char *filepath, belle_sip_body_handler_progress_callback_t progress_cb, void *data) { // Get file size if it exists int64_t expected_size = BCTBX_VFS_ERROR; struct stat statbuf; if (stat(filepath, &statbuf) == 0) { bctbx_vfs_t *vfs = bctbx_vfs_get_default(); bctbx_vfs_file_t *fp = bctbx_file_open(vfs, filepath, "r"); expected_size = bctbx_file_size(fp); bctbx_file_close(fp); } belle_sip_file_body_handler_t *obj = belle_sip_object_new(belle_sip_file_body_handler_t); belle_sip_body_handler_init((belle_sip_body_handler_t*)obj, progress_cb, data); obj->filepath = belle_sip_strdup(filepath); obj->user_bh = NULL; if (expected_size != BCTBX_VFS_ERROR) { obj->base.expected_size = (size_t)expected_size; belle_sip_message("file body handler created for file [%s] with size [%zu]", filepath, obj->base.expected_size); } else { belle_sip_message("file body handler created for file [%s] with unknown size", filepath); } obj->buffer.size=0; obj->buffer.index=0; obj->buffer.data=NULL; obj->buffer.next_offset=0; return obj; } belle_sip_file_body_handler_t *belle_sip_buffering_file_body_handler_new(const char *filepath, const size_t buffer_size, belle_sip_body_handler_progress_callback_t progress_cb, void *data) { belle_sip_file_body_handler_t *obj = belle_sip_file_body_handler_new(filepath, progress_cb, data); obj->buffer.size=buffer_size; obj->buffer.data=(uint8_t *)belle_sip_malloc(buffer_size); return obj; } size_t belle_sip_file_body_handler_get_file_size(belle_sip_file_body_handler_t *file_bh) { return file_bh->base.expected_size; } void belle_sip_file_body_handler_set_user_body_handler(belle_sip_file_body_handler_t *file_bh, belle_sip_user_body_handler_t *user_bh) { if (file_bh) { file_bh->user_bh = user_bh; belle_sip_object_ref(file_bh->user_bh); } } /* * Multipart body handler implementation * TODO **/ static void belle_sip_multipart_body_handler_parse_final(belle_sip_multipart_body_handler_t *obj); struct belle_sip_multipart_body_handler{ belle_sip_body_handler_t base; belle_sip_list_t *parts; belle_sip_list_t *transfer_current_part; char *boundary; uint8_t *buffer; unsigned int related; }; GET_SET_BOOL(belle_sip_multipart_body_handler,related,is); static void belle_sip_multipart_body_handler_destroy(belle_sip_multipart_body_handler_t *obj){ belle_sip_list_free_with_data(obj->parts,belle_sip_object_unref); if (obj->buffer != NULL) belle_sip_free(obj->buffer); if (obj->boundary != NULL) belle_sip_free(obj->boundary); } static void belle_sip_multipart_body_handler_clone(belle_sip_multipart_body_handler_t *obj, const belle_sip_multipart_body_handler_t*other){ belle_sip_fatal("belle_sip_multipart_body_handler_clone() not implemenented."); } static void belle_sip_multipart_body_handler_begin_recv_transfer(belle_sip_body_handler_t *obj) { const belle_sip_list_t *it; belle_sip_multipart_body_handler_t *obj_multipart = (belle_sip_multipart_body_handler_t *)obj; for (it = obj_multipart->parts; it != NULL; it = it->next) { belle_sip_body_handler_t *bh = BELLE_SIP_BODY_HANDLER(it->data); belle_sip_body_handler_begin_recv_transfer(bh); } obj_multipart->transfer_current_part = obj_multipart->parts; } static void belle_sip_multipart_body_handler_begin_send_transfer(belle_sip_body_handler_t *obj) { const belle_sip_list_t *it; belle_sip_multipart_body_handler_t *obj_multipart = (belle_sip_multipart_body_handler_t *)obj; for (it = obj_multipart->parts; it != NULL; it = it->next) { belle_sip_body_handler_t *bh = BELLE_SIP_BODY_HANDLER(it->data); belle_sip_body_handler_begin_send_transfer(bh); } obj_multipart->transfer_current_part = obj_multipart->parts; } static void belle_sip_multipart_body_handler_end_transfer(belle_sip_body_handler_t *obj) { const belle_sip_list_t *it; belle_sip_multipart_body_handler_t *obj_multipart = (belle_sip_multipart_body_handler_t *)obj; if (obj_multipart->parts == NULL){ /* this was a receive transfer */ belle_sip_multipart_body_handler_parse_final(obj_multipart); }else{ for (it = obj_multipart->parts; it != NULL; it = it->next) { belle_sip_body_handler_t *bh = BELLE_SIP_BODY_HANDLER(it->data); belle_sip_body_handler_end_transfer(bh); } obj_multipart->transfer_current_part = NULL; } } static void belle_sip_multipart_body_handler_recv_chunk(belle_sip_body_handler_t *obj, belle_sip_message_t *msg, off_t offset, uint8_t *buffer, size_t size){ /* Store the whole buffer, the parts will be split when belle_sip_multipart_body_handler_progress_cb() is called with transfered size equal to expected size. */ belle_sip_multipart_body_handler_t *obj_multipart = (belle_sip_multipart_body_handler_t *)obj; obj_multipart->buffer = belle_sip_realloc(obj_multipart->buffer,offset + size + 1); memcpy(obj_multipart->buffer + offset, buffer, size); obj_multipart->buffer[offset + size] = '\0'; } static int belle_sip_multipart_body_handler_send_chunk(belle_sip_body_handler_t *obj, belle_sip_message_t *msg, off_t offset, uint8_t *buffer, size_t *size){ belle_sip_multipart_body_handler_t *obj_multipart=(belle_sip_multipart_body_handler_t*)obj; if (obj_multipart->transfer_current_part && obj_multipart->transfer_current_part->data) { /* we have a part, get its content from handler */ int retval = BELLE_SIP_STOP; size_t offsetSize = 0; /* used to store size of data added by this function and not given by the body handler of current part */ size_t boundary_len = strlen(obj_multipart->boundary); belle_sip_body_handler_t *current_part = (belle_sip_body_handler_t *)obj_multipart->transfer_current_part->data; *size -= strlen(obj_multipart->boundary) + 8; /* just in case it will be the end of the message, ask for less characters than possible in order to be able to add the multipart message termination. 8 is for "\r\n--" and "--\r\n" */ if (current_part->transfered_size == 0) { /* Nothing transfered yet on this part, include a separator and the header if exists */ size_t headersSize = 0; if (current_part != (belle_sip_body_handler_t *)obj_multipart->parts->data) { offsetSize += 2; /*delimiter := CRLF dash-boundary*/ } offsetSize += boundary_len + 4; /* 4 is for "--" and "\r\n" */ if (current_part->headerStringBuffer != NULL) { headersSize = strlen(current_part->headerStringBuffer); } /* check if buffer is large enough to get the whole header + separtor and at least a byte of data */ if (*size < headersSize+offsetSize+1) { return BELLE_SIP_BUFFER_OVERFLOW; } /* insert separator */ if (current_part != (belle_sip_body_handler_t *)obj_multipart->parts->data) { snprintf((char*)buffer, *size, "\r\n--%s\r\n",obj_multipart->boundary); /*delimiter := CRLF dash-boundary*/ } else { snprintf((char*)buffer, *size, "--%s\r\n",obj_multipart->boundary); } /* insert part header */ if (headersSize!=0) { memcpy(buffer+offsetSize, current_part->headerStringBuffer, headersSize); offsetSize += headersSize; } *size -=offsetSize; /* decrease data length requested to the current part handler */ } retval = belle_sip_body_handler_send_chunk(current_part, msg, buffer+offsetSize, size); /* add offsetSize to the buffer address in order to point at the begining of free space (after header if included) */ *size +=offsetSize; /* restore total of data given including potential separator and header */ if (retval == BELLE_SIP_CONTINUE) { return BELLE_SIP_CONTINUE; /* there is still data to be sent, continue */ } else { /* this part has reach the end, pass to next one if there is one */ if (obj_multipart->transfer_current_part->next!=NULL) { /* there is an other part to be sent */ obj_multipart->transfer_current_part = belle_sip_list_next(obj_multipart->transfer_current_part); return BELLE_SIP_CONTINUE; } else { /* there is nothing else, close the message and return STOP */ size_t boundary_len = strlen(obj_multipart->boundary); memcpy(buffer + *size, "\r\n--", 4); memcpy(buffer + *size + 4, obj_multipart->boundary, boundary_len); memcpy(buffer + *size + 4 + boundary_len, "--\r\n", 4); *size+=boundary_len + 8; return BELLE_SIP_STOP; } } } return BELLE_SIP_STOP; } BELLE_SIP_DECLARE_NO_IMPLEMENTED_INTERFACES(belle_sip_multipart_body_handler_t); BELLE_SIP_INSTANCIATE_CUSTOM_VPTR_BEGIN(belle_sip_multipart_body_handler_t) { { BELLE_SIP_VPTR_INIT(belle_sip_multipart_body_handler_t,belle_sip_body_handler_t,TRUE), (belle_sip_object_destroy_t) belle_sip_multipart_body_handler_destroy, (belle_sip_object_clone_t)belle_sip_multipart_body_handler_clone, NULL, BELLE_SIP_DEFAULT_BUFSIZE_HINT }, belle_sip_multipart_body_handler_begin_recv_transfer, belle_sip_multipart_body_handler_begin_send_transfer, belle_sip_multipart_body_handler_end_transfer, belle_sip_multipart_body_handler_recv_chunk, belle_sip_multipart_body_handler_send_chunk } BELLE_SIP_INSTANCIATE_CUSTOM_VPTR_END static const char *boundary_charset = "aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ0123456789-"; static void belle_sip_multipart_body_handler_set_boundary(belle_sip_multipart_body_handler_t *obj, const char *boundary) { if (obj->boundary != NULL) { belle_sip_free(obj->boundary); } if (boundary != NULL) { obj->boundary = belle_sip_strdup(boundary); } else { char random_token[60];// Use a random boundary to reduce the probability of having the same boundary in file (like uploading file logs with file transfer). obj->boundary = belle_sip_strdup_printf("----------%s", belle_sip_random_token_with_charset(random_token, sizeof(random_token), boundary_charset, 63)); } } const char *belle_sip_multipart_body_handler_get_boundary(const belle_sip_multipart_body_handler_t *obj) { return obj->boundary; } belle_sip_multipart_body_handler_t *belle_sip_multipart_body_handler_new(belle_sip_body_handler_progress_callback_t progress_cb, void *data, belle_sip_body_handler_t *first_part, const char *boundary){ belle_sip_multipart_body_handler_t *obj=belle_sip_object_new(belle_sip_multipart_body_handler_t); belle_sip_body_handler_init((belle_sip_body_handler_t*)obj,progress_cb,data); belle_sip_multipart_body_handler_set_boundary(obj, boundary); obj->base.expected_size = strlen(obj->boundary) + 8; /* body's length will be part length(including boundary) + multipart end. 8 is for "\r\n--" and "--\r\n" */ if (first_part) belle_sip_multipart_body_handler_add_part(obj,first_part); return obj; } belle_sip_multipart_body_handler_t *belle_sip_multipart_body_handler_new_from_buffer(const void *buffer, size_t bufsize, const char *boundary) { belle_sip_multipart_body_handler_t *obj_multipart = belle_sip_object_new(belle_sip_multipart_body_handler_t); belle_sip_body_handler_t *obj = (belle_sip_body_handler_t *)obj_multipart; belle_sip_body_handler_init((belle_sip_body_handler_t *)obj, NULL, NULL); belle_sip_multipart_body_handler_set_boundary(obj_multipart, boundary); obj_multipart->base.expected_size = bufsize; belle_sip_body_handler_begin_recv_transfer(obj); belle_sip_body_handler_recv_chunk(obj, NULL, (uint8_t *)buffer, bufsize); belle_sip_body_handler_end_transfer(obj); return obj_multipart; } #define DEFAULT_HEADER_STRING_SIZE 512 void belle_sip_multipart_body_handler_add_part(belle_sip_multipart_body_handler_t *obj, belle_sip_body_handler_t *part){ if (obj->parts != NULL) { obj->base.expected_size += 2; /*delimiter := CRLF dash-boundary*/ //add initial CRLF*/ } obj->base.expected_size+=part->expected_size+strlen(obj->boundary) + 4; /* add the separator length to the body length as each part start with a separator. 4 is for "--" and "\r\n" */ if (part->headers != NULL) { /* there is a declared header for this part, add its length to the expected total length */ size_t headerStringBufferSize = DEFAULT_HEADER_STRING_SIZE; size_t offset = 0; belle_sip_list_t *headerList = part->headers; part->headerStringBuffer = (char *)belle_sip_malloc(DEFAULT_HEADER_STRING_SIZE); while (headerList != NULL) { size_t offsetBackup=offset; /* we must backup the offset as it will be messed up by the marshal function in case of failure */ belle_sip_error_code returnCode = belle_sip_object_marshal(headerList->data, part->headerStringBuffer, headerStringBufferSize-5, &offset); /* -5 to leave room for carriage returns */ if (returnCode == BELLE_SIP_BUFFER_OVERFLOW) { /* increase buffer size */ offset=offsetBackup; /* restore the offset, no data were written to the buffer */ headerStringBufferSize+=DEFAULT_HEADER_STRING_SIZE; part->headerStringBuffer = (char *)belle_sip_realloc(part->headerStringBuffer, headerStringBufferSize); } else if (returnCode == BELLE_SIP_OK) { /* add the carriage return chars */ part->headerStringBuffer[offset++]='\r'; part->headerStringBuffer[offset++]='\n'; headerList = belle_sip_list_next(headerList); } } part->headerStringBuffer[offset++]='\r'; part->headerStringBuffer[offset++]='\n'; obj->base.expected_size += offset; part->headerStringBuffer[offset++]='\0'; /* null terminate the buffer in order to be able to get it length later using strlen */ } obj->parts=belle_sip_list_append(obj->parts,belle_sip_object_ref(part)); } const belle_sip_list_t* belle_sip_multipart_body_handler_get_parts(const belle_sip_multipart_body_handler_t *obj) { return obj->parts; } static void belle_sip_multipart_body_handler_parse_final(belle_sip_multipart_body_handler_t *obj_multipart){ /* The full multipart body has been received, we can now parse it and split the different parts, * creating a belle_sip_memory_body_handler for each part and adding them to the belle_sip_multipart_body_handler * parts list. */ belle_sip_memory_body_handler_t *memorypart; belle_sip_header_t *header; uint8_t *end_part_cursor; uint8_t *end_headers_cursor; uint8_t *end_header_cursor; uint8_t *cursor = obj_multipart->buffer; char *dash_boundary = belle_sip_strdup_printf("--%s", obj_multipart->boundary); size_t expected_size = obj_multipart->base.expected_size; /* Save expected size. Indeed add_parts() plays with it * for the composing process. For parsing process we actually don't need this, so the correct size will be restored at the end.*/ if (strncmp((char *)cursor, dash_boundary, strlen(dash_boundary))) { belle_sip_warning("belle_sip_multipart_body_handler [%p]: body not starting by specified boundary '%s'", obj_multipart, obj_multipart->boundary); belle_sip_free(dash_boundary); return; } cursor += strlen(dash_boundary); do { bool_t delimiter_contains_crlf = FALSE; if (strncmp((char *)cursor, "\r\n", 2)) { belle_sip_warning("belle_sip_multipart_body_handler [%p]: no new-line after boundary", obj_multipart); belle_sip_free(dash_boundary); return; } cursor += 2; end_part_cursor = (uint8_t *)strstr((char *)cursor, dash_boundary); if (end_part_cursor == NULL) { belle_sip_error("belle_sip_multipart_body_handler [%p]: cannot find next boundary", obj_multipart); belle_sip_free(dash_boundary); return; } else { if (*(end_part_cursor-1) == '\n' && *(end_part_cursor-2) == '\r') { end_part_cursor-=2; /* delimiter is well formed: delimiter := CRLF dash-boundary */ delimiter_contains_crlf = TRUE; } *end_part_cursor = 0; end_headers_cursor = (uint8_t *)strstr((char *)cursor, "\r\n\r\n"); if (end_headers_cursor == NULL) { memorypart = belle_sip_memory_body_handler_new_copy_from_buffer(cursor, strlen((char *)cursor), NULL, NULL); } else { uint8_t *begin_body_cursor = end_headers_cursor + 4; memorypart = belle_sip_memory_body_handler_new_copy_from_buffer(begin_body_cursor, strlen((char *)begin_body_cursor), NULL, NULL); do { end_header_cursor = (uint8_t *)strstr((char *)cursor, "\r\n"); *end_header_cursor = 0; header = belle_sip_header_parse((char *)cursor); if (header != NULL) { belle_sip_body_handler_add_header(BELLE_SIP_BODY_HANDLER(memorypart), header); } cursor = end_header_cursor + 2; } while (end_header_cursor != end_headers_cursor); } belle_sip_multipart_body_handler_add_part(obj_multipart, BELLE_SIP_BODY_HANDLER(memorypart)); cursor = end_part_cursor + strlen(dash_boundary); if (delimiter_contains_crlf) cursor += 2; } } while (strncmp((char *)cursor, "--\r\n", 4)); belle_sip_free(dash_boundary); obj_multipart->base.expected_size = expected_size; } belle-sip-5.2.0+dfsg/src/channel.c000066400000000000000000001754521434613136500167000ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "belle_sip_internal.h" #include #include #include #ifdef __ANDROID__ #include "wakelock_internal.h" #endif #define BELLE_SIP_CHANNEL_INVOKE_MESSAGE_HEADERS_LISTENERS(channel,msg) \ BELLE_SIP_INVOKE_LISTENERS_ARG1_ARG2(channel->full_listeners, belle_sip_channel_listener_t, on_message_headers, channel, msg) #define BELLE_SIP_CHANNEL_INVOKE_SENDING_LISTENERS(channel,msg) \ BELLE_SIP_INVOKE_LISTENERS_ARG1_ARG2(channel->full_listeners, belle_sip_channel_listener_t, on_sending, channel, msg) #define BELLE_SIP_CHANNEL_INVOKE_STATE_LISTENERS(channel,state) \ BELLE_SIP_INVOKE_LISTENERS_REVERSE_ARG1_ARG2(channel->full_listeners, belle_sip_channel_listener_t, on_state_changed, channel, state) \ BELLE_SIP_INVOKE_LISTENERS_REVERSE_ARG1_ARG2(channel->state_listeners, belle_sip_channel_listener_t, on_state_changed, channel, state) static void channel_prepare_continue(belle_sip_channel_t *obj); static void channel_process_queue(belle_sip_channel_t *obj); static void channel_begin_send_background_task(belle_sip_channel_t *obj); static void channel_end_send_background_task(belle_sip_channel_t *obj); static void channel_begin_recv_background_task(belle_sip_channel_t *obj); static void channel_end_recv_background_task(belle_sip_channel_t *obj); static void channel_process_queue(belle_sip_channel_t *obj); static char *make_logbuf(belle_sip_channel_t *obj, belle_sip_log_level level, const char *buffer, size_t size); static void channel_remove_listener(belle_sip_channel_t *obj, belle_sip_channel_listener_t *l); static void free_ewouldblock_buffer(belle_sip_channel_t *obj); const char *belle_sip_channel_state_to_string(belle_sip_channel_state_t state){ switch(state){ case BELLE_SIP_CHANNEL_INIT: return "INIT"; case BELLE_SIP_CHANNEL_RES_IN_PROGRESS: return "RES_IN_PROGRESS"; case BELLE_SIP_CHANNEL_RES_DONE: return "RES_DONE"; case BELLE_SIP_CHANNEL_CONNECTING: return "CONNECTING"; case BELLE_SIP_CHANNEL_RETRY: return "RETRY"; case BELLE_SIP_CHANNEL_READY: return "READY"; case BELLE_SIP_CHANNEL_ERROR: return "ERROR"; case BELLE_SIP_CHANNEL_DISCONNECTED: return "DISCONNECTED"; } return "BAD"; } static belle_sip_list_t * for_each_weak_unref_free(belle_sip_list_t *l, belle_sip_object_destroy_notify_t notify, void *ptr){ belle_sip_list_t *elem,*next; for(elem=l;elem!=NULL;elem=next){ next=elem->next; belle_sip_object_weak_unref(elem->data,notify,ptr); belle_sip_free(elem); } return NULL; } static void belle_sip_channel_input_stream_rewind(belle_sip_channel_input_stream_t* input_stream){ int remaining; remaining=(int)(input_stream->write_ptr-input_stream->read_ptr); if (remaining>0){ /* copy remaning bytes at top of buffer*/ memmove(input_stream->buff,input_stream->read_ptr,remaining); input_stream->read_ptr=input_stream->buff; input_stream->write_ptr=input_stream->buff+remaining; *input_stream->write_ptr='\0'; }else{ input_stream->read_ptr=input_stream->write_ptr=input_stream->buff; } } static void belle_sip_channel_input_stream_reset(belle_sip_channel_input_stream_t* input_stream) { belle_sip_channel_input_stream_rewind(input_stream); input_stream->state=WAITING_MESSAGE_START; if (input_stream->msg != NULL) belle_sip_object_unref(input_stream->msg); input_stream->msg=NULL; input_stream->chuncked_mode=FALSE; input_stream->content_length=-1; } static size_t belle_sip_channel_input_stream_get_buff_length(belle_sip_channel_input_stream_t* input_stream) { return sizeof(input_stream->buff) - (input_stream->write_ptr-input_stream->buff); } static void belle_sip_channel_destroy(belle_sip_channel_t *obj){ belle_sip_channel_input_stream_reset(&obj->input_stream); if (obj->peer_cname) belle_sip_free(obj->peer_cname); belle_sip_free(obj->peer_name); if (obj->local_ip) belle_sip_free(obj->local_ip); obj->state_listeners=for_each_weak_unref_free(obj->state_listeners,(belle_sip_object_destroy_notify_t)channel_remove_listener,obj); obj->full_listeners=for_each_weak_unref_free(obj->full_listeners,(belle_sip_object_destroy_notify_t)channel_remove_listener,obj); if (obj->resolver_ctx != NULL) { belle_sip_resolver_context_cancel(obj->resolver_ctx); belle_sip_object_unref(obj->resolver_ctx); } SET_OBJECT_PROPERTY(obj, resolver_results, NULL); if (obj->static_peer_list) bctbx_freeaddrinfo(obj->static_peer_list); if (obj->inactivity_timer){ belle_sip_main_loop_remove_source(obj->stack->ml,obj->inactivity_timer); belle_sip_object_unref(obj->inactivity_timer); } if (obj->dns_ttl_timer) { belle_sip_main_loop_remove_source(obj->stack->ml, obj->dns_ttl_timer); belle_sip_object_unref(obj->dns_ttl_timer); } if (obj->public_ip) belle_sip_free(obj->public_ip); if (obj->outgoing_messages) belle_sip_list_free_with_data(obj->outgoing_messages,belle_sip_object_unref); if (obj->incoming_messages) belle_sip_list_free_with_data(obj->incoming_messages,belle_sip_object_unref); free_ewouldblock_buffer(obj); if (obj->cur_out_message){ belle_sip_object_unref(obj->cur_out_message); obj->cur_out_message=NULL; } channel_end_send_background_task(obj); channel_end_recv_background_task(obj); /*normally this should do nothing because it sould have been terminated already, however leaving a background task open is so dangerous that we have to be paranoid*/ belle_sip_message("Channel [%p] destroyed",obj); } BELLE_SIP_DECLARE_NO_IMPLEMENTED_INTERFACES(belle_sip_channel_t); BELLE_SIP_INSTANCIATE_CUSTOM_VPTR_BEGIN(belle_sip_channel_t) { BELLE_SIP_VPTR_INIT(belle_sip_channel_t,belle_sip_source_t,FALSE), (belle_sip_object_destroy_t)belle_sip_channel_destroy, NULL, /*clone*/ NULL, /*marshal*/ NULL, /*on_first_ref*/ NULL, /*on_last_ref*/ BELLE_SIP_DEFAULT_BUFSIZE_HINT }, NULL, /* transport */ 0, /* reliable */ NULL, /* connect */ NULL, /* channel_send */ NULL, /* channel_recv */ NULL /* close */ BELLE_SIP_INSTANCIATE_CUSTOM_VPTR_END static void fix_incoming_via(belle_sip_request_t *msg, const struct addrinfo* origin){ char received[NI_MAXHOST]; char rport[NI_MAXSERV]; belle_sip_header_via_t *via; int err; struct sockaddr_storage saddr; socklen_t slen=sizeof(saddr); if (!origin) { belle_sip_warning("cannot fix via for message [%p], probably a test",msg); return; } bctbx_sockaddr_remove_v4_mapping(origin->ai_addr, (struct sockaddr*)&saddr, &slen); err=bctbx_getnameinfo( (struct sockaddr*)&saddr,slen,received,sizeof(received), rport,sizeof(rport),NI_NUMERICHOST|NI_NUMERICSERV ); if (err!=0){ belle_sip_error("fix_via: getnameinfo() failed: %s",gai_strerror(errno)); return; } via=BELLE_SIP_HEADER_VIA(belle_sip_message_get_header((belle_sip_message_t*)msg,"via")); if (via){ const char* host = belle_sip_header_via_get_host(via); if (strcmp(host,received)!=0) belle_sip_header_via_set_received(via,received); if (belle_sip_parameters_has_parameter(BELLE_SIP_PARAMETERS(via),"rport")){ int port = belle_sip_header_via_get_listening_port(via); int rport_int=atoi(rport); if (rport_int!=port) belle_sip_header_via_set_rport(via,atoi(rport)); } } } // token = 1*(alphanum / "-" / "." / "!" / "%" / "*" / "_" / "+" / "`" / "'" / "~" ) static int is_token(const char* buff,size_t bufflen ) { size_t i; for (i=0; i='0' && buff[i]<='9') || (buff[i]>='A' && buff[i]<='Z') || (buff[i]>='a' && buff[i]<='z') || (buff[i]=='\0')) continue; else return 0; } } return 1; } static int get_message_start_pos(char *buff, size_t bufflen) { /*FIXME still to optimize and better test, specially REQUEST PATH and error path*/ int i; int res=0; int status_code; char method[17]={0}; char saved_char1; char sip_version[10]={0}; size_t saved_char1_index; for(i=0; i<(int)bufflen-12;i++) { /*9=strlen( SIP/2.0\r\n)*/ switch (buff[i]) { /*to avoid this character to be ignored by scanf*/ case '\r': case '\n': case ' ' : case '\t': continue; default: break; } saved_char1_index=bufflen-1; saved_char1=buff[saved_char1_index]; /*make sure buff is null terminated*/ buff[saved_char1_index]='\0'; res=sscanf(buff+i,"SIP/2.0 %d ",&status_code); if (res!=1) res=sscanf(buff+i,"HTTP/1.%*i %d ",&status_code); /*might be HTTP ?*/ if (res!=1) { res= sscanf(buff+i,"%16s %*s %9s\r\n",method,sip_version)==2 && is_token(method,sizeof(method)) && (strcmp("SIP/2.0",sip_version)==0 || strncmp("HTTP/1.",sip_version,strlen("HTTP/1."))==0); } buff[saved_char1_index]=saved_char1; if (res==1) return i; } return -1; } void belle_sip_channel_set_public_ip_port(belle_sip_channel_t *obj, const char *public_ip, int port){ if (obj->public_ip){ int ip_changed=0; int port_changed=0; if (public_ip && strcmp(obj->public_ip,public_ip)!=0){ ip_changed=1; } if (port!=obj->public_port){ port_changed=1; } if (ip_changed || port_changed){ belle_sip_warning("channel [%p]: public ip is changed from [%s:%i] to [%s:%i]",obj,obj->public_ip,obj->public_port,public_ip,port); } belle_sip_free(obj->public_ip); obj->public_ip=NULL; }else if (public_ip){ belle_sip_message("channel [%p]: discovered public ip and port are [%s:%i]",obj,public_ip,port); } if (public_ip){ obj->public_ip=belle_sip_strdup(public_ip); } obj->public_port=port; } static void belle_sip_channel_learn_public_ip_port(belle_sip_channel_t *obj, belle_sip_response_t *resp){ belle_sip_header_via_t *via=belle_sip_message_get_header_by_type(resp,belle_sip_header_via_t); const char *received; int rport; if (!via){ belle_sip_error("channel [%p]: no via in response.",obj); return; } if (!(received=belle_sip_header_via_get_received(via))) { /*use address from via*/; received=belle_sip_header_via_get_host(via); } rport=belle_sip_header_via_get_rport(via); if (rport<=0){ /* no rport, the via port might be good then*/ rport=belle_sip_header_via_get_listening_port(via); } belle_sip_channel_set_public_ip_port(obj,received,rport); obj->learnt_ip_port=TRUE; } static void uncompress_body_if_required(belle_sip_message_t *msg) { belle_sip_body_handler_t *bh = belle_sip_message_get_body_handler(msg); belle_sip_memory_body_handler_t *mbh = NULL; belle_sip_header_t *ceh = NULL; size_t body_len = 0; if (bh != NULL) { body_len = belle_sip_message_get_body_size(msg); ceh = belle_sip_message_get_header(msg, "Content-Encoding"); } if ((body_len > 0) && (ceh != NULL)) { const char *content_encoding = belle_sip_header_get_unparsed_value(ceh); if (BELLE_SIP_OBJECT_IS_INSTANCE_OF(bh, belle_sip_memory_body_handler_t)) { mbh = BELLE_SIP_MEMORY_BODY_HANDLER(bh); if (belle_sip_memory_body_handler_unapply_encoding(mbh, content_encoding) == 0) { belle_sip_header_content_type_t *content_type = belle_sip_message_get_header_by_type(msg, belle_sip_header_content_type_t); belle_sip_header_content_length_t *content_length = belle_sip_message_get_header_by_type(msg, belle_sip_header_content_length_t); belle_sip_header_content_length_set_content_length(content_length, belle_sip_body_handler_get_size(BELLE_SIP_BODY_HANDLER(mbh))); belle_sip_message_remove_header_from_ptr(msg, ceh); if (content_type && (strcmp(belle_sip_header_content_type_get_type(content_type), "multipart") == 0)) { const char *boundary = belle_sip_parameters_get_parameter(BELLE_SIP_PARAMETERS(content_type), "boundary"); bh = (belle_sip_body_handler_t *)belle_sip_multipart_body_handler_new_from_buffer( belle_sip_memory_body_handler_get_buffer(mbh), belle_sip_body_handler_get_size((belle_sip_body_handler_t *)mbh), boundary); belle_sip_message_set_body_handler(msg, bh); } } } else { belle_sip_warning("message [%p] has Content-Encoding [%s] that cannot be unapplied", msg, content_encoding); } } } static void belle_sip_channel_message_ready(belle_sip_channel_t *obj){ belle_sip_message_t *msg=obj->input_stream.msg; belle_sip_body_handler_t *bh=belle_sip_message_get_body_handler(msg); if (bh) belle_sip_body_handler_end_transfer(bh); if (belle_sip_message_is_response(msg)) belle_sip_channel_learn_public_ip_port(obj,BELLE_SIP_RESPONSE(msg)); uncompress_body_if_required(msg); obj->incoming_messages=belle_sip_list_append(obj->incoming_messages,belle_sip_object_ref(msg)); obj->stop_logging_buffer=0; belle_sip_channel_input_stream_reset(&obj->input_stream); } static void feed_body(belle_sip_channel_t *obj, size_t len){ belle_sip_message_t *msg=obj->input_stream.msg; belle_sip_body_handler_t *bh=belle_sip_message_get_body_handler(msg); belle_sip_body_handler_recv_chunk(bh,msg,(uint8_t*)obj->input_stream.read_ptr,len); obj->input_stream.read_ptr+=len; belle_sip_channel_input_stream_rewind(&obj->input_stream); } /*returns TRUE if a body is expected, and initialize a few things in the input stream context*/ static int check_body(belle_sip_channel_t *obj){ belle_sip_message_t *msg=obj->input_stream.msg; belle_sip_header_content_length_t* content_length_header = belle_sip_message_get_header_by_type(msg,belle_sip_header_content_length_t); int expect_body=FALSE; obj->input_stream.content_length= content_length_header ? belle_sip_header_content_length_get_content_length(content_length_header) : 0; expect_body=obj->input_stream.content_length>0; if (BELLE_SIP_OBJECT_IS_INSTANCE_OF(msg,belle_http_response_t) || BELLE_SIP_OBJECT_IS_INSTANCE_OF(msg,belle_http_request_t)){ /*http chunked mode handling*/ if (belle_sip_message_get_header_by_type(msg, belle_sip_header_content_type_t)!=NULL){ belle_sip_header_t *transfer_encoding=belle_sip_message_get_header(msg,"Transfer-Encoding"); if (transfer_encoding){ const char *value=belle_sip_header_get_unparsed_value(transfer_encoding); if (strstr(value,"chunked")!=0){ obj->input_stream.chuncked_mode=1; obj->input_stream.content_length=0; obj->input_stream.chunk_size=-1; obj->input_stream.chunk_read_size=0; } } expect_body=TRUE; } } if (expect_body){ belle_sip_body_handler_t *bh; // Should notify the listeners BELLE_SIP_CHANNEL_INVOKE_MESSAGE_HEADERS_LISTENERS(obj,msg); // Check if the listener has setup a body handler, otherwise create a default one bh = belle_sip_message_get_body_handler(msg); if (!bh) { belle_sip_header_t *content_encoding = belle_sip_message_get_header(msg, "Content-Encoding"); belle_sip_header_content_type_t *content_type = belle_sip_message_get_header_by_type(msg, belle_sip_header_content_type_t); if (content_encoding) { bh = (belle_sip_body_handler_t *)belle_sip_memory_body_handler_new(NULL, NULL); belle_sip_body_handler_add_header(bh, content_encoding); } else if (content_type && (strcmp(belle_sip_header_content_type_get_type(content_type), "multipart") == 0)) { const char *boundary = belle_sip_parameters_get_parameter(BELLE_SIP_PARAMETERS(content_type), "boundary"); bh = (belle_sip_body_handler_t *)belle_sip_multipart_body_handler_new(NULL, NULL, NULL, boundary); } else { bh = (belle_sip_body_handler_t *)belle_sip_memory_body_handler_new(NULL, NULL); } belle_sip_body_handler_set_size(bh, obj->input_stream.content_length); belle_sip_body_handler_add_header(bh, BELLE_SIP_HEADER(content_length_header)); belle_sip_body_handler_add_header(bh, BELLE_SIP_HEADER(content_type)); belle_sip_message_set_body_handler(msg, bh); } belle_sip_body_handler_begin_recv_transfer(bh); } return expect_body; } static int acquire_body_simple(belle_sip_channel_t *obj, int end_of_stream){ size_t content_length=obj->input_stream.content_length; size_t to_read=obj->input_stream.write_ptr-obj->input_stream.read_ptr; belle_sip_message_t *msg=obj->input_stream.msg; belle_sip_body_handler_t *bh=belle_sip_message_get_body_handler(msg); size_t cursize=belle_sip_body_handler_get_transfered_size(bh); if ((cursize == 0) && (to_read == 0)) { /** * No data has been received yet, so do not call feed_body() with a size * of 0 that is meaning that the transfer is finished. */ } else { to_read=MIN(content_length-cursize, to_read); feed_body(obj,to_read); } if (end_of_stream || belle_sip_body_handler_get_transfered_size(bh)>=content_length){ /*great body completed*/ belle_sip_message("channel [%p] read [%i] bytes of body from [%s:%i]" ,obj ,(int)content_length ,obj->peer_name ,obj->peer_port); belle_sip_channel_message_ready(obj); return BELLE_SIP_CONTINUE; } /*body is not finished, we need more data*/ return BELLE_SIP_STOP; } static int acquire_chuncked_body(belle_sip_channel_t *obj){ belle_sip_channel_input_stream_t *st=&obj->input_stream; int readsize; do{ if (st->chunk_size==-1){ char *tmp; /*belle_sip_message("seeing: %s",st->read_ptr);*/ while ( (tmp=strstr(st->read_ptr,"\r\n"))==st->read_ptr){/*skip \r\n*/ st->read_ptr+=2; } if (tmp!=NULL){ /*the chunk length is there*/ long chunksize=strtol(st->read_ptr,NULL,16); if (chunksize>=0 && chunksize!=LONG_MAX){ if (chunksize==0){ belle_sip_message("Got end of chunked body"); st->read_ptr=tmp+4; /*last chunk indicator finishes with two \r\n*/ if (st->read_ptr>st->write_ptr) st->read_ptr=st->write_ptr; belle_sip_channel_message_ready(obj); return BELLE_SIP_CONTINUE; }else{ belle_sip_message("Will get a chunk of %i bytes",(int)chunksize); st->chunk_size=chunksize; st->chunk_read_size=0; st->read_ptr=tmp+2; } }else{ belle_sip_error("Chunk parse error"); belle_sip_channel_input_stream_reset(st); return BELLE_SIP_CONTINUE; } }else{ /*need more data*/ return BELLE_SIP_STOP; } } readsize=MIN((int)(st->write_ptr-st->read_ptr),st->chunk_size-st->chunk_read_size); if (readsize>0){ feed_body(obj,readsize); st->chunk_read_size+=readsize; } if (st->chunk_size==st->chunk_read_size){ /*we have a chunk completed*/ st->content_length+=st->chunk_size; belle_sip_message("Chunk of [%i] bytes completed",st->chunk_size); st->chunk_size=-1;/*wait for next chunk indicator*/ }else{ /*need more data*/ return BELLE_SIP_STOP; } }while(st->write_ptr-st->read_ptr>0); /*no need to continue if nothing to read*/ return BELLE_SIP_STOP; } static int acquire_body(belle_sip_channel_t *obj, int end_of_stream){ if (obj->input_stream.chuncked_mode) return acquire_chuncked_body(obj); else return acquire_body_simple(obj,end_of_stream); } static void notify_incoming_messages(belle_sip_channel_t *obj){ belle_sip_list_t *elem,*l_it; belle_sip_list_t *listeners=belle_sip_list_copy_with_data(obj->full_listeners,(void *(*)(void*))belle_sip_object_ref); for(l_it=listeners;l_it!=NULL;l_it=l_it->next){ belle_sip_channel_listener_t *listener=(belle_sip_channel_listener_t*)l_it->data; for(elem=obj->incoming_messages;elem!=NULL;elem=elem->next){ belle_sip_message_t *msg=(belle_sip_message_t*)elem->data; BELLE_SIP_INTERFACE_METHODS_TYPE(belle_sip_channel_listener_t) *methods; methods=BELLE_SIP_INTERFACE_GET_METHODS(listener,belle_sip_channel_listener_t); if (methods->on_message) methods->on_message(listener,obj,msg); } } belle_sip_list_free_with_data(listeners,belle_sip_object_unref); belle_sip_list_free_with_data(obj->incoming_messages,belle_sip_object_unref); obj->incoming_messages=NULL; } void belle_sip_channel_parse_stream(belle_sip_channel_t *obj, int end_of_stream){ int offset; size_t read_size=0; int num; while ((num=(int)(obj->input_stream.write_ptr-obj->input_stream.read_ptr))>0){ if (obj->input_stream.state == WAITING_MESSAGE_START) { int i; /*first, make sure there is \r\n in the buffer, otherwise, micro parser cannot conclude, because we need a complete request or response line somewhere*/ for (i=0;iinput_stream.read_ptr[i]=='\r' && obj->input_stream.read_ptr[i+1]=='\n') || belle_sip_channel_input_stream_get_buff_length(&obj->input_stream) <= 1 /*1 because null terminated*/ /*if buffer full try to parse in any case*/) { /*good, now we can start searching for request/response*/ if ((offset=get_message_start_pos(obj->input_stream.read_ptr,num)) >=0 ) { /*message found !*/ if (offset>0) { belle_sip_warning("trashing [%i] bytes in front of sip message on channel [%p]",offset,obj); obj->input_stream.read_ptr+=offset; } obj->input_stream.state=MESSAGE_AQUISITION; } else { belle_sip_debug("Unexpected [%s] received on channel [%p], trashing",obj->input_stream.read_ptr,obj); obj->input_stream.read_ptr=obj->input_stream.write_ptr; belle_sip_channel_input_stream_reset(&obj->input_stream); continue; } break; } } if (i >= num-1) { belle_sip_debug("[%s] received on channel [%p], cannot determine if expected or not, waiting for new data",obj->input_stream.read_ptr,obj); break; } } if (obj->input_stream.state==MESSAGE_AQUISITION) { /*search for \r\n\r\n*/ char* end_of_message=NULL; if ((end_of_message=strstr(obj->input_stream.read_ptr,"\r\n\r\n"))){ int bytes_to_parse; char tmp; /*end of message found*/ end_of_message+=4;/*add \r\n\r\n*/ bytes_to_parse=(int)(end_of_message-obj->input_stream.read_ptr); tmp=*end_of_message; *end_of_message='\0';/*this is in order for the following log to print the message only to its end.*/ /*belle_sip_message("channel [%p] read message of [%i] bytes:\n%.40s...",obj, bytes_to_parse, obj->input_stream.read_ptr);*/ obj->input_stream.msg=belle_sip_message_parse_raw(obj->input_stream.read_ptr ,bytes_to_parse ,&read_size); *end_of_message=tmp; obj->input_stream.read_ptr+=read_size; if (obj->input_stream.msg && read_size > 0){ belle_sip_message("channel [%p] [%i] bytes parsed",obj,(int)read_size); belle_sip_object_ref(obj->input_stream.msg); if (belle_sip_message_is_request(obj->input_stream.msg)) fix_incoming_via(BELLE_SIP_REQUEST(obj->input_stream.msg),obj->current_peer); /*check for body*/ if (check_body(obj)){ obj->input_stream.state=BODY_AQUISITION; } else { /*no body*/ belle_sip_channel_message_ready(obj); continue; } }else{ belle_sip_error("Could not parse [%s], on channel [%p] skipping to [%s]",obj->input_stream.read_ptr ,obj ,end_of_message); obj->input_stream.read_ptr=end_of_message; obj->input_stream.state=WAITING_MESSAGE_START; continue; } }else break; /*The message isn't finished to be receive, we need more data*/ } if (obj->input_stream.state==BODY_AQUISITION) { if (acquire_body(obj,end_of_stream)==BELLE_SIP_STOP) break; } } } static void belle_sip_channel_process_stream(belle_sip_channel_t *obj, int eos){ belle_sip_channel_parse_stream(obj,eos); if (obj->incoming_messages) { if (obj->simulated_recv_return == 1500) { belle_sip_list_t *elem; for(elem=obj->incoming_messages;elem!=NULL;elem=elem->next){ belle_sip_message_t *msg=(belle_sip_message_t*)elem->data; char* dump = belle_sip_message_to_string(msg); belle_sip_message("Silently discarding incoming message [%.50s...] on channel [%p]",dump, obj); belle_sip_free(dump); } belle_sip_list_free_with_data(obj->incoming_messages,belle_sip_object_unref); obj->incoming_messages=NULL; } else { notify_incoming_messages(obj); } } } static int belle_sip_channel_process_read_data(belle_sip_channel_t *obj){ int num; int ret=BELLE_SIP_CONTINUE; /*prevent system to suspend the process until we have finish reading everything from the socket and notified the upper layer*/ if (obj->input_stream.state == WAITING_MESSAGE_START) { channel_begin_recv_background_task(obj); } if (obj->simulated_recv_return>0) { num=belle_sip_channel_recv(obj,obj->input_stream.write_ptr,belle_sip_channel_input_stream_get_buff_length(&obj->input_stream)-1); } else { belle_sip_message("channel [%p]: simulating recv() returning %i",obj,obj->simulated_recv_return); num=obj->simulated_recv_return; } if (num>0){ char *begin=obj->input_stream.write_ptr; obj->input_stream.write_ptr+=num; /*first null terminate the read buff*/ *obj->input_stream.write_ptr='\0'; if (num>20 || obj->input_stream.state != WAITING_MESSAGE_START ) /*to avoid tracing server based keep alives*/ { char *logbuf = make_logbuf(obj, BELLE_SIP_LOG_MESSAGE ,begin,num); if (logbuf) { belle_sip_message("channel [%p]: received [%i] new bytes from [%s://%s:%i]:\n%s", obj, num, belle_sip_channel_get_transport_name(obj), obj->peer_name, obj->peer_port, logbuf); belle_sip_free(logbuf); } } belle_sip_channel_process_stream(obj,FALSE); if (obj->input_stream.state == WAITING_MESSAGE_START){ channel_end_recv_background_task(obj); }/*if still in message acquisition state, keep the backgroud task*/ } else if (num == 0) { /*before closing the channel, check if there was a pending message to receive, whose body acquisition is to be finished.*/ belle_sip_channel_process_stream(obj,TRUE); obj->closed_by_remote = TRUE; channel_set_state(obj,BELLE_SIP_CHANNEL_DISCONNECTED); ret=BELLE_SIP_STOP; } else if (belle_sip_error_code_is_would_block(-num)){ belle_sip_message("channel [%p]: recv() EWOULDBLOCK",obj); ret=BELLE_SIP_CONTINUE; }else{ belle_sip_error("Receive error on channel [%p]",obj); channel_set_state(obj,BELLE_SIP_CHANNEL_ERROR); ret=BELLE_SIP_STOP; } return ret; } int belle_sip_channel_process_data(belle_sip_channel_t *obj,unsigned int revents){ int ret=BELLE_SIP_CONTINUE; belle_sip_object_ref(obj); if (revents & BELLE_SIP_EVENT_READ) { int rret=belle_sip_channel_process_read_data(obj); if (rret==BELLE_SIP_STOP) ret=BELLE_SIP_STOP; } if (revents & BELLE_SIP_EVENT_WRITE){ /*if we are here, this is because we had an EWOULDBLOCK while sending a message*/ /*continue to send pending messages but before check the channel is still alive because it may have been closed by belle_sip_channel_process_read_data() above.*/ if (obj->state == BELLE_SIP_CHANNEL_READY){ channel_process_queue(obj); } } belle_sip_object_unref(obj); return ret; } static int channel_inactive_timeout(void *data, unsigned int event){ belle_sip_channel_t *obj=(belle_sip_channel_t *)data; belle_sip_message("Channel [%p]: inactivity timeout reached.",obj); channel_set_state(obj,BELLE_SIP_CHANNEL_DISCONNECTED); return BELLE_SIP_STOP; } static void update_inactivity_timer(belle_sip_channel_t *obj, int from_recv){ int inactive_timeout=belle_sip_stack_get_inactive_transport_timeout(obj->stack)*1000; if (inactive_timeout>0){ if (!obj->inactivity_timer ){ obj->inactivity_timer=belle_sip_main_loop_create_timeout(obj->stack->ml,channel_inactive_timeout,obj,inactive_timeout,"Channel inactivity timer"); }else{ /*restart the timer for new period*/ belle_sip_source_set_timeout_int64(obj->inactivity_timer,inactive_timeout); } }else{ if (obj->inactivity_timer){ belle_sip_main_loop_remove_source(obj->stack->ml,obj->inactivity_timer); belle_sip_object_unref(obj->inactivity_timer); obj->inactivity_timer=NULL; } } if (from_recv) obj->last_recv_time=belle_sip_time_ms(); } /*constructor for channels creating an outgoing connection * bindip local ip address to bind on, typically 0.0.0.0 or ::0 * locaport locaport to use for binding, can be set to 0 if port doesn't matter * peer_cname canonical name of remote host, used for TLS verification * peername peer's hostname, either ip address or DNS name * peer_port peer's port to connect to. */ void belle_sip_channel_init(belle_sip_channel_t *obj, belle_sip_stack_t *stack,const char *bindip,int localport,const char *peer_cname, const char *peername, int peer_port, int no_srv){ /*to initialize our base class:*/ belle_sip_channel_set_socket(obj,-1,NULL); belle_sip_message("belle_sip_channel_init(); peer_cname=%s", peer_cname); /*then initialize members*/ obj->ai_family=AF_INET; obj->peer_cname=peer_cname ? belle_sip_strdup(peer_cname) : NULL; obj->peer_name=belle_sip_strdup(peername); obj->peer_port=peer_port; obj->no_srv = (unsigned char)no_srv; obj->stack=stack; if (bindip){ if (strcmp(bindip,"::0")!=0 && strcmp(bindip,"0.0.0.0")!=0) obj->local_ip=belle_sip_strdup(bindip); if (strchr(bindip,':')!=NULL) obj->ai_family=AF_INET6; } obj->local_port=localport; obj->simulated_recv_return=1;/*not set*/ if (peername){ /*check if we are given a real dns name or just an ip address*/ struct addrinfo *ai=bctbx_ip_address_to_addrinfo(AF_UNSPEC,SOCK_STREAM,peername,peer_port); if (ai) bctbx_freeaddrinfo(ai); else obj->has_name=TRUE; } belle_sip_channel_input_stream_reset(&obj->input_stream); update_inactivity_timer(obj,FALSE); } /*constructor for channels created by incoming connections*/ void belle_sip_channel_init_with_addr(belle_sip_channel_t *obj, belle_sip_stack_t *stack, const char *bindip, int localport, const struct sockaddr *peer_addr, socklen_t addrlen){ char remoteip[64]; struct addrinfo ai; int peer_port; memset(&ai,0,sizeof(ai)); ai.ai_family=peer_addr->sa_family; ai.ai_addr=(struct sockaddr*)peer_addr; ai.ai_addrlen=addrlen; bctbx_addrinfo_to_ip_address(&ai,remoteip,sizeof(remoteip),&peer_port); belle_sip_channel_init(obj,stack,bindip,localport,NULL,remoteip,peer_port, TRUE); obj->peer_list = obj->current_peer = obj->static_peer_list = bctbx_ip_address_to_addrinfo(ai.ai_family, ai.ai_socktype, obj->peer_name,obj->peer_port); obj->ai_family=ai.ai_family; } void belle_sip_channel_set_socket(belle_sip_channel_t *obj, belle_sip_socket_t sock, belle_sip_source_func_t datafunc){ belle_sip_socket_source_init((belle_sip_source_t*)obj , datafunc , obj , sock , BELLE_SIP_EVENT_READ|BELLE_SIP_EVENT_WRITE , -1); } static bool_t is_state_only_listener(const belle_sip_channel_listener_t *listener) { BELLE_SIP_INTERFACE_METHODS_TYPE(belle_sip_channel_listener_t) *methods; methods=BELLE_SIP_INTERFACE_GET_METHODS(listener,belle_sip_channel_listener_t); return methods->on_state_changed && !(methods->on_message_headers || methods->on_message || methods->on_sending || methods->on_auth_requested); } static void channel_remove_listener(belle_sip_channel_t *obj, belle_sip_channel_listener_t *l){ if (is_state_only_listener(l)) obj->state_listeners=belle_sip_list_remove(obj->state_listeners,l); else obj->full_listeners=belle_sip_list_remove(obj->full_listeners,l); } void belle_sip_channel_add_listener(belle_sip_channel_t *obj, belle_sip_channel_listener_t *l){ if (is_state_only_listener(l)) { obj->state_listeners=belle_sip_list_prepend( obj->state_listeners, belle_sip_object_weak_ref(l, (belle_sip_object_destroy_notify_t)channel_remove_listener,obj) ); } else { obj->full_listeners=belle_sip_list_prepend( obj->full_listeners, belle_sip_object_weak_ref(l, (belle_sip_object_destroy_notify_t)channel_remove_listener,obj) ); } } void belle_sip_channel_remove_listener(belle_sip_channel_t *obj, belle_sip_channel_listener_t *l){ belle_sip_object_weak_unref(l,(belle_sip_object_destroy_notify_t)channel_remove_listener,obj); channel_remove_listener(obj,l); } int belle_sip_channel_matches(const belle_sip_channel_t *obj, const belle_sip_hop_t *hop, const struct addrinfo *addr){ if (hop){ if (obj->current_peer_cname && strcasecmp(hop->host, obj->current_peer_cname)==0 && hop->port==obj->peer_port){ /*We are matching a specific node of a SRV record set. */ if (hop->cname && obj->peer_cname && strcasecmp(hop->cname,obj->current_peer_cname) != 0) return 0; /*cname mismatch*/ return 1; } if (strcmp(hop->host,obj->peer_name)==0 && (hop->port==obj->peer_port || obj->srv_overrides_port)){ /*We may be matching the general name of the service, in that case the port doesn't matter.*/ if (hop->cname && obj->peer_cname && strcasecmp(hop->cname,obj->peer_cname) != 0){ return 0; /*cname mismatch*/ } return 1; } } if (addr && obj->current_peer) return bctbx_sockaddr_equals(addr->ai_addr,obj->current_peer->ai_addr); return 0; } const char *belle_sip_channel_get_local_address(belle_sip_channel_t *obj, int *port){ if (port) *port=obj->local_port; return obj->local_ip; } const char *belle_sip_channel_get_public_address(belle_sip_channel_t *obj, int *port){ const char *ret = obj->public_ip ? obj->public_ip : obj->local_ip; if (*port) *port= obj->public_port; return ret; } belle_sip_uri_t *belle_sip_channel_create_routable_uri(belle_sip_channel_t *chan) { const char *transport = belle_sip_channel_get_transport_name_lower_case(chan); belle_sip_uri_t* uri = belle_sip_uri_new(); unsigned char natted = chan->public_ip && strcmp(chan->public_ip,chan->local_ip)!=0; if (natted) { belle_sip_uri_set_host(uri, chan->public_ip); belle_sip_uri_set_port(uri, chan->public_port); } else { belle_sip_uri_set_host(uri, chan->local_ip); // With streamed protocols listening port is what we want if (chan->lp) belle_sip_uri_set_port(uri, belle_sip_uri_get_port(chan->lp->listening_uri)); else belle_sip_uri_set_port(uri,chan->local_port); } belle_sip_uri_set_transport_param(uri, transport); belle_sip_uri_set_lr_param(uri, TRUE); return uri; } int belle_sip_channel_is_reliable(const belle_sip_channel_t *obj){ return BELLE_SIP_OBJECT_VPTR(obj,belle_sip_channel_t)->reliable; } const char * belle_sip_channel_get_transport_name_lower_case(const belle_sip_channel_t *obj){ const char* transport = belle_sip_channel_get_transport_name(obj); if (strcasecmp("udp",transport)==0) return "udp"; else if (strcasecmp("tcp",transport)==0) return "tcp"; else if (strcasecmp("tls",transport)==0) return "tls"; else if (strcasecmp("dtls",transport)==0) return "dtls"; else { belle_sip_message("Cannot convert [%s] to lower case",transport); return transport; } } const char * belle_sip_channel_get_transport_name(const belle_sip_channel_t *obj){ return BELLE_SIP_OBJECT_VPTR(obj,belle_sip_channel_t)->transport; } int belle_sip_channel_send(belle_sip_channel_t *obj, const void *buf, size_t buflen){ update_inactivity_timer(obj,FALSE); return BELLE_SIP_OBJECT_VPTR(obj,belle_sip_channel_t)->channel_send(obj,buf,buflen); } int belle_sip_channel_recv(belle_sip_channel_t *obj, void *buf, size_t buflen){ update_inactivity_timer(obj,TRUE); return BELLE_SIP_OBJECT_VPTR(obj,belle_sip_channel_t)->channel_recv(obj,buf,buflen); } void belle_sip_channel_close(belle_sip_channel_t *obj){ if (BELLE_SIP_OBJECT_VPTR(obj,belle_sip_channel_t)->close) BELLE_SIP_OBJECT_VPTR(obj,belle_sip_channel_t)->close(obj); /*udp channel doesn't have close function*/ belle_sip_main_loop_remove_source(obj->stack->ml,(belle_sip_source_t*)obj); belle_sip_source_uninit((belle_sip_source_t*)obj); } const struct addrinfo * belle_sip_channel_get_peer(belle_sip_channel_t *obj){ return obj->current_peer; } static void channel_on_send_background_task_ended(belle_sip_channel_t *obj){ belle_sip_warning("channel [%p]: send background task has to be ended now, but work isn't finished.",obj); channel_end_send_background_task(obj); } static void channel_begin_send_background_task(belle_sip_channel_t *obj){ if (obj->bg_task_id==0){ obj->bg_task_id=belle_sip_begin_background_task("belle-sip send channel",(void (*)(void*))channel_on_send_background_task_ended, obj); if (obj->bg_task_id) belle_sip_message("channel [%p]: starting send background task with id=[%lx].",obj,obj->bg_task_id); } } static void channel_end_send_background_task(belle_sip_channel_t *obj){ if (obj->bg_task_id){ belle_sip_message("channel [%p]: ending send background task with id=[%lx].",obj,obj->bg_task_id); belle_sip_end_background_task(obj->bg_task_id); obj->bg_task_id=0; } } static void channel_on_recv_background_task_ended(belle_sip_channel_t *obj){ belle_sip_warning("channel [%p]: recv background task has to be ended now, but work isn't finished.",obj); channel_end_recv_background_task(obj); } static void channel_begin_recv_background_task(belle_sip_channel_t *obj){ if (obj->recv_bg_task_id==0){ obj->recv_bg_task_id=belle_sip_begin_background_task("belle-sip recv channel",(void (*)(void*))channel_on_recv_background_task_ended, obj); if (obj->recv_bg_task_id) belle_sip_message("channel [%p]: starting recv background task with id=[%lx].",obj,obj->recv_bg_task_id); } } static void channel_end_recv_background_task(belle_sip_channel_t *obj){ if (obj->recv_bg_task_id){ belle_sip_message("channel [%p]: ending recv background task with id=[%lx].",obj,obj->recv_bg_task_id); belle_sip_end_background_task(obj->recv_bg_task_id); obj->recv_bg_task_id=0; } } static void channel_invoke_state_listener(belle_sip_channel_t *obj){ int close = FALSE; switch(obj->state){ case BELLE_SIP_CHANNEL_DISCONNECTED: case BELLE_SIP_CHANNEL_ERROR: /*the background tasks must be released "after" notifying the app of the disconnected or error state By "after" it is means not before the main loop iteration that will notify the app. This is the reason why these calls are done here rather than in the channel_set_state() function.*/ channel_end_send_background_task(obj); channel_end_recv_background_task(obj); close = TRUE; break; default: break; } /*Channel listeners may drop the last reference of the channel, so protect by ref/unref until we finish.*/ belle_sip_object_ref(obj); BELLE_SIP_CHANNEL_INVOKE_STATE_LISTENERS(obj,obj->state); if (close) belle_sip_channel_close(obj); belle_sip_object_unref(obj); } static void channel_notify_error_to_listeners(belle_sip_channel_t *obj){ /* The channel may have been passed to DISCONNECTED state due to _force_close() method. * Do not notify the error in this case, since the channel is already closed. */ if (obj->state == BELLE_SIP_CHANNEL_ERROR){ channel_invoke_state_listener(obj); } belle_sip_object_unref(obj); } static void channel_connect_next(belle_sip_channel_t *obj){ if (obj->state == BELLE_SIP_CHANNEL_RETRY){ belle_sip_channel_connect(obj); } belle_sip_object_unref(obj); } static void channel_set_current_peer(belle_sip_channel_t *obj, const struct addrinfo *ai){ if (obj->resolver_results){ const belle_sip_dns_srv_t *srv = belle_sip_resolver_results_get_srv_from_addrinfo(obj->resolver_results, ai); obj->current_peer_cname = srv ? belle_sip_dns_srv_get_target(srv) : NULL; if (obj->current_peer_cname){ belle_sip_message("channel[%p]: current peer hostname is [%s] on port [%i].", obj, obj->current_peer_cname, belle_sip_dns_srv_get_port(srv)); } }else{ obj->current_peer_cname = NULL; } obj->current_peer = ai; } static void belle_sip_channel_handle_error(belle_sip_channel_t *obj){ if (obj->state!=BELLE_SIP_CHANNEL_READY || obj->soft_error){ /* Previous connection attempts were failed (channel could not get ready) OR soft error reported*/ obj->soft_error = FALSE; /* See if you can retry on an alternate ip address.*/ if (obj->current_peer && obj->current_peer->ai_next){ /*obj->current_peer may be null in case of dns error*/ channel_set_current_peer(obj, obj->current_peer->ai_next); channel_set_state(obj,BELLE_SIP_CHANNEL_RETRY); belle_sip_channel_close(obj); belle_sip_main_loop_do_later(obj->stack->ml,(belle_sip_callback_t)channel_connect_next,belle_sip_object_ref(obj)); return; }/*else we have already tried all the ip addresses, so give up and notify the error*/ }/*else the channel was previously working good with the current ip address but now fails, so let's notify the error*/ obj->state=BELLE_SIP_CHANNEL_ERROR; /*Because error notification will in practice trigger the destruction of possible transactions and this channel, * it is safer to invoke the listener outside the current call stack. * Indeed the channel encounters network errors while being called for transmiting by a transaction. */ belle_sip_main_loop_do_later(obj->stack->ml,(belle_sip_callback_t)channel_notify_error_to_listeners,belle_sip_object_ref(obj)); } int belle_sip_channel_notify_timeout(belle_sip_channel_t *obj){ const uint64_t too_long = 60; if (obj->state != BELLE_SIP_CHANNEL_READY){ /*no need to notify the timeout if the channel is already in error or retry state*/ return FALSE; } if ((belle_sip_time_ms() - obj->last_recv_time) >= too_long * 1000){ belle_sip_message("A timeout related to this channel occured and no message received during last %i seconds. This channel is suspect, moving to error state", (int)too_long); obj->soft_error = TRUE; channel_set_state(obj,BELLE_SIP_CHANNEL_ERROR); return TRUE; } return FALSE; } void belle_sip_channel_notify_server_error(belle_sip_channel_t *obj){ belle_sip_message("channel[%p]: this server is encountering internal errors, moving to error state to eventually connect to another IP.", obj); obj->soft_error = TRUE; channel_set_state(obj,BELLE_SIP_CHANNEL_ERROR); } void channel_set_state(belle_sip_channel_t *obj, belle_sip_channel_state_t state) { belle_sip_message("channel[%p]: entering state %s",obj,belle_sip_channel_state_to_string(state)); if (obj->state == state) { belle_sip_error("channel_set_state() called twice with the same state. This is a programming mistake."); return; } if (state==BELLE_SIP_CHANNEL_ERROR){ belle_sip_channel_handle_error(obj); }else{ obj->state=state; channel_invoke_state_listener(obj); } } static void free_ewouldblock_buffer(belle_sip_channel_t *obj){ if (obj->ewouldblock_buffer){ belle_sip_free(obj->ewouldblock_buffer); obj->ewouldblock_buffer=NULL; obj->ewouldblock_size=0; obj->ewouldblock_offset=0; } } static void handle_ewouldblock(belle_sip_channel_t *obj, const char *buffer, size_t size){ belle_sip_source_set_events((belle_sip_source_t*)obj,BELLE_SIP_EVENT_READ|BELLE_SIP_EVENT_WRITE|BELLE_SIP_EVENT_ERROR); free_ewouldblock_buffer(obj); obj->ewouldblock_buffer=belle_sip_malloc(size); obj->ewouldblock_size=size; memcpy(obj->ewouldblock_buffer,buffer,size); } static size_t find_non_printable(const char *buffer, size_t size){ #if 0 size_t i; for(i=0;i 255)) return i; #endif if (!isprint(buffer[i]) && !isspace(buffer[i])) return i; } return size; #else size_t i=0; mbstate_t mbs; memset(&mbs, 0, sizeof(mbs)); do { size_t valid_multibyte_len = mbrlen(buffer+i, size-i, &mbs); if (valid_multibyte_len == (size_t)-1 || valid_multibyte_len == (size_t)-2 || valid_multibyte_len == 0) break; i += valid_multibyte_len; }while(1); return i; #endif } /* * this function is to avoid logging too much or non-ascii data received. */ static char *make_logbuf(belle_sip_channel_t *obj, belle_sip_log_level level, const char *buffer, size_t size){ char *logbuf; char truncate_msg[128]={0}; size_t limit=7000; /*big message when many ice candidates*/ if (!belle_sip_log_level_enabled(level)){ return NULL; } if (obj->stop_logging_buffer == 1) { return NULL; } size = MIN(size,limit); limit=find_non_printable(buffer, size); if (limit < size) { belle_sip_message("channel [%p]: found binary data in buffer, will stop logging it now.", obj); obj->stop_logging_buffer = 1; if (limit == 0){ snprintf(truncate_msg,sizeof(truncate_msg)-1,"... (binary data)"); } else { snprintf(truncate_msg,sizeof(truncate_msg)-1,"... (first %u bytes shown)",(unsigned int)limit); } } size = limit; size += strlen(truncate_msg); logbuf=belle_sip_malloc(size+1); strncpy(logbuf, buffer, size); if (truncate_msg[0]!=0){ strcpy(logbuf+limit,truncate_msg); } logbuf[size]='\0'; return logbuf; } static int send_buffer(belle_sip_channel_t *obj, const char *buffer, size_t size){ int ret=0; char *logbuf=NULL; if (obj->stack->send_error == 0){ ret=belle_sip_channel_send(obj,buffer,size); }else if (obj->stack->send_error<0){ /*for testing purpose only */ belle_sip_message("channel[%p]: simulating socket error [%i].", obj, (int) obj->stack->send_error); ret=obj->stack->send_error; } else { ret=(int)size; /*to silently discard message*/ belle_sip_message("channel[%p]: %i bytes are silently discarded, to simulate loss of data.", obj, (int) size); } if (ret<0){ if (!belle_sip_error_code_is_would_block(-ret)){ belle_sip_error("channel [%p]: could not send [%i] bytes from [%s://%s:%i] to [%s:%i]" ,obj ,(int)size ,belle_sip_channel_get_transport_name(obj) ,obj->local_ip ,obj->local_port ,obj->peer_name ,obj->peer_port); channel_set_state(obj,BELLE_SIP_CHANNEL_ERROR); }/*ewouldblock error has to be handled by caller*/ }else if (size==(size_t)ret){ logbuf=make_logbuf(obj, BELLE_SIP_LOG_MESSAGE, buffer,size); if (logbuf) { belle_sip_message("channel [%p]: message %s to [%s://%s:%i], size: [%i] bytes\n%s" ,obj ,obj->stack->send_error==0?"sent":"silently discarded" ,belle_sip_channel_get_transport_name(obj) ,obj->peer_name ,obj->peer_port ,ret ,logbuf); } }else{ logbuf=make_logbuf(obj, BELLE_SIP_LOG_MESSAGE,buffer,ret); if (logbuf) { belle_sip_message("channel [%p]: message partly sent to [%s://%s:%i], sent: [%i/%i] bytes:\n%s" ,obj ,belle_sip_channel_get_transport_name(obj) ,obj->peer_name ,obj->peer_port ,ret ,(int)size ,logbuf); } } if (logbuf) belle_sip_free(logbuf); return ret; } static void check_content_length(belle_sip_message_t *msg, size_t body_len){ belle_sip_header_content_length_t *ctlen=belle_sip_message_get_header_by_type(msg,belle_sip_header_content_length_t); size_t value=ctlen ? belle_sip_header_content_length_get_content_length(ctlen) : 0; if (body_len){ if (ctlen==NULL){ belle_sip_message("message [%p] has body of size ["FORMAT_SIZE_T"] but no Content-Length, adding it.",msg,body_len); belle_sip_message_add_header(msg, (belle_sip_header_t*)belle_sip_header_content_length_create(body_len) ); }else{ if (value!=body_len){ belle_sip_warning("message [%p] has Content-Length ["FORMAT_SIZE_T"] and body size ["FORMAT_SIZE_T"] which are inconsistent, fixing it.", msg, value, body_len); belle_sip_header_content_length_set_content_length(ctlen,body_len); } } }else{ /*no body, or undetermined size body*/ if (ctlen && value!=0){ belle_sip_error("message [%p] has Content-Length ["FORMAT_SIZE_T"], but without body or body with undetermined size. Fix your app.", msg,value); } } } static void compress_body_if_required(belle_sip_message_t *msg) { belle_sip_body_handler_t *bh = belle_sip_message_get_body_handler(msg); belle_sip_memory_body_handler_t *mbh = NULL; belle_sip_header_t *ceh = NULL; size_t body_len = 0; if (bh != NULL) { body_len = belle_sip_message_get_body_size(msg); ceh = belle_sip_message_get_header(msg, "Content-Encoding"); } if ((body_len > 0) && (ceh != NULL)) { const char *content_encoding = belle_sip_header_get_unparsed_value(ceh); if (BELLE_SIP_OBJECT_IS_INSTANCE_OF(bh, belle_sip_multipart_body_handler_t)) { char *marshalled_content = belle_sip_object_to_string(BELLE_SIP_OBJECT(bh)); mbh = belle_sip_memory_body_handler_new_from_buffer(marshalled_content, strlen(marshalled_content), NULL, NULL); bh = BELLE_SIP_BODY_HANDLER(mbh); belle_sip_message_set_body_handler(msg, bh); } if (BELLE_SIP_OBJECT_IS_INSTANCE_OF(bh, belle_sip_memory_body_handler_t)) { mbh = BELLE_SIP_MEMORY_BODY_HANDLER(bh); int ret = belle_sip_memory_body_handler_apply_encoding(mbh, content_encoding); /* Remove Content-Encoding header if it could not be applied */ if (ret < 0) belle_sip_message_remove_header_from_ptr(msg, ceh); } else { belle_sip_warning("message [%p] has Content-Encoding [%s] that cannot be applied", msg, content_encoding); } } } static void _send_message(belle_sip_channel_t *obj){ char buffer[belle_sip_send_network_buffer_size]; size_t len=0; belle_sip_error_code error=BELLE_SIP_OK; belle_sip_message_t *msg=obj->cur_out_message; belle_sip_body_handler_t *bh=belle_sip_message_get_body_handler(msg); size_t body_len=bh ? belle_sip_body_handler_get_size(bh) : 0; int sendret; size_t off; int ret; while (obj->ewouldblock_buffer){ sendret=send_buffer(obj,(const char*)obj->ewouldblock_buffer+obj->ewouldblock_offset,obj->ewouldblock_size-obj->ewouldblock_offset); if (sendret>0){ obj->ewouldblock_offset+=sendret; if (obj->ewouldblock_offset==obj->ewouldblock_size){ free_ewouldblock_buffer(obj); if (obj->out_state==OUTPUT_STREAM_SENDING_HEADERS) goto done; //to avoid message to be sent twice /*else continue body sending*/ } /* continue to expedite the ewouldblock error until we it is completed or get a new ewouldblock*/ }else if (belle_sip_error_code_is_would_block(-sendret)) { /*we got an ewouldblock again. Nothing to do, we'll be called later in order to retry*/ return; }else {/*error or disconnection case*/ goto done; } } if (obj->out_state==OUTPUT_STREAM_SENDING_HEADERS){ BELLE_SIP_CHANNEL_INVOKE_SENDING_LISTENERS(obj,msg); check_content_length(msg,body_len); error=belle_sip_object_marshal((belle_sip_object_t*)msg,buffer,sizeof(buffer)-1,&len); if (error!=BELLE_SIP_OK) { belle_sip_error("channel [%p] _send_message: marshaling failed.",obj); goto done; } /*send the headers and eventually the body if it fits in our buffer*/ if (bh){ size_t max_body_len=sizeof(buffer)-1-len; if (body_len>0 && body_len<=max_body_len){ /*if size is known and fits into our buffer, send together with headers*/ belle_sip_body_handler_begin_send_transfer(bh); do{ max_body_len=sizeof(buffer)-1-len; ret=belle_sip_body_handler_send_chunk(bh,msg,(uint8_t*)buffer+len,&max_body_len); if (max_body_len==0) belle_sip_warning("belle_sip_body_handler_send_chunk on channel [%p], 0 bytes read",obj); len+=max_body_len; }while(ret==BELLE_SIP_CONTINUE); belle_sip_body_handler_end_transfer(bh); }else{ if (body_len==0){ belle_sip_fatal("Sending bodies whose size is not known must be done in chunked mode, which is not supported yet."); } belle_sip_body_handler_begin_send_transfer(bh); obj->out_state=OUTPUT_STREAM_SENDING_BODY; } } off=0; do{ sendret=send_buffer(obj,buffer+off,len-off); if (sendret>0){ off+=sendret; if (off==len){ break; } }else if (belle_sip_error_code_is_would_block(-sendret)) { handle_ewouldblock(obj,buffer+off,len-off); return; }else {/*error or disconnection case*/ goto done; } }while(1); } if (obj->out_state==OUTPUT_STREAM_SENDING_BODY){ do{ size_t chunk_len=sizeof(buffer)-1; ret=belle_sip_body_handler_send_chunk(bh,msg,(uint8_t*)buffer,&chunk_len); if (chunk_len!=0){ off=0; do{ sendret=send_buffer(obj,buffer+off,chunk_len-off); if (sendret>0){ off+=sendret; if (off==chunk_len){ break; } }else if (belle_sip_error_code_is_would_block(-sendret)) { handle_ewouldblock(obj,buffer+off,chunk_len-off); return; }else {/*error or disconnection case*/ goto done; } }while(1); } }while(ret==BELLE_SIP_CONTINUE); belle_sip_body_handler_end_transfer(bh); } done: /*we get ready to send another message*/ belle_sip_source_set_events((belle_sip_source_t*)obj,BELLE_SIP_EVENT_READ|BELLE_SIP_EVENT_ERROR); free_ewouldblock_buffer(obj); obj->out_state=OUTPUT_STREAM_IDLE; obj->stop_logging_buffer=0; belle_sip_object_unref(obj->cur_out_message); obj->cur_out_message=NULL; } static void send_message(belle_sip_channel_t *obj, belle_sip_message_t *msg){ obj->cur_out_message=(belle_sip_message_t*)belle_sip_object_ref(msg); obj->out_state=OUTPUT_STREAM_SENDING_HEADERS; compress_body_if_required(obj->cur_out_message); _send_message(obj); } void belle_sip_channel_prepare(belle_sip_channel_t *obj){ channel_prepare_continue(obj); } static void channel_push_outgoing(belle_sip_channel_t *obj, belle_sip_message_t *msg){ obj->outgoing_messages=belle_sip_list_append(obj->outgoing_messages,msg); } static belle_sip_message_t *channel_pop_outgoing(belle_sip_channel_t *obj){ belle_sip_message_t *msg=NULL; if (obj->outgoing_messages){ msg=(belle_sip_message_t*)obj->outgoing_messages->data; obj->outgoing_messages=belle_sip_list_delete_link(obj->outgoing_messages,obj->outgoing_messages); } return msg; } static void channel_prepare_continue(belle_sip_channel_t *obj){ switch(obj->state){ case BELLE_SIP_CHANNEL_INIT: channel_begin_send_background_task(obj); belle_sip_channel_resolve(obj); break; case BELLE_SIP_CHANNEL_RES_DONE: belle_sip_channel_connect(obj); break; case BELLE_SIP_CHANNEL_READY: channel_process_queue(obj); break; default: break; } } static void channel_process_queue(belle_sip_channel_t *obj){ belle_sip_message_t *msg; belle_sip_object_ref(obj);/* we need to ref ourself because code below may trigger our destruction*/ if (obj->out_state != OUTPUT_STREAM_IDLE) { _send_message(obj); } while (obj->state == BELLE_SIP_CHANNEL_READY && obj->out_state == OUTPUT_STREAM_IDLE && (msg = channel_pop_outgoing(obj)) != NULL) { send_message(obj, msg); belle_sip_object_unref(msg); } if (obj->state == BELLE_SIP_CHANNEL_READY && obj->out_state == OUTPUT_STREAM_IDLE) { channel_end_send_background_task(obj); } belle_sip_object_unref(obj); } void belle_sip_channel_set_ready(belle_sip_channel_t *obj, const struct sockaddr *addr, socklen_t slen){ char name[NI_MAXHOST]; char serv[NI_MAXSERV]; if (obj->local_ip==NULL){ struct sockaddr_storage saddr; socklen_t slen2=sizeof(saddr); int err; bctbx_sockaddr_remove_v4_mapping(addr,(struct sockaddr*) &saddr,&slen2); err=bctbx_getnameinfo((struct sockaddr*)&saddr,slen2,name,sizeof(name),serv,sizeof(serv),NI_NUMERICHOST|NI_NUMERICSERV); if (err!=0){ belle_sip_error("belle_sip_channel_set_ready(): getnameinfo() failed: %s",gai_strerror(err)); }else{ obj->local_ip=belle_sip_strdup(name); obj->local_port=atoi(serv); belle_sip_message("Channel has local address %s:%s",name,serv); } } channel_set_state(obj,BELLE_SIP_CHANNEL_READY); channel_process_queue(obj); } static int channel_dns_ttl_timeout(void *data, unsigned int event) { belle_sip_channel_t *obj = (belle_sip_channel_t *)data; belle_sip_message("Channel [%p]: DNS TTL timeout reached.", obj); obj->dns_ttl_timedout = TRUE; return BELLE_SIP_STOP; } /* returns the addrinfo from list that matches 'ai' in terms of content*/ static const struct addrinfo* addrinfo_in_list(const struct addrinfo *ai, const struct addrinfo *list) { const struct addrinfo *item = list; while (item != NULL) { if ((ai->ai_family == item->ai_family) && (bctbx_sockaddr_equals(ai->ai_addr, item->ai_addr))) { return item; } item = item->ai_next; } return NULL; } /* returns the first addrinfo from list, if it is matching 'ai' in terms content*/ static const struct addrinfo * addrinfo_is_first(const struct addrinfo *ai, const struct addrinfo *list) { if (list != NULL && (ai->ai_family == list->ai_family) && (bctbx_sockaddr_equals(ai->ai_addr, list->ai_addr))) return list; return NULL; } static void channel_res_done(void *data, belle_sip_resolver_results_t *results){ belle_sip_channel_t *obj=(belle_sip_channel_t*)data; const struct addrinfo *ai_list = NULL; const char *name = NULL; belle_sip_resolver_results_t *prev_dns_results = obj->resolver_results; if (obj->resolver_ctx){ belle_sip_object_unref(obj->resolver_ctx); obj->resolver_ctx=NULL; } if (results){ /*update current resolver_results, peer_list. current_peer still points to an element of the old list, if it exists*/ obj->peer_list = ai_list = belle_sip_resolver_results_get_addrinfos(results); belle_sip_object_ref(results); name = belle_sip_resolver_results_get_name(results); } obj->resolver_results = results; if (ai_list){ int ttl = belle_sip_resolver_results_get_ttl(results); /* setup now our current_peer. It can be initialized for the first time, kept as before, or changed*/ if (!obj->current_peer) { /*first time we connect*/ channel_set_current_peer(obj, ai_list); channel_set_state(obj,BELLE_SIP_CHANNEL_RES_DONE); } else { const struct addrinfo *existing_peer; if (belle_sip_stack_reconnect_to_primary_asap_enabled(obj->stack)) { existing_peer = addrinfo_is_first(obj->current_peer, ai_list); } else { /*find if the current_peer we had is still existing in the new list. If yes, we will keep it*/ existing_peer = addrinfo_in_list(obj->current_peer, ai_list); } if (existing_peer) { belle_sip_message("channel[%p]: DNS resolution returned the currently used address, continue using it", obj); channel_set_current_peer(obj, existing_peer); channel_set_state(obj, BELLE_SIP_CHANNEL_READY); } else { belle_sip_message("channel[%p]: DNS resolution returned an address different than the one being used, reconnect to the new address", obj); channel_set_current_peer(obj, ai_list); belle_sip_channel_close(obj); belle_sip_main_loop_do_later(obj->stack->ml, (belle_sip_callback_t)channel_connect_next, belle_sip_object_ref(obj)); channel_set_state(obj, BELLE_SIP_CHANNEL_RETRY); } } channel_prepare_continue(obj); if (ttl > 0){ if (!obj->dns_ttl_timer ) { obj->dns_ttl_timer = belle_sip_main_loop_create_timeout(obj->stack->ml, channel_dns_ttl_timeout, obj, ttl * 1000, "Channel DNS TTL timer"); } else { /* Restart the timer for new period. */ belle_sip_source_set_timeout_int64(obj->dns_ttl_timer, ttl * 1000LL); belle_sip_main_loop_add_source(obj->stack->ml, obj->dns_ttl_timer); } } }else{ channel_set_current_peer(obj, NULL); belle_sip_error("%s: DNS resolution failed for %s", __FUNCTION__, name); channel_set_state(obj,BELLE_SIP_CHANNEL_ERROR); } /*now free the old resolver results if any, since we don't need the old current_peer*/ if (prev_dns_results) belle_sip_object_unref(prev_dns_results); } void belle_sip_channel_resolve(belle_sip_channel_t *obj){ belle_sip_message("channel [%p]: starting resolution of %s", obj, obj->peer_name); channel_set_state(obj,BELLE_SIP_CHANNEL_RES_IN_PROGRESS); if (belle_sip_stack_dns_srv_enabled(obj->stack) && obj->lp!=NULL && obj->no_srv == 0) obj->resolver_ctx=belle_sip_stack_resolve(obj->stack, "sip", belle_sip_channel_get_transport_name_lower_case(obj), obj->peer_name, obj->peer_port, obj->ai_family, channel_res_done, obj); else obj->resolver_ctx=belle_sip_stack_resolve_a(obj->stack, obj->peer_name, obj->peer_port, obj->ai_family, channel_res_done, obj); if (obj->resolver_ctx){ belle_sip_object_ref(obj->resolver_ctx); } return ; } void belle_sip_channel_connect(belle_sip_channel_t *obj){ char ip[64]; int port=obj->peer_port; channel_set_state(obj,BELLE_SIP_CHANNEL_CONNECTING); bctbx_addrinfo_to_ip_address(obj->current_peer,ip,sizeof(ip),&port); /* update peer_port as it may have been overriden by SRV resolution*/ if (port!=obj->peer_port){ /*the SRV resolution provided a port number that must be used*/ obj->srv_overrides_port=TRUE; obj->peer_port=port; } belle_sip_message("Trying to connect to [%s://%s:%i]",belle_sip_channel_get_transport_name(obj),ip,obj->peer_port); if(BELLE_SIP_OBJECT_VPTR(obj,belle_sip_channel_t)->connect(obj,obj->current_peer)) { belle_sip_error("Cannot connect to [%s://%s:%i]",belle_sip_channel_get_transport_name(obj),obj->peer_name,obj->peer_port); channel_set_state(obj,BELLE_SIP_CHANNEL_ERROR); } return; } static void queue_message(belle_sip_channel_t *obj, belle_sip_message_t *msg){ belle_sip_object_ref(msg); channel_push_outgoing(obj,msg); if (obj->state==BELLE_SIP_CHANNEL_INIT){ belle_sip_channel_prepare(obj); }else if (obj->state==BELLE_SIP_CHANNEL_READY) { channel_process_queue(obj); } } typedef struct delay_send{ belle_sip_channel_t *chan; belle_sip_message_t *msg; }delay_send_t; /* just to emulate network transmission delay */ static int on_delayed_send_do(delay_send_t *ctx){ belle_sip_message("on_delayed_send_do(): sending now"); if (ctx->chan->state!=BELLE_SIP_CHANNEL_ERROR && ctx->chan->state!=BELLE_SIP_CHANNEL_DISCONNECTED){ queue_message(ctx->chan,ctx->msg); } belle_sip_object_unref(ctx->chan); belle_sip_object_unref(ctx->msg); belle_sip_free(ctx); return FALSE; } static void queue_message_delayed(belle_sip_channel_t *obj, belle_sip_message_t *msg){ delay_send_t *ctx=belle_sip_malloc(sizeof(delay_send_t)); ctx->chan=(belle_sip_channel_t*)belle_sip_object_ref(obj); ctx->msg=(belle_sip_message_t*)belle_sip_object_ref(msg); belle_sip_main_loop_add_timeout(obj->stack->ml,(belle_sip_source_func_t)on_delayed_send_do,ctx,obj->stack->tx_delay); belle_sip_message("channel %p: message sending delayed by %i ms",obj,obj->stack->tx_delay); } int belle_sip_channel_queue_message(belle_sip_channel_t *obj, belle_sip_message_t *msg){ if (obj->stack->tx_delay>0){ queue_message_delayed(obj,msg); }else queue_message(obj,msg); return 0; } void belle_sip_channel_force_close(belle_sip_channel_t *obj){ obj->force_close=1; channel_set_state(obj,BELLE_SIP_CHANNEL_DISCONNECTED); } belle_sip_channel_t *belle_sip_channel_find_from_list_with_addrinfo(belle_sip_list_t *l, const belle_sip_hop_t *hop, const struct addrinfo *addr){ belle_sip_list_t *elem; belle_sip_channel_t *chan; for(elem=l;elem!=NULL;elem=elem->next){ chan=(belle_sip_channel_t*)elem->data; if (chan->state == BELLE_SIP_CHANNEL_DISCONNECTED || chan->state == BELLE_SIP_CHANNEL_ERROR) continue; if (!chan->about_to_be_closed && belle_sip_channel_matches(chan,hop,addr)){ return chan; } } return NULL; } /* search a matching channel from a list according to supplied hop. The ai_family tells which address family is supported by the list of channels*/ belle_sip_channel_t *belle_sip_channel_find_from_list(belle_sip_list_t *l, int ai_family, const belle_sip_hop_t *hop){ belle_sip_channel_t *chan=NULL; struct addrinfo *res = bctbx_ip_address_to_addrinfo(ai_family,SOCK_STREAM/*needed on some platforms that return an error otherwise (QNX)*/,hop->host,hop->port); chan=belle_sip_channel_find_from_list_with_addrinfo(l,hop,res); if (res) bctbx_freeaddrinfo(res); return chan; } void belle_sip_channel_check_dns_reusability(belle_sip_channel_t *obj) { if (obj->dns_ttl_timedout) { obj->dns_ttl_timedout = FALSE; belle_sip_channel_resolve(obj); } } #ifdef __ANDROID__ unsigned long belle_sip_begin_background_task(const char *name, belle_sip_background_task_end_callback_t cb, void *data){ return wake_lock_acquire(name); } void belle_sip_end_background_task(unsigned long id){ wake_lock_release(id); } #elif !TARGET_OS_IPHONE && !defined(__APPLE__) /*defines stubs*/ unsigned long belle_sip_begin_background_task(const char *name, belle_sip_background_task_end_callback_t cb, void *data){ return 0; } void belle_sip_end_background_task(unsigned long id){ return; } #endif belle-sip-5.2.0+dfsg/src/channel.h000066400000000000000000000272511434613136500166760ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef BELLE_SIP_CHANNEL_H #define BELLE_SIP_CHANNEL_H #ifndef _WIN32 #include #include #else #endif #define belle_sip_network_buffer_size 65535 #define belle_sip_send_network_buffer_size 16384 typedef enum belle_sip_channel_state{ BELLE_SIP_CHANNEL_INIT, BELLE_SIP_CHANNEL_RES_IN_PROGRESS, BELLE_SIP_CHANNEL_RES_DONE, BELLE_SIP_CHANNEL_CONNECTING, BELLE_SIP_CHANNEL_RETRY, BELLE_SIP_CHANNEL_READY, BELLE_SIP_CHANNEL_ERROR, BELLE_SIP_CHANNEL_DISCONNECTED }belle_sip_channel_state_t; const char * belle_sip_channel_state_to_string(belle_sip_channel_state_t state); /** * belle_sip_channel_t is an object representing a single communication channel ( socket or file descriptor), * unlike the belle_sip_listening_point_t that can owns several channels for TCP or TLS (incoming server child sockets or * outgoing client sockets). **/ typedef struct belle_sip_channel belle_sip_channel_t; BELLE_SIP_DECLARE_INTERFACE_BEGIN(belle_sip_channel_listener_t) void (*on_state_changed)(belle_sip_channel_listener_t *l, belle_sip_channel_t *, belle_sip_channel_state_t state); void (*on_message_headers)(belle_sip_channel_listener_t *l, belle_sip_channel_t *obj, belle_sip_message_t *msg); void (*on_message)(belle_sip_channel_listener_t *l, belle_sip_channel_t *obj, belle_sip_message_t *msg); void (*on_sending)(belle_sip_channel_listener_t *l, belle_sip_channel_t *obj, belle_sip_message_t *msg); int (*on_auth_requested)(belle_sip_channel_listener_t *l, belle_sip_channel_t *obj, const char* distinghised_name); BELLE_SIP_DECLARE_INTERFACE_END #define BELLE_SIP_CHANNEL_LISTENER(obj) BELLE_SIP_INTERFACE_CAST(obj,belle_sip_channel_listener_t) typedef enum input_stream_state { WAITING_MESSAGE_START, MESSAGE_AQUISITION, BODY_AQUISITION }input_stream_state_t; typedef enum output_stream_state{ OUTPUT_STREAM_IDLE, OUTPUT_STREAM_SENDING_HEADERS, OUTPUT_STREAM_SENDING_BODY }output_stream_state_t; typedef struct belle_sip_channel_input_stream{ input_stream_state_t state; char buff[belle_sip_network_buffer_size]; char* read_ptr; char* write_ptr; belle_sip_message_t *msg; size_t content_length; int chuncked_mode; int chunk_size; int chunk_read_size; }belle_sip_channel_input_stream_t; typedef struct belle_sip_stream_channel belle_sip_stream_channel_t; typedef struct belle_sip_tls_channel belle_sip_tls_channel_t; struct belle_sip_channel{ belle_sip_source_t base; belle_sip_stack_t *stack; belle_sip_listening_point_t *lp; /*the listening point that owns this channel*/ belle_sip_channel_state_t state; belle_sip_list_t *state_listeners; belle_sip_list_t *full_listeners; int ai_family; char *peer_cname; /* A or SRV name */ char *peer_name; /* A or SRV name */ int peer_port; char *local_ip; int local_port; char *public_ip; int public_port; belle_sip_resolver_context_t* resolver_ctx; belle_sip_resolver_results_t* resolver_results; struct addrinfo *static_peer_list; /*this is the addrinfo when the channel is instanciated from destination IP address directly (no dns resolution)*/ const struct addrinfo *peer_list; /*points to the addrinfo list in resolver_results, or to the static_peer_list*/ const struct addrinfo *current_peer; /*points in the currently used element in peer_list */ const char *current_peer_cname; /*name of the host we are currently connected to. Set only in SRV case*/ belle_sip_list_t *outgoing_messages; belle_sip_message_t *cur_out_message; output_stream_state_t out_state; uint8_t *ewouldblock_buffer; size_t ewouldblock_size; size_t ewouldblock_offset; belle_sip_channel_input_stream_t input_stream; belle_sip_list_t* incoming_messages; belle_sip_source_t *inactivity_timer; belle_sip_source_t *dns_ttl_timer; uint64_t last_recv_time; int simulated_recv_return; /* used to simulate network error. 0= no data (disconnected) >0= do nothing -1= network error, 1500 special number to silently discard incoming buffer*/ unsigned long bg_task_id; unsigned long recv_bg_task_id; unsigned char force_close; /* when channel is intentionnaly disconnected, in order to prevent looping notifications*/ unsigned char learnt_ip_port; unsigned char has_name; /*set when the name of the peer is known, which is not the case of inboud connections*/ unsigned char about_to_be_closed; unsigned char srv_overrides_port; /*set when this channel was connected to destination port provided by SRV resolution*/ unsigned char soft_error; /*set when this channel enters ERROR state because of error detected in upper layer */ unsigned char stop_logging_buffer; /*log buffer content only if this is non binary data, and stop it at the first occurence*/ unsigned char closed_by_remote; /*If the channel has been remotely closed*/ unsigned char dns_ttl_timedout; unsigned char no_srv; /* Set to 1 if SRV must be skipped */ }; #define BELLE_SIP_CHANNEL(obj) BELLE_SIP_CAST(obj,belle_sip_channel_t) BELLE_SIP_BEGIN_DECLS void belle_sip_channel_add_listener(belle_sip_channel_t *chan, belle_sip_channel_listener_t *l); void belle_sip_channel_remove_listener(belle_sip_channel_t *obj, belle_sip_channel_listener_t *l); int belle_sip_channel_matches(const belle_sip_channel_t *obj, const belle_sip_hop_t *hop, const struct addrinfo *addr); void belle_sip_channel_resolve(belle_sip_channel_t *obj); void belle_sip_channel_connect(belle_sip_channel_t *obj); void belle_sip_channel_prepare(belle_sip_channel_t *obj); void belle_sip_channel_close(belle_sip_channel_t *obj); /** * * returns number of send byte or <0 in case of error */ int belle_sip_channel_send(belle_sip_channel_t *obj, const void *buf, size_t buflen); int belle_sip_channel_recv(belle_sip_channel_t *obj, void *buf, size_t buflen); /*only used by channels implementation*/ void belle_sip_channel_set_ready(belle_sip_channel_t *obj, const struct sockaddr *addr, socklen_t slen); void belle_sip_channel_init(belle_sip_channel_t *obj, belle_sip_stack_t *stack, const char *bindip,int localport, const char *peer_cname, const char *peername, int peer_port, int no_srv); void belle_sip_channel_init_with_addr(belle_sip_channel_t *obj, belle_sip_stack_t *stack, const char *bindip, int localport, const struct sockaddr *peer_addr, socklen_t addrlen); void belle_sip_channel_set_socket(belle_sip_channel_t *obj, belle_sip_socket_t sock, belle_sip_source_func_t datafunc); /*end of channel implementations*/ /** * Get a received message from the receive queue. This caller takes the ownership of the message. */ belle_sip_message_t* belle_sip_channel_pick_message(belle_sip_channel_t *obj); int belle_sip_channel_queue_message(belle_sip_channel_t *obj, belle_sip_message_t *msg); int belle_sip_channel_is_reliable(const belle_sip_channel_t *obj); const char * belle_sip_channel_get_transport_name(const belle_sip_channel_t *obj); const char * belle_sip_channel_get_transport_name_lower_case(const belle_sip_channel_t *obj); const struct addrinfo * belle_sip_channel_get_peer(belle_sip_channel_t *obj); BELLESIP_EXPORT const char *belle_sip_channel_get_local_address(belle_sip_channel_t *obj, int *port); const char *belle_sip_channel_get_public_address(belle_sip_channel_t *obj, int *port); /* * Returns a sip-uri suitable for using in record-route. * If the channel is not natted, it will return the listening port of the listening point corresponding to the channel. **/ belle_sip_uri_t *belle_sip_channel_create_routable_uri(belle_sip_channel_t *chan); #define belle_sip_channel_get_state(chan) ((chan)->state) void channel_set_state(belle_sip_channel_t *obj, belle_sip_channel_state_t state); /* * Process incoming data and synchronously invoke the listeners if * complete message are received. The invocation of the listeners may * result in the channel being destroyed (ex: calling belle_sip_listening_point_clean_channels() within * a transaction completed notification). * WARNING: As a result, the caller of this function must be take into account that the channel no longer exists * in return from this function. */ int belle_sip_channel_process_data(belle_sip_channel_t *obj,unsigned int revents); /*this function is to be used only in belle_sip_listening_point_clean_channels()*/ void belle_sip_channel_force_close(belle_sip_channel_t *obj); /*this function is for transactions to report that a channel seems non working because a timeout occured for example. It results in the channel possibly entering error state, so that it gets cleaned. Next transactions will re-open a new one and get a better chance of receiving an answer. Returns TRUE if the channel enters error state, 0 otherwise (channel is given a second chance) */ int belle_sip_channel_notify_timeout(belle_sip_channel_t *obj); /*Used by transaction layer to report a server having internal errors, so that we can retry with another IP (in case of DNS SRV)*/ BELLESIP_EXPORT void belle_sip_channel_notify_server_error(belle_sip_channel_t *obj); /* * Check if the DNS TTL has expired. If this is the case, set the channel status to RES_IN_PROGRESS. */ void belle_sip_channel_check_dns_reusability(belle_sip_channel_t *obj); BELLE_SIP_END_DECLS BELLE_SIP_DECLARE_CUSTOM_VPTR_BEGIN(belle_sip_channel_t,belle_sip_source_t) const char *transport; int reliable; int (*connect)(belle_sip_channel_t *obj, const struct addrinfo *ai); int (*channel_send)(belle_sip_channel_t *obj, const void *buf, size_t buflen); int (*channel_recv)(belle_sip_channel_t *obj, void *buf, size_t buflen); void (*close)(belle_sip_channel_t *obj); BELLE_SIP_DECLARE_CUSTOM_VPTR_END /* * tls client certificate authentication. might be relevant for both tls and dtls channels.Only implemented in tls channel for now */ void belle_sip_tls_channel_set_client_certificates_chain(belle_sip_tls_channel_t *obj, belle_sip_certificates_chain_t* cert_chain); void belle_sip_tls_channel_set_client_certificate_key(belle_sip_tls_channel_t *obj, belle_sip_signing_key_t* key); belle_sip_channel_t *belle_sip_channel_find_from_list_with_addrinfo(belle_sip_list_t *l, const belle_sip_hop_t *hop, const struct addrinfo *addr); belle_sip_channel_t *belle_sip_channel_find_from_list(belle_sip_list_t *l, int ai_family, const belle_sip_hop_t *hop); #define BELLE_SIP_TLS_CHANNEL(obj) BELLE_SIP_CAST(obj,belle_sip_tls_channel_t) struct belle_tls_crypto_config{ belle_sip_object_t base; char *root_ca; /**< path to the trusted certificate chain used when verifiying peer certificate */ char *root_ca_data; /**< content of the trusted certificate chain used when verifiying peer certificate */ int exception_flags; /**< override some exception raised during certificate verification, can be: BELLE_TLS_VERIFY_NONE do not override any exception BELLE_TLS_VERIFY_CN_MISMATCH ignore Common Name mismatch exception BELLE_TLS_VERIFY_ANY_REASON(ignore any exception */ void *ssl_config; /**< externally provided ssl configuration context, will be casted and given to the underlying crypto library, use only if you really know what you're doing */ belle_tls_crypto_config_verify_callback_t verify_cb; void *verify_cb_data; belle_tls_crypto_config_postcheck_callback_t postcheck_cb; void *postcheck_cb_data; }; #endif belle-sip-5.2.0+dfsg/src/clock_gettime.c000066400000000000000000000123021434613136500200610ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ /* * Copyright (c), MM Weiss * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, * are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * 3. Neither the name of the MM Weiss nor the names of its contributors * may be used to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT * SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* * clock_gettime_stub.c * gcc -Wall -c clock_gettime_stub.c * posix realtime functions; MacOS user space glue */ /* @comment * other possible implementation using intel builtin rdtsc * rdtsc-workaround: http://www.mcs.anl.gov/~kazutomo/rdtsc.html * * we could get the ticks by doing this * * __asm __volatile("mov %%ebx, %%esi\n\t" * "cpuid\n\t" * "xchg %%esi, %%ebx\n\t" * "rdtsc" * : "=a" (a), * "=d" (d) * ); * we could even replace our tricky sched_yield call by assembly code to get a better accurency, * anyway the following C stub will satisfy 99% of apps using posix clock_gettime call, * moreover, the setter version (clock_settime) could be easly written using mach primitives: * http://www.opensource.apple.com/source/xnu/xnu-${VERSION}/osfmk/man/ (clock_[set|get]_time) * * hackers don't be crackers, don't you use a flush toilet? * * * @see draft: ./posix-realtime-stub/posix-realtime-stub.c * */ #ifdef __APPLE__ #include #include #include #include #include #include #include #include #include "clock_gettime.h" static mach_timebase_info_data_t __clock_gettime_inf; static clock_serv_t belle_sip_calandar_clk; static clock_serv_t belle_sip_system_clk; static int belle_sip_clock_serv_ready=FALSE; int bc_clock_gettime(bc_clockid_t clk_id, struct timespec *tp) { kern_return_t ret; clock_serv_t clk_serv; mach_timespec_t tm; uint64_t start, end, delta, nano; int retval = -1; if (!belle_sip_clock_serv_ready) { /*host_get_clock_service is pretty slow*/ if (KERN_SUCCESS != host_get_clock_service(mach_host_self(), CALENDAR_CLOCK, &belle_sip_calandar_clk) || KERN_SUCCESS != host_get_clock_service(mach_host_self(), SYSTEM_CLOCK, &belle_sip_system_clk) ) { return -1; } else { belle_sip_clock_serv_ready=TRUE; } } switch (clk_id) { case BC_CLOCK_REALTIME: case BC_CLOCK_MONOTONIC: clk_serv = (clk_id == BC_CLOCK_REALTIME) ? belle_sip_calandar_clk : belle_sip_system_clk; if (KERN_SUCCESS == (ret = clock_get_time(clk_serv, &tm))) { tp->tv_sec = tm.tv_sec; tp->tv_nsec = tm.tv_nsec; retval = 0; } if (KERN_SUCCESS != ret) { errno = EINVAL; retval = -1; } break; case BC_CLOCK_PROCESS_CPUTIME_ID: case BC_CLOCK_THREAD_CPUTIME_ID: start = mach_absolute_time(); if (clk_id == BC_CLOCK_PROCESS_CPUTIME_ID) { getpid(); } else { sched_yield(); } end = mach_absolute_time(); delta = end - start; if (0 == __clock_gettime_inf.denom) { mach_timebase_info(&__clock_gettime_inf); } nano = delta * __clock_gettime_inf.numer / __clock_gettime_inf.denom; tp->tv_sec = nano * 1e-9; tp->tv_nsec = nano - (tp->tv_sec * 1e9); retval = 0; break; default: errno = EINVAL; retval = -1; } return retval; } #endif // __APPLE__ /* EOF */ belle-sip-5.2.0+dfsg/src/clock_gettime.h000066400000000000000000000020371434613136500200720ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef CLOCK_GETTIME_H_ #define CLOCK_GETTIME_H_ #ifdef __APPLE__ typedef enum { BC_CLOCK_REALTIME, BC_CLOCK_MONOTONIC, BC_CLOCK_PROCESS_CPUTIME_ID, BC_CLOCK_THREAD_CPUTIME_ID } bc_clockid_t; int bc_clock_gettime(bc_clockid_t clk_id, struct timespec *tp) ; #endif #endif /* CLOCK_GETTIME_H_ */ belle-sip-5.2.0+dfsg/src/cpp_utils.cc000066400000000000000000000074021434613136500174220ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include #include #include "bctoolbox/crypto.hh" /** * Write random bytes of supplied size. **/ unsigned char * belle_sip_random_bytes(unsigned char *ret, size_t size){ bctoolbox::RNG::cRandomize(ret, size); return ret; } uint32_t belle_sip_random(void){ return bctoolbox::RNG::cRandomize(); } static belle_sip_source_t * _belle_sip_main_loop_create_cpp_timeout( belle_sip_main_loop_t *ml, belle_sip_source_cpp_func_t *func, unsigned int timeout_value_ms, const char* timer_name ) { return belle_sip_main_loop_create_timeout_with_remove_cb( ml, [](void *user_data, unsigned int events){ return static_cast(user_data)->operator()(events); }, func, timeout_value_ms, timer_name, [](belle_sip_source_t* source){ delete static_cast(belle_sip_source_get_user_data(source)); belle_sip_source_set_user_data(source, nullptr); } ); } belle_sip_source_t * belle_sip_main_loop_create_cpp_timeout( belle_sip_main_loop_t *ml, belle_sip_source_cpp_func_t *func, unsigned int timeout_value_ms, const char* timer_name ) { return _belle_sip_main_loop_create_cpp_timeout(ml, func, timeout_value_ms, timer_name); } BelleSipSourcePtr belle_sip_main_loop_create_cpp_timeout( belle_sip_main_loop_t *ml, const belle_sip_source_cpp_func_t &func, unsigned int timeout_value_ms, const char* timer_name ) { belle_sip_source_t* source = _belle_sip_main_loop_create_cpp_timeout( ml, new belle_sip_source_cpp_func_t{func}, timeout_value_ms, timer_name ); return BelleSipSourcePtr{source}; } void belle_sip_main_loop_cpp_do_later(belle_sip_main_loop_t *ml, const BelleSipDoLaterFunc &func){ belle_sip_main_loop_cpp_do_later(ml, func, nullptr); } static void cpp_timer_delete(belle_sip_source_t* source){ std::function *func = static_cast< std::function *>(belle_sip_source_get_user_data(source)); delete func; belle_sip_source_set_user_data(source,NULL); } static int cpp_timer_func(void *ud, unsigned int events){ std::function *func = static_cast< std::function *>(ud); bool ret = (*func)(); return ret ? BELLE_SIP_CONTINUE : BELLE_SIP_STOP; } belle_sip_source_t * belle_sip_main_loop_create_cpp_timeout_2(belle_sip_main_loop_t *ml, const std::function &func, unsigned int timeout_value_ms, const std::string &timer_name){ belle_sip_source_t* source = belle_sip_main_loop_create_timeout( ml , (belle_sip_source_func_t)cpp_timer_func , new std::function(func) , timeout_value_ms , timer_name.c_str()); belle_sip_source_set_remove_cb(source, cpp_timer_delete); return source; } void belle_sip_main_loop_cpp_do_later( belle_sip_main_loop_t *ml, const BelleSipDoLaterFunc &func, const char *task_name ) { belle_sip_main_loop_do_later_with_name( ml, [](void *ud){ auto func = static_cast(ud); func->operator()(); delete func; }, new BelleSipDoLaterFunc{func}, task_name ); } belle-sip-5.2.0+dfsg/src/dialog.c000066400000000000000000001554561434613136500165310ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "belle_sip_internal.h" #include static void belle_sip_dialog_init_200Ok_retrans(belle_sip_dialog_t *obj, belle_sip_response_t *resp); static int belle_sip_dialog_handle_200Ok(belle_sip_dialog_t *obj, belle_sip_response_t *msg); static void belle_sip_dialog_process_queue(belle_sip_dialog_t* dialog); static belle_sip_request_t *create_request(belle_sip_dialog_t *obj, const char *method, int full); static void belle_sip_dialog_uninit(belle_sip_dialog_t *obj){ if (obj->route_set) belle_sip_list_free_with_data(obj->route_set,belle_sip_object_unref); if (obj->remote_target) belle_sip_object_unref(obj->remote_target); if (obj->call_id) belle_sip_object_unref(obj->call_id); if (obj->local_party) belle_sip_object_unref(obj->local_party); if (obj->remote_party) belle_sip_object_unref(obj->remote_party); if (obj->local_tag) belle_sip_free(obj->local_tag); if (obj->remote_tag) belle_sip_free(obj->remote_tag); if (obj->last_out_invite) belle_sip_object_unref(obj->last_out_invite); if (obj->last_out_ack) belle_sip_object_unref(obj->last_out_ack); if (obj->last_transaction) belle_sip_object_unref(obj->last_transaction); if(obj->privacy) belle_sip_object_unref(obj->privacy); if (obj->expiration_timer){ /*In some situations, dialog deleted might not be called*/ belle_sip_main_loop_remove_source(obj->provider->stack->ml, obj->expiration_timer); belle_sip_object_unref(obj->expiration_timer); obj->expiration_timer = NULL; } } BELLE_SIP_DECLARE_NO_IMPLEMENTED_INTERFACES(belle_sip_dialog_t); BELLE_SIP_INSTANCIATE_VPTR(belle_sip_dialog_t, belle_sip_object_t, belle_sip_dialog_uninit, NULL, NULL, TRUE); const char* belle_sip_dialog_state_to_string(const belle_sip_dialog_state_t state) { switch(state) { case BELLE_SIP_DIALOG_NULL: return "BELLE_SIP_DIALOG_NULL"; case BELLE_SIP_DIALOG_EARLY: return "BELLE_SIP_DIALOG_EARLY"; case BELLE_SIP_DIALOG_CONFIRMED: return "BELLE_SIP_DIALOG_CONFIRMED"; case BELLE_SIP_DIALOG_TERMINATED: return "BELLE_SIP_DIALOG_TERMINATED"; default: return "Unknown state"; } } static void set_state(belle_sip_dialog_t *obj,belle_sip_dialog_state_t state) { obj->previous_state=obj->state; obj->state=state; } static void set_to_tag(belle_sip_dialog_t *obj, belle_sip_header_to_t *to){ const char *to_tag=belle_sip_header_to_get_tag(to); if (obj->is_server){ if (to_tag && !obj->local_tag) obj->local_tag=belle_sip_strdup(to_tag); }else{ if (to_tag && !obj->remote_tag) obj->remote_tag=belle_sip_strdup(to_tag); } } static void check_route_set(belle_sip_list_t *rs){ if (rs){ belle_sip_header_route_t *r=(belle_sip_header_route_t*)rs->data; if (!belle_sip_uri_has_lr_param(belle_sip_header_address_get_uri((belle_sip_header_address_t*)r))){ belle_sip_warning("top uri of route set does not contain 'lr', not really supported."); } } } static int belle_sip_dialog_init_as_uas(belle_sip_dialog_t *obj, belle_sip_request_t *req){ const belle_sip_list_t *elem; belle_sip_header_contact_t *ct=belle_sip_message_get_header_by_type(req,belle_sip_header_contact_t); belle_sip_header_cseq_t *cseq=belle_sip_message_get_header_by_type(req,belle_sip_header_cseq_t); belle_sip_header_via_t *via=belle_sip_message_get_header_by_type(req,belle_sip_header_via_t); belle_sip_uri_t *requri=belle_sip_request_get_uri(req); belle_sip_header_to_t *to=belle_sip_message_get_header_by_type(req,belle_sip_header_to_t); if (!ct){ belle_sip_error("No contact in request."); return -1; } if (!cseq){ belle_sip_error("No cseq in request."); return -1; } if (!via){ belle_sip_error("No via in request."); return -1; } if (!to){ belle_sip_error("No to in request."); return -1; } if (strcasecmp(belle_sip_header_via_get_protocol(via),"TLS")==0 && belle_sip_uri_is_secure(requri)){ obj->is_secure=TRUE; } /* 12.1.1 *The route set MUST be set to the list of URIs in the Record-Route * header field from the request, taken in order and preserving all URI * parameters. If no Record-Route header field is present in the *request, the route set MUST be set to the empty set. */ obj->route_set=belle_sip_list_free_with_data(obj->route_set,belle_sip_object_unref); for(elem=belle_sip_message_get_headers((belle_sip_message_t*)req,BELLE_SIP_RECORD_ROUTE);elem!=NULL;elem=elem->next){ obj->route_set=belle_sip_list_append(obj->route_set,belle_sip_object_ref(belle_sip_header_route_create( (belle_sip_header_address_t*)elem->data))); } check_route_set(obj->route_set); obj->remote_target=(belle_sip_header_address_t*)belle_sip_object_ref(ct); obj->remote_cseq=belle_sip_header_cseq_get_seq_number(cseq); if (strcmp(belle_sip_request_get_method(req),"INVITE")==0){ obj->remote_invite_cseq = belle_sip_header_cseq_get_seq_number(cseq); } /*remote party already set */ obj->local_party=(belle_sip_header_address_t*)belle_sip_object_ref(to); return 0; } static void set_last_out_invite(belle_sip_dialog_t *obj, belle_sip_request_t *req){ if (obj->last_out_invite) belle_sip_object_unref(obj->last_out_invite); obj->last_out_invite=(belle_sip_request_t*)belle_sip_object_ref(req); } static int belle_sip_dialog_init_as_uac(belle_sip_dialog_t *obj, belle_sip_request_t *req){ belle_sip_header_cseq_t *cseq=belle_sip_message_get_header_by_type(req,belle_sip_header_cseq_t); belle_sip_header_to_t *to=belle_sip_message_get_header_by_type(req,belle_sip_header_to_t); belle_sip_header_via_t *via=belle_sip_message_get_header_by_type(req,belle_sip_header_via_t); belle_sip_uri_t *requri=belle_sip_request_get_uri(req); if (!to){ belle_sip_error("No to in request."); return -1; } if (!cseq){ belle_sip_error("No cseq in request."); return -1; } if (!via){ belle_sip_error("No via in request."); return -1; } if (belle_sip_header_via_get_protocol(via) /*might be null at dialog creation (uac case)*/ && strcasecmp(belle_sip_header_via_get_protocol(via),"TLS")==0 && belle_sip_uri_is_secure(requri)){ obj->is_secure=TRUE; } obj->local_cseq=belle_sip_header_cseq_get_seq_number(cseq); /*call id is already set */ /*local_tag is already set*/ obj->remote_party=(belle_sip_header_address_t*)belle_sip_object_ref(to); /*local party is already set*/ if (strcmp(belle_sip_request_get_method(req),"INVITE")==0){ set_last_out_invite(obj,req); } return 0; } static int belle_sip_dialog_on_expired(belle_sip_dialog_t *dialog){ belle_sip_message("Dialog [%p] expired", dialog); dialog->is_expired = TRUE; belle_sip_dialog_delete(dialog); return BELLE_SIP_STOP; } int belle_sip_dialog_expired(const belle_sip_dialog_t *dialog){ return dialog->is_expired; } /*returns BELLE_SIP_STOP if the dialog is to be terminated, BELLE_SIP_CONTINUE otherwise*/ static int belle_sip_dialog_schedule_expiration(belle_sip_dialog_t *dialog, belle_sip_message_t *request){ belle_sip_header_expires_t *expires = belle_sip_message_get_header_by_type(request, belle_sip_header_expires_t); int expires_value; if (!expires) return BELLE_SIP_CONTINUE; expires_value = belle_sip_header_expires_get_expires(expires); if (dialog->expiration_timer){ belle_sip_main_loop_remove_source(dialog->provider->stack->ml, dialog->expiration_timer); belle_sip_object_unref(dialog->expiration_timer); dialog->expiration_timer = NULL; } belle_sip_message("belle_sip_dialog_schedule_expiration() dialog=%p expires_value=%i", dialog, expires_value); if (expires_value == 0) return BELLE_SIP_STOP; dialog->expiration_timer = belle_sip_main_loop_create_timeout(dialog->provider->stack->ml, (belle_sip_source_func_t) belle_sip_dialog_on_expired, dialog, expires_value * 1000, "Dialog expiration"); return BELLE_SIP_CONTINUE; } int belle_sip_dialog_establish_full(belle_sip_dialog_t *obj, belle_sip_request_t *req, belle_sip_response_t *resp){ belle_sip_header_contact_t *ct=belle_sip_message_get_header_by_type(resp,belle_sip_header_contact_t); belle_sip_header_to_t *to=belle_sip_message_get_header_by_type(resp,belle_sip_header_to_t); const belle_sip_list_t *elem; if (strcmp(belle_sip_request_get_method(req),"INVITE")==0) obj->needs_ack=TRUE; if (obj->is_server){ if (strcmp(belle_sip_request_get_method(req),"INVITE")==0){ belle_sip_dialog_init_200Ok_retrans(obj,resp); } } else { if (!ct && !obj->remote_target) { belle_sip_error("Missing contact header in resp [%p] cannot set remote target for dialog [%p]",resp,obj); return -1; } /* 13.2.2.4 2xx Responses ... If the dialog identifier in the 2xx response matches the dialog identifier of an existing dialog, the dialog MUST be transitioned to the "confirmed" state, and the route set for the dialog MUST be recomputed based on the 2xx response using the procedures of Section 12.2.1.2. */ obj->route_set=belle_sip_list_free_with_data(obj->route_set,belle_sip_object_unref); for(elem=belle_sip_message_get_headers((belle_sip_message_t*)resp,BELLE_SIP_RECORD_ROUTE);elem!=NULL;elem=elem->next){ obj->route_set=belle_sip_list_prepend(obj->route_set,belle_sip_object_ref(belle_sip_header_route_create( (belle_sip_header_address_t*)elem->data))); } if (ct) { /*remote Contact header may have changed between early dialog to confirmed*/ if (obj->remote_target) belle_sip_object_unref(obj->remote_target); obj->remote_target=(belle_sip_header_address_t*)belle_sip_object_ref(ct); } } /*update to tag*/ set_to_tag(obj,to); set_state(obj,BELLE_SIP_DIALOG_CONFIRMED); return 0; } int belle_sip_dialog_establish(belle_sip_dialog_t *obj, belle_sip_request_t *req, belle_sip_response_t *resp){ belle_sip_header_to_t *to=belle_sip_message_get_header_by_type(resp,belle_sip_header_to_t); belle_sip_header_via_t *via=belle_sip_message_get_header_by_type(req,belle_sip_header_via_t); belle_sip_uri_t *requri=belle_sip_request_get_uri(req); if (obj->state != BELLE_SIP_DIALOG_NULL) { belle_sip_error("Dialog [%p] already established.",obj); return -1; } if (!to){ belle_sip_error("No to in response."); return -1; } if (!obj->is_server) { belle_sip_header_contact_t *ct=belle_sip_message_get_header_by_type(resp,belle_sip_header_contact_t); const belle_sip_list_t* elem; /*contact might be provided later*/ if (ct) obj->remote_target=(belle_sip_header_address_t*)belle_sip_object_ref(ct); /**12.1.2 * The route set MUST be set to the list of URIs in the Record-Route *header field from the response, taken in reverse order and preserving *all URI parameters. If no Record-Route header field is present in *the response, the route set MUST be set to the empty set. **/ obj->route_set=belle_sip_list_free_with_data(obj->route_set,belle_sip_object_unref); for(elem=belle_sip_message_get_headers((belle_sip_message_t*)resp,BELLE_SIP_RECORD_ROUTE);elem!=NULL;elem=elem->next){ obj->route_set=belle_sip_list_prepend(obj->route_set,belle_sip_object_ref(belle_sip_header_route_create( (belle_sip_header_address_t*)elem->data))); } check_route_set(obj->route_set); /*via might be unknown at dialog creation*/ if (strcasecmp(belle_sip_header_via_get_protocol(via),"TLS")==0 && belle_sip_uri_is_secure(requri)){ obj->is_secure=TRUE; } } set_to_tag(obj,to); return 0; } int belle_sip_dialog_check_incoming_request_ordering(belle_sip_dialog_t *obj, belle_sip_request_t *req){ belle_sip_header_cseq_t *cseqh=belle_sip_message_get_header_by_type(req,belle_sip_header_cseq_t); unsigned int cseq=belle_sip_header_cseq_get_seq_number(cseqh); if (obj->remote_cseq==0){ obj->remote_cseq=cseq; }else if (cseq>obj->remote_cseq){ return 0; } belle_sip_warning("Ignoring request because cseq is inconsistent."); return -1; } static int dialog_on_200Ok_timer(belle_sip_dialog_t *dialog){ /*reset the timer */ const belle_sip_timer_config_t *cfg=belle_sip_stack_get_timer_config(dialog->provider->stack); int64_t prev_timeout=belle_sip_source_get_timeout_int64(dialog->timer_200Ok); belle_sip_source_set_timeout_int64(dialog->timer_200Ok, MIN(2*prev_timeout,cfg->T2)); belle_sip_message("Dialog sending retransmission of 200Ok"); belle_sip_provider_send_response(dialog->provider,dialog->last_200Ok); return BELLE_SIP_CONTINUE; } static int dialog_on_200Ok_end(belle_sip_dialog_t *dialog){ belle_sip_request_t *bye; belle_sip_client_transaction_t *trn; belle_sip_header_reason_t *reason; belle_sip_dialog_stop_200Ok_retrans(dialog); belle_sip_error("Dialog [%p] was not ACK'd within T1*64 seconds.", dialog); if (dialog->last_transaction){ /* Check if a BYE is not already in progress, no need to send a second one.*/ const char * request = belle_sip_request_get_method(belle_sip_transaction_get_request(dialog->last_transaction)); if (BELLE_SIP_OBJECT_IS_INSTANCE_OF(dialog->last_transaction,belle_sip_client_transaction_t) && strcmp(request, "BYE") == 0){ return BELLE_SIP_STOP; } } belle_sip_error("Dialog [%p] it is going to be terminated automatically.",dialog); dialog->state=BELLE_SIP_DIALOG_CONFIRMED; bye=belle_sip_dialog_create_request(dialog,"BYE"); reason=belle_sip_header_reason_new(); belle_sip_header_reason_set_protocol(reason,"SIP"); belle_sip_header_reason_set_cause(reason,408); belle_sip_header_reason_set_text(reason,"no ACK received"); belle_sip_message_add_header(BELLE_SIP_MESSAGE(bye), BELLE_SIP_HEADER(reason)); dialog->termination_cause = BELLE_SIP_DIALOG_TERMINATION_CAUSE_ABORT_NO_ACK; trn=belle_sip_provider_create_client_transaction(dialog->provider,bye); BELLE_SIP_TRANSACTION(trn)->is_internal=1; /*don't bother user with this transaction*/ belle_sip_client_transaction_send_request(trn); return BELLE_SIP_STOP; } static void belle_sip_dialog_init_200Ok_retrans(belle_sip_dialog_t *obj, belle_sip_response_t *resp){ const belle_sip_timer_config_t *cfg=belle_sip_stack_get_timer_config(obj->provider->stack); if (obj->timer_200Ok || obj->timer_200Ok_end) { belle_sip_error("dialog [%p] already has a 200ok retransmition timer ! skipping",obj); return; } obj->timer_200Ok=belle_sip_timeout_source_new((belle_sip_source_func_t)dialog_on_200Ok_timer,obj,cfg->T1); belle_sip_object_set_name((belle_sip_object_t*)obj->timer_200Ok,"dialog_200Ok_timer"); belle_sip_main_loop_add_source(obj->provider->stack->ml,obj->timer_200Ok); obj->timer_200Ok_end=belle_sip_timeout_source_new((belle_sip_source_func_t)dialog_on_200Ok_end,obj,cfg->T1*64); belle_sip_object_set_name((belle_sip_object_t*)obj->timer_200Ok_end,"dialog_200Ok_timer_end"); belle_sip_main_loop_add_source(obj->provider->stack->ml,obj->timer_200Ok_end); obj->last_200Ok=(belle_sip_response_t*)belle_sip_object_ref(resp); } void belle_sip_dialog_stop_200Ok_retrans(belle_sip_dialog_t *obj){ belle_sip_main_loop_t *ml=obj->provider->stack->ml; if (obj->timer_200Ok){ belle_sip_main_loop_remove_source(ml,obj->timer_200Ok); belle_sip_object_unref(obj->timer_200Ok); obj->timer_200Ok=NULL; } if (obj->timer_200Ok_end){ belle_sip_main_loop_remove_source(ml,obj->timer_200Ok_end); belle_sip_object_unref(obj->timer_200Ok_end); obj->timer_200Ok_end=NULL; } if (obj->last_200Ok){ belle_sip_object_unref(obj->last_200Ok); obj->last_200Ok=NULL; } } /* returns true if the dialog is terminated by the NOTIFY request or response*/ static int belle_sip_dialog_should_terminate_by_notify(belle_sip_dialog_t *obj, belle_sip_transaction_t* transaction, int as_uas){ int should_terminate = FALSE; if (obj->type == BELLE_SIP_DIALOG_SUBSCRIBE_NOTIFY) { belle_sip_request_t *req=belle_sip_transaction_get_request(transaction); belle_sip_response_t *resp=belle_sip_transaction_get_response(transaction); belle_sip_header_subscription_state_t* subscription_state_header=belle_sip_message_get_header_by_type(req,belle_sip_header_subscription_state_t); int code = resp ? belle_sip_response_get_status_code(resp) : 0; if (!subscription_state_header || strcasecmp(BELLE_SIP_SUBSCRIPTION_STATE_TERMINATED,belle_sip_header_subscription_state_get_state(subscription_state_header)) ==0) { if (as_uas){ /*terminate the dialog when the application replies the 200 Ok*/ if (code == 200){ should_terminate = TRUE; } }else{ /*terminate the dialog when we receive the 200OK or the transaction terminates by timeout*/ if (code == 200 || belle_sip_transaction_get_state(transaction) == BELLE_SIP_TRANSACTION_TERMINATED){ should_terminate = TRUE; } } } } return should_terminate; } static void belle_sip_dialog_update_remote_target(belle_sip_dialog_t *obj, belle_sip_header_contact_t *ct) { int remote_target_changed = FALSE; if (obj->remote_target) { belle_sip_uri_t *remote_target_uri = belle_sip_header_address_get_uri(obj->remote_target); belle_sip_uri_t *ct_uri = belle_sip_header_address_get_uri((belle_sip_header_address_t *)ct); remote_target_changed = !belle_sip_uri_equals(remote_target_uri, ct_uri); belle_sip_object_unref(obj->remote_target); } obj->remote_target=(belle_sip_header_address_t*)belle_sip_object_ref(ct); if (remote_target_changed) { belle_sip_message("Dialog [%p]: remote target changed", obj); if (obj->last_out_ack) { belle_sip_request_set_uri(BELLE_SIP_REQUEST(obj->last_out_ack), belle_sip_header_address_get_uri(obj->remote_target)); } } } static void belle_sip_dialog_update_local_cseq(belle_sip_dialog_t *obj, const char *method){ if (obj->local_cseq==0) obj->local_cseq=110; if (strcmp(method,"ACK")!=0) obj->local_cseq++; } static belle_sip_request_t *belle_sip_dialog_create_prack(belle_sip_dialog_t *dialog, unsigned int rseq, unsigned int cseq, const char* method){ belle_sip_request_t *prack; belle_sip_request_t *invite = dialog->last_out_invite; if (!invite){ belle_sip_error("No INVITE to PACK."); return NULL; } prack = belle_sip_dialog_create_request(dialog, "PRACK"); if (prack){ //RAck char header[50]; snprintf(header,sizeof(header),"%d %d %s", rseq, cseq, method); belle_sip_header_t *rack = belle_sip_header_create("RAck", header); belle_sip_message_add_header(BELLE_SIP_MESSAGE(prack), rack); //Contact belle_sip_header_from_t* from_header = belle_sip_message_get_header_by_type(prack, belle_sip_header_from_t); belle_sip_uri_t* req_uri = belle_sip_header_address_get_uri((belle_sip_header_address_t*)from_header); belle_sip_header_contact_t* contact_header = belle_sip_header_contact_new(); belle_sip_header_address_set_uri((belle_sip_header_address_t*)contact_header, belle_sip_uri_new()); belle_sip_uri_set_user(belle_sip_header_address_get_uri((belle_sip_header_address_t*)contact_header),belle_sip_uri_get_user(req_uri)); belle_sip_message_add_header(BELLE_SIP_MESSAGE(prack),BELLE_SIP_HEADER(contact_header)); } return prack; } static void belle_sip_dialog_send_prack(belle_sip_dialog_t *dialog, belle_sip_request_t *request){ belle_sip_provider_send_request(dialog->provider, request); } /*return 0 if message should be delivered to the next listener, otherwise, its a retransmision, just keep it*/ static int belle_sip_dialog_process_response_100rel(belle_sip_dialog_t *obj, belle_sip_transaction_t* transaction){ belle_sip_response_t *resp = belle_sip_transaction_get_response(transaction); belle_sip_message_t* msg = (belle_sip_message_t*)resp; belle_sip_header_cseq_t *header_cseq_resp = belle_sip_message_get_header_by_type(msg, belle_sip_header_cseq_t); int ret = 0; if (header_cseq_resp == NULL){ belle_sip_message("Message [%p] does not contain CSeq header!", msg); } belle_sip_header_require_t* header_require = belle_sip_message_get_header_by_type(msg, belle_sip_header_require_t); if (header_require){ belle_sip_list_t* list = belle_sip_header_require_get_require(header_require); int require_100rel = 0; while (list){ if (strcmp(list->data, "100rel") == 0){ require_100rel = 1; break; } list=list->next; } if (require_100rel){ belle_sip_message("Found header Require with value 100rel in message [%p].", msg); belle_sip_header_t *header_rseq = belle_sip_message_get_header(msg, "RSeq"); if (header_rseq){ const char* header_rseq_value = belle_sip_header_get_unparsed_value(header_rseq); long rseq = strtol(header_rseq_value, NULL, 10); unsigned int cseq_resp = belle_sip_header_cseq_get_seq_number(header_cseq_resp); const char* method_resp = belle_sip_header_cseq_get_method(header_cseq_resp); /*"A response is a retransmission when its dialog ID, CSeq, and RSeq match the original response". Currently we only store last acknoledged Rseq. This data is used to detect retransmitions*/ belle_sip_ict_t * ict = BELLE_SIP_CAST(transaction,belle_sip_ict_t); if (ict->r_cseq > 0 && ict->r_cseq >= (unsigned int)rseq) { belle_sip_warning("provisionnal response with sequence number [%ld] already acknoledged, dropping",rseq); ret = -1; } else { /*send PRACK from callee */ belle_sip_request_t *prack = belle_sip_dialog_create_prack(obj, rseq, cseq_resp, method_resp); if (prack){ /*put auth header*/ belle_sip_provider_add_authorization(transaction->provider,prack,transaction->last_response,NULL,NULL,NULL); belle_sip_dialog_send_prack(obj, prack); ict->r_cseq = rseq; } else { belle_sip_message("Failed to create PRACK message!"); } } } else { belle_sip_message("Message [%p] does not contain RSeq header! (required be with 100rel)", msg); } } } return ret; } /* * return 0 if message should be delivered to the next listener, otherwise, its a retransmision, just keep it * */ int belle_sip_dialog_update(belle_sip_dialog_t *obj, belle_sip_transaction_t* transaction, int as_uas){ int is_retransmition=FALSE; int delete_dialog=FALSE; belle_sip_request_t *req=belle_sip_transaction_get_request(transaction); belle_sip_header_cseq_t* current_cseq=belle_sip_message_get_header_by_type(BELLE_SIP_MESSAGE(req),belle_sip_header_cseq_t); unsigned int current_transaction_cseq = belle_sip_header_cseq_get_seq_number(current_cseq); belle_sip_response_t *resp=belle_sip_transaction_get_response(transaction); int code=0; int ret = 0; int is_invite = strcmp(belle_sip_request_get_method(req),"INVITE")==0; int is_subscribe = strcmp(belle_sip_request_get_method(req),"SUBSCRIBE")==0; int is_notify = strcmp(belle_sip_request_get_method(req),"NOTIFY")==0; belle_sip_transaction_t *previous_transaction = NULL; belle_sip_message("Dialog [%p]: now updated by transaction [%p].",obj, transaction); if (resp) code=belle_sip_response_get_status_code(resp); bool_t do_not_update_last_transaction = (as_uas && (code == 491)); if (do_not_update_last_transaction) { /**/ belle_sip_message("Dialog [%p]: don't update last transaction by transaction [%p].",obj, transaction); } else { belle_sip_object_ref(transaction); if (obj->last_transaction) { previous_transaction = obj->last_transaction; } obj->last_transaction=transaction; } if (!as_uas){ belle_sip_header_privacy_t *privacy_header=belle_sip_message_get_header_by_type(req,belle_sip_header_privacy_t); SET_OBJECT_PROPERTY(obj,privacy,privacy_header); } /* first update local/remote cseq Do not update remote and remote invite CSeq if it is lower than the current one as it may be a retransmission and the next transaction may already be executing */ if (as_uas) { bool_t update_remote_invite_cseq = (obj->remote_invite_cseq < current_transaction_cseq); bool_t update_cseq = (obj->remote_cseq < current_transaction_cseq); if ((is_invite && (code>=200) && (code<300) && !update_remote_invite_cseq) || (!update_cseq && !do_not_update_last_transaction)) { obj->last_transaction=previous_transaction; } if (update_cseq) { obj->remote_cseq=current_transaction_cseq; } if (is_invite && (code>=200) && (code<300) && update_remote_invite_cseq) { obj->remote_invite_cseq = current_transaction_cseq; } /*else ACK is handled by transaction, not dialog*/ } switch (obj->state){ case BELLE_SIP_DIALOG_NULL: /*always establish a dialog*/ if (code>100 && code<300 && (is_invite || is_subscribe)) { belle_sip_dialog_establish(obj,req,resp); if (code<200){ set_state(obj,BELLE_SIP_DIALOG_EARLY); if (!as_uas) { belle_sip_dialog_process_response_100rel(obj, transaction); } break; }/* no break for code >200 because need to call belle_sip_dialog_establish_full*/ } BCTBX_NO_BREAK; /*intentionally no break*/ case BELLE_SIP_DIALOG_EARLY: /*don't terminate dialog for UPDATE*/ if (code>=300 && ((is_invite && code!=407) || is_subscribe)) { /*12.3 Termination of a Dialog Independent of the method, if a request outside of a dialog generates a non-2xx final response, any early dialogs created through provisional responses to that request are terminated. The mechanism for terminating confirmed dialogs is method specific.*/ delete_dialog=TRUE; break; } if (code>=200 && code<300 && (is_invite || is_subscribe)){ if (belle_sip_dialog_establish_full(obj,req,resp) != 0){ /*the dialog found this response invalid so notify the transaction layer by returning -1*/ ret = -1; goto end; } } if (is_subscribe){ if (belle_sip_dialog_schedule_expiration(obj, (belle_sip_message_t*)req) == BELLE_SIP_STOP && (code>=200 || (code==0 && belle_sip_transaction_get_state(transaction)==BELLE_SIP_TRANSACTION_TERMINATED))){ /*delete the dialog when the 200Ok for a SUBSCRIBE with expires=0 is received or when * no response is received at all*/ delete_dialog = TRUE; } } if (code < 200 && belle_sip_transaction_get_state(transaction)==BELLE_SIP_TRANSACTION_TERMINATED){ /*no response establishing the dialog, and transaction terminated (transport errors)*/ delete_dialog=TRUE; } if ((code > 100 && code < 200) && !as_uas) { if (belle_sip_dialog_process_response_100rel(obj, transaction)) { /*retransmition detected, dropping*/ ret = -1; goto end; } } break; case BELLE_SIP_DIALOG_CONFIRMED: if (code==481 && (is_invite || is_subscribe)) { /*Dialog is terminated in such case*/ delete_dialog=TRUE; break; } /*refreshing target is also true in case of subscribe*/ if ((is_invite || is_subscribe) && (code>=200 && code<300)) { /*refresh the remote_target*/ belle_sip_header_contact_t *ct; if (as_uas){ ct=belle_sip_message_get_header_by_type(req,belle_sip_header_contact_t); }else{ if (is_invite) set_last_out_invite(obj,req); ct=belle_sip_message_get_header_by_type(resp,belle_sip_header_contact_t); } if (ct){ belle_sip_dialog_update_remote_target(obj, ct); } } if (is_invite){ if (code>=200 && code<300){ /*handle possible retransmission of 200Ok */ if (!as_uas && (is_retransmition=(belle_sip_dialog_handle_200Ok(obj,resp)==0))) { obj->last_transaction=previous_transaction; ret = 1; goto end; } else { if (as_uas) belle_sip_dialog_init_200Ok_retrans(obj,resp); obj->needs_ack=TRUE; /*REINVITE case, ack needed by both uas and uac*/ } }else if (code>=300){ /*final response, ack will be automatically sent by transaction layer*/ /* do not need to do anything because not set yet or set by previous invite transaction obj->needs_ack=FALSE;*/ } } else if (strcmp(belle_sip_request_get_method(req),"BYE")==0){ /*15.1.1 UAC Behavior A BYE request is constructed as would any other request within a dialog, as described in Section 12. Once the BYE is constructed, the UAC core creates a new non-INVITE client transaction, and passes it the BYE request. The UAC MUST consider the session terminated (and therefore stop sending or listening for media) as soon as the BYE request is passed to the client transaction. If the response for the BYE is a 481 (Call/Transaction Does Not Exist) or a 408 (Request Timeout) or no response at all is received for the BYE (that is, a timeout is returned by the client transaction), the UAC MUST consider the session and the dialog terminated. */ /*what should we do with other reponse >300 ?? */ if (code>=200 || (code==0 && belle_sip_transaction_get_state(transaction)==BELLE_SIP_TRANSACTION_TERMINATED)){ obj->needs_ack=FALSE; /*no longuer need ACK*/ if (obj->terminate_on_bye) delete_dialog=TRUE; }else if (!as_uas && code == 0){ /* A client BYE transaction is being started */ if (previous_transaction && belle_sip_transaction_get_state(previous_transaction) != BELLE_SIP_TRANSACTION_TERMINATED){ belle_sip_warning("Forcibly terminating previous transaction as BYE is being sent."); /* Detach the dialog from the transaction, so that the dialog does not get updated for nothing * by the killed transaction. */ belle_sip_transaction_set_dialog(previous_transaction, NULL); belle_sip_transaction_terminate(previous_transaction); } } }else if (is_subscribe){ if (belle_sip_dialog_schedule_expiration(obj, (belle_sip_message_t*)req) == BELLE_SIP_STOP && (code>=200 || (code==0 && belle_sip_transaction_get_state(transaction)==BELLE_SIP_TRANSACTION_TERMINATED))){ delete_dialog = TRUE; }else if (!as_uas){ if (code >= 300 || (code==0 && belle_sip_transaction_get_state(transaction)==BELLE_SIP_TRANSACTION_TERMINATED)){ /*case of a SUBSCRIBE refresh that is rejected or unanswered*/ if (code != 491){ /*request pending is not fatal for the dialog*/ delete_dialog = TRUE; } } } }else if (is_notify){ delete_dialog = belle_sip_dialog_should_terminate_by_notify(obj, transaction, as_uas); } break; case BELLE_SIP_DIALOG_TERMINATED: /*ignore*/ break; } end: if (!do_not_update_last_transaction) { if (obj->last_transaction && (obj->last_transaction == transaction)) { if (previous_transaction) belle_sip_object_unref(previous_transaction); } else { if (transaction) belle_sip_object_unref(transaction); } } if (delete_dialog) belle_sip_dialog_delete(obj); else { belle_sip_dialog_process_queue(obj); } return ret; } belle_sip_dialog_t *belle_sip_dialog_new(belle_sip_transaction_t *t){ belle_sip_dialog_t *obj; belle_sip_header_from_t *from; const char *from_tag; belle_sip_header_to_t *to; const char *to_tag=NULL; belle_sip_header_call_id_t *call_id=belle_sip_message_get_header_by_type(t->request,belle_sip_header_call_id_t); belle_sip_dialog_type_t type; from=belle_sip_message_get_header_by_type(t->request,belle_sip_header_from_t); if (from==NULL){ belle_sip_error("belle_sip_dialog_new(): no from!"); return NULL; } from_tag=belle_sip_header_from_get_tag(from); if (from_tag==NULL){ belle_sip_error("belle_sip_dialog_new(): no from tag!"); return NULL; } to = belle_sip_message_get_header_by_type(t->request,belle_sip_header_to_t); if (to == NULL){ belle_sip_error("belle_sip_dialog_new(): no to in request!"); return NULL; } to_tag = belle_sip_header_to_get_tag(to); if (to_tag){ belle_sip_error("belle_sip_dialog_new(): there is a to tag in the request. This is not allowed" " to create a dialog on such a transaction."); return NULL; } if (!call_id){ belle_sip_error("No call-id in response."); return NULL; } if (t->last_response) { to=belle_sip_message_get_header_by_type(t->last_response,belle_sip_header_to_t); if (to==NULL){ belle_sip_error("belle_sip_dialog_new(): no to!"); return NULL; } to_tag = belle_sip_header_to_get_tag(to); } if (strcmp(belle_sip_request_get_method(t->request),"INVITE") == 0){ type = BELLE_SIP_DIALOG_INVITE; }else if (strcmp(belle_sip_request_get_method(t->request),"SUBSCRIBE") == 0){ type = BELLE_SIP_DIALOG_SUBSCRIBE_NOTIFY; }else{ belle_sip_error("belle_sip_dialog_new(): unsupported request [%s] for creating a dialog.", belle_sip_request_get_method(t->request)); return NULL; } if (type == BELLE_SIP_DIALOG_SUBSCRIBE_NOTIFY) { belle_sip_header_expires_t *expires = belle_sip_message_get_header_by_type(t->request,belle_sip_header_expires_t); if (expires && belle_sip_header_expires_get_expires(expires) < 1) { belle_sip_error("belle_sip_dialog_new(): cannot create SUBSCRIBE/NOTIFY dialog with expiration <1 for transaction [%p]",t); return NULL; } } obj=belle_sip_object_new(belle_sip_dialog_t); obj->terminate_on_bye=1; obj->provider=t->provider; obj->pending_trans_checking_enabled=1; obj->call_id=(belle_sip_header_call_id_t*)belle_sip_object_ref(call_id); obj->type=type; obj->termination_cause=BELLE_SIP_DIALOG_TERMINATION_CAUSE_NORMAL; belle_sip_object_ref(t); obj->last_transaction=t; if (BELLE_SIP_OBJECT_IS_INSTANCE_OF(t,belle_sip_server_transaction_t)){ obj->remote_tag=belle_sip_strdup(from_tag); obj->local_tag=belle_sip_strdup(BELLE_SIP_SERVER_TRANSACTION(t)->to_tag); obj->remote_party=(belle_sip_header_address_t*)belle_sip_object_ref(from); obj->is_server=TRUE; belle_sip_dialog_init_as_uas(obj,belle_sip_transaction_get_request(t)); }else{ const belle_sip_list_t *predefined_routes=NULL; obj->local_tag=belle_sip_strdup(from_tag); obj->remote_tag=to_tag?belle_sip_strdup(to_tag):NULL; /*might be null at dialog creation*/ obj->local_party=(belle_sip_header_address_t*)belle_sip_object_ref(from); obj->is_server=FALSE; for(predefined_routes=belle_sip_message_get_headers((belle_sip_message_t*)t->request,BELLE_SIP_ROUTE); predefined_routes!=NULL;predefined_routes=predefined_routes->next){ obj->route_set=belle_sip_list_append(obj->route_set,belle_sip_object_ref(predefined_routes->data)); } belle_sip_dialog_init_as_uac(obj,belle_sip_transaction_get_request(t)); } belle_sip_message("New %s dialog [%p] , local tag [%s], remote tag [%s]" ,obj->is_server?"server":"client" ,obj ,obj->local_tag?obj->local_tag:"" ,obj->remote_tag?obj->remote_tag:""); set_state(obj,BELLE_SIP_DIALOG_NULL); return obj; } belle_sip_request_t *belle_sip_dialog_create_ack(belle_sip_dialog_t *obj, unsigned int cseq){ belle_sip_request_t *invite=obj->last_out_invite; belle_sip_request_t *ack; belle_sip_header_cseq_t* cseqh; if (!invite){ belle_sip_error("No INVITE to ACK."); return NULL; } cseqh=belle_sip_message_get_header_by_type(invite,belle_sip_header_cseq_t); if (belle_sip_header_cseq_get_seq_number(cseqh)!=cseq){ belle_sip_error("No INVITE with cseq %i to create ack for.",cseq); return NULL; } ack=create_request(obj,"ACK",TRUE); belle_sip_message_set_header(BELLE_SIP_MESSAGE(ack), BELLE_SIP_HEADER(belle_sip_header_cseq_create(cseq, "ACK"))); /* 22 Usage of HTTP Authentication 22.1 Framework While a server can legitimately challenge most SIP requests, there are two requests defined by this document that require special handling for authentication: ACK and CANCEL. Under an authentication scheme that uses responses to carry values used to compute nonces (such as Digest), some problems come up for any requests that take no response, including ACK. For this reason, any credentials in the INVITE that were accepted by a server MUST be accepted by that server for the ACK. UACs creating an ACK message will duplicate all of the Authorization and Proxy-Authorization header field values that appeared in the INVITE to which the ACK corresponds. Servers MUST NOT attempt to challenge an ACK. */ if (ack){ const belle_sip_list_t *aut=belle_sip_message_get_headers((belle_sip_message_t*)obj->last_out_invite,"Authorization"); const belle_sip_list_t *prx_aut=belle_sip_message_get_headers((belle_sip_message_t*)obj->last_out_invite,"Proxy-Authorization"); if (aut) belle_sip_message_add_headers((belle_sip_message_t*)ack,aut); if (prx_aut) belle_sip_message_add_headers((belle_sip_message_t*)ack,prx_aut); /*the ack is sent statelessly, the transaction layer doesn't need the dialog information*/ belle_sip_request_set_dialog(ack,NULL); } return ack; } static belle_sip_request_t *create_request(belle_sip_dialog_t *obj, const char *method, int full){ belle_sip_request_t *req; char* from_tag=NULL, *to_tag=NULL; if (!obj->remote_target){ belle_sip_error("dialog [%p]: no remote_target set, unable to create request.", obj); return NULL; } if (!belle_sip_parameters_has_parameter(BELLE_SIP_PARAMETERS(obj->local_party), "tag")) { /*special case for dialog created by server transaction*/ from_tag = obj->local_tag; } if (!belle_sip_parameters_has_parameter(BELLE_SIP_PARAMETERS(obj->remote_party), "tag")) { /*special case for dialog created by server transaction*/ to_tag = obj->remote_tag; } req=belle_sip_request_create(belle_sip_header_address_get_uri(obj->remote_target), method, obj->call_id, belle_sip_header_cseq_create(obj->local_cseq,method), belle_sip_header_from_create(obj->local_party,from_tag), belle_sip_header_to_create(obj->remote_party,to_tag), belle_sip_header_via_new(), 0); if (full && obj->route_set) { belle_sip_message_add_headers((belle_sip_message_t*)req,obj->route_set); } if (obj->privacy) { /*repeat the last privacy set in new request. I could not find any requirement for this, but this might be safer * as proxies don't store information about dialogs*/ belle_sip_message_add_header((belle_sip_message_t*)req,BELLE_SIP_HEADER(obj->privacy)); } belle_sip_request_set_dialog(req,obj); return req; } static int dialog_can_create_request(belle_sip_dialog_t *obj, const char *method){ if (obj->state != BELLE_SIP_DIALOG_CONFIRMED && obj->state != BELLE_SIP_DIALOG_EARLY && (strcmp("NOTIFY", method) != 0 || !obj->is_server || !obj->last_transaction || strcmp("SUBSCRIBE", belle_sip_transaction_get_method(obj->last_transaction)) !=0)) { belle_sip_error("belle_sip_dialog_create_request(): cannot create [%s] request from dialog [%p] in state [%s]",method,obj,belle_sip_dialog_state_to_string(obj->state)); return FALSE; } return TRUE; } bool_t belle_sip_dialog_can_create_asynchronous_request(belle_sip_dialog_t *obj, const char *method){ if (!dialog_can_create_request(obj, method)) return FALSE; if (strcmp(method,"INVITE")==0 || strcmp(method,"SUBSCRIBE")==0){ /*we don't allow requests that can update the dialog's state to be sent asynchronously*/ belle_sip_error("%s([%p]): [%s] requests are forbidden using this method.",__func__,obj,method); return FALSE; } return TRUE; } belle_sip_request_t * belle_sip_dialog_create_queued_request(belle_sip_dialog_t *obj, const char *method){ belle_sip_request_t *req; if (!belle_sip_dialog_can_create_asynchronous_request(obj, method)) return NULL; req=create_request(obj,method,FALSE); if (req){ req->dialog_queued=TRUE; } return req; } bool_t belle_sip_dialog_can_create_synchronous_request(belle_sip_dialog_t *obj, const char *method){ if (!dialog_can_create_request(obj, method)) return FALSE; /*don't prevent to send a BYE in any case */ if (obj->pending_trans_checking_enabled && strcmp(method,"BYE")!=0 && obj->last_transaction && belle_sip_transaction_state_is_transient(belle_sip_transaction_get_state(obj->last_transaction))){ if (obj->state != BELLE_SIP_DIALOG_EARLY && strcmp(method,"UPDATE")!=0 && strcmp(method,"NOTIFY")!=0) { belle_sip_error("%s(): cannot create [%s] request from dialog [%p] while pending [%s] transaction in state [%s]",__func__,method,obj,belle_sip_transaction_get_method(obj->last_transaction), belle_sip_transaction_state_to_string(belle_sip_transaction_get_state(obj->last_transaction))); return FALSE; } /*else UPDATE transaction can be sent in // */ } return TRUE; } belle_sip_request_t *belle_sip_dialog_create_request(belle_sip_dialog_t *obj, const char *method){ belle_sip_request_t *req; if (!belle_sip_dialog_can_create_synchronous_request(obj, method)) return NULL; belle_sip_dialog_update_local_cseq(obj,method); req=create_request(obj,method,TRUE); return req; } static unsigned int is_system_header(belle_sip_header_t* header) { const char* name=belle_sip_header_get_name(header); return strcasecmp(BELLE_SIP_VIA,name) ==0 || strcasecmp(BELLE_SIP_FROM,name) ==0 || strcasecmp(BELLE_SIP_TO,name) ==0 || strcasecmp(BELLE_SIP_CSEQ,name) ==0 || strcasecmp(BELLE_SIP_CALL_ID,name) ==0 || strcasecmp(BELLE_SIP_PROXY_AUTHORIZATION,name) == 0 || strcasecmp(BELLE_SIP_AUTHORIZATION,name) == 0 || strcasecmp(BELLE_SIP_MAX_FORWARDS,name) == 0 || strcasecmp(BELLE_SIP_ALLOW,name) ==0 || strcasecmp(BELLE_SIP_ROUTE,name) ==0; } static void copy_non_system_headers(belle_sip_header_t* header,belle_sip_request_t* req ) { if (!is_system_header(header)) { belle_sip_message_add_header(BELLE_SIP_MESSAGE(req),header); } } static belle_sip_request_t *_belle_sip_dialog_create_request_from(belle_sip_dialog_t *obj, const belle_sip_request_t *initial_req, int queued){ belle_sip_request_t* req; const char *method=belle_sip_request_get_method(initial_req); belle_sip_list_t* headers; if (queued) req=belle_sip_dialog_create_queued_request(obj,method); else req=belle_sip_dialog_create_request(obj,method); if (req==NULL) return NULL; /*first copy non system headers*/ headers = belle_sip_message_get_all_headers(BELLE_SIP_MESSAGE(initial_req)); belle_sip_list_for_each2(headers,(void (*)(void *, void *))copy_non_system_headers,req); belle_sip_list_free(headers); /*replicate via user parameters, if any, useful for 'alias' parameter in SUBSCRIBE requests*/ { belle_sip_header_via_t *orig_via=belle_sip_message_get_header_by_type(BELLE_SIP_MESSAGE(initial_req),belle_sip_header_via_t); belle_sip_header_via_t *new_via=belle_sip_message_get_header_by_type(BELLE_SIP_MESSAGE(req),belle_sip_header_via_t); belle_sip_parameters_copy_parameters_from(BELLE_SIP_PARAMETERS(new_via),BELLE_SIP_PARAMETERS(orig_via)); } /*copy body handler to save content enconding processing (I.E deflat)*/ if (belle_sip_message_get_body_handler(BELLE_SIP_MESSAGE(initial_req))) { belle_sip_message_set_body_handler(BELLE_SIP_MESSAGE(req),belle_sip_message_get_body_handler(BELLE_SIP_MESSAGE(initial_req))); } return req; } belle_sip_request_t *belle_sip_dialog_create_request_from(belle_sip_dialog_t *obj, const belle_sip_request_t *initial_req){ return _belle_sip_dialog_create_request_from(obj,initial_req,FALSE); } belle_sip_request_t *belle_sip_dialog_create_queued_request_from(belle_sip_dialog_t *obj, const belle_sip_request_t *initial_req){ return _belle_sip_dialog_create_request_from(obj,initial_req,TRUE); } void belle_sip_dialog_delete(belle_sip_dialog_t *obj){ size_t dropped_transactions; if (obj->expiration_timer){ belle_sip_main_loop_remove_source(obj->provider->stack->ml, obj->expiration_timer); belle_sip_object_unref(obj->expiration_timer); obj->expiration_timer = NULL; } belle_sip_message("Dialog [%p] deleted (is_expired=%i)",obj, obj->is_expired); belle_sip_dialog_stop_200Ok_retrans(obj); /*if any*/ set_state(obj,BELLE_SIP_DIALOG_TERMINATED); dropped_transactions=belle_sip_list_size(obj->queued_ct); if (dropped_transactions>0) belle_sip_warning("dialog [%p]: leaves %u queued transaction aborted.",obj,(unsigned int)dropped_transactions); belle_sip_list_for_each(obj->queued_ct,(void(*)(void*))belle_sip_transaction_terminate); obj->queued_ct=belle_sip_list_free_with_data(obj->queued_ct,belle_sip_object_unref); belle_sip_provider_remove_dialog(obj->provider,obj); } void *belle_sip_dialog_get_application_data(const belle_sip_dialog_t *dialog){ return dialog->appdata; } void belle_sip_dialog_set_application_data(belle_sip_dialog_t *dialog, void *data){ dialog->appdata=data; } const belle_sip_header_call_id_t *belle_sip_dialog_get_call_id(const belle_sip_dialog_t *dialog){ return dialog->call_id; } const belle_sip_header_address_t *belle_sip_dialog_get_local_party(const belle_sip_dialog_t *dialog){ return dialog->local_party; } const belle_sip_header_address_t *belle_sip_dialog_get_remote_party(const belle_sip_dialog_t *dialog){ return dialog->remote_party; } unsigned int belle_sip_dialog_get_local_seq_number(const belle_sip_dialog_t *dialog){ return dialog->local_cseq; } unsigned int belle_sip_dialog_get_remote_seq_number(const belle_sip_dialog_t *dialog){ return dialog->remote_cseq; } const char *belle_sip_dialog_get_local_tag(const belle_sip_dialog_t *dialog){ return dialog->local_tag; } const char *belle_sip_dialog_get_remote_tag(const belle_sip_dialog_t *dialog){ return dialog->remote_tag; } const belle_sip_header_address_t *belle_sip_dialog_get_remote_target(belle_sip_dialog_t *dialog){ return dialog->remote_target; } const belle_sip_list_t* belle_sip_dialog_get_route_set(belle_sip_dialog_t *dialog){ return dialog->route_set; } belle_sip_dialog_state_t belle_sip_dialog_get_state(const belle_sip_dialog_t *dialog){ return dialog->state; } belle_sip_dialog_state_t belle_sip_dialog_get_previous_state(const belle_sip_dialog_t *dialog) { return dialog->previous_state; } int belle_sip_dialog_is_server(const belle_sip_dialog_t *dialog){ return dialog->is_server; } int belle_sip_dialog_is_secure(const belle_sip_dialog_t *dialog){ return dialog->is_secure; } void belle_sip_dialog_send_ack(belle_sip_dialog_t *obj, belle_sip_request_t *request){ if (obj->needs_ack){ obj->needs_ack=FALSE; if (obj->last_out_ack) belle_sip_object_unref(obj->last_out_ack); obj->last_out_ack=(belle_sip_request_t*)belle_sip_object_ref(request); belle_sip_provider_send_request(obj->provider,request); belle_sip_dialog_process_queue(obj); }else{ belle_sip_error("Why do you want to send an ACK ?"); } } void belle_sip_dialog_terminate_on_bye(belle_sip_dialog_t *obj, int val){ obj->terminate_on_bye=val; } /*returns 1 if message belongs to the dialog, 0 otherwise */ int belle_sip_dialog_match(belle_sip_dialog_t *obj, belle_sip_message_t *msg, int as_uas){ belle_sip_header_call_id_t *call_id=belle_sip_message_get_header_by_type(msg,belle_sip_header_call_id_t); belle_sip_header_from_t *from=belle_sip_message_get_header_by_type(msg,belle_sip_header_from_t); belle_sip_header_to_t *to=belle_sip_message_get_header_by_type(msg,belle_sip_header_to_t); const char *from_tag; const char *to_tag; const char *call_id_value; if (call_id==NULL || from==NULL || to==NULL) return 0; call_id_value=belle_sip_header_call_id_get_call_id(call_id); from_tag=belle_sip_header_from_get_tag(from); to_tag=belle_sip_header_to_get_tag(to); return _belle_sip_dialog_match(obj,call_id_value,as_uas ? to_tag : from_tag, as_uas ? from_tag : to_tag); } int _belle_sip_dialog_match(belle_sip_dialog_t *obj, const char *call_id, const char *local_tag, const char *remote_tag){ const char *dcid; /*Dialog created by notify matching subscription are still in NULL state if (obj->state==BELLE_SIP_DIALOG_NULL) belle_sip_fatal("_belle_sip_dialog_match() must not be used for dialog in null state.");*/ dcid=belle_sip_header_call_id_get_call_id(obj->call_id); return strcmp(dcid,call_id)==0 && (!local_tag || strcmp(obj->local_tag,local_tag)==0) //local tag is not checked if not provided && obj->remote_tag /* handle 180 without to tag */ && remote_tag && strcmp(obj->remote_tag,remote_tag)==0; } void belle_sip_dialog_check_ack_sent(belle_sip_dialog_t*obj){ belle_sip_client_transaction_t* client_trans; if (obj->needs_ack){ belle_sip_request_t *req; belle_sip_error("Your listener did not ACK'd the 200Ok for your INVITE request. The dialog will be terminated."); req=belle_sip_dialog_create_request(obj,"BYE"); if (req){ belle_sip_header_reason_t *reason=belle_sip_header_reason_new(); belle_sip_header_reason_set_protocol(reason,"SIP"); belle_sip_header_reason_set_cause(reason,500); belle_sip_header_reason_set_text(reason,"Internal Error"); belle_sip_message_add_header(BELLE_SIP_MESSAGE(req), BELLE_SIP_HEADER(reason)); client_trans=belle_sip_provider_create_client_transaction(obj->provider,req); BELLE_SIP_TRANSACTION(client_trans)->is_internal=TRUE; /*internal transaction, don't bother user with 200ok*/ belle_sip_client_transaction_send_request(client_trans); /*call dialog terminated*/ }else{ /*If there is no way to signal the failure to the other party, then force immediate dialog deletion*/ belle_sip_dialog_delete(obj); } } } /* * return 0 if dialog handle the 200ok * */ static int belle_sip_dialog_handle_200Ok(belle_sip_dialog_t *obj, belle_sip_response_t *msg){ if (obj->last_out_ack){ belle_sip_header_cseq_t *cseq=belle_sip_message_get_header_by_type(msg,belle_sip_header_cseq_t); if (cseq){ belle_sip_header_cseq_t *ack_cseq=belle_sip_message_get_header_by_type(obj->last_out_ack,belle_sip_header_cseq_t); if (belle_sip_header_cseq_get_seq_number(cseq)==belle_sip_header_cseq_get_seq_number(ack_cseq)){ /*pass for retransmission*/ belle_sip_message("Dialog retransmitting last ack automatically"); belle_sip_provider_send_request(obj->provider,obj->last_out_ack); return 0; }else belle_sip_message("No already created ACK matching 200Ok for dialog [%p]",obj); } } return -1; } int belle_sip_dialog_handle_ack(belle_sip_dialog_t *obj, belle_sip_request_t *ack){ if (obj->simulate_lost_ack) { belle_sip_message("Simulating lost ACK for dialog %p", obj); return -1; } belle_sip_header_cseq_t *cseq=belle_sip_message_get_header_by_type(ack,belle_sip_header_cseq_t); if (obj->needs_ack && belle_sip_header_cseq_get_seq_number(cseq)==obj->remote_invite_cseq){ belle_sip_message("Incoming INVITE has ACK, dialog is happy"); obj->needs_ack=FALSE; belle_sip_dialog_stop_200Ok_retrans(obj); belle_sip_dialog_process_queue(obj); return 0; } belle_sip_message("Dialog ignoring incoming ACK (surely a retransmission) to dialog %p with CSeq %0d", obj, belle_sip_header_cseq_get_seq_number(cseq)); return -1; } belle_sip_transaction_t* belle_sip_dialog_get_last_transaction(const belle_sip_dialog_t *dialog) { return dialog->last_transaction; } int belle_sip_dialog_request_pending(const belle_sip_dialog_t *dialog){ return dialog->needs_ack || (dialog->last_transaction ? belle_sip_transaction_state_is_transient(belle_sip_transaction_get_state(dialog->last_transaction)) : FALSE); } int belle_sip_dialog_get_request_retry_timeout(const belle_sip_dialog_t *dialog){ /* According to RFC3261 - 14.1 */ if (!dialog->is_server){ return 2100 + 10 * (((belle_sip_random() % (4000 - 2100))) / 10 ); }else{ return 10 * ((belle_sip_random() % 2000) / 10 ); } } /* for notify exception As per RFC 3265; 3.3.4. Dialog creation and termination If an initial SUBSCRIBE request is not sent on a pre-existing dialog, the subscriber will wait for a response to the SUBSCRIBE request or a matching NOTIFY. ... ... If an initial SUBSCRIBE is sent on a pre-existing dialog, a matching 200-class response or successful NOTIFY request merely creates a new subscription associated with that dialog. */ int belle_sip_dialog_can_accept_request(const belle_sip_dialog_t *dialog, belle_sip_request_t *req) { const char *method = belle_sip_request_get_method(req); if (belle_sip_dialog_request_pending(dialog)){ const char* last_transaction_request; if (strcasecmp(method,"BYE")==0) return TRUE; /*don't reject a BYE*/ last_transaction_request = belle_sip_request_get_method(belle_sip_transaction_get_request(dialog->last_transaction)); if (BELLE_SIP_OBJECT_IS_INSTANCE_OF(dialog->last_transaction,belle_sip_client_transaction_t)){ if (strcmp(last_transaction_request,"SUBSCRIBE")==0 && strcmp(method,"NOTIFY")==0){ /*stupid as it may sound, you have to accept a NOTIFY for a SUBSCRIBE for which no answer is received yet.*/ return TRUE; }else if (strcmp(last_transaction_request, "NOTIFY") == 0 && strcmp(method, "SUBSCRIBE") == 0){ belle_sip_header_expires_t *expire = belle_sip_message_get_header_by_type((belle_sip_message_t*)req, belle_sip_header_expires_t); if (expire && belle_sip_header_expires_get_expires(expire) == 0){ /* Accept to receive an unSUBSCRIBE even if we have an outgoing pending NOTIFY */ return TRUE; } } } if (strcmp(last_transaction_request,"INVITE")==0 && (strcmp(method,"PRACK")==0 || strcmp(method,"UPDATE")==0)){ /*PRACK /UPDATE needs to be sent or received during reINVITEs.*/ return TRUE; } return FALSE; } else { return TRUE; } } void belle_sip_dialog_queue_client_transaction(belle_sip_dialog_t *dialog, belle_sip_client_transaction_t *tr){ dialog->queued_ct=belle_sip_list_append(dialog->queued_ct, belle_sip_object_ref(tr)); } static void _belle_sip_dialog_process_queue(belle_sip_dialog_t* dialog){ belle_sip_client_transaction_t *tr=NULL; if (dialog->state==BELLE_SIP_DIALOG_TERMINATED || belle_sip_dialog_request_pending(dialog)) goto end; dialog->queued_ct=belle_sip_list_pop_front(dialog->queued_ct,(void**)&tr); if (tr){ belle_sip_message("Dialog [%p]: sending queued request [%p].",dialog,tr); tr->base.sent_by_dialog_queue=TRUE; belle_sip_client_transaction_send_request(tr); belle_sip_object_unref(tr); } end: belle_sip_object_unref(dialog); } void belle_sip_dialog_process_queue(belle_sip_dialog_t* dialog){ /*process queue does not process synchronously. * This is to let the application handle responses and eventually submit new requests without being blocked. * Typically when a reINVITE is challenged, we want a chance to re-submit an authenticated request before processing * queued requests*/ if (dialog->queued_ct){ belle_sip_main_loop_do_later(dialog->provider->stack->ml,(belle_sip_callback_t)_belle_sip_dialog_process_queue,belle_sip_object_ref(dialog)); } } void belle_sip_dialog_update_request(belle_sip_dialog_t *dialog, belle_sip_request_t *req){ belle_sip_header_cseq_t *cseq=belle_sip_message_get_header_by_type(req,belle_sip_header_cseq_t); belle_sip_dialog_update_local_cseq(dialog,belle_sip_request_get_method(req)); if (dialog->route_set) belle_sip_message_add_headers((belle_sip_message_t*)req,dialog->route_set); belle_sip_request_set_uri(req,belle_sip_header_address_get_uri(dialog->remote_target)); belle_sip_header_cseq_set_seq_number(cseq,dialog->local_cseq); } int belle_sip_dialog_pending_trans_checking_enabled( const belle_sip_dialog_t *dialog) { return dialog->pending_trans_checking_enabled; } int belle_sip_dialog_enable_pending_trans_checking(belle_sip_dialog_t *dialog, int value) { dialog->pending_trans_checking_enabled = value; return 0; } belle_sip_dialog_termination_cause_t belle_sip_dialog_get_termination_cause(const belle_sip_dialog_t *dialog) { return dialog->termination_cause; } void belle_sip_dialog_set_simulate_lost_ack_enabled(belle_sip_dialog_t *dialog, int enable) { dialog->simulate_lost_ack = (unsigned char) enable; } belle-sip-5.2.0+dfsg/src/dns/000077500000000000000000000000001434613136500156725ustar00rootroot00000000000000belle-sip-5.2.0+dfsg/src/dns/dns.c000066400000000000000000007072311434613136500166340ustar00rootroot00000000000000/* ========================================================================== * dns.c - Recursive, Reentrant DNS Resolver. * -------------------------------------------------------------------------- * Copyright (c) 2008, 2009, 2010, 2012-2016 William Ahern * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the * "Software"), to deal in the Software without restriction, including * without limitation the rights to use, copy, modify, merge, publish, * distribute, sublicense, and/or sell copies of the Software, and to permit * persons to whom the Software is furnished to do so, subject to the * following conditions: * * The above copyright notice and this permission notice shall be included * in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE * USE OR OTHER DEALINGS IN THE SOFTWARE. * ========================================================================== */ #if !defined(__FreeBSD__) && !defined(__sun) #ifndef _XOPEN_SOURCE #define _XOPEN_SOURCE 600 #endif #undef _DEFAULT_SOURCE #define _DEFAULT_SOURCE #undef _BSD_SOURCE #define _BSD_SOURCE #undef _DARWIN_C_SOURCE #define _DARWIN_C_SOURCE #undef _NETBSD_SOURCE #define _NETBSD_SOURCE #endif #ifdef _MSC_VER #define DNS_INLINE __inline #else #define DNS_INLINE inline #endif #include /* INT_MAX */ #include /* offsetof() */ /*#ifdef _WIN32 #define uint16_t unsigned short #define uint32_t unsigned int #else*/ #include /* uint32_t */ //#endif #include /* malloc(3) realloc(3) free(3) rand(3) random(3) arc4random(3) */ #include /* FILE fopen(3) fclose(3) getc(3) rewind(3) */ #include /* memcpy(3) strlen(3) memmove(3) memchr(3) memcmp(3) strchr(3) strsep(3) strcspn(3) */ #ifndef _WIN32 #include /* strcasecmp(3) strncasecmp(3) */ #endif #include /* isspace(3) isdigit(3) */ #include /* time_t time(2) difftime(3) */ #include /* SIGPIPE sigemptyset(3) sigaddset(3) sigpending(2) sigprocmask(2) pthread_sigmask(3) sigtimedwait(2) */ #include /* errno EINVAL ENOENT */ #undef NDEBUG #include /* assert(3) */ #if _WIN32 #ifndef FD_SETSIZE #define FD_SETSIZE 2048 #endif #include #include #ifndef USE_FIXED_NAMESERVERS #include #pragma comment(lib, "IPHLPAPI.lib") #endif #if defined(__MINGW32__) || !defined(WINAPI_FAMILY_PARTITION) || !defined(WINAPI_PARTITION_DESKTOP) #define BELLE_SIP_WINDOWS_DESKTOP 1 #elif defined(WINAPI_FAMILY_PARTITION) #if defined(WINAPI_PARTITION_DESKTOP) && WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #define BELLE_SIP_WINDOWS_DESKTOP 1 #elif defined(WINAPI_PARTITION_PHONE_APP) && WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_PHONE_APP) #define BELLE_SIP_WINDOWS_PHONE 1 #elif defined(WINAPI_PARTITION_APP) && WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) #define BELLE_SIP_WINDOWS_UNIVERSAL 1 #endif #endif #else #include /* FD_SETSIZE socklen_t */ #include /* FD_ZERO FD_SET fd_set select(2) */ #include /* AF_INET AF_INET6 AF_UNIX struct sockaddr struct sockaddr_in struct sockaddr_in6 socket(2) */ #if defined(AF_UNIX) #include /* struct sockaddr_un */ #endif #include /* F_SETFD F_GETFL F_SETFL O_NONBLOCK fcntl(2) */ #include /* _POSIX_THREADS gethostname(3) close(2) */ #include /* POLLIN POLLOUT */ #include /* struct sockaddr_in struct sockaddr_in6 */ #include /* inet_pton(3) inet_ntop(3) htons(3) ntohs(3) */ #include /* struct addrinfo */ #endif #include "dns.h" #if defined(HAVE_RESINIT) || defined(USE_STRUCT_RES_STATE_NAMESERVERS) #include #endif #if defined(HAVE_RESINIT) #include #include #endif #ifdef __ANDROID__ #include #endif #include #include #include /* * C O M P I L E R V E R S I O N & F E A T U R E D E T E C T I O N * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ #define DNS_GNUC_2VER(M, m, p) (((M) * 10000) + ((m) * 100) + (p)) #define DNS_GNUC_PREREQ(M, m, p) (__GNUC__ > 0 && DNS_GNUC_2VER(__GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__) >= DNS_GNUC_2VER((M), (m), (p))) #define DNS_MSC_2VER(M, m, p) ((((M) + 6) * 10000000) + ((m) * 1000000) + (p)) #define DNS_MSC_PREREQ(M, m, p) (_MSC_VER_FULL > 0 && _MSC_VER_FULL >= DNS_MSC_2VER((M), (m), (p))) #define DNS_SUNPRO_PREREQ(M, m, p) (__SUNPRO_C > 0 && __SUNPRO_C >= 0x ## M ## m ## p) #if defined __has_builtin #define dns_has_builtin(x) __has_builtin(x) #else #define dns_has_builtin(x) 0 #endif #if defined __has_extension #define dns_has_extension(x) __has_extension(x) #else #define dns_has_extension(x) 0 #endif #ifndef HAVE___ASSUME #define HAVE___ASSUME DNS_MSC_PREREQ(8,0,0) #endif #ifndef HAVE___BUILTIN_TYPES_COMPATIBLE_P #define HAVE___BUILTIN_TYPES_COMPATIBLE_P (DNS_GNUC_PREREQ(3,1,1) || __clang__) #endif #ifndef HAVE___BUILTIN_UNREACHABLE #define HAVE___BUILTIN_UNREACHABLE (DNS_GNUC_PREREQ(4,5,0) || dns_has_builtin(__builtin_unreachable)) #endif #ifndef HAVE_PRAGMA_MESSAGE #define HAVE_PRAGMA_MESSAGE (DNS_GNUC_PREREQ(4,4,0) || __clang__ || _MSC_VER) #endif /* * C O M P I L E R A N N O T A T I O N S * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ #if __GNUC__ #define DNS_NOTUSED __attribute__((unused)) #define DNS_NORETURN __attribute__((noreturn)) #else #define DNS_NOTUSED #define DNS_NORETURN #endif #if __clang__ #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wunused-parameter" #pragma clang diagnostic ignored "-Wmissing-field-initializers" #elif DNS_GNUC_PREREQ(4,6,0) #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" #pragma GCC diagnostic ignored "-Wmissing-field-initializers" #endif /* * S T A N D A R D M A C R O S * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ #if HAVE___BUILTIN_TYPES_COMPATIBLE_P #define dns_same_type(a, b, def) __builtin_types_compatible_p(typeof (a), typeof (b)) #else #define dns_same_type(a, b, def) (def) #endif #define dns_isarray(a) (!dns_same_type((a), (&(a)[0]), 0)) #define dns_inline_assert(cond) ((void)(sizeof (struct { int:-!(cond); }))) #if HAVE___ASSUME #define dns_assume(cond) __assume(cond) #elif HAVE___BUILTIN_UNREACHABLE #define dns_assume(cond) do { if (!(cond)) __builtin_unreachable(); } while (0) #else #define dns_assume(cond) do { (void)(cond); } while (0) #endif #ifndef lengthof #define lengthof(a) (dns_inline_assert(dns_isarray(a)), (sizeof (a) / sizeof (a)[0])) #endif #ifndef endof #define endof(a) (dns_inline_assert(dns_isarray(a)), &(a)[lengthof((a))]) #endif /* * M I S C E L L A N E O U S C O M P A T * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ #if _WIN32 || _WIN64 #define PRIuZ "Iu" #else #define PRIuZ "zu" #endif #ifndef DNS_THREAD_SAFE #if (defined _REENTRANT || defined _THREAD_SAFE) && _POSIX_THREADS > 0 #define DNS_THREAD_SAFE 1 #else #define DNS_THREAD_SAFE 0 #endif #endif #ifndef HAVE__STATIC_ASSERT #define HAVE__STATIC_ASSERT \ (dns_has_extension(c_static_assert) || DNS_GNUC_PREREQ(4,6,0) || \ __C11FEATURES__ || __STDC_VERSION__ >= 201112L) #endif #ifndef HAVE_STATIC_ASSERT #if DNS_GNUC_PREREQ(0,0,0) && !DNS_GNUC_PREREQ(4,6,0) #define HAVE_STATIC_ASSERT 0 /* glibc doesn't check GCC version */ #else #if (defined static_assert) #define HAVE_STATIC_ASSERT 1 #endif #endif #endif #if HAVE_STATIC_ASSERT #define dns_static_assert(cond, msg) static_assert(cond, msg) #elif HAVE__STATIC_ASSERT #define dns_static_assert(cond, msg) _Static_assert(cond, msg) #else #define dns_static_assert(cond, msg) extern char DNS_PP_XPASTE(dns_assert_, __LINE__)[sizeof (int[1 - 2*!(cond)])] #endif /* * D E B U G M A C R O S * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ int *dns_debug_p(void) { static int debug; return &debug; } /* dns_debug_p() */ #if DNS_DEBUG #define DNS_SAY_(fmt, ...) \ do { if (DNS_DEBUG > 0) fprintf(stderr, fmt "%.1s", __func__, __LINE__, __VA_ARGS__); } while (0) #define DNS_SAY(...) DNS_SAY_("@@ (%s:%d) " __VA_ARGS__, "\n") #define DNS_HAI DNS_SAY("HAI") #define DNS_SHOW_(P, fmt, ...) do { \ if (DNS_DEBUG >= 1) { \ fprintf(stderr, "@@ BEGIN * * * * * * * * * * * *\n"); \ fprintf(stderr, "@@ " fmt "%.0s\n", __VA_ARGS__); \ dns_p_dump((P), stderr); \ fprintf(stderr, "@@ END * * * * * * * * * * * * *\n\n"); \ } \ } while (0) #define DNS_SHOW(...) DNS_SHOW_(__VA_ARGS__, "") #else /* !DNS_DEBUG */ #undef DNS_DEBUG #define DNS_DEBUG 0 #define DNS_SAY(...) #define DNS_HAI #define DNS_SHOW(...) #endif /* DNS_DEBUG */ #define DNS_CARP(...) DNS_SAY(__VA_ARGS__) /* * V E R S I O N R O U T I N E S * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ const char *dns_vendor(void) { return DNS_VENDOR; } /* dns_vendor() */ int dns_v_rel(void) { return DNS_V_REL; } /* dns_v_rel() */ int dns_v_abi(void) { return DNS_V_ABI; } /* dns_v_abi() */ int dns_v_api(void) { return DNS_V_API; } /* dns_v_api() */ /* * E R R O R R O U T I N E S * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ #if _WIN32 #define DNS_EINTR WSAEINTR #define DNS_EINPROGRESS WSAEINPROGRESS #define DNS_EISCONN WSAEISCONN #define DNS_EWOULDBLOCK WSAEWOULDBLOCK #define DNS_EALREADY WSAEALREADY #define DNS_EAGAIN EAGAIN #define DNS_ETIMEDOUT WSAETIMEDOUT #define DNS_ECONNREFUSED WSAECONNREFUSED #define DNS_ECONNRESET WSAECONNRESET #define DNS_ENETUNREACH WSAENETUNREACH #define DNS_EHOSTUNREACH WSAEHOSTUNREACH #define dns_syerr() ((int)GetLastError()) #define dns_soerr() ((int)WSAGetLastError()) #else #define DNS_EINTR EINTR #define DNS_EINPROGRESS EINPROGRESS #define DNS_EISCONN EISCONN #define DNS_EWOULDBLOCK EWOULDBLOCK #define DNS_EALREADY EALREADY #define DNS_EAGAIN EAGAIN #define DNS_ETIMEDOUT ETIMEDOUT #define DNS_ECONNREFUSED ECONNREFUSED #define DNS_ECONNRESET ECONNRESET #define DNS_ENETUNREACH ENETUNREACH #define DNS_EHOSTUNREACH EHOSTUNREACH #define dns_syerr() errno #define dns_soerr() errno #endif const char *dns_strerror(int error) { switch (error) { case DNS_ENOBUFS: return "DNS packet buffer too small"; case DNS_EILLEGAL: return "Illegal DNS RR name or data"; case DNS_EORDER: return "Attempt to push RR out of section order"; case DNS_ESECTION: return "Invalid section specified"; case DNS_EUNKNOWN: return "Unknown DNS error"; case DNS_EADDRESS: return "Invalid textual address form"; case DNS_ENOQUERY: return "Bad execution state (missing query packet)"; case DNS_ENOANSWER: return "Bad execution state (missing answer packet)"; case DNS_EFETCHED: return "Answer already fetched"; case DNS_ESERVICE: return "The service passed was not recognized for the specified socket type"; case DNS_ENONAME: return "The name does not resolve for the supplied parameters"; case DNS_EFAIL: return "A non-recoverable error occurred when attempting to resolve the name"; default: return strerror(error); } /* switch() */ } /* dns_strerror() */ /* * A T O M I C R O U T I N E S * * Use GCC's __atomic built-ins if possible. Unlike the __sync built-ins, we * can use the preprocessor to detect API and, more importantly, ISA * support. We want to avoid linking headaches where the API depends on an * external library if the ISA (e.g. i386) doesn't support lockless * operation. * * TODO: Support C11's atomic API. Although that may require some finesse * with how we define some public types, such as dns_atomic_t and struct * dns_resolv_conf. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ #ifndef HAVE___ATOMIC_FETCH_ADD #if (defined __ATOMIC_RELAXED) #define HAVE___ATOMIC_FETCH_ADD 1 #endif #endif #ifndef HAVE___ATOMIC_FETCH_SUB #if (defined __ATOMIC_RELAXED) #define HAVE___ATOMIC_FETCH_SUB 1 #endif #endif #ifndef DNS_ATOMIC_FETCH_ADD #if HAVE___ATOMIC_FETCH_ADD && __GCC_ATOMIC_LONG_LOCK_FREE == 2 #define DNS_ATOMIC_FETCH_ADD(i) __atomic_fetch_add((i), 1, __ATOMIC_RELAXED) #else #pragma message("no atomic_fetch_add available") #define DNS_ATOMIC_FETCH_ADD(i) ((*(i))++) #endif #endif #ifndef DNS_ATOMIC_FETCH_SUB #if HAVE___ATOMIC_FETCH_SUB && __GCC_ATOMIC_LONG_LOCK_FREE == 2 #define DNS_ATOMIC_FETCH_SUB(i) __atomic_fetch_sub((i), 1, __ATOMIC_RELAXED) #else #pragma message("no atomic_fetch_sub available") #define DNS_ATOMIC_FETCH_SUB(i) ((*(i))--) #endif #endif static DNS_INLINE unsigned dns_atomic_fetch_add(dns_atomic_t *i) { return DNS_ATOMIC_FETCH_ADD(i); } /* dns_atomic_fetch_add() */ static DNS_INLINE unsigned dns_atomic_fetch_sub(dns_atomic_t *i) { return DNS_ATOMIC_FETCH_SUB(i); } /* dns_atomic_fetch_sub() */ /* * C R Y P T O R O U T I N E S * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ /* * P R N G */ #ifndef DNS_RANDOM #if defined(HAVE_ARC4RANDOM) \ || defined(__OpenBSD__) \ || defined(__FreeBSD__) \ || defined(__NetBSD__) \ || defined(__APPLE__) #define DNS_RANDOM arc4random #elif __linux__ #define DNS_RANDOM random #else #define DNS_RANDOM rand #endif #endif #define DNS_RANDOM_arc4random 1 #define DNS_RANDOM_random 2 #define DNS_RANDOM_rand 3 #define DNS_RANDOM_RAND_bytes 4 #define DNS_RANDOM_OPENSSL (DNS_RANDOM_RAND_bytes == DNS_PP_XPASTE(DNS_RANDOM_, DNS_RANDOM)) #if DNS_RANDOM_OPENSSL #include #endif static unsigned dns_random_(void) { #if DNS_RANDOM_OPENSSL unsigned r; _Bool ok; ok = (1 == RAND_bytes((unsigned char *)&r, sizeof r)); assert(ok && "1 == RAND_bytes()"); return r; #else return DNS_RANDOM(); #endif } /* dns_random_() */ dns_random_f **dns_random_p(void) { static dns_random_f *random_f = &dns_random_; return &random_f; } /* dns_random_p() */ /* * P E R M U T A T I O N G E N E R A T O R */ #define DNS_K_TEA_KEY_SIZE 16 #define DNS_K_TEA_BLOCK_SIZE 8 #define DNS_K_TEA_CYCLES 32 #define DNS_K_TEA_MAGIC 0x9E3779B9U struct dns_k_tea { uint32_t key[DNS_K_TEA_KEY_SIZE / sizeof (uint32_t)]; unsigned cycles; }; /* struct dns_k_tea */ static void dns_k_tea_init(struct dns_k_tea *tea, uint32_t key[], unsigned cycles) { memcpy(tea->key, key, sizeof tea->key); tea->cycles = (cycles)? cycles : DNS_K_TEA_CYCLES; } /* dns_k_tea_init() */ static void dns_k_tea_encrypt(struct dns_k_tea *tea, uint32_t v[], uint32_t *w) { uint32_t y, z, sum, n; y = v[0]; z = v[1]; sum = 0; for (n = 0; n < tea->cycles; n++) { sum += DNS_K_TEA_MAGIC; y += ((z << 4) + tea->key[0]) ^ (z + sum) ^ ((z >> 5) + tea->key[1]); z += ((y << 4) + tea->key[2]) ^ (y + sum) ^ ((y >> 5) + tea->key[3]); } w[0] = y; w[1] = z; return /* void */; } /* dns_k_tea_encrypt() */ /* * Permutation generator, based on a Luby-Rackoff Feistel construction. * * Specifically, this is a generic balanced Feistel block cipher using TEA * (another block cipher) as the pseudo-random function, F. At best it's as * strong as F (TEA), notwithstanding the seeding. F could be AES, SHA-1, or * perhaps Bernstein's Salsa20 core; I am naively trying to keep things * simple. * * The generator can create a permutation of any set of numbers, as long as * the size of the set is an even power of 2. This limitation arises either * out of an inherent property of balanced Feistel constructions, or by my * own ignorance. I'll tackle an unbalanced construction after I wrap my * head around Schneier and Kelsey's paper. * * CAVEAT EMPTOR. IANAC. */ #define DNS_K_PERMUTOR_ROUNDS 8 struct dns_k_permutor { unsigned stepi, length, limit; unsigned shift, mask, rounds; struct dns_k_tea tea; }; /* struct dns_k_permutor */ static DNS_INLINE unsigned dns_k_permutor_powof(unsigned n) { unsigned m, i = 0; for (m = 1; m < n; m <<= 1, i++) ;; return i; } /* dns_k_permutor_powof() */ static void dns_k_permutor_init(struct dns_k_permutor *p, unsigned low, unsigned high) { uint32_t key[DNS_K_TEA_KEY_SIZE / sizeof (uint32_t)]; unsigned width, i; p->stepi = 0; p->length = (high - low) + 1; p->limit = high; width = dns_k_permutor_powof(p->length); width += width % 2; p->shift = width / 2; p->mask = (1U << p->shift) - 1; p->rounds = DNS_K_PERMUTOR_ROUNDS; for (i = 0; i < lengthof(key); i++) key[i] = dns_random(); dns_k_tea_init(&p->tea, key, 0); return /* void */; } /* dns_k_permutor_init() */ static unsigned dns_k_permutor_F(struct dns_k_permutor *p, unsigned k, unsigned x) { uint32_t in[DNS_K_TEA_BLOCK_SIZE / sizeof (uint32_t)], out[DNS_K_TEA_BLOCK_SIZE / sizeof (uint32_t)]; memset(in, '\0', sizeof in); in[0] = k; in[1] = x; dns_k_tea_encrypt(&p->tea, in, out); return p->mask & out[0]; } /* dns_k_permutor_F() */ static unsigned dns_k_permutor_E(struct dns_k_permutor *p, unsigned n) { unsigned l[2], r[2]; unsigned i; i = 0; l[i] = p->mask & (n >> p->shift); r[i] = p->mask & (n >> 0); do { l[(i + 1) % 2] = r[i % 2]; r[(i + 1) % 2] = l[i % 2] ^ dns_k_permutor_F(p, i, r[i % 2]); i++; } while (i < p->rounds - 1); return ((l[i % 2] & p->mask) << p->shift) | ((r[i % 2] & p->mask) << 0); } /* dns_k_permutor_E() */ DNS_NOTUSED static unsigned dns_k_permutor_D(struct dns_k_permutor *p, unsigned n) { unsigned l[2], r[2]; unsigned i; i = p->rounds - 1; l[i % 2] = p->mask & (n >> p->shift); r[i % 2] = p->mask & (n >> 0); do { i--; r[i % 2] = l[(i + 1) % 2]; l[i % 2] = r[(i + 1) % 2] ^ dns_k_permutor_F(p, i, l[(i + 1) % 2]); } while (i > 0); return ((l[i % 2] & p->mask) << p->shift) | ((r[i % 2] & p->mask) << 0); } /* dns_k_permutor_D() */ static unsigned dns_k_permutor_step(struct dns_k_permutor *p) { unsigned n; do { n = dns_k_permutor_E(p, p->stepi++); } while (n >= p->length); return n + (p->limit + 1 - p->length); } /* dns_k_permutor_step() */ /* * Simple permutation box. Useful for shuffling rrsets from an iterator. * Uses AES s-box to provide good diffusion. * * Seems to pass muster under runs test. * * $ for i in 0 1 2 3 4 5 6 7 8 9; do ./dns shuffle-16 > /tmp/out; done * $ R -q -f /dev/stdin 2>/dev/null <<-EOF | awk '/p-value/{ print $8 }' * library(lawstat) * runs.test(scan(file="/tmp/out")) * EOF */ static unsigned short dns_k_shuffle16(unsigned short n, unsigned s) { static const unsigned char sbox[256] = { 0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76, 0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0, 0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15, 0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75, 0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84, 0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf, 0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8, 0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2, 0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73, 0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb, 0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79, 0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08, 0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a, 0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e, 0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf, 0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16 }; unsigned char a, b; unsigned i; a = 0xff & (n >> 0); b = 0xff & (n >> 8); for (i = 0; i < 4; i++) { a ^= 0xff & s; a = sbox[a] ^ b; b = sbox[b] ^ a; s >>= 8; } return ((0xff00 & (a << 8)) | (0x00ff & (b << 0))); } /* dns_k_shuffle16() */ /* * U T I L I T Y R O U T I N E S * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ #define DNS_MAXINTERVAL 300 struct dns_clock { time_t sample, elapsed; }; /* struct dns_clock */ static void dns_begin(struct dns_clock *clk) { clk->sample = time(0); clk->elapsed = 0; } /* dns_begin() */ static time_t dns_elapsed(struct dns_clock *clk) { time_t curtime; if ((time_t)-1 == time(&curtime)) return clk->elapsed; if (curtime > clk->sample) clk->elapsed += (time_t)DNS_PP_MIN(difftime(curtime, clk->sample), DNS_MAXINTERVAL); clk->sample = curtime; return clk->elapsed; } /* dns_elapsed() */ DNS_NOTUSED static size_t dns_strnlen(const char *src, size_t m) { size_t n = 0; while (*src++ && n < m) ++n; return n; } /* dns_strnlen() */ DNS_NOTUSED static size_t dns_strnlcpy(char *dst, size_t lim, const char *src, size_t max) { size_t len = dns_strnlen(src, max), n; if (lim > 0) { n = DNS_PP_MIN(lim - 1, len); memcpy(dst, src, n); dst[n] = '\0'; } return len; } /* dns_strnlcpy() */ #if (defined AF_UNIX && !defined _WIN32) #define DNS_HAVE_SOCKADDR_UN 1 #endif static size_t dns_af_len(int af) { static const size_t table[AF_MAX] = { [AF_INET6] = sizeof (struct sockaddr_in6), [AF_INET] = sizeof (struct sockaddr_in), #if DNS_HAVE_SOCKADDR_UN [AF_UNIX] = sizeof (struct sockaddr_un), #endif }; return table[af]; } /* dns_af_len() */ #define dns_sa_family(sa) (((struct sockaddr_storage *)(sa))->ss_family) #define dns_sa_len(sa) dns_af_len(dns_sa_family(sa)) #define DNS_SA_NOPORT &dns_sa_noport static unsigned short dns_sa_noport; static unsigned short *dns_sa_port(int af, void *sa) { switch (af) { case AF_INET6: return &((struct sockaddr_in6 *)sa)->sin6_port; case AF_INET: return &((struct sockaddr_in *)sa)->sin_port; default: return DNS_SA_NOPORT; } } /* dns_sa_port() */ static void *dns_sa_addr(int af, const void *sa, socklen_t *size) { switch (af) { case AF_INET6: { struct in6_addr *in6 = &((struct sockaddr_in6 *)sa)->sin6_addr; if (size) *size = sizeof *in6; return in6; } case AF_INET: { struct in_addr *in = &((struct sockaddr_in *)sa)->sin_addr; if (size) *size = sizeof *in; return in; } default: if (size) *size = 0; return 0; } } /* dns_sa_addr() */ #if DNS_HAVE_SOCKADDR_UN #define DNS_SUNPATHMAX (sizeof ((struct sockaddr_un *)0)->sun_path) #endif DNS_NOTUSED static void *dns_sa_path(void *sa, socklen_t *size) { switch (dns_sa_family(sa)) { #if DNS_HAVE_SOCKADDR_UN case AF_UNIX: { char *path = ((struct sockaddr_un *)sa)->sun_path; if (size) *size = dns_strnlen(path, DNS_SUNPATHMAX); return path; } #endif default: if (size) *size = 0; return NULL; } } /* dns_sa_path() */ static int dns_sa_cmp(void *a, void *b) { int cmp, af; if ((cmp = dns_sa_family(a) - dns_sa_family(b))) return cmp; switch ((af = dns_sa_family(a))) { case AF_INET: { struct in_addr *a4, *b4; if ((cmp = htons(*dns_sa_port(af, a)) - htons(*dns_sa_port(af, b)))) return cmp; a4 = dns_sa_addr(af, a, NULL); b4 = dns_sa_addr(af, b, NULL); if (ntohl(a4->s_addr) < ntohl(b4->s_addr)) return -1; if (ntohl(a4->s_addr) > ntohl(b4->s_addr)) return 1; return 0; } case AF_INET6: { struct in6_addr *a6, *b6; size_t i; if ((cmp = htons(*dns_sa_port(af, a)) - htons(*dns_sa_port(af, b)))) return cmp; a6 = dns_sa_addr(af, a, NULL); b6 = dns_sa_addr(af, b, NULL); /* XXX: do we need to use in6_clearscope()? */ for (i = 0; i < sizeof a6->s6_addr; i++) { if ((cmp = a6->s6_addr[i] - b6->s6_addr[i])) return cmp; } return 0; } #if DNS_HAVE_SOCKADDR_UN case AF_UNIX: { char a_path[DNS_SUNPATHMAX + 1], b_path[sizeof a_path]; dns_strnlcpy(a_path, sizeof a_path, dns_sa_path(a, NULL), DNS_SUNPATHMAX); dns_strnlcpy(b_path, sizeof b_path, dns_sa_path(b, NULL), DNS_SUNPATHMAX); return strcmp(a_path, b_path); } #endif default: return -1; } } /* dns_sa_cmp() */ #if _WIN32 static int dns_inet_pton(int af, const void *src, void *dst) { union { struct sockaddr_in sin; struct sockaddr_in6 sin6; } u; u.sin.sin_family = af; if (0 != WSAStringToAddressA((void *)src, af, (void *)0, (struct sockaddr *)&u, &(int){ sizeof u })) return -1; switch (af) { case AF_INET6: *(struct in6_addr *)dst = u.sin6.sin6_addr; return 1; case AF_INET: *(struct in_addr *)dst = u.sin.sin_addr; return 1; default: return 0; } } /* dns_inet_pton() */ static const char *dns_inet_ntop(int af, const void *src, void *dst, unsigned long lim) { union { struct sockaddr_in sin; struct sockaddr_in6 sin6; } u; /* NOTE: WSAAddressToString will print .sin_port unless zeroed. */ memset(&u, 0, sizeof u); u.sin.sin_family = af; switch (af) { case AF_INET6: u.sin6.sin6_addr = *(struct in6_addr *)src; break; case AF_INET: u.sin.sin_addr = *(struct in_addr *)src; break; default: return 0; } if (0 != WSAAddressToStringA((struct sockaddr *)&u, dns_sa_len(&u), (void *)0, dst, &lim)) return 0; return dst; } /* dns_inet_ntop() */ #else #define dns_inet_pton(...) inet_pton(__VA_ARGS__) #define dns_inet_ntop(...) inet_ntop(__VA_ARGS__) #endif static dns_error_t dns_pton(int af, const void *src, void *dst) { switch (dns_inet_pton(af, src, dst)) { case 1: return 0; case -1: return dns_soerr(); default: return DNS_EADDRESS; } } /* dns_pton() */ static dns_error_t dns_ntop(int af, const void *src, void *dst, unsigned long lim) { return (dns_inet_ntop(af, src, dst, lim))? 0 : dns_soerr(); } /* dns_ntop() */ size_t dns_strlcpy(char *dst, const char *src, size_t lim) { char *d = dst; char *e = &dst[lim]; const char *s = src; if (d < e) { do { if ('\0' == (*d++ = *s++)) return s - src - 1; } while (d < e); d[-1] = '\0'; } while (*s++ != '\0') ;; return s - src - 1; } /* dns_strlcpy() */ size_t dns_strlcat(char *dst, const char *src, size_t lim) { char *d = memchr(dst, '\0', lim); char *e = &dst[lim]; const char *s = src; const char *p; if (d && d < e) { do { if ('\0' == (*d++ = *s++)) return d - dst - 1; } while (d < e); d[-1] = '\0'; } p = s; while (*s++ != '\0') ;; return lim + (s - p - 1); } /* dns_strlcat() */ #if _WIN32 static char *dns_strsep(char **sp, const char *delim) { char *p; if (!(p = *sp)) return 0; *sp += strcspn(p, delim); if (**sp != '\0') { **sp = '\0'; ++*sp; } else *sp = NULL; return p; } /* dns_strsep() */ #else #define dns_strsep(...) strsep(__VA_ARGS__) #endif #if _WIN32 #ifndef strcasecmp #define strcasecmp(...) _stricmp(__VA_ARGS__) #endif #ifndef strncasecmp #define strncasecmp(...) _strnicmp(__VA_ARGS__) #endif #endif static DNS_INLINE _Bool dns_isalpha(unsigned char c) { return isalpha(c); } /* dns_isalpha() */ static DNS_INLINE _Bool dns_isdigit(unsigned char c) { return isdigit(c); } /* dns_isdigit() */ static DNS_INLINE _Bool dns_isalnum(unsigned char c) { return isalnum(c); } /* dns_isalnum() */ static DNS_INLINE _Bool dns_isspace(unsigned char c) { return isspace(c); } /* dns_isspace() */ static int dns_poll(int fd, short events, int timeout) { /* For our usage in belle sip, we are called by the main loop when something is to read on the dns socket. * As a result there is no need to perform a blocking select. **/ #if 0 fd_set rset, wset; if (!events) return 0; assert(fd >= 0 && (unsigned)fd < FD_SETSIZE); FD_ZERO(&rset); FD_ZERO(&wset); if (events & DNS_POLLIN) FD_SET(fd, &rset); if (events & DNS_POLLOUT) FD_SET(fd, &wset); select(fd + 1, &rset, &wset, 0, (timeout >= 0)? &(struct timeval){ timeout, 0 } : NULL); #endif return 0; } /* dns_poll() */ #if !_WIN32 DNS_NOTUSED static int dns_sigmask(int how, const sigset_t *set, sigset_t *oset) { #if DNS_THREAD_SAFE return pthread_sigmask(how, set, oset); #else return (0 == sigprocmask(how, set, oset))? 0 : errno; #endif } /* dns_sigmask() */ #endif static long dns_send(int fd, const void *src, size_t lim, int flags) { #if _WIN32 || !defined SIGPIPE || defined SO_NOSIGPIPE return send(fd, src, lim, flags); #elif defined MSG_NOSIGNAL return send(fd, src, lim, flags|MSG_NOSIGNAL); #elif _POSIX_REALTIME_SIGNALS > 0 /* require sigtimedwait */ /* * SIGPIPE handling similar to the approach described in * http://krokisplace.blogspot.com/2010/02/suppressing-sigpipe-in-library.html */ sigset_t pending, blocked, piped; long count; int saved, error; sigemptyset(&pending); sigpending(&pending); if (!sigismember(&pending, SIGPIPE)) { sigemptyset(&piped); sigaddset(&piped, SIGPIPE); sigemptyset(&blocked); if ((error = dns_sigmask(SIG_BLOCK, &piped, &blocked))) goto error; } count = send(fd, src, lim, flags); if (!sigismember(&pending, SIGPIPE)) { saved = errno; if (count == -1 && errno == EPIPE) { while (-1 == sigtimedwait(&piped, NULL, &(struct timespec){ 0, 0 }) && errno == EINTR) ;; } if ((error = dns_sigmask(SIG_SETMASK, &blocked, NULL))) goto error; errno = saved; } return count; error: errno = error; return -1; #else #error "unable to suppress SIGPIPE" return send(fd, src, lim, flags); #endif } /* dns_send() */ #define DNS_FOPEN_STDFLAGS "rwabt+" static dns_error_t dns_fopen_addflag(char *dst, const char *src, size_t lim, int fc) { char *p = dst, *pe = dst + lim; /* copy standard flags */ while (*src && strchr(DNS_FOPEN_STDFLAGS, *src)) { if (!(p < pe)) return ENOMEM; *p++ = *src++; } /* append flag to standard flags */ if (!(p < pe)) return ENOMEM; *p++ = fc; /* copy remaining mode string, including '\0' */ do { if (!(p < pe)) return ENOMEM; } while ((*p++ = *src++)); return 0; } /* dns_fopen_addflag() */ static FILE *dns_fopen(const char *path, const char *mode, dns_error_t *_error) { FILE *fp; char mode_cloexec[32]; int error; assert(path && mode && *mode); if (!*path) { error = EINVAL; goto error; } #if _WIN32 || _WIN64 if ((error = dns_fopen_addflag(mode_cloexec, mode, sizeof mode_cloexec, 'N'))) goto error; if (!(fp = fopen(path, mode_cloexec))) goto syerr; #else if ((error = dns_fopen_addflag(mode_cloexec, mode, sizeof mode_cloexec, 'e'))) goto error; if (!(fp = fopen(path, mode_cloexec))) { if (errno != EINVAL) goto syerr; if (!(fp = fopen(path, mode))) goto syerr; } #endif return fp; syerr: error = dns_syerr(); error: *_error = error; return NULL; } /* dns_fopen() */ /* * F I X E D - S I Z E D B U F F E R R O U T I N E S * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ #define DNS_B_INIT(src, n) { \ (unsigned char *)(src), \ (unsigned char *)(src), \ (unsigned char *)(src) + (n), \ } #define DNS_B_FROM(src, n) DNS_B_INIT((src), (n)) #define DNS_B_INTO(src, n) DNS_B_INIT((src), (n)) struct dns_buf { const unsigned char *base; unsigned char *p; const unsigned char *pe; dns_error_t error; size_t overflow; }; /* struct dns_buf */ static DNS_INLINE size_t dns_b_tell(struct dns_buf *b) { return b->p - b->base; } static DNS_INLINE dns_error_t dns_b_setoverflow(struct dns_buf *b, size_t n, dns_error_t error) { b->overflow += n; return b->error = error; } DNS_NOTUSED static struct dns_buf * dns_b_into(struct dns_buf *b, void *src, size_t n) { *b = (struct dns_buf)DNS_B_INTO(src, n); return b; } static dns_error_t dns_b_putc(struct dns_buf *b, unsigned char uc) { if (!(b->p < b->pe)) return dns_b_setoverflow(b, 1, DNS_ENOBUFS); *b->p++ = uc; return 0; } static dns_error_t dns_b_pputc(struct dns_buf *b, unsigned char uc, size_t p) { size_t pe = b->pe - b->base; if (pe <= p) return dns_b_setoverflow(b, p - pe + 1, DNS_ENOBUFS); *((unsigned char *)b->base + p) = uc; return 0; } static DNS_INLINE dns_error_t dns_b_put16(struct dns_buf *b, uint16_t u) { return dns_b_putc(b, u >> 8), dns_b_putc(b, u >> 0); } static DNS_INLINE dns_error_t dns_b_pput16(struct dns_buf *b, uint16_t u, size_t p) { if (dns_b_pputc(b, u >> 8, p) || dns_b_pputc(b, u >> 0, p + 1)) return b->error; return 0; } DNS_NOTUSED static DNS_INLINE dns_error_t dns_b_put32(struct dns_buf *b, uint32_t u) { return dns_b_putc(b, u >> 24), dns_b_putc(b, u >> 16), dns_b_putc(b, u >> 8), dns_b_putc(b, u >> 0); } static dns_error_t dns_b_put(struct dns_buf *b, const void *src, size_t len) { size_t n = DNS_PP_MIN((size_t)(b->pe - b->p), len); memcpy(b->p, src, n); b->p += n; if (n < len) return dns_b_setoverflow(b, len - n, DNS_ENOBUFS); return 0; } static dns_error_t dns_b_puts(struct dns_buf *b, const void *src) { return dns_b_put(b, src, strlen(src)); } DNS_NOTUSED static DNS_INLINE dns_error_t dns_b_fmtju(struct dns_buf *b, const uintmax_t u, const unsigned width) { size_t digits, padding, overflow; uintmax_t r; unsigned char *tp, *te, tc; digits = 0; r = u; do { digits++; r /= 10; } while (r); padding = width - DNS_PP_MIN(digits, width); overflow = (digits + padding) - DNS_PP_MIN((size_t)(b->pe - b->p), (digits + padding)); while (padding--) { dns_b_putc(b, '0'); } digits = 0; tp = b->p; r = u; do { if (overflow < ++digits) dns_b_putc(b, '0' + (r % 10)); r /= 10; } while (r); te = b->p; while (tp < te) { tc = *--te; *te = *tp; *tp++ = tc; } return b->error; } static void dns_b_popc(struct dns_buf *b) { if (b->overflow && !--b->overflow) b->error = 0; if (b->p > b->base) b->p--; } static DNS_INLINE const char * dns_b_tolstring(struct dns_buf *b, size_t *n) { if (b->p < b->pe) { *b->p = '\0'; *n = b->p - b->base; return (const char *)b->base; } else if (b->p > b->base) { if (b->p[-1] != '\0') { dns_b_setoverflow(b, 1, DNS_ENOBUFS); b->p[-1] = '\0'; } *n = &b->p[-1] - b->base; return (const char *)b->base; } else { *n = 0; return ""; } } static DNS_INLINE const char * dns_b_tostring(struct dns_buf *b) { size_t n; return dns_b_tolstring(b, &n); } static DNS_INLINE size_t dns_b_strlen(struct dns_buf *b) { size_t n; dns_b_tolstring(b, &n); return n; } static DNS_INLINE size_t dns_b_strllen(struct dns_buf *b) { size_t n = dns_b_strlen(b); return n + b->overflow; } DNS_NOTUSED static const struct dns_buf * dns_b_from(const struct dns_buf *b, const void *src, size_t n) { *(struct dns_buf *)b = (struct dns_buf)DNS_B_FROM(src, n); return b; } static DNS_INLINE int dns_b_getc(const struct dns_buf *_b, const int eof) { struct dns_buf *b = (struct dns_buf *)_b; if (!(b->p < b->pe)) return dns_b_setoverflow(b, 1, DNS_EILLEGAL), eof; return *b->p++; } static DNS_INLINE intmax_t dns_b_get16(const struct dns_buf *b, const intmax_t eof) { intmax_t n; n = (dns_b_getc(b, 0) << 8); n |= (dns_b_getc(b, 0) << 0); return (!b->overflow)? n : eof; } DNS_NOTUSED static DNS_INLINE intmax_t dns_b_get32(const struct dns_buf *b, const intmax_t eof) { intmax_t n; n = (dns_b_get16(b, 0) << 16); n |= (dns_b_get16(b, 0) << 0); return (!b->overflow)? n : eof; } static DNS_INLINE dns_error_t dns_b_move(struct dns_buf *dst, const struct dns_buf *_src, size_t n) { struct dns_buf *src = (struct dns_buf *)_src; size_t src_n = DNS_PP_MIN((size_t)(src->pe - src->p), n); size_t src_r = n - src_n; dns_b_put(dst, src->p, src_n); src->p += src_n; if (src_r) return dns_b_setoverflow(src, src_r, DNS_EILLEGAL); return dst->error; } /* * P A C K E T R O U T I N E S * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ unsigned dns_p_count(struct dns_packet *P, enum dns_section section) { unsigned count; switch (section) { case DNS_S_QD: return ntohs(dns_header(P)->qdcount); case DNS_S_AN: return ntohs(dns_header(P)->ancount); case DNS_S_NS: return ntohs(dns_header(P)->nscount); case DNS_S_AR: return ntohs(dns_header(P)->arcount); default: count = 0; if (section & DNS_S_QD) count += ntohs(dns_header(P)->qdcount); if (section & DNS_S_AN) count += ntohs(dns_header(P)->ancount); if (section & DNS_S_NS) count += ntohs(dns_header(P)->nscount); if (section & DNS_S_AR) count += ntohs(dns_header(P)->arcount); return count; } } /* dns_p_count() */ struct dns_packet *dns_p_init(struct dns_packet *P, size_t size) { if (!P) return 0; assert(size >= offsetof(struct dns_packet, data) + 12); memset(P, 0, sizeof *P); P->size = size - offsetof(struct dns_packet, data); P->end = 12; memset(P->data, '\0', 12); return P; } /* dns_p_init() */ static struct dns_packet *dns_p_reset(struct dns_packet *P) { return dns_p_init(P, offsetof(struct dns_packet, data) + P->size); } /* dns_p_reset() */ static unsigned short dns_p_qend(struct dns_packet *P) { unsigned short qend = 12; unsigned i, count = dns_p_count(P, DNS_S_QD); for (i = 0; i < count && qend < P->end; i++) { if (P->end == (qend = dns_d_skip(qend, P))) goto invalid; if (P->end - qend < 4) goto invalid; qend += 4; } return DNS_PP_MIN(qend, P->end); invalid: return P->end; } /* dns_p_qend() */ struct dns_packet *dns_p_make(size_t len, int *error) { struct dns_packet *P; size_t size = dns_p_calcsize(len); if (!(P = dns_p_init(malloc(size), size))) *error = dns_syerr(); return P; } /* dns_p_make() */ static void dns_p_free(struct dns_packet *P) { free(P); } /* dns_p_free() */ /* convience routine to free any existing packet before storing new packet */ static struct dns_packet *dns_p_setptr(struct dns_packet **dst, struct dns_packet *src) { dns_p_free(*dst); *dst = src; return src; } /* dns_p_setptr() */ static struct dns_packet *dns_p_movptr(struct dns_packet **dst, struct dns_packet **src) { dns_p_setptr(dst, *src); *src = NULL; return *dst; } /* dns_p_movptr() */ int dns_p_grow(struct dns_packet **P) { struct dns_packet *tmp; size_t size; int error; if (!*P) { if (!(*P = dns_p_make(DNS_P_QBUFSIZ, &error))) return error; return 0; } size = dns_p_sizeof(*P); size |= size >> 1; size |= size >> 2; size |= size >> 4; size |= size >> 8; size++; if (size > 65536) return DNS_ENOBUFS; if (!(tmp = realloc(*P, dns_p_calcsize(size)))) return dns_syerr(); tmp->size = size; *P = tmp; return 0; } /* dns_p_grow() */ struct dns_packet *dns_p_copy(struct dns_packet *P, const struct dns_packet *P0) { if (!P) return 0; P->end = DNS_PP_MIN(P->size, P0->end); memcpy(P->data, P0->data, P->end); return P; } /* dns_p_copy() */ struct dns_packet *dns_p_merge(struct dns_packet *A, enum dns_section Amask, struct dns_packet *B, enum dns_section Bmask, int *error_) { size_t bufsiz = DNS_PP_MIN(65535, ((A)? A->end : 0) + ((B)? B->end : 0)); struct dns_packet *M; enum dns_section section; struct dns_rr rr, mr; int error, copy; if (!A && B) { A = B; Amask = Bmask; B = 0; } merge: if (!(M = dns_p_make(bufsiz, &error))) goto error; for (section = DNS_S_QD; (DNS_S_ALL & section); section <<= 1) { if (A && (section & Amask)) { dns_rr_foreach(&rr, A, .section = section) { if ((error = dns_rr_copy(M, &rr, A))) goto error; } } if (B && (section & Bmask)) { dns_rr_foreach(&rr, B, .section = section) { copy = 1; dns_rr_foreach(&mr, M, .type = rr.type, .section = DNS_S_ALL) { if (!(copy = dns_rr_cmp(&rr, B, &mr, M))) break; } if (copy && (error = dns_rr_copy(M, &rr, B))) goto error; } } } return M; error: dns_p_setptr(&M, NULL); if (error == DNS_ENOBUFS && bufsiz < 65535) { bufsiz = DNS_PP_MIN(65535, bufsiz * 2); goto merge; } *error_ = error; return 0; } /* dns_p_merge() */ static unsigned short dns_l_skip(unsigned short, const unsigned char *, size_t); void dns_p_dictadd(struct dns_packet *P, unsigned short dn) { unsigned short lp, lptr, i; lp = dn; while (lp < P->end) { if (0xc0 == (0xc0 & P->data[lp]) && P->end - lp >= 2 && lp != dn) { lptr = ((0x3f & P->data[lp + 0]) << 8) | ((0xff & P->data[lp + 1]) << 0); for (i = 0; i < lengthof(P->dict) && P->dict[i]; i++) { if (P->dict[i] == lptr) { P->dict[i] = dn; return; } } } lp = dns_l_skip(lp, P->data, P->end); } for (i = 0; i < lengthof(P->dict); i++) { if (!P->dict[i]) { P->dict[i] = dn; break; } } } /* dns_p_dictadd() */ int dns_p_push(struct dns_packet *P, enum dns_section section, const void *dn, size_t dnlen, enum dns_type type, enum dns_class class, unsigned ttl, const void *any) { size_t end = P->end; int error; if ((error = dns_d_push(P, dn, dnlen))) goto error; if (P->size - P->end < 4) goto nobufs; P->data[P->end++] = 0xff & (type >> 8); P->data[P->end++] = 0xff & (type >> 0); P->data[P->end++] = 0xff & (class >> 8); P->data[P->end++] = 0xff & (class >> 0); if (section == DNS_S_QD) goto update; if (P->size - P->end < 6) goto nobufs; if (type != DNS_T_OPT) ttl = DNS_PP_MIN(ttl, 0x7fffffffU); P->data[P->end++] = ttl >> 24; P->data[P->end++] = ttl >> 16; P->data[P->end++] = ttl >> 8; P->data[P->end++] = ttl >> 0; if ((error = dns_any_push(P, (union dns_any *)any, type))) goto error; update: switch (section) { case DNS_S_QD: if (dns_p_count(P, DNS_S_AN|DNS_S_NS|DNS_S_AR)) goto order; if (!P->memo.qd.base && (error = dns_p_study(P))) goto error; dns_header(P)->qdcount = htons(ntohs(dns_header(P)->qdcount) + 1); P->memo.qd.end = P->end; P->memo.an.base = P->end; P->memo.an.end = P->end; P->memo.ns.base = P->end; P->memo.ns.end = P->end; P->memo.ar.base = P->end; P->memo.ar.end = P->end; break; case DNS_S_AN: if (dns_p_count(P, DNS_S_NS|DNS_S_AR)) goto order; if (!P->memo.an.base && (error = dns_p_study(P))) goto error; dns_header(P)->ancount = htons(ntohs(dns_header(P)->ancount) + 1); P->memo.an.end = P->end; P->memo.ns.base = P->end; P->memo.ns.end = P->end; P->memo.ar.base = P->end; P->memo.ar.end = P->end; break; case DNS_S_NS: if (dns_p_count(P, DNS_S_AR)) goto order; if (!P->memo.ns.base && (error = dns_p_study(P))) goto error; dns_header(P)->nscount = htons(ntohs(dns_header(P)->nscount) + 1); P->memo.ns.end = P->end; P->memo.ar.base = P->end; P->memo.ar.end = P->end; break; case DNS_S_AR: if (!P->memo.ar.base && (error = dns_p_study(P))) goto error; dns_header(P)->arcount = htons(ntohs(dns_header(P)->arcount) + 1); P->memo.ar.end = P->end; if (type == DNS_T_OPT && !P->memo.opt.p) { P->memo.opt.p = end; P->memo.opt.maxudp = class; P->memo.opt.ttl = ttl; } break; default: error = DNS_ESECTION; goto error; } /* switch() */ return 0; nobufs: error = DNS_ENOBUFS; goto error; order: error = DNS_EORDER; goto error; error: P->end = end; return error; } /* dns_p_push() */ static void dns_p_dump3(struct dns_packet *P, struct dns_rr_i *I, FILE *fp) { enum dns_section section; struct dns_rr rr; int error; union dns_any any; char pretty[sizeof any * 2]; size_t len; fputs(";; [HEADER]\n", fp); fprintf(fp, ";; qid : %d\n", ntohs(dns_header(P)->qid)); fprintf(fp, ";; qr : %s(%d)\n", (dns_header(P)->qr)? "RESPONSE" : "QUERY", dns_header(P)->qr); fprintf(fp, ";; opcode : %s(%d)\n", dns_stropcode(dns_header(P)->opcode), dns_header(P)->opcode); fprintf(fp, ";; aa : %s(%d)\n", (dns_header(P)->aa)? "AUTHORITATIVE" : "NON-AUTHORITATIVE", dns_header(P)->aa); fprintf(fp, ";; tc : %s(%d)\n", (dns_header(P)->tc)? "TRUNCATED" : "NOT-TRUNCATED", dns_header(P)->tc); fprintf(fp, ";; rd : %s(%d)\n", (dns_header(P)->rd)? "RECURSION-DESIRED" : "RECURSION-NOT-DESIRED", dns_header(P)->rd); fprintf(fp, ";; ra : %s(%d)\n", (dns_header(P)->ra)? "RECURSION-ALLOWED" : "RECURSION-NOT-ALLOWED", dns_header(P)->ra); fprintf(fp, ";; rcode : %s(%d)\n", dns_strrcode(dns_p_rcode(P)), dns_p_rcode(P)); section = 0; while (dns_rr_grep(&rr, 1, I, P, &error)) { if (section != rr.section) fprintf(fp, "\n;; [%s:%d]\n", dns_strsection(rr.section), dns_p_count(P, rr.section)); if ((len = dns_rr_print(pretty, sizeof pretty, &rr, P, &error))) fprintf(fp, "%s\n", pretty); section = rr.section; } } /* dns_p_dump3() */ void dns_p_dump(struct dns_packet *P, FILE *fp) { dns_p_dump3(P, dns_rr_i_new(P, .section = 0), fp); } /* dns_p_dump() */ static void dns_s_unstudy(struct dns_s_memo *m) { m->base = 0; m->end = 0; } static void dns_m_unstudy(struct dns_p_memo *m) { dns_s_unstudy(&m->qd); dns_s_unstudy(&m->an); dns_s_unstudy(&m->ns); dns_s_unstudy(&m->ar); m->opt.p = 0; m->opt.maxudp = 0; m->opt.ttl = 0; } /* dns_m_unstudy() */ static int dns_s_study(struct dns_s_memo *m, enum dns_section section, unsigned short base, struct dns_packet *P) { unsigned short count, rp; count = dns_p_count(P, section); for (rp = base; count && rp < P->end; count--) rp = dns_rr_skip(rp, P); m->base = base; m->end = rp; return 0; } /* dns_s_study() */ static int dns_m_study(struct dns_p_memo *m, struct dns_packet *P) { struct dns_rr rr; int error; if ((error = dns_s_study(&m->qd, DNS_S_QD, 12, P))) goto error; if ((error = dns_s_study(&m->an, DNS_S_AN, m->qd.end, P))) goto error; if ((error = dns_s_study(&m->ns, DNS_S_NS, m->an.end, P))) goto error; if ((error = dns_s_study(&m->ar, DNS_S_AR, m->ns.end, P))) goto error; m->opt.p = 0; m->opt.maxudp = 0; m->opt.ttl = 0; dns_rr_foreach(&rr, P, .type = DNS_T_OPT, .section = DNS_S_AR) { m->opt.p = rr.dn.p; m->opt.maxudp = rr.class; m->opt.ttl = rr.ttl; break; } return 0; error: dns_m_unstudy(m); return error; } /* dns_m_study() */ int dns_p_study(struct dns_packet *P) { return dns_m_study(&P->memo, P); } /* dns_p_study() */ enum dns_rcode dns_p_rcode(struct dns_packet *P) { return 0xfff & ((P->memo.opt.ttl >> 20) | dns_header(P)->rcode); } /* dns_p_rcode() */ /* * Q U E R Y P A C K E T R O U T I N E S * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ #define DNS_Q_RD 0x1 /* recursion desired */ #define DNS_Q_EDNS0 0x2 /* include OPT RR */ static dns_error_t dns_q_make2(struct dns_packet **_Q, const char *qname, size_t qlen, enum dns_type qtype, enum dns_class qclass, int qflags) { struct dns_packet *Q = NULL; int error; if (dns_p_movptr(&Q, _Q)) { dns_p_reset(Q); } else if (!(Q = dns_p_make(DNS_P_QBUFSIZ, &error))) { goto error; } if ((error = dns_p_push(Q, DNS_S_QD, qname, qlen, qtype, qclass, 0, 0))) goto error; dns_header(Q)->rd = !!(qflags & DNS_Q_RD); if (qflags & DNS_Q_EDNS0) { struct dns_opt opt = DNS_OPT_INIT(&opt); opt.version = 0; /* RFC 6891 version */ opt.maxudp = 4096; if ((error = dns_p_push(Q, DNS_S_AR, ".", 1, DNS_T_OPT, dns_opt_class(&opt), dns_opt_ttl(&opt), &opt))) goto error; } *_Q = Q; return 0; error: dns_p_free(Q); return error; } static dns_error_t dns_q_make(struct dns_packet **Q, const char *qname, enum dns_type qtype, enum dns_class qclass, int qflags) { return dns_q_make2(Q, qname, strlen(qname), qtype, qclass, qflags); } static dns_error_t dns_q_remake(struct dns_packet **Q, int qflags) { char qname[DNS_D_MAXNAME + 1]; size_t qlen; struct dns_rr rr; int error; assert(Q && *Q); if ((error = dns_rr_parse(&rr, 12, *Q))) return error; if (!(qlen = dns_d_expand(qname, sizeof qname, rr.dn.p, *Q, &error))) return error; if (qlen >= sizeof qname) return DNS_EILLEGAL; return dns_q_make2(Q, qname, qlen, rr.type, rr.class, qflags); } /* * D O M A I N N A M E R O U T I N E S * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ #ifndef DNS_D_MAXPTRS #define DNS_D_MAXPTRS 127 /* Arbitrary; possible, valid depth is something like packet size / 2 + fudge. */ #endif static size_t dns_l_expand(unsigned char *dst, size_t lim, unsigned short src, unsigned short *nxt, const unsigned char *data, size_t end) { unsigned short len; unsigned nptrs = 0; retry: if (src >= end) goto invalid; switch (0x03 & (data[src] >> 6)) { case 0x00: len = (0x3f & (data[src++])); if (end - src < len) goto invalid; if (lim > 0) { memcpy(dst, &data[src], DNS_PP_MIN(lim, len)); dst[DNS_PP_MIN(lim - 1, len)] = '\0'; } *nxt = src + len; return len; case 0x01: goto invalid; case 0x02: goto invalid; case 0x03: if (++nptrs > DNS_D_MAXPTRS) goto invalid; if (end - src < 2) goto invalid; src = ((0x3f & data[src + 0]) << 8) | ((0xff & data[src + 1]) << 0); goto retry; } /* switch() */ /* NOT REACHED */ invalid: *nxt = end; return 0; } /* dns_l_expand() */ static unsigned short dns_l_skip(unsigned short src, const unsigned char *data, size_t end) { unsigned short len; if (src >= end) goto invalid; switch (0x03 & (data[src] >> 6)) { case 0x00: len = (0x3f & (data[src++])); if (end - src < len) goto invalid; return (len)? src + len : end; case 0x01: goto invalid; case 0x02: goto invalid; case 0x03: return end; } /* switch() */ /* NOT REACHED */ invalid: return end; } /* dns_l_skip() */ static size_t dns_d_trim(void *dst_, size_t lim, const void *src_, size_t len, int flags) { unsigned char *dst = dst_; const unsigned char *src = src_; size_t dp = 0, sp = 0; int lc; /* trim any leading dot(s) */ while (sp < len && src[sp] == '.') sp++; for (lc = 0; sp < len; lc = src[sp++]) { /* trim extra dot(s) */ if (src[sp] == '.' && lc == '.') continue; if (dp < lim) dst[dp] = src[sp]; dp++; } if ((flags & DNS_D_ANCHOR) && lc != '.') { if (dp < lim) dst[dp] = '.'; dp++; } if (lim > 0) dst[DNS_PP_MIN(dp, lim - 1)] = '\0'; return dp; } /* dns_d_trim() */ char *dns_d_init(void *dst, size_t lim, const void *src, size_t len, int flags) { if (flags & DNS_D_TRIM) { dns_d_trim(dst, lim, src, len, flags); } if (flags & DNS_D_ANCHOR) { dns_d_anchor(dst, lim, src, len); } else { memmove(dst, src, DNS_PP_MIN(lim, len)); if (lim > 0) ((char *)dst)[DNS_PP_MIN(len, lim - 1)] = '\0'; } return dst; } /* dns_d_init() */ size_t dns_d_anchor(void *dst, size_t lim, const void *src, size_t len) { if (len == 0) return 0; memmove(dst, src, DNS_PP_MIN(lim, len)); if (((const char *)src)[len - 1] != '.') { if (len < lim) ((char *)dst)[len] = '.'; len++; } if (lim > 0) ((char *)dst)[DNS_PP_MIN(lim - 1, len)] = '\0'; return len; } /* dns_d_anchor() */ size_t dns_d_cleave(void *dst, size_t lim, const void *src, size_t len) { const char *dot; /* XXX: Skip any leading dot. Handles cleaving root ".". */ if (len == 0 || !(dot = memchr((const char *)src + 1, '.', len - 1))) return 0; len -= dot - (const char *)src; /* XXX: Unless root, skip the label's trailing dot. */ if (len > 1) { src = ++dot; len--; } else src = dot; memmove(dst, src, DNS_PP_MIN(lim, len)); if (lim > 0) ((char *)dst)[DNS_PP_MIN(lim - 1, len)] = '\0'; return len; } /* dns_d_cleave() */ size_t dns_d_comp(void *dst_, size_t lim, const void *src_, size_t len, struct dns_packet *P, int *error) { struct { unsigned char *b; size_t p, x; } dst, src; unsigned char ch = '.'; dst.b = dst_; dst.p = 0; dst.x = 1; src.b = (unsigned char *)src_; src.p = 0; src.x = 0; while (src.x < len) { ch = src.b[src.x]; if (ch == '.') { if (dst.p < lim) dst.b[dst.p] = (0x3f & (src.x - src.p)); dst.p = dst.x++; src.p = ++src.x; } else { if (dst.x < lim) dst.b[dst.x] = ch; dst.x++; src.x++; } } /* while() */ if (src.x > src.p) { if (dst.p < lim) dst.b[dst.p] = (0x3f & (src.x - src.p)); dst.p = dst.x; } if (dst.p > 1) { if (dst.p < lim) dst.b[dst.p] = 0x00; dst.p++; } #if 1 if (dst.p < lim) { struct { unsigned char label[DNS_D_MAXLABEL + 1]; size_t len; unsigned short p, x, y; } a, b; unsigned i; a.p = 0; while ((a.len = dns_l_expand(a.label, sizeof a.label, a.p, &a.x, dst.b, lim))) { for (i = 0; i < lengthof(P->dict) && P->dict[i]; i++) { b.p = P->dict[i]; while ((b.len = dns_l_expand(b.label, sizeof b.label, b.p, &b.x, P->data, P->end))) { a.y = a.x; b.y = b.x; while (a.len && b.len && 0 == strcasecmp((char *)a.label, (char *)b.label)) { a.len = dns_l_expand(a.label, sizeof a.label, a.y, &a.y, dst.b, lim); b.len = dns_l_expand(b.label, sizeof b.label, b.y, &b.y, P->data, P->end); } if (a.len == 0 && b.len == 0 && b.p <= 0x3fff) { dst.b[a.p++] = 0xc0 | (0x3f & (b.p >> 8)); dst.b[a.p++] = (0xff & (b.p >> 0)); /* silence static analyzers */ dns_assume(a.p > 0); return a.p; } b.p = b.x; } /* while() */ } /* for() */ a.p = a.x; } /* while() */ } /* if () */ #endif if (!dst.p) *error = DNS_EILLEGAL; return dst.p; } /* dns_d_comp() */ unsigned short dns_d_skip(unsigned short src, struct dns_packet *P) { unsigned short len; while (src < P->end) { switch (0x03 & (P->data[src] >> 6)) { case 0x00: /* FOLLOWS */ len = (0x3f & P->data[src++]); if (0 == len) { /* success ==> */ return src; } else if (P->end - src > len) { src += len; break; } else goto invalid; /* NOT REACHED */ case 0x01: /* RESERVED */ goto invalid; case 0x02: /* RESERVED */ goto invalid; case 0x03: /* POINTER */ if (P->end - src < 2) goto invalid; src += 2; /* success ==> */ return src; } /* switch() */ } /* while() */ invalid: return P->end; } /* dns_d_skip() */ #include size_t dns_d_expand(void *dst, size_t lim, unsigned short src, struct dns_packet *P, int *error) { size_t dstp = 0; unsigned nptrs = 0; unsigned char len; while (src < P->end) { switch ((0x03 & (P->data[src] >> 6))) { case 0x00: /* FOLLOWS */ len = (0x3f & P->data[src]); if (0 == len) { if (dstp == 0) { if (dstp < lim) ((unsigned char *)dst)[dstp] = '.'; dstp++; } /* NUL terminate */ if (lim > 0) ((unsigned char *)dst)[DNS_PP_MIN(dstp, lim - 1)] = '\0'; /* success ==> */ return dstp; } src++; if (P->end - src < len) goto toolong; if (dstp < lim) memcpy(&((unsigned char *)dst)[dstp], &P->data[src], DNS_PP_MIN(len, lim - dstp)); src += len; dstp += len; if (dstp < lim) ((unsigned char *)dst)[dstp] = '.'; dstp++; nptrs = 0; continue; case 0x01: /* RESERVED */ goto reserved; case 0x02: /* RESERVED */ goto reserved; case 0x03: /* POINTER */ if (++nptrs > DNS_D_MAXPTRS) goto toolong; if (P->end - src < 2) goto toolong; src = ((0x3f & P->data[src + 0]) << 8) | ((0xff & P->data[src + 1]) << 0); continue; } /* switch() */ } /* while() */ toolong: *error = DNS_EILLEGAL; if (lim > 0) ((unsigned char *)dst)[DNS_PP_MIN(dstp, lim - 1)] = '\0'; return 0; reserved: *error = DNS_EILLEGAL; if (lim > 0) ((unsigned char *)dst)[DNS_PP_MIN(dstp, lim - 1)] = '\0'; return 0; } /* dns_d_expand() */ int dns_d_push(struct dns_packet *P, const void *dn, size_t len) { size_t lim = P->size - P->end; unsigned dp = P->end; int error = DNS_EILLEGAL; /* silence compiler */ len = dns_d_comp(&P->data[dp], lim, dn, len, P, &error); if (len == 0) return error; if (len > lim) return DNS_ENOBUFS; P->end += len; dns_p_dictadd(P, dp); return 0; } /* dns_d_push() */ size_t dns_d_cname(void *dst, size_t lim, const void *dn, size_t len, struct dns_packet *P, int *error_) { char host[DNS_D_MAXNAME + 1]; struct dns_rr_i i; struct dns_rr rr; unsigned depth; int error; if (sizeof host <= dns_d_anchor(host, sizeof host, dn, len)) { error = ENAMETOOLONG; goto error; } for (depth = 0; depth < 7; depth++) { dns_rr_i_init(memset(&i, 0, sizeof i), P); i.section = DNS_S_ALL & ~DNS_S_QD; i.name = host; i.type = DNS_T_CNAME; if (!dns_rr_grep(&rr, 1, &i, P, &error)) break; if ((error = dns_cname_parse((struct dns_cname *)host, &rr, P))) goto error; } return dns_strlcpy(dst, host, lim); error: *error_ = error; return 0; } /* dns_d_cname() */ /* * R E S O U R C E R E C O R D R O U T I N E S * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ int dns_rr_copy(struct dns_packet *P, struct dns_rr *rr, struct dns_packet *Q) { unsigned char dn[DNS_D_MAXNAME + 1]; union dns_any any; size_t len; int error; if (!(len = dns_d_expand(dn, sizeof dn, rr->dn.p, Q, &error))) return error; else if (len >= sizeof dn) return DNS_EILLEGAL; if (rr->section != DNS_S_QD && (error = dns_any_parse(dns_any_init(&any, sizeof any), rr, Q))) return error; return dns_p_push(P, rr->section, dn, len, rr->type, rr->class, rr->ttl, &any); } /* dns_rr_copy() */ int dns_rr_parse(struct dns_rr *rr, unsigned short src, struct dns_packet *P) { unsigned short p = src; if (src >= P->end) goto invalid; rr->dn.p = p; rr->dn.len = (p = dns_d_skip(p, P)) - rr->dn.p; if (P->end - p < 4) goto invalid; rr->type = ((0xff & P->data[p + 0]) << 8) | ((0xff & P->data[p + 1]) << 0); rr->class = ((0xff & P->data[p + 2]) << 8) | ((0xff & P->data[p + 3]) << 0); p += 4; if (src < dns_p_qend(P)) { rr->section = DNS_S_QUESTION; rr->ttl = 0; rr->rd.p = 0; rr->rd.len = 0; return 0; } if (P->end - p < 4) goto invalid; rr->ttl = ((0xff & P->data[p + 0]) << 24) | ((0xff & P->data[p + 1]) << 16) | ((0xff & P->data[p + 2]) << 8) | ((0xff & P->data[p + 3]) << 0); if (rr->type != DNS_T_OPT) rr->ttl = DNS_PP_MIN(rr->ttl, 0x7fffffffU); p += 4; if (P->end - p < 2) goto invalid; rr->rd.len = ((0xff & P->data[p + 0]) << 8) | ((0xff & P->data[p + 1]) << 0); rr->rd.p = p + 2; p += 2; if (P->end - p < rr->rd.len) goto invalid; return 0; invalid: return DNS_EILLEGAL; } /* dns_rr_parse() */ static unsigned short dns_rr_len(const unsigned short src, struct dns_packet *P) { unsigned short rp, rdlen; rp = dns_d_skip(src, P); if (P->end - rp < 4) return P->end - src; rp += 4; /* TYPE, CLASS */ if (rp <= dns_p_qend(P)) return rp - src; if (P->end - rp < 6) return P->end - src; rp += 6; /* TTL, RDLEN */ rdlen = ((0xff & P->data[rp - 2]) << 8) | ((0xff & P->data[rp - 1]) << 0); if (P->end - rp < rdlen) return P->end - src; rp += rdlen; return rp - src; } /* dns_rr_len() */ unsigned short dns_rr_skip(unsigned short src, struct dns_packet *P) { return src + dns_rr_len(src, P); } /* dns_rr_skip() */ static enum dns_section dns_rr_section(unsigned short src, struct dns_packet *P) { enum dns_section section; unsigned count, index; unsigned short rp; if (src >= P->memo.qd.base && src < P->memo.qd.end) return DNS_S_QD; if (src >= P->memo.an.base && src < P->memo.an.end) return DNS_S_AN; if (src >= P->memo.ns.base && src < P->memo.ns.end) return DNS_S_NS; if (src >= P->memo.ar.base && src < P->memo.ar.end) return DNS_S_AR; /* NOTE: Possibly bad memoization. Try it the hard-way. */ for (rp = 12, index = 0; rp < src && rp < P->end; index++) rp = dns_rr_skip(rp, P); section = DNS_S_QD; count = dns_p_count(P, section); while (index >= count && section <= DNS_S_AR) { section <<= 1; count += dns_p_count(P, section); } return DNS_S_ALL & section; } /* dns_rr_section() */ static enum dns_type dns_rr_type(unsigned short src, struct dns_packet *P) { struct dns_rr rr; int error; if ((error = dns_rr_parse(&rr, src, P))) return 0; return rr.type; } /* dns_rr_type() */ int dns_rr_cmp(struct dns_rr *r0, struct dns_packet *P0, struct dns_rr *r1, struct dns_packet *P1) { char host0[DNS_D_MAXNAME + 1], host1[DNS_D_MAXNAME + 1]; union dns_any any0, any1; int cmp, error; size_t len; if ((cmp = r0->type - r1->type)) return cmp; if ((cmp = r0->class - r1->class)) return cmp; /* * FIXME: Do label-by-label comparison to handle illegally long names? */ if (!(len = dns_d_expand(host0, sizeof host0, r0->dn.p, P0, &error)) || len >= sizeof host0) return -1; if (!(len = dns_d_expand(host1, sizeof host1, r1->dn.p, P1, &error)) || len >= sizeof host1) return 1; if ((cmp = strcasecmp(host0, host1))) return cmp; if (DNS_S_QD & (r0->section | r1->section)) { if (r0->section == r1->section) return 0; return (r0->section == DNS_S_QD)? -1 : 1; } if ((error = dns_any_parse(&any0, r0, P0))) return -1; if ((error = dns_any_parse(&any1, r1, P1))) return 1; return dns_any_cmp(&any0, r0->type, &any1, r1->type); } /* dns_rr_cmp() */ static _Bool dns_rr_exists(struct dns_rr *rr0, struct dns_packet *P0, struct dns_packet *P1) { struct dns_rr rr1; dns_rr_foreach(&rr1, P1, .section = rr0->section, .type = rr0->type) { if (0 == dns_rr_cmp(rr0, P0, &rr1, P1)) return 1; } return 0; } /* dns_rr_exists() */ static unsigned short dns_rr_offset(struct dns_rr *rr) { return rr->dn.p; } /* dns_rr_offset() */ static _Bool dns_rr_i_match(struct dns_rr *rr, struct dns_rr_i *i, struct dns_packet *P) { if (i->section && !(rr->section & i->section)) return 0; if (i->type && rr->type != i->type && i->type != DNS_T_ALL) return 0; if (i->class && rr->class != i->class && i->class != DNS_C_ANY) return 0; if (i->name) { char dn[DNS_D_MAXNAME + 1]; size_t len; int error; if (!(len = dns_d_expand(dn, sizeof dn, rr->dn.p, P, &error)) || len >= sizeof dn) return 0; if (0 != strcasecmp(dn, i->name)) return 0; } if (i->data && i->type && rr->section > DNS_S_QD) { union dns_any rd; int error; if ((error = dns_any_parse(&rd, rr, P))) return 0; if (0 != dns_any_cmp(&rd, rr->type, i->data, i->type)) return 0; } return 1; } /* dns_rr_i_match() */ static unsigned short dns_rr_i_start(struct dns_rr_i *i, struct dns_packet *P) { unsigned short rp; struct dns_rr r0, rr; int error; if ((i->section & DNS_S_QD) && P->memo.qd.base) rp = P->memo.qd.base; else if ((i->section & DNS_S_AN) && P->memo.an.base) rp = P->memo.an.base; else if ((i->section & DNS_S_NS) && P->memo.ns.base) rp = P->memo.ns.base; else if ((i->section & DNS_S_AR) && P->memo.ar.base) rp = P->memo.ar.base; else rp = 12; for (; rp < P->end; rp = dns_rr_skip(rp, P)) { if ((error = dns_rr_parse(&rr, rp, P))) continue; rr.section = dns_rr_section(rp, P); if (!dns_rr_i_match(&rr, i, P)) continue; r0 = rr; goto lower; } return P->end; lower: if (i->sort == &dns_rr_i_packet) return dns_rr_offset(&r0); while ((rp = dns_rr_skip(rp, P)) < P->end) { if ((error = dns_rr_parse(&rr, rp, P))) continue; rr.section = dns_rr_section(rp, P); if (!dns_rr_i_match(&rr, i, P)) continue; if (i->sort(&rr, &r0, i, P) < 0) r0 = rr; } return dns_rr_offset(&r0); } /* dns_rr_i_start() */ static unsigned short dns_rr_i_skip(unsigned short rp, struct dns_rr_i *i, struct dns_packet *P) { struct dns_rr r0, r1, rr; int error; if ((error = dns_rr_parse(&r0, rp, P))) return P->end; r0.section = dns_rr_section(rp, P); rp = (i->sort == &dns_rr_i_packet)? dns_rr_skip(rp, P) : 12; for (; rp < P->end; rp = dns_rr_skip(rp, P)) { if ((error = dns_rr_parse(&rr, rp, P))) continue; rr.section = dns_rr_section(rp, P); if (!dns_rr_i_match(&rr, i, P)) continue; if (i->sort(&rr, &r0, i, P) <= 0) continue; r1 = rr; goto lower; } return P->end; lower: if (i->sort == &dns_rr_i_packet) return dns_rr_offset(&r1); while ((rp = dns_rr_skip(rp, P)) < P->end) { if ((error = dns_rr_parse(&rr, rp, P))) continue; rr.section = dns_rr_section(rp, P); if (!dns_rr_i_match(&rr, i, P)) continue; if (i->sort(&rr, &r0, i, P) <= 0) continue; if (i->sort(&rr, &r1, i, P) >= 0) continue; r1 = rr; } return dns_rr_offset(&r1); } /* dns_rr_i_skip() */ int dns_rr_i_packet(struct dns_rr *a, struct dns_rr *b, struct dns_rr_i *i, struct dns_packet *P) { (void)i; (void)P; return (int)a->dn.p - (int)b->dn.p; } /* dns_rr_i_packet() */ int dns_rr_i_order(struct dns_rr *a, struct dns_rr *b, struct dns_rr_i *i, struct dns_packet *P) { int cmp; (void)i; if ((cmp = a->section - b->section)) return cmp; if (a->type != b->type) return (int)a->dn.p - (int)b->dn.p; return dns_rr_cmp(a, P, b, P); } /* dns_rr_i_order() */ int dns_rr_i_shuffle(struct dns_rr *a, struct dns_rr *b, struct dns_rr_i *i, struct dns_packet *P) { int cmp; (void)i; (void)P; while (!i->state.regs[0]) i->state.regs[0] = dns_random(); if ((cmp = a->section - b->section)) return cmp; return dns_k_shuffle16(a->dn.p, i->state.regs[0]) - dns_k_shuffle16(b->dn.p, i->state.regs[0]); } /* dns_rr_i_shuffle() */ struct dns_rr_i *dns_rr_i_init(struct dns_rr_i *i, struct dns_packet *P) { static const struct dns_rr_i i_initializer; (void)P; i->state = i_initializer.state; i->saved = i->state; return i; } /* dns_rr_i_init() */ unsigned dns_rr_grep(struct dns_rr *rr, unsigned lim, struct dns_rr_i *i, struct dns_packet *P, int *error_) { unsigned count = 0; int error; switch (i->state.exec) { case 0: if (!i->sort) i->sort = &dns_rr_i_packet; i->state.next = dns_rr_i_start(i, P); i->state.exec++; /* FALL THROUGH */ case 1: while (count < lim && i->state.next < P->end) { if ((error = dns_rr_parse(rr, i->state.next, P))) goto error; rr->section = dns_rr_section(i->state.next, P); rr++; count++; i->state.count++; i->state.next = dns_rr_i_skip(i->state.next, i, P); } /* while() */ break; } /* switch() */ return count; error: *error_ = error; return count; } /* dns_rr_grep() */ size_t dns_rr_print(void *_dst, size_t lim, struct dns_rr *rr, struct dns_packet *P, int *_error) { struct dns_buf dst = DNS_B_INTO(_dst, lim); union dns_any any; size_t n; int error; if (rr->section == DNS_S_QD) dns_b_putc(&dst, ';'); if (!(n = dns_d_expand(any.ns.host, sizeof any.ns.host, rr->dn.p, P, &error))) goto error; dns_b_put(&dst, any.ns.host, DNS_PP_MIN(n, sizeof any.ns.host - 1)); if (rr->section != DNS_S_QD) { dns_b_putc(&dst, ' '); dns_b_fmtju(&dst, rr->ttl, 0); } dns_b_putc(&dst, ' '); dns_b_puts(&dst, dns_strclass(rr->class)); dns_b_putc(&dst, ' '); dns_b_puts(&dst, dns_strtype(rr->type)); if (rr->section == DNS_S_QD) goto epilog; dns_b_putc(&dst, ' '); if ((error = dns_any_parse(dns_any_init(&any, sizeof any), rr, P))) goto error; n = dns_any_print(dst.p, dst.pe - dst.p, &any, rr->type); dst.p += DNS_PP_MIN(n, (size_t)(dst.pe - dst.p)); epilog: return dns_b_strllen(&dst); error: *_error = error; return 0; } /* dns_rr_print() */ int dns_a_parse(struct dns_a *a, struct dns_rr *rr, struct dns_packet *P) { unsigned long addr; if (rr->rd.len != 4) return DNS_EILLEGAL; addr = ((0xffU & P->data[rr->rd.p + 0]) << 24) | ((0xffU & P->data[rr->rd.p + 1]) << 16) | ((0xffU & P->data[rr->rd.p + 2]) << 8) | ((0xffU & P->data[rr->rd.p + 3]) << 0); a->addr.s_addr = htonl(addr); return 0; } /* dns_a_parse() */ int dns_a_push(struct dns_packet *P, struct dns_a *a) { unsigned long addr; if (P->size - P->end < 6) return DNS_ENOBUFS; P->data[P->end++] = 0x00; P->data[P->end++] = 0x04; addr = ntohl(a->addr.s_addr); P->data[P->end++] = 0xffU & (addr >> 24); P->data[P->end++] = 0xffU & (addr >> 16); P->data[P->end++] = 0xffU & (addr >> 8); P->data[P->end++] = 0xffU & (addr >> 0); return 0; } /* dns_a_push() */ size_t dns_a_arpa(void *_dst, size_t lim, const struct dns_a *a) { struct dns_buf dst = DNS_B_INTO(_dst, lim); unsigned long octets = ntohl(a->addr.s_addr); unsigned i; for (i = 0; i < 4; i++) { dns_b_fmtju(&dst, 0xff & octets, 0); dns_b_putc(&dst, '.'); octets >>= 8; } dns_b_puts(&dst, "in-addr.arpa."); return dns_b_strllen(&dst); } /* dns_a_arpa() */ int dns_a_cmp(const struct dns_a *a, const struct dns_a *b) { if (ntohl(a->addr.s_addr) < ntohl(b->addr.s_addr)) return -1; if (ntohl(a->addr.s_addr) > ntohl(b->addr.s_addr)) return 1; return 0; } /* dns_a_cmp() */ size_t dns_a_print(void *dst, size_t lim, struct dns_a *a) { char addr[INET_ADDRSTRLEN + 1] = "0.0.0.0"; dns_inet_ntop(AF_INET, &a->addr, addr, sizeof addr); return dns_strlcpy(dst, addr, lim); } /* dns_a_print() */ int dns_aaaa_parse(struct dns_aaaa *aaaa, struct dns_rr *rr, struct dns_packet *P) { if (rr->rd.len != sizeof aaaa->addr.s6_addr) return DNS_EILLEGAL; memcpy(aaaa->addr.s6_addr, &P->data[rr->rd.p], sizeof aaaa->addr.s6_addr); return 0; } /* dns_aaaa_parse() */ int dns_aaaa_push(struct dns_packet *P, struct dns_aaaa *aaaa) { if (P->size - P->end < 2 + sizeof aaaa->addr.s6_addr) return DNS_ENOBUFS; P->data[P->end++] = 0x00; P->data[P->end++] = 0x10; memcpy(&P->data[P->end], aaaa->addr.s6_addr, sizeof aaaa->addr.s6_addr); P->end += sizeof aaaa->addr.s6_addr; return 0; } /* dns_aaaa_push() */ int dns_aaaa_cmp(const struct dns_aaaa *a, const struct dns_aaaa *b) { unsigned i; int cmp; for (i = 0; i < lengthof(a->addr.s6_addr); i++) { if ((cmp = (a->addr.s6_addr[i] - b->addr.s6_addr[i]))) return cmp; } return 0; } /* dns_aaaa_cmp() */ size_t dns_aaaa_arpa(void *_dst, size_t lim, const struct dns_aaaa *aaaa) { static const unsigned char hex[16] = "0123456789abcdef"; struct dns_buf dst = DNS_B_INTO(_dst, lim); unsigned nyble; int i, j; for (i = sizeof aaaa->addr.s6_addr - 1; i >= 0; i--) { nyble = aaaa->addr.s6_addr[i]; for (j = 0; j < 2; j++) { dns_b_putc(&dst, hex[0x0f & nyble]); dns_b_putc(&dst, '.'); nyble >>= 4; } } dns_b_puts(&dst, "ip6.arpa."); return dns_b_strllen(&dst); } /* dns_aaaa_arpa() */ size_t dns_aaaa_print(void *dst, size_t lim, struct dns_aaaa *aaaa) { char addr[INET6_ADDRSTRLEN + 1] = "::"; dns_inet_ntop(AF_INET6, &aaaa->addr, addr, sizeof addr); return dns_strlcpy(dst, addr, lim); } /* dns_aaaa_print() */ int dns_mx_parse(struct dns_mx *mx, struct dns_rr *rr, struct dns_packet *P) { size_t len; int error; if (rr->rd.len < 3) return DNS_EILLEGAL; mx->preference = (0xff00 & (P->data[rr->rd.p + 0] << 8)) | (0x00ff & (P->data[rr->rd.p + 1] << 0)); if (!(len = dns_d_expand(mx->host, sizeof mx->host, rr->rd.p + 2, P, &error))) return error; else if (len >= sizeof mx->host) return DNS_EILLEGAL; return 0; } /* dns_mx_parse() */ int dns_mx_push(struct dns_packet *P, struct dns_mx *mx) { size_t end, len; int error; if (P->size - P->end < 5) return DNS_ENOBUFS; end = P->end; P->end += 2; P->data[P->end++] = 0xff & (mx->preference >> 8); P->data[P->end++] = 0xff & (mx->preference >> 0); if ((error = dns_d_push(P, mx->host, strlen(mx->host)))) goto error; len = P->end - end - 2; P->data[end + 0] = 0xff & (len >> 8); P->data[end + 1] = 0xff & (len >> 0); return 0; error: P->end = end; return error; } /* dns_mx_push() */ int dns_mx_cmp(const struct dns_mx *a, const struct dns_mx *b) { int cmp; if ((cmp = a->preference - b->preference)) return cmp; return strcasecmp(a->host, b->host); } /* dns_mx_cmp() */ size_t dns_mx_print(void *_dst, size_t lim, struct dns_mx *mx) { struct dns_buf dst = DNS_B_INTO(_dst, lim); dns_b_fmtju(&dst, mx->preference, 0); dns_b_putc(&dst, ' '); dns_b_puts(&dst, mx->host); return dns_b_strllen(&dst); } /* dns_mx_print() */ size_t dns_mx_cname(void *dst, size_t lim, struct dns_mx *mx) { return dns_strlcpy(dst, mx->host, lim); } /* dns_mx_cname() */ int dns_ns_parse(struct dns_ns *ns, struct dns_rr *rr, struct dns_packet *P) { size_t len; int error; if (!(len = dns_d_expand(ns->host, sizeof ns->host, rr->rd.p, P, &error))) return error; else if (len >= sizeof ns->host) return DNS_EILLEGAL; return 0; } /* dns_ns_parse() */ int dns_ns_push(struct dns_packet *P, struct dns_ns *ns) { size_t end, len; int error; if (P->size - P->end < 3) return DNS_ENOBUFS; end = P->end; P->end += 2; if ((error = dns_d_push(P, ns->host, strlen(ns->host)))) goto error; len = P->end - end - 2; P->data[end + 0] = 0xff & (len >> 8); P->data[end + 1] = 0xff & (len >> 0); return 0; error: P->end = end; return error; } /* dns_ns_push() */ int dns_ns_cmp(const struct dns_ns *a, const struct dns_ns *b) { return strcasecmp(a->host, b->host); } /* dns_ns_cmp() */ size_t dns_ns_print(void *dst, size_t lim, struct dns_ns *ns) { return dns_strlcpy(dst, ns->host, lim); } /* dns_ns_print() */ size_t dns_ns_cname(void *dst, size_t lim, struct dns_ns *ns) { return dns_strlcpy(dst, ns->host, lim); } /* dns_ns_cname() */ int dns_cname_parse(struct dns_cname *cname, struct dns_rr *rr, struct dns_packet *P) { return dns_ns_parse((struct dns_ns *)cname, rr, P); } /* dns_cname_parse() */ int dns_cname_push(struct dns_packet *P, struct dns_cname *cname) { return dns_ns_push(P, (struct dns_ns *)cname); } /* dns_cname_push() */ int dns_cname_cmp(const struct dns_cname *a, const struct dns_cname *b) { return strcasecmp(a->host, b->host); } /* dns_cname_cmp() */ size_t dns_cname_print(void *dst, size_t lim, struct dns_cname *cname) { return dns_ns_print(dst, lim, (struct dns_ns *)cname); } /* dns_cname_print() */ size_t dns_cname_cname(void *dst, size_t lim, struct dns_cname *cname) { return dns_strlcpy(dst, cname->host, lim); } /* dns_cname_cname() */ int dns_soa_parse(struct dns_soa *soa, struct dns_rr *rr, struct dns_packet *P) { struct { void *dst; size_t lim; } dn[] = { { soa->mname, sizeof soa->mname }, { soa->rname, sizeof soa->rname } }; unsigned *ts[] = { &soa->serial, &soa->refresh, &soa->retry, &soa->expire, &soa->minimum }; unsigned short rp; unsigned i, j, n; int error; /* MNAME / RNAME */ if ((rp = rr->rd.p) >= P->end) return DNS_EILLEGAL; for (i = 0; i < lengthof(dn); i++) { if (!(n = dns_d_expand(dn[i].dst, dn[i].lim, rp, P, &error))) return error; else if (n >= dn[i].lim) return DNS_EILLEGAL; if ((rp = dns_d_skip(rp, P)) >= P->end) return DNS_EILLEGAL; } /* SERIAL / REFRESH / RETRY / EXPIRE / MINIMUM */ for (i = 0; i < lengthof(ts); i++) { for (j = 0; j < 4; j++, rp++) { if (rp >= P->end) return DNS_EILLEGAL; *ts[i] <<= 8; *ts[i] |= (0xff & P->data[rp]); } } return 0; } /* dns_soa_parse() */ int dns_soa_push(struct dns_packet *P, struct dns_soa *soa) { void *dn[] = { soa->mname, soa->rname }; unsigned ts[] = { (0xffffffff & soa->serial), (0x7fffffff & soa->refresh), (0x7fffffff & soa->retry), (0x7fffffff & soa->expire), (0xffffffff & soa->minimum) }; unsigned i, j; size_t end, len; int error; end = P->end; if ((P->end += 2) >= P->size) goto toolong; /* MNAME / RNAME */ for (i = 0; i < lengthof(dn); i++) { if ((error = dns_d_push(P, dn[i], strlen(dn[i])))) goto error; } /* SERIAL / REFRESH / RETRY / EXPIRE / MINIMUM */ for (i = 0; i < lengthof(ts); i++) { if ((P->end += 4) >= P->size) goto toolong; for (j = 1; j <= 4; j++) { P->data[P->end - j] = (0xff & ts[i]); ts[i] >>= 8; } } len = P->end - end - 2; P->data[end + 0] = (0xff & (len >> 8)); P->data[end + 1] = (0xff & (len >> 0)); return 0; toolong: error = DNS_ENOBUFS; /* FALL THROUGH */ error: P->end = end; return error; } /* dns_soa_push() */ int dns_soa_cmp(const struct dns_soa *a, const struct dns_soa *b) { int cmp; if ((cmp = strcasecmp(a->mname, b->mname))) return cmp; if ((cmp = strcasecmp(a->rname, b->rname))) return cmp; if (a->serial > b->serial) return -1; else if (a->serial < b->serial) return 1; if (a->refresh > b->refresh) return -1; else if (a->refresh < b->refresh) return 1; if (a->retry > b->retry) return -1; else if (a->retry < b->retry) return 1; if (a->expire > b->expire) return -1; else if (a->expire < b->expire) return 1; if (a->minimum > b->minimum) return -1; else if (a->minimum < b->minimum) return 1; return 0; } /* dns_soa_cmp() */ size_t dns_soa_print(void *_dst, size_t lim, struct dns_soa *soa) { struct dns_buf dst = DNS_B_INTO(_dst, lim); dns_b_puts(&dst, soa->mname); dns_b_putc(&dst, ' '); dns_b_puts(&dst, soa->rname); dns_b_putc(&dst, ' '); dns_b_fmtju(&dst, soa->serial, 0); dns_b_putc(&dst, ' '); dns_b_fmtju(&dst, soa->refresh, 0); dns_b_putc(&dst, ' '); dns_b_fmtju(&dst, soa->retry, 0); dns_b_putc(&dst, ' '); dns_b_fmtju(&dst, soa->expire, 0); dns_b_putc(&dst, ' '); dns_b_fmtju(&dst, soa->minimum, 0); return dns_b_strllen(&dst); } /* dns_soa_print() */ int dns_srv_parse(struct dns_srv *srv, struct dns_rr *rr, struct dns_packet *P) { unsigned short rp; unsigned i; size_t n; int error; memset(srv, '\0', sizeof *srv); rp = rr->rd.p; if (rr->rd.len < 7) return DNS_EILLEGAL; for (i = 0; i < 2; i++, rp++) { srv->priority <<= 8; srv->priority |= (0xff & P->data[rp]); } for (i = 0; i < 2; i++, rp++) { srv->weight <<= 8; srv->weight |= (0xff & P->data[rp]); } for (i = 0; i < 2; i++, rp++) { srv->port <<= 8; srv->port |= (0xff & P->data[rp]); } if (!(n = dns_d_expand(srv->target, sizeof srv->target, rp, P, &error))) return error; else if (n >= sizeof srv->target) return DNS_EILLEGAL; return 0; } /* dns_srv_parse() */ int dns_srv_push(struct dns_packet *P, struct dns_srv *srv) { size_t end, len; int error; end = P->end; if (P->size - P->end < 2) goto toolong; P->end += 2; if (P->size - P->end < 6) goto toolong; P->data[P->end++] = 0xff & (srv->priority >> 8); P->data[P->end++] = 0xff & (srv->priority >> 0); P->data[P->end++] = 0xff & (srv->weight >> 8); P->data[P->end++] = 0xff & (srv->weight >> 0); P->data[P->end++] = 0xff & (srv->port >> 8); P->data[P->end++] = 0xff & (srv->port >> 0); if (0 == (len = dns_d_comp(&P->data[P->end], P->size - P->end, srv->target, strlen(srv->target), P, &error))) goto error; else if (P->size - P->end < len) goto toolong; P->end += len; if (P->end > 65535) goto toolong; len = P->end - end - 2; P->data[end + 0] = 0xff & (len >> 8); P->data[end + 1] = 0xff & (len >> 0); return 0; toolong: error = DNS_ENOBUFS; /* FALL THROUGH */ error: P->end = end; return error; } /* dns_srv_push() */ int dns_srv_cmp(const struct dns_srv *a, const struct dns_srv *b) { int cmp; if ((cmp = a->priority - b->priority)) return cmp; /* * FIXME: We need some sort of random seed to implement the dynamic * weighting required by RFC 2782. */ if ((cmp = a->weight - b->weight)) return cmp; if ((cmp = a->port - b->port)) return cmp; return strcasecmp(a->target, b->target); } /* dns_srv_cmp() */ size_t dns_srv_print(void *_dst, size_t lim, struct dns_srv *srv) { struct dns_buf dst = DNS_B_INTO(_dst, lim); dns_b_fmtju(&dst, srv->priority, 0); dns_b_putc(&dst, ' '); dns_b_fmtju(&dst, srv->weight, 0); dns_b_putc(&dst, ' '); dns_b_fmtju(&dst, srv->port, 0); dns_b_putc(&dst, ' '); dns_b_puts(&dst, srv->target); return dns_b_strllen(&dst); } /* dns_srv_print() */ size_t dns_srv_cname(void *dst, size_t lim, struct dns_srv *srv) { return dns_strlcpy(dst, srv->target, lim); } /* dns_srv_cname() */ unsigned int dns_opt_ttl(const struct dns_opt *opt) { unsigned int ttl = 0; ttl |= (0xffU & opt->rcode) << 24; ttl |= (0xffU & opt->version) << 16; ttl |= (0xffffU & opt->flags) << 0; return ttl; } /* dns_opt_ttl() */ unsigned short dns_opt_class(const struct dns_opt *opt) { return opt->maxudp; } /* dns_opt_class() */ struct dns_opt *dns_opt_init(struct dns_opt *opt, size_t size) { assert(size >= offsetof(struct dns_opt, data)); opt->size = size - offsetof(struct dns_opt, data); opt->len = 0; opt->rcode = 0; opt->version = 0; opt->maxudp = 0; return opt; } /* dns_opt_init() */ static union dns_any *dns_opt_initany(union dns_any *any, size_t size) { return dns_opt_init(&any->opt, size), any; } /* dns_opt_initany() */ int dns_opt_parse(struct dns_opt *opt, struct dns_rr *rr, struct dns_packet *P) { const struct dns_buf src = DNS_B_FROM(&P->data[rr->rd.p], rr->rd.len); struct dns_buf dst = DNS_B_INTO(opt->data, opt->size); int error; opt->rcode = 0xfff & ((rr->ttl >> 20) | dns_header(P)->rcode); opt->version = 0xff & (rr->ttl >> 16); opt->flags = 0xffff & rr->ttl; opt->maxudp = 0xffff & rr->class; while (src.p < src.pe) { int code, len; if (-1 == (code = dns_b_get16(&src, -1))) return src.error; if (-1 == (len = dns_b_get16(&src, -1))) return src.error; switch (code) { default: dns_b_put16(&dst, code); dns_b_put16(&dst, len); if ((error = dns_b_move(&dst, &src, len))) return error; break; } } return 0; } /* dns_opt_parse() */ int dns_opt_push(struct dns_packet *P, struct dns_opt *opt) { const struct dns_buf src = DNS_B_FROM(opt->data, opt->len); struct dns_buf dst = DNS_B_INTO(&P->data[P->end], (P->size - P->end)); int error; /* rdata length (see below) */ if ((error = dns_b_put16(&dst, 0))) goto error; /* ... push known options here */ /* push opaque option data */ if ((error = dns_b_move(&dst, &src, (size_t)(src.pe - src.p)))) goto error; /* rdata length */ if ((error = dns_b_pput16(&dst, dns_b_tell(&dst) - 2, 0))) goto error; #if !DNS_DEBUG_OPT_FORMERR P->end += dns_b_tell(&dst); #endif return 0; error: return error; } /* dns_opt_push() */ int dns_opt_cmp(const struct dns_opt *a, const struct dns_opt *b) { (void)a; (void)b; return -1; } /* dns_opt_cmp() */ size_t dns_opt_print(void *_dst, size_t lim, struct dns_opt *opt) { struct dns_buf dst = DNS_B_INTO(_dst, lim); size_t p; dns_b_putc(&dst, '"'); for (p = 0; p < opt->len; p++) { dns_b_putc(&dst, '\\'); dns_b_fmtju(&dst, opt->data[p], 3); } dns_b_putc(&dst, '"'); return dns_b_strllen(&dst); } /* dns_opt_print() */ int dns_ptr_parse(struct dns_ptr *ptr, struct dns_rr *rr, struct dns_packet *P) { return dns_ns_parse((struct dns_ns *)ptr, rr, P); } /* dns_ptr_parse() */ int dns_ptr_push(struct dns_packet *P, struct dns_ptr *ptr) { return dns_ns_push(P, (struct dns_ns *)ptr); } /* dns_ptr_push() */ size_t dns_ptr_qname(void *dst, size_t lim, int af, void *addr) { switch (af) { case AF_INET6: return dns_aaaa_arpa(dst, lim, addr); case AF_INET: return dns_a_arpa(dst, lim, addr); default: return dns_a_arpa(dst, lim, &(struct dns_a){ { INADDR_NONE } }); } } /* dns_ptr_qname() */ int dns_ptr_cmp(const struct dns_ptr *a, const struct dns_ptr *b) { return strcasecmp(a->host, b->host); } /* dns_ptr_cmp() */ size_t dns_ptr_print(void *dst, size_t lim, struct dns_ptr *ptr) { return dns_ns_print(dst, lim, (struct dns_ns *)ptr); } /* dns_ptr_print() */ size_t dns_ptr_cname(void *dst, size_t lim, struct dns_ptr *ptr) { return dns_strlcpy(dst, ptr->host, lim); } /* dns_ptr_cname() */ int dns_sshfp_parse(struct dns_sshfp *fp, struct dns_rr *rr, struct dns_packet *P) { unsigned p = rr->rd.p, pe = rr->rd.p + rr->rd.len; if (pe - p < 2) return DNS_EILLEGAL; fp->algo = P->data[p++]; fp->type = P->data[p++]; switch (fp->type) { case DNS_SSHFP_SHA1: if (pe - p < sizeof fp->digest.sha1) return DNS_EILLEGAL; memcpy(fp->digest.sha1, &P->data[p], sizeof fp->digest.sha1); break; default: break; } /* switch() */ return 0; } /* dns_sshfp_parse() */ int dns_sshfp_push(struct dns_packet *P, struct dns_sshfp *fp) { unsigned p = P->end, pe = P->size, n; if (pe - p < 4) return DNS_ENOBUFS; p += 2; P->data[p++] = 0xff & fp->algo; P->data[p++] = 0xff & fp->type; switch (fp->type) { case DNS_SSHFP_SHA1: if (pe - p < sizeof fp->digest.sha1) return DNS_ENOBUFS; memcpy(&P->data[p], fp->digest.sha1, sizeof fp->digest.sha1); p += sizeof fp->digest.sha1; break; default: return DNS_EILLEGAL; } /* switch() */ n = p - P->end - 2; P->data[P->end++] = 0xff & (n >> 8); P->data[P->end++] = 0xff & (n >> 0); P->end = p; return 0; } /* dns_sshfp_push() */ int dns_sshfp_cmp(const struct dns_sshfp *a, const struct dns_sshfp *b) { int cmp; if ((cmp = a->algo - b->algo) || (cmp = a->type - b->type)) return cmp; switch (a->type) { case DNS_SSHFP_SHA1: return memcmp(a->digest.sha1, b->digest.sha1, sizeof a->digest.sha1); default: return 0; } /* switch() */ /* NOT REACHED */ } /* dns_sshfp_cmp() */ size_t dns_sshfp_print(void *_dst, size_t lim, struct dns_sshfp *fp) { static const unsigned char hex[16] = "0123456789abcdef"; struct dns_buf dst = DNS_B_INTO(_dst, lim); size_t i; dns_b_fmtju(&dst, fp->algo, 0); dns_b_putc(&dst, ' '); dns_b_fmtju(&dst, fp->type, 0); dns_b_putc(&dst, ' '); switch (fp->type) { case DNS_SSHFP_SHA1: for (i = 0; i < sizeof fp->digest.sha1; i++) { dns_b_putc(&dst, hex[0x0f & (fp->digest.sha1[i] >> 4)]); dns_b_putc(&dst, hex[0x0f & (fp->digest.sha1[i] >> 0)]); } break; default: dns_b_putc(&dst, '0'); break; } /* switch() */ return dns_b_strllen(&dst); } /* dns_sshfp_print() */ struct dns_txt *dns_txt_init(struct dns_txt *txt, size_t size) { assert(size > offsetof(struct dns_txt, data)); txt->size = size - offsetof(struct dns_txt, data); txt->len = 0; return txt; } /* dns_txt_init() */ static union dns_any *dns_txt_initany(union dns_any *any, size_t size) { /* NB: union dns_any is already initialized as struct dns_txt */ (void)size; return any; } /* dns_txt_initany() */ int dns_txt_parse(struct dns_txt *txt, struct dns_rr *rr, struct dns_packet *P) { struct { unsigned char *b; size_t p, end; } dst, src; unsigned n; dst.b = txt->data; dst.p = 0; dst.end = txt->size; src.b = P->data; src.p = rr->rd.p; src.end = src.p + rr->rd.len; while (src.p < src.end) { n = 0xff & P->data[src.p++]; if (src.end - src.p < n || dst.end - dst.p < n) return DNS_EILLEGAL; memcpy(&dst.b[dst.p], &src.b[src.p], n); dst.p += n; src.p += n; } txt->len = dst.p; return 0; } /* dns_txt_parse() */ int dns_txt_push(struct dns_packet *P, struct dns_txt *txt) { struct { unsigned char *b; size_t p, end; } dst, src; unsigned n; dst.b = P->data; dst.p = P->end; dst.end = P->size; src.b = txt->data; src.p = 0; src.end = txt->len; if (dst.end - dst.p < 2) return DNS_ENOBUFS; n = txt->len + ((txt->len + 254) / 255); dst.b[dst.p++] = 0xff & (n >> 8); dst.b[dst.p++] = 0xff & (n >> 0); while (src.p < src.end) { n = DNS_PP_MIN(255, src.end - src.p); if (dst.p >= dst.end) return DNS_ENOBUFS; dst.b[dst.p++] = n; if (dst.end - dst.p < n) return DNS_ENOBUFS; memcpy(&dst.b[dst.p], &src.b[src.p], n); dst.p += n; src.p += n; } P->end = dst.p; return 0; } /* dns_txt_push() */ int dns_txt_cmp(const struct dns_txt *a, const struct dns_txt *b) { (void)a; (void)b; return -1; } /* dns_txt_cmp() */ size_t dns_txt_print(void *_dst, size_t lim, struct dns_txt *txt) { struct dns_buf src = DNS_B_FROM(txt->data, txt->len); struct dns_buf dst = DNS_B_INTO(_dst, lim); unsigned i; if (src.p < src.pe) { do { dns_b_putc(&dst, '"'); for (i = 0; i < 256 && src.p < src.pe; i++, src.p++) { if (*src.p < 32 || *src.p > 126 || *src.p == '"' || *src.p == '\\') { dns_b_putc(&dst, '\\'); dns_b_fmtju(&dst, *src.p, 3); } else { dns_b_putc(&dst, *src.p); } } dns_b_putc(&dst, '"'); dns_b_putc(&dst, ' '); } while (src.p < src.pe); dns_b_popc(&dst); } else { dns_b_putc(&dst, '"'); dns_b_putc(&dst, '"'); } return dns_b_strllen(&dst); } /* dns_txt_print() */ static const struct dns_rrtype { enum dns_type type; const char *name; union dns_any *(*init)(union dns_any *, size_t); int (*parse)(); int (*push)(); int (*cmp)(); size_t (*print)(); size_t (*cname)(); } dns_rrtypes[] = { { DNS_T_A, "A", 0, &dns_a_parse, &dns_a_push, &dns_a_cmp, &dns_a_print, 0, }, { DNS_T_AAAA, "AAAA", 0, &dns_aaaa_parse, &dns_aaaa_push, &dns_aaaa_cmp, &dns_aaaa_print, 0, }, { DNS_T_MX, "MX", 0, &dns_mx_parse, &dns_mx_push, &dns_mx_cmp, &dns_mx_print, &dns_mx_cname, }, { DNS_T_NS, "NS", 0, &dns_ns_parse, &dns_ns_push, &dns_ns_cmp, &dns_ns_print, &dns_ns_cname, }, { DNS_T_CNAME, "CNAME", 0, &dns_cname_parse, &dns_cname_push, &dns_cname_cmp, &dns_cname_print, &dns_cname_cname, }, { DNS_T_SOA, "SOA", 0, &dns_soa_parse, &dns_soa_push, &dns_soa_cmp, &dns_soa_print, 0, }, { DNS_T_SRV, "SRV", 0, &dns_srv_parse, &dns_srv_push, &dns_srv_cmp, &dns_srv_print, &dns_srv_cname, }, { DNS_T_OPT, "OPT", &dns_opt_initany, &dns_opt_parse, &dns_opt_push, &dns_opt_cmp, &dns_opt_print, 0, }, { DNS_T_PTR, "PTR", 0, &dns_ptr_parse, &dns_ptr_push, &dns_ptr_cmp, &dns_ptr_print, &dns_ptr_cname, }, { DNS_T_TXT, "TXT", &dns_txt_initany, &dns_txt_parse, &dns_txt_push, &dns_txt_cmp, &dns_txt_print, 0, }, { DNS_T_SPF, "SPF", &dns_txt_initany, &dns_txt_parse, &dns_txt_push, &dns_txt_cmp, &dns_txt_print, 0, }, { DNS_T_SSHFP, "SSHFP", 0, &dns_sshfp_parse, &dns_sshfp_push, &dns_sshfp_cmp, &dns_sshfp_print, 0, }, { DNS_T_AXFR, "AXFR", 0, 0, 0, 0, 0, 0, }, }; /* dns_rrtypes[] */ static const struct dns_rrtype *dns_rrtype(enum dns_type type) { const struct dns_rrtype *t; for (t = dns_rrtypes; t < endof(dns_rrtypes); t++) { if (t->type == type && t->parse) { return t; } } return NULL; } /* dns_rrtype() */ union dns_any *dns_any_init(union dns_any *any, size_t size) { dns_static_assert(dns_same_type(any->txt, any->rdata, 1), "unexpected rdata type"); return (union dns_any *)dns_txt_init(&any->rdata, size); } /* dns_any_init() */ static size_t dns_any_sizeof(union dns_any *any) { dns_static_assert(dns_same_type(any->txt, any->rdata, 1), "unexpected rdata type"); return offsetof(struct dns_txt, data) + any->rdata.size; } /* dns_any_sizeof() */ static union dns_any *dns_any_reinit(union dns_any *any, const struct dns_rrtype *t) { return (t->init)? t->init(any, dns_any_sizeof(any)) : any; } /* dns_any_reinit() */ int dns_any_parse(union dns_any *any, struct dns_rr *rr, struct dns_packet *P) { const struct dns_rrtype *t; if ((t = dns_rrtype(rr->type))) return t->parse(dns_any_reinit(any, t), rr, P); if (rr->rd.len > any->rdata.size) return DNS_EILLEGAL; memcpy(any->rdata.data, &P->data[rr->rd.p], rr->rd.len); any->rdata.len = rr->rd.len; return 0; } /* dns_any_parse() */ int dns_any_push(struct dns_packet *P, union dns_any *any, enum dns_type type) { const struct dns_rrtype *t; if ((t = dns_rrtype(type))) return t->push(P, any); if (P->size - P->end < any->rdata.len + 2) return DNS_ENOBUFS; P->data[P->end++] = 0xff & (any->rdata.len >> 8); P->data[P->end++] = 0xff & (any->rdata.len >> 0); memcpy(&P->data[P->end], any->rdata.data, any->rdata.len); P->end += any->rdata.len; return 0; } /* dns_any_push() */ int dns_any_cmp(const union dns_any *a, enum dns_type x, const union dns_any *b, enum dns_type y) { const struct dns_rrtype *t; int cmp; if ((cmp = x - y)) return cmp; if ((t = dns_rrtype(x))) return t->cmp(a, b); return -1; } /* dns_any_cmp() */ size_t dns_any_print(void *_dst, size_t lim, union dns_any *any, enum dns_type type) { const struct dns_rrtype *t; struct dns_buf src, dst; if ((t = dns_rrtype(type))) return t->print(_dst, lim, any); dns_b_from(&src, any->rdata.data, any->rdata.len); dns_b_into(&dst, _dst, lim); dns_b_putc(&dst, '"'); while (src.p < src.pe) { dns_b_putc(&dst, '\\'); dns_b_fmtju(&dst, *src.p++, 3); } dns_b_putc(&dst, '"'); return dns_b_strllen(&dst); } /* dns_any_print() */ size_t dns_any_cname(void *dst, size_t lim, union dns_any *any, enum dns_type type) { const struct dns_rrtype *t; if ((t = dns_rrtype(type)) && t->cname) return t->cname(dst, lim, any); return 0; } /* dns_any_cname() */ /* * H O S T S R O U T I N E S * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ struct dns_hosts { struct dns_hosts_entry { char host[DNS_D_MAXNAME + 1]; char arpa[73 + 1]; int af; union { struct in_addr a4; struct in6_addr a6; } addr; _Bool alias; struct dns_hosts_entry *next; } *head, **tail; dns_atomic_t refcount; }; /* struct dns_hosts */ struct dns_hosts *dns_hosts_open(int *error) { static const struct dns_hosts hosts_initializer = { .refcount = 1 }; struct dns_hosts *hosts; if (!(hosts = malloc(sizeof *hosts))) goto syerr; *hosts = hosts_initializer; hosts->tail = &hosts->head; return hosts; syerr: *error = dns_syerr(); free(hosts); return 0; } /* dns_hosts_open() */ void dns_hosts_close(struct dns_hosts *hosts) { struct dns_hosts_entry *ent, *xnt; if (!hosts || 1 != dns_hosts_release(hosts)) return; for (ent = hosts->head; ent; ent = xnt) { xnt = ent->next; free(ent); } free(hosts); return; } /* dns_hosts_close() */ dns_refcount_t dns_hosts_acquire(struct dns_hosts *hosts) { return dns_atomic_fetch_add(&hosts->refcount); } /* dns_hosts_acquire() */ dns_refcount_t dns_hosts_release(struct dns_hosts *hosts) { return dns_atomic_fetch_sub(&hosts->refcount); } /* dns_hosts_release() */ struct dns_hosts *dns_hosts_mortal(struct dns_hosts *hosts) { if (hosts) dns_hosts_release(hosts); return hosts; } /* dns_hosts_mortal() */ #if defined(BELLE_SIP_WINDOWS_PHONE) || defined(BELLE_SIP_WINDOWS_UNIVERSAL) static int dns_hosts_add_localhost(struct dns_hosts *hosts) { struct dns_hosts_entry ent; memset(&ent, '\0', sizeof(ent)); ent.af = AF_INET; dns_inet_pton(ent.af, "127.0.0.1", &ent.addr); dns_d_anchor(ent.host, sizeof(ent.host), "localhost", 9); dns_hosts_insert(hosts, ent.af, &ent.addr, ent.host, 0); memset(&ent, '\0', sizeof(ent)); ent.af = AF_INET6; dns_inet_pton(ent.af, "::1", &ent.addr); dns_d_anchor(ent.host, sizeof(ent.host), "localhost", 9); dns_hosts_insert(hosts, ent.af, &ent.addr, ent.host, 1); return 0; } #endif struct dns_hosts *dns_hosts_local(int *error_) { struct dns_hosts *hosts; int error; if (!(hosts = dns_hosts_open(&error))) goto error; #ifdef _WIN32 #if defined(BELLE_SIP_WINDOWS_PHONE) || defined(BELLE_SIP_WINDOWS_UNIVERSAL) if ((error = dns_hosts_add_localhost(hosts))) #else if ((error = dns_hosts_loadpath(hosts, "C:/Windows/System32/drivers/etc/hosts"))) #endif #else if ((error = dns_hosts_loadpath(hosts, "/etc/hosts"))) #endif goto error; return hosts; error: *error_ = error; dns_hosts_close(hosts); return 0; } /* dns_hosts_local() */ #define dns_hosts_issep(ch) (dns_isspace(ch)) #define dns_hosts_iscom(ch) ((ch) == '#' || (ch) == ';') int dns_hosts_loadfile(struct dns_hosts *hosts, FILE *fp) { struct dns_hosts_entry ent; char word[DNS_PP_MAX(INET6_ADDRSTRLEN, DNS_D_MAXNAME) + 1]; unsigned wp, wc, skip; int ch, error; rewind(fp); do { memset(&ent, '\0', sizeof ent); wc = 0; skip = 0; do { memset(word, '\0', sizeof word); wp = 0; while (EOF != (ch = fgetc(fp)) && ch != '\n') { skip |= !!dns_hosts_iscom(ch); if (skip) continue; if (dns_hosts_issep(ch)) break; if (wp < sizeof word - 1) word[wp] = ch; wp++; } if (!wp) continue; wc++; switch (wc) { case 0: break; case 1: ent.af = (strchr(word, ':'))? AF_INET6 : AF_INET; // Normalize some strange IPv4 addresses, eg. 127.1 --> 127.0.0.1 if (ent.af == AF_INET) { int nbdots = 0; char *p = word; while ((p = strchr(p, '.')) != NULL) { nbdots++; p++; } if (nbdots == 1) { p = strchr(word, '.'); p++; memmove(p + 4, p, strlen(p)); memcpy(p, "0.0.", 4); } } skip = (1 != dns_inet_pton(ent.af, word, &ent.addr)); break; default: if (!wp) break; dns_d_anchor(ent.host, sizeof ent.host, word, wp); if ((error = dns_hosts_insert(hosts, ent.af, &ent.addr, ent.host, (wc > 2)))) return error; break; } /* switch() */ } while (ch != EOF && ch != '\n'); } while (ch != EOF); return 0; } /* dns_hosts_loadfile() */ int dns_hosts_loadpath(struct dns_hosts *hosts, const char *path) { FILE *fp; int error; if (!(fp = dns_fopen(path, "rt", &error))) return error; error = dns_hosts_loadfile(hosts, fp); fclose(fp); return error; } /* dns_hosts_loadpath() */ int dns_hosts_dump(struct dns_hosts *hosts, FILE *fp) { struct dns_hosts_entry *ent, *xnt; char addr[INET6_ADDRSTRLEN + 1]; unsigned i; for (ent = hosts->head; ent; ent = xnt) { xnt = ent->next; dns_inet_ntop(ent->af, &ent->addr, addr, sizeof addr); fputs(addr, fp); for (i = strlen(addr); i < INET_ADDRSTRLEN; i++) fputc(' ', fp); fputc(' ', fp); fputs(ent->host, fp); fputc('\n', fp); } return 0; } /* dns_hosts_dump() */ int dns_hosts_insert(struct dns_hosts *hosts, int af, const void *addr, const void *host, _Bool alias) { struct dns_hosts_entry *ent; int error; if (!(ent = malloc(sizeof *ent))) goto syerr; dns_d_anchor(ent->host, sizeof ent->host, host, strlen(host)); switch ((ent->af = af)) { case AF_INET6: memcpy(&ent->addr.a6, addr, sizeof ent->addr.a6); dns_aaaa_arpa(ent->arpa, sizeof ent->arpa, addr); break; case AF_INET: memcpy(&ent->addr.a4, addr, sizeof ent->addr.a4); dns_a_arpa(ent->arpa, sizeof ent->arpa, addr); break; default: error = EINVAL; goto error; } /* switch() */ ent->alias = alias; ent->next = 0; *hosts->tail = ent; hosts->tail = &ent->next; return 0; syerr: error = dns_syerr(); error: free(ent); return error; } /* dns_hosts_insert() */ struct dns_packet *dns_hosts_query(struct dns_hosts *hosts, struct dns_packet *Q, int *error_) { struct dns_packet *P = dns_p_new(512); struct dns_packet *A = 0; struct dns_rr rr; struct dns_hosts_entry *ent; int error, af; char qname[DNS_D_MAXNAME + 1]; size_t qlen; if ((error = dns_rr_parse(&rr, 12, Q))) goto error; if (!(qlen = dns_d_expand(qname, sizeof qname, rr.dn.p, Q, &error))) goto error; else if (qlen >= sizeof qname) goto toolong; if ((error = dns_p_push(P, DNS_S_QD, qname, qlen, rr.type, rr.class, 0, 0))) goto error; switch (rr.type) { case DNS_T_PTR: for (ent = hosts->head; ent; ent = ent->next) { if (ent->alias || 0 != strcasecmp(qname, ent->arpa)) continue; if ((error = dns_p_push(P, DNS_S_AN, qname, qlen, rr.type, rr.class, 0, ent->host))) goto error; } break; case DNS_T_AAAA: af = AF_INET6; goto loop; case DNS_T_A: af = AF_INET; loop: for (ent = hosts->head; ent; ent = ent->next) { if (ent->af != af || 0 != strcasecmp(qname, ent->host)) continue; if ((error = dns_p_push(P, DNS_S_AN, qname, qlen, rr.type, rr.class, 0, &ent->addr))) goto error; } break; default: break; } /* switch() */ if (!(A = dns_p_copy(dns_p_make(P->end, &error), P))) goto error; return A; toolong: error = DNS_EILLEGAL; error: *error_ = error; dns_p_free(A); return 0; } /* dns_hosts_query() */ /* * R E S O L V . C O N F R O U T I N E S * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ struct dns_resolv_conf *dns_resconf_open(int *error) { static const struct dns_resolv_conf resconf_initializer = { .lookup = "fb", .family = { AF_INET, AF_INET6 }, .options = { .ndots = 1, .timeout = 5, .attempts = 2, .tcp = DNS_RESCONF_TCP_ENABLE, }, .iface = { .ss_family = AF_INET }, }; struct dns_resolv_conf *resconf; struct sockaddr_in *sin; if (!(resconf = malloc(sizeof *resconf))) goto syerr; *resconf = resconf_initializer; sin = (struct sockaddr_in *)&resconf->nameserver[0]; sin->sin_family = AF_INET; sin->sin_addr.s_addr = INADDR_ANY; sin->sin_port = htons(53); #if defined(SA_LEN) sin->sin_len = sizeof *sin; #endif if (0 != gethostname(resconf->search[0], sizeof resconf->search[0])) goto syerr; dns_d_anchor(resconf->search[0], sizeof resconf->search[0], resconf->search[0], strlen(resconf->search[0])); dns_d_cleave(resconf->search[0], sizeof resconf->search[0], resconf->search[0], strlen(resconf->search[0])); /* * XXX: If gethostname() returned a string without any label * separator, then search[0][0] should be NUL. */ dns_resconf_acquire(resconf); return resconf; syerr: *error = dns_syerr(); free(resconf); return 0; } /* dns_resconf_open() */ void dns_resconf_close(struct dns_resolv_conf *resconf) { if (!resconf || 1 != dns_resconf_release(resconf)) return /* void */; free(resconf); } /* dns_resconf_close() */ dns_refcount_t dns_resconf_acquire(struct dns_resolv_conf *resconf) { return dns_atomic_fetch_add(&resconf->_.refcount); } /* dns_resconf_acquire() */ dns_refcount_t dns_resconf_release(struct dns_resolv_conf *resconf) { return dns_atomic_fetch_sub(&resconf->_.refcount); } /* dns_resconf_release() */ struct dns_resolv_conf *dns_resconf_mortal(struct dns_resolv_conf *resconf) { if (resconf) dns_resconf_release(resconf); return resconf; } /* dns_resconf_mortal() */ struct dns_resolv_conf *dns_resconf_local(int *error_) { struct dns_resolv_conf *resconf; int error; if (!(resconf = dns_resconf_open(&error))) goto error; if ((error = dns_resconf_loadpath(resconf, "/etc/resolv.conf"))) { /* * NOTE: Both the glibc and BIND9 resolvers ignore a missing * /etc/resolv.conf, defaulting to a nameserver of * 127.0.0.1. See also dns_hints_insert_resconf, and the * default initialization of nameserver[0] in * dns_resconf_open. */ if (error != ENOENT) goto error; } if ((error = dns_nssconf_loadpath(resconf, "/etc/nsswitch.conf"))) { if (error != ENOENT) goto error; } return resconf; error: *error_ = error; dns_resconf_close(resconf); return 0; } /* dns_resconf_local() */ struct dns_resolv_conf *dns_resconf_root(int *error) { struct dns_resolv_conf *resconf; if ((resconf = dns_resconf_local(error))) resconf->options.recurse = 1; return resconf; } /* dns_resconf_root() */ static time_t dns_resconf_timeout(const struct dns_resolv_conf *resconf) { return (time_t)DNS_PP_MIN(INT_MAX, resconf->options.timeout); } /* dns_resconf_timeout() */ enum dns_resconf_keyword { DNS_RESCONF_NAMESERVER, DNS_RESCONF_DOMAIN, DNS_RESCONF_SEARCH, DNS_RESCONF_LOOKUP, DNS_RESCONF_FILE, DNS_RESCONF_BIND, DNS_RESCONF_CACHE, DNS_RESCONF_FAMILY, DNS_RESCONF_INET4, DNS_RESCONF_INET6, DNS_RESCONF_OPTIONS, DNS_RESCONF_EDNS0, DNS_RESCONF_NDOTS, DNS_RESCONF_TIMEOUT, DNS_RESCONF_ATTEMPTS, DNS_RESCONF_ROTATE, DNS_RESCONF_RECURSE, DNS_RESCONF_SMART, DNS_RESCONF_TCP, DNS_RESCONF_TCPx, DNS_RESCONF_INTERFACE, DNS_RESCONF_ZERO, DNS_RESCONF_ONE, DNS_RESCONF_ENABLE, DNS_RESCONF_ONLY, DNS_RESCONF_DISABLE, }; /* enum dns_resconf_keyword */ static enum dns_resconf_keyword dns_resconf_keyword(const char *word) { static const char *words[] = { [DNS_RESCONF_NAMESERVER] = "nameserver", [DNS_RESCONF_DOMAIN] = "domain", [DNS_RESCONF_SEARCH] = "search", [DNS_RESCONF_LOOKUP] = "lookup", [DNS_RESCONF_FILE] = "file", [DNS_RESCONF_BIND] = "bind", [DNS_RESCONF_CACHE] = "cache", [DNS_RESCONF_FAMILY] = "family", [DNS_RESCONF_INET4] = "inet4", [DNS_RESCONF_INET6] = "inet6", [DNS_RESCONF_OPTIONS] = "options", [DNS_RESCONF_EDNS0] = "edns0", [DNS_RESCONF_ROTATE] = "rotate", [DNS_RESCONF_RECURSE] = "recurse", [DNS_RESCONF_SMART] = "smart", [DNS_RESCONF_TCP] = "tcp", [DNS_RESCONF_INTERFACE] = "interface", [DNS_RESCONF_ZERO] = "0", [DNS_RESCONF_ONE] = "1", [DNS_RESCONF_ENABLE] = "enable", [DNS_RESCONF_ONLY] = "only", [DNS_RESCONF_DISABLE] = "disable", }; unsigned i; for (i = 0; i < lengthof(words); i++) { if (words[i] && 0 == strcasecmp(words[i], word)) return i; } if (0 == strncasecmp(word, "ndots:", sizeof "ndots:" - 1)) return DNS_RESCONF_NDOTS; if (0 == strncasecmp(word, "timeout:", sizeof "timeout:" - 1)) return DNS_RESCONF_TIMEOUT; if (0 == strncasecmp(word, "attempts:", sizeof "attempts:" - 1)) return DNS_RESCONF_ATTEMPTS; if (0 == strncasecmp(word, "tcp:", sizeof "tcp:" - 1)) return DNS_RESCONF_TCPx; return -1; } /* dns_resconf_keyword() */ /** OpenBSD-style "[1.2.3.4]:53" nameserver syntax */ int dns_resconf_pton(struct sockaddr_storage *ss, const char *src) { struct { char buf[128], *p; } addr = { "", addr.buf }; unsigned short port = 0; struct addrinfo *ai; int ch, af = AF_INET; while ((ch = *src++)) { switch (ch) { case ' ': /* FALL THROUGH */ case '\t': break; case '[': break; case ']': while ((ch = *src++)) { if (dns_isdigit(ch)) { port *= 10; port += ch - '0'; } } goto inet; case ':': af = AF_INET6; /* FALL THROUGH */ default: if (addr.p < endof(addr.buf) - 1) *addr.p++ = ch; break; } /* switch() */ } /* while() */ inet: port = (!port)? 53 : port; ai = bctbx_ip_address_to_addrinfo(af, SOCK_DGRAM, addr.buf, port); if (ai == NULL) return dns_soerr(); memcpy(ss, ai->ai_addr, ai->ai_addrlen); bctbx_freeaddrinfo(ai); return 0; } /* dns_resconf_pton() */ #define dns_resconf_issep(ch) (dns_isspace(ch) || (ch) == ',') #define dns_resconf_iscom(ch) ((ch) == '#' || (ch) == ';') int dns_resconf_loadfile(struct dns_resolv_conf *resconf, FILE *fp) { unsigned sa_count = 0; char words[6][DNS_D_MAXNAME + 1]; unsigned wp, wc, i, j, n; int ch, error; rewind(fp); do { memset(words, '\0', sizeof words); wp = 0; wc = 0; while (EOF != (ch = getc(fp)) && ch != '\n') { if (dns_resconf_issep(ch)) { if (wp > 0) { wp = 0; if (++wc >= lengthof(words)) goto skip; } } else if (dns_resconf_iscom(ch)) { skip: do { ch = getc(fp); } while (ch != EOF && ch != '\n'); break; } else if (wp < sizeof words[wc] - 1) { words[wc][wp++] = ch; } else { wp = 0; /* drop word */ goto skip; } } if (wp > 0) wc++; if (wc < 2) continue; switch (dns_resconf_keyword(words[0])) { case DNS_RESCONF_NAMESERVER: if (sa_count >= lengthof(resconf->nameserver)) continue; if ((error = dns_resconf_pton(&resconf->nameserver[sa_count], words[1]))) continue; sa_count++; break; case DNS_RESCONF_DOMAIN: case DNS_RESCONF_SEARCH: memset(resconf->search, '\0', sizeof resconf->search); for (i = 1, j = 0; i < wc && j < lengthof(resconf->search); i++, j++) dns_d_anchor(resconf->search[j], sizeof resconf->search[j], words[i], strlen(words[i])); break; case DNS_RESCONF_LOOKUP: for (i = 1, j = 0; i < wc && j < lengthof(resconf->lookup); i++) { switch (dns_resconf_keyword(words[i])) { case DNS_RESCONF_FILE: resconf->lookup[j++] = 'f'; break; case DNS_RESCONF_BIND: resconf->lookup[j++] = 'b'; break; case DNS_RESCONF_CACHE: resconf->lookup[j++] = 'c'; break; default: break; } /* switch() */ } /* for() */ break; case DNS_RESCONF_FAMILY: for (i = 1, j = 0; i < wc && j < lengthof(resconf->family); i++) { switch (dns_resconf_keyword(words[i])) { case DNS_RESCONF_INET4: resconf->family[j++] = AF_INET; break; case DNS_RESCONF_INET6: resconf->family[j++] = AF_INET6; break; default: break; } } break; case DNS_RESCONF_OPTIONS: for (i = 1; i < wc; i++) { switch (dns_resconf_keyword(words[i])) { case DNS_RESCONF_EDNS0: resconf->options.edns0 = 1; break; case DNS_RESCONF_NDOTS: for (j = sizeof "ndots:" - 1, n = 0; dns_isdigit(words[i][j]); j++) { n *= 10; n += words[i][j] - '0'; } /* for() */ resconf->options.ndots = n; break; case DNS_RESCONF_TIMEOUT: for (j = sizeof "timeout:" - 1, n = 0; dns_isdigit(words[i][j]); j++) { n *= 10; n += words[i][j] - '0'; } /* for() */ resconf->options.timeout = n; break; case DNS_RESCONF_ATTEMPTS: for (j = sizeof "attempts:" - 1, n = 0; dns_isdigit(words[i][j]); j++) { n *= 10; n += words[i][j] - '0'; } /* for() */ resconf->options.attempts = n; break; case DNS_RESCONF_ROTATE: resconf->options.rotate = 1; break; case DNS_RESCONF_RECURSE: resconf->options.recurse = 1; break; case DNS_RESCONF_SMART: resconf->options.smart = 1; break; case DNS_RESCONF_TCP: resconf->options.tcp = DNS_RESCONF_TCP_ONLY; break; case DNS_RESCONF_TCPx: switch (dns_resconf_keyword(&words[i][sizeof "tcp:" - 1])) { case DNS_RESCONF_ENABLE: resconf->options.tcp = DNS_RESCONF_TCP_ENABLE; break; case DNS_RESCONF_ONE: case DNS_RESCONF_ONLY: resconf->options.tcp = DNS_RESCONF_TCP_ONLY; break; case DNS_RESCONF_ZERO: case DNS_RESCONF_DISABLE: resconf->options.tcp = DNS_RESCONF_TCP_DISABLE; break; default: break; } /* switch() */ break; default: break; } /* switch() */ } /* for() */ break; case DNS_RESCONF_INTERFACE: for (i = 0, n = 0; dns_isdigit(words[2][i]); i++) { n *= 10; n += words[2][i] - '0'; } dns_resconf_setiface(resconf, words[1], n); break; default: break; } /* switch() */ } while (ch != EOF); return 0; } /* dns_resconf_loadfile() */ int dns_resconf_loadpath(struct dns_resolv_conf *resconf, const char *path) { FILE *fp; int error; if (!(fp = dns_fopen(path, "rt", &error))) return error; error = dns_resconf_loadfile(resconf, fp); fclose(fp); return error; } /* dns_resconf_loadpath() */ #ifdef USE_FIXED_NAMESERVERS int dns_resconf_load_fixed_nameservers(struct dns_resolv_conf *resconf) { const char * const nameservers[] = { "8.8.8.8", "8.8.4.4" }; int i; int error = 0; for (i = 0; !error && (i < lengthof(nameservers)); i++) { error = dns_resconf_pton(&resconf->nameserver[i], nameservers[i]); } return error; } #endif /* USE_FIXED_NAMESERVERS */ #ifdef USE_STRUCT_RES_STATE_NAMESERVERS int dns_resconf_load_struct_res_state_nameservers(struct dns_resolv_conf *resconf) { int i; struct __res_state *rs = __res_get_state(); for (i = 0; i < rs->nscount; i++) { memcpy(&resconf->nameserver[i], (struct sockaddr_storage *)&rs->nsaddr_list[i], sizeof(struct sockaddr_in)); } return 0; } #endif /* USE_STRUCT_RES_STATE_NAMESERVERS */ #if defined(_WIN32) && !defined(USE_FIXED_NAMESERVERS) int dns_resconf_loadwin(struct dns_resolv_conf *resconf) { FIXED_INFO *pFixedInfo; ULONG ulOutBufLen; DWORD dwRetVal; IP_ADDR_STRING *pIPAddr; unsigned sa_count = 0; int error; pFixedInfo = (FIXED_INFO *) malloc(sizeof(FIXED_INFO)); if (pFixedInfo == NULL) { return -1; } ulOutBufLen = sizeof(FIXED_INFO); if (GetNetworkParams(pFixedInfo, &ulOutBufLen) == ERROR_BUFFER_OVERFLOW) { free(pFixedInfo); pFixedInfo = (FIXED_INFO *) malloc(ulOutBufLen); if (pFixedInfo == NULL) { return -1; } } if ((dwRetVal = GetNetworkParams(pFixedInfo, &ulOutBufLen)) == NO_ERROR) { memset(resconf->search, '\0', sizeof resconf->search); memcpy(resconf->search[0], pFixedInfo->DomainName, sizeof pFixedInfo->DomainName); pIPAddr = &pFixedInfo->DnsServerList; do { error = dns_resconf_pton(&resconf->nameserver[sa_count], pIPAddr->IpAddress.String); pIPAddr = pIPAddr->Next; sa_count++; } while (!error && pIPAddr && (sa_count < lengthof(resconf->nameserver))); } free(pFixedInfo); return 0; } #endif /* dns_resconf_loadwin() */ #ifdef __ANDROID__ int dns_resconf_loadandroid(struct dns_resolv_conf *resconf) { char dns[PROP_VALUE_MAX]; char prop_name[PROP_NAME_MAX]; unsigned int sa_count = 0; int error = 0; unsigned int i; for (i = 1; !error && (i <= lengthof(resconf->nameserver)); i++) { snprintf(prop_name, sizeof(prop_name), "net.dns%d", i); if (__system_property_get(prop_name, dns) > 0) { if (dns_resconf_pton(&resconf->nameserver[sa_count], dns) == 0){ sa_count++; } } } if (sa_count == 0) { /* No net.dnsX property found, return an error. */ error = -1; } return error; } /* dns_resconf_loadandroid */ #endif #ifdef HAVE_RESINIT static int guess_scope_id(void){ struct ifaddrs *ifp; struct ifaddrs *ifpstart; int scope_id = -1; if (getifaddrs(&ifpstart) < 0) { return -1; } #ifndef __linux__ #define UP_FLAG IFF_UP /* interface is up */ #else #define UP_FLAG IFF_RUNNING /* resources allocated */ #endif for (ifp = ifpstart; ifp != NULL; ifp = ifp->ifa_next) { if (ifp->ifa_addr && ifp->ifa_addr->sa_family == AF_INET6 && (ifp->ifa_flags & UP_FLAG) && !(ifp->ifa_flags & IFF_LOOPBACK)) { struct sockaddr_in6 *in6 = (struct sockaddr_in6*)ifp->ifa_addr; if (in6->sin6_addr.__u6_addr.__u6_addr16[0] == 0x80fe){ scope_id = in6->sin6_scope_id; belle_sip_warning("Best guess for scope id is %i", scope_id); break; } } } freeifaddrs(ifpstart); return scope_id; } int dns_resconf_loadfromresolv(struct dns_resolv_conf *resconf) { struct __res_state res; union res_sockaddr_union addresses[3]; int i,error,write_index; if ((error = res_ninit(&res))) { return error; } error=res_getservers(&res,addresses,3); if (error>0){ for (i = 0,write_index=0; inameserver[write_index++],&addresses[i],sizeof(union res_sockaddr_union)); } } else { memcpy(&resconf->nameserver[write_index++],&addresses[i],sizeof(union res_sockaddr_union)); } } error=0; }else error=-1; res_ndestroy(&res); return error; } #endif /*HAVE_RESINIT*/ struct dns_anyconf { char *token[16]; unsigned count; char buffer[1024], *tp, *cp; }; /* struct dns_anyconf */ static void dns_anyconf_reset(struct dns_anyconf *cf) { cf->count = 0; cf->tp = cf->cp = cf->buffer; } /* dns_anyconf_reset() */ static int dns_anyconf_push(struct dns_anyconf *cf) { if (!(cf->cp < endof(cf->buffer) && cf->count < lengthof(cf->token))) return ENOMEM; *cf->cp++ = '\0'; cf->token[cf->count++] = cf->tp; cf->tp = cf->cp; return 0; } /* dns_anyconf_push() */ static void dns_anyconf_pop(struct dns_anyconf *cf) { if (cf->count > 0) { --cf->count; cf->tp = cf->cp = cf->token[cf->count]; cf->token[cf->count] = 0; } } /* dns_anyconf_pop() */ static int dns_anyconf_addc(struct dns_anyconf *cf, int ch) { if (!(cf->cp < endof(cf->buffer))) return ENOMEM; *cf->cp++ = ch; return 0; } /* dns_anyconf_addc() */ static _Bool dns_anyconf_match(const char *pat, int mc) { _Bool match; int pc; if (*pat == '^') { match = 0; ++pat; } else { match = 1; } while ((pc = *(const unsigned char *)pat++)) { switch (pc) { case '%': if (!(pc = *(const unsigned char *)pat++)) return !match; switch (pc) { case 'a': if (dns_isalpha(mc)) return match; break; case 'd': if (dns_isdigit(mc)) return match; break; case 'w': if (dns_isalnum(mc)) return match; break; case 's': if (dns_isspace(mc)) return match; break; default: if (mc == pc) return match; break; } /* switch() */ break; default: if (mc == pc) return match; break; } /* switch() */ } /* while() */ return !match; } /* dns_anyconf_match() */ static int dns_anyconf_peek(FILE *fp) { int ch; ch = getc(fp); ungetc(ch, fp); return ch; } /* dns_anyconf_peek() */ static size_t dns_anyconf_skip(const char *pat, FILE *fp) { size_t count = 0; int ch; while (EOF != (ch = getc(fp))) { if (dns_anyconf_match(pat, ch)) { count++; continue; } ungetc(ch, fp); break; } return count; } /* dns_anyconf_skip() */ static size_t dns_anyconf_scan(struct dns_anyconf *cf, const char *pat, FILE *fp, int *error) { size_t len; int ch; while (EOF != (ch = getc(fp))) { if (dns_anyconf_match(pat, ch)) { if ((*error = dns_anyconf_addc(cf, ch))) return 0; continue; } else { ungetc(ch, fp); break; } } if ((len = cf->cp - cf->tp)) { if ((*error = dns_anyconf_push(cf))) return 0; return len; } else { *error = 0; return 0; } } /* dns_anyconf_scan() */ DNS_NOTUSED static void dns_anyconf_dump(struct dns_anyconf *cf, FILE *fp) { unsigned i; fprintf(fp, "tokens:"); for (i = 0; i < cf->count; i++) { fprintf(fp, " %s", cf->token[i]); } fputc('\n', fp); } /* dns_anyconf_dump() */ enum dns_nssconf_keyword { DNS_NSSCONF_INVALID = 0, DNS_NSSCONF_HOSTS = 1, DNS_NSSCONF_SUCCESS, DNS_NSSCONF_NOTFOUND, DNS_NSSCONF_UNAVAIL, DNS_NSSCONF_TRYAGAIN, DNS_NSSCONF_CONTINUE, DNS_NSSCONF_RETURN, DNS_NSSCONF_FILES, DNS_NSSCONF_DNS, DNS_NSSCONF_MDNS, DNS_NSSCONF_LAST, }; /* enum dns_nssconf_keyword */ static enum dns_nssconf_keyword dns_nssconf_keyword(const char *word) { static const char *list[] = { [DNS_NSSCONF_HOSTS] = "hosts", [DNS_NSSCONF_SUCCESS] = "success", [DNS_NSSCONF_NOTFOUND] = "notfound", [DNS_NSSCONF_UNAVAIL] = "unavail", [DNS_NSSCONF_TRYAGAIN] = "tryagain", [DNS_NSSCONF_CONTINUE] = "continue", [DNS_NSSCONF_RETURN] = "return", [DNS_NSSCONF_FILES] = "files", [DNS_NSSCONF_DNS] = "dns", [DNS_NSSCONF_MDNS] = "mdns", }; unsigned i; for (i = 1; i < lengthof(list); i++) { if (list[i] && 0 == strcasecmp(list[i], word)) return i; } return DNS_NSSCONF_INVALID; } /* dns_nssconf_keyword() */ static enum dns_nssconf_keyword dns_nssconf_c2k(int ch) { static const char map[] = { ['S'] = DNS_NSSCONF_SUCCESS, ['N'] = DNS_NSSCONF_NOTFOUND, ['U'] = DNS_NSSCONF_UNAVAIL, ['T'] = DNS_NSSCONF_TRYAGAIN, ['C'] = DNS_NSSCONF_CONTINUE, ['R'] = DNS_NSSCONF_RETURN, ['f'] = DNS_NSSCONF_FILES, ['F'] = DNS_NSSCONF_FILES, ['d'] = DNS_NSSCONF_DNS, ['D'] = DNS_NSSCONF_DNS, ['b'] = DNS_NSSCONF_DNS, ['B'] = DNS_NSSCONF_DNS, ['m'] = DNS_NSSCONF_MDNS, ['M'] = DNS_NSSCONF_MDNS, }; return (ch >= 0 && ch < (int)lengthof(map))? map[ch] : DNS_NSSCONF_INVALID; } /* dns_nssconf_c2k() */ DNS_PRAGMA_PUSH DNS_PRAGMA_QUIET static int dns_nssconf_k2c(int k) { static const char map[DNS_NSSCONF_LAST] = { [DNS_NSSCONF_SUCCESS] = 'S', [DNS_NSSCONF_NOTFOUND] = 'N', [DNS_NSSCONF_UNAVAIL] = 'U', [DNS_NSSCONF_TRYAGAIN] = 'T', [DNS_NSSCONF_CONTINUE] = 'C', [DNS_NSSCONF_RETURN] = 'R', [DNS_NSSCONF_FILES] = 'f', [DNS_NSSCONF_DNS] = 'b', [DNS_NSSCONF_MDNS] = 'm', }; return (k >= 0 && k < (int)lengthof(map))? (map[k]? map[k] : '?') : '?'; } /* dns_nssconf_k2c() */ static const char *dns_nssconf_k2s(int k) { static const char *const map[DNS_NSSCONF_LAST] = { [DNS_NSSCONF_SUCCESS] = "SUCCESS", [DNS_NSSCONF_NOTFOUND] = "NOTFOUND", [DNS_NSSCONF_UNAVAIL] = "UNAVAIL", [DNS_NSSCONF_TRYAGAIN] = "TRYAGAIN", [DNS_NSSCONF_CONTINUE] = "continue", [DNS_NSSCONF_RETURN] = "return", [DNS_NSSCONF_FILES] = "files", [DNS_NSSCONF_DNS] = "dns", [DNS_NSSCONF_MDNS] = "mdns", }; return (k >= 0 && k < (int)lengthof(map))? (map[k]? map[k] : "") : ""; } /* dns_nssconf_k2s() */ DNS_PRAGMA_POP int dns_nssconf_loadfile(struct dns_resolv_conf *resconf, FILE *fp) { enum dns_nssconf_keyword source, status, action; char lookup[sizeof resconf->lookup] = "", *lp; struct dns_anyconf cf; size_t i; int error; while (!feof(fp) && !ferror(fp)) { dns_anyconf_reset(&cf); dns_anyconf_skip("%s", fp); if (!dns_anyconf_scan(&cf, "%w_", fp, &error)) goto nextent; if (DNS_NSSCONF_HOSTS != dns_nssconf_keyword(cf.token[0])) goto nextent; dns_anyconf_pop(&cf); if (!dns_anyconf_skip(": \t", fp)) goto nextent; *(lp = lookup) = '\0'; while (dns_anyconf_scan(&cf, "%w_", fp, &error)) { dns_anyconf_skip(" \t", fp); if ('[' == dns_anyconf_peek(fp)) { dns_anyconf_skip("[ \t", fp); while (dns_anyconf_scan(&cf, "%w_!", fp, &error)) { dns_anyconf_skip("= \t", fp); if (!dns_anyconf_scan(&cf, "%w_", fp, &error)) { dns_anyconf_pop(&cf); /* discard status */ dns_anyconf_skip("^#;]\n", fp); /* skip to end of criteria */ break; } dns_anyconf_skip(" \t", fp); } dns_anyconf_skip("] \t", fp); } if ((size_t)(endof(lookup) - lp) < cf.count + 1) /* +1 for '\0' */ goto nextsrc; source = dns_nssconf_keyword(cf.token[0]); switch (source) { case DNS_NSSCONF_DNS: case DNS_NSSCONF_MDNS: case DNS_NSSCONF_FILES: *lp++ = dns_nssconf_k2c(source); break; default: goto nextsrc; } for (i = 1; i + 1 < cf.count; i += 2) { status = dns_nssconf_keyword(cf.token[i]); action = dns_nssconf_keyword(cf.token[i + 1]); switch (status) { case DNS_NSSCONF_SUCCESS: case DNS_NSSCONF_NOTFOUND: case DNS_NSSCONF_UNAVAIL: case DNS_NSSCONF_TRYAGAIN: *lp++ = dns_nssconf_k2c(status); break; default: continue; } switch (action) { case DNS_NSSCONF_CONTINUE: case DNS_NSSCONF_RETURN: break; default: action = (status == DNS_NSSCONF_SUCCESS) ? DNS_NSSCONF_RETURN : DNS_NSSCONF_CONTINUE; break; } *lp++ = dns_nssconf_k2c(action); } nextsrc: *lp = '\0'; dns_anyconf_reset(&cf); } nextent: dns_anyconf_skip("^\n", fp); } if (*lookup) strncpy(resconf->lookup, lookup, sizeof resconf->lookup); return 0; } /* dns_nssconf_loadfile() */ int dns_nssconf_loadpath(struct dns_resolv_conf *resconf, const char *path) { FILE *fp; int error; if (!(fp = dns_fopen(path, "rt", &error))) return error; error = dns_nssconf_loadfile(resconf, fp); fclose(fp); return error; } /* dns_nssconf_loadpath() */ struct dns_nssconf_source { enum dns_nssconf_keyword source, success, notfound, unavail, tryagain; }; /* struct dns_nssconf_source */ typedef unsigned dns_nssconf_i; static DNS_INLINE int dns_nssconf_peek(const struct dns_resolv_conf *resconf, dns_nssconf_i state) { return (state < lengthof(resconf->lookup) && resconf->lookup[state])? resconf->lookup[state] : 0; } /* dns_nssconf_peek() */ static _Bool dns_nssconf_next(struct dns_nssconf_source *src, const struct dns_resolv_conf *resconf, dns_nssconf_i *state) { int source, status, action; src->source = DNS_NSSCONF_INVALID; src->success = DNS_NSSCONF_RETURN; src->notfound = DNS_NSSCONF_CONTINUE; src->unavail = DNS_NSSCONF_CONTINUE; src->tryagain = DNS_NSSCONF_CONTINUE; while ((source = dns_nssconf_peek(resconf, *state))) { source = dns_nssconf_c2k(source); ++*state; switch (source) { case DNS_NSSCONF_FILES: case DNS_NSSCONF_DNS: case DNS_NSSCONF_MDNS: src->source = source; break; default: continue; } while ((status = dns_nssconf_peek(resconf, *state)) && (action = dns_nssconf_peek(resconf, *state + 1))) { status = dns_nssconf_c2k(status); action = dns_nssconf_c2k(action); switch (action) { case DNS_NSSCONF_RETURN: case DNS_NSSCONF_CONTINUE: break; default: goto done; } switch (status) { case DNS_NSSCONF_SUCCESS: src->success = action; break; case DNS_NSSCONF_NOTFOUND: src->notfound = action; break; case DNS_NSSCONF_UNAVAIL: src->unavail = action; break; case DNS_NSSCONF_TRYAGAIN: src->tryagain = action; break; default: goto done; } *state += 2; } break; } done: return src->source != DNS_NSSCONF_INVALID; } /* dns_nssconf_next() */ static int dns_nssconf_dump_status(int status, int action, unsigned *count, FILE *fp) { switch (status) { case DNS_NSSCONF_SUCCESS: if (action == DNS_NSSCONF_RETURN) return 0; break; default: if (action == DNS_NSSCONF_CONTINUE) return 0; break; } fputc(' ', fp); if (!*count) fputc('[', fp); fprintf(fp, "%s=%s", dns_nssconf_k2s(status), dns_nssconf_k2s(action)); ++*count; return 0; } /* dns_nssconf_dump_status() */ int dns_nssconf_dump(struct dns_resolv_conf *resconf, FILE *fp) { struct dns_nssconf_source src; dns_nssconf_i i = 0; fputs("hosts:", fp); while (dns_nssconf_next(&src, resconf, &i)) { unsigned n = 0; fprintf(fp, " %s", dns_nssconf_k2s(src.source)); dns_nssconf_dump_status(DNS_NSSCONF_SUCCESS, src.success, &n, fp); dns_nssconf_dump_status(DNS_NSSCONF_NOTFOUND, src.notfound, &n, fp); dns_nssconf_dump_status(DNS_NSSCONF_UNAVAIL, src.unavail, &n, fp); dns_nssconf_dump_status(DNS_NSSCONF_TRYAGAIN, src.tryagain, &n, fp); if (n) fputc(']', fp); } fputc('\n', fp); return 0; } /* dns_nssconf_dump() */ int dns_resconf_setiface(struct dns_resolv_conf *resconf, const char *addr, unsigned short port) { int af = (strchr(addr, ':'))? AF_INET6 : AF_INET; int error; if ((error = dns_pton(af, addr, dns_sa_addr(af, &resconf->iface, NULL)))) return error; *dns_sa_port(af, &resconf->iface) = htons(port); resconf->iface.ss_family = af; return 0; } /* dns_resconf_setiface() */ size_t dns_resconf_search(void *dst, size_t lim, const void *qname, size_t qlen, struct dns_resolv_conf *resconf, dns_resconf_i_t *state) { unsigned srchi = 0xff & (*state >> 8); unsigned ndots = 0xff & (*state >> 16); unsigned len = 0; const char *qp, *qe; switch (0xff & *state) { case 0: qp = qname; qe = qp + qlen; while ((qp = memchr(qp, '.', qe - qp))) { ndots++; qp++; } ++*state; if (ndots >= resconf->options.ndots) { len = dns_d_anchor(dst, lim, qname, qlen); break; } /* FALL THROUGH */ case 1: if (srchi < lengthof(resconf->search) && resconf->search[srchi][0] && strcmp(resconf->search[srchi], ".")) { len = dns_d_anchor(dst, lim, qname, qlen); len += dns_strlcpy((char *)dst + DNS_PP_MIN(len, lim), resconf->search[srchi], lim - DNS_PP_MIN(len, lim)); srchi++; break; } ++*state; /* FALL THROUGH */ case 2: ++*state; if (ndots < resconf->options.ndots) { len = dns_d_anchor(dst, lim, qname, qlen); break; } /* FALL THROUGH */ default: break; } /* switch() */ *state = ((0xff & *state) << 0) | ((0xff & srchi) << 8) | ((0xff & ndots) << 16); if (lim > 0) ((char *)dst)[DNS_PP_MIN(lim - 1, len)] = '\0'; return len; } /* dns_resconf_search() */ int dns_resconf_dump(struct dns_resolv_conf *resconf, FILE *fp) { unsigned i; int af; for (i = 0; i < lengthof(resconf->nameserver) && (af = resconf->nameserver[i].ss_family) != AF_UNSPEC; i++) { char addr[INET6_ADDRSTRLEN + 1] = "[INVALID]"; unsigned short port; dns_inet_ntop(af, dns_sa_addr(af, &resconf->nameserver[i], NULL), addr, sizeof addr); port = ntohs(*dns_sa_port(af, &resconf->nameserver[i])); if (port == 53) fprintf(fp, "nameserver %s\n", addr); else fprintf(fp, "nameserver [%s]:%hu\n", addr, port); } fprintf(fp, "search"); for (i = 0; i < lengthof(resconf->search) && resconf->search[i][0]; i++) fprintf(fp, " %s", resconf->search[i]); fputc('\n', fp); fputs("; ", fp); dns_nssconf_dump(resconf, fp); fprintf(fp, "lookup"); for (i = 0; i < lengthof(resconf->lookup) && resconf->lookup[i]; i++) { switch (resconf->lookup[i]) { case 'b': fprintf(fp, " bind"); break; case 'f': fprintf(fp, " file"); break; case 'c': fprintf(fp, " cache"); break; } } fputc('\n', fp); fprintf(fp, "options ndots:%u timeout:%u attempts:%u", resconf->options.ndots, resconf->options.timeout, resconf->options.attempts); if (resconf->options.edns0) fprintf(fp, " edns0"); if (resconf->options.rotate) fprintf(fp, " rotate"); if (resconf->options.recurse) fprintf(fp, " recurse"); if (resconf->options.smart) fprintf(fp, " smart"); switch (resconf->options.tcp) { case DNS_RESCONF_TCP_ENABLE: break; case DNS_RESCONF_TCP_ONLY: fprintf(fp, " tcp"); break; case DNS_RESCONF_TCP_DISABLE: fprintf(fp, " tcp:disable"); break; } fputc('\n', fp); if ((af = resconf->iface.ss_family) != AF_UNSPEC) { char addr[INET6_ADDRSTRLEN + 1] = "[INVALID]"; dns_inet_ntop(af, dns_sa_addr(af, &resconf->iface, NULL), addr, sizeof addr); fprintf(fp, "interface %s %hu\n", addr, ntohs(*dns_sa_port(af, &resconf->iface))); } return 0; } /* dns_resconf_dump() */ /* * H I N T S E R V E R R O U T I N E S * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ struct dns_hints_soa { unsigned char zone[DNS_D_MAXNAME + 1]; struct { struct sockaddr_storage ss; unsigned priority; } addrs[16]; unsigned count; struct dns_hints_soa *next; }; /* struct dns_hints_soa */ struct dns_hints { dns_atomic_t refcount; struct dns_hints_soa *head; }; /* struct dns_hints */ struct dns_hints *dns_hints_open(struct dns_resolv_conf *resconf, int *error) { static const struct dns_hints H_initializer; struct dns_hints *H; (void)resconf; if (!(H = malloc(sizeof *H))) goto syerr; *H = H_initializer; dns_hints_acquire(H); return H; syerr: *error = dns_syerr(); free(H); return 0; } /* dns_hints_open() */ void dns_hints_close(struct dns_hints *H) { struct dns_hints_soa *soa, *nxt; if (!H || 1 != dns_hints_release(H)) return /* void */; for (soa = H->head; soa; soa = nxt) { nxt = soa->next; free(soa); } free(H); return /* void */; } /* dns_hints_close() */ dns_refcount_t dns_hints_acquire(struct dns_hints *H) { return dns_atomic_fetch_add(&H->refcount); } /* dns_hints_acquire() */ dns_refcount_t dns_hints_release(struct dns_hints *H) { return dns_atomic_fetch_sub(&H->refcount); } /* dns_hints_release() */ struct dns_hints *dns_hints_mortal(struct dns_hints *hints) { if (hints) dns_hints_release(hints); return hints; } /* dns_hints_mortal() */ struct dns_hints *dns_hints_local(struct dns_resolv_conf *resconf, int *error_) { struct dns_hints *hints = 0; int error; if (resconf) dns_resconf_acquire(resconf); else if (!(resconf = dns_resconf_local(&error))) goto error; if (!(hints = dns_hints_open(resconf, &error))) goto error; error = 0; if (0 == dns_hints_insert_resconf(hints, ".", resconf, &error) && error) goto error; dns_resconf_close(resconf); return hints; error: *error_ = error; dns_resconf_close(resconf); dns_hints_close(hints); return 0; } /* dns_hints_local() */ struct dns_hints *dns_hints_root(struct dns_resolv_conf *resconf, int *error_) { static const struct { int af; char addr[INET6_ADDRSTRLEN]; } root_hints[] = { { AF_INET, "198.41.0.4" }, /* A.ROOT-SERVERS.NET. */ { AF_INET6, "2001:503:ba3e::2:30" }, /* A.ROOT-SERVERS.NET. */ { AF_INET, "192.228.79.201" }, /* B.ROOT-SERVERS.NET. */ { AF_INET6, "2001:500:84::b" }, /* B.ROOT-SERVERS.NET. */ { AF_INET, "192.33.4.12" }, /* C.ROOT-SERVERS.NET. */ { AF_INET6, "2001:500:2::c" }, /* C.ROOT-SERVERS.NET. */ { AF_INET, "199.7.91.13" }, /* D.ROOT-SERVERS.NET. */ { AF_INET6, "2001:500:2d::d" }, /* D.ROOT-SERVERS.NET. */ { AF_INET, "192.203.230.10" }, /* E.ROOT-SERVERS.NET. */ { AF_INET, "192.5.5.241" }, /* F.ROOT-SERVERS.NET. */ { AF_INET6, "2001:500:2f::f" }, /* F.ROOT-SERVERS.NET. */ { AF_INET, "192.112.36.4" }, /* G.ROOT-SERVERS.NET. */ { AF_INET, "128.63.2.53" }, /* H.ROOT-SERVERS.NET. */ { AF_INET6, "2001:500:1::803f:235" }, /* H.ROOT-SERVERS.NET. */ { AF_INET, "192.36.148.17" }, /* I.ROOT-SERVERS.NET. */ { AF_INET6, "2001:7FE::53" }, /* I.ROOT-SERVERS.NET. */ { AF_INET, "192.58.128.30" }, /* J.ROOT-SERVERS.NET. */ { AF_INET6, "2001:503:c27::2:30" }, /* J.ROOT-SERVERS.NET. */ { AF_INET, "193.0.14.129" }, /* K.ROOT-SERVERS.NET. */ { AF_INET6, "2001:7FD::1" }, /* K.ROOT-SERVERS.NET. */ { AF_INET, "199.7.83.42" }, /* L.ROOT-SERVERS.NET. */ { AF_INET6, "2001:500:3::42" }, /* L.ROOT-SERVERS.NET. */ { AF_INET, "202.12.27.33" }, /* M.ROOT-SERVERS.NET. */ { AF_INET6, "2001:DC3::35" }, /* M.ROOT-SERVERS.NET. */ }; struct dns_hints *hints = 0; struct sockaddr_storage ss; unsigned i; int error, af; if (!(hints = dns_hints_open(resconf, &error))) goto error; for (i = 0; i < lengthof(root_hints); i++) { af = root_hints[i].af; if ((error = dns_pton(af, root_hints[i].addr, dns_sa_addr(af, &ss, NULL)))) goto error; *dns_sa_port(af, &ss) = htons(53); ss.ss_family = af; if ((error = dns_hints_insert(hints, ".", (struct sockaddr *)&ss, 1))) goto error; } return hints; error: *error_ = error; dns_hints_close(hints); return 0; } /* dns_hints_root() */ static struct dns_hints_soa *dns_hints_fetch(struct dns_hints *H, const char *zone) { struct dns_hints_soa *soa; for (soa = H->head; soa; soa = soa->next) { if (0 == strcasecmp(zone, (char *)soa->zone)) return soa; } return 0; } /* dns_hints_fetch() */ int dns_hints_insert(struct dns_hints *H, const char *zone, const struct sockaddr *sa, unsigned priority) { static const struct dns_hints_soa soa_initializer; struct dns_hints_soa *soa; unsigned i; if (!(soa = dns_hints_fetch(H, zone))) { if (!(soa = malloc(sizeof *soa))) return dns_syerr(); *soa = soa_initializer; dns_strlcpy((char *)soa->zone, zone, sizeof soa->zone); soa->next = H->head; H->head = soa; } i = soa->count % lengthof(soa->addrs); memcpy(&soa->addrs[i].ss, sa, dns_sa_len(sa)); soa->addrs[i].priority = DNS_PP_MAX(1, priority); if (soa->count < lengthof(soa->addrs)) soa->count++; return 0; } /* dns_hints_insert() */ static _Bool dns_hints_isinaddr_any(const void *sa) { struct in_addr *addr; if (dns_sa_family(sa) != AF_INET) return 0; addr = dns_sa_addr(AF_INET, sa, NULL); return addr->s_addr == htonl(INADDR_ANY); } unsigned dns_hints_insert_resconf(struct dns_hints *H, const char *zone, const struct dns_resolv_conf *resconf, int *error_) { unsigned i, n, p; int error; for (i = 0, n = 0, p = 1; i < lengthof(resconf->nameserver) && resconf->nameserver[i].ss_family != AF_UNSPEC; i++, n++) { union { struct sockaddr_in sin; } tmp; struct sockaddr *ns; /* * dns_resconf_open initializes nameserver[0] to INADDR_ANY. * * Traditionally the semantics of 0.0.0.0 meant the default * interface, which evolved to mean the loopback interface. * See comment block preceding resolv/res_init.c:res_init in * glibc 2.23. As of 2.23, glibc no longer translates * 0.0.0.0 despite the code comment, but it does default to * 127.0.0.1 when no nameservers are present. * * BIND9 as of 9.10.3 still translates 0.0.0.0 to 127.0.0.1. * See lib/lwres/lwconfig.c:lwres_create_addr and the * convert_zero flag. 127.0.0.1 is also the default when no * nameservers are present. */ if (dns_hints_isinaddr_any(&resconf->nameserver[i])) { memcpy(&tmp.sin, &resconf->nameserver[i], sizeof tmp.sin); tmp.sin.sin_addr.s_addr = htonl(INADDR_LOOPBACK); ns = (struct sockaddr *)&tmp.sin; } else { ns = (struct sockaddr *)&resconf->nameserver[i]; } if ((error = dns_hints_insert(H, zone, ns, p))) goto error; p += !resconf->options.rotate; } return n; error: *error_ = error; return n; } /* dns_hints_insert_resconf() */ static int dns_hints_i_cmp(unsigned a, unsigned b, struct dns_hints_i *i, struct dns_hints_soa *soa) { int cmp; if ((cmp = soa->addrs[a].priority - soa->addrs[b].priority)) return cmp; return dns_k_shuffle16(a, i->state.seed) - dns_k_shuffle16(b, i->state.seed); } /* dns_hints_i_cmp() */ static unsigned dns_hints_i_start(struct dns_hints_i *i, struct dns_hints_soa *soa) { unsigned p0, p; p0 = 0; for (p = 1; p < soa->count; p++) { if (dns_hints_i_cmp(p, p0, i, soa) < 0) p0 = p; } return p0; } /* dns_hints_i_start() */ static unsigned dns_hints_i_skip(unsigned p0, struct dns_hints_i *i, struct dns_hints_soa *soa) { unsigned pZ, p; for (pZ = 0; pZ < soa->count; pZ++) { if (dns_hints_i_cmp(pZ, p0, i, soa) > 0) goto cont; } return soa->count; cont: for (p = pZ + 1; p < soa->count; p++) { if (dns_hints_i_cmp(p, p0, i, soa) <= 0) continue; if (dns_hints_i_cmp(p, pZ, i, soa) >= 0) continue; pZ = p; } return pZ; } /* dns_hints_i_skip() */ static struct dns_hints_i *dns_hints_i_init(struct dns_hints_i *i, struct dns_hints *hints) { static const struct dns_hints_i i_initializer; struct dns_hints_soa *soa; i->state = i_initializer.state; do { i->state.seed = dns_random(); } while (0 == i->state.seed); if ((soa = dns_hints_fetch(hints, i->zone))) { i->state.next = dns_hints_i_start(i, soa); } return i; } /* dns_hints_i_init() */ unsigned dns_hints_grep(struct sockaddr **sa, socklen_t *sa_len, unsigned lim, struct dns_hints_i *i, struct dns_hints *H) { struct dns_hints_soa *soa; unsigned n; if (!(soa = dns_hints_fetch(H, i->zone))) return 0; n = 0; while (i->state.next < soa->count && n < lim) { *sa = (struct sockaddr *)&soa->addrs[i->state.next].ss; *sa_len = dns_sa_len(*sa); sa++; sa_len++; n++; i->state.next = dns_hints_i_skip(i->state.next, i, soa); } return n; } /* dns_hints_grep() */ struct dns_packet *dns_hints_query(struct dns_hints *hints, struct dns_packet *Q, int *error_) { struct dns_packet *A, *P; struct dns_rr rr; char zone[DNS_D_MAXNAME + 1]; size_t zlen; struct dns_hints_i i; struct sockaddr *sa; socklen_t slen; int error; if (!dns_rr_grep(&rr, 1, dns_rr_i_new(Q, .section = DNS_S_QUESTION), Q, &error)) goto error; if (!(zlen = dns_d_expand(zone, sizeof zone, rr.dn.p, Q, &error))) goto error; else if (zlen >= sizeof zone) goto toolong; P = dns_p_new(512); dns_header(P)->qr = 1; if ((error = dns_rr_copy(P, &rr, Q))) goto error; if ((error = dns_p_push(P, DNS_S_AUTHORITY, ".", strlen("."), DNS_T_NS, DNS_C_IN, 0, "hints.local."))) goto error; do { i.zone = zone; dns_hints_i_init(&i, hints); while (dns_hints_grep(&sa, &slen, 1, &i, hints)) { int af = sa->sa_family; int rtype = (af == AF_INET6)? DNS_T_AAAA : DNS_T_A; if ((error = dns_p_push(P, DNS_S_ADDITIONAL, "hints.local.", strlen("hints.local."), rtype, DNS_C_IN, 0, dns_sa_addr(af, sa, NULL)))) goto error; } } while ((zlen = dns_d_cleave(zone, sizeof zone, zone, zlen))); if (!(A = dns_p_copy(dns_p_make(P->end, &error), P))) goto error; return A; toolong: error = DNS_EILLEGAL; error: *error_ = error; return 0; } /* dns_hints_query() */ /** * Fill a whole sockaddr from the the nameservers' sockaddr contained in the hints. This is needed for scope link IPv6 nameservers. **/ static void dns_fill_sockaddr_from_hints(struct dns_hints *hints, int af, struct sockaddr *addr) { struct dns_hints_soa *soa; unsigned i; for (soa = hints->head; soa; soa = soa->next) { for (i = 0; i < soa->count; i++) { if (af != soa->addrs[i].ss.ss_family) continue; if ((af == AF_INET) && (memcmp(&((struct sockaddr_in *)&soa->addrs[i].ss)->sin_addr, &((struct sockaddr_in *)addr)->sin_addr, sizeof(struct in_addr)))) continue; if ((af == AF_INET6) && (memcmp(&((struct sockaddr_in6 *)&soa->addrs[i].ss)->sin6_addr, &((struct sockaddr_in6 *)addr)->sin6_addr, sizeof(struct in6_addr)))) continue; memcpy(addr, &soa->addrs[i].ss, dns_af_len(af)); return; } } } int dns_hints_dump(struct dns_hints *hints, FILE *fp) { struct dns_hints_soa *soa; char addr[INET6_ADDRSTRLEN]; unsigned i; int af, error; for (soa = hints->head; soa; soa = soa->next) { fprintf(fp, "ZONE \"%s\"\n", soa->zone); for (i = 0; i < soa->count; i++) { af = soa->addrs[i].ss.ss_family; if ((error = dns_ntop(af, dns_sa_addr(af, &soa->addrs[i].ss, NULL), addr, sizeof addr))) return error; fprintf(fp, "\t(%d) [%s]:%hu\n", (int)soa->addrs[i].priority, addr, ntohs(*dns_sa_port(af, &soa->addrs[i].ss))); } } return 0; } /* dns_hints_dump() */ /* * C A C H E R O U T I N E S * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ static dns_refcount_t dns_cache_acquire(struct dns_cache *cache) { return dns_atomic_fetch_add(&cache->_.refcount); } /* dns_cache_acquire() */ static dns_refcount_t dns_cache_release(struct dns_cache *cache) { return dns_atomic_fetch_sub(&cache->_.refcount); } /* dns_cache_release() */ static struct dns_packet *dns_cache_query(struct dns_packet *query, struct dns_cache *cache, int *error) { (void)query; (void)cache; (void)error; return NULL; } /* dns_cache_query() */ static int dns_cache_submit(struct dns_packet *query, struct dns_cache *cache) { (void)query; (void)cache; return 0; } /* dns_cache_submit() */ static int dns_cache_check(struct dns_cache *cache) { (void)cache; return 0; } /* dns_cache_check() */ static struct dns_packet *dns_cache_fetch(struct dns_cache *cache, int *error) { (void)cache; (void)error; return NULL; } /* dns_cache_fetch() */ static int dns_cache_pollfd(struct dns_cache *cache) { (void)cache; return -1; } /* dns_cache_pollfd() */ static short dns_cache_events(struct dns_cache *cache) { (void)cache; return 0; } /* dns_cache_events() */ static void dns_cache_clear(struct dns_cache *cache) { (void)cache; return; } /* dns_cache_clear() */ struct dns_cache *dns_cache_init(struct dns_cache *cache) { static const struct dns_cache c_init = { .acquire = &dns_cache_acquire, .release = &dns_cache_release, .query = &dns_cache_query, .submit = &dns_cache_submit, .check = &dns_cache_check, .fetch = &dns_cache_fetch, .pollfd = &dns_cache_pollfd, .events = &dns_cache_events, .clear = &dns_cache_clear, ._ = { .refcount = 1, }, }; *cache = c_init; return cache; } /* dns_cache_init() */ void dns_cache_close(struct dns_cache *cache) { if (cache) cache->release(cache); } /* dns_cache_close() */ /* * S O C K E T R O U T I N E S * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ static void dns_socketclose(int *fd, const struct dns_options *opts) { if (opts && opts->closefd.cb) opts->closefd.cb(fd, opts->closefd.arg); if (*fd != -1) { #if _WIN32 closesocket(*fd); #else close(*fd); #endif *fd = -1; } } /* dns_socketclose() */ #ifndef HAVE_IOCTLSOCKET #define HAVE_IOCTLSOCKET (_WIN32 || _WIN64) #endif #ifndef HAVE_SOCK_CLOEXEC #if (defined SOCK_CLOEXEC) #define HAVE_SOCK_CLOEXEC 1 #endif #endif #ifndef HAVE_SOCK_NONBLOCK #if (defined SOCK_NONBLOCK) #define HAVE_SOCK_NONBLOCK 1 #endif #endif #define DNS_SO_MAXTRY 7 static int dns_socket(struct sockaddr *local, int type, int *error_) { int fd = -1, flags, error; #if defined FIONBIO unsigned long opt; #endif flags = 0; #if HAVE_SOCK_CLOEXEC flags |= SOCK_CLOEXEC; #endif #if HAVE_SOCK_NONBLOCK flags |= SOCK_NONBLOCK; #endif if (-1 == (fd = socket(local->sa_family, type|flags, 0))) goto soerr; if (local->sa_family == AF_INET6){ int value=0; setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, (const char*)&value, sizeof(value)); } #if defined F_SETFD && !HAVE_SOCK_CLOEXEC if (-1 == fcntl(fd, F_SETFD, 1)) goto syerr; #endif #if defined O_NONBLOCK && !HAVE_SOCK_NONBLOCK if (-1 == (flags = fcntl(fd, F_GETFL))) goto syerr; if (-1 == fcntl(fd, F_SETFL, flags | O_NONBLOCK)) goto syerr; #elif defined FIONBIO && HAVE_IOCTLSOCKET opt = 1; if (0 != ioctlsocket(fd, FIONBIO, &opt)) goto soerr; #endif #if defined SO_NOSIGPIPE if (type != SOCK_DGRAM) { if (0 != setsockopt(fd, SOL_SOCKET, SO_NOSIGPIPE, &(int){ 1 }, sizeof (int))) goto soerr; } #endif if (local->sa_family != AF_INET && local->sa_family != AF_INET6) return fd; if (type != SOCK_DGRAM) return fd; /* * FreeBSD, Linux, OpenBSD, OS X, and Solaris use random ports by * default. Though the ephemeral range is quite small on OS X * (49152-65535 on 10.10) and Linux (32768-60999 on 4.4.0, Ubuntu * Xenial). See also RFC 6056. * * TODO: Optionally rely on the kernel to select a random port. */ if (*dns_sa_port(local->sa_family, local) == 0) { /*bellesip: let the system find a random port*/ return fd; /* NB: continue to next bind statement */ } if (0 == bind(fd, local, dns_sa_len(local))) return fd; /* FALL THROUGH */ soerr: error = dns_soerr(); goto error; #if (defined F_SETFD && !HAVE_SOCK_CLOEXEC) || (defined O_NONBLOCK && !HAVE_SOCK_NONBLOCK) syerr: error = dns_syerr(); goto error; #endif error: *error_ = error; dns_socketclose(&fd, NULL); return -1; } /* dns_socket() */ enum { DNS_SO_UDP_INIT = 1, DNS_SO_UDP_CONN, DNS_SO_UDP_SEND, DNS_SO_UDP_RECV, DNS_SO_UDP_DONE, DNS_SO_TCP_INIT, DNS_SO_TCP_CONN, DNS_SO_TCP_SEND, DNS_SO_TCP_RECV, DNS_SO_TCP_DONE, }; struct dns_socket { struct dns_options opts; int udp; int tcp; int *old; unsigned onum, olim; int type; struct sockaddr_storage local, remote; struct dns_k_permutor qids; struct dns_stat stat; /* * NOTE: dns_so_reset() zeroes everything from here down. */ int state; unsigned short qid; char qname[DNS_D_MAXNAME + 1]; size_t qlen; enum dns_type qtype; enum dns_class qclass; struct dns_packet *query; size_t qout; struct dns_clock elapsed; struct dns_packet *answer; size_t alen, apos; int ip_differ; /*set when remote address and response from which it is received are different*/ }; /* struct dns_socket */ /* * NOTE: Actual closure delayed so that kqueue(2) and epoll(2) callers have * a chance to recognize a state change after installing a persistent event * and where sequential descriptors with the same integer value returned * from _pollfd() would be ambiguous. See dns_so_closefds(). */ static int dns_so_closefd(struct dns_socket *so, int *fd) { int error; if (*fd == -1) return 0; if (so->opts.closefd.cb) { if ((error = so->opts.closefd.cb(fd, so->opts.closefd.arg))) { return error; } else if (*fd == -1) return 0; } if (!(so->onum < so->olim)) { unsigned olim = DNS_PP_MAX(4, so->olim * 2); void *old; if (!(old = realloc(so->old, sizeof so->old[0] * olim))) return dns_syerr(); so->old = old; so->olim = olim; } so->old[so->onum++] = *fd; *fd = -1; return 0; } /* dns_so_closefd() */ #define DNS_SO_CLOSE_UDP 0x01 #define DNS_SO_CLOSE_TCP 0x02 #define DNS_SO_CLOSE_OLD 0x04 #define DNS_SO_CLOSE_ALL (DNS_SO_CLOSE_UDP|DNS_SO_CLOSE_TCP|DNS_SO_CLOSE_OLD) static void dns_so_closefds(struct dns_socket *so, int which) { if (DNS_SO_CLOSE_UDP & which) dns_socketclose(&so->udp, &so->opts); if (DNS_SO_CLOSE_TCP & which) dns_socketclose(&so->tcp, &so->opts); if (DNS_SO_CLOSE_OLD & which) { unsigned i; for (i = 0; i < so->onum; i++) dns_socketclose(&so->old[i], &so->opts); so->onum = 0; free(so->old); so->old = 0; so->olim = 0; } } /* dns_so_closefds() */ static void dns_so_destroy(struct dns_socket *); static struct dns_socket *dns_so_init(struct dns_socket *so, const struct sockaddr *local, int type, const struct dns_options *opts, int *error) { static const struct dns_socket so_initializer = { .opts = DNS_OPTS_INITIALIZER, .udp = -1, .tcp = -1}; *so = so_initializer; so->type = type; if (opts) so->opts = *opts; if (local) memcpy(&so->local, local, dns_sa_len(local)); if (-1 == (so->udp = dns_socket((struct sockaddr *)&so->local, SOCK_DGRAM, error))) goto error; dns_k_permutor_init(&so->qids, 1, 65535); return so; error: dns_so_destroy(so); return 0; } /* dns_so_init() */ struct dns_socket *dns_so_open(const struct sockaddr *local, int type, const struct dns_options *opts, int *error) { struct dns_socket *so; if (!(so = malloc(sizeof *so))) goto syerr; if (!dns_so_init(so, local, type, opts, error)) goto error; return so; syerr: *error = dns_syerr(); error: dns_so_close(so); return 0; } /* dns_so_open() */ static void dns_so_destroy(struct dns_socket *so) { dns_so_reset(so); dns_so_closefds(so, DNS_SO_CLOSE_ALL); } /* dns_so_destroy() */ void dns_so_close(struct dns_socket *so) { if (!so) return; dns_so_destroy(so); free(so); } /* dns_so_close() */ void dns_so_reset(struct dns_socket *so) { dns_p_setptr(&so->answer, NULL); memset(&so->state, '\0', sizeof *so - offsetof(struct dns_socket, state)); } /* dns_so_reset() */ unsigned short dns_so_mkqid(struct dns_socket *so) { return dns_k_permutor_step(&so->qids); } /* dns_so_mkqid() */ #define DNS_SO_MINBUF 768 static int dns_so_newanswer(struct dns_socket *so, size_t len) { size_t size = offsetof(struct dns_packet, data) + DNS_PP_MAX(len, DNS_SO_MINBUF); void *p; if (!(p = realloc(so->answer, size))) return dns_syerr(); so->answer = dns_p_init(p, size); return 0; } /* dns_so_newanswer() */ int dns_so_submit(struct dns_socket *so, struct dns_packet *Q, struct sockaddr *host) { struct dns_rr rr; int error = DNS_EUNKNOWN; dns_so_reset(so); if ((error = dns_rr_parse(&rr, 12, Q))) goto error; if (!(so->qlen = dns_d_expand(so->qname, sizeof so->qname, rr.dn.p, Q, &error))) goto error; /* * NOTE: Don't bail if expansion is too long; caller may be * intentionally sending long names. However, we won't be able to * verify it on return. */ so->qtype = rr.type; so->qclass = rr.class; if ((error = dns_so_newanswer(so, (Q->memo.opt.maxudp)? Q->memo.opt.maxudp : DNS_SO_MINBUF))) goto syerr; if (so->local.ss_family==AF_INET6 && host->sa_family==AF_INET){ socklen_t addrlen = sizeof(so->remote); uint32_t *addr=(uint32_t*)dns_sa_addr(AF_INET6,&so->remote, &addrlen); /* add v4mapping*/ so->remote.ss_family=AF_INET6; addr[0]=0; addr[1]=0; addr[2]=ntohl(0xffff); addr[3]=((struct sockaddr_in*)host)->sin_addr.s_addr; *dns_sa_port(AF_INET6,&so->remote)=((struct sockaddr_in*)host)->sin_port; }else memcpy(&so->remote, host, dns_sa_len(host)); so->query = Q; so->qout = 0; dns_begin(&so->elapsed); if (dns_header(so->query)->qid == 0) dns_header(so->query)->qid = dns_so_mkqid(so); so->qid = dns_header(so->query)->qid; so->state = (so->type == SOCK_STREAM)? DNS_SO_TCP_INIT : DNS_SO_UDP_INIT; so->stat.queries++; return 0; syerr: error = dns_syerr(); error: dns_so_reset(so); return error; } /* dns_so_submit() */ static int dns_so_verify(struct dns_socket *so, struct dns_packet *P) { char qname[DNS_D_MAXNAME + 1]; size_t qlen; struct dns_rr rr; int error = -1; if (so->qid != dns_header(so->answer)->qid) goto reject; if (!dns_p_count(so->answer, DNS_S_QD)) goto reject; if (0 != dns_rr_parse(&rr, 12, so->answer)) goto reject; if (rr.type != so->qtype || rr.class != so->qclass) goto reject; if (!(qlen = dns_d_expand(qname, sizeof qname, rr.dn.p, P, &error))) goto error; else if (qlen >= sizeof qname || qlen != so->qlen) goto reject; if (0 != strcasecmp(so->qname, qname)) goto reject; return 0; reject: error = DNS_EUNKNOWN; error: DNS_SHOW(P, "rejecting packet (%s)", dns_strerror(error)); return error; } /* dns_so_verify() */ static _Bool dns_so_tcp_keep(struct dns_socket *so) { struct sockaddr_storage remote; if (so->tcp == -1) return 0; if (0 != getpeername(so->tcp, (struct sockaddr *)&remote, &(socklen_t){ sizeof remote })) return 0; return 0 == dns_sa_cmp(&remote, &so->remote); } /* dns_so_tcp_keep() */ #if defined __clang__ #pragma clang diagnostic push #pragma clang diagnostic ignored "-Warray-bounds" #endif static int dns_so_tcp_send(struct dns_socket *so) { unsigned char *qsrc; size_t qend; long n; so->query->data[-2] = 0xff & (so->query->end >> 8); so->query->data[-1] = 0xff & (so->query->end >> 0); qsrc = &so->query->data[-2] + so->qout; qend = so->query->end + 2; while (so->qout < qend) { if (0 > (n = dns_send(so->tcp, (void *)&qsrc[so->qout], qend - so->qout, 0))) return dns_soerr(); so->qout += n; so->stat.tcp.sent.bytes += n; } so->stat.tcp.sent.count++; return 0; } /* dns_so_tcp_send() */ static int dns_so_tcp_recv(struct dns_socket *so) { unsigned char *asrc; size_t aend, alen; int error; long n; aend = so->alen + 2; while (so->apos < aend) { asrc = &so->answer->data[-2]; if (0 > (n = recv(so->tcp, (void *)&asrc[so->apos], aend - so->apos, 0))) return dns_soerr(); else if (n == 0) return DNS_EUNKNOWN; /* FIXME */ so->apos += n; so->stat.tcp.rcvd.bytes += n; if (so->alen == 0 && so->apos >= 2) { alen = ((0xff & so->answer->data[-2]) << 8) | ((0xff & so->answer->data[-1]) << 0); if ((error = dns_so_newanswer(so, alen))) return error; so->alen = alen; aend = alen + 2; } } so->answer->end = so->alen; so->stat.tcp.rcvd.count++; return 0; } /* dns_so_tcp_recv() */ #if __clang__ #pragma clang diagnostic pop #endif int dns_so_check(struct dns_socket *so) { struct sockaddr_storage tmp_ss; socklen_t tmp_ss_len = sizeof(tmp_ss); int error; long n; retry: switch (so->state) { case DNS_SO_UDP_INIT: so->state++; case DNS_SO_UDP_CONN: memset(&tmp_ss, 0, sizeof(tmp_ss)); connect(so->udp, (struct sockaddr *)&tmp_ss, sizeof(tmp_ss)); // Reset the previous connection if (so->opts.udp_uses_connect){ if (0 != connect(so->udp, (struct sockaddr *)&so->remote, dns_sa_len(&so->remote))) goto soerr; } so->state++; case DNS_SO_UDP_SEND: if (so->opts.udp_uses_connect){ if (0 > (n = send(so->udp, (void *)so->query->data, so->query->end, 0))) goto soerr; }else{ if (0 > (n = sendto(so->udp, (void *)so->query->data, so->query->end, 0, (struct sockaddr *)&so->remote, dns_sa_len(&so->remote)))) goto soerr; } so->stat.udp.sent.bytes += n; so->stat.udp.sent.count++; so->state++; case DNS_SO_UDP_RECV: if (so->opts.udp_uses_connect){ if (0 > (n = recv(so->udp, (void *)so->answer->data, so->answer->size, 0))) goto soerr; }else{ memset(&tmp_ss, 0, sizeof(tmp_ss)); tmp_ss_len = sizeof(tmp_ss); if (0 > (n = recvfrom(so->udp, (void *)so->answer->data, so->answer->size, 0, (struct sockaddr *)&tmp_ss, &tmp_ss_len))) goto soerr; if (memcmp(&tmp_ss, &so->remote, tmp_ss_len) != 0){ so->ip_differ = 1; } } so->stat.udp.rcvd.bytes += n; so->stat.udp.rcvd.count++; if ((so->answer->end = n) < 12) goto trash; if ((error = dns_so_verify(so, so->answer))) goto trash; so->state++; case DNS_SO_UDP_DONE: if (!dns_header(so->answer)->tc || so->type == SOCK_DGRAM) return 0; so->state++; case DNS_SO_TCP_INIT: if (dns_so_tcp_keep(so)) { so->state = DNS_SO_TCP_SEND; goto retry; } if ((error = dns_so_closefd(so, &so->tcp))) goto error; if (-1 == (so->tcp = dns_socket((struct sockaddr *)&so->local, SOCK_STREAM, &error))) goto error; so->state++; case DNS_SO_TCP_CONN: if (0 != connect(so->tcp, (struct sockaddr *)&so->remote, dns_sa_len(&so->remote))) { if (dns_soerr() != DNS_EISCONN) goto soerr; } so->state++; case DNS_SO_TCP_SEND: if ((error = dns_so_tcp_send(so))) goto error; so->state++; case DNS_SO_TCP_RECV: if ((error = dns_so_tcp_recv(so))) goto error; so->state++; case DNS_SO_TCP_DONE: /* close unless DNS_RESCONF_TCP_ONLY (see dns_res_tcp2type) */ if (so->type != SOCK_STREAM) { if ((error = dns_so_closefd(so, &so->tcp))) goto error; } if (so->answer->end < 12) return DNS_EILLEGAL; if ((error = dns_so_verify(so, so->answer))) goto error; return 0; default: error = DNS_EUNKNOWN; goto error; } /* switch() */ trash: DNS_CARP("discarding packet"); goto retry; soerr: error = dns_soerr(); goto error; error: switch (error) { case DNS_EINTR: goto retry; case DNS_EINPROGRESS: /* FALL THROUGH */ case DNS_EALREADY: /* FALL THROUGH */ #if DNS_EWOULDBLOCK != DNS_EAGAIN case DNS_EWOULDBLOCK: /* FALL THROUGH */ #endif error = DNS_EAGAIN; break; } /* switch() */ return error; } /* dns_so_check() */ struct dns_packet *dns_so_fetch(struct dns_socket *so, int *error) { struct dns_packet *answer; switch (so->state) { case DNS_SO_UDP_DONE: case DNS_SO_TCP_DONE: answer = so->answer; so->answer = 0; return answer; default: *error = DNS_EUNKNOWN; return 0; } } /* dns_so_fetch() */ struct dns_packet *dns_so_query(struct dns_socket *so, struct dns_packet *Q, struct sockaddr *host, int *error_) { struct dns_packet *A; int error; if (!so->state) { if ((error = dns_so_submit(so, Q, host))) goto error; } if ((error = dns_so_check(so))) goto error; if (!(A = dns_so_fetch(so, &error))) goto error; dns_so_reset(so); return A; error: *error_ = error; return 0; } /* dns_so_query() */ time_t dns_so_elapsed(struct dns_socket *so) { return dns_elapsed(&so->elapsed); } /* dns_so_elapsed() */ void dns_so_clear(struct dns_socket *so) { dns_so_closefds(so, DNS_SO_CLOSE_OLD); } /* dns_so_clear() */ static int dns_so_events2(struct dns_socket *so, enum dns_events type) { int events = 0; switch (so->state) { case DNS_SO_UDP_CONN: case DNS_SO_UDP_SEND: events |= DNS_POLLOUT; break; case DNS_SO_UDP_RECV: events |= DNS_POLLIN; break; case DNS_SO_TCP_CONN: case DNS_SO_TCP_SEND: events |= DNS_POLLOUT; break; case DNS_SO_TCP_RECV: events |= DNS_POLLIN; break; } /* switch() */ switch (type) { case DNS_LIBEVENT: return DNS_POLL2EV(events); default: return events; } /* switch() */ } /* dns_so_events2() */ int dns_so_events(struct dns_socket *so) { return dns_so_events2(so, so->opts.events); } /* dns_so_events() */ int dns_so_pollfd(struct dns_socket *so) { switch (so->state) { case DNS_SO_UDP_CONN: case DNS_SO_UDP_SEND: case DNS_SO_UDP_RECV: return so->udp; case DNS_SO_TCP_CONN: case DNS_SO_TCP_SEND: case DNS_SO_TCP_RECV: return so->tcp; } /* switch() */ return -1; } /* dns_so_pollfd() */ int dns_so_poll(struct dns_socket *so, int timeout) { return dns_poll(dns_so_pollfd(so), dns_so_events2(so, DNS_SYSPOLL), timeout); } /* dns_so_poll() */ const struct dns_stat *dns_so_stat(struct dns_socket *so) { return &so->stat; } /* dns_so_stat() */ /* * R E S O L V E R R O U T I N E S * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ enum dns_res_state { DNS_R_INIT, DNS_R_GLUE, DNS_R_SWITCH, /* (B)IND, (F)ILE, (C)ACHE */ DNS_R_FILE, /* Lookup in local hosts database */ DNS_R_CACHE, /* Lookup in application cache */ DNS_R_SUBMIT, DNS_R_CHECK, DNS_R_FETCH, DNS_R_BIND, /* Lookup in the network */ DNS_R_SEARCH, DNS_R_HINTS, DNS_R_ITERATE, DNS_R_FOREACH_NS, DNS_R_RESOLV0_NS, /* Prologue: Setup next frame and recurse */ DNS_R_RESOLV1_NS, /* Epilog: Inspect answer */ DNS_R_FOREACH_A, DNS_R_QUERY_A, DNS_R_CNAME0_A, DNS_R_CNAME1_A, DNS_R_FINISH, DNS_R_SMART0_A, DNS_R_SMART1_A, DNS_R_DONE, DNS_R_SERVFAIL, }; /* enum dns_res_state */ #define DNS_R_MAXDEPTH 8 #define DNS_R_ENDFRAME (DNS_R_MAXDEPTH - 1) struct dns_resolver { struct dns_socket so; struct dns_resolv_conf *resconf; struct dns_hosts *hosts; struct dns_hints *hints; struct dns_cache *cache; dns_atomic_t refcount; /* Reset zeroes everything below here. */ char qname[DNS_D_MAXNAME + 1]; size_t qlen; enum dns_type qtype; enum dns_class qclass; struct dns_clock elapsed; dns_resconf_i_t search; struct dns_rr_i smart; struct dns_packet *nodata; /* answer if nothing better */ unsigned sp; struct dns_res_frame { enum dns_res_state state; int error; int which; /* (B)IND, (F)ILE; index into resconf->lookup */ int qflags; unsigned attempts; struct dns_packet *query, *answer, *hints; struct dns_rr_i hints_i, hints_j; struct dns_rr hints_ns, ans_cname; } stack[DNS_R_MAXDEPTH]; unsigned char search_enabled; }; /* struct dns_resolver */ static int dns_res_tcp2type(int tcp) { switch (tcp) { case DNS_RESCONF_TCP_ONLY: return SOCK_STREAM; case DNS_RESCONF_TCP_DISABLE: return SOCK_DGRAM; default: return 0; } } /* dns_res_tcp2type() */ struct dns_resolver *dns_res_open(struct dns_resolv_conf *resconf, struct dns_hosts *hosts, struct dns_hints *hints, struct dns_cache *cache, const struct dns_options *opts, int *_error) { static const struct dns_resolver R_initializer = { .refcount = 1, }; struct dns_resolver *R = 0; int type, error; /* * Grab ref count early because the caller may have passed us a mortal * reference, and we want to do the right thing if we return early * from an error. */ if (resconf) dns_resconf_acquire(resconf); if (hosts) dns_hosts_acquire(hosts); if (hints) dns_hints_acquire(hints); if (cache) dns_cache_acquire(cache); /* * Don't try to load it ourselves because a NULL object might be an * error from, say, dns_resconf_root(), and loading * dns_resconf_local() by default would create undesirable surpises. */ if (!resconf || !hosts || !hints) goto _error; if (!(R = malloc(sizeof *R))) goto syerr; *R = R_initializer; type = dns_res_tcp2type(resconf->options.tcp); if (!dns_so_init(&R->so, (struct sockaddr *)&resconf->iface, type, opts, &error)) goto error; R->resconf = resconf; R->hosts = hosts; R->hints = hints; R->cache = cache; return R; syerr: error = dns_syerr(); error: *_error = error; _error: dns_res_close(R); dns_resconf_close(resconf); dns_hosts_close(hosts); dns_hints_close(hints); dns_cache_close(cache); return 0; } /* dns_res_open() */ struct dns_resolver *dns_res_stub(const struct dns_options *opts, int *error) { struct dns_resolv_conf *resconf = 0; struct dns_hosts *hosts = 0; struct dns_hints *hints = 0; struct dns_resolver *res = 0; if (!(resconf = dns_resconf_local(error))) goto epilog; if (!(hosts = dns_hosts_local(error))) goto epilog; if (!(hints = dns_hints_local(resconf, error))) goto epilog; if (!(res = dns_res_open(resconf, hosts, hints, NULL, opts, error))) goto epilog; epilog: dns_resconf_close(resconf); dns_hosts_close(hosts); dns_hints_close(hints); return res; } /* dns_res_stub() */ static void dns_res_frame_destroy(struct dns_resolver *R, struct dns_res_frame *frame) { (void)R; dns_p_setptr(&frame->query, NULL); dns_p_setptr(&frame->answer, NULL); dns_p_setptr(&frame->hints, NULL); } /* dns_res_frame_destroy() */ static void dns_res_frame_init(struct dns_resolver *R, struct dns_res_frame *frame) { memset(frame, '\0', sizeof *frame); if (R != NULL && R->resconf != NULL) { if (!R->resconf->options.recurse) frame->qflags |= DNS_Q_RD; if (R->resconf->options.edns0) frame->qflags |= DNS_Q_EDNS0; } } /* dns_res_frame_init() */ static void dns_res_frame_reset(struct dns_resolver *R, struct dns_res_frame *frame) { dns_res_frame_destroy(R, frame); dns_res_frame_init(R, frame); } /* dns_res_frame_reset() */ static dns_error_t dns_res_frame_prepare(struct dns_resolver *R, struct dns_res_frame *F, const char *qname, enum dns_type qtype, enum dns_class qclass) { struct dns_packet *P = NULL; if (!(F < endof(R->stack))) return DNS_EUNKNOWN; dns_p_movptr(&P, &F->query); dns_res_frame_reset(R, F); dns_p_movptr(&F->query, &P); return dns_q_make(&F->query, qname, qtype, qclass, F->qflags); } /* dns_res_frame_prepare() */ void dns_res_reset(struct dns_resolver *R) { unsigned i; dns_so_reset(&R->so); dns_p_setptr(&R->nodata, NULL); for (i = 0; i < lengthof(R->stack); i++) dns_res_frame_destroy(R, &R->stack[i]); memset(&R->qname, '\0', sizeof *R - offsetof(struct dns_resolver, qname)); for (i = 0; i < lengthof(R->stack); i++) dns_res_frame_init(R, &R->stack[i]); } /* dns_res_reset() */ void dns_res_close(struct dns_resolver *R) { if (!R || 1 < dns_res_release(R)) return; dns_res_reset(R); dns_so_destroy(&R->so); dns_hints_close(R->hints); dns_hosts_close(R->hosts); dns_resconf_close(R->resconf); dns_cache_close(R->cache); free(R); } /* dns_res_close() */ dns_refcount_t dns_res_acquire(struct dns_resolver *R) { return dns_atomic_fetch_add(&R->refcount); } /* dns_res_acquire() */ dns_refcount_t dns_res_release(struct dns_resolver *R) { return dns_atomic_fetch_sub(&R->refcount); } /* dns_res_release() */ struct dns_resolver *dns_res_mortal(struct dns_resolver *res) { if (res) dns_res_release(res); return res; } /* dns_res_mortal() */ static struct dns_packet *dns_res_merge(struct dns_packet *P0, struct dns_packet *P1, int *error_) { size_t bufsiz = P0->end + P1->end; struct dns_packet *P[3] = { P0, P1, 0 }; struct dns_rr rr[3]; int error, copy, i; enum dns_section section; retry: if (!(P[2] = dns_p_make(bufsiz, &error))) goto error; dns_rr_foreach(&rr[0], P[0], .section = DNS_S_QD) { if ((error = dns_rr_copy(P[2], &rr[0], P[0]))) goto error; } for (section = DNS_S_AN; (DNS_S_ALL & section); section <<= 1) { for (i = 0; i < 2; i++) { dns_rr_foreach(&rr[i], P[i], .section = section) { copy = 1; dns_rr_foreach(&rr[2], P[2], .type = rr[i].type, .section = (DNS_S_ALL & ~DNS_S_QD)) { if (0 == dns_rr_cmp(&rr[i], P[i], &rr[2], P[2])) { copy = 0; break; } } if (copy && (error = dns_rr_copy(P[2], &rr[i], P[i]))) { if (error == DNS_ENOBUFS && bufsiz < 65535) { dns_p_setptr(&P[2], NULL); bufsiz = DNS_PP_MAX(65535, bufsiz * 2); goto retry; } goto error; } } /* foreach(rr) */ } /* foreach(packet) */ } /* foreach(section) */ return P[2]; error: *error_ = error; dns_p_free(P[2]); return 0; } /* dns_res_merge() */ static struct dns_packet *dns_res_glue(struct dns_resolver *R, struct dns_packet *Q) { struct dns_packet *P = dns_p_new(512); char qname[DNS_D_MAXNAME + 1]; size_t qlen; enum dns_type qtype; struct dns_rr rr; unsigned sp; int error; if (!(qlen = dns_d_expand(qname, sizeof qname, 12, Q, &error)) || qlen >= sizeof qname) return 0; if (!(qtype = dns_rr_type(12, Q))) return 0; if ((error = dns_p_push(P, DNS_S_QD, qname, strlen(qname), qtype, DNS_C_IN, 0, 0))) return 0; for (sp = 0; sp <= R->sp; sp++) { if (!R->stack[sp].answer) continue; dns_rr_foreach(&rr, R->stack[sp].answer, .name = qname, .type = qtype, .section = (DNS_S_ALL & ~DNS_S_QD)) { rr.section = DNS_S_AN; if ((error = dns_rr_copy(P, &rr, R->stack[sp].answer))) return 0; } } if (dns_p_count(P, DNS_S_AN) > 0) goto copy; /* Otherwise, look for a CNAME */ for (sp = 0; sp <= R->sp; sp++) { if (!R->stack[sp].answer) continue; dns_rr_foreach(&rr, R->stack[sp].answer, .name = qname, .type = DNS_T_CNAME, .section = (DNS_S_ALL & ~DNS_S_QD)) { rr.section = DNS_S_AN; if ((error = dns_rr_copy(P, &rr, R->stack[sp].answer))) return 0; } } if (!dns_p_count(P, DNS_S_AN)) return 0; copy: return dns_p_copy(dns_p_make(P->end, &error), P); } /* dns_res_glue() */ /* * Sort NS records by three criteria: * * 1) Whether glue is present. * 2) Whether glue record is original or of recursive lookup. * 3) Randomly shuffle records which share the above criteria. * * NOTE: Assumes only NS records passed, AND ASSUMES no new NS records will * be added during an iteration. * * FIXME: Only groks A glue, not AAAA glue. */ static int dns_res_nameserv_cmp(struct dns_rr *a, struct dns_rr *b, struct dns_rr_i *i, struct dns_packet *P) { _Bool glued[2] = { 0 }; struct dns_rr x = { 0 }, y = { 0 }; struct dns_ns ns; int cmp, error; if (!(error = dns_ns_parse(&ns, a, P))) glued[0] = !!dns_rr_grep(&x, 1, dns_rr_i_new(P, .section = (DNS_S_ALL & ~DNS_S_QD), .name = ns.host, .type = DNS_T_A), P, &error); if (!(error = dns_ns_parse(&ns, b, P))) glued[1] = !!dns_rr_grep(&y, 1, dns_rr_i_new(P, .section = (DNS_S_ALL & ~DNS_S_QD), .name = ns.host, .type = DNS_T_A), P, &error); if ((cmp = glued[1] - glued[0])) { return cmp; } else if ((cmp = (dns_rr_offset(&y) < i->args[0]) - (dns_rr_offset(&x) < i->args[0]))) { return cmp; } else { return dns_rr_i_shuffle(a, b, i, P); } } /* dns_res_nameserv_cmp() */ #define dgoto(sp, i) \ do { R->stack[(sp)].state = (i); goto exec; } while (0) static int dns_res_exec(struct dns_resolver *R) { struct dns_res_frame *F; struct dns_packet *P; union { char host[DNS_D_MAXNAME + 1]; char name[DNS_D_MAXNAME + 1]; struct dns_ns ns; struct dns_cname cname; } u; size_t len; struct dns_rr rr; int error; exec: F = &R->stack[R->sp]; switch (F->state) { case DNS_R_INIT: F->state++; case DNS_R_GLUE: if (R->sp == 0) dgoto(R->sp, DNS_R_SWITCH); if (!F->query) goto noquery; if (!(F->answer = dns_res_glue(R, F->query))) dgoto(R->sp, DNS_R_SWITCH); if (!(len = dns_d_expand(u.name, sizeof u.name, 12, F->query, &error))) goto error; else if (len >= sizeof u.name) goto toolong; dns_rr_foreach(&rr, F->answer, .name = u.name, .type = dns_rr_type(12, F->query), .section = DNS_S_AN) { dgoto(R->sp, DNS_R_FINISH); } dns_rr_foreach(&rr, F->answer, .name = u.name, .type = DNS_T_CNAME, .section = DNS_S_AN) { F->ans_cname = rr; dgoto(R->sp, DNS_R_CNAME0_A); } F->state++; case DNS_R_SWITCH: while (F->which < (int)sizeof R->resconf->lookup && R->resconf->lookup[F->which]) { switch (R->resconf->lookup[F->which++]) { case 'b': case 'B': dgoto(R->sp, DNS_R_BIND); case 'f': case 'F': dgoto(R->sp, DNS_R_FILE); case 'c': case 'C': if (R->cache) dgoto(R->sp, DNS_R_CACHE); break; default: break; } } /* * FIXME: Examine more closely whether our logic is correct * and DNS_R_SERVFAIL is the correct default response. * * Case 1: We got here because we never got an answer on the * wire. All queries timed-out and we reached maximum * attempts count. See DNS_R_FOREACH_NS. In that case * DNS_R_SERVFAIL is the correct state, unless we want to * return DNS_ETIMEDOUT. * * Case 2: We were a stub resolver and got an unsatisfactory * answer (empty ANSWER section) which caused us to jump * back to DNS_R_SEARCH and ultimately to DNS_R_SWITCH. We * return the answer returned from the wire, which we * stashed in R->nodata. * * Case 3: We reached maximum attempts count as in case #1, * but never got an authoritative response which caused us * to short-circuit. See end of DNS_R_QUERY_A case. We * should probably prepare R->nodata as in case #2. */ if (R->sp == 0 && R->nodata) { /* XXX: can we just return nodata regardless? */ dns_p_movptr(&F->answer, &R->nodata); dgoto(R->sp, DNS_R_FINISH); } dgoto(R->sp, DNS_R_SERVFAIL); case DNS_R_FILE: if (R->sp > 0) { if (!dns_p_setptr(&F->answer, dns_hosts_query(R->hosts, F->query, &error))) goto error; if (dns_p_count(F->answer, DNS_S_AN) > 0) dgoto(R->sp, DNS_R_FINISH); dns_p_setptr(&F->answer, NULL); } else { R->search = 0; while ((len = dns_resconf_search(u.name, sizeof u.name, R->qname, R->qlen, R->resconf, &R->search))) { if ((error = dns_q_make2(&F->query, u.name, len, R->qtype, R->qclass, F->qflags))) goto error; if (!dns_p_setptr(&F->answer, dns_hosts_query(R->hosts, F->query, &error))) goto error; if (dns_p_count(F->answer, DNS_S_AN) > 0) dgoto(R->sp, DNS_R_FINISH); dns_p_setptr(&F->answer, NULL); } } dgoto(R->sp, DNS_R_SWITCH); case DNS_R_CACHE: error = 0; if (!F->query && (error = dns_q_make(&F->query, R->qname, R->qtype, R->qclass, F->qflags))) goto error; if (dns_p_setptr(&F->answer, R->cache->query(F->query, R->cache, &error))) { if (dns_p_count(F->answer, DNS_S_AN) > 0) dgoto(R->sp, DNS_R_FINISH); dns_p_setptr(&F->answer, NULL); dgoto(R->sp, DNS_R_SWITCH); } else if (error) goto error; F->state++; case DNS_R_SUBMIT: if ((error = R->cache->submit(F->query, R->cache))) goto error; F->state++; case DNS_R_CHECK: if ((error = R->cache->check(R->cache))) goto error; F->state++; case DNS_R_FETCH: error = 0; if (dns_p_setptr(&F->answer, R->cache->fetch(R->cache, &error))) { if (dns_p_count(F->answer, DNS_S_AN) > 0) dgoto(R->sp, DNS_R_FINISH); dns_p_setptr(&F->answer, NULL); dgoto(R->sp, DNS_R_SWITCH); } else if (error) goto error; dgoto(R->sp, DNS_R_SWITCH); case DNS_R_BIND: if (R->sp > 0) { if (!F->query) goto noquery; dgoto(R->sp, DNS_R_HINTS); } R->search = 0; F->state++; case DNS_R_SEARCH: /* * XXX: We probably should only apply the domain search * algorithm if R->sp == 0. */ if (!(len = dns_resconf_search(u.name, sizeof u.name, R->qname, R->qlen, R->resconf, &R->search))) dgoto(R->sp, DNS_R_SWITCH); if ((error = dns_q_make2(&F->query, u.name, len, R->qtype, R->qclass, F->qflags))) goto error; F->state++; case DNS_R_HINTS: if (!dns_p_setptr(&F->hints, dns_hints_query(R->hints, F->query, &error))) goto error; F->state++; case DNS_R_ITERATE: dns_rr_i_init(&F->hints_i, F->hints); F->hints_i.section = DNS_S_AUTHORITY; F->hints_i.type = DNS_T_NS; F->hints_i.sort = &dns_res_nameserv_cmp; F->hints_i.args[0] = F->hints->end; F->state++; case DNS_R_FOREACH_NS: dns_rr_i_save(&F->hints_i); /* Load our next nameserver host. */ if (!dns_rr_grep(&F->hints_ns, 1, &F->hints_i, F->hints, &error)) { if (++F->attempts < R->resconf->options.attempts) dgoto(R->sp, DNS_R_ITERATE); dgoto(R->sp, DNS_R_SWITCH); } dns_rr_i_init(&F->hints_j, F->hints); /* Assume there are glue records */ dgoto(R->sp, DNS_R_FOREACH_A); case DNS_R_RESOLV0_NS: /* Have we reached our max depth? */ if (&F[1] >= endof(R->stack)) dgoto(R->sp, DNS_R_FOREACH_NS); if ((error = dns_ns_parse(&u.ns, &F->hints_ns, F->hints))) goto error; if ((error = dns_res_frame_prepare(R, &F[1], u.ns.host, DNS_T_A, DNS_C_IN))) goto error; F->state++; dgoto(++R->sp, DNS_R_INIT); case DNS_R_RESOLV1_NS: if (!(len = dns_d_expand(u.host, sizeof u.host, 12, F[1].query, &error))) goto error; else if (len >= sizeof u.host) goto toolong; dns_rr_foreach(&rr, F[1].answer, .name = u.host, .type = DNS_T_A, .section = (DNS_S_ALL & ~DNS_S_QD)) { rr.section = DNS_S_AR; if ((error = dns_rr_copy(F->hints, &rr, F[1].answer))) goto error; dns_rr_i_rewind(&F->hints_i); /* Now there's glue. */ } dgoto(R->sp, DNS_R_FOREACH_NS); case DNS_R_FOREACH_A: { struct sockaddr_storage saddr; memset(&saddr, 0, sizeof(saddr)); socklen_t saddr_len = sizeof(saddr); /* * NOTE: Iterator initialized in DNS_R_FOREACH_NS because * this state is re-entrant, but we need to reset * .name to a valid pointer each time. */ if ((error = dns_ns_parse(&u.ns, &F->hints_ns, F->hints))) goto error; F->hints_j.name = u.ns.host; F->hints_j.type = DNS_T_ALL; F->hints_j.section = DNS_S_ALL & ~DNS_S_QD; if (!dns_rr_grep(&rr, 1, &F->hints_j, F->hints, &error)) { if (!dns_rr_i_count(&F->hints_j)) dgoto(R->sp, DNS_R_RESOLV0_NS); dgoto(R->sp, DNS_R_FOREACH_NS); } saddr.ss_family = rr.type==DNS_T_AAAA ? AF_INET6 : AF_INET; if (saddr.ss_family==AF_INET){ if ((error = dns_a_parse((struct dns_a *)dns_sa_addr(saddr.ss_family, &saddr, &saddr_len), &rr, F->hints))) goto error; }else{ if ((error = dns_aaaa_parse((struct dns_aaaa *)dns_sa_addr(saddr.ss_family, &saddr, &saddr_len), &rr, F->hints))) goto error; } if (R->sp == 0) dns_fill_sockaddr_from_hints(R->hints, saddr.ss_family, (struct sockaddr *)&saddr); else *dns_sa_port(saddr.ss_family, &saddr) = htons(53); if (DNS_DEBUG) { char addr[INET_ADDRSTRLEN + 1]; if (saddr.ss_family==AF_INET) dns_a_print(addr, sizeof addr, (struct dns_a *)dns_sa_addr(saddr.ss_family, &saddr, &saddr_len)); else dns_aaaa_print(addr, sizeof addr, (struct dns_aaaa *)dns_sa_addr(saddr.ss_family, &saddr, &saddr_len)); dns_header(F->query)->qid = dns_so_mkqid(&R->so); DNS_SHOW(F->query, "ASKING: %s/%s @ DEPTH: %u)", u.ns.host, addr, R->sp); } if ((error = dns_so_submit(&R->so, F->query, (struct sockaddr *)&saddr))) goto error; F->state++; } case DNS_R_QUERY_A: if (dns_so_elapsed(&R->so) >= dns_resconf_timeout(R->resconf)) dgoto(R->sp, DNS_R_FOREACH_A); if ((error = dns_so_check(&R->so)) != 0){ if (error == DNS_ENETUNREACH || error == DNS_ECONNREFUSED || error == DNS_ECONNRESET || error == EINVAL || error == DNS_EHOSTUNREACH) { /* maybe even more case*/ char remote_sock[64]; struct sockaddr *addr = (struct sockaddr*)&R->so.remote; bctbx_sockaddr_to_printable_ip_address(addr, dns_sa_len(addr), remote_sock, sizeof(remote_sock)); belle_sip_error("Cannot reach [%s] because [%s]", remote_sock, strerror(error)); dgoto(R->sp, DNS_R_FOREACH_A); } else goto error; } if (!dns_p_setptr(&F->answer, dns_so_fetch(&R->so, &error))) goto error; if (DNS_DEBUG) { DNS_SHOW(F->answer, "ANSWER @ DEPTH: %u)", R->sp); } if (dns_p_rcode(F->answer) == DNS_RC_FORMERR || dns_p_rcode(F->answer) == DNS_RC_NOTIMP || dns_p_rcode(F->answer) == DNS_RC_BADVERS) { /* Temporarily disable EDNS0 and try again. */ if (F->qflags & DNS_Q_EDNS0) { F->qflags &= ~DNS_Q_EDNS0; if ((error = dns_q_remake(&F->query, F->qflags))) goto error; dgoto(R->sp, DNS_R_FOREACH_A); } } if (dns_p_rcode(F->answer) == DNS_RC_REFUSED) { dgoto(R->sp, DNS_R_FOREACH_A); } if ((error = dns_rr_parse(&rr, 12, F->query))) goto error; if (!(len = dns_d_expand(u.name, sizeof u.name, rr.dn.p, F->query, &error))) goto error; else if (len >= sizeof u.name) goto toolong; dns_rr_foreach(&rr, F->answer, .section = DNS_S_AN, .name = u.name, .type = rr.type) { dgoto(R->sp, DNS_R_FINISH); /* Found */ } dns_rr_foreach(&rr, F->answer, .section = DNS_S_AN, .name = u.name, .type = DNS_T_CNAME) { F->ans_cname = rr; dgoto(R->sp, DNS_R_CNAME0_A); } /* * XXX: The condition here should probably check whether * R->sp == 0, because DNS_R_SEARCH runs regardless of * options.recurse. See DNS_R_BIND. */ if (!R->resconf->options.recurse) { /* Make first answer our tentative answer */ if (!R->nodata) dns_p_movptr(&R->nodata, &F->answer); if (R->search_enabled) dgoto(R->sp, DNS_R_SEARCH); else dgoto(R->sp, DNS_R_FINISH); } dns_rr_foreach(&rr, F->answer, .section = DNS_S_NS, .type = DNS_T_NS) { dns_p_movptr(&F->hints, &F->answer); dgoto(R->sp, DNS_R_ITERATE); } /* XXX: Should this go further up? */ if (dns_header(F->answer)->aa) dgoto(R->sp, DNS_R_FINISH); /* XXX: Should we copy F->answer to R->nodata? */ dgoto(R->sp, DNS_R_FOREACH_A); case DNS_R_CNAME0_A: if (&F[1] >= endof(R->stack)) dgoto(R->sp, DNS_R_FINISH); if ((error = dns_cname_parse(&u.cname, &F->ans_cname, F->answer))) goto error; if ((error = dns_res_frame_prepare(R, &F[1], u.cname.host, dns_rr_type(12, F->query), DNS_C_IN))) goto error; F->state++; dgoto(++R->sp, DNS_R_INIT); case DNS_R_CNAME1_A: if (!(P = dns_res_merge(F->answer, F[1].answer, &error))) goto error; dns_p_setptr(&F->answer, P); dgoto(R->sp, DNS_R_FINISH); case DNS_R_FINISH: if (!F->answer) goto noanswer; if (!R->resconf->options.smart || R->sp > 0) dgoto(R->sp, DNS_R_DONE); R->smart.section = DNS_S_AN; R->smart.type = R->qtype; dns_rr_i_init(&R->smart, F->answer); F->state++; case DNS_R_SMART0_A: if (&F[1] >= endof(R->stack)) dgoto(R->sp, DNS_R_DONE); while (dns_rr_grep(&rr, 1, &R->smart, F->answer, &error)) { union { struct dns_ns ns; struct dns_mx mx; struct dns_srv srv; } rd; const char *qname; enum dns_type qtype; enum dns_class qclass; switch (rr.type) { case DNS_T_NS: if ((error = dns_ns_parse(&rd.ns, &rr, F->answer))) goto error; qname = rd.ns.host; qtype = DNS_T_A; qclass = DNS_C_IN; break; case DNS_T_MX: if ((error = dns_mx_parse(&rd.mx, &rr, F->answer))) goto error; qname = rd.mx.host; qtype = DNS_T_A; qclass = DNS_C_IN; break; case DNS_T_SRV: if ((error = dns_srv_parse(&rd.srv, &rr, F->answer))) goto error; qname = rd.srv.target; qtype = DNS_T_A; qclass = DNS_C_IN; break; default: continue; } /* switch() */ if ((error = dns_res_frame_prepare(R, &F[1], qname, qtype, qclass))) goto error; F->state++; dgoto(++R->sp, DNS_R_INIT); } /* while() */ /* * NOTE: SMTP specification says to fallback to A record. * * XXX: Should we add a mock MX answer? */ if (R->qtype == DNS_T_MX && R->smart.state.count == 0) { if ((error = dns_res_frame_prepare(R, &F[1], R->qname, DNS_T_A, DNS_C_IN))) goto error; R->smart.state.count++; F->state++; dgoto(++R->sp, DNS_R_INIT); } dgoto(R->sp, DNS_R_DONE); case DNS_R_SMART1_A: if (!F[1].answer) goto noanswer; /* * FIXME: For CNAME chains (which are typically illegal in * this context), we should rewrite the record host name * to the original smart qname. All the user cares about * is locating that A/AAAA record. */ dns_rr_foreach(&rr, F[1].answer, .section = DNS_S_AN, .type = DNS_T_A) { rr.section = DNS_S_AR; if (dns_rr_exists(&rr, F[1].answer, F->answer)) continue; while ((error = dns_rr_copy(F->answer, &rr, F[1].answer))) { if (error != DNS_ENOBUFS) goto error; if ((error = dns_p_grow(&F->answer))) goto error; } } dgoto(R->sp, DNS_R_SMART0_A); case DNS_R_DONE: if (!F->answer) goto noanswer; if (R->sp > 0) dgoto(--R->sp, F[-1].state); break; case DNS_R_SERVFAIL: if (!dns_p_setptr(&F->answer, dns_p_make(DNS_P_QBUFSIZ, &error))) goto error; dns_header(F->answer)->qr = 1; dns_header(F->answer)->rcode = DNS_RC_SERVFAIL; if ((error = dns_p_push(F->answer, DNS_S_QD, R->qname, strlen(R->qname), R->qtype, R->qclass, 0, 0))) goto error; dgoto(R->sp, DNS_R_DONE); default: error = EINVAL; goto error; } /* switch () */ return 0; noquery: error = DNS_ENOQUERY; goto error; noanswer: error = DNS_ENOANSWER; goto error; toolong: error = DNS_EILLEGAL; /* FALL THROUGH */ error: return error; } /* dns_res_exec() */ #undef goto void dns_res_clear(struct dns_resolver *R) { switch (R->stack[R->sp].state) { case DNS_R_CHECK: R->cache->clear(R->cache); break; default: dns_so_clear(&R->so); break; } } /* dns_res_clear() */ static int dns_res_events2(struct dns_resolver *R, enum dns_events type) { int events; switch (R->stack[R->sp].state) { case DNS_R_CHECK: events = R->cache->events(R->cache); return (type == DNS_LIBEVENT)? DNS_POLL2EV(events) : events; default: return dns_so_events2(&R->so, type); } } /* dns_res_events2() */ int dns_res_events(struct dns_resolver *R) { return dns_res_events2(R, R->so.opts.events); } /* dns_res_events() */ int dns_res_pollfd(struct dns_resolver *R) { switch (R->stack[R->sp].state) { case DNS_R_CHECK: return R->cache->pollfd(R->cache); default: return dns_so_pollfd(&R->so); } } /* dns_res_pollfd() */ time_t dns_res_timeout(struct dns_resolver *R) { time_t elapsed; switch (R->stack[R->sp].state) { #if 0 case DNS_R_QUERY_AAAA: #endif case DNS_R_QUERY_A: elapsed = dns_so_elapsed(&R->so); if (elapsed <= dns_resconf_timeout(R->resconf)) return R->resconf->options.timeout - elapsed; break; default: break; } /* switch() */ /* * NOTE: We're not in a pollable state, or the user code hasn't * called dns_res_check properly. The calling code is probably * broken. Put them into a slow-burn pattern. */ return 1; } /* dns_res_timeout() */ time_t dns_res_elapsed(struct dns_resolver *R) { return dns_elapsed(&R->elapsed); } /* dns_res_elapsed() */ int dns_res_poll(struct dns_resolver *R, int timeout) { return dns_poll(dns_res_pollfd(R), dns_res_events2(R, DNS_SYSPOLL), timeout); } /* dns_res_poll() */ int dns_res_submit2(struct dns_resolver *R, const char *qname, size_t qlen, enum dns_type qtype, enum dns_class qclass) { dns_res_reset(R); /* Don't anchor; that can conflict with searchlist generation. */ dns_d_init(R->qname, sizeof R->qname, qname, (R->qlen = qlen), 0); R->qtype = qtype; R->qclass = qclass; dns_begin(&R->elapsed); return 0; } /* dns_res_submit2() */ int dns_res_submit(struct dns_resolver *R, const char *qname, enum dns_type qtype, enum dns_class qclass) { return dns_res_submit2(R, qname, strlen(qname), qtype, qclass); } /* dns_res_submit() */ int dns_res_check(struct dns_resolver *R) { int error; if (R->stack[0].state != DNS_R_DONE) { if ((error = dns_res_exec(R))) return error; } return 0; } /* dns_res_check() */ struct dns_packet *dns_res_fetch(struct dns_resolver *R, int *error) { struct dns_packet *P = NULL; if (R->stack[0].state != DNS_R_DONE) { *error = DNS_EUNKNOWN; return NULL; } if (!dns_p_movptr(&P, &R->stack[0].answer)) { *error = DNS_EFETCHED; return NULL; } return P; } /* dns_res_fetch() */ static struct dns_packet *dns_res_fetch_and_study(struct dns_resolver *R, int *_error) { struct dns_packet *P = NULL; int error; if (!(P = dns_res_fetch(R, &error))) goto error; if ((error = dns_p_study(P))) goto error; return P; error: *_error = error; dns_p_free(P); return NULL; } /* dns_res_fetch_and_study() */ struct dns_packet *dns_res_query(struct dns_resolver *res, const char *qname, enum dns_type qtype, enum dns_class qclass, int timeout, int *error_) { int error; if ((error = dns_res_submit(res, qname, qtype, qclass))) goto error; while ((error = dns_res_check(res))) { if (dns_res_elapsed(res) > timeout) error = DNS_ETIMEDOUT; if (error != DNS_EAGAIN) goto error; if ((error = dns_res_poll(res, 1))) goto error; } return dns_res_fetch(res, error_); error: *error_ = error; return 0; } /* dns_res_query() */ const struct dns_stat *dns_res_stat(struct dns_resolver *res) { return dns_so_stat(&res->so); } /* dns_res_stat() */ void dns_res_sethints(struct dns_resolver *res, struct dns_hints *hints) { dns_hints_acquire(hints); /* acquire first in case same hints object */ dns_hints_close(res->hints); res->hints = hints; } /* dns_res_sethints() */ void dns_res_enable_search(struct dns_resolver *res, unsigned char enable) { res->search_enabled = enable; } int dns_res_was_asymetric(struct dns_resolver *res){ return res->so.ip_differ; } /* * A D D R I N F O R O U T I N E S * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ struct dns_addrinfo { struct addrinfo hints; struct dns_resolver *res; char qname[DNS_D_MAXNAME + 1]; enum dns_type qtype; unsigned short qport, port; struct { unsigned long todo; int atype; enum dns_type qtype; } af; struct dns_packet *answer; struct dns_packet *glue; struct dns_rr_i i, g; struct dns_rr rr; char cname[DNS_D_MAXNAME + 1]; char i_cname[DNS_D_MAXNAME + 1], g_cname[DNS_D_MAXNAME + 1]; int state; int found; struct dns_stat st; }; /* struct dns_addrinfo */ #define DNS_AI_AFMAX 32 #define DNS_AI_AF2INDEX(af) (1UL << ((af) - 1)) static int dns_ai_nextaf(struct dns_addrinfo *ai) { int qtype = 0, atype = 0; unsigned i; dns_static_assert(AF_UNSPEC == 0, "AF_UNSPEC constant not 0"); dns_static_assert(AF_INET <= DNS_AI_AFMAX, "AF_INET constant too large"); dns_static_assert(AF_INET6 <= DNS_AI_AFMAX, "AF_INET6 constant too large"); for (i = 0; i < lengthof(ai->res->resconf->family); i++) { int af = ai->res->resconf->family[i]; if (af == AF_UNSPEC) break; if (af < 0 || af > DNS_AI_AFMAX) continue; if (!(DNS_AI_AF2INDEX(af) & ai->af.todo)) continue; switch (af) { case AF_INET: atype = AF_INET; qtype = DNS_T_A; goto update; case AF_INET6: atype = AF_INET6; qtype = DNS_T_AAAA; goto update; } } update: ai->af.atype = atype; ai->af.qtype = qtype; if (atype) ai->af.todo &= ~DNS_AI_AF2INDEX(atype); return atype; } /* dns_ai_nextaf() */ static enum dns_type dns_ai_qtype(struct dns_addrinfo *ai) { return (ai->qtype)? ai->qtype : ai->af.qtype; } /* dns_ai_qtype() */ static dns_error_t dns_ai_parseport(unsigned short *port, const char *serv, const struct addrinfo *hints) { const char *cp = serv; unsigned long n = 0; while (*cp >= '0' && *cp <= '9' && n < 65536) { n *= 10; n += *cp++ - '0'; } if (*cp == '\0') { if (cp == serv || n >= 65536) return DNS_ESERVICE; *port = n; return 0; } if (hints->ai_flags & AI_NUMERICSERV) return DNS_ESERVICE; /* TODO: try getaddrinfo(NULL, serv, { .ai_flags = AI_NUMERICSERV }) */ return DNS_ESERVICE; } /* dns_ai_parseport() */ struct dns_addrinfo *dns_ai_open(const char *host, const char *serv, enum dns_type qtype, const struct addrinfo *hints, struct dns_resolver *res, int *error_) { static const struct dns_addrinfo ai_initializer; struct dns_addrinfo *ai; int error; if (res) { dns_res_acquire(res); } else if (!(hints->ai_flags & AI_NUMERICHOST)) { /* * NOTE: it's assumed that *_error is set from a previous * API function call, such as dns_res_stub(). Should change * this semantic, but it's applied elsewhere, too. */ return NULL; } if (!(ai = malloc(sizeof *ai))) goto syerr; *ai = ai_initializer; ai->hints = *hints; ai->res = res; res = NULL; if (sizeof ai->qname <= dns_strlcpy(ai->qname, host, sizeof ai->qname)) { error = ENAMETOOLONG; goto error; } ai->qtype = qtype; ai->qport = 0; if (serv && (error = dns_ai_parseport(&ai->qport, serv, hints))) goto error; ai->port = ai->qport; switch (ai->qtype) { case DNS_T_A: ai->af.todo = DNS_AI_AF2INDEX(AF_INET); break; case DNS_T_AAAA: ai->af.todo = DNS_AI_AF2INDEX(AF_INET6); break; default: /* 0, MX, SRV, etc */ switch (ai->hints.ai_family) { case AF_UNSPEC: ai->af.todo = DNS_AI_AF2INDEX(AF_INET) | DNS_AI_AF2INDEX(AF_INET6); break; case AF_INET: ai->af.todo = DNS_AI_AF2INDEX(AF_INET); break; case AF_INET6: ai->af.todo = DNS_AI_AF2INDEX(AF_INET6); break; default: break; } } return ai; syerr: error = dns_syerr(); error: *error_ = error; dns_ai_close(ai); dns_res_close(res); return NULL; } /* dns_ai_open() */ void dns_ai_close(struct dns_addrinfo *ai) { if (!ai) return; dns_res_close(ai->res); if (ai->answer != ai->glue) dns_p_free(ai->glue); dns_p_free(ai->answer); free(ai); } /* dns_ai_close() */ static int dns_ai_setent(struct addrinfo **ent, union dns_any *any, enum dns_type type, struct dns_addrinfo *ai) { struct sockaddr *saddr; struct sockaddr_in sin; struct sockaddr_in6 sin6; const char *cname; size_t clen; switch (type) { case DNS_T_A: saddr = memset(&sin, '\0', sizeof sin); sin.sin_family = AF_INET; sin.sin_port = htons(ai->port); memcpy(&sin.sin_addr, any, sizeof sin.sin_addr); break; case DNS_T_AAAA: saddr = memset(&sin6, '\0', sizeof sin6); sin6.sin6_family = AF_INET6; sin6.sin6_port = htons(ai->port); memcpy(&sin6.sin6_addr, any, sizeof sin6.sin6_addr); break; default: return EINVAL; } /* switch() */ if (ai->hints.ai_flags & AI_CANONNAME) { cname = (*ai->cname)? ai->cname : ai->qname; clen = strlen(cname); } else { cname = NULL; clen = 0; } if (!(*ent = malloc(sizeof **ent + dns_sa_len(saddr) + ((ai->hints.ai_flags & AI_CANONNAME)? clen + 1 : 0)))) return dns_syerr(); memset(*ent, '\0', sizeof **ent); (*ent)->ai_family = saddr->sa_family; (*ent)->ai_socktype = ai->hints.ai_socktype; (*ent)->ai_protocol = ai->hints.ai_protocol; (*ent)->ai_addr = memcpy((unsigned char *)*ent + sizeof **ent, saddr, dns_sa_len(saddr)); (*ent)->ai_addrlen = dns_sa_len(saddr); if (ai->hints.ai_flags & AI_CANONNAME) (*ent)->ai_canonname = memcpy((unsigned char *)*ent + sizeof **ent + dns_sa_len(saddr), cname, clen + 1); ai->found++; return 0; } /* dns_ai_setent() */ enum dns_ai_state { DNS_AI_S_INIT, DNS_AI_S_NEXTAF, DNS_AI_S_NUMERIC, DNS_AI_S_SUBMIT, DNS_AI_S_CHECK, DNS_AI_S_FETCH, DNS_AI_S_FOREACH_I, DNS_AI_S_ITERATE_G, DNS_AI_S_FOREACH_G, DNS_AI_S_SUBMIT_G, DNS_AI_S_CHECK_G, DNS_AI_S_FETCH_G, DNS_AI_S_DONE, }; /* enum dns_ai_state */ #define dns_ai_goto(which) do { ai->state = (which); goto exec; } while (0) int dns_ai_nextent(struct addrinfo **ent, struct dns_addrinfo *ai) { struct dns_packet *ans, *glue; struct dns_rr rr; char qname[DNS_D_MAXNAME + 1]; union dns_any any; size_t qlen, clen; int error; *ent = 0; exec: switch (ai->state) { case DNS_AI_S_INIT: ai->state++; case DNS_AI_S_NEXTAF: if (!dns_ai_nextaf(ai)) dns_ai_goto(DNS_AI_S_DONE); ai->state++; case DNS_AI_S_NUMERIC: if (1 == dns_inet_pton(AF_INET, ai->qname, &any.a)) { if (ai->af.atype == AF_INET) { ai->state = DNS_AI_S_NEXTAF; return dns_ai_setent(ent, &any, DNS_T_A, ai); } else { dns_ai_goto(DNS_AI_S_NEXTAF); } } if (1 == dns_inet_pton(AF_INET6, ai->qname, &any.aaaa)) { if (ai->af.atype == AF_INET6) { ai->state = DNS_AI_S_NEXTAF; return dns_ai_setent(ent, &any, DNS_T_AAAA, ai); } else { dns_ai_goto(DNS_AI_S_NEXTAF); } } if (ai->hints.ai_flags & AI_NUMERICHOST) dns_ai_goto(DNS_AI_S_NEXTAF); ai->state++; case DNS_AI_S_SUBMIT: assert(ai->res); if ((error = dns_res_submit(ai->res, ai->qname, dns_ai_qtype(ai), DNS_C_IN))) return error; ai->state++; case DNS_AI_S_CHECK: if ((error = dns_res_check(ai->res))) return error; ai->state++; case DNS_AI_S_FETCH: if (!(ans = dns_res_fetch_and_study(ai->res, &error))) return error; if (ai->glue != ai->answer) dns_p_free(ai->glue); ai->glue = dns_p_movptr(&ai->answer, &ans); /* Search generator may have changed the qname. */ if (!(qlen = dns_d_expand(qname, sizeof qname, 12, ai->answer, &error))) return error; else if (qlen >= sizeof qname) return DNS_EILLEGAL; if (!dns_d_cname(ai->cname, sizeof ai->cname, qname, qlen, ai->answer, &error)) return error; dns_strlcpy(ai->i_cname, ai->cname, sizeof ai->i_cname); dns_rr_i_init(&ai->i, ai->answer); ai->i.section = DNS_S_AN; ai->i.name = ai->i_cname; ai->i.type = dns_ai_qtype(ai); ai->i.sort = &dns_rr_i_order; ai->state++; case DNS_AI_S_FOREACH_I: if (!dns_rr_grep(&rr, 1, &ai->i, ai->answer, &error)) dns_ai_goto(DNS_AI_S_NEXTAF); if ((error = dns_any_parse(&any, &rr, ai->answer))) return error; ai->port = ai->qport; switch (rr.type) { case DNS_T_A: case DNS_T_AAAA: return dns_ai_setent(ent, &any, rr.type, ai); default: if (!(clen = dns_any_cname(ai->cname, sizeof ai->cname, &any, rr.type))) dns_ai_goto(DNS_AI_S_FOREACH_I); /* * Find the "real" canonical name. Some authorities * publish aliases where an RFC defines a canonical * name. We trust that the resolver followed any * CNAME chains on it's own, regardless of whether * the "smart" option is enabled. */ if (!dns_d_cname(ai->cname, sizeof ai->cname, ai->cname, clen, ai->answer, &error)) return error; if (rr.type == DNS_T_SRV) ai->port = any.srv.port; break; } /* switch() */ ai->state++; case DNS_AI_S_ITERATE_G: dns_strlcpy(ai->g_cname, ai->cname, sizeof ai->g_cname); dns_rr_i_init(&ai->g, ai->glue); ai->g.section = DNS_S_ALL & ~DNS_S_QD; ai->g.name = ai->g_cname; ai->g.type = ai->af.qtype; ai->state++; case DNS_AI_S_FOREACH_G: if (!dns_rr_grep(&rr, 1, &ai->g, ai->glue, &error)) { if (dns_rr_i_count(&ai->g) > 0) dns_ai_goto(DNS_AI_S_FOREACH_I); else dns_ai_goto(DNS_AI_S_SUBMIT_G); } if ((error = dns_any_parse(&any, &rr, ai->glue))) return error; return dns_ai_setent(ent, &any, rr.type, ai); case DNS_AI_S_SUBMIT_G: /* skip if already queried */ if (dns_rr_grep(&rr, 1, dns_rr_i_new(ai->glue, .section = DNS_S_QD, .name = ai->g.name, .type = ai->g.type), ai->glue, &error)) dns_ai_goto(DNS_AI_S_FOREACH_I); if ((error = dns_res_submit(ai->res, ai->g.name, ai->g.type, DNS_C_IN))) return error; ai->state++; case DNS_AI_S_CHECK_G: if ((error = dns_res_check(ai->res))) return error; ai->state++; case DNS_AI_S_FETCH_G: if (!(ans = dns_res_fetch_and_study(ai->res, &error))) return error; glue = dns_p_merge(ai->glue, DNS_S_ALL, ans, DNS_S_ALL, &error); dns_p_setptr(&ans, NULL); if (!glue) return error; if (ai->glue != ai->answer) dns_p_free(ai->glue); ai->glue = glue; if (!dns_d_cname(ai->cname, sizeof ai->cname, ai->g.name, strlen(ai->g.name), ai->glue, &error)) dns_ai_goto(DNS_AI_S_FOREACH_I); dns_ai_goto(DNS_AI_S_ITERATE_G); case DNS_AI_S_DONE: if (ai->found) { return ENOENT; /* TODO: Just return 0 */ } else if (ai->answer) { switch (dns_p_rcode(ai->answer)) { case DNS_RC_NOERROR: /* FALL THROUGH */ case DNS_RC_NXDOMAIN: return DNS_ENONAME; default: return DNS_EFAIL; } } else { return DNS_EFAIL; } default: return EINVAL; } /* switch() */ } /* dns_ai_nextent() */ time_t dns_ai_elapsed(struct dns_addrinfo *ai) { return (ai->res)? dns_res_elapsed(ai->res) : 0; } /* dns_ai_elapsed() */ void dns_ai_clear(struct dns_addrinfo *ai) { if (ai->res) dns_res_clear(ai->res); } /* dns_ai_clear() */ int dns_ai_events(struct dns_addrinfo *ai) { return (ai->res)? dns_res_events(ai->res) : 0; } /* dns_ai_events() */ int dns_ai_pollfd(struct dns_addrinfo *ai) { return (ai->res)? dns_res_pollfd(ai->res) : -1; } /* dns_ai_pollfd() */ time_t dns_ai_timeout(struct dns_addrinfo *ai) { return (ai->res)? dns_res_timeout(ai->res) : 0; } /* dns_ai_timeout() */ int dns_ai_poll(struct dns_addrinfo *ai, int timeout) { return (ai->res)? dns_res_poll(ai->res, timeout) : 0; } /* dns_ai_poll() */ size_t dns_ai_print(void *_dst, size_t lim, struct addrinfo *ent, struct dns_addrinfo *ai) { struct dns_buf dst = DNS_B_INTO(_dst, lim); char addr[DNS_PP_MAX(INET_ADDRSTRLEN, INET6_ADDRSTRLEN) + 1]; dns_b_puts(&dst, "[ "); dns_b_puts(&dst, ai->qname); dns_b_puts(&dst, " IN "); if (ai->qtype) { dns_b_puts(&dst, dns_strtype(ai->qtype)); } else if (ent->ai_family == AF_INET) { dns_b_puts(&dst, dns_strtype(DNS_T_A)); } else if (ent->ai_family == AF_INET6) { dns_b_puts(&dst, dns_strtype(DNS_T_AAAA)); } else { dns_b_puts(&dst, "0"); } dns_b_puts(&dst, " ]\n"); dns_b_puts(&dst, ".ai_family = "); switch (ent->ai_family) { case AF_INET: dns_b_puts(&dst, "AF_INET"); break; case AF_INET6: dns_b_puts(&dst, "AF_INET6"); break; default: dns_b_fmtju(&dst, ent->ai_family, 0); break; } dns_b_putc(&dst, '\n'); dns_b_puts(&dst, ".ai_socktype = "); switch (ent->ai_socktype) { case SOCK_STREAM: dns_b_puts(&dst, "SOCK_STREAM"); break; case SOCK_DGRAM: dns_b_puts(&dst, "SOCK_DGRAM"); break; default: dns_b_fmtju(&dst, ent->ai_socktype, 0); break; } dns_b_putc(&dst, '\n'); dns_inet_ntop(dns_sa_family(ent->ai_addr), dns_sa_addr(dns_sa_family(ent->ai_addr), ent->ai_addr, NULL), addr, sizeof addr); dns_b_puts(&dst, ".ai_addr = ["); dns_b_puts(&dst, addr); dns_b_puts(&dst, "]:"); dns_b_fmtju(&dst, ntohs(*dns_sa_port(dns_sa_family(ent->ai_addr), ent->ai_addr)), 0); dns_b_putc(&dst, '\n'); dns_b_puts(&dst, ".ai_canonname = "); dns_b_puts(&dst, (ent->ai_canonname)? ent->ai_canonname : "[NULL]"); dns_b_putc(&dst, '\n'); return dns_b_strllen(&dst); } /* dns_ai_print() */ const struct dns_stat *dns_ai_stat(struct dns_addrinfo *ai) { return (ai->res)? dns_res_stat(ai->res) : &ai->st; } /* dns_ai_stat() */ /* * M I S C E L L A N E O U S R O U T I N E S * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ static const struct { char name[16]; enum dns_section type; } dns_sections[] = { { "QUESTION", DNS_S_QUESTION }, { "QD", DNS_S_QUESTION }, { "ANSWER", DNS_S_ANSWER }, { "AN", DNS_S_ANSWER }, { "AUTHORITY", DNS_S_AUTHORITY }, { "NS", DNS_S_AUTHORITY }, { "ADDITIONAL", DNS_S_ADDITIONAL }, { "AR", DNS_S_ADDITIONAL }, }; const char *(dns_strsection)(enum dns_section section, void *_dst, size_t lim) { struct dns_buf dst = DNS_B_INTO(_dst, lim); unsigned i; for (i = 0; i < lengthof(dns_sections); i++) { if (dns_sections[i].type & section) { dns_b_puts(&dst, dns_sections[i].name); section &= ~dns_sections[i].type; if (section) dns_b_putc(&dst, '|'); } } if (section || dst.p == dst.base) dns_b_fmtju(&dst, (0xffff & section), 0); return dns_b_tostring(&dst); } /* dns_strsection() */ enum dns_section dns_isection(const char *src) { enum dns_section section = 0; char sbuf[128]; char *name, *next; unsigned i; dns_strlcpy(sbuf, src, sizeof sbuf); next = sbuf; while ((name = dns_strsep(&next, "|+, \t"))) { for (i = 0; i < lengthof(dns_sections); i++) { if (!strcasecmp(dns_sections[i].name, name)) { section |= dns_sections[i].type; break; } } } return section; } /* dns_isection() */ static const struct { char name[8]; enum dns_class type; } dns_classes[] = { { "IN", DNS_C_IN }, }; const char *(dns_strclass)(enum dns_class type, void *_dst, size_t lim) { struct dns_buf dst = DNS_B_INTO(_dst, lim); unsigned i; for (i = 0; i < lengthof(dns_classes); i++) { if (dns_classes[i].type == type) { dns_b_puts(&dst, dns_classes[i].name); break; } } if (dst.p == dst.base) dns_b_fmtju(&dst, (0xffff & type), 0); return dns_b_tostring(&dst); } /* dns_strclass() */ enum dns_class dns_iclass(const char *name) { unsigned i, class; for (i = 0; i < lengthof(dns_classes); i++) { if (!strcasecmp(dns_classes[i].name, name)) return dns_classes[i].type; } class = 0; while (dns_isdigit(*name)) { class *= 10; class += *name++ - '0'; } return DNS_PP_MIN(class, 0xffff); } /* dns_iclass() */ const char *(dns_strtype)(enum dns_type type, void *_dst, size_t lim) { struct dns_buf dst = DNS_B_INTO(_dst, lim); unsigned i; for (i = 0; i < lengthof(dns_rrtypes); i++) { if (dns_rrtypes[i].type == type) { dns_b_puts(&dst, dns_rrtypes[i].name); break; } } if (dst.p == dst.base) dns_b_fmtju(&dst, (0xffff & type), 0); return dns_b_tostring(&dst); } /* dns_strtype() */ enum dns_type dns_itype(const char *name) { unsigned i, type; for (i = 0; i < lengthof(dns_rrtypes); i++) { if (!strcasecmp(dns_rrtypes[i].name, name)) return dns_rrtypes[i].type; } type = 0; while (dns_isdigit(*name)) { type *= 10; type += *name++ - '0'; } return DNS_PP_MIN(type, 0xffff); } /* dns_itype() */ static char dns_opcodes[16][16] = { [DNS_OP_QUERY] = "QUERY", [DNS_OP_IQUERY] = "IQUERY", [DNS_OP_STATUS] = "STATUS", [DNS_OP_NOTIFY] = "NOTIFY", [DNS_OP_UPDATE] = "UPDATE", }; static const char *dns__strcode(int code, volatile char *dst, size_t lim) { char _tmp[48] = ""; struct dns_buf tmp; size_t p; assert(lim > 0); dns_b_fmtju(dns_b_into(&tmp, _tmp, DNS_PP_MIN(sizeof _tmp, lim - 1)), code, 0); /* copy downwards so first byte is copied last (see below) */ p = (size_t)(tmp.p - tmp.base); dst[p] = '\0'; while (p--) dst[p] = _tmp[p]; return (const char *)dst; } const char *dns_stropcode(enum dns_opcode opcode) { opcode = (unsigned)opcode % lengthof(dns_opcodes); if ('\0' == dns_opcodes[opcode][0]) return dns__strcode(opcode, dns_opcodes[opcode], sizeof dns_opcodes[opcode]); return dns_opcodes[opcode]; } /* dns_stropcode() */ enum dns_opcode dns_iopcode(const char *name) { unsigned opcode; for (opcode = 0; opcode < lengthof(dns_opcodes); opcode++) { if (!strcasecmp(name, dns_opcodes[opcode])) return opcode; } opcode = 0; while (dns_isdigit(*name)) { opcode *= 10; opcode += *name++ - '0'; } return DNS_PP_MIN(opcode, 0x0f); } /* dns_iopcode() */ static char dns_rcodes[32][16] = { [DNS_RC_NOERROR] = "NOERROR", [DNS_RC_FORMERR] = "FORMERR", [DNS_RC_SERVFAIL] = "SERVFAIL", [DNS_RC_NXDOMAIN] = "NXDOMAIN", [DNS_RC_NOTIMP] = "NOTIMP", [DNS_RC_REFUSED] = "REFUSED", [DNS_RC_YXDOMAIN] = "YXDOMAIN", [DNS_RC_YXRRSET] = "YXRRSET", [DNS_RC_NXRRSET] = "NXRRSET", [DNS_RC_NOTAUTH] = "NOTAUTH", [DNS_RC_NOTZONE] = "NOTZONE", /* EDNS(0) extended RCODEs ... */ [DNS_RC_BADVERS] = "BADVERS", }; const char *dns_strrcode(enum dns_rcode rcode) { rcode = (unsigned)rcode % lengthof(dns_rcodes); if ('\0' == dns_rcodes[rcode][0]) return dns__strcode(rcode, dns_rcodes[rcode], sizeof dns_rcodes[rcode]); return dns_rcodes[rcode]; } /* dns_strrcode() */ enum dns_rcode dns_ircode(const char *name) { unsigned rcode; for (rcode = 0; rcode < lengthof(dns_rcodes); rcode++) { if (!strcasecmp(name, dns_rcodes[rcode])) return rcode; } rcode = 0; while (dns_isdigit(*name)) { rcode *= 10; rcode += *name++ - '0'; } return DNS_PP_MIN(rcode, 0xfff); } /* dns_ircode() */ /* * C O M M A N D - L I N E / R E G R E S S I O N R O U T I N E S * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ #if DNS_MAIN #include #include #include #include #if _WIN32 #include #endif #if !_WIN32 #include #endif struct { struct { const char *path[8]; unsigned count; } resconf, nssconf, hosts, cache; const char *qname; enum dns_type qtype; int (*sort)(); int verbose; } MAIN = { .sort = &dns_rr_i_packet, }; static void hexdump(const unsigned char *src, size_t len, FILE *fp) { static const unsigned char hex[] = "0123456789abcdef"; static const unsigned char tmpl[] = " | |\n"; unsigned char ln[sizeof tmpl]; const unsigned char *sp, *se; unsigned char *h, *g; unsigned i, n; sp = src; se = sp + len; while (sp < se) { memcpy(ln, tmpl, sizeof ln); h = &ln[2]; g = &ln[53]; for (n = 0; n < 2; n++) { for (i = 0; i < 8 && se - sp > 0; i++, sp++) { h[0] = hex[0x0f & (*sp >> 4)]; h[1] = hex[0x0f & (*sp >> 0)]; h += 3; *g++ = (isgraph(*sp))? *sp : '.'; } h++; } fputs((char *)ln, fp); } return /* void */; } /* hexdump() */ DNS_NORETURN static void panic(const char *fmt, ...) { va_list ap; va_start(ap, fmt); #if _WIN32 vfprintf(stderr, fmt, ap); exit(EXIT_FAILURE); #else verrx(EXIT_FAILURE, fmt, ap); #endif } /* panic() */ #define panic_(fn, ln, fmt, ...) \ panic(fmt "%0s", (fn), (ln), __VA_ARGS__) #define panic(...) \ panic_(__func__, __LINE__, "(%s:%d) " __VA_ARGS__, "") static void *grow(unsigned char *p, size_t size) { void *tmp; if (!(tmp = realloc(p, size))) panic("realloc(%"PRIuZ"): %s", size, dns_strerror(errno)); return tmp; } /* grow() */ static size_t add(size_t a, size_t b) { if (~a < b) panic("%"PRIuZ" + %"PRIuZ": integer overflow", a, b); return a + b; } /* add() */ static size_t append(unsigned char **dst, size_t osize, const void *src, size_t len) { size_t size = add(osize, len); *dst = grow(*dst, size); memcpy(*dst + osize, src, len); return size; } /* append() */ static size_t slurp(unsigned char **dst, size_t osize, FILE *fp, const char *path) { size_t size = osize; unsigned char buf[1024]; size_t count; while ((count = fread(buf, 1, sizeof buf, fp))) size = append(dst, size, buf, count); if (ferror(fp)) panic("%s: %s", path, dns_strerror(errno)); return size; } /* slurp() */ static struct dns_resolv_conf *resconf(void) { static struct dns_resolv_conf *resconf; const char *path; unsigned i; int error; if (resconf) return resconf; if (!(resconf = dns_resconf_open(&error))) panic("dns_resconf_open: %s", dns_strerror(error)); if (!MAIN.resconf.count) MAIN.resconf.path[MAIN.resconf.count++] = "/etc/resolv.conf"; for (i = 0; i < MAIN.resconf.count; i++) { path = MAIN.resconf.path[i]; if (0 == strcmp(path, "-")) error = dns_resconf_loadfile(resconf, stdin); else error = dns_resconf_loadpath(resconf, path); if (error) panic("%s: %s", path, dns_strerror(error)); } for (i = 0; i < MAIN.nssconf.count; i++) { path = MAIN.nssconf.path[i]; if (0 == strcmp(path, "-")) error = dns_nssconf_loadfile(resconf, stdin); else error = dns_nssconf_loadpath(resconf, path); if (error) panic("%s: %s", path, dns_strerror(error)); } if (!MAIN.nssconf.count) { path = "/etc/nsswitch.conf"; if (!(error = dns_nssconf_loadpath(resconf, path))) MAIN.nssconf.path[MAIN.nssconf.count++] = path; else if (error != ENOENT) panic("%s: %s", path, dns_strerror(error)); } return resconf; } /* resconf() */ static struct dns_hosts *hosts(void) { static struct dns_hosts *hosts; const char *path; unsigned i; int error; if (hosts) return hosts; if (!MAIN.hosts.count) { MAIN.hosts.path[MAIN.hosts.count++] = "/etc/hosts"; /* Explicitly test dns_hosts_local() */ if (!(hosts = dns_hosts_local(&error))) panic("%s: %s", "/etc/hosts", dns_strerror(error)); return hosts; } if (!(hosts = dns_hosts_open(&error))) panic("dns_hosts_open: %s", dns_strerror(error)); for (i = 0; i < MAIN.hosts.count; i++) { path = MAIN.hosts.path[i]; if (0 == strcmp(path, "-")) error = dns_hosts_loadfile(hosts, stdin); else error = dns_hosts_loadpath(hosts, path); if (error) panic("%s: %s", path, dns_strerror(error)); } return hosts; } /* hosts() */ #if DNS_CACHE #include "cache.h" static struct dns_cache *cache(void) { static struct cache *cache; const char *path; unsigned i; int error; if (cache) return cache_resi(cache); if (!MAIN.cache.count) return NULL; if (!(cache = cache_open(&error))) panic("%s: %s", MAIN.cache.path[0], dns_strerror(error)); for (i = 0; i < MAIN.cache.count; i++) { path = MAIN.cache.path[i]; if (!strcmp(path, "-")) { if ((error = cache_loadfile(cache, stdin, NULL, 0))) panic("%s: %s", path, dns_strerror(error)); } else if ((error = cache_loadpath(cache, path, NULL, 0))) panic("%s: %s", path, dns_strerror(error)); } return cache_resi(cache); } /* cache() */ #else static struct dns_cache *cache(void) { return NULL; } #endif static void print_packet(struct dns_packet *P, FILE *fp) { dns_p_dump3(P, dns_rr_i_new(P, .sort = MAIN.sort), fp); if (MAIN.verbose > 2) hexdump(P->data, P->end, fp); } /* print_packet() */ static int parse_packet(int argc DNS_NOTUSED, char *argv[] DNS_NOTUSED) { struct dns_packet *P = dns_p_new(512); struct dns_packet *Q = dns_p_new(512); enum dns_section section; struct dns_rr rr; int error; union dns_any any; char pretty[sizeof any * 2]; size_t len; P->end = fread(P->data, 1, P->size, stdin); fputs(";; [HEADER]\n", stdout); fprintf(stdout, ";; qr : %s(%d)\n", (dns_header(P)->qr)? "RESPONSE" : "QUERY", dns_header(P)->qr); fprintf(stdout, ";; opcode : %s(%d)\n", dns_stropcode(dns_header(P)->opcode), dns_header(P)->opcode); fprintf(stdout, ";; aa : %s(%d)\n", (dns_header(P)->aa)? "AUTHORITATIVE" : "NON-AUTHORITATIVE", dns_header(P)->aa); fprintf(stdout, ";; tc : %s(%d)\n", (dns_header(P)->tc)? "TRUNCATED" : "NOT-TRUNCATED", dns_header(P)->tc); fprintf(stdout, ";; rd : %s(%d)\n", (dns_header(P)->rd)? "RECURSION-DESIRED" : "RECURSION-NOT-DESIRED", dns_header(P)->rd); fprintf(stdout, ";; ra : %s(%d)\n", (dns_header(P)->ra)? "RECURSION-ALLOWED" : "RECURSION-NOT-ALLOWED", dns_header(P)->ra); fprintf(stdout, ";; rcode : %s(%d)\n", dns_strrcode(dns_p_rcode(P)), dns_p_rcode(P)); section = 0; dns_rr_foreach(&rr, P, .sort = MAIN.sort) { if (section != rr.section) fprintf(stdout, "\n;; [%s:%d]\n", dns_strsection(rr.section), dns_p_count(P, rr.section)); if ((len = dns_rr_print(pretty, sizeof pretty, &rr, P, &error))) fprintf(stdout, "%s\n", pretty); dns_rr_copy(Q, &rr, P); section = rr.section; } fputs("; ; ; ; ; ; ; ;\n\n", stdout); section = 0; #if 0 dns_rr_foreach(&rr, Q, .name = "ns8.yahoo.com.") { #else struct dns_rr rrset[32]; struct dns_rr_i *rri = dns_rr_i_new(Q, .name = dns_d_new("ns8.yahoo.com", DNS_D_ANCHOR), .sort = MAIN.sort); unsigned rrcount = dns_rr_grep(rrset, lengthof(rrset), rri, Q, &error); for (unsigned i = 0; i < rrcount; i++) { rr = rrset[i]; #endif if (section != rr.section) fprintf(stdout, "\n;; [%s:%d]\n", dns_strsection(rr.section), dns_p_count(Q, rr.section)); if ((len = dns_rr_print(pretty, sizeof pretty, &rr, Q, &error))) fprintf(stdout, "%s\n", pretty); section = rr.section; } if (MAIN.verbose > 1) { fprintf(stderr, "orig:%"PRIuZ"\n", P->end); hexdump(P->data, P->end, stdout); fprintf(stderr, "copy:%"PRIuZ"\n", Q->end); hexdump(Q->data, Q->end, stdout); } return 0; } /* parse_packet() */ static int parse_domain(int argc, char *argv[]) { char *dn; dn = (argc > 1)? argv[1] : "f.l.google.com"; printf("[%s]\n", dn); dn = dns_d_new(dn); do { puts(dn); } while (dns_d_cleave(dn, strlen(dn) + 1, dn, strlen(dn))); return 0; } /* parse_domain() */ static int trim_domain(int argc, char **argv) { for (argc--, argv++; argc > 0; argc--, argv++) { char name[DNS_D_MAXNAME + 1]; dns_d_trim(name, sizeof name, *argv, strlen(*argv), DNS_D_ANCHOR); puts(name); } return 0; } /* trim_domain() */ static int expand_domain(int argc, char *argv[]) { unsigned short rp = 0; unsigned char *src = NULL; unsigned char *dst; struct dns_packet *pkt; size_t lim = 0, len; int error; if (argc > 1) rp = atoi(argv[1]); len = slurp(&src, 0, stdin, "-"); if (!(pkt = dns_p_make(len, &error))) panic("malloc(%"PRIuZ"): %s", len, dns_strerror(error)); memcpy(pkt->data, src, len); pkt->end = len; lim = 1; dst = grow(NULL, lim); while (lim <= (len = dns_d_expand(dst, lim, rp, pkt, &error))) { lim = add(len, 1); dst = grow(dst, lim); } if (!len) panic("expand: %s", dns_strerror(error)); fwrite(dst, 1, len, stdout); fflush(stdout); free(src); free(dst); free(pkt); return 0; } /* expand_domain() */ static int show_resconf(int argc DNS_NOTUSED, char *argv[] DNS_NOTUSED) { unsigned i; resconf(); /* load it */ fputs("; SOURCES\n", stdout); for (i = 0; i < MAIN.resconf.count; i++) fprintf(stdout, "; %s\n", MAIN.resconf.path[i]); for (i = 0; i < MAIN.nssconf.count; i++) fprintf(stdout, "; %s\n", MAIN.nssconf.path[i]); fputs(";\n", stdout); dns_resconf_dump(resconf(), stdout); return 0; } /* show_resconf() */ static int show_nssconf(int argc DNS_NOTUSED, char *argv[] DNS_NOTUSED) { unsigned i; resconf(); fputs("# SOURCES\n", stdout); for (i = 0; i < MAIN.resconf.count; i++) fprintf(stdout, "# %s\n", MAIN.resconf.path[i]); for (i = 0; i < MAIN.nssconf.count; i++) fprintf(stdout, "# %s\n", MAIN.nssconf.path[i]); fputs("#\n", stdout); dns_nssconf_dump(resconf(), stdout); return 0; } /* show_nssconf() */ static int show_hosts(int argc DNS_NOTUSED, char *argv[] DNS_NOTUSED) { unsigned i; hosts(); fputs("# SOURCES\n", stdout); for (i = 0; i < MAIN.hosts.count; i++) fprintf(stdout, "# %s\n", MAIN.hosts.path[i]); fputs("#\n", stdout); dns_hosts_dump(hosts(), stdout); return 0; } /* show_hosts() */ static int query_hosts(int argc, char *argv[]) { struct dns_packet *Q = dns_p_new(512); struct dns_packet *A; char qname[DNS_D_MAXNAME + 1]; size_t qlen; int error; if (!MAIN.qname) MAIN.qname = (argc > 1)? argv[1] : "localhost"; if (!MAIN.qtype) MAIN.qtype = DNS_T_A; hosts(); if (MAIN.qtype == DNS_T_PTR && !strstr(MAIN.qname, "arpa")) { union { struct in_addr a; struct in6_addr a6; } addr; int af = (strchr(MAIN.qname, ':'))? AF_INET6 : AF_INET; if ((error = dns_pton(af, MAIN.qname, &addr))) panic("%s: %s", MAIN.qname, dns_strerror(error)); qlen = dns_ptr_qname(qname, sizeof qname, af, &addr); } else qlen = dns_strlcpy(qname, MAIN.qname, sizeof qname); if ((error = dns_p_push(Q, DNS_S_QD, qname, qlen, MAIN.qtype, DNS_C_IN, 0, 0))) panic("%s: %s", qname, dns_strerror(error)); if (!(A = dns_hosts_query(hosts(), Q, &error))) panic("%s: %s", qname, dns_strerror(error)); print_packet(A, stdout); free(A); return 0; } /* query_hosts() */ static int search_list(int argc, char *argv[]) { const char *qname = (argc > 1)? argv[1] : "f.l.google.com"; unsigned long i = 0; char name[DNS_D_MAXNAME + 1]; printf("[%s]\n", qname); while (dns_resconf_search(name, sizeof name, qname, strlen(qname), resconf(), &i)) puts(name); return 0; } /* search_list() */ static int permute_set(int argc, char *argv[]) { unsigned lo, hi, i; struct dns_k_permutor p; hi = (--argc > 0)? atoi(argv[argc]) : 8; lo = (--argc > 0)? atoi(argv[argc]) : 0; fprintf(stderr, "[%u .. %u]\n", lo, hi); dns_k_permutor_init(&p, lo, hi); for (i = lo; i <= hi; i++) fprintf(stdout, "%u\n", dns_k_permutor_step(&p)); // printf("%u -> %u -> %u\n", i, dns_k_permutor_E(&p, i), dns_k_permutor_D(&p, dns_k_permutor_E(&p, i))); return 0; } /* permute_set() */ static int shuffle_16(int argc, char *argv[]) { unsigned n, r; if (--argc > 0) { n = 0xffff & atoi(argv[argc]); r = (--argc > 0)? (unsigned)atoi(argv[argc]) : dns_random(); fprintf(stdout, "%hu\n", dns_k_shuffle16(n, r)); } else { r = dns_random(); for (n = 0; n < 65536; n++) fprintf(stdout, "%hu\n", dns_k_shuffle16(n, r)); } return 0; } /* shuffle_16() */ static int dump_random(int argc, char *argv[]) { unsigned char b[32]; unsigned i, j, n, r; n = (argc > 1)? atoi(argv[1]) : 32; while (n) { i = 0; do { r = dns_random(); for (j = 0; j < sizeof r && i < n && i < sizeof b; i++, j++) { b[i] = 0xff & r; r >>= 8; } } while (i < n && i < sizeof b); hexdump(b, i, stdout); n -= i; } return 0; } /* dump_random() */ static int send_query(int argc, char *argv[]) { struct dns_packet *A, *Q = dns_p_new(512); char host[INET6_ADDRSTRLEN + 1]; struct sockaddr_storage ss; struct dns_socket *so; int error, type; if (argc > 1) { ss.ss_family = (strchr(argv[1], ':'))? AF_INET6 : AF_INET; if ((error = dns_pton(ss.ss_family, argv[1], dns_sa_addr(ss.ss_family, &ss, NULL)))) panic("%s: %s", argv[1], dns_strerror(error)); *dns_sa_port(ss.ss_family, &ss) = htons(53); } else memcpy(&ss, &resconf()->nameserver[0], dns_sa_len(&resconf()->nameserver[0])); if (!dns_inet_ntop(ss.ss_family, dns_sa_addr(ss.ss_family, &ss, NULL), host, sizeof host)) panic("bad host address, or none provided"); if (!MAIN.qname) MAIN.qname = "ipv6.google.com"; if (!MAIN.qtype) MAIN.qtype = DNS_T_AAAA; if ((error = dns_p_push(Q, DNS_S_QD, MAIN.qname, strlen(MAIN.qname), MAIN.qtype, DNS_C_IN, 0, 0))) panic("dns_p_push: %s", dns_strerror(error)); dns_header(Q)->rd = 1; if (strstr(argv[0], "udp")) type = SOCK_DGRAM; else if (strstr(argv[0], "tcp")) type = SOCK_STREAM; else type = dns_res_tcp2type(resconf()->options.tcp); fprintf(stderr, "querying %s for %s IN %s\n", host, MAIN.qname, dns_strtype(MAIN.qtype)); if (!(so = dns_so_open((struct sockaddr *)&resconf()->iface, type, dns_opts(), &error))) panic("dns_so_open: %s", dns_strerror(error)); while (!(A = dns_so_query(so, Q, (struct sockaddr *)&ss, &error))) { if (error != DNS_EAGAIN) panic("dns_so_query: %s (%d)", dns_strerror(error), error); if (dns_so_elapsed(so) > 10) panic("query timed-out"); dns_so_poll(so, 1); } print_packet(A, stdout); dns_so_close(so); return 0; } /* send_query() */ static int print_arpa(int argc, char *argv[]) { const char *ip = (argc > 1)? argv[1] : "::1"; int af = (strchr(ip, ':'))? AF_INET6 : AF_INET; union { struct in_addr a4; struct in6_addr a6; } addr; char host[DNS_D_MAXNAME + 1]; if (1 != dns_inet_pton(af, ip, &addr) || 0 == dns_ptr_qname(host, sizeof host, af, &addr)) panic("%s: invalid address", ip); fprintf(stdout, "%s\n", host); return 0; } /* print_arpa() */ static int show_hints(int argc, char *argv[]) { struct dns_hints *(*load)(struct dns_resolv_conf *, int *); const char *which, *how, *who; struct dns_hints *hints; int error; which = (argc > 1)? argv[1] : "local"; how = (argc > 2)? argv[2] : "plain"; who = (argc > 3)? argv[3] : "google.com"; load = (0 == strcmp(which, "local")) ? &dns_hints_local : &dns_hints_root; if (!(hints = load(resconf(), &error))) panic("%s: %s", argv[0], dns_strerror(error)); if (0 == strcmp(how, "plain")) { dns_hints_dump(hints, stdout); } else { struct dns_packet *query, *answer; query = dns_p_new(512); if ((error = dns_p_push(query, DNS_S_QUESTION, who, strlen(who), DNS_T_A, DNS_C_IN, 0, 0))) panic("%s: %s", who, dns_strerror(error)); if (!(answer = dns_hints_query(hints, query, &error))) panic("%s: %s", who, dns_strerror(error)); print_packet(answer, stdout); free(answer); } dns_hints_close(hints); return 0; } /* show_hints() */ static int resolve_query(int argc DNS_NOTUSED, char *argv[]) { _Bool recurse = !!strstr(argv[0], "recurse"); struct dns_hints *(*hints)() = (recurse)? &dns_hints_root : &dns_hints_local; struct dns_resolver *R; struct dns_packet *ans; const struct dns_stat *st; int error; if (!MAIN.qname) MAIN.qname = "www.google.com"; if (!MAIN.qtype) MAIN.qtype = DNS_T_A; resconf()->options.recurse = recurse; if (!(R = dns_res_open(resconf(), hosts(), dns_hints_mortal(hints(resconf(), &error)), cache(), dns_opts(), &error))) panic("%s: %s", MAIN.qname, dns_strerror(error)); if ((error = dns_res_submit(R, MAIN.qname, MAIN.qtype, DNS_C_IN))) panic("%s: %s", MAIN.qname, dns_strerror(error)); while ((error = dns_res_check(R))) { if (error != DNS_EAGAIN) panic("dns_res_check: %s (%d)", dns_strerror(error), error); if (dns_res_elapsed(R) > 30) panic("query timed-out"); dns_res_poll(R, 1); } ans = dns_res_fetch(R, &error); print_packet(ans, stdout); free(ans); st = dns_res_stat(R); putchar('\n'); printf(";; queries: %"PRIuZ"\n", st->queries); printf(";; udp sent: %"PRIuZ" in %"PRIuZ" bytes\n", st->udp.sent.count, st->udp.sent.bytes); printf(";; udp rcvd: %"PRIuZ" in %"PRIuZ" bytes\n", st->udp.rcvd.count, st->udp.rcvd.bytes); printf(";; tcp sent: %"PRIuZ" in %"PRIuZ" bytes\n", st->tcp.sent.count, st->tcp.sent.bytes); printf(";; tcp rcvd: %"PRIuZ" in %"PRIuZ" bytes\n", st->tcp.rcvd.count, st->tcp.rcvd.bytes); dns_res_close(R); return 0; } /* resolve_query() */ static int resolve_addrinfo(int argc DNS_NOTUSED, char *argv[]) { _Bool recurse = !!strstr(argv[0], "recurse"); struct dns_hints *(*hints)() = (recurse)? &dns_hints_root : &dns_hints_local; struct dns_resolver *res = NULL; struct dns_addrinfo *ai = NULL; struct addrinfo ai_hints = { .ai_family = PF_UNSPEC, .ai_socktype = SOCK_STREAM, .ai_flags = AI_CANONNAME }; struct addrinfo *ent; char pretty[512]; int error; if (!MAIN.qname) MAIN.qname = "www.google.com"; /* NB: MAIN.qtype of 0 means obey hints.ai_family */ resconf()->options.recurse = recurse; if (!(res = dns_res_open(resconf(), hosts(), dns_hints_mortal(hints(resconf(), &error)), cache(), dns_opts(), &error))) panic("%s: %s", MAIN.qname, dns_strerror(error)); if (!(ai = dns_ai_open(MAIN.qname, "80", MAIN.qtype, &ai_hints, res, &error))) panic("%s: %s", MAIN.qname, dns_strerror(error)); do { switch (error = dns_ai_nextent(&ent, ai)) { case 0: dns_ai_print(pretty, sizeof pretty, ent, ai); fputs(pretty, stdout); free(ent); break; case ENOENT: break; case DNS_EAGAIN: if (dns_ai_elapsed(ai) > 30) panic("query timed-out"); dns_ai_poll(ai, 1); break; default: panic("dns_ai_nextent: %s (%d)", dns_strerror(error), error); } } while (error != ENOENT); dns_res_close(res); dns_ai_close(ai); return 0; } /* resolve_addrinfo() */ static int echo_port(int argc DNS_NOTUSED, char *argv[] DNS_NOTUSED) { union { struct sockaddr sa; struct sockaddr_in sin; } port; int fd; memset(&port, 0, sizeof port); port.sin.sin_family = AF_INET; port.sin.sin_port = htons(5354); port.sin.sin_addr.s_addr = inet_addr("127.0.0.1"); if (-1 == (fd = socket(PF_INET, SOCK_DGRAM, 0))) panic("socket: %s", strerror(errno)); if (0 != bind(fd, &port.sa, sizeof port.sa)) panic("127.0.0.1:5353: %s", dns_strerror(errno)); for (;;) { struct dns_packet *pkt = dns_p_new(512); struct sockaddr_storage ss; socklen_t slen = sizeof ss; ssize_t count; #if defined(MSG_WAITALL) /* MinGW issue */ int rflags = MSG_WAITALL; #else int rflags = 0; #endif count = recvfrom(fd, (char *)pkt->data, pkt->size, rflags, (struct sockaddr *)&ss, &slen); if (!count || count < 0) panic("recvfrom: %s", strerror(errno)); pkt->end = count; dns_p_dump(pkt, stdout); (void)sendto(fd, (char *)pkt->data, pkt->end, 0, (struct sockaddr *)&ss, slen); } return 0; } /* echo_port() */ static int isection(int argc, char *argv[]) { const char *name = (argc > 1)? argv[1] : ""; int type; type = dns_isection(name); name = dns_strsection(type); printf("%s (%d)\n", name, type); return 0; } /* isection() */ static int iclass(int argc, char *argv[]) { const char *name = (argc > 1)? argv[1] : ""; int type; type = dns_iclass(name); name = dns_strclass(type); printf("%s (%d)\n", name, type); return 0; } /* iclass() */ static int itype(int argc, char *argv[]) { const char *name = (argc > 1)? argv[1] : ""; int type; type = dns_itype(name); name = dns_strtype(type); printf("%s (%d)\n", name, type); return 0; } /* itype() */ static int iopcode(int argc, char *argv[]) { const char *name = (argc > 1)? argv[1] : ""; int type; type = dns_iopcode(name); name = dns_stropcode(type); printf("%s (%d)\n", name, type); return 0; } /* iopcode() */ static int ircode(int argc, char *argv[]) { const char *name = (argc > 1)? argv[1] : ""; int type; type = dns_ircode(name); name = dns_strrcode(type); printf("%s (%d)\n", name, type); return 0; } /* ircode() */ #define SIZE1(x) { DNS_PP_STRINGIFY(x), sizeof (x) } #define SIZE2(x, ...) SIZE1(x), SIZE1(__VA_ARGS__) #define SIZE3(x, ...) SIZE1(x), SIZE2(__VA_ARGS__) #define SIZE4(x, ...) SIZE1(x), SIZE3(__VA_ARGS__) #define SIZE(...) DNS_PP_CALL(DNS_PP_XPASTE(SIZE, DNS_PP_NARG(__VA_ARGS__)), __VA_ARGS__) static int sizes(int argc DNS_NOTUSED, char *argv[] DNS_NOTUSED) { static const struct { const char *name; size_t size; } type[] = { SIZE(struct dns_header, struct dns_packet, struct dns_rr, struct dns_rr_i), SIZE(struct dns_a, struct dns_aaaa, struct dns_mx, struct dns_ns), SIZE(struct dns_cname, struct dns_soa, struct dns_ptr, struct dns_srv), SIZE(struct dns_sshfp, struct dns_txt, union dns_any), SIZE(struct dns_resolv_conf, struct dns_hosts, struct dns_hints, struct dns_hints_i), SIZE(struct dns_options, struct dns_socket, struct dns_resolver, struct dns_addrinfo), SIZE(struct dns_cache), SIZE(size_t), SIZE(void *), SIZE(long) }; unsigned i, max; for (i = 0, max = 0; i < lengthof(type); i++) max = DNS_PP_MAX(max, strlen(type[i].name)); for (i = 0; i < lengthof(type); i++) printf("%*s : %"PRIuZ"\n", max, type[i].name, type[i].size); return 0; } /* sizes() */ static const struct { const char *cmd; int (*run)(); const char *help; } cmds[] = { { "parse-packet", &parse_packet, "parse binary packet from stdin" }, { "parse-domain", &parse_domain, "anchor and iteratively cleave domain" }, { "trim-domain", &trim_domain, "trim and anchor domain name" }, { "expand-domain", &expand_domain, "expand domain at offset NN in packet from stdin" }, { "show-resconf", &show_resconf, "show resolv.conf data" }, { "show-hosts", &show_hosts, "show hosts data" }, { "show-nssconf", &show_nssconf, "show nsswitch.conf data" }, { "query-hosts", &query_hosts, "query A, AAAA or PTR in hosts data" }, { "search-list", &search_list, "generate query search list from domain" }, { "permute-set", &permute_set, "generate random permutation -> (0 .. N or N .. M)" }, { "shuffle-16", &shuffle_16, "simple 16-bit permutation" }, { "dump-random", &dump_random, "generate random bytes" }, { "send-query", &send_query, "send query to host" }, { "send-query-udp", &send_query, "send udp query to host" }, { "send-query-tcp", &send_query, "send tcp query to host" }, { "print-arpa", &print_arpa, "print arpa. zone name of address" }, { "show-hints", &show_hints, "print hints: show-hints [local|root] [plain|packet]" }, { "resolve-stub", &resolve_query, "resolve as stub resolver" }, { "resolve-recurse", &resolve_query, "resolve as recursive resolver" }, { "addrinfo-stub", &resolve_addrinfo, "resolve through getaddrinfo clone" }, { "addrinfo-recurse", &resolve_addrinfo, "resolve through getaddrinfo clone" }, /* { "resolve-nameinfo", &resolve_query, "resolve as recursive resolver" }, */ { "echo", &echo_port, "server echo mode, for nmap fuzzing" }, { "isection", &isection, "parse section string" }, { "iclass", &iclass, "parse class string" }, { "itype", &itype, "parse type string" }, { "iopcode", &iopcode, "parse opcode string" }, { "ircode", &ircode, "parse rcode string" }, { "sizes", &sizes, "print data structure sizes" }, }; static void print_usage(const char *progname, FILE *fp) { static const char *usage = " [OPTIONS] COMMAND [ARGS]\n" " -c PATH Path to resolv.conf\n" " -n PATH Path to nsswitch.conf\n" " -l PATH Path to local hosts\n" " -z PATH Path to zone cache\n" " -q QNAME Query name\n" " -t QTYPE Query type\n" " -s HOW Sort records\n" " -v Be more verbose (-vv show packets; -vvv hexdump packets)\n" " -V Print version info\n" " -h Print this usage message\n" "\n"; unsigned i, n, m; fputs(progname, fp); fputs(usage, fp); for (i = 0, m = 0; i < lengthof(cmds); i++) { if (strlen(cmds[i].cmd) > m) m = strlen(cmds[i].cmd); } for (i = 0; i < lengthof(cmds); i++) { fprintf(fp, " %s ", cmds[i].cmd); for (n = strlen(cmds[i].cmd); n < m; n++) putc(' ', fp); fputs(cmds[i].help, fp); putc('\n', fp); } fputs("\nReport bugs to William Ahern \n", fp); } /* print_usage() */ static void print_version(const char *progname, FILE *fp) { fprintf(fp, "%s (dns.c) %.8X\n", progname, dns_v_rel()); fprintf(fp, "vendor %s\n", dns_vendor()); fprintf(fp, "release %.8X\n", dns_v_rel()); fprintf(fp, "abi %.8X\n", dns_v_abi()); fprintf(fp, "api %.8X\n", dns_v_api()); } /* print_version() */ int main(int argc, char **argv) { extern int optind; extern char *optarg; const char *progname = argv[0]; unsigned i; int ch; while (-1 != (ch = getopt(argc, argv, "q:t:c:n:l:z:s:vVh"))) { switch (ch) { case 'c': assert(MAIN.resconf.count < lengthof(MAIN.resconf.path)); MAIN.resconf.path[MAIN.resconf.count++] = optarg; break; case 'n': assert(MAIN.nssconf.count < lengthof(MAIN.nssconf.path)); MAIN.nssconf.path[MAIN.nssconf.count++] = optarg; break; case 'l': assert(MAIN.hosts.count < lengthof(MAIN.hosts.path)); MAIN.hosts.path[MAIN.hosts.count++] = optarg; break; case 'z': assert(MAIN.cache.count < lengthof(MAIN.cache.path)); MAIN.cache.path[MAIN.cache.count++] = optarg; break; case 'q': MAIN.qname = optarg; break; case 't': for (i = 0; i < lengthof(dns_rrtypes); i++) { if (0 == strcasecmp(dns_rrtypes[i].name, optarg)) { MAIN.qtype = dns_rrtypes[i].type; break; } } if (MAIN.qtype) break; for (i = 0; dns_isdigit(optarg[i]); i++) { MAIN.qtype *= 10; MAIN.qtype += optarg[i] - '0'; } if (!MAIN.qtype) panic("%s: invalid query type", optarg); break; case 's': if (0 == strcasecmp(optarg, "packet")) MAIN.sort = &dns_rr_i_packet; else if (0 == strcasecmp(optarg, "shuffle")) MAIN.sort = &dns_rr_i_shuffle; else if (0 == strcasecmp(optarg, "order")) MAIN.sort = &dns_rr_i_order; else panic("%s: invalid sort method", optarg); break; case 'v': dns_debug = ++MAIN.verbose; break; case 'V': print_version(progname, stdout); return 0; case 'h': print_usage(progname, stdout); return 0; default: print_usage(progname, stderr); return EXIT_FAILURE; } /* switch() */ } /* while() */ argc -= optind; argv += optind; for (i = 0; i < lengthof(cmds) && argv[0]; i++) { if (0 == strcmp(cmds[i].cmd, argv[0])) return cmds[i].run(argc, argv); } print_usage(progname, stderr); return EXIT_FAILURE; } /* main() */ #endif /* DNS_MAIN */ /* * pop file-scoped compiler annotations */ #if __clang__ #pragma clang diagnostic pop #elif DNS_GNUC_PREREQ(4,6,0) #pragma GCC diagnostic pop #endif belle-sip-5.2.0+dfsg/src/dns/dns.h000066400000000000000000001043651434613136500166400ustar00rootroot00000000000000/* ========================================================================== * dns.h - Recursive, Reentrant DNS Resolver. * -------------------------------------------------------------------------- * Copyright (c) 2009, 2010, 2012-2015 William Ahern * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the * "Software"), to deal in the Software without restriction, including * without limitation the rights to use, copy, modify, merge, publish, * distribute, sublicense, and/or sell copies of the Software, and to permit * persons to whom the Software is furnished to do so, subject to the * following conditions: * * The above copyright notice and this permission notice shall be included * in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE * USE OR OTHER DEALINGS IN THE SOFTWARE. * ========================================================================== */ #ifndef DNS_H #define DNS_H #ifdef HAVE_CONFIG_H #include "config.h" #endif #include /* size_t offsetof() */ #include /* FILE */ #include /* strlen(3) */ #include /* time_t */ #if _WIN32 #include #include #else #include /* BYTE_ORDER BIG_ENDIAN _BIG_ENDIAN */ #include /* socklen_t */ #include /* struct socket */ #include /* POLLIN POLLOUT */ #include /* struct in_addr struct in6_addr */ #include /* struct addrinfo */ #endif /* * V I S I B I L I T Y * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ #ifndef DNS_PUBLIC #define DNS_PUBLIC #endif /* * V E R S I O N * * Vendor: Entity for which versions numbers are relevant. (If forking * change DNS_VENDOR to avoid confusion.) * * Three versions: * * REL Official "release"--bug fixes, new features, etc. * ABI Changes to existing object sizes or parameter types. * API Changes that might effect application source. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ #define DNS_VENDOR "william@25thandClement.com" #define DNS_V_REL 0x20160608 #define DNS_V_ABI 0x20160608 #define DNS_V_API 0x20160608 DNS_PUBLIC const char *dns_vendor(void); DNS_PUBLIC int dns_v_rel(void); DNS_PUBLIC int dns_v_abi(void); DNS_PUBLIC int dns_v_api(void); /* * E R R O R S * * Errors and exceptions are always returned through an int. This should * hopefully make integration easier in the majority of circumstances, and * also cut down on useless compiler warnings. * * System and library errors are returned together. POSIX guarantees that * all system errors are positive integers. Library errors are always * negative integers in the range DNS_EBASE to DNS_ELAST, with the high bits * set to the three magic ASCII characters "dns". * * dns_strerror() returns static English string descriptions of all known * errors, and punts the remainder to strerror(3). * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ #define DNS_EBASE -(('d' << 24) | ('n' << 16) | ('s' << 8) | 64) #define dns_error_t int /* for documentation only */ enum dns_errno { DNS_ENOBUFS = DNS_EBASE, DNS_EILLEGAL, DNS_EORDER, DNS_ESECTION, DNS_EUNKNOWN, DNS_EADDRESS, DNS_ENOQUERY, DNS_ENOANSWER, DNS_EFETCHED, DNS_ESERVICE, /* EAI_SERVICE */ DNS_ENONAME, /* EAI_NONAME */ DNS_EFAIL, /* EAI_FAIL */ DNS_ELAST, }; /* dns_errno */ DNS_PUBLIC const char *dns_strerror(dns_error_t); DNS_PUBLIC int *dns_debug_p(void); #define dns_debug (*dns_debug_p()) /* was extern int dns_debug before 20160523 API */ /* * C O M P I L E R A N N O T A T I O N S * * GCC with -Wextra, and clang by default, complain about overrides in * initializer lists. Overriding previous member initializers is well * defined behavior in C. dns.c relies on this behavior to define default, * overrideable member values when instantiating configuration objects. * * dns_quietinit() guards a compound literal expression with pragmas to * silence these shrill warnings. This alleviates the burden of requiring * third-party projects to adjust their compiler flags. * * NOTE: If you take the address of the compound literal, take the address * of the transformed expression, otherwise the compound literal lifetime is * tied to the scope of the GCC statement expression. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ #if defined __clang__ #define DNS_PRAGMA_PUSH _Pragma("clang diagnostic push") #define DNS_PRAGMA_QUIET _Pragma("clang diagnostic ignored \"-Winitializer-overrides\"") #define DNS_PRAGMA_POP _Pragma("clang diagnostic pop") #define dns_quietinit(...) \ DNS_PRAGMA_PUSH DNS_PRAGMA_QUIET __VA_ARGS__ DNS_PRAGMA_POP #else // For GCC, -Woverride-init warning is disabled by the build system for dns.c only #define DNS_PRAGMA_PUSH #define DNS_PRAGMA_QUIET #define DNS_PRAGMA_POP #define dns_quietinit(...) __VA_ARGS__ #endif #if defined __GNUC__ #define DNS_PRAGMA_EXTENSION __extension__ #else #define DNS_PRAGMA_EXTENSION #endif /* * E V E N T S I N T E R F A C E S * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ #if defined(POLLIN) #define DNS_POLLIN POLLIN #else #define DNS_POLLIN 1 #endif #if defined(POLLOUT) #define DNS_POLLOUT POLLOUT #else #define DNS_POLLOUT 2 #endif /* * See Application Interface below for configuring libevent bitmasks instead * of poll(2) bitmasks. */ #define DNS_EVREAD 2 #define DNS_EVWRITE 4 #define DNS_POLL2EV(set) \ (((set) & DNS_POLLIN)? DNS_EVREAD : 0) | (((set) & DNS_POLLOUT)? DNS_EVWRITE : 0) #define DNS_EV2POLL(set) \ (((set) & DNS_EVREAD)? DNS_POLLIN : 0) | (((set) & DNS_EVWRITE)? DNS_POLLOUT : 0) /* * E N U M E R A T I O N I N T E R F A C E S * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ enum dns_section { DNS_S_QD = 0x01, #define DNS_S_QUESTION DNS_S_QD DNS_S_AN = 0x02, #define DNS_S_ANSWER DNS_S_AN DNS_S_NS = 0x04, #define DNS_S_AUTHORITY DNS_S_NS DNS_S_AR = 0x08, #define DNS_S_ADDITIONAL DNS_S_AR DNS_S_ALL = 0x0f }; /* enum dns_section */ enum dns_class { DNS_C_IN = 1, DNS_C_ANY = 255 }; /* enum dns_class */ enum dns_type { DNS_T_A = 1, DNS_T_NS = 2, DNS_T_CNAME = 5, DNS_T_SOA = 6, DNS_T_PTR = 12, DNS_T_MX = 15, DNS_T_TXT = 16, DNS_T_AAAA = 28, DNS_T_SRV = 33, DNS_T_OPT = 41, DNS_T_SSHFP = 44, DNS_T_SPF = 99, DNS_T_AXFR = 252, DNS_T_ALL = 255 }; /* enum dns_type */ enum dns_opcode { DNS_OP_QUERY = 0, DNS_OP_IQUERY = 1, DNS_OP_STATUS = 2, DNS_OP_NOTIFY = 4, DNS_OP_UPDATE = 5, }; /* dns_opcode */ enum dns_rcode { DNS_RC_NOERROR = 0, DNS_RC_FORMERR = 1, DNS_RC_SERVFAIL = 2, DNS_RC_NXDOMAIN = 3, DNS_RC_NOTIMP = 4, DNS_RC_REFUSED = 5, DNS_RC_YXDOMAIN = 6, DNS_RC_YXRRSET = 7, DNS_RC_NXRRSET = 8, DNS_RC_NOTAUTH = 9, DNS_RC_NOTZONE = 10, /* EDNS(0) extended RCODEs */ DNS_RC_BADVERS = 16, }; /* dns_rcode */ /* * NOTE: These string functions need a small buffer in case the literal * integer value needs to be printed and returned. UNLESS this buffer is * SPECIFIED, the returned string has ONLY BLOCK SCOPE. */ #define DNS_STRMAXLEN 47 /* "QUESTION|ANSWER|AUTHORITY|ADDITIONAL" */ DNS_PUBLIC const char *dns_strsection(enum dns_section, void *, size_t); #define dns_strsection3(a, b, c) \ dns_strsection((a), (b), (c)) #define dns_strsection1(a) dns_strsection((a), (char [DNS_STRMAXLEN + 1]){ 0 }, DNS_STRMAXLEN + 1) #define dns_strsection(...) DNS_PP_CALL(DNS_PP_XPASTE(dns_strsection, DNS_PP_NARG(__VA_ARGS__)), __VA_ARGS__) DNS_PUBLIC enum dns_section dns_isection(const char *); DNS_PUBLIC const char *dns_strclass(enum dns_class, void *, size_t); #define dns_strclass3(a, b, c) dns_strclass((a), (b), (c)) #define dns_strclass1(a) dns_strclass((a), (char [DNS_STRMAXLEN + 1]){ 0 }, DNS_STRMAXLEN + 1) #define dns_strclass(...) DNS_PP_CALL(DNS_PP_XPASTE(dns_strclass, DNS_PP_NARG(__VA_ARGS__)), __VA_ARGS__) DNS_PUBLIC enum dns_class dns_iclass(const char *); DNS_PUBLIC const char *dns_strtype(enum dns_type, void *, size_t); #define dns_strtype3(a, b, c) dns_strtype((a), (b), (c)) #define dns_strtype1(a) dns_strtype((a), (char [DNS_STRMAXLEN + 1]){ 0 }, DNS_STRMAXLEN + 1) #define dns_strtype(...) DNS_PP_CALL(DNS_PP_XPASTE(dns_strtype, DNS_PP_NARG(__VA_ARGS__)), __VA_ARGS__) DNS_PUBLIC enum dns_type dns_itype(const char *); DNS_PUBLIC const char *dns_stropcode(enum dns_opcode); DNS_PUBLIC enum dns_opcode dns_iopcode(const char *); DNS_PUBLIC const char *dns_strrcode(enum dns_rcode); DNS_PUBLIC enum dns_rcode dns_ircode(const char *); /* * A T O M I C I N T E R F A C E S * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ typedef unsigned long dns_atomic_t; typedef unsigned long dns_refcount_t; /* must be same value type as dns_atomic_t */ /* * C R Y P T O I N T E R F A C E S * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ typedef unsigned dns_random_f(void); DNS_PUBLIC dns_random_f **dns_random_p(void); #define dns_random (*dns_random_p()) /* was extern unsigned (*dns_random)(void) before 20160523 API */ /* * P A C K E T I N T E R F A C E * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ struct dns_header { unsigned qid:16; #if (defined BYTE_ORDER && BYTE_ORDER == BIG_ENDIAN) || (defined __sun && defined _BIG_ENDIAN) unsigned qr:1; unsigned opcode:4; unsigned aa:1; unsigned tc:1; unsigned rd:1; unsigned ra:1; unsigned unused:3; unsigned rcode:4; #else unsigned rd:1; unsigned tc:1; unsigned aa:1; unsigned opcode:4; unsigned qr:1; unsigned rcode:4; unsigned unused:3; unsigned ra:1; #endif unsigned qdcount:16; unsigned ancount:16; unsigned nscount:16; unsigned arcount:16; }; /* struct dns_header */ #define dns_header(p) (&(p)->header) #ifndef DNS_P_QBUFSIZ #define DNS_P_QBUFSIZ dns_p_calcsize(256 + 4) #endif #ifndef DNS_P_DICTSIZE #define DNS_P_DICTSIZE 16 #endif struct dns_packet { unsigned short dict[DNS_P_DICTSIZE]; struct dns_p_memo { struct dns_s_memo { unsigned short base, end; } qd, an, ns, ar; struct { unsigned short p; unsigned short maxudp; unsigned ttl; } opt; } memo; struct { struct dns_packet *cqe_next, *cqe_prev; } cqe; size_t size, end; int:16; /* tcp padding */ DNS_PRAGMA_EXTENSION union { struct dns_header header; unsigned char data[1]; }; }; /* struct dns_packet */ #define dns_p_calcsize(n) (offsetof(struct dns_packet, data) + DNS_PP_MAX(12, (n))) #define dns_p_sizeof(P) dns_p_calcsize((P)->end) /** takes size of maximum desired payload */ #define dns_p_new(n) (dns_p_init((struct dns_packet *)&(union { unsigned char b[dns_p_calcsize((n))]; struct dns_packet p; }){ { 0 } }, dns_p_calcsize((n)))) /** takes size of entire packet structure as allocated */ DNS_PUBLIC struct dns_packet *dns_p_init(struct dns_packet *, size_t); /** takes size of maximum desired payload */ DNS_PUBLIC struct dns_packet *dns_p_make(size_t, int *); DNS_PUBLIC int dns_p_grow(struct dns_packet **); DNS_PUBLIC struct dns_packet *dns_p_copy(struct dns_packet *, const struct dns_packet *); #define dns_p_opcode(P) (dns_header(P)->opcode) DNS_PUBLIC enum dns_rcode dns_p_rcode(struct dns_packet *); DNS_PUBLIC unsigned dns_p_count(struct dns_packet *, enum dns_section); DNS_PUBLIC int dns_p_push(struct dns_packet *, enum dns_section, const void *, size_t, enum dns_type, enum dns_class, unsigned, const void *); DNS_PUBLIC void dns_p_dictadd(struct dns_packet *, unsigned short); DNS_PUBLIC struct dns_packet *dns_p_merge(struct dns_packet *, enum dns_section, struct dns_packet *, enum dns_section, int *); DNS_PUBLIC void dns_p_dump(struct dns_packet *, FILE *); DNS_PUBLIC int dns_p_study(struct dns_packet *); /* * D O M A I N N A M E I N T E R F A C E S * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ #define DNS_D_MAXLABEL 63 /* + 1 '\0' */ #define DNS_D_MAXNAME 255 /* + 1 '\0' */ #define DNS_D_ANCHOR 1 /* anchor domain w/ root "." */ #define DNS_D_CLEAVE 2 /* cleave sub-domain */ #define DNS_D_TRIM 4 /* remove superfluous dots */ #define dns_d_new3(a, b, f) dns_d_init(&(char[DNS_D_MAXNAME + 1]){ 0 }, DNS_D_MAXNAME + 1, (a), (b), (f)) #define dns_d_new2(a, f) dns_d_new3((a), strlen((a)), (f)) #define dns_d_new1(a) dns_d_new3((a), strlen((a)), DNS_D_ANCHOR) #define dns_d_new(...) DNS_PP_CALL(DNS_PP_XPASTE(dns_d_new, DNS_PP_NARG(__VA_ARGS__)), __VA_ARGS__) DNS_PUBLIC char *dns_d_init(void *, size_t, const void *, size_t, int); DNS_PUBLIC size_t dns_d_anchor(void *, size_t, const void *, size_t); DNS_PUBLIC size_t dns_d_cleave(void *, size_t, const void *, size_t); DNS_PUBLIC size_t dns_d_comp(void *, size_t, const void *, size_t, struct dns_packet *, int *); DNS_PUBLIC size_t dns_d_expand(void *, size_t, unsigned short, struct dns_packet *, int *); DNS_PUBLIC unsigned short dns_d_skip(unsigned short, struct dns_packet *); DNS_PUBLIC int dns_d_push(struct dns_packet *, const void *, size_t); DNS_PUBLIC size_t dns_d_cname(void *, size_t, const void *, size_t, struct dns_packet *, int *error); /* * R E S O U R C E R E C O R D I N T E R F A C E S * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ struct dns_rr { enum dns_section section; struct { unsigned short p; unsigned short len; } dn; enum dns_type type; enum dns_class class; unsigned ttl; struct { unsigned short p; unsigned short len; } rd; }; /* struct dns_rr */ DNS_PUBLIC int dns_rr_copy(struct dns_packet *, struct dns_rr *, struct dns_packet *); DNS_PUBLIC int dns_rr_parse(struct dns_rr *, unsigned short, struct dns_packet *); DNS_PUBLIC unsigned short dns_rr_skip(unsigned short, struct dns_packet *); DNS_PUBLIC int dns_rr_cmp(struct dns_rr *, struct dns_packet *, struct dns_rr *, struct dns_packet *); DNS_PUBLIC size_t dns_rr_print(void *, size_t, struct dns_rr *, struct dns_packet *, int *); #define dns_rr_i_new(P, ...) \ dns_rr_i_init(&dns_quietinit((struct dns_rr_i){ 0, __VA_ARGS__ }), (P)) struct dns_rr_i { enum dns_section section; const void *name; enum dns_type type; enum dns_class class; const void *data; int follow; int (*sort)(struct dns_rr *, struct dns_rr *, struct dns_rr_i *, struct dns_packet *); unsigned args[2]; struct { unsigned short next; unsigned short count; unsigned exec; unsigned regs[2]; } state, saved; }; /* struct dns_rr_i */ DNS_PUBLIC int dns_rr_i_packet(struct dns_rr *, struct dns_rr *, struct dns_rr_i *, struct dns_packet *); DNS_PUBLIC int dns_rr_i_order(struct dns_rr *, struct dns_rr *, struct dns_rr_i *, struct dns_packet *); DNS_PUBLIC int dns_rr_i_shuffle(struct dns_rr *, struct dns_rr *, struct dns_rr_i *, struct dns_packet *); DNS_PUBLIC struct dns_rr_i *dns_rr_i_init(struct dns_rr_i *, struct dns_packet *); #define dns_rr_i_save(i) ((i)->saved = (i)->state) #define dns_rr_i_rewind(i) ((i)->state = (i)->saved) #define dns_rr_i_count(i) ((i)->state.count) DNS_PUBLIC unsigned dns_rr_grep(struct dns_rr *, unsigned, struct dns_rr_i *, struct dns_packet *, int *); #define dns_rr_foreach(rr, P, ...) \ for (struct dns_rr_i DNS_PP_XPASTE(i, __LINE__) = *dns_rr_i_new((P), __VA_ARGS__); dns_rr_grep((rr), 1, &DNS_PP_XPASTE(i, __LINE__), (P), &(int){ 0 }); ) /* * A R E S O U R C E R E C O R D */ struct dns_a { struct in_addr addr; }; /* struct dns_a */ DNS_PUBLIC int dns_a_parse(struct dns_a *, struct dns_rr *, struct dns_packet *); DNS_PUBLIC int dns_a_push(struct dns_packet *, struct dns_a *); DNS_PUBLIC int dns_a_cmp(const struct dns_a *, const struct dns_a *); DNS_PUBLIC size_t dns_a_print(void *, size_t, struct dns_a *); DNS_PUBLIC size_t dns_a_arpa(void *, size_t, const struct dns_a *); /* * AAAA R E S O U R C E R E C O R D */ struct dns_aaaa { struct in6_addr addr; }; /* struct dns_aaaa */ DNS_PUBLIC int dns_aaaa_parse(struct dns_aaaa *, struct dns_rr *, struct dns_packet *); DNS_PUBLIC int dns_aaaa_push(struct dns_packet *, struct dns_aaaa *); DNS_PUBLIC int dns_aaaa_cmp(const struct dns_aaaa *, const struct dns_aaaa *); DNS_PUBLIC size_t dns_aaaa_print(void *, size_t, struct dns_aaaa *); DNS_PUBLIC size_t dns_aaaa_arpa(void *, size_t, const struct dns_aaaa *); /* * MX R E S O U R C E R E C O R D */ struct dns_mx { unsigned short preference; char host[DNS_D_MAXNAME + 1]; }; /* struct dns_mx */ DNS_PUBLIC int dns_mx_parse(struct dns_mx *, struct dns_rr *, struct dns_packet *); DNS_PUBLIC int dns_mx_push(struct dns_packet *, struct dns_mx *); DNS_PUBLIC int dns_mx_cmp(const struct dns_mx *, const struct dns_mx *); DNS_PUBLIC size_t dns_mx_print(void *, size_t, struct dns_mx *); DNS_PUBLIC size_t dns_mx_cname(void *, size_t, struct dns_mx *); /* * NS R E S O U R C E R E C O R D */ struct dns_ns { char host[DNS_D_MAXNAME + 1]; }; /* struct dns_ns */ DNS_PUBLIC int dns_ns_parse(struct dns_ns *, struct dns_rr *, struct dns_packet *); DNS_PUBLIC int dns_ns_push(struct dns_packet *, struct dns_ns *); DNS_PUBLIC int dns_ns_cmp(const struct dns_ns *, const struct dns_ns *); DNS_PUBLIC size_t dns_ns_print(void *, size_t, struct dns_ns *); DNS_PUBLIC size_t dns_ns_cname(void *, size_t, struct dns_ns *); /* * CNAME R E S O U R C E R E C O R D */ struct dns_cname { char host[DNS_D_MAXNAME + 1]; }; /* struct dns_cname */ DNS_PUBLIC int dns_cname_parse(struct dns_cname *, struct dns_rr *, struct dns_packet *); DNS_PUBLIC int dns_cname_push(struct dns_packet *, struct dns_cname *); DNS_PUBLIC int dns_cname_cmp(const struct dns_cname *, const struct dns_cname *); DNS_PUBLIC size_t dns_cname_print(void *, size_t, struct dns_cname *); DNS_PUBLIC size_t dns_cname_cname(void *, size_t, struct dns_cname *); /* * SOA R E S O U R C E R E C O R D */ struct dns_soa { char mname[DNS_D_MAXNAME + 1]; char rname[DNS_D_MAXNAME + 1]; unsigned serial, refresh, retry, expire, minimum; }; /* struct dns_soa */ DNS_PUBLIC int dns_soa_parse(struct dns_soa *, struct dns_rr *, struct dns_packet *); DNS_PUBLIC int dns_soa_push(struct dns_packet *, struct dns_soa *); DNS_PUBLIC int dns_soa_cmp(const struct dns_soa *, const struct dns_soa *); DNS_PUBLIC size_t dns_soa_print(void *, size_t, struct dns_soa *); /* * PTR R E S O U R C E R E C O R D */ struct dns_ptr { char host[DNS_D_MAXNAME + 1]; }; /* struct dns_ptr */ DNS_PUBLIC int dns_ptr_parse(struct dns_ptr *, struct dns_rr *, struct dns_packet *); DNS_PUBLIC int dns_ptr_push(struct dns_packet *, struct dns_ptr *); DNS_PUBLIC int dns_ptr_cmp(const struct dns_ptr *, const struct dns_ptr *); DNS_PUBLIC size_t dns_ptr_print(void *, size_t, struct dns_ptr *); DNS_PUBLIC size_t dns_ptr_cname(void *, size_t, struct dns_ptr *); DNS_PUBLIC size_t dns_ptr_qname(void *, size_t, int, void *); /* * SRV R E S O U R C E R E C O R D */ struct dns_srv { unsigned short priority; unsigned short weight; unsigned short port; char target[DNS_D_MAXNAME + 1]; }; /* struct dns_srv */ DNS_PUBLIC int dns_srv_parse(struct dns_srv *, struct dns_rr *, struct dns_packet *); DNS_PUBLIC int dns_srv_push(struct dns_packet *, struct dns_srv *); DNS_PUBLIC int dns_srv_cmp(const struct dns_srv *, const struct dns_srv *); DNS_PUBLIC size_t dns_srv_print(void *, size_t, struct dns_srv *); DNS_PUBLIC size_t dns_srv_cname(void *, size_t, struct dns_srv *); /* * OPT R E S O U R C E R E C O R D */ #ifndef DNS_OPT_MINDATA #define DNS_OPT_MINDATA 256 #endif #define DNS_OPT_DNSSEC 0x8000 struct dns_opt { enum dns_rcode rcode; unsigned char version; unsigned short flags; union { unsigned short maxsize; /* deprecated as confusing */ unsigned short maxudp; /* maximum UDP payload size */ }; size_t size, len; unsigned char data[DNS_OPT_MINDATA]; }; /* struct dns_opt */ #define DNS_OPT_INIT(opt) { .size = sizeof (*opt) - offsetof(struct dns_opt, data) } DNS_PUBLIC struct dns_opt *dns_opt_init(struct dns_opt *, size_t); DNS_PUBLIC int dns_opt_parse(struct dns_opt *, struct dns_rr *, struct dns_packet *); DNS_PUBLIC int dns_opt_push(struct dns_packet *, struct dns_opt *); DNS_PUBLIC int dns_opt_cmp(const struct dns_opt *, const struct dns_opt *); DNS_PUBLIC size_t dns_opt_print(void *, size_t, struct dns_opt *); DNS_PUBLIC unsigned int dns_opt_ttl(const struct dns_opt *); DNS_PUBLIC unsigned short dns_opt_class(const struct dns_opt *); DNS_PUBLIC dns_error_t dns_opt_data_push(struct dns_opt *, unsigned char, unsigned short, const void *); /* * SSHFP R E S O U R C E R E C O R D */ struct dns_sshfp { enum dns_sshfp_key { DNS_SSHFP_RSA = 1, DNS_SSHFP_DSA = 2, } algo; enum dns_sshfp_digest { DNS_SSHFP_SHA1 = 1, } type; union { unsigned char sha1[20]; } digest; }; /* struct dns_sshfp */ DNS_PUBLIC int dns_sshfp_parse(struct dns_sshfp *, struct dns_rr *, struct dns_packet *); DNS_PUBLIC int dns_sshfp_push(struct dns_packet *, struct dns_sshfp *); DNS_PUBLIC int dns_sshfp_cmp(const struct dns_sshfp *, const struct dns_sshfp *); DNS_PUBLIC size_t dns_sshfp_print(void *, size_t, struct dns_sshfp *); /* * TXT R E S O U R C E R E C O R D */ #ifndef DNS_TXT_MINDATA #define DNS_TXT_MINDATA 1024 #endif struct dns_txt { size_t size, len; unsigned char data[DNS_TXT_MINDATA]; }; /* struct dns_txt */ DNS_PUBLIC struct dns_txt *dns_txt_init(struct dns_txt *, size_t); DNS_PUBLIC int dns_txt_parse(struct dns_txt *, struct dns_rr *, struct dns_packet *); DNS_PUBLIC int dns_txt_push(struct dns_packet *, struct dns_txt *); DNS_PUBLIC int dns_txt_cmp(const struct dns_txt *, const struct dns_txt *); DNS_PUBLIC size_t dns_txt_print(void *, size_t, struct dns_txt *); /* * ANY R E S O U R C E R E C O R D */ union dns_any { struct dns_a a; struct dns_aaaa aaaa; struct dns_mx mx; struct dns_ns ns; struct dns_cname cname; struct dns_soa soa; struct dns_ptr ptr; struct dns_srv srv; struct dns_opt opt; struct dns_sshfp sshfp; struct dns_txt txt, spf, rdata; }; /* union dns_any */ #define DNS_ANY_INIT(any) { .rdata = { .size = sizeof *(any) - offsetof(struct dns_txt, data) } } DNS_PUBLIC union dns_any *dns_any_init(union dns_any *, size_t); DNS_PUBLIC int dns_any_parse(union dns_any *, struct dns_rr *, struct dns_packet *); DNS_PUBLIC int dns_any_push(struct dns_packet *, union dns_any *, enum dns_type); DNS_PUBLIC int dns_any_cmp(const union dns_any *, enum dns_type, const union dns_any *, enum dns_type); DNS_PUBLIC size_t dns_any_print(void *, size_t, union dns_any *, enum dns_type); DNS_PUBLIC size_t dns_any_cname(void *, size_t, union dns_any *, enum dns_type); /* * H O S T S I N T E R F A C E * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ struct dns_hosts; DNS_PUBLIC struct dns_hosts *dns_hosts_open(int *); DNS_PUBLIC void dns_hosts_close(struct dns_hosts *); DNS_PUBLIC dns_refcount_t dns_hosts_acquire(struct dns_hosts *); DNS_PUBLIC dns_refcount_t dns_hosts_release(struct dns_hosts *); DNS_PUBLIC struct dns_hosts *dns_hosts_mortal(struct dns_hosts *); DNS_PUBLIC struct dns_hosts *dns_hosts_local(int *); DNS_PUBLIC int dns_hosts_loadfile(struct dns_hosts *, FILE *); DNS_PUBLIC int dns_hosts_loadpath(struct dns_hosts *, const char *); DNS_PUBLIC int dns_hosts_dump(struct dns_hosts *, FILE *); DNS_PUBLIC int dns_hosts_insert(struct dns_hosts *, int, const void *, const void *, _Bool); DNS_PUBLIC struct dns_packet *dns_hosts_query(struct dns_hosts *, struct dns_packet *, int *); /* * R E S O L V . C O N F I N T E R F A C E * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ struct dns_resolv_conf { struct sockaddr_storage nameserver[3]; char search[4][DNS_D_MAXNAME + 1]; /* (f)ile, (b)ind, (c)ache */ char lookup[4 * (1 + (4 * 2))]; /* getaddrinfo family by preference order ("inet4", "inet6") */ int family[3]; struct { _Bool edns0; unsigned ndots; unsigned timeout; unsigned attempts; _Bool rotate; _Bool recurse; _Bool smart; enum { DNS_RESCONF_TCP_ENABLE, DNS_RESCONF_TCP_ONLY, DNS_RESCONF_TCP_DISABLE, } tcp; } options; struct sockaddr_storage iface; struct { /* PRIVATE */ dns_atomic_t refcount; } _; }; /* struct dns_resolv_conf */ DNS_PUBLIC struct dns_resolv_conf *dns_resconf_open(int *); DNS_PUBLIC void dns_resconf_close(struct dns_resolv_conf *); DNS_PUBLIC dns_refcount_t dns_resconf_acquire(struct dns_resolv_conf *); DNS_PUBLIC dns_refcount_t dns_resconf_release(struct dns_resolv_conf *); DNS_PUBLIC struct dns_resolv_conf *dns_resconf_mortal(struct dns_resolv_conf *); DNS_PUBLIC struct dns_resolv_conf *dns_resconf_local(int *); DNS_PUBLIC struct dns_resolv_conf *dns_resconf_root(int *); DNS_PUBLIC int dns_resconf_pton(struct sockaddr_storage *, const char *); DNS_PUBLIC int dns_resconf_loadfile(struct dns_resolv_conf *, FILE *); DNS_PUBLIC int dns_resconf_loadpath(struct dns_resolv_conf *, const char *); #ifdef USE_FIXED_NAMESERVERS int dns_resconf_load_fixed_nameservers(struct dns_resolv_conf *resconf); #endif /* USE_FIXED_NAMESERVERS */ #ifdef USE_STRUCT_RES_STATE_NAMESERVERS int dns_resconf_load_struct_res_state_nameservers(struct dns_resolv_conf *resconf); #endif /* USE_STRUCT_RES_STATE_NAMESERVERS */ #ifdef _WIN32 DNS_PUBLIC int dns_resconf_loadwin(struct dns_resolv_conf *); #endif #ifdef __ANDROID__ DNS_PUBLIC int dns_resconf_loadandroid(struct dns_resolv_conf *resconf); #endif #ifdef HAVE_RESINIT DNS_PUBLIC int dns_resconf_loadfromresolv(struct dns_resolv_conf *resconf); #endif /*HAVE_RESINIT*/ DNS_PUBLIC int dns_nssconf_loadfile(struct dns_resolv_conf *, FILE *); DNS_PUBLIC int dns_nssconf_loadpath(struct dns_resolv_conf *, const char *); DNS_PUBLIC int dns_resconf_pton(struct sockaddr_storage *ss, const char *src); DNS_PUBLIC int dns_resconf_dump(struct dns_resolv_conf *, FILE *); DNS_PUBLIC int dns_nssconf_dump(struct dns_resolv_conf *, FILE *); DNS_PUBLIC int dns_resconf_setiface(struct dns_resolv_conf *, const char *, unsigned short); typedef unsigned long dns_resconf_i_t; DNS_PUBLIC size_t dns_resconf_search(void *, size_t, const void *, size_t, struct dns_resolv_conf *, dns_resconf_i_t *); /* * H I N T S E R V E R I N T E R F A C E * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ struct dns_hints; DNS_PUBLIC struct dns_hints *dns_hints_open(struct dns_resolv_conf *, int *); DNS_PUBLIC void dns_hints_close(struct dns_hints *); DNS_PUBLIC dns_refcount_t dns_hints_acquire(struct dns_hints *); DNS_PUBLIC dns_refcount_t dns_hints_release(struct dns_hints *); DNS_PUBLIC struct dns_hints *dns_hints_mortal(struct dns_hints *); DNS_PUBLIC int dns_hints_insert(struct dns_hints *, const char *, const struct sockaddr *, unsigned); DNS_PUBLIC unsigned dns_hints_insert_resconf(struct dns_hints *, const char *, const struct dns_resolv_conf *, int *); DNS_PUBLIC struct dns_hints *dns_hints_local(struct dns_resolv_conf *, int *); DNS_PUBLIC struct dns_hints *dns_hints_root(struct dns_resolv_conf *, int *); DNS_PUBLIC struct dns_packet *dns_hints_query(struct dns_hints *, struct dns_packet *, int *); DNS_PUBLIC int dns_hints_dump(struct dns_hints *, FILE *); struct dns_hints_i { const char *zone; struct { unsigned next; unsigned seed; } state; }; /* struct dns_hints_i */ #define dns_hints_i_new(...) (&(struct dns_hints_i){ __VA_ARGS__ }) DNS_PUBLIC unsigned dns_hints_grep(struct sockaddr **, socklen_t *, unsigned, struct dns_hints_i *, struct dns_hints *); /* * C A C H E I N T E R F A C E * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ struct dns_cache { void *state; dns_refcount_t (*acquire)(struct dns_cache *); dns_refcount_t (*release)(struct dns_cache *); struct dns_packet *(*query)(struct dns_packet *, struct dns_cache *, int *); int (*submit)(struct dns_packet *, struct dns_cache *); int (*check)(struct dns_cache *); struct dns_packet *(*fetch)(struct dns_cache *, int *); int (*pollfd)(struct dns_cache *); short (*events)(struct dns_cache *); void (*clear)(struct dns_cache *); union { long i; void *p; } arg[3]; struct { /* PRIVATE */ dns_atomic_t refcount; } _; }; /* struct dns_cache */ DNS_PUBLIC struct dns_cache *dns_cache_init(struct dns_cache *); DNS_PUBLIC void dns_cache_close(struct dns_cache *); /* * A P P L I C A T I O N I N T E R F A C E * * Options to change the behavior of the API. Applies across all the * different components. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ #define DNS_OPTS_INITIALIZER_ { 0, 0 }, 0 #define DNS_OPTS_INITIALIZER { DNS_OPTS_INITIALIZER_ } #define DNS_OPTS_INIT(...) { DNS_OPTS_INITIALIZER_, __VA_ARGS__ } #define dns_opts(...) (&dns_quietinit((struct dns_options)DNS_OPTS_INIT(__VA_ARGS__))) struct dns_options { /* * If the callback closes *fd, it must set it to -1. Otherwise, the * descriptor is queued and lazily closed at object destruction or * by an explicit call to _clear(). This allows safe use of * kqueue(2), epoll(2), et al -style persistent events. */ struct { void *arg; int (*cb)(int *fd, void *arg); } closefd; /* bitmask for _events() routines */ enum dns_events { DNS_SYSPOLL, DNS_LIBEVENT, } events; int udp_uses_connect; }; /* struct dns_options */ /* * S T A T S I N T E R F A C E S * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ struct dns_stat { size_t queries; struct { struct { size_t count, bytes; } sent, rcvd; } udp, tcp; }; /* struct dns_stat */ /* * S O C K E T I N T E R F A C E * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ struct dns_socket; DNS_PUBLIC struct dns_socket *dns_so_open(const struct sockaddr *, int, const struct dns_options *, int *error); DNS_PUBLIC void dns_so_close(struct dns_socket *); DNS_PUBLIC void dns_so_reset(struct dns_socket *); DNS_PUBLIC unsigned short dns_so_mkqid(struct dns_socket *so); DNS_PUBLIC struct dns_packet *dns_so_query(struct dns_socket *, struct dns_packet *, struct sockaddr *, int *); DNS_PUBLIC int dns_so_submit(struct dns_socket *, struct dns_packet *, struct sockaddr *); DNS_PUBLIC int dns_so_check(struct dns_socket *); DNS_PUBLIC struct dns_packet *dns_so_fetch(struct dns_socket *, int *); DNS_PUBLIC time_t dns_so_elapsed(struct dns_socket *); DNS_PUBLIC void dns_so_clear(struct dns_socket *); DNS_PUBLIC int dns_so_events(struct dns_socket *); DNS_PUBLIC int dns_so_pollfd(struct dns_socket *); DNS_PUBLIC int dns_so_poll(struct dns_socket *, int); DNS_PUBLIC const struct dns_stat *dns_so_stat(struct dns_socket *); /* * R E S O L V E R I N T E R F A C E * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ struct dns_resolver; DNS_PUBLIC struct dns_resolver *dns_res_open(struct dns_resolv_conf *, struct dns_hosts *hosts, struct dns_hints *, struct dns_cache *, const struct dns_options *, int *); DNS_PUBLIC struct dns_resolver *dns_res_stub(const struct dns_options *, int *); DNS_PUBLIC void dns_res_reset(struct dns_resolver *); DNS_PUBLIC void dns_res_close(struct dns_resolver *); DNS_PUBLIC dns_refcount_t dns_res_acquire(struct dns_resolver *); DNS_PUBLIC dns_refcount_t dns_res_release(struct dns_resolver *); DNS_PUBLIC struct dns_resolver *dns_res_mortal(struct dns_resolver *); DNS_PUBLIC int dns_res_submit(struct dns_resolver *, const char *, enum dns_type, enum dns_class); DNS_PUBLIC int dns_res_submit2(struct dns_resolver *, const char *, size_t, enum dns_type, enum dns_class); DNS_PUBLIC int dns_res_check(struct dns_resolver *); DNS_PUBLIC struct dns_packet *dns_res_fetch(struct dns_resolver *, int *); DNS_PUBLIC time_t dns_res_elapsed(struct dns_resolver *); DNS_PUBLIC void dns_res_clear(struct dns_resolver *); DNS_PUBLIC int dns_res_events(struct dns_resolver *); DNS_PUBLIC int dns_res_pollfd(struct dns_resolver *); DNS_PUBLIC time_t dns_res_timeout(struct dns_resolver *); DNS_PUBLIC int dns_res_poll(struct dns_resolver *, int); DNS_PUBLIC struct dns_packet *dns_res_query(struct dns_resolver *, const char *, enum dns_type, enum dns_class, int, int *); DNS_PUBLIC const struct dns_stat *dns_res_stat(struct dns_resolver *); DNS_PUBLIC void dns_res_sethints(struct dns_resolver *, struct dns_hints *); DNS_PUBLIC void dns_res_enable_search(struct dns_resolver *, unsigned char enable); DNS_PUBLIC int dns_res_was_asymetric(struct dns_resolver *); /* * A D D R I N F O I N T E R F A C E * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ struct dns_addrinfo; DNS_PUBLIC struct dns_addrinfo *dns_ai_open(const char *, const char *, enum dns_type, const struct addrinfo *, struct dns_resolver *, int *); DNS_PUBLIC void dns_ai_close(struct dns_addrinfo *); DNS_PUBLIC int dns_ai_nextent(struct addrinfo **, struct dns_addrinfo *); DNS_PUBLIC size_t dns_ai_print(void *, size_t, struct addrinfo *, struct dns_addrinfo *); DNS_PUBLIC time_t dns_ai_elapsed(struct dns_addrinfo *); DNS_PUBLIC void dns_ai_clear(struct dns_addrinfo *); DNS_PUBLIC int dns_ai_events(struct dns_addrinfo *); DNS_PUBLIC int dns_ai_pollfd(struct dns_addrinfo *); DNS_PUBLIC time_t dns_ai_timeout(struct dns_addrinfo *); DNS_PUBLIC int dns_ai_poll(struct dns_addrinfo *, int); DNS_PUBLIC const struct dns_stat *dns_ai_stat(struct dns_addrinfo *); /* * U T I L I T Y I N T E R F A C E S * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ DNS_PUBLIC size_t dns_strlcpy(char *, const char *, size_t); DNS_PUBLIC size_t dns_strlcat(char *, const char *, size_t); /* * M A C R O M A G I C S * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ #define DNS_PP_MIN(a, b) (((a) < (b))? (a) : (b)) #define DNS_PP_MAX(a, b) (((a) > (b))? (a) : (b)) #define DNS_PP_NARG_(a, b, c, d, e, f, g, h, i, j, k, N,...) N #define DNS_PP_NARG(...) DNS_PP_NARG_(__VA_ARGS__, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0) #define DNS_PP_CALL(F, ...) F(__VA_ARGS__) #define DNS_PP_PASTE(x, y) x##y #define DNS_PP_XPASTE(x, y) DNS_PP_PASTE(x, y) #define DNS_PP_STRINGIFY_(s) #s #define DNS_PP_STRINGIFY(s) DNS_PP_STRINGIFY_(s) #define DNS_PP_D1 0 #define DNS_PP_D2 1 #define DNS_PP_D3 2 #define DNS_PP_D4 3 #define DNS_PP_D5 4 #define DNS_PP_D6 5 #define DNS_PP_D7 6 #define DNS_PP_D8 7 #define DNS_PP_D9 8 #define DNS_PP_D10 9 #define DNS_PP_D11 10 #define DNS_PP_DEC(N) DNS_PP_XPASTE(DNS_PP_D, N) #endif /* DNS_H */ belle-sip-5.2.0+dfsg/src/generic-uri.c000066400000000000000000000107751434613136500174750ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "grammars/belle_sip_messageLexer.h" #include "grammars/belle_sip_messageParser.h" #include "belle-sip/generic-uri.h" #include "belle_sip_internal.h" struct _belle_generic_uri { belle_sip_parameters_t parameters; /*just for parsing maddr*/ char* scheme; char* user; char* user_password; char* host; int port; char* path; char* query; char* opaque_part; }; void belle_generic_uri_init(belle_generic_uri_t *uri) { uri->port=-1; } static void belle_generic_uri_destroy(belle_generic_uri_t* uri) { DESTROY_STRING(uri,scheme) DESTROY_STRING(uri,user) DESTROY_STRING(uri,user_password) DESTROY_STRING(uri,host) DESTROY_STRING(uri,path) DESTROY_STRING(uri,query) DESTROY_STRING(uri,opaque_part) } static void belle_generic_uri_clone(belle_generic_uri_t* uri, const belle_generic_uri_t *orig){ CLONE_STRING(belle_generic_uri,scheme,uri,orig) CLONE_STRING(belle_generic_uri,user,uri,orig) CLONE_STRING(belle_generic_uri,user_password,uri,orig) CLONE_STRING(belle_generic_uri,host,uri,orig) uri->port=orig->port; CLONE_STRING(belle_generic_uri,path,uri,orig) CLONE_STRING(belle_generic_uri,query,uri,orig) CLONE_STRING(belle_generic_uri,opaque_part,uri,orig) } belle_sip_error_code belle_generic_uri_marshal(const belle_generic_uri_t* uri, char* buff, size_t buff_size, size_t *offset) { belle_sip_error_code error=BELLE_SIP_OK; if (uri->scheme) { error=belle_sip_snprintf(buff,buff_size,offset,"%s:",uri->scheme); if (error!=BELLE_SIP_OK) return error; } if (uri->opaque_part) { error=belle_sip_snprintf(buff,buff_size,offset,"%s",uri->opaque_part); if (error!=BELLE_SIP_OK) return error; } else { if (uri->host) { error=belle_sip_snprintf(buff,buff_size,offset,"//"); if (error!=BELLE_SIP_OK) return error; } if (uri->user) { char* escaped_username=belle_sip_uri_to_escaped_username(uri->user); error=belle_sip_snprintf(buff,buff_size,offset,"%s",escaped_username); belle_sip_free(escaped_username); if (error!=BELLE_SIP_OK) return error; if (uri->user_password) { char* escaped_password=belle_sip_uri_to_escaped_userpasswd(uri->user_password); error=belle_sip_snprintf(buff,buff_size,offset,":%s",escaped_password); belle_sip_free(escaped_password); if (error!=BELLE_SIP_OK) return error; } error=belle_sip_snprintf(buff,buff_size,offset,"@"); if (error!=BELLE_SIP_OK) return error; } if (uri->host) { if (strchr(uri->host,':')) { /*ipv6*/ error=belle_sip_snprintf(buff,buff_size,offset,"[%s]",uri->host); } else { error=belle_sip_snprintf(buff,buff_size,offset,"%s",uri->host); } if (error!=BELLE_SIP_OK) return error; } if (uri->port>0) { error=belle_sip_snprintf(buff,buff_size,offset,":%i",uri->port); if (error!=BELLE_SIP_OK) return error; } if (uri->path) { char* escaped_path=belle_generic_uri_to_escaped_path(uri->path); error=belle_sip_snprintf(buff,buff_size,offset,"%s",escaped_path); belle_sip_free(escaped_path); if (error!=BELLE_SIP_OK) return error; } if (uri->query) { char* escaped_query=belle_generic_uri_to_escaped_query(uri->query); error=belle_sip_snprintf(buff,buff_size,offset,"?%s",escaped_query); belle_sip_free(escaped_query); if (error!=BELLE_SIP_OK) return error; } } return BELLE_SIP_OK; } GET_SET_STRING(belle_generic_uri,scheme); GET_SET_STRING(belle_generic_uri,user); GET_SET_STRING(belle_generic_uri,user_password); GET_SET_STRING(belle_generic_uri,host); GET_SET_STRING(belle_generic_uri,path); GET_SET_STRING(belle_generic_uri,query); GET_SET_STRING(belle_generic_uri,opaque_part); GET_SET_INT(belle_generic_uri,port,int) BELLE_NEW(belle_generic_uri,belle_sip_parameters) BELLE_PARSE(belle_sip_messageParser,belle_,generic_uri) char* belle_generic_uri_to_string(belle_generic_uri_t* uri) { return belle_sip_object_to_string(uri); } belle-sip-5.2.0+dfsg/src/grammars/000077500000000000000000000000001434613136500167175ustar00rootroot00000000000000belle-sip-5.2.0+dfsg/src/grammars/.gitignore000066400000000000000000000000111434613136500206770ustar00rootroot00000000000000*.tokens belle-sip-5.2.0+dfsg/src/grammars/belle_sdp.g000066400000000000000000000605521434613136500210300ustar00rootroot00000000000000/* belle-sdp - SDP (RFC4566) library. Copyright (C) 2010 Belledonne Communications SARL This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ grammar belle_sdp; options { language = C; output=AST; } @lexer::header { /* belle-sip - SIP (RFC3261) library. Copyright (C) 2010 Belledonne Communications SARL This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #pragma GCC diagnostic ignored "-Wparentheses" #pragma GCC diagnostic ignored "-Wunused" #ifdef __clang__ #pragma GCC diagnostic ignored "-Wtautological-compare" #endif #ifndef __clang__ #pragma GCC diagnostic ignored "-Wunused-variable" #endif } @parser::header { /* belle-sip - SIP (RFC3261) library. Copyright (C) 2010 Belledonne Communications SARL This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #pragma GCC diagnostic ignored "-Wparentheses" #pragma GCC diagnostic ignored "-Wunused" #ifndef __clang__ #pragma GCC diagnostic ignored "-Wunused-but-set-variable" #pragma GCC diagnostic ignored "-Wunused-variable" #pragma GCC diagnostic ignored "-Wunused-function" #endif } @rulecatch { if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } } @includes { #include "belle-sip/defs.h" #include "belle-sip/types.h" #include "belle-sip/belle-sdp.h" #include "parserutils.h" } session_description returns [belle_sdp_session_description_t* ret] scope { belle_sdp_session_description_t* current; } @init {$session_description::current = belle_sdp_session_description_new(); $ret=$session_description::current; } : version CR LF origin {belle_sdp_session_description_set_origin($session_description::current,$origin.ret);}CR LF session_name CR LF (info CR LF)? (uri_field CR LF)? (email CR LF)* phone_field* (connection {belle_sdp_session_description_set_connection($session_description::current,$connection.ret);} CR LF)? (bandwidth {belle_sdp_session_description_add_bandwidth($session_description::current,$bandwidth.ret);} CR LF)* time_field CR LF (repeat_time CR LF)* (zone_adjustments CR LF)? (key_field CR LF)? (attribute {belle_sdp_session_description_add_attribute($session_description::current,$attribute.ret);} CR LF)* (media_description {belle_sdp_session_description_add_media_description($session_description::current,$media_description.ret);}) *; catch [ANTLR3_MISMATCHED_TOKEN_EXCEPTION] { ANTLR3_LOG_EXCEPTION(); belle_sip_object_unref($session_description::current); $ret=NULL; } version: {IS_TOKEN(v)}?alpha_num EQUAL v=DIGIT+ {belle_sdp_version_t* version =belle_sdp_version_new(); belle_sdp_version_set_version(version,atoi((const char*)$v.text->chars)); belle_sdp_session_description_set_version($session_description::current,version);}; // ;this memo describes version 0 origin returns [belle_sdp_origin_t* ret] scope { belle_sdp_origin_t* current; } @init {$origin::current = belle_sdp_origin_new(); $ret=$origin::current; } : {IS_TOKEN(o)}?alpha_num EQUAL username {belle_sdp_origin_set_username($origin::current,(const char*)$username.text->chars);} SPACE sess_id {if ($sess_id.text->chars) belle_sdp_origin_set_session_id($origin::current,strtoul((const char*)$sess_id.text->chars,NULL,10));} SPACE sess_version {if ($sess_version.text->chars) belle_sdp_origin_set_session_version($origin::current,strtoul((const char*)$sess_version.text->chars,NULL,10));} SPACE nettype {belle_sdp_origin_set_network_type($origin::current,(const char*)$nettype.text->chars);} SPACE addrtype {belle_sdp_origin_set_address_type($origin::current,(const char*)$addrtype.text->chars);} SPACE addr {belle_sdp_origin_set_address($origin::current,(const char*)$addr.text->chars);} ; catch [ANTLR3_MISMATCHED_TOKEN_EXCEPTION] { ANTLR3_LOG_EXCEPTION(); belle_sip_object_unref($origin::current); $ret=NULL; } session_name: {IS_TOKEN(s)}? alpha_num EQUAL text {belle_sdp_session_name_t* session_name =belle_sdp_session_name_new(); belle_sdp_session_name_set_value(session_name,(const char*)$text.text->chars); belle_sdp_session_description_set_session_name($session_description::current,session_name);}; info returns [belle_sdp_info_t* ret] scope { belle_sdp_info_t* current; } @init {$info::current = belle_sdp_info_new(); $ret=$info::current; } : {IS_TOKEN(i)}? alpha_num EQUAL info_value {belle_sdp_info_set_value($info::current,(const char*) $info_value.text->chars);} ; info_value options { greedy = false; }: ~(CR|LF)*; uri_field: {IS_TOKEN(u)}?alpha_num EQUAL uri ; email returns [belle_sdp_email_t* ret] scope { belle_sdp_email_t* current; } @init {$email::current = belle_sdp_email_new(); $ret=$email::current; } : {IS_TOKEN(e)}?alpha_num EQUAL email_address {belle_sdp_email_set_value($email::current,(const char*)$email_address.text->chars);}; phone_field: {IS_TOKEN(p)}?alpha_num EQUAL phone_number CR LF; connection returns [belle_sdp_connection_t* ret] scope { belle_sdp_connection_t* current; } @init {$connection::current = belle_sdp_connection_new(); $ret=$connection::current; } : {IS_TOKEN(c)}?alpha_num EQUAL nettype { belle_sdp_connection_set_network_type($connection::current,(const char*)$nettype.text->chars);} SPACE addrtype{ belle_sdp_connection_set_address_type($connection::current,(const char*)$addrtype.text->chars);} SPACE connection_address ; //;a connection field must be present //;in every media description or at the //;session-level catch [ANTLR3_MISMATCHED_TOKEN_EXCEPTION] { ANTLR3_LOG_EXCEPTION(); belle_sip_object_unref($ret); $ret=NULL; } bandwidth returns [belle_sdp_bandwidth_t* ret] scope { belle_sdp_bandwidth_t* current; } @init {$bandwidth::current = belle_sdp_bandwidth_new(); $ret=$bandwidth::current; } : {IS_TOKEN(b)}?alpha_num EQUAL bwtype {belle_sdp_bandwidth_set_type($bandwidth::current,(const char*)$bwtype.text->chars); } COLON bandwidth_value {belle_sdp_bandwidth_set_value($bandwidth::current,atoi((const char*)$bandwidth_value.text->chars));}; catch [ANTLR3_MISMATCHED_TOKEN_EXCEPTION] { ANTLR3_LOG_EXCEPTION(); belle_sip_object_unref($ret); $ret=NULL; } time_field: {IS_TOKEN(t)}?alpha_num EQUAL start_time SPACE stop_time {belle_sdp_time_description_t* time_description =belle_sdp_time_description_new(); belle_sdp_time_t* time_value =belle_sdp_time_new(); belle_sip_list_t* time_description_list; belle_sdp_time_set_start(time_value,atoll((const char*)$start_time.text->chars)); belle_sdp_time_set_stop(time_value,atoll((const char*)$stop_time.text->chars)); belle_sdp_time_description_set_time(time_description,time_value); time_description_list = belle_sip_list_append(NULL,time_description); belle_sdp_session_description_set_time_descriptions($session_description::current,time_description_list);}; repeat_time: {IS_TOKEN(r)}?alpha_num EQUAL repeat_interval (SPACE typed_time)+; zone_adjustments: {IS_TOKEN(z)}? alpha_num EQUAL sdp_time SPACE '-'? typed_time (SPACE sdp_time SPACE '-'? typed_time)*; key_field: {IS_TOKEN(k)}?alpha_num EQUAL key_value ; key_value options { greedy = false; }: (~(CR|LF))*; //key_type: {IS_TOKEN(prompt)}? alpha_num* /*'prompt'*/ | // {IS_TOKEN(clear)}? alpha_num* /*'clear'*/ COLON key_data | // {IS_TOKEN(base64)}? alpha_num* /*'base64*/ COLON key_data | // {IS_TOKEN(base64)}? alpha_num* /*'uri*/ COLON uri; // //key_data: email_safe; attribute returns [belle_sdp_attribute_t* ret] scope {int has_value;} @init {$ret=NULL;} : {IS_TOKEN(a)}?alpha_num EQUAL attribute_content{$ret=$attribute_content.ret;}; catch [ANTLR3_MISMATCHED_TOKEN_EXCEPTION] { ANTLR3_LOG_EXCEPTION(); if ($ret) belle_sip_object_unref($ret); $ret=NULL; } attribute_content returns [belle_sdp_attribute_t* ret] @init {$ret=NULL; } : attribute_name (COLON val=attribute_value {$ret=belle_sdp_attribute_create((const char*)$attribute_name.text->chars,(const char*)$attribute_value.text->chars);})? { if (!val.tree) $ret=belle_sdp_attribute_create((const char*)$attribute_name.text->chars,NULL); }; rtcp_xr_attribute returns [belle_sdp_rtcp_xr_attribute_t* ret] scope { belle_sdp_rtcp_xr_attribute_t* current; } @init { $rtcp_xr_attribute::current = belle_sdp_rtcp_xr_attribute_new();$ret = $rtcp_xr_attribute::current;} : {IS_TOKEN(a)}?alpha_num EQUAL {IS_TOKEN(rtcp-xr)}? attribute_name /*'rtcp-xr'*/ (COLON rtcp_xr_attribute_value (SPACE rtcp_xr_attribute_value)*)?; catch [ANTLR3_MISMATCHED_TOKEN_EXCEPTION] { ANTLR3_LOG_EXCEPTION(); belle_sip_object_unref($ret); $ret=NULL; } rtcp_xr_attribute_value : (pkt_loss_rle)=> pkt_loss_rle | (pkt_dup_rle)=> pkt_dup_rle | (pkt_rcpt_times)=> pkt_rcpt_times | (rcvr_rtt)=> rcvr_rtt | (stat_summary)=> stat_summary | (voip_metrics)=> voip_metrics; pkt_loss_rle : {IS_TOKEN(pkt-loss-rle)}? rtcp_xr_attribute_name /*'pkt-loss-rle'*/ (EQUAL rtcp_xr_max_size)? ; pkt_dup_rle : {IS_TOKEN(pkt-dup-rle)}? rtcp_xr_attribute_name /*'pkt-dup-rle'*/ (EQUAL rtcp_xr_max_size)? ; pkt_rcpt_times : {IS_TOKEN(pkt-rcpt-times)}? rtcp_xr_attribute_name /*'pkt-rcpt-times'*/ (EQUAL rtcp_xr_max_size)? ; rcvr_rtt : {IS_TOKEN(rcvr-rtt)}? rtcp_xr_attribute_name /*'rcvr-rtt'*/ EQUAL {IS_TOKEN(all) || IS_TOKEN(sender)}? rtcp_xr_rcvr_rtt_mode (COLON val=rtcp_xr_max_size)? { belle_sdp_rtcp_xr_attribute_set_rcvr_rtt_mode($rtcp_xr_attribute::current,(const char*)$rtcp_xr_rcvr_rtt_mode.text->chars); if (val.tree) belle_sdp_rtcp_xr_attribute_set_rcvr_rtt_max_size($rtcp_xr_attribute::current,atoi((const char*)$rtcp_xr_max_size.text->chars)); }; stat_summary : {IS_TOKEN(stat-summary)}? rtcp_xr_attribute_name /*'stat-summary'*/ { belle_sdp_rtcp_xr_attribute_set_stat_summary($rtcp_xr_attribute::current,1); } (EQUAL rtcp_xr_stat_summary_flag (COMMA rtcp_xr_stat_summary_flag)*)?; voip_metrics : {IS_TOKEN(voip-metrics)}? rtcp_xr_attribute_name /*'voip-metrics'*/ { belle_sdp_rtcp_xr_attribute_set_voip_metrics($rtcp_xr_attribute::current,1); }; rtcp_xr_stat_summary_flag : {IS_TOKEN(loss) || IS_TOKEN(dup) || IS_TOKEN(jitt) || IS_TOKEN(TTL) || IS_TOKEN(HL)}?rtcp_xr_stat_summary_flag_value { belle_sdp_rtcp_xr_attribute_add_stat_summary_flag($rtcp_xr_attribute::current,(const char*)$rtcp_xr_stat_summary_flag_value.text->chars); }; rtcp_xr_max_size : DIGIT+; rtcp_fb_attribute returns [belle_sdp_rtcp_fb_attribute_t* ret] scope { belle_sdp_rtcp_fb_attribute_t* current; } @init { $rtcp_fb_attribute::current = belle_sdp_rtcp_fb_attribute_new();$ret = $rtcp_fb_attribute::current;} : {IS_TOKEN(a)}?alpha_num EQUAL {IS_TOKEN(rtcp-fb)}? attribute_name /*'rtcp-fb'*/ COLON rtcp_fb_pt SPACE rtcp_fb_val; catch [ANTLR3_MISMATCHED_TOKEN_EXCEPTION] { ANTLR3_LOG_EXCEPTION(); belle_sip_object_unref($ret); $ret=NULL; } rtcp_fb_pt: STAR { belle_sdp_rtcp_fb_attribute_set_id($rtcp_fb_attribute::current,-1); } | integer { belle_sdp_rtcp_fb_attribute_set_id($rtcp_fb_attribute::current,atoi((const char*)$integer.text->chars)); }; rtcp_fb_val : (rtcp_fb_ack_val)=>rtcp_fb_ack_val | (rtcp_fb_nack_val)=>rtcp_fb_nack_val | (rtcp_fb_trr_int_val)=>rtcp_fb_trr_int_val | (rtcp_fb_ccm_val)=>rtcp_fb_ccm_val | (rtcp_fb_id_val)=>rtcp_fb_id_val; rtcp_fb_ack_val: {IS_TOKEN(ack)}? rtcp_fb_attribute_name /*'ack'*/ (SPACE rtcp_fb_ack_param)? { belle_sdp_rtcp_fb_attribute_set_type($rtcp_fb_attribute::current,BELLE_SDP_RTCP_FB_ACK); }; rtcp_fb_nack_val: {IS_TOKEN(nack)}? rtcp_fb_attribute_name /*'nack'*/ (SPACE rtcp_fb_nack_param)? { belle_sdp_rtcp_fb_attribute_set_type($rtcp_fb_attribute::current,BELLE_SDP_RTCP_FB_NACK); }; rtcp_fb_trr_int_val: {IS_TOKEN(trr-int)}? rtcp_fb_attribute_name /*'trr-int'*/ SPACE integer { belle_sdp_rtcp_fb_attribute_set_type($rtcp_fb_attribute::current,BELLE_SDP_RTCP_FB_TRR_INT); belle_sdp_rtcp_fb_attribute_set_trr_int($rtcp_fb_attribute::current,(uint16_t)atoi((const char*)$integer.text->chars)); }; rtcp_fb_ccm_val: {IS_TOKEN(ccm)}? rtcp_fb_attribute_name /*'ccm'*/ (SPACE rtcp_fb_ccm_param)? { /* TODO: rtcp_fb_ccm_param should be mandatory */ belle_sdp_rtcp_fb_attribute_set_type($rtcp_fb_attribute::current,BELLE_SDP_RTCP_FB_CCM); }; rtcp_fb_id_val: rtcp_fb_attribute_name (SPACE rtcp_fb_param)?; rtcp_fb_param: (rtcp_fb_app_param)=>rtcp_fb_app_param | (rtcp_fb_token_param)=>rtcp_fb_token_param; rtcp_fb_ack_param: (rtcp_fb_rpsi_param)=>rtcp_fb_rpsi_param | (rtcp_fb_app_param)=>rtcp_fb_app_param | (rtcp_fb_token_param)=>rtcp_fb_token_param; rtcp_fb_nack_param: (rtcp_fb_pli_param)=>rtcp_fb_pli_param | (rtcp_fb_sli_param)=>rtcp_fb_sli_param | (rtcp_fb_rpsi_param)=>rtcp_fb_rpsi_param | (rtcp_fb_app_param)=>rtcp_fb_app_param | (rtcp_fb_token_param)=>rtcp_fb_token_param; rtcp_fb_pli_param: {IS_TOKEN(pli)}? rtcp_fb_attribute_name /*'pli'*/ { belle_sdp_rtcp_fb_attribute_set_param($rtcp_fb_attribute::current,BELLE_SDP_RTCP_FB_PLI); }; rtcp_fb_sli_param: {IS_TOKEN(sli)}? rtcp_fb_attribute_name /*'sli'*/ { belle_sdp_rtcp_fb_attribute_set_param($rtcp_fb_attribute::current,BELLE_SDP_RTCP_FB_SLI); }; rtcp_fb_rpsi_param: {IS_TOKEN(rpsi)}? rtcp_fb_attribute_name /*'rpsi'*/ { belle_sdp_rtcp_fb_attribute_set_param($rtcp_fb_attribute::current,BELLE_SDP_RTCP_FB_RPSI); }; rtcp_fb_app_param: {IS_TOKEN(app)}? rtcp_fb_attribute_name /*'app'*/ (SPACE byte_string) { belle_sdp_rtcp_fb_attribute_set_param($rtcp_fb_attribute::current,BELLE_SDP_RTCP_FB_APP); }; rtcp_fb_ccm_param: (rtcp_fb_fir_param)=>rtcp_fb_fir_param | (rtcp_fb_tmmbr_param)=>rtcp_fb_tmmbr_param | (rtcp_fb_token_param)=>rtcp_fb_token_param; rtcp_fb_fir_param: {IS_TOKEN(fir)}? rtcp_fb_attribute_name /*'fir'*/ { belle_sdp_rtcp_fb_attribute_set_param($rtcp_fb_attribute::current,BELLE_SDP_RTCP_FB_FIR); }; rtcp_fb_tmmbr_param: {IS_TOKEN(tmmbr)}? rtcp_fb_attribute_name /*'tmmbr'*/ (SPACE rtcp_fb_tmmbr_smaxpr_param)? { belle_sdp_rtcp_fb_attribute_set_param($rtcp_fb_attribute::current,BELLE_SDP_RTCP_FB_TMMBR); }; rtcp_fb_tmmbr_smaxpr_param: {IS_TOKEN(smaxpr)}? rtcp_fb_attribute_name /*'smaxpr'*/ EQUAL val=rtcp_fb_tmmbr_smaxpr { if (val.tree) belle_sdp_rtcp_fb_attribute_set_smaxpr($rtcp_fb_attribute::current,atoi((const char*)$rtcp_fb_tmmbr_smaxpr.text->chars)); }; rtcp_fb_tmmbr_smaxpr : DIGIT+; rtcp_fb_token_param: rtcp_fb_attribute_name (SPACE byte_string)?; media_description returns [belle_sdp_media_description_t* ret] scope { belle_sdp_media_description_t* current; } @init {$media_description::current = belle_sdp_media_description_new(); $ret=$media_description::current; } : media CR LF {belle_sdp_media_description_set_media($media_description::current,$media.ret);} (info {belle_sdp_media_description_set_info($media_description::current,$info.ret);} CR LF)? (connection { belle_sdp_media_description_set_connection($media_description::current,$connection.ret);} CR LF)? (bandwidth {belle_sdp_media_description_add_bandwidth($media_description::current,$bandwidth.ret);} CR LF)* (key_field CR LF)? (attribute {if ($attribute.ret)belle_sdp_media_description_add_attribute($media_description::current,$attribute.ret);} CR LF)*; catch [ANTLR3_MISMATCHED_TOKEN_EXCEPTION] { ANTLR3_LOG_EXCEPTION(); belle_sip_object_unref($ret); $ret=NULL; } media returns [belle_sdp_media_t* ret] scope { belle_sdp_media_t* current; } @init {$media::current = belle_sdp_media_new(); $ret=$media::current; } : {IS_TOKEN(m)}?alpha_num EQUAL media_value {belle_sdp_media_set_media_type($media::current,(const char*)$media_value.text->chars);} SPACE port {belle_sdp_media_set_media_port($media::current,atoi((const char*)$port.text->chars));} (SLASH integer{belle_sdp_media_set_port_count($media::current,atoi((const char*)$integer.text->chars));})? SPACE proto {belle_sdp_media_set_protocol($media::current,(const char*)$proto.text->chars);} (SPACE fmt)+; catch [ANTLR3_MISMATCHED_TOKEN_EXCEPTION] { ANTLR3_LOG_EXCEPTION(); belle_sip_object_unref($ret); $ret=NULL; } media_value: alpha_num+; // ;typically "audio", "video", "application" // ;or "data" fmt scope { int is_number; } @init { $fmt::is_number=0;}: ((DIGIT+)=>(DIGIT+){$fmt::is_number=1;} | token ) {belle_sdp_media_set_media_formats($media::current ,belle_sip_list_append(belle_sdp_media_get_media_formats($media::current) ,(void*)($fmt::is_number?(void*)(intptr_t)atoi((const char*)$fmt.text->chars):$fmt.text->chars)));}; //;typically an RTP payload type for audio //;and video media proto options { greedy = false; }: ~(SPACE|CR|LF)*; //;typically "RTP/AVP" or "udp" for IP4 port: DIGIT+; // ;should in the range "1024" to "65535" inclusive // ;for UDP based media attribute_name: token; attribute_value options { greedy = false; }: ~(CR|LF)*; rtcp_xr_attribute_name: word; rtcp_xr_rcvr_rtt_mode: word; rtcp_xr_stat_summary_flag_value: word; rtcp_fb_attribute_name: word; sess_id: DIGIT+; // ;should be unique for this originating username/host sess_version: DIGIT+; //;0 is a new session connection_address: /*multicast_address |*/addr {belle_sdp_connection_set_address($connection::current,(const char*)$addr.text->chars);} multicast_part?; multicast_address: unicast_address '/' ttl; // (decimal_uchar DOT decimal_uchar DOT decimal_uchar DOT) decimal_uchar '/' ttl ( '/' integer )?; //;multicast addresses may be in the range //;224.0.0.0 to 239.255.255.255 ttl: decimal_uchar; start_time: DIGIT+ ; stop_time: DIGIT+ ; sdp_time: DIGIT+; // ;sufficient for 2 more centuries repeat_interval: typed_time; typed_time: DIGIT* fixed_len_time_unit?; fixed_len_time_unit: {IS_TOKEN(d)}? alpha_num | {IS_TOKEN(h)}? alpha_num | {IS_TOKEN(m)}? alpha_num | {IS_TOKEN(s)}? alpha_num; bwtype: alpha_num+; bandwidth_value: DIGIT+; username: email_safe; //;pretty wide definition, but doesn't include SPACE email_address options { greedy = false; }: ~(CR|LF)* ; //| email '(' email_safe ')' | //email_safe '<' email '>'; uri: text ;//defined in RFC1630 phone_number: phone;/*(phone '(') => (phone '(') email_safe ')' | (phone) => phone | email_safe LQUOTE phone RQUOTE;*/ phone: text;//'+' DIGIT*POS_DIGIT (SPACE | '-' | DIGIT)*; //;there must be a SPACE or hyphen between the //;international code and the rest of the number. nettype: alpha_num+;//'IN'; // ;list to be extended addrtype: alpha_num+ ; //'IP4' | 'IP6'; //;list to be extended addr: unicast_address ; multicast_part: (SLASH num+=integer { if (strcmp( belle_sdp_connection_get_address_type($connection::current),"IP6")==0) belle_sdp_connection_set_range($connection::current,atoi((const char*)$integer.text->chars)); else if ($num->count ==1) belle_sdp_connection_set_ttl($connection::current,atoi((const char*)$integer.text->chars)); else if ($num->count ==2) belle_sdp_connection_set_range($connection::current,atoi((const char*)$integer.text->chars)); })+; fqdn : ( domainlabel DOT )* toplabel DOT? ; domainlabel : alpha_num | (alpha_num ( alpha_num | DASH )* alpha_num) ; toplabel : alpha | (alpha ( alpha_num | DASH )* alpha_num) ; unicast_address : (alpha_num | DOT | COLON| DASH)*; /*might be better defined*/ /* ipv4_address |ipv6_address |fqdn*/ ipv4_address : decimal_uchar DOT decimal_uchar DOT decimal_uchar DOT decimal_uchar ; ipv6_address : (hexpart)=>hexpart ( COLON ipv4_address )? ; hexpart : hexseq | hexseq COLON COLON hexseq? | COLON COLON hexseq? ; hexseq : hex4 ( COLON hex4)* ; hex4 : hexdigit+; /* hexdigit hexdigit hexdigit ;*/ text : ~(CR|LF)* ; //default is to interpret this as IS0-10646 UTF8 //ISO 8859-1 requires a "a=charset:ISO-8859-1" //session-level attribute to be used byte_string options { greedy = false; }: (OCTET)* ; //any byte except NUL, CR or LF decimal_uchar: integer;// (d+=DIGIT+ {$d !=NULL && $d->count<=3}?) integer: DIGIT+; email_safe : ~(SPACE)*; token : (alpha_num | '!' | '#' | '$' |'&'| '%'| '\'' | '*' |'+' | DASH | DOT | '^' | '_' | '`' | '{' | '|' | '}' | '~')+; alpha_num: (alpha | DIGIT) ; hexdigit: (HEX_CHAR | DIGIT) ; word: (alpha | DASH)+; alpha: COMMON_CHAR | HEX_CHAR; DIGIT: ZERO | POS_DIGIT; fragment ZERO: '0'; fragment POS_DIGIT : '1'..'9'; //ALPHA: 'a'..'z'|'A'..'Z'; COMMON_CHAR : 'g'..'z' | 'G'..'Z' ; HEX_CHAR: 'a'..'f' |'A'..'F'; SPACE: ' '; //CRLF : CR LF { USER1 = (int)(ctx->pLexer->input->currentLine - ctx->pLexer->input->data);}; LQUOTE: '<'; RQUOTE: '>'; CR:'\r'; LF:'\n'; DOT: '.'; EQUAL: '='; COLON: ':'; SLASH: '/'; DASH: '-'; COMMA: ','; STAR: '*'; OCTET : .; belle-sip-5.2.0+dfsg/src/grammars/belle_sdpLexer.c000066400000000000000000001537611434613136500220310ustar00rootroot00000000000000/** \file * This C source file was generated by $ANTLR version 3.4 * * - From the grammar source file : ../grammars/belle_sdp.g * - On : 2021-05-13 15:53:02 * - for the lexer : belle_sdpLexerLexer * * Editing it, at least manually, is not wise. * * C language generator and runtime by Jim Idle, jimi|hereisanat|idle|dotgoeshere|ws. * * */ // [The "BSD license"] // Copyright (c) 2005-2009 Jim Idle, Temporal Wave LLC // http://www.temporal-wave.com // http://www.linkedin.com/in/jimidle // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // 1. Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // 2. Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // 3. The name of the author may not be used to endorse or promote products // derived from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR // IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES // OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT // NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF // THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /* ============================================================================= * This is what the grammar programmer asked us to put at the top of every file. */ /* belle-sip - SIP (RFC3261) library. Copyright (C) 2010 Belledonne Communications SARL This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #pragma GCC diagnostic ignored "-Wparentheses" #pragma GCC diagnostic ignored "-Wunused" #ifdef __clang__ #pragma GCC diagnostic ignored "-Wtautological-compare" #endif #ifndef __clang__ #pragma GCC diagnostic ignored "-Wunused-variable" #endif /* End of Header action. * ============================================================================= */ /* ----------------------------------------- * Include the ANTLR3 generated header file. */ #include "belle_sdpLexer.h" /* ----------------------------------------- */ /* MACROS that hide the C interface implementations from the * generated code, which makes it a little more understandable to the human eye. * I am very much against using C pre-processor macros for function calls and bits * of code as you cannot see what is happening when single stepping in debuggers * and so on. The exception (in my book at least) is for generated code, where you are * not maintaining it, but may wish to read and understand it. If you single step it, you know that input() * hides some indirect calls, but is always referring to the input stream. This is * probably more readable than ctx->input->istream->input(snarfle0->blarg) and allows me to rejig * the runtime interfaces without changing the generated code too often, without * confusing the reader of the generated output, who may not wish to know the gory * details of the interface inheritance. */ #define CTX ctx /* Aids in accessing scopes for grammar programmers */ #undef SCOPE_TYPE #undef SCOPE_STACK #undef SCOPE_TOP #define SCOPE_TYPE(scope) pbelle_sdpLexer_##scope##_SCOPE #define SCOPE_STACK(scope) pbelle_sdpLexer_##scope##Stack #define SCOPE_TOP(scope) ctx->pbelle_sdpLexer_##scope##Top #define SCOPE_SIZE(scope) ctx->pbelle_sdpLexer_##scope##Stack_limit #define SCOPE_INSTANCE(scope, i) (ctx->SCOPE_STACK(scope)->get(ctx->SCOPE_STACK(scope),i)) /* Macros for accessing things in a lexer */ #undef LEXER #undef RECOGNIZER #undef RULEMEMO #undef GETCHARINDEX #undef GETLINE #undef GETCHARPOSITIONINLINE #undef EMIT #undef EMITNEW #undef MATCHC #undef MATCHS #undef MATCHRANGE #undef LTOKEN #undef HASFAILED #undef FAILEDFLAG #undef INPUT #undef STRSTREAM #undef LA #undef HASEXCEPTION #undef EXCEPTION #undef CONSTRUCTEX #undef CONSUME #undef LRECOVER #undef MARK #undef REWIND #undef REWINDLAST #undef BACKTRACKING #undef MATCHANY #undef MEMOIZE #undef HAVEPARSEDRULE #undef GETTEXT #undef INDEX #undef SEEK #undef PUSHSTREAM #undef POPSTREAM #undef SETTEXT #undef SETTEXT8 #define LEXER ctx->pLexer #define RECOGNIZER LEXER->rec #define LEXSTATE RECOGNIZER->state #define TOKSOURCE LEXSTATE->tokSource #define GETCHARINDEX() LEXER->getCharIndex(LEXER) #define GETLINE() LEXER->getLine(LEXER) #define GETTEXT() LEXER->getText(LEXER) #define GETCHARPOSITIONINLINE() LEXER->getCharPositionInLine(LEXER) #define EMIT() LEXSTATE->type = _type; LEXER->emit(LEXER) #define EMITNEW(t) LEXER->emitNew(LEXER, t) #define MATCHC(c) LEXER->matchc(LEXER, c) #define MATCHS(s) LEXER->matchs(LEXER, s) #define MATCHRANGE(c1,c2) LEXER->matchRange(LEXER, c1, c2) #define MATCHANY() LEXER->matchAny(LEXER) #define LTOKEN LEXSTATE->token #define HASFAILED() (LEXSTATE->failed == ANTLR3_TRUE) #define BACKTRACKING LEXSTATE->backtracking #define FAILEDFLAG LEXSTATE->failed #define INPUT LEXER->input #define STRSTREAM INPUT #define ISTREAM INPUT->istream #define INDEX() ISTREAM->index(ISTREAM) #define SEEK(n) ISTREAM->seek(ISTREAM, n) #define EOF_TOKEN &(LEXSTATE->tokSource->eofToken) #define HASEXCEPTION() (LEXSTATE->error == ANTLR3_TRUE) #define EXCEPTION LEXSTATE->exception #define CONSTRUCTEX() RECOGNIZER->exConstruct(RECOGNIZER) #define LRECOVER() LEXER->recover(LEXER) #define MARK() ISTREAM->mark(ISTREAM) #define REWIND(m) ISTREAM->rewind(ISTREAM, m) #define REWINDLAST() ISTREAM->rewindLast(ISTREAM) #define MEMOIZE(ri,si) RECOGNIZER->memoize(RECOGNIZER, ri, si) #define HAVEPARSEDRULE(r) RECOGNIZER->alreadyParsedRule(RECOGNIZER, r) #define PUSHSTREAM(str) LEXER->pushCharStream(LEXER, str) #define POPSTREAM() LEXER->popCharStream(LEXER) #define SETTEXT(str) LEXSTATE->text = str #define SKIP() LEXSTATE->token = &(TOKSOURCE->skipToken) #define USER1 LEXSTATE->user1 #define USER2 LEXSTATE->user2 #define USER3 LEXSTATE->user3 #define CUSTOM LEXSTATE->custom #define RULEMEMO LEXSTATE->ruleMemo #define DBG RECOGNIZER->debugger /* If we have been told we can rely on the standard 8 bit or UTF16 input * stream, then we can define our macros to use the direct pointers * in the input object, which is much faster than indirect calls. This * is really only significant to lexers with a lot of fragment rules (which * do not place LA(1) in a temporary at the moment) and even then * only if there is a lot of input (order of say 1M or so). */ #if defined(ANTLR3_INLINE_INPUT_8BIT) || defined(ANTLR3_INLINE_INPUT_UTF16) # ifdef ANTLR3_INLINE_INPUT_8BIT /* 8 bit character set */ # define NEXTCHAR ((pANTLR3_UINT8)(INPUT->nextChar)) # define DATAP ((pANTLR3_UINT8)(INPUT->data)) # else # define NEXTCHAR ((pANTLR3_UINT16)(INPUT->nextChar)) # define DATAP ((pANTLR3_UINT16)(INPUT->data)) # endif # define LA(n) ((NEXTCHAR + n) > (DATAP + INPUT->sizeBuf) ? ANTLR3_CHARSTREAM_EOF : (ANTLR3_UCHAR)(*(NEXTCHAR + n - 1))) # define CONSUME() \ { \ if (NEXTCHAR < (DATAP + INPUT->sizeBuf)) \ { \ INPUT->charPositionInLine++; \ if ((ANTLR3_UCHAR)(*NEXTCHAR) == INPUT->newlineChar) \ { \ INPUT->line++; \ INPUT->charPositionInLine = 0; \ INPUT->currentLine = (void *)(NEXTCHAR + 1); \ } \ INPUT->nextChar = (void *)(NEXTCHAR + 1); \ } \ } #else // Pick up the input character by calling the input stream implementation. // #define CONSUME() INPUT->istream->consume(INPUT->istream) #define LA(n) INPUT->istream->_LA(INPUT->istream, n) #endif #define TOKTEXT(tok, txt) tok, (pANTLR3_UINT8)txt /* The 4 tokens defined below may well clash with your own #defines or token types. If so * then for the present you must use different names for your defines as these are hard coded * in the code generator. It would be better not to use such names internally, and maybe * we can change this in a forthcoming release. I deliberately do not #undef these * here as this will at least give you a redefined error somewhere if they clash. */ #define UP ANTLR3_TOKEN_UP #define DOWN ANTLR3_TOKEN_DOWN #define EOR ANTLR3_TOKEN_EOR #define INVALID ANTLR3_TOKEN_INVALID /* ============================================================================= * Functions to create and destroy scopes. First come the rule scopes, followed * by the global declared scopes. */ /* ============================================================================= */ /* ============================================================================= * Start of recognizer */ /* Forward declare the locally static matching functions we have generated and any predicate functions. */ static ANTLR3_INLINE void mT__22 (pbelle_sdpLexer ctx); static ANTLR3_INLINE void mT__23 (pbelle_sdpLexer ctx); static ANTLR3_INLINE void mT__24 (pbelle_sdpLexer ctx); static ANTLR3_INLINE void mT__25 (pbelle_sdpLexer ctx); static ANTLR3_INLINE void mT__26 (pbelle_sdpLexer ctx); static ANTLR3_INLINE void mT__27 (pbelle_sdpLexer ctx); static ANTLR3_INLINE void mT__28 (pbelle_sdpLexer ctx); static ANTLR3_INLINE void mT__29 (pbelle_sdpLexer ctx); static ANTLR3_INLINE void mT__30 (pbelle_sdpLexer ctx); static ANTLR3_INLINE void mT__31 (pbelle_sdpLexer ctx); static ANTLR3_INLINE void mT__32 (pbelle_sdpLexer ctx); static ANTLR3_INLINE void mT__33 (pbelle_sdpLexer ctx); static ANTLR3_INLINE void mT__34 (pbelle_sdpLexer ctx); static ANTLR3_INLINE void mT__35 (pbelle_sdpLexer ctx); static ANTLR3_INLINE void mDIGIT (pbelle_sdpLexer ctx); static ANTLR3_INLINE void mZERO (pbelle_sdpLexer ctx); static ANTLR3_INLINE void mPOS_DIGIT (pbelle_sdpLexer ctx); static ANTLR3_INLINE void mCOMMON_CHAR (pbelle_sdpLexer ctx); static ANTLR3_INLINE void mHEX_CHAR (pbelle_sdpLexer ctx); static ANTLR3_INLINE void mSPACE (pbelle_sdpLexer ctx); static ANTLR3_INLINE void mLQUOTE (pbelle_sdpLexer ctx); static ANTLR3_INLINE void mRQUOTE (pbelle_sdpLexer ctx); static ANTLR3_INLINE void mCR (pbelle_sdpLexer ctx); static ANTLR3_INLINE void mLF (pbelle_sdpLexer ctx); static ANTLR3_INLINE void mDOT (pbelle_sdpLexer ctx); static ANTLR3_INLINE void mEQUAL (pbelle_sdpLexer ctx); static ANTLR3_INLINE void mCOLON (pbelle_sdpLexer ctx); static ANTLR3_INLINE void mSLASH (pbelle_sdpLexer ctx); static ANTLR3_INLINE void mDASH (pbelle_sdpLexer ctx); static ANTLR3_INLINE void mCOMMA (pbelle_sdpLexer ctx); static ANTLR3_INLINE void mSTAR (pbelle_sdpLexer ctx); static ANTLR3_INLINE void mOCTET (pbelle_sdpLexer ctx); static ANTLR3_INLINE void mTokens (pbelle_sdpLexer ctx); static void belle_sdpLexerFree(pbelle_sdpLexer ctx); /* ========================================================================= * Lexer matching rules end. * ========================================================================= */ static void belle_sdpLexerFree (pbelle_sdpLexer ctx) { LEXER->free(LEXER); ANTLR3_FREE(ctx); } static void belle_sdpLexerReset (pbelle_sdpLexer ctx) { RECOGNIZER->reset(RECOGNIZER); } /** \brief Name of the grammar file that generated this code */ static const char fileName[] = "../grammars/belle_sdp.g"; /** \brief Return the name of the grammar file that generated this code. */ static const char * getGrammarFileName() { return fileName; } /** \brief Create a new lexer called belle_sdpLexer * * \param[in] instream Pointer to an initialized input stream * \return * - Success pbelle_sdpLexer initialized for the lex start * - Fail NULL */ ANTLR3_API pbelle_sdpLexer belle_sdpLexerNew ( pANTLR3_INPUT_STREAM instream) { // See if we can create a new lexer with the standard constructor // return belle_sdpLexerNewSSD(instream, NULL); } /** \brief Create a new lexer called belle_sdpLexer * * \param[in] instream Pointer to an initialized input stream * \param[state] state Previously created shared recognizer stat * \return * - Success pbelle_sdpLexer initialized for the lex start * - Fail NULL */ ANTLR3_API pbelle_sdpLexer belle_sdpLexerNewSSD (pANTLR3_INPUT_STREAM instream, pANTLR3_RECOGNIZER_SHARED_STATE state) { pbelle_sdpLexer ctx; // Context structure we will build and return ctx = (pbelle_sdpLexer) ANTLR3_CALLOC(1, sizeof(belle_sdpLexer)); if (ctx == NULL) { // Failed to allocate memory for lexer context return NULL; } /* ------------------------------------------------------------------- * Memory for basic structure is allocated, now to fill in * in base ANTLR3 structures. We initialize the function pointers * for the standard ANTLR3 lexer function set, but upon return * from here, the programmer may set the pointers to provide custom * implementations of each function. * * We don't use the macros defined in belle_sdpLexer.h here so you can get a sense * of what goes where. */ /* Create a base lexer, using the supplied input stream */ ctx->pLexer = antlr3LexerNewStream(ANTLR3_SIZE_HINT, instream, state); /* Check that we allocated the memory correctly */ if (ctx->pLexer == NULL) { ANTLR3_FREE(ctx); return NULL; } /* Install the implementation of our belle_sdpLexer interface */ ctx->mT__22 = mT__22; ctx->mT__23 = mT__23; ctx->mT__24 = mT__24; ctx->mT__25 = mT__25; ctx->mT__26 = mT__26; ctx->mT__27 = mT__27; ctx->mT__28 = mT__28; ctx->mT__29 = mT__29; ctx->mT__30 = mT__30; ctx->mT__31 = mT__31; ctx->mT__32 = mT__32; ctx->mT__33 = mT__33; ctx->mT__34 = mT__34; ctx->mT__35 = mT__35; ctx->mDIGIT = mDIGIT; ctx->mZERO = mZERO; ctx->mPOS_DIGIT = mPOS_DIGIT; ctx->mCOMMON_CHAR = mCOMMON_CHAR; ctx->mHEX_CHAR = mHEX_CHAR; ctx->mSPACE = mSPACE; ctx->mLQUOTE = mLQUOTE; ctx->mRQUOTE = mRQUOTE; ctx->mCR = mCR; ctx->mLF = mLF; ctx->mDOT = mDOT; ctx->mEQUAL = mEQUAL; ctx->mCOLON = mCOLON; ctx->mSLASH = mSLASH; ctx->mDASH = mDASH; ctx->mCOMMA = mCOMMA; ctx->mSTAR = mSTAR; ctx->mOCTET = mOCTET; ctx->mTokens = mTokens; /** When the nextToken() call is made to this lexer's pANTLR3_TOKEN_SOURCE * it will call mTokens() in this generated code, and will pass it the ctx * pointer of this lexer, not the context of the base lexer, so store that now. */ ctx->pLexer->ctx = ctx; /**Install the token matching function */ ctx->pLexer->mTokens = (void (*) (void *))(mTokens); ctx->getGrammarFileName = getGrammarFileName; ctx->free = belle_sdpLexerFree; ctx->reset = belle_sdpLexerReset; /* Return the newly built lexer to the caller */ return ctx; } /* ========================================================================= * Functions to match the lexer grammar defined tokens from the input stream */ // Comes from: 36:7: ( '!' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start T__22 * * Looks to match the characters the constitute the token T__22 * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mT__22(pbelle_sdpLexer ctx) { ANTLR3_UINT32 _type; _type = T__22; // ../grammars/belle_sdp.g:36:7: ( '!' ) // ../grammars/belle_sdp.g:36:9: '!' { MATCHC('!'); if (HASEXCEPTION()) { goto ruleT__22Ex; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto ruleT__22Ex; /* Prevent compiler warnings */ ruleT__22Ex: ; } // $ANTLR end T__22 // Comes from: 37:7: ( '#' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start T__23 * * Looks to match the characters the constitute the token T__23 * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mT__23(pbelle_sdpLexer ctx) { ANTLR3_UINT32 _type; _type = T__23; // ../grammars/belle_sdp.g:37:7: ( '#' ) // ../grammars/belle_sdp.g:37:9: '#' { MATCHC('#'); if (HASEXCEPTION()) { goto ruleT__23Ex; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto ruleT__23Ex; /* Prevent compiler warnings */ ruleT__23Ex: ; } // $ANTLR end T__23 // Comes from: 38:7: ( '$' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start T__24 * * Looks to match the characters the constitute the token T__24 * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mT__24(pbelle_sdpLexer ctx) { ANTLR3_UINT32 _type; _type = T__24; // ../grammars/belle_sdp.g:38:7: ( '$' ) // ../grammars/belle_sdp.g:38:9: '$' { MATCHC('$'); if (HASEXCEPTION()) { goto ruleT__24Ex; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto ruleT__24Ex; /* Prevent compiler warnings */ ruleT__24Ex: ; } // $ANTLR end T__24 // Comes from: 39:7: ( '%' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start T__25 * * Looks to match the characters the constitute the token T__25 * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mT__25(pbelle_sdpLexer ctx) { ANTLR3_UINT32 _type; _type = T__25; // ../grammars/belle_sdp.g:39:7: ( '%' ) // ../grammars/belle_sdp.g:39:9: '%' { MATCHC('%'); if (HASEXCEPTION()) { goto ruleT__25Ex; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto ruleT__25Ex; /* Prevent compiler warnings */ ruleT__25Ex: ; } // $ANTLR end T__25 // Comes from: 40:7: ( '&' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start T__26 * * Looks to match the characters the constitute the token T__26 * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mT__26(pbelle_sdpLexer ctx) { ANTLR3_UINT32 _type; _type = T__26; // ../grammars/belle_sdp.g:40:7: ( '&' ) // ../grammars/belle_sdp.g:40:9: '&' { MATCHC('&'); if (HASEXCEPTION()) { goto ruleT__26Ex; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto ruleT__26Ex; /* Prevent compiler warnings */ ruleT__26Ex: ; } // $ANTLR end T__26 // Comes from: 41:7: ( '+' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start T__27 * * Looks to match the characters the constitute the token T__27 * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mT__27(pbelle_sdpLexer ctx) { ANTLR3_UINT32 _type; _type = T__27; // ../grammars/belle_sdp.g:41:7: ( '+' ) // ../grammars/belle_sdp.g:41:9: '+' { MATCHC('+'); if (HASEXCEPTION()) { goto ruleT__27Ex; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto ruleT__27Ex; /* Prevent compiler warnings */ ruleT__27Ex: ; } // $ANTLR end T__27 // Comes from: 42:7: ( '\\'' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start T__28 * * Looks to match the characters the constitute the token T__28 * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mT__28(pbelle_sdpLexer ctx) { ANTLR3_UINT32 _type; _type = T__28; // ../grammars/belle_sdp.g:42:7: ( '\\'' ) // ../grammars/belle_sdp.g:42:9: '\\'' { MATCHC('\''); if (HASEXCEPTION()) { goto ruleT__28Ex; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto ruleT__28Ex; /* Prevent compiler warnings */ ruleT__28Ex: ; } // $ANTLR end T__28 // Comes from: 43:7: ( '^' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start T__29 * * Looks to match the characters the constitute the token T__29 * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mT__29(pbelle_sdpLexer ctx) { ANTLR3_UINT32 _type; _type = T__29; // ../grammars/belle_sdp.g:43:7: ( '^' ) // ../grammars/belle_sdp.g:43:9: '^' { MATCHC('^'); if (HASEXCEPTION()) { goto ruleT__29Ex; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto ruleT__29Ex; /* Prevent compiler warnings */ ruleT__29Ex: ; } // $ANTLR end T__29 // Comes from: 44:7: ( '_' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start T__30 * * Looks to match the characters the constitute the token T__30 * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mT__30(pbelle_sdpLexer ctx) { ANTLR3_UINT32 _type; _type = T__30; // ../grammars/belle_sdp.g:44:7: ( '_' ) // ../grammars/belle_sdp.g:44:9: '_' { MATCHC('_'); if (HASEXCEPTION()) { goto ruleT__30Ex; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto ruleT__30Ex; /* Prevent compiler warnings */ ruleT__30Ex: ; } // $ANTLR end T__30 // Comes from: 45:7: ( '`' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start T__31 * * Looks to match the characters the constitute the token T__31 * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mT__31(pbelle_sdpLexer ctx) { ANTLR3_UINT32 _type; _type = T__31; // ../grammars/belle_sdp.g:45:7: ( '`' ) // ../grammars/belle_sdp.g:45:9: '`' { MATCHC('`'); if (HASEXCEPTION()) { goto ruleT__31Ex; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto ruleT__31Ex; /* Prevent compiler warnings */ ruleT__31Ex: ; } // $ANTLR end T__31 // Comes from: 46:7: ( '{' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start T__32 * * Looks to match the characters the constitute the token T__32 * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mT__32(pbelle_sdpLexer ctx) { ANTLR3_UINT32 _type; _type = T__32; // ../grammars/belle_sdp.g:46:7: ( '{' ) // ../grammars/belle_sdp.g:46:9: '{' { MATCHC('{'); if (HASEXCEPTION()) { goto ruleT__32Ex; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto ruleT__32Ex; /* Prevent compiler warnings */ ruleT__32Ex: ; } // $ANTLR end T__32 // Comes from: 47:7: ( '|' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start T__33 * * Looks to match the characters the constitute the token T__33 * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mT__33(pbelle_sdpLexer ctx) { ANTLR3_UINT32 _type; _type = T__33; // ../grammars/belle_sdp.g:47:7: ( '|' ) // ../grammars/belle_sdp.g:47:9: '|' { MATCHC('|'); if (HASEXCEPTION()) { goto ruleT__33Ex; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto ruleT__33Ex; /* Prevent compiler warnings */ ruleT__33Ex: ; } // $ANTLR end T__33 // Comes from: 48:7: ( '}' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start T__34 * * Looks to match the characters the constitute the token T__34 * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mT__34(pbelle_sdpLexer ctx) { ANTLR3_UINT32 _type; _type = T__34; // ../grammars/belle_sdp.g:48:7: ( '}' ) // ../grammars/belle_sdp.g:48:9: '}' { MATCHC('}'); if (HASEXCEPTION()) { goto ruleT__34Ex; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto ruleT__34Ex; /* Prevent compiler warnings */ ruleT__34Ex: ; } // $ANTLR end T__34 // Comes from: 49:7: ( '~' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start T__35 * * Looks to match the characters the constitute the token T__35 * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mT__35(pbelle_sdpLexer ctx) { ANTLR3_UINT32 _type; _type = T__35; // ../grammars/belle_sdp.g:49:7: ( '~' ) // ../grammars/belle_sdp.g:49:9: '~' { MATCHC('~'); if (HASEXCEPTION()) { goto ruleT__35Ex; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto ruleT__35Ex; /* Prevent compiler warnings */ ruleT__35Ex: ; } // $ANTLR end T__35 // Comes from: 578:6: ( ZERO | POS_DIGIT ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start DIGIT * * Looks to match the characters the constitute the token DIGIT * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mDIGIT(pbelle_sdpLexer ctx) { ANTLR3_UINT32 _type; _type = DIGIT; // ../grammars/belle_sdp.g:578:6: ( ZERO | POS_DIGIT ) // ../grammars/belle_sdp.g: { if ( ((LA(1) >= '0') && (LA(1) <= '9')) ) { CONSUME(); } else { CONSTRUCTEX(); EXCEPTION->type = ANTLR3_MISMATCHED_SET_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_MISMATCHED_SET_NAME; LRECOVER(); goto ruleDIGITEx; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto ruleDIGITEx; /* Prevent compiler warnings */ ruleDIGITEx: ; } // $ANTLR end DIGIT // Comes from: 579:14: ( '0' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start ZERO * * Looks to match the characters the constitute the token ZERO * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mZERO(pbelle_sdpLexer ctx) { ANTLR3_UINT32 _type; // ../grammars/belle_sdp.g:579:14: ( '0' ) // ../grammars/belle_sdp.g:579:16: '0' { MATCHC('0'); if (HASEXCEPTION()) { goto ruleZEROEx; } } // This is where rules clean up and exit // goto ruleZEROEx; /* Prevent compiler warnings */ ruleZEROEx: ; } // $ANTLR end ZERO // Comes from: 580:20: ( '1' .. '9' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start POS_DIGIT * * Looks to match the characters the constitute the token POS_DIGIT * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mPOS_DIGIT(pbelle_sdpLexer ctx) { ANTLR3_UINT32 _type; // ../grammars/belle_sdp.g:580:20: ( '1' .. '9' ) // ../grammars/belle_sdp.g: { if ( ((LA(1) >= '1') && (LA(1) <= '9')) ) { CONSUME(); } else { CONSTRUCTEX(); EXCEPTION->type = ANTLR3_MISMATCHED_SET_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_MISMATCHED_SET_NAME; LRECOVER(); goto rulePOS_DIGITEx; } } // This is where rules clean up and exit // goto rulePOS_DIGITEx; /* Prevent compiler warnings */ rulePOS_DIGITEx: ; } // $ANTLR end POS_DIGIT // Comes from: 583:3: ( 'g' .. 'z' | 'G' .. 'Z' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start COMMON_CHAR * * Looks to match the characters the constitute the token COMMON_CHAR * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mCOMMON_CHAR(pbelle_sdpLexer ctx) { ANTLR3_UINT32 _type; _type = COMMON_CHAR; // ../grammars/belle_sdp.g:583:3: ( 'g' .. 'z' | 'G' .. 'Z' ) // ../grammars/belle_sdp.g: { if ( ((LA(1) >= 'G') && (LA(1) <= 'Z')) || ((LA(1) >= 'g') && (LA(1) <= 'z')) ) { CONSUME(); } else { CONSTRUCTEX(); EXCEPTION->type = ANTLR3_MISMATCHED_SET_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_MISMATCHED_SET_NAME; LRECOVER(); goto ruleCOMMON_CHAREx; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto ruleCOMMON_CHAREx; /* Prevent compiler warnings */ ruleCOMMON_CHAREx: ; } // $ANTLR end COMMON_CHAR // Comes from: 584:9: ( 'a' .. 'f' | 'A' .. 'F' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start HEX_CHAR * * Looks to match the characters the constitute the token HEX_CHAR * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mHEX_CHAR(pbelle_sdpLexer ctx) { ANTLR3_UINT32 _type; _type = HEX_CHAR; // ../grammars/belle_sdp.g:584:9: ( 'a' .. 'f' | 'A' .. 'F' ) // ../grammars/belle_sdp.g: { if ( ((LA(1) >= 'A') && (LA(1) <= 'F')) || ((LA(1) >= 'a') && (LA(1) <= 'f')) ) { CONSUME(); } else { CONSTRUCTEX(); EXCEPTION->type = ANTLR3_MISMATCHED_SET_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_MISMATCHED_SET_NAME; LRECOVER(); goto ruleHEX_CHAREx; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto ruleHEX_CHAREx; /* Prevent compiler warnings */ ruleHEX_CHAREx: ; } // $ANTLR end HEX_CHAR // Comes from: 586:6: ( ' ' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start SPACE * * Looks to match the characters the constitute the token SPACE * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mSPACE(pbelle_sdpLexer ctx) { ANTLR3_UINT32 _type; _type = SPACE; // ../grammars/belle_sdp.g:586:6: ( ' ' ) // ../grammars/belle_sdp.g:586:8: ' ' { MATCHC(' '); if (HASEXCEPTION()) { goto ruleSPACEEx; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto ruleSPACEEx; /* Prevent compiler warnings */ ruleSPACEEx: ; } // $ANTLR end SPACE // Comes from: 589:7: ( '<' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start LQUOTE * * Looks to match the characters the constitute the token LQUOTE * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mLQUOTE(pbelle_sdpLexer ctx) { ANTLR3_UINT32 _type; _type = LQUOTE; // ../grammars/belle_sdp.g:589:7: ( '<' ) // ../grammars/belle_sdp.g:589:9: '<' { MATCHC('<'); if (HASEXCEPTION()) { goto ruleLQUOTEEx; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto ruleLQUOTEEx; /* Prevent compiler warnings */ ruleLQUOTEEx: ; } // $ANTLR end LQUOTE // Comes from: 590:7: ( '>' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start RQUOTE * * Looks to match the characters the constitute the token RQUOTE * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mRQUOTE(pbelle_sdpLexer ctx) { ANTLR3_UINT32 _type; _type = RQUOTE; // ../grammars/belle_sdp.g:590:7: ( '>' ) // ../grammars/belle_sdp.g:590:9: '>' { MATCHC('>'); if (HASEXCEPTION()) { goto ruleRQUOTEEx; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto ruleRQUOTEEx; /* Prevent compiler warnings */ ruleRQUOTEEx: ; } // $ANTLR end RQUOTE // Comes from: 591:3: ( '\\r' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start CR * * Looks to match the characters the constitute the token CR * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mCR(pbelle_sdpLexer ctx) { ANTLR3_UINT32 _type; _type = CR; // ../grammars/belle_sdp.g:591:3: ( '\\r' ) // ../grammars/belle_sdp.g:591:4: '\\r' { MATCHC('\r'); if (HASEXCEPTION()) { goto ruleCREx; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto ruleCREx; /* Prevent compiler warnings */ ruleCREx: ; } // $ANTLR end CR // Comes from: 592:3: ( '\\n' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start LF * * Looks to match the characters the constitute the token LF * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mLF(pbelle_sdpLexer ctx) { ANTLR3_UINT32 _type; _type = LF; // ../grammars/belle_sdp.g:592:3: ( '\\n' ) // ../grammars/belle_sdp.g:592:4: '\\n' { MATCHC('\n'); if (HASEXCEPTION()) { goto ruleLFEx; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto ruleLFEx; /* Prevent compiler warnings */ ruleLFEx: ; } // $ANTLR end LF // Comes from: 593:4: ( '.' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start DOT * * Looks to match the characters the constitute the token DOT * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mDOT(pbelle_sdpLexer ctx) { ANTLR3_UINT32 _type; _type = DOT; // ../grammars/belle_sdp.g:593:4: ( '.' ) // ../grammars/belle_sdp.g:593:6: '.' { MATCHC('.'); if (HASEXCEPTION()) { goto ruleDOTEx; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto ruleDOTEx; /* Prevent compiler warnings */ ruleDOTEx: ; } // $ANTLR end DOT // Comes from: 594:6: ( '=' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start EQUAL * * Looks to match the characters the constitute the token EQUAL * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mEQUAL(pbelle_sdpLexer ctx) { ANTLR3_UINT32 _type; _type = EQUAL; // ../grammars/belle_sdp.g:594:6: ( '=' ) // ../grammars/belle_sdp.g:594:8: '=' { MATCHC('='); if (HASEXCEPTION()) { goto ruleEQUALEx; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto ruleEQUALEx; /* Prevent compiler warnings */ ruleEQUALEx: ; } // $ANTLR end EQUAL // Comes from: 595:6: ( ':' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start COLON * * Looks to match the characters the constitute the token COLON * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mCOLON(pbelle_sdpLexer ctx) { ANTLR3_UINT32 _type; _type = COLON; // ../grammars/belle_sdp.g:595:6: ( ':' ) // ../grammars/belle_sdp.g:595:8: ':' { MATCHC(':'); if (HASEXCEPTION()) { goto ruleCOLONEx; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto ruleCOLONEx; /* Prevent compiler warnings */ ruleCOLONEx: ; } // $ANTLR end COLON // Comes from: 596:6: ( '/' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start SLASH * * Looks to match the characters the constitute the token SLASH * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mSLASH(pbelle_sdpLexer ctx) { ANTLR3_UINT32 _type; _type = SLASH; // ../grammars/belle_sdp.g:596:6: ( '/' ) // ../grammars/belle_sdp.g:596:8: '/' { MATCHC('/'); if (HASEXCEPTION()) { goto ruleSLASHEx; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto ruleSLASHEx; /* Prevent compiler warnings */ ruleSLASHEx: ; } // $ANTLR end SLASH // Comes from: 597:5: ( '-' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start DASH * * Looks to match the characters the constitute the token DASH * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mDASH(pbelle_sdpLexer ctx) { ANTLR3_UINT32 _type; _type = DASH; // ../grammars/belle_sdp.g:597:5: ( '-' ) // ../grammars/belle_sdp.g:597:7: '-' { MATCHC('-'); if (HASEXCEPTION()) { goto ruleDASHEx; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto ruleDASHEx; /* Prevent compiler warnings */ ruleDASHEx: ; } // $ANTLR end DASH // Comes from: 598:6: ( ',' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start COMMA * * Looks to match the characters the constitute the token COMMA * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mCOMMA(pbelle_sdpLexer ctx) { ANTLR3_UINT32 _type; _type = COMMA; // ../grammars/belle_sdp.g:598:6: ( ',' ) // ../grammars/belle_sdp.g:598:8: ',' { MATCHC(','); if (HASEXCEPTION()) { goto ruleCOMMAEx; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto ruleCOMMAEx; /* Prevent compiler warnings */ ruleCOMMAEx: ; } // $ANTLR end COMMA // Comes from: 599:5: ( '*' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start STAR * * Looks to match the characters the constitute the token STAR * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mSTAR(pbelle_sdpLexer ctx) { ANTLR3_UINT32 _type; _type = STAR; // ../grammars/belle_sdp.g:599:5: ( '*' ) // ../grammars/belle_sdp.g:599:7: '*' { MATCHC('*'); if (HASEXCEPTION()) { goto ruleSTAREx; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto ruleSTAREx; /* Prevent compiler warnings */ ruleSTAREx: ; } // $ANTLR end STAR // Comes from: 600:7: ( . ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start OCTET * * Looks to match the characters the constitute the token OCTET * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mOCTET(pbelle_sdpLexer ctx) { ANTLR3_UINT32 _type; _type = OCTET; // ../grammars/belle_sdp.g:600:7: ( . ) // ../grammars/belle_sdp.g:600:9: . { MATCHANY(); if (HASEXCEPTION()) { goto ruleOCTETEx; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto ruleOCTETEx; /* Prevent compiler warnings */ ruleOCTETEx: ; } // $ANTLR end OCTET /** This is the entry point in to the lexer from an object that * wants to generate the next token, such as a pCOMMON_TOKEN_STREAM */ static void mTokens(pbelle_sdpLexer ctx) { { // ../grammars/belle_sdp.g:1:8: ( T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | DIGIT | COMMON_CHAR | HEX_CHAR | SPACE | LQUOTE | RQUOTE | CR | LF | DOT | EQUAL | COLON | SLASH | DASH | COMMA | STAR | OCTET ) ANTLR3_UINT32 alt1; alt1=30; { int LA1_0 = LA(1); if ( (LA1_0 == '!')) { alt1=1; } else if ( (LA1_0 == '#')) { alt1=2; } else if ( (LA1_0 == '$')) { alt1=3; } else if ( (LA1_0 == '%')) { alt1=4; } else if ( (LA1_0 == '&')) { alt1=5; } else if ( (LA1_0 == '+')) { alt1=6; } else if ( (LA1_0 == '\'')) { alt1=7; } else if ( (LA1_0 == '^')) { alt1=8; } else if ( (LA1_0 == '_')) { alt1=9; } else if ( (LA1_0 == '`')) { alt1=10; } else if ( (LA1_0 == '{')) { alt1=11; } else if ( (LA1_0 == '|')) { alt1=12; } else if ( (LA1_0 == '}')) { alt1=13; } else if ( (LA1_0 == '~')) { alt1=14; } else if ( (((LA1_0 >= '0') && (LA1_0 <= '9')))) { alt1=15; } else if ( (((LA1_0 >= 'G') && (LA1_0 <= 'Z')) || ((LA1_0 >= 'g') && (LA1_0 <= 'z')))) { alt1=16; } else if ( (((LA1_0 >= 'A') && (LA1_0 <= 'F')) || ((LA1_0 >= 'a') && (LA1_0 <= 'f')))) { alt1=17; } else if ( (LA1_0 == ' ')) { alt1=18; } else if ( (LA1_0 == '<')) { alt1=19; } else if ( (LA1_0 == '>')) { alt1=20; } else if ( (LA1_0 == '\r')) { alt1=21; } else if ( (LA1_0 == '\n')) { alt1=22; } else if ( (LA1_0 == '.')) { alt1=23; } else if ( (LA1_0 == '=')) { alt1=24; } else if ( (LA1_0 == ':')) { alt1=25; } else if ( (LA1_0 == '/')) { alt1=26; } else if ( (LA1_0 == '-')) { alt1=27; } else if ( (LA1_0 == ',')) { alt1=28; } else if ( (LA1_0 == '*')) { alt1=29; } else if ( (((LA1_0 >= 0x0000) && (LA1_0 <= '\t')) || ((LA1_0 >= 0x000B) && (LA1_0 <= '\f')) || ((LA1_0 >= 0x000E) && (LA1_0 <= 0x001F)) || LA1_0 == '"' || ((LA1_0 >= '(') && (LA1_0 <= ')')) || LA1_0 == ';' || ((LA1_0 >= '?') && (LA1_0 <= '@')) || ((LA1_0 >= '[') && (LA1_0 <= ']')) || ((LA1_0 >= 0x007F) && (LA1_0 <= 0xFFFF)))) { alt1=30; } else { CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 1; EXCEPTION->state = 0; goto ruleTokensEx; } } switch (alt1) { case 1: // ../grammars/belle_sdp.g:1:10: T__22 { /* 1:10: T__22 */ mT__22(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; case 2: // ../grammars/belle_sdp.g:1:16: T__23 { /* 1:16: T__23 */ mT__23(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; case 3: // ../grammars/belle_sdp.g:1:22: T__24 { /* 1:22: T__24 */ mT__24(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; case 4: // ../grammars/belle_sdp.g:1:28: T__25 { /* 1:28: T__25 */ mT__25(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; case 5: // ../grammars/belle_sdp.g:1:34: T__26 { /* 1:34: T__26 */ mT__26(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; case 6: // ../grammars/belle_sdp.g:1:40: T__27 { /* 1:40: T__27 */ mT__27(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; case 7: // ../grammars/belle_sdp.g:1:46: T__28 { /* 1:46: T__28 */ mT__28(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; case 8: // ../grammars/belle_sdp.g:1:52: T__29 { /* 1:52: T__29 */ mT__29(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; case 9: // ../grammars/belle_sdp.g:1:58: T__30 { /* 1:58: T__30 */ mT__30(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; case 10: // ../grammars/belle_sdp.g:1:64: T__31 { /* 1:64: T__31 */ mT__31(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; case 11: // ../grammars/belle_sdp.g:1:70: T__32 { /* 1:70: T__32 */ mT__32(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; case 12: // ../grammars/belle_sdp.g:1:76: T__33 { /* 1:76: T__33 */ mT__33(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; case 13: // ../grammars/belle_sdp.g:1:82: T__34 { /* 1:82: T__34 */ mT__34(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; case 14: // ../grammars/belle_sdp.g:1:88: T__35 { /* 1:88: T__35 */ mT__35(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; case 15: // ../grammars/belle_sdp.g:1:94: DIGIT { /* 1:94: DIGIT */ mDIGIT(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; case 16: // ../grammars/belle_sdp.g:1:100: COMMON_CHAR { /* 1:100: COMMON_CHAR */ mCOMMON_CHAR(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; case 17: // ../grammars/belle_sdp.g:1:112: HEX_CHAR { /* 1:112: HEX_CHAR */ mHEX_CHAR(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; case 18: // ../grammars/belle_sdp.g:1:121: SPACE { /* 1:121: SPACE */ mSPACE(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; case 19: // ../grammars/belle_sdp.g:1:127: LQUOTE { /* 1:127: LQUOTE */ mLQUOTE(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; case 20: // ../grammars/belle_sdp.g:1:134: RQUOTE { /* 1:134: RQUOTE */ mRQUOTE(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; case 21: // ../grammars/belle_sdp.g:1:141: CR { /* 1:141: CR */ mCR(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; case 22: // ../grammars/belle_sdp.g:1:144: LF { /* 1:144: LF */ mLF(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; case 23: // ../grammars/belle_sdp.g:1:147: DOT { /* 1:147: DOT */ mDOT(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; case 24: // ../grammars/belle_sdp.g:1:151: EQUAL { /* 1:151: EQUAL */ mEQUAL(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; case 25: // ../grammars/belle_sdp.g:1:157: COLON { /* 1:157: COLON */ mCOLON(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; case 26: // ../grammars/belle_sdp.g:1:163: SLASH { /* 1:163: SLASH */ mSLASH(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; case 27: // ../grammars/belle_sdp.g:1:169: DASH { /* 1:169: DASH */ mDASH(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; case 28: // ../grammars/belle_sdp.g:1:174: COMMA { /* 1:174: COMMA */ mCOMMA(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; case 29: // ../grammars/belle_sdp.g:1:180: STAR { /* 1:180: STAR */ mSTAR(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; case 30: // ../grammars/belle_sdp.g:1:185: OCTET { /* 1:185: OCTET */ mOCTET(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; } } goto ruleTokensEx; /* Prevent compiler warnings */ ruleTokensEx: ; } /* ========================================================================= * Lexer matching rules end. * ========================================================================= */ /* End of Lexer code * ================================================ * ================================================ */ /* End of code * ============================================================================= */ belle-sip-5.2.0+dfsg/src/grammars/belle_sdpLexer.h000066400000000000000000000303321434613136500220220ustar00rootroot00000000000000/** \file * This C header file was generated by $ANTLR version 3.4 * * - From the grammar source file : ../grammars/belle_sdp.g * - On : 2021-05-13 15:53:02 * - for the lexer : belle_sdpLexerLexer * * Editing it, at least manually, is not wise. * * C language generator and runtime by Jim Idle, jimi|hereisanat|idle|dotgoeshere|ws. * * * The lexer belle_sdpLexer has the callable functions (rules) shown below, * which will invoke the code for the associated rule in the source grammar * assuming that the input stream is pointing to a token/text stream that could begin * this rule. * * For instance if you call the first (topmost) rule in a parser grammar, you will * get the results of a full parse, but calling a rule half way through the grammar will * allow you to pass part of a full token stream to the parser, such as for syntax checking * in editors and so on. * * The parser entry points are called indirectly (by function pointer to function) via * a parser context typedef pbelle_sdpLexer, which is returned from a call to belle_sdpLexerNew(). * * As this is a generated lexer, it is unlikely you will call it 'manually'. However * the methods are provided anyway. * * The methods in pbelle_sdpLexer are as follows: * * - void pbelle_sdpLexer->T__22(pbelle_sdpLexer) * - void pbelle_sdpLexer->T__23(pbelle_sdpLexer) * - void pbelle_sdpLexer->T__24(pbelle_sdpLexer) * - void pbelle_sdpLexer->T__25(pbelle_sdpLexer) * - void pbelle_sdpLexer->T__26(pbelle_sdpLexer) * - void pbelle_sdpLexer->T__27(pbelle_sdpLexer) * - void pbelle_sdpLexer->T__28(pbelle_sdpLexer) * - void pbelle_sdpLexer->T__29(pbelle_sdpLexer) * - void pbelle_sdpLexer->T__30(pbelle_sdpLexer) * - void pbelle_sdpLexer->T__31(pbelle_sdpLexer) * - void pbelle_sdpLexer->T__32(pbelle_sdpLexer) * - void pbelle_sdpLexer->T__33(pbelle_sdpLexer) * - void pbelle_sdpLexer->T__34(pbelle_sdpLexer) * - void pbelle_sdpLexer->T__35(pbelle_sdpLexer) * - void pbelle_sdpLexer->DIGIT(pbelle_sdpLexer) * - void pbelle_sdpLexer->ZERO(pbelle_sdpLexer) * - void pbelle_sdpLexer->POS_DIGIT(pbelle_sdpLexer) * - void pbelle_sdpLexer->COMMON_CHAR(pbelle_sdpLexer) * - void pbelle_sdpLexer->HEX_CHAR(pbelle_sdpLexer) * - void pbelle_sdpLexer->SPACE(pbelle_sdpLexer) * - void pbelle_sdpLexer->LQUOTE(pbelle_sdpLexer) * - void pbelle_sdpLexer->RQUOTE(pbelle_sdpLexer) * - void pbelle_sdpLexer->CR(pbelle_sdpLexer) * - void pbelle_sdpLexer->LF(pbelle_sdpLexer) * - void pbelle_sdpLexer->DOT(pbelle_sdpLexer) * - void pbelle_sdpLexer->EQUAL(pbelle_sdpLexer) * - void pbelle_sdpLexer->COLON(pbelle_sdpLexer) * - void pbelle_sdpLexer->SLASH(pbelle_sdpLexer) * - void pbelle_sdpLexer->DASH(pbelle_sdpLexer) * - void pbelle_sdpLexer->COMMA(pbelle_sdpLexer) * - void pbelle_sdpLexer->STAR(pbelle_sdpLexer) * - void pbelle_sdpLexer->OCTET(pbelle_sdpLexer) * - void pbelle_sdpLexer->Tokens(pbelle_sdpLexer) * * The return type for any particular rule is of course determined by the source * grammar file. */ // [The "BSD license"] // Copyright (c) 2005-2009 Jim Idle, Temporal Wave LLC // http://www.temporal-wave.com // http://www.linkedin.com/in/jimidle // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // 1. Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // 2. Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // 3. The name of the author may not be used to endorse or promote products // derived from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR // IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES // OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT // NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF // THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef _belle_sdpLexer_H #define _belle_sdpLexer_H /* ============================================================================= * Standard antlr3 C runtime definitions */ #include /* End of standard antlr 3 runtime definitions * ============================================================================= */ #ifdef __cplusplus extern "C" { #endif // Forward declare the context typedef so that we can use it before it is // properly defined. Delegators and delegates (from import statements) are // interdependent and their context structures contain pointers to each other // C only allows such things to be declared if you pre-declare the typedef. // typedef struct belle_sdpLexer_Ctx_struct belle_sdpLexer, * pbelle_sdpLexer; /* belle-sip - SIP (RFC3261) library. Copyright (C) 2010 Belledonne Communications SARL This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #pragma GCC diagnostic ignored "-Wparentheses" #pragma GCC diagnostic ignored "-Wunused" #ifdef __clang__ #pragma GCC diagnostic ignored "-Wtautological-compare" #endif #ifndef __clang__ #pragma GCC diagnostic ignored "-Wunused-variable" #endif #ifdef ANTLR3_WINDOWS // Disable: Unreferenced parameter, - Rules with parameters that are not used // constant conditional, - ANTLR realizes that a prediction is always true (synpred usually) // initialized but unused variable - tree rewrite variables declared but not needed // Unreferenced local variable - lexer rule declares but does not always use _type // potentially unitialized variable used - retval always returned from a rule // unreferenced local function has been removed - susually getTokenNames or freeScope, they can go without warnigns // // These are only really displayed at warning level /W4 but that is the code ideal I am aiming at // and the codegen must generate some of these warnings by necessity, apart from 4100, which is // usually generated when a parser rule is given a parameter that it does not use. Mostly though // this is a matter of orthogonality hence I disable that one. // #pragma warning( disable : 4100 ) #pragma warning( disable : 4101 ) #pragma warning( disable : 4127 ) #pragma warning( disable : 4189 ) #pragma warning( disable : 4505 ) #pragma warning( disable : 4701 ) #endif /** Context tracking structure for belle_sdpLexer */ struct belle_sdpLexer_Ctx_struct { /** Built in ANTLR3 context tracker contains all the generic elements * required for context tracking. */ pANTLR3_LEXER pLexer; void (*mT__22) (struct belle_sdpLexer_Ctx_struct * ctx); void (*mT__23) (struct belle_sdpLexer_Ctx_struct * ctx); void (*mT__24) (struct belle_sdpLexer_Ctx_struct * ctx); void (*mT__25) (struct belle_sdpLexer_Ctx_struct * ctx); void (*mT__26) (struct belle_sdpLexer_Ctx_struct * ctx); void (*mT__27) (struct belle_sdpLexer_Ctx_struct * ctx); void (*mT__28) (struct belle_sdpLexer_Ctx_struct * ctx); void (*mT__29) (struct belle_sdpLexer_Ctx_struct * ctx); void (*mT__30) (struct belle_sdpLexer_Ctx_struct * ctx); void (*mT__31) (struct belle_sdpLexer_Ctx_struct * ctx); void (*mT__32) (struct belle_sdpLexer_Ctx_struct * ctx); void (*mT__33) (struct belle_sdpLexer_Ctx_struct * ctx); void (*mT__34) (struct belle_sdpLexer_Ctx_struct * ctx); void (*mT__35) (struct belle_sdpLexer_Ctx_struct * ctx); void (*mDIGIT) (struct belle_sdpLexer_Ctx_struct * ctx); void (*mZERO) (struct belle_sdpLexer_Ctx_struct * ctx); void (*mPOS_DIGIT) (struct belle_sdpLexer_Ctx_struct * ctx); void (*mCOMMON_CHAR) (struct belle_sdpLexer_Ctx_struct * ctx); void (*mHEX_CHAR) (struct belle_sdpLexer_Ctx_struct * ctx); void (*mSPACE) (struct belle_sdpLexer_Ctx_struct * ctx); void (*mLQUOTE) (struct belle_sdpLexer_Ctx_struct * ctx); void (*mRQUOTE) (struct belle_sdpLexer_Ctx_struct * ctx); void (*mCR) (struct belle_sdpLexer_Ctx_struct * ctx); void (*mLF) (struct belle_sdpLexer_Ctx_struct * ctx); void (*mDOT) (struct belle_sdpLexer_Ctx_struct * ctx); void (*mEQUAL) (struct belle_sdpLexer_Ctx_struct * ctx); void (*mCOLON) (struct belle_sdpLexer_Ctx_struct * ctx); void (*mSLASH) (struct belle_sdpLexer_Ctx_struct * ctx); void (*mDASH) (struct belle_sdpLexer_Ctx_struct * ctx); void (*mCOMMA) (struct belle_sdpLexer_Ctx_struct * ctx); void (*mSTAR) (struct belle_sdpLexer_Ctx_struct * ctx); void (*mOCTET) (struct belle_sdpLexer_Ctx_struct * ctx); void (*mTokens) (struct belle_sdpLexer_Ctx_struct * ctx); const char * (*getGrammarFileName)(); void (*reset) (struct belle_sdpLexer_Ctx_struct * ctx); void (*free) (struct belle_sdpLexer_Ctx_struct * ctx); }; // Function protoypes for the constructor functions that external translation units // such as delegators and delegates may wish to call. // ANTLR3_API pbelle_sdpLexer belle_sdpLexerNew ( pANTLR3_INPUT_STREAM instream); ANTLR3_API pbelle_sdpLexer belle_sdpLexerNewSSD ( pANTLR3_INPUT_STREAM instream, pANTLR3_RECOGNIZER_SHARED_STATE state); /** Symbolic definitions of all the tokens that the lexer will work with. * \{ * * Antlr will define EOF, but we can't use that as it it is too common in * in C header files and that would be confusing. There is no way to filter this out at the moment * so we just undef it here for now. That isn't the value we get back from C recognizers * anyway. We are looking for ANTLR3_TOKEN_EOF. */ #ifdef EOF #undef EOF #endif #ifdef Tokens #undef Tokens #endif #define EOF -1 #define T__22 22 #define T__23 23 #define T__24 24 #define T__25 25 #define T__26 26 #define T__27 27 #define T__28 28 #define T__29 29 #define T__30 30 #define T__31 31 #define T__32 32 #define T__33 33 #define T__34 34 #define T__35 35 #define COLON 4 #define COMMA 5 #define COMMON_CHAR 6 #define CR 7 #define DASH 8 #define DIGIT 9 #define DOT 10 #define EQUAL 11 #define HEX_CHAR 12 #define LF 13 #define LQUOTE 14 #define OCTET 15 #define POS_DIGIT 16 #define RQUOTE 17 #define SLASH 18 #define SPACE 19 #define STAR 20 #define ZERO 21 #ifdef EOF #undef EOF #define EOF ANTLR3_TOKEN_EOF #endif #ifndef TOKENSOURCE #define TOKENSOURCE(lxr) lxr->pLexer->rec->state->tokSource #endif /* End of token definitions for belle_sdpLexer * ============================================================================= */ /** } */ #ifdef __cplusplus } #endif #endif /* END - Note:Keep extra line feed to satisfy UNIX systems */ belle-sip-5.2.0+dfsg/src/grammars/belle_sdpParser.c000066400000000000000000037370431434613136500222120ustar00rootroot00000000000000/** \file * This C source file was generated by $ANTLR version 3.4 * * - From the grammar source file : ../grammars/belle_sdp.g * - On : 2021-05-13 15:53:02 * - for the parser : belle_sdpParserParser * * Editing it, at least manually, is not wise. * * C language generator and runtime by Jim Idle, jimi|hereisanat|idle|dotgoeshere|ws. * * */ // [The "BSD license"] // Copyright (c) 2005-2009 Jim Idle, Temporal Wave LLC // http://www.temporal-wave.com // http://www.linkedin.com/in/jimidle // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // 1. Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // 2. Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // 3. The name of the author may not be used to endorse or promote products // derived from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR // IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES // OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT // NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF // THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /* ============================================================================= * This is what the grammar programmer asked us to put at the top of every file. */ /* belle-sip - SIP (RFC3261) library. Copyright (C) 2010 Belledonne Communications SARL This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #pragma GCC diagnostic ignored "-Wparentheses" #pragma GCC diagnostic ignored "-Wunused" #ifndef __clang__ #pragma GCC diagnostic ignored "-Wunused-but-set-variable" #pragma GCC diagnostic ignored "-Wunused-variable" #pragma GCC diagnostic ignored "-Wunused-function" #endif /* End of Header action. * ============================================================================= */ /* ----------------------------------------- * Include the ANTLR3 generated header file. */ #include "belle_sdpParser.h" /* ----------------------------------------- */ /* MACROS that hide the C interface implementations from the * generated code, which makes it a little more understandable to the human eye. * I am very much against using C pre-processor macros for function calls and bits * of code as you cannot see what is happening when single stepping in debuggers * and so on. The exception (in my book at least) is for generated code, where you are * not maintaining it, but may wish to read and understand it. If you single step it, you know that input() * hides some indirect calls, but is always referring to the input stream. This is * probably more readable than ctx->input->istream->input(snarfle0->blarg) and allows me to rejig * the runtime interfaces without changing the generated code too often, without * confusing the reader of the generated output, who may not wish to know the gory * details of the interface inheritance. */ #define CTX ctx /* Aids in accessing scopes for grammar programmers */ #undef SCOPE_TYPE #undef SCOPE_STACK #undef SCOPE_TOP #define SCOPE_TYPE(scope) pbelle_sdpParser_##scope##_SCOPE #define SCOPE_STACK(scope) pbelle_sdpParser_##scope##Stack #define SCOPE_TOP(scope) ctx->pbelle_sdpParser_##scope##Top #define SCOPE_SIZE(scope) ctx->pbelle_sdpParser_##scope##Stack_limit #define SCOPE_INSTANCE(scope, i) (ctx->SCOPE_STACK(scope)->get(ctx->SCOPE_STACK(scope),i)) /* Macros for accessing things in the parser */ #undef PARSER #undef RECOGNIZER #undef HAVEPARSEDRULE #undef MEMOIZE #undef INPUT #undef STRSTREAM #undef HASEXCEPTION #undef EXCEPTION #undef MATCHT #undef MATCHANYT #undef FOLLOWSTACK #undef FOLLOWPUSH #undef FOLLOWPOP #undef PRECOVER #undef PREPORTERROR #undef LA #undef LT #undef CONSTRUCTEX #undef CONSUME #undef MARK #undef REWIND #undef REWINDLAST #undef PERRORRECOVERY #undef HASFAILED #undef FAILEDFLAG #undef RECOVERFROMMISMATCHEDSET #undef RECOVERFROMMISMATCHEDELEMENT #undef INDEX #undef ADAPTOR #undef SEEK #undef RULEMEMO #undef DBG #define PARSER ctx->pParser #define RECOGNIZER PARSER->rec #define PSRSTATE RECOGNIZER->state #define HAVEPARSEDRULE(r) RECOGNIZER->alreadyParsedRule(RECOGNIZER, r) #define MEMOIZE(ri,si) RECOGNIZER->memoize(RECOGNIZER, ri, si) #define INPUT PARSER->tstream #define STRSTREAM INPUT #define ISTREAM INPUT->istream #define INDEX() ISTREAM->index(INPUT->istream) #define HASEXCEPTION() (PSRSTATE->error == ANTLR3_TRUE) #define EXCEPTION PSRSTATE->exception #define MATCHT(t, fs) RECOGNIZER->match(RECOGNIZER, t, fs) #define MATCHANYT() RECOGNIZER->matchAny(RECOGNIZER) #define FOLLOWSTACK PSRSTATE->following #ifdef SKIP_FOLLOW_SETS #define FOLLOWPUSH(x) #define FOLLOWPOP() #else #define FOLLOWPUSH(x) FOLLOWSTACK->push(FOLLOWSTACK, ((void *)(&(x))), NULL) #define FOLLOWPOP() FOLLOWSTACK->pop(FOLLOWSTACK) #endif #define PRECOVER() RECOGNIZER->recover(RECOGNIZER) #define PREPORTERROR() RECOGNIZER->reportError(RECOGNIZER) #define LA(n) INPUT->istream->_LA(ISTREAM, n) #define LT(n) INPUT->_LT(INPUT, n) #define CONSTRUCTEX() RECOGNIZER->exConstruct(RECOGNIZER) #define CONSUME() ISTREAM->consume(ISTREAM) #define MARK() ISTREAM->mark(ISTREAM) #define REWIND(m) ISTREAM->rewind(ISTREAM, m) #define REWINDLAST() ISTREAM->rewindLast(ISTREAM) #define SEEK(n) ISTREAM->seek(ISTREAM, n) #define PERRORRECOVERY PSRSTATE->errorRecovery #define FAILEDFLAG PSRSTATE->failed #define HASFAILED() (FAILEDFLAG == ANTLR3_TRUE) #define BACKTRACKING PSRSTATE->backtracking #define RECOVERFROMMISMATCHEDSET(s) RECOGNIZER->recoverFromMismatchedSet(RECOGNIZER, s) #define RECOVERFROMMISMATCHEDELEMENT(e) RECOGNIZER->recoverFromMismatchedElement(RECOGNIZER, s) #define ADAPTOR ctx->adaptor #define RULEMEMO PSRSTATE->ruleMemo #define DBG RECOGNIZER->debugger #define TOKTEXT(tok, txt) tok, (pANTLR3_UINT8)txt /* The 4 tokens defined below may well clash with your own #defines or token types. If so * then for the present you must use different names for your defines as these are hard coded * in the code generator. It would be better not to use such names internally, and maybe * we can change this in a forthcoming release. I deliberately do not #undef these * here as this will at least give you a redefined error somewhere if they clash. */ #define UP ANTLR3_TOKEN_UP #define DOWN ANTLR3_TOKEN_DOWN #define EOR ANTLR3_TOKEN_EOR #define INVALID ANTLR3_TOKEN_INVALID /* ============================================================================= * Functions to create and destroy scopes. First come the rule scopes, followed * by the global declared scopes. */ /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sdpParser_session_description scope set */ static pbelle_sdpParser_session_description_SCOPE pbelle_sdpParser_session_descriptionPush(pbelle_sdpParser ctx); static void ANTLR3_CDECL session_descriptionFree(pbelle_sdpParser_session_description_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL session_descriptionFree(pbelle_sdpParser_session_description_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sdpParser session_description scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sdpParser_session_descriptionTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sdpParser_session_description_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sdpParser_session_description_SCOPE pbelle_sdpParser_session_descriptionPush(pbelle_sdpParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sdpParser_session_description_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sdpParser_session_descriptionStack->size(ctx->pbelle_sdpParser_session_descriptionStack) > ctx->pbelle_sdpParser_session_descriptionStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sdpParser_session_description_SCOPE)ctx->pbelle_sdpParser_session_descriptionStack->get(ctx->pbelle_sdpParser_session_descriptionStack, ctx->pbelle_sdpParser_session_descriptionStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sdpParser_session_description_SCOPE) ANTLR3_MALLOC(sizeof(belle_sdpParser_session_description_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sdpParser_session_descriptionStack->push(ctx->pbelle_sdpParser_session_descriptionStack, newAttributes, (void (*)(void *))session_descriptionFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sdpParser_session_descriptionStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sdpParser_origin scope set */ static pbelle_sdpParser_origin_SCOPE pbelle_sdpParser_originPush(pbelle_sdpParser ctx); static void ANTLR3_CDECL originFree(pbelle_sdpParser_origin_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL originFree(pbelle_sdpParser_origin_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sdpParser origin scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sdpParser_originTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sdpParser_origin_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sdpParser_origin_SCOPE pbelle_sdpParser_originPush(pbelle_sdpParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sdpParser_origin_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sdpParser_originStack->size(ctx->pbelle_sdpParser_originStack) > ctx->pbelle_sdpParser_originStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sdpParser_origin_SCOPE)ctx->pbelle_sdpParser_originStack->get(ctx->pbelle_sdpParser_originStack, ctx->pbelle_sdpParser_originStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sdpParser_origin_SCOPE) ANTLR3_MALLOC(sizeof(belle_sdpParser_origin_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sdpParser_originStack->push(ctx->pbelle_sdpParser_originStack, newAttributes, (void (*)(void *))originFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sdpParser_originStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sdpParser_info scope set */ static pbelle_sdpParser_info_SCOPE pbelle_sdpParser_infoPush(pbelle_sdpParser ctx); static void ANTLR3_CDECL infoFree(pbelle_sdpParser_info_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL infoFree(pbelle_sdpParser_info_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sdpParser info scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sdpParser_infoTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sdpParser_info_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sdpParser_info_SCOPE pbelle_sdpParser_infoPush(pbelle_sdpParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sdpParser_info_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sdpParser_infoStack->size(ctx->pbelle_sdpParser_infoStack) > ctx->pbelle_sdpParser_infoStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sdpParser_info_SCOPE)ctx->pbelle_sdpParser_infoStack->get(ctx->pbelle_sdpParser_infoStack, ctx->pbelle_sdpParser_infoStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sdpParser_info_SCOPE) ANTLR3_MALLOC(sizeof(belle_sdpParser_info_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sdpParser_infoStack->push(ctx->pbelle_sdpParser_infoStack, newAttributes, (void (*)(void *))infoFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sdpParser_infoStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sdpParser_email scope set */ static pbelle_sdpParser_email_SCOPE pbelle_sdpParser_emailPush(pbelle_sdpParser ctx); static void ANTLR3_CDECL emailFree(pbelle_sdpParser_email_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL emailFree(pbelle_sdpParser_email_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sdpParser email scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sdpParser_emailTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sdpParser_email_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sdpParser_email_SCOPE pbelle_sdpParser_emailPush(pbelle_sdpParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sdpParser_email_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sdpParser_emailStack->size(ctx->pbelle_sdpParser_emailStack) > ctx->pbelle_sdpParser_emailStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sdpParser_email_SCOPE)ctx->pbelle_sdpParser_emailStack->get(ctx->pbelle_sdpParser_emailStack, ctx->pbelle_sdpParser_emailStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sdpParser_email_SCOPE) ANTLR3_MALLOC(sizeof(belle_sdpParser_email_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sdpParser_emailStack->push(ctx->pbelle_sdpParser_emailStack, newAttributes, (void (*)(void *))emailFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sdpParser_emailStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sdpParser_connection scope set */ static pbelle_sdpParser_connection_SCOPE pbelle_sdpParser_connectionPush(pbelle_sdpParser ctx); static void ANTLR3_CDECL connectionFree(pbelle_sdpParser_connection_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL connectionFree(pbelle_sdpParser_connection_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sdpParser connection scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sdpParser_connectionTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sdpParser_connection_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sdpParser_connection_SCOPE pbelle_sdpParser_connectionPush(pbelle_sdpParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sdpParser_connection_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sdpParser_connectionStack->size(ctx->pbelle_sdpParser_connectionStack) > ctx->pbelle_sdpParser_connectionStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sdpParser_connection_SCOPE)ctx->pbelle_sdpParser_connectionStack->get(ctx->pbelle_sdpParser_connectionStack, ctx->pbelle_sdpParser_connectionStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sdpParser_connection_SCOPE) ANTLR3_MALLOC(sizeof(belle_sdpParser_connection_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sdpParser_connectionStack->push(ctx->pbelle_sdpParser_connectionStack, newAttributes, (void (*)(void *))connectionFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sdpParser_connectionStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sdpParser_bandwidth scope set */ static pbelle_sdpParser_bandwidth_SCOPE pbelle_sdpParser_bandwidthPush(pbelle_sdpParser ctx); static void ANTLR3_CDECL bandwidthFree(pbelle_sdpParser_bandwidth_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL bandwidthFree(pbelle_sdpParser_bandwidth_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sdpParser bandwidth scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sdpParser_bandwidthTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sdpParser_bandwidth_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sdpParser_bandwidth_SCOPE pbelle_sdpParser_bandwidthPush(pbelle_sdpParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sdpParser_bandwidth_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sdpParser_bandwidthStack->size(ctx->pbelle_sdpParser_bandwidthStack) > ctx->pbelle_sdpParser_bandwidthStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sdpParser_bandwidth_SCOPE)ctx->pbelle_sdpParser_bandwidthStack->get(ctx->pbelle_sdpParser_bandwidthStack, ctx->pbelle_sdpParser_bandwidthStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sdpParser_bandwidth_SCOPE) ANTLR3_MALLOC(sizeof(belle_sdpParser_bandwidth_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sdpParser_bandwidthStack->push(ctx->pbelle_sdpParser_bandwidthStack, newAttributes, (void (*)(void *))bandwidthFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sdpParser_bandwidthStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sdpParser_attribute scope set */ static pbelle_sdpParser_attribute_SCOPE pbelle_sdpParser_attributePush(pbelle_sdpParser ctx); static void ANTLR3_CDECL attributeFree(pbelle_sdpParser_attribute_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL attributeFree(pbelle_sdpParser_attribute_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sdpParser attribute scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sdpParser_attributeTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sdpParser_attribute_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sdpParser_attribute_SCOPE pbelle_sdpParser_attributePush(pbelle_sdpParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sdpParser_attribute_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sdpParser_attributeStack->size(ctx->pbelle_sdpParser_attributeStack) > ctx->pbelle_sdpParser_attributeStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sdpParser_attribute_SCOPE)ctx->pbelle_sdpParser_attributeStack->get(ctx->pbelle_sdpParser_attributeStack, ctx->pbelle_sdpParser_attributeStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sdpParser_attribute_SCOPE) ANTLR3_MALLOC(sizeof(belle_sdpParser_attribute_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sdpParser_attributeStack->push(ctx->pbelle_sdpParser_attributeStack, newAttributes, (void (*)(void *))attributeFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sdpParser_attributeStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sdpParser_rtcp_xr_attribute scope set */ static pbelle_sdpParser_rtcp_xr_attribute_SCOPE pbelle_sdpParser_rtcp_xr_attributePush(pbelle_sdpParser ctx); static void ANTLR3_CDECL rtcp_xr_attributeFree(pbelle_sdpParser_rtcp_xr_attribute_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL rtcp_xr_attributeFree(pbelle_sdpParser_rtcp_xr_attribute_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sdpParser rtcp_xr_attribute scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sdpParser_rtcp_xr_attributeTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sdpParser_rtcp_xr_attribute_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sdpParser_rtcp_xr_attribute_SCOPE pbelle_sdpParser_rtcp_xr_attributePush(pbelle_sdpParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sdpParser_rtcp_xr_attribute_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sdpParser_rtcp_xr_attributeStack->size(ctx->pbelle_sdpParser_rtcp_xr_attributeStack) > ctx->pbelle_sdpParser_rtcp_xr_attributeStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sdpParser_rtcp_xr_attribute_SCOPE)ctx->pbelle_sdpParser_rtcp_xr_attributeStack->get(ctx->pbelle_sdpParser_rtcp_xr_attributeStack, ctx->pbelle_sdpParser_rtcp_xr_attributeStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sdpParser_rtcp_xr_attribute_SCOPE) ANTLR3_MALLOC(sizeof(belle_sdpParser_rtcp_xr_attribute_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sdpParser_rtcp_xr_attributeStack->push(ctx->pbelle_sdpParser_rtcp_xr_attributeStack, newAttributes, (void (*)(void *))rtcp_xr_attributeFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sdpParser_rtcp_xr_attributeStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sdpParser_rtcp_fb_attribute scope set */ static pbelle_sdpParser_rtcp_fb_attribute_SCOPE pbelle_sdpParser_rtcp_fb_attributePush(pbelle_sdpParser ctx); static void ANTLR3_CDECL rtcp_fb_attributeFree(pbelle_sdpParser_rtcp_fb_attribute_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL rtcp_fb_attributeFree(pbelle_sdpParser_rtcp_fb_attribute_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sdpParser rtcp_fb_attribute scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sdpParser_rtcp_fb_attributeTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sdpParser_rtcp_fb_attribute_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sdpParser_rtcp_fb_attribute_SCOPE pbelle_sdpParser_rtcp_fb_attributePush(pbelle_sdpParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sdpParser_rtcp_fb_attribute_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sdpParser_rtcp_fb_attributeStack->size(ctx->pbelle_sdpParser_rtcp_fb_attributeStack) > ctx->pbelle_sdpParser_rtcp_fb_attributeStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sdpParser_rtcp_fb_attribute_SCOPE)ctx->pbelle_sdpParser_rtcp_fb_attributeStack->get(ctx->pbelle_sdpParser_rtcp_fb_attributeStack, ctx->pbelle_sdpParser_rtcp_fb_attributeStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sdpParser_rtcp_fb_attribute_SCOPE) ANTLR3_MALLOC(sizeof(belle_sdpParser_rtcp_fb_attribute_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sdpParser_rtcp_fb_attributeStack->push(ctx->pbelle_sdpParser_rtcp_fb_attributeStack, newAttributes, (void (*)(void *))rtcp_fb_attributeFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sdpParser_rtcp_fb_attributeStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sdpParser_media_description scope set */ static pbelle_sdpParser_media_description_SCOPE pbelle_sdpParser_media_descriptionPush(pbelle_sdpParser ctx); static void ANTLR3_CDECL media_descriptionFree(pbelle_sdpParser_media_description_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL media_descriptionFree(pbelle_sdpParser_media_description_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sdpParser media_description scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sdpParser_media_descriptionTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sdpParser_media_description_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sdpParser_media_description_SCOPE pbelle_sdpParser_media_descriptionPush(pbelle_sdpParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sdpParser_media_description_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sdpParser_media_descriptionStack->size(ctx->pbelle_sdpParser_media_descriptionStack) > ctx->pbelle_sdpParser_media_descriptionStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sdpParser_media_description_SCOPE)ctx->pbelle_sdpParser_media_descriptionStack->get(ctx->pbelle_sdpParser_media_descriptionStack, ctx->pbelle_sdpParser_media_descriptionStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sdpParser_media_description_SCOPE) ANTLR3_MALLOC(sizeof(belle_sdpParser_media_description_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sdpParser_media_descriptionStack->push(ctx->pbelle_sdpParser_media_descriptionStack, newAttributes, (void (*)(void *))media_descriptionFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sdpParser_media_descriptionStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sdpParser_media scope set */ static pbelle_sdpParser_media_SCOPE pbelle_sdpParser_mediaPush(pbelle_sdpParser ctx); static void ANTLR3_CDECL mediaFree(pbelle_sdpParser_media_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL mediaFree(pbelle_sdpParser_media_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sdpParser media scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sdpParser_mediaTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sdpParser_media_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sdpParser_media_SCOPE pbelle_sdpParser_mediaPush(pbelle_sdpParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sdpParser_media_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sdpParser_mediaStack->size(ctx->pbelle_sdpParser_mediaStack) > ctx->pbelle_sdpParser_mediaStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sdpParser_media_SCOPE)ctx->pbelle_sdpParser_mediaStack->get(ctx->pbelle_sdpParser_mediaStack, ctx->pbelle_sdpParser_mediaStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sdpParser_media_SCOPE) ANTLR3_MALLOC(sizeof(belle_sdpParser_media_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sdpParser_mediaStack->push(ctx->pbelle_sdpParser_mediaStack, newAttributes, (void (*)(void *))mediaFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sdpParser_mediaStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sdpParser_fmt scope set */ static pbelle_sdpParser_fmt_SCOPE pbelle_sdpParser_fmtPush(pbelle_sdpParser ctx); static void ANTLR3_CDECL fmtFree(pbelle_sdpParser_fmt_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL fmtFree(pbelle_sdpParser_fmt_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sdpParser fmt scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sdpParser_fmtTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sdpParser_fmt_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sdpParser_fmt_SCOPE pbelle_sdpParser_fmtPush(pbelle_sdpParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sdpParser_fmt_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sdpParser_fmtStack->size(ctx->pbelle_sdpParser_fmtStack) > ctx->pbelle_sdpParser_fmtStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sdpParser_fmt_SCOPE)ctx->pbelle_sdpParser_fmtStack->get(ctx->pbelle_sdpParser_fmtStack, ctx->pbelle_sdpParser_fmtStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sdpParser_fmt_SCOPE) ANTLR3_MALLOC(sizeof(belle_sdpParser_fmt_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sdpParser_fmtStack->push(ctx->pbelle_sdpParser_fmtStack, newAttributes, (void (*)(void *))fmtFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sdpParser_fmtStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ============================================================================= */ /* ============================================================================= * Start of recognizer */ /** \brief Table of all token names in symbolic order, mainly used for * error reporting. */ pANTLR3_UINT8 belle_sdpParserTokenNames[32+4] = { (pANTLR3_UINT8) "", /* String to print to indicate an invalid token */ (pANTLR3_UINT8) "", (pANTLR3_UINT8) "", (pANTLR3_UINT8) "", (pANTLR3_UINT8) "COLON", (pANTLR3_UINT8) "COMMA", (pANTLR3_UINT8) "COMMON_CHAR", (pANTLR3_UINT8) "CR", (pANTLR3_UINT8) "DASH", (pANTLR3_UINT8) "DIGIT", (pANTLR3_UINT8) "DOT", (pANTLR3_UINT8) "EQUAL", (pANTLR3_UINT8) "HEX_CHAR", (pANTLR3_UINT8) "LF", (pANTLR3_UINT8) "LQUOTE", (pANTLR3_UINT8) "OCTET", (pANTLR3_UINT8) "POS_DIGIT", (pANTLR3_UINT8) "RQUOTE", (pANTLR3_UINT8) "SLASH", (pANTLR3_UINT8) "SPACE", (pANTLR3_UINT8) "STAR", (pANTLR3_UINT8) "ZERO", (pANTLR3_UINT8) "'!'", (pANTLR3_UINT8) "'#'", (pANTLR3_UINT8) "'$'", (pANTLR3_UINT8) "'%'", (pANTLR3_UINT8) "'&'", (pANTLR3_UINT8) "'+'", (pANTLR3_UINT8) "'\\''", (pANTLR3_UINT8) "'^'", (pANTLR3_UINT8) "'_'", (pANTLR3_UINT8) "'`'", (pANTLR3_UINT8) "'{'", (pANTLR3_UINT8) "'|'", (pANTLR3_UINT8) "'}'", (pANTLR3_UINT8) "'~'" }; /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sdpParser_session_descriptionStack */ void pbelle_sdpParser_session_descriptionPop(pbelle_sdpParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(session_description)->free != NULL) { SCOPE_TOP(session_description)->free(SCOPE_TOP(session_description)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sdpParser_session_descriptionStack_limit--; SCOPE_TOP(session_description) = (pbelle_sdpParser_session_description_SCOPE)(ctx->pbelle_sdpParser_session_descriptionStack->get(ctx->pbelle_sdpParser_session_descriptionStack, ctx->pbelle_sdpParser_session_descriptionStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sdpParser_originStack */ void pbelle_sdpParser_originPop(pbelle_sdpParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(origin)->free != NULL) { SCOPE_TOP(origin)->free(SCOPE_TOP(origin)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sdpParser_originStack_limit--; SCOPE_TOP(origin) = (pbelle_sdpParser_origin_SCOPE)(ctx->pbelle_sdpParser_originStack->get(ctx->pbelle_sdpParser_originStack, ctx->pbelle_sdpParser_originStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sdpParser_infoStack */ void pbelle_sdpParser_infoPop(pbelle_sdpParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(info)->free != NULL) { SCOPE_TOP(info)->free(SCOPE_TOP(info)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sdpParser_infoStack_limit--; SCOPE_TOP(info) = (pbelle_sdpParser_info_SCOPE)(ctx->pbelle_sdpParser_infoStack->get(ctx->pbelle_sdpParser_infoStack, ctx->pbelle_sdpParser_infoStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sdpParser_emailStack */ void pbelle_sdpParser_emailPop(pbelle_sdpParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(email)->free != NULL) { SCOPE_TOP(email)->free(SCOPE_TOP(email)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sdpParser_emailStack_limit--; SCOPE_TOP(email) = (pbelle_sdpParser_email_SCOPE)(ctx->pbelle_sdpParser_emailStack->get(ctx->pbelle_sdpParser_emailStack, ctx->pbelle_sdpParser_emailStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sdpParser_connectionStack */ void pbelle_sdpParser_connectionPop(pbelle_sdpParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(connection)->free != NULL) { SCOPE_TOP(connection)->free(SCOPE_TOP(connection)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sdpParser_connectionStack_limit--; SCOPE_TOP(connection) = (pbelle_sdpParser_connection_SCOPE)(ctx->pbelle_sdpParser_connectionStack->get(ctx->pbelle_sdpParser_connectionStack, ctx->pbelle_sdpParser_connectionStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sdpParser_bandwidthStack */ void pbelle_sdpParser_bandwidthPop(pbelle_sdpParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(bandwidth)->free != NULL) { SCOPE_TOP(bandwidth)->free(SCOPE_TOP(bandwidth)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sdpParser_bandwidthStack_limit--; SCOPE_TOP(bandwidth) = (pbelle_sdpParser_bandwidth_SCOPE)(ctx->pbelle_sdpParser_bandwidthStack->get(ctx->pbelle_sdpParser_bandwidthStack, ctx->pbelle_sdpParser_bandwidthStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sdpParser_attributeStack */ void pbelle_sdpParser_attributePop(pbelle_sdpParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(attribute)->free != NULL) { SCOPE_TOP(attribute)->free(SCOPE_TOP(attribute)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sdpParser_attributeStack_limit--; SCOPE_TOP(attribute) = (pbelle_sdpParser_attribute_SCOPE)(ctx->pbelle_sdpParser_attributeStack->get(ctx->pbelle_sdpParser_attributeStack, ctx->pbelle_sdpParser_attributeStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sdpParser_rtcp_xr_attributeStack */ void pbelle_sdpParser_rtcp_xr_attributePop(pbelle_sdpParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(rtcp_xr_attribute)->free != NULL) { SCOPE_TOP(rtcp_xr_attribute)->free(SCOPE_TOP(rtcp_xr_attribute)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sdpParser_rtcp_xr_attributeStack_limit--; SCOPE_TOP(rtcp_xr_attribute) = (pbelle_sdpParser_rtcp_xr_attribute_SCOPE)(ctx->pbelle_sdpParser_rtcp_xr_attributeStack->get(ctx->pbelle_sdpParser_rtcp_xr_attributeStack, ctx->pbelle_sdpParser_rtcp_xr_attributeStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sdpParser_rtcp_fb_attributeStack */ void pbelle_sdpParser_rtcp_fb_attributePop(pbelle_sdpParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(rtcp_fb_attribute)->free != NULL) { SCOPE_TOP(rtcp_fb_attribute)->free(SCOPE_TOP(rtcp_fb_attribute)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sdpParser_rtcp_fb_attributeStack_limit--; SCOPE_TOP(rtcp_fb_attribute) = (pbelle_sdpParser_rtcp_fb_attribute_SCOPE)(ctx->pbelle_sdpParser_rtcp_fb_attributeStack->get(ctx->pbelle_sdpParser_rtcp_fb_attributeStack, ctx->pbelle_sdpParser_rtcp_fb_attributeStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sdpParser_media_descriptionStack */ void pbelle_sdpParser_media_descriptionPop(pbelle_sdpParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(media_description)->free != NULL) { SCOPE_TOP(media_description)->free(SCOPE_TOP(media_description)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sdpParser_media_descriptionStack_limit--; SCOPE_TOP(media_description) = (pbelle_sdpParser_media_description_SCOPE)(ctx->pbelle_sdpParser_media_descriptionStack->get(ctx->pbelle_sdpParser_media_descriptionStack, ctx->pbelle_sdpParser_media_descriptionStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sdpParser_mediaStack */ void pbelle_sdpParser_mediaPop(pbelle_sdpParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(media)->free != NULL) { SCOPE_TOP(media)->free(SCOPE_TOP(media)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sdpParser_mediaStack_limit--; SCOPE_TOP(media) = (pbelle_sdpParser_media_SCOPE)(ctx->pbelle_sdpParser_mediaStack->get(ctx->pbelle_sdpParser_mediaStack, ctx->pbelle_sdpParser_mediaStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sdpParser_fmtStack */ void pbelle_sdpParser_fmtPop(pbelle_sdpParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(fmt)->free != NULL) { SCOPE_TOP(fmt)->free(SCOPE_TOP(fmt)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sdpParser_fmtStack_limit--; SCOPE_TOP(fmt) = (pbelle_sdpParser_fmt_SCOPE)(ctx->pbelle_sdpParser_fmtStack->get(ctx->pbelle_sdpParser_fmtStack, ctx->pbelle_sdpParser_fmtStack_limit - 1)); } // Forward declare the locally static matching functions we have generated. // static belle_sdpParser_session_description_return session_description (pbelle_sdpParser ctx); static belle_sdpParser_version_return version (pbelle_sdpParser ctx); static belle_sdpParser_origin_return origin (pbelle_sdpParser ctx); static belle_sdpParser_session_name_return session_name (pbelle_sdpParser ctx); static belle_sdpParser_info_return info (pbelle_sdpParser ctx); static belle_sdpParser_info_value_return info_value (pbelle_sdpParser ctx); static belle_sdpParser_uri_field_return uri_field (pbelle_sdpParser ctx); static belle_sdpParser_email_return email (pbelle_sdpParser ctx); static belle_sdpParser_phone_field_return phone_field (pbelle_sdpParser ctx); static belle_sdpParser_connection_return connection (pbelle_sdpParser ctx); static belle_sdpParser_bandwidth_return bandwidth (pbelle_sdpParser ctx); static belle_sdpParser_time_field_return time_field (pbelle_sdpParser ctx); static belle_sdpParser_repeat_time_return repeat_time (pbelle_sdpParser ctx); static belle_sdpParser_zone_adjustments_return zone_adjustments (pbelle_sdpParser ctx); static belle_sdpParser_key_field_return key_field (pbelle_sdpParser ctx); static belle_sdpParser_key_value_return key_value (pbelle_sdpParser ctx); static belle_sdpParser_attribute_return attribute (pbelle_sdpParser ctx); static belle_sdpParser_attribute_content_return attribute_content (pbelle_sdpParser ctx); static belle_sdpParser_rtcp_xr_attribute_return rtcp_xr_attribute (pbelle_sdpParser ctx); static belle_sdpParser_rtcp_xr_attribute_value_return rtcp_xr_attribute_value (pbelle_sdpParser ctx); static belle_sdpParser_pkt_loss_rle_return pkt_loss_rle (pbelle_sdpParser ctx); static belle_sdpParser_pkt_dup_rle_return pkt_dup_rle (pbelle_sdpParser ctx); static belle_sdpParser_pkt_rcpt_times_return pkt_rcpt_times (pbelle_sdpParser ctx); static belle_sdpParser_rcvr_rtt_return rcvr_rtt (pbelle_sdpParser ctx); static belle_sdpParser_stat_summary_return stat_summary (pbelle_sdpParser ctx); static belle_sdpParser_voip_metrics_return voip_metrics (pbelle_sdpParser ctx); static belle_sdpParser_rtcp_xr_stat_summary_flag_return rtcp_xr_stat_summary_flag (pbelle_sdpParser ctx); static belle_sdpParser_rtcp_xr_max_size_return rtcp_xr_max_size (pbelle_sdpParser ctx); static belle_sdpParser_rtcp_fb_attribute_return rtcp_fb_attribute (pbelle_sdpParser ctx); static belle_sdpParser_rtcp_fb_pt_return rtcp_fb_pt (pbelle_sdpParser ctx); static belle_sdpParser_rtcp_fb_val_return rtcp_fb_val (pbelle_sdpParser ctx); static belle_sdpParser_rtcp_fb_ack_val_return rtcp_fb_ack_val (pbelle_sdpParser ctx); static belle_sdpParser_rtcp_fb_nack_val_return rtcp_fb_nack_val (pbelle_sdpParser ctx); static belle_sdpParser_rtcp_fb_trr_int_val_return rtcp_fb_trr_int_val (pbelle_sdpParser ctx); static belle_sdpParser_rtcp_fb_ccm_val_return rtcp_fb_ccm_val (pbelle_sdpParser ctx); static belle_sdpParser_rtcp_fb_id_val_return rtcp_fb_id_val (pbelle_sdpParser ctx); static belle_sdpParser_rtcp_fb_param_return rtcp_fb_param (pbelle_sdpParser ctx); static belle_sdpParser_rtcp_fb_ack_param_return rtcp_fb_ack_param (pbelle_sdpParser ctx); static belle_sdpParser_rtcp_fb_nack_param_return rtcp_fb_nack_param (pbelle_sdpParser ctx); static belle_sdpParser_rtcp_fb_pli_param_return rtcp_fb_pli_param (pbelle_sdpParser ctx); static belle_sdpParser_rtcp_fb_sli_param_return rtcp_fb_sli_param (pbelle_sdpParser ctx); static belle_sdpParser_rtcp_fb_rpsi_param_return rtcp_fb_rpsi_param (pbelle_sdpParser ctx); static belle_sdpParser_rtcp_fb_app_param_return rtcp_fb_app_param (pbelle_sdpParser ctx); static belle_sdpParser_rtcp_fb_ccm_param_return rtcp_fb_ccm_param (pbelle_sdpParser ctx); static belle_sdpParser_rtcp_fb_fir_param_return rtcp_fb_fir_param (pbelle_sdpParser ctx); static belle_sdpParser_rtcp_fb_tmmbr_param_return rtcp_fb_tmmbr_param (pbelle_sdpParser ctx); static belle_sdpParser_rtcp_fb_tmmbr_smaxpr_param_return rtcp_fb_tmmbr_smaxpr_param (pbelle_sdpParser ctx); static belle_sdpParser_rtcp_fb_tmmbr_smaxpr_return rtcp_fb_tmmbr_smaxpr (pbelle_sdpParser ctx); static belle_sdpParser_rtcp_fb_token_param_return rtcp_fb_token_param (pbelle_sdpParser ctx); static belle_sdpParser_media_description_return media_description (pbelle_sdpParser ctx); static belle_sdpParser_media_return media (pbelle_sdpParser ctx); static belle_sdpParser_media_value_return media_value (pbelle_sdpParser ctx); static belle_sdpParser_fmt_return fmt (pbelle_sdpParser ctx); static belle_sdpParser_proto_return proto (pbelle_sdpParser ctx); static belle_sdpParser_port_return port (pbelle_sdpParser ctx); static belle_sdpParser_attribute_name_return attribute_name (pbelle_sdpParser ctx); static belle_sdpParser_attribute_value_return attribute_value (pbelle_sdpParser ctx); static belle_sdpParser_rtcp_xr_attribute_name_return rtcp_xr_attribute_name (pbelle_sdpParser ctx); static belle_sdpParser_rtcp_xr_rcvr_rtt_mode_return rtcp_xr_rcvr_rtt_mode (pbelle_sdpParser ctx); static belle_sdpParser_rtcp_xr_stat_summary_flag_value_return rtcp_xr_stat_summary_flag_value (pbelle_sdpParser ctx); static belle_sdpParser_rtcp_fb_attribute_name_return rtcp_fb_attribute_name (pbelle_sdpParser ctx); static belle_sdpParser_sess_id_return sess_id (pbelle_sdpParser ctx); static belle_sdpParser_sess_version_return sess_version (pbelle_sdpParser ctx); static belle_sdpParser_connection_address_return connection_address (pbelle_sdpParser ctx); static belle_sdpParser_multicast_address_return multicast_address (pbelle_sdpParser ctx); static belle_sdpParser_ttl_return ttl (pbelle_sdpParser ctx); static belle_sdpParser_start_time_return start_time (pbelle_sdpParser ctx); static belle_sdpParser_stop_time_return stop_time (pbelle_sdpParser ctx); static belle_sdpParser_sdp_time_return sdp_time (pbelle_sdpParser ctx); static belle_sdpParser_repeat_interval_return repeat_interval (pbelle_sdpParser ctx); static belle_sdpParser_typed_time_return typed_time (pbelle_sdpParser ctx); static belle_sdpParser_fixed_len_time_unit_return fixed_len_time_unit (pbelle_sdpParser ctx); static belle_sdpParser_bwtype_return bwtype (pbelle_sdpParser ctx); static belle_sdpParser_bandwidth_value_return bandwidth_value (pbelle_sdpParser ctx); static belle_sdpParser_username_return username (pbelle_sdpParser ctx); static belle_sdpParser_email_address_return email_address (pbelle_sdpParser ctx); static belle_sdpParser_uri_return uri (pbelle_sdpParser ctx); static belle_sdpParser_phone_number_return phone_number (pbelle_sdpParser ctx); static belle_sdpParser_phone_return phone (pbelle_sdpParser ctx); static belle_sdpParser_nettype_return nettype (pbelle_sdpParser ctx); static belle_sdpParser_addrtype_return addrtype (pbelle_sdpParser ctx); static belle_sdpParser_addr_return addr (pbelle_sdpParser ctx); static belle_sdpParser_multicast_part_return multicast_part (pbelle_sdpParser ctx); static belle_sdpParser_fqdn_return fqdn (pbelle_sdpParser ctx); static belle_sdpParser_domainlabel_return domainlabel (pbelle_sdpParser ctx); static belle_sdpParser_toplabel_return toplabel (pbelle_sdpParser ctx); static belle_sdpParser_unicast_address_return unicast_address (pbelle_sdpParser ctx); static belle_sdpParser_ipv4_address_return ipv4_address (pbelle_sdpParser ctx); static belle_sdpParser_ipv6_address_return ipv6_address (pbelle_sdpParser ctx); static belle_sdpParser_hexpart_return hexpart (pbelle_sdpParser ctx); static belle_sdpParser_hexseq_return hexseq (pbelle_sdpParser ctx); static belle_sdpParser_hex4_return hex4 (pbelle_sdpParser ctx); static belle_sdpParser_text_return text (pbelle_sdpParser ctx); static belle_sdpParser_byte_string_return byte_string (pbelle_sdpParser ctx); static belle_sdpParser_decimal_uchar_return decimal_uchar (pbelle_sdpParser ctx); static belle_sdpParser_integer_return integer (pbelle_sdpParser ctx); static belle_sdpParser_email_safe_return email_safe (pbelle_sdpParser ctx); static belle_sdpParser_token_return token (pbelle_sdpParser ctx); static belle_sdpParser_alpha_num_return alpha_num (pbelle_sdpParser ctx); static belle_sdpParser_hexdigit_return hexdigit (pbelle_sdpParser ctx); static belle_sdpParser_word_return word (pbelle_sdpParser ctx); static belle_sdpParser_alpha_return alpha (pbelle_sdpParser ctx); static ANTLR3_BOOLEAN synpred1_belle_sdp (pbelle_sdpParser ctx); static ANTLR3_BOOLEAN synpred2_belle_sdp (pbelle_sdpParser ctx); static ANTLR3_BOOLEAN synpred3_belle_sdp (pbelle_sdpParser ctx); static ANTLR3_BOOLEAN synpred4_belle_sdp (pbelle_sdpParser ctx); static ANTLR3_BOOLEAN synpred5_belle_sdp (pbelle_sdpParser ctx); static ANTLR3_BOOLEAN synpred6_belle_sdp (pbelle_sdpParser ctx); static ANTLR3_BOOLEAN synpred7_belle_sdp (pbelle_sdpParser ctx); static ANTLR3_BOOLEAN synpred8_belle_sdp (pbelle_sdpParser ctx); static ANTLR3_BOOLEAN synpred9_belle_sdp (pbelle_sdpParser ctx); static ANTLR3_BOOLEAN synpred10_belle_sdp (pbelle_sdpParser ctx); static ANTLR3_BOOLEAN synpred11_belle_sdp (pbelle_sdpParser ctx); static ANTLR3_BOOLEAN synpred12_belle_sdp (pbelle_sdpParser ctx); static ANTLR3_BOOLEAN synpred13_belle_sdp (pbelle_sdpParser ctx); static ANTLR3_BOOLEAN synpred14_belle_sdp (pbelle_sdpParser ctx); static ANTLR3_BOOLEAN synpred15_belle_sdp (pbelle_sdpParser ctx); static ANTLR3_BOOLEAN synpred16_belle_sdp (pbelle_sdpParser ctx); static ANTLR3_BOOLEAN synpred17_belle_sdp (pbelle_sdpParser ctx); static ANTLR3_BOOLEAN synpred18_belle_sdp (pbelle_sdpParser ctx); static ANTLR3_BOOLEAN synpred19_belle_sdp (pbelle_sdpParser ctx); static ANTLR3_BOOLEAN synpred20_belle_sdp (pbelle_sdpParser ctx); static ANTLR3_BOOLEAN synpred21_belle_sdp (pbelle_sdpParser ctx); static ANTLR3_BOOLEAN synpred22_belle_sdp (pbelle_sdpParser ctx); static ANTLR3_BOOLEAN synpred23_belle_sdp (pbelle_sdpParser ctx); static ANTLR3_BOOLEAN synpred24_belle_sdp (pbelle_sdpParser ctx); static ANTLR3_BOOLEAN synpred25_belle_sdp (pbelle_sdpParser ctx); static void belle_sdpParserFree(pbelle_sdpParser ctx); static void belle_sdpParserReset (pbelle_sdpParser ctx); /* For use in tree output where we are accumulating rule labels via label += ruleRef * we need a function that knows how to free a return scope when the list is destroyed. * We cannot just use ANTLR3_FREE because in debug tracking mode, this is a macro. */ static void ANTLR3_CDECL freeScope(void * scope) { ANTLR3_FREE(scope); } /** \brief Name of the grammar file that generated this code */ static const char fileName[] = "../grammars/belle_sdp.g"; /** \brief Return the name of the grammar file that generated this code. */ static const char * getGrammarFileName() { return fileName; } /** \brief Create a new belle_sdpParser parser and return a context for it. * * \param[in] instream Pointer to an input stream interface. * * \return Pointer to new parser context upon success. */ ANTLR3_API pbelle_sdpParser belle_sdpParserNew (pANTLR3_COMMON_TOKEN_STREAM instream) { // See if we can create a new parser with the standard constructor // return belle_sdpParserNewSSD(instream, NULL); } /** \brief Create a new belle_sdpParser parser and return a context for it. * * \param[in] instream Pointer to an input stream interface. * * \return Pointer to new parser context upon success. */ ANTLR3_API pbelle_sdpParser belle_sdpParserNewSSD (pANTLR3_COMMON_TOKEN_STREAM instream, pANTLR3_RECOGNIZER_SHARED_STATE state) { pbelle_sdpParser ctx; /* Context structure we will build and return */ ctx = (pbelle_sdpParser) ANTLR3_CALLOC(1, sizeof(belle_sdpParser)); if (ctx == NULL) { // Failed to allocate memory for parser context // return NULL; } /* ------------------------------------------------------------------- * Memory for basic structure is allocated, now to fill in * the base ANTLR3 structures. We initialize the function pointers * for the standard ANTLR3 parser function set, but upon return * from here, the programmer may set the pointers to provide custom * implementations of each function. * * We don't use the macros defined in belle_sdpParser.h here, in order that you can get a sense * of what goes where. */ /* Create a base parser/recognizer, using the supplied token stream */ ctx->pParser = antlr3ParserNewStream(ANTLR3_SIZE_HINT, instream->tstream, state); /* Install the implementation of our belle_sdpParser interface */ ctx->session_description = session_description; ctx->version = version; ctx->origin = origin; ctx->session_name = session_name; ctx->info = info; ctx->info_value = info_value; ctx->uri_field = uri_field; ctx->email = email; ctx->phone_field = phone_field; ctx->connection = connection; ctx->bandwidth = bandwidth; ctx->time_field = time_field; ctx->repeat_time = repeat_time; ctx->zone_adjustments = zone_adjustments; ctx->key_field = key_field; ctx->key_value = key_value; ctx->attribute = attribute; ctx->attribute_content = attribute_content; ctx->rtcp_xr_attribute = rtcp_xr_attribute; ctx->rtcp_xr_attribute_value = rtcp_xr_attribute_value; ctx->pkt_loss_rle = pkt_loss_rle; ctx->pkt_dup_rle = pkt_dup_rle; ctx->pkt_rcpt_times = pkt_rcpt_times; ctx->rcvr_rtt = rcvr_rtt; ctx->stat_summary = stat_summary; ctx->voip_metrics = voip_metrics; ctx->rtcp_xr_stat_summary_flag = rtcp_xr_stat_summary_flag; ctx->rtcp_xr_max_size = rtcp_xr_max_size; ctx->rtcp_fb_attribute = rtcp_fb_attribute; ctx->rtcp_fb_pt = rtcp_fb_pt; ctx->rtcp_fb_val = rtcp_fb_val; ctx->rtcp_fb_ack_val = rtcp_fb_ack_val; ctx->rtcp_fb_nack_val = rtcp_fb_nack_val; ctx->rtcp_fb_trr_int_val = rtcp_fb_trr_int_val; ctx->rtcp_fb_ccm_val = rtcp_fb_ccm_val; ctx->rtcp_fb_id_val = rtcp_fb_id_val; ctx->rtcp_fb_param = rtcp_fb_param; ctx->rtcp_fb_ack_param = rtcp_fb_ack_param; ctx->rtcp_fb_nack_param = rtcp_fb_nack_param; ctx->rtcp_fb_pli_param = rtcp_fb_pli_param; ctx->rtcp_fb_sli_param = rtcp_fb_sli_param; ctx->rtcp_fb_rpsi_param = rtcp_fb_rpsi_param; ctx->rtcp_fb_app_param = rtcp_fb_app_param; ctx->rtcp_fb_ccm_param = rtcp_fb_ccm_param; ctx->rtcp_fb_fir_param = rtcp_fb_fir_param; ctx->rtcp_fb_tmmbr_param = rtcp_fb_tmmbr_param; ctx->rtcp_fb_tmmbr_smaxpr_param = rtcp_fb_tmmbr_smaxpr_param; ctx->rtcp_fb_tmmbr_smaxpr = rtcp_fb_tmmbr_smaxpr; ctx->rtcp_fb_token_param = rtcp_fb_token_param; ctx->media_description = media_description; ctx->media = media; ctx->media_value = media_value; ctx->fmt = fmt; ctx->proto = proto; ctx->port = port; ctx->attribute_name = attribute_name; ctx->attribute_value = attribute_value; ctx->rtcp_xr_attribute_name = rtcp_xr_attribute_name; ctx->rtcp_xr_rcvr_rtt_mode = rtcp_xr_rcvr_rtt_mode; ctx->rtcp_xr_stat_summary_flag_value = rtcp_xr_stat_summary_flag_value; ctx->rtcp_fb_attribute_name = rtcp_fb_attribute_name; ctx->sess_id = sess_id; ctx->sess_version = sess_version; ctx->connection_address = connection_address; ctx->multicast_address = multicast_address; ctx->ttl = ttl; ctx->start_time = start_time; ctx->stop_time = stop_time; ctx->sdp_time = sdp_time; ctx->repeat_interval = repeat_interval; ctx->typed_time = typed_time; ctx->fixed_len_time_unit = fixed_len_time_unit; ctx->bwtype = bwtype; ctx->bandwidth_value = bandwidth_value; ctx->username = username; ctx->email_address = email_address; ctx->uri = uri; ctx->phone_number = phone_number; ctx->phone = phone; ctx->nettype = nettype; ctx->addrtype = addrtype; ctx->addr = addr; ctx->multicast_part = multicast_part; ctx->fqdn = fqdn; ctx->domainlabel = domainlabel; ctx->toplabel = toplabel; ctx->unicast_address = unicast_address; ctx->ipv4_address = ipv4_address; ctx->ipv6_address = ipv6_address; ctx->hexpart = hexpart; ctx->hexseq = hexseq; ctx->hex4 = hex4; ctx->text = text; ctx->byte_string = byte_string; ctx->decimal_uchar = decimal_uchar; ctx->integer = integer; ctx->email_safe = email_safe; ctx->token = token; ctx->alpha_num = alpha_num; ctx->hexdigit = hexdigit; ctx->word = word; ctx->alpha = alpha; ctx->synpred1_belle_sdp = synpred1_belle_sdp; ctx->synpred2_belle_sdp = synpred2_belle_sdp; ctx->synpred3_belle_sdp = synpred3_belle_sdp; ctx->synpred4_belle_sdp = synpred4_belle_sdp; ctx->synpred5_belle_sdp = synpred5_belle_sdp; ctx->synpred6_belle_sdp = synpred6_belle_sdp; ctx->synpred7_belle_sdp = synpred7_belle_sdp; ctx->synpred8_belle_sdp = synpred8_belle_sdp; ctx->synpred9_belle_sdp = synpred9_belle_sdp; ctx->synpred10_belle_sdp = synpred10_belle_sdp; ctx->synpred11_belle_sdp = synpred11_belle_sdp; ctx->synpred12_belle_sdp = synpred12_belle_sdp; ctx->synpred13_belle_sdp = synpred13_belle_sdp; ctx->synpred14_belle_sdp = synpred14_belle_sdp; ctx->synpred15_belle_sdp = synpred15_belle_sdp; ctx->synpred16_belle_sdp = synpred16_belle_sdp; ctx->synpred17_belle_sdp = synpred17_belle_sdp; ctx->synpred18_belle_sdp = synpred18_belle_sdp; ctx->synpred19_belle_sdp = synpred19_belle_sdp; ctx->synpred20_belle_sdp = synpred20_belle_sdp; ctx->synpred21_belle_sdp = synpred21_belle_sdp; ctx->synpred22_belle_sdp = synpred22_belle_sdp; ctx->synpred23_belle_sdp = synpred23_belle_sdp; ctx->synpred24_belle_sdp = synpred24_belle_sdp; ctx->synpred25_belle_sdp = synpred25_belle_sdp; ctx->free = belle_sdpParserFree; ctx->reset = belle_sdpParserReset; ctx->getGrammarFileName = getGrammarFileName; /* Install the scope pushing methods. */ /* ruleAttributeScope(scope) */ ctx->pbelle_sdpParser_session_descriptionPush = pbelle_sdpParser_session_descriptionPush; ctx->pbelle_sdpParser_session_descriptionStack = antlr3StackNew(0); ctx->pbelle_sdpParser_session_descriptionStack_limit = 0; ctx->pbelle_sdpParser_session_descriptionTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sdpParser_originPush = pbelle_sdpParser_originPush; ctx->pbelle_sdpParser_originStack = antlr3StackNew(0); ctx->pbelle_sdpParser_originStack_limit = 0; ctx->pbelle_sdpParser_originTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sdpParser_infoPush = pbelle_sdpParser_infoPush; ctx->pbelle_sdpParser_infoStack = antlr3StackNew(0); ctx->pbelle_sdpParser_infoStack_limit = 0; ctx->pbelle_sdpParser_infoTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sdpParser_emailPush = pbelle_sdpParser_emailPush; ctx->pbelle_sdpParser_emailStack = antlr3StackNew(0); ctx->pbelle_sdpParser_emailStack_limit = 0; ctx->pbelle_sdpParser_emailTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sdpParser_connectionPush = pbelle_sdpParser_connectionPush; ctx->pbelle_sdpParser_connectionStack = antlr3StackNew(0); ctx->pbelle_sdpParser_connectionStack_limit = 0; ctx->pbelle_sdpParser_connectionTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sdpParser_bandwidthPush = pbelle_sdpParser_bandwidthPush; ctx->pbelle_sdpParser_bandwidthStack = antlr3StackNew(0); ctx->pbelle_sdpParser_bandwidthStack_limit = 0; ctx->pbelle_sdpParser_bandwidthTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sdpParser_attributePush = pbelle_sdpParser_attributePush; ctx->pbelle_sdpParser_attributeStack = antlr3StackNew(0); ctx->pbelle_sdpParser_attributeStack_limit = 0; ctx->pbelle_sdpParser_attributeTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sdpParser_rtcp_xr_attributePush = pbelle_sdpParser_rtcp_xr_attributePush; ctx->pbelle_sdpParser_rtcp_xr_attributeStack = antlr3StackNew(0); ctx->pbelle_sdpParser_rtcp_xr_attributeStack_limit = 0; ctx->pbelle_sdpParser_rtcp_xr_attributeTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sdpParser_rtcp_fb_attributePush = pbelle_sdpParser_rtcp_fb_attributePush; ctx->pbelle_sdpParser_rtcp_fb_attributeStack = antlr3StackNew(0); ctx->pbelle_sdpParser_rtcp_fb_attributeStack_limit = 0; ctx->pbelle_sdpParser_rtcp_fb_attributeTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sdpParser_media_descriptionPush = pbelle_sdpParser_media_descriptionPush; ctx->pbelle_sdpParser_media_descriptionStack = antlr3StackNew(0); ctx->pbelle_sdpParser_media_descriptionStack_limit = 0; ctx->pbelle_sdpParser_media_descriptionTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sdpParser_mediaPush = pbelle_sdpParser_mediaPush; ctx->pbelle_sdpParser_mediaStack = antlr3StackNew(0); ctx->pbelle_sdpParser_mediaStack_limit = 0; ctx->pbelle_sdpParser_mediaTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sdpParser_fmtPush = pbelle_sdpParser_fmtPush; ctx->pbelle_sdpParser_fmtStack = antlr3StackNew(0); ctx->pbelle_sdpParser_fmtStack_limit = 0; ctx->pbelle_sdpParser_fmtTop = NULL; ADAPTOR = ANTLR3_TREE_ADAPTORNew(instream->tstream->tokenSource->strFactory); ctx->vectors = antlr3VectorFactoryNew(0); /* Install the token table */ PSRSTATE->tokenNames = belle_sdpParserTokenNames; /* Return the newly built parser to the caller */ return ctx; } static void belle_sdpParserReset (pbelle_sdpParser ctx) { RECOGNIZER->reset(RECOGNIZER); } /** Free the parser resources */ static void belle_sdpParserFree(pbelle_sdpParser ctx) { /* Free any scope memory */ /* ruleAttributeScope(scope) */ ctx->pbelle_sdpParser_session_descriptionStack->free(ctx->pbelle_sdpParser_session_descriptionStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sdpParser_originStack->free(ctx->pbelle_sdpParser_originStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sdpParser_infoStack->free(ctx->pbelle_sdpParser_infoStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sdpParser_emailStack->free(ctx->pbelle_sdpParser_emailStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sdpParser_connectionStack->free(ctx->pbelle_sdpParser_connectionStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sdpParser_bandwidthStack->free(ctx->pbelle_sdpParser_bandwidthStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sdpParser_attributeStack->free(ctx->pbelle_sdpParser_attributeStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sdpParser_rtcp_xr_attributeStack->free(ctx->pbelle_sdpParser_rtcp_xr_attributeStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sdpParser_rtcp_fb_attributeStack->free(ctx->pbelle_sdpParser_rtcp_fb_attributeStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sdpParser_media_descriptionStack->free(ctx->pbelle_sdpParser_media_descriptionStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sdpParser_mediaStack->free(ctx->pbelle_sdpParser_mediaStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sdpParser_fmtStack->free(ctx->pbelle_sdpParser_fmtStack); ctx->vectors->close(ctx->vectors); /* We created the adaptor so we must free it */ ADAPTOR->free(ADAPTOR); // Free this parser // ctx->pParser->free(ctx->pParser); ANTLR3_FREE(ctx); /* Everything is released, so we can return */ return; } /** Return token names used by this parser * * The returned pointer is used as an index into the token names table (using the token * number as the index). * * \return Pointer to first char * in the table. */ static pANTLR3_UINT8 *getTokenNames() { return belle_sdpParserTokenNames; } /* Declare the bitsets */ /** Bitset defining follow set for error recovery in rule state: FOLLOW_version_in_session_description98 */ static ANTLR3_BITWORD FOLLOW_version_in_session_description98_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000080) }; static ANTLR3_BITSET_LIST FOLLOW_version_in_session_description98 = { FOLLOW_version_in_session_description98_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_CR_in_session_description100 */ static ANTLR3_BITWORD FOLLOW_CR_in_session_description100_bits[] = { ANTLR3_UINT64_LIT(0x0000000000002000) }; static ANTLR3_BITSET_LIST FOLLOW_CR_in_session_description100 = { FOLLOW_CR_in_session_description100_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_LF_in_session_description102 */ static ANTLR3_BITWORD FOLLOW_LF_in_session_description102_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001240) }; static ANTLR3_BITSET_LIST FOLLOW_LF_in_session_description102 = { FOLLOW_LF_in_session_description102_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_origin_in_session_description129 */ static ANTLR3_BITWORD FOLLOW_origin_in_session_description129_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000080) }; static ANTLR3_BITSET_LIST FOLLOW_origin_in_session_description129 = { FOLLOW_origin_in_session_description129_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_CR_in_session_description132 */ static ANTLR3_BITWORD FOLLOW_CR_in_session_description132_bits[] = { ANTLR3_UINT64_LIT(0x0000000000002000) }; static ANTLR3_BITSET_LIST FOLLOW_CR_in_session_description132 = { FOLLOW_CR_in_session_description132_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_LF_in_session_description134 */ static ANTLR3_BITWORD FOLLOW_LF_in_session_description134_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001240) }; static ANTLR3_BITSET_LIST FOLLOW_LF_in_session_description134 = { FOLLOW_LF_in_session_description134_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_session_name_in_session_description161 */ static ANTLR3_BITWORD FOLLOW_session_name_in_session_description161_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000080) }; static ANTLR3_BITSET_LIST FOLLOW_session_name_in_session_description161 = { FOLLOW_session_name_in_session_description161_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_CR_in_session_description163 */ static ANTLR3_BITWORD FOLLOW_CR_in_session_description163_bits[] = { ANTLR3_UINT64_LIT(0x0000000000002000) }; static ANTLR3_BITSET_LIST FOLLOW_CR_in_session_description163 = { FOLLOW_CR_in_session_description163_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_LF_in_session_description165 */ static ANTLR3_BITWORD FOLLOW_LF_in_session_description165_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001240) }; static ANTLR3_BITSET_LIST FOLLOW_LF_in_session_description165 = { FOLLOW_LF_in_session_description165_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_info_in_session_description193 */ static ANTLR3_BITWORD FOLLOW_info_in_session_description193_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000080) }; static ANTLR3_BITSET_LIST FOLLOW_info_in_session_description193 = { FOLLOW_info_in_session_description193_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_CR_in_session_description195 */ static ANTLR3_BITWORD FOLLOW_CR_in_session_description195_bits[] = { ANTLR3_UINT64_LIT(0x0000000000002000) }; static ANTLR3_BITSET_LIST FOLLOW_CR_in_session_description195 = { FOLLOW_CR_in_session_description195_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_LF_in_session_description197 */ static ANTLR3_BITWORD FOLLOW_LF_in_session_description197_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001240) }; static ANTLR3_BITSET_LIST FOLLOW_LF_in_session_description197 = { FOLLOW_LF_in_session_description197_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_uri_field_in_session_description227 */ static ANTLR3_BITWORD FOLLOW_uri_field_in_session_description227_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000080) }; static ANTLR3_BITSET_LIST FOLLOW_uri_field_in_session_description227 = { FOLLOW_uri_field_in_session_description227_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_CR_in_session_description229 */ static ANTLR3_BITWORD FOLLOW_CR_in_session_description229_bits[] = { ANTLR3_UINT64_LIT(0x0000000000002000) }; static ANTLR3_BITSET_LIST FOLLOW_CR_in_session_description229 = { FOLLOW_CR_in_session_description229_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_LF_in_session_description231 */ static ANTLR3_BITWORD FOLLOW_LF_in_session_description231_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001240) }; static ANTLR3_BITSET_LIST FOLLOW_LF_in_session_description231 = { FOLLOW_LF_in_session_description231_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_email_in_session_description261 */ static ANTLR3_BITWORD FOLLOW_email_in_session_description261_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000080) }; static ANTLR3_BITSET_LIST FOLLOW_email_in_session_description261 = { FOLLOW_email_in_session_description261_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_CR_in_session_description263 */ static ANTLR3_BITWORD FOLLOW_CR_in_session_description263_bits[] = { ANTLR3_UINT64_LIT(0x0000000000002000) }; static ANTLR3_BITSET_LIST FOLLOW_CR_in_session_description263 = { FOLLOW_CR_in_session_description263_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_LF_in_session_description265 */ static ANTLR3_BITWORD FOLLOW_LF_in_session_description265_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001240) }; static ANTLR3_BITSET_LIST FOLLOW_LF_in_session_description265 = { FOLLOW_LF_in_session_description265_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_phone_field_in_session_description294 */ static ANTLR3_BITWORD FOLLOW_phone_field_in_session_description294_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001240) }; static ANTLR3_BITSET_LIST FOLLOW_phone_field_in_session_description294 = { FOLLOW_phone_field_in_session_description294_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_connection_in_session_description323 */ static ANTLR3_BITWORD FOLLOW_connection_in_session_description323_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000080) }; static ANTLR3_BITSET_LIST FOLLOW_connection_in_session_description323 = { FOLLOW_connection_in_session_description323_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_CR_in_session_description327 */ static ANTLR3_BITWORD FOLLOW_CR_in_session_description327_bits[] = { ANTLR3_UINT64_LIT(0x0000000000002000) }; static ANTLR3_BITSET_LIST FOLLOW_CR_in_session_description327 = { FOLLOW_CR_in_session_description327_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_LF_in_session_description329 */ static ANTLR3_BITWORD FOLLOW_LF_in_session_description329_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001240) }; static ANTLR3_BITSET_LIST FOLLOW_LF_in_session_description329 = { FOLLOW_LF_in_session_description329_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_bandwidth_in_session_description359 */ static ANTLR3_BITWORD FOLLOW_bandwidth_in_session_description359_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000080) }; static ANTLR3_BITSET_LIST FOLLOW_bandwidth_in_session_description359 = { FOLLOW_bandwidth_in_session_description359_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_CR_in_session_description363 */ static ANTLR3_BITWORD FOLLOW_CR_in_session_description363_bits[] = { ANTLR3_UINT64_LIT(0x0000000000002000) }; static ANTLR3_BITSET_LIST FOLLOW_CR_in_session_description363 = { FOLLOW_CR_in_session_description363_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_LF_in_session_description365 */ static ANTLR3_BITWORD FOLLOW_LF_in_session_description365_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001240) }; static ANTLR3_BITSET_LIST FOLLOW_LF_in_session_description365 = { FOLLOW_LF_in_session_description365_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_time_field_in_session_description394 */ static ANTLR3_BITWORD FOLLOW_time_field_in_session_description394_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000080) }; static ANTLR3_BITSET_LIST FOLLOW_time_field_in_session_description394 = { FOLLOW_time_field_in_session_description394_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_CR_in_session_description396 */ static ANTLR3_BITWORD FOLLOW_CR_in_session_description396_bits[] = { ANTLR3_UINT64_LIT(0x0000000000002000) }; static ANTLR3_BITSET_LIST FOLLOW_CR_in_session_description396 = { FOLLOW_CR_in_session_description396_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_LF_in_session_description398 */ static ANTLR3_BITWORD FOLLOW_LF_in_session_description398_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001242) }; static ANTLR3_BITSET_LIST FOLLOW_LF_in_session_description398 = { FOLLOW_LF_in_session_description398_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_repeat_time_in_session_description426 */ static ANTLR3_BITWORD FOLLOW_repeat_time_in_session_description426_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000080) }; static ANTLR3_BITSET_LIST FOLLOW_repeat_time_in_session_description426 = { FOLLOW_repeat_time_in_session_description426_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_CR_in_session_description428 */ static ANTLR3_BITWORD FOLLOW_CR_in_session_description428_bits[] = { ANTLR3_UINT64_LIT(0x0000000000002000) }; static ANTLR3_BITSET_LIST FOLLOW_CR_in_session_description428 = { FOLLOW_CR_in_session_description428_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_LF_in_session_description430 */ static ANTLR3_BITWORD FOLLOW_LF_in_session_description430_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001242) }; static ANTLR3_BITSET_LIST FOLLOW_LF_in_session_description430 = { FOLLOW_LF_in_session_description430_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_zone_adjustments_in_session_description460 */ static ANTLR3_BITWORD FOLLOW_zone_adjustments_in_session_description460_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000080) }; static ANTLR3_BITSET_LIST FOLLOW_zone_adjustments_in_session_description460 = { FOLLOW_zone_adjustments_in_session_description460_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_CR_in_session_description462 */ static ANTLR3_BITWORD FOLLOW_CR_in_session_description462_bits[] = { ANTLR3_UINT64_LIT(0x0000000000002000) }; static ANTLR3_BITSET_LIST FOLLOW_CR_in_session_description462 = { FOLLOW_CR_in_session_description462_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_LF_in_session_description464 */ static ANTLR3_BITWORD FOLLOW_LF_in_session_description464_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001242) }; static ANTLR3_BITSET_LIST FOLLOW_LF_in_session_description464 = { FOLLOW_LF_in_session_description464_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_key_field_in_session_description494 */ static ANTLR3_BITWORD FOLLOW_key_field_in_session_description494_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000080) }; static ANTLR3_BITSET_LIST FOLLOW_key_field_in_session_description494 = { FOLLOW_key_field_in_session_description494_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_CR_in_session_description496 */ static ANTLR3_BITWORD FOLLOW_CR_in_session_description496_bits[] = { ANTLR3_UINT64_LIT(0x0000000000002000) }; static ANTLR3_BITSET_LIST FOLLOW_CR_in_session_description496 = { FOLLOW_CR_in_session_description496_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_LF_in_session_description498 */ static ANTLR3_BITWORD FOLLOW_LF_in_session_description498_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001242) }; static ANTLR3_BITSET_LIST FOLLOW_LF_in_session_description498 = { FOLLOW_LF_in_session_description498_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_attribute_in_session_description528 */ static ANTLR3_BITWORD FOLLOW_attribute_in_session_description528_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000080) }; static ANTLR3_BITSET_LIST FOLLOW_attribute_in_session_description528 = { FOLLOW_attribute_in_session_description528_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_CR_in_session_description532 */ static ANTLR3_BITWORD FOLLOW_CR_in_session_description532_bits[] = { ANTLR3_UINT64_LIT(0x0000000000002000) }; static ANTLR3_BITSET_LIST FOLLOW_CR_in_session_description532 = { FOLLOW_CR_in_session_description532_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_LF_in_session_description534 */ static ANTLR3_BITWORD FOLLOW_LF_in_session_description534_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001242) }; static ANTLR3_BITSET_LIST FOLLOW_LF_in_session_description534 = { FOLLOW_LF_in_session_description534_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_media_description_in_session_description564 */ static ANTLR3_BITWORD FOLLOW_media_description_in_session_description564_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001242) }; static ANTLR3_BITSET_LIST FOLLOW_media_description_in_session_description564 = { FOLLOW_media_description_in_session_description564_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_alpha_num_in_version590 */ static ANTLR3_BITWORD FOLLOW_alpha_num_in_version590_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000800) }; static ANTLR3_BITSET_LIST FOLLOW_alpha_num_in_version590 = { FOLLOW_alpha_num_in_version590_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_EQUAL_in_version592 */ static ANTLR3_BITWORD FOLLOW_EQUAL_in_version592_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000200) }; static ANTLR3_BITSET_LIST FOLLOW_EQUAL_in_version592 = { FOLLOW_EQUAL_in_version592_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DIGIT_in_version596 */ static ANTLR3_BITWORD FOLLOW_DIGIT_in_version596_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000202) }; static ANTLR3_BITSET_LIST FOLLOW_DIGIT_in_version596 = { FOLLOW_DIGIT_in_version596_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_alpha_num_in_origin654 */ static ANTLR3_BITWORD FOLLOW_alpha_num_in_origin654_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000800) }; static ANTLR3_BITSET_LIST FOLLOW_alpha_num_in_origin654 = { FOLLOW_alpha_num_in_origin654_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_EQUAL_in_origin656 */ static ANTLR3_BITWORD FOLLOW_EQUAL_in_origin656_bits[] = { ANTLR3_UINT64_LIT(0x0000000FFFF7FFF0) }; static ANTLR3_BITSET_LIST FOLLOW_EQUAL_in_origin656 = { FOLLOW_EQUAL_in_origin656_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_username_in_origin658 */ static ANTLR3_BITWORD FOLLOW_username_in_origin658_bits[] = { ANTLR3_UINT64_LIT(0x0000000000080000) }; static ANTLR3_BITSET_LIST FOLLOW_username_in_origin658 = { FOLLOW_username_in_origin658_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SPACE_in_origin687 */ static ANTLR3_BITWORD FOLLOW_SPACE_in_origin687_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000200) }; static ANTLR3_BITSET_LIST FOLLOW_SPACE_in_origin687 = { FOLLOW_SPACE_in_origin687_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_sess_id_in_origin689 */ static ANTLR3_BITWORD FOLLOW_sess_id_in_origin689_bits[] = { ANTLR3_UINT64_LIT(0x0000000000080000) }; static ANTLR3_BITSET_LIST FOLLOW_sess_id_in_origin689 = { FOLLOW_sess_id_in_origin689_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SPACE_in_origin718 */ static ANTLR3_BITWORD FOLLOW_SPACE_in_origin718_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000200) }; static ANTLR3_BITSET_LIST FOLLOW_SPACE_in_origin718 = { FOLLOW_SPACE_in_origin718_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_sess_version_in_origin720 */ static ANTLR3_BITWORD FOLLOW_sess_version_in_origin720_bits[] = { ANTLR3_UINT64_LIT(0x0000000000080000) }; static ANTLR3_BITSET_LIST FOLLOW_sess_version_in_origin720 = { FOLLOW_sess_version_in_origin720_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SPACE_in_origin749 */ static ANTLR3_BITWORD FOLLOW_SPACE_in_origin749_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001240) }; static ANTLR3_BITSET_LIST FOLLOW_SPACE_in_origin749 = { FOLLOW_SPACE_in_origin749_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_nettype_in_origin751 */ static ANTLR3_BITWORD FOLLOW_nettype_in_origin751_bits[] = { ANTLR3_UINT64_LIT(0x0000000000080000) }; static ANTLR3_BITSET_LIST FOLLOW_nettype_in_origin751 = { FOLLOW_nettype_in_origin751_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SPACE_in_origin780 */ static ANTLR3_BITWORD FOLLOW_SPACE_in_origin780_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001240) }; static ANTLR3_BITSET_LIST FOLLOW_SPACE_in_origin780 = { FOLLOW_SPACE_in_origin780_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_addrtype_in_origin782 */ static ANTLR3_BITWORD FOLLOW_addrtype_in_origin782_bits[] = { ANTLR3_UINT64_LIT(0x0000000000080000) }; static ANTLR3_BITSET_LIST FOLLOW_addrtype_in_origin782 = { FOLLOW_addrtype_in_origin782_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SPACE_in_origin812 */ static ANTLR3_BITWORD FOLLOW_SPACE_in_origin812_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001750) }; static ANTLR3_BITSET_LIST FOLLOW_SPACE_in_origin812 = { FOLLOW_SPACE_in_origin812_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_addr_in_origin814 */ static ANTLR3_BITWORD FOLLOW_addr_in_origin814_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_addr_in_origin814 = { FOLLOW_addr_in_origin814_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_alpha_num_in_session_name834 */ static ANTLR3_BITWORD FOLLOW_alpha_num_in_session_name834_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000800) }; static ANTLR3_BITSET_LIST FOLLOW_alpha_num_in_session_name834 = { FOLLOW_alpha_num_in_session_name834_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_EQUAL_in_session_name836 */ static ANTLR3_BITWORD FOLLOW_EQUAL_in_session_name836_bits[] = { ANTLR3_UINT64_LIT(0x0000000FFFFFDF70) }; static ANTLR3_BITSET_LIST FOLLOW_EQUAL_in_session_name836 = { FOLLOW_EQUAL_in_session_name836_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_text_in_session_name838 */ static ANTLR3_BITWORD FOLLOW_text_in_session_name838_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_text_in_session_name838 = { FOLLOW_text_in_session_name838_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_alpha_num_in_info865 */ static ANTLR3_BITWORD FOLLOW_alpha_num_in_info865_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000800) }; static ANTLR3_BITSET_LIST FOLLOW_alpha_num_in_info865 = { FOLLOW_alpha_num_in_info865_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_EQUAL_in_info867 */ static ANTLR3_BITWORD FOLLOW_EQUAL_in_info867_bits[] = { ANTLR3_UINT64_LIT(0x0000000FFFFFDF70) }; static ANTLR3_BITSET_LIST FOLLOW_EQUAL_in_info867 = { FOLLOW_EQUAL_in_info867_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_info_value_in_info869 */ static ANTLR3_BITWORD FOLLOW_info_value_in_info869_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_info_value_in_info869 = { FOLLOW_info_value_in_info869_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_alpha_num_in_uri_field932 */ static ANTLR3_BITWORD FOLLOW_alpha_num_in_uri_field932_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000800) }; static ANTLR3_BITSET_LIST FOLLOW_alpha_num_in_uri_field932 = { FOLLOW_alpha_num_in_uri_field932_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_EQUAL_in_uri_field934 */ static ANTLR3_BITWORD FOLLOW_EQUAL_in_uri_field934_bits[] = { ANTLR3_UINT64_LIT(0x0000000FFFFFDF70) }; static ANTLR3_BITSET_LIST FOLLOW_EQUAL_in_uri_field934 = { FOLLOW_EQUAL_in_uri_field934_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_uri_in_uri_field936 */ static ANTLR3_BITWORD FOLLOW_uri_in_uri_field936_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_uri_in_uri_field936 = { FOLLOW_uri_in_uri_field936_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_alpha_num_in_email968 */ static ANTLR3_BITWORD FOLLOW_alpha_num_in_email968_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000800) }; static ANTLR3_BITSET_LIST FOLLOW_alpha_num_in_email968 = { FOLLOW_alpha_num_in_email968_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_EQUAL_in_email970 */ static ANTLR3_BITWORD FOLLOW_EQUAL_in_email970_bits[] = { ANTLR3_UINT64_LIT(0x0000000FFFFFDF70) }; static ANTLR3_BITSET_LIST FOLLOW_EQUAL_in_email970 = { FOLLOW_EQUAL_in_email970_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_email_address_in_email972 */ static ANTLR3_BITWORD FOLLOW_email_address_in_email972_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_email_address_in_email972 = { FOLLOW_email_address_in_email972_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_alpha_num_in_phone_field989 */ static ANTLR3_BITWORD FOLLOW_alpha_num_in_phone_field989_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000800) }; static ANTLR3_BITSET_LIST FOLLOW_alpha_num_in_phone_field989 = { FOLLOW_alpha_num_in_phone_field989_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_EQUAL_in_phone_field991 */ static ANTLR3_BITWORD FOLLOW_EQUAL_in_phone_field991_bits[] = { ANTLR3_UINT64_LIT(0x0000000FFFFFDF70) }; static ANTLR3_BITSET_LIST FOLLOW_EQUAL_in_phone_field991 = { FOLLOW_EQUAL_in_phone_field991_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_phone_number_in_phone_field993 */ static ANTLR3_BITWORD FOLLOW_phone_number_in_phone_field993_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000080) }; static ANTLR3_BITSET_LIST FOLLOW_phone_number_in_phone_field993 = { FOLLOW_phone_number_in_phone_field993_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_CR_in_phone_field995 */ static ANTLR3_BITWORD FOLLOW_CR_in_phone_field995_bits[] = { ANTLR3_UINT64_LIT(0x0000000000002000) }; static ANTLR3_BITSET_LIST FOLLOW_CR_in_phone_field995 = { FOLLOW_CR_in_phone_field995_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_LF_in_phone_field997 */ static ANTLR3_BITWORD FOLLOW_LF_in_phone_field997_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_LF_in_phone_field997 = { FOLLOW_LF_in_phone_field997_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_alpha_num_in_connection1022 */ static ANTLR3_BITWORD FOLLOW_alpha_num_in_connection1022_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000800) }; static ANTLR3_BITSET_LIST FOLLOW_alpha_num_in_connection1022 = { FOLLOW_alpha_num_in_connection1022_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_EQUAL_in_connection1024 */ static ANTLR3_BITWORD FOLLOW_EQUAL_in_connection1024_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001240) }; static ANTLR3_BITSET_LIST FOLLOW_EQUAL_in_connection1024 = { FOLLOW_EQUAL_in_connection1024_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_nettype_in_connection1026 */ static ANTLR3_BITWORD FOLLOW_nettype_in_connection1026_bits[] = { ANTLR3_UINT64_LIT(0x0000000000080000) }; static ANTLR3_BITSET_LIST FOLLOW_nettype_in_connection1026 = { FOLLOW_nettype_in_connection1026_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SPACE_in_connection1048 */ static ANTLR3_BITWORD FOLLOW_SPACE_in_connection1048_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001240) }; static ANTLR3_BITSET_LIST FOLLOW_SPACE_in_connection1048 = { FOLLOW_SPACE_in_connection1048_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_addrtype_in_connection1050 */ static ANTLR3_BITWORD FOLLOW_addrtype_in_connection1050_bits[] = { ANTLR3_UINT64_LIT(0x0000000000080000) }; static ANTLR3_BITSET_LIST FOLLOW_addrtype_in_connection1050 = { FOLLOW_addrtype_in_connection1050_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SPACE_in_connection1071 */ static ANTLR3_BITWORD FOLLOW_SPACE_in_connection1071_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001750) }; static ANTLR3_BITSET_LIST FOLLOW_SPACE_in_connection1071 = { FOLLOW_SPACE_in_connection1071_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_connection_address_in_connection1073 */ static ANTLR3_BITWORD FOLLOW_connection_address_in_connection1073_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_connection_address_in_connection1073 = { FOLLOW_connection_address_in_connection1073_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_alpha_num_in_bandwidth1203 */ static ANTLR3_BITWORD FOLLOW_alpha_num_in_bandwidth1203_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000800) }; static ANTLR3_BITSET_LIST FOLLOW_alpha_num_in_bandwidth1203 = { FOLLOW_alpha_num_in_bandwidth1203_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_EQUAL_in_bandwidth1205 */ static ANTLR3_BITWORD FOLLOW_EQUAL_in_bandwidth1205_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001240) }; static ANTLR3_BITSET_LIST FOLLOW_EQUAL_in_bandwidth1205 = { FOLLOW_EQUAL_in_bandwidth1205_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_bwtype_in_bandwidth1207 */ static ANTLR3_BITWORD FOLLOW_bwtype_in_bandwidth1207_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000010) }; static ANTLR3_BITSET_LIST FOLLOW_bwtype_in_bandwidth1207 = { FOLLOW_bwtype_in_bandwidth1207_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_bandwidth1217 */ static ANTLR3_BITWORD FOLLOW_COLON_in_bandwidth1217_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000200) }; static ANTLR3_BITSET_LIST FOLLOW_COLON_in_bandwidth1217 = { FOLLOW_COLON_in_bandwidth1217_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_bandwidth_value_in_bandwidth1219 */ static ANTLR3_BITWORD FOLLOW_bandwidth_value_in_bandwidth1219_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_bandwidth_value_in_bandwidth1219 = { FOLLOW_bandwidth_value_in_bandwidth1219_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_alpha_num_in_time_field1236 */ static ANTLR3_BITWORD FOLLOW_alpha_num_in_time_field1236_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000800) }; static ANTLR3_BITSET_LIST FOLLOW_alpha_num_in_time_field1236 = { FOLLOW_alpha_num_in_time_field1236_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_EQUAL_in_time_field1238 */ static ANTLR3_BITWORD FOLLOW_EQUAL_in_time_field1238_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000200) }; static ANTLR3_BITSET_LIST FOLLOW_EQUAL_in_time_field1238 = { FOLLOW_EQUAL_in_time_field1238_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_start_time_in_time_field1254 */ static ANTLR3_BITWORD FOLLOW_start_time_in_time_field1254_bits[] = { ANTLR3_UINT64_LIT(0x0000000000080000) }; static ANTLR3_BITSET_LIST FOLLOW_start_time_in_time_field1254 = { FOLLOW_start_time_in_time_field1254_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SPACE_in_time_field1270 */ static ANTLR3_BITWORD FOLLOW_SPACE_in_time_field1270_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000200) }; static ANTLR3_BITSET_LIST FOLLOW_SPACE_in_time_field1270 = { FOLLOW_SPACE_in_time_field1270_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_stop_time_in_time_field1286 */ static ANTLR3_BITWORD FOLLOW_stop_time_in_time_field1286_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_stop_time_in_time_field1286 = { FOLLOW_stop_time_in_time_field1286_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_alpha_num_in_repeat_time1302 */ static ANTLR3_BITWORD FOLLOW_alpha_num_in_repeat_time1302_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000800) }; static ANTLR3_BITSET_LIST FOLLOW_alpha_num_in_repeat_time1302 = { FOLLOW_alpha_num_in_repeat_time1302_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_EQUAL_in_repeat_time1304 */ static ANTLR3_BITWORD FOLLOW_EQUAL_in_repeat_time1304_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001240) }; static ANTLR3_BITSET_LIST FOLLOW_EQUAL_in_repeat_time1304 = { FOLLOW_EQUAL_in_repeat_time1304_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_repeat_interval_in_repeat_time1306 */ static ANTLR3_BITWORD FOLLOW_repeat_interval_in_repeat_time1306_bits[] = { ANTLR3_UINT64_LIT(0x0000000000080000) }; static ANTLR3_BITSET_LIST FOLLOW_repeat_interval_in_repeat_time1306 = { FOLLOW_repeat_interval_in_repeat_time1306_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SPACE_in_repeat_time1309 */ static ANTLR3_BITWORD FOLLOW_SPACE_in_repeat_time1309_bits[] = { ANTLR3_UINT64_LIT(0x0000000000081240) }; static ANTLR3_BITSET_LIST FOLLOW_SPACE_in_repeat_time1309 = { FOLLOW_SPACE_in_repeat_time1309_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_typed_time_in_repeat_time1311 */ static ANTLR3_BITWORD FOLLOW_typed_time_in_repeat_time1311_bits[] = { ANTLR3_UINT64_LIT(0x0000000000080002) }; static ANTLR3_BITSET_LIST FOLLOW_typed_time_in_repeat_time1311 = { FOLLOW_typed_time_in_repeat_time1311_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_alpha_num_in_zone_adjustments1325 */ static ANTLR3_BITWORD FOLLOW_alpha_num_in_zone_adjustments1325_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000800) }; static ANTLR3_BITSET_LIST FOLLOW_alpha_num_in_zone_adjustments1325 = { FOLLOW_alpha_num_in_zone_adjustments1325_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_EQUAL_in_zone_adjustments1327 */ static ANTLR3_BITWORD FOLLOW_EQUAL_in_zone_adjustments1327_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000200) }; static ANTLR3_BITSET_LIST FOLLOW_EQUAL_in_zone_adjustments1327 = { FOLLOW_EQUAL_in_zone_adjustments1327_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_sdp_time_in_zone_adjustments1329 */ static ANTLR3_BITWORD FOLLOW_sdp_time_in_zone_adjustments1329_bits[] = { ANTLR3_UINT64_LIT(0x0000000000080000) }; static ANTLR3_BITSET_LIST FOLLOW_sdp_time_in_zone_adjustments1329 = { FOLLOW_sdp_time_in_zone_adjustments1329_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SPACE_in_zone_adjustments1331 */ static ANTLR3_BITWORD FOLLOW_SPACE_in_zone_adjustments1331_bits[] = { ANTLR3_UINT64_LIT(0x0000000000081340) }; static ANTLR3_BITSET_LIST FOLLOW_SPACE_in_zone_adjustments1331 = { FOLLOW_SPACE_in_zone_adjustments1331_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DASH_in_zone_adjustments1333 */ static ANTLR3_BITWORD FOLLOW_DASH_in_zone_adjustments1333_bits[] = { ANTLR3_UINT64_LIT(0x0000000000081240) }; static ANTLR3_BITSET_LIST FOLLOW_DASH_in_zone_adjustments1333 = { FOLLOW_DASH_in_zone_adjustments1333_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_typed_time_in_zone_adjustments1336 */ static ANTLR3_BITWORD FOLLOW_typed_time_in_zone_adjustments1336_bits[] = { ANTLR3_UINT64_LIT(0x0000000000080002) }; static ANTLR3_BITSET_LIST FOLLOW_typed_time_in_zone_adjustments1336 = { FOLLOW_typed_time_in_zone_adjustments1336_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SPACE_in_zone_adjustments1364 */ static ANTLR3_BITWORD FOLLOW_SPACE_in_zone_adjustments1364_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000200) }; static ANTLR3_BITSET_LIST FOLLOW_SPACE_in_zone_adjustments1364 = { FOLLOW_SPACE_in_zone_adjustments1364_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_sdp_time_in_zone_adjustments1366 */ static ANTLR3_BITWORD FOLLOW_sdp_time_in_zone_adjustments1366_bits[] = { ANTLR3_UINT64_LIT(0x0000000000080000) }; static ANTLR3_BITSET_LIST FOLLOW_sdp_time_in_zone_adjustments1366 = { FOLLOW_sdp_time_in_zone_adjustments1366_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SPACE_in_zone_adjustments1368 */ static ANTLR3_BITWORD FOLLOW_SPACE_in_zone_adjustments1368_bits[] = { ANTLR3_UINT64_LIT(0x0000000000081340) }; static ANTLR3_BITSET_LIST FOLLOW_SPACE_in_zone_adjustments1368 = { FOLLOW_SPACE_in_zone_adjustments1368_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DASH_in_zone_adjustments1370 */ static ANTLR3_BITWORD FOLLOW_DASH_in_zone_adjustments1370_bits[] = { ANTLR3_UINT64_LIT(0x0000000000081240) }; static ANTLR3_BITSET_LIST FOLLOW_DASH_in_zone_adjustments1370 = { FOLLOW_DASH_in_zone_adjustments1370_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_typed_time_in_zone_adjustments1373 */ static ANTLR3_BITWORD FOLLOW_typed_time_in_zone_adjustments1373_bits[] = { ANTLR3_UINT64_LIT(0x0000000000080002) }; static ANTLR3_BITSET_LIST FOLLOW_typed_time_in_zone_adjustments1373 = { FOLLOW_typed_time_in_zone_adjustments1373_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_alpha_num_in_key_field1393 */ static ANTLR3_BITWORD FOLLOW_alpha_num_in_key_field1393_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000800) }; static ANTLR3_BITSET_LIST FOLLOW_alpha_num_in_key_field1393 = { FOLLOW_alpha_num_in_key_field1393_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_EQUAL_in_key_field1395 */ static ANTLR3_BITWORD FOLLOW_EQUAL_in_key_field1395_bits[] = { ANTLR3_UINT64_LIT(0x0000000FFFFFDF70) }; static ANTLR3_BITSET_LIST FOLLOW_EQUAL_in_key_field1395 = { FOLLOW_EQUAL_in_key_field1395_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_key_value_in_key_field1397 */ static ANTLR3_BITWORD FOLLOW_key_value_in_key_field1397_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_key_value_in_key_field1397 = { FOLLOW_key_value_in_key_field1397_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_alpha_num_in_attribute1459 */ static ANTLR3_BITWORD FOLLOW_alpha_num_in_attribute1459_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000800) }; static ANTLR3_BITSET_LIST FOLLOW_alpha_num_in_attribute1459 = { FOLLOW_alpha_num_in_attribute1459_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_EQUAL_in_attribute1461 */ static ANTLR3_BITWORD FOLLOW_EQUAL_in_attribute1461_bits[] = { ANTLR3_UINT64_LIT(0x0000000FFFD01740) }; static ANTLR3_BITSET_LIST FOLLOW_EQUAL_in_attribute1461 = { FOLLOW_EQUAL_in_attribute1461_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_attribute_content_in_attribute1463 */ static ANTLR3_BITWORD FOLLOW_attribute_content_in_attribute1463_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_attribute_content_in_attribute1463 = { FOLLOW_attribute_content_in_attribute1463_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_attribute_name_in_attribute_content1487 */ static ANTLR3_BITWORD FOLLOW_attribute_name_in_attribute_content1487_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000012) }; static ANTLR3_BITSET_LIST FOLLOW_attribute_name_in_attribute_content1487 = { FOLLOW_attribute_name_in_attribute_content1487_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_attribute_content1490 */ static ANTLR3_BITWORD FOLLOW_COLON_in_attribute_content1490_bits[] = { ANTLR3_UINT64_LIT(0x0000000FFFFFDF70) }; static ANTLR3_BITSET_LIST FOLLOW_COLON_in_attribute_content1490 = { FOLLOW_COLON_in_attribute_content1490_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_attribute_value_in_attribute_content1494 */ static ANTLR3_BITWORD FOLLOW_attribute_value_in_attribute_content1494_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_attribute_value_in_attribute_content1494 = { FOLLOW_attribute_value_in_attribute_content1494_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_alpha_num_in_rtcp_xr_attribute1523 */ static ANTLR3_BITWORD FOLLOW_alpha_num_in_rtcp_xr_attribute1523_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000800) }; static ANTLR3_BITSET_LIST FOLLOW_alpha_num_in_rtcp_xr_attribute1523 = { FOLLOW_alpha_num_in_rtcp_xr_attribute1523_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_EQUAL_in_rtcp_xr_attribute1525 */ static ANTLR3_BITWORD FOLLOW_EQUAL_in_rtcp_xr_attribute1525_bits[] = { ANTLR3_UINT64_LIT(0x0000000FFFD01740) }; static ANTLR3_BITSET_LIST FOLLOW_EQUAL_in_rtcp_xr_attribute1525 = { FOLLOW_EQUAL_in_rtcp_xr_attribute1525_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_attribute_name_in_rtcp_xr_attribute1529 */ static ANTLR3_BITWORD FOLLOW_attribute_name_in_rtcp_xr_attribute1529_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000012) }; static ANTLR3_BITSET_LIST FOLLOW_attribute_name_in_rtcp_xr_attribute1529 = { FOLLOW_attribute_name_in_rtcp_xr_attribute1529_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_rtcp_xr_attribute1534 */ static ANTLR3_BITWORD FOLLOW_COLON_in_rtcp_xr_attribute1534_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001140) }; static ANTLR3_BITSET_LIST FOLLOW_COLON_in_rtcp_xr_attribute1534 = { FOLLOW_COLON_in_rtcp_xr_attribute1534_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_xr_attribute_value_in_rtcp_xr_attribute1536 */ static ANTLR3_BITWORD FOLLOW_rtcp_xr_attribute_value_in_rtcp_xr_attribute1536_bits[] = { ANTLR3_UINT64_LIT(0x0000000000080002) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_xr_attribute_value_in_rtcp_xr_attribute1536 = { FOLLOW_rtcp_xr_attribute_value_in_rtcp_xr_attribute1536_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SPACE_in_rtcp_xr_attribute1539 */ static ANTLR3_BITWORD FOLLOW_SPACE_in_rtcp_xr_attribute1539_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001140) }; static ANTLR3_BITSET_LIST FOLLOW_SPACE_in_rtcp_xr_attribute1539 = { FOLLOW_SPACE_in_rtcp_xr_attribute1539_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_xr_attribute_value_in_rtcp_xr_attribute1541 */ static ANTLR3_BITWORD FOLLOW_rtcp_xr_attribute_value_in_rtcp_xr_attribute1541_bits[] = { ANTLR3_UINT64_LIT(0x0000000000080002) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_xr_attribute_value_in_rtcp_xr_attribute1541 = { FOLLOW_rtcp_xr_attribute_value_in_rtcp_xr_attribute1541_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_pkt_loss_rle_in_rtcp_xr_attribute_value1564 */ static ANTLR3_BITWORD FOLLOW_pkt_loss_rle_in_rtcp_xr_attribute_value1564_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_pkt_loss_rle_in_rtcp_xr_attribute_value1564 = { FOLLOW_pkt_loss_rle_in_rtcp_xr_attribute_value1564_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_pkt_dup_rle_in_rtcp_xr_attribute_value1573 */ static ANTLR3_BITWORD FOLLOW_pkt_dup_rle_in_rtcp_xr_attribute_value1573_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_pkt_dup_rle_in_rtcp_xr_attribute_value1573 = { FOLLOW_pkt_dup_rle_in_rtcp_xr_attribute_value1573_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_pkt_rcpt_times_in_rtcp_xr_attribute_value1582 */ static ANTLR3_BITWORD FOLLOW_pkt_rcpt_times_in_rtcp_xr_attribute_value1582_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_pkt_rcpt_times_in_rtcp_xr_attribute_value1582 = { FOLLOW_pkt_rcpt_times_in_rtcp_xr_attribute_value1582_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rcvr_rtt_in_rtcp_xr_attribute_value1591 */ static ANTLR3_BITWORD FOLLOW_rcvr_rtt_in_rtcp_xr_attribute_value1591_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_rcvr_rtt_in_rtcp_xr_attribute_value1591 = { FOLLOW_rcvr_rtt_in_rtcp_xr_attribute_value1591_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_stat_summary_in_rtcp_xr_attribute_value1600 */ static ANTLR3_BITWORD FOLLOW_stat_summary_in_rtcp_xr_attribute_value1600_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_stat_summary_in_rtcp_xr_attribute_value1600 = { FOLLOW_stat_summary_in_rtcp_xr_attribute_value1600_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_voip_metrics_in_rtcp_xr_attribute_value1609 */ static ANTLR3_BITWORD FOLLOW_voip_metrics_in_rtcp_xr_attribute_value1609_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_voip_metrics_in_rtcp_xr_attribute_value1609 = { FOLLOW_voip_metrics_in_rtcp_xr_attribute_value1609_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_xr_attribute_name_in_pkt_loss_rle1620 */ static ANTLR3_BITWORD FOLLOW_rtcp_xr_attribute_name_in_pkt_loss_rle1620_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000802) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_xr_attribute_name_in_pkt_loss_rle1620 = { FOLLOW_rtcp_xr_attribute_name_in_pkt_loss_rle1620_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_EQUAL_in_pkt_loss_rle1625 */ static ANTLR3_BITWORD FOLLOW_EQUAL_in_pkt_loss_rle1625_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000200) }; static ANTLR3_BITSET_LIST FOLLOW_EQUAL_in_pkt_loss_rle1625 = { FOLLOW_EQUAL_in_pkt_loss_rle1625_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_xr_max_size_in_pkt_loss_rle1627 */ static ANTLR3_BITWORD FOLLOW_rtcp_xr_max_size_in_pkt_loss_rle1627_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_xr_max_size_in_pkt_loss_rle1627 = { FOLLOW_rtcp_xr_max_size_in_pkt_loss_rle1627_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_xr_attribute_name_in_pkt_dup_rle1641 */ static ANTLR3_BITWORD FOLLOW_rtcp_xr_attribute_name_in_pkt_dup_rle1641_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000802) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_xr_attribute_name_in_pkt_dup_rle1641 = { FOLLOW_rtcp_xr_attribute_name_in_pkt_dup_rle1641_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_EQUAL_in_pkt_dup_rle1646 */ static ANTLR3_BITWORD FOLLOW_EQUAL_in_pkt_dup_rle1646_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000200) }; static ANTLR3_BITSET_LIST FOLLOW_EQUAL_in_pkt_dup_rle1646 = { FOLLOW_EQUAL_in_pkt_dup_rle1646_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_xr_max_size_in_pkt_dup_rle1648 */ static ANTLR3_BITWORD FOLLOW_rtcp_xr_max_size_in_pkt_dup_rle1648_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_xr_max_size_in_pkt_dup_rle1648 = { FOLLOW_rtcp_xr_max_size_in_pkt_dup_rle1648_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_xr_attribute_name_in_pkt_rcpt_times1662 */ static ANTLR3_BITWORD FOLLOW_rtcp_xr_attribute_name_in_pkt_rcpt_times1662_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000802) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_xr_attribute_name_in_pkt_rcpt_times1662 = { FOLLOW_rtcp_xr_attribute_name_in_pkt_rcpt_times1662_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_EQUAL_in_pkt_rcpt_times1667 */ static ANTLR3_BITWORD FOLLOW_EQUAL_in_pkt_rcpt_times1667_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000200) }; static ANTLR3_BITSET_LIST FOLLOW_EQUAL_in_pkt_rcpt_times1667 = { FOLLOW_EQUAL_in_pkt_rcpt_times1667_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_xr_max_size_in_pkt_rcpt_times1669 */ static ANTLR3_BITWORD FOLLOW_rtcp_xr_max_size_in_pkt_rcpt_times1669_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_xr_max_size_in_pkt_rcpt_times1669 = { FOLLOW_rtcp_xr_max_size_in_pkt_rcpt_times1669_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_xr_attribute_name_in_rcvr_rtt1683 */ static ANTLR3_BITWORD FOLLOW_rtcp_xr_attribute_name_in_rcvr_rtt1683_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000800) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_xr_attribute_name_in_rcvr_rtt1683 = { FOLLOW_rtcp_xr_attribute_name_in_rcvr_rtt1683_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_EQUAL_in_rcvr_rtt1687 */ static ANTLR3_BITWORD FOLLOW_EQUAL_in_rcvr_rtt1687_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001140) }; static ANTLR3_BITSET_LIST FOLLOW_EQUAL_in_rcvr_rtt1687 = { FOLLOW_EQUAL_in_rcvr_rtt1687_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_xr_rcvr_rtt_mode_in_rcvr_rtt1691 */ static ANTLR3_BITWORD FOLLOW_rtcp_xr_rcvr_rtt_mode_in_rcvr_rtt1691_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000012) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_xr_rcvr_rtt_mode_in_rcvr_rtt1691 = { FOLLOW_rtcp_xr_rcvr_rtt_mode_in_rcvr_rtt1691_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_rcvr_rtt1694 */ static ANTLR3_BITWORD FOLLOW_COLON_in_rcvr_rtt1694_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000200) }; static ANTLR3_BITSET_LIST FOLLOW_COLON_in_rcvr_rtt1694 = { FOLLOW_COLON_in_rcvr_rtt1694_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_xr_max_size_in_rcvr_rtt1698 */ static ANTLR3_BITWORD FOLLOW_rtcp_xr_max_size_in_rcvr_rtt1698_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_xr_max_size_in_rcvr_rtt1698 = { FOLLOW_rtcp_xr_max_size_in_rcvr_rtt1698_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_xr_attribute_name_in_stat_summary1713 */ static ANTLR3_BITWORD FOLLOW_rtcp_xr_attribute_name_in_stat_summary1713_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000802) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_xr_attribute_name_in_stat_summary1713 = { FOLLOW_rtcp_xr_attribute_name_in_stat_summary1713_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_EQUAL_in_stat_summary1720 */ static ANTLR3_BITWORD FOLLOW_EQUAL_in_stat_summary1720_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001140) }; static ANTLR3_BITSET_LIST FOLLOW_EQUAL_in_stat_summary1720 = { FOLLOW_EQUAL_in_stat_summary1720_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_xr_stat_summary_flag_in_stat_summary1722 */ static ANTLR3_BITWORD FOLLOW_rtcp_xr_stat_summary_flag_in_stat_summary1722_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000022) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_xr_stat_summary_flag_in_stat_summary1722 = { FOLLOW_rtcp_xr_stat_summary_flag_in_stat_summary1722_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_stat_summary1725 */ static ANTLR3_BITWORD FOLLOW_COMMA_in_stat_summary1725_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001140) }; static ANTLR3_BITSET_LIST FOLLOW_COMMA_in_stat_summary1725 = { FOLLOW_COMMA_in_stat_summary1725_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_xr_stat_summary_flag_in_stat_summary1727 */ static ANTLR3_BITWORD FOLLOW_rtcp_xr_stat_summary_flag_in_stat_summary1727_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000022) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_xr_stat_summary_flag_in_stat_summary1727 = { FOLLOW_rtcp_xr_stat_summary_flag_in_stat_summary1727_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_xr_attribute_name_in_voip_metrics1742 */ static ANTLR3_BITWORD FOLLOW_rtcp_xr_attribute_name_in_voip_metrics1742_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_xr_attribute_name_in_voip_metrics1742 = { FOLLOW_rtcp_xr_attribute_name_in_voip_metrics1742_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_xr_stat_summary_flag_value_in_rtcp_xr_stat_summary_flag1756 */ static ANTLR3_BITWORD FOLLOW_rtcp_xr_stat_summary_flag_value_in_rtcp_xr_stat_summary_flag1756_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_xr_stat_summary_flag_value_in_rtcp_xr_stat_summary_flag1756 = { FOLLOW_rtcp_xr_stat_summary_flag_value_in_rtcp_xr_stat_summary_flag1756_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DIGIT_in_rtcp_xr_max_size1766 */ static ANTLR3_BITWORD FOLLOW_DIGIT_in_rtcp_xr_max_size1766_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000202) }; static ANTLR3_BITSET_LIST FOLLOW_DIGIT_in_rtcp_xr_max_size1766 = { FOLLOW_DIGIT_in_rtcp_xr_max_size1766_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_alpha_num_in_rtcp_fb_attribute1789 */ static ANTLR3_BITWORD FOLLOW_alpha_num_in_rtcp_fb_attribute1789_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000800) }; static ANTLR3_BITSET_LIST FOLLOW_alpha_num_in_rtcp_fb_attribute1789 = { FOLLOW_alpha_num_in_rtcp_fb_attribute1789_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_EQUAL_in_rtcp_fb_attribute1791 */ static ANTLR3_BITWORD FOLLOW_EQUAL_in_rtcp_fb_attribute1791_bits[] = { ANTLR3_UINT64_LIT(0x0000000FFFD01740) }; static ANTLR3_BITSET_LIST FOLLOW_EQUAL_in_rtcp_fb_attribute1791 = { FOLLOW_EQUAL_in_rtcp_fb_attribute1791_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_attribute_name_in_rtcp_fb_attribute1795 */ static ANTLR3_BITWORD FOLLOW_attribute_name_in_rtcp_fb_attribute1795_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000010) }; static ANTLR3_BITSET_LIST FOLLOW_attribute_name_in_rtcp_fb_attribute1795 = { FOLLOW_attribute_name_in_rtcp_fb_attribute1795_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_rtcp_fb_attribute1799 */ static ANTLR3_BITWORD FOLLOW_COLON_in_rtcp_fb_attribute1799_bits[] = { ANTLR3_UINT64_LIT(0x0000000000100200) }; static ANTLR3_BITSET_LIST FOLLOW_COLON_in_rtcp_fb_attribute1799 = { FOLLOW_COLON_in_rtcp_fb_attribute1799_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_fb_pt_in_rtcp_fb_attribute1801 */ static ANTLR3_BITWORD FOLLOW_rtcp_fb_pt_in_rtcp_fb_attribute1801_bits[] = { ANTLR3_UINT64_LIT(0x0000000000080000) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_fb_pt_in_rtcp_fb_attribute1801 = { FOLLOW_rtcp_fb_pt_in_rtcp_fb_attribute1801_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SPACE_in_rtcp_fb_attribute1803 */ static ANTLR3_BITWORD FOLLOW_SPACE_in_rtcp_fb_attribute1803_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001140) }; static ANTLR3_BITSET_LIST FOLLOW_SPACE_in_rtcp_fb_attribute1803 = { FOLLOW_SPACE_in_rtcp_fb_attribute1803_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_fb_val_in_rtcp_fb_attribute1805 */ static ANTLR3_BITWORD FOLLOW_rtcp_fb_val_in_rtcp_fb_attribute1805_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_fb_val_in_rtcp_fb_attribute1805 = { FOLLOW_rtcp_fb_val_in_rtcp_fb_attribute1805_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_STAR_in_rtcp_fb_pt1818 */ static ANTLR3_BITWORD FOLLOW_STAR_in_rtcp_fb_pt1818_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_STAR_in_rtcp_fb_pt1818 = { FOLLOW_STAR_in_rtcp_fb_pt1818_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_integer_in_rtcp_fb_pt1824 */ static ANTLR3_BITWORD FOLLOW_integer_in_rtcp_fb_pt1824_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_integer_in_rtcp_fb_pt1824 = { FOLLOW_integer_in_rtcp_fb_pt1824_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_fb_ack_val_in_rtcp_fb_val1839 */ static ANTLR3_BITWORD FOLLOW_rtcp_fb_ack_val_in_rtcp_fb_val1839_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_fb_ack_val_in_rtcp_fb_val1839 = { FOLLOW_rtcp_fb_ack_val_in_rtcp_fb_val1839_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_fb_nack_val_in_rtcp_fb_val1847 */ static ANTLR3_BITWORD FOLLOW_rtcp_fb_nack_val_in_rtcp_fb_val1847_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_fb_nack_val_in_rtcp_fb_val1847 = { FOLLOW_rtcp_fb_nack_val_in_rtcp_fb_val1847_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_fb_trr_int_val_in_rtcp_fb_val1855 */ static ANTLR3_BITWORD FOLLOW_rtcp_fb_trr_int_val_in_rtcp_fb_val1855_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_fb_trr_int_val_in_rtcp_fb_val1855 = { FOLLOW_rtcp_fb_trr_int_val_in_rtcp_fb_val1855_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_fb_ccm_val_in_rtcp_fb_val1863 */ static ANTLR3_BITWORD FOLLOW_rtcp_fb_ccm_val_in_rtcp_fb_val1863_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_fb_ccm_val_in_rtcp_fb_val1863 = { FOLLOW_rtcp_fb_ccm_val_in_rtcp_fb_val1863_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_fb_id_val_in_rtcp_fb_val1871 */ static ANTLR3_BITWORD FOLLOW_rtcp_fb_id_val_in_rtcp_fb_val1871_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_fb_id_val_in_rtcp_fb_val1871 = { FOLLOW_rtcp_fb_id_val_in_rtcp_fb_val1871_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_fb_attribute_name_in_rtcp_fb_ack_val1881 */ static ANTLR3_BITWORD FOLLOW_rtcp_fb_attribute_name_in_rtcp_fb_ack_val1881_bits[] = { ANTLR3_UINT64_LIT(0x0000000000080002) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_fb_attribute_name_in_rtcp_fb_ack_val1881 = { FOLLOW_rtcp_fb_attribute_name_in_rtcp_fb_ack_val1881_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SPACE_in_rtcp_fb_ack_val1886 */ static ANTLR3_BITWORD FOLLOW_SPACE_in_rtcp_fb_ack_val1886_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001140) }; static ANTLR3_BITSET_LIST FOLLOW_SPACE_in_rtcp_fb_ack_val1886 = { FOLLOW_SPACE_in_rtcp_fb_ack_val1886_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_fb_ack_param_in_rtcp_fb_ack_val1888 */ static ANTLR3_BITWORD FOLLOW_rtcp_fb_ack_param_in_rtcp_fb_ack_val1888_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_fb_ack_param_in_rtcp_fb_ack_val1888 = { FOLLOW_rtcp_fb_ack_param_in_rtcp_fb_ack_val1888_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_fb_attribute_name_in_rtcp_fb_nack_val1902 */ static ANTLR3_BITWORD FOLLOW_rtcp_fb_attribute_name_in_rtcp_fb_nack_val1902_bits[] = { ANTLR3_UINT64_LIT(0x0000000000080002) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_fb_attribute_name_in_rtcp_fb_nack_val1902 = { FOLLOW_rtcp_fb_attribute_name_in_rtcp_fb_nack_val1902_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SPACE_in_rtcp_fb_nack_val1907 */ static ANTLR3_BITWORD FOLLOW_SPACE_in_rtcp_fb_nack_val1907_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001140) }; static ANTLR3_BITSET_LIST FOLLOW_SPACE_in_rtcp_fb_nack_val1907 = { FOLLOW_SPACE_in_rtcp_fb_nack_val1907_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_fb_nack_param_in_rtcp_fb_nack_val1909 */ static ANTLR3_BITWORD FOLLOW_rtcp_fb_nack_param_in_rtcp_fb_nack_val1909_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_fb_nack_param_in_rtcp_fb_nack_val1909 = { FOLLOW_rtcp_fb_nack_param_in_rtcp_fb_nack_val1909_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_fb_attribute_name_in_rtcp_fb_trr_int_val1923 */ static ANTLR3_BITWORD FOLLOW_rtcp_fb_attribute_name_in_rtcp_fb_trr_int_val1923_bits[] = { ANTLR3_UINT64_LIT(0x0000000000080000) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_fb_attribute_name_in_rtcp_fb_trr_int_val1923 = { FOLLOW_rtcp_fb_attribute_name_in_rtcp_fb_trr_int_val1923_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SPACE_in_rtcp_fb_trr_int_val1927 */ static ANTLR3_BITWORD FOLLOW_SPACE_in_rtcp_fb_trr_int_val1927_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000200) }; static ANTLR3_BITSET_LIST FOLLOW_SPACE_in_rtcp_fb_trr_int_val1927 = { FOLLOW_SPACE_in_rtcp_fb_trr_int_val1927_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_integer_in_rtcp_fb_trr_int_val1929 */ static ANTLR3_BITWORD FOLLOW_integer_in_rtcp_fb_trr_int_val1929_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_integer_in_rtcp_fb_trr_int_val1929 = { FOLLOW_integer_in_rtcp_fb_trr_int_val1929_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_fb_attribute_name_in_rtcp_fb_ccm_val1941 */ static ANTLR3_BITWORD FOLLOW_rtcp_fb_attribute_name_in_rtcp_fb_ccm_val1941_bits[] = { ANTLR3_UINT64_LIT(0x0000000000080002) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_fb_attribute_name_in_rtcp_fb_ccm_val1941 = { FOLLOW_rtcp_fb_attribute_name_in_rtcp_fb_ccm_val1941_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SPACE_in_rtcp_fb_ccm_val1946 */ static ANTLR3_BITWORD FOLLOW_SPACE_in_rtcp_fb_ccm_val1946_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001140) }; static ANTLR3_BITSET_LIST FOLLOW_SPACE_in_rtcp_fb_ccm_val1946 = { FOLLOW_SPACE_in_rtcp_fb_ccm_val1946_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_fb_ccm_param_in_rtcp_fb_ccm_val1948 */ static ANTLR3_BITWORD FOLLOW_rtcp_fb_ccm_param_in_rtcp_fb_ccm_val1948_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_fb_ccm_param_in_rtcp_fb_ccm_val1948 = { FOLLOW_rtcp_fb_ccm_param_in_rtcp_fb_ccm_val1948_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_fb_attribute_name_in_rtcp_fb_id_val1960 */ static ANTLR3_BITWORD FOLLOW_rtcp_fb_attribute_name_in_rtcp_fb_id_val1960_bits[] = { ANTLR3_UINT64_LIT(0x0000000000080002) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_fb_attribute_name_in_rtcp_fb_id_val1960 = { FOLLOW_rtcp_fb_attribute_name_in_rtcp_fb_id_val1960_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SPACE_in_rtcp_fb_id_val1963 */ static ANTLR3_BITWORD FOLLOW_SPACE_in_rtcp_fb_id_val1963_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001140) }; static ANTLR3_BITSET_LIST FOLLOW_SPACE_in_rtcp_fb_id_val1963 = { FOLLOW_SPACE_in_rtcp_fb_id_val1963_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_fb_param_in_rtcp_fb_id_val1965 */ static ANTLR3_BITWORD FOLLOW_rtcp_fb_param_in_rtcp_fb_id_val1965_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_fb_param_in_rtcp_fb_id_val1965 = { FOLLOW_rtcp_fb_param_in_rtcp_fb_id_val1965_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_fb_app_param_in_rtcp_fb_param1979 */ static ANTLR3_BITWORD FOLLOW_rtcp_fb_app_param_in_rtcp_fb_param1979_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_fb_app_param_in_rtcp_fb_param1979 = { FOLLOW_rtcp_fb_app_param_in_rtcp_fb_param1979_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_fb_token_param_in_rtcp_fb_param1987 */ static ANTLR3_BITWORD FOLLOW_rtcp_fb_token_param_in_rtcp_fb_param1987_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_fb_token_param_in_rtcp_fb_param1987 = { FOLLOW_rtcp_fb_token_param_in_rtcp_fb_param1987_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_fb_rpsi_param_in_rtcp_fb_ack_param1999 */ static ANTLR3_BITWORD FOLLOW_rtcp_fb_rpsi_param_in_rtcp_fb_ack_param1999_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_fb_rpsi_param_in_rtcp_fb_ack_param1999 = { FOLLOW_rtcp_fb_rpsi_param_in_rtcp_fb_ack_param1999_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_fb_app_param_in_rtcp_fb_ack_param2007 */ static ANTLR3_BITWORD FOLLOW_rtcp_fb_app_param_in_rtcp_fb_ack_param2007_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_fb_app_param_in_rtcp_fb_ack_param2007 = { FOLLOW_rtcp_fb_app_param_in_rtcp_fb_ack_param2007_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_fb_token_param_in_rtcp_fb_ack_param2015 */ static ANTLR3_BITWORD FOLLOW_rtcp_fb_token_param_in_rtcp_fb_ack_param2015_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_fb_token_param_in_rtcp_fb_ack_param2015 = { FOLLOW_rtcp_fb_token_param_in_rtcp_fb_ack_param2015_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_fb_pli_param_in_rtcp_fb_nack_param2027 */ static ANTLR3_BITWORD FOLLOW_rtcp_fb_pli_param_in_rtcp_fb_nack_param2027_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_fb_pli_param_in_rtcp_fb_nack_param2027 = { FOLLOW_rtcp_fb_pli_param_in_rtcp_fb_nack_param2027_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_fb_sli_param_in_rtcp_fb_nack_param2035 */ static ANTLR3_BITWORD FOLLOW_rtcp_fb_sli_param_in_rtcp_fb_nack_param2035_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_fb_sli_param_in_rtcp_fb_nack_param2035 = { FOLLOW_rtcp_fb_sli_param_in_rtcp_fb_nack_param2035_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_fb_rpsi_param_in_rtcp_fb_nack_param2043 */ static ANTLR3_BITWORD FOLLOW_rtcp_fb_rpsi_param_in_rtcp_fb_nack_param2043_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_fb_rpsi_param_in_rtcp_fb_nack_param2043 = { FOLLOW_rtcp_fb_rpsi_param_in_rtcp_fb_nack_param2043_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_fb_app_param_in_rtcp_fb_nack_param2051 */ static ANTLR3_BITWORD FOLLOW_rtcp_fb_app_param_in_rtcp_fb_nack_param2051_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_fb_app_param_in_rtcp_fb_nack_param2051 = { FOLLOW_rtcp_fb_app_param_in_rtcp_fb_nack_param2051_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_fb_token_param_in_rtcp_fb_nack_param2059 */ static ANTLR3_BITWORD FOLLOW_rtcp_fb_token_param_in_rtcp_fb_nack_param2059_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_fb_token_param_in_rtcp_fb_nack_param2059 = { FOLLOW_rtcp_fb_token_param_in_rtcp_fb_nack_param2059_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_fb_attribute_name_in_rtcp_fb_pli_param2069 */ static ANTLR3_BITWORD FOLLOW_rtcp_fb_attribute_name_in_rtcp_fb_pli_param2069_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_fb_attribute_name_in_rtcp_fb_pli_param2069 = { FOLLOW_rtcp_fb_attribute_name_in_rtcp_fb_pli_param2069_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_fb_attribute_name_in_rtcp_fb_sli_param2083 */ static ANTLR3_BITWORD FOLLOW_rtcp_fb_attribute_name_in_rtcp_fb_sli_param2083_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_fb_attribute_name_in_rtcp_fb_sli_param2083 = { FOLLOW_rtcp_fb_attribute_name_in_rtcp_fb_sli_param2083_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_fb_attribute_name_in_rtcp_fb_rpsi_param2097 */ static ANTLR3_BITWORD FOLLOW_rtcp_fb_attribute_name_in_rtcp_fb_rpsi_param2097_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_fb_attribute_name_in_rtcp_fb_rpsi_param2097 = { FOLLOW_rtcp_fb_attribute_name_in_rtcp_fb_rpsi_param2097_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_fb_attribute_name_in_rtcp_fb_app_param2111 */ static ANTLR3_BITWORD FOLLOW_rtcp_fb_attribute_name_in_rtcp_fb_app_param2111_bits[] = { ANTLR3_UINT64_LIT(0x0000000000080000) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_fb_attribute_name_in_rtcp_fb_app_param2111 = { FOLLOW_rtcp_fb_attribute_name_in_rtcp_fb_app_param2111_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SPACE_in_rtcp_fb_app_param2116 */ static ANTLR3_BITWORD FOLLOW_SPACE_in_rtcp_fb_app_param2116_bits[] = { ANTLR3_UINT64_LIT(0x0000000000008000) }; static ANTLR3_BITSET_LIST FOLLOW_SPACE_in_rtcp_fb_app_param2116 = { FOLLOW_SPACE_in_rtcp_fb_app_param2116_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_byte_string_in_rtcp_fb_app_param2118 */ static ANTLR3_BITWORD FOLLOW_byte_string_in_rtcp_fb_app_param2118_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_byte_string_in_rtcp_fb_app_param2118 = { FOLLOW_byte_string_in_rtcp_fb_app_param2118_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_fb_fir_param_in_rtcp_fb_ccm_param2133 */ static ANTLR3_BITWORD FOLLOW_rtcp_fb_fir_param_in_rtcp_fb_ccm_param2133_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_fb_fir_param_in_rtcp_fb_ccm_param2133 = { FOLLOW_rtcp_fb_fir_param_in_rtcp_fb_ccm_param2133_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_fb_tmmbr_param_in_rtcp_fb_ccm_param2141 */ static ANTLR3_BITWORD FOLLOW_rtcp_fb_tmmbr_param_in_rtcp_fb_ccm_param2141_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_fb_tmmbr_param_in_rtcp_fb_ccm_param2141 = { FOLLOW_rtcp_fb_tmmbr_param_in_rtcp_fb_ccm_param2141_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_fb_token_param_in_rtcp_fb_ccm_param2149 */ static ANTLR3_BITWORD FOLLOW_rtcp_fb_token_param_in_rtcp_fb_ccm_param2149_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_fb_token_param_in_rtcp_fb_ccm_param2149 = { FOLLOW_rtcp_fb_token_param_in_rtcp_fb_ccm_param2149_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_fb_attribute_name_in_rtcp_fb_fir_param2159 */ static ANTLR3_BITWORD FOLLOW_rtcp_fb_attribute_name_in_rtcp_fb_fir_param2159_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_fb_attribute_name_in_rtcp_fb_fir_param2159 = { FOLLOW_rtcp_fb_attribute_name_in_rtcp_fb_fir_param2159_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_fb_attribute_name_in_rtcp_fb_tmmbr_param2173 */ static ANTLR3_BITWORD FOLLOW_rtcp_fb_attribute_name_in_rtcp_fb_tmmbr_param2173_bits[] = { ANTLR3_UINT64_LIT(0x0000000000080002) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_fb_attribute_name_in_rtcp_fb_tmmbr_param2173 = { FOLLOW_rtcp_fb_attribute_name_in_rtcp_fb_tmmbr_param2173_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SPACE_in_rtcp_fb_tmmbr_param2178 */ static ANTLR3_BITWORD FOLLOW_SPACE_in_rtcp_fb_tmmbr_param2178_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001140) }; static ANTLR3_BITSET_LIST FOLLOW_SPACE_in_rtcp_fb_tmmbr_param2178 = { FOLLOW_SPACE_in_rtcp_fb_tmmbr_param2178_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_fb_tmmbr_smaxpr_param_in_rtcp_fb_tmmbr_param2180 */ static ANTLR3_BITWORD FOLLOW_rtcp_fb_tmmbr_smaxpr_param_in_rtcp_fb_tmmbr_param2180_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_fb_tmmbr_smaxpr_param_in_rtcp_fb_tmmbr_param2180 = { FOLLOW_rtcp_fb_tmmbr_smaxpr_param_in_rtcp_fb_tmmbr_param2180_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_fb_attribute_name_in_rtcp_fb_tmmbr_smaxpr_param2194 */ static ANTLR3_BITWORD FOLLOW_rtcp_fb_attribute_name_in_rtcp_fb_tmmbr_smaxpr_param2194_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000800) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_fb_attribute_name_in_rtcp_fb_tmmbr_smaxpr_param2194 = { FOLLOW_rtcp_fb_attribute_name_in_rtcp_fb_tmmbr_smaxpr_param2194_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_EQUAL_in_rtcp_fb_tmmbr_smaxpr_param2198 */ static ANTLR3_BITWORD FOLLOW_EQUAL_in_rtcp_fb_tmmbr_smaxpr_param2198_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000200) }; static ANTLR3_BITSET_LIST FOLLOW_EQUAL_in_rtcp_fb_tmmbr_smaxpr_param2198 = { FOLLOW_EQUAL_in_rtcp_fb_tmmbr_smaxpr_param2198_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_fb_tmmbr_smaxpr_in_rtcp_fb_tmmbr_smaxpr_param2202 */ static ANTLR3_BITWORD FOLLOW_rtcp_fb_tmmbr_smaxpr_in_rtcp_fb_tmmbr_smaxpr_param2202_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_fb_tmmbr_smaxpr_in_rtcp_fb_tmmbr_smaxpr_param2202 = { FOLLOW_rtcp_fb_tmmbr_smaxpr_in_rtcp_fb_tmmbr_smaxpr_param2202_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DIGIT_in_rtcp_fb_tmmbr_smaxpr2212 */ static ANTLR3_BITWORD FOLLOW_DIGIT_in_rtcp_fb_tmmbr_smaxpr2212_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000202) }; static ANTLR3_BITSET_LIST FOLLOW_DIGIT_in_rtcp_fb_tmmbr_smaxpr2212 = { FOLLOW_DIGIT_in_rtcp_fb_tmmbr_smaxpr2212_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_fb_attribute_name_in_rtcp_fb_token_param2221 */ static ANTLR3_BITWORD FOLLOW_rtcp_fb_attribute_name_in_rtcp_fb_token_param2221_bits[] = { ANTLR3_UINT64_LIT(0x0000000000080002) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_fb_attribute_name_in_rtcp_fb_token_param2221 = { FOLLOW_rtcp_fb_attribute_name_in_rtcp_fb_token_param2221_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SPACE_in_rtcp_fb_token_param2224 */ static ANTLR3_BITWORD FOLLOW_SPACE_in_rtcp_fb_token_param2224_bits[] = { ANTLR3_UINT64_LIT(0x0000000000008000) }; static ANTLR3_BITSET_LIST FOLLOW_SPACE_in_rtcp_fb_token_param2224 = { FOLLOW_SPACE_in_rtcp_fb_token_param2224_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_byte_string_in_rtcp_fb_token_param2226 */ static ANTLR3_BITWORD FOLLOW_byte_string_in_rtcp_fb_token_param2226_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_byte_string_in_rtcp_fb_token_param2226 = { FOLLOW_byte_string_in_rtcp_fb_token_param2226_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_media_in_media_description2269 */ static ANTLR3_BITWORD FOLLOW_media_in_media_description2269_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000080) }; static ANTLR3_BITSET_LIST FOLLOW_media_in_media_description2269 = { FOLLOW_media_in_media_description2269_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_CR_in_media_description2271 */ static ANTLR3_BITWORD FOLLOW_CR_in_media_description2271_bits[] = { ANTLR3_UINT64_LIT(0x0000000000002000) }; static ANTLR3_BITSET_LIST FOLLOW_CR_in_media_description2271 = { FOLLOW_CR_in_media_description2271_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_LF_in_media_description2273 */ static ANTLR3_BITWORD FOLLOW_LF_in_media_description2273_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001242) }; static ANTLR3_BITSET_LIST FOLLOW_LF_in_media_description2273 = { FOLLOW_LF_in_media_description2273_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_info_in_media_description2299 */ static ANTLR3_BITWORD FOLLOW_info_in_media_description2299_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000080) }; static ANTLR3_BITSET_LIST FOLLOW_info_in_media_description2299 = { FOLLOW_info_in_media_description2299_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_CR_in_media_description2303 */ static ANTLR3_BITWORD FOLLOW_CR_in_media_description2303_bits[] = { ANTLR3_UINT64_LIT(0x0000000000002000) }; static ANTLR3_BITSET_LIST FOLLOW_CR_in_media_description2303 = { FOLLOW_CR_in_media_description2303_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_LF_in_media_description2305 */ static ANTLR3_BITWORD FOLLOW_LF_in_media_description2305_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001242) }; static ANTLR3_BITSET_LIST FOLLOW_LF_in_media_description2305 = { FOLLOW_LF_in_media_description2305_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_connection_in_media_description2331 */ static ANTLR3_BITWORD FOLLOW_connection_in_media_description2331_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000080) }; static ANTLR3_BITSET_LIST FOLLOW_connection_in_media_description2331 = { FOLLOW_connection_in_media_description2331_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_CR_in_media_description2335 */ static ANTLR3_BITWORD FOLLOW_CR_in_media_description2335_bits[] = { ANTLR3_UINT64_LIT(0x0000000000002000) }; static ANTLR3_BITSET_LIST FOLLOW_CR_in_media_description2335 = { FOLLOW_CR_in_media_description2335_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_LF_in_media_description2337 */ static ANTLR3_BITWORD FOLLOW_LF_in_media_description2337_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001242) }; static ANTLR3_BITSET_LIST FOLLOW_LF_in_media_description2337 = { FOLLOW_LF_in_media_description2337_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_bandwidth_in_media_description2363 */ static ANTLR3_BITWORD FOLLOW_bandwidth_in_media_description2363_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000080) }; static ANTLR3_BITSET_LIST FOLLOW_bandwidth_in_media_description2363 = { FOLLOW_bandwidth_in_media_description2363_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_CR_in_media_description2367 */ static ANTLR3_BITWORD FOLLOW_CR_in_media_description2367_bits[] = { ANTLR3_UINT64_LIT(0x0000000000002000) }; static ANTLR3_BITSET_LIST FOLLOW_CR_in_media_description2367 = { FOLLOW_CR_in_media_description2367_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_LF_in_media_description2369 */ static ANTLR3_BITWORD FOLLOW_LF_in_media_description2369_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001242) }; static ANTLR3_BITSET_LIST FOLLOW_LF_in_media_description2369 = { FOLLOW_LF_in_media_description2369_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_key_field_in_media_description2395 */ static ANTLR3_BITWORD FOLLOW_key_field_in_media_description2395_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000080) }; static ANTLR3_BITSET_LIST FOLLOW_key_field_in_media_description2395 = { FOLLOW_key_field_in_media_description2395_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_CR_in_media_description2397 */ static ANTLR3_BITWORD FOLLOW_CR_in_media_description2397_bits[] = { ANTLR3_UINT64_LIT(0x0000000000002000) }; static ANTLR3_BITSET_LIST FOLLOW_CR_in_media_description2397 = { FOLLOW_CR_in_media_description2397_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_LF_in_media_description2399 */ static ANTLR3_BITWORD FOLLOW_LF_in_media_description2399_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001242) }; static ANTLR3_BITSET_LIST FOLLOW_LF_in_media_description2399 = { FOLLOW_LF_in_media_description2399_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_attribute_in_media_description2425 */ static ANTLR3_BITWORD FOLLOW_attribute_in_media_description2425_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000080) }; static ANTLR3_BITSET_LIST FOLLOW_attribute_in_media_description2425 = { FOLLOW_attribute_in_media_description2425_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_CR_in_media_description2429 */ static ANTLR3_BITWORD FOLLOW_CR_in_media_description2429_bits[] = { ANTLR3_UINT64_LIT(0x0000000000002000) }; static ANTLR3_BITSET_LIST FOLLOW_CR_in_media_description2429 = { FOLLOW_CR_in_media_description2429_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_LF_in_media_description2431 */ static ANTLR3_BITWORD FOLLOW_LF_in_media_description2431_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001242) }; static ANTLR3_BITSET_LIST FOLLOW_LF_in_media_description2431 = { FOLLOW_LF_in_media_description2431_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_alpha_num_in_media2469 */ static ANTLR3_BITWORD FOLLOW_alpha_num_in_media2469_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000800) }; static ANTLR3_BITSET_LIST FOLLOW_alpha_num_in_media2469 = { FOLLOW_alpha_num_in_media2469_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_EQUAL_in_media2471 */ static ANTLR3_BITWORD FOLLOW_EQUAL_in_media2471_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001240) }; static ANTLR3_BITSET_LIST FOLLOW_EQUAL_in_media2471 = { FOLLOW_EQUAL_in_media2471_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_media_value_in_media2483 */ static ANTLR3_BITWORD FOLLOW_media_value_in_media2483_bits[] = { ANTLR3_UINT64_LIT(0x0000000000080000) }; static ANTLR3_BITSET_LIST FOLLOW_media_value_in_media2483 = { FOLLOW_media_value_in_media2483_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SPACE_in_media2497 */ static ANTLR3_BITWORD FOLLOW_SPACE_in_media2497_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000200) }; static ANTLR3_BITSET_LIST FOLLOW_SPACE_in_media2497 = { FOLLOW_SPACE_in_media2497_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_port_in_media2499 */ static ANTLR3_BITWORD FOLLOW_port_in_media2499_bits[] = { ANTLR3_UINT64_LIT(0x00000000000C0000) }; static ANTLR3_BITSET_LIST FOLLOW_port_in_media2499 = { FOLLOW_port_in_media2499_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SLASH_in_media2514 */ static ANTLR3_BITWORD FOLLOW_SLASH_in_media2514_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000200) }; static ANTLR3_BITSET_LIST FOLLOW_SLASH_in_media2514 = { FOLLOW_SLASH_in_media2514_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_integer_in_media2516 */ static ANTLR3_BITWORD FOLLOW_integer_in_media2516_bits[] = { ANTLR3_UINT64_LIT(0x0000000000080000) }; static ANTLR3_BITSET_LIST FOLLOW_integer_in_media2516 = { FOLLOW_integer_in_media2516_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SPACE_in_media2531 */ static ANTLR3_BITWORD FOLLOW_SPACE_in_media2531_bits[] = { ANTLR3_UINT64_LIT(0x0000000FFFFFDF70) }; static ANTLR3_BITSET_LIST FOLLOW_SPACE_in_media2531 = { FOLLOW_SPACE_in_media2531_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_proto_in_media2533 */ static ANTLR3_BITWORD FOLLOW_proto_in_media2533_bits[] = { ANTLR3_UINT64_LIT(0x0000000000080000) }; static ANTLR3_BITSET_LIST FOLLOW_proto_in_media2533 = { FOLLOW_proto_in_media2533_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SPACE_in_media2548 */ static ANTLR3_BITWORD FOLLOW_SPACE_in_media2548_bits[] = { ANTLR3_UINT64_LIT(0x0000000FFFD01740) }; static ANTLR3_BITSET_LIST FOLLOW_SPACE_in_media2548 = { FOLLOW_SPACE_in_media2548_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_fmt_in_media2550 */ static ANTLR3_BITWORD FOLLOW_fmt_in_media2550_bits[] = { ANTLR3_UINT64_LIT(0x0000000000080002) }; static ANTLR3_BITSET_LIST FOLLOW_fmt_in_media2550 = { FOLLOW_fmt_in_media2550_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_alpha_num_in_media_value2578 */ static ANTLR3_BITWORD FOLLOW_alpha_num_in_media_value2578_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001242) }; static ANTLR3_BITSET_LIST FOLLOW_alpha_num_in_media_value2578 = { FOLLOW_alpha_num_in_media_value2578_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DIGIT_in_fmt2662 */ static ANTLR3_BITWORD FOLLOW_DIGIT_in_fmt2662_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000202) }; static ANTLR3_BITSET_LIST FOLLOW_DIGIT_in_fmt2662 = { FOLLOW_DIGIT_in_fmt2662_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_fmt2669 */ static ANTLR3_BITWORD FOLLOW_token_in_fmt2669_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_fmt2669 = { FOLLOW_token_in_fmt2669_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DIGIT_in_port2880 */ static ANTLR3_BITWORD FOLLOW_DIGIT_in_port2880_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000202) }; static ANTLR3_BITSET_LIST FOLLOW_DIGIT_in_port2880 = { FOLLOW_DIGIT_in_port2880_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_attribute_name2932 */ static ANTLR3_BITWORD FOLLOW_token_in_attribute_name2932_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_attribute_name2932 = { FOLLOW_token_in_attribute_name2932_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_word_in_rtcp_xr_attribute_name2963 */ static ANTLR3_BITWORD FOLLOW_word_in_rtcp_xr_attribute_name2963_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_word_in_rtcp_xr_attribute_name2963 = { FOLLOW_word_in_rtcp_xr_attribute_name2963_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_word_in_rtcp_xr_rcvr_rtt_mode2970 */ static ANTLR3_BITWORD FOLLOW_word_in_rtcp_xr_rcvr_rtt_mode2970_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_word_in_rtcp_xr_rcvr_rtt_mode2970 = { FOLLOW_word_in_rtcp_xr_rcvr_rtt_mode2970_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_word_in_rtcp_xr_stat_summary_flag_value2977 */ static ANTLR3_BITWORD FOLLOW_word_in_rtcp_xr_stat_summary_flag_value2977_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_word_in_rtcp_xr_stat_summary_flag_value2977 = { FOLLOW_word_in_rtcp_xr_stat_summary_flag_value2977_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_word_in_rtcp_fb_attribute_name2984 */ static ANTLR3_BITWORD FOLLOW_word_in_rtcp_fb_attribute_name2984_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_word_in_rtcp_fb_attribute_name2984 = { FOLLOW_word_in_rtcp_fb_attribute_name2984_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DIGIT_in_sess_id3003 */ static ANTLR3_BITWORD FOLLOW_DIGIT_in_sess_id3003_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000202) }; static ANTLR3_BITSET_LIST FOLLOW_DIGIT_in_sess_id3003 = { FOLLOW_DIGIT_in_sess_id3003_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DIGIT_in_sess_version3043 */ static ANTLR3_BITWORD FOLLOW_DIGIT_in_sess_version3043_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000202) }; static ANTLR3_BITSET_LIST FOLLOW_DIGIT_in_sess_version3043 = { FOLLOW_DIGIT_in_sess_version3043_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_addr_in_connection_address3097 */ static ANTLR3_BITWORD FOLLOW_addr_in_connection_address3097_bits[] = { ANTLR3_UINT64_LIT(0x0000000000040002) }; static ANTLR3_BITSET_LIST FOLLOW_addr_in_connection_address3097 = { FOLLOW_addr_in_connection_address3097_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_multicast_part_in_connection_address3101 */ static ANTLR3_BITWORD FOLLOW_multicast_part_in_connection_address3101_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_multicast_part_in_connection_address3101 = { FOLLOW_multicast_part_in_connection_address3101_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_unicast_address_in_multicast_address3111 */ static ANTLR3_BITWORD FOLLOW_unicast_address_in_multicast_address3111_bits[] = { ANTLR3_UINT64_LIT(0x0000000000040000) }; static ANTLR3_BITSET_LIST FOLLOW_unicast_address_in_multicast_address3111 = { FOLLOW_unicast_address_in_multicast_address3111_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SLASH_in_multicast_address3113 */ static ANTLR3_BITWORD FOLLOW_SLASH_in_multicast_address3113_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000200) }; static ANTLR3_BITSET_LIST FOLLOW_SLASH_in_multicast_address3113 = { FOLLOW_SLASH_in_multicast_address3113_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_ttl_in_multicast_address3115 */ static ANTLR3_BITWORD FOLLOW_ttl_in_multicast_address3115_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_ttl_in_multicast_address3115 = { FOLLOW_ttl_in_multicast_address3115_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_decimal_uchar_in_ttl3217 */ static ANTLR3_BITWORD FOLLOW_decimal_uchar_in_ttl3217_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_decimal_uchar_in_ttl3217 = { FOLLOW_decimal_uchar_in_ttl3217_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DIGIT_in_start_time3234 */ static ANTLR3_BITWORD FOLLOW_DIGIT_in_start_time3234_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000202) }; static ANTLR3_BITSET_LIST FOLLOW_DIGIT_in_start_time3234 = { FOLLOW_DIGIT_in_start_time3234_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DIGIT_in_stop_time3254 */ static ANTLR3_BITWORD FOLLOW_DIGIT_in_stop_time3254_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000202) }; static ANTLR3_BITSET_LIST FOLLOW_DIGIT_in_stop_time3254 = { FOLLOW_DIGIT_in_stop_time3254_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DIGIT_in_sdp_time3280 */ static ANTLR3_BITWORD FOLLOW_DIGIT_in_sdp_time3280_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000202) }; static ANTLR3_BITSET_LIST FOLLOW_DIGIT_in_sdp_time3280 = { FOLLOW_DIGIT_in_sdp_time3280_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_typed_time_in_repeat_interval3314 */ static ANTLR3_BITWORD FOLLOW_typed_time_in_repeat_interval3314_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_typed_time_in_repeat_interval3314 = { FOLLOW_typed_time_in_repeat_interval3314_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DIGIT_in_typed_time3330 */ static ANTLR3_BITWORD FOLLOW_DIGIT_in_typed_time3330_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001242) }; static ANTLR3_BITSET_LIST FOLLOW_DIGIT_in_typed_time3330 = { FOLLOW_DIGIT_in_typed_time3330_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_fixed_len_time_unit_in_typed_time3333 */ static ANTLR3_BITWORD FOLLOW_fixed_len_time_unit_in_typed_time3333_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_fixed_len_time_unit_in_typed_time3333 = { FOLLOW_fixed_len_time_unit_in_typed_time3333_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_alpha_num_in_fixed_len_time_unit3343 */ static ANTLR3_BITWORD FOLLOW_alpha_num_in_fixed_len_time_unit3343_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_alpha_num_in_fixed_len_time_unit3343 = { FOLLOW_alpha_num_in_fixed_len_time_unit3343_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_alpha_num_in_fixed_len_time_unit3371 */ static ANTLR3_BITWORD FOLLOW_alpha_num_in_fixed_len_time_unit3371_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_alpha_num_in_fixed_len_time_unit3371 = { FOLLOW_alpha_num_in_fixed_len_time_unit3371_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_alpha_num_in_fixed_len_time_unit3399 */ static ANTLR3_BITWORD FOLLOW_alpha_num_in_fixed_len_time_unit3399_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_alpha_num_in_fixed_len_time_unit3399 = { FOLLOW_alpha_num_in_fixed_len_time_unit3399_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_alpha_num_in_fixed_len_time_unit3427 */ static ANTLR3_BITWORD FOLLOW_alpha_num_in_fixed_len_time_unit3427_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_alpha_num_in_fixed_len_time_unit3427 = { FOLLOW_alpha_num_in_fixed_len_time_unit3427_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_alpha_num_in_bwtype3447 */ static ANTLR3_BITWORD FOLLOW_alpha_num_in_bwtype3447_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001242) }; static ANTLR3_BITSET_LIST FOLLOW_alpha_num_in_bwtype3447 = { FOLLOW_alpha_num_in_bwtype3447_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DIGIT_in_bandwidth_value3465 */ static ANTLR3_BITWORD FOLLOW_DIGIT_in_bandwidth_value3465_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000202) }; static ANTLR3_BITSET_LIST FOLLOW_DIGIT_in_bandwidth_value3465 = { FOLLOW_DIGIT_in_bandwidth_value3465_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_email_safe_in_username3484 */ static ANTLR3_BITWORD FOLLOW_email_safe_in_username3484_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_email_safe_in_username3484 = { FOLLOW_email_safe_in_username3484_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_text_in_uri3593 */ static ANTLR3_BITWORD FOLLOW_text_in_uri3593_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_text_in_uri3593 = { FOLLOW_text_in_uri3593_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_phone_in_phone_number3616 */ static ANTLR3_BITWORD FOLLOW_phone_in_phone_number3616_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_phone_in_phone_number3616 = { FOLLOW_phone_in_phone_number3616_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_text_in_phone3638 */ static ANTLR3_BITWORD FOLLOW_text_in_phone3638_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_text_in_phone3638 = { FOLLOW_text_in_phone3638_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_alpha_num_in_nettype3709 */ static ANTLR3_BITWORD FOLLOW_alpha_num_in_nettype3709_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001242) }; static ANTLR3_BITSET_LIST FOLLOW_alpha_num_in_nettype3709 = { FOLLOW_alpha_num_in_nettype3709_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_alpha_num_in_addrtype3753 */ static ANTLR3_BITWORD FOLLOW_alpha_num_in_addrtype3753_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001242) }; static ANTLR3_BITSET_LIST FOLLOW_alpha_num_in_addrtype3753 = { FOLLOW_alpha_num_in_addrtype3753_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_unicast_address_in_addr3805 */ static ANTLR3_BITWORD FOLLOW_unicast_address_in_addr3805_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_unicast_address_in_addr3805 = { FOLLOW_unicast_address_in_addr3805_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SLASH_in_multicast_part3815 */ static ANTLR3_BITWORD FOLLOW_SLASH_in_multicast_part3815_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000200) }; static ANTLR3_BITSET_LIST FOLLOW_SLASH_in_multicast_part3815 = { FOLLOW_SLASH_in_multicast_part3815_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_integer_in_multicast_part3819 */ static ANTLR3_BITWORD FOLLOW_integer_in_multicast_part3819_bits[] = { ANTLR3_UINT64_LIT(0x0000000000040002) }; static ANTLR3_BITSET_LIST FOLLOW_integer_in_multicast_part3819 = { FOLLOW_integer_in_multicast_part3819_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_domainlabel_in_fqdn3843 */ static ANTLR3_BITWORD FOLLOW_domainlabel_in_fqdn3843_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000400) }; static ANTLR3_BITSET_LIST FOLLOW_domainlabel_in_fqdn3843 = { FOLLOW_domainlabel_in_fqdn3843_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DOT_in_fqdn3845 */ static ANTLR3_BITWORD FOLLOW_DOT_in_fqdn3845_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001240) }; static ANTLR3_BITSET_LIST FOLLOW_DOT_in_fqdn3845 = { FOLLOW_DOT_in_fqdn3845_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_toplabel_in_fqdn3850 */ static ANTLR3_BITWORD FOLLOW_toplabel_in_fqdn3850_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000402) }; static ANTLR3_BITSET_LIST FOLLOW_toplabel_in_fqdn3850 = { FOLLOW_toplabel_in_fqdn3850_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DOT_in_fqdn3852 */ static ANTLR3_BITWORD FOLLOW_DOT_in_fqdn3852_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_DOT_in_fqdn3852 = { FOLLOW_DOT_in_fqdn3852_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_alpha_num_in_domainlabel3868 */ static ANTLR3_BITWORD FOLLOW_alpha_num_in_domainlabel3868_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_alpha_num_in_domainlabel3868 = { FOLLOW_alpha_num_in_domainlabel3868_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_alpha_num_in_domainlabel3873 */ static ANTLR3_BITWORD FOLLOW_alpha_num_in_domainlabel3873_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001340) }; static ANTLR3_BITSET_LIST FOLLOW_alpha_num_in_domainlabel3873 = { FOLLOW_alpha_num_in_domainlabel3873_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_alpha_num_in_domainlabel3877 */ static ANTLR3_BITWORD FOLLOW_alpha_num_in_domainlabel3877_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001340) }; static ANTLR3_BITSET_LIST FOLLOW_alpha_num_in_domainlabel3877 = { FOLLOW_alpha_num_in_domainlabel3877_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DASH_in_domainlabel3881 */ static ANTLR3_BITWORD FOLLOW_DASH_in_domainlabel3881_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001340) }; static ANTLR3_BITSET_LIST FOLLOW_DASH_in_domainlabel3881 = { FOLLOW_DASH_in_domainlabel3881_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_alpha_num_in_domainlabel3886 */ static ANTLR3_BITWORD FOLLOW_alpha_num_in_domainlabel3886_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_alpha_num_in_domainlabel3886 = { FOLLOW_alpha_num_in_domainlabel3886_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_alpha_in_toplabel3904 */ static ANTLR3_BITWORD FOLLOW_alpha_in_toplabel3904_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_alpha_in_toplabel3904 = { FOLLOW_alpha_in_toplabel3904_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_alpha_in_toplabel3909 */ static ANTLR3_BITWORD FOLLOW_alpha_in_toplabel3909_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001340) }; static ANTLR3_BITSET_LIST FOLLOW_alpha_in_toplabel3909 = { FOLLOW_alpha_in_toplabel3909_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_alpha_num_in_toplabel3913 */ static ANTLR3_BITWORD FOLLOW_alpha_num_in_toplabel3913_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001340) }; static ANTLR3_BITSET_LIST FOLLOW_alpha_num_in_toplabel3913 = { FOLLOW_alpha_num_in_toplabel3913_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DASH_in_toplabel3917 */ static ANTLR3_BITWORD FOLLOW_DASH_in_toplabel3917_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001340) }; static ANTLR3_BITSET_LIST FOLLOW_DASH_in_toplabel3917 = { FOLLOW_DASH_in_toplabel3917_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_alpha_num_in_toplabel3922 */ static ANTLR3_BITWORD FOLLOW_alpha_num_in_toplabel3922_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_alpha_num_in_toplabel3922 = { FOLLOW_alpha_num_in_toplabel3922_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_alpha_num_in_unicast_address3935 */ static ANTLR3_BITWORD FOLLOW_alpha_num_in_unicast_address3935_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001752) }; static ANTLR3_BITSET_LIST FOLLOW_alpha_num_in_unicast_address3935 = { FOLLOW_alpha_num_in_unicast_address3935_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DOT_in_unicast_address3939 */ static ANTLR3_BITWORD FOLLOW_DOT_in_unicast_address3939_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001752) }; static ANTLR3_BITSET_LIST FOLLOW_DOT_in_unicast_address3939 = { FOLLOW_DOT_in_unicast_address3939_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_unicast_address3943 */ static ANTLR3_BITWORD FOLLOW_COLON_in_unicast_address3943_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001752) }; static ANTLR3_BITSET_LIST FOLLOW_COLON_in_unicast_address3943 = { FOLLOW_COLON_in_unicast_address3943_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DASH_in_unicast_address3946 */ static ANTLR3_BITWORD FOLLOW_DASH_in_unicast_address3946_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001752) }; static ANTLR3_BITSET_LIST FOLLOW_DASH_in_unicast_address3946 = { FOLLOW_DASH_in_unicast_address3946_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_decimal_uchar_in_ipv4_address3989 */ static ANTLR3_BITWORD FOLLOW_decimal_uchar_in_ipv4_address3989_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000400) }; static ANTLR3_BITSET_LIST FOLLOW_decimal_uchar_in_ipv4_address3989 = { FOLLOW_decimal_uchar_in_ipv4_address3989_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DOT_in_ipv4_address3991 */ static ANTLR3_BITWORD FOLLOW_DOT_in_ipv4_address3991_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000200) }; static ANTLR3_BITSET_LIST FOLLOW_DOT_in_ipv4_address3991 = { FOLLOW_DOT_in_ipv4_address3991_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_decimal_uchar_in_ipv4_address3993 */ static ANTLR3_BITWORD FOLLOW_decimal_uchar_in_ipv4_address3993_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000400) }; static ANTLR3_BITSET_LIST FOLLOW_decimal_uchar_in_ipv4_address3993 = { FOLLOW_decimal_uchar_in_ipv4_address3993_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DOT_in_ipv4_address3995 */ static ANTLR3_BITWORD FOLLOW_DOT_in_ipv4_address3995_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000200) }; static ANTLR3_BITSET_LIST FOLLOW_DOT_in_ipv4_address3995 = { FOLLOW_DOT_in_ipv4_address3995_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_decimal_uchar_in_ipv4_address3997 */ static ANTLR3_BITWORD FOLLOW_decimal_uchar_in_ipv4_address3997_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000400) }; static ANTLR3_BITSET_LIST FOLLOW_decimal_uchar_in_ipv4_address3997 = { FOLLOW_decimal_uchar_in_ipv4_address3997_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DOT_in_ipv4_address3999 */ static ANTLR3_BITWORD FOLLOW_DOT_in_ipv4_address3999_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000200) }; static ANTLR3_BITSET_LIST FOLLOW_DOT_in_ipv4_address3999 = { FOLLOW_DOT_in_ipv4_address3999_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_decimal_uchar_in_ipv4_address4001 */ static ANTLR3_BITWORD FOLLOW_decimal_uchar_in_ipv4_address4001_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_decimal_uchar_in_ipv4_address4001 = { FOLLOW_decimal_uchar_in_ipv4_address4001_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_hexpart_in_ipv6_address4020 */ static ANTLR3_BITWORD FOLLOW_hexpart_in_ipv6_address4020_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000012) }; static ANTLR3_BITSET_LIST FOLLOW_hexpart_in_ipv6_address4020 = { FOLLOW_hexpart_in_ipv6_address4020_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_ipv6_address4024 */ static ANTLR3_BITWORD FOLLOW_COLON_in_ipv6_address4024_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000200) }; static ANTLR3_BITSET_LIST FOLLOW_COLON_in_ipv6_address4024 = { FOLLOW_COLON_in_ipv6_address4024_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_ipv4_address_in_ipv6_address4026 */ static ANTLR3_BITWORD FOLLOW_ipv4_address_in_ipv6_address4026_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_ipv4_address_in_ipv6_address4026 = { FOLLOW_ipv4_address_in_ipv6_address4026_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_hexseq_in_hexpart4045 */ static ANTLR3_BITWORD FOLLOW_hexseq_in_hexpart4045_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_hexseq_in_hexpart4045 = { FOLLOW_hexseq_in_hexpart4045_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_hexseq_in_hexpart4049 */ static ANTLR3_BITWORD FOLLOW_hexseq_in_hexpart4049_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000010) }; static ANTLR3_BITSET_LIST FOLLOW_hexseq_in_hexpart4049 = { FOLLOW_hexseq_in_hexpart4049_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_hexpart4051 */ static ANTLR3_BITWORD FOLLOW_COLON_in_hexpart4051_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000010) }; static ANTLR3_BITSET_LIST FOLLOW_COLON_in_hexpart4051 = { FOLLOW_COLON_in_hexpart4051_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_hexpart4053 */ static ANTLR3_BITWORD FOLLOW_COLON_in_hexpart4053_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001202) }; static ANTLR3_BITSET_LIST FOLLOW_COLON_in_hexpart4053 = { FOLLOW_COLON_in_hexpart4053_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_hexseq_in_hexpart4055 */ static ANTLR3_BITWORD FOLLOW_hexseq_in_hexpart4055_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_hexseq_in_hexpart4055 = { FOLLOW_hexseq_in_hexpart4055_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_hexpart4060 */ static ANTLR3_BITWORD FOLLOW_COLON_in_hexpart4060_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000010) }; static ANTLR3_BITSET_LIST FOLLOW_COLON_in_hexpart4060 = { FOLLOW_COLON_in_hexpart4060_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_hexpart4062 */ static ANTLR3_BITWORD FOLLOW_COLON_in_hexpart4062_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001202) }; static ANTLR3_BITSET_LIST FOLLOW_COLON_in_hexpart4062 = { FOLLOW_COLON_in_hexpart4062_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_hexseq_in_hexpart4064 */ static ANTLR3_BITWORD FOLLOW_hexseq_in_hexpart4064_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_hexseq_in_hexpart4064 = { FOLLOW_hexseq_in_hexpart4064_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_hex4_in_hexseq4082 */ static ANTLR3_BITWORD FOLLOW_hex4_in_hexseq4082_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000012) }; static ANTLR3_BITSET_LIST FOLLOW_hex4_in_hexseq4082 = { FOLLOW_hex4_in_hexseq4082_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_hexseq4086 */ static ANTLR3_BITWORD FOLLOW_COLON_in_hexseq4086_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001200) }; static ANTLR3_BITSET_LIST FOLLOW_COLON_in_hexseq4086 = { FOLLOW_COLON_in_hexseq4086_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_hex4_in_hexseq4088 */ static ANTLR3_BITWORD FOLLOW_hex4_in_hexseq4088_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000012) }; static ANTLR3_BITSET_LIST FOLLOW_hex4_in_hexseq4088 = { FOLLOW_hex4_in_hexseq4088_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_hexdigit_in_hex44109 */ static ANTLR3_BITWORD FOLLOW_hexdigit_in_hex44109_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001202) }; static ANTLR3_BITSET_LIST FOLLOW_hexdigit_in_hex44109 = { FOLLOW_hexdigit_in_hex44109_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_OCTET_in_byte_string4237 */ static ANTLR3_BITWORD FOLLOW_OCTET_in_byte_string4237_bits[] = { ANTLR3_UINT64_LIT(0x0000000000008002) }; static ANTLR3_BITSET_LIST FOLLOW_OCTET_in_byte_string4237 = { FOLLOW_OCTET_in_byte_string4237_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_integer_in_decimal_uchar4279 */ static ANTLR3_BITWORD FOLLOW_integer_in_decimal_uchar4279_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_integer_in_decimal_uchar4279 = { FOLLOW_integer_in_decimal_uchar4279_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DIGIT_in_integer4298 */ static ANTLR3_BITWORD FOLLOW_DIGIT_in_integer4298_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000202) }; static ANTLR3_BITSET_LIST FOLLOW_DIGIT_in_integer4298 = { FOLLOW_DIGIT_in_integer4298_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_alpha_num_in_token4320 */ static ANTLR3_BITWORD FOLLOW_alpha_num_in_token4320_bits[] = { ANTLR3_UINT64_LIT(0x0000000FFFD01742) }; static ANTLR3_BITSET_LIST FOLLOW_alpha_num_in_token4320 = { FOLLOW_alpha_num_in_token4320_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_22_in_token4324 */ static ANTLR3_BITWORD FOLLOW_22_in_token4324_bits[] = { ANTLR3_UINT64_LIT(0x0000000FFFD01742) }; static ANTLR3_BITSET_LIST FOLLOW_22_in_token4324 = { FOLLOW_22_in_token4324_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_23_in_token4328 */ static ANTLR3_BITWORD FOLLOW_23_in_token4328_bits[] = { ANTLR3_UINT64_LIT(0x0000000FFFD01742) }; static ANTLR3_BITSET_LIST FOLLOW_23_in_token4328 = { FOLLOW_23_in_token4328_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_24_in_token4332 */ static ANTLR3_BITWORD FOLLOW_24_in_token4332_bits[] = { ANTLR3_UINT64_LIT(0x0000000FFFD01742) }; static ANTLR3_BITSET_LIST FOLLOW_24_in_token4332 = { FOLLOW_24_in_token4332_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_26_in_token4335 */ static ANTLR3_BITWORD FOLLOW_26_in_token4335_bits[] = { ANTLR3_UINT64_LIT(0x0000000FFFD01742) }; static ANTLR3_BITSET_LIST FOLLOW_26_in_token4335 = { FOLLOW_26_in_token4335_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_25_in_token4338 */ static ANTLR3_BITWORD FOLLOW_25_in_token4338_bits[] = { ANTLR3_UINT64_LIT(0x0000000FFFD01742) }; static ANTLR3_BITSET_LIST FOLLOW_25_in_token4338 = { FOLLOW_25_in_token4338_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_28_in_token4341 */ static ANTLR3_BITWORD FOLLOW_28_in_token4341_bits[] = { ANTLR3_UINT64_LIT(0x0000000FFFD01742) }; static ANTLR3_BITSET_LIST FOLLOW_28_in_token4341 = { FOLLOW_28_in_token4341_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_STAR_in_token4345 */ static ANTLR3_BITWORD FOLLOW_STAR_in_token4345_bits[] = { ANTLR3_UINT64_LIT(0x0000000FFFD01742) }; static ANTLR3_BITSET_LIST FOLLOW_STAR_in_token4345 = { FOLLOW_STAR_in_token4345_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_27_in_token4348 */ static ANTLR3_BITWORD FOLLOW_27_in_token4348_bits[] = { ANTLR3_UINT64_LIT(0x0000000FFFD01742) }; static ANTLR3_BITSET_LIST FOLLOW_27_in_token4348 = { FOLLOW_27_in_token4348_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DASH_in_token4352 */ static ANTLR3_BITWORD FOLLOW_DASH_in_token4352_bits[] = { ANTLR3_UINT64_LIT(0x0000000FFFD01742) }; static ANTLR3_BITSET_LIST FOLLOW_DASH_in_token4352 = { FOLLOW_DASH_in_token4352_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DOT_in_token4356 */ static ANTLR3_BITWORD FOLLOW_DOT_in_token4356_bits[] = { ANTLR3_UINT64_LIT(0x0000000FFFD01742) }; static ANTLR3_BITSET_LIST FOLLOW_DOT_in_token4356 = { FOLLOW_DOT_in_token4356_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_29_in_token4360 */ static ANTLR3_BITWORD FOLLOW_29_in_token4360_bits[] = { ANTLR3_UINT64_LIT(0x0000000FFFD01742) }; static ANTLR3_BITSET_LIST FOLLOW_29_in_token4360 = { FOLLOW_29_in_token4360_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_30_in_token4364 */ static ANTLR3_BITWORD FOLLOW_30_in_token4364_bits[] = { ANTLR3_UINT64_LIT(0x0000000FFFD01742) }; static ANTLR3_BITSET_LIST FOLLOW_30_in_token4364 = { FOLLOW_30_in_token4364_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_31_in_token4368 */ static ANTLR3_BITWORD FOLLOW_31_in_token4368_bits[] = { ANTLR3_UINT64_LIT(0x0000000FFFD01742) }; static ANTLR3_BITSET_LIST FOLLOW_31_in_token4368 = { FOLLOW_31_in_token4368_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_32_in_token4372 */ static ANTLR3_BITWORD FOLLOW_32_in_token4372_bits[] = { ANTLR3_UINT64_LIT(0x0000000FFFD01742) }; static ANTLR3_BITSET_LIST FOLLOW_32_in_token4372 = { FOLLOW_32_in_token4372_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_33_in_token4376 */ static ANTLR3_BITWORD FOLLOW_33_in_token4376_bits[] = { ANTLR3_UINT64_LIT(0x0000000FFFD01742) }; static ANTLR3_BITSET_LIST FOLLOW_33_in_token4376 = { FOLLOW_33_in_token4376_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_34_in_token4380 */ static ANTLR3_BITWORD FOLLOW_34_in_token4380_bits[] = { ANTLR3_UINT64_LIT(0x0000000FFFD01742) }; static ANTLR3_BITSET_LIST FOLLOW_34_in_token4380 = { FOLLOW_34_in_token4380_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_35_in_token4384 */ static ANTLR3_BITWORD FOLLOW_35_in_token4384_bits[] = { ANTLR3_UINT64_LIT(0x0000000FFFD01742) }; static ANTLR3_BITSET_LIST FOLLOW_35_in_token4384 = { FOLLOW_35_in_token4384_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_alpha_in_alpha_num4397 */ static ANTLR3_BITWORD FOLLOW_alpha_in_alpha_num4397_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_alpha_in_alpha_num4397 = { FOLLOW_alpha_in_alpha_num4397_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DIGIT_in_alpha_num4401 */ static ANTLR3_BITWORD FOLLOW_DIGIT_in_alpha_num4401_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_DIGIT_in_alpha_num4401 = { FOLLOW_DIGIT_in_alpha_num4401_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_alpha_in_word4423 */ static ANTLR3_BITWORD FOLLOW_alpha_in_word4423_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001142) }; static ANTLR3_BITSET_LIST FOLLOW_alpha_in_word4423 = { FOLLOW_alpha_in_word4423_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DASH_in_word4427 */ static ANTLR3_BITWORD FOLLOW_DASH_in_word4427_bits[] = { ANTLR3_UINT64_LIT(0x0000000000001142) }; static ANTLR3_BITSET_LIST FOLLOW_DASH_in_word4427 = { FOLLOW_DASH_in_word4427_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_pkt_loss_rle_in_synpred1_belle_sdp1560 */ static ANTLR3_BITWORD FOLLOW_pkt_loss_rle_in_synpred1_belle_sdp1560_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_pkt_loss_rle_in_synpred1_belle_sdp1560 = { FOLLOW_pkt_loss_rle_in_synpred1_belle_sdp1560_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_pkt_dup_rle_in_synpred2_belle_sdp1569 */ static ANTLR3_BITWORD FOLLOW_pkt_dup_rle_in_synpred2_belle_sdp1569_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_pkt_dup_rle_in_synpred2_belle_sdp1569 = { FOLLOW_pkt_dup_rle_in_synpred2_belle_sdp1569_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_pkt_rcpt_times_in_synpred3_belle_sdp1578 */ static ANTLR3_BITWORD FOLLOW_pkt_rcpt_times_in_synpred3_belle_sdp1578_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_pkt_rcpt_times_in_synpred3_belle_sdp1578 = { FOLLOW_pkt_rcpt_times_in_synpred3_belle_sdp1578_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rcvr_rtt_in_synpred4_belle_sdp1587 */ static ANTLR3_BITWORD FOLLOW_rcvr_rtt_in_synpred4_belle_sdp1587_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_rcvr_rtt_in_synpred4_belle_sdp1587 = { FOLLOW_rcvr_rtt_in_synpred4_belle_sdp1587_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_stat_summary_in_synpred5_belle_sdp1596 */ static ANTLR3_BITWORD FOLLOW_stat_summary_in_synpred5_belle_sdp1596_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_stat_summary_in_synpred5_belle_sdp1596 = { FOLLOW_stat_summary_in_synpred5_belle_sdp1596_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_voip_metrics_in_synpred6_belle_sdp1605 */ static ANTLR3_BITWORD FOLLOW_voip_metrics_in_synpred6_belle_sdp1605_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_voip_metrics_in_synpred6_belle_sdp1605 = { FOLLOW_voip_metrics_in_synpred6_belle_sdp1605_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_fb_ack_val_in_synpred7_belle_sdp1836 */ static ANTLR3_BITWORD FOLLOW_rtcp_fb_ack_val_in_synpred7_belle_sdp1836_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_fb_ack_val_in_synpred7_belle_sdp1836 = { FOLLOW_rtcp_fb_ack_val_in_synpred7_belle_sdp1836_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_fb_nack_val_in_synpred8_belle_sdp1844 */ static ANTLR3_BITWORD FOLLOW_rtcp_fb_nack_val_in_synpred8_belle_sdp1844_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_fb_nack_val_in_synpred8_belle_sdp1844 = { FOLLOW_rtcp_fb_nack_val_in_synpred8_belle_sdp1844_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_fb_trr_int_val_in_synpred9_belle_sdp1852 */ static ANTLR3_BITWORD FOLLOW_rtcp_fb_trr_int_val_in_synpred9_belle_sdp1852_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_fb_trr_int_val_in_synpred9_belle_sdp1852 = { FOLLOW_rtcp_fb_trr_int_val_in_synpred9_belle_sdp1852_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_fb_ccm_val_in_synpred10_belle_sdp1860 */ static ANTLR3_BITWORD FOLLOW_rtcp_fb_ccm_val_in_synpred10_belle_sdp1860_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_fb_ccm_val_in_synpred10_belle_sdp1860 = { FOLLOW_rtcp_fb_ccm_val_in_synpred10_belle_sdp1860_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_fb_id_val_in_synpred11_belle_sdp1868 */ static ANTLR3_BITWORD FOLLOW_rtcp_fb_id_val_in_synpred11_belle_sdp1868_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_fb_id_val_in_synpred11_belle_sdp1868 = { FOLLOW_rtcp_fb_id_val_in_synpred11_belle_sdp1868_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_fb_app_param_in_synpred12_belle_sdp1976 */ static ANTLR3_BITWORD FOLLOW_rtcp_fb_app_param_in_synpred12_belle_sdp1976_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_fb_app_param_in_synpred12_belle_sdp1976 = { FOLLOW_rtcp_fb_app_param_in_synpred12_belle_sdp1976_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_fb_token_param_in_synpred13_belle_sdp1984 */ static ANTLR3_BITWORD FOLLOW_rtcp_fb_token_param_in_synpred13_belle_sdp1984_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_fb_token_param_in_synpred13_belle_sdp1984 = { FOLLOW_rtcp_fb_token_param_in_synpred13_belle_sdp1984_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_fb_rpsi_param_in_synpred14_belle_sdp1996 */ static ANTLR3_BITWORD FOLLOW_rtcp_fb_rpsi_param_in_synpred14_belle_sdp1996_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_fb_rpsi_param_in_synpred14_belle_sdp1996 = { FOLLOW_rtcp_fb_rpsi_param_in_synpred14_belle_sdp1996_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_fb_app_param_in_synpred15_belle_sdp2004 */ static ANTLR3_BITWORD FOLLOW_rtcp_fb_app_param_in_synpred15_belle_sdp2004_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_fb_app_param_in_synpred15_belle_sdp2004 = { FOLLOW_rtcp_fb_app_param_in_synpred15_belle_sdp2004_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_fb_token_param_in_synpred16_belle_sdp2012 */ static ANTLR3_BITWORD FOLLOW_rtcp_fb_token_param_in_synpred16_belle_sdp2012_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_fb_token_param_in_synpred16_belle_sdp2012 = { FOLLOW_rtcp_fb_token_param_in_synpred16_belle_sdp2012_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_fb_pli_param_in_synpred17_belle_sdp2024 */ static ANTLR3_BITWORD FOLLOW_rtcp_fb_pli_param_in_synpred17_belle_sdp2024_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_fb_pli_param_in_synpred17_belle_sdp2024 = { FOLLOW_rtcp_fb_pli_param_in_synpred17_belle_sdp2024_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_fb_sli_param_in_synpred18_belle_sdp2032 */ static ANTLR3_BITWORD FOLLOW_rtcp_fb_sli_param_in_synpred18_belle_sdp2032_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_fb_sli_param_in_synpred18_belle_sdp2032 = { FOLLOW_rtcp_fb_sli_param_in_synpred18_belle_sdp2032_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_fb_rpsi_param_in_synpred19_belle_sdp2040 */ static ANTLR3_BITWORD FOLLOW_rtcp_fb_rpsi_param_in_synpred19_belle_sdp2040_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_fb_rpsi_param_in_synpred19_belle_sdp2040 = { FOLLOW_rtcp_fb_rpsi_param_in_synpred19_belle_sdp2040_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_fb_app_param_in_synpred20_belle_sdp2048 */ static ANTLR3_BITWORD FOLLOW_rtcp_fb_app_param_in_synpred20_belle_sdp2048_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_fb_app_param_in_synpred20_belle_sdp2048 = { FOLLOW_rtcp_fb_app_param_in_synpred20_belle_sdp2048_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_fb_token_param_in_synpred21_belle_sdp2056 */ static ANTLR3_BITWORD FOLLOW_rtcp_fb_token_param_in_synpred21_belle_sdp2056_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_fb_token_param_in_synpred21_belle_sdp2056 = { FOLLOW_rtcp_fb_token_param_in_synpred21_belle_sdp2056_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_fb_fir_param_in_synpred22_belle_sdp2130 */ static ANTLR3_BITWORD FOLLOW_rtcp_fb_fir_param_in_synpred22_belle_sdp2130_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_fb_fir_param_in_synpred22_belle_sdp2130 = { FOLLOW_rtcp_fb_fir_param_in_synpred22_belle_sdp2130_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_fb_tmmbr_param_in_synpred23_belle_sdp2138 */ static ANTLR3_BITWORD FOLLOW_rtcp_fb_tmmbr_param_in_synpred23_belle_sdp2138_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_fb_tmmbr_param_in_synpred23_belle_sdp2138 = { FOLLOW_rtcp_fb_tmmbr_param_in_synpred23_belle_sdp2138_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rtcp_fb_token_param_in_synpred24_belle_sdp2146 */ static ANTLR3_BITWORD FOLLOW_rtcp_fb_token_param_in_synpred24_belle_sdp2146_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_rtcp_fb_token_param_in_synpred24_belle_sdp2146 = { FOLLOW_rtcp_fb_token_param_in_synpred24_belle_sdp2146_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DIGIT_in_synpred25_belle_sdp2657 */ static ANTLR3_BITWORD FOLLOW_DIGIT_in_synpred25_belle_sdp2657_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000202) }; static ANTLR3_BITSET_LIST FOLLOW_DIGIT_in_synpred25_belle_sdp2657 = { FOLLOW_DIGIT_in_synpred25_belle_sdp2657_bits, 1 }; /* ========================================================================= * DFA tables for the parser */ /** Static dfa state tables for Cyclic dfa: * 108:26: ( info CR LF )? */ static const ANTLR3_INT32 dfa1_eot[33] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa1_eof[33] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa1_min[33] = { 6, 11, 11, 4, 4, 13, 4, 4, 4, 4, 4, 0, 4, 4, 4, 4, -1, -1, 4, 4, 13, 13, 13, 4, 4, 4, 4, 4, 4, 0, 0, 0, 4 }; static const ANTLR3_INT32 dfa1_max[33] = { 12, 11, 11, 35, 35, 13, 35, 35, 35, 35, 35, 0, 35, 35, 35, 35, -1, -1, 35, 35, 13, 13, 13, 35, 35, 35, 35, 35, 35, 0, 0, 0, 35 }; static const ANTLR3_INT32 dfa1_accept[33] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa1_special[33] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2, 1, 3, -1 }; /** Used when there is no transition table entry for a particular state */ #define dfa1_T_empty NULL static const ANTLR3_INT32 dfa1_T0[] = { 7, 7, 7, 5, 7, 15, 7, 7, 7, -1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 }; static const ANTLR3_INT32 dfa1_T1[] = { 10, 7, 4, 5, 7, 9, 7, 7, 4, -1, 7, 7, 7, 7, 7, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 }; static const ANTLR3_INT32 dfa1_T2[] = { 7, 7, 13, 5, 7, 14, 7, 7, 13, -1, 7, 7, 7, 7, 7, 19, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 }; static const ANTLR3_INT32 dfa1_T3[] = { -1 }; static const ANTLR3_INT32 dfa1_T4[] = { 7, 7, 13, 21, 7, 18, 7, 7, 13, -1, 7, 7, 7, 7, 7, 19, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 }; static const ANTLR3_INT32 dfa1_T5[] = { 10, 7, 4, 5, 7, 6, 7, 7, 4, -1, 7, 7, 7, 7, 7, 12, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 }; static const ANTLR3_INT32 dfa1_T6[] = { 7, 7, 7, 20, 7, 15, 7, 7, 7, -1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 }; static const ANTLR3_INT32 dfa1_T7[] = { 7, 7, 13, 5, 7, 18, 7, 7, 13, -1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 }; static const ANTLR3_INT32 dfa1_T8[] = { 26, 7, 23, 22, 27, 24, 25, 7, 23, -1, 7, 7, 7, 7, 28, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 }; static const ANTLR3_INT32 dfa1_T9[] = { 7, 7, 4, 5, 7, 6, 7, 7, 4, -1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 }; static const ANTLR3_INT32 dfa1_T10[] = { 31 }; static const ANTLR3_INT32 dfa1_T11[] = { 3 }; static const ANTLR3_INT32 dfa1_T12[] = { 11 }; static const ANTLR3_INT32 dfa1_T13[] = { 29 }; static const ANTLR3_INT32 dfa1_T14[] = { 7, 7, 7, 5, 7, 32, 7, 7, 7, -1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 }; static const ANTLR3_INT32 dfa1_T15[] = { 7, 7, 7, 22, 7, 32, 7, 7, 7, -1, 7, 7, 7, 7, 28, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 }; static const ANTLR3_INT32 dfa1_T16[] = { 7, 7, 13, 5, 7, 14, 7, 7, 13, -1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 }; static const ANTLR3_INT32 dfa1_T17[] = { 30 }; static const ANTLR3_INT32 dfa1_T18[] = { 1, -1, -1, 2, -1, -1, 1 }; static const ANTLR3_INT32 dfa1_T19[] = { 7, 7, 7, 5, 7, 7, 7, 7, 7, -1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa1_transitions[] = { dfa1_T18, dfa1_T11, dfa1_T11, dfa1_T9, dfa1_T1, dfa1_T12, dfa1_T5, dfa1_T19, dfa1_T16, dfa1_T1, dfa1_T0, dfa1_T3, dfa1_T7, dfa1_T2, dfa1_T2, dfa1_T6, NULL, NULL, dfa1_T4, dfa1_T8, dfa1_T13, dfa1_T17, dfa1_T10, dfa1_T8, dfa1_T8, dfa1_T8, dfa1_T8, dfa1_T8, dfa1_T14, dfa1_T3, dfa1_T3, dfa1_T3, dfa1_T15 }; static ANTLR3_INT32 dfa1_sst(pbelle_sdpParser ctx, pANTLR3_BASE_RECOGNIZER recognizer, pANTLR3_INT_STREAM is, pANTLR3_CYCLIC_DFA dfa, ANTLR3_INT32 s) { ANTLR3_INT32 _s; _s = s; switch (s) { case 0: { ANTLR3_UINT32 LA1_11; ANTLR3_MARKER index1_11; LA1_11 = LA(1); index1_11 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(i))) ) { s = 16; } else if ( ((((IS_TOKEN(p)))||((IS_TOKEN(u)))||((IS_TOKEN(e))))) ) { s = 17; } SEEK(index1_11); if ( s>=0 ) { return s; } } break; case 1: { ANTLR3_UINT32 LA1_30; ANTLR3_MARKER index1_30; LA1_30 = LA(1); index1_30 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(i))) ) { s = 16; } else if ( ((((IS_TOKEN(p)))||((IS_TOKEN(u)))||((IS_TOKEN(e)))||((IS_TOKEN(t))))) ) { s = 17; } SEEK(index1_30); if ( s>=0 ) { return s; } } break; case 2: { ANTLR3_UINT32 LA1_29; ANTLR3_MARKER index1_29; LA1_29 = LA(1); index1_29 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(i))) ) { s = 16; } else if ( ((((IS_TOKEN(p)))||((IS_TOKEN(b)))||((IS_TOKEN(u)))||((IS_TOKEN(e))))) ) { s = 17; } SEEK(index1_29); if ( s>=0 ) { return s; } } break; case 3: { ANTLR3_UINT32 LA1_31; ANTLR3_MARKER index1_31; LA1_31 = LA(1); index1_31 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(i))) ) { s = 16; } else if ( ((((IS_TOKEN(p)))||((IS_TOKEN(c)))||((IS_TOKEN(u)))||((IS_TOKEN(e))))) ) { s = 17; } SEEK(index1_31); if ( s>=0 ) { return s; } } break; } if (BACKTRACKING > 0) { FAILEDFLAG = ANTLR3_TRUE; return -1; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)"108:26: ( info CR LF )?"; EXCEPTION->decisionNum = 1; EXCEPTION->state = _s; return -1; } /* Declare tracking structure for Cyclic DFA 1 */ static ANTLR3_CYCLIC_DFA cdfa1 = { 1, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"108:26: ( info CR LF )?", (CDFA_SPECIAL_FUNC) dfa1_sst, antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa1_eot, /* EOT table */ dfa1_eof, /* EOF table */ dfa1_min, /* Minimum tokens for each state */ dfa1_max, /* Maximum tokens for each state */ dfa1_accept, /* Accept table */ dfa1_special, /* Special transition states */ dfa1_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 1 * --------------------- *//** Static dfa state tables for Cyclic dfa: * 109:26: ( uri_field CR LF )? */ static const ANTLR3_INT32 dfa2_eot[33] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa2_eof[33] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa2_min[33] = { 6, 11, 11, 4, 4, 13, 4, 4, 4, 4, 4, 0, 4, 4, 4, 4, -1, -1, 4, 4, 13, 13, 13, 4, 4, 4, 4, 4, 4, 0, 0, 0, 4 }; static const ANTLR3_INT32 dfa2_max[33] = { 12, 11, 11, 35, 35, 13, 35, 35, 35, 35, 35, 0, 35, 35, 35, 35, -1, -1, 35, 35, 13, 13, 13, 35, 35, 35, 35, 35, 35, 0, 0, 0, 35 }; static const ANTLR3_INT32 dfa2_accept[33] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa2_special[33] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 3, 1, -1 }; /** Used when there is no transition table entry for a particular state */ #define dfa2_T_empty NULL static const ANTLR3_INT32 dfa2_T0[] = { 7, 7, 4, 5, 7, 6, 7, 7, 4, -1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 }; static const ANTLR3_INT32 dfa2_T1[] = { -1 }; static const ANTLR3_INT32 dfa2_T2[] = { 7, 7, 7, 5, 7, 15, 7, 7, 7, -1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 }; static const ANTLR3_INT32 dfa2_T3[] = { 10, 7, 4, 5, 7, 9, 7, 7, 4, -1, 7, 7, 7, 7, 7, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 }; static const ANTLR3_INT32 dfa2_T4[] = { 31 }; static const ANTLR3_INT32 dfa2_T5[] = { 7, 7, 13, 5, 7, 14, 7, 7, 13, -1, 7, 7, 7, 7, 7, 19, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 }; static const ANTLR3_INT32 dfa2_T6[] = { 7, 7, 13, 21, 7, 18, 7, 7, 13, -1, 7, 7, 7, 7, 7, 19, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 }; static const ANTLR3_INT32 dfa2_T7[] = { 11 }; static const ANTLR3_INT32 dfa2_T8[] = { 10, 7, 4, 5, 7, 6, 7, 7, 4, -1, 7, 7, 7, 7, 7, 12, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 }; static const ANTLR3_INT32 dfa2_T9[] = { 7, 7, 7, 20, 7, 15, 7, 7, 7, -1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 }; static const ANTLR3_INT32 dfa2_T10[] = { 7, 7, 13, 5, 7, 18, 7, 7, 13, -1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 }; static const ANTLR3_INT32 dfa2_T11[] = { 29 }; static const ANTLR3_INT32 dfa2_T12[] = { 26, 7, 23, 22, 27, 24, 25, 7, 23, -1, 7, 7, 7, 7, 28, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 }; static const ANTLR3_INT32 dfa2_T13[] = { 3 }; static const ANTLR3_INT32 dfa2_T14[] = { 30 }; static const ANTLR3_INT32 dfa2_T15[] = { 1, -1, -1, 2, -1, -1, 1 }; static const ANTLR3_INT32 dfa2_T16[] = { 7, 7, 7, 5, 7, 32, 7, 7, 7, -1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 }; static const ANTLR3_INT32 dfa2_T17[] = { 7, 7, 7, 22, 7, 32, 7, 7, 7, -1, 7, 7, 7, 7, 28, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 }; static const ANTLR3_INT32 dfa2_T18[] = { 7, 7, 13, 5, 7, 14, 7, 7, 13, -1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 }; static const ANTLR3_INT32 dfa2_T19[] = { 7, 7, 7, 5, 7, 7, 7, 7, 7, -1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa2_transitions[] = { dfa2_T15, dfa2_T13, dfa2_T13, dfa2_T0, dfa2_T3, dfa2_T7, dfa2_T8, dfa2_T19, dfa2_T18, dfa2_T3, dfa2_T2, dfa2_T1, dfa2_T10, dfa2_T5, dfa2_T5, dfa2_T9, NULL, NULL, dfa2_T6, dfa2_T12, dfa2_T11, dfa2_T14, dfa2_T4, dfa2_T12, dfa2_T12, dfa2_T12, dfa2_T12, dfa2_T12, dfa2_T16, dfa2_T1, dfa2_T1, dfa2_T1, dfa2_T17 }; static ANTLR3_INT32 dfa2_sst(pbelle_sdpParser ctx, pANTLR3_BASE_RECOGNIZER recognizer, pANTLR3_INT_STREAM is, pANTLR3_CYCLIC_DFA dfa, ANTLR3_INT32 s) { ANTLR3_INT32 _s; _s = s; switch (s) { case 0: { ANTLR3_UINT32 LA2_29; ANTLR3_MARKER index2_29; LA2_29 = LA(1); index2_29 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(u))) ) { s = 16; } else if ( ((((IS_TOKEN(p)))||((IS_TOKEN(b)))||((IS_TOKEN(e))))) ) { s = 17; } SEEK(index2_29); if ( s>=0 ) { return s; } } break; case 1: { ANTLR3_UINT32 LA2_31; ANTLR3_MARKER index2_31; LA2_31 = LA(1); index2_31 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(u))) ) { s = 16; } else if ( ((((IS_TOKEN(p)))||((IS_TOKEN(c)))||((IS_TOKEN(e))))) ) { s = 17; } SEEK(index2_31); if ( s>=0 ) { return s; } } break; case 2: { ANTLR3_UINT32 LA2_11; ANTLR3_MARKER index2_11; LA2_11 = LA(1); index2_11 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(u))) ) { s = 16; } else if ( ((((IS_TOKEN(p)))||((IS_TOKEN(e))))) ) { s = 17; } SEEK(index2_11); if ( s>=0 ) { return s; } } break; case 3: { ANTLR3_UINT32 LA2_30; ANTLR3_MARKER index2_30; LA2_30 = LA(1); index2_30 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(u))) ) { s = 16; } else if ( ((((IS_TOKEN(p)))||((IS_TOKEN(e)))||((IS_TOKEN(t))))) ) { s = 17; } SEEK(index2_30); if ( s>=0 ) { return s; } } break; } if (BACKTRACKING > 0) { FAILEDFLAG = ANTLR3_TRUE; return -1; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)"109:26: ( uri_field CR LF )?"; EXCEPTION->decisionNum = 2; EXCEPTION->state = _s; return -1; } /* Declare tracking structure for Cyclic DFA 2 */ static ANTLR3_CYCLIC_DFA cdfa2 = { 2, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"109:26: ( uri_field CR LF )?", (CDFA_SPECIAL_FUNC) dfa2_sst, antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa2_eot, /* EOT table */ dfa2_eof, /* EOF table */ dfa2_min, /* Minimum tokens for each state */ dfa2_max, /* Maximum tokens for each state */ dfa2_accept, /* Accept table */ dfa2_special, /* Special transition states */ dfa2_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 2 * --------------------- *//** Static dfa state tables for Cyclic dfa: * ()* loopback of 110:26: ( email CR LF )* */ static const ANTLR3_INT32 dfa3_eot[33] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa3_eof[33] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa3_min[33] = { 6, 11, 11, 4, 4, 13, 4, 4, 4, 4, 4, 0, 4, 4, 4, 4, -1, -1, 4, 4, 13, 13, 13, 4, 4, 4, 4, 4, 4, 0, 0, 0, 4 }; static const ANTLR3_INT32 dfa3_max[33] = { 12, 11, 11, 35, 35, 13, 35, 35, 35, 35, 35, 0, 35, 35, 35, 35, -1, -1, 35, 35, 13, 13, 13, 35, 35, 35, 35, 35, 35, 0, 0, 0, 35 }; static const ANTLR3_INT32 dfa3_accept[33] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa3_special[33] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2, 1, 3, -1 }; /** Used when there is no transition table entry for a particular state */ #define dfa3_T_empty NULL static const ANTLR3_INT32 dfa3_T0[] = { 26, 7, 23, 22, 27, 24, 25, 7, 23, -1, 7, 7, 7, 7, 28, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 }; static const ANTLR3_INT32 dfa3_T1[] = { 7, 7, 7, 5, 7, 7, 7, 7, 7, -1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 }; static const ANTLR3_INT32 dfa3_T2[] = { 7, 7, 7, 5, 7, 15, 7, 7, 7, -1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 }; static const ANTLR3_INT32 dfa3_T3[] = { -1 }; static const ANTLR3_INT32 dfa3_T4[] = { 10, 7, 4, 5, 7, 9, 7, 7, 4, -1, 7, 7, 7, 7, 7, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 }; static const ANTLR3_INT32 dfa3_T5[] = { 7, 7, 13, 5, 7, 14, 7, 7, 13, -1, 7, 7, 7, 7, 7, 19, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 }; static const ANTLR3_INT32 dfa3_T6[] = { 7, 7, 13, 21, 7, 18, 7, 7, 13, -1, 7, 7, 7, 7, 7, 19, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 }; static const ANTLR3_INT32 dfa3_T7[] = { 10, 7, 4, 5, 7, 6, 7, 7, 4, -1, 7, 7, 7, 7, 7, 12, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 }; static const ANTLR3_INT32 dfa3_T8[] = { 7, 7, 7, 20, 7, 15, 7, 7, 7, -1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 }; static const ANTLR3_INT32 dfa3_T9[] = { 7, 7, 13, 5, 7, 18, 7, 7, 13, -1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 }; static const ANTLR3_INT32 dfa3_T10[] = { 7, 7, 4, 5, 7, 6, 7, 7, 4, -1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 }; static const ANTLR3_INT32 dfa3_T11[] = { 31 }; static const ANTLR3_INT32 dfa3_T12[] = { 11 }; static const ANTLR3_INT32 dfa3_T13[] = { 29 }; static const ANTLR3_INT32 dfa3_T14[] = { 3 }; static const ANTLR3_INT32 dfa3_T15[] = { 1, -1, -1, 2, -1, -1, 1 }; static const ANTLR3_INT32 dfa3_T16[] = { 7, 7, 7, 5, 7, 32, 7, 7, 7, -1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 }; static const ANTLR3_INT32 dfa3_T17[] = { 30 }; static const ANTLR3_INT32 dfa3_T18[] = { 7, 7, 7, 22, 7, 32, 7, 7, 7, -1, 7, 7, 7, 7, 28, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 }; static const ANTLR3_INT32 dfa3_T19[] = { 7, 7, 13, 5, 7, 14, 7, 7, 13, -1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa3_transitions[] = { dfa3_T15, dfa3_T14, dfa3_T14, dfa3_T10, dfa3_T4, dfa3_T12, dfa3_T7, dfa3_T1, dfa3_T19, dfa3_T4, dfa3_T2, dfa3_T3, dfa3_T9, dfa3_T5, dfa3_T5, dfa3_T8, NULL, NULL, dfa3_T6, dfa3_T0, dfa3_T13, dfa3_T17, dfa3_T11, dfa3_T0, dfa3_T0, dfa3_T0, dfa3_T0, dfa3_T0, dfa3_T16, dfa3_T3, dfa3_T3, dfa3_T3, dfa3_T18 }; static ANTLR3_INT32 dfa3_sst(pbelle_sdpParser ctx, pANTLR3_BASE_RECOGNIZER recognizer, pANTLR3_INT_STREAM is, pANTLR3_CYCLIC_DFA dfa, ANTLR3_INT32 s) { ANTLR3_INT32 _s; _s = s; switch (s) { case 0: { ANTLR3_UINT32 LA3_11; ANTLR3_MARKER index3_11; LA3_11 = LA(1); index3_11 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(e))) ) { s = 16; } else if ( ((IS_TOKEN(p))) ) { s = 17; } SEEK(index3_11); if ( s>=0 ) { return s; } } break; case 1: { ANTLR3_UINT32 LA3_30; ANTLR3_MARKER index3_30; LA3_30 = LA(1); index3_30 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(e))) ) { s = 16; } else if ( ((((IS_TOKEN(p)))||((IS_TOKEN(t))))) ) { s = 17; } SEEK(index3_30); if ( s>=0 ) { return s; } } break; case 2: { ANTLR3_UINT32 LA3_29; ANTLR3_MARKER index3_29; LA3_29 = LA(1); index3_29 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(e))) ) { s = 16; } else if ( ((((IS_TOKEN(p)))||((IS_TOKEN(b))))) ) { s = 17; } SEEK(index3_29); if ( s>=0 ) { return s; } } break; case 3: { ANTLR3_UINT32 LA3_31; ANTLR3_MARKER index3_31; LA3_31 = LA(1); index3_31 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(e))) ) { s = 16; } else if ( ((((IS_TOKEN(p)))||((IS_TOKEN(c))))) ) { s = 17; } SEEK(index3_31); if ( s>=0 ) { return s; } } break; } if (BACKTRACKING > 0) { FAILEDFLAG = ANTLR3_TRUE; return -1; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)"()* loopback of 110:26: ( email CR LF )*"; EXCEPTION->decisionNum = 3; EXCEPTION->state = _s; return -1; } /* Declare tracking structure for Cyclic DFA 3 */ static ANTLR3_CYCLIC_DFA cdfa3 = { 3, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"()* loopback of 110:26: ( email CR LF )*", (CDFA_SPECIAL_FUNC) dfa3_sst, antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa3_eot, /* EOT table */ dfa3_eof, /* EOF table */ dfa3_min, /* Minimum tokens for each state */ dfa3_max, /* Maximum tokens for each state */ dfa3_accept, /* Accept table */ dfa3_special, /* Special transition states */ dfa3_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 3 * --------------------- *//** Static dfa state tables for Cyclic dfa: * ()* loopback of 111:26: ( phone_field )* */ static const ANTLR3_INT32 dfa4_eot[1007] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa4_eof[1007] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 29, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 29, -1, -1, -1, -1, -1, 29, -1, -1, -1, -1, -1, 29, -1, -1, -1, -1, -1, -1, -1, -1, 29, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 29, 29, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 29, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 29, -1, -1, -1, -1, -1, -1, 29, -1, -1, -1, -1, -1, -1, -1, -1, 29, 29, -1, -1, -1, -1, 29, -1, 29, -1, -1, -1, -1, -1, -1, 29, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 29, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 29, -1, 29, -1, -1, -1, -1, -1, -1, -1, 29, -1, -1, -1, -1, -1, -1, 29, -1, -1, 29, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 29, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 29, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 29, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 29, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 29, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 29, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 29, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 29, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 29, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 29, -1, -1, -1, -1, 29, 29, -1, -1, -1, -1, -1, -1, -1, -1, -1, 29, 29, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 29, -1, -1, -1, -1, -1, -1, -1, -1, 29, 29, -1, -1, -1, 29, -1, 29, -1, 29, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 29, -1, -1, 29, 29, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 29, -1, -1, -1, -1, -1, -1, -1, 29, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 29, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 29, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 29, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 29, 29, -1, -1, -1, 29, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 29, 29, 29, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 29, -1, -1, -1, -1, 29, -1, -1, 29, -1, 29, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 29, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 29, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 29, -1, -1, 29 }; static const ANTLR3_INT32 dfa4_min[1007] = { 6, 11, 11, 4, 4, 4, -1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 13, 4, 4, 4, 4, 4, 4, 13, 0, 6, 4, 0, -1, 11, 11, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 6, 4, 4, 13, 4, 4, 6, 4, 4, 4, 4, 4, 6, 11, 11, 13, 4, 4, 4, 4, 4, 6, 4, 4, 4, 4, 13, 13, 4, 4, 4, 4, 0, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 6, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 11, 11, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 13, 6, 4, 4, 4, 4, 4, 4, 6, 4, 4, 13, 4, 4, 4, 13, 4, 6, 6, 4, 13, 4, 4, 6, 4, 6, 4, 11, 11, 11, 11, 4, 6, 4, 4, 4, 4, 4, 4, 4, 4, 4, 11, 11, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 13, 13, 4, 4, 4, 4, 13, 4, 4, 4, 6, 4, 4, 4, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 6, 0, 6, 4, 4, 4, 4, 4, 4, 13, 6, 4, 4, 4, 4, 11, 11, 6, 4, 4, 6, 4, 4, 4, 11, 11, 11, 11, 4, 4, 4, 4, 4, 4, 13, 4, 13, 4, 4, 4, 4, 6, 13, 4, 4, 4, 11, 11, 13, 4, 4, 4, 4, 13, 4, 4, 4, 4, 13, 4, 6, 4, 13, 4, 4, 4, 4, 4, 4, 4, 0, 4, 4, 4, 4, 4, 4, 4, 4, 6, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 6, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 0, 4, 11, 11, 4, 6, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 6, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 4, 4, 4, 4, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 6, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 13, 4, 4, 6, 4, 4, 4, 11, 11, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 6, 13, 4, 4, 4, 6, 6, 4, 4, 4, 4, 4, 13, 4, 13, 4, 6, 6, 13, 11, 11, 4, 4, 4, 4, 13, 4, 4, 4, 6, 4, 4, 4, 4, 4, 4, 4, 13, 6, 6, 13, 13, 4, 6, 4, 6, 4, 6, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 13, 4, 4, 6, 11, 11, 6, 6, 4, 4, 11, 11, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 4, 4, 13, 4, 4, 4, 4, 6, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 4, 6, 4, 4, 4, 11, 11, 13, 4, 4, 4, 4, 13, 4, 4, 4, 13, 4, 4, 4, 6, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 4, 4, 4, 4, 11, 11, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 4, 4, 4, 4, 6, 6, 13, 4, 4, 6, 13, 4, 13, 11, 11, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 6, 6, 6, 4, 13, 4, 13, 4, 4, 4, 4, 4, 4, 6, 4, 4, 4, 4, 6, 4, 4, 6, 4, 6, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 6, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 6, 4, 4, 6 }; static const ANTLR3_INT32 dfa4_max[1007] = { 12, 11, 11, 35, 35, 35, -1, 35, 35, 35, 35, 35, 35, 35, 35, 35, 13, 13, 35, 35, 35, 35, 35, 35, 13, 0, 12, 35, 0, -1, 11, 11, 35, 35, 35, 35, 35, 13, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 13, 35, 35, 35, 35, 35, 35, 13, 35, 35, 35, 12, 35, 35, 13, 35, 35, 12, 35, 35, 35, 35, 35, 12, 11, 11, 13, 35, 35, 35, 35, 35, 12, 35, 35, 35, 35, 13, 13, 35, 35, 35, 35, 0, 35, 35, 13, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 12, 12, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 12, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 13, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 11, 11, 35, 13, 35, 35, 35, 35, 35, 35, 35, 35, 35, 13, 35, 35, 13, 12, 35, 35, 35, 35, 35, 35, 12, 35, 35, 13, 35, 35, 35, 13, 35, 12, 12, 35, 13, 35, 35, 12, 35, 12, 35, 11, 11, 11, 11, 35, 12, 35, 35, 35, 35, 35, 35, 35, 35, 35, 11, 11, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 13, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 13, 13, 13, 35, 35, 35, 35, 13, 35, 35, 35, 12, 35, 35, 35, 13, 35, 35, 35, 13, 35, 35, 35, 35, 35, 35, 12, 0, 12, 35, 35, 35, 35, 35, 35, 13, 12, 35, 35, 35, 35, 11, 11, 12, 35, 35, 12, 35, 35, 35, 11, 11, 11, 11, 35, 35, 35, 35, 35, 35, 13, 35, 13, 35, 35, 35, 35, 12, 13, 35, 35, 35, 11, 11, 13, 35, 35, 35, 35, 13, 35, 35, 35, 35, 13, 35, 12, 35, 13, 35, 35, 35, 35, 35, 35, 35, 0, 35, 35, 35, 35, 35, 35, 35, 35, 12, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 13, 35, 12, 35, 35, 35, 13, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 0, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 13, 35, 35, 35, 35, 35, 0, 35, 11, 11, 35, 12, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 13, 35, 35, 35, 35, 35, 35, 12, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 13, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 12, 35, 35, 35, 35, 13, 35, 35, 35, 13, 35, 35, 35, 35, 35, 12, 35, 35, 35, 35, 35, 35, 35, 35, 13, 35, 13, 35, 35, 12, 35, 35, 35, 11, 11, 35, 13, 35, 35, 35, 35, 35, 35, 35, 13, 35, 35, 12, 13, 35, 35, 35, 12, 12, 35, 35, 35, 35, 35, 13, 35, 13, 35, 12, 12, 13, 11, 11, 35, 35, 35, 35, 13, 35, 35, 35, 12, 35, 35, 35, 35, 35, 35, 35, 13, 12, 12, 13, 13, 35, 12, 35, 12, 35, 12, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 13, 35, 35, 35, 35, 35, 35, 0, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 13, 35, 35, 35, 35, 35, 35, 35, 13, 35, 35, 35, 13, 35, 35, 12, 11, 11, 12, 12, 35, 35, 11, 11, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 12, 35, 35, 13, 35, 35, 35, 35, 12, 35, 35, 35, 35, 35, 13, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 0, 35, 12, 35, 35, 35, 11, 11, 13, 35, 35, 35, 35, 13, 35, 35, 35, 13, 35, 35, 35, 12, 35, 35, 13, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 12, 35, 35, 35, 35, 11, 11, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 0, 35, 35, 35, 35, 12, 12, 13, 35, 35, 12, 13, 35, 13, 11, 11, 35, 35, 35, 35, 35, 35, 35, 13, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 13, 12, 12, 12, 35, 13, 35, 13, 35, 35, 35, 35, 35, 35, 12, 35, 35, 35, 35, 12, 35, 35, 12, 35, 12, 35, 13, 35, 35, 35, 35, 35, 35, 35, 35, 12, 35, 13, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 12, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 13, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 13, 35, 35, 35, 12, 35, 35, 12 }; static const ANTLR3_INT32 dfa4_accept[1007] = { -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa4_special[1007] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, -1, -1, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; /** Used when there is no transition table entry for a particular state */ #define dfa4_T_empty NULL static const ANTLR3_INT32 dfa4_T0[] = { 781, 6, 782, 779, 703, 783, 704, 6, 782, -1, 6, 6, 6, 6, 6, 6, 701, 6, 695, 696, 697, 699, 698, 702, 700, 705, 706, 707, 708, 709, 710, 711 }; static const ANTLR3_INT32 dfa4_T1[] = { 54, 54, 191, 193, 157, 192, 158, 54, 191, -1, 54, 54, 54, 54, 54, 167, 155, 54, 149, 150, 151, 153, 152, 156, 154, 159, 160, 161, 162, 163, 164, 165 }; static const ANTLR3_INT32 dfa4_T2[] = { 433, 433, 611, 434, 433, 610, 433, 433, 611, -1, 433, 433, 433, 433, 648, 649, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433 }; static const ANTLR3_INT32 dfa4_T3[] = { 627 }; static const ANTLR3_INT32 dfa4_T4[] = { 728, -1, -1, 729, -1, -1, 728 }; static const ANTLR3_INT32 dfa4_T5[] = { 113, 54, 111, 102, 114, 110, 112, 54, 111, -1, 54, 54, 54, 54, 115, 117, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54 }; static const ANTLR3_INT32 dfa4_T6[] = { 407, 285, 405, 394, 408, 404, 406, 285, 405, -1, 285, 285, 285, 285, 409, 410, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285 }; static const ANTLR3_INT32 dfa4_T7[] = { 810, -1, -1, 811, -1, -1, 810 }; static const ANTLR3_INT32 dfa4_T8[] = { 796, 796, 796, 558, 796, 853, 796, 796, 796, -1, 796, 796, 796, 796, 796, 827, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796 }; static const ANTLR3_INT32 dfa4_T9[] = { 887 }; static const ANTLR3_INT32 dfa4_T10[] = { 234, 234, 234, 6, 234, 234, 234, 234, 234, -1, 234, 234, 234, 234, 234, 228, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234 }; static const ANTLR3_INT32 dfa4_T11[] = { 559, 559, 559, 558, 559, 559, 559, 559, 559, -1, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559 }; static const ANTLR3_INT32 dfa4_T12[] = { 433, 433, 414, 434, 424, 415, 425, 433, 414, -1, 433, 433, 433, 433, 433, 433, 422, 433, 416, 417, 418, 420, 419, 423, 421, 426, 427, 428, 429, 430, 431, 432 }; static const ANTLR3_INT32 dfa4_T13[] = { 358, -1, -1, 359, -1, -1, 358 }; static const ANTLR3_INT32 dfa4_T14[] = { 179, 6, 124, 180, 134, 125, 135, 6, 124, -1, 6, 6, 6, 6, 6, 183, 132, 6, 126, 127, 128, 130, 129, 133, 131, 136, 137, 138, 139, 140, 141, 142 }; static const ANTLR3_INT32 dfa4_T15[] = { 584, 433, 911, 585, 464, 931, 465, 433, 911, -1, 433, 433, 433, 433, 433, 913, 462, 433, 456, 457, 458, 460, 459, 463, 461, 466, 467, 468, 469, 470, 471, 472 }; static const ANTLR3_INT32 dfa4_T16[] = { 285, 285, 599, 366, 285, 598, 285, 285, 599, -1, 285, 285, 285, 285, 285, 365, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285 }; static const ANTLR3_INT32 dfa4_T17[] = { 57, 54, 59, 56, 45, 60, 46, 54, 59, -1, 54, 54, 54, 54, 54, 58, 43, 54, 36, 38, 39, 41, 40, 44, 42, 47, 48, 49, 50, 51, 52, 53 }; static const ANTLR3_INT32 dfa4_T18[] = { 793, 796, 826, 828, 794, 829, 792, 796, 826, -1, 796, 796, 796, 796, 795, 827, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796 }; static const ANTLR3_INT32 dfa4_T19[] = { 285, 285, 528, 341, 526, 527, 285, 285, 528, -1, 285, 285, 285, 285, 285, 340, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285 }; static const ANTLR3_INT32 dfa4_T20[] = { 559, 559, 559, 558, 559, 805, 559, 559, 559, -1, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559 }; static const ANTLR3_INT32 dfa4_T21[] = { 559, 559, 559, 558, 559, 805, 559, 559, 559, -1, 559, 559, 559, 559, 559, 856, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559 }; static const ANTLR3_INT32 dfa4_T22[] = { 54, 54, 86, 70, 54, 87, 54, 54, 86, -1, 54, 54, 54, 54, 54, 85, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54 }; static const ANTLR3_INT32 dfa4_T23[] = { 234, 234, 234, 6, 234, 261, 234, 234, 234, -1, 234, 234, 234, 234, 234, 228, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234 }; static const ANTLR3_INT32 dfa4_T24[] = { 689, 433, 686, 685, 690, 687, 688, 433, 686, -1, 433, 433, 433, 433, 691, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433 }; static const ANTLR3_INT32 dfa4_T25[] = { 559, 559, 559, 558, 559, 1005, 559, 559, 559, -1, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559 }; static const ANTLR3_INT32 dfa4_T26[] = { 318, 285, 319, 313, 275, 320, 276, 285, 319, -1, 285, 285, 285, 285, 285, 285, 273, 285, 267, 268, 269, 271, 270, 274, 272, 277, 278, 279, 280, 281, 282, 283 }; static const ANTLR3_INT32 dfa4_T27[] = { 591, 305, 473, 589, 483, 474, 484, 305, 473, -1, 305, 305, 305, 305, 305, 328, 481, 305, 475, 476, 477, 479, 478, 482, 480, 485, 486, 487, 488, 489, 490, 491 }; static const ANTLR3_INT32 dfa4_T28[] = { 646, -1, -1, 647, -1, -1, 646 }; static const ANTLR3_INT32 dfa4_T29[] = { 54, 54, 54, 93, 54, 54, 54, 54, 54, -1, 54, 54, 54, 54, 54, 92, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54 }; static const ANTLR3_INT32 dfa4_T30[] = { 615, 559, 946, 616, 548, 947, 549, 559, 946, -1, 559, 559, 559, 559, 559, 948, 546, 559, 540, 541, 542, 544, 543, 547, 545, 550, 551, 552, 553, 554, 555, 556 }; static const ANTLR3_INT32 dfa4_T31[] = { 411 }; static const ANTLR3_INT32 dfa4_T32[] = { 179, 6, 124, 180, 134, 181, 135, 6, 124, -1, 6, 6, 6, 6, 6, 182, 132, 6, 126, 127, 128, 130, 129, 133, 131, 136, 137, 138, 139, 140, 141, 142 }; static const ANTLR3_INT32 dfa4_T33[] = { 285, 285, 361, 266, 285, 371, 285, 285, 361, -1, 285, 285, 285, 285, 285, 389, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285 }; static const ANTLR3_INT32 dfa4_T34[] = { 54, 54, 191, 193, 157, 195, 158, 54, 191, -1, 54, 54, 54, 54, 54, 167, 155, 54, 149, 150, 151, 153, 152, 156, 154, 159, 160, 161, 162, 163, 164, 165 }; static const ANTLR3_INT32 dfa4_T35[] = { 559, 559, 559, 558, 559, 854, 559, 559, 559, -1, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559 }; static const ANTLR3_INT32 dfa4_T36[] = { 402 }; static const ANTLR3_INT32 dfa4_T37[] = { 433, 433, 757, 434, 766, 756, 767, 433, 757, -1, 433, 433, 433, 433, 433, 433, 764, 433, 758, 759, 760, 762, 761, 765, 763, 768, 769, 770, 771, 772, 773, 774 }; static const ANTLR3_INT32 dfa4_T38[] = { 54, 54, 207, 93, 189, 263, 158, 54, 207, -1, 54, 54, 54, 54, 54, 92, 155, 54, 149, 150, 151, 153, 152, 156, 154, 159, 160, 161, 162, 163, 164, 165 }; static const ANTLR3_INT32 dfa4_T39[] = { 433, 433, 454, 434, 464, 455, 465, 433, 454, -1, 433, 433, 433, 433, 433, 433, 462, 433, 456, 457, 458, 460, 459, 463, 461, 466, 467, 468, 469, 470, 471, 472 }; static const ANTLR3_INT32 dfa4_T40[] = { 621, 559, 622, 616, 548, 623, 549, 559, 622, -1, 559, 559, 559, 559, 559, 559, 546, 559, 540, 541, 542, 544, 543, 547, 545, 550, 551, 552, 553, 554, 555, 556 }; static const ANTLR3_INT32 dfa4_T41[] = { 54, 54, 191, 190, 157, 192, 158, 54, 191, -1, 54, 54, 54, 54, 54, 103, 155, 54, 149, 150, 151, 153, 152, 156, 154, 159, 160, 161, 162, 163, 164, 165 }; static const ANTLR3_INT32 dfa4_T42[] = { 54, 54, 191, 193, 157, 219, 158, 54, 191, -1, 54, 54, 54, 54, 54, 237, 155, 54, 149, 150, 151, 153, 152, 156, 154, 159, 160, 161, 162, 163, 164, 165 }; static const ANTLR3_INT32 dfa4_T43[] = { 591, 305, 473, 589, 483, 590, 484, 305, 473, -1, 305, 305, 305, 305, 305, 327, 481, 305, 475, 476, 477, 479, 478, 482, 480, 485, 486, 487, 488, 489, 490, 491 }; static const ANTLR3_INT32 dfa4_T44[] = { 920 }; static const ANTLR3_INT32 dfa4_T45[] = { 684, 684, 684, 953, 684, 972, 684, 684, 684, -1, 684, 684, 684, 684, 958, 678, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684 }; static const ANTLR3_INT32 dfa4_T46[] = { 734, -1, -1, 735, -1, -1, 734 }; static const ANTLR3_INT32 dfa4_T47[] = { 401, 401, 401, 492, 401, 523, 401, 401, 401, -1, 401, 401, 401, 401, 400, 494, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401 }; static const ANTLR3_INT32 dfa4_T48[] = { 684, 684, 684, 434, 684, 684, 684, 684, 684, -1, 684, 684, 684, 684, 684, 678, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684 }; static const ANTLR3_INT32 dfa4_T49[] = { 886, 886, 886, 817, 886, 885, 886, 886, 886, -1, 886, 886, 886, 886, 886, 886, 886, 886, 886, 886, 886, 886, 886, 886, 886, 886, 886, 886, 886, 886, 886, 886 }; static const ANTLR3_INT32 dfa4_T50[] = { 6, 6, 6, 6, 6, 27, 6, 6, 6, -1, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa4_T51[] = { 608, 608, 608, 645, 608, 607, 608, 608, 608, -1, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608 }; static const ANTLR3_INT32 dfa4_T52[] = { 580 }; static const ANTLR3_INT32 dfa4_T53[] = { 559, 559, 722, 724, 559, 721, 559, 559, 722, -1, 559, 559, 559, 559, 559, 723, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559 }; static const ANTLR3_INT32 dfa4_T54[] = { 54, 54, 86, 37, 54, 87, 54, 54, 86, -1, 54, 54, 54, 54, 54, 116, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54 }; static const ANTLR3_INT32 dfa4_T55[] = { 987, 796, 985, 984, 988, 983, 986, 796, 985, -1, 796, 796, 796, 796, 989, 789, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796 }; static const ANTLR3_INT32 dfa4_T56[] = { 435 }; static const ANTLR3_INT32 dfa4_T57[] = { 644 }; static const ANTLR3_INT32 dfa4_T58[] = { 235, -1, -1, 236, -1, -1, 235 }; static const ANTLR3_INT32 dfa4_T59[] = { 433, 433, 933, 652, 433, 934, 433, 433, 933, -1, 433, 433, 433, 433, 648, 943, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433 }; static const ANTLR3_INT32 dfa4_T60[] = { 635, 635, 635, 589, 635, 635, 635, 635, 635, -1, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635 }; static const ANTLR3_INT32 dfa4_T61[] = { 238 }; static const ANTLR3_INT32 dfa4_T62[] = { 559, 559, 967, 624, 559, 966, 559, 559, 967, -1, 559, 559, 559, 559, 715, 976, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559 }; static const ANTLR3_INT32 dfa4_T63[] = { 220, -1, -1, 221, -1, -1, 220 }; static const ANTLR3_INT32 dfa4_T64[] = { 559, 559, 626, 624, 559, 625, 559, 559, 626, -1, 559, 559, 559, 559, 559, 557, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559 }; static const ANTLR3_INT32 dfa4_T65[] = { 559, 559, 891, 895, 843, 894, 844, 559, 891, -1, 559, 559, 559, 559, 559, 827, 841, 559, 835, 836, 837, 839, 838, 842, 840, 845, 846, 847, 848, 849, 850, 851 }; static const ANTLR3_INT32 dfa4_T66[] = { 987, 796, 985, 984, 988, 996, 986, 796, 985, -1, 796, 796, 796, 796, 989, 855, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796 }; static const ANTLR3_INT32 dfa4_T67[] = { 559, 559, 559, 558, 559, 787, 559, 559, 559, -1, 559, 559, 559, 559, 559, 832, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559 }; static const ANTLR3_INT32 dfa4_T68[] = { 818, 6, 819, 817, 746, 820, 747, 6, 819, -1, 6, 6, 6, 6, 6, 6, 744, 6, 738, 739, 740, 742, 741, 745, 743, 748, 749, 750, 751, 752, 753, 754 }; static const ANTLR3_INT32 dfa4_T69[] = { 305, 305, 562, 628, 571, 629, 572, 305, 562, -1, 305, 305, 305, 305, 305, 439, 569, 305, 563, 564, 565, 567, 566, 570, 568, 573, 574, 575, 576, 577, 578, 579 }; static const ANTLR3_INT32 dfa4_T70[] = { 529, 433, 414, 530, 424, 531, 425, 433, 414, -1, 433, 433, 433, 433, 433, 532, 422, 433, 416, 417, 418, 420, 419, 423, 421, 426, 427, 428, 429, 430, 431, 432 }; static const ANTLR3_INT32 dfa4_T71[] = { 793, 796, 791, 790, 794, 788, 792, 796, 791, -1, 796, 796, 796, 796, 795, 789, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796 }; static const ANTLR3_INT32 dfa4_T72[] = { 433, 433, 433, 953, 433, 973, 433, 433, 433, -1, 433, 433, 433, 433, 964, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433 }; static const ANTLR3_INT32 dfa4_T73[] = { 730 }; static const ANTLR3_INT32 dfa4_T74[] = { 655, 655, 655, 616, 655, 654, 655, 655, 655, -1, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655 }; static const ANTLR3_INT32 dfa4_T75[] = { 559, 559, 626, 624, 559, 726, 559, 559, 626, -1, 559, 559, 559, 559, 559, 557, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559 }; static const ANTLR3_INT32 dfa4_T76[] = { 285, 285, 285, 492, 285, 525, 285, 285, 285, -1, 285, 285, 285, 285, 409, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285 }; static const ANTLR3_INT32 dfa4_T77[] = { 529, 433, 883, 530, 424, 884, 425, 433, 883, -1, 433, 433, 433, 433, 433, 915, 422, 433, 416, 417, 418, 420, 419, 423, 421, 426, 427, 428, 429, 430, 431, 432 }; static const ANTLR3_INT32 dfa4_T78[] = { 559, 559, 559, 624, 559, 559, 559, 559, 559, -1, 559, 559, 559, 559, 559, 557, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559 }; static const ANTLR3_INT32 dfa4_T79[] = { 210 }; static const ANTLR3_INT32 dfa4_T80[] = { 285, 285, 603, 641, 514, 602, 515, 285, 603, -1, 285, 285, 285, 285, 285, 642, 512, 285, 506, 507, 508, 510, 509, 513, 511, 516, 517, 518, 519, 520, 521, 522 }; static const ANTLR3_INT32 dfa4_T81[] = { 352 }; static const ANTLR3_INT32 dfa4_T82[] = { 54, 54, 191, 208, 157, 192, 158, 54, 191, -1, 54, 54, 54, 54, 54, 209, 155, 54, 149, 150, 151, 153, 152, 156, 154, 159, 160, 161, 162, 163, 164, 165 }; static const ANTLR3_INT32 dfa4_T83[] = { 218 }; static const ANTLR3_INT32 dfa4_T84[] = { 613, -1, -1, 614, -1, -1, 613 }; static const ANTLR3_INT32 dfa4_T85[] = { 793, 796, 791, 790, 794, 803, 792, 796, 791, -1, 796, 796, 796, 796, 795, 789, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796 }; static const ANTLR3_INT32 dfa4_T86[] = { 433, 433, 433, 434, 433, 676, 433, 433, 433, -1, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433 }; static const ANTLR3_INT32 dfa4_T87[] = { 1006 }; static const ANTLR3_INT32 dfa4_T88[] = { 3 }; static const ANTLR3_INT32 dfa4_T89[] = { 615, 559, 538, 616, 548, 539, 549, 559, 538, -1, 559, 559, 559, 559, 559, 620, 546, 559, 540, 541, 542, 544, 543, 547, 545, 550, 551, 552, 553, 554, 555, 556 }; static const ANTLR3_INT32 dfa4_T90[] = { 993, 559, 991, 984, 994, 990, 992, 559, 991, -1, 559, 559, 559, 559, 995, 557, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559 }; static const ANTLR3_INT32 dfa4_T91[] = { 54, 54, 906, 37, 872, 927, 873, 54, 906, -1, 54, 54, 54, 54, 54, 54, 870, 54, 864, 865, 866, 868, 867, 871, 869, 874, 875, 876, 877, 878, 879, 880 }; static const ANTLR3_INT32 dfa4_T92[] = { 882 }; static const ANTLR3_INT32 dfa4_T93[] = { 344, 344, 344, 313, 344, 344, 344, 344, 344, -1, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344 }; static const ANTLR3_INT32 dfa4_T94[] = { 6, 6, 6, 6, 6, 13, 6, 6, 6, -1, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa4_T95[] = { 665 }; static const ANTLR3_INT32 dfa4_T96[] = { 398, 401, 493, 492, 399, 495, 397, 401, 493, -1, 401, 401, 401, 401, 400, 494, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401 }; static const ANTLR3_INT32 dfa4_T97[] = { 608, 608, 608, 530, 608, 608, 608, 608, 608, -1, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608 }; static const ANTLR3_INT32 dfa4_T98[] = { 586, 433, 587, 585, 464, 588, 465, 433, 587, -1, 433, 433, 433, 433, 433, 433, 462, 433, 456, 457, 458, 460, 459, 463, 461, 466, 467, 468, 469, 470, 471, 472 }; static const ANTLR3_INT32 dfa4_T99[] = { 935 }; static const ANTLR3_INT32 dfa4_T100[] = { 806 }; static const ANTLR3_INT32 dfa4_T101[] = { 54, 54, 54, 70, 54, 54, 54, 54, 54, -1, 54, 54, 54, 54, 54, 71, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54 }; static const ANTLR3_INT32 dfa4_T102[] = { 6, 6, 6, 6, 6, 226, 6, 6, 6, -1, 6, 6, 6, 6, 6, 241, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa4_T103[] = { 6, 6, 243, 308, 252, 309, 253, 6, 243, -1, 6, 6, 6, 6, 6, 228, 250, 6, 244, 245, 246, 248, 247, 251, 249, 254, 255, 256, 257, 258, 259, 260 }; static const ANTLR3_INT32 dfa4_T104[] = { 631, 631, 631, 667, 631, 630, 631, 631, 631, -1, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631 }; static const ANTLR3_INT32 dfa4_T105[] = { 54, 54, 188, 70, 189, 187, 158, 54, 188, -1, 54, 54, 54, 54, 54, 71, 155, 54, 149, 150, 151, 153, 152, 156, 154, 159, 160, 161, 162, 163, 164, 165 }; static const ANTLR3_INT32 dfa4_T106[] = { 993, 559, 991, 984, 994, 997, 992, 559, 991, -1, 559, 559, 559, 559, 995, 808, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559 }; static const ANTLR3_INT32 dfa4_T107[] = { 929, 929, 929, 942, 929, 928, 929, 929, 929, -1, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929 }; static const ANTLR3_INT32 dfa4_T108[] = { 529, 433, 883, 530, 424, 914, 425, 433, 883, -1, 433, 433, 433, 433, 433, 913, 422, 433, 416, 417, 418, 420, 419, 423, 421, 426, 427, 428, 429, 430, 431, 432 }; static const ANTLR3_INT32 dfa4_T109[] = { 222, -1, -1, 223, -1, -1, 222 }; static const ANTLR3_INT32 dfa4_T110[] = { 285, 285, 361, 321, 285, 371, 285, 285, 361, -1, 285, 285, 285, 285, 285, 376, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285 }; static const ANTLR3_INT32 dfa4_T111[] = { 800, 559, 830, 828, 801, 831, 799, 559, 830, -1, 559, 559, 559, 559, 802, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559 }; static const ANTLR3_INT32 dfa4_T112[] = { 930 }; static const ANTLR3_INT32 dfa4_T113[] = { 54, 54, 91, 93, 54, 90, 54, 54, 91, -1, 54, 54, 54, 54, 54, 92, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54 }; static const ANTLR3_INT32 dfa4_T114[] = { 285, 285, 323, 321, 285, 322, 285, 285, 323, -1, 285, 285, 285, 285, 285, 284, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285 }; static const ANTLR3_INT32 dfa4_T115[] = { 184, 6, 185, 180, 134, 186, 135, 6, 185, -1, 6, 6, 6, 6, 6, 6, 132, 6, 126, 127, 128, 130, 129, 133, 131, 136, 137, 138, 139, 140, 141, 142 }; static const ANTLR3_INT32 dfa4_T116[] = { 285, 285, 361, 266, 285, 362, 285, 285, 361, -1, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285 }; static const ANTLR3_INT32 dfa4_T117[] = { 559, 559, 714, 812, 559, 732, 559, 559, 714, -1, 559, 559, 559, 559, 715, 785, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559 }; static const ANTLR3_INT32 dfa4_T118[] = { 285, 285, 323, 321, 285, 372, 285, 285, 323, -1, 285, 285, 285, 285, 285, 410, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285 }; static const ANTLR3_INT32 dfa4_T119[] = { 559, 559, 975, 664, 559, 978, 559, 559, 975, -1, 559, 559, 559, 559, 559, 980, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559 }; static const ANTLR3_INT32 dfa4_T120[] = { 684, 684, 684, 434, 684, 972, 684, 684, 684, -1, 684, 684, 684, 684, 684, 678, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684 }; static const ANTLR3_INT32 dfa4_T121[] = { 559, 559, 662, 720, 559, 660, 559, 559, 662, -1, 559, 559, 559, 559, 715, 719, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559 }; static const ANTLR3_INT32 dfa4_T122[] = { 285, 285, 361, 266, 285, 360, 285, 285, 361, -1, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285 }; static const ANTLR3_INT32 dfa4_T123[] = { 105, 108, 144, 166, 106, 145, 104, 108, 144, -1, 108, 108, 108, 108, 107, 167, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108 }; static const ANTLR3_INT32 dfa4_T124[] = { 54, 54, 59, 37, 45, 212, 46, 54, 59, -1, 54, 54, 54, 54, 54, 54, 43, 54, 36, 38, 39, 41, 40, 44, 42, 47, 48, 49, 50, 51, 52, 53 }; static const ANTLR3_INT32 dfa4_T125[] = { 615, 559, 617, 616, 548, 636, 549, 559, 617, -1, 559, 559, 559, 559, 559, 669, 546, 559, 540, 541, 542, 544, 543, 547, 545, 550, 551, 552, 553, 554, 555, 556 }; static const ANTLR3_INT32 dfa4_T126[] = { 559, 559, 559, 724, 559, 559, 559, 559, 559, -1, 559, 559, 559, 559, 559, 723, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559 }; static const ANTLR3_INT32 dfa4_T127[] = { -1 }; static const ANTLR3_INT32 dfa4_T128[] = { 305, 305, 286, 306, 296, 287, 297, 305, 286, -1, 305, 305, 305, 305, 305, 305, 294, 305, 288, 289, 290, 292, 291, 295, 293, 298, 299, 300, 301, 302, 303, 304 }; static const ANTLR3_INT32 dfa4_T129[] = { 407, 285, 496, 492, 408, 497, 406, 285, 496, -1, 285, 285, 285, 285, 409, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285 }; static const ANTLR3_INT32 dfa4_T130[] = { 54, 54, 86, 63, 54, 87, 54, 54, 86, -1, 54, 54, 54, 54, 54, 96, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54 }; static const ANTLR3_INT32 dfa4_T131[] = { 559, 559, 891, 895, 843, 890, 844, 559, 891, -1, 559, 559, 559, 559, 559, 827, 841, 559, 835, 836, 837, 839, 838, 842, 840, 845, 846, 847, 848, 849, 850, 851 }; static const ANTLR3_INT32 dfa4_T132[] = { 347, -1, -1, 348, -1, -1, 347 }; static const ANTLR3_INT32 dfa4_T133[] = { 684, 684, 684, 434, 684, 775, 684, 684, 684, -1, 684, 684, 684, 684, 684, 678, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684 }; static const ANTLR3_INT32 dfa4_T134[] = { 54, 54, 86, 37, 54, 240, 54, 54, 86, -1, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54 }; static const ANTLR3_INT32 dfa4_T135[] = { 584, 433, 911, 585, 464, 912, 465, 433, 911, -1, 433, 433, 433, 433, 433, 915, 462, 433, 456, 457, 458, 460, 459, 463, 461, 466, 467, 468, 469, 470, 471, 472 }; static const ANTLR3_INT32 dfa4_T136[] = { 433, 433, 433, 434, 433, 433, 433, 433, 433, -1, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433 }; static const ANTLR3_INT32 dfa4_T137[] = { 559, 559, 925, 724, 900, 970, 844, 559, 925, -1, 559, 559, 559, 559, 559, 723, 841, 559, 835, 836, 837, 839, 838, 842, 840, 845, 846, 847, 848, 849, 850, 851 }; static const ANTLR3_INT32 dfa4_T138[] = { 177, -1, -1, 178, -1, -1, 177 }; static const ANTLR3_INT32 dfa4_T139[] = { 54, 54, 197, 93, 175, 196, 54, 54, 197, -1, 54, 54, 54, 54, 54, 92, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54 }; static const ANTLR3_INT32 dfa4_T140[] = { 30, -1, -1, 31, -1, -1, 30 }; static const ANTLR3_INT32 dfa4_T141[] = { 559, 559, 891, 895, 843, 941, 844, 559, 891, -1, 559, 559, 559, 559, 559, 950, 841, 559, 835, 836, 837, 839, 838, 842, 840, 845, 846, 847, 848, 849, 850, 851 }; static const ANTLR3_INT32 dfa4_T142[] = { 559, 559, 891, 893, 843, 894, 844, 559, 891, -1, 559, 559, 559, 559, 559, 789, 841, 559, 835, 836, 837, 839, 838, 842, 840, 845, 846, 847, 848, 849, 850, 851 }; static const ANTLR3_INT32 dfa4_T143[] = { 54, 54, 174, 70, 54, 173, 54, 54, 174, -1, 54, 54, 54, 54, 54, 71, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54 }; static const ANTLR3_INT32 dfa4_T144[] = { 615, 559, 617, 616, 548, 618, 549, 559, 617, -1, 559, 559, 559, 559, 559, 657, 546, 559, 540, 541, 542, 544, 543, 547, 545, 550, 551, 552, 553, 554, 555, 556 }; static const ANTLR3_INT32 dfa4_T145[] = { 681, 684, 677, 685, 682, 679, 680, 684, 677, -1, 684, 684, 684, 684, 683, 678, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684 }; static const ANTLR3_INT32 dfa4_T146[] = { 54, 54, 86, 37, 54, 97, 54, 54, 86, -1, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54 }; static const ANTLR3_INT32 dfa4_T147[] = { 559, 559, 936, 558, 548, 937, 549, 559, 936, -1, 559, 559, 559, 559, 559, 557, 546, 559, 540, 541, 542, 544, 543, 547, 545, 550, 551, 552, 553, 554, 555, 556 }; static const ANTLR3_INT32 dfa4_T148[] = { 433, 433, 433, 434, 433, 973, 433, 433, 433, -1, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433 }; static const ANTLR3_INT32 dfa4_T149[] = { 285, 285, 339, 341, 337, 338, 285, 285, 339, -1, 285, 285, 285, 285, 285, 340, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285 }; static const ANTLR3_INT32 dfa4_T150[] = { 329, 305, 330, 325, 296, 331, 297, 305, 330, -1, 305, 305, 305, 305, 305, 305, 294, 305, 288, 289, 290, 292, 291, 295, 293, 298, 299, 300, 301, 302, 303, 304 }; static const ANTLR3_INT32 dfa4_T151[] = { 113, 54, 170, 166, 114, 171, 112, 54, 170, -1, 54, 54, 54, 54, 115, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54 }; static const ANTLR3_INT32 dfa4_T152[] = { 584, 433, 454, 585, 464, 583, 465, 433, 454, -1, 433, 433, 433, 433, 433, 532, 462, 433, 456, 457, 458, 460, 459, 463, 461, 466, 467, 468, 469, 470, 471, 472 }; static const ANTLR3_INT32 dfa4_T153[] = { 54, 54, 191, 204, 157, 192, 158, 54, 191, -1, 54, 54, 54, 54, 54, 205, 155, 54, 149, 150, 151, 153, 152, 156, 154, 159, 160, 161, 162, 163, 164, 165 }; static const ANTLR3_INT32 dfa4_T154[] = { 559, 559, 975, 558, 559, 978, 559, 559, 975, -1, 559, 559, 559, 559, 559, 982, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559 }; static const ANTLR3_INT32 dfa4_T155[] = { 595 }; static const ANTLR3_INT32 dfa4_T156[] = { 305, 305, 473, 306, 483, 474, 484, 305, 473, -1, 305, 305, 305, 305, 305, 305, 481, 305, 475, 476, 477, 479, 478, 482, 480, 485, 486, 487, 488, 489, 490, 491 }; static const ANTLR3_INT32 dfa4_T157[] = { 54, 54, 86, 37, 54, 97, 54, 54, 86, -1, 54, 54, 54, 54, 84, 123, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54 }; static const ANTLR3_INT32 dfa4_T158[] = { 643 }; static const ANTLR3_INT32 dfa4_T159[] = { 305, 305, 354, 306, 305, 384, 305, 305, 354, -1, 305, 305, 305, 305, 305, 383, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305 }; static const ANTLR3_INT32 dfa4_T160[] = { 285, 285, 361, 266, 285, 360, 285, 285, 361, -1, 285, 285, 285, 285, 369, 388, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285 }; static const ANTLR3_INT32 dfa4_T161[] = { 6, 6, 243, 308, 252, 242, 253, 6, 243, -1, 6, 6, 6, 6, 6, 228, 250, 6, 244, 245, 246, 248, 247, 251, 249, 254, 255, 256, 257, 258, 259, 260 }; static const ANTLR3_INT32 dfa4_T162[] = { 670 }; static const ANTLR3_INT32 dfa4_T163[] = { 800, 559, 798, 790, 801, 797, 799, 559, 798, -1, 559, 559, 559, 559, 802, 557, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559 }; static const ANTLR3_INT32 dfa4_T164[] = { 433, 433, 433, 434, 433, 777, 433, 433, 433, -1, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433 }; static const ANTLR3_INT32 dfa4_T165[] = { 904, 54, 906, 905, 872, 907, 873, 54, 906, -1, 54, 54, 54, 54, 54, 78, 870, 54, 864, 865, 866, 868, 867, 871, 869, 874, 875, 876, 877, 878, 879, 880 }; static const ANTLR3_INT32 dfa4_T166[] = { 398, 401, 493, 394, 399, 495, 397, 401, 493, -1, 401, 401, 401, 401, 400, 396, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401 }; static const ANTLR3_INT32 dfa4_T167[] = { 534, 433, 535, 530, 424, 536, 425, 433, 535, -1, 433, 433, 433, 433, 433, 433, 422, 433, 416, 417, 418, 420, 419, 423, 421, 426, 427, 428, 429, 430, 431, 432 }; static const ANTLR3_INT32 dfa4_T168[] = { 615, 559, 617, 616, 548, 618, 549, 559, 617, -1, 559, 559, 559, 559, 559, 619, 546, 559, 540, 541, 542, 544, 543, 547, 545, 550, 551, 552, 553, 554, 555, 556 }; static const ANTLR3_INT32 dfa4_T169[] = { 387 }; static const ANTLR3_INT32 dfa4_T170[] = { 80, -1, -1, 81, -1, -1, 80 }; static const ANTLR3_INT32 dfa4_T171[] = { 800, 559, 798, 790, 801, 807, 799, 559, 798, -1, 559, 559, 559, 559, 802, 557, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559 }; static const ANTLR3_INT32 dfa4_T172[] = { 635, 635, 635, 589, 635, 634, 635, 635, 635, -1, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635 }; static const ANTLR3_INT32 dfa4_T173[] = { 356, -1, -1, 357, -1, -1, 356 }; static const ANTLR3_INT32 dfa4_T174[] = { 54, 54, 69, 70, 72, 68, 54, 54, 69, -1, 54, 54, 54, 54, 54, 71, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54 }; static const ANTLR3_INT32 dfa4_T175[] = { 446, 446, 446, 440, 446, 581, 446, 446, 446, -1, 446, 446, 446, 446, 445, 439, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446 }; static const ANTLR3_INT32 dfa4_T176[] = { 216 }; static const ANTLR3_INT32 dfa4_T177[] = { 674 }; static const ANTLR3_INT32 dfa4_T178[] = { 1003 }; static const ANTLR3_INT32 dfa4_T179[] = { 98 }; static const ANTLR3_INT32 dfa4_T180[] = { 285, 285, 346, 321, 285, 345, 285, 285, 346, -1, 285, 285, 285, 285, 285, 284, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285 }; static const ANTLR3_INT32 dfa4_T181[] = { 653 }; static const ANTLR3_INT32 dfa4_T182[] = { 559, 559, 891, 923, 843, 894, 844, 559, 891, -1, 559, 559, 559, 559, 559, 924, 841, 559, 835, 836, 837, 839, 838, 842, 840, 845, 846, 847, 848, 849, 850, 851 }; static const ANTLR3_INT32 dfa4_T183[] = { 342 }; static const ANTLR3_INT32 dfa4_T184[] = { 6, 6, 11, 6, 6, 14, 6, 6, 11, -1, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa4_T185[] = { 285, 285, 285, 366, 285, 285, 285, 285, 285, -1, 285, 285, 285, 285, 285, 365, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285 }; static const ANTLR3_INT32 dfa4_T186[] = { 6, 6, 11, 6, 6, 12, 6, 6, 11, -1, 6, 6, 6, 6, 6, 15, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa4_T187[] = { 1, -1, -1, 2, -1, -1, 1 }; static const ANTLR3_INT32 dfa4_T188[] = { 727 }; static const ANTLR3_INT32 dfa4_T189[] = { 54, 54, 197, 93, 54, 196, 54, 54, 197, -1, 54, 54, 54, 54, 54, 92, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54 }; static const ANTLR3_INT32 dfa4_T190[] = { 105, 108, 144, 102, 106, 145, 104, 108, 144, -1, 108, 108, 108, 108, 107, 103, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108 }; static const ANTLR3_INT32 dfa4_T191[] = { 559, 559, 899, 664, 900, 898, 844, 559, 899, -1, 559, 559, 559, 559, 559, 663, 841, 559, 835, 836, 837, 839, 838, 842, 840, 845, 846, 847, 848, 849, 850, 851 }; static const ANTLR3_INT32 dfa4_T192[] = { 559, 559, 559, 664, 559, 559, 559, 559, 559, -1, 559, 559, 559, 559, 559, 663, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559 }; static const ANTLR3_INT32 dfa4_T193[] = { 386 }; static const ANTLR3_INT32 dfa4_T194[] = { 6, 6, 11, 6, 6, 12, 6, 6, 11, -1, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa4_T195[] = { 433, 433, 757, 821, 766, 822, 767, 433, 757, -1, 433, 433, 433, 433, 433, 678, 764, 433, 758, 759, 760, 762, 761, 765, 763, 768, 769, 770, 771, 772, 773, 774 }; static const ANTLR3_INT32 dfa4_T196[] = { 951 }; static const ANTLR3_INT32 dfa4_T197[] = { 433, 433, 433, 434, 433, 676, 433, 433, 433, -1, 433, 433, 433, 433, 433, 755, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433 }; static const ANTLR3_INT32 dfa4_T198[] = { 54, 54, 174, 70, 175, 173, 54, 54, 174, -1, 54, 54, 54, 54, 54, 71, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54 }; static const ANTLR3_INT32 dfa4_T199[] = { 407, 285, 496, 394, 408, 497, 406, 285, 496, -1, 285, 285, 285, 285, 409, 284, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285 }; static const ANTLR3_INT32 dfa4_T200[] = { 285, 285, 597, 266, 514, 596, 515, 285, 597, -1, 285, 285, 285, 285, 285, 285, 512, 285, 506, 507, 508, 510, 509, 513, 511, 516, 517, 518, 519, 520, 521, 522 }; static const ANTLR3_INT32 dfa4_T201[] = { 239 }; static const ANTLR3_INT32 dfa4_T202[] = { 881 }; static const ANTLR3_INT32 dfa4_T203[] = { 908, 54, 909, 905, 872, 910, 873, 54, 909, -1, 54, 54, 54, 54, 54, 54, 870, 54, 864, 865, 866, 868, 867, 871, 869, 874, 875, 876, 877, 878, 879, 880 }; static const ANTLR3_INT32 dfa4_T204[] = { 54, 54, 77, 63, 54, 76, 54, 54, 77, -1, 54, 54, 54, 54, 54, 35, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54 }; static const ANTLR3_INT32 dfa4_T205[] = { 608, 608, 608, 530, 608, 607, 608, 608, 608, -1, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608, 608 }; static const ANTLR3_INT32 dfa4_T206[] = { 198 }; static const ANTLR3_INT32 dfa4_T207[] = { 305, 305, 305, 440, 305, 582, 305, 305, 305, -1, 305, 305, 305, 305, 452, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305 }; static const ANTLR3_INT32 dfa4_T208[] = { 285, 285, 597, 266, 514, 671, 515, 285, 597, -1, 285, 285, 285, 285, 285, 285, 512, 285, 506, 507, 508, 510, 509, 513, 511, 516, 517, 518, 519, 520, 521, 522 }; static const ANTLR3_INT32 dfa4_T209[] = { 401, 401, 401, 266, 401, 401, 401, 401, 401, -1, 401, 401, 401, 401, 401, 494, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401 }; static const ANTLR3_INT32 dfa4_T210[] = { 675 }; static const ANTLR3_INT32 dfa4_T211[] = { 6, 6, 4, 6, 6, 5, 6, 6, 4, -1, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa4_T212[] = { 888 }; static const ANTLR3_INT32 dfa4_T213[] = { 344, 344, 344, 374, 344, 343, 344, 344, 344, -1, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344 }; static const ANTLR3_INT32 dfa4_T214[] = { 332 }; static const ANTLR3_INT32 dfa4_T215[] = { 987, 796, 998, 999, 988, 1000, 986, 796, 998, -1, 796, 796, 796, 796, 989, 827, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796 }; static const ANTLR3_INT32 dfa4_T216[] = { 351, 351, 351, 325, 351, 351, 351, 351, 351, -1, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351 }; static const ANTLR3_INT32 dfa4_T217[] = { 262 }; static const ANTLR3_INT32 dfa4_T218[] = { 377 }; static const ANTLR3_INT32 dfa4_T219[] = { 443, 446, 438, 440, 444, 441, 442, 446, 438, -1, 446, 446, 446, 446, 445, 439, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446 }; static const ANTLR3_INT32 dfa4_T220[] = { 378, -1, -1, 379, -1, -1, 378 }; static const ANTLR3_INT32 dfa4_T221[] = { 113, 54, 170, 102, 114, 171, 112, 54, 170, -1, 54, 54, 54, 54, 115, 35, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54 }; static const ANTLR3_INT32 dfa4_T222[] = { 32 }; static const ANTLR3_INT32 dfa4_T223[] = { 28 }; static const ANTLR3_INT32 dfa4_T224[] = { 886, 886, 886, 916, 886, 885, 886, 886, 886, -1, 886, 886, 886, 886, 886, 886, 886, 886, 886, 886, 886, 886, 886, 886, 886, 886, 886, 886, 886, 886, 886, 886 }; static const ANTLR3_INT32 dfa4_T225[] = { 559, 559, 975, 624, 559, 978, 559, 559, 975, -1, 559, 559, 559, 559, 559, 977, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559 }; static const ANTLR3_INT32 dfa4_T226[] = { 632 }; static const ANTLR3_INT32 dfa4_T227[] = { 285, 285, 638, 639, 514, 637, 515, 285, 638, -1, 285, 285, 285, 285, 285, 640, 512, 285, 506, 507, 508, 510, 509, 513, 511, 516, 517, 518, 519, 520, 521, 522 }; static const ANTLR3_INT32 dfa4_T228[] = { 25 }; static const ANTLR3_INT32 dfa4_T229[] = { 75, 75, 75, 56, 75, 75, 75, 75, 75, -1, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75 }; static const ANTLR3_INT32 dfa4_T230[] = { 285, 285, 505, 604, 514, 504, 515, 285, 505, -1, 285, 285, 285, 285, 285, 396, 512, 285, 506, 507, 508, 510, 509, 513, 511, 516, 517, 518, 519, 520, 521, 522 }; static const ANTLR3_INT32 dfa4_T231[] = { 592, 305, 593, 589, 483, 594, 484, 305, 593, -1, 305, 305, 305, 305, 305, 305, 481, 305, 475, 476, 477, 479, 478, 482, 480, 485, 486, 487, 488, 489, 490, 491 }; static const ANTLR3_INT32 dfa4_T232[] = { 26 }; static const ANTLR3_INT32 dfa4_T233[] = { 814 }; static const ANTLR3_INT32 dfa4_T234[] = { 903 }; static const ANTLR3_INT32 dfa4_T235[] = { 314, 285, 310, 313, 275, 315, 276, 285, 310, -1, 285, 285, 285, 285, 285, 335, 273, 285, 267, 268, 269, 271, 270, 274, 272, 277, 278, 279, 280, 281, 282, 283 }; static const ANTLR3_INT32 dfa4_T236[] = { 559, 559, 902, 724, 859, 901, 559, 559, 902, -1, 559, 559, 559, 559, 559, 723, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559 }; static const ANTLR3_INT32 dfa4_T237[] = { 285, 285, 505, 604, 514, 673, 515, 285, 505, -1, 285, 285, 285, 285, 285, 502, 512, 285, 506, 507, 508, 510, 509, 513, 511, 516, 517, 518, 519, 520, 521, 522 }; static const ANTLR3_INT32 dfa4_T238[] = { 559, 559, 861, 664, 559, 860, 559, 559, 861, -1, 559, 559, 559, 559, 559, 663, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559 }; static const ANTLR3_INT32 dfa4_T239[] = { 67 }; static const ANTLR3_INT32 dfa4_T240[] = { 305, 305, 354, 306, 305, 355, 305, 305, 354, -1, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305 }; static const ANTLR3_INT32 dfa4_T241[] = { 201 }; static const ANTLR3_INT32 dfa4_T242[] = { 559, 559, 975, 558, 559, 974, 559, 559, 975, -1, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559 }; static const ANTLR3_INT32 dfa4_T243[] = { 433, 433, 611, 652, 433, 612, 433, 433, 611, -1, 433, 433, 433, 433, 648, 649, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433 }; static const ANTLR3_INT32 dfa4_T244[] = { 824, 824, 824, 779, 824, 824, 824, 824, 824, -1, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824 }; static const ANTLR3_INT32 dfa4_T245[] = { 6, 6, 736, 6, 746, 737, 747, 6, 736, -1, 6, 6, 6, 6, 6, 6, 744, 6, 738, 739, 740, 742, 741, 745, 743, 748, 749, 750, 751, 752, 753, 754 }; static const ANTLR3_INT32 dfa4_T246[] = { 285, 285, 285, 266, 285, 403, 285, 285, 285, -1, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285 }; static const ANTLR3_INT32 dfa4_T247[] = { 600 }; static const ANTLR3_INT32 dfa4_T248[] = { 559, 559, 659, 624, 559, 658, 559, 559, 659, -1, 559, 559, 559, 559, 715, 716, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559 }; static const ANTLR3_INT32 dfa4_T249[] = { 231, 234, 227, 6, 232, 229, 230, 234, 227, -1, 234, 234, 234, 234, 233, 228, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234 }; static const ANTLR3_INT32 dfa4_T250[] = { 305, 305, 354, 306, 305, 353, 305, 305, 354, -1, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305 }; static const ANTLR3_INT32 dfa4_T251[] = { 793, 796, 791, 790, 794, 803, 792, 796, 791, -1, 796, 796, 796, 796, 795, 855, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796 }; static const ANTLR3_INT32 dfa4_T252[] = { 529, 433, 414, 530, 424, 415, 425, 433, 414, -1, 433, 433, 433, 433, 433, 533, 422, 433, 416, 417, 418, 420, 419, 423, 421, 426, 427, 428, 429, 430, 431, 432 }; static const ANTLR3_INT32 dfa4_T253[] = { 904, 54, 862, 905, 872, 863, 873, 54, 862, -1, 54, 54, 54, 54, 54, 55, 870, 54, 864, 865, 866, 868, 867, 871, 869, 874, 875, 876, 877, 878, 879, 880 }; static const ANTLR3_INT32 dfa4_T254[] = { 993, 559, 1001, 999, 994, 1002, 992, 559, 1001, -1, 559, 559, 559, 559, 995, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559 }; static const ANTLR3_INT32 dfa4_T255[] = { 503 }; static const ANTLR3_INT32 dfa4_T256[] = { 809 }; static const ANTLR3_INT32 dfa4_T257[] = { 559, 559, 891, 921, 843, 894, 844, 559, 891, -1, 559, 559, 559, 559, 559, 922, 841, 559, 835, 836, 837, 839, 838, 842, 840, 845, 846, 847, 848, 849, 850, 851 }; static const ANTLR3_INT32 dfa4_T258[] = { 450, 305, 447, 440, 451, 448, 449, 305, 447, -1, 305, 305, 305, 305, 452, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305 }; static const ANTLR3_INT32 dfa4_T259[] = { 105, 108, 101, 102, 106, 121, 104, 108, 101, -1, 108, 108, 108, 108, 107, 103, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108 }; static const ANTLR3_INT32 dfa4_T260[] = { 285, 285, 505, 321, 514, 504, 515, 285, 505, -1, 285, 285, 285, 285, 285, 284, 512, 285, 506, 507, 508, 510, 509, 513, 511, 516, 517, 518, 519, 520, 521, 522 }; static const ANTLR3_INT32 dfa4_T261[] = { 672 }; static const ANTLR3_INT32 dfa4_T262[] = { 559, 559, 975, 558, 559, 974, 559, 559, 975, -1, 559, 559, 559, 559, 715, 981, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559 }; static const ANTLR3_INT32 dfa4_T263[] = { 75, 75, 75, 94, 75, 74, 75, 75, 75, -1, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75 }; static const ANTLR3_INT32 dfa4_T264[] = { 433, 433, 757, 821, 766, 756, 767, 433, 757, -1, 433, 433, 433, 433, 433, 678, 764, 433, 758, 759, 760, 762, 761, 765, 763, 768, 769, 770, 771, 772, 773, 774 }; static const ANTLR3_INT32 dfa4_T265[] = { 6, 6, 6, 6, 6, 203, 6, 6, 6, -1, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa4_T266[] = { 54, 54, 188, 204, 157, 187, 158, 54, 188, -1, 54, 54, 54, 54, 54, 205, 155, 54, 149, 150, 151, 153, 152, 156, 154, 159, 160, 161, 162, 163, 164, 165 }; static const ANTLR3_INT32 dfa4_T267[] = { 105, 108, 101, 102, 106, 100, 104, 108, 101, -1, 108, 108, 108, 108, 107, 103, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108 }; static const ANTLR3_INT32 dfa4_T268[] = { 285, 285, 505, 321, 514, 673, 515, 285, 505, -1, 285, 285, 285, 285, 285, 284, 512, 285, 506, 507, 508, 510, 509, 513, 511, 516, 517, 518, 519, 520, 521, 522 }; static const ANTLR3_INT32 dfa4_T269[] = { 559, 559, 714, 664, 559, 718, 559, 559, 714, -1, 559, 559, 559, 559, 559, 725, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559 }; static const ANTLR3_INT32 dfa4_T270[] = { 559, 559, 969, 664, 661, 968, 559, 559, 969, -1, 559, 559, 559, 559, 559, 663, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559 }; static const ANTLR3_INT32 dfa4_T271[] = { 285, 285, 638, 639, 514, 813, 515, 285, 638, -1, 285, 285, 285, 285, 285, 640, 512, 285, 506, 507, 508, 510, 509, 513, 511, 516, 517, 518, 519, 520, 521, 522 }; static const ANTLR3_INT32 dfa4_T272[] = { 824, 824, 824, 889, 824, 823, 824, 824, 824, -1, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824 }; static const ANTLR3_INT32 dfa4_T273[] = { 6, 6, 6, 6, 6, 202, 6, 6, 6, -1, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa4_T274[] = { 929, 929, 929, 905, 929, 929, 929, 929, 929, -1, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929 }; static const ANTLR3_INT32 dfa4_T275[] = { 6, 6, 124, 6, 134, 125, 135, 6, 124, -1, 6, 6, 6, 6, 6, 6, 132, 6, 126, 127, 128, 130, 129, 133, 131, 136, 137, 138, 139, 140, 141, 142 }; static const ANTLR3_INT32 dfa4_T276[] = { 6, 6, 693, 6, 703, 694, 704, 6, 693, -1, 6, 6, 6, 6, 6, 6, 701, 6, 695, 696, 697, 699, 698, 702, 700, 705, 706, 707, 708, 709, 710, 711 }; static const ANTLR3_INT32 dfa4_T277[] = { 800, 559, 798, 790, 801, 807, 799, 559, 798, -1, 559, 559, 559, 559, 802, 808, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559 }; static const ANTLR3_INT32 dfa4_T278[] = { 784 }; static const ANTLR3_INT32 dfa4_T279[] = { 904, 54, 906, 905, 872, 927, 873, 54, 906, -1, 54, 54, 54, 54, 54, 224, 870, 54, 864, 865, 866, 868, 867, 871, 869, 874, 875, 876, 877, 878, 879, 880 }; static const ANTLR3_INT32 dfa4_T280[] = { 75, 75, 75, 56, 75, 74, 75, 75, 75, -1, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75 }; static const ANTLR3_INT32 dfa4_T281[] = { 433, 433, 933, 434, 433, 945, 433, 433, 933, -1, 433, 433, 433, 433, 433, 944, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433 }; static const ANTLR3_INT32 dfa4_T282[] = { 804 }; static const ANTLR3_INT32 dfa4_T283[] = { 6, 6, 6, 6, 6, 202, 6, 6, 6, -1, 6, 6, 6, 6, 214, 215, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa4_T284[] = { 305, 305, 354, 306, 305, 353, 305, 305, 354, -1, 305, 305, 305, 305, 381, 382, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305 }; static const ANTLR3_INT32 dfa4_T285[] = { 54, 54, 62, 63, 54, 61, 54, 54, 62, -1, 54, 54, 54, 54, 54, 35, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54 }; static const ANTLR3_INT32 dfa4_T286[] = { 9, 6, 4, 6, 6, 8, 6, 6, 4, -1, 6, 6, 6, 6, 6, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa4_T287[] = { 559, 559, 902, 724, 559, 901, 559, 559, 902, -1, 559, 559, 559, 559, 559, 723, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559 }; static const ANTLR3_INT32 dfa4_T288[] = { 987, 796, 998, 984, 988, 1000, 986, 796, 998, -1, 796, 796, 796, 796, 989, 789, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796 }; static const ANTLR3_INT32 dfa4_T289[] = { 21, 6, 18, 24, 22, 19, 20, 6, 18, -1, 6, 6, 6, 6, 23, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa4_T290[] = { 816, 6, 736, 817, 746, 815, 747, 6, 736, -1, 6, 6, 6, 6, 6, 182, 744, 6, 738, 739, 740, 742, 741, 745, 743, 748, 749, 750, 751, 752, 753, 754 }; static const ANTLR3_INT32 dfa4_T291[] = { 401, 401, 401, 266, 401, 523, 401, 401, 401, -1, 401, 401, 401, 401, 401, 494, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401 }; static const ANTLR3_INT32 dfa4_T292[] = { 559, 559, 861, 664, 859, 860, 559, 559, 861, -1, 559, 559, 559, 559, 559, 663, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559 }; static const ANTLR3_INT32 dfa4_T293[] = { 54, 54, 62, 63, 54, 89, 54, 54, 62, -1, 54, 54, 54, 54, 54, 117, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54 }; static const ANTLR3_INT32 dfa4_T294[] = { 285, 285, 285, 266, 285, 285, 285, 285, 285, -1, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285 }; static const ANTLR3_INT32 dfa4_T295[] = { 559, 559, 538, 558, 548, 539, 549, 559, 538, -1, 559, 559, 559, 559, 559, 557, 546, 559, 540, 541, 542, 544, 543, 547, 545, 550, 551, 552, 553, 554, 555, 556 }; static const ANTLR3_INT32 dfa4_T296[] = { 824, 824, 824, 779, 824, 823, 824, 824, 824, -1, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824, 824 }; static const ANTLR3_INT32 dfa4_T297[] = { 559, 559, 967, 624, 559, 966, 559, 559, 967, -1, 559, 559, 559, 559, 559, 557, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559 }; static const ANTLR3_INT32 dfa4_T298[] = { 584, 433, 454, 585, 464, 455, 465, 433, 454, -1, 433, 433, 433, 433, 433, 533, 462, 433, 456, 457, 458, 460, 459, 463, 461, 466, 467, 468, 469, 470, 471, 472 }; static const ANTLR3_INT32 dfa4_T299[] = { 776 }; static const ANTLR3_INT32 dfa4_T300[] = { 285, 285, 285, 266, 285, 391, 285, 285, 285, -1, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285 }; static const ANTLR3_INT32 dfa4_T301[] = { 285, 285, 285, 266, 285, 391, 285, 285, 285, -1, 285, 285, 285, 285, 285, 499, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285 }; static const ANTLR3_INT32 dfa4_T302[] = { 453 }; static const ANTLR3_INT32 dfa4_T303[] = { 559, 559, 714, 558, 559, 718, 559, 559, 714, -1, 559, 559, 559, 559, 559, 786, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559 }; static const ANTLR3_INT32 dfa4_T304[] = { 919 }; static const ANTLR3_INT32 dfa4_T305[] = { 317 }; static const ANTLR3_INT32 dfa4_T306[] = { 993, 559, 1001, 984, 994, 1002, 992, 559, 1001, -1, 559, 559, 559, 559, 995, 557, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559 }; static const ANTLR3_INT32 dfa4_T307[] = { 285, 285, 285, 266, 285, 525, 285, 285, 285, -1, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285 }; static const ANTLR3_INT32 dfa4_T308[] = { 305, 305, 562, 306, 571, 561, 572, 305, 562, -1, 305, 305, 305, 305, 305, 305, 569, 305, 563, 564, 565, 567, 566, 570, 568, 573, 574, 575, 576, 577, 578, 579 }; static const ANTLR3_INT32 dfa4_T309[] = { 194 }; static const ANTLR3_INT32 dfa4_T310[] = { 9, 6, 4, 6, 6, 5, 6, 6, 4, -1, 6, 6, 6, 6, 6, 10, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa4_T311[] = { 796, 796, 796, 828, 796, 853, 796, 796, 796, -1, 796, 796, 796, 796, 795, 827, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796 }; static const ANTLR3_INT32 dfa4_T312[] = { 333 }; static const ANTLR3_INT32 dfa4_T313[] = { 609 }; static const ANTLR3_INT32 dfa4_T314[] = { 225 }; static const ANTLR3_INT32 dfa4_T315[] = { 79 }; static const ANTLR3_INT32 dfa4_T316[] = { 119 }; static const ANTLR3_INT32 dfa4_T317[] = { 446, 446, 446, 306, 446, 446, 446, 446, 446, -1, 446, 446, 446, 446, 446, 439, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446 }; static const ANTLR3_INT32 dfa4_T318[] = { 351, 351, 351, 380, 351, 350, 351, 351, 351, -1, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351 }; static const ANTLR3_INT32 dfa4_T319[] = { 73 }; static const ANTLR3_INT32 dfa4_T320[] = { 631, 631, 631, 585, 631, 631, 631, 631, 631, -1, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631 }; static const ANTLR3_INT32 dfa4_T321[] = { 113, 54, 111, 102, 114, 122, 112, 54, 111, -1, 54, 54, 54, 54, 115, 35, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54 }; static const ANTLR3_INT32 dfa4_T322[] = { 285, 285, 364, 366, 285, 363, 285, 285, 364, -1, 285, 285, 285, 285, 285, 365, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285 }; static const ANTLR3_INT32 dfa4_T323[] = { 956, 684, 952, 953, 957, 954, 955, 684, 952, -1, 684, 684, 684, 684, 958, 678, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684 }; static const ANTLR3_INT32 dfa4_T324[] = { 113, 54, 111, 102, 114, 110, 112, 54, 111, -1, 54, 54, 54, 54, 115, 35, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54 }; static const ANTLR3_INT32 dfa4_T325[] = { 57, 54, 59, 56, 45, 60, 46, 54, 59, -1, 54, 54, 54, 54, 54, 78, 43, 54, 36, 38, 39, 41, 40, 44, 42, 47, 48, 49, 50, 51, 52, 53 }; static const ANTLR3_INT32 dfa4_T326[] = { 285, 285, 285, 266, 285, 403, 285, 285, 285, -1, 285, 285, 285, 285, 285, 524, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285 }; static const ANTLR3_INT32 dfa4_T327[] = { 285, 285, 597, 606, 514, 605, 515, 285, 597, -1, 285, 285, 285, 285, 285, 494, 512, 285, 506, 507, 508, 510, 509, 513, 511, 516, 517, 518, 519, 520, 521, 522 }; static const ANTLR3_INT32 dfa4_T328[] = { 559, 559, 559, 828, 559, 854, 559, 559, 559, -1, 559, 559, 559, 559, 802, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559 }; static const ANTLR3_INT32 dfa4_T329[] = { 200, 200, 200, 180, 200, 200, 200, 200, 200, -1, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200 }; static const ANTLR3_INT32 dfa4_T330[] = { 433, 433, 933, 434, 433, 934, 433, 433, 933, -1, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433 }; static const ANTLR3_INT32 dfa4_T331[] = { 559, 559, 899, 921, 843, 898, 844, 559, 899, -1, 559, 559, 559, 559, 559, 922, 841, 559, 835, 836, 837, 839, 838, 842, 840, 845, 846, 847, 848, 849, 850, 851 }; static const ANTLR3_INT32 dfa4_T332[] = { 398, 401, 395, 394, 399, 412, 397, 401, 395, -1, 401, 401, 401, 401, 400, 396, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401 }; static const ANTLR3_INT32 dfa4_T333[] = { 987, 796, 985, 984, 988, 996, 986, 796, 985, -1, 796, 796, 796, 796, 989, 789, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796 }; static const ANTLR3_INT32 dfa4_T334[] = { 324, 305, 286, 325, 296, 326, 297, 305, 286, -1, 305, 305, 305, 305, 305, 327, 294, 305, 288, 289, 290, 292, 291, 295, 293, 298, 299, 300, 301, 302, 303, 304 }; static const ANTLR3_INT32 dfa4_T335[] = { 344, 344, 344, 313, 344, 343, 344, 344, 344, -1, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344, 344 }; static const ANTLR3_INT32 dfa4_T336[] = { 285, 285, 323, 321, 285, 372, 285, 285, 323, -1, 285, 285, 285, 285, 285, 284, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285 }; static const ANTLR3_INT32 dfa4_T337[] = { 285, 285, 285, 321, 285, 285, 285, 285, 285, -1, 285, 285, 285, 285, 285, 284, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285 }; static const ANTLR3_INT32 dfa4_T338[] = { 433, 433, 933, 434, 433, 932, 433, 433, 933, -1, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433 }; static const ANTLR3_INT32 dfa4_T339[] = { 778, 6, 693, 779, 703, 780, 704, 6, 693, -1, 6, 6, 6, 6, 6, 182, 701, 6, 695, 696, 697, 699, 698, 702, 700, 705, 706, 707, 708, 709, 710, 711 }; static const ANTLR3_INT32 dfa4_T340[] = { 615, 559, 946, 616, 548, 947, 549, 559, 946, -1, 559, 559, 559, 559, 559, 965, 546, 559, 540, 541, 542, 544, 543, 547, 545, 550, 551, 552, 553, 554, 555, 556 }; static const ANTLR3_INT32 dfa4_T341[] = { 655, 655, 655, 616, 655, 655, 655, 655, 655, -1, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655 }; static const ANTLR3_INT32 dfa4_T342[] = { 398, 401, 395, 394, 399, 393, 397, 401, 395, -1, 401, 401, 401, 401, 400, 396, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401 }; static const ANTLR3_INT32 dfa4_T343[] = { 305, 305, 305, 306, 305, 437, 305, 305, 305, -1, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305 }; static const ANTLR3_INT32 dfa4_T344[] = { 314, 285, 265, 313, 275, 264, 276, 285, 265, -1, 285, 285, 285, 285, 285, 312, 273, 285, 267, 268, 269, 271, 270, 274, 272, 277, 278, 279, 280, 281, 282, 283 }; static const ANTLR3_INT32 dfa4_T345[] = { 54, 54, 191, 37, 157, 195, 158, 54, 191, -1, 54, 54, 54, 54, 54, 54, 155, 54, 149, 150, 151, 153, 152, 156, 154, 159, 160, 161, 162, 163, 164, 165 }; static const ANTLR3_INT32 dfa4_T346[] = { 500, -1, -1, 501, -1, -1, 500 }; static const ANTLR3_INT32 dfa4_T347[] = { 962, 433, 959, 953, 963, 960, 961, 433, 959, -1, 433, 433, 433, 433, 964, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433 }; static const ANTLR3_INT32 dfa4_T348[] = { 559, 559, 714, 624, 559, 718, 559, 559, 714, -1, 559, 559, 559, 559, 559, 717, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559 }; static const ANTLR3_INT32 dfa4_T349[] = { 433, 433, 933, 434, 433, 932, 433, 433, 933, -1, 433, 433, 433, 433, 648, 943, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433 }; static const ANTLR3_INT32 dfa4_T350[] = { 904, 54, 906, 905, 872, 907, 873, 54, 906, -1, 54, 54, 54, 54, 54, 58, 870, 54, 864, 865, 866, 868, 867, 871, 869, 874, 875, 876, 877, 878, 879, 880 }; static const ANTLR3_INT32 dfa4_T351[] = { 108, 108, 108, 166, 108, 168, 108, 108, 108, -1, 108, 108, 108, 108, 107, 167, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108 }; static const ANTLR3_INT32 dfa4_T352[] = { 200, 200, 200, 213, 200, 199, 200, 200, 200, -1, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200 }; static const ANTLR3_INT32 dfa4_T353[] = { 635, 635, 635, 668, 635, 634, 635, 635, 635, -1, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635, 635 }; static const ANTLR3_INT32 dfa4_T354[] = { 54, 54, 191, 37, 157, 219, 158, 54, 191, -1, 54, 54, 54, 54, 54, 54, 155, 54, 149, 150, 151, 153, 152, 156, 154, 159, 160, 161, 162, 163, 164, 165 }; static const ANTLR3_INT32 dfa4_T355[] = { 896, -1, -1, 897, -1, -1, 896 }; static const ANTLR3_INT32 dfa4_T356[] = { 108, 108, 108, 37, 108, 108, 108, 108, 108, -1, 108, 108, 108, 108, 108, 167, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108 }; static const ANTLR3_INT32 dfa4_T357[] = { 559, 559, 714, 558, 559, 732, 559, 559, 714, -1, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559 }; static const ANTLR3_INT32 dfa4_T358[] = { 731 }; static const ANTLR3_INT32 dfa4_T359[] = { 559, 559, 626, 624, 559, 726, 559, 559, 626, -1, 559, 559, 559, 559, 559, 808, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559 }; static const ANTLR3_INT32 dfa4_T360[] = { 64, 54, 65, 56, 45, 66, 46, 54, 65, -1, 54, 54, 54, 54, 54, 54, 43, 54, 36, 38, 39, 41, 40, 44, 42, 47, 48, 49, 50, 51, 52, 53 }; static const ANTLR3_INT32 dfa4_T361[] = { 559, 559, 714, 558, 559, 713, 559, 559, 714, -1, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559 }; static const ANTLR3_INT32 dfa4_T362[] = { 886, 886, 886, 817, 886, 886, 886, 886, 886, -1, 886, 886, 886, 886, 886, 886, 886, 886, 886, 886, 886, 886, 886, 886, 886, 886, 886, 886, 886, 886, 886, 886 }; static const ANTLR3_INT32 dfa4_T363[] = { 54, 54, 86, 307, 54, 240, 54, 54, 86, -1, 54, 54, 54, 54, 84, 123, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54 }; static const ANTLR3_INT32 dfa4_T364[] = { 285, 285, 361, 390, 285, 362, 285, 285, 361, -1, 285, 285, 285, 285, 369, 388, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285 }; static const ANTLR3_INT32 dfa4_T365[] = { 892 }; static const ANTLR3_INT32 dfa4_T366[] = { 918 }; static const ANTLR3_INT32 dfa4_T367[] = { 54, 54, 69, 82, 54, 68, 54, 54, 69, -1, 54, 54, 54, 54, 84, 83, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54 }; static const ANTLR3_INT32 dfa4_T368[] = { 54, 54, 148, 190, 157, 147, 158, 54, 148, -1, 54, 54, 54, 54, 54, 103, 155, 54, 149, 150, 151, 153, 152, 156, 154, 159, 160, 161, 162, 163, 164, 165 }; static const ANTLR3_INT32 dfa4_T369[] = { 314, 285, 310, 313, 275, 311, 276, 285, 310, -1, 285, 285, 285, 285, 285, 336, 273, 285, 267, 268, 269, 271, 270, 274, 272, 277, 278, 279, 280, 281, 282, 283 }; static const ANTLR3_INT32 dfa4_T370[] = { 498 }; static const ANTLR3_INT32 dfa4_T371[] = { 54, 54, 207, 208, 157, 206, 158, 54, 207, -1, 54, 54, 54, 54, 54, 209, 155, 54, 149, 150, 151, 153, 152, 156, 154, 159, 160, 161, 162, 163, 164, 165 }; static const ANTLR3_INT32 dfa4_T372[] = { 285, 285, 339, 368, 285, 338, 285, 285, 339, -1, 285, 285, 285, 285, 369, 367, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285 }; static const ANTLR3_INT32 dfa4_T373[] = { 940 }; static const ANTLR3_INT32 dfa4_T374[] = { 349 }; static const ANTLR3_INT32 dfa4_T375[] = { 200, 200, 200, 180, 200, 199, 200, 200, 200, -1, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200 }; static const ANTLR3_INT32 dfa4_T376[] = { 816, 6, 736, 817, 746, 737, 747, 6, 736, -1, 6, 6, 6, 6, 6, 183, 744, 6, 738, 739, 740, 742, 741, 745, 743, 748, 749, 750, 751, 752, 753, 754 }; static const ANTLR3_INT32 dfa4_T377[] = { 392 }; static const ANTLR3_INT32 dfa4_T378[] = { 285, 285, 265, 266, 275, 264, 276, 285, 265, -1, 285, 285, 285, 285, 285, 284, 273, 285, 267, 268, 269, 271, 270, 274, 272, 277, 278, 279, 280, 281, 282, 283 }; static const ANTLR3_INT32 dfa4_T379[] = { 54, 54, 54, 166, 54, 172, 54, 54, 54, -1, 54, 54, 54, 54, 115, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54 }; static const ANTLR3_INT32 dfa4_T380[] = { 57, 54, 34, 56, 45, 33, 46, 54, 34, -1, 54, 54, 54, 54, 54, 55, 43, 54, 36, 38, 39, 41, 40, 44, 42, 47, 48, 49, 50, 51, 52, 53 }; static const ANTLR3_INT32 dfa4_T381[] = { 285, 285, 597, 606, 514, 596, 515, 285, 597, -1, 285, 285, 285, 285, 285, 494, 512, 285, 506, 507, 508, 510, 509, 513, 511, 516, 517, 518, 519, 520, 521, 522 }; static const ANTLR3_INT32 dfa4_T382[] = { 54, 54, 148, 190, 157, 217, 158, 54, 148, -1, 54, 54, 54, 54, 54, 143, 155, 54, 149, 150, 151, 153, 152, 156, 154, 159, 160, 161, 162, 163, 164, 165 }; static const ANTLR3_INT32 dfa4_T383[] = { 446, 446, 446, 306, 446, 581, 446, 446, 446, -1, 446, 446, 446, 446, 446, 439, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446, 446 }; static const ANTLR3_INT32 dfa4_T384[] = { 146 }; static const ANTLR3_INT32 dfa4_T385[] = { 559, 559, 617, 558, 548, 636, 549, 559, 617, -1, 559, 559, 559, 559, 559, 559, 546, 559, 540, 541, 542, 544, 543, 547, 545, 550, 551, 552, 553, 554, 555, 556 }; static const ANTLR3_INT32 dfa4_T386[] = { 305, 305, 305, 306, 305, 305, 305, 305, 305, -1, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305 }; static const ANTLR3_INT32 dfa4_T387[] = { 54, 54, 54, 37, 54, 109, 54, 54, 54, -1, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54 }; static const ANTLR3_INT32 dfa4_T388[] = { 285, 285, 638, 366, 601, 813, 515, 285, 638, -1, 285, 285, 285, 285, 285, 365, 512, 285, 506, 507, 508, 510, 509, 513, 511, 516, 517, 518, 519, 520, 521, 522 }; static const ANTLR3_INT32 dfa4_T389[] = { 433, 433, 883, 434, 424, 884, 425, 433, 883, -1, 433, 433, 433, 433, 433, 433, 422, 433, 416, 417, 418, 420, 419, 423, 421, 426, 427, 428, 429, 430, 431, 432 }; static const ANTLR3_INT32 dfa4_T390[] = { 285, 285, 597, 606, 514, 671, 515, 285, 597, -1, 285, 285, 285, 285, 285, 733, 512, 285, 506, 507, 508, 510, 509, 513, 511, 516, 517, 518, 519, 520, 521, 522 }; static const ANTLR3_INT32 dfa4_T391[] = { 285, 285, 597, 604, 514, 605, 515, 285, 597, -1, 285, 285, 285, 285, 285, 396, 512, 285, 506, 507, 508, 510, 509, 513, 511, 516, 517, 518, 519, 520, 521, 522 }; static const ANTLR3_INT32 dfa4_T392[] = { 559, 559, 662, 664, 661, 660, 559, 559, 662, -1, 559, 559, 559, 559, 559, 663, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559 }; static const ANTLR3_INT32 dfa4_T393[] = { 88 }; static const ANTLR3_INT32 dfa4_T394[] = { 656 }; static const ANTLR3_INT32 dfa4_T395[] = { 120 }; static const ANTLR3_INT32 dfa4_T396[] = { 6, 6, 6, 16, 6, 13, 6, 6, 6, -1, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa4_T397[] = { 433, 433, 611, 434, 433, 651, 433, 433, 611, -1, 433, 433, 433, 433, 433, 650, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433 }; static const ANTLR3_INT32 dfa4_T398[] = { 559, 559, 714, 558, 559, 713, 559, 559, 714, -1, 559, 559, 559, 559, 715, 785, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559 }; static const ANTLR3_INT32 dfa4_T399[] = { 54, 54, 148, 63, 157, 147, 158, 54, 148, -1, 54, 54, 54, 54, 54, 35, 155, 54, 149, 150, 151, 153, 152, 156, 154, 159, 160, 161, 162, 163, 164, 165 }; static const ANTLR3_INT32 dfa4_T400[] = { 54, 54, 148, 63, 157, 217, 158, 54, 148, -1, 54, 54, 54, 54, 54, 35, 155, 54, 149, 150, 151, 153, 152, 156, 154, 159, 160, 161, 162, 163, 164, 165 }; static const ANTLR3_INT32 dfa4_T401[] = { 793, 796, 826, 790, 794, 829, 792, 796, 826, -1, 796, 796, 796, 796, 795, 789, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796 }; static const ANTLR3_INT32 dfa4_T402[] = { 57, 54, 59, 56, 45, 212, 46, 54, 59, -1, 54, 54, 54, 54, 54, 224, 43, 54, 36, 38, 39, 41, 40, 44, 42, 47, 48, 49, 50, 51, 52, 53 }; static const ANTLR3_INT32 dfa4_T403[] = { 407, 285, 405, 394, 408, 413, 406, 285, 405, -1, 285, 285, 285, 285, 409, 284, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285 }; static const ANTLR3_INT32 dfa4_T404[] = { 305, 305, 305, 306, 305, 582, 305, 305, 305, -1, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305 }; static const ANTLR3_INT32 dfa4_T405[] = { 631, 631, 631, 585, 631, 630, 631, 631, 631, -1, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631, 631 }; static const ANTLR3_INT32 dfa4_T406[] = { 334 }; static const ANTLR3_INT32 dfa4_T407[] = { 993, 559, 991, 984, 994, 997, 992, 559, 991, -1, 559, 559, 559, 559, 995, 557, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559 }; static const ANTLR3_INT32 dfa4_T408[] = { 54, 54, 207, 208, 157, 263, 158, 54, 207, -1, 54, 54, 54, 54, 54, 209, 155, 54, 149, 150, 151, 153, 152, 156, 154, 159, 160, 161, 162, 163, 164, 165 }; static const ANTLR3_INT32 dfa4_T409[] = { 684, 684, 684, 685, 684, 775, 684, 684, 684, -1, 684, 684, 684, 684, 683, 678, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684, 684 }; static const ANTLR3_INT32 dfa4_T410[] = { 314, 285, 310, 313, 275, 315, 276, 285, 310, -1, 285, 285, 285, 285, 285, 316, 273, 285, 267, 268, 269, 271, 270, 274, 272, 277, 278, 279, 280, 281, 282, 283 }; static const ANTLR3_INT32 dfa4_T411[] = { 559, 559, 659, 624, 559, 658, 559, 559, 659, -1, 559, 559, 559, 559, 559, 557, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559 }; static const ANTLR3_INT32 dfa4_T412[] = { 433, 433, 911, 434, 464, 912, 465, 433, 911, -1, 433, 433, 433, 433, 433, 433, 462, 433, 456, 457, 458, 460, 459, 463, 461, 466, 467, 468, 469, 470, 471, 472 }; static const ANTLR3_INT32 dfa4_T413[] = { 108, 108, 108, 37, 108, 168, 108, 108, 108, -1, 108, 108, 108, 108, 108, 167, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108 }; static const ANTLR3_INT32 dfa4_T414[] = { 407, 285, 405, 394, 408, 404, 406, 285, 405, -1, 285, 285, 285, 285, 409, 284, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285 }; static const ANTLR3_INT32 dfa4_T415[] = { 778, 6, 693, 779, 703, 694, 704, 6, 693, -1, 6, 6, 6, 6, 6, 183, 701, 6, 695, 696, 697, 699, 698, 702, 700, 705, 706, 707, 708, 709, 710, 711 }; static const ANTLR3_INT32 dfa4_T416[] = { 537 }; static const ANTLR3_INT32 dfa4_T417[] = { 6, 6, 11, 17, 6, 14, 6, 6, 11, -1, 6, 6, 6, 6, 6, 15, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa4_T418[] = { 857, -1, -1, 858, -1, -1, 857 }; static const ANTLR3_INT32 dfa4_T419[] = { 825 }; static const ANTLR3_INT32 dfa4_T420[] = { 285, 285, 597, 639, 514, 605, 515, 285, 597, -1, 285, 285, 285, 285, 285, 640, 512, 285, 506, 507, 508, 510, 509, 513, 511, 516, 517, 518, 519, 520, 521, 522 }; static const ANTLR3_INT32 dfa4_T421[] = { 800, 559, 830, 790, 801, 831, 799, 559, 830, -1, 559, 559, 559, 559, 802, 557, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559 }; static const ANTLR3_INT32 dfa4_T422[] = { 559, 559, 891, 558, 843, 890, 844, 559, 891, -1, 559, 559, 559, 559, 559, 559, 841, 559, 835, 836, 837, 839, 838, 842, 840, 845, 846, 847, 848, 849, 850, 851 }; static const ANTLR3_INT32 dfa4_T423[] = { 54, 54, 54, 37, 54, 54, 54, 54, 54, -1, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54 }; static const ANTLR3_INT32 dfa4_T424[] = { 285, 285, 285, 341, 285, 285, 285, 285, 285, -1, 285, 285, 285, 285, 285, 340, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285 }; static const ANTLR3_INT32 dfa4_T425[] = { 796, 796, 796, 999, 796, 1004, 796, 796, 796, -1, 796, 796, 796, 796, 989, 827, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796 }; static const ANTLR3_INT32 dfa4_T426[] = { 615, 559, 936, 616, 548, 937, 549, 559, 936, -1, 559, 559, 559, 559, 559, 949, 546, 559, 540, 541, 542, 544, 543, 547, 545, 550, 551, 552, 553, 554, 555, 556 }; static const ANTLR3_INT32 dfa4_T427[] = { 305, 305, 305, 306, 305, 437, 305, 305, 305, -1, 305, 305, 305, 305, 305, 560, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305 }; static const ANTLR3_INT32 dfa4_T428[] = { 433, 433, 433, 685, 433, 777, 433, 433, 433, -1, 433, 433, 433, 433, 691, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433 }; static const ANTLR3_INT32 dfa4_T429[] = { 285, 285, 603, 341, 601, 602, 515, 285, 603, -1, 285, 285, 285, 285, 285, 340, 512, 285, 506, 507, 508, 510, 509, 513, 511, 516, 517, 518, 519, 520, 521, 522 }; static const ANTLR3_INT32 dfa4_T430[] = { 559, 559, 891, 558, 843, 941, 844, 559, 891, -1, 559, 559, 559, 559, 559, 559, 841, 559, 835, 836, 837, 839, 838, 842, 840, 845, 846, 847, 848, 849, 850, 851 }; static const ANTLR3_INT32 dfa4_T431[] = { 54, 54, 54, 37, 54, 118, 54, 54, 54, -1, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54 }; static const ANTLR3_INT32 dfa4_T432[] = { 54, 54, 54, 37, 54, 118, 54, 54, 54, -1, 54, 54, 54, 54, 54, 176, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54 }; static const ANTLR3_INT32 dfa4_T433[] = { 796, 796, 796, 558, 796, 796, 796, 796, 796, -1, 796, 796, 796, 796, 796, 827, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796 }; static const ANTLR3_INT32 dfa4_T434[] = { 929, 929, 929, 905, 929, 928, 929, 929, 929, -1, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929, 929 }; static const ANTLR3_INT32 dfa4_T435[] = { 54, 54, 54, 37, 54, 172, 54, 54, 54, -1, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54 }; static const ANTLR3_INT32 dfa4_T436[] = { 655, 655, 655, 712, 655, 654, 655, 655, 655, -1, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655, 655 }; static const ANTLR3_INT32 dfa4_T437[] = { 351, 351, 351, 325, 351, 350, 351, 351, 351, -1, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351, 351 }; static const ANTLR3_INT32 dfa4_T438[] = { 436 }; static const ANTLR3_INT32 dfa4_T439[] = { 852 }; static const ANTLR3_INT32 dfa4_T440[] = { 6, 6, 243, 6, 252, 242, 253, 6, 243, -1, 6, 6, 6, 6, 6, 6, 250, 6, 244, 245, 246, 248, 247, 251, 249, 254, 255, 256, 257, 258, 259, 260 }; static const ANTLR3_INT32 dfa4_T441[] = { 938 }; static const ANTLR3_INT32 dfa4_T442[] = { 559, 559, 925, 923, 843, 926, 844, 559, 925, -1, 559, 559, 559, 559, 559, 924, 841, 559, 835, 836, 837, 839, 838, 842, 840, 845, 846, 847, 848, 849, 850, 851 }; static const ANTLR3_INT32 dfa4_T443[] = { 559, 559, 969, 720, 559, 968, 559, 559, 969, -1, 559, 559, 559, 559, 715, 979, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559 }; static const ANTLR3_INT32 dfa4_T444[] = { 559, 559, 834, 893, 843, 833, 844, 559, 834, -1, 559, 559, 559, 559, 559, 789, 841, 559, 835, 836, 837, 839, 838, 842, 840, 845, 846, 847, 848, 849, 850, 851 }; static const ANTLR3_INT32 dfa4_T445[] = { 373 }; static const ANTLR3_INT32 dfa4_T446[] = { 234, 234, 234, 6, 234, 261, 234, 234, 234, -1, 234, 234, 234, 234, 233, 228, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234 }; static const ANTLR3_INT32 dfa4_T447[] = { 559, 559, 559, 999, 559, 1005, 559, 559, 559, -1, 559, 559, 559, 559, 995, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559 }; static const ANTLR3_INT32 dfa4_T448[] = { 433, 433, 611, 434, 433, 612, 433, 433, 611, -1, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433 }; static const ANTLR3_INT32 dfa4_T449[] = { 559, 559, 834, 893, 843, 939, 844, 559, 834, -1, 559, 559, 559, 559, 559, 855, 841, 559, 835, 836, 837, 839, 838, 842, 840, 845, 846, 847, 848, 849, 850, 851 }; static const ANTLR3_INT32 dfa4_T450[] = { 559, 559, 559, 558, 559, 787, 559, 559, 559, -1, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559, 559 }; static const ANTLR3_INT32 dfa4_T451[] = { 285, 285, 599, 366, 526, 598, 285, 285, 599, -1, 285, 285, 285, 285, 285, 365, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285 }; static const ANTLR3_INT32 dfa4_T452[] = { 99 }; static const ANTLR3_INT32 dfa4_T453[] = { 285, 285, 528, 341, 285, 527, 285, 285, 528, -1, 285, 285, 285, 285, 285, 340, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285 }; static const ANTLR3_INT32 dfa4_T454[] = { 433, 433, 611, 434, 433, 610, 433, 433, 611, -1, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433, 433 }; static const ANTLR3_INT32 dfa4_T455[] = { 666 }; static const ANTLR3_INT32 dfa4_T456[] = { 6, 6, 6, 6, 6, 203, 6, 6, 6, -1, 6, 6, 6, 6, 214, 215, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa4_T457[] = { 54, 54, 862, 37, 872, 863, 873, 54, 862, -1, 54, 54, 54, 54, 54, 35, 870, 54, 864, 865, 866, 868, 867, 871, 869, 874, 875, 876, 877, 878, 879, 880 }; static const ANTLR3_INT32 dfa4_T458[] = { 305, 305, 354, 385, 305, 355, 305, 305, 354, -1, 305, 305, 305, 305, 381, 382, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305, 305 }; static const ANTLR3_INT32 dfa4_T459[] = { 54, 54, 77, 63, 54, 76, 54, 54, 77, -1, 54, 54, 54, 54, 84, 95, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54 }; static const ANTLR3_INT32 dfa4_T460[] = { 559, 559, 834, 624, 843, 833, 844, 559, 834, -1, 559, 559, 559, 559, 559, 557, 841, 559, 835, 836, 837, 839, 838, 842, 840, 845, 846, 847, 848, 849, 850, 851 }; static const ANTLR3_INT32 dfa4_T461[] = { 285, 285, 346, 321, 285, 345, 285, 285, 346, -1, 285, 285, 285, 285, 369, 375, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285 }; static const ANTLR3_INT32 dfa4_T462[] = { 54, 54, 54, 37, 54, 109, 54, 54, 54, -1, 54, 54, 54, 54, 54, 169, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54 }; static const ANTLR3_INT32 dfa4_T463[] = { 398, 401, 395, 394, 399, 393, 397, 401, 395, -1, 401, 401, 401, 401, 400, 502, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401, 401 }; static const ANTLR3_INT32 dfa4_T464[] = { 105, 108, 101, 102, 106, 100, 104, 108, 101, -1, 108, 108, 108, 108, 107, 143, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108 }; static const ANTLR3_INT32 dfa4_T465[] = { 324, 305, 286, 325, 296, 287, 297, 305, 286, -1, 305, 305, 305, 305, 305, 328, 294, 305, 288, 289, 290, 292, 291, 295, 293, 298, 299, 300, 301, 302, 303, 304 }; static const ANTLR3_INT32 dfa4_T466[] = { 285, 285, 310, 266, 275, 311, 276, 285, 310, -1, 285, 285, 285, 285, 285, 285, 273, 285, 267, 268, 269, 271, 270, 274, 272, 277, 278, 279, 280, 281, 282, 283 }; static const ANTLR3_INT32 dfa4_T467[] = { 285, 285, 597, 641, 514, 605, 515, 285, 597, -1, 285, 285, 285, 285, 285, 642, 512, 285, 506, 507, 508, 510, 509, 513, 511, 516, 517, 518, 519, 520, 521, 522 }; static const ANTLR3_INT32 dfa4_T468[] = { 559, 559, 834, 624, 843, 939, 844, 559, 834, -1, 559, 559, 559, 559, 559, 557, 841, 559, 835, 836, 837, 839, 838, 842, 840, 845, 846, 847, 848, 849, 850, 851 }; static const ANTLR3_INT32 dfa4_T469[] = { 54, 54, 62, 63, 54, 89, 54, 54, 62, -1, 54, 54, 54, 54, 54, 35, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54 }; static const ANTLR3_INT32 dfa4_T470[] = { 633 }; static const ANTLR3_INT32 dfa4_T471[] = { 305, 305, 562, 628, 571, 561, 572, 305, 562, -1, 305, 305, 305, 305, 305, 439, 569, 305, 563, 564, 565, 567, 566, 570, 568, 573, 574, 575, 576, 577, 578, 579 }; static const ANTLR3_INT32 dfa4_T472[] = { 6, 6, 6, 24, 6, 27, 6, 6, 6, -1, 6, 6, 6, 6, 23, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa4_T473[] = { 54, 54, 54, 63, 54, 54, 54, 54, 54, -1, 54, 54, 54, 54, 54, 35, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54 }; static const ANTLR3_INT32 dfa4_T474[] = { 559, 559, 925, 923, 843, 970, 844, 559, 925, -1, 559, 559, 559, 559, 559, 924, 841, 559, 835, 836, 837, 839, 838, 842, 840, 845, 846, 847, 848, 849, 850, 851 }; static const ANTLR3_INT32 dfa4_T475[] = { 971 }; static const ANTLR3_INT32 dfa4_T476[] = { 211 }; static const ANTLR3_INT32 dfa4_T477[] = { 6, 6, 6, 6, 6, 226, 6, 6, 6, -1, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa4_T478[] = { 796, 796, 796, 558, 796, 1004, 796, 796, 796, -1, 796, 796, 796, 796, 796, 827, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796, 796 }; static const ANTLR3_INT32 dfa4_T479[] = { 692 }; static const ANTLR3_INT32 dfa4_T480[] = { 285, 285, 361, 341, 285, 371, 285, 285, 361, -1, 285, 285, 285, 285, 285, 370, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285, 285 }; static const ANTLR3_INT32 dfa4_T481[] = { 917 }; static const ANTLR3_INT32 dfa4_T482[] = { 54, 54, 34, 37, 45, 33, 46, 54, 34, -1, 54, 54, 54, 54, 54, 35, 43, 54, 36, 38, 39, 41, 40, 44, 42, 47, 48, 49, 50, 51, 52, 53 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa4_transitions[] = { dfa4_T187, dfa4_T88, dfa4_T88, dfa4_T211, dfa4_T286, dfa4_T310, NULL, dfa4_T194, dfa4_T286, dfa4_T94, dfa4_T184, dfa4_T186, dfa4_T186, dfa4_T396, dfa4_T417, dfa4_T289, dfa4_T228, dfa4_T232, dfa4_T289, dfa4_T289, dfa4_T289, dfa4_T289, dfa4_T289, dfa4_T50, dfa4_T223, dfa4_T127, dfa4_T140, dfa4_T472, dfa4_T127, NULL, dfa4_T222, dfa4_T222, dfa4_T482, dfa4_T380, dfa4_T17, dfa4_T285, dfa4_T360, dfa4_T239, dfa4_T360, dfa4_T360, dfa4_T360, dfa4_T360, dfa4_T360, dfa4_T360, dfa4_T360, dfa4_T360, dfa4_T360, dfa4_T360, dfa4_T360, dfa4_T360, dfa4_T360, dfa4_T360, dfa4_T360, dfa4_T360, dfa4_T423, dfa4_T174, dfa4_T319, dfa4_T280, dfa4_T204, dfa4_T325, dfa4_T325, dfa4_T285, dfa4_T473, dfa4_T315, dfa4_T229, dfa4_T360, dfa4_T360, dfa4_T170, dfa4_T367, dfa4_T22, dfa4_T393, dfa4_T469, dfa4_T113, dfa4_T170, dfa4_T263, dfa4_T229, dfa4_T459, dfa4_T130, dfa4_T146, dfa4_T140, dfa4_T179, dfa4_T179, dfa4_T452, dfa4_T267, dfa4_T387, dfa4_T324, dfa4_T54, dfa4_T54, dfa4_T140, dfa4_T293, dfa4_T113, dfa4_T29, dfa4_T431, dfa4_T316, dfa4_T395, dfa4_T259, dfa4_T321, dfa4_T157, dfa4_T275, dfa4_T127, dfa4_T464, dfa4_T190, dfa4_T384, dfa4_T399, dfa4_T123, dfa4_T123, dfa4_T123, dfa4_T413, dfa4_T356, dfa4_T462, dfa4_T5, dfa4_T221, dfa4_T151, dfa4_T151, dfa4_T151, dfa4_T435, dfa4_T151, dfa4_T198, dfa4_T432, dfa4_T138, dfa4_T170, dfa4_T259, dfa4_T321, dfa4_T123, dfa4_T32, dfa4_T14, dfa4_T115, dfa4_T115, dfa4_T115, dfa4_T115, dfa4_T115, dfa4_T115, dfa4_T115, dfa4_T115, dfa4_T115, dfa4_T115, dfa4_T115, dfa4_T115, dfa4_T115, dfa4_T115, dfa4_T115, dfa4_T115, dfa4_T115, dfa4_T105, dfa4_T123, dfa4_T123, dfa4_T140, dfa4_T368, dfa4_T41, dfa4_T1, dfa4_T1, dfa4_T1, dfa4_T1, dfa4_T1, dfa4_T1, dfa4_T1, dfa4_T1, dfa4_T1, dfa4_T1, dfa4_T1, dfa4_T1, dfa4_T1, dfa4_T1, dfa4_T1, dfa4_T1, dfa4_T1, dfa4_T309, dfa4_T345, dfa4_T351, dfa4_T356, dfa4_T151, dfa4_T151, dfa4_T379, dfa4_T143, dfa4_T101, dfa4_T189, dfa4_T139, dfa4_T206, dfa4_T206, dfa4_T375, dfa4_T241, dfa4_T32, dfa4_T273, dfa4_T265, dfa4_T329, dfa4_T115, dfa4_T115, dfa4_T266, dfa4_T153, dfa4_T371, dfa4_T79, dfa4_T1, dfa4_T1, dfa4_T476, dfa4_T170, dfa4_T34, dfa4_T189, dfa4_T29, dfa4_T124, dfa4_T352, dfa4_T329, dfa4_T170, dfa4_T283, dfa4_T456, dfa4_T176, dfa4_T400, dfa4_T371, dfa4_T82, dfa4_T83, dfa4_T354, dfa4_T63, dfa4_T109, dfa4_T402, dfa4_T314, dfa4_T477, dfa4_T249, dfa4_T63, dfa4_T382, dfa4_T58, dfa4_T42, dfa4_T61, dfa4_T61, dfa4_T201, dfa4_T201, dfa4_T134, dfa4_T170, dfa4_T102, dfa4_T249, dfa4_T440, dfa4_T249, dfa4_T249, dfa4_T249, dfa4_T249, dfa4_T23, dfa4_T10, dfa4_T217, dfa4_T217, dfa4_T38, dfa4_T378, dfa4_T128, dfa4_T363, dfa4_T10, dfa4_T161, dfa4_T103, dfa4_T103, dfa4_T103, dfa4_T103, dfa4_T103, dfa4_T103, dfa4_T103, dfa4_T103, dfa4_T103, dfa4_T103, dfa4_T103, dfa4_T103, dfa4_T103, dfa4_T103, dfa4_T103, dfa4_T103, dfa4_T103, dfa4_T103, dfa4_T446, dfa4_T466, dfa4_T408, dfa4_T344, dfa4_T410, dfa4_T305, dfa4_T26, dfa4_T26, dfa4_T26, dfa4_T26, dfa4_T26, dfa4_T26, dfa4_T26, dfa4_T26, dfa4_T26, dfa4_T26, dfa4_T26, dfa4_T26, dfa4_T26, dfa4_T26, dfa4_T26, dfa4_T26, dfa4_T26, dfa4_T114, dfa4_T294, dfa4_T334, dfa4_T465, dfa4_T150, dfa4_T150, dfa4_T150, dfa4_T150, dfa4_T150, dfa4_T150, dfa4_T150, dfa4_T150, dfa4_T150, dfa4_T150, dfa4_T150, dfa4_T150, dfa4_T150, dfa4_T150, dfa4_T150, dfa4_T150, dfa4_T150, dfa4_T386, dfa4_T214, dfa4_T312, dfa4_T406, dfa4_T103, dfa4_T235, dfa4_T369, dfa4_T149, dfa4_T183, dfa4_T335, dfa4_T235, dfa4_T180, dfa4_T132, dfa4_T93, dfa4_T26, dfa4_T26, dfa4_T374, dfa4_T114, dfa4_T337, dfa4_T437, dfa4_T81, dfa4_T334, dfa4_T250, dfa4_T240, dfa4_T216, dfa4_T150, dfa4_T150, dfa4_T173, dfa4_T127, dfa4_T13, dfa4_T122, dfa4_T116, dfa4_T322, dfa4_T372, dfa4_T480, dfa4_T336, dfa4_T445, dfa4_T132, dfa4_T213, dfa4_T93, dfa4_T461, dfa4_T110, dfa4_T218, dfa4_T218, dfa4_T220, dfa4_T318, dfa4_T216, dfa4_T132, dfa4_T284, dfa4_T159, dfa4_T458, dfa4_T193, dfa4_T193, dfa4_T169, dfa4_T169, dfa4_T160, dfa4_T33, dfa4_T364, dfa4_T322, dfa4_T185, dfa4_T300, dfa4_T377, dfa4_T342, dfa4_T36, dfa4_T246, dfa4_T414, dfa4_T33, dfa4_T118, dfa4_T220, dfa4_T31, dfa4_T332, dfa4_T403, dfa4_T12, dfa4_T56, dfa4_T56, dfa4_T438, dfa4_T343, dfa4_T219, dfa4_T258, dfa4_T159, dfa4_T302, dfa4_T39, dfa4_T156, dfa4_T96, dfa4_T129, dfa4_T370, dfa4_T301, dfa4_T346, dfa4_T463, dfa4_T255, dfa4_T166, dfa4_T260, dfa4_T96, dfa4_T96, dfa4_T96, dfa4_T291, dfa4_T209, dfa4_T127, dfa4_T326, dfa4_T6, dfa4_T199, dfa4_T129, dfa4_T129, dfa4_T129, dfa4_T307, dfa4_T19, dfa4_T132, dfa4_T332, dfa4_T403, dfa4_T70, dfa4_T252, dfa4_T167, dfa4_T167, dfa4_T167, dfa4_T167, dfa4_T167, dfa4_T167, dfa4_T167, dfa4_T167, dfa4_T167, dfa4_T167, dfa4_T167, dfa4_T167, dfa4_T167, dfa4_T167, dfa4_T167, dfa4_T167, dfa4_T167, dfa4_T136, dfa4_T416, dfa4_T295, dfa4_T132, dfa4_T427, dfa4_T219, dfa4_T308, dfa4_T52, dfa4_T219, dfa4_T219, dfa4_T219, dfa4_T219, dfa4_T383, dfa4_T317, dfa4_T258, dfa4_T258, dfa4_T258, dfa4_T258, dfa4_T258, dfa4_T404, dfa4_T127, dfa4_T152, dfa4_T298, dfa4_T98, dfa4_T98, dfa4_T98, dfa4_T98, dfa4_T98, dfa4_T98, dfa4_T98, dfa4_T98, dfa4_T98, dfa4_T98, dfa4_T98, dfa4_T98, dfa4_T98, dfa4_T98, dfa4_T98, dfa4_T98, dfa4_T98, dfa4_T43, dfa4_T27, dfa4_T231, dfa4_T231, dfa4_T231, dfa4_T231, dfa4_T231, dfa4_T231, dfa4_T231, dfa4_T231, dfa4_T231, dfa4_T231, dfa4_T231, dfa4_T231, dfa4_T231, dfa4_T231, dfa4_T231, dfa4_T231, dfa4_T231, dfa4_T155, dfa4_T96, dfa4_T200, dfa4_T96, dfa4_T129, dfa4_T129, dfa4_T127, dfa4_T451, dfa4_T247, dfa4_T247, dfa4_T429, dfa4_T220, dfa4_T230, dfa4_T391, dfa4_T327, dfa4_T327, dfa4_T327, dfa4_T327, dfa4_T327, dfa4_T327, dfa4_T327, dfa4_T327, dfa4_T327, dfa4_T327, dfa4_T327, dfa4_T327, dfa4_T327, dfa4_T327, dfa4_T327, dfa4_T327, dfa4_T327, dfa4_T47, dfa4_T209, dfa4_T76, dfa4_T16, dfa4_T453, dfa4_T424, dfa4_T205, dfa4_T313, dfa4_T70, dfa4_T454, dfa4_T448, dfa4_T97, dfa4_T167, dfa4_T167, dfa4_T84, dfa4_T168, dfa4_T89, dfa4_T40, dfa4_T40, dfa4_T40, dfa4_T40, dfa4_T40, dfa4_T40, dfa4_T40, dfa4_T40, dfa4_T40, dfa4_T40, dfa4_T40, dfa4_T40, dfa4_T40, dfa4_T40, dfa4_T40, dfa4_T40, dfa4_T40, dfa4_T64, dfa4_T3, dfa4_T11, dfa4_T317, dfa4_T471, dfa4_T69, dfa4_T69, dfa4_T69, dfa4_T69, dfa4_T69, dfa4_T69, dfa4_T69, dfa4_T69, dfa4_T69, dfa4_T69, dfa4_T69, dfa4_T69, dfa4_T69, dfa4_T69, dfa4_T69, dfa4_T69, dfa4_T69, dfa4_T69, dfa4_T173, dfa4_T175, dfa4_T207, dfa4_T152, dfa4_T405, dfa4_T226, dfa4_T320, dfa4_T98, dfa4_T98, dfa4_T470, dfa4_T43, dfa4_T172, dfa4_T60, dfa4_T231, dfa4_T231, dfa4_T132, dfa4_T381, dfa4_T327, dfa4_T16, dfa4_T185, dfa4_T385, dfa4_T227, dfa4_T80, dfa4_T467, dfa4_T158, dfa4_T327, dfa4_T57, dfa4_T51, dfa4_T97, dfa4_T28, dfa4_T2, dfa4_T397, dfa4_T243, dfa4_T181, dfa4_T181, dfa4_T74, dfa4_T394, dfa4_T144, dfa4_T144, dfa4_T411, dfa4_T392, dfa4_T341, dfa4_T40, dfa4_T40, dfa4_T95, dfa4_T64, dfa4_T78, dfa4_T28, dfa4_T455, dfa4_T69, dfa4_T104, dfa4_T320, dfa4_T84, dfa4_T173, dfa4_T353, dfa4_T60, dfa4_T125, dfa4_T227, dfa4_T420, dfa4_T162, dfa4_T208, dfa4_T261, dfa4_T268, dfa4_T63, dfa4_T109, dfa4_T177, dfa4_T210, dfa4_T210, dfa4_T86, dfa4_T145, dfa4_T24, dfa4_T397, dfa4_T479, dfa4_T276, dfa4_T436, dfa4_T341, dfa4_T28, dfa4_T361, dfa4_T248, dfa4_T348, dfa4_T121, dfa4_T53, dfa4_T269, dfa4_T75, dfa4_T188, dfa4_T4, dfa4_T13, dfa4_T73, dfa4_T358, dfa4_T357, dfa4_T58, dfa4_T390, dfa4_T63, dfa4_T237, dfa4_T46, dfa4_T245, dfa4_T197, dfa4_T145, dfa4_T37, dfa4_T145, dfa4_T145, dfa4_T145, dfa4_T145, dfa4_T133, dfa4_T48, dfa4_T299, dfa4_T24, dfa4_T24, dfa4_T24, dfa4_T24, dfa4_T24, dfa4_T164, dfa4_T127, dfa4_T339, dfa4_T415, dfa4_T0, dfa4_T0, dfa4_T0, dfa4_T0, dfa4_T0, dfa4_T0, dfa4_T0, dfa4_T0, dfa4_T0, dfa4_T0, dfa4_T0, dfa4_T0, dfa4_T0, dfa4_T0, dfa4_T0, dfa4_T0, dfa4_T0, dfa4_T278, dfa4_T398, dfa4_T303, dfa4_T450, dfa4_T71, dfa4_T163, dfa4_T303, dfa4_T85, dfa4_T282, dfa4_T53, dfa4_T126, dfa4_T20, dfa4_T100, dfa4_T171, dfa4_T359, dfa4_T4, dfa4_T256, dfa4_T256, dfa4_T7, dfa4_T173, dfa4_T117, dfa4_T388, dfa4_T233, dfa4_T233, dfa4_T290, dfa4_T376, dfa4_T68, dfa4_T68, dfa4_T68, dfa4_T68, dfa4_T68, dfa4_T68, dfa4_T68, dfa4_T68, dfa4_T68, dfa4_T68, dfa4_T68, dfa4_T68, dfa4_T68, dfa4_T68, dfa4_T68, dfa4_T68, dfa4_T68, dfa4_T48, dfa4_T264, dfa4_T195, dfa4_T195, dfa4_T195, dfa4_T195, dfa4_T195, dfa4_T195, dfa4_T195, dfa4_T195, dfa4_T195, dfa4_T195, dfa4_T195, dfa4_T195, dfa4_T195, dfa4_T195, dfa4_T195, dfa4_T195, dfa4_T195, dfa4_T195, dfa4_T409, dfa4_T7, dfa4_T428, dfa4_T296, dfa4_T419, dfa4_T339, dfa4_T244, dfa4_T0, dfa4_T0, dfa4_T46, dfa4_T18, dfa4_T111, dfa4_T67, dfa4_T71, dfa4_T460, dfa4_T439, dfa4_T401, dfa4_T18, dfa4_T18, dfa4_T18, dfa4_T8, dfa4_T433, dfa4_T163, dfa4_T421, dfa4_T111, dfa4_T111, dfa4_T111, dfa4_T35, dfa4_T251, dfa4_T127, dfa4_T21, dfa4_T418, dfa4_T277, dfa4_T292, dfa4_T457, dfa4_T202, dfa4_T202, dfa4_T92, dfa4_T271, dfa4_T389, dfa4_T290, dfa4_T49, dfa4_T9, dfa4_T362, dfa4_T68, dfa4_T68, dfa4_T212, dfa4_T195, dfa4_T272, dfa4_T244, dfa4_T84, dfa4_T18, dfa4_T422, dfa4_T365, dfa4_T18, dfa4_T111, dfa4_T111, dfa4_T433, dfa4_T444, dfa4_T142, dfa4_T65, dfa4_T65, dfa4_T65, dfa4_T65, dfa4_T65, dfa4_T65, dfa4_T65, dfa4_T65, dfa4_T65, dfa4_T65, dfa4_T65, dfa4_T65, dfa4_T65, dfa4_T65, dfa4_T65, dfa4_T65, dfa4_T65, dfa4_T355, dfa4_T311, dfa4_T328, dfa4_T191, dfa4_T236, dfa4_T234, dfa4_T234, dfa4_T287, dfa4_T238, dfa4_T192, dfa4_T350, dfa4_T253, dfa4_T203, dfa4_T203, dfa4_T203, dfa4_T203, dfa4_T203, dfa4_T203, dfa4_T203, dfa4_T203, dfa4_T203, dfa4_T203, dfa4_T203, dfa4_T203, dfa4_T203, dfa4_T203, dfa4_T203, dfa4_T203, dfa4_T203, dfa4_T412, dfa4_T127, dfa4_T108, dfa4_T77, dfa4_T224, dfa4_T362, dfa4_T28, dfa4_T13, dfa4_T481, dfa4_T131, dfa4_T65, dfa4_T46, dfa4_T366, dfa4_T65, dfa4_T304, dfa4_T44, dfa4_T44, dfa4_T331, dfa4_T257, dfa4_T442, dfa4_T287, dfa4_T126, dfa4_T91, dfa4_T434, dfa4_T112, dfa4_T165, dfa4_T165, dfa4_T274, dfa4_T203, dfa4_T203, dfa4_T15, dfa4_T135, dfa4_T338, dfa4_T108, dfa4_T330, dfa4_T99, dfa4_T84, dfa4_T63, dfa4_T109, dfa4_T147, dfa4_T441, dfa4_T468, dfa4_T373, dfa4_T430, dfa4_T182, dfa4_T442, dfa4_T279, dfa4_T107, dfa4_T274, dfa4_T28, dfa4_T15, dfa4_T349, dfa4_T281, dfa4_T59, dfa4_T28, dfa4_T30, dfa4_T426, dfa4_T63, dfa4_T449, dfa4_T58, dfa4_T141, dfa4_T196, dfa4_T323, dfa4_T347, dfa4_T281, dfa4_T340, dfa4_T340, dfa4_T297, dfa4_T270, dfa4_T137, dfa4_T28, dfa4_T323, dfa4_T475, dfa4_T323, dfa4_T323, dfa4_T323, dfa4_T323, dfa4_T120, dfa4_T347, dfa4_T347, dfa4_T347, dfa4_T347, dfa4_T347, dfa4_T148, dfa4_T242, dfa4_T62, dfa4_T225, dfa4_T443, dfa4_T119, dfa4_T474, dfa4_T84, dfa4_T45, dfa4_T72, dfa4_T262, dfa4_T154, dfa4_T55, dfa4_T90, dfa4_T154, dfa4_T333, dfa4_T407, dfa4_T215, dfa4_T254, dfa4_T55, dfa4_T178, dfa4_T288, dfa4_T215, dfa4_T215, dfa4_T215, dfa4_T478, dfa4_T90, dfa4_T306, dfa4_T254, dfa4_T254, dfa4_T254, dfa4_T25, dfa4_T66, dfa4_T106, dfa4_T215, dfa4_T87, dfa4_T215, dfa4_T254, dfa4_T254, dfa4_T4, dfa4_T425, dfa4_T447, dfa4_T28 }; static ANTLR3_INT32 dfa4_sst(pbelle_sdpParser ctx, pANTLR3_BASE_RECOGNIZER recognizer, pANTLR3_INT_STREAM is, pANTLR3_CYCLIC_DFA dfa, ANTLR3_INT32 s) { ANTLR3_INT32 _s; _s = s; switch (s) { case 0: { ANTLR3_UINT32 LA4_498; ANTLR3_MARKER index4_498; LA4_498 = LA(1); index4_498 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(p))) ) { s = 6; } else if ( ((IS_TOKEN(t))) ) { s = 29; } SEEK(index4_498); if ( s>=0 ) { return s; } } break; case 1: { ANTLR3_UINT32 LA4_402; ANTLR3_MARKER index4_402; LA4_402 = LA(1); index4_402 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(p))) ) { s = 6; } else if ( ((IS_TOKEN(t))) ) { s = 29; } SEEK(index4_402); if ( s>=0 ) { return s; } } break; case 2: { ANTLR3_UINT32 LA4_882; ANTLR3_MARKER index4_882; LA4_882 = LA(1); index4_882 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(p))) ) { s = 6; } else if ( ((IS_TOKEN(t))) ) { s = 29; } SEEK(index4_882); if ( s>=0 ) { return s; } } break; case 3: { ANTLR3_UINT32 LA4_25; ANTLR3_MARKER index4_25; LA4_25 = LA(1); index4_25 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(p))) ) { s = 6; } else if ( ((IS_TOKEN(b))) ) { s = 29; } SEEK(index4_25); if ( s>=0 ) { return s; } } break; case 4: { ANTLR3_UINT32 LA4_453; ANTLR3_MARKER index4_453; LA4_453 = LA(1); index4_453 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(p))) ) { s = 6; } else if ( ((IS_TOKEN(t))) ) { s = 29; } SEEK(index4_453); if ( s>=0 ) { return s; } } break; case 5: { ANTLR3_UINT32 LA4_804; ANTLR3_MARKER index4_804; LA4_804 = LA(1); index4_804 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(p))) ) { s = 6; } else if ( ((IS_TOKEN(t))) ) { s = 29; } SEEK(index4_804); if ( s>=0 ) { return s; } } break; case 6: { ANTLR3_UINT32 LA4_692; ANTLR3_MARKER index4_692; LA4_692 = LA(1); index4_692 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(p))) ) { s = 6; } else if ( ((IS_TOKEN(t))) ) { s = 29; } SEEK(index4_692); if ( s>=0 ) { return s; } } break; case 7: { ANTLR3_UINT32 LA4_333; ANTLR3_MARKER index4_333; LA4_333 = LA(1); index4_333 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(p))) ) { s = 6; } else if ( ((IS_TOKEN(t))) ) { s = 29; } SEEK(index4_333); if ( s>=0 ) { return s; } } break; case 8: { ANTLR3_UINT32 LA4_28; ANTLR3_MARKER index4_28; LA4_28 = LA(1); index4_28 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(p))) ) { s = 6; } else if ( ((IS_TOKEN(c))) ) { s = 29; } SEEK(index4_28); if ( s>=0 ) { return s; } } break; case 9: { ANTLR3_UINT32 LA4_99; ANTLR3_MARKER index4_99; LA4_99 = LA(1); index4_99 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(p))) ) { s = 6; } else if ( ((IS_TOKEN(t))) ) { s = 29; } SEEK(index4_99); if ( s>=0 ) { return s; } } break; } if (BACKTRACKING > 0) { FAILEDFLAG = ANTLR3_TRUE; return -1; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)"()* loopback of 111:26: ( phone_field )*"; EXCEPTION->decisionNum = 4; EXCEPTION->state = _s; return -1; } /* Declare tracking structure for Cyclic DFA 4 */ static ANTLR3_CYCLIC_DFA cdfa4 = { 4, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"()* loopback of 111:26: ( phone_field )*", (CDFA_SPECIAL_FUNC) dfa4_sst, antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa4_eot, /* EOT table */ dfa4_eof, /* EOF table */ dfa4_min, /* Minimum tokens for each state */ dfa4_max, /* Maximum tokens for each state */ dfa4_accept, /* Accept table */ dfa4_special, /* Special transition states */ dfa4_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 4 * --------------------- *//** Static dfa state tables for Cyclic dfa: * 112:26: ( connection CR LF )? */ static const ANTLR3_INT32 dfa5_eot[11] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa5_eof[11] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa5_min[11] = { 6, 11, 11, 6, 4, 4, -1, 4, -1, 6, 6 }; static const ANTLR3_INT32 dfa5_max[11] = { 12, 11, 11, 12, 19, 19, -1, 19, -1, 12, 19 }; static const ANTLR3_INT32 dfa5_accept[11] = { -1, -1, -1, -1, -1, -1, 1, -1, 2, -1, -1 }; static const ANTLR3_INT32 dfa5_special[11] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; /** Used when there is no transition table entry for a particular state */ #define dfa5_T_empty NULL static const ANTLR3_INT32 dfa5_T0[] = { 1, -1, -1, 2, -1, -1, 1 }; static const ANTLR3_INT32 dfa5_T1[] = { 3 }; static const ANTLR3_INT32 dfa5_T2[] = { 8, -1, 4, -1, -1, 7, -1, -1, 4, -1, -1, -1, -1, -1, -1, 6 }; static const ANTLR3_INT32 dfa5_T3[] = { 4, -1, -1, 5, -1, -1, 4 }; static const ANTLR3_INT32 dfa5_T4[] = { 6, -1, -1, 10, -1, -1, 6 }; static const ANTLR3_INT32 dfa5_T5[] = { 6, 8, -1, 10, -1, -1, 6, -1, -1, -1, -1, -1, -1, 6 }; static const ANTLR3_INT32 dfa5_T6[] = { 8, -1, 4, -1, -1, 5, -1, -1, 4, -1, -1, -1, -1, -1, -1, 9 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa5_transitions[] = { dfa5_T0, dfa5_T1, dfa5_T1, dfa5_T3, dfa5_T2, dfa5_T6, NULL, dfa5_T2, NULL, dfa5_T4, dfa5_T5 }; /* Declare tracking structure for Cyclic DFA 5 */ static ANTLR3_CYCLIC_DFA cdfa5 = { 5, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"112:26: ( connection CR LF )?", (CDFA_SPECIAL_FUNC) antlr3dfaspecialStateTransition, /* Default special state transition function */ antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa5_eot, /* EOT table */ dfa5_eof, /* EOF table */ dfa5_min, /* Minimum tokens for each state */ dfa5_max, /* Maximum tokens for each state */ dfa5_accept, /* Accept table */ dfa5_special, /* Special transition states */ dfa5_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 5 * --------------------- *//** Static dfa state tables for Cyclic dfa: * ()* loopback of 113:26: ( bandwidth CR LF )* */ static const ANTLR3_INT32 dfa6_eot[7] = { -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa6_eof[7] = { -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa6_min[7] = { 6, 11, 11, 6, 4, -1, -1 }; static const ANTLR3_INT32 dfa6_max[7] = { 12, 11, 11, 12, 19, -1, -1 }; static const ANTLR3_INT32 dfa6_accept[7] = { -1, -1, -1, -1, -1, 1, 2 }; static const ANTLR3_INT32 dfa6_special[7] = { -1, -1, -1, -1, -1, -1, -1 }; /** Used when there is no transition table entry for a particular state */ #define dfa6_T_empty NULL static const ANTLR3_INT32 dfa6_T0[] = { 3 }; static const ANTLR3_INT32 dfa6_T1[] = { 1, -1, -1, 2, -1, -1, 1 }; static const ANTLR3_INT32 dfa6_T2[] = { 5, -1, -1, 4, -1, -1, 5 }; static const ANTLR3_INT32 dfa6_T3[] = { 5, -1, 5, -1, -1, 4, -1, -1, 5, -1, -1, -1, -1, -1, -1, 6 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa6_transitions[] = { dfa6_T1, dfa6_T0, dfa6_T0, dfa6_T2, dfa6_T3, NULL, NULL }; /* Declare tracking structure for Cyclic DFA 6 */ static ANTLR3_CYCLIC_DFA cdfa6 = { 6, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"()* loopback of 113:26: ( bandwidth CR LF )*", (CDFA_SPECIAL_FUNC) antlr3dfaspecialStateTransition, /* Default special state transition function */ antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa6_eot, /* EOT table */ dfa6_eof, /* EOF table */ dfa6_min, /* Minimum tokens for each state */ dfa6_max, /* Maximum tokens for each state */ dfa6_accept, /* Accept table */ dfa6_special, /* Special transition states */ dfa6_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 6 * --------------------- *//** Static dfa state tables for Cyclic dfa: * ()* loopback of 115:26: ( repeat_time CR LF )* */ static const ANTLR3_INT32 dfa7_eot[42] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa7_eof[42] = { 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa7_min[42] = { 6, 11, 11, -1, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 13, 4, 0, 4, 4, 0, 4, -1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 13, 4, 0, 0, 4 }; static const ANTLR3_INT32 dfa7_max[42] = { 12, 11, 11, -1, 35, 35, 35, 35, 35, 35, 13, 35, 35, 35, 35, 35, 13, 35, 0, 35, 35, 0, 35, -1, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 13, 13, 35, 0, 0, 35 }; static const ANTLR3_INT32 dfa7_accept[42] = { -1, -1, -1, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa7_special[42] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 3, -1 }; /** Used when there is no transition table entry for a particular state */ #define dfa7_T_empty NULL static const ANTLR3_INT32 dfa7_T0[] = { 18 }; static const ANTLR3_INT32 dfa7_T1[] = { 3, 3, 12, 10, 3, 11, 3, 3, 12, -1, 3, 3, 3, 3, 3, 7, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa7_T2[] = { 3, 3, 25, 10, 3, 28, 3, 3, 25, -1, 3, 3, 3, 3, 3, 26, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa7_T3[] = { 4 }; static const ANTLR3_INT32 dfa7_T4[] = { 3, 3, 3, 16, 3, 3, 3, 3, 3, -1, 3, 3, 3, 3, 3, 15, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa7_T5[] = { 3, 3, 3, 37, 3, 3, 3, 3, 3, -1, 3, 3, 3, 3, 3, 38, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa7_T6[] = { 1, -1, -1, 2, -1, -1, 1 }; static const ANTLR3_INT32 dfa7_T7[] = { 3, 3, 31, 36, 3, 41, 3, 3, 31, -1, 3, 3, 3, 3, 3, 29, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa7_T8[] = { 3, 3, 6, 3, 3, 5, 3, 3, 6, -1, 3, 3, 3, 3, 3, 7, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa7_T9[] = { 3, 3, 3, 10, 3, 3, 3, 3, 3, -1, 3, 3, 3, 3, 3, 7, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa7_T10[] = { 40 }; static const ANTLR3_INT32 dfa7_T11[] = { 3, 3, 12, 10, 3, 20, 3, 3, 12, -1, 3, 3, 3, 3, 3, 27, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa7_T12[] = { 3, 3, 35, 16, 3, 34, 3, 3, 35, -1, 3, 3, 3, 3, 3, 15, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa7_T13[] = { 3, 3, 35, 37, 3, 34, 3, 3, 35, -1, 3, 3, 3, 3, 3, 38, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa7_T14[] = { 3, 3, 6, 3, 3, 5, 3, 3, 6, -1, 3, 3, 3, 3, 3, 8, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa7_T15[] = { 3, 3, 31, 10, 3, 30, 3, 3, 31, -1, 3, 3, 3, 3, 3, 7, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa7_T16[] = { 3, 3, 3, 3, 3, 3, 3, 3, 3, -1, 3, 3, 3, 3, 3, 9, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa7_T17[] = { 3, 3, 33, 16, 3, 32, 3, 3, 33, -1, 3, 3, 3, 3, 3, 15, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa7_T18[] = { 3, 3, 14, 16, 3, 13, 3, 3, 14, -1, 3, 3, 3, 3, 3, 15, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa7_T19[] = { 21 }; static const ANTLR3_INT32 dfa7_T20[] = { 3, 3, 3, 10, 3, 3, 3, 3, 3, -1, 3, 3, 3, 3, 3, 26, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa7_T21[] = { 3, 3, 12, 10, 3, 20, 3, 3, 12, -1, 3, 3, 3, 3, 3, 7, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa7_T22[] = { 3, 3, 25, 10, 3, 24, 3, 3, 25, -1, 3, 3, 3, 3, 3, 26, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa7_T23[] = { 3, 3, 12, 10, 3, 17, 3, 3, 12, -1, 3, 3, 3, 3, 3, 7, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa7_T24[] = { 3, 3, 25, 10, 3, 24, 3, 3, 25, -1, 3, 3, 3, 3, 3, 29, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa7_T25[] = { 3, 3, 31, 36, 3, 30, 3, 3, 31, -1, 3, 3, 3, 3, 3, 26, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa7_T26[] = { 3, 3, 3, 36, 3, 3, 3, 3, 3, -1, 3, 3, 3, 3, 3, 26, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa7_T27[] = { -1 }; static const ANTLR3_INT32 dfa7_T28[] = { 39 }; static const ANTLR3_INT32 dfa7_T29[] = { 3, 3, 12, 10, 3, 17, 3, 3, 12, -1, 3, 3, 3, 3, 3, 22, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa7_T30[] = { 3, 3, 14, 16, 3, 13, 3, 3, 14, -1, 3, 3, 3, 3, 3, 19, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa7_T31[] = { 3, 3, 31, 10, 3, 41, 3, 3, 31, -1, 3, 3, 3, 3, 3, 7, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa7_transitions[] = { dfa7_T6, dfa7_T3, dfa7_T3, NULL, dfa7_T8, dfa7_T14, dfa7_T16, dfa7_T1, dfa7_T18, dfa7_T23, dfa7_T0, dfa7_T1, dfa7_T9, dfa7_T30, dfa7_T4, dfa7_T21, dfa7_T19, dfa7_T29, dfa7_T27, dfa7_T22, dfa7_T11, dfa7_T27, dfa7_T2, NULL, dfa7_T24, dfa7_T20, dfa7_T15, dfa7_T17, dfa7_T2, dfa7_T12, dfa7_T25, dfa7_T26, dfa7_T17, dfa7_T4, dfa7_T13, dfa7_T5, dfa7_T28, dfa7_T10, dfa7_T31, dfa7_T27, dfa7_T27, dfa7_T7 }; static ANTLR3_INT32 dfa7_sst(pbelle_sdpParser ctx, pANTLR3_BASE_RECOGNIZER recognizer, pANTLR3_INT_STREAM is, pANTLR3_CYCLIC_DFA dfa, ANTLR3_INT32 s) { ANTLR3_INT32 _s; _s = s; switch (s) { case 0: { ANTLR3_UINT32 LA7_18; ANTLR3_MARKER index7_18; LA7_18 = LA(1); index7_18 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(r))) ) { s = 23; } else if ( ((IS_TOKEN(k))) ) { s = 3; } SEEK(index7_18); if ( s>=0 ) { return s; } } break; case 1: { ANTLR3_UINT32 LA7_39; ANTLR3_MARKER index7_39; LA7_39 = LA(1); index7_39 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(r))) ) { s = 23; } else if ( ((((IS_TOKEN(k)))||((IS_TOKEN(m))))) ) { s = 3; } SEEK(index7_39); if ( s>=0 ) { return s; } } break; case 2: { ANTLR3_UINT32 LA7_21; ANTLR3_MARKER index7_21; LA7_21 = LA(1); index7_21 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(r))) ) { s = 23; } else if ( ((((IS_TOKEN(k)))||((IS_TOKEN(z))))) ) { s = 3; } SEEK(index7_21); if ( s>=0 ) { return s; } } break; case 3: { ANTLR3_UINT32 LA7_40; ANTLR3_MARKER index7_40; LA7_40 = LA(1); index7_40 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(r))) ) { s = 23; } else if ( ((((IS_TOKEN(k)))||((IS_TOKEN(z)))||((IS_TOKEN(m))))) ) { s = 3; } SEEK(index7_40); if ( s>=0 ) { return s; } } break; } if (BACKTRACKING > 0) { FAILEDFLAG = ANTLR3_TRUE; return -1; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)"()* loopback of 115:26: ( repeat_time CR LF )*"; EXCEPTION->decisionNum = 7; EXCEPTION->state = _s; return -1; } /* Declare tracking structure for Cyclic DFA 7 */ static ANTLR3_CYCLIC_DFA cdfa7 = { 7, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"()* loopback of 115:26: ( repeat_time CR LF )*", (CDFA_SPECIAL_FUNC) dfa7_sst, antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa7_eot, /* EOT table */ dfa7_eof, /* EOF table */ dfa7_min, /* Minimum tokens for each state */ dfa7_max, /* Maximum tokens for each state */ dfa7_accept, /* Accept table */ dfa7_special, /* Special transition states */ dfa7_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 7 * --------------------- *//** Static dfa state tables for Cyclic dfa: * 116:26: ( zone_adjustments CR LF )? */ static const ANTLR3_INT32 dfa8_eot[31] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa8_eof[31] = { 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa8_min[31] = { 6, 11, 11, -1, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 0, 4, 4, -1, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 0, 4 }; static const ANTLR3_INT32 dfa8_max[31] = { 12, 11, 11, -1, 35, 35, 35, 35, 35, 35, 35, 13, 35, 35, 35, 0, 35, 35, -1, 35, 35, 35, 35, 35, 35, 35, 35, 13, 35, 0, 35 }; static const ANTLR3_INT32 dfa8_accept[31] = { -1, -1, -1, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa8_special[31] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1 }; /** Used when there is no transition table entry for a particular state */ #define dfa8_T_empty NULL static const ANTLR3_INT32 dfa8_T0[] = { -1 }; static const ANTLR3_INT32 dfa8_T1[] = { 3, 3, 3, 27, 3, 3, 3, 3, 3, -1, 3, 3, 3, 3, 3, 28, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa8_T2[] = { 4 }; static const ANTLR3_INT32 dfa8_T3[] = { 3, 3, 25, 27, 3, 26, 3, 3, 25, -1, 3, 3, 3, 3, 3, 28, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa8_T4[] = { 1, -1, -1, 2, -1, -1, 1 }; static const ANTLR3_INT32 dfa8_T5[] = { 3, 3, 25, 27, 3, 24, 3, 3, 25, -1, 3, 3, 3, 3, 3, 28, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa8_T6[] = { 3, 3, 3, 3, 3, 30, 3, 3, 3, -1, 3, 3, 3, 3, 3, 19, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa8_T7[] = { 15 }; static const ANTLR3_INT32 dfa8_T8[] = { 3, 3, 9, 11, 7, 8, 3, 3, 9, -1, 3, 3, 3, 3, 3, 10, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa8_T9[] = { 3, 3, 22, 11, 3, 21, 3, 3, 22, -1, 3, 3, 3, 3, 3, 10, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa8_T10[] = { 3, 3, 3, 3, 3, 14, 3, 3, 3, -1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa8_T11[] = { 3, 3, 3, 3, 3, 16, 3, 3, 3, -1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa8_T12[] = { 3, 3, 3, 3, 3, 14, 3, 3, 3, -1, 3, 3, 3, 3, 3, 17, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa8_T13[] = { 3, 3, 9, 11, 3, 12, 3, 3, 9, -1, 3, 3, 3, 3, 3, 10, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa8_T14[] = { 3, 3, 3, 3, 3, 16, 3, 3, 3, -1, 3, 3, 3, 3, 3, 19, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa8_T15[] = { 3, 3, 22, 11, 20, 21, 3, 3, 22, -1, 3, 3, 3, 3, 3, 10, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa8_T16[] = { 3, 3, 9, 11, 3, 8, 3, 3, 9, -1, 3, 3, 3, 3, 3, 13, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa8_T17[] = { 3, 3, 3, 3, 3, 30, 3, 3, 3, -1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa8_T18[] = { 3, 3, 3, 11, 3, 3, 3, 3, 3, -1, 3, 3, 3, 3, 3, 10, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa8_T19[] = { 3, 3, 3, 3, 3, 5, 3, 3, 3, -1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa8_T20[] = { 3, 3, 3, 3, 3, 5, 3, 3, 3, -1, 3, 3, 3, 3, 3, 6, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa8_T21[] = { 3, 3, 25, 11, 23, 24, 3, 3, 25, -1, 3, 3, 3, 3, 3, 10, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa8_T22[] = { 29 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa8_transitions[] = { dfa8_T4, dfa8_T2, dfa8_T2, NULL, dfa8_T19, dfa8_T20, dfa8_T8, dfa8_T13, dfa8_T16, dfa8_T18, dfa8_T10, dfa8_T7, dfa8_T13, dfa8_T11, dfa8_T12, dfa8_T0, dfa8_T14, dfa8_T15, NULL, dfa8_T21, dfa8_T9, dfa8_T9, dfa8_T18, dfa8_T3, dfa8_T5, dfa8_T1, dfa8_T3, dfa8_T22, dfa8_T17, dfa8_T0, dfa8_T6 }; static ANTLR3_INT32 dfa8_sst(pbelle_sdpParser ctx, pANTLR3_BASE_RECOGNIZER recognizer, pANTLR3_INT_STREAM is, pANTLR3_CYCLIC_DFA dfa, ANTLR3_INT32 s) { ANTLR3_INT32 _s; _s = s; switch (s) { case 0: { ANTLR3_UINT32 LA8_15; ANTLR3_MARKER index8_15; LA8_15 = LA(1); index8_15 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(z))) ) { s = 18; } else if ( ((IS_TOKEN(k))) ) { s = 3; } SEEK(index8_15); if ( s>=0 ) { return s; } } break; case 1: { ANTLR3_UINT32 LA8_29; ANTLR3_MARKER index8_29; LA8_29 = LA(1); index8_29 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(z))) ) { s = 18; } else if ( ((((IS_TOKEN(k)))||((IS_TOKEN(m))))) ) { s = 3; } SEEK(index8_29); if ( s>=0 ) { return s; } } break; } if (BACKTRACKING > 0) { FAILEDFLAG = ANTLR3_TRUE; return -1; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)"116:26: ( zone_adjustments CR LF )?"; EXCEPTION->decisionNum = 8; EXCEPTION->state = _s; return -1; } /* Declare tracking structure for Cyclic DFA 8 */ static ANTLR3_CYCLIC_DFA cdfa8 = { 8, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"116:26: ( zone_adjustments CR LF )?", (CDFA_SPECIAL_FUNC) dfa8_sst, antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa8_eot, /* EOT table */ dfa8_eof, /* EOF table */ dfa8_min, /* Minimum tokens for each state */ dfa8_max, /* Maximum tokens for each state */ dfa8_accept, /* Accept table */ dfa8_special, /* Special transition states */ dfa8_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 8 * --------------------- *//** Static dfa state tables for Cyclic dfa: * 117:26: ( key_field CR LF )? */ static const ANTLR3_INT32 dfa9_eot[60] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa9_eof[60] = { 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa9_min[60] = { 6, 11, 11, -1, 4, 4, -1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 0 }; static const ANTLR3_INT32 dfa9_max[60] = { 12, 11, 11, -1, 35, 35, -1, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 13, 35, 35, 35, 35, 0, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 13, 35, 0 }; static const ANTLR3_INT32 dfa9_accept[60] = { -1, -1, -1, 2, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa9_special[60] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0 }; /** Used when there is no transition table entry for a particular state */ #define dfa9_T_empty NULL static const ANTLR3_INT32 dfa9_T0[] = { 6, 6, 39, 57, 48, 58, 49, 6, 39, -1, 6, 6, 6, 6, 6, 37, 46, 6, 40, 41, 42, 44, 43, 47, 45, 50, 51, 52, 53, 54, 55, 56 }; static const ANTLR3_INT32 dfa9_T1[] = { 6, 6, 6, 6, 6, 35, 6, 6, 6, -1, 6, 6, 6, 6, 6, 34, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa9_T2[] = { 31, 31, 31, 25, 31, 31, 31, 31, 31, -1, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 }; static const ANTLR3_INT32 dfa9_T3[] = { 26, 6, 28, 25, 16, 29, 17, 6, 28, -1, 6, 6, 6, 6, 6, 6, 14, 6, 8, 9, 10, 12, 11, 15, 13, 18, 19, 20, 21, 22, 23, 24 }; static const ANTLR3_INT32 dfa9_T4[] = { 26, 6, 5, 25, 16, 7, 17, 6, 5, -1, 6, 6, 6, 6, 6, 27, 14, 6, 8, 9, 10, 12, 11, 15, 13, 18, 19, 20, 21, 22, 23, 24 }; static const ANTLR3_INT32 dfa9_T5[] = { 6, 6, 6, 6, 6, 32, 6, 6, 6, -1, 6, 6, 6, 6, 33, 34, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa9_T6[] = { 36, 36, 36, 6, 36, 36, 36, 36, 36, -1, 36, 36, 36, 36, 36, 37, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36 }; static const ANTLR3_INT32 dfa9_T7[] = { 4 }; static const ANTLR3_INT32 dfa9_T8[] = { 6, 6, 39, 6, 48, 38, 49, 6, 39, -1, 6, 6, 6, 6, 6, 6, 46, 6, 40, 41, 42, 44, 43, 47, 45, 50, 51, 52, 53, 54, 55, 56 }; static const ANTLR3_INT32 dfa9_T9[] = { 6, 6, 6, 6, 6, 32, 6, 6, 6, -1, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa9_T10[] = { 1, -1, -1, 2, -1, -1, 1 }; static const ANTLR3_INT32 dfa9_T11[] = { -1 }; static const ANTLR3_INT32 dfa9_T12[] = { 6, 6, 5, 6, 16, 7, 17, 6, 5, -1, 6, 6, 6, 6, 6, 6, 14, 6, 8, 9, 10, 12, 11, 15, 13, 18, 19, 20, 21, 22, 23, 24 }; static const ANTLR3_INT32 dfa9_T13[] = { 59 }; static const ANTLR3_INT32 dfa9_T14[] = { 30 }; static const ANTLR3_INT32 dfa9_T15[] = { 6, 6, 39, 57, 48, 38, 49, 6, 39, -1, 6, 6, 6, 6, 6, 37, 46, 6, 40, 41, 42, 44, 43, 47, 45, 50, 51, 52, 53, 54, 55, 56 }; static const ANTLR3_INT32 dfa9_T16[] = { 6, 6, 6, 6, 6, 35, 6, 6, 6, -1, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa9_transitions[] = { dfa9_T10, dfa9_T7, dfa9_T7, NULL, dfa9_T12, dfa9_T4, NULL, dfa9_T4, dfa9_T3, dfa9_T3, dfa9_T3, dfa9_T3, dfa9_T3, dfa9_T3, dfa9_T3, dfa9_T3, dfa9_T3, dfa9_T3, dfa9_T3, dfa9_T3, dfa9_T3, dfa9_T3, dfa9_T3, dfa9_T3, dfa9_T3, dfa9_T14, dfa9_T2, dfa9_T9, dfa9_T3, dfa9_T3, dfa9_T11, dfa9_T2, dfa9_T5, dfa9_T16, dfa9_T6, dfa9_T1, dfa9_T6, dfa9_T8, dfa9_T15, dfa9_T0, dfa9_T0, dfa9_T0, dfa9_T0, dfa9_T0, dfa9_T0, dfa9_T0, dfa9_T0, dfa9_T0, dfa9_T0, dfa9_T0, dfa9_T0, dfa9_T0, dfa9_T0, dfa9_T0, dfa9_T0, dfa9_T0, dfa9_T0, dfa9_T13, dfa9_T0, dfa9_T11 }; static ANTLR3_INT32 dfa9_sst(pbelle_sdpParser ctx, pANTLR3_BASE_RECOGNIZER recognizer, pANTLR3_INT_STREAM is, pANTLR3_CYCLIC_DFA dfa, ANTLR3_INT32 s) { ANTLR3_INT32 _s; _s = s; switch (s) { case 0: { ANTLR3_UINT32 LA9_59; ANTLR3_MARKER index9_59; LA9_59 = LA(1); index9_59 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(k))) ) { s = 6; } else if ( ((IS_TOKEN(m))) ) { s = 3; } SEEK(index9_59); if ( s>=0 ) { return s; } } break; case 1: { ANTLR3_UINT32 LA9_30; ANTLR3_MARKER index9_30; LA9_30 = LA(1); index9_30 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(k))) ) { s = 6; } else if ( ((IS_TOKEN(a))) ) { s = 3; } SEEK(index9_30); if ( s>=0 ) { return s; } } break; } if (BACKTRACKING > 0) { FAILEDFLAG = ANTLR3_TRUE; return -1; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)"117:26: ( key_field CR LF )?"; EXCEPTION->decisionNum = 9; EXCEPTION->state = _s; return -1; } /* Declare tracking structure for Cyclic DFA 9 */ static ANTLR3_CYCLIC_DFA cdfa9 = { 9, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"117:26: ( key_field CR LF )?", (CDFA_SPECIAL_FUNC) dfa9_sst, antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa9_eot, /* EOT table */ dfa9_eof, /* EOF table */ dfa9_min, /* Minimum tokens for each state */ dfa9_max, /* Maximum tokens for each state */ dfa9_accept, /* Accept table */ dfa9_special, /* Special transition states */ dfa9_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 9 * --------------------- *//** Static dfa state tables for Cyclic dfa: * ()* loopback of 118:26: ( attribute CR LF )* */ static const ANTLR3_INT32 dfa10_eot[8] = { -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa10_eof[8] = { 3, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa10_min[8] = { 6, 11, 11, -1, 6, 4, 4, -1 }; static const ANTLR3_INT32 dfa10_max[8] = { 12, 11, 11, -1, 35, 35, 35, -1 }; static const ANTLR3_INT32 dfa10_accept[8] = { -1, -1, -1, 2, -1, -1, -1, 1 }; static const ANTLR3_INT32 dfa10_special[8] = { -1, -1, -1, -1, -1, -1, -1, -1 }; /** Used when there is no transition table entry for a particular state */ #define dfa10_T_empty NULL static const ANTLR3_INT32 dfa10_T0[] = { 4 }; static const ANTLR3_INT32 dfa10_T1[] = { 5, -1, 7, 6, 7, -1, 5, -1, -1, -1, -1, -1, -1, -1, 7, -1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 }; static const ANTLR3_INT32 dfa10_T2[] = { 7, -1, 5, 7, 7, 6, 7, -1, 5, -1, -1, -1, -1, -1, -1, 3, 7, -1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 }; static const ANTLR3_INT32 dfa10_T3[] = { 1, -1, -1, 2, -1, -1, 1 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa10_transitions[] = { dfa10_T3, dfa10_T0, dfa10_T0, NULL, dfa10_T1, dfa10_T2, dfa10_T2, NULL }; /* Declare tracking structure for Cyclic DFA 10 */ static ANTLR3_CYCLIC_DFA cdfa10 = { 10, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"()* loopback of 118:26: ( attribute CR LF )*", (CDFA_SPECIAL_FUNC) antlr3dfaspecialStateTransition, /* Default special state transition function */ antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa10_eot, /* EOT table */ dfa10_eof, /* EOF table */ dfa10_min, /* Minimum tokens for each state */ dfa10_max, /* Maximum tokens for each state */ dfa10_accept, /* Accept table */ dfa10_special, /* Special transition states */ dfa10_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 10 * --------------------- *//** Static dfa state tables for Cyclic dfa: * 342:1: rtcp_fb_param : ( ( rtcp_fb_app_param )=> rtcp_fb_app_param | ( rtcp_fb_token_param )=> rtcp_fb_token_param ); */ static const ANTLR3_INT32 dfa36_eot[6] = { -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa36_eof[6] = { -1, 4, 4, -1, -1, -1 }; static const ANTLR3_INT32 dfa36_min[6] = { 6, 6, 6, 0, -1, -1 }; static const ANTLR3_INT32 dfa36_max[6] = { 12, 19, 19, 0, -1, -1 }; static const ANTLR3_INT32 dfa36_accept[6] = { -1, -1, -1, -1, 2, 1 }; static const ANTLR3_INT32 dfa36_special[6] = { -1, 0, 1, 2, -1, -1 }; /** Used when there is no transition table entry for a particular state */ #define dfa36_T_empty NULL static const ANTLR3_INT32 dfa36_T0[] = { 1, -1, 2, -1, -1, -1, 1 }; static const ANTLR3_INT32 dfa36_T1[] = { 1, -1, 2, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, 3 }; static const ANTLR3_INT32 dfa36_T2[] = { -1 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa36_transitions[] = { dfa36_T0, dfa36_T1, dfa36_T1, dfa36_T2, NULL, NULL }; static ANTLR3_INT32 dfa36_sst(pbelle_sdpParser ctx, pANTLR3_BASE_RECOGNIZER recognizer, pANTLR3_INT_STREAM is, pANTLR3_CYCLIC_DFA dfa, ANTLR3_INT32 s) { ANTLR3_INT32 _s; _s = s; switch (s) { case 0: { ANTLR3_UINT32 LA36_1; ANTLR3_MARKER index36_1; LA36_1 = LA(1); index36_1 = INDEX(); REWINDLAST(); s = -1; if ( (LA36_1 == SPACE) ) { s = 3; } else if ( (LA36_1 == COMMON_CHAR || LA36_1 == HEX_CHAR) ) { s = 1; } else if ( (LA36_1 == DASH) ) { s = 2; } else if ( (synpred13_belle_sdp(ctx)) && (LA36_1 == EOF) ) { s = 4; } SEEK(index36_1); if ( s>=0 ) { return s; } } break; case 1: { ANTLR3_UINT32 LA36_2; ANTLR3_MARKER index36_2; LA36_2 = LA(1); index36_2 = INDEX(); REWINDLAST(); s = -1; if ( (LA36_2 == SPACE) ) { s = 3; } else if ( (LA36_2 == COMMON_CHAR || LA36_2 == HEX_CHAR) ) { s = 1; } else if ( (LA36_2 == DASH) ) { s = 2; } else if ( (synpred13_belle_sdp(ctx)) && (LA36_2 == EOF) ) { s = 4; } SEEK(index36_2); if ( s>=0 ) { return s; } } break; case 2: { ANTLR3_UINT32 LA36_3; ANTLR3_MARKER index36_3; LA36_3 = LA(1); index36_3 = INDEX(); REWINDLAST(); s = -1; if ( (( (( ((IS_TOKEN(app))) && ((IS_TOKEN(app))) )) && (synpred12_belle_sdp(ctx)) )) ) { s = 5; } else if ( (synpred13_belle_sdp(ctx)) ) { s = 4; } SEEK(index36_3); if ( s>=0 ) { return s; } } break; } if (BACKTRACKING > 0) { FAILEDFLAG = ANTLR3_TRUE; return -1; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)"342:1: rtcp_fb_param : ( ( rtcp_fb_app_param )=> rtcp_fb_app_param | ( rtcp_fb_token_param )=> rtcp_fb_token_param );"; EXCEPTION->decisionNum = 36; EXCEPTION->state = _s; return -1; } /* Declare tracking structure for Cyclic DFA 36 */ static ANTLR3_CYCLIC_DFA cdfa36 = { 36, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"342:1: rtcp_fb_param : ( ( rtcp_fb_app_param )=> rtcp_fb_app_param | ( rtcp_fb_token_param )=> rtcp_fb_token_param );", (CDFA_SPECIAL_FUNC) dfa36_sst, antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa36_eot, /* EOT table */ dfa36_eof, /* EOF table */ dfa36_min, /* Minimum tokens for each state */ dfa36_max, /* Maximum tokens for each state */ dfa36_accept, /* Accept table */ dfa36_special, /* Special transition states */ dfa36_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 36 * --------------------- *//** Static dfa state tables for Cyclic dfa: * 407:21: ( info CR LF )? */ static const ANTLR3_INT32 dfa43_eot[87] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa43_eof[87] = { 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa43_min[87] = { 6, 11, 11, -1, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 0, 4, 4, 4, 0, 4, 4, 4, 4, -1, 4, 4, 4, 4, 13, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 0 }; static const ANTLR3_INT32 dfa43_max[87] = { 12, 11, 11, -1, 35, 35, 13, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 13, 35, 35, 0, 35, 35, 35, 0, 35, 35, 35, 35, -1, 35, 35, 35, 35, 13, 13, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 0, 0, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 13, 35, 0 }; static const ANTLR3_INT32 dfa43_accept[87] = { -1, -1, -1, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa43_special[87] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1 }; /** Used when there is no transition table entry for a particular state */ #define dfa43_T_empty NULL static const ANTLR3_INT32 dfa43_T0[] = { 25, 25, 65, 84, 74, 85, 75, 25, 65, -1, 25, 25, 25, 25, 25, 58, 72, 25, 66, 67, 68, 70, 69, 73, 71, 76, 77, 78, 79, 80, 81, 82 }; static const ANTLR3_INT32 dfa43_T1[] = { 86 }; static const ANTLR3_INT32 dfa43_T2[] = { 25, 25, 65, 6, 74, 64, 75, 25, 65, -1, 25, 25, 25, 25, 25, 25, 72, 25, 66, 67, 68, 70, 69, 73, 71, 76, 77, 78, 79, 80, 81, 82 }; static const ANTLR3_INT32 dfa43_T3[] = { 54, 57, 51, 44, 55, 52, 53, 57, 51, -1, 57, 57, 57, 57, 56, 58, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57 }; static const ANTLR3_INT32 dfa43_T4[] = { 30, 25, 31, 26, 16, 32, 17, 25, 31, -1, 25, 25, 25, 25, 25, 25, 14, 25, 8, 9, 10, 12, 11, 15, 13, 18, 19, 20, 21, 22, 23, 24 }; static const ANTLR3_INT32 dfa43_T5[] = { 25, 25, 34, 6, 25, 40, 25, 25, 34, -1, 25, 25, 25, 25, 25, 39, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25 }; static const ANTLR3_INT32 dfa43_T6[] = { 48, 25, 45, 44, 49, 46, 47, 25, 45, -1, 25, 25, 25, 25, 50, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25 }; static const ANTLR3_INT32 dfa43_T7[] = { 29 }; static const ANTLR3_INT32 dfa43_T8[] = { 1, -1, -1, 2, -1, -1, 1 }; static const ANTLR3_INT32 dfa43_T9[] = { 37, 37, 37, 26, 37, 36, 37, 37, 37, -1, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa43_T10[] = { 61 }; static const ANTLR3_INT32 dfa43_T11[] = { 25, 25, 25, 6, 25, 62, 25, 25, 25, -1, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25 }; static const ANTLR3_INT32 dfa43_T12[] = { 4 }; static const ANTLR3_INT32 dfa43_T13[] = { 25, 25, 65, 84, 74, 64, 75, 25, 65, -1, 25, 25, 25, 25, 25, 58, 72, 25, 66, 67, 68, 70, 69, 73, 71, 76, 77, 78, 79, 80, 81, 82 }; static const ANTLR3_INT32 dfa43_T14[] = { -1 }; static const ANTLR3_INT32 dfa43_T15[] = { 57, 57, 57, 6, 57, 57, 57, 57, 57, -1, 57, 57, 57, 57, 57, 58, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57 }; static const ANTLR3_INT32 dfa43_T16[] = { 37, 37, 37, 26, 37, 37, 37, 37, 37, -1, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa43_T17[] = { 57, 57, 57, 6, 57, 63, 57, 57, 57, -1, 57, 57, 57, 57, 57, 58, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57 }; static const ANTLR3_INT32 dfa43_T18[] = { 25, 25, 25, 6, 25, 59, 25, 25, 25, -1, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25 }; static const ANTLR3_INT32 dfa43_T19[] = { 25, 25, 25, 44, 25, 62, 25, 25, 25, -1, 25, 25, 25, 25, 50, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25 }; static const ANTLR3_INT32 dfa43_T20[] = { 33 }; static const ANTLR3_INT32 dfa43_T21[] = { 25, 25, 25, 6, 25, 59, 25, 25, 25, -1, 25, 25, 25, 25, 25, 83, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25 }; static const ANTLR3_INT32 dfa43_T22[] = { 57, 57, 57, 44, 57, 63, 57, 57, 57, -1, 57, 57, 57, 57, 56, 58, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57 }; static const ANTLR3_INT32 dfa43_T23[] = { 28, 25, 5, 26, 16, 7, 17, 25, 5, -1, 25, 25, 25, 25, 25, 27, 14, 25, 8, 9, 10, 12, 11, 15, 13, 18, 19, 20, 21, 22, 23, 24 }; static const ANTLR3_INT32 dfa43_T24[] = { 25, 25, 34, 6, 25, 35, 25, 25, 34, -1, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25 }; static const ANTLR3_INT32 dfa43_T25[] = { 60 }; static const ANTLR3_INT32 dfa43_T26[] = { 37, 37, 37, 43, 37, 36, 37, 37, 37, -1, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa43_T27[] = { 25, 25, 5, 6, 16, 7, 17, 25, 5, -1, 25, 25, 25, 25, 25, 25, 14, 25, 8, 9, 10, 12, 11, 15, 13, 18, 19, 20, 21, 22, 23, 24 }; static const ANTLR3_INT32 dfa43_T28[] = { 25, 25, 25, 6, 25, 25, 25, 25, 25, -1, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25 }; static const ANTLR3_INT32 dfa43_T29[] = { 25, 25, 34, 6, 25, 35, 25, 25, 34, -1, 25, 25, 25, 25, 42, 41, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa43_transitions[] = { dfa43_T8, dfa43_T12, dfa43_T12, NULL, dfa43_T27, dfa43_T23, dfa43_T7, dfa43_T23, dfa43_T4, dfa43_T4, dfa43_T4, dfa43_T4, dfa43_T4, dfa43_T4, dfa43_T4, dfa43_T4, dfa43_T4, dfa43_T4, dfa43_T4, dfa43_T4, dfa43_T4, dfa43_T4, dfa43_T4, dfa43_T4, dfa43_T4, dfa43_T28, dfa43_T20, dfa43_T24, dfa43_T9, dfa43_T14, dfa43_T16, dfa43_T4, dfa43_T4, dfa43_T14, dfa43_T5, dfa43_T29, dfa43_T26, dfa43_T16, NULL, dfa43_T6, dfa43_T5, dfa43_T3, dfa43_T18, dfa43_T25, dfa43_T10, dfa43_T6, dfa43_T6, dfa43_T6, dfa43_T6, dfa43_T6, dfa43_T11, dfa43_T3, dfa43_T3, dfa43_T3, dfa43_T3, dfa43_T3, dfa43_T17, dfa43_T15, dfa43_T2, dfa43_T21, dfa43_T14, dfa43_T14, dfa43_T19, dfa43_T22, dfa43_T13, dfa43_T0, dfa43_T0, dfa43_T0, dfa43_T0, dfa43_T0, dfa43_T0, dfa43_T0, dfa43_T0, dfa43_T0, dfa43_T0, dfa43_T0, dfa43_T0, dfa43_T0, dfa43_T0, dfa43_T0, dfa43_T0, dfa43_T0, dfa43_T0, dfa43_T15, dfa43_T1, dfa43_T0, dfa43_T14 }; static ANTLR3_INT32 dfa43_sst(pbelle_sdpParser ctx, pANTLR3_BASE_RECOGNIZER recognizer, pANTLR3_INT_STREAM is, pANTLR3_CYCLIC_DFA dfa, ANTLR3_INT32 s) { ANTLR3_INT32 _s; _s = s; switch (s) { case 0: { ANTLR3_UINT32 LA43_29; ANTLR3_MARKER index43_29; LA43_29 = LA(1); index43_29 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(i))) ) { s = 38; } else if ( ((IS_TOKEN(k))) ) { s = 3; } SEEK(index43_29); if ( s>=0 ) { return s; } } break; case 1: { ANTLR3_UINT32 LA43_86; ANTLR3_MARKER index43_86; LA43_86 = LA(1); index43_86 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(i))) ) { s = 38; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index43_86); if ( s>=0 ) { return s; } } break; case 2: { ANTLR3_UINT32 LA43_61; ANTLR3_MARKER index43_61; LA43_61 = LA(1); index43_61 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(i))) ) { s = 38; } else if ( ((((IS_TOKEN(k)))||((IS_TOKEN(c))))) ) { s = 3; } SEEK(index43_61); if ( s>=0 ) { return s; } } break; case 3: { ANTLR3_UINT32 LA43_33; ANTLR3_MARKER index43_33; LA43_33 = LA(1); index43_33 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(i))) ) { s = 38; } else if ( ((((IS_TOKEN(k)))||((IS_TOKEN(a))))) ) { s = 3; } SEEK(index43_33); if ( s>=0 ) { return s; } } break; case 4: { ANTLR3_UINT32 LA43_60; ANTLR3_MARKER index43_60; LA43_60 = LA(1); index43_60 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(i))) ) { s = 38; } else if ( ((((IS_TOKEN(k)))||((IS_TOKEN(a)))||((IS_TOKEN(b))))) ) { s = 3; } SEEK(index43_60); if ( s>=0 ) { return s; } } break; } if (BACKTRACKING > 0) { FAILEDFLAG = ANTLR3_TRUE; return -1; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)"407:21: ( info CR LF )?"; EXCEPTION->decisionNum = 43; EXCEPTION->state = _s; return -1; } /* Declare tracking structure for Cyclic DFA 43 */ static ANTLR3_CYCLIC_DFA cdfa43 = { 43, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"407:21: ( info CR LF )?", (CDFA_SPECIAL_FUNC) dfa43_sst, antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa43_eot, /* EOT table */ dfa43_eof, /* EOF table */ dfa43_min, /* Minimum tokens for each state */ dfa43_max, /* Maximum tokens for each state */ dfa43_accept, /* Accept table */ dfa43_special, /* Special transition states */ dfa43_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 43 * --------------------- *//** Static dfa state tables for Cyclic dfa: * 408:22: ( connection CR LF )? */ static const ANTLR3_INT32 dfa44_eot[30] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa44_eof[30] = { 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa44_min[30] = { 6, 11, 11, -1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 0, 4, -1 }; static const ANTLR3_INT32 dfa44_max[30] = { 12, 11, 11, -1, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 13, 35, 35, 35, 35, 35, 35, 35, 0, 35, -1 }; static const ANTLR3_INT32 dfa44_accept[30] = { -1, -1, -1, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1 }; static const ANTLR3_INT32 dfa44_special[30] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1 }; /** Used when there is no transition table entry for a particular state */ #define dfa44_T_empty NULL static const ANTLR3_INT32 dfa44_T0[] = { 16, 3, 13, 19, 17, 14, 15, 3, 13, -1, 3, 3, 3, 3, 18, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa44_T1[] = { 23, 3, 20, 19, 24, 21, 22, 3, 20, -1, 3, 3, 3, 3, 25, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa44_T2[] = { 3, 3, 3, 3, 3, 26, 3, 3, 3, -1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa44_T3[] = { 4 }; static const ANTLR3_INT32 dfa44_T4[] = { 3, 3, 3, 19, 3, 26, 3, 3, 3, -1, 3, 3, 3, 3, 18, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa44_T5[] = { 3, 3, 8, 3, 3, 11, 3, 3, 8, -1, 3, 3, 3, 3, 3, 10, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa44_T6[] = { -1 }; static const ANTLR3_INT32 dfa44_T7[] = { 3, 3, 3, 3, 3, 28, 3, 3, 3, -1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa44_T8[] = { 27 }; static const ANTLR3_INT32 dfa44_T9[] = { 3, 3, 8, 3, 3, 9, 3, 3, 8, -1, 3, 3, 3, 3, 3, 12, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa44_T10[] = { 3, 3, 3, 19, 3, 28, 3, 3, 3, -1, 3, 3, 3, 3, 25, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa44_T11[] = { 3, 3, 5, 3, 3, 6, 3, 3, 5, -1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa44_T12[] = { 3, 3, 5, 3, 3, 6, 3, 3, 5, -1, 3, 3, 3, 3, 3, 7, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa44_T13[] = { 3, 3, 8, 3, 3, 9, 3, 3, 8, -1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa44_T14[] = { 1, -1, -1, 2, -1, -1, 1 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa44_transitions[] = { dfa44_T14, dfa44_T3, dfa44_T3, NULL, dfa44_T11, dfa44_T12, dfa44_T12, dfa44_T13, dfa44_T5, dfa44_T9, dfa44_T0, dfa44_T5, dfa44_T1, dfa44_T0, dfa44_T0, dfa44_T0, dfa44_T0, dfa44_T0, dfa44_T2, dfa44_T8, dfa44_T1, dfa44_T1, dfa44_T1, dfa44_T1, dfa44_T1, dfa44_T7, dfa44_T4, dfa44_T6, dfa44_T10, NULL }; static ANTLR3_INT32 dfa44_sst(pbelle_sdpParser ctx, pANTLR3_BASE_RECOGNIZER recognizer, pANTLR3_INT_STREAM is, pANTLR3_CYCLIC_DFA dfa, ANTLR3_INT32 s) { ANTLR3_INT32 _s; _s = s; switch (s) { case 0: { ANTLR3_UINT32 LA44_27; ANTLR3_MARKER index44_27; LA44_27 = LA(1); index44_27 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(c))) ) { s = 29; } else if ( ((IS_TOKEN(k))) ) { s = 3; } SEEK(index44_27); if ( s>=0 ) { return s; } } break; } if (BACKTRACKING > 0) { FAILEDFLAG = ANTLR3_TRUE; return -1; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)"408:22: ( connection CR LF )?"; EXCEPTION->decisionNum = 44; EXCEPTION->state = _s; return -1; } /* Declare tracking structure for Cyclic DFA 44 */ static ANTLR3_CYCLIC_DFA cdfa44 = { 44, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"408:22: ( connection CR LF )?", (CDFA_SPECIAL_FUNC) dfa44_sst, antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa44_eot, /* EOT table */ dfa44_eof, /* EOF table */ dfa44_min, /* Minimum tokens for each state */ dfa44_max, /* Maximum tokens for each state */ dfa44_accept, /* Accept table */ dfa44_special, /* Special transition states */ dfa44_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 44 * --------------------- *//** Static dfa state tables for Cyclic dfa: * ()* loopback of 409:22: ( bandwidth CR LF )* */ static const ANTLR3_INT32 dfa45_eot[12] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa45_eof[12] = { 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa45_min[12] = { 6, 11, 11, -1, 4, 4, 4, 4, 4, 13, 0, -1 }; static const ANTLR3_INT32 dfa45_max[12] = { 12, 11, 11, -1, 35, 35, 35, 35, 35, 13, 0, -1 }; static const ANTLR3_INT32 dfa45_accept[12] = { -1, -1, -1, 2, -1, -1, -1, -1, -1, -1, -1, 1 }; static const ANTLR3_INT32 dfa45_special[12] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1 }; /** Used when there is no transition table entry for a particular state */ #define dfa45_T_empty NULL static const ANTLR3_INT32 dfa45_T0[] = { 4 }; static const ANTLR3_INT32 dfa45_T1[] = { 1, -1, -1, 2, -1, -1, 1 }; static const ANTLR3_INT32 dfa45_T2[] = { 7, 3, 5, 3, 3, 6, 3, 3, 5, -1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa45_T3[] = { 3, 3, 3, 9, 3, 8, 3, 3, 3, -1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa45_T4[] = { 3, 3, 5, 3, 3, 6, 3, 3, 5, -1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa45_T5[] = { 10 }; static const ANTLR3_INT32 dfa45_T6[] = { -1 }; static const ANTLR3_INT32 dfa45_T7[] = { 3, 3, 3, 3, 3, 8, 3, 3, 3, -1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa45_transitions[] = { dfa45_T1, dfa45_T0, dfa45_T0, NULL, dfa45_T4, dfa45_T2, dfa45_T2, dfa45_T7, dfa45_T3, dfa45_T5, dfa45_T6, NULL }; static ANTLR3_INT32 dfa45_sst(pbelle_sdpParser ctx, pANTLR3_BASE_RECOGNIZER recognizer, pANTLR3_INT_STREAM is, pANTLR3_CYCLIC_DFA dfa, ANTLR3_INT32 s) { ANTLR3_INT32 _s; _s = s; switch (s) { case 0: { ANTLR3_UINT32 LA45_10; ANTLR3_MARKER index45_10; LA45_10 = LA(1); index45_10 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(b))) ) { s = 11; } else if ( ((((IS_TOKEN(k)))||((IS_TOKEN(a))))) ) { s = 3; } SEEK(index45_10); if ( s>=0 ) { return s; } } break; } if (BACKTRACKING > 0) { FAILEDFLAG = ANTLR3_TRUE; return -1; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)"()* loopback of 409:22: ( bandwidth CR LF )*"; EXCEPTION->decisionNum = 45; EXCEPTION->state = _s; return -1; } /* Declare tracking structure for Cyclic DFA 45 */ static ANTLR3_CYCLIC_DFA cdfa45 = { 45, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"()* loopback of 409:22: ( bandwidth CR LF )*", (CDFA_SPECIAL_FUNC) dfa45_sst, antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa45_eot, /* EOT table */ dfa45_eof, /* EOF table */ dfa45_min, /* Minimum tokens for each state */ dfa45_max, /* Maximum tokens for each state */ dfa45_accept, /* Accept table */ dfa45_special, /* Special transition states */ dfa45_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 45 * --------------------- *//** Static dfa state tables for Cyclic dfa: * 410:22: ( key_field CR LF )? */ static const ANTLR3_INT32 dfa46_eot[60] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa46_eof[60] = { 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa46_min[60] = { 6, 11, 11, -1, 4, 4, -1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 0 }; static const ANTLR3_INT32 dfa46_max[60] = { 12, 11, 11, -1, 35, 35, -1, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 13, 35, 35, 35, 35, 0, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 13, 35, 0 }; static const ANTLR3_INT32 dfa46_accept[60] = { -1, -1, -1, 2, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa46_special[60] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0 }; /** Used when there is no transition table entry for a particular state */ #define dfa46_T_empty NULL static const ANTLR3_INT32 dfa46_T0[] = { 6, 6, 6, 6, 6, 32, 6, 6, 6, -1, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa46_T1[] = { 26, 6, 28, 25, 16, 29, 17, 6, 28, -1, 6, 6, 6, 6, 6, 6, 14, 6, 8, 9, 10, 12, 11, 15, 13, 18, 19, 20, 21, 22, 23, 24 }; static const ANTLR3_INT32 dfa46_T2[] = { 6, 6, 5, 6, 16, 7, 17, 6, 5, -1, 6, 6, 6, 6, 6, 6, 14, 6, 8, 9, 10, 12, 11, 15, 13, 18, 19, 20, 21, 22, 23, 24 }; static const ANTLR3_INT32 dfa46_T3[] = { 59 }; static const ANTLR3_INT32 dfa46_T4[] = { 1, -1, -1, 2, -1, -1, 1 }; static const ANTLR3_INT32 dfa46_T5[] = { -1 }; static const ANTLR3_INT32 dfa46_T6[] = { 6, 6, 39, 57, 48, 38, 49, 6, 39, -1, 6, 6, 6, 6, 6, 37, 46, 6, 40, 41, 42, 44, 43, 47, 45, 50, 51, 52, 53, 54, 55, 56 }; static const ANTLR3_INT32 dfa46_T7[] = { 6, 6, 39, 57, 48, 58, 49, 6, 39, -1, 6, 6, 6, 6, 6, 37, 46, 6, 40, 41, 42, 44, 43, 47, 45, 50, 51, 52, 53, 54, 55, 56 }; static const ANTLR3_INT32 dfa46_T8[] = { 36, 36, 36, 6, 36, 36, 36, 36, 36, -1, 36, 36, 36, 36, 36, 37, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36 }; static const ANTLR3_INT32 dfa46_T9[] = { 31, 31, 31, 25, 31, 31, 31, 31, 31, -1, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31 }; static const ANTLR3_INT32 dfa46_T10[] = { 6, 6, 6, 6, 6, 35, 6, 6, 6, -1, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa46_T11[] = { 26, 6, 5, 25, 16, 7, 17, 6, 5, -1, 6, 6, 6, 6, 6, 27, 14, 6, 8, 9, 10, 12, 11, 15, 13, 18, 19, 20, 21, 22, 23, 24 }; static const ANTLR3_INT32 dfa46_T12[] = { 6, 6, 6, 6, 6, 35, 6, 6, 6, -1, 6, 6, 6, 6, 6, 34, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa46_T13[] = { 4 }; static const ANTLR3_INT32 dfa46_T14[] = { 30 }; static const ANTLR3_INT32 dfa46_T15[] = { 6, 6, 6, 6, 6, 32, 6, 6, 6, -1, 6, 6, 6, 6, 33, 34, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa46_T16[] = { 6, 6, 39, 6, 48, 38, 49, 6, 39, -1, 6, 6, 6, 6, 6, 6, 46, 6, 40, 41, 42, 44, 43, 47, 45, 50, 51, 52, 53, 54, 55, 56 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa46_transitions[] = { dfa46_T4, dfa46_T13, dfa46_T13, NULL, dfa46_T2, dfa46_T11, NULL, dfa46_T11, dfa46_T1, dfa46_T1, dfa46_T1, dfa46_T1, dfa46_T1, dfa46_T1, dfa46_T1, dfa46_T1, dfa46_T1, dfa46_T1, dfa46_T1, dfa46_T1, dfa46_T1, dfa46_T1, dfa46_T1, dfa46_T1, dfa46_T1, dfa46_T14, dfa46_T9, dfa46_T0, dfa46_T1, dfa46_T1, dfa46_T5, dfa46_T9, dfa46_T15, dfa46_T10, dfa46_T8, dfa46_T12, dfa46_T8, dfa46_T16, dfa46_T6, dfa46_T7, dfa46_T7, dfa46_T7, dfa46_T7, dfa46_T7, dfa46_T7, dfa46_T7, dfa46_T7, dfa46_T7, dfa46_T7, dfa46_T7, dfa46_T7, dfa46_T7, dfa46_T7, dfa46_T7, dfa46_T7, dfa46_T7, dfa46_T7, dfa46_T3, dfa46_T7, dfa46_T5 }; static ANTLR3_INT32 dfa46_sst(pbelle_sdpParser ctx, pANTLR3_BASE_RECOGNIZER recognizer, pANTLR3_INT_STREAM is, pANTLR3_CYCLIC_DFA dfa, ANTLR3_INT32 s) { ANTLR3_INT32 _s; _s = s; switch (s) { case 0: { ANTLR3_UINT32 LA46_59; ANTLR3_MARKER index46_59; LA46_59 = LA(1); index46_59 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(k))) ) { s = 6; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index46_59); if ( s>=0 ) { return s; } } break; case 1: { ANTLR3_UINT32 LA46_30; ANTLR3_MARKER index46_30; LA46_30 = LA(1); index46_30 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(k))) ) { s = 6; } else if ( ((IS_TOKEN(a))) ) { s = 3; } SEEK(index46_30); if ( s>=0 ) { return s; } } break; } if (BACKTRACKING > 0) { FAILEDFLAG = ANTLR3_TRUE; return -1; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)"410:22: ( key_field CR LF )?"; EXCEPTION->decisionNum = 46; EXCEPTION->state = _s; return -1; } /* Declare tracking structure for Cyclic DFA 46 */ static ANTLR3_CYCLIC_DFA cdfa46 = { 46, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"410:22: ( key_field CR LF )?", (CDFA_SPECIAL_FUNC) dfa46_sst, antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa46_eot, /* EOT table */ dfa46_eof, /* EOF table */ dfa46_min, /* Minimum tokens for each state */ dfa46_max, /* Maximum tokens for each state */ dfa46_accept, /* Accept table */ dfa46_special, /* Special transition states */ dfa46_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 46 * --------------------- *//** Static dfa state tables for Cyclic dfa: * ()* loopback of 411:22: ( attribute CR LF )* */ static const ANTLR3_INT32 dfa47_eot[8] = { -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa47_eof[8] = { 1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa47_min[8] = { 6, -1, 11, 11, 6, 4, 4, -1 }; static const ANTLR3_INT32 dfa47_max[8] = { 12, -1, 11, 11, 35, 35, 35, -1 }; static const ANTLR3_INT32 dfa47_accept[8] = { -1, 2, -1, -1, -1, -1, -1, 1 }; static const ANTLR3_INT32 dfa47_special[8] = { -1, -1, -1, -1, -1, -1, -1, -1 }; /** Used when there is no transition table entry for a particular state */ #define dfa47_T_empty NULL static const ANTLR3_INT32 dfa47_T0[] = { 2, -1, -1, 3, -1, -1, 2 }; static const ANTLR3_INT32 dfa47_T1[] = { 4 }; static const ANTLR3_INT32 dfa47_T2[] = { 7, -1, 5, 7, 7, 6, 7, -1, 5, -1, -1, -1, -1, -1, -1, 1, 7, -1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 }; static const ANTLR3_INT32 dfa47_T3[] = { 5, -1, 7, 6, 7, -1, 5, -1, -1, -1, -1, -1, -1, -1, 7, -1, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa47_transitions[] = { dfa47_T0, NULL, dfa47_T1, dfa47_T1, dfa47_T3, dfa47_T2, dfa47_T2, NULL }; /* Declare tracking structure for Cyclic DFA 47 */ static ANTLR3_CYCLIC_DFA cdfa47 = { 47, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"()* loopback of 411:22: ( attribute CR LF )*", (CDFA_SPECIAL_FUNC) antlr3dfaspecialStateTransition, /* Default special state transition function */ antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa47_eot, /* EOT table */ dfa47_eof, /* EOF table */ dfa47_min, /* Minimum tokens for each state */ dfa47_max, /* Maximum tokens for each state */ dfa47_accept, /* Accept table */ dfa47_special, /* Special transition states */ dfa47_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 47 * --------------------- *//** Static dfa state tables for Cyclic dfa: * ()* loopback of 537:17: ( domainlabel DOT )* */ static const ANTLR3_INT32 dfa71_eot[8] = { -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa71_eof[8] = { -1, 4, -1, 4, -1, 4, 4, -1 }; static const ANTLR3_INT32 dfa71_min[8] = { 6, 6, -1, 6, -1, 6, 6, 6 }; static const ANTLR3_INT32 dfa71_max[8] = { 12, 12, -1, 12, -1, 12, 12, 12 }; static const ANTLR3_INT32 dfa71_accept[8] = { -1, -1, 1, -1, 2, -1, -1, -1 }; static const ANTLR3_INT32 dfa71_special[8] = { -1, -1, -1, -1, -1, -1, -1, -1 }; /** Used when there is no transition table entry for a particular state */ #define dfa71_T_empty NULL static const ANTLR3_INT32 dfa71_T0[] = { 5, -1, 7, 6, 3, -1, 5 }; static const ANTLR3_INT32 dfa71_T1[] = { 2, -1, -1, 2, -1, -1, 2 }; static const ANTLR3_INT32 dfa71_T2[] = { 5, -1, 7, 6, -1, -1, 5 }; static const ANTLR3_INT32 dfa71_T3[] = { 1, -1, -1, 2, -1, -1, 1 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa71_transitions[] = { dfa71_T3, dfa71_T0, NULL, dfa71_T1, NULL, dfa71_T0, dfa71_T0, dfa71_T2 }; /* Declare tracking structure for Cyclic DFA 71 */ static ANTLR3_CYCLIC_DFA cdfa71 = { 71, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"()* loopback of 537:17: ( domainlabel DOT )*", (CDFA_SPECIAL_FUNC) antlr3dfaspecialStateTransition, /* Default special state transition function */ antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa71_eot, /* EOT table */ dfa71_eof, /* EOF table */ dfa71_min, /* Minimum tokens for each state */ dfa71_max, /* Maximum tokens for each state */ dfa71_accept, /* Accept table */ dfa71_special, /* Special transition states */ dfa71_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 71 * --------------------- *//** Static dfa state tables for Cyclic dfa: * 552:1: hexpart : ( hexseq | hexseq COLON COLON ( hexseq )? | COLON COLON ( hexseq )? ); */ static const ANTLR3_INT32 dfa81_eot[8] = { -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa81_eof[8] = { -1, 4, -1, -1, -1, -1, 4, 4 }; static const ANTLR3_INT32 dfa81_min[8] = { 4, 4, -1, 4, -1, -1, 4, 4 }; static const ANTLR3_INT32 dfa81_max[8] = { 12, 12, -1, 12, -1, -1, 12, 12 }; static const ANTLR3_INT32 dfa81_accept[8] = { -1, -1, 3, -1, 1, 2, -1, -1 }; static const ANTLR3_INT32 dfa81_special[8] = { -1, -1, -1, -1, -1, -1, -1, -1 }; /** Used when there is no transition table entry for a particular state */ #define dfa81_T_empty NULL static const ANTLR3_INT32 dfa81_T0[] = { 3, -1, -1, -1, -1, 1, -1, -1, 1 }; static const ANTLR3_INT32 dfa81_T1[] = { 3, -1, -1, -1, -1, 6, 4, -1, 7 }; static const ANTLR3_INT32 dfa81_T2[] = { 3, -1, -1, -1, -1, 7, -1, -1, 7 }; static const ANTLR3_INT32 dfa81_T3[] = { 5, -1, -1, -1, -1, 6, -1, -1, 7 }; static const ANTLR3_INT32 dfa81_T4[] = { 2, -1, -1, -1, -1, 1, -1, -1, 1 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa81_transitions[] = { dfa81_T4, dfa81_T0, NULL, dfa81_T3, NULL, NULL, dfa81_T1, dfa81_T2 }; /* Declare tracking structure for Cyclic DFA 81 */ static ANTLR3_CYCLIC_DFA cdfa81 = { 81, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"552:1: hexpart : ( hexseq | hexseq COLON COLON ( hexseq )? | COLON COLON ( hexseq )? );", (CDFA_SPECIAL_FUNC) antlr3dfaspecialStateTransition, /* Default special state transition function */ antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa81_eot, /* EOT table */ dfa81_eof, /* EOF table */ dfa81_min, /* Minimum tokens for each state */ dfa81_max, /* Maximum tokens for each state */ dfa81_accept, /* Accept table */ dfa81_special, /* Special transition states */ dfa81_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 81 * --------------------- *//** Static dfa state tables for Cyclic dfa: * ()* loopback of 553:24: ( COLON hex4 )* */ static const ANTLR3_INT32 dfa82_eot[5] = { -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa82_eof[5] = { 2, -1, -1, 4, -1 }; static const ANTLR3_INT32 dfa82_min[5] = { 4, 4, -1, 4, -1 }; static const ANTLR3_INT32 dfa82_max[5] = { 4, 12, -1, 12, -1 }; static const ANTLR3_INT32 dfa82_accept[5] = { -1, -1, 2, -1, 1 }; static const ANTLR3_INT32 dfa82_special[5] = { -1, -1, -1, -1, -1 }; /** Used when there is no transition table entry for a particular state */ #define dfa82_T_empty NULL static const ANTLR3_INT32 dfa82_T0[] = { 4, -1, -1, -1, -1, 3, 2, -1, 4 }; static const ANTLR3_INT32 dfa82_T1[] = { 1 }; static const ANTLR3_INT32 dfa82_T2[] = { 2, -1, -1, -1, -1, 3, -1, -1, 4 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa82_transitions[] = { dfa82_T1, dfa82_T2, NULL, dfa82_T0, NULL }; /* Declare tracking structure for Cyclic DFA 82 */ static ANTLR3_CYCLIC_DFA cdfa82 = { 82, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"()* loopback of 553:24: ( COLON hex4 )*", (CDFA_SPECIAL_FUNC) antlr3dfaspecialStateTransition, /* Default special state transition function */ antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa82_eot, /* EOT table */ dfa82_eof, /* EOF table */ dfa82_min, /* Minimum tokens for each state */ dfa82_max, /* Maximum tokens for each state */ dfa82_accept, /* Accept table */ dfa82_special, /* Special transition states */ dfa82_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 82 * --------------------- */ /* ========================================================================= * End of DFA tables for the parser */ /* ============================================== * Parsing rules */ /** * $ANTLR start session_description * ../grammars/belle_sdp.g:102:1: session_description returns [belle_sdp_session_description_t* ret] : version CR LF origin CR LF session_name CR LF ( info CR LF )? ( uri_field CR LF )? ( email CR LF )* ( phone_field )* ( connection CR LF )? ( bandwidth CR LF )* time_field CR LF ( repeat_time CR LF )* ( zone_adjustments CR LF )? ( key_field CR LF )? ( attribute CR LF )* ( media_description )* ; */ static belle_sdpParser_session_description_return session_description(pbelle_sdpParser ctx) { belle_sdpParser_session_description_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN CR2; pANTLR3_COMMON_TOKEN LF3; pANTLR3_COMMON_TOKEN CR5; pANTLR3_COMMON_TOKEN LF6; pANTLR3_COMMON_TOKEN CR8; pANTLR3_COMMON_TOKEN LF9; pANTLR3_COMMON_TOKEN CR11; pANTLR3_COMMON_TOKEN LF12; pANTLR3_COMMON_TOKEN CR14; pANTLR3_COMMON_TOKEN LF15; pANTLR3_COMMON_TOKEN CR17; pANTLR3_COMMON_TOKEN LF18; pANTLR3_COMMON_TOKEN CR21; pANTLR3_COMMON_TOKEN LF22; pANTLR3_COMMON_TOKEN CR24; pANTLR3_COMMON_TOKEN LF25; pANTLR3_COMMON_TOKEN CR27; pANTLR3_COMMON_TOKEN LF28; pANTLR3_COMMON_TOKEN CR30; pANTLR3_COMMON_TOKEN LF31; pANTLR3_COMMON_TOKEN CR33; pANTLR3_COMMON_TOKEN LF34; pANTLR3_COMMON_TOKEN CR36; pANTLR3_COMMON_TOKEN LF37; pANTLR3_COMMON_TOKEN CR39; pANTLR3_COMMON_TOKEN LF40; belle_sdpParser_version_return version1; #undef RETURN_TYPE_version1 #define RETURN_TYPE_version1 belle_sdpParser_version_return belle_sdpParser_origin_return origin4; #undef RETURN_TYPE_origin4 #define RETURN_TYPE_origin4 belle_sdpParser_origin_return belle_sdpParser_session_name_return session_name7; #undef RETURN_TYPE_session_name7 #define RETURN_TYPE_session_name7 belle_sdpParser_session_name_return belle_sdpParser_info_return info10; #undef RETURN_TYPE_info10 #define RETURN_TYPE_info10 belle_sdpParser_info_return belle_sdpParser_uri_field_return uri_field13; #undef RETURN_TYPE_uri_field13 #define RETURN_TYPE_uri_field13 belle_sdpParser_uri_field_return belle_sdpParser_email_return email16; #undef RETURN_TYPE_email16 #define RETURN_TYPE_email16 belle_sdpParser_email_return belle_sdpParser_phone_field_return phone_field19; #undef RETURN_TYPE_phone_field19 #define RETURN_TYPE_phone_field19 belle_sdpParser_phone_field_return belle_sdpParser_connection_return connection20; #undef RETURN_TYPE_connection20 #define RETURN_TYPE_connection20 belle_sdpParser_connection_return belle_sdpParser_bandwidth_return bandwidth23; #undef RETURN_TYPE_bandwidth23 #define RETURN_TYPE_bandwidth23 belle_sdpParser_bandwidth_return belle_sdpParser_time_field_return time_field26; #undef RETURN_TYPE_time_field26 #define RETURN_TYPE_time_field26 belle_sdpParser_time_field_return belle_sdpParser_repeat_time_return repeat_time29; #undef RETURN_TYPE_repeat_time29 #define RETURN_TYPE_repeat_time29 belle_sdpParser_repeat_time_return belle_sdpParser_zone_adjustments_return zone_adjustments32; #undef RETURN_TYPE_zone_adjustments32 #define RETURN_TYPE_zone_adjustments32 belle_sdpParser_zone_adjustments_return belle_sdpParser_key_field_return key_field35; #undef RETURN_TYPE_key_field35 #define RETURN_TYPE_key_field35 belle_sdpParser_key_field_return belle_sdpParser_attribute_return attribute38; #undef RETURN_TYPE_attribute38 #define RETURN_TYPE_attribute38 belle_sdpParser_attribute_return belle_sdpParser_media_description_return media_description41; #undef RETURN_TYPE_media_description41 #define RETURN_TYPE_media_description41 belle_sdpParser_media_description_return pANTLR3_BASE_TREE CR2_tree; pANTLR3_BASE_TREE LF3_tree; pANTLR3_BASE_TREE CR5_tree; pANTLR3_BASE_TREE LF6_tree; pANTLR3_BASE_TREE CR8_tree; pANTLR3_BASE_TREE LF9_tree; pANTLR3_BASE_TREE CR11_tree; pANTLR3_BASE_TREE LF12_tree; pANTLR3_BASE_TREE CR14_tree; pANTLR3_BASE_TREE LF15_tree; pANTLR3_BASE_TREE CR17_tree; pANTLR3_BASE_TREE LF18_tree; pANTLR3_BASE_TREE CR21_tree; pANTLR3_BASE_TREE LF22_tree; pANTLR3_BASE_TREE CR24_tree; pANTLR3_BASE_TREE LF25_tree; pANTLR3_BASE_TREE CR27_tree; pANTLR3_BASE_TREE LF28_tree; pANTLR3_BASE_TREE CR30_tree; pANTLR3_BASE_TREE LF31_tree; pANTLR3_BASE_TREE CR33_tree; pANTLR3_BASE_TREE LF34_tree; pANTLR3_BASE_TREE CR36_tree; pANTLR3_BASE_TREE LF37_tree; pANTLR3_BASE_TREE CR39_tree; pANTLR3_BASE_TREE LF40_tree; /* Initialize rule variables */ ctx->pbelle_sdpParser_session_descriptionTop = pbelle_sdpParser_session_descriptionPush(ctx); root_0 = NULL; (SCOPE_TOP(session_description))->current= belle_sdp_session_description_new(); retval.ret=(SCOPE_TOP(session_description))->current; CR2 = NULL; LF3 = NULL; CR5 = NULL; LF6 = NULL; CR8 = NULL; LF9 = NULL; CR11 = NULL; LF12 = NULL; CR14 = NULL; LF15 = NULL; CR17 = NULL; LF18 = NULL; CR21 = NULL; LF22 = NULL; CR24 = NULL; LF25 = NULL; CR27 = NULL; LF28 = NULL; CR30 = NULL; LF31 = NULL; CR33 = NULL; LF34 = NULL; CR36 = NULL; LF37 = NULL; CR39 = NULL; LF40 = NULL; version1.tree = NULL; origin4.tree = NULL; session_name7.tree = NULL; info10.tree = NULL; uri_field13.tree = NULL; email16.tree = NULL; phone_field19.tree = NULL; connection20.tree = NULL; bandwidth23.tree = NULL; time_field26.tree = NULL; repeat_time29.tree = NULL; zone_adjustments32.tree = NULL; key_field35.tree = NULL; attribute38.tree = NULL; media_description41.tree = NULL; retval.start = LT(1); retval.stop = retval.start; CR2_tree = NULL; LF3_tree = NULL; CR5_tree = NULL; LF6_tree = NULL; CR8_tree = NULL; LF9_tree = NULL; CR11_tree = NULL; LF12_tree = NULL; CR14_tree = NULL; LF15_tree = NULL; CR17_tree = NULL; LF18_tree = NULL; CR21_tree = NULL; LF22_tree = NULL; CR24_tree = NULL; LF25_tree = NULL; CR27_tree = NULL; LF28_tree = NULL; CR30_tree = NULL; LF31_tree = NULL; CR33_tree = NULL; LF34_tree = NULL; CR36_tree = NULL; LF37_tree = NULL; CR39_tree = NULL; LF40_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:105:21: ( version CR LF origin CR LF session_name CR LF ( info CR LF )? ( uri_field CR LF )? ( email CR LF )* ( phone_field )* ( connection CR LF )? ( bandwidth CR LF )* time_field CR LF ( repeat_time CR LF )* ( zone_adjustments CR LF )? ( key_field CR LF )? ( attribute CR LF )* ( media_description )* ) // ../grammars/belle_sdp.g:105:26: version CR LF origin CR LF session_name CR LF ( info CR LF )? ( uri_field CR LF )? ( email CR LF )* ( phone_field )* ( connection CR LF )? ( bandwidth CR LF )* time_field CR LF ( repeat_time CR LF )* ( zone_adjustments CR LF )? ( key_field CR LF )? ( attribute CR LF )* ( media_description )* { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); FOLLOWPUSH(FOLLOW_version_in_session_description98); version1=version(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesession_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_session_descriptionPop(ctx); return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, version1.tree); CR2 = (pANTLR3_COMMON_TOKEN) MATCHT(CR, &FOLLOW_CR_in_session_description100); if (HASEXCEPTION()) { goto rulesession_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_session_descriptionPop(ctx); return retval; } if ( BACKTRACKING==0 ) { CR2_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, CR2)); ADAPTOR->addChild(ADAPTOR, root_0, CR2_tree); } LF3 = (pANTLR3_COMMON_TOKEN) MATCHT(LF, &FOLLOW_LF_in_session_description102); if (HASEXCEPTION()) { goto rulesession_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_session_descriptionPop(ctx); return retval; } if ( BACKTRACKING==0 ) { LF3_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, LF3)); ADAPTOR->addChild(ADAPTOR, root_0, LF3_tree); } FOLLOWPUSH(FOLLOW_origin_in_session_description129); origin4=origin(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesession_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_session_descriptionPop(ctx); return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, origin4.tree); if ( BACKTRACKING==0 ) { belle_sdp_session_description_set_origin((SCOPE_TOP(session_description))->current, origin4.ret ); } CR5 = (pANTLR3_COMMON_TOKEN) MATCHT(CR, &FOLLOW_CR_in_session_description132); if (HASEXCEPTION()) { goto rulesession_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_session_descriptionPop(ctx); return retval; } if ( BACKTRACKING==0 ) { CR5_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, CR5)); ADAPTOR->addChild(ADAPTOR, root_0, CR5_tree); } LF6 = (pANTLR3_COMMON_TOKEN) MATCHT(LF, &FOLLOW_LF_in_session_description134); if (HASEXCEPTION()) { goto rulesession_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_session_descriptionPop(ctx); return retval; } if ( BACKTRACKING==0 ) { LF6_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, LF6)); ADAPTOR->addChild(ADAPTOR, root_0, LF6_tree); } FOLLOWPUSH(FOLLOW_session_name_in_session_description161); session_name7=session_name(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesession_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_session_descriptionPop(ctx); return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, session_name7.tree); CR8 = (pANTLR3_COMMON_TOKEN) MATCHT(CR, &FOLLOW_CR_in_session_description163); if (HASEXCEPTION()) { goto rulesession_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_session_descriptionPop(ctx); return retval; } if ( BACKTRACKING==0 ) { CR8_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, CR8)); ADAPTOR->addChild(ADAPTOR, root_0, CR8_tree); } LF9 = (pANTLR3_COMMON_TOKEN) MATCHT(LF, &FOLLOW_LF_in_session_description165); if (HASEXCEPTION()) { goto rulesession_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_session_descriptionPop(ctx); return retval; } if ( BACKTRACKING==0 ) { LF9_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, LF9)); ADAPTOR->addChild(ADAPTOR, root_0, LF9_tree); } // ../grammars/belle_sdp.g:108:26: ( info CR LF )? { int alt1=2; alt1 = cdfa1.predict(ctx, RECOGNIZER, ISTREAM, &cdfa1); if (HASEXCEPTION()) { goto rulesession_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_session_descriptionPop(ctx); return retval; } switch (alt1) { case 1: // ../grammars/belle_sdp.g:108:27: info CR LF { FOLLOWPUSH(FOLLOW_info_in_session_description193); info10=info(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesession_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_session_descriptionPop(ctx); return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, info10.tree); CR11 = (pANTLR3_COMMON_TOKEN) MATCHT(CR, &FOLLOW_CR_in_session_description195); if (HASEXCEPTION()) { goto rulesession_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_session_descriptionPop(ctx); return retval; } if ( BACKTRACKING==0 ) { CR11_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, CR11)); ADAPTOR->addChild(ADAPTOR, root_0, CR11_tree); } LF12 = (pANTLR3_COMMON_TOKEN) MATCHT(LF, &FOLLOW_LF_in_session_description197); if (HASEXCEPTION()) { goto rulesession_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_session_descriptionPop(ctx); return retval; } if ( BACKTRACKING==0 ) { LF12_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, LF12)); ADAPTOR->addChild(ADAPTOR, root_0, LF12_tree); } } break; } } // ../grammars/belle_sdp.g:109:26: ( uri_field CR LF )? { int alt2=2; alt2 = cdfa2.predict(ctx, RECOGNIZER, ISTREAM, &cdfa2); if (HASEXCEPTION()) { goto rulesession_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_session_descriptionPop(ctx); return retval; } switch (alt2) { case 1: // ../grammars/belle_sdp.g:109:27: uri_field CR LF { FOLLOWPUSH(FOLLOW_uri_field_in_session_description227); uri_field13=uri_field(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesession_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_session_descriptionPop(ctx); return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, uri_field13.tree); CR14 = (pANTLR3_COMMON_TOKEN) MATCHT(CR, &FOLLOW_CR_in_session_description229); if (HASEXCEPTION()) { goto rulesession_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_session_descriptionPop(ctx); return retval; } if ( BACKTRACKING==0 ) { CR14_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, CR14)); ADAPTOR->addChild(ADAPTOR, root_0, CR14_tree); } LF15 = (pANTLR3_COMMON_TOKEN) MATCHT(LF, &FOLLOW_LF_in_session_description231); if (HASEXCEPTION()) { goto rulesession_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_session_descriptionPop(ctx); return retval; } if ( BACKTRACKING==0 ) { LF15_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, LF15)); ADAPTOR->addChild(ADAPTOR, root_0, LF15_tree); } } break; } } // ../grammars/belle_sdp.g:110:26: ( email CR LF )* for (;;) { int alt3=2; alt3 = cdfa3.predict(ctx, RECOGNIZER, ISTREAM, &cdfa3); if (HASEXCEPTION()) { goto rulesession_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_session_descriptionPop(ctx); return retval; } switch (alt3) { case 1: // ../grammars/belle_sdp.g:110:27: email CR LF { FOLLOWPUSH(FOLLOW_email_in_session_description261); email16=email(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesession_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_session_descriptionPop(ctx); return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, email16.tree); CR17 = (pANTLR3_COMMON_TOKEN) MATCHT(CR, &FOLLOW_CR_in_session_description263); if (HASEXCEPTION()) { goto rulesession_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_session_descriptionPop(ctx); return retval; } if ( BACKTRACKING==0 ) { CR17_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, CR17)); ADAPTOR->addChild(ADAPTOR, root_0, CR17_tree); } LF18 = (pANTLR3_COMMON_TOKEN) MATCHT(LF, &FOLLOW_LF_in_session_description265); if (HASEXCEPTION()) { goto rulesession_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_session_descriptionPop(ctx); return retval; } if ( BACKTRACKING==0 ) { LF18_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, LF18)); ADAPTOR->addChild(ADAPTOR, root_0, LF18_tree); } } break; default: goto loop3; /* break out of the loop */ break; } } loop3: ; /* Jump out to here if this rule does not match */ // ../grammars/belle_sdp.g:111:26: ( phone_field )* for (;;) { int alt4=2; alt4 = cdfa4.predict(ctx, RECOGNIZER, ISTREAM, &cdfa4); if (HASEXCEPTION()) { goto rulesession_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_session_descriptionPop(ctx); return retval; } switch (alt4) { case 1: // ../grammars/belle_sdp.g:111:26: phone_field { FOLLOWPUSH(FOLLOW_phone_field_in_session_description294); phone_field19=phone_field(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesession_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_session_descriptionPop(ctx); return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, phone_field19.tree); } break; default: goto loop4; /* break out of the loop */ break; } } loop4: ; /* Jump out to here if this rule does not match */ // ../grammars/belle_sdp.g:112:26: ( connection CR LF )? { int alt5=2; alt5 = cdfa5.predict(ctx, RECOGNIZER, ISTREAM, &cdfa5); if (HASEXCEPTION()) { goto rulesession_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_session_descriptionPop(ctx); return retval; } switch (alt5) { case 1: // ../grammars/belle_sdp.g:112:27: connection CR LF { FOLLOWPUSH(FOLLOW_connection_in_session_description323); connection20=connection(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesession_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_session_descriptionPop(ctx); return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, connection20.tree); if ( BACKTRACKING==0 ) { belle_sdp_session_description_set_connection((SCOPE_TOP(session_description))->current, connection20.ret ); } CR21 = (pANTLR3_COMMON_TOKEN) MATCHT(CR, &FOLLOW_CR_in_session_description327); if (HASEXCEPTION()) { goto rulesession_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_session_descriptionPop(ctx); return retval; } if ( BACKTRACKING==0 ) { CR21_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, CR21)); ADAPTOR->addChild(ADAPTOR, root_0, CR21_tree); } LF22 = (pANTLR3_COMMON_TOKEN) MATCHT(LF, &FOLLOW_LF_in_session_description329); if (HASEXCEPTION()) { goto rulesession_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_session_descriptionPop(ctx); return retval; } if ( BACKTRACKING==0 ) { LF22_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, LF22)); ADAPTOR->addChild(ADAPTOR, root_0, LF22_tree); } } break; } } // ../grammars/belle_sdp.g:113:26: ( bandwidth CR LF )* for (;;) { int alt6=2; alt6 = cdfa6.predict(ctx, RECOGNIZER, ISTREAM, &cdfa6); if (HASEXCEPTION()) { goto rulesession_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_session_descriptionPop(ctx); return retval; } switch (alt6) { case 1: // ../grammars/belle_sdp.g:113:27: bandwidth CR LF { FOLLOWPUSH(FOLLOW_bandwidth_in_session_description359); bandwidth23=bandwidth(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesession_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_session_descriptionPop(ctx); return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, bandwidth23.tree); if ( BACKTRACKING==0 ) { belle_sdp_session_description_add_bandwidth((SCOPE_TOP(session_description))->current, bandwidth23.ret ); } CR24 = (pANTLR3_COMMON_TOKEN) MATCHT(CR, &FOLLOW_CR_in_session_description363); if (HASEXCEPTION()) { goto rulesession_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_session_descriptionPop(ctx); return retval; } if ( BACKTRACKING==0 ) { CR24_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, CR24)); ADAPTOR->addChild(ADAPTOR, root_0, CR24_tree); } LF25 = (pANTLR3_COMMON_TOKEN) MATCHT(LF, &FOLLOW_LF_in_session_description365); if (HASEXCEPTION()) { goto rulesession_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_session_descriptionPop(ctx); return retval; } if ( BACKTRACKING==0 ) { LF25_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, LF25)); ADAPTOR->addChild(ADAPTOR, root_0, LF25_tree); } } break; default: goto loop6; /* break out of the loop */ break; } } loop6: ; /* Jump out to here if this rule does not match */ FOLLOWPUSH(FOLLOW_time_field_in_session_description394); time_field26=time_field(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesession_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_session_descriptionPop(ctx); return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, time_field26.tree); CR27 = (pANTLR3_COMMON_TOKEN) MATCHT(CR, &FOLLOW_CR_in_session_description396); if (HASEXCEPTION()) { goto rulesession_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_session_descriptionPop(ctx); return retval; } if ( BACKTRACKING==0 ) { CR27_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, CR27)); ADAPTOR->addChild(ADAPTOR, root_0, CR27_tree); } LF28 = (pANTLR3_COMMON_TOKEN) MATCHT(LF, &FOLLOW_LF_in_session_description398); if (HASEXCEPTION()) { goto rulesession_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_session_descriptionPop(ctx); return retval; } if ( BACKTRACKING==0 ) { LF28_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, LF28)); ADAPTOR->addChild(ADAPTOR, root_0, LF28_tree); } // ../grammars/belle_sdp.g:115:26: ( repeat_time CR LF )* for (;;) { int alt7=2; alt7 = cdfa7.predict(ctx, RECOGNIZER, ISTREAM, &cdfa7); if (HASEXCEPTION()) { goto rulesession_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_session_descriptionPop(ctx); return retval; } switch (alt7) { case 1: // ../grammars/belle_sdp.g:115:27: repeat_time CR LF { FOLLOWPUSH(FOLLOW_repeat_time_in_session_description426); repeat_time29=repeat_time(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesession_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_session_descriptionPop(ctx); return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, repeat_time29.tree); CR30 = (pANTLR3_COMMON_TOKEN) MATCHT(CR, &FOLLOW_CR_in_session_description428); if (HASEXCEPTION()) { goto rulesession_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_session_descriptionPop(ctx); return retval; } if ( BACKTRACKING==0 ) { CR30_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, CR30)); ADAPTOR->addChild(ADAPTOR, root_0, CR30_tree); } LF31 = (pANTLR3_COMMON_TOKEN) MATCHT(LF, &FOLLOW_LF_in_session_description430); if (HASEXCEPTION()) { goto rulesession_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_session_descriptionPop(ctx); return retval; } if ( BACKTRACKING==0 ) { LF31_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, LF31)); ADAPTOR->addChild(ADAPTOR, root_0, LF31_tree); } } break; default: goto loop7; /* break out of the loop */ break; } } loop7: ; /* Jump out to here if this rule does not match */ // ../grammars/belle_sdp.g:116:26: ( zone_adjustments CR LF )? { int alt8=2; alt8 = cdfa8.predict(ctx, RECOGNIZER, ISTREAM, &cdfa8); if (HASEXCEPTION()) { goto rulesession_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_session_descriptionPop(ctx); return retval; } switch (alt8) { case 1: // ../grammars/belle_sdp.g:116:27: zone_adjustments CR LF { FOLLOWPUSH(FOLLOW_zone_adjustments_in_session_description460); zone_adjustments32=zone_adjustments(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesession_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_session_descriptionPop(ctx); return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, zone_adjustments32.tree); CR33 = (pANTLR3_COMMON_TOKEN) MATCHT(CR, &FOLLOW_CR_in_session_description462); if (HASEXCEPTION()) { goto rulesession_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_session_descriptionPop(ctx); return retval; } if ( BACKTRACKING==0 ) { CR33_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, CR33)); ADAPTOR->addChild(ADAPTOR, root_0, CR33_tree); } LF34 = (pANTLR3_COMMON_TOKEN) MATCHT(LF, &FOLLOW_LF_in_session_description464); if (HASEXCEPTION()) { goto rulesession_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_session_descriptionPop(ctx); return retval; } if ( BACKTRACKING==0 ) { LF34_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, LF34)); ADAPTOR->addChild(ADAPTOR, root_0, LF34_tree); } } break; } } // ../grammars/belle_sdp.g:117:26: ( key_field CR LF )? { int alt9=2; alt9 = cdfa9.predict(ctx, RECOGNIZER, ISTREAM, &cdfa9); if (HASEXCEPTION()) { goto rulesession_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_session_descriptionPop(ctx); return retval; } switch (alt9) { case 1: // ../grammars/belle_sdp.g:117:27: key_field CR LF { FOLLOWPUSH(FOLLOW_key_field_in_session_description494); key_field35=key_field(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesession_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_session_descriptionPop(ctx); return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, key_field35.tree); CR36 = (pANTLR3_COMMON_TOKEN) MATCHT(CR, &FOLLOW_CR_in_session_description496); if (HASEXCEPTION()) { goto rulesession_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_session_descriptionPop(ctx); return retval; } if ( BACKTRACKING==0 ) { CR36_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, CR36)); ADAPTOR->addChild(ADAPTOR, root_0, CR36_tree); } LF37 = (pANTLR3_COMMON_TOKEN) MATCHT(LF, &FOLLOW_LF_in_session_description498); if (HASEXCEPTION()) { goto rulesession_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_session_descriptionPop(ctx); return retval; } if ( BACKTRACKING==0 ) { LF37_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, LF37)); ADAPTOR->addChild(ADAPTOR, root_0, LF37_tree); } } break; } } // ../grammars/belle_sdp.g:118:26: ( attribute CR LF )* for (;;) { int alt10=2; alt10 = cdfa10.predict(ctx, RECOGNIZER, ISTREAM, &cdfa10); if (HASEXCEPTION()) { goto rulesession_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_session_descriptionPop(ctx); return retval; } switch (alt10) { case 1: // ../grammars/belle_sdp.g:118:27: attribute CR LF { FOLLOWPUSH(FOLLOW_attribute_in_session_description528); attribute38=attribute(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesession_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_session_descriptionPop(ctx); return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, attribute38.tree); if ( BACKTRACKING==0 ) { belle_sdp_session_description_add_attribute((SCOPE_TOP(session_description))->current, attribute38.ret ); } CR39 = (pANTLR3_COMMON_TOKEN) MATCHT(CR, &FOLLOW_CR_in_session_description532); if (HASEXCEPTION()) { goto rulesession_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_session_descriptionPop(ctx); return retval; } if ( BACKTRACKING==0 ) { CR39_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, CR39)); ADAPTOR->addChild(ADAPTOR, root_0, CR39_tree); } LF40 = (pANTLR3_COMMON_TOKEN) MATCHT(LF, &FOLLOW_LF_in_session_description534); if (HASEXCEPTION()) { goto rulesession_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_session_descriptionPop(ctx); return retval; } if ( BACKTRACKING==0 ) { LF40_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, LF40)); ADAPTOR->addChild(ADAPTOR, root_0, LF40_tree); } } break; default: goto loop10; /* break out of the loop */ break; } } loop10: ; /* Jump out to here if this rule does not match */ // ../grammars/belle_sdp.g:119:26: ( media_description )* for (;;) { int alt11=2; switch ( LA(1) ) { case COMMON_CHAR: case DIGIT: case HEX_CHAR: { alt11=1; } break; } switch (alt11) { case 1: // ../grammars/belle_sdp.g:119:27: media_description { FOLLOWPUSH(FOLLOW_media_description_in_session_description564); media_description41=media_description(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesession_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_session_descriptionPop(ctx); return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, media_description41.tree); if ( BACKTRACKING==0 ) { belle_sdp_session_description_add_media_description((SCOPE_TOP(session_description))->current, media_description41.ret ); } } break; default: goto loop11; /* break out of the loop */ break; } } loop11: ; /* Jump out to here if this rule does not match */ } } // This is where rules clean up and exit // goto rulesession_descriptionEx; /* Prevent compiler warnings */ rulesession_descriptionEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { /* catch(decl,action) */ { ANTLR3_LOG_EXCEPTION(); belle_sip_object_unref((SCOPE_TOP(session_description))->current); retval.ret=NULL; } } else { } pbelle_sdpParser_session_descriptionPop(ctx); return retval; } /* $ANTLR end session_description */ /** * $ANTLR start version * ../grammars/belle_sdp.g:128:1: version :{...}? alpha_num EQUAL (v= DIGIT )+ ; */ static belle_sdpParser_version_return version(pbelle_sdpParser ctx) { belle_sdpParser_version_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN v; pANTLR3_COMMON_TOKEN EQUAL43; belle_sdpParser_alpha_num_return alpha_num42; #undef RETURN_TYPE_alpha_num42 #define RETURN_TYPE_alpha_num42 belle_sdpParser_alpha_num_return pANTLR3_BASE_TREE v_tree; pANTLR3_BASE_TREE EQUAL43_tree; /* Initialize rule variables */ root_0 = NULL; v = NULL; EQUAL43 = NULL; alpha_num42.tree = NULL; retval.start = LT(1); retval.stop = retval.start; v_tree = NULL; EQUAL43_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:128:8: ({...}? alpha_num EQUAL (v= DIGIT )+ ) // ../grammars/belle_sdp.g:128:16: {...}? alpha_num EQUAL (v= DIGIT )+ { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); if ( !((IS_TOKEN(v))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(v)"; EXCEPTION->ruleName = (void *)"version"; } FOLLOWPUSH(FOLLOW_alpha_num_in_version590); alpha_num42=alpha_num(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleversionEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, alpha_num42.tree); EQUAL43 = (pANTLR3_COMMON_TOKEN) MATCHT(EQUAL, &FOLLOW_EQUAL_in_version592); if (HASEXCEPTION()) { goto ruleversionEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { EQUAL43_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, EQUAL43)); ADAPTOR->addChild(ADAPTOR, root_0, EQUAL43_tree); } // ../grammars/belle_sdp.g:128:47: (v= DIGIT )+ { int cnt12=0; for (;;) { int alt12=2; switch ( LA(1) ) { case DIGIT: { alt12=1; } break; } switch (alt12) { case 1: // ../grammars/belle_sdp.g:128:47: v= DIGIT { v = (pANTLR3_COMMON_TOKEN) MATCHT(DIGIT, &FOLLOW_DIGIT_in_version596); if (HASEXCEPTION()) { goto ruleversionEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { v_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, v)); ADAPTOR->addChild(ADAPTOR, root_0, v_tree); } } break; default: if ( cnt12 >= 1 ) { goto loop12; } if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } /* mismatchedSetEx() */ CONSTRUCTEX(); EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME; goto ruleversionEx; } cnt12++; } loop12: ; /* Jump to here if this rule does not match */ } if ( BACKTRACKING==0 ) { belle_sdp_version_t* version =belle_sdp_version_new(); belle_sdp_version_set_version(version,atoi((const char*)(v->getText(v))->chars)); belle_sdp_session_description_set_version((SCOPE_TOP(session_description))->current,version); } } } // This is where rules clean up and exit // goto ruleversionEx; /* Prevent compiler warnings */ ruleversionEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end version */ /** * $ANTLR start origin * ../grammars/belle_sdp.g:134:1: origin returns [belle_sdp_origin_t* ret] :{...}? alpha_num EQUAL username SPACE sess_id SPACE sess_version SPACE nettype SPACE addrtype SPACE addr ; */ static belle_sdpParser_origin_return origin(pbelle_sdpParser ctx) { belle_sdpParser_origin_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN EQUAL45; pANTLR3_COMMON_TOKEN SPACE47; pANTLR3_COMMON_TOKEN SPACE49; pANTLR3_COMMON_TOKEN SPACE51; pANTLR3_COMMON_TOKEN SPACE53; pANTLR3_COMMON_TOKEN SPACE55; belle_sdpParser_alpha_num_return alpha_num44; #undef RETURN_TYPE_alpha_num44 #define RETURN_TYPE_alpha_num44 belle_sdpParser_alpha_num_return belle_sdpParser_username_return username46; #undef RETURN_TYPE_username46 #define RETURN_TYPE_username46 belle_sdpParser_username_return belle_sdpParser_sess_id_return sess_id48; #undef RETURN_TYPE_sess_id48 #define RETURN_TYPE_sess_id48 belle_sdpParser_sess_id_return belle_sdpParser_sess_version_return sess_version50; #undef RETURN_TYPE_sess_version50 #define RETURN_TYPE_sess_version50 belle_sdpParser_sess_version_return belle_sdpParser_nettype_return nettype52; #undef RETURN_TYPE_nettype52 #define RETURN_TYPE_nettype52 belle_sdpParser_nettype_return belle_sdpParser_addrtype_return addrtype54; #undef RETURN_TYPE_addrtype54 #define RETURN_TYPE_addrtype54 belle_sdpParser_addrtype_return belle_sdpParser_addr_return addr56; #undef RETURN_TYPE_addr56 #define RETURN_TYPE_addr56 belle_sdpParser_addr_return pANTLR3_BASE_TREE EQUAL45_tree; pANTLR3_BASE_TREE SPACE47_tree; pANTLR3_BASE_TREE SPACE49_tree; pANTLR3_BASE_TREE SPACE51_tree; pANTLR3_BASE_TREE SPACE53_tree; pANTLR3_BASE_TREE SPACE55_tree; /* Initialize rule variables */ ctx->pbelle_sdpParser_originTop = pbelle_sdpParser_originPush(ctx); root_0 = NULL; (SCOPE_TOP(origin))->current= belle_sdp_origin_new(); retval.ret=(SCOPE_TOP(origin))->current; EQUAL45 = NULL; SPACE47 = NULL; SPACE49 = NULL; SPACE51 = NULL; SPACE53 = NULL; SPACE55 = NULL; alpha_num44.tree = NULL; username46.tree = NULL; sess_id48.tree = NULL; sess_version50.tree = NULL; nettype52.tree = NULL; addrtype54.tree = NULL; addr56.tree = NULL; retval.start = LT(1); retval.stop = retval.start; EQUAL45_tree = NULL; SPACE47_tree = NULL; SPACE49_tree = NULL; SPACE51_tree = NULL; SPACE53_tree = NULL; SPACE55_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:137:10: ({...}? alpha_num EQUAL username SPACE sess_id SPACE sess_version SPACE nettype SPACE addrtype SPACE addr ) // ../grammars/belle_sdp.g:137:10: {...}? alpha_num EQUAL username SPACE sess_id SPACE sess_version SPACE nettype SPACE addrtype SPACE addr { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); if ( !((IS_TOKEN(o))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sdpParser_originPop(ctx); return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(o)"; EXCEPTION->ruleName = (void *)"origin"; } FOLLOWPUSH(FOLLOW_alpha_num_in_origin654); alpha_num44=alpha_num(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleoriginEx; } if (HASFAILED()) { pbelle_sdpParser_originPop(ctx); return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, alpha_num44.tree); EQUAL45 = (pANTLR3_COMMON_TOKEN) MATCHT(EQUAL, &FOLLOW_EQUAL_in_origin656); if (HASEXCEPTION()) { goto ruleoriginEx; } if (HASFAILED()) { pbelle_sdpParser_originPop(ctx); return retval; } if ( BACKTRACKING==0 ) { EQUAL45_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, EQUAL45)); ADAPTOR->addChild(ADAPTOR, root_0, EQUAL45_tree); } FOLLOWPUSH(FOLLOW_username_in_origin658); username46=username(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleoriginEx; } if (HASFAILED()) { pbelle_sdpParser_originPop(ctx); return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, username46.tree); if ( BACKTRACKING==0 ) { belle_sdp_origin_set_username((SCOPE_TOP(origin))->current,(const char*) (STRSTREAM->toStringTT(STRSTREAM, username46.start, username46.stop)) ->chars); } SPACE47 = (pANTLR3_COMMON_TOKEN) MATCHT(SPACE, &FOLLOW_SPACE_in_origin687); if (HASEXCEPTION()) { goto ruleoriginEx; } if (HASFAILED()) { pbelle_sdpParser_originPop(ctx); return retval; } if ( BACKTRACKING==0 ) { SPACE47_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, SPACE47)); ADAPTOR->addChild(ADAPTOR, root_0, SPACE47_tree); } FOLLOWPUSH(FOLLOW_sess_id_in_origin689); sess_id48=sess_id(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleoriginEx; } if (HASFAILED()) { pbelle_sdpParser_originPop(ctx); return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, sess_id48.tree); if ( BACKTRACKING==0 ) { if ((STRSTREAM->toStringTT(STRSTREAM, sess_id48.start, sess_id48.stop)) ->chars) belle_sdp_origin_set_session_id((SCOPE_TOP(origin))->current,strtoul((const char*) (STRSTREAM->toStringTT(STRSTREAM, sess_id48.start, sess_id48.stop)) ->chars,NULL,10)); } SPACE49 = (pANTLR3_COMMON_TOKEN) MATCHT(SPACE, &FOLLOW_SPACE_in_origin718); if (HASEXCEPTION()) { goto ruleoriginEx; } if (HASFAILED()) { pbelle_sdpParser_originPop(ctx); return retval; } if ( BACKTRACKING==0 ) { SPACE49_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, SPACE49)); ADAPTOR->addChild(ADAPTOR, root_0, SPACE49_tree); } FOLLOWPUSH(FOLLOW_sess_version_in_origin720); sess_version50=sess_version(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleoriginEx; } if (HASFAILED()) { pbelle_sdpParser_originPop(ctx); return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, sess_version50.tree); if ( BACKTRACKING==0 ) { if ((STRSTREAM->toStringTT(STRSTREAM, sess_version50.start, sess_version50.stop)) ->chars) belle_sdp_origin_set_session_version((SCOPE_TOP(origin))->current,strtoul((const char*) (STRSTREAM->toStringTT(STRSTREAM, sess_version50.start, sess_version50.stop)) ->chars,NULL,10)); } SPACE51 = (pANTLR3_COMMON_TOKEN) MATCHT(SPACE, &FOLLOW_SPACE_in_origin749); if (HASEXCEPTION()) { goto ruleoriginEx; } if (HASFAILED()) { pbelle_sdpParser_originPop(ctx); return retval; } if ( BACKTRACKING==0 ) { SPACE51_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, SPACE51)); ADAPTOR->addChild(ADAPTOR, root_0, SPACE51_tree); } FOLLOWPUSH(FOLLOW_nettype_in_origin751); nettype52=nettype(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleoriginEx; } if (HASFAILED()) { pbelle_sdpParser_originPop(ctx); return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, nettype52.tree); if ( BACKTRACKING==0 ) { belle_sdp_origin_set_network_type((SCOPE_TOP(origin))->current,(const char*) (STRSTREAM->toStringTT(STRSTREAM, nettype52.start, nettype52.stop)) ->chars); } SPACE53 = (pANTLR3_COMMON_TOKEN) MATCHT(SPACE, &FOLLOW_SPACE_in_origin780); if (HASEXCEPTION()) { goto ruleoriginEx; } if (HASFAILED()) { pbelle_sdpParser_originPop(ctx); return retval; } if ( BACKTRACKING==0 ) { SPACE53_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, SPACE53)); ADAPTOR->addChild(ADAPTOR, root_0, SPACE53_tree); } FOLLOWPUSH(FOLLOW_addrtype_in_origin782); addrtype54=addrtype(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleoriginEx; } if (HASFAILED()) { pbelle_sdpParser_originPop(ctx); return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, addrtype54.tree); if ( BACKTRACKING==0 ) { belle_sdp_origin_set_address_type((SCOPE_TOP(origin))->current,(const char*) (STRSTREAM->toStringTT(STRSTREAM, addrtype54.start, addrtype54.stop)) ->chars); } SPACE55 = (pANTLR3_COMMON_TOKEN) MATCHT(SPACE, &FOLLOW_SPACE_in_origin812); if (HASEXCEPTION()) { goto ruleoriginEx; } if (HASFAILED()) { pbelle_sdpParser_originPop(ctx); return retval; } if ( BACKTRACKING==0 ) { SPACE55_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, SPACE55)); ADAPTOR->addChild(ADAPTOR, root_0, SPACE55_tree); } FOLLOWPUSH(FOLLOW_addr_in_origin814); addr56=addr(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleoriginEx; } if (HASFAILED()) { pbelle_sdpParser_originPop(ctx); return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, addr56.tree); if ( BACKTRACKING==0 ) { belle_sdp_origin_set_address((SCOPE_TOP(origin))->current,(const char*) (STRSTREAM->toStringTT(STRSTREAM, addr56.start, addr56.stop)) ->chars); } } } // This is where rules clean up and exit // goto ruleoriginEx; /* Prevent compiler warnings */ ruleoriginEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { /* catch(decl,action) */ { ANTLR3_LOG_EXCEPTION(); belle_sip_object_unref((SCOPE_TOP(origin))->current); retval.ret=NULL; } } else { } pbelle_sdpParser_originPop(ctx); return retval; } /* $ANTLR end origin */ /** * $ANTLR start session_name * ../grammars/belle_sdp.g:151:1: session_name :{...}? alpha_num EQUAL text ; */ static belle_sdpParser_session_name_return session_name(pbelle_sdpParser ctx) { belle_sdpParser_session_name_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN EQUAL58; belle_sdpParser_alpha_num_return alpha_num57; #undef RETURN_TYPE_alpha_num57 #define RETURN_TYPE_alpha_num57 belle_sdpParser_alpha_num_return belle_sdpParser_text_return text59; #undef RETURN_TYPE_text59 #define RETURN_TYPE_text59 belle_sdpParser_text_return pANTLR3_BASE_TREE EQUAL58_tree; /* Initialize rule variables */ root_0 = NULL; EQUAL58 = NULL; alpha_num57.tree = NULL; text59.tree = NULL; retval.start = LT(1); retval.stop = retval.start; EQUAL58_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:151:13: ({...}? alpha_num EQUAL text ) // ../grammars/belle_sdp.g:151:16: {...}? alpha_num EQUAL text { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); if ( !((IS_TOKEN(s))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(s)"; EXCEPTION->ruleName = (void *)"session_name"; } FOLLOWPUSH(FOLLOW_alpha_num_in_session_name834); alpha_num57=alpha_num(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesession_nameEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, alpha_num57.tree); EQUAL58 = (pANTLR3_COMMON_TOKEN) MATCHT(EQUAL, &FOLLOW_EQUAL_in_session_name836); if (HASEXCEPTION()) { goto rulesession_nameEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { EQUAL58_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, EQUAL58)); ADAPTOR->addChild(ADAPTOR, root_0, EQUAL58_tree); } FOLLOWPUSH(FOLLOW_text_in_session_name838); text59=text(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesession_nameEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, text59.tree); if ( BACKTRACKING==0 ) { belle_sdp_session_name_t* session_name =belle_sdp_session_name_new(); belle_sdp_session_name_set_value(session_name,(const char*)(STRSTREAM->toStringTT(STRSTREAM, text59.start, text59.stop)) ->chars); belle_sdp_session_description_set_session_name((SCOPE_TOP(session_description))->current,session_name); } } } // This is where rules clean up and exit // goto rulesession_nameEx; /* Prevent compiler warnings */ rulesession_nameEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end session_name */ /** * $ANTLR start info * ../grammars/belle_sdp.g:155:1: info returns [belle_sdp_info_t* ret] :{...}? alpha_num EQUAL info_value ; */ static belle_sdpParser_info_return info(pbelle_sdpParser ctx) { belle_sdpParser_info_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN EQUAL61; belle_sdpParser_alpha_num_return alpha_num60; #undef RETURN_TYPE_alpha_num60 #define RETURN_TYPE_alpha_num60 belle_sdpParser_alpha_num_return belle_sdpParser_info_value_return info_value62; #undef RETURN_TYPE_info_value62 #define RETURN_TYPE_info_value62 belle_sdpParser_info_value_return pANTLR3_BASE_TREE EQUAL61_tree; /* Initialize rule variables */ ctx->pbelle_sdpParser_infoTop = pbelle_sdpParser_infoPush(ctx); root_0 = NULL; (SCOPE_TOP(info))->current= belle_sdp_info_new(); retval.ret=(SCOPE_TOP(info))->current; EQUAL61 = NULL; alpha_num60.tree = NULL; info_value62.tree = NULL; retval.start = LT(1); retval.stop = retval.start; EQUAL61_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:158:5: ({...}? alpha_num EQUAL info_value ) // ../grammars/belle_sdp.g:158:5: {...}? alpha_num EQUAL info_value { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); if ( !((IS_TOKEN(i))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sdpParser_infoPop(ctx); return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(i)"; EXCEPTION->ruleName = (void *)"info"; } FOLLOWPUSH(FOLLOW_alpha_num_in_info865); alpha_num60=alpha_num(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleinfoEx; } if (HASFAILED()) { pbelle_sdpParser_infoPop(ctx); return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, alpha_num60.tree); EQUAL61 = (pANTLR3_COMMON_TOKEN) MATCHT(EQUAL, &FOLLOW_EQUAL_in_info867); if (HASEXCEPTION()) { goto ruleinfoEx; } if (HASFAILED()) { pbelle_sdpParser_infoPop(ctx); return retval; } if ( BACKTRACKING==0 ) { EQUAL61_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, EQUAL61)); ADAPTOR->addChild(ADAPTOR, root_0, EQUAL61_tree); } FOLLOWPUSH(FOLLOW_info_value_in_info869); info_value62=info_value(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleinfoEx; } if (HASFAILED()) { pbelle_sdpParser_infoPop(ctx); return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, info_value62.tree); if ( BACKTRACKING==0 ) { belle_sdp_info_set_value((SCOPE_TOP(info))->current,(const char*) (STRSTREAM->toStringTT(STRSTREAM, info_value62.start, info_value62.stop)) ->chars); } } } // This is where rules clean up and exit // goto ruleinfoEx; /* Prevent compiler warnings */ ruleinfoEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } pbelle_sdpParser_infoPop(ctx); return retval; } /* $ANTLR end info */ /** * $ANTLR start info_value * ../grammars/belle_sdp.g:160:1: info_value options {greedy=false; } : (~ ( CR | LF ) )* ; */ static belle_sdpParser_info_value_return info_value(pbelle_sdpParser ctx) { belle_sdpParser_info_value_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN set63; pANTLR3_BASE_TREE set63_tree; /* Initialize rule variables */ root_0 = NULL; set63 = NULL; retval.start = LT(1); retval.stop = retval.start; set63_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:160:50: ( (~ ( CR | LF ) )* ) // ../grammars/belle_sdp.g:160:59: (~ ( CR | LF ) )* { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); // ../grammars/belle_sdp.g:160:59: (~ ( CR | LF ) )* for (;;) { int alt13=2; switch ( LA(1) ) { case COLON: case COMMA: case COMMON_CHAR: case DASH: case DIGIT: case DOT: case EQUAL: case HEX_CHAR: case LQUOTE: case OCTET: case POS_DIGIT: case RQUOTE: case SLASH: case SPACE: case STAR: case ZERO: case 22: case 23: case 24: case 25: case 26: case 27: case 28: case 29: case 30: case 31: case 32: case 33: case 34: case 35: { alt13=1; } break; } switch (alt13) { case 1: // ../grammars/belle_sdp.g: { set63=(pANTLR3_COMMON_TOKEN)LT(1); if ( ((LA(1) >= COLON) && (LA(1) <= COMMON_CHAR)) || ((LA(1) >= DASH) && (LA(1) <= HEX_CHAR)) || ((LA(1) >= LQUOTE) && (LA(1) <= 35)) ) { CONSUME(); if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, set63)) ); PERRORRECOVERY=ANTLR3_FALSE; FAILEDFLAG=ANTLR3_FALSE; } else { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_MISMATCHED_SET_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_MISMATCHED_SET_NAME; EXCEPTION->expectingSet = NULL; goto ruleinfo_valueEx; } } break; default: goto loop13; /* break out of the loop */ break; } } loop13: ; /* Jump out to here if this rule does not match */ } } // This is where rules clean up and exit // goto ruleinfo_valueEx; /* Prevent compiler warnings */ ruleinfo_valueEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end info_value */ /** * $ANTLR start uri_field * ../grammars/belle_sdp.g:162:1: uri_field :{...}? alpha_num EQUAL uri ; */ static belle_sdpParser_uri_field_return uri_field(pbelle_sdpParser ctx) { belle_sdpParser_uri_field_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN EQUAL65; belle_sdpParser_alpha_num_return alpha_num64; #undef RETURN_TYPE_alpha_num64 #define RETURN_TYPE_alpha_num64 belle_sdpParser_alpha_num_return belle_sdpParser_uri_return uri66; #undef RETURN_TYPE_uri66 #define RETURN_TYPE_uri66 belle_sdpParser_uri_return pANTLR3_BASE_TREE EQUAL65_tree; /* Initialize rule variables */ root_0 = NULL; EQUAL65 = NULL; alpha_num64.tree = NULL; uri66.tree = NULL; retval.start = LT(1); retval.stop = retval.start; EQUAL65_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:162:10: ({...}? alpha_num EQUAL uri ) // ../grammars/belle_sdp.g:162:22: {...}? alpha_num EQUAL uri { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); if ( !((IS_TOKEN(u))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(u)"; EXCEPTION->ruleName = (void *)"uri_field"; } FOLLOWPUSH(FOLLOW_alpha_num_in_uri_field932); alpha_num64=alpha_num(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleuri_fieldEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, alpha_num64.tree); EQUAL65 = (pANTLR3_COMMON_TOKEN) MATCHT(EQUAL, &FOLLOW_EQUAL_in_uri_field934); if (HASEXCEPTION()) { goto ruleuri_fieldEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { EQUAL65_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, EQUAL65)); ADAPTOR->addChild(ADAPTOR, root_0, EQUAL65_tree); } FOLLOWPUSH(FOLLOW_uri_in_uri_field936); uri66=uri(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleuri_fieldEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, uri66.tree); } } // This is where rules clean up and exit // goto ruleuri_fieldEx; /* Prevent compiler warnings */ ruleuri_fieldEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end uri_field */ /** * $ANTLR start email * ../grammars/belle_sdp.g:164:1: email returns [belle_sdp_email_t* ret] :{...}? alpha_num EQUAL email_address ; */ static belle_sdpParser_email_return email(pbelle_sdpParser ctx) { belle_sdpParser_email_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN EQUAL68; belle_sdpParser_alpha_num_return alpha_num67; #undef RETURN_TYPE_alpha_num67 #define RETURN_TYPE_alpha_num67 belle_sdpParser_alpha_num_return belle_sdpParser_email_address_return email_address69; #undef RETURN_TYPE_email_address69 #define RETURN_TYPE_email_address69 belle_sdpParser_email_address_return pANTLR3_BASE_TREE EQUAL68_tree; /* Initialize rule variables */ ctx->pbelle_sdpParser_emailTop = pbelle_sdpParser_emailPush(ctx); root_0 = NULL; (SCOPE_TOP(email))->current= belle_sdp_email_new(); retval.ret=(SCOPE_TOP(email))->current; EQUAL68 = NULL; alpha_num67.tree = NULL; email_address69.tree = NULL; retval.start = LT(1); retval.stop = retval.start; EQUAL68_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:167:3: ({...}? alpha_num EQUAL email_address ) // ../grammars/belle_sdp.g:167:12: {...}? alpha_num EQUAL email_address { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); if ( !((IS_TOKEN(e))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sdpParser_emailPop(ctx); return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(e)"; EXCEPTION->ruleName = (void *)"email"; } FOLLOWPUSH(FOLLOW_alpha_num_in_email968); alpha_num67=alpha_num(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleemailEx; } if (HASFAILED()) { pbelle_sdpParser_emailPop(ctx); return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, alpha_num67.tree); EQUAL68 = (pANTLR3_COMMON_TOKEN) MATCHT(EQUAL, &FOLLOW_EQUAL_in_email970); if (HASEXCEPTION()) { goto ruleemailEx; } if (HASFAILED()) { pbelle_sdpParser_emailPop(ctx); return retval; } if ( BACKTRACKING==0 ) { EQUAL68_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, EQUAL68)); ADAPTOR->addChild(ADAPTOR, root_0, EQUAL68_tree); } FOLLOWPUSH(FOLLOW_email_address_in_email972); email_address69=email_address(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleemailEx; } if (HASFAILED()) { pbelle_sdpParser_emailPop(ctx); return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, email_address69.tree); if ( BACKTRACKING==0 ) { belle_sdp_email_set_value((SCOPE_TOP(email))->current,(const char*) (STRSTREAM->toStringTT(STRSTREAM, email_address69.start, email_address69.stop)) ->chars); } } } // This is where rules clean up and exit // goto ruleemailEx; /* Prevent compiler warnings */ ruleemailEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } pbelle_sdpParser_emailPop(ctx); return retval; } /* $ANTLR end email */ /** * $ANTLR start phone_field * ../grammars/belle_sdp.g:169:1: phone_field :{...}? alpha_num EQUAL phone_number CR LF ; */ static belle_sdpParser_phone_field_return phone_field(pbelle_sdpParser ctx) { belle_sdpParser_phone_field_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN EQUAL71; pANTLR3_COMMON_TOKEN CR73; pANTLR3_COMMON_TOKEN LF74; belle_sdpParser_alpha_num_return alpha_num70; #undef RETURN_TYPE_alpha_num70 #define RETURN_TYPE_alpha_num70 belle_sdpParser_alpha_num_return belle_sdpParser_phone_number_return phone_number72; #undef RETURN_TYPE_phone_number72 #define RETURN_TYPE_phone_number72 belle_sdpParser_phone_number_return pANTLR3_BASE_TREE EQUAL71_tree; pANTLR3_BASE_TREE CR73_tree; pANTLR3_BASE_TREE LF74_tree; /* Initialize rule variables */ root_0 = NULL; EQUAL71 = NULL; CR73 = NULL; LF74 = NULL; alpha_num70.tree = NULL; phone_number72.tree = NULL; retval.start = LT(1); retval.stop = retval.start; EQUAL71_tree = NULL; CR73_tree = NULL; LF74_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:169:12: ({...}? alpha_num EQUAL phone_number CR LF ) // ../grammars/belle_sdp.g:169:21: {...}? alpha_num EQUAL phone_number CR LF { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); if ( !((IS_TOKEN(p))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(p)"; EXCEPTION->ruleName = (void *)"phone_field"; } FOLLOWPUSH(FOLLOW_alpha_num_in_phone_field989); alpha_num70=alpha_num(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulephone_fieldEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, alpha_num70.tree); EQUAL71 = (pANTLR3_COMMON_TOKEN) MATCHT(EQUAL, &FOLLOW_EQUAL_in_phone_field991); if (HASEXCEPTION()) { goto rulephone_fieldEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { EQUAL71_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, EQUAL71)); ADAPTOR->addChild(ADAPTOR, root_0, EQUAL71_tree); } FOLLOWPUSH(FOLLOW_phone_number_in_phone_field993); phone_number72=phone_number(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulephone_fieldEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, phone_number72.tree); CR73 = (pANTLR3_COMMON_TOKEN) MATCHT(CR, &FOLLOW_CR_in_phone_field995); if (HASEXCEPTION()) { goto rulephone_fieldEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { CR73_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, CR73)); ADAPTOR->addChild(ADAPTOR, root_0, CR73_tree); } LF74 = (pANTLR3_COMMON_TOKEN) MATCHT(LF, &FOLLOW_LF_in_phone_field997); if (HASEXCEPTION()) { goto rulephone_fieldEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { LF74_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, LF74)); ADAPTOR->addChild(ADAPTOR, root_0, LF74_tree); } } } // This is where rules clean up and exit // goto rulephone_fieldEx; /* Prevent compiler warnings */ rulephone_fieldEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end phone_field */ /** * $ANTLR start connection * ../grammars/belle_sdp.g:171:1: connection returns [belle_sdp_connection_t* ret] :{...}? alpha_num EQUAL nettype SPACE addrtype SPACE connection_address ; */ static belle_sdpParser_connection_return connection(pbelle_sdpParser ctx) { belle_sdpParser_connection_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN EQUAL76; pANTLR3_COMMON_TOKEN SPACE78; pANTLR3_COMMON_TOKEN SPACE80; belle_sdpParser_alpha_num_return alpha_num75; #undef RETURN_TYPE_alpha_num75 #define RETURN_TYPE_alpha_num75 belle_sdpParser_alpha_num_return belle_sdpParser_nettype_return nettype77; #undef RETURN_TYPE_nettype77 #define RETURN_TYPE_nettype77 belle_sdpParser_nettype_return belle_sdpParser_addrtype_return addrtype79; #undef RETURN_TYPE_addrtype79 #define RETURN_TYPE_addrtype79 belle_sdpParser_addrtype_return belle_sdpParser_connection_address_return connection_address81; #undef RETURN_TYPE_connection_address81 #define RETURN_TYPE_connection_address81 belle_sdpParser_connection_address_return pANTLR3_BASE_TREE EQUAL76_tree; pANTLR3_BASE_TREE SPACE78_tree; pANTLR3_BASE_TREE SPACE80_tree; /* Initialize rule variables */ ctx->pbelle_sdpParser_connectionTop = pbelle_sdpParser_connectionPush(ctx); root_0 = NULL; (SCOPE_TOP(connection))->current= belle_sdp_connection_new(); retval.ret=(SCOPE_TOP(connection))->current; EQUAL76 = NULL; SPACE78 = NULL; SPACE80 = NULL; alpha_num75.tree = NULL; nettype77.tree = NULL; addrtype79.tree = NULL; connection_address81.tree = NULL; retval.start = LT(1); retval.stop = retval.start; EQUAL76_tree = NULL; SPACE78_tree = NULL; SPACE80_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:174:6: ({...}? alpha_num EQUAL nettype SPACE addrtype SPACE connection_address ) // ../grammars/belle_sdp.g:174:6: {...}? alpha_num EQUAL nettype SPACE addrtype SPACE connection_address { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); if ( !((IS_TOKEN(c))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sdpParser_connectionPop(ctx); return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(c)"; EXCEPTION->ruleName = (void *)"connection"; } FOLLOWPUSH(FOLLOW_alpha_num_in_connection1022); alpha_num75=alpha_num(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleconnectionEx; } if (HASFAILED()) { pbelle_sdpParser_connectionPop(ctx); return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, alpha_num75.tree); EQUAL76 = (pANTLR3_COMMON_TOKEN) MATCHT(EQUAL, &FOLLOW_EQUAL_in_connection1024); if (HASEXCEPTION()) { goto ruleconnectionEx; } if (HASFAILED()) { pbelle_sdpParser_connectionPop(ctx); return retval; } if ( BACKTRACKING==0 ) { EQUAL76_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, EQUAL76)); ADAPTOR->addChild(ADAPTOR, root_0, EQUAL76_tree); } FOLLOWPUSH(FOLLOW_nettype_in_connection1026); nettype77=nettype(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleconnectionEx; } if (HASFAILED()) { pbelle_sdpParser_connectionPop(ctx); return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, nettype77.tree); if ( BACKTRACKING==0 ) { belle_sdp_connection_set_network_type((SCOPE_TOP(connection))->current,(const char*) (STRSTREAM->toStringTT(STRSTREAM, nettype77.start, nettype77.stop)) ->chars); } SPACE78 = (pANTLR3_COMMON_TOKEN) MATCHT(SPACE, &FOLLOW_SPACE_in_connection1048); if (HASEXCEPTION()) { goto ruleconnectionEx; } if (HASFAILED()) { pbelle_sdpParser_connectionPop(ctx); return retval; } if ( BACKTRACKING==0 ) { SPACE78_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, SPACE78)); ADAPTOR->addChild(ADAPTOR, root_0, SPACE78_tree); } FOLLOWPUSH(FOLLOW_addrtype_in_connection1050); addrtype79=addrtype(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleconnectionEx; } if (HASFAILED()) { pbelle_sdpParser_connectionPop(ctx); return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, addrtype79.tree); if ( BACKTRACKING==0 ) { belle_sdp_connection_set_address_type((SCOPE_TOP(connection))->current,(const char*) (STRSTREAM->toStringTT(STRSTREAM, addrtype79.start, addrtype79.stop)) ->chars); } SPACE80 = (pANTLR3_COMMON_TOKEN) MATCHT(SPACE, &FOLLOW_SPACE_in_connection1071); if (HASEXCEPTION()) { goto ruleconnectionEx; } if (HASFAILED()) { pbelle_sdpParser_connectionPop(ctx); return retval; } if ( BACKTRACKING==0 ) { SPACE80_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, SPACE80)); ADAPTOR->addChild(ADAPTOR, root_0, SPACE80_tree); } FOLLOWPUSH(FOLLOW_connection_address_in_connection1073); connection_address81=connection_address(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleconnectionEx; } if (HASFAILED()) { pbelle_sdpParser_connectionPop(ctx); return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, connection_address81.tree); } } // This is where rules clean up and exit // goto ruleconnectionEx; /* Prevent compiler warnings */ ruleconnectionEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { /* catch(decl,action) */ { ANTLR3_LOG_EXCEPTION(); belle_sip_object_unref(retval.ret ); retval.ret=NULL; } } else { } pbelle_sdpParser_connectionPop(ctx); return retval; } /* $ANTLR end connection */ /** * $ANTLR start bandwidth * ../grammars/belle_sdp.g:188:1: bandwidth returns [belle_sdp_bandwidth_t* ret] :{...}? alpha_num EQUAL bwtype COLON bandwidth_value ; */ static belle_sdpParser_bandwidth_return bandwidth(pbelle_sdpParser ctx) { belle_sdpParser_bandwidth_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN EQUAL83; pANTLR3_COMMON_TOKEN COLON85; belle_sdpParser_alpha_num_return alpha_num82; #undef RETURN_TYPE_alpha_num82 #define RETURN_TYPE_alpha_num82 belle_sdpParser_alpha_num_return belle_sdpParser_bwtype_return bwtype84; #undef RETURN_TYPE_bwtype84 #define RETURN_TYPE_bwtype84 belle_sdpParser_bwtype_return belle_sdpParser_bandwidth_value_return bandwidth_value86; #undef RETURN_TYPE_bandwidth_value86 #define RETURN_TYPE_bandwidth_value86 belle_sdpParser_bandwidth_value_return pANTLR3_BASE_TREE EQUAL83_tree; pANTLR3_BASE_TREE COLON85_tree; /* Initialize rule variables */ ctx->pbelle_sdpParser_bandwidthTop = pbelle_sdpParser_bandwidthPush(ctx); root_0 = NULL; (SCOPE_TOP(bandwidth))->current= belle_sdp_bandwidth_new(); retval.ret=(SCOPE_TOP(bandwidth))->current; EQUAL83 = NULL; COLON85 = NULL; alpha_num82.tree = NULL; bwtype84.tree = NULL; bandwidth_value86.tree = NULL; retval.start = LT(1); retval.stop = retval.start; EQUAL83_tree = NULL; COLON85_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:191:3: ({...}? alpha_num EQUAL bwtype COLON bandwidth_value ) // ../grammars/belle_sdp.g:191:8: {...}? alpha_num EQUAL bwtype COLON bandwidth_value { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); if ( !((IS_TOKEN(b))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sdpParser_bandwidthPop(ctx); return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(b)"; EXCEPTION->ruleName = (void *)"bandwidth"; } FOLLOWPUSH(FOLLOW_alpha_num_in_bandwidth1203); alpha_num82=alpha_num(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulebandwidthEx; } if (HASFAILED()) { pbelle_sdpParser_bandwidthPop(ctx); return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, alpha_num82.tree); EQUAL83 = (pANTLR3_COMMON_TOKEN) MATCHT(EQUAL, &FOLLOW_EQUAL_in_bandwidth1205); if (HASEXCEPTION()) { goto rulebandwidthEx; } if (HASFAILED()) { pbelle_sdpParser_bandwidthPop(ctx); return retval; } if ( BACKTRACKING==0 ) { EQUAL83_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, EQUAL83)); ADAPTOR->addChild(ADAPTOR, root_0, EQUAL83_tree); } FOLLOWPUSH(FOLLOW_bwtype_in_bandwidth1207); bwtype84=bwtype(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulebandwidthEx; } if (HASFAILED()) { pbelle_sdpParser_bandwidthPop(ctx); return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, bwtype84.tree); if ( BACKTRACKING==0 ) { belle_sdp_bandwidth_set_type((SCOPE_TOP(bandwidth))->current,(const char*) (STRSTREAM->toStringTT(STRSTREAM, bwtype84.start, bwtype84.stop)) ->chars); } COLON85 = (pANTLR3_COMMON_TOKEN) MATCHT(COLON, &FOLLOW_COLON_in_bandwidth1217); if (HASEXCEPTION()) { goto rulebandwidthEx; } if (HASFAILED()) { pbelle_sdpParser_bandwidthPop(ctx); return retval; } if ( BACKTRACKING==0 ) { COLON85_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, COLON85)); ADAPTOR->addChild(ADAPTOR, root_0, COLON85_tree); } FOLLOWPUSH(FOLLOW_bandwidth_value_in_bandwidth1219); bandwidth_value86=bandwidth_value(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulebandwidthEx; } if (HASFAILED()) { pbelle_sdpParser_bandwidthPop(ctx); return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, bandwidth_value86.tree); if ( BACKTRACKING==0 ) { belle_sdp_bandwidth_set_value((SCOPE_TOP(bandwidth))->current,atoi((const char*) (STRSTREAM->toStringTT(STRSTREAM, bandwidth_value86.start, bandwidth_value86.stop)) ->chars)); } } } // This is where rules clean up and exit // goto rulebandwidthEx; /* Prevent compiler warnings */ rulebandwidthEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { /* catch(decl,action) */ { ANTLR3_LOG_EXCEPTION(); belle_sip_object_unref(retval.ret ); retval.ret=NULL; } } else { } pbelle_sdpParser_bandwidthPop(ctx); return retval; } /* $ANTLR end bandwidth */ /** * $ANTLR start time_field * ../grammars/belle_sdp.g:199:1: time_field :{...}? alpha_num EQUAL start_time SPACE stop_time ; */ static belle_sdpParser_time_field_return time_field(pbelle_sdpParser ctx) { belle_sdpParser_time_field_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN EQUAL88; pANTLR3_COMMON_TOKEN SPACE90; belle_sdpParser_alpha_num_return alpha_num87; #undef RETURN_TYPE_alpha_num87 #define RETURN_TYPE_alpha_num87 belle_sdpParser_alpha_num_return belle_sdpParser_start_time_return start_time89; #undef RETURN_TYPE_start_time89 #define RETURN_TYPE_start_time89 belle_sdpParser_start_time_return belle_sdpParser_stop_time_return stop_time91; #undef RETURN_TYPE_stop_time91 #define RETURN_TYPE_stop_time91 belle_sdpParser_stop_time_return pANTLR3_BASE_TREE EQUAL88_tree; pANTLR3_BASE_TREE SPACE90_tree; /* Initialize rule variables */ root_0 = NULL; EQUAL88 = NULL; SPACE90 = NULL; alpha_num87.tree = NULL; start_time89.tree = NULL; stop_time91.tree = NULL; retval.start = LT(1); retval.stop = retval.start; EQUAL88_tree = NULL; SPACE90_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:199:11: ({...}? alpha_num EQUAL start_time SPACE stop_time ) // ../grammars/belle_sdp.g:199:15: {...}? alpha_num EQUAL start_time SPACE stop_time { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); if ( !((IS_TOKEN(t))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(t)"; EXCEPTION->ruleName = (void *)"time_field"; } FOLLOWPUSH(FOLLOW_alpha_num_in_time_field1236); alpha_num87=alpha_num(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruletime_fieldEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, alpha_num87.tree); EQUAL88 = (pANTLR3_COMMON_TOKEN) MATCHT(EQUAL, &FOLLOW_EQUAL_in_time_field1238); if (HASEXCEPTION()) { goto ruletime_fieldEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { EQUAL88_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, EQUAL88)); ADAPTOR->addChild(ADAPTOR, root_0, EQUAL88_tree); } FOLLOWPUSH(FOLLOW_start_time_in_time_field1254); start_time89=start_time(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruletime_fieldEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, start_time89.tree); SPACE90 = (pANTLR3_COMMON_TOKEN) MATCHT(SPACE, &FOLLOW_SPACE_in_time_field1270); if (HASEXCEPTION()) { goto ruletime_fieldEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { SPACE90_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, SPACE90)); ADAPTOR->addChild(ADAPTOR, root_0, SPACE90_tree); } FOLLOWPUSH(FOLLOW_stop_time_in_time_field1286); stop_time91=stop_time(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruletime_fieldEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, stop_time91.tree); if ( BACKTRACKING==0 ) { belle_sdp_time_description_t* time_description =belle_sdp_time_description_new(); belle_sdp_time_t* time_value =belle_sdp_time_new(); belle_sip_list_t* time_description_list; belle_sdp_time_set_start(time_value,atoi((const char*)(STRSTREAM->toStringTT(STRSTREAM, start_time89.start, start_time89.stop)) ->chars)); belle_sdp_time_set_stop(time_value,atoi((const char*)(STRSTREAM->toStringTT(STRSTREAM, stop_time91.start, stop_time91.stop)) ->chars)); belle_sdp_time_description_set_time(time_description,time_value); time_description_list = belle_sip_list_append(NULL,time_description); belle_sdp_session_description_set_time_descriptions((SCOPE_TOP(session_description))->current,time_description_list); } } } // This is where rules clean up and exit // goto ruletime_fieldEx; /* Prevent compiler warnings */ ruletime_fieldEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end time_field */ /** * $ANTLR start repeat_time * ../grammars/belle_sdp.g:211:1: repeat_time :{...}? alpha_num EQUAL repeat_interval ( SPACE typed_time )+ ; */ static belle_sdpParser_repeat_time_return repeat_time(pbelle_sdpParser ctx) { belle_sdpParser_repeat_time_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN EQUAL93; pANTLR3_COMMON_TOKEN SPACE95; belle_sdpParser_alpha_num_return alpha_num92; #undef RETURN_TYPE_alpha_num92 #define RETURN_TYPE_alpha_num92 belle_sdpParser_alpha_num_return belle_sdpParser_repeat_interval_return repeat_interval94; #undef RETURN_TYPE_repeat_interval94 #define RETURN_TYPE_repeat_interval94 belle_sdpParser_repeat_interval_return belle_sdpParser_typed_time_return typed_time96; #undef RETURN_TYPE_typed_time96 #define RETURN_TYPE_typed_time96 belle_sdpParser_typed_time_return pANTLR3_BASE_TREE EQUAL93_tree; pANTLR3_BASE_TREE SPACE95_tree; /* Initialize rule variables */ root_0 = NULL; EQUAL93 = NULL; SPACE95 = NULL; alpha_num92.tree = NULL; repeat_interval94.tree = NULL; typed_time96.tree = NULL; retval.start = LT(1); retval.stop = retval.start; EQUAL93_tree = NULL; SPACE95_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:211:12: ({...}? alpha_num EQUAL repeat_interval ( SPACE typed_time )+ ) // ../grammars/belle_sdp.g:211:20: {...}? alpha_num EQUAL repeat_interval ( SPACE typed_time )+ { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); if ( !((IS_TOKEN(r))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(r)"; EXCEPTION->ruleName = (void *)"repeat_time"; } FOLLOWPUSH(FOLLOW_alpha_num_in_repeat_time1302); alpha_num92=alpha_num(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulerepeat_timeEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, alpha_num92.tree); EQUAL93 = (pANTLR3_COMMON_TOKEN) MATCHT(EQUAL, &FOLLOW_EQUAL_in_repeat_time1304); if (HASEXCEPTION()) { goto rulerepeat_timeEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { EQUAL93_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, EQUAL93)); ADAPTOR->addChild(ADAPTOR, root_0, EQUAL93_tree); } FOLLOWPUSH(FOLLOW_repeat_interval_in_repeat_time1306); repeat_interval94=repeat_interval(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulerepeat_timeEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, repeat_interval94.tree); // ../grammars/belle_sdp.g:211:66: ( SPACE typed_time )+ { int cnt14=0; for (;;) { int alt14=2; switch ( LA(1) ) { case SPACE: { alt14=1; } break; } switch (alt14) { case 1: // ../grammars/belle_sdp.g:211:67: SPACE typed_time { SPACE95 = (pANTLR3_COMMON_TOKEN) MATCHT(SPACE, &FOLLOW_SPACE_in_repeat_time1309); if (HASEXCEPTION()) { goto rulerepeat_timeEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { SPACE95_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, SPACE95)); ADAPTOR->addChild(ADAPTOR, root_0, SPACE95_tree); } FOLLOWPUSH(FOLLOW_typed_time_in_repeat_time1311); typed_time96=typed_time(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulerepeat_timeEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, typed_time96.tree); } break; default: if ( cnt14 >= 1 ) { goto loop14; } if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } /* mismatchedSetEx() */ CONSTRUCTEX(); EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME; goto rulerepeat_timeEx; } cnt14++; } loop14: ; /* Jump to here if this rule does not match */ } } } // This is where rules clean up and exit // goto rulerepeat_timeEx; /* Prevent compiler warnings */ rulerepeat_timeEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end repeat_time */ /** * $ANTLR start zone_adjustments * ../grammars/belle_sdp.g:213:1: zone_adjustments :{...}? alpha_num EQUAL sdp_time SPACE ( '-' )? typed_time ( SPACE sdp_time SPACE ( '-' )? typed_time )* ; */ static belle_sdpParser_zone_adjustments_return zone_adjustments(pbelle_sdpParser ctx) { belle_sdpParser_zone_adjustments_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN EQUAL98; pANTLR3_COMMON_TOKEN SPACE100; pANTLR3_COMMON_TOKEN char_literal101; pANTLR3_COMMON_TOKEN SPACE103; pANTLR3_COMMON_TOKEN SPACE105; pANTLR3_COMMON_TOKEN char_literal106; belle_sdpParser_alpha_num_return alpha_num97; #undef RETURN_TYPE_alpha_num97 #define RETURN_TYPE_alpha_num97 belle_sdpParser_alpha_num_return belle_sdpParser_sdp_time_return sdp_time99; #undef RETURN_TYPE_sdp_time99 #define RETURN_TYPE_sdp_time99 belle_sdpParser_sdp_time_return belle_sdpParser_typed_time_return typed_time102; #undef RETURN_TYPE_typed_time102 #define RETURN_TYPE_typed_time102 belle_sdpParser_typed_time_return belle_sdpParser_sdp_time_return sdp_time104; #undef RETURN_TYPE_sdp_time104 #define RETURN_TYPE_sdp_time104 belle_sdpParser_sdp_time_return belle_sdpParser_typed_time_return typed_time107; #undef RETURN_TYPE_typed_time107 #define RETURN_TYPE_typed_time107 belle_sdpParser_typed_time_return pANTLR3_BASE_TREE EQUAL98_tree; pANTLR3_BASE_TREE SPACE100_tree; pANTLR3_BASE_TREE char_literal101_tree; pANTLR3_BASE_TREE SPACE103_tree; pANTLR3_BASE_TREE SPACE105_tree; pANTLR3_BASE_TREE char_literal106_tree; /* Initialize rule variables */ root_0 = NULL; EQUAL98 = NULL; SPACE100 = NULL; char_literal101 = NULL; SPACE103 = NULL; SPACE105 = NULL; char_literal106 = NULL; alpha_num97.tree = NULL; sdp_time99.tree = NULL; typed_time102.tree = NULL; sdp_time104.tree = NULL; typed_time107.tree = NULL; retval.start = LT(1); retval.stop = retval.start; EQUAL98_tree = NULL; SPACE100_tree = NULL; char_literal101_tree = NULL; SPACE103_tree = NULL; SPACE105_tree = NULL; char_literal106_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:213:17: ({...}? alpha_num EQUAL sdp_time SPACE ( '-' )? typed_time ( SPACE sdp_time SPACE ( '-' )? typed_time )* ) // ../grammars/belle_sdp.g:213:22: {...}? alpha_num EQUAL sdp_time SPACE ( '-' )? typed_time ( SPACE sdp_time SPACE ( '-' )? typed_time )* { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); if ( !((IS_TOKEN(z))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(z)"; EXCEPTION->ruleName = (void *)"zone_adjustments"; } FOLLOWPUSH(FOLLOW_alpha_num_in_zone_adjustments1325); alpha_num97=alpha_num(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulezone_adjustmentsEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, alpha_num97.tree); EQUAL98 = (pANTLR3_COMMON_TOKEN) MATCHT(EQUAL, &FOLLOW_EQUAL_in_zone_adjustments1327); if (HASEXCEPTION()) { goto rulezone_adjustmentsEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { EQUAL98_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, EQUAL98)); ADAPTOR->addChild(ADAPTOR, root_0, EQUAL98_tree); } FOLLOWPUSH(FOLLOW_sdp_time_in_zone_adjustments1329); sdp_time99=sdp_time(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulezone_adjustmentsEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, sdp_time99.tree); SPACE100 = (pANTLR3_COMMON_TOKEN) MATCHT(SPACE, &FOLLOW_SPACE_in_zone_adjustments1331); if (HASEXCEPTION()) { goto rulezone_adjustmentsEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { SPACE100_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, SPACE100)); ADAPTOR->addChild(ADAPTOR, root_0, SPACE100_tree); } // ../grammars/belle_sdp.g:213:68: ( '-' )? { int alt15=2; switch ( LA(1) ) { case DASH: { alt15=1; } break; } switch (alt15) { case 1: // ../grammars/belle_sdp.g:213:68: '-' { char_literal101 = (pANTLR3_COMMON_TOKEN) MATCHT(DASH, &FOLLOW_DASH_in_zone_adjustments1333); if (HASEXCEPTION()) { goto rulezone_adjustmentsEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { char_literal101_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, char_literal101)); ADAPTOR->addChild(ADAPTOR, root_0, char_literal101_tree); } } break; } } FOLLOWPUSH(FOLLOW_typed_time_in_zone_adjustments1336); typed_time102=typed_time(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulezone_adjustmentsEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, typed_time102.tree); // ../grammars/belle_sdp.g:214:26: ( SPACE sdp_time SPACE ( '-' )? typed_time )* for (;;) { int alt17=2; switch ( LA(1) ) { case SPACE: { alt17=1; } break; } switch (alt17) { case 1: // ../grammars/belle_sdp.g:214:27: SPACE sdp_time SPACE ( '-' )? typed_time { SPACE103 = (pANTLR3_COMMON_TOKEN) MATCHT(SPACE, &FOLLOW_SPACE_in_zone_adjustments1364); if (HASEXCEPTION()) { goto rulezone_adjustmentsEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { SPACE103_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, SPACE103)); ADAPTOR->addChild(ADAPTOR, root_0, SPACE103_tree); } FOLLOWPUSH(FOLLOW_sdp_time_in_zone_adjustments1366); sdp_time104=sdp_time(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulezone_adjustmentsEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, sdp_time104.tree); SPACE105 = (pANTLR3_COMMON_TOKEN) MATCHT(SPACE, &FOLLOW_SPACE_in_zone_adjustments1368); if (HASEXCEPTION()) { goto rulezone_adjustmentsEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { SPACE105_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, SPACE105)); ADAPTOR->addChild(ADAPTOR, root_0, SPACE105_tree); } // ../grammars/belle_sdp.g:214:48: ( '-' )? { int alt16=2; switch ( LA(1) ) { case DASH: { alt16=1; } break; } switch (alt16) { case 1: // ../grammars/belle_sdp.g:214:48: '-' { char_literal106 = (pANTLR3_COMMON_TOKEN) MATCHT(DASH, &FOLLOW_DASH_in_zone_adjustments1370); if (HASEXCEPTION()) { goto rulezone_adjustmentsEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { char_literal106_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, char_literal106)); ADAPTOR->addChild(ADAPTOR, root_0, char_literal106_tree); } } break; } } FOLLOWPUSH(FOLLOW_typed_time_in_zone_adjustments1373); typed_time107=typed_time(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulezone_adjustmentsEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, typed_time107.tree); } break; default: goto loop17; /* break out of the loop */ break; } } loop17: ; /* Jump out to here if this rule does not match */ } } // This is where rules clean up and exit // goto rulezone_adjustmentsEx; /* Prevent compiler warnings */ rulezone_adjustmentsEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end zone_adjustments */ /** * $ANTLR start key_field * ../grammars/belle_sdp.g:216:1: key_field :{...}? alpha_num EQUAL key_value ; */ static belle_sdpParser_key_field_return key_field(pbelle_sdpParser ctx) { belle_sdpParser_key_field_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN EQUAL109; belle_sdpParser_alpha_num_return alpha_num108; #undef RETURN_TYPE_alpha_num108 #define RETURN_TYPE_alpha_num108 belle_sdpParser_alpha_num_return belle_sdpParser_key_value_return key_value110; #undef RETURN_TYPE_key_value110 #define RETURN_TYPE_key_value110 belle_sdpParser_key_value_return pANTLR3_BASE_TREE EQUAL109_tree; /* Initialize rule variables */ root_0 = NULL; EQUAL109 = NULL; alpha_num108.tree = NULL; key_value110.tree = NULL; retval.start = LT(1); retval.stop = retval.start; EQUAL109_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:216:10: ({...}? alpha_num EQUAL key_value ) // ../grammars/belle_sdp.g:216:22: {...}? alpha_num EQUAL key_value { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); if ( !((IS_TOKEN(k))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(k)"; EXCEPTION->ruleName = (void *)"key_field"; } FOLLOWPUSH(FOLLOW_alpha_num_in_key_field1393); alpha_num108=alpha_num(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulekey_fieldEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, alpha_num108.tree); EQUAL109 = (pANTLR3_COMMON_TOKEN) MATCHT(EQUAL, &FOLLOW_EQUAL_in_key_field1395); if (HASEXCEPTION()) { goto rulekey_fieldEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { EQUAL109_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, EQUAL109)); ADAPTOR->addChild(ADAPTOR, root_0, EQUAL109_tree); } FOLLOWPUSH(FOLLOW_key_value_in_key_field1397); key_value110=key_value(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulekey_fieldEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, key_value110.tree); } } // This is where rules clean up and exit // goto rulekey_fieldEx; /* Prevent compiler warnings */ rulekey_fieldEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end key_field */ /** * $ANTLR start key_value * ../grammars/belle_sdp.g:217:1: key_value options {greedy=false; } : (~ ( CR | LF ) )* ; */ static belle_sdpParser_key_value_return key_value(pbelle_sdpParser ctx) { belle_sdpParser_key_value_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN set111; pANTLR3_BASE_TREE set111_tree; /* Initialize rule variables */ root_0 = NULL; set111 = NULL; retval.start = LT(1); retval.stop = retval.start; set111_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:217:38: ( (~ ( CR | LF ) )* ) // ../grammars/belle_sdp.g:217:47: (~ ( CR | LF ) )* { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); // ../grammars/belle_sdp.g:217:47: (~ ( CR | LF ) )* for (;;) { int alt18=2; switch ( LA(1) ) { case COLON: case COMMA: case COMMON_CHAR: case DASH: case DIGIT: case DOT: case EQUAL: case HEX_CHAR: case LQUOTE: case OCTET: case POS_DIGIT: case RQUOTE: case SLASH: case SPACE: case STAR: case ZERO: case 22: case 23: case 24: case 25: case 26: case 27: case 28: case 29: case 30: case 31: case 32: case 33: case 34: case 35: { alt18=1; } break; } switch (alt18) { case 1: // ../grammars/belle_sdp.g: { set111=(pANTLR3_COMMON_TOKEN)LT(1); if ( ((LA(1) >= COLON) && (LA(1) <= COMMON_CHAR)) || ((LA(1) >= DASH) && (LA(1) <= HEX_CHAR)) || ((LA(1) >= LQUOTE) && (LA(1) <= 35)) ) { CONSUME(); if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, set111)) ); PERRORRECOVERY=ANTLR3_FALSE; FAILEDFLAG=ANTLR3_FALSE; } else { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_MISMATCHED_SET_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_MISMATCHED_SET_NAME; EXCEPTION->expectingSet = NULL; goto rulekey_valueEx; } } break; default: goto loop18; /* break out of the loop */ break; } } loop18: ; /* Jump out to here if this rule does not match */ } } // This is where rules clean up and exit // goto rulekey_valueEx; /* Prevent compiler warnings */ rulekey_valueEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end key_value */ /** * $ANTLR start attribute * ../grammars/belle_sdp.g:226:1: attribute returns [belle_sdp_attribute_t* ret] :{...}? alpha_num EQUAL attribute_content ; */ static belle_sdpParser_attribute_return attribute(pbelle_sdpParser ctx) { belle_sdpParser_attribute_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN EQUAL113; belle_sdpParser_alpha_num_return alpha_num112; #undef RETURN_TYPE_alpha_num112 #define RETURN_TYPE_alpha_num112 belle_sdpParser_alpha_num_return belle_sdpParser_attribute_content_return attribute_content114; #undef RETURN_TYPE_attribute_content114 #define RETURN_TYPE_attribute_content114 belle_sdpParser_attribute_content_return pANTLR3_BASE_TREE EQUAL113_tree; /* Initialize rule variables */ ctx->pbelle_sdpParser_attributeTop = pbelle_sdpParser_attributePush(ctx); root_0 = NULL; retval.ret=NULL; EQUAL113 = NULL; alpha_num112.tree = NULL; attribute_content114.tree = NULL; retval.start = LT(1); retval.stop = retval.start; EQUAL113_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:229:3: ({...}? alpha_num EQUAL attribute_content ) // ../grammars/belle_sdp.g:229:3: {...}? alpha_num EQUAL attribute_content { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); if ( !((IS_TOKEN(a))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sdpParser_attributePop(ctx); return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(a)"; EXCEPTION->ruleName = (void *)"attribute"; } FOLLOWPUSH(FOLLOW_alpha_num_in_attribute1459); alpha_num112=alpha_num(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleattributeEx; } if (HASFAILED()) { pbelle_sdpParser_attributePop(ctx); return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, alpha_num112.tree); EQUAL113 = (pANTLR3_COMMON_TOKEN) MATCHT(EQUAL, &FOLLOW_EQUAL_in_attribute1461); if (HASEXCEPTION()) { goto ruleattributeEx; } if (HASFAILED()) { pbelle_sdpParser_attributePop(ctx); return retval; } if ( BACKTRACKING==0 ) { EQUAL113_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, EQUAL113)); ADAPTOR->addChild(ADAPTOR, root_0, EQUAL113_tree); } FOLLOWPUSH(FOLLOW_attribute_content_in_attribute1463); attribute_content114=attribute_content(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleattributeEx; } if (HASFAILED()) { pbelle_sdpParser_attributePop(ctx); return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, attribute_content114.tree); if ( BACKTRACKING==0 ) { retval.ret= attribute_content114.ret ; } } } // This is where rules clean up and exit // goto ruleattributeEx; /* Prevent compiler warnings */ ruleattributeEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { /* catch(decl,action) */ { ANTLR3_LOG_EXCEPTION(); if (retval.ret ) belle_sip_object_unref(retval.ret ); retval.ret=NULL; } } else { } pbelle_sdpParser_attributePop(ctx); return retval; } /* $ANTLR end attribute */ /** * $ANTLR start attribute_content * ../grammars/belle_sdp.g:237:1: attribute_content returns [belle_sdp_attribute_t* ret] : attribute_name ( COLON val= attribute_value )? ; */ static belle_sdpParser_attribute_content_return attribute_content(pbelle_sdpParser ctx) { belle_sdpParser_attribute_content_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN COLON116; belle_sdpParser_attribute_value_return val; #undef RETURN_TYPE_val #define RETURN_TYPE_val belle_sdpParser_attribute_value_return belle_sdpParser_attribute_name_return attribute_name115; #undef RETURN_TYPE_attribute_name115 #define RETURN_TYPE_attribute_name115 belle_sdpParser_attribute_name_return pANTLR3_BASE_TREE COLON116_tree; /* Initialize rule variables */ root_0 = NULL; retval.ret=NULL; COLON116 = NULL; val.tree = NULL; attribute_name115.tree = NULL; retval.start = LT(1); retval.stop = retval.start; COLON116_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:239:3: ( attribute_name ( COLON val= attribute_value )? ) // ../grammars/belle_sdp.g:239:3: attribute_name ( COLON val= attribute_value )? { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); FOLLOWPUSH(FOLLOW_attribute_name_in_attribute_content1487); attribute_name115=attribute_name(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleattribute_contentEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, attribute_name115.tree); // ../grammars/belle_sdp.g:239:18: ( COLON val= attribute_value )? { int alt19=2; switch ( LA(1) ) { case COLON: { alt19=1; } break; } switch (alt19) { case 1: // ../grammars/belle_sdp.g:239:19: COLON val= attribute_value { COLON116 = (pANTLR3_COMMON_TOKEN) MATCHT(COLON, &FOLLOW_COLON_in_attribute_content1490); if (HASEXCEPTION()) { goto ruleattribute_contentEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { COLON116_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, COLON116)); ADAPTOR->addChild(ADAPTOR, root_0, COLON116_tree); } FOLLOWPUSH(FOLLOW_attribute_value_in_attribute_content1494); val=attribute_value(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleattribute_contentEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, val.tree); if ( BACKTRACKING==0 ) { retval.ret=belle_sdp_attribute_create((const char*) (STRSTREAM->toStringTT(STRSTREAM, attribute_name115.start, attribute_name115.stop)) ->chars,(const char*)(STRSTREAM->toStringTT(STRSTREAM, val.start, val.stop)) ->chars); } } break; } } if ( BACKTRACKING==0 ) { if (!val.tree) retval.ret=belle_sdp_attribute_create((const char*) (STRSTREAM->toStringTT(STRSTREAM, attribute_name115.start, attribute_name115.stop)) ->chars,NULL); } } } // This is where rules clean up and exit // goto ruleattribute_contentEx; /* Prevent compiler warnings */ ruleattribute_contentEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end attribute_content */ /** * $ANTLR start rtcp_xr_attribute * ../grammars/belle_sdp.g:244:1: rtcp_xr_attribute returns [belle_sdp_rtcp_xr_attribute_t* ret] :{...}? alpha_num EQUAL {...}? attribute_name ( COLON rtcp_xr_attribute_value ( SPACE rtcp_xr_attribute_value )* )? ; */ static belle_sdpParser_rtcp_xr_attribute_return rtcp_xr_attribute(pbelle_sdpParser ctx) { belle_sdpParser_rtcp_xr_attribute_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN EQUAL118; pANTLR3_COMMON_TOKEN COLON120; pANTLR3_COMMON_TOKEN SPACE122; belle_sdpParser_alpha_num_return alpha_num117; #undef RETURN_TYPE_alpha_num117 #define RETURN_TYPE_alpha_num117 belle_sdpParser_alpha_num_return belle_sdpParser_attribute_name_return attribute_name119; #undef RETURN_TYPE_attribute_name119 #define RETURN_TYPE_attribute_name119 belle_sdpParser_attribute_name_return belle_sdpParser_rtcp_xr_attribute_value_return rtcp_xr_attribute_value121; #undef RETURN_TYPE_rtcp_xr_attribute_value121 #define RETURN_TYPE_rtcp_xr_attribute_value121 belle_sdpParser_rtcp_xr_attribute_value_return belle_sdpParser_rtcp_xr_attribute_value_return rtcp_xr_attribute_value123; #undef RETURN_TYPE_rtcp_xr_attribute_value123 #define RETURN_TYPE_rtcp_xr_attribute_value123 belle_sdpParser_rtcp_xr_attribute_value_return pANTLR3_BASE_TREE EQUAL118_tree; pANTLR3_BASE_TREE COLON120_tree; pANTLR3_BASE_TREE SPACE122_tree; /* Initialize rule variables */ ctx->pbelle_sdpParser_rtcp_xr_attributeTop = pbelle_sdpParser_rtcp_xr_attributePush(ctx); root_0 = NULL; (SCOPE_TOP(rtcp_xr_attribute))->current= belle_sdp_rtcp_xr_attribute_new(); retval.ret= (SCOPE_TOP(rtcp_xr_attribute))->current; EQUAL118 = NULL; COLON120 = NULL; SPACE122 = NULL; alpha_num117.tree = NULL; attribute_name119.tree = NULL; rtcp_xr_attribute_value121.tree = NULL; rtcp_xr_attribute_value123.tree = NULL; retval.start = LT(1); retval.stop = retval.start; EQUAL118_tree = NULL; COLON120_tree = NULL; SPACE122_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:247:3: ({...}? alpha_num EQUAL {...}? attribute_name ( COLON rtcp_xr_attribute_value ( SPACE rtcp_xr_attribute_value )* )? ) // ../grammars/belle_sdp.g:247:3: {...}? alpha_num EQUAL {...}? attribute_name ( COLON rtcp_xr_attribute_value ( SPACE rtcp_xr_attribute_value )* )? { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); if ( !((IS_TOKEN(a))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sdpParser_rtcp_xr_attributePop(ctx); return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(a)"; EXCEPTION->ruleName = (void *)"rtcp_xr_attribute"; } FOLLOWPUSH(FOLLOW_alpha_num_in_rtcp_xr_attribute1523); alpha_num117=alpha_num(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulertcp_xr_attributeEx; } if (HASFAILED()) { pbelle_sdpParser_rtcp_xr_attributePop(ctx); return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, alpha_num117.tree); EQUAL118 = (pANTLR3_COMMON_TOKEN) MATCHT(EQUAL, &FOLLOW_EQUAL_in_rtcp_xr_attribute1525); if (HASEXCEPTION()) { goto rulertcp_xr_attributeEx; } if (HASFAILED()) { pbelle_sdpParser_rtcp_xr_attributePop(ctx); return retval; } if ( BACKTRACKING==0 ) { EQUAL118_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, EQUAL118)); ADAPTOR->addChild(ADAPTOR, root_0, EQUAL118_tree); } if ( !((IS_TOKEN(rtcp-xr))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sdpParser_rtcp_xr_attributePop(ctx); return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(rtcp-xr)"; EXCEPTION->ruleName = (void *)"rtcp_xr_attribute"; } FOLLOWPUSH(FOLLOW_attribute_name_in_rtcp_xr_attribute1529); attribute_name119=attribute_name(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulertcp_xr_attributeEx; } if (HASFAILED()) { pbelle_sdpParser_rtcp_xr_attributePop(ctx); return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, attribute_name119.tree); // ../grammars/belle_sdp.g:247:83: ( COLON rtcp_xr_attribute_value ( SPACE rtcp_xr_attribute_value )* )? { int alt21=2; switch ( LA(1) ) { case COLON: { alt21=1; } break; } switch (alt21) { case 1: // ../grammars/belle_sdp.g:247:84: COLON rtcp_xr_attribute_value ( SPACE rtcp_xr_attribute_value )* { COLON120 = (pANTLR3_COMMON_TOKEN) MATCHT(COLON, &FOLLOW_COLON_in_rtcp_xr_attribute1534); if (HASEXCEPTION()) { goto rulertcp_xr_attributeEx; } if (HASFAILED()) { pbelle_sdpParser_rtcp_xr_attributePop(ctx); return retval; } if ( BACKTRACKING==0 ) { COLON120_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, COLON120)); ADAPTOR->addChild(ADAPTOR, root_0, COLON120_tree); } FOLLOWPUSH(FOLLOW_rtcp_xr_attribute_value_in_rtcp_xr_attribute1536); rtcp_xr_attribute_value121=rtcp_xr_attribute_value(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulertcp_xr_attributeEx; } if (HASFAILED()) { pbelle_sdpParser_rtcp_xr_attributePop(ctx); return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, rtcp_xr_attribute_value121.tree); // ../grammars/belle_sdp.g:247:114: ( SPACE rtcp_xr_attribute_value )* for (;;) { int alt20=2; switch ( LA(1) ) { case SPACE: { alt20=1; } break; } switch (alt20) { case 1: // ../grammars/belle_sdp.g:247:115: SPACE rtcp_xr_attribute_value { SPACE122 = (pANTLR3_COMMON_TOKEN) MATCHT(SPACE, &FOLLOW_SPACE_in_rtcp_xr_attribute1539); if (HASEXCEPTION()) { goto rulertcp_xr_attributeEx; } if (HASFAILED()) { pbelle_sdpParser_rtcp_xr_attributePop(ctx); return retval; } if ( BACKTRACKING==0 ) { SPACE122_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, SPACE122)); ADAPTOR->addChild(ADAPTOR, root_0, SPACE122_tree); } FOLLOWPUSH(FOLLOW_rtcp_xr_attribute_value_in_rtcp_xr_attribute1541); rtcp_xr_attribute_value123=rtcp_xr_attribute_value(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulertcp_xr_attributeEx; } if (HASFAILED()) { pbelle_sdpParser_rtcp_xr_attributePop(ctx); return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, rtcp_xr_attribute_value123.tree); } break; default: goto loop20; /* break out of the loop */ break; } } loop20: ; /* Jump out to here if this rule does not match */ } break; } } } } // This is where rules clean up and exit // goto rulertcp_xr_attributeEx; /* Prevent compiler warnings */ rulertcp_xr_attributeEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { /* catch(decl,action) */ { ANTLR3_LOG_EXCEPTION(); belle_sip_object_unref(retval.ret ); retval.ret=NULL; } } else { } pbelle_sdpParser_rtcp_xr_attributePop(ctx); return retval; } /* $ANTLR end rtcp_xr_attribute */ /** * $ANTLR start rtcp_xr_attribute_value * ../grammars/belle_sdp.g:254:1: rtcp_xr_attribute_value : ( ( pkt_loss_rle )=> pkt_loss_rle | ( pkt_dup_rle )=> pkt_dup_rle | ( pkt_rcpt_times )=> pkt_rcpt_times | ( rcvr_rtt )=> rcvr_rtt | ( stat_summary )=> stat_summary | ( voip_metrics )=> voip_metrics ); */ static belle_sdpParser_rtcp_xr_attribute_value_return rtcp_xr_attribute_value(pbelle_sdpParser ctx) { belle_sdpParser_rtcp_xr_attribute_value_return retval; pANTLR3_BASE_TREE root_0; belle_sdpParser_pkt_loss_rle_return pkt_loss_rle124; #undef RETURN_TYPE_pkt_loss_rle124 #define RETURN_TYPE_pkt_loss_rle124 belle_sdpParser_pkt_loss_rle_return belle_sdpParser_pkt_dup_rle_return pkt_dup_rle125; #undef RETURN_TYPE_pkt_dup_rle125 #define RETURN_TYPE_pkt_dup_rle125 belle_sdpParser_pkt_dup_rle_return belle_sdpParser_pkt_rcpt_times_return pkt_rcpt_times126; #undef RETURN_TYPE_pkt_rcpt_times126 #define RETURN_TYPE_pkt_rcpt_times126 belle_sdpParser_pkt_rcpt_times_return belle_sdpParser_rcvr_rtt_return rcvr_rtt127; #undef RETURN_TYPE_rcvr_rtt127 #define RETURN_TYPE_rcvr_rtt127 belle_sdpParser_rcvr_rtt_return belle_sdpParser_stat_summary_return stat_summary128; #undef RETURN_TYPE_stat_summary128 #define RETURN_TYPE_stat_summary128 belle_sdpParser_stat_summary_return belle_sdpParser_voip_metrics_return voip_metrics129; #undef RETURN_TYPE_voip_metrics129 #define RETURN_TYPE_voip_metrics129 belle_sdpParser_voip_metrics_return /* Initialize rule variables */ root_0 = NULL; pkt_loss_rle124.tree = NULL; pkt_dup_rle125.tree = NULL; pkt_rcpt_times126.tree = NULL; rcvr_rtt127.tree = NULL; stat_summary128.tree = NULL; voip_metrics129.tree = NULL; retval.start = LT(1); retval.stop = retval.start; retval.tree = NULL; { { // ../grammars/belle_sdp.g:254:25: ( ( pkt_loss_rle )=> pkt_loss_rle | ( pkt_dup_rle )=> pkt_dup_rle | ( pkt_rcpt_times )=> pkt_rcpt_times | ( rcvr_rtt )=> rcvr_rtt | ( stat_summary )=> stat_summary | ( voip_metrics )=> voip_metrics ) ANTLR3_UINT32 alt22; alt22=6; switch ( LA(1) ) { case COMMON_CHAR: case HEX_CHAR: { { int LA22_1 = LA(2); if ( (synpred4_belle_sdp(ctx)) && (LA22_1 == EQUAL)) { alt22=4; } else if ( (synpred4_belle_sdp(ctx)) && (LA22_1 == COMMON_CHAR || LA22_1 == HEX_CHAR)) { alt22=4; } else if ( (synpred4_belle_sdp(ctx)) && (LA22_1 == DASH)) { alt22=4; } else if ( (( (( ((IS_TOKEN(pkt-loss-rle))) && ((IS_TOKEN(pkt-loss-rle))) )) && (synpred1_belle_sdp(ctx)) ))) { alt22=1; } else if ( (( (( ((IS_TOKEN(pkt-dup-rle))) && ((IS_TOKEN(pkt-dup-rle))) )) && (synpred2_belle_sdp(ctx)) ))) { alt22=2; } else if ( (( (( (synpred3_belle_sdp(ctx)) && (synpred3_belle_sdp(ctx)) )) && ((IS_TOKEN(pkt-rcpt-times))) ))) { alt22=3; } else if ( (( (( ((IS_TOKEN(stat-summary))) && ((IS_TOKEN(stat-summary))) )) && (synpred5_belle_sdp(ctx)) ))) { alt22=5; } else if ( (( (( ((IS_TOKEN(voip-metrics))) && ((IS_TOKEN(voip-metrics))) )) && (synpred6_belle_sdp(ctx)) ))) { alt22=6; } else { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 22; EXCEPTION->state = 1; goto rulertcp_xr_attribute_valueEx; } } } break; case DASH: { { int LA22_2 = LA(2); if ( (synpred4_belle_sdp(ctx)) && (LA22_2 == EQUAL)) { alt22=4; } else if ( (synpred4_belle_sdp(ctx)) && (LA22_2 == COMMON_CHAR || LA22_2 == HEX_CHAR)) { alt22=4; } else if ( (synpred4_belle_sdp(ctx)) && (LA22_2 == DASH)) { alt22=4; } else if ( (( (( ((IS_TOKEN(pkt-loss-rle))) && ((IS_TOKEN(pkt-loss-rle))) )) && (synpred1_belle_sdp(ctx)) ))) { alt22=1; } else if ( (( (( ((IS_TOKEN(pkt-dup-rle))) && ((IS_TOKEN(pkt-dup-rle))) )) && (synpred2_belle_sdp(ctx)) ))) { alt22=2; } else if ( (( (( (synpred3_belle_sdp(ctx)) && (synpred3_belle_sdp(ctx)) )) && ((IS_TOKEN(pkt-rcpt-times))) ))) { alt22=3; } else if ( (( (( ((IS_TOKEN(stat-summary))) && ((IS_TOKEN(stat-summary))) )) && (synpred5_belle_sdp(ctx)) ))) { alt22=5; } else if ( (( (( ((IS_TOKEN(voip-metrics))) && ((IS_TOKEN(voip-metrics))) )) && (synpred6_belle_sdp(ctx)) ))) { alt22=6; } else { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 22; EXCEPTION->state = 2; goto rulertcp_xr_attribute_valueEx; } } } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 22; EXCEPTION->state = 0; goto rulertcp_xr_attribute_valueEx; } switch (alt22) { case 1: // ../grammars/belle_sdp.g:255:2: ( pkt_loss_rle )=> pkt_loss_rle { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); FOLLOWPUSH(FOLLOW_pkt_loss_rle_in_rtcp_xr_attribute_value1564); pkt_loss_rle124=pkt_loss_rle(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulertcp_xr_attribute_valueEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, pkt_loss_rle124.tree); } break; case 2: // ../grammars/belle_sdp.g:256:3: ( pkt_dup_rle )=> pkt_dup_rle { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); FOLLOWPUSH(FOLLOW_pkt_dup_rle_in_rtcp_xr_attribute_value1573); pkt_dup_rle125=pkt_dup_rle(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulertcp_xr_attribute_valueEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, pkt_dup_rle125.tree); } break; case 3: // ../grammars/belle_sdp.g:257:3: ( pkt_rcpt_times )=> pkt_rcpt_times { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); FOLLOWPUSH(FOLLOW_pkt_rcpt_times_in_rtcp_xr_attribute_value1582); pkt_rcpt_times126=pkt_rcpt_times(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulertcp_xr_attribute_valueEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, pkt_rcpt_times126.tree); } break; case 4: // ../grammars/belle_sdp.g:258:3: ( rcvr_rtt )=> rcvr_rtt { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); FOLLOWPUSH(FOLLOW_rcvr_rtt_in_rtcp_xr_attribute_value1591); rcvr_rtt127=rcvr_rtt(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulertcp_xr_attribute_valueEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, rcvr_rtt127.tree); } break; case 5: // ../grammars/belle_sdp.g:259:3: ( stat_summary )=> stat_summary { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); FOLLOWPUSH(FOLLOW_stat_summary_in_rtcp_xr_attribute_value1600); stat_summary128=stat_summary(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulertcp_xr_attribute_valueEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, stat_summary128.tree); } break; case 6: // ../grammars/belle_sdp.g:260:3: ( voip_metrics )=> voip_metrics { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); FOLLOWPUSH(FOLLOW_voip_metrics_in_rtcp_xr_attribute_value1609); voip_metrics129=voip_metrics(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulertcp_xr_attribute_valueEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, voip_metrics129.tree); } break; } } } // This is where rules clean up and exit // goto rulertcp_xr_attribute_valueEx; /* Prevent compiler warnings */ rulertcp_xr_attribute_valueEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end rtcp_xr_attribute_value */ /** * $ANTLR start pkt_loss_rle * ../grammars/belle_sdp.g:262:1: pkt_loss_rle :{...}? rtcp_xr_attribute_name ( EQUAL rtcp_xr_max_size )? ; */ static belle_sdpParser_pkt_loss_rle_return pkt_loss_rle(pbelle_sdpParser ctx) { belle_sdpParser_pkt_loss_rle_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN EQUAL131; belle_sdpParser_rtcp_xr_attribute_name_return rtcp_xr_attribute_name130; #undef RETURN_TYPE_rtcp_xr_attribute_name130 #define RETURN_TYPE_rtcp_xr_attribute_name130 belle_sdpParser_rtcp_xr_attribute_name_return belle_sdpParser_rtcp_xr_max_size_return rtcp_xr_max_size132; #undef RETURN_TYPE_rtcp_xr_max_size132 #define RETURN_TYPE_rtcp_xr_max_size132 belle_sdpParser_rtcp_xr_max_size_return pANTLR3_BASE_TREE EQUAL131_tree; /* Initialize rule variables */ root_0 = NULL; EQUAL131 = NULL; rtcp_xr_attribute_name130.tree = NULL; rtcp_xr_max_size132.tree = NULL; retval.start = LT(1); retval.stop = retval.start; EQUAL131_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:262:14: ({...}? rtcp_xr_attribute_name ( EQUAL rtcp_xr_max_size )? ) // ../grammars/belle_sdp.g:263:2: {...}? rtcp_xr_attribute_name ( EQUAL rtcp_xr_max_size )? { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); if ( !((IS_TOKEN(pkt-loss-rle))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(pkt-loss-rle)"; EXCEPTION->ruleName = (void *)"pkt_loss_rle"; } FOLLOWPUSH(FOLLOW_rtcp_xr_attribute_name_in_pkt_loss_rle1620); rtcp_xr_attribute_name130=rtcp_xr_attribute_name(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulepkt_loss_rleEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, rtcp_xr_attribute_name130.tree); // ../grammars/belle_sdp.g:263:70: ( EQUAL rtcp_xr_max_size )? { int alt23=2; switch ( LA(1) ) { case EQUAL: { alt23=1; } break; } switch (alt23) { case 1: // ../grammars/belle_sdp.g:263:71: EQUAL rtcp_xr_max_size { EQUAL131 = (pANTLR3_COMMON_TOKEN) MATCHT(EQUAL, &FOLLOW_EQUAL_in_pkt_loss_rle1625); if (HASEXCEPTION()) { goto rulepkt_loss_rleEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { EQUAL131_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, EQUAL131)); ADAPTOR->addChild(ADAPTOR, root_0, EQUAL131_tree); } FOLLOWPUSH(FOLLOW_rtcp_xr_max_size_in_pkt_loss_rle1627); rtcp_xr_max_size132=rtcp_xr_max_size(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulepkt_loss_rleEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, rtcp_xr_max_size132.tree); } break; } } } } // This is where rules clean up and exit // goto rulepkt_loss_rleEx; /* Prevent compiler warnings */ rulepkt_loss_rleEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end pkt_loss_rle */ /** * $ANTLR start pkt_dup_rle * ../grammars/belle_sdp.g:265:1: pkt_dup_rle :{...}? rtcp_xr_attribute_name ( EQUAL rtcp_xr_max_size )? ; */ static belle_sdpParser_pkt_dup_rle_return pkt_dup_rle(pbelle_sdpParser ctx) { belle_sdpParser_pkt_dup_rle_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN EQUAL134; belle_sdpParser_rtcp_xr_attribute_name_return rtcp_xr_attribute_name133; #undef RETURN_TYPE_rtcp_xr_attribute_name133 #define RETURN_TYPE_rtcp_xr_attribute_name133 belle_sdpParser_rtcp_xr_attribute_name_return belle_sdpParser_rtcp_xr_max_size_return rtcp_xr_max_size135; #undef RETURN_TYPE_rtcp_xr_max_size135 #define RETURN_TYPE_rtcp_xr_max_size135 belle_sdpParser_rtcp_xr_max_size_return pANTLR3_BASE_TREE EQUAL134_tree; /* Initialize rule variables */ root_0 = NULL; EQUAL134 = NULL; rtcp_xr_attribute_name133.tree = NULL; rtcp_xr_max_size135.tree = NULL; retval.start = LT(1); retval.stop = retval.start; EQUAL134_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:265:13: ({...}? rtcp_xr_attribute_name ( EQUAL rtcp_xr_max_size )? ) // ../grammars/belle_sdp.g:266:2: {...}? rtcp_xr_attribute_name ( EQUAL rtcp_xr_max_size )? { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); if ( !((IS_TOKEN(pkt-dup-rle))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(pkt-dup-rle)"; EXCEPTION->ruleName = (void *)"pkt_dup_rle"; } FOLLOWPUSH(FOLLOW_rtcp_xr_attribute_name_in_pkt_dup_rle1641); rtcp_xr_attribute_name133=rtcp_xr_attribute_name(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulepkt_dup_rleEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, rtcp_xr_attribute_name133.tree); // ../grammars/belle_sdp.g:266:68: ( EQUAL rtcp_xr_max_size )? { int alt24=2; switch ( LA(1) ) { case EQUAL: { alt24=1; } break; } switch (alt24) { case 1: // ../grammars/belle_sdp.g:266:69: EQUAL rtcp_xr_max_size { EQUAL134 = (pANTLR3_COMMON_TOKEN) MATCHT(EQUAL, &FOLLOW_EQUAL_in_pkt_dup_rle1646); if (HASEXCEPTION()) { goto rulepkt_dup_rleEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { EQUAL134_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, EQUAL134)); ADAPTOR->addChild(ADAPTOR, root_0, EQUAL134_tree); } FOLLOWPUSH(FOLLOW_rtcp_xr_max_size_in_pkt_dup_rle1648); rtcp_xr_max_size135=rtcp_xr_max_size(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulepkt_dup_rleEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, rtcp_xr_max_size135.tree); } break; } } } } // This is where rules clean up and exit // goto rulepkt_dup_rleEx; /* Prevent compiler warnings */ rulepkt_dup_rleEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end pkt_dup_rle */ /** * $ANTLR start pkt_rcpt_times * ../grammars/belle_sdp.g:268:1: pkt_rcpt_times :{...}? rtcp_xr_attribute_name ( EQUAL rtcp_xr_max_size )? ; */ static belle_sdpParser_pkt_rcpt_times_return pkt_rcpt_times(pbelle_sdpParser ctx) { belle_sdpParser_pkt_rcpt_times_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN EQUAL137; belle_sdpParser_rtcp_xr_attribute_name_return rtcp_xr_attribute_name136; #undef RETURN_TYPE_rtcp_xr_attribute_name136 #define RETURN_TYPE_rtcp_xr_attribute_name136 belle_sdpParser_rtcp_xr_attribute_name_return belle_sdpParser_rtcp_xr_max_size_return rtcp_xr_max_size138; #undef RETURN_TYPE_rtcp_xr_max_size138 #define RETURN_TYPE_rtcp_xr_max_size138 belle_sdpParser_rtcp_xr_max_size_return pANTLR3_BASE_TREE EQUAL137_tree; /* Initialize rule variables */ root_0 = NULL; EQUAL137 = NULL; rtcp_xr_attribute_name136.tree = NULL; rtcp_xr_max_size138.tree = NULL; retval.start = LT(1); retval.stop = retval.start; EQUAL137_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:268:16: ({...}? rtcp_xr_attribute_name ( EQUAL rtcp_xr_max_size )? ) // ../grammars/belle_sdp.g:269:2: {...}? rtcp_xr_attribute_name ( EQUAL rtcp_xr_max_size )? { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); if ( !((IS_TOKEN(pkt-rcpt-times))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(pkt-rcpt-times)"; EXCEPTION->ruleName = (void *)"pkt_rcpt_times"; } FOLLOWPUSH(FOLLOW_rtcp_xr_attribute_name_in_pkt_rcpt_times1662); rtcp_xr_attribute_name136=rtcp_xr_attribute_name(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulepkt_rcpt_timesEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, rtcp_xr_attribute_name136.tree); // ../grammars/belle_sdp.g:269:74: ( EQUAL rtcp_xr_max_size )? { int alt25=2; switch ( LA(1) ) { case EQUAL: { alt25=1; } break; } switch (alt25) { case 1: // ../grammars/belle_sdp.g:269:75: EQUAL rtcp_xr_max_size { EQUAL137 = (pANTLR3_COMMON_TOKEN) MATCHT(EQUAL, &FOLLOW_EQUAL_in_pkt_rcpt_times1667); if (HASEXCEPTION()) { goto rulepkt_rcpt_timesEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { EQUAL137_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, EQUAL137)); ADAPTOR->addChild(ADAPTOR, root_0, EQUAL137_tree); } FOLLOWPUSH(FOLLOW_rtcp_xr_max_size_in_pkt_rcpt_times1669); rtcp_xr_max_size138=rtcp_xr_max_size(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulepkt_rcpt_timesEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, rtcp_xr_max_size138.tree); } break; } } } } // This is where rules clean up and exit // goto rulepkt_rcpt_timesEx; /* Prevent compiler warnings */ rulepkt_rcpt_timesEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end pkt_rcpt_times */ /** * $ANTLR start rcvr_rtt * ../grammars/belle_sdp.g:271:1: rcvr_rtt :{...}? rtcp_xr_attribute_name EQUAL {...}? rtcp_xr_rcvr_rtt_mode ( COLON val= rtcp_xr_max_size )? ; */ static belle_sdpParser_rcvr_rtt_return rcvr_rtt(pbelle_sdpParser ctx) { belle_sdpParser_rcvr_rtt_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN EQUAL140; pANTLR3_COMMON_TOKEN COLON142; belle_sdpParser_rtcp_xr_max_size_return val; #undef RETURN_TYPE_val #define RETURN_TYPE_val belle_sdpParser_rtcp_xr_max_size_return belle_sdpParser_rtcp_xr_attribute_name_return rtcp_xr_attribute_name139; #undef RETURN_TYPE_rtcp_xr_attribute_name139 #define RETURN_TYPE_rtcp_xr_attribute_name139 belle_sdpParser_rtcp_xr_attribute_name_return belle_sdpParser_rtcp_xr_rcvr_rtt_mode_return rtcp_xr_rcvr_rtt_mode141; #undef RETURN_TYPE_rtcp_xr_rcvr_rtt_mode141 #define RETURN_TYPE_rtcp_xr_rcvr_rtt_mode141 belle_sdpParser_rtcp_xr_rcvr_rtt_mode_return pANTLR3_BASE_TREE EQUAL140_tree; pANTLR3_BASE_TREE COLON142_tree; /* Initialize rule variables */ root_0 = NULL; EQUAL140 = NULL; COLON142 = NULL; val.tree = NULL; rtcp_xr_attribute_name139.tree = NULL; rtcp_xr_rcvr_rtt_mode141.tree = NULL; retval.start = LT(1); retval.stop = retval.start; EQUAL140_tree = NULL; COLON142_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:271:10: ({...}? rtcp_xr_attribute_name EQUAL {...}? rtcp_xr_rcvr_rtt_mode ( COLON val= rtcp_xr_max_size )? ) // ../grammars/belle_sdp.g:272:2: {...}? rtcp_xr_attribute_name EQUAL {...}? rtcp_xr_rcvr_rtt_mode ( COLON val= rtcp_xr_max_size )? { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); if ( !((IS_TOKEN(rcvr-rtt))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(rcvr-rtt)"; EXCEPTION->ruleName = (void *)"rcvr_rtt"; } FOLLOWPUSH(FOLLOW_rtcp_xr_attribute_name_in_rcvr_rtt1683); rtcp_xr_attribute_name139=rtcp_xr_attribute_name(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulercvr_rttEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, rtcp_xr_attribute_name139.tree); EQUAL140 = (pANTLR3_COMMON_TOKEN) MATCHT(EQUAL, &FOLLOW_EQUAL_in_rcvr_rtt1687); if (HASEXCEPTION()) { goto rulercvr_rttEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { EQUAL140_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, EQUAL140)); ADAPTOR->addChild(ADAPTOR, root_0, EQUAL140_tree); } if ( !((IS_TOKEN(all) || IS_TOKEN(sender))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(all) || IS_TOKEN(sender)"; EXCEPTION->ruleName = (void *)"rcvr_rtt"; } FOLLOWPUSH(FOLLOW_rtcp_xr_rcvr_rtt_mode_in_rcvr_rtt1691); rtcp_xr_rcvr_rtt_mode141=rtcp_xr_rcvr_rtt_mode(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulercvr_rttEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, rtcp_xr_rcvr_rtt_mode141.tree); // ../grammars/belle_sdp.g:272:127: ( COLON val= rtcp_xr_max_size )? { int alt26=2; switch ( LA(1) ) { case COLON: { alt26=1; } break; } switch (alt26) { case 1: // ../grammars/belle_sdp.g:272:128: COLON val= rtcp_xr_max_size { COLON142 = (pANTLR3_COMMON_TOKEN) MATCHT(COLON, &FOLLOW_COLON_in_rcvr_rtt1694); if (HASEXCEPTION()) { goto rulercvr_rttEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { COLON142_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, COLON142)); ADAPTOR->addChild(ADAPTOR, root_0, COLON142_tree); } FOLLOWPUSH(FOLLOW_rtcp_xr_max_size_in_rcvr_rtt1698); val=rtcp_xr_max_size(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulercvr_rttEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, val.tree); } break; } } if ( BACKTRACKING==0 ) { belle_sdp_rtcp_xr_attribute_set_rcvr_rtt_mode((SCOPE_TOP(rtcp_xr_attribute))->current,(const char*) (STRSTREAM->toStringTT(STRSTREAM, rtcp_xr_rcvr_rtt_mode141.start, rtcp_xr_rcvr_rtt_mode141.stop)) ->chars); if (val.tree) belle_sdp_rtcp_xr_attribute_set_rcvr_rtt_max_size((SCOPE_TOP(rtcp_xr_attribute))->current,atoi((const char*) (STRSTREAM->toStringTT(STRSTREAM, val.start, val.stop)) ->chars)); } } } // This is where rules clean up and exit // goto rulercvr_rttEx; /* Prevent compiler warnings */ rulercvr_rttEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end rcvr_rtt */ /** * $ANTLR start stat_summary * ../grammars/belle_sdp.g:277:1: stat_summary :{...}? rtcp_xr_attribute_name ( EQUAL rtcp_xr_stat_summary_flag ( COMMA rtcp_xr_stat_summary_flag )* )? ; */ static belle_sdpParser_stat_summary_return stat_summary(pbelle_sdpParser ctx) { belle_sdpParser_stat_summary_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN EQUAL144; pANTLR3_COMMON_TOKEN COMMA146; belle_sdpParser_rtcp_xr_attribute_name_return rtcp_xr_attribute_name143; #undef RETURN_TYPE_rtcp_xr_attribute_name143 #define RETURN_TYPE_rtcp_xr_attribute_name143 belle_sdpParser_rtcp_xr_attribute_name_return belle_sdpParser_rtcp_xr_stat_summary_flag_return rtcp_xr_stat_summary_flag145; #undef RETURN_TYPE_rtcp_xr_stat_summary_flag145 #define RETURN_TYPE_rtcp_xr_stat_summary_flag145 belle_sdpParser_rtcp_xr_stat_summary_flag_return belle_sdpParser_rtcp_xr_stat_summary_flag_return rtcp_xr_stat_summary_flag147; #undef RETURN_TYPE_rtcp_xr_stat_summary_flag147 #define RETURN_TYPE_rtcp_xr_stat_summary_flag147 belle_sdpParser_rtcp_xr_stat_summary_flag_return pANTLR3_BASE_TREE EQUAL144_tree; pANTLR3_BASE_TREE COMMA146_tree; /* Initialize rule variables */ root_0 = NULL; EQUAL144 = NULL; COMMA146 = NULL; rtcp_xr_attribute_name143.tree = NULL; rtcp_xr_stat_summary_flag145.tree = NULL; rtcp_xr_stat_summary_flag147.tree = NULL; retval.start = LT(1); retval.stop = retval.start; EQUAL144_tree = NULL; COMMA146_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:277:14: ({...}? rtcp_xr_attribute_name ( EQUAL rtcp_xr_stat_summary_flag ( COMMA rtcp_xr_stat_summary_flag )* )? ) // ../grammars/belle_sdp.g:278:2: {...}? rtcp_xr_attribute_name ( EQUAL rtcp_xr_stat_summary_flag ( COMMA rtcp_xr_stat_summary_flag )* )? { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); if ( !((IS_TOKEN(stat-summary))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(stat-summary)"; EXCEPTION->ruleName = (void *)"stat_summary"; } FOLLOWPUSH(FOLLOW_rtcp_xr_attribute_name_in_stat_summary1713); rtcp_xr_attribute_name143=rtcp_xr_attribute_name(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulestat_summaryEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, rtcp_xr_attribute_name143.tree); if ( BACKTRACKING==0 ) { belle_sdp_rtcp_xr_attribute_set_stat_summary((SCOPE_TOP(rtcp_xr_attribute))->current,1); } // ../grammars/belle_sdp.g:280:4: ( EQUAL rtcp_xr_stat_summary_flag ( COMMA rtcp_xr_stat_summary_flag )* )? { int alt28=2; switch ( LA(1) ) { case EQUAL: { alt28=1; } break; } switch (alt28) { case 1: // ../grammars/belle_sdp.g:280:5: EQUAL rtcp_xr_stat_summary_flag ( COMMA rtcp_xr_stat_summary_flag )* { EQUAL144 = (pANTLR3_COMMON_TOKEN) MATCHT(EQUAL, &FOLLOW_EQUAL_in_stat_summary1720); if (HASEXCEPTION()) { goto rulestat_summaryEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { EQUAL144_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, EQUAL144)); ADAPTOR->addChild(ADAPTOR, root_0, EQUAL144_tree); } FOLLOWPUSH(FOLLOW_rtcp_xr_stat_summary_flag_in_stat_summary1722); rtcp_xr_stat_summary_flag145=rtcp_xr_stat_summary_flag(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulestat_summaryEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, rtcp_xr_stat_summary_flag145.tree); // ../grammars/belle_sdp.g:280:37: ( COMMA rtcp_xr_stat_summary_flag )* for (;;) { int alt27=2; switch ( LA(1) ) { case COMMA: { alt27=1; } break; } switch (alt27) { case 1: // ../grammars/belle_sdp.g:280:38: COMMA rtcp_xr_stat_summary_flag { COMMA146 = (pANTLR3_COMMON_TOKEN) MATCHT(COMMA, &FOLLOW_COMMA_in_stat_summary1725); if (HASEXCEPTION()) { goto rulestat_summaryEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { COMMA146_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, COMMA146)); ADAPTOR->addChild(ADAPTOR, root_0, COMMA146_tree); } FOLLOWPUSH(FOLLOW_rtcp_xr_stat_summary_flag_in_stat_summary1727); rtcp_xr_stat_summary_flag147=rtcp_xr_stat_summary_flag(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulestat_summaryEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, rtcp_xr_stat_summary_flag147.tree); } break; default: goto loop27; /* break out of the loop */ break; } } loop27: ; /* Jump out to here if this rule does not match */ } break; } } } } // This is where rules clean up and exit // goto rulestat_summaryEx; /* Prevent compiler warnings */ rulestat_summaryEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end stat_summary */ /** * $ANTLR start voip_metrics * ../grammars/belle_sdp.g:282:1: voip_metrics :{...}? rtcp_xr_attribute_name ; */ static belle_sdpParser_voip_metrics_return voip_metrics(pbelle_sdpParser ctx) { belle_sdpParser_voip_metrics_return retval; pANTLR3_BASE_TREE root_0; belle_sdpParser_rtcp_xr_attribute_name_return rtcp_xr_attribute_name148; #undef RETURN_TYPE_rtcp_xr_attribute_name148 #define RETURN_TYPE_rtcp_xr_attribute_name148 belle_sdpParser_rtcp_xr_attribute_name_return /* Initialize rule variables */ root_0 = NULL; rtcp_xr_attribute_name148.tree = NULL; retval.start = LT(1); retval.stop = retval.start; retval.tree = NULL; { // ../grammars/belle_sdp.g:282:14: ({...}? rtcp_xr_attribute_name ) // ../grammars/belle_sdp.g:283:2: {...}? rtcp_xr_attribute_name { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); if ( !((IS_TOKEN(voip-metrics))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(voip-metrics)"; EXCEPTION->ruleName = (void *)"voip_metrics"; } FOLLOWPUSH(FOLLOW_rtcp_xr_attribute_name_in_voip_metrics1742); rtcp_xr_attribute_name148=rtcp_xr_attribute_name(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulevoip_metricsEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, rtcp_xr_attribute_name148.tree); if ( BACKTRACKING==0 ) { belle_sdp_rtcp_xr_attribute_set_voip_metrics((SCOPE_TOP(rtcp_xr_attribute))->current,1); } } } // This is where rules clean up and exit // goto rulevoip_metricsEx; /* Prevent compiler warnings */ rulevoip_metricsEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end voip_metrics */ /** * $ANTLR start rtcp_xr_stat_summary_flag * ../grammars/belle_sdp.g:287:1: rtcp_xr_stat_summary_flag :{...}? rtcp_xr_stat_summary_flag_value ; */ static belle_sdpParser_rtcp_xr_stat_summary_flag_return rtcp_xr_stat_summary_flag(pbelle_sdpParser ctx) { belle_sdpParser_rtcp_xr_stat_summary_flag_return retval; pANTLR3_BASE_TREE root_0; belle_sdpParser_rtcp_xr_stat_summary_flag_value_return rtcp_xr_stat_summary_flag_value149; #undef RETURN_TYPE_rtcp_xr_stat_summary_flag_value149 #define RETURN_TYPE_rtcp_xr_stat_summary_flag_value149 belle_sdpParser_rtcp_xr_stat_summary_flag_value_return /* Initialize rule variables */ root_0 = NULL; rtcp_xr_stat_summary_flag_value149.tree = NULL; retval.start = LT(1); retval.stop = retval.start; retval.tree = NULL; { // ../grammars/belle_sdp.g:287:27: ({...}? rtcp_xr_stat_summary_flag_value ) // ../grammars/belle_sdp.g:288:2: {...}? rtcp_xr_stat_summary_flag_value { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); if ( !((IS_TOKEN(loss) || IS_TOKEN(dup) || IS_TOKEN(jitt) || IS_TOKEN(TTL) || IS_TOKEN(HL))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(loss) || IS_TOKEN(dup) || IS_TOKEN(jitt) || IS_TOKEN(TTL) || IS_TOKEN(HL)"; EXCEPTION->ruleName = (void *)"rtcp_xr_stat_summary_flag"; } FOLLOWPUSH(FOLLOW_rtcp_xr_stat_summary_flag_value_in_rtcp_xr_stat_summary_flag1756); rtcp_xr_stat_summary_flag_value149=rtcp_xr_stat_summary_flag_value(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulertcp_xr_stat_summary_flagEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, rtcp_xr_stat_summary_flag_value149.tree); if ( BACKTRACKING==0 ) { belle_sdp_rtcp_xr_attribute_add_stat_summary_flag((SCOPE_TOP(rtcp_xr_attribute))->current,(const char*) (STRSTREAM->toStringTT(STRSTREAM, rtcp_xr_stat_summary_flag_value149.start, rtcp_xr_stat_summary_flag_value149.stop)) ->chars); } } } // This is where rules clean up and exit // goto rulertcp_xr_stat_summary_flagEx; /* Prevent compiler warnings */ rulertcp_xr_stat_summary_flagEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end rtcp_xr_stat_summary_flag */ /** * $ANTLR start rtcp_xr_max_size * ../grammars/belle_sdp.g:292:1: rtcp_xr_max_size : ( DIGIT )+ ; */ static belle_sdpParser_rtcp_xr_max_size_return rtcp_xr_max_size(pbelle_sdpParser ctx) { belle_sdpParser_rtcp_xr_max_size_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN DIGIT150; pANTLR3_BASE_TREE DIGIT150_tree; /* Initialize rule variables */ root_0 = NULL; DIGIT150 = NULL; retval.start = LT(1); retval.stop = retval.start; DIGIT150_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:292:18: ( ( DIGIT )+ ) // ../grammars/belle_sdp.g:292:20: ( DIGIT )+ { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); // ../grammars/belle_sdp.g:292:20: ( DIGIT )+ { int cnt29=0; for (;;) { int alt29=2; switch ( LA(1) ) { case DIGIT: { alt29=1; } break; } switch (alt29) { case 1: // ../grammars/belle_sdp.g:292:20: DIGIT { DIGIT150 = (pANTLR3_COMMON_TOKEN) MATCHT(DIGIT, &FOLLOW_DIGIT_in_rtcp_xr_max_size1766); if (HASEXCEPTION()) { goto rulertcp_xr_max_sizeEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { DIGIT150_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, DIGIT150)); ADAPTOR->addChild(ADAPTOR, root_0, DIGIT150_tree); } } break; default: if ( cnt29 >= 1 ) { goto loop29; } if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } /* mismatchedSetEx() */ CONSTRUCTEX(); EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME; goto rulertcp_xr_max_sizeEx; } cnt29++; } loop29: ; /* Jump to here if this rule does not match */ } } } // This is where rules clean up and exit // goto rulertcp_xr_max_sizeEx; /* Prevent compiler warnings */ rulertcp_xr_max_sizeEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end rtcp_xr_max_size */ /** * $ANTLR start rtcp_fb_attribute * ../grammars/belle_sdp.g:294:1: rtcp_fb_attribute returns [belle_sdp_rtcp_fb_attribute_t* ret] :{...}? alpha_num EQUAL {...}? attribute_name COLON rtcp_fb_pt SPACE rtcp_fb_val ; */ static belle_sdpParser_rtcp_fb_attribute_return rtcp_fb_attribute(pbelle_sdpParser ctx) { belle_sdpParser_rtcp_fb_attribute_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN EQUAL152; pANTLR3_COMMON_TOKEN COLON154; pANTLR3_COMMON_TOKEN SPACE156; belle_sdpParser_alpha_num_return alpha_num151; #undef RETURN_TYPE_alpha_num151 #define RETURN_TYPE_alpha_num151 belle_sdpParser_alpha_num_return belle_sdpParser_attribute_name_return attribute_name153; #undef RETURN_TYPE_attribute_name153 #define RETURN_TYPE_attribute_name153 belle_sdpParser_attribute_name_return belle_sdpParser_rtcp_fb_pt_return rtcp_fb_pt155; #undef RETURN_TYPE_rtcp_fb_pt155 #define RETURN_TYPE_rtcp_fb_pt155 belle_sdpParser_rtcp_fb_pt_return belle_sdpParser_rtcp_fb_val_return rtcp_fb_val157; #undef RETURN_TYPE_rtcp_fb_val157 #define RETURN_TYPE_rtcp_fb_val157 belle_sdpParser_rtcp_fb_val_return pANTLR3_BASE_TREE EQUAL152_tree; pANTLR3_BASE_TREE COLON154_tree; pANTLR3_BASE_TREE SPACE156_tree; /* Initialize rule variables */ ctx->pbelle_sdpParser_rtcp_fb_attributeTop = pbelle_sdpParser_rtcp_fb_attributePush(ctx); root_0 = NULL; (SCOPE_TOP(rtcp_fb_attribute))->current= belle_sdp_rtcp_fb_attribute_new(); retval.ret= (SCOPE_TOP(rtcp_fb_attribute))->current; EQUAL152 = NULL; COLON154 = NULL; SPACE156 = NULL; alpha_num151.tree = NULL; attribute_name153.tree = NULL; rtcp_fb_pt155.tree = NULL; rtcp_fb_val157.tree = NULL; retval.start = LT(1); retval.stop = retval.start; EQUAL152_tree = NULL; COLON154_tree = NULL; SPACE156_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:297:3: ({...}? alpha_num EQUAL {...}? attribute_name COLON rtcp_fb_pt SPACE rtcp_fb_val ) // ../grammars/belle_sdp.g:297:3: {...}? alpha_num EQUAL {...}? attribute_name COLON rtcp_fb_pt SPACE rtcp_fb_val { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); if ( !((IS_TOKEN(a))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sdpParser_rtcp_fb_attributePop(ctx); return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(a)"; EXCEPTION->ruleName = (void *)"rtcp_fb_attribute"; } FOLLOWPUSH(FOLLOW_alpha_num_in_rtcp_fb_attribute1789); alpha_num151=alpha_num(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulertcp_fb_attributeEx; } if (HASFAILED()) { pbelle_sdpParser_rtcp_fb_attributePop(ctx); return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, alpha_num151.tree); EQUAL152 = (pANTLR3_COMMON_TOKEN) MATCHT(EQUAL, &FOLLOW_EQUAL_in_rtcp_fb_attribute1791); if (HASEXCEPTION()) { goto rulertcp_fb_attributeEx; } if (HASFAILED()) { pbelle_sdpParser_rtcp_fb_attributePop(ctx); return retval; } if ( BACKTRACKING==0 ) { EQUAL152_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, EQUAL152)); ADAPTOR->addChild(ADAPTOR, root_0, EQUAL152_tree); } if ( !((IS_TOKEN(rtcp-fb))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sdpParser_rtcp_fb_attributePop(ctx); return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(rtcp-fb)"; EXCEPTION->ruleName = (void *)"rtcp_fb_attribute"; } FOLLOWPUSH(FOLLOW_attribute_name_in_rtcp_fb_attribute1795); attribute_name153=attribute_name(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulertcp_fb_attributeEx; } if (HASFAILED()) { pbelle_sdpParser_rtcp_fb_attributePop(ctx); return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, attribute_name153.tree); COLON154 = (pANTLR3_COMMON_TOKEN) MATCHT(COLON, &FOLLOW_COLON_in_rtcp_fb_attribute1799); if (HASEXCEPTION()) { goto rulertcp_fb_attributeEx; } if (HASFAILED()) { pbelle_sdpParser_rtcp_fb_attributePop(ctx); return retval; } if ( BACKTRACKING==0 ) { COLON154_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, COLON154)); ADAPTOR->addChild(ADAPTOR, root_0, COLON154_tree); } FOLLOWPUSH(FOLLOW_rtcp_fb_pt_in_rtcp_fb_attribute1801); rtcp_fb_pt155=rtcp_fb_pt(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulertcp_fb_attributeEx; } if (HASFAILED()) { pbelle_sdpParser_rtcp_fb_attributePop(ctx); return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, rtcp_fb_pt155.tree); SPACE156 = (pANTLR3_COMMON_TOKEN) MATCHT(SPACE, &FOLLOW_SPACE_in_rtcp_fb_attribute1803); if (HASEXCEPTION()) { goto rulertcp_fb_attributeEx; } if (HASFAILED()) { pbelle_sdpParser_rtcp_fb_attributePop(ctx); return retval; } if ( BACKTRACKING==0 ) { SPACE156_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, SPACE156)); ADAPTOR->addChild(ADAPTOR, root_0, SPACE156_tree); } FOLLOWPUSH(FOLLOW_rtcp_fb_val_in_rtcp_fb_attribute1805); rtcp_fb_val157=rtcp_fb_val(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulertcp_fb_attributeEx; } if (HASFAILED()) { pbelle_sdpParser_rtcp_fb_attributePop(ctx); return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, rtcp_fb_val157.tree); } } // This is where rules clean up and exit // goto rulertcp_fb_attributeEx; /* Prevent compiler warnings */ rulertcp_fb_attributeEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { /* catch(decl,action) */ { ANTLR3_LOG_EXCEPTION(); belle_sip_object_unref(retval.ret ); retval.ret=NULL; } } else { } pbelle_sdpParser_rtcp_fb_attributePop(ctx); return retval; } /* $ANTLR end rtcp_fb_attribute */ /** * $ANTLR start rtcp_fb_pt * ../grammars/belle_sdp.g:305:1: rtcp_fb_pt : ( STAR | integer ); */ static belle_sdpParser_rtcp_fb_pt_return rtcp_fb_pt(pbelle_sdpParser ctx) { belle_sdpParser_rtcp_fb_pt_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN STAR158; belle_sdpParser_integer_return integer159; #undef RETURN_TYPE_integer159 #define RETURN_TYPE_integer159 belle_sdpParser_integer_return pANTLR3_BASE_TREE STAR158_tree; /* Initialize rule variables */ root_0 = NULL; STAR158 = NULL; integer159.tree = NULL; retval.start = LT(1); retval.stop = retval.start; STAR158_tree = NULL; retval.tree = NULL; { { // ../grammars/belle_sdp.g:305:11: ( STAR | integer ) ANTLR3_UINT32 alt30; alt30=2; switch ( LA(1) ) { case STAR: { alt30=1; } break; case DIGIT: { alt30=2; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 30; EXCEPTION->state = 0; goto rulertcp_fb_ptEx; } switch (alt30) { case 1: // ../grammars/belle_sdp.g:305:13: STAR { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); STAR158 = (pANTLR3_COMMON_TOKEN) MATCHT(STAR, &FOLLOW_STAR_in_rtcp_fb_pt1818); if (HASEXCEPTION()) { goto rulertcp_fb_ptEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { STAR158_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, STAR158)); ADAPTOR->addChild(ADAPTOR, root_0, STAR158_tree); } if ( BACKTRACKING==0 ) { belle_sdp_rtcp_fb_attribute_set_id((SCOPE_TOP(rtcp_fb_attribute))->current,-1); } } break; case 2: // ../grammars/belle_sdp.g:307:5: integer { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); FOLLOWPUSH(FOLLOW_integer_in_rtcp_fb_pt1824); integer159=integer(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulertcp_fb_ptEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, integer159.tree); if ( BACKTRACKING==0 ) { belle_sdp_rtcp_fb_attribute_set_id((SCOPE_TOP(rtcp_fb_attribute))->current,atoi((const char*) (STRSTREAM->toStringTT(STRSTREAM, integer159.start, integer159.stop)) ->chars)); } } break; } } } // This is where rules clean up and exit // goto rulertcp_fb_ptEx; /* Prevent compiler warnings */ rulertcp_fb_ptEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end rtcp_fb_pt */ /** * $ANTLR start rtcp_fb_val * ../grammars/belle_sdp.g:311:1: rtcp_fb_val : ( ( rtcp_fb_ack_val )=> rtcp_fb_ack_val | ( rtcp_fb_nack_val )=> rtcp_fb_nack_val | ( rtcp_fb_trr_int_val )=> rtcp_fb_trr_int_val | ( rtcp_fb_ccm_val )=> rtcp_fb_ccm_val | ( rtcp_fb_id_val )=> rtcp_fb_id_val ); */ static belle_sdpParser_rtcp_fb_val_return rtcp_fb_val(pbelle_sdpParser ctx) { belle_sdpParser_rtcp_fb_val_return retval; pANTLR3_BASE_TREE root_0; belle_sdpParser_rtcp_fb_ack_val_return rtcp_fb_ack_val160; #undef RETURN_TYPE_rtcp_fb_ack_val160 #define RETURN_TYPE_rtcp_fb_ack_val160 belle_sdpParser_rtcp_fb_ack_val_return belle_sdpParser_rtcp_fb_nack_val_return rtcp_fb_nack_val161; #undef RETURN_TYPE_rtcp_fb_nack_val161 #define RETURN_TYPE_rtcp_fb_nack_val161 belle_sdpParser_rtcp_fb_nack_val_return belle_sdpParser_rtcp_fb_trr_int_val_return rtcp_fb_trr_int_val162; #undef RETURN_TYPE_rtcp_fb_trr_int_val162 #define RETURN_TYPE_rtcp_fb_trr_int_val162 belle_sdpParser_rtcp_fb_trr_int_val_return belle_sdpParser_rtcp_fb_ccm_val_return rtcp_fb_ccm_val163; #undef RETURN_TYPE_rtcp_fb_ccm_val163 #define RETURN_TYPE_rtcp_fb_ccm_val163 belle_sdpParser_rtcp_fb_ccm_val_return belle_sdpParser_rtcp_fb_id_val_return rtcp_fb_id_val164; #undef RETURN_TYPE_rtcp_fb_id_val164 #define RETURN_TYPE_rtcp_fb_id_val164 belle_sdpParser_rtcp_fb_id_val_return /* Initialize rule variables */ root_0 = NULL; rtcp_fb_ack_val160.tree = NULL; rtcp_fb_nack_val161.tree = NULL; rtcp_fb_trr_int_val162.tree = NULL; rtcp_fb_ccm_val163.tree = NULL; rtcp_fb_id_val164.tree = NULL; retval.start = LT(1); retval.stop = retval.start; retval.tree = NULL; { { // ../grammars/belle_sdp.g:311:13: ( ( rtcp_fb_ack_val )=> rtcp_fb_ack_val | ( rtcp_fb_nack_val )=> rtcp_fb_nack_val | ( rtcp_fb_trr_int_val )=> rtcp_fb_trr_int_val | ( rtcp_fb_ccm_val )=> rtcp_fb_ccm_val | ( rtcp_fb_id_val )=> rtcp_fb_id_val ) ANTLR3_UINT32 alt31; alt31=5; switch ( LA(1) ) { case COMMON_CHAR: case HEX_CHAR: { { int LA31_1 = LA(2); if ( (synpred9_belle_sdp(ctx)) && (LA31_1 == SPACE)) { alt31=3; } else if ( (synpred9_belle_sdp(ctx)) && (LA31_1 == COMMON_CHAR || LA31_1 == HEX_CHAR)) { alt31=3; } else if ( (synpred9_belle_sdp(ctx)) && (LA31_1 == DASH)) { alt31=3; } else if ( (( (( ((IS_TOKEN(ack))) && ((IS_TOKEN(ack))) )) && (synpred7_belle_sdp(ctx)) ))) { alt31=1; } else if ( (( (( (synpred8_belle_sdp(ctx)) && (synpred8_belle_sdp(ctx)) )) && ((IS_TOKEN(nack))) ))) { alt31=2; } else if ( (( (( ((IS_TOKEN(ccm))) && ((IS_TOKEN(ccm))) )) && (synpred10_belle_sdp(ctx)) ))) { alt31=4; } else if ( (synpred11_belle_sdp(ctx))) { alt31=5; } else { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 31; EXCEPTION->state = 1; goto rulertcp_fb_valEx; } } } break; case DASH: { { int LA31_2 = LA(2); if ( (synpred9_belle_sdp(ctx)) && (LA31_2 == SPACE)) { alt31=3; } else if ( (synpred9_belle_sdp(ctx)) && (LA31_2 == COMMON_CHAR || LA31_2 == HEX_CHAR)) { alt31=3; } else if ( (synpred9_belle_sdp(ctx)) && (LA31_2 == DASH)) { alt31=3; } else if ( (( (( ((IS_TOKEN(ack))) && ((IS_TOKEN(ack))) )) && (synpred7_belle_sdp(ctx)) ))) { alt31=1; } else if ( (( (( (synpred8_belle_sdp(ctx)) && (synpred8_belle_sdp(ctx)) )) && ((IS_TOKEN(nack))) ))) { alt31=2; } else if ( (( (( ((IS_TOKEN(ccm))) && ((IS_TOKEN(ccm))) )) && (synpred10_belle_sdp(ctx)) ))) { alt31=4; } else if ( (synpred11_belle_sdp(ctx))) { alt31=5; } else { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 31; EXCEPTION->state = 2; goto rulertcp_fb_valEx; } } } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 31; EXCEPTION->state = 0; goto rulertcp_fb_valEx; } switch (alt31) { case 1: // ../grammars/belle_sdp.g:312:2: ( rtcp_fb_ack_val )=> rtcp_fb_ack_val { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); FOLLOWPUSH(FOLLOW_rtcp_fb_ack_val_in_rtcp_fb_val1839); rtcp_fb_ack_val160=rtcp_fb_ack_val(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulertcp_fb_valEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, rtcp_fb_ack_val160.tree); } break; case 2: // ../grammars/belle_sdp.g:313:3: ( rtcp_fb_nack_val )=> rtcp_fb_nack_val { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); FOLLOWPUSH(FOLLOW_rtcp_fb_nack_val_in_rtcp_fb_val1847); rtcp_fb_nack_val161=rtcp_fb_nack_val(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulertcp_fb_valEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, rtcp_fb_nack_val161.tree); } break; case 3: // ../grammars/belle_sdp.g:314:3: ( rtcp_fb_trr_int_val )=> rtcp_fb_trr_int_val { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); FOLLOWPUSH(FOLLOW_rtcp_fb_trr_int_val_in_rtcp_fb_val1855); rtcp_fb_trr_int_val162=rtcp_fb_trr_int_val(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulertcp_fb_valEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, rtcp_fb_trr_int_val162.tree); } break; case 4: // ../grammars/belle_sdp.g:315:3: ( rtcp_fb_ccm_val )=> rtcp_fb_ccm_val { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); FOLLOWPUSH(FOLLOW_rtcp_fb_ccm_val_in_rtcp_fb_val1863); rtcp_fb_ccm_val163=rtcp_fb_ccm_val(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulertcp_fb_valEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, rtcp_fb_ccm_val163.tree); } break; case 5: // ../grammars/belle_sdp.g:316:3: ( rtcp_fb_id_val )=> rtcp_fb_id_val { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); FOLLOWPUSH(FOLLOW_rtcp_fb_id_val_in_rtcp_fb_val1871); rtcp_fb_id_val164=rtcp_fb_id_val(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulertcp_fb_valEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, rtcp_fb_id_val164.tree); } break; } } } // This is where rules clean up and exit // goto rulertcp_fb_valEx; /* Prevent compiler warnings */ rulertcp_fb_valEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end rtcp_fb_val */ /** * $ANTLR start rtcp_fb_ack_val * ../grammars/belle_sdp.g:318:1: rtcp_fb_ack_val :{...}? rtcp_fb_attribute_name ( SPACE rtcp_fb_ack_param )? ; */ static belle_sdpParser_rtcp_fb_ack_val_return rtcp_fb_ack_val(pbelle_sdpParser ctx) { belle_sdpParser_rtcp_fb_ack_val_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN SPACE166; belle_sdpParser_rtcp_fb_attribute_name_return rtcp_fb_attribute_name165; #undef RETURN_TYPE_rtcp_fb_attribute_name165 #define RETURN_TYPE_rtcp_fb_attribute_name165 belle_sdpParser_rtcp_fb_attribute_name_return belle_sdpParser_rtcp_fb_ack_param_return rtcp_fb_ack_param167; #undef RETURN_TYPE_rtcp_fb_ack_param167 #define RETURN_TYPE_rtcp_fb_ack_param167 belle_sdpParser_rtcp_fb_ack_param_return pANTLR3_BASE_TREE SPACE166_tree; /* Initialize rule variables */ root_0 = NULL; SPACE166 = NULL; rtcp_fb_attribute_name165.tree = NULL; rtcp_fb_ack_param167.tree = NULL; retval.start = LT(1); retval.stop = retval.start; SPACE166_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:318:16: ({...}? rtcp_fb_attribute_name ( SPACE rtcp_fb_ack_param )? ) // ../grammars/belle_sdp.g:319:2: {...}? rtcp_fb_attribute_name ( SPACE rtcp_fb_ack_param )? { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); if ( !((IS_TOKEN(ack))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(ack)"; EXCEPTION->ruleName = (void *)"rtcp_fb_ack_val"; } FOLLOWPUSH(FOLLOW_rtcp_fb_attribute_name_in_rtcp_fb_ack_val1881); rtcp_fb_attribute_name165=rtcp_fb_attribute_name(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulertcp_fb_ack_valEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, rtcp_fb_attribute_name165.tree); // ../grammars/belle_sdp.g:319:52: ( SPACE rtcp_fb_ack_param )? { int alt32=2; switch ( LA(1) ) { case SPACE: { alt32=1; } break; } switch (alt32) { case 1: // ../grammars/belle_sdp.g:319:53: SPACE rtcp_fb_ack_param { SPACE166 = (pANTLR3_COMMON_TOKEN) MATCHT(SPACE, &FOLLOW_SPACE_in_rtcp_fb_ack_val1886); if (HASEXCEPTION()) { goto rulertcp_fb_ack_valEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { SPACE166_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, SPACE166)); ADAPTOR->addChild(ADAPTOR, root_0, SPACE166_tree); } FOLLOWPUSH(FOLLOW_rtcp_fb_ack_param_in_rtcp_fb_ack_val1888); rtcp_fb_ack_param167=rtcp_fb_ack_param(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulertcp_fb_ack_valEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, rtcp_fb_ack_param167.tree); } break; } } if ( BACKTRACKING==0 ) { belle_sdp_rtcp_fb_attribute_set_type((SCOPE_TOP(rtcp_fb_attribute))->current,BELLE_SDP_RTCP_FB_ACK); } } } // This is where rules clean up and exit // goto rulertcp_fb_ack_valEx; /* Prevent compiler warnings */ rulertcp_fb_ack_valEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end rtcp_fb_ack_val */ /** * $ANTLR start rtcp_fb_nack_val * ../grammars/belle_sdp.g:323:1: rtcp_fb_nack_val :{...}? rtcp_fb_attribute_name ( SPACE rtcp_fb_nack_param )? ; */ static belle_sdpParser_rtcp_fb_nack_val_return rtcp_fb_nack_val(pbelle_sdpParser ctx) { belle_sdpParser_rtcp_fb_nack_val_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN SPACE169; belle_sdpParser_rtcp_fb_attribute_name_return rtcp_fb_attribute_name168; #undef RETURN_TYPE_rtcp_fb_attribute_name168 #define RETURN_TYPE_rtcp_fb_attribute_name168 belle_sdpParser_rtcp_fb_attribute_name_return belle_sdpParser_rtcp_fb_nack_param_return rtcp_fb_nack_param170; #undef RETURN_TYPE_rtcp_fb_nack_param170 #define RETURN_TYPE_rtcp_fb_nack_param170 belle_sdpParser_rtcp_fb_nack_param_return pANTLR3_BASE_TREE SPACE169_tree; /* Initialize rule variables */ root_0 = NULL; SPACE169 = NULL; rtcp_fb_attribute_name168.tree = NULL; rtcp_fb_nack_param170.tree = NULL; retval.start = LT(1); retval.stop = retval.start; SPACE169_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:323:17: ({...}? rtcp_fb_attribute_name ( SPACE rtcp_fb_nack_param )? ) // ../grammars/belle_sdp.g:324:2: {...}? rtcp_fb_attribute_name ( SPACE rtcp_fb_nack_param )? { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); if ( !((IS_TOKEN(nack))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(nack)"; EXCEPTION->ruleName = (void *)"rtcp_fb_nack_val"; } FOLLOWPUSH(FOLLOW_rtcp_fb_attribute_name_in_rtcp_fb_nack_val1902); rtcp_fb_attribute_name168=rtcp_fb_attribute_name(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulertcp_fb_nack_valEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, rtcp_fb_attribute_name168.tree); // ../grammars/belle_sdp.g:324:54: ( SPACE rtcp_fb_nack_param )? { int alt33=2; switch ( LA(1) ) { case SPACE: { alt33=1; } break; } switch (alt33) { case 1: // ../grammars/belle_sdp.g:324:55: SPACE rtcp_fb_nack_param { SPACE169 = (pANTLR3_COMMON_TOKEN) MATCHT(SPACE, &FOLLOW_SPACE_in_rtcp_fb_nack_val1907); if (HASEXCEPTION()) { goto rulertcp_fb_nack_valEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { SPACE169_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, SPACE169)); ADAPTOR->addChild(ADAPTOR, root_0, SPACE169_tree); } FOLLOWPUSH(FOLLOW_rtcp_fb_nack_param_in_rtcp_fb_nack_val1909); rtcp_fb_nack_param170=rtcp_fb_nack_param(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulertcp_fb_nack_valEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, rtcp_fb_nack_param170.tree); } break; } } if ( BACKTRACKING==0 ) { belle_sdp_rtcp_fb_attribute_set_type((SCOPE_TOP(rtcp_fb_attribute))->current,BELLE_SDP_RTCP_FB_NACK); } } } // This is where rules clean up and exit // goto rulertcp_fb_nack_valEx; /* Prevent compiler warnings */ rulertcp_fb_nack_valEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end rtcp_fb_nack_val */ /** * $ANTLR start rtcp_fb_trr_int_val * ../grammars/belle_sdp.g:328:1: rtcp_fb_trr_int_val :{...}? rtcp_fb_attribute_name SPACE integer ; */ static belle_sdpParser_rtcp_fb_trr_int_val_return rtcp_fb_trr_int_val(pbelle_sdpParser ctx) { belle_sdpParser_rtcp_fb_trr_int_val_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN SPACE172; belle_sdpParser_rtcp_fb_attribute_name_return rtcp_fb_attribute_name171; #undef RETURN_TYPE_rtcp_fb_attribute_name171 #define RETURN_TYPE_rtcp_fb_attribute_name171 belle_sdpParser_rtcp_fb_attribute_name_return belle_sdpParser_integer_return integer173; #undef RETURN_TYPE_integer173 #define RETURN_TYPE_integer173 belle_sdpParser_integer_return pANTLR3_BASE_TREE SPACE172_tree; /* Initialize rule variables */ root_0 = NULL; SPACE172 = NULL; rtcp_fb_attribute_name171.tree = NULL; integer173.tree = NULL; retval.start = LT(1); retval.stop = retval.start; SPACE172_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:328:20: ({...}? rtcp_fb_attribute_name SPACE integer ) // ../grammars/belle_sdp.g:329:2: {...}? rtcp_fb_attribute_name SPACE integer { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); if ( !((IS_TOKEN(trr-int))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(trr-int)"; EXCEPTION->ruleName = (void *)"rtcp_fb_trr_int_val"; } FOLLOWPUSH(FOLLOW_rtcp_fb_attribute_name_in_rtcp_fb_trr_int_val1923); rtcp_fb_attribute_name171=rtcp_fb_attribute_name(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulertcp_fb_trr_int_valEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, rtcp_fb_attribute_name171.tree); SPACE172 = (pANTLR3_COMMON_TOKEN) MATCHT(SPACE, &FOLLOW_SPACE_in_rtcp_fb_trr_int_val1927); if (HASEXCEPTION()) { goto rulertcp_fb_trr_int_valEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { SPACE172_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, SPACE172)); ADAPTOR->addChild(ADAPTOR, root_0, SPACE172_tree); } FOLLOWPUSH(FOLLOW_integer_in_rtcp_fb_trr_int_val1929); integer173=integer(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulertcp_fb_trr_int_valEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, integer173.tree); if ( BACKTRACKING==0 ) { belle_sdp_rtcp_fb_attribute_set_type((SCOPE_TOP(rtcp_fb_attribute))->current,BELLE_SDP_RTCP_FB_TRR_INT); belle_sdp_rtcp_fb_attribute_set_trr_int((SCOPE_TOP(rtcp_fb_attribute))->current,(uint16_t)atoi((const char*) (STRSTREAM->toStringTT(STRSTREAM, integer173.start, integer173.stop)) ->chars)); } } } // This is where rules clean up and exit // goto rulertcp_fb_trr_int_valEx; /* Prevent compiler warnings */ rulertcp_fb_trr_int_valEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end rtcp_fb_trr_int_val */ /** * $ANTLR start rtcp_fb_ccm_val * ../grammars/belle_sdp.g:334:1: rtcp_fb_ccm_val :{...}? rtcp_fb_attribute_name ( SPACE rtcp_fb_ccm_param )? ; */ static belle_sdpParser_rtcp_fb_ccm_val_return rtcp_fb_ccm_val(pbelle_sdpParser ctx) { belle_sdpParser_rtcp_fb_ccm_val_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN SPACE175; belle_sdpParser_rtcp_fb_attribute_name_return rtcp_fb_attribute_name174; #undef RETURN_TYPE_rtcp_fb_attribute_name174 #define RETURN_TYPE_rtcp_fb_attribute_name174 belle_sdpParser_rtcp_fb_attribute_name_return belle_sdpParser_rtcp_fb_ccm_param_return rtcp_fb_ccm_param176; #undef RETURN_TYPE_rtcp_fb_ccm_param176 #define RETURN_TYPE_rtcp_fb_ccm_param176 belle_sdpParser_rtcp_fb_ccm_param_return pANTLR3_BASE_TREE SPACE175_tree; /* Initialize rule variables */ root_0 = NULL; SPACE175 = NULL; rtcp_fb_attribute_name174.tree = NULL; rtcp_fb_ccm_param176.tree = NULL; retval.start = LT(1); retval.stop = retval.start; SPACE175_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:334:16: ({...}? rtcp_fb_attribute_name ( SPACE rtcp_fb_ccm_param )? ) // ../grammars/belle_sdp.g:335:2: {...}? rtcp_fb_attribute_name ( SPACE rtcp_fb_ccm_param )? { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); if ( !((IS_TOKEN(ccm))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(ccm)"; EXCEPTION->ruleName = (void *)"rtcp_fb_ccm_val"; } FOLLOWPUSH(FOLLOW_rtcp_fb_attribute_name_in_rtcp_fb_ccm_val1941); rtcp_fb_attribute_name174=rtcp_fb_attribute_name(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulertcp_fb_ccm_valEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, rtcp_fb_attribute_name174.tree); // ../grammars/belle_sdp.g:335:52: ( SPACE rtcp_fb_ccm_param )? { int alt34=2; switch ( LA(1) ) { case SPACE: { alt34=1; } break; } switch (alt34) { case 1: // ../grammars/belle_sdp.g:335:53: SPACE rtcp_fb_ccm_param { SPACE175 = (pANTLR3_COMMON_TOKEN) MATCHT(SPACE, &FOLLOW_SPACE_in_rtcp_fb_ccm_val1946); if (HASEXCEPTION()) { goto rulertcp_fb_ccm_valEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { SPACE175_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, SPACE175)); ADAPTOR->addChild(ADAPTOR, root_0, SPACE175_tree); } FOLLOWPUSH(FOLLOW_rtcp_fb_ccm_param_in_rtcp_fb_ccm_val1948); rtcp_fb_ccm_param176=rtcp_fb_ccm_param(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulertcp_fb_ccm_valEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, rtcp_fb_ccm_param176.tree); } break; } } if ( BACKTRACKING==0 ) { /* TODO: rtcp_fb_ccm_param should be mandatory */ belle_sdp_rtcp_fb_attribute_set_type((SCOPE_TOP(rtcp_fb_attribute))->current,BELLE_SDP_RTCP_FB_CCM); } } } // This is where rules clean up and exit // goto rulertcp_fb_ccm_valEx; /* Prevent compiler warnings */ rulertcp_fb_ccm_valEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end rtcp_fb_ccm_val */ /** * $ANTLR start rtcp_fb_id_val * ../grammars/belle_sdp.g:339:1: rtcp_fb_id_val : rtcp_fb_attribute_name ( SPACE rtcp_fb_param )? ; */ static belle_sdpParser_rtcp_fb_id_val_return rtcp_fb_id_val(pbelle_sdpParser ctx) { belle_sdpParser_rtcp_fb_id_val_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN SPACE178; belle_sdpParser_rtcp_fb_attribute_name_return rtcp_fb_attribute_name177; #undef RETURN_TYPE_rtcp_fb_attribute_name177 #define RETURN_TYPE_rtcp_fb_attribute_name177 belle_sdpParser_rtcp_fb_attribute_name_return belle_sdpParser_rtcp_fb_param_return rtcp_fb_param179; #undef RETURN_TYPE_rtcp_fb_param179 #define RETURN_TYPE_rtcp_fb_param179 belle_sdpParser_rtcp_fb_param_return pANTLR3_BASE_TREE SPACE178_tree; /* Initialize rule variables */ root_0 = NULL; SPACE178 = NULL; rtcp_fb_attribute_name177.tree = NULL; rtcp_fb_param179.tree = NULL; retval.start = LT(1); retval.stop = retval.start; SPACE178_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:339:15: ( rtcp_fb_attribute_name ( SPACE rtcp_fb_param )? ) // ../grammars/belle_sdp.g:340:2: rtcp_fb_attribute_name ( SPACE rtcp_fb_param )? { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); FOLLOWPUSH(FOLLOW_rtcp_fb_attribute_name_in_rtcp_fb_id_val1960); rtcp_fb_attribute_name177=rtcp_fb_attribute_name(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulertcp_fb_id_valEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, rtcp_fb_attribute_name177.tree); // ../grammars/belle_sdp.g:340:25: ( SPACE rtcp_fb_param )? { int alt35=2; switch ( LA(1) ) { case SPACE: { alt35=1; } break; } switch (alt35) { case 1: // ../grammars/belle_sdp.g:340:26: SPACE rtcp_fb_param { SPACE178 = (pANTLR3_COMMON_TOKEN) MATCHT(SPACE, &FOLLOW_SPACE_in_rtcp_fb_id_val1963); if (HASEXCEPTION()) { goto rulertcp_fb_id_valEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { SPACE178_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, SPACE178)); ADAPTOR->addChild(ADAPTOR, root_0, SPACE178_tree); } FOLLOWPUSH(FOLLOW_rtcp_fb_param_in_rtcp_fb_id_val1965); rtcp_fb_param179=rtcp_fb_param(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulertcp_fb_id_valEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, rtcp_fb_param179.tree); } break; } } } } // This is where rules clean up and exit // goto rulertcp_fb_id_valEx; /* Prevent compiler warnings */ rulertcp_fb_id_valEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end rtcp_fb_id_val */ /** * $ANTLR start rtcp_fb_param * ../grammars/belle_sdp.g:342:1: rtcp_fb_param : ( ( rtcp_fb_app_param )=> rtcp_fb_app_param | ( rtcp_fb_token_param )=> rtcp_fb_token_param ); */ static belle_sdpParser_rtcp_fb_param_return rtcp_fb_param(pbelle_sdpParser ctx) { belle_sdpParser_rtcp_fb_param_return retval; pANTLR3_BASE_TREE root_0; belle_sdpParser_rtcp_fb_app_param_return rtcp_fb_app_param180; #undef RETURN_TYPE_rtcp_fb_app_param180 #define RETURN_TYPE_rtcp_fb_app_param180 belle_sdpParser_rtcp_fb_app_param_return belle_sdpParser_rtcp_fb_token_param_return rtcp_fb_token_param181; #undef RETURN_TYPE_rtcp_fb_token_param181 #define RETURN_TYPE_rtcp_fb_token_param181 belle_sdpParser_rtcp_fb_token_param_return /* Initialize rule variables */ root_0 = NULL; rtcp_fb_app_param180.tree = NULL; rtcp_fb_token_param181.tree = NULL; retval.start = LT(1); retval.stop = retval.start; retval.tree = NULL; { { // ../grammars/belle_sdp.g:342:14: ( ( rtcp_fb_app_param )=> rtcp_fb_app_param | ( rtcp_fb_token_param )=> rtcp_fb_token_param ) ANTLR3_UINT32 alt36; alt36=2; alt36 = cdfa36.predict(ctx, RECOGNIZER, ISTREAM, &cdfa36); if (HASEXCEPTION()) { goto rulertcp_fb_paramEx; } if (HASFAILED()) { return retval; } switch (alt36) { case 1: // ../grammars/belle_sdp.g:343:2: ( rtcp_fb_app_param )=> rtcp_fb_app_param { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); FOLLOWPUSH(FOLLOW_rtcp_fb_app_param_in_rtcp_fb_param1979); rtcp_fb_app_param180=rtcp_fb_app_param(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulertcp_fb_paramEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, rtcp_fb_app_param180.tree); } break; case 2: // ../grammars/belle_sdp.g:344:3: ( rtcp_fb_token_param )=> rtcp_fb_token_param { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); FOLLOWPUSH(FOLLOW_rtcp_fb_token_param_in_rtcp_fb_param1987); rtcp_fb_token_param181=rtcp_fb_token_param(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulertcp_fb_paramEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, rtcp_fb_token_param181.tree); } break; } } } // This is where rules clean up and exit // goto rulertcp_fb_paramEx; /* Prevent compiler warnings */ rulertcp_fb_paramEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end rtcp_fb_param */ /** * $ANTLR start rtcp_fb_ack_param * ../grammars/belle_sdp.g:346:1: rtcp_fb_ack_param : ( ( rtcp_fb_rpsi_param )=> rtcp_fb_rpsi_param | ( rtcp_fb_app_param )=> rtcp_fb_app_param | ( rtcp_fb_token_param )=> rtcp_fb_token_param ); */ static belle_sdpParser_rtcp_fb_ack_param_return rtcp_fb_ack_param(pbelle_sdpParser ctx) { belle_sdpParser_rtcp_fb_ack_param_return retval; pANTLR3_BASE_TREE root_0; belle_sdpParser_rtcp_fb_rpsi_param_return rtcp_fb_rpsi_param182; #undef RETURN_TYPE_rtcp_fb_rpsi_param182 #define RETURN_TYPE_rtcp_fb_rpsi_param182 belle_sdpParser_rtcp_fb_rpsi_param_return belle_sdpParser_rtcp_fb_app_param_return rtcp_fb_app_param183; #undef RETURN_TYPE_rtcp_fb_app_param183 #define RETURN_TYPE_rtcp_fb_app_param183 belle_sdpParser_rtcp_fb_app_param_return belle_sdpParser_rtcp_fb_token_param_return rtcp_fb_token_param184; #undef RETURN_TYPE_rtcp_fb_token_param184 #define RETURN_TYPE_rtcp_fb_token_param184 belle_sdpParser_rtcp_fb_token_param_return /* Initialize rule variables */ root_0 = NULL; rtcp_fb_rpsi_param182.tree = NULL; rtcp_fb_app_param183.tree = NULL; rtcp_fb_token_param184.tree = NULL; retval.start = LT(1); retval.stop = retval.start; retval.tree = NULL; { { // ../grammars/belle_sdp.g:346:18: ( ( rtcp_fb_rpsi_param )=> rtcp_fb_rpsi_param | ( rtcp_fb_app_param )=> rtcp_fb_app_param | ( rtcp_fb_token_param )=> rtcp_fb_token_param ) ANTLR3_UINT32 alt37; alt37=3; switch ( LA(1) ) { case COMMON_CHAR: case HEX_CHAR: { { int LA37_1 = LA(2); if ( (synpred15_belle_sdp(ctx)) && (LA37_1 == COMMON_CHAR || LA37_1 == HEX_CHAR)) { alt37=2; } else if ( (synpred15_belle_sdp(ctx)) && (LA37_1 == DASH)) { alt37=2; } else if ( (synpred15_belle_sdp(ctx)) && (LA37_1 == SPACE)) { alt37=2; } else if ( (( (( (synpred14_belle_sdp(ctx)) && (synpred14_belle_sdp(ctx)) )) && ((IS_TOKEN(rpsi))) ))) { alt37=1; } else if ( (synpred16_belle_sdp(ctx))) { alt37=3; } else { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 37; EXCEPTION->state = 1; goto rulertcp_fb_ack_paramEx; } } } break; case DASH: { { int LA37_2 = LA(2); if ( (synpred15_belle_sdp(ctx)) && (LA37_2 == COMMON_CHAR || LA37_2 == HEX_CHAR)) { alt37=2; } else if ( (synpred15_belle_sdp(ctx)) && (LA37_2 == DASH)) { alt37=2; } else if ( (synpred15_belle_sdp(ctx)) && (LA37_2 == SPACE)) { alt37=2; } else if ( (( (( (synpred14_belle_sdp(ctx)) && (synpred14_belle_sdp(ctx)) )) && ((IS_TOKEN(rpsi))) ))) { alt37=1; } else if ( (synpred16_belle_sdp(ctx))) { alt37=3; } else { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 37; EXCEPTION->state = 2; goto rulertcp_fb_ack_paramEx; } } } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 37; EXCEPTION->state = 0; goto rulertcp_fb_ack_paramEx; } switch (alt37) { case 1: // ../grammars/belle_sdp.g:347:2: ( rtcp_fb_rpsi_param )=> rtcp_fb_rpsi_param { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); FOLLOWPUSH(FOLLOW_rtcp_fb_rpsi_param_in_rtcp_fb_ack_param1999); rtcp_fb_rpsi_param182=rtcp_fb_rpsi_param(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulertcp_fb_ack_paramEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, rtcp_fb_rpsi_param182.tree); } break; case 2: // ../grammars/belle_sdp.g:348:3: ( rtcp_fb_app_param )=> rtcp_fb_app_param { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); FOLLOWPUSH(FOLLOW_rtcp_fb_app_param_in_rtcp_fb_ack_param2007); rtcp_fb_app_param183=rtcp_fb_app_param(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulertcp_fb_ack_paramEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, rtcp_fb_app_param183.tree); } break; case 3: // ../grammars/belle_sdp.g:349:3: ( rtcp_fb_token_param )=> rtcp_fb_token_param { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); FOLLOWPUSH(FOLLOW_rtcp_fb_token_param_in_rtcp_fb_ack_param2015); rtcp_fb_token_param184=rtcp_fb_token_param(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulertcp_fb_ack_paramEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, rtcp_fb_token_param184.tree); } break; } } } // This is where rules clean up and exit // goto rulertcp_fb_ack_paramEx; /* Prevent compiler warnings */ rulertcp_fb_ack_paramEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end rtcp_fb_ack_param */ /** * $ANTLR start rtcp_fb_nack_param * ../grammars/belle_sdp.g:351:1: rtcp_fb_nack_param : ( ( rtcp_fb_pli_param )=> rtcp_fb_pli_param | ( rtcp_fb_sli_param )=> rtcp_fb_sli_param | ( rtcp_fb_rpsi_param )=> rtcp_fb_rpsi_param | ( rtcp_fb_app_param )=> rtcp_fb_app_param | ( rtcp_fb_token_param )=> rtcp_fb_token_param ); */ static belle_sdpParser_rtcp_fb_nack_param_return rtcp_fb_nack_param(pbelle_sdpParser ctx) { belle_sdpParser_rtcp_fb_nack_param_return retval; pANTLR3_BASE_TREE root_0; belle_sdpParser_rtcp_fb_pli_param_return rtcp_fb_pli_param185; #undef RETURN_TYPE_rtcp_fb_pli_param185 #define RETURN_TYPE_rtcp_fb_pli_param185 belle_sdpParser_rtcp_fb_pli_param_return belle_sdpParser_rtcp_fb_sli_param_return rtcp_fb_sli_param186; #undef RETURN_TYPE_rtcp_fb_sli_param186 #define RETURN_TYPE_rtcp_fb_sli_param186 belle_sdpParser_rtcp_fb_sli_param_return belle_sdpParser_rtcp_fb_rpsi_param_return rtcp_fb_rpsi_param187; #undef RETURN_TYPE_rtcp_fb_rpsi_param187 #define RETURN_TYPE_rtcp_fb_rpsi_param187 belle_sdpParser_rtcp_fb_rpsi_param_return belle_sdpParser_rtcp_fb_app_param_return rtcp_fb_app_param188; #undef RETURN_TYPE_rtcp_fb_app_param188 #define RETURN_TYPE_rtcp_fb_app_param188 belle_sdpParser_rtcp_fb_app_param_return belle_sdpParser_rtcp_fb_token_param_return rtcp_fb_token_param189; #undef RETURN_TYPE_rtcp_fb_token_param189 #define RETURN_TYPE_rtcp_fb_token_param189 belle_sdpParser_rtcp_fb_token_param_return /* Initialize rule variables */ root_0 = NULL; rtcp_fb_pli_param185.tree = NULL; rtcp_fb_sli_param186.tree = NULL; rtcp_fb_rpsi_param187.tree = NULL; rtcp_fb_app_param188.tree = NULL; rtcp_fb_token_param189.tree = NULL; retval.start = LT(1); retval.stop = retval.start; retval.tree = NULL; { { // ../grammars/belle_sdp.g:351:19: ( ( rtcp_fb_pli_param )=> rtcp_fb_pli_param | ( rtcp_fb_sli_param )=> rtcp_fb_sli_param | ( rtcp_fb_rpsi_param )=> rtcp_fb_rpsi_param | ( rtcp_fb_app_param )=> rtcp_fb_app_param | ( rtcp_fb_token_param )=> rtcp_fb_token_param ) ANTLR3_UINT32 alt38; alt38=5; switch ( LA(1) ) { case COMMON_CHAR: case HEX_CHAR: { { int LA38_1 = LA(2); if ( (synpred20_belle_sdp(ctx)) && (LA38_1 == COMMON_CHAR || LA38_1 == HEX_CHAR)) { alt38=4; } else if ( (synpred20_belle_sdp(ctx)) && (LA38_1 == DASH)) { alt38=4; } else if ( (synpred20_belle_sdp(ctx)) && (LA38_1 == SPACE)) { alt38=4; } else if ( (( (( ((IS_TOKEN(pli))) && ((IS_TOKEN(pli))) )) && (synpred17_belle_sdp(ctx)) ))) { alt38=1; } else if ( (( (( (synpred18_belle_sdp(ctx)) && (synpred18_belle_sdp(ctx)) )) && ((IS_TOKEN(sli))) ))) { alt38=2; } else if ( (( (( ((IS_TOKEN(rpsi))) && ((IS_TOKEN(rpsi))) )) && (synpred19_belle_sdp(ctx)) ))) { alt38=3; } else if ( (synpred21_belle_sdp(ctx))) { alt38=5; } else { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 38; EXCEPTION->state = 1; goto rulertcp_fb_nack_paramEx; } } } break; case DASH: { { int LA38_2 = LA(2); if ( (synpred20_belle_sdp(ctx)) && (LA38_2 == COMMON_CHAR || LA38_2 == HEX_CHAR)) { alt38=4; } else if ( (synpred20_belle_sdp(ctx)) && (LA38_2 == DASH)) { alt38=4; } else if ( (synpred20_belle_sdp(ctx)) && (LA38_2 == SPACE)) { alt38=4; } else if ( (( (( ((IS_TOKEN(pli))) && ((IS_TOKEN(pli))) )) && (synpred17_belle_sdp(ctx)) ))) { alt38=1; } else if ( (( (( (synpred18_belle_sdp(ctx)) && (synpred18_belle_sdp(ctx)) )) && ((IS_TOKEN(sli))) ))) { alt38=2; } else if ( (( (( ((IS_TOKEN(rpsi))) && ((IS_TOKEN(rpsi))) )) && (synpred19_belle_sdp(ctx)) ))) { alt38=3; } else if ( (synpred21_belle_sdp(ctx))) { alt38=5; } else { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 38; EXCEPTION->state = 2; goto rulertcp_fb_nack_paramEx; } } } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 38; EXCEPTION->state = 0; goto rulertcp_fb_nack_paramEx; } switch (alt38) { case 1: // ../grammars/belle_sdp.g:352:2: ( rtcp_fb_pli_param )=> rtcp_fb_pli_param { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); FOLLOWPUSH(FOLLOW_rtcp_fb_pli_param_in_rtcp_fb_nack_param2027); rtcp_fb_pli_param185=rtcp_fb_pli_param(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulertcp_fb_nack_paramEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, rtcp_fb_pli_param185.tree); } break; case 2: // ../grammars/belle_sdp.g:353:3: ( rtcp_fb_sli_param )=> rtcp_fb_sli_param { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); FOLLOWPUSH(FOLLOW_rtcp_fb_sli_param_in_rtcp_fb_nack_param2035); rtcp_fb_sli_param186=rtcp_fb_sli_param(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulertcp_fb_nack_paramEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, rtcp_fb_sli_param186.tree); } break; case 3: // ../grammars/belle_sdp.g:354:3: ( rtcp_fb_rpsi_param )=> rtcp_fb_rpsi_param { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); FOLLOWPUSH(FOLLOW_rtcp_fb_rpsi_param_in_rtcp_fb_nack_param2043); rtcp_fb_rpsi_param187=rtcp_fb_rpsi_param(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulertcp_fb_nack_paramEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, rtcp_fb_rpsi_param187.tree); } break; case 4: // ../grammars/belle_sdp.g:355:3: ( rtcp_fb_app_param )=> rtcp_fb_app_param { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); FOLLOWPUSH(FOLLOW_rtcp_fb_app_param_in_rtcp_fb_nack_param2051); rtcp_fb_app_param188=rtcp_fb_app_param(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulertcp_fb_nack_paramEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, rtcp_fb_app_param188.tree); } break; case 5: // ../grammars/belle_sdp.g:356:3: ( rtcp_fb_token_param )=> rtcp_fb_token_param { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); FOLLOWPUSH(FOLLOW_rtcp_fb_token_param_in_rtcp_fb_nack_param2059); rtcp_fb_token_param189=rtcp_fb_token_param(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulertcp_fb_nack_paramEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, rtcp_fb_token_param189.tree); } break; } } } // This is where rules clean up and exit // goto rulertcp_fb_nack_paramEx; /* Prevent compiler warnings */ rulertcp_fb_nack_paramEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end rtcp_fb_nack_param */ /** * $ANTLR start rtcp_fb_pli_param * ../grammars/belle_sdp.g:358:1: rtcp_fb_pli_param :{...}? rtcp_fb_attribute_name ; */ static belle_sdpParser_rtcp_fb_pli_param_return rtcp_fb_pli_param(pbelle_sdpParser ctx) { belle_sdpParser_rtcp_fb_pli_param_return retval; pANTLR3_BASE_TREE root_0; belle_sdpParser_rtcp_fb_attribute_name_return rtcp_fb_attribute_name190; #undef RETURN_TYPE_rtcp_fb_attribute_name190 #define RETURN_TYPE_rtcp_fb_attribute_name190 belle_sdpParser_rtcp_fb_attribute_name_return /* Initialize rule variables */ root_0 = NULL; rtcp_fb_attribute_name190.tree = NULL; retval.start = LT(1); retval.stop = retval.start; retval.tree = NULL; { // ../grammars/belle_sdp.g:358:18: ({...}? rtcp_fb_attribute_name ) // ../grammars/belle_sdp.g:359:2: {...}? rtcp_fb_attribute_name { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); if ( !((IS_TOKEN(pli))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(pli)"; EXCEPTION->ruleName = (void *)"rtcp_fb_pli_param"; } FOLLOWPUSH(FOLLOW_rtcp_fb_attribute_name_in_rtcp_fb_pli_param2069); rtcp_fb_attribute_name190=rtcp_fb_attribute_name(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulertcp_fb_pli_paramEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, rtcp_fb_attribute_name190.tree); if ( BACKTRACKING==0 ) { belle_sdp_rtcp_fb_attribute_set_param((SCOPE_TOP(rtcp_fb_attribute))->current,BELLE_SDP_RTCP_FB_PLI); } } } // This is where rules clean up and exit // goto rulertcp_fb_pli_paramEx; /* Prevent compiler warnings */ rulertcp_fb_pli_paramEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end rtcp_fb_pli_param */ /** * $ANTLR start rtcp_fb_sli_param * ../grammars/belle_sdp.g:363:1: rtcp_fb_sli_param :{...}? rtcp_fb_attribute_name ; */ static belle_sdpParser_rtcp_fb_sli_param_return rtcp_fb_sli_param(pbelle_sdpParser ctx) { belle_sdpParser_rtcp_fb_sli_param_return retval; pANTLR3_BASE_TREE root_0; belle_sdpParser_rtcp_fb_attribute_name_return rtcp_fb_attribute_name191; #undef RETURN_TYPE_rtcp_fb_attribute_name191 #define RETURN_TYPE_rtcp_fb_attribute_name191 belle_sdpParser_rtcp_fb_attribute_name_return /* Initialize rule variables */ root_0 = NULL; rtcp_fb_attribute_name191.tree = NULL; retval.start = LT(1); retval.stop = retval.start; retval.tree = NULL; { // ../grammars/belle_sdp.g:363:18: ({...}? rtcp_fb_attribute_name ) // ../grammars/belle_sdp.g:364:2: {...}? rtcp_fb_attribute_name { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); if ( !((IS_TOKEN(sli))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(sli)"; EXCEPTION->ruleName = (void *)"rtcp_fb_sli_param"; } FOLLOWPUSH(FOLLOW_rtcp_fb_attribute_name_in_rtcp_fb_sli_param2083); rtcp_fb_attribute_name191=rtcp_fb_attribute_name(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulertcp_fb_sli_paramEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, rtcp_fb_attribute_name191.tree); if ( BACKTRACKING==0 ) { belle_sdp_rtcp_fb_attribute_set_param((SCOPE_TOP(rtcp_fb_attribute))->current,BELLE_SDP_RTCP_FB_SLI); } } } // This is where rules clean up and exit // goto rulertcp_fb_sli_paramEx; /* Prevent compiler warnings */ rulertcp_fb_sli_paramEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end rtcp_fb_sli_param */ /** * $ANTLR start rtcp_fb_rpsi_param * ../grammars/belle_sdp.g:368:1: rtcp_fb_rpsi_param :{...}? rtcp_fb_attribute_name ; */ static belle_sdpParser_rtcp_fb_rpsi_param_return rtcp_fb_rpsi_param(pbelle_sdpParser ctx) { belle_sdpParser_rtcp_fb_rpsi_param_return retval; pANTLR3_BASE_TREE root_0; belle_sdpParser_rtcp_fb_attribute_name_return rtcp_fb_attribute_name192; #undef RETURN_TYPE_rtcp_fb_attribute_name192 #define RETURN_TYPE_rtcp_fb_attribute_name192 belle_sdpParser_rtcp_fb_attribute_name_return /* Initialize rule variables */ root_0 = NULL; rtcp_fb_attribute_name192.tree = NULL; retval.start = LT(1); retval.stop = retval.start; retval.tree = NULL; { // ../grammars/belle_sdp.g:368:19: ({...}? rtcp_fb_attribute_name ) // ../grammars/belle_sdp.g:369:2: {...}? rtcp_fb_attribute_name { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); if ( !((IS_TOKEN(rpsi))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(rpsi)"; EXCEPTION->ruleName = (void *)"rtcp_fb_rpsi_param"; } FOLLOWPUSH(FOLLOW_rtcp_fb_attribute_name_in_rtcp_fb_rpsi_param2097); rtcp_fb_attribute_name192=rtcp_fb_attribute_name(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulertcp_fb_rpsi_paramEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, rtcp_fb_attribute_name192.tree); if ( BACKTRACKING==0 ) { belle_sdp_rtcp_fb_attribute_set_param((SCOPE_TOP(rtcp_fb_attribute))->current,BELLE_SDP_RTCP_FB_RPSI); } } } // This is where rules clean up and exit // goto rulertcp_fb_rpsi_paramEx; /* Prevent compiler warnings */ rulertcp_fb_rpsi_paramEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end rtcp_fb_rpsi_param */ /** * $ANTLR start rtcp_fb_app_param * ../grammars/belle_sdp.g:373:1: rtcp_fb_app_param :{...}? rtcp_fb_attribute_name ( SPACE byte_string ) ; */ static belle_sdpParser_rtcp_fb_app_param_return rtcp_fb_app_param(pbelle_sdpParser ctx) { belle_sdpParser_rtcp_fb_app_param_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN SPACE194; belle_sdpParser_rtcp_fb_attribute_name_return rtcp_fb_attribute_name193; #undef RETURN_TYPE_rtcp_fb_attribute_name193 #define RETURN_TYPE_rtcp_fb_attribute_name193 belle_sdpParser_rtcp_fb_attribute_name_return belle_sdpParser_byte_string_return byte_string195; #undef RETURN_TYPE_byte_string195 #define RETURN_TYPE_byte_string195 belle_sdpParser_byte_string_return pANTLR3_BASE_TREE SPACE194_tree; /* Initialize rule variables */ root_0 = NULL; SPACE194 = NULL; rtcp_fb_attribute_name193.tree = NULL; byte_string195.tree = NULL; retval.start = LT(1); retval.stop = retval.start; SPACE194_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:373:18: ({...}? rtcp_fb_attribute_name ( SPACE byte_string ) ) // ../grammars/belle_sdp.g:374:2: {...}? rtcp_fb_attribute_name ( SPACE byte_string ) { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); if ( !((IS_TOKEN(app))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(app)"; EXCEPTION->ruleName = (void *)"rtcp_fb_app_param"; } FOLLOWPUSH(FOLLOW_rtcp_fb_attribute_name_in_rtcp_fb_app_param2111); rtcp_fb_attribute_name193=rtcp_fb_attribute_name(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulertcp_fb_app_paramEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, rtcp_fb_attribute_name193.tree); // ../grammars/belle_sdp.g:374:52: ( SPACE byte_string ) // ../grammars/belle_sdp.g:374:53: SPACE byte_string { SPACE194 = (pANTLR3_COMMON_TOKEN) MATCHT(SPACE, &FOLLOW_SPACE_in_rtcp_fb_app_param2116); if (HASEXCEPTION()) { goto rulertcp_fb_app_paramEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { SPACE194_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, SPACE194)); ADAPTOR->addChild(ADAPTOR, root_0, SPACE194_tree); } FOLLOWPUSH(FOLLOW_byte_string_in_rtcp_fb_app_param2118); byte_string195=byte_string(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulertcp_fb_app_paramEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, byte_string195.tree); } if ( BACKTRACKING==0 ) { belle_sdp_rtcp_fb_attribute_set_param((SCOPE_TOP(rtcp_fb_attribute))->current,BELLE_SDP_RTCP_FB_APP); } } } // This is where rules clean up and exit // goto rulertcp_fb_app_paramEx; /* Prevent compiler warnings */ rulertcp_fb_app_paramEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end rtcp_fb_app_param */ /** * $ANTLR start rtcp_fb_ccm_param * ../grammars/belle_sdp.g:378:1: rtcp_fb_ccm_param : ( ( rtcp_fb_fir_param )=> rtcp_fb_fir_param | ( rtcp_fb_tmmbr_param )=> rtcp_fb_tmmbr_param | ( rtcp_fb_token_param )=> rtcp_fb_token_param ); */ static belle_sdpParser_rtcp_fb_ccm_param_return rtcp_fb_ccm_param(pbelle_sdpParser ctx) { belle_sdpParser_rtcp_fb_ccm_param_return retval; pANTLR3_BASE_TREE root_0; belle_sdpParser_rtcp_fb_fir_param_return rtcp_fb_fir_param196; #undef RETURN_TYPE_rtcp_fb_fir_param196 #define RETURN_TYPE_rtcp_fb_fir_param196 belle_sdpParser_rtcp_fb_fir_param_return belle_sdpParser_rtcp_fb_tmmbr_param_return rtcp_fb_tmmbr_param197; #undef RETURN_TYPE_rtcp_fb_tmmbr_param197 #define RETURN_TYPE_rtcp_fb_tmmbr_param197 belle_sdpParser_rtcp_fb_tmmbr_param_return belle_sdpParser_rtcp_fb_token_param_return rtcp_fb_token_param198; #undef RETURN_TYPE_rtcp_fb_token_param198 #define RETURN_TYPE_rtcp_fb_token_param198 belle_sdpParser_rtcp_fb_token_param_return /* Initialize rule variables */ root_0 = NULL; rtcp_fb_fir_param196.tree = NULL; rtcp_fb_tmmbr_param197.tree = NULL; rtcp_fb_token_param198.tree = NULL; retval.start = LT(1); retval.stop = retval.start; retval.tree = NULL; { { // ../grammars/belle_sdp.g:378:18: ( ( rtcp_fb_fir_param )=> rtcp_fb_fir_param | ( rtcp_fb_tmmbr_param )=> rtcp_fb_tmmbr_param | ( rtcp_fb_token_param )=> rtcp_fb_token_param ) ANTLR3_UINT32 alt39; alt39=3; switch ( LA(1) ) { case COMMON_CHAR: case HEX_CHAR: { { int LA39_1 = LA(2); if ( (( (( ((IS_TOKEN(fir))) && ((IS_TOKEN(fir))) )) && (synpred22_belle_sdp(ctx)) ))) { alt39=1; } else if ( (( (( (synpred23_belle_sdp(ctx)) && (synpred23_belle_sdp(ctx)) )) && ((IS_TOKEN(tmmbr))) ))) { alt39=2; } else if ( (synpred24_belle_sdp(ctx))) { alt39=3; } else { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 39; EXCEPTION->state = 1; goto rulertcp_fb_ccm_paramEx; } } } break; case DASH: { { int LA39_2 = LA(2); if ( (( (( ((IS_TOKEN(fir))) && ((IS_TOKEN(fir))) )) && (synpred22_belle_sdp(ctx)) ))) { alt39=1; } else if ( (( (( (synpred23_belle_sdp(ctx)) && (synpred23_belle_sdp(ctx)) )) && ((IS_TOKEN(tmmbr))) ))) { alt39=2; } else if ( (synpred24_belle_sdp(ctx))) { alt39=3; } else { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 39; EXCEPTION->state = 2; goto rulertcp_fb_ccm_paramEx; } } } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 39; EXCEPTION->state = 0; goto rulertcp_fb_ccm_paramEx; } switch (alt39) { case 1: // ../grammars/belle_sdp.g:379:2: ( rtcp_fb_fir_param )=> rtcp_fb_fir_param { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); FOLLOWPUSH(FOLLOW_rtcp_fb_fir_param_in_rtcp_fb_ccm_param2133); rtcp_fb_fir_param196=rtcp_fb_fir_param(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulertcp_fb_ccm_paramEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, rtcp_fb_fir_param196.tree); } break; case 2: // ../grammars/belle_sdp.g:380:3: ( rtcp_fb_tmmbr_param )=> rtcp_fb_tmmbr_param { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); FOLLOWPUSH(FOLLOW_rtcp_fb_tmmbr_param_in_rtcp_fb_ccm_param2141); rtcp_fb_tmmbr_param197=rtcp_fb_tmmbr_param(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulertcp_fb_ccm_paramEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, rtcp_fb_tmmbr_param197.tree); } break; case 3: // ../grammars/belle_sdp.g:381:3: ( rtcp_fb_token_param )=> rtcp_fb_token_param { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); FOLLOWPUSH(FOLLOW_rtcp_fb_token_param_in_rtcp_fb_ccm_param2149); rtcp_fb_token_param198=rtcp_fb_token_param(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulertcp_fb_ccm_paramEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, rtcp_fb_token_param198.tree); } break; } } } // This is where rules clean up and exit // goto rulertcp_fb_ccm_paramEx; /* Prevent compiler warnings */ rulertcp_fb_ccm_paramEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end rtcp_fb_ccm_param */ /** * $ANTLR start rtcp_fb_fir_param * ../grammars/belle_sdp.g:383:1: rtcp_fb_fir_param :{...}? rtcp_fb_attribute_name ; */ static belle_sdpParser_rtcp_fb_fir_param_return rtcp_fb_fir_param(pbelle_sdpParser ctx) { belle_sdpParser_rtcp_fb_fir_param_return retval; pANTLR3_BASE_TREE root_0; belle_sdpParser_rtcp_fb_attribute_name_return rtcp_fb_attribute_name199; #undef RETURN_TYPE_rtcp_fb_attribute_name199 #define RETURN_TYPE_rtcp_fb_attribute_name199 belle_sdpParser_rtcp_fb_attribute_name_return /* Initialize rule variables */ root_0 = NULL; rtcp_fb_attribute_name199.tree = NULL; retval.start = LT(1); retval.stop = retval.start; retval.tree = NULL; { // ../grammars/belle_sdp.g:383:18: ({...}? rtcp_fb_attribute_name ) // ../grammars/belle_sdp.g:384:2: {...}? rtcp_fb_attribute_name { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); if ( !((IS_TOKEN(fir))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(fir)"; EXCEPTION->ruleName = (void *)"rtcp_fb_fir_param"; } FOLLOWPUSH(FOLLOW_rtcp_fb_attribute_name_in_rtcp_fb_fir_param2159); rtcp_fb_attribute_name199=rtcp_fb_attribute_name(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulertcp_fb_fir_paramEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, rtcp_fb_attribute_name199.tree); if ( BACKTRACKING==0 ) { belle_sdp_rtcp_fb_attribute_set_param((SCOPE_TOP(rtcp_fb_attribute))->current,BELLE_SDP_RTCP_FB_FIR); } } } // This is where rules clean up and exit // goto rulertcp_fb_fir_paramEx; /* Prevent compiler warnings */ rulertcp_fb_fir_paramEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end rtcp_fb_fir_param */ /** * $ANTLR start rtcp_fb_tmmbr_param * ../grammars/belle_sdp.g:388:1: rtcp_fb_tmmbr_param :{...}? rtcp_fb_attribute_name ( SPACE rtcp_fb_tmmbr_smaxpr_param )? ; */ static belle_sdpParser_rtcp_fb_tmmbr_param_return rtcp_fb_tmmbr_param(pbelle_sdpParser ctx) { belle_sdpParser_rtcp_fb_tmmbr_param_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN SPACE201; belle_sdpParser_rtcp_fb_attribute_name_return rtcp_fb_attribute_name200; #undef RETURN_TYPE_rtcp_fb_attribute_name200 #define RETURN_TYPE_rtcp_fb_attribute_name200 belle_sdpParser_rtcp_fb_attribute_name_return belle_sdpParser_rtcp_fb_tmmbr_smaxpr_param_return rtcp_fb_tmmbr_smaxpr_param202; #undef RETURN_TYPE_rtcp_fb_tmmbr_smaxpr_param202 #define RETURN_TYPE_rtcp_fb_tmmbr_smaxpr_param202 belle_sdpParser_rtcp_fb_tmmbr_smaxpr_param_return pANTLR3_BASE_TREE SPACE201_tree; /* Initialize rule variables */ root_0 = NULL; SPACE201 = NULL; rtcp_fb_attribute_name200.tree = NULL; rtcp_fb_tmmbr_smaxpr_param202.tree = NULL; retval.start = LT(1); retval.stop = retval.start; SPACE201_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:388:20: ({...}? rtcp_fb_attribute_name ( SPACE rtcp_fb_tmmbr_smaxpr_param )? ) // ../grammars/belle_sdp.g:389:2: {...}? rtcp_fb_attribute_name ( SPACE rtcp_fb_tmmbr_smaxpr_param )? { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); if ( !((IS_TOKEN(tmmbr))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(tmmbr)"; EXCEPTION->ruleName = (void *)"rtcp_fb_tmmbr_param"; } FOLLOWPUSH(FOLLOW_rtcp_fb_attribute_name_in_rtcp_fb_tmmbr_param2173); rtcp_fb_attribute_name200=rtcp_fb_attribute_name(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulertcp_fb_tmmbr_paramEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, rtcp_fb_attribute_name200.tree); // ../grammars/belle_sdp.g:389:56: ( SPACE rtcp_fb_tmmbr_smaxpr_param )? { int alt40=2; switch ( LA(1) ) { case SPACE: { alt40=1; } break; } switch (alt40) { case 1: // ../grammars/belle_sdp.g:389:57: SPACE rtcp_fb_tmmbr_smaxpr_param { SPACE201 = (pANTLR3_COMMON_TOKEN) MATCHT(SPACE, &FOLLOW_SPACE_in_rtcp_fb_tmmbr_param2178); if (HASEXCEPTION()) { goto rulertcp_fb_tmmbr_paramEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { SPACE201_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, SPACE201)); ADAPTOR->addChild(ADAPTOR, root_0, SPACE201_tree); } FOLLOWPUSH(FOLLOW_rtcp_fb_tmmbr_smaxpr_param_in_rtcp_fb_tmmbr_param2180); rtcp_fb_tmmbr_smaxpr_param202=rtcp_fb_tmmbr_smaxpr_param(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulertcp_fb_tmmbr_paramEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, rtcp_fb_tmmbr_smaxpr_param202.tree); } break; } } if ( BACKTRACKING==0 ) { belle_sdp_rtcp_fb_attribute_set_param((SCOPE_TOP(rtcp_fb_attribute))->current,BELLE_SDP_RTCP_FB_TMMBR); } } } // This is where rules clean up and exit // goto rulertcp_fb_tmmbr_paramEx; /* Prevent compiler warnings */ rulertcp_fb_tmmbr_paramEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end rtcp_fb_tmmbr_param */ /** * $ANTLR start rtcp_fb_tmmbr_smaxpr_param * ../grammars/belle_sdp.g:393:1: rtcp_fb_tmmbr_smaxpr_param :{...}? rtcp_fb_attribute_name EQUAL val= rtcp_fb_tmmbr_smaxpr ; */ static belle_sdpParser_rtcp_fb_tmmbr_smaxpr_param_return rtcp_fb_tmmbr_smaxpr_param(pbelle_sdpParser ctx) { belle_sdpParser_rtcp_fb_tmmbr_smaxpr_param_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN EQUAL204; belle_sdpParser_rtcp_fb_tmmbr_smaxpr_return val; #undef RETURN_TYPE_val #define RETURN_TYPE_val belle_sdpParser_rtcp_fb_tmmbr_smaxpr_return belle_sdpParser_rtcp_fb_attribute_name_return rtcp_fb_attribute_name203; #undef RETURN_TYPE_rtcp_fb_attribute_name203 #define RETURN_TYPE_rtcp_fb_attribute_name203 belle_sdpParser_rtcp_fb_attribute_name_return pANTLR3_BASE_TREE EQUAL204_tree; /* Initialize rule variables */ root_0 = NULL; EQUAL204 = NULL; val.tree = NULL; rtcp_fb_attribute_name203.tree = NULL; retval.start = LT(1); retval.stop = retval.start; EQUAL204_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:393:27: ({...}? rtcp_fb_attribute_name EQUAL val= rtcp_fb_tmmbr_smaxpr ) // ../grammars/belle_sdp.g:394:2: {...}? rtcp_fb_attribute_name EQUAL val= rtcp_fb_tmmbr_smaxpr { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); if ( !((IS_TOKEN(smaxpr))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(smaxpr)"; EXCEPTION->ruleName = (void *)"rtcp_fb_tmmbr_smaxpr_param"; } FOLLOWPUSH(FOLLOW_rtcp_fb_attribute_name_in_rtcp_fb_tmmbr_smaxpr_param2194); rtcp_fb_attribute_name203=rtcp_fb_attribute_name(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulertcp_fb_tmmbr_smaxpr_paramEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, rtcp_fb_attribute_name203.tree); EQUAL204 = (pANTLR3_COMMON_TOKEN) MATCHT(EQUAL, &FOLLOW_EQUAL_in_rtcp_fb_tmmbr_smaxpr_param2198); if (HASEXCEPTION()) { goto rulertcp_fb_tmmbr_smaxpr_paramEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { EQUAL204_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, EQUAL204)); ADAPTOR->addChild(ADAPTOR, root_0, EQUAL204_tree); } FOLLOWPUSH(FOLLOW_rtcp_fb_tmmbr_smaxpr_in_rtcp_fb_tmmbr_smaxpr_param2202); val=rtcp_fb_tmmbr_smaxpr(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulertcp_fb_tmmbr_smaxpr_paramEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, val.tree); if ( BACKTRACKING==0 ) { if (val.tree) belle_sdp_rtcp_fb_attribute_set_smaxpr((SCOPE_TOP(rtcp_fb_attribute))->current,atoi((const char*) (STRSTREAM->toStringTT(STRSTREAM, val.start, val.stop)) ->chars)); } } } // This is where rules clean up and exit // goto rulertcp_fb_tmmbr_smaxpr_paramEx; /* Prevent compiler warnings */ rulertcp_fb_tmmbr_smaxpr_paramEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end rtcp_fb_tmmbr_smaxpr_param */ /** * $ANTLR start rtcp_fb_tmmbr_smaxpr * ../grammars/belle_sdp.g:398:1: rtcp_fb_tmmbr_smaxpr : ( DIGIT )+ ; */ static belle_sdpParser_rtcp_fb_tmmbr_smaxpr_return rtcp_fb_tmmbr_smaxpr(pbelle_sdpParser ctx) { belle_sdpParser_rtcp_fb_tmmbr_smaxpr_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN DIGIT205; pANTLR3_BASE_TREE DIGIT205_tree; /* Initialize rule variables */ root_0 = NULL; DIGIT205 = NULL; retval.start = LT(1); retval.stop = retval.start; DIGIT205_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:398:22: ( ( DIGIT )+ ) // ../grammars/belle_sdp.g:398:24: ( DIGIT )+ { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); // ../grammars/belle_sdp.g:398:24: ( DIGIT )+ { int cnt41=0; for (;;) { int alt41=2; switch ( LA(1) ) { case DIGIT: { alt41=1; } break; } switch (alt41) { case 1: // ../grammars/belle_sdp.g:398:24: DIGIT { DIGIT205 = (pANTLR3_COMMON_TOKEN) MATCHT(DIGIT, &FOLLOW_DIGIT_in_rtcp_fb_tmmbr_smaxpr2212); if (HASEXCEPTION()) { goto rulertcp_fb_tmmbr_smaxprEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { DIGIT205_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, DIGIT205)); ADAPTOR->addChild(ADAPTOR, root_0, DIGIT205_tree); } } break; default: if ( cnt41 >= 1 ) { goto loop41; } if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } /* mismatchedSetEx() */ CONSTRUCTEX(); EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME; goto rulertcp_fb_tmmbr_smaxprEx; } cnt41++; } loop41: ; /* Jump to here if this rule does not match */ } } } // This is where rules clean up and exit // goto rulertcp_fb_tmmbr_smaxprEx; /* Prevent compiler warnings */ rulertcp_fb_tmmbr_smaxprEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end rtcp_fb_tmmbr_smaxpr */ /** * $ANTLR start rtcp_fb_token_param * ../grammars/belle_sdp.g:400:1: rtcp_fb_token_param : rtcp_fb_attribute_name ( SPACE byte_string )? ; */ static belle_sdpParser_rtcp_fb_token_param_return rtcp_fb_token_param(pbelle_sdpParser ctx) { belle_sdpParser_rtcp_fb_token_param_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN SPACE207; belle_sdpParser_rtcp_fb_attribute_name_return rtcp_fb_attribute_name206; #undef RETURN_TYPE_rtcp_fb_attribute_name206 #define RETURN_TYPE_rtcp_fb_attribute_name206 belle_sdpParser_rtcp_fb_attribute_name_return belle_sdpParser_byte_string_return byte_string208; #undef RETURN_TYPE_byte_string208 #define RETURN_TYPE_byte_string208 belle_sdpParser_byte_string_return pANTLR3_BASE_TREE SPACE207_tree; /* Initialize rule variables */ root_0 = NULL; SPACE207 = NULL; rtcp_fb_attribute_name206.tree = NULL; byte_string208.tree = NULL; retval.start = LT(1); retval.stop = retval.start; SPACE207_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:400:20: ( rtcp_fb_attribute_name ( SPACE byte_string )? ) // ../grammars/belle_sdp.g:401:2: rtcp_fb_attribute_name ( SPACE byte_string )? { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); FOLLOWPUSH(FOLLOW_rtcp_fb_attribute_name_in_rtcp_fb_token_param2221); rtcp_fb_attribute_name206=rtcp_fb_attribute_name(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulertcp_fb_token_paramEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, rtcp_fb_attribute_name206.tree); // ../grammars/belle_sdp.g:401:25: ( SPACE byte_string )? { int alt42=2; switch ( LA(1) ) { case SPACE: { alt42=1; } break; } switch (alt42) { case 1: // ../grammars/belle_sdp.g:401:26: SPACE byte_string { SPACE207 = (pANTLR3_COMMON_TOKEN) MATCHT(SPACE, &FOLLOW_SPACE_in_rtcp_fb_token_param2224); if (HASEXCEPTION()) { goto rulertcp_fb_token_paramEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { SPACE207_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, SPACE207)); ADAPTOR->addChild(ADAPTOR, root_0, SPACE207_tree); } FOLLOWPUSH(FOLLOW_byte_string_in_rtcp_fb_token_param2226); byte_string208=byte_string(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulertcp_fb_token_paramEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, byte_string208.tree); } break; } } } } // This is where rules clean up and exit // goto rulertcp_fb_token_paramEx; /* Prevent compiler warnings */ rulertcp_fb_token_paramEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end rtcp_fb_token_param */ /** * $ANTLR start media_description * ../grammars/belle_sdp.g:403:1: media_description returns [belle_sdp_media_description_t* ret] : media CR LF ( info CR LF )? ( connection CR LF )? ( bandwidth CR LF )* ( key_field CR LF )? ( attribute CR LF )* ; */ static belle_sdpParser_media_description_return media_description(pbelle_sdpParser ctx) { belle_sdpParser_media_description_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN CR210; pANTLR3_COMMON_TOKEN LF211; pANTLR3_COMMON_TOKEN CR213; pANTLR3_COMMON_TOKEN LF214; pANTLR3_COMMON_TOKEN CR216; pANTLR3_COMMON_TOKEN LF217; pANTLR3_COMMON_TOKEN CR219; pANTLR3_COMMON_TOKEN LF220; pANTLR3_COMMON_TOKEN CR222; pANTLR3_COMMON_TOKEN LF223; pANTLR3_COMMON_TOKEN CR225; pANTLR3_COMMON_TOKEN LF226; belle_sdpParser_media_return media209; #undef RETURN_TYPE_media209 #define RETURN_TYPE_media209 belle_sdpParser_media_return belle_sdpParser_info_return info212; #undef RETURN_TYPE_info212 #define RETURN_TYPE_info212 belle_sdpParser_info_return belle_sdpParser_connection_return connection215; #undef RETURN_TYPE_connection215 #define RETURN_TYPE_connection215 belle_sdpParser_connection_return belle_sdpParser_bandwidth_return bandwidth218; #undef RETURN_TYPE_bandwidth218 #define RETURN_TYPE_bandwidth218 belle_sdpParser_bandwidth_return belle_sdpParser_key_field_return key_field221; #undef RETURN_TYPE_key_field221 #define RETURN_TYPE_key_field221 belle_sdpParser_key_field_return belle_sdpParser_attribute_return attribute224; #undef RETURN_TYPE_attribute224 #define RETURN_TYPE_attribute224 belle_sdpParser_attribute_return pANTLR3_BASE_TREE CR210_tree; pANTLR3_BASE_TREE LF211_tree; pANTLR3_BASE_TREE CR213_tree; pANTLR3_BASE_TREE LF214_tree; pANTLR3_BASE_TREE CR216_tree; pANTLR3_BASE_TREE LF217_tree; pANTLR3_BASE_TREE CR219_tree; pANTLR3_BASE_TREE LF220_tree; pANTLR3_BASE_TREE CR222_tree; pANTLR3_BASE_TREE LF223_tree; pANTLR3_BASE_TREE CR225_tree; pANTLR3_BASE_TREE LF226_tree; /* Initialize rule variables */ ctx->pbelle_sdpParser_media_descriptionTop = pbelle_sdpParser_media_descriptionPush(ctx); root_0 = NULL; (SCOPE_TOP(media_description))->current= belle_sdp_media_description_new(); retval.ret=(SCOPE_TOP(media_description))->current; CR210 = NULL; LF211 = NULL; CR213 = NULL; LF214 = NULL; CR216 = NULL; LF217 = NULL; CR219 = NULL; LF220 = NULL; CR222 = NULL; LF223 = NULL; CR225 = NULL; LF226 = NULL; media209.tree = NULL; info212.tree = NULL; connection215.tree = NULL; bandwidth218.tree = NULL; key_field221.tree = NULL; attribute224.tree = NULL; retval.start = LT(1); retval.stop = retval.start; CR210_tree = NULL; LF211_tree = NULL; CR213_tree = NULL; LF214_tree = NULL; CR216_tree = NULL; LF217_tree = NULL; CR219_tree = NULL; LF220_tree = NULL; CR222_tree = NULL; LF223_tree = NULL; CR225_tree = NULL; LF226_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:406:22: ( media CR LF ( info CR LF )? ( connection CR LF )? ( bandwidth CR LF )* ( key_field CR LF )? ( attribute CR LF )* ) // ../grammars/belle_sdp.g:406:22: media CR LF ( info CR LF )? ( connection CR LF )? ( bandwidth CR LF )* ( key_field CR LF )? ( attribute CR LF )* { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); FOLLOWPUSH(FOLLOW_media_in_media_description2269); media209=media(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulemedia_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_media_descriptionPop(ctx); return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, media209.tree); CR210 = (pANTLR3_COMMON_TOKEN) MATCHT(CR, &FOLLOW_CR_in_media_description2271); if (HASEXCEPTION()) { goto rulemedia_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_media_descriptionPop(ctx); return retval; } if ( BACKTRACKING==0 ) { CR210_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, CR210)); ADAPTOR->addChild(ADAPTOR, root_0, CR210_tree); } LF211 = (pANTLR3_COMMON_TOKEN) MATCHT(LF, &FOLLOW_LF_in_media_description2273); if (HASEXCEPTION()) { goto rulemedia_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_media_descriptionPop(ctx); return retval; } if ( BACKTRACKING==0 ) { LF211_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, LF211)); ADAPTOR->addChild(ADAPTOR, root_0, LF211_tree); } if ( BACKTRACKING==0 ) { belle_sdp_media_description_set_media((SCOPE_TOP(media_description))->current, media209.ret ); } // ../grammars/belle_sdp.g:407:21: ( info CR LF )? { int alt43=2; alt43 = cdfa43.predict(ctx, RECOGNIZER, ISTREAM, &cdfa43); if (HASEXCEPTION()) { goto rulemedia_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_media_descriptionPop(ctx); return retval; } switch (alt43) { case 1: // ../grammars/belle_sdp.g:407:22: info CR LF { FOLLOWPUSH(FOLLOW_info_in_media_description2299); info212=info(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulemedia_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_media_descriptionPop(ctx); return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, info212.tree); if ( BACKTRACKING==0 ) { belle_sdp_media_description_set_info((SCOPE_TOP(media_description))->current, info212.ret ); } CR213 = (pANTLR3_COMMON_TOKEN) MATCHT(CR, &FOLLOW_CR_in_media_description2303); if (HASEXCEPTION()) { goto rulemedia_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_media_descriptionPop(ctx); return retval; } if ( BACKTRACKING==0 ) { CR213_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, CR213)); ADAPTOR->addChild(ADAPTOR, root_0, CR213_tree); } LF214 = (pANTLR3_COMMON_TOKEN) MATCHT(LF, &FOLLOW_LF_in_media_description2305); if (HASEXCEPTION()) { goto rulemedia_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_media_descriptionPop(ctx); return retval; } if ( BACKTRACKING==0 ) { LF214_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, LF214)); ADAPTOR->addChild(ADAPTOR, root_0, LF214_tree); } } break; } } // ../grammars/belle_sdp.g:408:22: ( connection CR LF )? { int alt44=2; alt44 = cdfa44.predict(ctx, RECOGNIZER, ISTREAM, &cdfa44); if (HASEXCEPTION()) { goto rulemedia_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_media_descriptionPop(ctx); return retval; } switch (alt44) { case 1: // ../grammars/belle_sdp.g:408:23: connection CR LF { FOLLOWPUSH(FOLLOW_connection_in_media_description2331); connection215=connection(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulemedia_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_media_descriptionPop(ctx); return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, connection215.tree); if ( BACKTRACKING==0 ) { belle_sdp_media_description_set_connection((SCOPE_TOP(media_description))->current, connection215.ret ); } CR216 = (pANTLR3_COMMON_TOKEN) MATCHT(CR, &FOLLOW_CR_in_media_description2335); if (HASEXCEPTION()) { goto rulemedia_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_media_descriptionPop(ctx); return retval; } if ( BACKTRACKING==0 ) { CR216_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, CR216)); ADAPTOR->addChild(ADAPTOR, root_0, CR216_tree); } LF217 = (pANTLR3_COMMON_TOKEN) MATCHT(LF, &FOLLOW_LF_in_media_description2337); if (HASEXCEPTION()) { goto rulemedia_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_media_descriptionPop(ctx); return retval; } if ( BACKTRACKING==0 ) { LF217_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, LF217)); ADAPTOR->addChild(ADAPTOR, root_0, LF217_tree); } } break; } } // ../grammars/belle_sdp.g:409:22: ( bandwidth CR LF )* for (;;) { int alt45=2; alt45 = cdfa45.predict(ctx, RECOGNIZER, ISTREAM, &cdfa45); if (HASEXCEPTION()) { goto rulemedia_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_media_descriptionPop(ctx); return retval; } switch (alt45) { case 1: // ../grammars/belle_sdp.g:409:23: bandwidth CR LF { FOLLOWPUSH(FOLLOW_bandwidth_in_media_description2363); bandwidth218=bandwidth(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulemedia_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_media_descriptionPop(ctx); return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, bandwidth218.tree); if ( BACKTRACKING==0 ) { belle_sdp_media_description_add_bandwidth((SCOPE_TOP(media_description))->current, bandwidth218.ret ); } CR219 = (pANTLR3_COMMON_TOKEN) MATCHT(CR, &FOLLOW_CR_in_media_description2367); if (HASEXCEPTION()) { goto rulemedia_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_media_descriptionPop(ctx); return retval; } if ( BACKTRACKING==0 ) { CR219_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, CR219)); ADAPTOR->addChild(ADAPTOR, root_0, CR219_tree); } LF220 = (pANTLR3_COMMON_TOKEN) MATCHT(LF, &FOLLOW_LF_in_media_description2369); if (HASEXCEPTION()) { goto rulemedia_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_media_descriptionPop(ctx); return retval; } if ( BACKTRACKING==0 ) { LF220_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, LF220)); ADAPTOR->addChild(ADAPTOR, root_0, LF220_tree); } } break; default: goto loop45; /* break out of the loop */ break; } } loop45: ; /* Jump out to here if this rule does not match */ // ../grammars/belle_sdp.g:410:22: ( key_field CR LF )? { int alt46=2; alt46 = cdfa46.predict(ctx, RECOGNIZER, ISTREAM, &cdfa46); if (HASEXCEPTION()) { goto rulemedia_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_media_descriptionPop(ctx); return retval; } switch (alt46) { case 1: // ../grammars/belle_sdp.g:410:23: key_field CR LF { FOLLOWPUSH(FOLLOW_key_field_in_media_description2395); key_field221=key_field(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulemedia_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_media_descriptionPop(ctx); return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, key_field221.tree); CR222 = (pANTLR3_COMMON_TOKEN) MATCHT(CR, &FOLLOW_CR_in_media_description2397); if (HASEXCEPTION()) { goto rulemedia_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_media_descriptionPop(ctx); return retval; } if ( BACKTRACKING==0 ) { CR222_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, CR222)); ADAPTOR->addChild(ADAPTOR, root_0, CR222_tree); } LF223 = (pANTLR3_COMMON_TOKEN) MATCHT(LF, &FOLLOW_LF_in_media_description2399); if (HASEXCEPTION()) { goto rulemedia_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_media_descriptionPop(ctx); return retval; } if ( BACKTRACKING==0 ) { LF223_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, LF223)); ADAPTOR->addChild(ADAPTOR, root_0, LF223_tree); } } break; } } // ../grammars/belle_sdp.g:411:22: ( attribute CR LF )* for (;;) { int alt47=2; alt47 = cdfa47.predict(ctx, RECOGNIZER, ISTREAM, &cdfa47); if (HASEXCEPTION()) { goto rulemedia_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_media_descriptionPop(ctx); return retval; } switch (alt47) { case 1: // ../grammars/belle_sdp.g:411:23: attribute CR LF { FOLLOWPUSH(FOLLOW_attribute_in_media_description2425); attribute224=attribute(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulemedia_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_media_descriptionPop(ctx); return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, attribute224.tree); if ( BACKTRACKING==0 ) { if (attribute224.ret )belle_sdp_media_description_add_attribute((SCOPE_TOP(media_description))->current, attribute224.ret ); } CR225 = (pANTLR3_COMMON_TOKEN) MATCHT(CR, &FOLLOW_CR_in_media_description2429); if (HASEXCEPTION()) { goto rulemedia_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_media_descriptionPop(ctx); return retval; } if ( BACKTRACKING==0 ) { CR225_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, CR225)); ADAPTOR->addChild(ADAPTOR, root_0, CR225_tree); } LF226 = (pANTLR3_COMMON_TOKEN) MATCHT(LF, &FOLLOW_LF_in_media_description2431); if (HASEXCEPTION()) { goto rulemedia_descriptionEx; } if (HASFAILED()) { pbelle_sdpParser_media_descriptionPop(ctx); return retval; } if ( BACKTRACKING==0 ) { LF226_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, LF226)); ADAPTOR->addChild(ADAPTOR, root_0, LF226_tree); } } break; default: goto loop47; /* break out of the loop */ break; } } loop47: ; /* Jump out to here if this rule does not match */ } } // This is where rules clean up and exit // goto rulemedia_descriptionEx; /* Prevent compiler warnings */ rulemedia_descriptionEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { /* catch(decl,action) */ { ANTLR3_LOG_EXCEPTION(); belle_sip_object_unref(retval.ret ); retval.ret=NULL; } } else { } pbelle_sdpParser_media_descriptionPop(ctx); return retval; } /* $ANTLR end media_description */ /** * $ANTLR start media * ../grammars/belle_sdp.g:419:1: media returns [belle_sdp_media_t* ret] :{...}? alpha_num EQUAL media_value SPACE port ( SLASH integer )? SPACE proto ( SPACE fmt )+ ; */ static belle_sdpParser_media_return media(pbelle_sdpParser ctx) { belle_sdpParser_media_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN EQUAL228; pANTLR3_COMMON_TOKEN SPACE230; pANTLR3_COMMON_TOKEN SLASH232; pANTLR3_COMMON_TOKEN SPACE234; pANTLR3_COMMON_TOKEN SPACE236; belle_sdpParser_alpha_num_return alpha_num227; #undef RETURN_TYPE_alpha_num227 #define RETURN_TYPE_alpha_num227 belle_sdpParser_alpha_num_return belle_sdpParser_media_value_return media_value229; #undef RETURN_TYPE_media_value229 #define RETURN_TYPE_media_value229 belle_sdpParser_media_value_return belle_sdpParser_port_return port231; #undef RETURN_TYPE_port231 #define RETURN_TYPE_port231 belle_sdpParser_port_return belle_sdpParser_integer_return integer233; #undef RETURN_TYPE_integer233 #define RETURN_TYPE_integer233 belle_sdpParser_integer_return belle_sdpParser_proto_return proto235; #undef RETURN_TYPE_proto235 #define RETURN_TYPE_proto235 belle_sdpParser_proto_return belle_sdpParser_fmt_return fmt237; #undef RETURN_TYPE_fmt237 #define RETURN_TYPE_fmt237 belle_sdpParser_fmt_return pANTLR3_BASE_TREE EQUAL228_tree; pANTLR3_BASE_TREE SPACE230_tree; pANTLR3_BASE_TREE SLASH232_tree; pANTLR3_BASE_TREE SPACE234_tree; pANTLR3_BASE_TREE SPACE236_tree; /* Initialize rule variables */ ctx->pbelle_sdpParser_mediaTop = pbelle_sdpParser_mediaPush(ctx); root_0 = NULL; (SCOPE_TOP(media))->current= belle_sdp_media_new(); retval.ret=(SCOPE_TOP(media))->current; EQUAL228 = NULL; SPACE230 = NULL; SLASH232 = NULL; SPACE234 = NULL; SPACE236 = NULL; alpha_num227.tree = NULL; media_value229.tree = NULL; port231.tree = NULL; integer233.tree = NULL; proto235.tree = NULL; fmt237.tree = NULL; retval.start = LT(1); retval.stop = retval.start; EQUAL228_tree = NULL; SPACE230_tree = NULL; SLASH232_tree = NULL; SPACE234_tree = NULL; SPACE236_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:422:11: ({...}? alpha_num EQUAL media_value SPACE port ( SLASH integer )? SPACE proto ( SPACE fmt )+ ) // ../grammars/belle_sdp.g:422:11: {...}? alpha_num EQUAL media_value SPACE port ( SLASH integer )? SPACE proto ( SPACE fmt )+ { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); if ( !((IS_TOKEN(m))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sdpParser_mediaPop(ctx); return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(m)"; EXCEPTION->ruleName = (void *)"media"; } FOLLOWPUSH(FOLLOW_alpha_num_in_media2469); alpha_num227=alpha_num(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulemediaEx; } if (HASFAILED()) { pbelle_sdpParser_mediaPop(ctx); return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, alpha_num227.tree); EQUAL228 = (pANTLR3_COMMON_TOKEN) MATCHT(EQUAL, &FOLLOW_EQUAL_in_media2471); if (HASEXCEPTION()) { goto rulemediaEx; } if (HASFAILED()) { pbelle_sdpParser_mediaPop(ctx); return retval; } if ( BACKTRACKING==0 ) { EQUAL228_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, EQUAL228)); ADAPTOR->addChild(ADAPTOR, root_0, EQUAL228_tree); } FOLLOWPUSH(FOLLOW_media_value_in_media2483); media_value229=media_value(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulemediaEx; } if (HASFAILED()) { pbelle_sdpParser_mediaPop(ctx); return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, media_value229.tree); if ( BACKTRACKING==0 ) { belle_sdp_media_set_media_type((SCOPE_TOP(media))->current,(const char*) (STRSTREAM->toStringTT(STRSTREAM, media_value229.start, media_value229.stop)) ->chars); } SPACE230 = (pANTLR3_COMMON_TOKEN) MATCHT(SPACE, &FOLLOW_SPACE_in_media2497); if (HASEXCEPTION()) { goto rulemediaEx; } if (HASFAILED()) { pbelle_sdpParser_mediaPop(ctx); return retval; } if ( BACKTRACKING==0 ) { SPACE230_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, SPACE230)); ADAPTOR->addChild(ADAPTOR, root_0, SPACE230_tree); } FOLLOWPUSH(FOLLOW_port_in_media2499); port231=port(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulemediaEx; } if (HASFAILED()) { pbelle_sdpParser_mediaPop(ctx); return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, port231.tree); if ( BACKTRACKING==0 ) { belle_sdp_media_set_media_port((SCOPE_TOP(media))->current,atoi((const char*) (STRSTREAM->toStringTT(STRSTREAM, port231.start, port231.stop)) ->chars)); } // ../grammars/belle_sdp.g:425:11: ( SLASH integer )? { int alt48=2; switch ( LA(1) ) { case SLASH: { alt48=1; } break; } switch (alt48) { case 1: // ../grammars/belle_sdp.g:425:12: SLASH integer { SLASH232 = (pANTLR3_COMMON_TOKEN) MATCHT(SLASH, &FOLLOW_SLASH_in_media2514); if (HASEXCEPTION()) { goto rulemediaEx; } if (HASFAILED()) { pbelle_sdpParser_mediaPop(ctx); return retval; } if ( BACKTRACKING==0 ) { SLASH232_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, SLASH232)); ADAPTOR->addChild(ADAPTOR, root_0, SLASH232_tree); } FOLLOWPUSH(FOLLOW_integer_in_media2516); integer233=integer(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulemediaEx; } if (HASFAILED()) { pbelle_sdpParser_mediaPop(ctx); return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, integer233.tree); if ( BACKTRACKING==0 ) { belle_sdp_media_set_port_count((SCOPE_TOP(media))->current,atoi((const char*) (STRSTREAM->toStringTT(STRSTREAM, integer233.start, integer233.stop)) ->chars)); } } break; } } SPACE234 = (pANTLR3_COMMON_TOKEN) MATCHT(SPACE, &FOLLOW_SPACE_in_media2531); if (HASEXCEPTION()) { goto rulemediaEx; } if (HASFAILED()) { pbelle_sdpParser_mediaPop(ctx); return retval; } if ( BACKTRACKING==0 ) { SPACE234_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, SPACE234)); ADAPTOR->addChild(ADAPTOR, root_0, SPACE234_tree); } FOLLOWPUSH(FOLLOW_proto_in_media2533); proto235=proto(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulemediaEx; } if (HASFAILED()) { pbelle_sdpParser_mediaPop(ctx); return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, proto235.tree); if ( BACKTRACKING==0 ) { belle_sdp_media_set_protocol((SCOPE_TOP(media))->current,(const char*) (STRSTREAM->toStringTT(STRSTREAM, proto235.start, proto235.stop)) ->chars); } // ../grammars/belle_sdp.g:427:11: ( SPACE fmt )+ { int cnt49=0; for (;;) { int alt49=2; switch ( LA(1) ) { case SPACE: { alt49=1; } break; } switch (alt49) { case 1: // ../grammars/belle_sdp.g:427:12: SPACE fmt { SPACE236 = (pANTLR3_COMMON_TOKEN) MATCHT(SPACE, &FOLLOW_SPACE_in_media2548); if (HASEXCEPTION()) { goto rulemediaEx; } if (HASFAILED()) { pbelle_sdpParser_mediaPop(ctx); return retval; } if ( BACKTRACKING==0 ) { SPACE236_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, SPACE236)); ADAPTOR->addChild(ADAPTOR, root_0, SPACE236_tree); } FOLLOWPUSH(FOLLOW_fmt_in_media2550); fmt237=fmt(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulemediaEx; } if (HASFAILED()) { pbelle_sdpParser_mediaPop(ctx); return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, fmt237.tree); } break; default: if ( cnt49 >= 1 ) { goto loop49; } if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sdpParser_mediaPop(ctx); return retval; } /* mismatchedSetEx() */ CONSTRUCTEX(); EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME; goto rulemediaEx; } cnt49++; } loop49: ; /* Jump to here if this rule does not match */ } } } // This is where rules clean up and exit // goto rulemediaEx; /* Prevent compiler warnings */ rulemediaEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { /* catch(decl,action) */ { ANTLR3_LOG_EXCEPTION(); belle_sip_object_unref(retval.ret ); retval.ret=NULL; } } else { } pbelle_sdpParser_mediaPop(ctx); return retval; } /* $ANTLR end media */ /** * $ANTLR start media_value * ../grammars/belle_sdp.g:434:1: media_value : ( alpha_num )+ ; */ static belle_sdpParser_media_value_return media_value(pbelle_sdpParser ctx) { belle_sdpParser_media_value_return retval; pANTLR3_BASE_TREE root_0; belle_sdpParser_alpha_num_return alpha_num238; #undef RETURN_TYPE_alpha_num238 #define RETURN_TYPE_alpha_num238 belle_sdpParser_alpha_num_return /* Initialize rule variables */ root_0 = NULL; alpha_num238.tree = NULL; retval.start = LT(1); retval.stop = retval.start; retval.tree = NULL; { // ../grammars/belle_sdp.g:434:12: ( ( alpha_num )+ ) // ../grammars/belle_sdp.g:434:28: ( alpha_num )+ { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); // ../grammars/belle_sdp.g:434:28: ( alpha_num )+ { int cnt50=0; for (;;) { int alt50=2; switch ( LA(1) ) { case COMMON_CHAR: case DIGIT: case HEX_CHAR: { alt50=1; } break; } switch (alt50) { case 1: // ../grammars/belle_sdp.g:434:28: alpha_num { FOLLOWPUSH(FOLLOW_alpha_num_in_media_value2578); alpha_num238=alpha_num(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulemedia_valueEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, alpha_num238.tree); } break; default: if ( cnt50 >= 1 ) { goto loop50; } if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } /* mismatchedSetEx() */ CONSTRUCTEX(); EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME; goto rulemedia_valueEx; } cnt50++; } loop50: ; /* Jump to here if this rule does not match */ } } } // This is where rules clean up and exit // goto rulemedia_valueEx; /* Prevent compiler warnings */ rulemedia_valueEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end media_value */ /** * $ANTLR start fmt * ../grammars/belle_sdp.g:438:1: fmt : ( ( ( DIGIT )+ )=> ( ( DIGIT )+ ) | token ) ; */ static belle_sdpParser_fmt_return fmt(pbelle_sdpParser ctx) { belle_sdpParser_fmt_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN DIGIT239; belle_sdpParser_token_return token240; #undef RETURN_TYPE_token240 #define RETURN_TYPE_token240 belle_sdpParser_token_return pANTLR3_BASE_TREE DIGIT239_tree; /* Initialize rule variables */ ctx->pbelle_sdpParser_fmtTop = pbelle_sdpParser_fmtPush(ctx); root_0 = NULL; (SCOPE_TOP(fmt))->is_number=0; DIGIT239 = NULL; token240.tree = NULL; retval.start = LT(1); retval.stop = retval.start; DIGIT239_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:440:28: ( ( ( ( DIGIT )+ )=> ( ( DIGIT )+ ) | token ) ) // ../grammars/belle_sdp.g:440:46: ( ( ( DIGIT )+ )=> ( ( DIGIT )+ ) | token ) { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); // ../grammars/belle_sdp.g:440:46: ( ( ( DIGIT )+ )=> ( ( DIGIT )+ ) | token ) { int alt52=2; switch ( LA(1) ) { case DIGIT: { { int LA52_1 = LA(2); if ( (synpred25_belle_sdp(ctx))) { alt52=1; } else if ( (ANTLR3_TRUE)) { alt52=2; } else { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sdpParser_fmtPop(ctx); return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 52; EXCEPTION->state = 1; goto rulefmtEx; } } } break; case COMMON_CHAR: case DASH: case DOT: case HEX_CHAR: case STAR: case 22: case 23: case 24: case 25: case 26: case 27: case 28: case 29: case 30: case 31: case 32: case 33: case 34: case 35: { alt52=2; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sdpParser_fmtPop(ctx); return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 52; EXCEPTION->state = 0; goto rulefmtEx; } switch (alt52) { case 1: // ../grammars/belle_sdp.g:440:47: ( ( DIGIT )+ )=> ( ( DIGIT )+ ) { // ../grammars/belle_sdp.g:440:57: ( ( DIGIT )+ ) // ../grammars/belle_sdp.g:440:58: ( DIGIT )+ { // ../grammars/belle_sdp.g:440:58: ( DIGIT )+ { int cnt51=0; for (;;) { int alt51=2; switch ( LA(1) ) { case DIGIT: { alt51=1; } break; } switch (alt51) { case 1: // ../grammars/belle_sdp.g:440:58: DIGIT { DIGIT239 = (pANTLR3_COMMON_TOKEN) MATCHT(DIGIT, &FOLLOW_DIGIT_in_fmt2662); if (HASEXCEPTION()) { goto rulefmtEx; } if (HASFAILED()) { pbelle_sdpParser_fmtPop(ctx); return retval; } if ( BACKTRACKING==0 ) { DIGIT239_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, DIGIT239)); ADAPTOR->addChild(ADAPTOR, root_0, DIGIT239_tree); } } break; default: if ( cnt51 >= 1 ) { goto loop51; } if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sdpParser_fmtPop(ctx); return retval; } /* mismatchedSetEx() */ CONSTRUCTEX(); EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME; goto rulefmtEx; } cnt51++; } loop51: ; /* Jump to here if this rule does not match */ } } if ( BACKTRACKING==0 ) { (SCOPE_TOP(fmt))->is_number=1; } } break; case 2: // ../grammars/belle_sdp.g:440:88: token { FOLLOWPUSH(FOLLOW_token_in_fmt2669); token240=token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulefmtEx; } if (HASFAILED()) { pbelle_sdpParser_fmtPop(ctx); return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, token240.tree); } break; } } if ( BACKTRACKING==0 ) { belle_sdp_media_set_media_formats((SCOPE_TOP(media))->current ,belle_sip_list_append(belle_sdp_media_get_media_formats((SCOPE_TOP(media))->current) ,(void*)((SCOPE_TOP(fmt))->is_number?(void*)(intptr_t)atoi((const char*) STRSTREAM->toStringTT(STRSTREAM, retval.start, LT(-1)) ->chars):STRSTREAM->toStringTT(STRSTREAM, retval.start, LT(-1)) ->chars))); } } } // This is where rules clean up and exit // goto rulefmtEx; /* Prevent compiler warnings */ rulefmtEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } pbelle_sdpParser_fmtPop(ctx); return retval; } /* $ANTLR end fmt */ /** * $ANTLR start proto * ../grammars/belle_sdp.g:446:1: proto options {greedy=false; } : (~ ( SPACE | CR | LF ) )* ; */ static belle_sdpParser_proto_return proto(pbelle_sdpParser ctx) { belle_sdpParser_proto_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN set241; pANTLR3_BASE_TREE set241_tree; /* Initialize rule variables */ root_0 = NULL; set241 = NULL; retval.start = LT(1); retval.stop = retval.start; set241_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:446:47: ( (~ ( SPACE | CR | LF ) )* ) // ../grammars/belle_sdp.g:446:56: (~ ( SPACE | CR | LF ) )* { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); // ../grammars/belle_sdp.g:446:56: (~ ( SPACE | CR | LF ) )* for (;;) { int alt53=2; switch ( LA(1) ) { case COLON: case COMMA: case COMMON_CHAR: case DASH: case DIGIT: case DOT: case EQUAL: case HEX_CHAR: case LQUOTE: case OCTET: case POS_DIGIT: case RQUOTE: case SLASH: case STAR: case ZERO: case 22: case 23: case 24: case 25: case 26: case 27: case 28: case 29: case 30: case 31: case 32: case 33: case 34: case 35: { alt53=1; } break; } switch (alt53) { case 1: // ../grammars/belle_sdp.g: { set241=(pANTLR3_COMMON_TOKEN)LT(1); if ( ((LA(1) >= COLON) && (LA(1) <= COMMON_CHAR)) || ((LA(1) >= DASH) && (LA(1) <= HEX_CHAR)) || ((LA(1) >= LQUOTE) && (LA(1) <= SLASH)) || ((LA(1) >= STAR) && (LA(1) <= 35)) ) { CONSUME(); if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, set241)) ); PERRORRECOVERY=ANTLR3_FALSE; FAILEDFLAG=ANTLR3_FALSE; } else { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_MISMATCHED_SET_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_MISMATCHED_SET_NAME; EXCEPTION->expectingSet = NULL; goto ruleprotoEx; } } break; default: goto loop53; /* break out of the loop */ break; } } loop53: ; /* Jump out to here if this rule does not match */ } } // This is where rules clean up and exit // goto ruleprotoEx; /* Prevent compiler warnings */ ruleprotoEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end proto */ /** * $ANTLR start port * ../grammars/belle_sdp.g:449:1: port : ( DIGIT )+ ; */ static belle_sdpParser_port_return port(pbelle_sdpParser ctx) { belle_sdpParser_port_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN DIGIT242; pANTLR3_BASE_TREE DIGIT242_tree; /* Initialize rule variables */ root_0 = NULL; DIGIT242 = NULL; retval.start = LT(1); retval.stop = retval.start; DIGIT242_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:449:5: ( ( DIGIT )+ ) // ../grammars/belle_sdp.g:449:22: ( DIGIT )+ { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); // ../grammars/belle_sdp.g:449:22: ( DIGIT )+ { int cnt54=0; for (;;) { int alt54=2; switch ( LA(1) ) { case DIGIT: { alt54=1; } break; } switch (alt54) { case 1: // ../grammars/belle_sdp.g:449:22: DIGIT { DIGIT242 = (pANTLR3_COMMON_TOKEN) MATCHT(DIGIT, &FOLLOW_DIGIT_in_port2880); if (HASEXCEPTION()) { goto ruleportEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { DIGIT242_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, DIGIT242)); ADAPTOR->addChild(ADAPTOR, root_0, DIGIT242_tree); } } break; default: if ( cnt54 >= 1 ) { goto loop54; } if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } /* mismatchedSetEx() */ CONSTRUCTEX(); EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME; goto ruleportEx; } cnt54++; } loop54: ; /* Jump to here if this rule does not match */ } } } // This is where rules clean up and exit // goto ruleportEx; /* Prevent compiler warnings */ ruleportEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end port */ /** * $ANTLR start attribute_name * ../grammars/belle_sdp.g:453:1: attribute_name : token ; */ static belle_sdpParser_attribute_name_return attribute_name(pbelle_sdpParser ctx) { belle_sdpParser_attribute_name_return retval; pANTLR3_BASE_TREE root_0; belle_sdpParser_token_return token243; #undef RETURN_TYPE_token243 #define RETURN_TYPE_token243 belle_sdpParser_token_return /* Initialize rule variables */ root_0 = NULL; token243.tree = NULL; retval.start = LT(1); retval.stop = retval.start; retval.tree = NULL; { // ../grammars/belle_sdp.g:453:15: ( token ) // ../grammars/belle_sdp.g:453:17: token { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); FOLLOWPUSH(FOLLOW_token_in_attribute_name2932); token243=token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleattribute_nameEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, token243.tree); } } // This is where rules clean up and exit // goto ruleattribute_nameEx; /* Prevent compiler warnings */ ruleattribute_nameEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end attribute_name */ /** * $ANTLR start attribute_value * ../grammars/belle_sdp.g:455:1: attribute_value options {greedy=false; } : (~ ( CR | LF ) )* ; */ static belle_sdpParser_attribute_value_return attribute_value(pbelle_sdpParser ctx) { belle_sdpParser_attribute_value_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN set244; pANTLR3_BASE_TREE set244_tree; /* Initialize rule variables */ root_0 = NULL; set244 = NULL; retval.start = LT(1); retval.stop = retval.start; set244_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:455:44: ( (~ ( CR | LF ) )* ) // ../grammars/belle_sdp.g:455:46: (~ ( CR | LF ) )* { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); // ../grammars/belle_sdp.g:455:46: (~ ( CR | LF ) )* for (;;) { int alt55=2; switch ( LA(1) ) { case COLON: case COMMA: case COMMON_CHAR: case DASH: case DIGIT: case DOT: case EQUAL: case HEX_CHAR: case LQUOTE: case OCTET: case POS_DIGIT: case RQUOTE: case SLASH: case SPACE: case STAR: case ZERO: case 22: case 23: case 24: case 25: case 26: case 27: case 28: case 29: case 30: case 31: case 32: case 33: case 34: case 35: { alt55=1; } break; } switch (alt55) { case 1: // ../grammars/belle_sdp.g: { set244=(pANTLR3_COMMON_TOKEN)LT(1); if ( ((LA(1) >= COLON) && (LA(1) <= COMMON_CHAR)) || ((LA(1) >= DASH) && (LA(1) <= HEX_CHAR)) || ((LA(1) >= LQUOTE) && (LA(1) <= 35)) ) { CONSUME(); if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, set244)) ); PERRORRECOVERY=ANTLR3_FALSE; FAILEDFLAG=ANTLR3_FALSE; } else { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_MISMATCHED_SET_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_MISMATCHED_SET_NAME; EXCEPTION->expectingSet = NULL; goto ruleattribute_valueEx; } } break; default: goto loop55; /* break out of the loop */ break; } } loop55: ; /* Jump out to here if this rule does not match */ } } // This is where rules clean up and exit // goto ruleattribute_valueEx; /* Prevent compiler warnings */ ruleattribute_valueEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end attribute_value */ /** * $ANTLR start rtcp_xr_attribute_name * ../grammars/belle_sdp.g:457:1: rtcp_xr_attribute_name : word ; */ static belle_sdpParser_rtcp_xr_attribute_name_return rtcp_xr_attribute_name(pbelle_sdpParser ctx) { belle_sdpParser_rtcp_xr_attribute_name_return retval; pANTLR3_BASE_TREE root_0; belle_sdpParser_word_return word245; #undef RETURN_TYPE_word245 #define RETURN_TYPE_word245 belle_sdpParser_word_return /* Initialize rule variables */ root_0 = NULL; word245.tree = NULL; retval.start = LT(1); retval.stop = retval.start; retval.tree = NULL; { // ../grammars/belle_sdp.g:457:23: ( word ) // ../grammars/belle_sdp.g:457:25: word { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); FOLLOWPUSH(FOLLOW_word_in_rtcp_xr_attribute_name2963); word245=word(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulertcp_xr_attribute_nameEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, word245.tree); } } // This is where rules clean up and exit // goto rulertcp_xr_attribute_nameEx; /* Prevent compiler warnings */ rulertcp_xr_attribute_nameEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end rtcp_xr_attribute_name */ /** * $ANTLR start rtcp_xr_rcvr_rtt_mode * ../grammars/belle_sdp.g:459:1: rtcp_xr_rcvr_rtt_mode : word ; */ static belle_sdpParser_rtcp_xr_rcvr_rtt_mode_return rtcp_xr_rcvr_rtt_mode(pbelle_sdpParser ctx) { belle_sdpParser_rtcp_xr_rcvr_rtt_mode_return retval; pANTLR3_BASE_TREE root_0; belle_sdpParser_word_return word246; #undef RETURN_TYPE_word246 #define RETURN_TYPE_word246 belle_sdpParser_word_return /* Initialize rule variables */ root_0 = NULL; word246.tree = NULL; retval.start = LT(1); retval.stop = retval.start; retval.tree = NULL; { // ../grammars/belle_sdp.g:459:22: ( word ) // ../grammars/belle_sdp.g:459:24: word { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); FOLLOWPUSH(FOLLOW_word_in_rtcp_xr_rcvr_rtt_mode2970); word246=word(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulertcp_xr_rcvr_rtt_modeEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, word246.tree); } } // This is where rules clean up and exit // goto rulertcp_xr_rcvr_rtt_modeEx; /* Prevent compiler warnings */ rulertcp_xr_rcvr_rtt_modeEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end rtcp_xr_rcvr_rtt_mode */ /** * $ANTLR start rtcp_xr_stat_summary_flag_value * ../grammars/belle_sdp.g:461:1: rtcp_xr_stat_summary_flag_value : word ; */ static belle_sdpParser_rtcp_xr_stat_summary_flag_value_return rtcp_xr_stat_summary_flag_value(pbelle_sdpParser ctx) { belle_sdpParser_rtcp_xr_stat_summary_flag_value_return retval; pANTLR3_BASE_TREE root_0; belle_sdpParser_word_return word247; #undef RETURN_TYPE_word247 #define RETURN_TYPE_word247 belle_sdpParser_word_return /* Initialize rule variables */ root_0 = NULL; word247.tree = NULL; retval.start = LT(1); retval.stop = retval.start; retval.tree = NULL; { // ../grammars/belle_sdp.g:461:32: ( word ) // ../grammars/belle_sdp.g:461:34: word { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); FOLLOWPUSH(FOLLOW_word_in_rtcp_xr_stat_summary_flag_value2977); word247=word(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulertcp_xr_stat_summary_flag_valueEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, word247.tree); } } // This is where rules clean up and exit // goto rulertcp_xr_stat_summary_flag_valueEx; /* Prevent compiler warnings */ rulertcp_xr_stat_summary_flag_valueEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end rtcp_xr_stat_summary_flag_value */ /** * $ANTLR start rtcp_fb_attribute_name * ../grammars/belle_sdp.g:463:1: rtcp_fb_attribute_name : word ; */ static belle_sdpParser_rtcp_fb_attribute_name_return rtcp_fb_attribute_name(pbelle_sdpParser ctx) { belle_sdpParser_rtcp_fb_attribute_name_return retval; pANTLR3_BASE_TREE root_0; belle_sdpParser_word_return word248; #undef RETURN_TYPE_word248 #define RETURN_TYPE_word248 belle_sdpParser_word_return /* Initialize rule variables */ root_0 = NULL; word248.tree = NULL; retval.start = LT(1); retval.stop = retval.start; retval.tree = NULL; { // ../grammars/belle_sdp.g:463:23: ( word ) // ../grammars/belle_sdp.g:463:25: word { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); FOLLOWPUSH(FOLLOW_word_in_rtcp_fb_attribute_name2984); word248=word(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulertcp_fb_attribute_nameEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, word248.tree); } } // This is where rules clean up and exit // goto rulertcp_fb_attribute_nameEx; /* Prevent compiler warnings */ rulertcp_fb_attribute_nameEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end rtcp_fb_attribute_name */ /** * $ANTLR start sess_id * ../grammars/belle_sdp.g:465:1: sess_id : ( DIGIT )+ ; */ static belle_sdpParser_sess_id_return sess_id(pbelle_sdpParser ctx) { belle_sdpParser_sess_id_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN DIGIT249; pANTLR3_BASE_TREE DIGIT249_tree; /* Initialize rule variables */ root_0 = NULL; DIGIT249 = NULL; retval.start = LT(1); retval.stop = retval.start; DIGIT249_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:465:8: ( ( DIGIT )+ ) // ../grammars/belle_sdp.g:465:22: ( DIGIT )+ { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); // ../grammars/belle_sdp.g:465:22: ( DIGIT )+ { int cnt56=0; for (;;) { int alt56=2; switch ( LA(1) ) { case DIGIT: { alt56=1; } break; } switch (alt56) { case 1: // ../grammars/belle_sdp.g:465:22: DIGIT { DIGIT249 = (pANTLR3_COMMON_TOKEN) MATCHT(DIGIT, &FOLLOW_DIGIT_in_sess_id3003); if (HASEXCEPTION()) { goto rulesess_idEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { DIGIT249_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, DIGIT249)); ADAPTOR->addChild(ADAPTOR, root_0, DIGIT249_tree); } } break; default: if ( cnt56 >= 1 ) { goto loop56; } if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } /* mismatchedSetEx() */ CONSTRUCTEX(); EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME; goto rulesess_idEx; } cnt56++; } loop56: ; /* Jump to here if this rule does not match */ } } } // This is where rules clean up and exit // goto rulesess_idEx; /* Prevent compiler warnings */ rulesess_idEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end sess_id */ /** * $ANTLR start sess_version * ../grammars/belle_sdp.g:468:1: sess_version : ( DIGIT )+ ; */ static belle_sdpParser_sess_version_return sess_version(pbelle_sdpParser ctx) { belle_sdpParser_sess_version_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN DIGIT250; pANTLR3_BASE_TREE DIGIT250_tree; /* Initialize rule variables */ root_0 = NULL; DIGIT250 = NULL; retval.start = LT(1); retval.stop = retval.start; DIGIT250_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:468:13: ( ( DIGIT )+ ) // ../grammars/belle_sdp.g:468:22: ( DIGIT )+ { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); // ../grammars/belle_sdp.g:468:22: ( DIGIT )+ { int cnt57=0; for (;;) { int alt57=2; switch ( LA(1) ) { case DIGIT: { alt57=1; } break; } switch (alt57) { case 1: // ../grammars/belle_sdp.g:468:22: DIGIT { DIGIT250 = (pANTLR3_COMMON_TOKEN) MATCHT(DIGIT, &FOLLOW_DIGIT_in_sess_version3043); if (HASEXCEPTION()) { goto rulesess_versionEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { DIGIT250_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, DIGIT250)); ADAPTOR->addChild(ADAPTOR, root_0, DIGIT250_tree); } } break; default: if ( cnt57 >= 1 ) { goto loop57; } if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } /* mismatchedSetEx() */ CONSTRUCTEX(); EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME; goto rulesess_versionEx; } cnt57++; } loop57: ; /* Jump to here if this rule does not match */ } } } // This is where rules clean up and exit // goto rulesess_versionEx; /* Prevent compiler warnings */ rulesess_versionEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end sess_version */ /** * $ANTLR start connection_address * ../grammars/belle_sdp.g:471:1: connection_address : addr ( multicast_part )? ; */ static belle_sdpParser_connection_address_return connection_address(pbelle_sdpParser ctx) { belle_sdpParser_connection_address_return retval; pANTLR3_BASE_TREE root_0; belle_sdpParser_addr_return addr251; #undef RETURN_TYPE_addr251 #define RETURN_TYPE_addr251 belle_sdpParser_addr_return belle_sdpParser_multicast_part_return multicast_part252; #undef RETURN_TYPE_multicast_part252 #define RETURN_TYPE_multicast_part252 belle_sdpParser_multicast_part_return /* Initialize rule variables */ root_0 = NULL; addr251.tree = NULL; multicast_part252.tree = NULL; retval.start = LT(1); retval.stop = retval.start; retval.tree = NULL; { // ../grammars/belle_sdp.g:471:19: ( addr ( multicast_part )? ) // ../grammars/belle_sdp.g:474:22: addr ( multicast_part )? { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); FOLLOWPUSH(FOLLOW_addr_in_connection_address3097); addr251=addr(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleconnection_addressEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, addr251.tree); if ( BACKTRACKING==0 ) { belle_sdp_connection_set_address((SCOPE_TOP(connection))->current,(const char*) (STRSTREAM->toStringTT(STRSTREAM, addr251.start, addr251.stop)) ->chars); } // ../grammars/belle_sdp.g:474:116: ( multicast_part )? { int alt58=2; switch ( LA(1) ) { case SLASH: { alt58=1; } break; } switch (alt58) { case 1: // ../grammars/belle_sdp.g:474:116: multicast_part { FOLLOWPUSH(FOLLOW_multicast_part_in_connection_address3101); multicast_part252=multicast_part(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleconnection_addressEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, multicast_part252.tree); } break; } } } } // This is where rules clean up and exit // goto ruleconnection_addressEx; /* Prevent compiler warnings */ ruleconnection_addressEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end connection_address */ /** * $ANTLR start multicast_address * ../grammars/belle_sdp.g:476:1: multicast_address : unicast_address '/' ttl ; */ static belle_sdpParser_multicast_address_return multicast_address(pbelle_sdpParser ctx) { belle_sdpParser_multicast_address_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN char_literal254; belle_sdpParser_unicast_address_return unicast_address253; #undef RETURN_TYPE_unicast_address253 #define RETURN_TYPE_unicast_address253 belle_sdpParser_unicast_address_return belle_sdpParser_ttl_return ttl255; #undef RETURN_TYPE_ttl255 #define RETURN_TYPE_ttl255 belle_sdpParser_ttl_return pANTLR3_BASE_TREE char_literal254_tree; /* Initialize rule variables */ root_0 = NULL; char_literal254 = NULL; unicast_address253.tree = NULL; ttl255.tree = NULL; retval.start = LT(1); retval.stop = retval.start; char_literal254_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:476:18: ( unicast_address '/' ttl ) // ../grammars/belle_sdp.g:476:22: unicast_address '/' ttl { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); FOLLOWPUSH(FOLLOW_unicast_address_in_multicast_address3111); unicast_address253=unicast_address(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulemulticast_addressEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, unicast_address253.tree); char_literal254 = (pANTLR3_COMMON_TOKEN) MATCHT(SLASH, &FOLLOW_SLASH_in_multicast_address3113); if (HASEXCEPTION()) { goto rulemulticast_addressEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { char_literal254_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, char_literal254)); ADAPTOR->addChild(ADAPTOR, root_0, char_literal254_tree); } FOLLOWPUSH(FOLLOW_ttl_in_multicast_address3115); ttl255=ttl(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulemulticast_addressEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, ttl255.tree); } } // This is where rules clean up and exit // goto rulemulticast_addressEx; /* Prevent compiler warnings */ rulemulticast_addressEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end multicast_address */ /** * $ANTLR start ttl * ../grammars/belle_sdp.g:481:1: ttl : decimal_uchar ; */ static belle_sdpParser_ttl_return ttl(pbelle_sdpParser ctx) { belle_sdpParser_ttl_return retval; pANTLR3_BASE_TREE root_0; belle_sdpParser_decimal_uchar_return decimal_uchar256; #undef RETURN_TYPE_decimal_uchar256 #define RETURN_TYPE_decimal_uchar256 belle_sdpParser_decimal_uchar_return /* Initialize rule variables */ root_0 = NULL; decimal_uchar256.tree = NULL; retval.start = LT(1); retval.stop = retval.start; retval.tree = NULL; { // ../grammars/belle_sdp.g:481:4: ( decimal_uchar ) // ../grammars/belle_sdp.g:481:22: decimal_uchar { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); FOLLOWPUSH(FOLLOW_decimal_uchar_in_ttl3217); decimal_uchar256=decimal_uchar(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulettlEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, decimal_uchar256.tree); } } // This is where rules clean up and exit // goto rulettlEx; /* Prevent compiler warnings */ rulettlEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end ttl */ /** * $ANTLR start start_time * ../grammars/belle_sdp.g:483:1: start_time : ( DIGIT )+ ; */ static belle_sdpParser_start_time_return start_time(pbelle_sdpParser ctx) { belle_sdpParser_start_time_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN DIGIT257; pANTLR3_BASE_TREE DIGIT257_tree; /* Initialize rule variables */ root_0 = NULL; DIGIT257 = NULL; retval.start = LT(1); retval.stop = retval.start; DIGIT257_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:483:11: ( ( DIGIT )+ ) // ../grammars/belle_sdp.g:483:23: ( DIGIT )+ { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); // ../grammars/belle_sdp.g:483:23: ( DIGIT )+ { int cnt59=0; for (;;) { int alt59=2; switch ( LA(1) ) { case DIGIT: { alt59=1; } break; } switch (alt59) { case 1: // ../grammars/belle_sdp.g:483:23: DIGIT { DIGIT257 = (pANTLR3_COMMON_TOKEN) MATCHT(DIGIT, &FOLLOW_DIGIT_in_start_time3234); if (HASEXCEPTION()) { goto rulestart_timeEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { DIGIT257_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, DIGIT257)); ADAPTOR->addChild(ADAPTOR, root_0, DIGIT257_tree); } } break; default: if ( cnt59 >= 1 ) { goto loop59; } if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } /* mismatchedSetEx() */ CONSTRUCTEX(); EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME; goto rulestart_timeEx; } cnt59++; } loop59: ; /* Jump to here if this rule does not match */ } } } // This is where rules clean up and exit // goto rulestart_timeEx; /* Prevent compiler warnings */ rulestart_timeEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end start_time */ /** * $ANTLR start stop_time * ../grammars/belle_sdp.g:485:1: stop_time : ( DIGIT )+ ; */ static belle_sdpParser_stop_time_return stop_time(pbelle_sdpParser ctx) { belle_sdpParser_stop_time_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN DIGIT258; pANTLR3_BASE_TREE DIGIT258_tree; /* Initialize rule variables */ root_0 = NULL; DIGIT258 = NULL; retval.start = LT(1); retval.stop = retval.start; DIGIT258_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:485:10: ( ( DIGIT )+ ) // ../grammars/belle_sdp.g:485:22: ( DIGIT )+ { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); // ../grammars/belle_sdp.g:485:22: ( DIGIT )+ { int cnt60=0; for (;;) { int alt60=2; switch ( LA(1) ) { case DIGIT: { alt60=1; } break; } switch (alt60) { case 1: // ../grammars/belle_sdp.g:485:22: DIGIT { DIGIT258 = (pANTLR3_COMMON_TOKEN) MATCHT(DIGIT, &FOLLOW_DIGIT_in_stop_time3254); if (HASEXCEPTION()) { goto rulestop_timeEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { DIGIT258_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, DIGIT258)); ADAPTOR->addChild(ADAPTOR, root_0, DIGIT258_tree); } } break; default: if ( cnt60 >= 1 ) { goto loop60; } if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } /* mismatchedSetEx() */ CONSTRUCTEX(); EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME; goto rulestop_timeEx; } cnt60++; } loop60: ; /* Jump to here if this rule does not match */ } } } // This is where rules clean up and exit // goto rulestop_timeEx; /* Prevent compiler warnings */ rulestop_timeEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end stop_time */ /** * $ANTLR start sdp_time * ../grammars/belle_sdp.g:487:1: sdp_time : ( DIGIT )+ ; */ static belle_sdpParser_sdp_time_return sdp_time(pbelle_sdpParser ctx) { belle_sdpParser_sdp_time_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN DIGIT259; pANTLR3_BASE_TREE DIGIT259_tree; /* Initialize rule variables */ root_0 = NULL; DIGIT259 = NULL; retval.start = LT(1); retval.stop = retval.start; DIGIT259_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:487:9: ( ( DIGIT )+ ) // ../grammars/belle_sdp.g:487:27: ( DIGIT )+ { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); // ../grammars/belle_sdp.g:487:27: ( DIGIT )+ { int cnt61=0; for (;;) { int alt61=2; switch ( LA(1) ) { case DIGIT: { alt61=1; } break; } switch (alt61) { case 1: // ../grammars/belle_sdp.g:487:27: DIGIT { DIGIT259 = (pANTLR3_COMMON_TOKEN) MATCHT(DIGIT, &FOLLOW_DIGIT_in_sdp_time3280); if (HASEXCEPTION()) { goto rulesdp_timeEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { DIGIT259_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, DIGIT259)); ADAPTOR->addChild(ADAPTOR, root_0, DIGIT259_tree); } } break; default: if ( cnt61 >= 1 ) { goto loop61; } if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } /* mismatchedSetEx() */ CONSTRUCTEX(); EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME; goto rulesdp_timeEx; } cnt61++; } loop61: ; /* Jump to here if this rule does not match */ } } } // This is where rules clean up and exit // goto rulesdp_timeEx; /* Prevent compiler warnings */ rulesdp_timeEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end sdp_time */ /** * $ANTLR start repeat_interval * ../grammars/belle_sdp.g:490:1: repeat_interval : typed_time ; */ static belle_sdpParser_repeat_interval_return repeat_interval(pbelle_sdpParser ctx) { belle_sdpParser_repeat_interval_return retval; pANTLR3_BASE_TREE root_0; belle_sdpParser_typed_time_return typed_time260; #undef RETURN_TYPE_typed_time260 #define RETURN_TYPE_typed_time260 belle_sdpParser_typed_time_return /* Initialize rule variables */ root_0 = NULL; typed_time260.tree = NULL; retval.start = LT(1); retval.stop = retval.start; retval.tree = NULL; { // ../grammars/belle_sdp.g:490:16: ( typed_time ) // ../grammars/belle_sdp.g:490:22: typed_time { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); FOLLOWPUSH(FOLLOW_typed_time_in_repeat_interval3314); typed_time260=typed_time(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulerepeat_intervalEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, typed_time260.tree); } } // This is where rules clean up and exit // goto rulerepeat_intervalEx; /* Prevent compiler warnings */ rulerepeat_intervalEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end repeat_interval */ /** * $ANTLR start typed_time * ../grammars/belle_sdp.g:492:1: typed_time : ( DIGIT )* ( fixed_len_time_unit )? ; */ static belle_sdpParser_typed_time_return typed_time(pbelle_sdpParser ctx) { belle_sdpParser_typed_time_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN DIGIT261; belle_sdpParser_fixed_len_time_unit_return fixed_len_time_unit262; #undef RETURN_TYPE_fixed_len_time_unit262 #define RETURN_TYPE_fixed_len_time_unit262 belle_sdpParser_fixed_len_time_unit_return pANTLR3_BASE_TREE DIGIT261_tree; /* Initialize rule variables */ root_0 = NULL; DIGIT261 = NULL; fixed_len_time_unit262.tree = NULL; retval.start = LT(1); retval.stop = retval.start; DIGIT261_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:492:11: ( ( DIGIT )* ( fixed_len_time_unit )? ) // ../grammars/belle_sdp.g:492:22: ( DIGIT )* ( fixed_len_time_unit )? { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); // ../grammars/belle_sdp.g:492:22: ( DIGIT )* for (;;) { int alt62=2; switch ( LA(1) ) { case DIGIT: { { /* dfaLoopbackState(k,edges,eotPredictsAlt,description,stateNumber,semPredState) */ int LA62_2 = LA(2); if ( (!( ((((IS_TOKEN(h)))||((IS_TOKEN(m)))||((IS_TOKEN(s)))||((IS_TOKEN(d))))) ))) { alt62=1; } } } break; } switch (alt62) { case 1: // ../grammars/belle_sdp.g:492:22: DIGIT { DIGIT261 = (pANTLR3_COMMON_TOKEN) MATCHT(DIGIT, &FOLLOW_DIGIT_in_typed_time3330); if (HASEXCEPTION()) { goto ruletyped_timeEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { DIGIT261_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, DIGIT261)); ADAPTOR->addChild(ADAPTOR, root_0, DIGIT261_tree); } } break; default: goto loop62; /* break out of the loop */ break; } } loop62: ; /* Jump out to here if this rule does not match */ // ../grammars/belle_sdp.g:492:29: ( fixed_len_time_unit )? { int alt63=2; switch ( LA(1) ) { case COMMON_CHAR: case DIGIT: case HEX_CHAR: { alt63=1; } break; } switch (alt63) { case 1: // ../grammars/belle_sdp.g:492:29: fixed_len_time_unit { FOLLOWPUSH(FOLLOW_fixed_len_time_unit_in_typed_time3333); fixed_len_time_unit262=fixed_len_time_unit(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruletyped_timeEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, fixed_len_time_unit262.tree); } break; } } } } // This is where rules clean up and exit // goto ruletyped_timeEx; /* Prevent compiler warnings */ ruletyped_timeEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end typed_time */ /** * $ANTLR start fixed_len_time_unit * ../grammars/belle_sdp.g:494:1: fixed_len_time_unit : ({...}? alpha_num |{...}? alpha_num |{...}? alpha_num |{...}? alpha_num ); */ static belle_sdpParser_fixed_len_time_unit_return fixed_len_time_unit(pbelle_sdpParser ctx) { belle_sdpParser_fixed_len_time_unit_return retval; pANTLR3_BASE_TREE root_0; belle_sdpParser_alpha_num_return alpha_num263; #undef RETURN_TYPE_alpha_num263 #define RETURN_TYPE_alpha_num263 belle_sdpParser_alpha_num_return belle_sdpParser_alpha_num_return alpha_num264; #undef RETURN_TYPE_alpha_num264 #define RETURN_TYPE_alpha_num264 belle_sdpParser_alpha_num_return belle_sdpParser_alpha_num_return alpha_num265; #undef RETURN_TYPE_alpha_num265 #define RETURN_TYPE_alpha_num265 belle_sdpParser_alpha_num_return belle_sdpParser_alpha_num_return alpha_num266; #undef RETURN_TYPE_alpha_num266 #define RETURN_TYPE_alpha_num266 belle_sdpParser_alpha_num_return /* Initialize rule variables */ root_0 = NULL; alpha_num263.tree = NULL; alpha_num264.tree = NULL; alpha_num265.tree = NULL; alpha_num266.tree = NULL; retval.start = LT(1); retval.stop = retval.start; retval.tree = NULL; { { // ../grammars/belle_sdp.g:494:20: ({...}? alpha_num |{...}? alpha_num |{...}? alpha_num |{...}? alpha_num ) ANTLR3_UINT32 alt64; alt64=4; switch ( LA(1) ) { case COMMON_CHAR: case HEX_CHAR: { { int LA64_1 = LA(2); if ( ((IS_TOKEN(d)))) { alt64=1; } else if ( ((IS_TOKEN(h)))) { alt64=2; } else if ( ((IS_TOKEN(m)))) { alt64=3; } else if ( ((IS_TOKEN(s)))) { alt64=4; } else { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 64; EXCEPTION->state = 1; goto rulefixed_len_time_unitEx; } } } break; case DIGIT: { { int LA64_2 = LA(2); if ( ((IS_TOKEN(d)))) { alt64=1; } else if ( ((IS_TOKEN(h)))) { alt64=2; } else if ( ((IS_TOKEN(m)))) { alt64=3; } else if ( ((IS_TOKEN(s)))) { alt64=4; } else { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 64; EXCEPTION->state = 2; goto rulefixed_len_time_unitEx; } } } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 64; EXCEPTION->state = 0; goto rulefixed_len_time_unitEx; } switch (alt64) { case 1: // ../grammars/belle_sdp.g:494:22: {...}? alpha_num { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); if ( !((IS_TOKEN(d))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(d)"; EXCEPTION->ruleName = (void *)"fixed_len_time_unit"; } FOLLOWPUSH(FOLLOW_alpha_num_in_fixed_len_time_unit3343); alpha_num263=alpha_num(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulefixed_len_time_unitEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, alpha_num263.tree); } break; case 2: // ../grammars/belle_sdp.g:495:25: {...}? alpha_num { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); if ( !((IS_TOKEN(h))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(h)"; EXCEPTION->ruleName = (void *)"fixed_len_time_unit"; } FOLLOWPUSH(FOLLOW_alpha_num_in_fixed_len_time_unit3371); alpha_num264=alpha_num(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulefixed_len_time_unitEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, alpha_num264.tree); } break; case 3: // ../grammars/belle_sdp.g:496:25: {...}? alpha_num { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); if ( !((IS_TOKEN(m))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(m)"; EXCEPTION->ruleName = (void *)"fixed_len_time_unit"; } FOLLOWPUSH(FOLLOW_alpha_num_in_fixed_len_time_unit3399); alpha_num265=alpha_num(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulefixed_len_time_unitEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, alpha_num265.tree); } break; case 4: // ../grammars/belle_sdp.g:497:25: {...}? alpha_num { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); if ( !((IS_TOKEN(s))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(s)"; EXCEPTION->ruleName = (void *)"fixed_len_time_unit"; } FOLLOWPUSH(FOLLOW_alpha_num_in_fixed_len_time_unit3427); alpha_num266=alpha_num(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulefixed_len_time_unitEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, alpha_num266.tree); } break; } } } // This is where rules clean up and exit // goto rulefixed_len_time_unitEx; /* Prevent compiler warnings */ rulefixed_len_time_unitEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end fixed_len_time_unit */ /** * $ANTLR start bwtype * ../grammars/belle_sdp.g:499:1: bwtype : ( alpha_num )+ ; */ static belle_sdpParser_bwtype_return bwtype(pbelle_sdpParser ctx) { belle_sdpParser_bwtype_return retval; pANTLR3_BASE_TREE root_0; belle_sdpParser_alpha_num_return alpha_num267; #undef RETURN_TYPE_alpha_num267 #define RETURN_TYPE_alpha_num267 belle_sdpParser_alpha_num_return /* Initialize rule variables */ root_0 = NULL; alpha_num267.tree = NULL; retval.start = LT(1); retval.stop = retval.start; retval.tree = NULL; { // ../grammars/belle_sdp.g:499:7: ( ( alpha_num )+ ) // ../grammars/belle_sdp.g:499:22: ( alpha_num )+ { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); // ../grammars/belle_sdp.g:499:22: ( alpha_num )+ { int cnt65=0; for (;;) { int alt65=2; switch ( LA(1) ) { case COMMON_CHAR: case DIGIT: case HEX_CHAR: { alt65=1; } break; } switch (alt65) { case 1: // ../grammars/belle_sdp.g:499:22: alpha_num { FOLLOWPUSH(FOLLOW_alpha_num_in_bwtype3447); alpha_num267=alpha_num(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulebwtypeEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, alpha_num267.tree); } break; default: if ( cnt65 >= 1 ) { goto loop65; } if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } /* mismatchedSetEx() */ CONSTRUCTEX(); EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME; goto rulebwtypeEx; } cnt65++; } loop65: ; /* Jump to here if this rule does not match */ } } } // This is where rules clean up and exit // goto rulebwtypeEx; /* Prevent compiler warnings */ rulebwtypeEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end bwtype */ /** * $ANTLR start bandwidth_value * ../grammars/belle_sdp.g:501:1: bandwidth_value : ( DIGIT )+ ; */ static belle_sdpParser_bandwidth_value_return bandwidth_value(pbelle_sdpParser ctx) { belle_sdpParser_bandwidth_value_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN DIGIT268; pANTLR3_BASE_TREE DIGIT268_tree; /* Initialize rule variables */ root_0 = NULL; DIGIT268 = NULL; retval.start = LT(1); retval.stop = retval.start; DIGIT268_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:501:16: ( ( DIGIT )+ ) // ../grammars/belle_sdp.g:501:28: ( DIGIT )+ { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); // ../grammars/belle_sdp.g:501:28: ( DIGIT )+ { int cnt66=0; for (;;) { int alt66=2; switch ( LA(1) ) { case DIGIT: { alt66=1; } break; } switch (alt66) { case 1: // ../grammars/belle_sdp.g:501:28: DIGIT { DIGIT268 = (pANTLR3_COMMON_TOKEN) MATCHT(DIGIT, &FOLLOW_DIGIT_in_bandwidth_value3465); if (HASEXCEPTION()) { goto rulebandwidth_valueEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { DIGIT268_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, DIGIT268)); ADAPTOR->addChild(ADAPTOR, root_0, DIGIT268_tree); } } break; default: if ( cnt66 >= 1 ) { goto loop66; } if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } /* mismatchedSetEx() */ CONSTRUCTEX(); EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME; goto rulebandwidth_valueEx; } cnt66++; } loop66: ; /* Jump to here if this rule does not match */ } } } // This is where rules clean up and exit // goto rulebandwidth_valueEx; /* Prevent compiler warnings */ rulebandwidth_valueEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end bandwidth_value */ /** * $ANTLR start username * ../grammars/belle_sdp.g:503:1: username : email_safe ; */ static belle_sdpParser_username_return username(pbelle_sdpParser ctx) { belle_sdpParser_username_return retval; pANTLR3_BASE_TREE root_0; belle_sdpParser_email_safe_return email_safe269; #undef RETURN_TYPE_email_safe269 #define RETURN_TYPE_email_safe269 belle_sdpParser_email_safe_return /* Initialize rule variables */ root_0 = NULL; email_safe269.tree = NULL; retval.start = LT(1); retval.stop = retval.start; retval.tree = NULL; { // ../grammars/belle_sdp.g:503:9: ( email_safe ) // ../grammars/belle_sdp.g:503:22: email_safe { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); FOLLOWPUSH(FOLLOW_email_safe_in_username3484); email_safe269=email_safe(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleusernameEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, email_safe269.tree); } } // This is where rules clean up and exit // goto ruleusernameEx; /* Prevent compiler warnings */ ruleusernameEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end username */ /** * $ANTLR start email_address * ../grammars/belle_sdp.g:506:1: email_address options {greedy=false; } : (~ ( CR | LF ) )* ; */ static belle_sdpParser_email_address_return email_address(pbelle_sdpParser ctx) { belle_sdpParser_email_address_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN set270; pANTLR3_BASE_TREE set270_tree; /* Initialize rule variables */ root_0 = NULL; set270 = NULL; retval.start = LT(1); retval.stop = retval.start; set270_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:506:48: ( (~ ( CR | LF ) )* ) // ../grammars/belle_sdp.g:506:57: (~ ( CR | LF ) )* { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); // ../grammars/belle_sdp.g:506:57: (~ ( CR | LF ) )* for (;;) { int alt67=2; switch ( LA(1) ) { case COLON: case COMMA: case COMMON_CHAR: case DASH: case DIGIT: case DOT: case EQUAL: case HEX_CHAR: case LQUOTE: case OCTET: case POS_DIGIT: case RQUOTE: case SLASH: case SPACE: case STAR: case ZERO: case 22: case 23: case 24: case 25: case 26: case 27: case 28: case 29: case 30: case 31: case 32: case 33: case 34: case 35: { alt67=1; } break; } switch (alt67) { case 1: // ../grammars/belle_sdp.g: { set270=(pANTLR3_COMMON_TOKEN)LT(1); if ( ((LA(1) >= COLON) && (LA(1) <= COMMON_CHAR)) || ((LA(1) >= DASH) && (LA(1) <= HEX_CHAR)) || ((LA(1) >= LQUOTE) && (LA(1) <= 35)) ) { CONSUME(); if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, set270)) ); PERRORRECOVERY=ANTLR3_FALSE; FAILEDFLAG=ANTLR3_FALSE; } else { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_MISMATCHED_SET_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_MISMATCHED_SET_NAME; EXCEPTION->expectingSet = NULL; goto ruleemail_addressEx; } } break; default: goto loop67; /* break out of the loop */ break; } } loop67: ; /* Jump out to here if this rule does not match */ } } // This is where rules clean up and exit // goto ruleemail_addressEx; /* Prevent compiler warnings */ ruleemail_addressEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end email_address */ /** * $ANTLR start uri * ../grammars/belle_sdp.g:510:1: uri : text ; */ static belle_sdpParser_uri_return uri(pbelle_sdpParser ctx) { belle_sdpParser_uri_return retval; pANTLR3_BASE_TREE root_0; belle_sdpParser_text_return text271; #undef RETURN_TYPE_text271 #define RETURN_TYPE_text271 belle_sdpParser_text_return /* Initialize rule variables */ root_0 = NULL; text271.tree = NULL; retval.start = LT(1); retval.stop = retval.start; retval.tree = NULL; { // ../grammars/belle_sdp.g:510:4: ( text ) // ../grammars/belle_sdp.g:510:15: text { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); FOLLOWPUSH(FOLLOW_text_in_uri3593); text271=text(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleuriEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, text271.tree); } } // This is where rules clean up and exit // goto ruleuriEx; /* Prevent compiler warnings */ ruleuriEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end uri */ /** * $ANTLR start phone_number * ../grammars/belle_sdp.g:512:1: phone_number : phone ; */ static belle_sdpParser_phone_number_return phone_number(pbelle_sdpParser ctx) { belle_sdpParser_phone_number_return retval; pANTLR3_BASE_TREE root_0; belle_sdpParser_phone_return phone272; #undef RETURN_TYPE_phone272 #define RETURN_TYPE_phone272 belle_sdpParser_phone_return /* Initialize rule variables */ root_0 = NULL; phone272.tree = NULL; retval.start = LT(1); retval.stop = retval.start; retval.tree = NULL; { // ../grammars/belle_sdp.g:512:13: ( phone ) // ../grammars/belle_sdp.g:512:23: phone { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); FOLLOWPUSH(FOLLOW_phone_in_phone_number3616); phone272=phone(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulephone_numberEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, phone272.tree); } } // This is where rules clean up and exit // goto rulephone_numberEx; /* Prevent compiler warnings */ rulephone_numberEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end phone_number */ /** * $ANTLR start phone * ../grammars/belle_sdp.g:516:1: phone : text ; */ static belle_sdpParser_phone_return phone(pbelle_sdpParser ctx) { belle_sdpParser_phone_return retval; pANTLR3_BASE_TREE root_0; belle_sdpParser_text_return text273; #undef RETURN_TYPE_text273 #define RETURN_TYPE_text273 belle_sdpParser_text_return /* Initialize rule variables */ root_0 = NULL; text273.tree = NULL; retval.start = LT(1); retval.stop = retval.start; retval.tree = NULL; { // ../grammars/belle_sdp.g:516:6: ( text ) // ../grammars/belle_sdp.g:516:22: text { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); FOLLOWPUSH(FOLLOW_text_in_phone3638); text273=text(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulephoneEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, text273.tree); } } // This is where rules clean up and exit // goto rulephoneEx; /* Prevent compiler warnings */ rulephoneEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end phone */ /** * $ANTLR start nettype * ../grammars/belle_sdp.g:520:1: nettype : ( alpha_num )+ ; */ static belle_sdpParser_nettype_return nettype(pbelle_sdpParser ctx) { belle_sdpParser_nettype_return retval; pANTLR3_BASE_TREE root_0; belle_sdpParser_alpha_num_return alpha_num274; #undef RETURN_TYPE_alpha_num274 #define RETURN_TYPE_alpha_num274 belle_sdpParser_alpha_num_return /* Initialize rule variables */ root_0 = NULL; alpha_num274.tree = NULL; retval.start = LT(1); retval.stop = retval.start; retval.tree = NULL; { // ../grammars/belle_sdp.g:520:8: ( ( alpha_num )+ ) // ../grammars/belle_sdp.g:520:22: ( alpha_num )+ { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); // ../grammars/belle_sdp.g:520:22: ( alpha_num )+ { int cnt68=0; for (;;) { int alt68=2; switch ( LA(1) ) { case COMMON_CHAR: case DIGIT: case HEX_CHAR: { alt68=1; } break; } switch (alt68) { case 1: // ../grammars/belle_sdp.g:520:22: alpha_num { FOLLOWPUSH(FOLLOW_alpha_num_in_nettype3709); alpha_num274=alpha_num(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulenettypeEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, alpha_num274.tree); } break; default: if ( cnt68 >= 1 ) { goto loop68; } if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } /* mismatchedSetEx() */ CONSTRUCTEX(); EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME; goto rulenettypeEx; } cnt68++; } loop68: ; /* Jump to here if this rule does not match */ } } } // This is where rules clean up and exit // goto rulenettypeEx; /* Prevent compiler warnings */ rulenettypeEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end nettype */ /** * $ANTLR start addrtype * ../grammars/belle_sdp.g:523:1: addrtype : ( alpha_num )+ ; */ static belle_sdpParser_addrtype_return addrtype(pbelle_sdpParser ctx) { belle_sdpParser_addrtype_return retval; pANTLR3_BASE_TREE root_0; belle_sdpParser_alpha_num_return alpha_num275; #undef RETURN_TYPE_alpha_num275 #define RETURN_TYPE_alpha_num275 belle_sdpParser_alpha_num_return /* Initialize rule variables */ root_0 = NULL; alpha_num275.tree = NULL; retval.start = LT(1); retval.stop = retval.start; retval.tree = NULL; { // ../grammars/belle_sdp.g:523:9: ( ( alpha_num )+ ) // ../grammars/belle_sdp.g:523:22: ( alpha_num )+ { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); // ../grammars/belle_sdp.g:523:22: ( alpha_num )+ { int cnt69=0; for (;;) { int alt69=2; switch ( LA(1) ) { case COMMON_CHAR: case DIGIT: case HEX_CHAR: { alt69=1; } break; } switch (alt69) { case 1: // ../grammars/belle_sdp.g:523:22: alpha_num { FOLLOWPUSH(FOLLOW_alpha_num_in_addrtype3753); alpha_num275=alpha_num(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleaddrtypeEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, alpha_num275.tree); } break; default: if ( cnt69 >= 1 ) { goto loop69; } if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } /* mismatchedSetEx() */ CONSTRUCTEX(); EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME; goto ruleaddrtypeEx; } cnt69++; } loop69: ; /* Jump to here if this rule does not match */ } } } // This is where rules clean up and exit // goto ruleaddrtypeEx; /* Prevent compiler warnings */ ruleaddrtypeEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end addrtype */ /** * $ANTLR start addr * ../grammars/belle_sdp.g:526:1: addr : unicast_address ; */ static belle_sdpParser_addr_return addr(pbelle_sdpParser ctx) { belle_sdpParser_addr_return retval; pANTLR3_BASE_TREE root_0; belle_sdpParser_unicast_address_return unicast_address276; #undef RETURN_TYPE_unicast_address276 #define RETURN_TYPE_unicast_address276 belle_sdpParser_unicast_address_return /* Initialize rule variables */ root_0 = NULL; unicast_address276.tree = NULL; retval.start = LT(1); retval.stop = retval.start; retval.tree = NULL; { // ../grammars/belle_sdp.g:526:5: ( unicast_address ) // ../grammars/belle_sdp.g:526:23: unicast_address { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); FOLLOWPUSH(FOLLOW_unicast_address_in_addr3805); unicast_address276=unicast_address(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleaddrEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, unicast_address276.tree); } } // This is where rules clean up and exit // goto ruleaddrEx; /* Prevent compiler warnings */ ruleaddrEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end addr */ /** * $ANTLR start multicast_part * ../grammars/belle_sdp.g:528:2: multicast_part : ( SLASH num+= integer )+ ; */ static belle_sdpParser_multicast_part_return multicast_part(pbelle_sdpParser ctx) { belle_sdpParser_multicast_part_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN SLASH277; pANTLR3_VECTOR list_num; belle_sdpParser_integer_return num; #undef RETURN_TYPE_num #define RETURN_TYPE_num belle_sdpParser_integer_return pANTLR3_BASE_TREE SLASH277_tree; /* Initialize rule variables */ root_0 = NULL; SLASH277 = NULL; list_num = NULL; num.tree = NULL; retval.start = LT(1); retval.stop = retval.start; SLASH277_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:528:16: ( ( SLASH num+= integer )+ ) // ../grammars/belle_sdp.g:528:18: ( SLASH num+= integer )+ { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); // ../grammars/belle_sdp.g:528:18: ( SLASH num+= integer )+ { int cnt70=0; for (;;) { int alt70=2; switch ( LA(1) ) { case SLASH: { alt70=1; } break; } switch (alt70) { case 1: // ../grammars/belle_sdp.g:528:19: SLASH num+= integer { SLASH277 = (pANTLR3_COMMON_TOKEN) MATCHT(SLASH, &FOLLOW_SLASH_in_multicast_part3815); if (HASEXCEPTION()) { goto rulemulticast_partEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { SLASH277_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, SLASH277)); ADAPTOR->addChild(ADAPTOR, root_0, SLASH277_tree); } FOLLOWPUSH(FOLLOW_integer_in_multicast_part3819); num=integer(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulemulticast_partEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, num.tree); if (list_num == NULL) { list_num=ctx->vectors->newVector(ctx->vectors); } { RETURN_TYPE_num * tcopy; tcopy = (RETURN_TYPE_num *)ANTLR3_MALLOC(sizeof(RETURN_TYPE_num)); /* Note no memory allocation checks! */ ANTLR3_MEMCPY((void *)(tcopy), (const void *)&num, sizeof(RETURN_TYPE_num)); list_num->add(list_num, (void *)tcopy, freeScope); /* Add whatever the return type is */ } if ( BACKTRACKING==0 ) { if (strcmp( belle_sdp_connection_get_address_type((SCOPE_TOP(connection))->current),"IP6")==0) belle_sdp_connection_set_range((SCOPE_TOP(connection))->current,atoi((const char*) (STRSTREAM->toStringTT(STRSTREAM, num.start, num.stop)) ->chars)); else if (list_num->count ==1) belle_sdp_connection_set_ttl((SCOPE_TOP(connection))->current,atoi((const char*) (STRSTREAM->toStringTT(STRSTREAM, num.start, num.stop)) ->chars)); else if (list_num->count ==2) belle_sdp_connection_set_range((SCOPE_TOP(connection))->current,atoi((const char*) (STRSTREAM->toStringTT(STRSTREAM, num.start, num.stop)) ->chars)); } } break; default: if ( cnt70 >= 1 ) { goto loop70; } if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } /* mismatchedSetEx() */ CONSTRUCTEX(); EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME; goto rulemulticast_partEx; } cnt70++; } loop70: ; /* Jump to here if this rule does not match */ } } } // This is where rules clean up and exit // goto rulemulticast_partEx; /* Prevent compiler warnings */ rulemulticast_partEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end multicast_part */ /** * $ANTLR start fqdn * ../grammars/belle_sdp.g:537:1: fqdn : ( domainlabel DOT )* toplabel ( DOT )? ; */ static belle_sdpParser_fqdn_return fqdn(pbelle_sdpParser ctx) { belle_sdpParser_fqdn_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN DOT279; pANTLR3_COMMON_TOKEN DOT281; belle_sdpParser_domainlabel_return domainlabel278; #undef RETURN_TYPE_domainlabel278 #define RETURN_TYPE_domainlabel278 belle_sdpParser_domainlabel_return belle_sdpParser_toplabel_return toplabel280; #undef RETURN_TYPE_toplabel280 #define RETURN_TYPE_toplabel280 belle_sdpParser_toplabel_return pANTLR3_BASE_TREE DOT279_tree; pANTLR3_BASE_TREE DOT281_tree; /* Initialize rule variables */ root_0 = NULL; DOT279 = NULL; DOT281 = NULL; domainlabel278.tree = NULL; toplabel280.tree = NULL; retval.start = LT(1); retval.stop = retval.start; DOT279_tree = NULL; DOT281_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:537:13: ( ( domainlabel DOT )* toplabel ( DOT )? ) // ../grammars/belle_sdp.g:537:17: ( domainlabel DOT )* toplabel ( DOT )? { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); // ../grammars/belle_sdp.g:537:17: ( domainlabel DOT )* for (;;) { int alt71=2; alt71 = cdfa71.predict(ctx, RECOGNIZER, ISTREAM, &cdfa71); if (HASEXCEPTION()) { goto rulefqdnEx; } if (HASFAILED()) { return retval; } switch (alt71) { case 1: // ../grammars/belle_sdp.g:537:19: domainlabel DOT { FOLLOWPUSH(FOLLOW_domainlabel_in_fqdn3843); domainlabel278=domainlabel(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulefqdnEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, domainlabel278.tree); DOT279 = (pANTLR3_COMMON_TOKEN) MATCHT(DOT, &FOLLOW_DOT_in_fqdn3845); if (HASEXCEPTION()) { goto rulefqdnEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { DOT279_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, DOT279)); ADAPTOR->addChild(ADAPTOR, root_0, DOT279_tree); } } break; default: goto loop71; /* break out of the loop */ break; } } loop71: ; /* Jump out to here if this rule does not match */ FOLLOWPUSH(FOLLOW_toplabel_in_fqdn3850); toplabel280=toplabel(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulefqdnEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, toplabel280.tree); // ../grammars/belle_sdp.g:537:47: ( DOT )? { int alt72=2; switch ( LA(1) ) { case DOT: { alt72=1; } break; } switch (alt72) { case 1: // ../grammars/belle_sdp.g:537:47: DOT { DOT281 = (pANTLR3_COMMON_TOKEN) MATCHT(DOT, &FOLLOW_DOT_in_fqdn3852); if (HASEXCEPTION()) { goto rulefqdnEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { DOT281_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, DOT281)); ADAPTOR->addChild(ADAPTOR, root_0, DOT281_tree); } } break; } } } } // This is where rules clean up and exit // goto rulefqdnEx; /* Prevent compiler warnings */ rulefqdnEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end fqdn */ /** * $ANTLR start domainlabel * ../grammars/belle_sdp.g:539:1: domainlabel : ( alpha_num | ( alpha_num ( alpha_num | DASH )* alpha_num ) ); */ static belle_sdpParser_domainlabel_return domainlabel(pbelle_sdpParser ctx) { belle_sdpParser_domainlabel_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN DASH285; belle_sdpParser_alpha_num_return alpha_num282; #undef RETURN_TYPE_alpha_num282 #define RETURN_TYPE_alpha_num282 belle_sdpParser_alpha_num_return belle_sdpParser_alpha_num_return alpha_num283; #undef RETURN_TYPE_alpha_num283 #define RETURN_TYPE_alpha_num283 belle_sdpParser_alpha_num_return belle_sdpParser_alpha_num_return alpha_num284; #undef RETURN_TYPE_alpha_num284 #define RETURN_TYPE_alpha_num284 belle_sdpParser_alpha_num_return belle_sdpParser_alpha_num_return alpha_num286; #undef RETURN_TYPE_alpha_num286 #define RETURN_TYPE_alpha_num286 belle_sdpParser_alpha_num_return pANTLR3_BASE_TREE DASH285_tree; /* Initialize rule variables */ root_0 = NULL; DASH285 = NULL; alpha_num282.tree = NULL; alpha_num283.tree = NULL; alpha_num284.tree = NULL; alpha_num286.tree = NULL; retval.start = LT(1); retval.stop = retval.start; DASH285_tree = NULL; retval.tree = NULL; { { // ../grammars/belle_sdp.g:539:17: ( alpha_num | ( alpha_num ( alpha_num | DASH )* alpha_num ) ) ANTLR3_UINT32 alt74; alt74=2; switch ( LA(1) ) { case COMMON_CHAR: case HEX_CHAR: { switch ( LA(2) ) { case DOT: { alt74=1; } break; case COMMON_CHAR: case DASH: case DIGIT: case HEX_CHAR: { alt74=2; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 74; EXCEPTION->state = 1; goto ruledomainlabelEx; } } break; case DIGIT: { switch ( LA(2) ) { case DOT: { alt74=1; } break; case COMMON_CHAR: case DASH: case DIGIT: case HEX_CHAR: { alt74=2; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 74; EXCEPTION->state = 2; goto ruledomainlabelEx; } } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 74; EXCEPTION->state = 0; goto ruledomainlabelEx; } switch (alt74) { case 1: // ../grammars/belle_sdp.g:539:21: alpha_num { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); FOLLOWPUSH(FOLLOW_alpha_num_in_domainlabel3868); alpha_num282=alpha_num(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruledomainlabelEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, alpha_num282.tree); } break; case 2: // ../grammars/belle_sdp.g:539:33: ( alpha_num ( alpha_num | DASH )* alpha_num ) { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); // ../grammars/belle_sdp.g:539:33: ( alpha_num ( alpha_num | DASH )* alpha_num ) // ../grammars/belle_sdp.g:539:34: alpha_num ( alpha_num | DASH )* alpha_num { FOLLOWPUSH(FOLLOW_alpha_num_in_domainlabel3873); alpha_num283=alpha_num(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruledomainlabelEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, alpha_num283.tree); // ../grammars/belle_sdp.g:539:44: ( alpha_num | DASH )* for (;;) { int alt73=3; switch ( LA(1) ) { case COMMON_CHAR: case HEX_CHAR: { switch ( LA(2) ) { case COMMON_CHAR: case DASH: case DIGIT: case HEX_CHAR: { alt73=1; } break; } } break; case DIGIT: { switch ( LA(2) ) { case COMMON_CHAR: case DASH: case DIGIT: case HEX_CHAR: { alt73=1; } break; } } break; case DASH: { alt73=2; } break; } switch (alt73) { case 1: // ../grammars/belle_sdp.g:539:46: alpha_num { FOLLOWPUSH(FOLLOW_alpha_num_in_domainlabel3877); alpha_num284=alpha_num(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruledomainlabelEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, alpha_num284.tree); } break; case 2: // ../grammars/belle_sdp.g:539:58: DASH { DASH285 = (pANTLR3_COMMON_TOKEN) MATCHT(DASH, &FOLLOW_DASH_in_domainlabel3881); if (HASEXCEPTION()) { goto ruledomainlabelEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { DASH285_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, DASH285)); ADAPTOR->addChild(ADAPTOR, root_0, DASH285_tree); } } break; default: goto loop73; /* break out of the loop */ break; } } loop73: ; /* Jump out to here if this rule does not match */ FOLLOWPUSH(FOLLOW_alpha_num_in_domainlabel3886); alpha_num286=alpha_num(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruledomainlabelEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, alpha_num286.tree); } } break; } } } // This is where rules clean up and exit // goto ruledomainlabelEx; /* Prevent compiler warnings */ ruledomainlabelEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end domainlabel */ /** * $ANTLR start toplabel * ../grammars/belle_sdp.g:540:1: toplabel : ( alpha | ( alpha ( alpha_num | DASH )* alpha_num ) ); */ static belle_sdpParser_toplabel_return toplabel(pbelle_sdpParser ctx) { belle_sdpParser_toplabel_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN DASH290; belle_sdpParser_alpha_return alpha287; #undef RETURN_TYPE_alpha287 #define RETURN_TYPE_alpha287 belle_sdpParser_alpha_return belle_sdpParser_alpha_return alpha288; #undef RETURN_TYPE_alpha288 #define RETURN_TYPE_alpha288 belle_sdpParser_alpha_return belle_sdpParser_alpha_num_return alpha_num289; #undef RETURN_TYPE_alpha_num289 #define RETURN_TYPE_alpha_num289 belle_sdpParser_alpha_num_return belle_sdpParser_alpha_num_return alpha_num291; #undef RETURN_TYPE_alpha_num291 #define RETURN_TYPE_alpha_num291 belle_sdpParser_alpha_num_return pANTLR3_BASE_TREE DASH290_tree; /* Initialize rule variables */ root_0 = NULL; DASH290 = NULL; alpha287.tree = NULL; alpha288.tree = NULL; alpha_num289.tree = NULL; alpha_num291.tree = NULL; retval.start = LT(1); retval.stop = retval.start; DASH290_tree = NULL; retval.tree = NULL; { { // ../grammars/belle_sdp.g:540:17: ( alpha | ( alpha ( alpha_num | DASH )* alpha_num ) ) ANTLR3_UINT32 alt76; alt76=2; switch ( LA(1) ) { case COMMON_CHAR: case HEX_CHAR: { switch ( LA(2) ) { case EOF: case DOT: { alt76=1; } break; case COMMON_CHAR: case DASH: case DIGIT: case HEX_CHAR: { alt76=2; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 76; EXCEPTION->state = 1; goto ruletoplabelEx; } } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 76; EXCEPTION->state = 0; goto ruletoplabelEx; } switch (alt76) { case 1: // ../grammars/belle_sdp.g:540:21: alpha { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); FOLLOWPUSH(FOLLOW_alpha_in_toplabel3904); alpha287=alpha(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruletoplabelEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, alpha287.tree); } break; case 2: // ../grammars/belle_sdp.g:540:29: ( alpha ( alpha_num | DASH )* alpha_num ) { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); // ../grammars/belle_sdp.g:540:29: ( alpha ( alpha_num | DASH )* alpha_num ) // ../grammars/belle_sdp.g:540:30: alpha ( alpha_num | DASH )* alpha_num { FOLLOWPUSH(FOLLOW_alpha_in_toplabel3909); alpha288=alpha(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruletoplabelEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, alpha288.tree); // ../grammars/belle_sdp.g:540:36: ( alpha_num | DASH )* for (;;) { int alt75=3; switch ( LA(1) ) { case COMMON_CHAR: case HEX_CHAR: { switch ( LA(2) ) { case COMMON_CHAR: case DASH: case DIGIT: case HEX_CHAR: { alt75=1; } break; } } break; case DIGIT: { switch ( LA(2) ) { case COMMON_CHAR: case DASH: case DIGIT: case HEX_CHAR: { alt75=1; } break; } } break; case DASH: { alt75=2; } break; } switch (alt75) { case 1: // ../grammars/belle_sdp.g:540:38: alpha_num { FOLLOWPUSH(FOLLOW_alpha_num_in_toplabel3913); alpha_num289=alpha_num(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruletoplabelEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, alpha_num289.tree); } break; case 2: // ../grammars/belle_sdp.g:540:50: DASH { DASH290 = (pANTLR3_COMMON_TOKEN) MATCHT(DASH, &FOLLOW_DASH_in_toplabel3917); if (HASEXCEPTION()) { goto ruletoplabelEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { DASH290_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, DASH290)); ADAPTOR->addChild(ADAPTOR, root_0, DASH290_tree); } } break; default: goto loop75; /* break out of the loop */ break; } } loop75: ; /* Jump out to here if this rule does not match */ FOLLOWPUSH(FOLLOW_alpha_num_in_toplabel3922); alpha_num291=alpha_num(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruletoplabelEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, alpha_num291.tree); } } break; } } } // This is where rules clean up and exit // goto ruletoplabelEx; /* Prevent compiler warnings */ ruletoplabelEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end toplabel */ /** * $ANTLR start unicast_address * ../grammars/belle_sdp.g:542:1: unicast_address : ( alpha_num | DOT | COLON | DASH )* ; */ static belle_sdpParser_unicast_address_return unicast_address(pbelle_sdpParser ctx) { belle_sdpParser_unicast_address_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN DOT293; pANTLR3_COMMON_TOKEN COLON294; pANTLR3_COMMON_TOKEN DASH295; belle_sdpParser_alpha_num_return alpha_num292; #undef RETURN_TYPE_alpha_num292 #define RETURN_TYPE_alpha_num292 belle_sdpParser_alpha_num_return pANTLR3_BASE_TREE DOT293_tree; pANTLR3_BASE_TREE COLON294_tree; pANTLR3_BASE_TREE DASH295_tree; /* Initialize rule variables */ root_0 = NULL; DOT293 = NULL; COLON294 = NULL; DASH295 = NULL; alpha_num292.tree = NULL; retval.start = LT(1); retval.stop = retval.start; DOT293_tree = NULL; COLON294_tree = NULL; DASH295_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:542:17: ( ( alpha_num | DOT | COLON | DASH )* ) // ../grammars/belle_sdp.g:542:21: ( alpha_num | DOT | COLON | DASH )* { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); // ../grammars/belle_sdp.g:542:21: ( alpha_num | DOT | COLON | DASH )* for (;;) { int alt77=5; switch ( LA(1) ) { case COMMON_CHAR: case DIGIT: case HEX_CHAR: { alt77=1; } break; case DOT: { alt77=2; } break; case COLON: { alt77=3; } break; case DASH: { alt77=4; } break; } switch (alt77) { case 1: // ../grammars/belle_sdp.g:542:22: alpha_num { FOLLOWPUSH(FOLLOW_alpha_num_in_unicast_address3935); alpha_num292=alpha_num(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleunicast_addressEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, alpha_num292.tree); } break; case 2: // ../grammars/belle_sdp.g:542:34: DOT { DOT293 = (pANTLR3_COMMON_TOKEN) MATCHT(DOT, &FOLLOW_DOT_in_unicast_address3939); if (HASEXCEPTION()) { goto ruleunicast_addressEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { DOT293_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, DOT293)); ADAPTOR->addChild(ADAPTOR, root_0, DOT293_tree); } } break; case 3: // ../grammars/belle_sdp.g:542:40: COLON { COLON294 = (pANTLR3_COMMON_TOKEN) MATCHT(COLON, &FOLLOW_COLON_in_unicast_address3943); if (HASEXCEPTION()) { goto ruleunicast_addressEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { COLON294_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, COLON294)); ADAPTOR->addChild(ADAPTOR, root_0, COLON294_tree); } } break; case 4: // ../grammars/belle_sdp.g:542:47: DASH { DASH295 = (pANTLR3_COMMON_TOKEN) MATCHT(DASH, &FOLLOW_DASH_in_unicast_address3946); if (HASEXCEPTION()) { goto ruleunicast_addressEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { DASH295_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, DASH295)); ADAPTOR->addChild(ADAPTOR, root_0, DASH295_tree); } } break; default: goto loop77; /* break out of the loop */ break; } } loop77: ; /* Jump out to here if this rule does not match */ } } // This is where rules clean up and exit // goto ruleunicast_addressEx; /* Prevent compiler warnings */ ruleunicast_addressEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end unicast_address */ /** * $ANTLR start ipv4_address * ../grammars/belle_sdp.g:547:1: ipv4_address : decimal_uchar DOT decimal_uchar DOT decimal_uchar DOT decimal_uchar ; */ static belle_sdpParser_ipv4_address_return ipv4_address(pbelle_sdpParser ctx) { belle_sdpParser_ipv4_address_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN DOT297; pANTLR3_COMMON_TOKEN DOT299; pANTLR3_COMMON_TOKEN DOT301; belle_sdpParser_decimal_uchar_return decimal_uchar296; #undef RETURN_TYPE_decimal_uchar296 #define RETURN_TYPE_decimal_uchar296 belle_sdpParser_decimal_uchar_return belle_sdpParser_decimal_uchar_return decimal_uchar298; #undef RETURN_TYPE_decimal_uchar298 #define RETURN_TYPE_decimal_uchar298 belle_sdpParser_decimal_uchar_return belle_sdpParser_decimal_uchar_return decimal_uchar300; #undef RETURN_TYPE_decimal_uchar300 #define RETURN_TYPE_decimal_uchar300 belle_sdpParser_decimal_uchar_return belle_sdpParser_decimal_uchar_return decimal_uchar302; #undef RETURN_TYPE_decimal_uchar302 #define RETURN_TYPE_decimal_uchar302 belle_sdpParser_decimal_uchar_return pANTLR3_BASE_TREE DOT297_tree; pANTLR3_BASE_TREE DOT299_tree; pANTLR3_BASE_TREE DOT301_tree; /* Initialize rule variables */ root_0 = NULL; DOT297 = NULL; DOT299 = NULL; DOT301 = NULL; decimal_uchar296.tree = NULL; decimal_uchar298.tree = NULL; decimal_uchar300.tree = NULL; decimal_uchar302.tree = NULL; retval.start = LT(1); retval.stop = retval.start; DOT297_tree = NULL; DOT299_tree = NULL; DOT301_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:547:14: ( decimal_uchar DOT decimal_uchar DOT decimal_uchar DOT decimal_uchar ) // ../grammars/belle_sdp.g:547:24: decimal_uchar DOT decimal_uchar DOT decimal_uchar DOT decimal_uchar { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); FOLLOWPUSH(FOLLOW_decimal_uchar_in_ipv4_address3989); decimal_uchar296=decimal_uchar(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleipv4_addressEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, decimal_uchar296.tree); DOT297 = (pANTLR3_COMMON_TOKEN) MATCHT(DOT, &FOLLOW_DOT_in_ipv4_address3991); if (HASEXCEPTION()) { goto ruleipv4_addressEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { DOT297_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, DOT297)); ADAPTOR->addChild(ADAPTOR, root_0, DOT297_tree); } FOLLOWPUSH(FOLLOW_decimal_uchar_in_ipv4_address3993); decimal_uchar298=decimal_uchar(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleipv4_addressEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, decimal_uchar298.tree); DOT299 = (pANTLR3_COMMON_TOKEN) MATCHT(DOT, &FOLLOW_DOT_in_ipv4_address3995); if (HASEXCEPTION()) { goto ruleipv4_addressEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { DOT299_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, DOT299)); ADAPTOR->addChild(ADAPTOR, root_0, DOT299_tree); } FOLLOWPUSH(FOLLOW_decimal_uchar_in_ipv4_address3997); decimal_uchar300=decimal_uchar(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleipv4_addressEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, decimal_uchar300.tree); DOT301 = (pANTLR3_COMMON_TOKEN) MATCHT(DOT, &FOLLOW_DOT_in_ipv4_address3999); if (HASEXCEPTION()) { goto ruleipv4_addressEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { DOT301_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, DOT301)); ADAPTOR->addChild(ADAPTOR, root_0, DOT301_tree); } FOLLOWPUSH(FOLLOW_decimal_uchar_in_ipv4_address4001); decimal_uchar302=decimal_uchar(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleipv4_addressEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, decimal_uchar302.tree); } } // This is where rules clean up and exit // goto ruleipv4_addressEx; /* Prevent compiler warnings */ ruleipv4_addressEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end ipv4_address */ /** * $ANTLR start ipv6_address * ../grammars/belle_sdp.g:551:1: ipv6_address : ( hexpart )=> hexpart ( COLON ipv4_address )? ; */ static belle_sdpParser_ipv6_address_return ipv6_address(pbelle_sdpParser ctx) { belle_sdpParser_ipv6_address_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN COLON304; belle_sdpParser_hexpart_return hexpart303; #undef RETURN_TYPE_hexpart303 #define RETURN_TYPE_hexpart303 belle_sdpParser_hexpart_return belle_sdpParser_ipv4_address_return ipv4_address305; #undef RETURN_TYPE_ipv4_address305 #define RETURN_TYPE_ipv4_address305 belle_sdpParser_ipv4_address_return pANTLR3_BASE_TREE COLON304_tree; /* Initialize rule variables */ root_0 = NULL; COLON304 = NULL; hexpart303.tree = NULL; ipv4_address305.tree = NULL; retval.start = LT(1); retval.stop = retval.start; COLON304_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:551:17: ( ( hexpart )=> hexpart ( COLON ipv4_address )? ) // ../grammars/belle_sdp.g:551:20: ( hexpart )=> hexpart ( COLON ipv4_address )? { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); FOLLOWPUSH(FOLLOW_hexpart_in_ipv6_address4020); hexpart303=hexpart(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleipv6_addressEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, hexpart303.tree); // ../grammars/belle_sdp.g:551:39: ( COLON ipv4_address )? { int alt78=2; switch ( LA(1) ) { case COLON: { alt78=1; } break; } switch (alt78) { case 1: // ../grammars/belle_sdp.g:551:41: COLON ipv4_address { COLON304 = (pANTLR3_COMMON_TOKEN) MATCHT(COLON, &FOLLOW_COLON_in_ipv6_address4024); if (HASEXCEPTION()) { goto ruleipv6_addressEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { COLON304_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, COLON304)); ADAPTOR->addChild(ADAPTOR, root_0, COLON304_tree); } FOLLOWPUSH(FOLLOW_ipv4_address_in_ipv6_address4026); ipv4_address305=ipv4_address(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleipv6_addressEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, ipv4_address305.tree); } break; } } } } // This is where rules clean up and exit // goto ruleipv6_addressEx; /* Prevent compiler warnings */ ruleipv6_addressEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end ipv6_address */ /** * $ANTLR start hexpart * ../grammars/belle_sdp.g:552:1: hexpart : ( hexseq | hexseq COLON COLON ( hexseq )? | COLON COLON ( hexseq )? ); */ static belle_sdpParser_hexpart_return hexpart(pbelle_sdpParser ctx) { belle_sdpParser_hexpart_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN COLON308; pANTLR3_COMMON_TOKEN COLON309; pANTLR3_COMMON_TOKEN COLON311; pANTLR3_COMMON_TOKEN COLON312; belle_sdpParser_hexseq_return hexseq306; #undef RETURN_TYPE_hexseq306 #define RETURN_TYPE_hexseq306 belle_sdpParser_hexseq_return belle_sdpParser_hexseq_return hexseq307; #undef RETURN_TYPE_hexseq307 #define RETURN_TYPE_hexseq307 belle_sdpParser_hexseq_return belle_sdpParser_hexseq_return hexseq310; #undef RETURN_TYPE_hexseq310 #define RETURN_TYPE_hexseq310 belle_sdpParser_hexseq_return belle_sdpParser_hexseq_return hexseq313; #undef RETURN_TYPE_hexseq313 #define RETURN_TYPE_hexseq313 belle_sdpParser_hexseq_return pANTLR3_BASE_TREE COLON308_tree; pANTLR3_BASE_TREE COLON309_tree; pANTLR3_BASE_TREE COLON311_tree; pANTLR3_BASE_TREE COLON312_tree; /* Initialize rule variables */ root_0 = NULL; COLON308 = NULL; COLON309 = NULL; COLON311 = NULL; COLON312 = NULL; hexseq306.tree = NULL; hexseq307.tree = NULL; hexseq310.tree = NULL; hexseq313.tree = NULL; retval.start = LT(1); retval.stop = retval.start; COLON308_tree = NULL; COLON309_tree = NULL; COLON311_tree = NULL; COLON312_tree = NULL; retval.tree = NULL; { { // ../grammars/belle_sdp.g:552:16: ( hexseq | hexseq COLON COLON ( hexseq )? | COLON COLON ( hexseq )? ) ANTLR3_UINT32 alt81; alt81=3; alt81 = cdfa81.predict(ctx, RECOGNIZER, ISTREAM, &cdfa81); if (HASEXCEPTION()) { goto rulehexpartEx; } if (HASFAILED()) { return retval; } switch (alt81) { case 1: // ../grammars/belle_sdp.g:552:19: hexseq { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); FOLLOWPUSH(FOLLOW_hexseq_in_hexpart4045); hexseq306=hexseq(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulehexpartEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, hexseq306.tree); } break; case 2: // ../grammars/belle_sdp.g:552:28: hexseq COLON COLON ( hexseq )? { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); FOLLOWPUSH(FOLLOW_hexseq_in_hexpart4049); hexseq307=hexseq(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulehexpartEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, hexseq307.tree); COLON308 = (pANTLR3_COMMON_TOKEN) MATCHT(COLON, &FOLLOW_COLON_in_hexpart4051); if (HASEXCEPTION()) { goto rulehexpartEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { COLON308_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, COLON308)); ADAPTOR->addChild(ADAPTOR, root_0, COLON308_tree); } COLON309 = (pANTLR3_COMMON_TOKEN) MATCHT(COLON, &FOLLOW_COLON_in_hexpart4053); if (HASEXCEPTION()) { goto rulehexpartEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { COLON309_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, COLON309)); ADAPTOR->addChild(ADAPTOR, root_0, COLON309_tree); } // ../grammars/belle_sdp.g:552:47: ( hexseq )? { int alt79=2; switch ( LA(1) ) { case DIGIT: case HEX_CHAR: { alt79=1; } break; } switch (alt79) { case 1: // ../grammars/belle_sdp.g:552:47: hexseq { FOLLOWPUSH(FOLLOW_hexseq_in_hexpart4055); hexseq310=hexseq(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulehexpartEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, hexseq310.tree); } break; } } } break; case 3: // ../grammars/belle_sdp.g:552:57: COLON COLON ( hexseq )? { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); COLON311 = (pANTLR3_COMMON_TOKEN) MATCHT(COLON, &FOLLOW_COLON_in_hexpart4060); if (HASEXCEPTION()) { goto rulehexpartEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { COLON311_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, COLON311)); ADAPTOR->addChild(ADAPTOR, root_0, COLON311_tree); } COLON312 = (pANTLR3_COMMON_TOKEN) MATCHT(COLON, &FOLLOW_COLON_in_hexpart4062); if (HASEXCEPTION()) { goto rulehexpartEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { COLON312_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, COLON312)); ADAPTOR->addChild(ADAPTOR, root_0, COLON312_tree); } // ../grammars/belle_sdp.g:552:69: ( hexseq )? { int alt80=2; switch ( LA(1) ) { case DIGIT: case HEX_CHAR: { alt80=1; } break; } switch (alt80) { case 1: // ../grammars/belle_sdp.g:552:69: hexseq { FOLLOWPUSH(FOLLOW_hexseq_in_hexpart4064); hexseq313=hexseq(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulehexpartEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, hexseq313.tree); } break; } } } break; } } } // This is where rules clean up and exit // goto rulehexpartEx; /* Prevent compiler warnings */ rulehexpartEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end hexpart */ /** * $ANTLR start hexseq * ../grammars/belle_sdp.g:553:1: hexseq : hex4 ( COLON hex4 )* ; */ static belle_sdpParser_hexseq_return hexseq(pbelle_sdpParser ctx) { belle_sdpParser_hexseq_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN COLON315; belle_sdpParser_hex4_return hex4314; #undef RETURN_TYPE_hex4314 #define RETURN_TYPE_hex4314 belle_sdpParser_hex4_return belle_sdpParser_hex4_return hex4316; #undef RETURN_TYPE_hex4316 #define RETURN_TYPE_hex4316 belle_sdpParser_hex4_return pANTLR3_BASE_TREE COLON315_tree; /* Initialize rule variables */ root_0 = NULL; COLON315 = NULL; hex4314.tree = NULL; hex4316.tree = NULL; retval.start = LT(1); retval.stop = retval.start; COLON315_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:553:16: ( hex4 ( COLON hex4 )* ) // ../grammars/belle_sdp.g:553:19: hex4 ( COLON hex4 )* { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); FOLLOWPUSH(FOLLOW_hex4_in_hexseq4082); hex4314=hex4(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulehexseqEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, hex4314.tree); // ../grammars/belle_sdp.g:553:24: ( COLON hex4 )* for (;;) { int alt82=2; alt82 = cdfa82.predict(ctx, RECOGNIZER, ISTREAM, &cdfa82); if (HASEXCEPTION()) { goto rulehexseqEx; } if (HASFAILED()) { return retval; } switch (alt82) { case 1: // ../grammars/belle_sdp.g:553:26: COLON hex4 { COLON315 = (pANTLR3_COMMON_TOKEN) MATCHT(COLON, &FOLLOW_COLON_in_hexseq4086); if (HASEXCEPTION()) { goto rulehexseqEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { COLON315_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, COLON315)); ADAPTOR->addChild(ADAPTOR, root_0, COLON315_tree); } FOLLOWPUSH(FOLLOW_hex4_in_hexseq4088); hex4316=hex4(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulehexseqEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, hex4316.tree); } break; default: goto loop82; /* break out of the loop */ break; } } loop82: ; /* Jump out to here if this rule does not match */ } } // This is where rules clean up and exit // goto rulehexseqEx; /* Prevent compiler warnings */ rulehexseqEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end hexseq */ /** * $ANTLR start hex4 * ../grammars/belle_sdp.g:554:1: hex4 : ( hexdigit )+ ; */ static belle_sdpParser_hex4_return hex4(pbelle_sdpParser ctx) { belle_sdpParser_hex4_return retval; pANTLR3_BASE_TREE root_0; belle_sdpParser_hexdigit_return hexdigit317; #undef RETURN_TYPE_hexdigit317 #define RETURN_TYPE_hexdigit317 belle_sdpParser_hexdigit_return /* Initialize rule variables */ root_0 = NULL; hexdigit317.tree = NULL; retval.start = LT(1); retval.stop = retval.start; retval.tree = NULL; { // ../grammars/belle_sdp.g:554:16: ( ( hexdigit )+ ) // ../grammars/belle_sdp.g:554:19: ( hexdigit )+ { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); // ../grammars/belle_sdp.g:554:19: ( hexdigit )+ { int cnt83=0; for (;;) { int alt83=2; switch ( LA(1) ) { case DIGIT: case HEX_CHAR: { alt83=1; } break; } switch (alt83) { case 1: // ../grammars/belle_sdp.g:554:19: hexdigit { FOLLOWPUSH(FOLLOW_hexdigit_in_hex44109); hexdigit317=hexdigit(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulehex4Ex; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, hexdigit317.tree); } break; default: if ( cnt83 >= 1 ) { goto loop83; } if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } /* mismatchedSetEx() */ CONSTRUCTEX(); EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME; goto rulehex4Ex; } cnt83++; } loop83: ; /* Jump to here if this rule does not match */ } } } // This is where rules clean up and exit // goto rulehex4Ex; /* Prevent compiler warnings */ rulehex4Ex: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end hex4 */ /** * $ANTLR start text * ../grammars/belle_sdp.g:556:1: text : (~ ( CR | LF ) )* ; */ static belle_sdpParser_text_return text(pbelle_sdpParser ctx) { belle_sdpParser_text_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN set318; pANTLR3_BASE_TREE set318_tree; /* Initialize rule variables */ root_0 = NULL; set318 = NULL; retval.start = LT(1); retval.stop = retval.start; set318_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:556:6: ( (~ ( CR | LF ) )* ) // ../grammars/belle_sdp.g:556:23: (~ ( CR | LF ) )* { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); // ../grammars/belle_sdp.g:556:23: (~ ( CR | LF ) )* for (;;) { int alt84=2; switch ( LA(1) ) { case COLON: case COMMA: case COMMON_CHAR: case DASH: case DIGIT: case DOT: case EQUAL: case HEX_CHAR: case LQUOTE: case OCTET: case POS_DIGIT: case RQUOTE: case SLASH: case SPACE: case STAR: case ZERO: case 22: case 23: case 24: case 25: case 26: case 27: case 28: case 29: case 30: case 31: case 32: case 33: case 34: case 35: { alt84=1; } break; } switch (alt84) { case 1: // ../grammars/belle_sdp.g: { set318=(pANTLR3_COMMON_TOKEN)LT(1); if ( ((LA(1) >= COLON) && (LA(1) <= COMMON_CHAR)) || ((LA(1) >= DASH) && (LA(1) <= HEX_CHAR)) || ((LA(1) >= LQUOTE) && (LA(1) <= 35)) ) { CONSUME(); if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, set318)) ); PERRORRECOVERY=ANTLR3_FALSE; FAILEDFLAG=ANTLR3_FALSE; } else { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_MISMATCHED_SET_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_MISMATCHED_SET_NAME; EXCEPTION->expectingSet = NULL; goto ruletextEx; } } break; default: goto loop84; /* break out of the loop */ break; } } loop84: ; /* Jump out to here if this rule does not match */ } } // This is where rules clean up and exit // goto ruletextEx; /* Prevent compiler warnings */ ruletextEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end text */ /** * $ANTLR start byte_string * ../grammars/belle_sdp.g:561:1: byte_string options {greedy=false; } : ( OCTET )* ; */ static belle_sdpParser_byte_string_return byte_string(pbelle_sdpParser ctx) { belle_sdpParser_byte_string_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN OCTET319; pANTLR3_BASE_TREE OCTET319_tree; /* Initialize rule variables */ root_0 = NULL; OCTET319 = NULL; retval.start = LT(1); retval.stop = retval.start; OCTET319_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:561:40: ( ( OCTET )* ) // ../grammars/belle_sdp.g:561:49: ( OCTET )* { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); // ../grammars/belle_sdp.g:561:49: ( OCTET )* for (;;) { int alt85=2; switch ( LA(1) ) { case OCTET: { alt85=1; } break; } switch (alt85) { case 1: // ../grammars/belle_sdp.g:561:50: OCTET { OCTET319 = (pANTLR3_COMMON_TOKEN) MATCHT(OCTET, &FOLLOW_OCTET_in_byte_string4237); if (HASEXCEPTION()) { goto rulebyte_stringEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { OCTET319_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, OCTET319)); ADAPTOR->addChild(ADAPTOR, root_0, OCTET319_tree); } } break; default: goto loop85; /* break out of the loop */ break; } } loop85: ; /* Jump out to here if this rule does not match */ } } // This is where rules clean up and exit // goto rulebyte_stringEx; /* Prevent compiler warnings */ rulebyte_stringEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end byte_string */ /** * $ANTLR start decimal_uchar * ../grammars/belle_sdp.g:564:1: decimal_uchar : integer ; */ static belle_sdpParser_decimal_uchar_return decimal_uchar(pbelle_sdpParser ctx) { belle_sdpParser_decimal_uchar_return retval; pANTLR3_BASE_TREE root_0; belle_sdpParser_integer_return integer320; #undef RETURN_TYPE_integer320 #define RETURN_TYPE_integer320 belle_sdpParser_integer_return /* Initialize rule variables */ root_0 = NULL; integer320.tree = NULL; retval.start = LT(1); retval.stop = retval.start; retval.tree = NULL; { // ../grammars/belle_sdp.g:564:14: ( integer ) // ../grammars/belle_sdp.g:564:22: integer { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); FOLLOWPUSH(FOLLOW_integer_in_decimal_uchar4279); integer320=integer(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruledecimal_ucharEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, integer320.tree); } } // This is where rules clean up and exit // goto ruledecimal_ucharEx; /* Prevent compiler warnings */ ruledecimal_ucharEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end decimal_uchar */ /** * $ANTLR start integer * ../grammars/belle_sdp.g:566:1: integer : ( DIGIT )+ ; */ static belle_sdpParser_integer_return integer(pbelle_sdpParser ctx) { belle_sdpParser_integer_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN DIGIT321; pANTLR3_BASE_TREE DIGIT321_tree; /* Initialize rule variables */ root_0 = NULL; DIGIT321 = NULL; retval.start = LT(1); retval.stop = retval.start; DIGIT321_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:566:8: ( ( DIGIT )+ ) // ../grammars/belle_sdp.g:566:22: ( DIGIT )+ { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); // ../grammars/belle_sdp.g:566:22: ( DIGIT )+ { int cnt86=0; for (;;) { int alt86=2; switch ( LA(1) ) { case DIGIT: { alt86=1; } break; } switch (alt86) { case 1: // ../grammars/belle_sdp.g:566:22: DIGIT { DIGIT321 = (pANTLR3_COMMON_TOKEN) MATCHT(DIGIT, &FOLLOW_DIGIT_in_integer4298); if (HASEXCEPTION()) { goto ruleintegerEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { DIGIT321_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, DIGIT321)); ADAPTOR->addChild(ADAPTOR, root_0, DIGIT321_tree); } } break; default: if ( cnt86 >= 1 ) { goto loop86; } if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } /* mismatchedSetEx() */ CONSTRUCTEX(); EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME; goto ruleintegerEx; } cnt86++; } loop86: ; /* Jump to here if this rule does not match */ } } } // This is where rules clean up and exit // goto ruleintegerEx; /* Prevent compiler warnings */ ruleintegerEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end integer */ /** * $ANTLR start email_safe * ../grammars/belle_sdp.g:568:1: email_safe : (~ ( SPACE ) )* ; */ static belle_sdpParser_email_safe_return email_safe(pbelle_sdpParser ctx) { belle_sdpParser_email_safe_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN set322; pANTLR3_BASE_TREE set322_tree; /* Initialize rule variables */ root_0 = NULL; set322 = NULL; retval.start = LT(1); retval.stop = retval.start; set322_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:568:12: ( (~ ( SPACE ) )* ) // ../grammars/belle_sdp.g:568:14: (~ ( SPACE ) )* { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); // ../grammars/belle_sdp.g:568:14: (~ ( SPACE ) )* for (;;) { int alt87=2; switch ( LA(1) ) { case COLON: case COMMA: case COMMON_CHAR: case CR: case DASH: case DIGIT: case DOT: case EQUAL: case HEX_CHAR: case LF: case LQUOTE: case OCTET: case POS_DIGIT: case RQUOTE: case SLASH: case STAR: case ZERO: case 22: case 23: case 24: case 25: case 26: case 27: case 28: case 29: case 30: case 31: case 32: case 33: case 34: case 35: { alt87=1; } break; } switch (alt87) { case 1: // ../grammars/belle_sdp.g: { set322=(pANTLR3_COMMON_TOKEN)LT(1); if ( ((LA(1) >= COLON) && (LA(1) <= SLASH)) || ((LA(1) >= STAR) && (LA(1) <= 35)) ) { CONSUME(); if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, set322)) ); PERRORRECOVERY=ANTLR3_FALSE; FAILEDFLAG=ANTLR3_FALSE; } else { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_MISMATCHED_SET_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_MISMATCHED_SET_NAME; EXCEPTION->expectingSet = NULL; goto ruleemail_safeEx; } } break; default: goto loop87; /* break out of the loop */ break; } } loop87: ; /* Jump out to here if this rule does not match */ } } // This is where rules clean up and exit // goto ruleemail_safeEx; /* Prevent compiler warnings */ ruleemail_safeEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end email_safe */ /** * $ANTLR start token * ../grammars/belle_sdp.g:570:1: token : ( alpha_num | '!' | '#' | '$' | '&' | '%' | '\\'' | '*' | '+' | DASH | DOT | '^' | '_' | '`' | '{' | '|' | '}' | '~' )+ ; */ static belle_sdpParser_token_return token(pbelle_sdpParser ctx) { belle_sdpParser_token_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN char_literal324; pANTLR3_COMMON_TOKEN char_literal325; pANTLR3_COMMON_TOKEN char_literal326; pANTLR3_COMMON_TOKEN char_literal327; pANTLR3_COMMON_TOKEN char_literal328; pANTLR3_COMMON_TOKEN char_literal329; pANTLR3_COMMON_TOKEN char_literal330; pANTLR3_COMMON_TOKEN char_literal331; pANTLR3_COMMON_TOKEN DASH332; pANTLR3_COMMON_TOKEN DOT333; pANTLR3_COMMON_TOKEN char_literal334; pANTLR3_COMMON_TOKEN char_literal335; pANTLR3_COMMON_TOKEN char_literal336; pANTLR3_COMMON_TOKEN char_literal337; pANTLR3_COMMON_TOKEN char_literal338; pANTLR3_COMMON_TOKEN char_literal339; pANTLR3_COMMON_TOKEN char_literal340; belle_sdpParser_alpha_num_return alpha_num323; #undef RETURN_TYPE_alpha_num323 #define RETURN_TYPE_alpha_num323 belle_sdpParser_alpha_num_return pANTLR3_BASE_TREE char_literal324_tree; pANTLR3_BASE_TREE char_literal325_tree; pANTLR3_BASE_TREE char_literal326_tree; pANTLR3_BASE_TREE char_literal327_tree; pANTLR3_BASE_TREE char_literal328_tree; pANTLR3_BASE_TREE char_literal329_tree; pANTLR3_BASE_TREE char_literal330_tree; pANTLR3_BASE_TREE char_literal331_tree; pANTLR3_BASE_TREE DASH332_tree; pANTLR3_BASE_TREE DOT333_tree; pANTLR3_BASE_TREE char_literal334_tree; pANTLR3_BASE_TREE char_literal335_tree; pANTLR3_BASE_TREE char_literal336_tree; pANTLR3_BASE_TREE char_literal337_tree; pANTLR3_BASE_TREE char_literal338_tree; pANTLR3_BASE_TREE char_literal339_tree; pANTLR3_BASE_TREE char_literal340_tree; /* Initialize rule variables */ root_0 = NULL; char_literal324 = NULL; char_literal325 = NULL; char_literal326 = NULL; char_literal327 = NULL; char_literal328 = NULL; char_literal329 = NULL; char_literal330 = NULL; char_literal331 = NULL; DASH332 = NULL; DOT333 = NULL; char_literal334 = NULL; char_literal335 = NULL; char_literal336 = NULL; char_literal337 = NULL; char_literal338 = NULL; char_literal339 = NULL; char_literal340 = NULL; alpha_num323.tree = NULL; retval.start = LT(1); retval.stop = retval.start; char_literal324_tree = NULL; char_literal325_tree = NULL; char_literal326_tree = NULL; char_literal327_tree = NULL; char_literal328_tree = NULL; char_literal329_tree = NULL; char_literal330_tree = NULL; char_literal331_tree = NULL; DASH332_tree = NULL; DOT333_tree = NULL; char_literal334_tree = NULL; char_literal335_tree = NULL; char_literal336_tree = NULL; char_literal337_tree = NULL; char_literal338_tree = NULL; char_literal339_tree = NULL; char_literal340_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:570:7: ( ( alpha_num | '!' | '#' | '$' | '&' | '%' | '\\'' | '*' | '+' | DASH | DOT | '^' | '_' | '`' | '{' | '|' | '}' | '~' )+ ) // ../grammars/belle_sdp.g:570:9: ( alpha_num | '!' | '#' | '$' | '&' | '%' | '\\'' | '*' | '+' | DASH | DOT | '^' | '_' | '`' | '{' | '|' | '}' | '~' )+ { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); // ../grammars/belle_sdp.g:570:9: ( alpha_num | '!' | '#' | '$' | '&' | '%' | '\\'' | '*' | '+' | DASH | DOT | '^' | '_' | '`' | '{' | '|' | '}' | '~' )+ { int cnt88=0; for (;;) { int alt88=19; switch ( LA(1) ) { case COMMON_CHAR: case DIGIT: case HEX_CHAR: { alt88=1; } break; case 22: { alt88=2; } break; case 23: { alt88=3; } break; case 24: { alt88=4; } break; case 26: { alt88=5; } break; case 25: { alt88=6; } break; case 28: { alt88=7; } break; case STAR: { alt88=8; } break; case 27: { alt88=9; } break; case DASH: { alt88=10; } break; case DOT: { alt88=11; } break; case 29: { alt88=12; } break; case 30: { alt88=13; } break; case 31: { alt88=14; } break; case 32: { alt88=15; } break; case 33: { alt88=16; } break; case 34: { alt88=17; } break; case 35: { alt88=18; } break; } switch (alt88) { case 1: // ../grammars/belle_sdp.g:570:10: alpha_num { FOLLOWPUSH(FOLLOW_alpha_num_in_token4320); alpha_num323=alpha_num(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruletokenEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, alpha_num323.tree); } break; case 2: // ../grammars/belle_sdp.g:570:22: '!' { char_literal324 = (pANTLR3_COMMON_TOKEN) MATCHT(22, &FOLLOW_22_in_token4324); if (HASEXCEPTION()) { goto ruletokenEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { char_literal324_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, char_literal324)); ADAPTOR->addChild(ADAPTOR, root_0, char_literal324_tree); } } break; case 3: // ../grammars/belle_sdp.g:570:28: '#' { char_literal325 = (pANTLR3_COMMON_TOKEN) MATCHT(23, &FOLLOW_23_in_token4328); if (HASEXCEPTION()) { goto ruletokenEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { char_literal325_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, char_literal325)); ADAPTOR->addChild(ADAPTOR, root_0, char_literal325_tree); } } break; case 4: // ../grammars/belle_sdp.g:570:34: '$' { char_literal326 = (pANTLR3_COMMON_TOKEN) MATCHT(24, &FOLLOW_24_in_token4332); if (HASEXCEPTION()) { goto ruletokenEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { char_literal326_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, char_literal326)); ADAPTOR->addChild(ADAPTOR, root_0, char_literal326_tree); } } break; case 5: // ../grammars/belle_sdp.g:570:39: '&' { char_literal327 = (pANTLR3_COMMON_TOKEN) MATCHT(26, &FOLLOW_26_in_token4335); if (HASEXCEPTION()) { goto ruletokenEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { char_literal327_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, char_literal327)); ADAPTOR->addChild(ADAPTOR, root_0, char_literal327_tree); } } break; case 6: // ../grammars/belle_sdp.g:570:44: '%' { char_literal328 = (pANTLR3_COMMON_TOKEN) MATCHT(25, &FOLLOW_25_in_token4338); if (HASEXCEPTION()) { goto ruletokenEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { char_literal328_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, char_literal328)); ADAPTOR->addChild(ADAPTOR, root_0, char_literal328_tree); } } break; case 7: // ../grammars/belle_sdp.g:570:49: '\\'' { char_literal329 = (pANTLR3_COMMON_TOKEN) MATCHT(28, &FOLLOW_28_in_token4341); if (HASEXCEPTION()) { goto ruletokenEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { char_literal329_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, char_literal329)); ADAPTOR->addChild(ADAPTOR, root_0, char_literal329_tree); } } break; case 8: // ../grammars/belle_sdp.g:570:56: '*' { char_literal330 = (pANTLR3_COMMON_TOKEN) MATCHT(STAR, &FOLLOW_STAR_in_token4345); if (HASEXCEPTION()) { goto ruletokenEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { char_literal330_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, char_literal330)); ADAPTOR->addChild(ADAPTOR, root_0, char_literal330_tree); } } break; case 9: // ../grammars/belle_sdp.g:570:61: '+' { char_literal331 = (pANTLR3_COMMON_TOKEN) MATCHT(27, &FOLLOW_27_in_token4348); if (HASEXCEPTION()) { goto ruletokenEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { char_literal331_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, char_literal331)); ADAPTOR->addChild(ADAPTOR, root_0, char_literal331_tree); } } break; case 10: // ../grammars/belle_sdp.g:570:67: DASH { DASH332 = (pANTLR3_COMMON_TOKEN) MATCHT(DASH, &FOLLOW_DASH_in_token4352); if (HASEXCEPTION()) { goto ruletokenEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { DASH332_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, DASH332)); ADAPTOR->addChild(ADAPTOR, root_0, DASH332_tree); } } break; case 11: // ../grammars/belle_sdp.g:570:74: DOT { DOT333 = (pANTLR3_COMMON_TOKEN) MATCHT(DOT, &FOLLOW_DOT_in_token4356); if (HASEXCEPTION()) { goto ruletokenEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { DOT333_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, DOT333)); ADAPTOR->addChild(ADAPTOR, root_0, DOT333_tree); } } break; case 12: // ../grammars/belle_sdp.g:570:80: '^' { char_literal334 = (pANTLR3_COMMON_TOKEN) MATCHT(29, &FOLLOW_29_in_token4360); if (HASEXCEPTION()) { goto ruletokenEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { char_literal334_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, char_literal334)); ADAPTOR->addChild(ADAPTOR, root_0, char_literal334_tree); } } break; case 13: // ../grammars/belle_sdp.g:570:86: '_' { char_literal335 = (pANTLR3_COMMON_TOKEN) MATCHT(30, &FOLLOW_30_in_token4364); if (HASEXCEPTION()) { goto ruletokenEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { char_literal335_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, char_literal335)); ADAPTOR->addChild(ADAPTOR, root_0, char_literal335_tree); } } break; case 14: // ../grammars/belle_sdp.g:570:92: '`' { char_literal336 = (pANTLR3_COMMON_TOKEN) MATCHT(31, &FOLLOW_31_in_token4368); if (HASEXCEPTION()) { goto ruletokenEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { char_literal336_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, char_literal336)); ADAPTOR->addChild(ADAPTOR, root_0, char_literal336_tree); } } break; case 15: // ../grammars/belle_sdp.g:570:98: '{' { char_literal337 = (pANTLR3_COMMON_TOKEN) MATCHT(32, &FOLLOW_32_in_token4372); if (HASEXCEPTION()) { goto ruletokenEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { char_literal337_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, char_literal337)); ADAPTOR->addChild(ADAPTOR, root_0, char_literal337_tree); } } break; case 16: // ../grammars/belle_sdp.g:570:104: '|' { char_literal338 = (pANTLR3_COMMON_TOKEN) MATCHT(33, &FOLLOW_33_in_token4376); if (HASEXCEPTION()) { goto ruletokenEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { char_literal338_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, char_literal338)); ADAPTOR->addChild(ADAPTOR, root_0, char_literal338_tree); } } break; case 17: // ../grammars/belle_sdp.g:570:110: '}' { char_literal339 = (pANTLR3_COMMON_TOKEN) MATCHT(34, &FOLLOW_34_in_token4380); if (HASEXCEPTION()) { goto ruletokenEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { char_literal339_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, char_literal339)); ADAPTOR->addChild(ADAPTOR, root_0, char_literal339_tree); } } break; case 18: // ../grammars/belle_sdp.g:570:116: '~' { char_literal340 = (pANTLR3_COMMON_TOKEN) MATCHT(35, &FOLLOW_35_in_token4384); if (HASEXCEPTION()) { goto ruletokenEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { char_literal340_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, char_literal340)); ADAPTOR->addChild(ADAPTOR, root_0, char_literal340_tree); } } break; default: if ( cnt88 >= 1 ) { goto loop88; } if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } /* mismatchedSetEx() */ CONSTRUCTEX(); EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME; goto ruletokenEx; } cnt88++; } loop88: ; /* Jump to here if this rule does not match */ } } } // This is where rules clean up and exit // goto ruletokenEx; /* Prevent compiler warnings */ ruletokenEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end token */ /** * $ANTLR start alpha_num * ../grammars/belle_sdp.g:572:1: alpha_num : ( alpha | DIGIT ) ; */ static belle_sdpParser_alpha_num_return alpha_num(pbelle_sdpParser ctx) { belle_sdpParser_alpha_num_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN DIGIT342; belle_sdpParser_alpha_return alpha341; #undef RETURN_TYPE_alpha341 #define RETURN_TYPE_alpha341 belle_sdpParser_alpha_return pANTLR3_BASE_TREE DIGIT342_tree; /* Initialize rule variables */ root_0 = NULL; DIGIT342 = NULL; alpha341.tree = NULL; retval.start = LT(1); retval.stop = retval.start; DIGIT342_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:572:10: ( ( alpha | DIGIT ) ) // ../grammars/belle_sdp.g:572:15: ( alpha | DIGIT ) { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); // ../grammars/belle_sdp.g:572:15: ( alpha | DIGIT ) { int alt89=2; switch ( LA(1) ) { case COMMON_CHAR: case HEX_CHAR: { alt89=1; } break; case DIGIT: { alt89=2; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 89; EXCEPTION->state = 0; goto rulealpha_numEx; } switch (alt89) { case 1: // ../grammars/belle_sdp.g:572:16: alpha { FOLLOWPUSH(FOLLOW_alpha_in_alpha_num4397); alpha341=alpha(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulealpha_numEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, alpha341.tree); } break; case 2: // ../grammars/belle_sdp.g:572:24: DIGIT { DIGIT342 = (pANTLR3_COMMON_TOKEN) MATCHT(DIGIT, &FOLLOW_DIGIT_in_alpha_num4401); if (HASEXCEPTION()) { goto rulealpha_numEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { DIGIT342_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, DIGIT342)); ADAPTOR->addChild(ADAPTOR, root_0, DIGIT342_tree); } } break; } } } } // This is where rules clean up and exit // goto rulealpha_numEx; /* Prevent compiler warnings */ rulealpha_numEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end alpha_num */ /** * $ANTLR start hexdigit * ../grammars/belle_sdp.g:573:1: hexdigit : ( HEX_CHAR | DIGIT ) ; */ static belle_sdpParser_hexdigit_return hexdigit(pbelle_sdpParser ctx) { belle_sdpParser_hexdigit_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN set343; pANTLR3_BASE_TREE set343_tree; /* Initialize rule variables */ root_0 = NULL; set343 = NULL; retval.start = LT(1); retval.stop = retval.start; set343_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:573:9: ( ( HEX_CHAR | DIGIT ) ) // ../grammars/belle_sdp.g: { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); set343=(pANTLR3_COMMON_TOKEN)LT(1); if ( LA(1) == DIGIT || LA(1) == HEX_CHAR ) { CONSUME(); if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, set343)) ); PERRORRECOVERY=ANTLR3_FALSE; FAILEDFLAG=ANTLR3_FALSE; } else { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_MISMATCHED_SET_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_MISMATCHED_SET_NAME; EXCEPTION->expectingSet = NULL; goto rulehexdigitEx; } } } // This is where rules clean up and exit // goto rulehexdigitEx; /* Prevent compiler warnings */ rulehexdigitEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end hexdigit */ /** * $ANTLR start word * ../grammars/belle_sdp.g:574:1: word : ( alpha | DASH )+ ; */ static belle_sdpParser_word_return word(pbelle_sdpParser ctx) { belle_sdpParser_word_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN DASH345; belle_sdpParser_alpha_return alpha344; #undef RETURN_TYPE_alpha344 #define RETURN_TYPE_alpha344 belle_sdpParser_alpha_return pANTLR3_BASE_TREE DASH345_tree; /* Initialize rule variables */ root_0 = NULL; DASH345 = NULL; alpha344.tree = NULL; retval.start = LT(1); retval.stop = retval.start; DASH345_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:574:5: ( ( alpha | DASH )+ ) // ../grammars/belle_sdp.g:574:7: ( alpha | DASH )+ { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); // ../grammars/belle_sdp.g:574:7: ( alpha | DASH )+ { int cnt90=0; for (;;) { int alt90=3; switch ( LA(1) ) { case COMMON_CHAR: case HEX_CHAR: { alt90=1; } break; case DASH: { alt90=2; } break; } switch (alt90) { case 1: // ../grammars/belle_sdp.g:574:8: alpha { FOLLOWPUSH(FOLLOW_alpha_in_word4423); alpha344=alpha(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulewordEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, alpha344.tree); } break; case 2: // ../grammars/belle_sdp.g:574:16: DASH { DASH345 = (pANTLR3_COMMON_TOKEN) MATCHT(DASH, &FOLLOW_DASH_in_word4427); if (HASEXCEPTION()) { goto rulewordEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { DASH345_tree = (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, DASH345)); ADAPTOR->addChild(ADAPTOR, root_0, DASH345_tree); } } break; default: if ( cnt90 >= 1 ) { goto loop90; } if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } /* mismatchedSetEx() */ CONSTRUCTEX(); EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME; goto rulewordEx; } cnt90++; } loop90: ; /* Jump to here if this rule does not match */ } } } // This is where rules clean up and exit // goto rulewordEx; /* Prevent compiler warnings */ rulewordEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end word */ /** * $ANTLR start alpha * ../grammars/belle_sdp.g:575:1: alpha : ( COMMON_CHAR | HEX_CHAR ); */ static belle_sdpParser_alpha_return alpha(pbelle_sdpParser ctx) { belle_sdpParser_alpha_return retval; pANTLR3_BASE_TREE root_0; pANTLR3_COMMON_TOKEN set346; pANTLR3_BASE_TREE set346_tree; /* Initialize rule variables */ root_0 = NULL; set346 = NULL; retval.start = LT(1); retval.stop = retval.start; set346_tree = NULL; retval.tree = NULL; { // ../grammars/belle_sdp.g:575:6: ( COMMON_CHAR | HEX_CHAR ) // ../grammars/belle_sdp.g: { root_0 = (pANTLR3_BASE_TREE)(ADAPTOR->nilNode(ADAPTOR)); set346=(pANTLR3_COMMON_TOKEN)LT(1); if ( LA(1) == COMMON_CHAR || LA(1) == HEX_CHAR ) { CONSUME(); if ( BACKTRACKING==0 ) ADAPTOR->addChild(ADAPTOR, root_0, (pANTLR3_BASE_TREE)(ADAPTOR->create(ADAPTOR, set346)) ); PERRORRECOVERY=ANTLR3_FALSE; FAILEDFLAG=ANTLR3_FALSE; } else { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_MISMATCHED_SET_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_MISMATCHED_SET_NAME; EXCEPTION->expectingSet = NULL; goto rulealphaEx; } } } // This is where rules clean up and exit // goto rulealphaEx; /* Prevent compiler warnings */ rulealphaEx: ; retval.stop = LT(-1); if ( BACKTRACKING==0 ) { retval.stop = LT(-1); retval.tree = (pANTLR3_BASE_TREE)(ADAPTOR->rulePostProcessing(ADAPTOR, root_0)); ADAPTOR->setTokenBoundaries(ADAPTOR, retval.tree, retval.start, retval.stop); } if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end alpha */ // $ANTLR start synpred1_belle_sdp static void synpred1_belle_sdp_fragment(pbelle_sdpParser ctx ) { // ../grammars/belle_sdp.g:255:2: ( pkt_loss_rle ) // ../grammars/belle_sdp.g:255:3: pkt_loss_rle { FOLLOWPUSH(FOLLOW_pkt_loss_rle_in_synpred1_belle_sdp1560); pkt_loss_rle(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesynpred1_belle_sdpEx; } if (HASFAILED()) { return ; } } // This is where rules clean up and exit // goto rulesynpred1_belle_sdpEx; /* Prevent compiler warnings */ rulesynpred1_belle_sdpEx: ; } // $ANTLR end synpred1_belle_sdp // $ANTLR start synpred2_belle_sdp static void synpred2_belle_sdp_fragment(pbelle_sdpParser ctx ) { // ../grammars/belle_sdp.g:256:3: ( pkt_dup_rle ) // ../grammars/belle_sdp.g:256:4: pkt_dup_rle { FOLLOWPUSH(FOLLOW_pkt_dup_rle_in_synpred2_belle_sdp1569); pkt_dup_rle(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesynpred2_belle_sdpEx; } if (HASFAILED()) { return ; } } // This is where rules clean up and exit // goto rulesynpred2_belle_sdpEx; /* Prevent compiler warnings */ rulesynpred2_belle_sdpEx: ; } // $ANTLR end synpred2_belle_sdp // $ANTLR start synpred3_belle_sdp static void synpred3_belle_sdp_fragment(pbelle_sdpParser ctx ) { // ../grammars/belle_sdp.g:257:3: ( pkt_rcpt_times ) // ../grammars/belle_sdp.g:257:4: pkt_rcpt_times { FOLLOWPUSH(FOLLOW_pkt_rcpt_times_in_synpred3_belle_sdp1578); pkt_rcpt_times(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesynpred3_belle_sdpEx; } if (HASFAILED()) { return ; } } // This is where rules clean up and exit // goto rulesynpred3_belle_sdpEx; /* Prevent compiler warnings */ rulesynpred3_belle_sdpEx: ; } // $ANTLR end synpred3_belle_sdp // $ANTLR start synpred4_belle_sdp static void synpred4_belle_sdp_fragment(pbelle_sdpParser ctx ) { // ../grammars/belle_sdp.g:258:3: ( rcvr_rtt ) // ../grammars/belle_sdp.g:258:4: rcvr_rtt { FOLLOWPUSH(FOLLOW_rcvr_rtt_in_synpred4_belle_sdp1587); rcvr_rtt(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesynpred4_belle_sdpEx; } if (HASFAILED()) { return ; } } // This is where rules clean up and exit // goto rulesynpred4_belle_sdpEx; /* Prevent compiler warnings */ rulesynpred4_belle_sdpEx: ; } // $ANTLR end synpred4_belle_sdp // $ANTLR start synpred5_belle_sdp static void synpred5_belle_sdp_fragment(pbelle_sdpParser ctx ) { // ../grammars/belle_sdp.g:259:3: ( stat_summary ) // ../grammars/belle_sdp.g:259:4: stat_summary { FOLLOWPUSH(FOLLOW_stat_summary_in_synpred5_belle_sdp1596); stat_summary(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesynpred5_belle_sdpEx; } if (HASFAILED()) { return ; } } // This is where rules clean up and exit // goto rulesynpred5_belle_sdpEx; /* Prevent compiler warnings */ rulesynpred5_belle_sdpEx: ; } // $ANTLR end synpred5_belle_sdp // $ANTLR start synpred6_belle_sdp static void synpred6_belle_sdp_fragment(pbelle_sdpParser ctx ) { // ../grammars/belle_sdp.g:260:3: ( voip_metrics ) // ../grammars/belle_sdp.g:260:4: voip_metrics { FOLLOWPUSH(FOLLOW_voip_metrics_in_synpred6_belle_sdp1605); voip_metrics(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesynpred6_belle_sdpEx; } if (HASFAILED()) { return ; } } // This is where rules clean up and exit // goto rulesynpred6_belle_sdpEx; /* Prevent compiler warnings */ rulesynpred6_belle_sdpEx: ; } // $ANTLR end synpred6_belle_sdp // $ANTLR start synpred7_belle_sdp static void synpred7_belle_sdp_fragment(pbelle_sdpParser ctx ) { // ../grammars/belle_sdp.g:312:2: ( rtcp_fb_ack_val ) // ../grammars/belle_sdp.g:312:3: rtcp_fb_ack_val { FOLLOWPUSH(FOLLOW_rtcp_fb_ack_val_in_synpred7_belle_sdp1836); rtcp_fb_ack_val(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesynpred7_belle_sdpEx; } if (HASFAILED()) { return ; } } // This is where rules clean up and exit // goto rulesynpred7_belle_sdpEx; /* Prevent compiler warnings */ rulesynpred7_belle_sdpEx: ; } // $ANTLR end synpred7_belle_sdp // $ANTLR start synpred8_belle_sdp static void synpred8_belle_sdp_fragment(pbelle_sdpParser ctx ) { // ../grammars/belle_sdp.g:313:3: ( rtcp_fb_nack_val ) // ../grammars/belle_sdp.g:313:4: rtcp_fb_nack_val { FOLLOWPUSH(FOLLOW_rtcp_fb_nack_val_in_synpred8_belle_sdp1844); rtcp_fb_nack_val(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesynpred8_belle_sdpEx; } if (HASFAILED()) { return ; } } // This is where rules clean up and exit // goto rulesynpred8_belle_sdpEx; /* Prevent compiler warnings */ rulesynpred8_belle_sdpEx: ; } // $ANTLR end synpred8_belle_sdp // $ANTLR start synpred9_belle_sdp static void synpred9_belle_sdp_fragment(pbelle_sdpParser ctx ) { // ../grammars/belle_sdp.g:314:3: ( rtcp_fb_trr_int_val ) // ../grammars/belle_sdp.g:314:4: rtcp_fb_trr_int_val { FOLLOWPUSH(FOLLOW_rtcp_fb_trr_int_val_in_synpred9_belle_sdp1852); rtcp_fb_trr_int_val(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesynpred9_belle_sdpEx; } if (HASFAILED()) { return ; } } // This is where rules clean up and exit // goto rulesynpred9_belle_sdpEx; /* Prevent compiler warnings */ rulesynpred9_belle_sdpEx: ; } // $ANTLR end synpred9_belle_sdp // $ANTLR start synpred10_belle_sdp static void synpred10_belle_sdp_fragment(pbelle_sdpParser ctx ) { // ../grammars/belle_sdp.g:315:3: ( rtcp_fb_ccm_val ) // ../grammars/belle_sdp.g:315:4: rtcp_fb_ccm_val { FOLLOWPUSH(FOLLOW_rtcp_fb_ccm_val_in_synpred10_belle_sdp1860); rtcp_fb_ccm_val(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesynpred10_belle_sdpEx; } if (HASFAILED()) { return ; } } // This is where rules clean up and exit // goto rulesynpred10_belle_sdpEx; /* Prevent compiler warnings */ rulesynpred10_belle_sdpEx: ; } // $ANTLR end synpred10_belle_sdp // $ANTLR start synpred11_belle_sdp static void synpred11_belle_sdp_fragment(pbelle_sdpParser ctx ) { // ../grammars/belle_sdp.g:316:3: ( rtcp_fb_id_val ) // ../grammars/belle_sdp.g:316:4: rtcp_fb_id_val { FOLLOWPUSH(FOLLOW_rtcp_fb_id_val_in_synpred11_belle_sdp1868); rtcp_fb_id_val(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesynpred11_belle_sdpEx; } if (HASFAILED()) { return ; } } // This is where rules clean up and exit // goto rulesynpred11_belle_sdpEx; /* Prevent compiler warnings */ rulesynpred11_belle_sdpEx: ; } // $ANTLR end synpred11_belle_sdp // $ANTLR start synpred12_belle_sdp static void synpred12_belle_sdp_fragment(pbelle_sdpParser ctx ) { // ../grammars/belle_sdp.g:343:2: ( rtcp_fb_app_param ) // ../grammars/belle_sdp.g:343:3: rtcp_fb_app_param { FOLLOWPUSH(FOLLOW_rtcp_fb_app_param_in_synpred12_belle_sdp1976); rtcp_fb_app_param(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesynpred12_belle_sdpEx; } if (HASFAILED()) { return ; } } // This is where rules clean up and exit // goto rulesynpred12_belle_sdpEx; /* Prevent compiler warnings */ rulesynpred12_belle_sdpEx: ; } // $ANTLR end synpred12_belle_sdp // $ANTLR start synpred13_belle_sdp static void synpred13_belle_sdp_fragment(pbelle_sdpParser ctx ) { // ../grammars/belle_sdp.g:344:3: ( rtcp_fb_token_param ) // ../grammars/belle_sdp.g:344:4: rtcp_fb_token_param { FOLLOWPUSH(FOLLOW_rtcp_fb_token_param_in_synpred13_belle_sdp1984); rtcp_fb_token_param(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesynpred13_belle_sdpEx; } if (HASFAILED()) { return ; } } // This is where rules clean up and exit // goto rulesynpred13_belle_sdpEx; /* Prevent compiler warnings */ rulesynpred13_belle_sdpEx: ; } // $ANTLR end synpred13_belle_sdp // $ANTLR start synpred14_belle_sdp static void synpred14_belle_sdp_fragment(pbelle_sdpParser ctx ) { // ../grammars/belle_sdp.g:347:2: ( rtcp_fb_rpsi_param ) // ../grammars/belle_sdp.g:347:3: rtcp_fb_rpsi_param { FOLLOWPUSH(FOLLOW_rtcp_fb_rpsi_param_in_synpred14_belle_sdp1996); rtcp_fb_rpsi_param(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesynpred14_belle_sdpEx; } if (HASFAILED()) { return ; } } // This is where rules clean up and exit // goto rulesynpred14_belle_sdpEx; /* Prevent compiler warnings */ rulesynpred14_belle_sdpEx: ; } // $ANTLR end synpred14_belle_sdp // $ANTLR start synpred15_belle_sdp static void synpred15_belle_sdp_fragment(pbelle_sdpParser ctx ) { // ../grammars/belle_sdp.g:348:3: ( rtcp_fb_app_param ) // ../grammars/belle_sdp.g:348:4: rtcp_fb_app_param { FOLLOWPUSH(FOLLOW_rtcp_fb_app_param_in_synpred15_belle_sdp2004); rtcp_fb_app_param(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesynpred15_belle_sdpEx; } if (HASFAILED()) { return ; } } // This is where rules clean up and exit // goto rulesynpred15_belle_sdpEx; /* Prevent compiler warnings */ rulesynpred15_belle_sdpEx: ; } // $ANTLR end synpred15_belle_sdp // $ANTLR start synpred16_belle_sdp static void synpred16_belle_sdp_fragment(pbelle_sdpParser ctx ) { // ../grammars/belle_sdp.g:349:3: ( rtcp_fb_token_param ) // ../grammars/belle_sdp.g:349:4: rtcp_fb_token_param { FOLLOWPUSH(FOLLOW_rtcp_fb_token_param_in_synpred16_belle_sdp2012); rtcp_fb_token_param(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesynpred16_belle_sdpEx; } if (HASFAILED()) { return ; } } // This is where rules clean up and exit // goto rulesynpred16_belle_sdpEx; /* Prevent compiler warnings */ rulesynpred16_belle_sdpEx: ; } // $ANTLR end synpred16_belle_sdp // $ANTLR start synpred17_belle_sdp static void synpred17_belle_sdp_fragment(pbelle_sdpParser ctx ) { // ../grammars/belle_sdp.g:352:2: ( rtcp_fb_pli_param ) // ../grammars/belle_sdp.g:352:3: rtcp_fb_pli_param { FOLLOWPUSH(FOLLOW_rtcp_fb_pli_param_in_synpred17_belle_sdp2024); rtcp_fb_pli_param(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesynpred17_belle_sdpEx; } if (HASFAILED()) { return ; } } // This is where rules clean up and exit // goto rulesynpred17_belle_sdpEx; /* Prevent compiler warnings */ rulesynpred17_belle_sdpEx: ; } // $ANTLR end synpred17_belle_sdp // $ANTLR start synpred18_belle_sdp static void synpred18_belle_sdp_fragment(pbelle_sdpParser ctx ) { // ../grammars/belle_sdp.g:353:3: ( rtcp_fb_sli_param ) // ../grammars/belle_sdp.g:353:4: rtcp_fb_sli_param { FOLLOWPUSH(FOLLOW_rtcp_fb_sli_param_in_synpred18_belle_sdp2032); rtcp_fb_sli_param(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesynpred18_belle_sdpEx; } if (HASFAILED()) { return ; } } // This is where rules clean up and exit // goto rulesynpred18_belle_sdpEx; /* Prevent compiler warnings */ rulesynpred18_belle_sdpEx: ; } // $ANTLR end synpred18_belle_sdp // $ANTLR start synpred19_belle_sdp static void synpred19_belle_sdp_fragment(pbelle_sdpParser ctx ) { // ../grammars/belle_sdp.g:354:3: ( rtcp_fb_rpsi_param ) // ../grammars/belle_sdp.g:354:4: rtcp_fb_rpsi_param { FOLLOWPUSH(FOLLOW_rtcp_fb_rpsi_param_in_synpred19_belle_sdp2040); rtcp_fb_rpsi_param(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesynpred19_belle_sdpEx; } if (HASFAILED()) { return ; } } // This is where rules clean up and exit // goto rulesynpred19_belle_sdpEx; /* Prevent compiler warnings */ rulesynpred19_belle_sdpEx: ; } // $ANTLR end synpred19_belle_sdp // $ANTLR start synpred20_belle_sdp static void synpred20_belle_sdp_fragment(pbelle_sdpParser ctx ) { // ../grammars/belle_sdp.g:355:3: ( rtcp_fb_app_param ) // ../grammars/belle_sdp.g:355:4: rtcp_fb_app_param { FOLLOWPUSH(FOLLOW_rtcp_fb_app_param_in_synpred20_belle_sdp2048); rtcp_fb_app_param(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesynpred20_belle_sdpEx; } if (HASFAILED()) { return ; } } // This is where rules clean up and exit // goto rulesynpred20_belle_sdpEx; /* Prevent compiler warnings */ rulesynpred20_belle_sdpEx: ; } // $ANTLR end synpred20_belle_sdp // $ANTLR start synpred21_belle_sdp static void synpred21_belle_sdp_fragment(pbelle_sdpParser ctx ) { // ../grammars/belle_sdp.g:356:3: ( rtcp_fb_token_param ) // ../grammars/belle_sdp.g:356:4: rtcp_fb_token_param { FOLLOWPUSH(FOLLOW_rtcp_fb_token_param_in_synpred21_belle_sdp2056); rtcp_fb_token_param(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesynpred21_belle_sdpEx; } if (HASFAILED()) { return ; } } // This is where rules clean up and exit // goto rulesynpred21_belle_sdpEx; /* Prevent compiler warnings */ rulesynpred21_belle_sdpEx: ; } // $ANTLR end synpred21_belle_sdp // $ANTLR start synpred22_belle_sdp static void synpred22_belle_sdp_fragment(pbelle_sdpParser ctx ) { // ../grammars/belle_sdp.g:379:2: ( rtcp_fb_fir_param ) // ../grammars/belle_sdp.g:379:3: rtcp_fb_fir_param { FOLLOWPUSH(FOLLOW_rtcp_fb_fir_param_in_synpred22_belle_sdp2130); rtcp_fb_fir_param(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesynpred22_belle_sdpEx; } if (HASFAILED()) { return ; } } // This is where rules clean up and exit // goto rulesynpred22_belle_sdpEx; /* Prevent compiler warnings */ rulesynpred22_belle_sdpEx: ; } // $ANTLR end synpred22_belle_sdp // $ANTLR start synpred23_belle_sdp static void synpred23_belle_sdp_fragment(pbelle_sdpParser ctx ) { // ../grammars/belle_sdp.g:380:3: ( rtcp_fb_tmmbr_param ) // ../grammars/belle_sdp.g:380:4: rtcp_fb_tmmbr_param { FOLLOWPUSH(FOLLOW_rtcp_fb_tmmbr_param_in_synpred23_belle_sdp2138); rtcp_fb_tmmbr_param(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesynpred23_belle_sdpEx; } if (HASFAILED()) { return ; } } // This is where rules clean up and exit // goto rulesynpred23_belle_sdpEx; /* Prevent compiler warnings */ rulesynpred23_belle_sdpEx: ; } // $ANTLR end synpred23_belle_sdp // $ANTLR start synpred24_belle_sdp static void synpred24_belle_sdp_fragment(pbelle_sdpParser ctx ) { // ../grammars/belle_sdp.g:381:3: ( rtcp_fb_token_param ) // ../grammars/belle_sdp.g:381:4: rtcp_fb_token_param { FOLLOWPUSH(FOLLOW_rtcp_fb_token_param_in_synpred24_belle_sdp2146); rtcp_fb_token_param(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesynpred24_belle_sdpEx; } if (HASFAILED()) { return ; } } // This is where rules clean up and exit // goto rulesynpred24_belle_sdpEx; /* Prevent compiler warnings */ rulesynpred24_belle_sdpEx: ; } // $ANTLR end synpred24_belle_sdp // $ANTLR start synpred25_belle_sdp static void synpred25_belle_sdp_fragment(pbelle_sdpParser ctx ) { // ../grammars/belle_sdp.g:440:47: ( ( DIGIT )+ ) // ../grammars/belle_sdp.g:440:48: ( DIGIT )+ { // ../grammars/belle_sdp.g:440:48: ( DIGIT )+ { int cnt91=0; for (;;) { int alt91=2; switch ( LA(1) ) { case DIGIT: { alt91=1; } break; } switch (alt91) { case 1: // ../grammars/belle_sdp.g:440:48: DIGIT { MATCHT(DIGIT, &FOLLOW_DIGIT_in_synpred25_belle_sdp2657); if (HASEXCEPTION()) { goto rulesynpred25_belle_sdpEx; } if (HASFAILED()) { return ; } } break; default: if ( cnt91 >= 1 ) { goto loop91; } if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } /* mismatchedSetEx() */ CONSTRUCTEX(); EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME; goto rulesynpred25_belle_sdpEx; } cnt91++; } loop91: ; /* Jump to here if this rule does not match */ } } // This is where rules clean up and exit // goto rulesynpred25_belle_sdpEx; /* Prevent compiler warnings */ rulesynpred25_belle_sdpEx: ; } // $ANTLR end synpred25_belle_sdp /* End of parsing rules * ============================================== */ /* ============================================== * Syntactic predicates */ static ANTLR3_BOOLEAN synpred25_belle_sdp(pbelle_sdpParser ctx) { ANTLR3_MARKER start; ANTLR3_BOOLEAN success; BACKTRACKING++; start = MARK(); synpred25_belle_sdp_fragment(ctx); // can never throw exception success = !(FAILEDFLAG); REWIND(start); BACKTRACKING--; FAILEDFLAG = ANTLR3_FALSE; return success; } static ANTLR3_BOOLEAN synpred12_belle_sdp(pbelle_sdpParser ctx) { ANTLR3_MARKER start; ANTLR3_BOOLEAN success; BACKTRACKING++; start = MARK(); synpred12_belle_sdp_fragment(ctx); // can never throw exception success = !(FAILEDFLAG); REWIND(start); BACKTRACKING--; FAILEDFLAG = ANTLR3_FALSE; return success; } static ANTLR3_BOOLEAN synpred9_belle_sdp(pbelle_sdpParser ctx) { ANTLR3_MARKER start; ANTLR3_BOOLEAN success; BACKTRACKING++; start = MARK(); synpred9_belle_sdp_fragment(ctx); // can never throw exception success = !(FAILEDFLAG); REWIND(start); BACKTRACKING--; FAILEDFLAG = ANTLR3_FALSE; return success; } static ANTLR3_BOOLEAN synpred23_belle_sdp(pbelle_sdpParser ctx) { ANTLR3_MARKER start; ANTLR3_BOOLEAN success; BACKTRACKING++; start = MARK(); synpred23_belle_sdp_fragment(ctx); // can never throw exception success = !(FAILEDFLAG); REWIND(start); BACKTRACKING--; FAILEDFLAG = ANTLR3_FALSE; return success; } static ANTLR3_BOOLEAN synpred5_belle_sdp(pbelle_sdpParser ctx) { ANTLR3_MARKER start; ANTLR3_BOOLEAN success; BACKTRACKING++; start = MARK(); synpred5_belle_sdp_fragment(ctx); // can never throw exception success = !(FAILEDFLAG); REWIND(start); BACKTRACKING--; FAILEDFLAG = ANTLR3_FALSE; return success; } static ANTLR3_BOOLEAN synpred10_belle_sdp(pbelle_sdpParser ctx) { ANTLR3_MARKER start; ANTLR3_BOOLEAN success; BACKTRACKING++; start = MARK(); synpred10_belle_sdp_fragment(ctx); // can never throw exception success = !(FAILEDFLAG); REWIND(start); BACKTRACKING--; FAILEDFLAG = ANTLR3_FALSE; return success; } static ANTLR3_BOOLEAN synpred4_belle_sdp(pbelle_sdpParser ctx) { ANTLR3_MARKER start; ANTLR3_BOOLEAN success; BACKTRACKING++; start = MARK(); synpred4_belle_sdp_fragment(ctx); // can never throw exception success = !(FAILEDFLAG); REWIND(start); BACKTRACKING--; FAILEDFLAG = ANTLR3_FALSE; return success; } static ANTLR3_BOOLEAN synpred17_belle_sdp(pbelle_sdpParser ctx) { ANTLR3_MARKER start; ANTLR3_BOOLEAN success; BACKTRACKING++; start = MARK(); synpred17_belle_sdp_fragment(ctx); // can never throw exception success = !(FAILEDFLAG); REWIND(start); BACKTRACKING--; FAILEDFLAG = ANTLR3_FALSE; return success; } static ANTLR3_BOOLEAN synpred14_belle_sdp(pbelle_sdpParser ctx) { ANTLR3_MARKER start; ANTLR3_BOOLEAN success; BACKTRACKING++; start = MARK(); synpred14_belle_sdp_fragment(ctx); // can never throw exception success = !(FAILEDFLAG); REWIND(start); BACKTRACKING--; FAILEDFLAG = ANTLR3_FALSE; return success; } static ANTLR3_BOOLEAN synpred2_belle_sdp(pbelle_sdpParser ctx) { ANTLR3_MARKER start; ANTLR3_BOOLEAN success; BACKTRACKING++; start = MARK(); synpred2_belle_sdp_fragment(ctx); // can never throw exception success = !(FAILEDFLAG); REWIND(start); BACKTRACKING--; FAILEDFLAG = ANTLR3_FALSE; return success; } static ANTLR3_BOOLEAN synpred19_belle_sdp(pbelle_sdpParser ctx) { ANTLR3_MARKER start; ANTLR3_BOOLEAN success; BACKTRACKING++; start = MARK(); synpred19_belle_sdp_fragment(ctx); // can never throw exception success = !(FAILEDFLAG); REWIND(start); BACKTRACKING--; FAILEDFLAG = ANTLR3_FALSE; return success; } static ANTLR3_BOOLEAN synpred7_belle_sdp(pbelle_sdpParser ctx) { ANTLR3_MARKER start; ANTLR3_BOOLEAN success; BACKTRACKING++; start = MARK(); synpred7_belle_sdp_fragment(ctx); // can never throw exception success = !(FAILEDFLAG); REWIND(start); BACKTRACKING--; FAILEDFLAG = ANTLR3_FALSE; return success; } static ANTLR3_BOOLEAN synpred20_belle_sdp(pbelle_sdpParser ctx) { ANTLR3_MARKER start; ANTLR3_BOOLEAN success; BACKTRACKING++; start = MARK(); synpred20_belle_sdp_fragment(ctx); // can never throw exception success = !(FAILEDFLAG); REWIND(start); BACKTRACKING--; FAILEDFLAG = ANTLR3_FALSE; return success; } static ANTLR3_BOOLEAN synpred8_belle_sdp(pbelle_sdpParser ctx) { ANTLR3_MARKER start; ANTLR3_BOOLEAN success; BACKTRACKING++; start = MARK(); synpred8_belle_sdp_fragment(ctx); // can never throw exception success = !(FAILEDFLAG); REWIND(start); BACKTRACKING--; FAILEDFLAG = ANTLR3_FALSE; return success; } static ANTLR3_BOOLEAN synpred24_belle_sdp(pbelle_sdpParser ctx) { ANTLR3_MARKER start; ANTLR3_BOOLEAN success; BACKTRACKING++; start = MARK(); synpred24_belle_sdp_fragment(ctx); // can never throw exception success = !(FAILEDFLAG); REWIND(start); BACKTRACKING--; FAILEDFLAG = ANTLR3_FALSE; return success; } static ANTLR3_BOOLEAN synpred11_belle_sdp(pbelle_sdpParser ctx) { ANTLR3_MARKER start; ANTLR3_BOOLEAN success; BACKTRACKING++; start = MARK(); synpred11_belle_sdp_fragment(ctx); // can never throw exception success = !(FAILEDFLAG); REWIND(start); BACKTRACKING--; FAILEDFLAG = ANTLR3_FALSE; return success; } static ANTLR3_BOOLEAN synpred22_belle_sdp(pbelle_sdpParser ctx) { ANTLR3_MARKER start; ANTLR3_BOOLEAN success; BACKTRACKING++; start = MARK(); synpred22_belle_sdp_fragment(ctx); // can never throw exception success = !(FAILEDFLAG); REWIND(start); BACKTRACKING--; FAILEDFLAG = ANTLR3_FALSE; return success; } static ANTLR3_BOOLEAN synpred15_belle_sdp(pbelle_sdpParser ctx) { ANTLR3_MARKER start; ANTLR3_BOOLEAN success; BACKTRACKING++; start = MARK(); synpred15_belle_sdp_fragment(ctx); // can never throw exception success = !(FAILEDFLAG); REWIND(start); BACKTRACKING--; FAILEDFLAG = ANTLR3_FALSE; return success; } static ANTLR3_BOOLEAN synpred16_belle_sdp(pbelle_sdpParser ctx) { ANTLR3_MARKER start; ANTLR3_BOOLEAN success; BACKTRACKING++; start = MARK(); synpred16_belle_sdp_fragment(ctx); // can never throw exception success = !(FAILEDFLAG); REWIND(start); BACKTRACKING--; FAILEDFLAG = ANTLR3_FALSE; return success; } static ANTLR3_BOOLEAN synpred21_belle_sdp(pbelle_sdpParser ctx) { ANTLR3_MARKER start; ANTLR3_BOOLEAN success; BACKTRACKING++; start = MARK(); synpred21_belle_sdp_fragment(ctx); // can never throw exception success = !(FAILEDFLAG); REWIND(start); BACKTRACKING--; FAILEDFLAG = ANTLR3_FALSE; return success; } static ANTLR3_BOOLEAN synpred3_belle_sdp(pbelle_sdpParser ctx) { ANTLR3_MARKER start; ANTLR3_BOOLEAN success; BACKTRACKING++; start = MARK(); synpred3_belle_sdp_fragment(ctx); // can never throw exception success = !(FAILEDFLAG); REWIND(start); BACKTRACKING--; FAILEDFLAG = ANTLR3_FALSE; return success; } static ANTLR3_BOOLEAN synpred6_belle_sdp(pbelle_sdpParser ctx) { ANTLR3_MARKER start; ANTLR3_BOOLEAN success; BACKTRACKING++; start = MARK(); synpred6_belle_sdp_fragment(ctx); // can never throw exception success = !(FAILEDFLAG); REWIND(start); BACKTRACKING--; FAILEDFLAG = ANTLR3_FALSE; return success; } static ANTLR3_BOOLEAN synpred18_belle_sdp(pbelle_sdpParser ctx) { ANTLR3_MARKER start; ANTLR3_BOOLEAN success; BACKTRACKING++; start = MARK(); synpred18_belle_sdp_fragment(ctx); // can never throw exception success = !(FAILEDFLAG); REWIND(start); BACKTRACKING--; FAILEDFLAG = ANTLR3_FALSE; return success; } static ANTLR3_BOOLEAN synpred1_belle_sdp(pbelle_sdpParser ctx) { ANTLR3_MARKER start; ANTLR3_BOOLEAN success; BACKTRACKING++; start = MARK(); synpred1_belle_sdp_fragment(ctx); // can never throw exception success = !(FAILEDFLAG); REWIND(start); BACKTRACKING--; FAILEDFLAG = ANTLR3_FALSE; return success; } static ANTLR3_BOOLEAN synpred13_belle_sdp(pbelle_sdpParser ctx) { ANTLR3_MARKER start; ANTLR3_BOOLEAN success; BACKTRACKING++; start = MARK(); synpred13_belle_sdp_fragment(ctx); // can never throw exception success = !(FAILEDFLAG); REWIND(start); BACKTRACKING--; FAILEDFLAG = ANTLR3_FALSE; return success; } /* End of syntactic predicates * ============================================== */ /* End of code * ============================================================================= */ belle-sip-5.2.0+dfsg/src/grammars/belle_sdpParser.h000066400000000000000000002367571434613136500222220ustar00rootroot00000000000000/** \file * This C header file was generated by $ANTLR version 3.4 * * - From the grammar source file : ../grammars/belle_sdp.g * - On : 2021-05-13 15:53:02 * - for the parser : belle_sdpParserParser * * Editing it, at least manually, is not wise. * * C language generator and runtime by Jim Idle, jimi|hereisanat|idle|dotgoeshere|ws. * * * The parser belle_sdpParser has the callable functions (rules) shown below, * which will invoke the code for the associated rule in the source grammar * assuming that the input stream is pointing to a token/text stream that could begin * this rule. * * For instance if you call the first (topmost) rule in a parser grammar, you will * get the results of a full parse, but calling a rule half way through the grammar will * allow you to pass part of a full token stream to the parser, such as for syntax checking * in editors and so on. * * The parser entry points are called indirectly (by function pointer to function) via * a parser context typedef pbelle_sdpParser, which is returned from a call to belle_sdpParserNew(). * * The methods in pbelle_sdpParser are as follows: * * - belle_sdpParser_session_description_return pbelle_sdpParser->session_description(pbelle_sdpParser) * - belle_sdpParser_version_return pbelle_sdpParser->version(pbelle_sdpParser) * - belle_sdpParser_origin_return pbelle_sdpParser->origin(pbelle_sdpParser) * - belle_sdpParser_session_name_return pbelle_sdpParser->session_name(pbelle_sdpParser) * - belle_sdpParser_info_return pbelle_sdpParser->info(pbelle_sdpParser) * - belle_sdpParser_info_value_return pbelle_sdpParser->info_value(pbelle_sdpParser) * - belle_sdpParser_uri_field_return pbelle_sdpParser->uri_field(pbelle_sdpParser) * - belle_sdpParser_email_return pbelle_sdpParser->email(pbelle_sdpParser) * - belle_sdpParser_phone_field_return pbelle_sdpParser->phone_field(pbelle_sdpParser) * - belle_sdpParser_connection_return pbelle_sdpParser->connection(pbelle_sdpParser) * - belle_sdpParser_bandwidth_return pbelle_sdpParser->bandwidth(pbelle_sdpParser) * - belle_sdpParser_time_field_return pbelle_sdpParser->time_field(pbelle_sdpParser) * - belle_sdpParser_repeat_time_return pbelle_sdpParser->repeat_time(pbelle_sdpParser) * - belle_sdpParser_zone_adjustments_return pbelle_sdpParser->zone_adjustments(pbelle_sdpParser) * - belle_sdpParser_key_field_return pbelle_sdpParser->key_field(pbelle_sdpParser) * - belle_sdpParser_key_value_return pbelle_sdpParser->key_value(pbelle_sdpParser) * - belle_sdpParser_attribute_return pbelle_sdpParser->attribute(pbelle_sdpParser) * - belle_sdpParser_attribute_content_return pbelle_sdpParser->attribute_content(pbelle_sdpParser) * - belle_sdpParser_rtcp_xr_attribute_return pbelle_sdpParser->rtcp_xr_attribute(pbelle_sdpParser) * - belle_sdpParser_rtcp_xr_attribute_value_return pbelle_sdpParser->rtcp_xr_attribute_value(pbelle_sdpParser) * - belle_sdpParser_pkt_loss_rle_return pbelle_sdpParser->pkt_loss_rle(pbelle_sdpParser) * - belle_sdpParser_pkt_dup_rle_return pbelle_sdpParser->pkt_dup_rle(pbelle_sdpParser) * - belle_sdpParser_pkt_rcpt_times_return pbelle_sdpParser->pkt_rcpt_times(pbelle_sdpParser) * - belle_sdpParser_rcvr_rtt_return pbelle_sdpParser->rcvr_rtt(pbelle_sdpParser) * - belle_sdpParser_stat_summary_return pbelle_sdpParser->stat_summary(pbelle_sdpParser) * - belle_sdpParser_voip_metrics_return pbelle_sdpParser->voip_metrics(pbelle_sdpParser) * - belle_sdpParser_rtcp_xr_stat_summary_flag_return pbelle_sdpParser->rtcp_xr_stat_summary_flag(pbelle_sdpParser) * - belle_sdpParser_rtcp_xr_max_size_return pbelle_sdpParser->rtcp_xr_max_size(pbelle_sdpParser) * - belle_sdpParser_rtcp_fb_attribute_return pbelle_sdpParser->rtcp_fb_attribute(pbelle_sdpParser) * - belle_sdpParser_rtcp_fb_pt_return pbelle_sdpParser->rtcp_fb_pt(pbelle_sdpParser) * - belle_sdpParser_rtcp_fb_val_return pbelle_sdpParser->rtcp_fb_val(pbelle_sdpParser) * - belle_sdpParser_rtcp_fb_ack_val_return pbelle_sdpParser->rtcp_fb_ack_val(pbelle_sdpParser) * - belle_sdpParser_rtcp_fb_nack_val_return pbelle_sdpParser->rtcp_fb_nack_val(pbelle_sdpParser) * - belle_sdpParser_rtcp_fb_trr_int_val_return pbelle_sdpParser->rtcp_fb_trr_int_val(pbelle_sdpParser) * - belle_sdpParser_rtcp_fb_ccm_val_return pbelle_sdpParser->rtcp_fb_ccm_val(pbelle_sdpParser) * - belle_sdpParser_rtcp_fb_id_val_return pbelle_sdpParser->rtcp_fb_id_val(pbelle_sdpParser) * - belle_sdpParser_rtcp_fb_param_return pbelle_sdpParser->rtcp_fb_param(pbelle_sdpParser) * - belle_sdpParser_rtcp_fb_ack_param_return pbelle_sdpParser->rtcp_fb_ack_param(pbelle_sdpParser) * - belle_sdpParser_rtcp_fb_nack_param_return pbelle_sdpParser->rtcp_fb_nack_param(pbelle_sdpParser) * - belle_sdpParser_rtcp_fb_pli_param_return pbelle_sdpParser->rtcp_fb_pli_param(pbelle_sdpParser) * - belle_sdpParser_rtcp_fb_sli_param_return pbelle_sdpParser->rtcp_fb_sli_param(pbelle_sdpParser) * - belle_sdpParser_rtcp_fb_rpsi_param_return pbelle_sdpParser->rtcp_fb_rpsi_param(pbelle_sdpParser) * - belle_sdpParser_rtcp_fb_app_param_return pbelle_sdpParser->rtcp_fb_app_param(pbelle_sdpParser) * - belle_sdpParser_rtcp_fb_ccm_param_return pbelle_sdpParser->rtcp_fb_ccm_param(pbelle_sdpParser) * - belle_sdpParser_rtcp_fb_fir_param_return pbelle_sdpParser->rtcp_fb_fir_param(pbelle_sdpParser) * - belle_sdpParser_rtcp_fb_tmmbr_param_return pbelle_sdpParser->rtcp_fb_tmmbr_param(pbelle_sdpParser) * - belle_sdpParser_rtcp_fb_tmmbr_smaxpr_param_return pbelle_sdpParser->rtcp_fb_tmmbr_smaxpr_param(pbelle_sdpParser) * - belle_sdpParser_rtcp_fb_tmmbr_smaxpr_return pbelle_sdpParser->rtcp_fb_tmmbr_smaxpr(pbelle_sdpParser) * - belle_sdpParser_rtcp_fb_token_param_return pbelle_sdpParser->rtcp_fb_token_param(pbelle_sdpParser) * - belle_sdpParser_media_description_return pbelle_sdpParser->media_description(pbelle_sdpParser) * - belle_sdpParser_media_return pbelle_sdpParser->media(pbelle_sdpParser) * - belle_sdpParser_media_value_return pbelle_sdpParser->media_value(pbelle_sdpParser) * - belle_sdpParser_fmt_return pbelle_sdpParser->fmt(pbelle_sdpParser) * - belle_sdpParser_proto_return pbelle_sdpParser->proto(pbelle_sdpParser) * - belle_sdpParser_port_return pbelle_sdpParser->port(pbelle_sdpParser) * - belle_sdpParser_attribute_name_return pbelle_sdpParser->attribute_name(pbelle_sdpParser) * - belle_sdpParser_attribute_value_return pbelle_sdpParser->attribute_value(pbelle_sdpParser) * - belle_sdpParser_rtcp_xr_attribute_name_return pbelle_sdpParser->rtcp_xr_attribute_name(pbelle_sdpParser) * - belle_sdpParser_rtcp_xr_rcvr_rtt_mode_return pbelle_sdpParser->rtcp_xr_rcvr_rtt_mode(pbelle_sdpParser) * - belle_sdpParser_rtcp_xr_stat_summary_flag_value_return pbelle_sdpParser->rtcp_xr_stat_summary_flag_value(pbelle_sdpParser) * - belle_sdpParser_rtcp_fb_attribute_name_return pbelle_sdpParser->rtcp_fb_attribute_name(pbelle_sdpParser) * - belle_sdpParser_sess_id_return pbelle_sdpParser->sess_id(pbelle_sdpParser) * - belle_sdpParser_sess_version_return pbelle_sdpParser->sess_version(pbelle_sdpParser) * - belle_sdpParser_connection_address_return pbelle_sdpParser->connection_address(pbelle_sdpParser) * - belle_sdpParser_multicast_address_return pbelle_sdpParser->multicast_address(pbelle_sdpParser) * - belle_sdpParser_ttl_return pbelle_sdpParser->ttl(pbelle_sdpParser) * - belle_sdpParser_start_time_return pbelle_sdpParser->start_time(pbelle_sdpParser) * - belle_sdpParser_stop_time_return pbelle_sdpParser->stop_time(pbelle_sdpParser) * - belle_sdpParser_sdp_time_return pbelle_sdpParser->sdp_time(pbelle_sdpParser) * - belle_sdpParser_repeat_interval_return pbelle_sdpParser->repeat_interval(pbelle_sdpParser) * - belle_sdpParser_typed_time_return pbelle_sdpParser->typed_time(pbelle_sdpParser) * - belle_sdpParser_fixed_len_time_unit_return pbelle_sdpParser->fixed_len_time_unit(pbelle_sdpParser) * - belle_sdpParser_bwtype_return pbelle_sdpParser->bwtype(pbelle_sdpParser) * - belle_sdpParser_bandwidth_value_return pbelle_sdpParser->bandwidth_value(pbelle_sdpParser) * - belle_sdpParser_username_return pbelle_sdpParser->username(pbelle_sdpParser) * - belle_sdpParser_email_address_return pbelle_sdpParser->email_address(pbelle_sdpParser) * - belle_sdpParser_uri_return pbelle_sdpParser->uri(pbelle_sdpParser) * - belle_sdpParser_phone_number_return pbelle_sdpParser->phone_number(pbelle_sdpParser) * - belle_sdpParser_phone_return pbelle_sdpParser->phone(pbelle_sdpParser) * - belle_sdpParser_nettype_return pbelle_sdpParser->nettype(pbelle_sdpParser) * - belle_sdpParser_addrtype_return pbelle_sdpParser->addrtype(pbelle_sdpParser) * - belle_sdpParser_addr_return pbelle_sdpParser->addr(pbelle_sdpParser) * - belle_sdpParser_multicast_part_return pbelle_sdpParser->multicast_part(pbelle_sdpParser) * - belle_sdpParser_fqdn_return pbelle_sdpParser->fqdn(pbelle_sdpParser) * - belle_sdpParser_domainlabel_return pbelle_sdpParser->domainlabel(pbelle_sdpParser) * - belle_sdpParser_toplabel_return pbelle_sdpParser->toplabel(pbelle_sdpParser) * - belle_sdpParser_unicast_address_return pbelle_sdpParser->unicast_address(pbelle_sdpParser) * - belle_sdpParser_ipv4_address_return pbelle_sdpParser->ipv4_address(pbelle_sdpParser) * - belle_sdpParser_ipv6_address_return pbelle_sdpParser->ipv6_address(pbelle_sdpParser) * - belle_sdpParser_hexpart_return pbelle_sdpParser->hexpart(pbelle_sdpParser) * - belle_sdpParser_hexseq_return pbelle_sdpParser->hexseq(pbelle_sdpParser) * - belle_sdpParser_hex4_return pbelle_sdpParser->hex4(pbelle_sdpParser) * - belle_sdpParser_text_return pbelle_sdpParser->text(pbelle_sdpParser) * - belle_sdpParser_byte_string_return pbelle_sdpParser->byte_string(pbelle_sdpParser) * - belle_sdpParser_decimal_uchar_return pbelle_sdpParser->decimal_uchar(pbelle_sdpParser) * - belle_sdpParser_integer_return pbelle_sdpParser->integer(pbelle_sdpParser) * - belle_sdpParser_email_safe_return pbelle_sdpParser->email_safe(pbelle_sdpParser) * - belle_sdpParser_token_return pbelle_sdpParser->token(pbelle_sdpParser) * - belle_sdpParser_alpha_num_return pbelle_sdpParser->alpha_num(pbelle_sdpParser) * - belle_sdpParser_hexdigit_return pbelle_sdpParser->hexdigit(pbelle_sdpParser) * - belle_sdpParser_word_return pbelle_sdpParser->word(pbelle_sdpParser) * - belle_sdpParser_alpha_return pbelle_sdpParser->alpha(pbelle_sdpParser) * * * * * * * * * * * * * * * * * * * * * * * * * * * The return type for any particular rule is of course determined by the source * grammar file. */ // [The "BSD license"] // Copyright (c) 2005-2009 Jim Idle, Temporal Wave LLC // http://www.temporal-wave.com // http://www.linkedin.com/in/jimidle // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // 1. Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // 2. Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // 3. The name of the author may not be used to endorse or promote products // derived from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR // IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES // OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT // NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF // THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef _belle_sdpParser_H #define _belle_sdpParser_H /* ============================================================================= * Standard antlr3 C runtime definitions */ #include /* End of standard antlr 3 runtime definitions * ============================================================================= */ #include "belle-sip/defs.h" #include "belle-sip/types.h" #include "belle-sip/belle-sdp.h" #include "parserutils.h" #ifdef __cplusplus extern "C" { #endif // Forward declare the context typedef so that we can use it before it is // properly defined. Delegators and delegates (from import statements) are // interdependent and their context structures contain pointers to each other // C only allows such things to be declared if you pre-declare the typedef. // typedef struct belle_sdpParser_Ctx_struct belle_sdpParser, * pbelle_sdpParser; /* belle-sip - SIP (RFC3261) library. Copyright (C) 2010 Belledonne Communications SARL This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #pragma GCC diagnostic ignored "-Wparentheses" #pragma GCC diagnostic ignored "-Wunused" #ifndef __clang__ #pragma GCC diagnostic ignored "-Wunused-but-set-variable" #pragma GCC diagnostic ignored "-Wunused-variable" #pragma GCC diagnostic ignored "-Wunused-function" #endif #ifdef ANTLR3_WINDOWS // Disable: Unreferenced parameter, - Rules with parameters that are not used // constant conditional, - ANTLR realizes that a prediction is always true (synpred usually) // initialized but unused variable - tree rewrite variables declared but not needed // Unreferenced local variable - lexer rule declares but does not always use _type // potentially unitialized variable used - retval always returned from a rule // unreferenced local function has been removed - susually getTokenNames or freeScope, they can go without warnigns // // These are only really displayed at warning level /W4 but that is the code ideal I am aiming at // and the codegen must generate some of these warnings by necessity, apart from 4100, which is // usually generated when a parser rule is given a parameter that it does not use. Mostly though // this is a matter of orthogonality hence I disable that one. // #pragma warning( disable : 4100 ) #pragma warning( disable : 4101 ) #pragma warning( disable : 4127 ) #pragma warning( disable : 4189 ) #pragma warning( disable : 4505 ) #pragma warning( disable : 4701 ) #endif /* ======================== * BACKTRACKING IS ENABLED * ======================== */ typedef struct belle_sdpParser_session_description_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; belle_sdp_session_description_t* ret; } belle_sdpParser_session_description_return; typedef struct belle_sdpParser_version_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_version_return; typedef struct belle_sdpParser_origin_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; belle_sdp_origin_t* ret; } belle_sdpParser_origin_return; typedef struct belle_sdpParser_session_name_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_session_name_return; typedef struct belle_sdpParser_info_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; belle_sdp_info_t* ret; } belle_sdpParser_info_return; typedef struct belle_sdpParser_info_value_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_info_value_return; typedef struct belle_sdpParser_uri_field_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_uri_field_return; typedef struct belle_sdpParser_email_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; belle_sdp_email_t* ret; } belle_sdpParser_email_return; typedef struct belle_sdpParser_phone_field_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_phone_field_return; typedef struct belle_sdpParser_connection_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; belle_sdp_connection_t* ret; } belle_sdpParser_connection_return; typedef struct belle_sdpParser_bandwidth_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; belle_sdp_bandwidth_t* ret; } belle_sdpParser_bandwidth_return; typedef struct belle_sdpParser_time_field_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_time_field_return; typedef struct belle_sdpParser_repeat_time_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_repeat_time_return; typedef struct belle_sdpParser_zone_adjustments_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_zone_adjustments_return; typedef struct belle_sdpParser_key_field_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_key_field_return; typedef struct belle_sdpParser_key_value_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_key_value_return; typedef struct belle_sdpParser_attribute_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; belle_sdp_attribute_t* ret; } belle_sdpParser_attribute_return; typedef struct belle_sdpParser_attribute_content_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; belle_sdp_attribute_t* ret; } belle_sdpParser_attribute_content_return; typedef struct belle_sdpParser_rtcp_xr_attribute_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; belle_sdp_rtcp_xr_attribute_t* ret; } belle_sdpParser_rtcp_xr_attribute_return; typedef struct belle_sdpParser_rtcp_xr_attribute_value_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_rtcp_xr_attribute_value_return; typedef struct belle_sdpParser_pkt_loss_rle_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_pkt_loss_rle_return; typedef struct belle_sdpParser_pkt_dup_rle_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_pkt_dup_rle_return; typedef struct belle_sdpParser_pkt_rcpt_times_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_pkt_rcpt_times_return; typedef struct belle_sdpParser_rcvr_rtt_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_rcvr_rtt_return; typedef struct belle_sdpParser_stat_summary_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_stat_summary_return; typedef struct belle_sdpParser_voip_metrics_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_voip_metrics_return; typedef struct belle_sdpParser_rtcp_xr_stat_summary_flag_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_rtcp_xr_stat_summary_flag_return; typedef struct belle_sdpParser_rtcp_xr_max_size_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_rtcp_xr_max_size_return; typedef struct belle_sdpParser_rtcp_fb_attribute_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; belle_sdp_rtcp_fb_attribute_t* ret; } belle_sdpParser_rtcp_fb_attribute_return; typedef struct belle_sdpParser_rtcp_fb_pt_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_rtcp_fb_pt_return; typedef struct belle_sdpParser_rtcp_fb_val_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_rtcp_fb_val_return; typedef struct belle_sdpParser_rtcp_fb_ack_val_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_rtcp_fb_ack_val_return; typedef struct belle_sdpParser_rtcp_fb_nack_val_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_rtcp_fb_nack_val_return; typedef struct belle_sdpParser_rtcp_fb_trr_int_val_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_rtcp_fb_trr_int_val_return; typedef struct belle_sdpParser_rtcp_fb_ccm_val_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_rtcp_fb_ccm_val_return; typedef struct belle_sdpParser_rtcp_fb_id_val_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_rtcp_fb_id_val_return; typedef struct belle_sdpParser_rtcp_fb_param_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_rtcp_fb_param_return; typedef struct belle_sdpParser_rtcp_fb_ack_param_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_rtcp_fb_ack_param_return; typedef struct belle_sdpParser_rtcp_fb_nack_param_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_rtcp_fb_nack_param_return; typedef struct belle_sdpParser_rtcp_fb_pli_param_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_rtcp_fb_pli_param_return; typedef struct belle_sdpParser_rtcp_fb_sli_param_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_rtcp_fb_sli_param_return; typedef struct belle_sdpParser_rtcp_fb_rpsi_param_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_rtcp_fb_rpsi_param_return; typedef struct belle_sdpParser_rtcp_fb_app_param_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_rtcp_fb_app_param_return; typedef struct belle_sdpParser_rtcp_fb_ccm_param_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_rtcp_fb_ccm_param_return; typedef struct belle_sdpParser_rtcp_fb_fir_param_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_rtcp_fb_fir_param_return; typedef struct belle_sdpParser_rtcp_fb_tmmbr_param_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_rtcp_fb_tmmbr_param_return; typedef struct belle_sdpParser_rtcp_fb_tmmbr_smaxpr_param_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_rtcp_fb_tmmbr_smaxpr_param_return; typedef struct belle_sdpParser_rtcp_fb_tmmbr_smaxpr_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_rtcp_fb_tmmbr_smaxpr_return; typedef struct belle_sdpParser_rtcp_fb_token_param_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_rtcp_fb_token_param_return; typedef struct belle_sdpParser_media_description_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; belle_sdp_media_description_t* ret; } belle_sdpParser_media_description_return; typedef struct belle_sdpParser_media_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; belle_sdp_media_t* ret; } belle_sdpParser_media_return; typedef struct belle_sdpParser_media_value_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_media_value_return; typedef struct belle_sdpParser_fmt_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_fmt_return; typedef struct belle_sdpParser_proto_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_proto_return; typedef struct belle_sdpParser_port_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_port_return; typedef struct belle_sdpParser_attribute_name_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_attribute_name_return; typedef struct belle_sdpParser_attribute_value_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_attribute_value_return; typedef struct belle_sdpParser_rtcp_xr_attribute_name_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_rtcp_xr_attribute_name_return; typedef struct belle_sdpParser_rtcp_xr_rcvr_rtt_mode_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_rtcp_xr_rcvr_rtt_mode_return; typedef struct belle_sdpParser_rtcp_xr_stat_summary_flag_value_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_rtcp_xr_stat_summary_flag_value_return; typedef struct belle_sdpParser_rtcp_fb_attribute_name_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_rtcp_fb_attribute_name_return; typedef struct belle_sdpParser_sess_id_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_sess_id_return; typedef struct belle_sdpParser_sess_version_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_sess_version_return; typedef struct belle_sdpParser_connection_address_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_connection_address_return; typedef struct belle_sdpParser_multicast_address_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_multicast_address_return; typedef struct belle_sdpParser_ttl_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_ttl_return; typedef struct belle_sdpParser_start_time_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_start_time_return; typedef struct belle_sdpParser_stop_time_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_stop_time_return; typedef struct belle_sdpParser_sdp_time_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_sdp_time_return; typedef struct belle_sdpParser_repeat_interval_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_repeat_interval_return; typedef struct belle_sdpParser_typed_time_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_typed_time_return; typedef struct belle_sdpParser_fixed_len_time_unit_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_fixed_len_time_unit_return; typedef struct belle_sdpParser_bwtype_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_bwtype_return; typedef struct belle_sdpParser_bandwidth_value_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_bandwidth_value_return; typedef struct belle_sdpParser_username_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_username_return; typedef struct belle_sdpParser_email_address_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_email_address_return; typedef struct belle_sdpParser_uri_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_uri_return; typedef struct belle_sdpParser_phone_number_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_phone_number_return; typedef struct belle_sdpParser_phone_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_phone_return; typedef struct belle_sdpParser_nettype_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_nettype_return; typedef struct belle_sdpParser_addrtype_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_addrtype_return; typedef struct belle_sdpParser_addr_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_addr_return; typedef struct belle_sdpParser_multicast_part_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_multicast_part_return; typedef struct belle_sdpParser_fqdn_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_fqdn_return; typedef struct belle_sdpParser_domainlabel_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_domainlabel_return; typedef struct belle_sdpParser_toplabel_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_toplabel_return; typedef struct belle_sdpParser_unicast_address_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_unicast_address_return; typedef struct belle_sdpParser_ipv4_address_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_ipv4_address_return; typedef struct belle_sdpParser_ipv6_address_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_ipv6_address_return; typedef struct belle_sdpParser_hexpart_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_hexpart_return; typedef struct belle_sdpParser_hexseq_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_hexseq_return; typedef struct belle_sdpParser_hex4_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_hex4_return; typedef struct belle_sdpParser_text_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_text_return; typedef struct belle_sdpParser_byte_string_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_byte_string_return; typedef struct belle_sdpParser_decimal_uchar_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_decimal_uchar_return; typedef struct belle_sdpParser_integer_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_integer_return; typedef struct belle_sdpParser_email_safe_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_email_safe_return; typedef struct belle_sdpParser_token_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_token_return; typedef struct belle_sdpParser_alpha_num_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_alpha_num_return; typedef struct belle_sdpParser_hexdigit_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_hexdigit_return; typedef struct belle_sdpParser_word_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_word_return; typedef struct belle_sdpParser_alpha_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; pANTLR3_BASE_TREE tree; } belle_sdpParser_alpha_return; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the session_description scope variable tracking * structure. An instance of this structure is created by calling * belle_sdpParser_session_descriptionPush(). */ typedef struct belle_sdpParser_session_description_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sdpParser_session_description_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_sdp_session_description_t* current; /* End of programmer defined variables * ============================================================================= */ } belle_sdpParser_session_description_SCOPE, * pbelle_sdpParser_session_description_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the origin scope variable tracking * structure. An instance of this structure is created by calling * belle_sdpParser_originPush(). */ typedef struct belle_sdpParser_origin_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sdpParser_origin_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_sdp_origin_t* current; /* End of programmer defined variables * ============================================================================= */ } belle_sdpParser_origin_SCOPE, * pbelle_sdpParser_origin_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the info scope variable tracking * structure. An instance of this structure is created by calling * belle_sdpParser_infoPush(). */ typedef struct belle_sdpParser_info_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sdpParser_info_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_sdp_info_t* current; /* End of programmer defined variables * ============================================================================= */ } belle_sdpParser_info_SCOPE, * pbelle_sdpParser_info_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the email scope variable tracking * structure. An instance of this structure is created by calling * belle_sdpParser_emailPush(). */ typedef struct belle_sdpParser_email_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sdpParser_email_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_sdp_email_t* current; /* End of programmer defined variables * ============================================================================= */ } belle_sdpParser_email_SCOPE, * pbelle_sdpParser_email_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the connection scope variable tracking * structure. An instance of this structure is created by calling * belle_sdpParser_connectionPush(). */ typedef struct belle_sdpParser_connection_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sdpParser_connection_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_sdp_connection_t* current; /* End of programmer defined variables * ============================================================================= */ } belle_sdpParser_connection_SCOPE, * pbelle_sdpParser_connection_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the bandwidth scope variable tracking * structure. An instance of this structure is created by calling * belle_sdpParser_bandwidthPush(). */ typedef struct belle_sdpParser_bandwidth_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sdpParser_bandwidth_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_sdp_bandwidth_t* current; /* End of programmer defined variables * ============================================================================= */ } belle_sdpParser_bandwidth_SCOPE, * pbelle_sdpParser_bandwidth_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the attribute scope variable tracking * structure. An instance of this structure is created by calling * belle_sdpParser_attributePush(). */ typedef struct belle_sdpParser_attribute_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sdpParser_attribute_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ int has_value; /* End of programmer defined variables * ============================================================================= */ } belle_sdpParser_attribute_SCOPE, * pbelle_sdpParser_attribute_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the rtcp_xr_attribute scope variable tracking * structure. An instance of this structure is created by calling * belle_sdpParser_rtcp_xr_attributePush(). */ typedef struct belle_sdpParser_rtcp_xr_attribute_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sdpParser_rtcp_xr_attribute_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_sdp_rtcp_xr_attribute_t* current; /* End of programmer defined variables * ============================================================================= */ } belle_sdpParser_rtcp_xr_attribute_SCOPE, * pbelle_sdpParser_rtcp_xr_attribute_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the rtcp_fb_attribute scope variable tracking * structure. An instance of this structure is created by calling * belle_sdpParser_rtcp_fb_attributePush(). */ typedef struct belle_sdpParser_rtcp_fb_attribute_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sdpParser_rtcp_fb_attribute_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_sdp_rtcp_fb_attribute_t* current; /* End of programmer defined variables * ============================================================================= */ } belle_sdpParser_rtcp_fb_attribute_SCOPE, * pbelle_sdpParser_rtcp_fb_attribute_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the media_description scope variable tracking * structure. An instance of this structure is created by calling * belle_sdpParser_media_descriptionPush(). */ typedef struct belle_sdpParser_media_description_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sdpParser_media_description_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_sdp_media_description_t* current; /* End of programmer defined variables * ============================================================================= */ } belle_sdpParser_media_description_SCOPE, * pbelle_sdpParser_media_description_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the media scope variable tracking * structure. An instance of this structure is created by calling * belle_sdpParser_mediaPush(). */ typedef struct belle_sdpParser_media_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sdpParser_media_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_sdp_media_t* current; /* End of programmer defined variables * ============================================================================= */ } belle_sdpParser_media_SCOPE, * pbelle_sdpParser_media_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the fmt scope variable tracking * structure. An instance of this structure is created by calling * belle_sdpParser_fmtPush(). */ typedef struct belle_sdpParser_fmt_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sdpParser_fmt_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ int is_number; /* End of programmer defined variables * ============================================================================= */ } belle_sdpParser_fmt_SCOPE, * pbelle_sdpParser_fmt_SCOPE; /** Context tracking structure for belle_sdpParser */ struct belle_sdpParser_Ctx_struct { /** Built in ANTLR3 context tracker contains all the generic elements * required for context tracking. */ pANTLR3_PARSER pParser; /* ruleAttributeScopeDef(scope) */ /** Pointer to the session_description stack for use by pbelle_sdpParser_session_descriptionPush() * and pbelle_sdpParser_session_descriptionPop() */ pANTLR3_STACK pbelle_sdpParser_session_descriptionStack; ANTLR3_UINT32 pbelle_sdpParser_session_descriptionStack_limit; pbelle_sdpParser_session_description_SCOPE (*pbelle_sdpParser_session_descriptionPush)(struct belle_sdpParser_Ctx_struct * ctx); pbelle_sdpParser_session_description_SCOPE pbelle_sdpParser_session_descriptionTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the origin stack for use by pbelle_sdpParser_originPush() * and pbelle_sdpParser_originPop() */ pANTLR3_STACK pbelle_sdpParser_originStack; ANTLR3_UINT32 pbelle_sdpParser_originStack_limit; pbelle_sdpParser_origin_SCOPE (*pbelle_sdpParser_originPush)(struct belle_sdpParser_Ctx_struct * ctx); pbelle_sdpParser_origin_SCOPE pbelle_sdpParser_originTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the info stack for use by pbelle_sdpParser_infoPush() * and pbelle_sdpParser_infoPop() */ pANTLR3_STACK pbelle_sdpParser_infoStack; ANTLR3_UINT32 pbelle_sdpParser_infoStack_limit; pbelle_sdpParser_info_SCOPE (*pbelle_sdpParser_infoPush)(struct belle_sdpParser_Ctx_struct * ctx); pbelle_sdpParser_info_SCOPE pbelle_sdpParser_infoTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the email stack for use by pbelle_sdpParser_emailPush() * and pbelle_sdpParser_emailPop() */ pANTLR3_STACK pbelle_sdpParser_emailStack; ANTLR3_UINT32 pbelle_sdpParser_emailStack_limit; pbelle_sdpParser_email_SCOPE (*pbelle_sdpParser_emailPush)(struct belle_sdpParser_Ctx_struct * ctx); pbelle_sdpParser_email_SCOPE pbelle_sdpParser_emailTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the connection stack for use by pbelle_sdpParser_connectionPush() * and pbelle_sdpParser_connectionPop() */ pANTLR3_STACK pbelle_sdpParser_connectionStack; ANTLR3_UINT32 pbelle_sdpParser_connectionStack_limit; pbelle_sdpParser_connection_SCOPE (*pbelle_sdpParser_connectionPush)(struct belle_sdpParser_Ctx_struct * ctx); pbelle_sdpParser_connection_SCOPE pbelle_sdpParser_connectionTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the bandwidth stack for use by pbelle_sdpParser_bandwidthPush() * and pbelle_sdpParser_bandwidthPop() */ pANTLR3_STACK pbelle_sdpParser_bandwidthStack; ANTLR3_UINT32 pbelle_sdpParser_bandwidthStack_limit; pbelle_sdpParser_bandwidth_SCOPE (*pbelle_sdpParser_bandwidthPush)(struct belle_sdpParser_Ctx_struct * ctx); pbelle_sdpParser_bandwidth_SCOPE pbelle_sdpParser_bandwidthTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the attribute stack for use by pbelle_sdpParser_attributePush() * and pbelle_sdpParser_attributePop() */ pANTLR3_STACK pbelle_sdpParser_attributeStack; ANTLR3_UINT32 pbelle_sdpParser_attributeStack_limit; pbelle_sdpParser_attribute_SCOPE (*pbelle_sdpParser_attributePush)(struct belle_sdpParser_Ctx_struct * ctx); pbelle_sdpParser_attribute_SCOPE pbelle_sdpParser_attributeTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the rtcp_xr_attribute stack for use by pbelle_sdpParser_rtcp_xr_attributePush() * and pbelle_sdpParser_rtcp_xr_attributePop() */ pANTLR3_STACK pbelle_sdpParser_rtcp_xr_attributeStack; ANTLR3_UINT32 pbelle_sdpParser_rtcp_xr_attributeStack_limit; pbelle_sdpParser_rtcp_xr_attribute_SCOPE (*pbelle_sdpParser_rtcp_xr_attributePush)(struct belle_sdpParser_Ctx_struct * ctx); pbelle_sdpParser_rtcp_xr_attribute_SCOPE pbelle_sdpParser_rtcp_xr_attributeTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the rtcp_fb_attribute stack for use by pbelle_sdpParser_rtcp_fb_attributePush() * and pbelle_sdpParser_rtcp_fb_attributePop() */ pANTLR3_STACK pbelle_sdpParser_rtcp_fb_attributeStack; ANTLR3_UINT32 pbelle_sdpParser_rtcp_fb_attributeStack_limit; pbelle_sdpParser_rtcp_fb_attribute_SCOPE (*pbelle_sdpParser_rtcp_fb_attributePush)(struct belle_sdpParser_Ctx_struct * ctx); pbelle_sdpParser_rtcp_fb_attribute_SCOPE pbelle_sdpParser_rtcp_fb_attributeTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the media_description stack for use by pbelle_sdpParser_media_descriptionPush() * and pbelle_sdpParser_media_descriptionPop() */ pANTLR3_STACK pbelle_sdpParser_media_descriptionStack; ANTLR3_UINT32 pbelle_sdpParser_media_descriptionStack_limit; pbelle_sdpParser_media_description_SCOPE (*pbelle_sdpParser_media_descriptionPush)(struct belle_sdpParser_Ctx_struct * ctx); pbelle_sdpParser_media_description_SCOPE pbelle_sdpParser_media_descriptionTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the media stack for use by pbelle_sdpParser_mediaPush() * and pbelle_sdpParser_mediaPop() */ pANTLR3_STACK pbelle_sdpParser_mediaStack; ANTLR3_UINT32 pbelle_sdpParser_mediaStack_limit; pbelle_sdpParser_media_SCOPE (*pbelle_sdpParser_mediaPush)(struct belle_sdpParser_Ctx_struct * ctx); pbelle_sdpParser_media_SCOPE pbelle_sdpParser_mediaTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the fmt stack for use by pbelle_sdpParser_fmtPush() * and pbelle_sdpParser_fmtPop() */ pANTLR3_STACK pbelle_sdpParser_fmtStack; ANTLR3_UINT32 pbelle_sdpParser_fmtStack_limit; pbelle_sdpParser_fmt_SCOPE (*pbelle_sdpParser_fmtPush)(struct belle_sdpParser_Ctx_struct * ctx); pbelle_sdpParser_fmt_SCOPE pbelle_sdpParser_fmtTop; belle_sdpParser_session_description_return (*session_description) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_version_return (*version) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_origin_return (*origin) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_session_name_return (*session_name) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_info_return (*info) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_info_value_return (*info_value) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_uri_field_return (*uri_field) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_email_return (*email) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_phone_field_return (*phone_field) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_connection_return (*connection) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_bandwidth_return (*bandwidth) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_time_field_return (*time_field) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_repeat_time_return (*repeat_time) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_zone_adjustments_return (*zone_adjustments) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_key_field_return (*key_field) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_key_value_return (*key_value) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_attribute_return (*attribute) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_attribute_content_return (*attribute_content) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_rtcp_xr_attribute_return (*rtcp_xr_attribute) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_rtcp_xr_attribute_value_return (*rtcp_xr_attribute_value) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_pkt_loss_rle_return (*pkt_loss_rle) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_pkt_dup_rle_return (*pkt_dup_rle) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_pkt_rcpt_times_return (*pkt_rcpt_times) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_rcvr_rtt_return (*rcvr_rtt) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_stat_summary_return (*stat_summary) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_voip_metrics_return (*voip_metrics) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_rtcp_xr_stat_summary_flag_return (*rtcp_xr_stat_summary_flag) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_rtcp_xr_max_size_return (*rtcp_xr_max_size) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_rtcp_fb_attribute_return (*rtcp_fb_attribute) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_rtcp_fb_pt_return (*rtcp_fb_pt) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_rtcp_fb_val_return (*rtcp_fb_val) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_rtcp_fb_ack_val_return (*rtcp_fb_ack_val) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_rtcp_fb_nack_val_return (*rtcp_fb_nack_val) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_rtcp_fb_trr_int_val_return (*rtcp_fb_trr_int_val) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_rtcp_fb_ccm_val_return (*rtcp_fb_ccm_val) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_rtcp_fb_id_val_return (*rtcp_fb_id_val) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_rtcp_fb_param_return (*rtcp_fb_param) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_rtcp_fb_ack_param_return (*rtcp_fb_ack_param) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_rtcp_fb_nack_param_return (*rtcp_fb_nack_param) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_rtcp_fb_pli_param_return (*rtcp_fb_pli_param) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_rtcp_fb_sli_param_return (*rtcp_fb_sli_param) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_rtcp_fb_rpsi_param_return (*rtcp_fb_rpsi_param) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_rtcp_fb_app_param_return (*rtcp_fb_app_param) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_rtcp_fb_ccm_param_return (*rtcp_fb_ccm_param) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_rtcp_fb_fir_param_return (*rtcp_fb_fir_param) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_rtcp_fb_tmmbr_param_return (*rtcp_fb_tmmbr_param) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_rtcp_fb_tmmbr_smaxpr_param_return (*rtcp_fb_tmmbr_smaxpr_param) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_rtcp_fb_tmmbr_smaxpr_return (*rtcp_fb_tmmbr_smaxpr) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_rtcp_fb_token_param_return (*rtcp_fb_token_param) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_media_description_return (*media_description) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_media_return (*media) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_media_value_return (*media_value) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_fmt_return (*fmt) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_proto_return (*proto) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_port_return (*port) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_attribute_name_return (*attribute_name) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_attribute_value_return (*attribute_value) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_rtcp_xr_attribute_name_return (*rtcp_xr_attribute_name) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_rtcp_xr_rcvr_rtt_mode_return (*rtcp_xr_rcvr_rtt_mode) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_rtcp_xr_stat_summary_flag_value_return (*rtcp_xr_stat_summary_flag_value) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_rtcp_fb_attribute_name_return (*rtcp_fb_attribute_name) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_sess_id_return (*sess_id) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_sess_version_return (*sess_version) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_connection_address_return (*connection_address) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_multicast_address_return (*multicast_address) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_ttl_return (*ttl) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_start_time_return (*start_time) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_stop_time_return (*stop_time) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_sdp_time_return (*sdp_time) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_repeat_interval_return (*repeat_interval) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_typed_time_return (*typed_time) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_fixed_len_time_unit_return (*fixed_len_time_unit) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_bwtype_return (*bwtype) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_bandwidth_value_return (*bandwidth_value) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_username_return (*username) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_email_address_return (*email_address) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_uri_return (*uri) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_phone_number_return (*phone_number) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_phone_return (*phone) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_nettype_return (*nettype) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_addrtype_return (*addrtype) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_addr_return (*addr) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_multicast_part_return (*multicast_part) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_fqdn_return (*fqdn) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_domainlabel_return (*domainlabel) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_toplabel_return (*toplabel) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_unicast_address_return (*unicast_address) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_ipv4_address_return (*ipv4_address) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_ipv6_address_return (*ipv6_address) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_hexpart_return (*hexpart) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_hexseq_return (*hexseq) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_hex4_return (*hex4) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_text_return (*text) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_byte_string_return (*byte_string) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_decimal_uchar_return (*decimal_uchar) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_integer_return (*integer) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_email_safe_return (*email_safe) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_token_return (*token) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_alpha_num_return (*alpha_num) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_hexdigit_return (*hexdigit) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_word_return (*word) (struct belle_sdpParser_Ctx_struct * ctx); belle_sdpParser_alpha_return (*alpha) (struct belle_sdpParser_Ctx_struct * ctx); ANTLR3_BOOLEAN (*synpred1_belle_sdp) (struct belle_sdpParser_Ctx_struct * ctx); ANTLR3_BOOLEAN (*synpred2_belle_sdp) (struct belle_sdpParser_Ctx_struct * ctx); ANTLR3_BOOLEAN (*synpred3_belle_sdp) (struct belle_sdpParser_Ctx_struct * ctx); ANTLR3_BOOLEAN (*synpred4_belle_sdp) (struct belle_sdpParser_Ctx_struct * ctx); ANTLR3_BOOLEAN (*synpred5_belle_sdp) (struct belle_sdpParser_Ctx_struct * ctx); ANTLR3_BOOLEAN (*synpred6_belle_sdp) (struct belle_sdpParser_Ctx_struct * ctx); ANTLR3_BOOLEAN (*synpred7_belle_sdp) (struct belle_sdpParser_Ctx_struct * ctx); ANTLR3_BOOLEAN (*synpred8_belle_sdp) (struct belle_sdpParser_Ctx_struct * ctx); ANTLR3_BOOLEAN (*synpred9_belle_sdp) (struct belle_sdpParser_Ctx_struct * ctx); ANTLR3_BOOLEAN (*synpred10_belle_sdp) (struct belle_sdpParser_Ctx_struct * ctx); ANTLR3_BOOLEAN (*synpred11_belle_sdp) (struct belle_sdpParser_Ctx_struct * ctx); ANTLR3_BOOLEAN (*synpred12_belle_sdp) (struct belle_sdpParser_Ctx_struct * ctx); ANTLR3_BOOLEAN (*synpred13_belle_sdp) (struct belle_sdpParser_Ctx_struct * ctx); ANTLR3_BOOLEAN (*synpred14_belle_sdp) (struct belle_sdpParser_Ctx_struct * ctx); ANTLR3_BOOLEAN (*synpred15_belle_sdp) (struct belle_sdpParser_Ctx_struct * ctx); ANTLR3_BOOLEAN (*synpred16_belle_sdp) (struct belle_sdpParser_Ctx_struct * ctx); ANTLR3_BOOLEAN (*synpred17_belle_sdp) (struct belle_sdpParser_Ctx_struct * ctx); ANTLR3_BOOLEAN (*synpred18_belle_sdp) (struct belle_sdpParser_Ctx_struct * ctx); ANTLR3_BOOLEAN (*synpred19_belle_sdp) (struct belle_sdpParser_Ctx_struct * ctx); ANTLR3_BOOLEAN (*synpred20_belle_sdp) (struct belle_sdpParser_Ctx_struct * ctx); ANTLR3_BOOLEAN (*synpred21_belle_sdp) (struct belle_sdpParser_Ctx_struct * ctx); ANTLR3_BOOLEAN (*synpred22_belle_sdp) (struct belle_sdpParser_Ctx_struct * ctx); ANTLR3_BOOLEAN (*synpred23_belle_sdp) (struct belle_sdpParser_Ctx_struct * ctx); ANTLR3_BOOLEAN (*synpred24_belle_sdp) (struct belle_sdpParser_Ctx_struct * ctx); ANTLR3_BOOLEAN (*synpred25_belle_sdp) (struct belle_sdpParser_Ctx_struct * ctx); // Delegated rules const char * (*getGrammarFileName)(); void (*reset) (struct belle_sdpParser_Ctx_struct * ctx); void (*free) (struct belle_sdpParser_Ctx_struct * ctx); /* @headerFile.members() */ pANTLR3_BASE_TREE_ADAPTOR adaptor; pANTLR3_VECTOR_FACTORY vectors; /* End @headerFile.members() */ }; // Function protoypes for the constructor functions that external translation units // such as delegators and delegates may wish to call. // ANTLR3_API pbelle_sdpParser belle_sdpParserNew ( pANTLR3_COMMON_TOKEN_STREAM instream); ANTLR3_API pbelle_sdpParser belle_sdpParserNewSSD ( pANTLR3_COMMON_TOKEN_STREAM instream, pANTLR3_RECOGNIZER_SHARED_STATE state); /** Symbolic definitions of all the tokens that the parser will work with. * \{ * * Antlr will define EOF, but we can't use that as it it is too common in * in C header files and that would be confusing. There is no way to filter this out at the moment * so we just undef it here for now. That isn't the value we get back from C recognizers * anyway. We are looking for ANTLR3_TOKEN_EOF. */ #ifdef EOF #undef EOF #endif #ifdef Tokens #undef Tokens #endif #define EOF -1 #define T__22 22 #define T__23 23 #define T__24 24 #define T__25 25 #define T__26 26 #define T__27 27 #define T__28 28 #define T__29 29 #define T__30 30 #define T__31 31 #define T__32 32 #define T__33 33 #define T__34 34 #define T__35 35 #define COLON 4 #define COMMA 5 #define COMMON_CHAR 6 #define CR 7 #define DASH 8 #define DIGIT 9 #define DOT 10 #define EQUAL 11 #define HEX_CHAR 12 #define LF 13 #define LQUOTE 14 #define OCTET 15 #define POS_DIGIT 16 #define RQUOTE 17 #define SLASH 18 #define SPACE 19 #define STAR 20 #define ZERO 21 #ifdef EOF #undef EOF #define EOF ANTLR3_TOKEN_EOF #endif #ifndef TOKENSOURCE #define TOKENSOURCE(lxr) lxr->pLexer->rec->state->tokSource #endif /* End of token definitions for belle_sdpParser * ============================================================================= */ /** } */ #ifdef __cplusplus } #endif #endif /* END - Note:Keep extra line feed to satisfy UNIX systems */ belle-sip-5.2.0+dfsg/src/grammars/belle_sip_message.g000066400000000000000000002524031434613136500225370ustar00rootroot00000000000000/* belle-sip - SIP (RFC3261) library. Copyright (C) 2010 Belledonne Communications SARL This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ grammar belle_sip_message; options { language = C; } @parser::header { /* belle-sip - SIP (RFC3261) library. Copyright (C) 2010 Belledonne Communications SARL This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #pragma GCC diagnostic ignored "-Wparentheses" #pragma GCC diagnostic ignored "-Wunused" #ifndef __clang__ #pragma GCC diagnostic ignored "-Wunused-but-set-variable" #pragma GCC diagnostic ignored "-Wunused-variable" #pragma GCC diagnostic ignored "-Wunused-function" #endif } @lexer::header { /* belle-sip - SIP (RFC3261) library. Copyright (C) 2010 Belledonne Communications SARL This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #pragma GCC diagnostic ignored "-Wparentheses" #pragma GCC diagnostic ignored "-Wunused" } @includes { #include "belle-sip/defs.h" #include "belle-sip/types.h" #include "belle-sip/message.h" #include "belle-sip/http-message.h" #include "parserutils.h" BELLESIP_EXPORT void belle_sip_header_address_set_quoted_displayname(belle_sip_header_address_t* address,const char* value); } @rulecatch { if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } } message returns [belle_sip_message_t* ret] scope { size_t message_length; } @init {$ret=NULL;} : message_raw[&($message::message_length)] {$ret=$message_raw.ret;}; message_raw [size_t* length] returns [belle_sip_message_t* ret] scope { size_t* message_length; } @init {$message_raw::message_length=length;$ret=NULL;} : common_request {$ret = $common_request.ret;} | common_response {$ret = $common_response.ret;} ; request returns [belle_sip_request_t* ret=NULL] :common_request {$ret=BELLE_SIP_REQUEST($common_request.ret);}; common_request returns [belle_sip_message_t* ret] scope { belle_sip_message_t* current; } @init {$ret=$common_request::current=NULL; } : ( ( ~(CRLF)* sip_version CRLF) => request_line {$ret=$common_request::current=BELLE_SIP_MESSAGE($request_line.ret);} | ( ~(CRLF)* http_version CRLF) => http_request_line{$ret=$common_request::current=BELLE_SIP_MESSAGE($http_request_line.ret);}) message_header[BELLE_SIP_MESSAGE($common_request::current)]+ last_crlf=CRLF {*($message_raw::message_length)=$last_crlf->user1;} /*message_body ?*/ ; request_line returns [belle_sip_request_t* ret=NULL] scope { belle_sip_request_t* current; } @init {$request_line::current = belle_sip_request_new(); $ret=$request_line::current; } : method {belle_sip_request_set_method($request_line::current,(const char*)($method.text->chars));} SP ( uri {belle_sip_request_set_uri($request_line::current,$uri.ret);} | generic_uri {belle_sip_request_set_absolute_uri($request_line::current,$generic_uri.ret);} ) SP sip_version CRLF ; catch [ANTLR3_RECOGNITION_EXCEPTION] { belle_sip_message("[\%s] reason [\%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref($request_line::current); $ret=NULL; } sip_version : {IS_TOKEN(SIP/)}? generic_version; // 'SIP/' DIGIT '.' DIGIT; generic_version: alpha+ SLASH DIGIT DOT DIGIT; message_header [belle_sip_message_t* message] : (/*accept // | accept_encoding // | accept_language // | alert_info // | allow // | authentication_info // | authorization // | header_call_id {belle_sip_message_add_header(message,BELLE_SIP_HEADER($header_call_id.ret));}/* // | call_info // | header_retry_after {belle_sip_message_add_header(message,BELLE_SIP_HEADER($header_retry_after.ret));}/* // | header_contact {belle_sip_message_add_header(message,BELLE_SIP_HEADER($header_contact.ret));} // | content_disposition // | content_encoding // | content_language*/ // | header_content_length {belle_sip_message_add_header(message,BELLE_SIP_HEADER($header_content_length.ret));} // | header_content_type {belle_sip_message_add_header(message,BELLE_SIP_HEADER($header_content_type.ret));} // | header_cseq {belle_sip_message_add_header(message,BELLE_SIP_HEADER($header_cseq.ret));}/* // | date // | error_info // | expires*/ // | header_from {belle_sip_message_add_header(message,BELLE_SIP_HEADER($header_from.ret));}/* // | in_reply_to // | max_forwards // | mime_version // | min_expires // | organization // | priority // | proxy_authenticate // | proxy_authorization // | proxy_require*/ // | header_record_route {belle_sip_message_add_header(message,BELLE_SIP_HEADER($header_record_route.ret));}/* // | reply_to // | require // | retry_after*/ // | header_route {belle_sip_message_add_header(message,BELLE_SIP_HEADER($header_route.ret));}/* // | server // | subject // | supported // | timestamp*/ // | header_to {belle_sip_message_add_header(message,BELLE_SIP_HEADER($header_to.ret));}/* // | header_diversion {belle_sip_message_add_header(message,BELLE_SIP_HEADER($header_diversion.ret));}/* // | unsupported // | user_agent*/ // | header_via {belle_sip_message_add_header(message,BELLE_SIP_HEADER($header_via.ret));}/* // | warning // | www_authenticate*/ header_extension_base[(BELLE_SIP_OBJECT_IS_INSTANCE_OF($message,belle_http_request_t) ||BELLE_SIP_OBJECT_IS_INSTANCE_OF($message,belle_http_response_t)) ] { belle_sip_header_t* lheader = BELLE_SIP_HEADER($header_extension_base.ret); do { if (lheader == NULL) break; /*sanity check*/ belle_sip_message_add_header(message,lheader); } while((lheader=belle_sip_header_get_next(lheader)) != NULL); } ) CRLF ; /* invitem : 'INVITE' ; //INVITE in caps ackm : 'ACK'; //ACK in caps optionsm: 'OPTION'; //OPTIONS in caps byem : 'BYE' ; //BYE in caps cancelm : 'CANCEL' ; //CANCEL in caps registerm : 'REGISTER' ; //REGISTER in caps optionm : 'OPTION'; */ method : /* invitem | ackm | optionm | byem | cancelm | registerm |*/extension_method ; extension_method : token; common_response returns [belle_sip_message_t* ret=NULL] : ( (sip_version ~(CRLF)* CRLF) => status_line {$ret=BELLE_SIP_MESSAGE($status_line.ret);} | (http_version ~(CRLF)* CRLF) => http_status_line{$ret=BELLE_SIP_MESSAGE($http_status_line.ret);}) (message_header[BELLE_SIP_MESSAGE($ret)]+ last_crlf=CRLF {*($message_raw::message_length)=$last_crlf->user1;} /*message_body*/)? ; response returns [belle_sip_response_t* ret=NULL] : common_response {$ret=BELLE_SIP_RESPONSE($common_response.ret);} ; status_line returns [belle_sip_response_t* ret=NULL] scope { belle_sip_response_t* current; } @init {$ret = belle_sip_response_new(); } : sip_version SP status_code {belle_sip_response_set_status_code($ret,atoi((char*)$status_code.text->chars));} SP reason_phrase {belle_sip_response_set_reason_phrase($ret,(char*)$reason_phrase.text->chars);} CRLF ; catch [ANTLR3_RECOGNITION_EXCEPTION] { belle_sip_message("[\%s] reason [\%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref( $ret); $ret=NULL; } status_code : extension_code; extension_code : DIGIT DIGIT DIGIT; reason_phrase : ~(CRLF)*; //****************http**********************/ /*Request-Line = Method SP Request-URI SP HTTP-Version CRLF*/ http_request returns [belle_http_request_t* ret=NULL] :common_request {$ret=BELLE_HTTP_REQUEST($common_request.ret);}; http_request_line returns [belle_http_request_t *ret=NULL] scope { belle_http_request_t* current; } @init {$http_request_line::current = belle_http_request_new(); $ret=$http_request_line::current; } : method {belle_http_request_set_method($http_request_line::current,(const char*)($method.text->chars));} SP (generic_uri)=>generic_uri {belle_http_request_set_uri($http_request_line::current,$generic_uri.ret);} SP http_version CRLF; catch [ANTLR3_RECOGNITION_EXCEPTION] { belle_sip_message("[\%s] reason [\%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref($http_request_line::current); $ret=NULL; } http_version: {IS_TOKEN(HTTP/)}? generic_version; http_response returns [belle_http_response_t* ret=NULL] : common_response {$ret=BELLE_HTTP_RESPONSE($common_response.ret);} ; http_status_line returns [belle_http_response_t* ret] @init {$ret = belle_http_response_new(); } : http_version SP status_code {belle_http_response_set_status_code($ret,atoi((char*)$status_code.text->chars));} SP reason_phrase {belle_http_response_set_reason_phrase($ret,(char*)$reason_phrase.text->chars);} CRLF ; catch [ANTLR3_RECOGNITION_EXCEPTION] { belle_sip_message("[\%s] reason [\%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref( $ret); $ret=NULL; } /* absoluteURI = scheme ":" ( hier_part | opaque_part ) hier_part = ( net_path | abs_path ) [ "?" query ] net_path = "//" authority [ abs_path ] abs_path = "/" path_segments */ /*comma, semicolon, or question mark*/ opaque_part_for_from_to_contact_addr_spec : uric_no_slash_for_from_to_contact_addr_spec uric_for_from_to_contact_addr_spec*; opaque_part : uric_no_slash uric*; uric_no_slash_for_from_to_contact_addr_spec : unreserved | escaped | COLON | AT| AND | EQUAL | PLUS | DOLLARD; uric_no_slash :COMMA | SEMI | QMARK | uric_no_slash_for_from_to_contact_addr_spec ; scheme: alpha ( alphanum | PLUS | DASH | DOT )*; /*remove hiearachy part because complex to handle the :comma, semicolon, or question markexception see rfc3261 section 20.10 Contact*/ generic_uri_for_from_to_contact_addr_spec returns [belle_generic_uri_t* ret=NULL] scope { belle_generic_uri_t* current; } @init { $generic_uri_for_from_to_contact_addr_spec::current = $ret = belle_generic_uri_new(); } : scheme {belle_generic_uri_set_scheme($generic_uri_for_from_to_contact_addr_spec::current,(const char*)$scheme.text->chars);} COLON opaque_part_for_from_to_contact_addr_spec {belle_generic_uri_set_opaque_part($generic_uri_for_from_to_contact_addr_spec::current,(const char*)$opaque_part_for_from_to_contact_addr_spec.text->chars) ;} ; catch [ANTLR3_RECOGNITION_EXCEPTION] { belle_sip_message("[\%s] reason [\%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref($ret); $ret=NULL; } generic_uri returns [belle_generic_uri_t* ret=NULL] scope { belle_generic_uri_t* current; } @init { $generic_uri::current = $ret = belle_generic_uri_new(); } : hier_part[$generic_uri::current] | (scheme {belle_generic_uri_set_scheme($generic_uri::current,(const char*)$scheme.text->chars);} COLON (opaque_part {belle_generic_uri_set_opaque_part($generic_uri::current,(const char*)$opaque_part.text->chars) ;} | hier_part[$generic_uri::current]) ) ; catch [ANTLR3_RECOGNITION_EXCEPTION] { belle_sip_message("[\%s] reason [\%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref($generic_uri::current); $ret=NULL; } hier_part[belle_generic_uri_t* uri] returns [belle_generic_uri_t* ret=NULL] : ( (SLASH SLASH path_segments[NULL])=>( SLASH SLASH path_segments[uri]) | (SLASH SLASH authority[NULL] (path_segments[NULL])?)=>( SLASH SLASH authority[uri] (path_segments[uri])?) | ( path_segments[uri]) ) (QMARK query { char* unescaped_query; unescaped_query=belle_sip_to_unescaped_string((const char *)$query.text->chars); belle_generic_uri_set_query(uri,(const char*)unescaped_query); belle_sip_free(unescaped_query); }) ?; path_segments[belle_generic_uri_t* uri] : SLASH (segment ( SLASH segment )*) { char* unescaped_path; unescaped_path=belle_sip_to_unescaped_string((const char *)$path_segments.text->chars); belle_generic_uri_set_path(uri,(const char*)unescaped_path); belle_sip_free(unescaped_path); }; segment: pchar* ( SEMI param )*; param: pchar*; pchar: unreserved | escaped | COLON | AT | AND | EQUAL | PLUS | DOLLARD | COMMA; query: uric+; uric: reserved | unreserved | escaped; uric_for_from_to_contact_addr_spec: reserved_for_from_to_contact_addr_spec | unreserved | escaped; authority[belle_generic_uri_t* uri] : ((authority_userinfo[NULL]) =>authority_userinfo[uri] )? authority_hostport[uri] /*| authority_hostport[uri]*/ ; catch [ANTLR3_RECOGNITION_EXCEPTION] { belle_sip_message("[\%s] reason [\%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); } authority_userinfo[belle_generic_uri_t* uri] scope { belle_generic_uri_t* current; } @init {$authority_userinfo::current=uri;} : authority_user ( COLON authority_password )? AT ; authority_user : ( unreserved | escaped | user_unreserved )+ { char* unescaped_username; unescaped_username=belle_sip_to_unescaped_string((const char *)$text->chars); belle_generic_uri_set_user($authority_userinfo::current,unescaped_username); belle_sip_free(unescaped_username); }; authority_password : ( unreserved | escaped | AND | EQUAL | PLUS | DOLLARD | COMMA )* { char* unescaped_userpasswd; const char* source = (const char*)$text->chars; if( source != NULL ){ unescaped_userpasswd=belle_sip_to_unescaped_string((const char *)source); belle_generic_uri_set_user_password($authority_userinfo::current,unescaped_userpasswd); belle_sip_free(unescaped_userpasswd); } }; authority_hostport[belle_generic_uri_t* uri] scope { belle_generic_uri_t* current; } @init {$authority_hostport::current=uri;} : host (( COLON port {belle_generic_uri_set_port($authority_hostport::current,$port.ret);})? (semi generic_param [BELLE_SIP_PARAMETERS($authority_hostport::current)])*) {belle_generic_uri_set_host($authority_hostport::current,$host.ret);}; //****************http end**********************/ //****************SIP**********************/ generic_param [belle_sip_parameters_t* object] returns [belle_sip_param_pair_t* ret=NULL] scope{int is_value; char* gen_value_string;} @init { $generic_param::is_value=0; $generic_param::gen_value_string=NULL;} : token ( equal gen_value {$generic_param::gen_value_string=(char*)($gen_value.text->chars);} )? { if (object == NULL) { $ret=belle_sip_param_pair_new((const char*)($token.text->chars) ,$generic_param::gen_value_string); } else { belle_sip_parameters_set_parameter(object ,(const char*)($token.text->chars) ,$generic_param::gen_value_string); $ret=NULL; } }; gen_value : token | quoted_string; quoted_string options { greedy = false; } : DQUOTE (~(DQUOTE | BSLASH) | (BSLASH .))* DQUOTE ; /* accept_encoding : 'Accept-Encoding' HCOLON ( encoding (COMMA encoding)* ); encoding : codings (SEMI accept_param)*; codings : content_coding | '*'; content_coding : token; accept_language : 'Accept-Language' HCOLON ( language (COMMA language)* )?; language : language_range (SEMI accept_param)*; language_range : ( ( alpha alpha alpha alpha alpha alpha alpha alpha ( '-' alpha alpha alpha alpha alpha alpha alpha alpha )* ) | '*' ); alert_info : 'Alert-Info' HCOLON alert_param (COMMA alert_param)*; alert_param : LAQUOT absoluteURI RAQUOT ( SEMI generic_param )*; absoluteURI : token ':' token; */ header_allow returns [belle_sip_header_allow_t* ret] scope { belle_sip_header_allow_t* current; } @init {$header_allow::current = belle_sip_header_allow_new(); $ret=$header_allow::current; } : {IS_TOKEN(Allow)}? token /*'Allow'*/ hcolon methods {belle_sip_header_allow_set_method($header_allow::current,(const char*)($methods.text->chars));} ; catch [ANTLR3_RECOGNITION_EXCEPTION] { belle_sip_message("[\%s] reason [\%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref($header_allow::current); $ret=NULL; } methods : /*LWS?*/ method (comma method)*; authorization_token: {IS_TOKEN(Authorization)}? token; digest_token: {IS_TOKEN(Digest)}? token; header_authorization returns [belle_sip_header_authorization_t* ret] scope { belle_sip_header_authorization_t* current; } @init {$header_authorization::current = belle_sip_header_authorization_new(); $ret=$header_authorization::current; } : authorization_token /*'Authorization'*/ hcolon credentials[$header_authorization::current]; catch [ANTLR3_RECOGNITION_EXCEPTION] { belle_sip_message("[\%s] reason [\%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref($header_authorization::current); $ret=NULL; } credentials [belle_sip_header_authorization_t* header_authorization_base] : (digest_token /*'Digest'*/ {belle_sip_header_authorization_set_scheme(header_authorization_base,"Digest");} lws digest_response[header_authorization_base]) | other_response[header_authorization_base]; digest_response [belle_sip_header_authorization_t* header_authorization_base] : dig_resp[header_authorization_base] (comma dig_resp[header_authorization_base])*; dig_resp [belle_sip_header_authorization_t* header_authorization_base] : username { belle_sip_header_authorization_set_username(header_authorization_base,$username.ret); belle_sip_free($username.ret); } | realm { belle_sip_header_authorization_set_realm(header_authorization_base,(char*)$realm.ret); belle_sip_free($realm.ret); } | nonce { belle_sip_header_authorization_set_nonce(header_authorization_base,(char*)$nonce.ret); belle_sip_free($nonce.ret); } | digest_uri[header_authorization_base] | dresponse { belle_sip_header_authorization_set_response(header_authorization_base,(char*)$dresponse.ret); belle_sip_free($dresponse.ret); } | algorithm { belle_sip_header_authorization_set_algorithm(header_authorization_base,(char*)$algorithm.ret); } | cnonce{ belle_sip_header_authorization_set_cnonce(header_authorization_base,(char*)$cnonce.ret); belle_sip_free($cnonce.ret); } | opaque { belle_sip_header_authorization_set_opaque(header_authorization_base,(char*)$opaque.ret); belle_sip_free($opaque.ret); } | message_qop{ belle_sip_header_authorization_set_qop(header_authorization_base,$message_qop.ret); } | nonce_count{ belle_sip_header_authorization_set_nonce_count(header_authorization_base,atoi((char*)$nonce_count.ret)); } | auth_param[header_authorization_base] ; username_token: {IS_TOKEN(username)}? token; username returns [char* ret=NULL] : username_token /*'username'*/ equal username_value { $ret = _belle_sip_str_dup_and_unquote_string((char*)$username_value.text->chars); }; username_value : quoted_string; uri_token: {IS_TOKEN(uri)}? token; digest_uri [belle_sip_header_authorization_t* header_authorization_base] : uri_token /*'uri'*/ equal DQUOTE uri DQUOTE {belle_sip_header_authorization_set_uri(header_authorization_base,$uri.ret); }; /* digest_uri_value : rquest_uri ; rquest_uri : uri; */ // Equal to request-uri as specified by HTTP/1.1 message_qop returns [const char* ret=NULL] : {IS_TOKEN(qop)}? token/*'qop'*/ equal qop_value {$ret = (const char*)$qop_value.text->chars;}; qop_value : token; cnonce returns [char* ret=NULL] : {IS_TOKEN(cnonce)}? token /*'cnonce'*/ equal cnonce_value { $ret = _belle_sip_str_dup_and_unquote_string((char*)$cnonce_value.text->chars); }; cnonce_value : nonce_value; nonce_count returns [const char* ret=NULL] : {IS_TOKEN(nc)}? token /*'nc'*/ equal nc_value {$ret=(char*)$nc_value.text->chars;}; nc_value : huit_lhex; dresponse returns [char* ret=NULL] : {IS_TOKEN(response)}? token /*'response'*/ equal request_digest{ $ret = _belle_sip_str_dup_and_unquote_string((char*)$request_digest.text->chars); }; request_digest : quoted_string ;/*sp_laquot_sp huit_lhex huit_lhex huit_lhex huit_lhex sp_raquot_sp; */ huit_lhex : hexdigit+; auth_param [belle_sip_header_authorization_t* header_authorization_base] : auth_param_name equal auth_param_value {belle_sip_parameters_set_parameter(BELLE_SIP_PARAMETERS(header_authorization_base) ,(char*)$auth_param_name.text->chars ,(char*)$auth_param_value.text->chars); } ; auth_param_value : token | quoted_string ; auth_param_name : token; other_response [belle_sip_header_authorization_t* header_authorization_base] : auth_scheme {belle_sip_header_authorization_set_scheme(header_authorization_base,(const char*)$auth_scheme.text->chars);} lws auth_param[header_authorization_base] (comma auth_param[header_authorization_base])*; auth_scheme : token; /* authentication_info : 'Authentication-Info' HCOLON ainfo (COMMA ainfo)*; ainfo : nextnonce | message_qop | response_auth | cnonce | nonce_count; nextnonce : 'nextnonce' EQUAL nonce_value; */ nonce_value : quoted_string; /* response_auth : 'rspauth' EQUAL response_digest; response_digest : LDQUOT hexdigit* RDQUOT; */ /*callid header*/ call_id_token: {IS_HEADER_NAMED(Call-ID,i)}? token; header_call_id returns [belle_sip_header_call_id_t* ret=NULL] scope { belle_sip_header_call_id_t* current; } @init {$header_call_id::current = belle_sip_header_call_id_new(); $ret=$header_call_id::current; } : call_id_token /*( 'Call-ID' | 'i' )*/ hcolon call_id{belle_sip_header_call_id_set_call_id($header_call_id::current,(const char*) $call_id.text->chars); }; catch [ANTLR3_RECOGNITION_EXCEPTION] { belle_sip_message("[\%s] reason [\%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref($header_call_id::current); $ret=NULL; } call_id : word ( AT word )? ; /* call_info : 'Call-Info' HCOLON info (COMMA info)*; info : LAQUOT absoluteURI RAQUOT ( SEMI info_param)*; info_param : ( 'purpose' EQUAL ( 'icon' | 'info' | 'card' | token ) ) | generic_param; */ /*retry-after header*/ retry_after_token: {IS_HEADER_NAMED(Retry-After,r)}? token; header_retry_after returns [belle_sip_header_retry_after_t* ret] scope { belle_sip_header_retry_after_t* current; } @init {$header_retry_after::current = belle_sip_header_retry_after_new(); $ret=$header_retry_after::current; } : retry_after_token /*( 'Retry-After' | 'r' )*/ hcolon retry_after{belle_sip_header_retry_after_set_retry_after($header_retry_after::current,atoi((const char*) $retry_after.text->chars)); }; catch [ANTLR3_RECOGNITION_EXCEPTION] { belle_sip_message("[\%s] reason [\%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref($header_retry_after::current); $ret=NULL; } retry_after : DIGIT+; /* contact header */ contact_token: {IS_HEADER_NAMED(Contact,m)}? token; header_contact returns [belle_sip_header_contact_t* ret] scope { belle_sip_header_contact_t* current; belle_sip_header_contact_t* first; } @init { $header_contact::current =NULL; $header_contact::first =NULL; $ret=NULL; } : (contact_token /*'Contact'*/ /*| 'm'*/ ) sp_tab_colon ( (lws? STAR) { $header_contact::current = belle_sip_header_contact_new(); belle_sip_header_contact_set_wildcard($header_contact::current,1);} | (contact_param ( COMMA contact_param)*)) {$ret = $header_contact::first; }; catch [ANTLR3_RECOGNITION_EXCEPTION] { belle_sip_message("[\%s] reason [\%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); $ret = $header_contact::first; if ($ret) belle_sip_object_unref($ret); $ret=NULL; } contact_param scope { belle_sip_header_contact_t* prev;} @init { if ($header_contact::current == NULL) { $header_contact::current = belle_sip_header_contact_new(); $header_contact::first = $header_contact::current; $contact_param::prev=NULL; } else { $contact_param::prev=$header_contact::current; belle_sip_header_set_next(BELLE_SIP_HEADER($header_contact::current),(belle_sip_header_t*)belle_sip_header_contact_new()); $header_contact::current = (belle_sip_header_contact_t*)belle_sip_header_get_next(BELLE_SIP_HEADER($header_contact::current)); } } : ( name_addr[BELLE_SIP_HEADER_ADDRESS($header_contact::current)] | paramless_addr_spec[BELLE_SIP_HEADER_ADDRESS($header_contact::current)]) (SEMI lws? contact_params lws?)*; header_address returns [belle_sip_header_address_t* ret] @init { $ret=belle_sip_header_address_new(); } : ( (name_addr_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)] (SEMI lws? generic_param [BELLE_SIP_PARAMETERS($ret)] lws?)*) | addr_spec_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)]) { if (!belle_sip_header_address_get_uri($ret) && !belle_sip_header_address_get_absolute_uri(($ret))) { belle_sip_object_unref($ret); $ret=NULL; } }; catch [ANTLR3_RECOGNITION_EXCEPTION] { belle_sip_debug("[\%s] reason [\%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); if ($ret) belle_sip_object_unref($ret); $ret=NULL; } header_address_param_less returns [belle_sip_header_address_t* ret] @init { $ret=NULL; } : header_address_base[belle_sip_header_address_new()] {$ret=$header_address_base.ret;}; header_address_base[belle_sip_header_address_t* obj] returns [belle_sip_header_address_t* ret] @init { $ret=obj; } : ( name_addr_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)] | addr_spec_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)]) { if (!belle_sip_header_address_get_uri($ret) && !belle_sip_header_address_get_absolute_uri(($ret))) { belle_sip_object_unref($ret); $ret=NULL; } }; catch [ANTLR3_RECOGNITION_EXCEPTION] { belle_sip_debug("[\%s] reason [\%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); if ($ret) belle_sip_object_unref($ret); $ret=NULL; } fast_header_address returns [belle_sip_header_address_t* ret] @init { $ret=belle_sip_header_address_new(); } : ( (fast_name_addr_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)] (SEMI lws? generic_param [BELLE_SIP_PARAMETERS($ret)] lws?)*) | fast_addr_spec_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)]) { if (!belle_sip_header_address_get_uri($ret) && !belle_sip_header_address_get_absolute_uri(($ret))) { belle_sip_object_unref($ret); $ret=NULL; } }; catch [ANTLR3_RECOGNITION_EXCEPTION] { belle_sip_debug("[\%s] reason [\%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); if ($ret) belle_sip_object_unref($ret); $ret=NULL; } fast_header_address_param_less returns [belle_sip_header_address_t* ret] @init { $ret=belle_sip_header_address_new(); } : ( fast_name_addr_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)] | fast_addr_spec_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)]) { if (!belle_sip_header_address_get_uri($ret) && !belle_sip_header_address_get_absolute_uri(($ret))) { belle_sip_object_unref($ret); $ret=NULL; } }; catch [ANTLR3_RECOGNITION_EXCEPTION] { belle_sip_debug("[\%s] reason [\%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); if ($ret) belle_sip_object_unref($ret); $ret=NULL; } name_addr[belle_sip_header_address_t* object] : (lws? display_name[object])? sp_laquot addr_spec[object] raquot_sp; name_addr_with_generic_uri[belle_sip_header_address_t* object] : (lws? display_name[object])? sp_laquot addr_spec_with_generic_uri[object] raquot_sp; fast_name_addr_with_generic_uri[belle_sip_header_address_t* object] : (lws? display_name[object])? sp_laquot fast_addr_spec_with_generic_uri[object] raquot_sp; addr_spec[belle_sip_header_address_t* object] : lws? uri {belle_sip_header_address_set_uri(object,$uri.ret);} lws?;//| absoluteURI; addr_spec_with_generic_uri[belle_sip_header_address_t* object] : lws? ( uri {belle_sip_header_address_set_uri(object,$uri.ret);} | generic_uri { const char *scheme = belle_generic_uri_get_scheme($generic_uri.ret); if ( scheme && strcasecmp(scheme,"sip") != 0 && strcasecmp(scheme, "sips") != 0 ) { belle_sip_header_address_set_absolute_uri(object,$generic_uri.ret); } else { belle_sip_message("Cannot parse a sip/sips uri as a generic uri"); belle_sip_object_unref($generic_uri.ret); }} ) lws?; fast_addr_spec_with_generic_uri[belle_sip_header_address_t* object] : lws? ( fast_uri {belle_sip_header_address_set_uri(object,$fast_uri.ret);} | generic_uri { const char *scheme = belle_generic_uri_get_scheme($generic_uri.ret); if ( scheme && strcasecmp(scheme, "sip") != 0 && strcasecmp(scheme, "sips") != 0 ) { belle_sip_header_address_set_absolute_uri(object, $generic_uri.ret); } else { belle_sip_message("Cannot parse a sip/sips uri as a generic uri"); belle_sip_object_unref($generic_uri.ret); }} ) lws?; paramless_addr_spec[belle_sip_header_address_t* object] : lws? paramless_uri {belle_sip_header_address_set_uri(object,$paramless_uri.ret);} lws? ;//| absoluteURI; paramless_addr_spec_with_generic_uri[belle_sip_header_address_t* object] : lws? ( paramless_uri {belle_sip_header_address_set_uri(object,$paramless_uri.ret);} | generic_uri_for_from_to_contact_addr_spec{belle_sip_header_address_set_absolute_uri(object,$generic_uri_for_from_to_contact_addr_spec.ret);} ) lws? ; display_name_tokens :token (lws token)* ; display_name[belle_sip_header_address_t* object] : display_name_tokens {belle_sip_header_address_set_displayname(object,(const char*)($display_name_tokens.text->chars));} | quoted_string { char* unescaped_char = belle_sip_string_to_backslash_less_unescaped_string((const char*)($quoted_string.text->chars)); belle_sip_header_address_set_quoted_displayname(object,(const char*)unescaped_char); belle_sip_free(unescaped_char); } ; contact_params : /*c_p_q | c_p_expires |*/ contact_extension; /*c_p_q : 'q' EQUAL qvalue; c_p_expires : 'expires' EQUAL delta_seconds;*/ contact_extension : generic_param [BELLE_SIP_PARAMETERS($header_contact::current)]; delta_seconds : DIGIT+; /* content_disposition : 'Content-Disposition' HCOLON disp_type ( SEMI disp_param )*; disp_type : 'render' | 'session' | 'icon' | 'alert' | disp_extension_token; disp_param : handling_param | generic_param; handling_param : 'handling' EQUAL ( 'optional' | 'required' | other_handling ); other_handling : token; disp_extension_token : token; content_encoding : ( 'Content-Encoding' | 'e' ) HCOLON content_coding (COMMA content_coding)*; content_language : 'Content-Language' HCOLON language_tag (COMMA language_tag)*; language_tag : primary_tag ( '-' subtag )*; primary_tag : huit_alpha; subtag : huit_alpha; huit_alpha : alpha+; ; */ /*content_length_token : {strcmp("Content-Length",(const char*)(INPUT->toStringTT(INPUT,LT(1),LT(14)))->chars) == 0}? token;*/ content_length_token : {IS_HEADER_NAMED(Content-Length,l)}? token; header_content_length returns [belle_sip_header_content_length_t* ret] scope { belle_sip_header_content_length_t* current; } @init {$header_content_length::current = belle_sip_header_content_length_new(); $ret=$header_content_length::current; } : content_length_token /*( 'Content-Length' | 'l' )*/ hcolon content_length {belle_sip_header_content_length_set_content_length($header_content_length::current,atoi((const char*)$content_length.text->chars));}; catch [ANTLR3_RECOGNITION_EXCEPTION] { belle_sip_message("[\%s] reason [\%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref($header_content_length::current); $ret=NULL; } content_length:DIGIT+; content_type_token : {IS_HEADER_NAMED(Content-Type,c)}? token; header_content_type returns [belle_sip_header_content_type_t* ret=NULL] scope { belle_sip_header_content_type_t* current;} @init { $header_content_type::current = belle_sip_header_content_type_new();$ret=$header_content_type::current; } : content_type_token/* ( 'Content-Type' | 'c' )*/ hcolon media_type; catch [ANTLR3_RECOGNITION_EXCEPTION] { belle_sip_message("[\%s] reason [\%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref($header_content_type::current); $ret=NULL; } media_type : m_type {belle_sip_header_content_type_set_type($header_content_type::current,(const char*)$m_type.text->chars);} slash m_subtype {belle_sip_header_content_type_set_subtype($header_content_type::current,(const char*)$m_subtype.text->chars);} (semi type_param)? (semi generic_param [BELLE_SIP_PARAMETERS($header_content_type::current)])*; m_type : token; type_param: {IS_TOKEN(type)}? token equal type_param_value; type_param_value : m_type slash m_subtype {belle_sip_parameters_set_parameter(BELLE_SIP_PARAMETERS($header_content_type::current) ,"type" ,(const char*)$type_param_value.text->chars);}; /* discrete_type | composite_type; discrete_type : 'text' | 'image' | 'audio' | 'video' | 'application' | extension_token; composite_type : 'message' | 'multipart' | extension_token; extension_token : ietf_token | x_token; ietf_token : token; x_token : 'x-' token;*/ m_subtype : token ;/* extension_token | iana_token; iana_token : token; m_parameter : m_attribute EQUAL m_value; m_attribute : token; m_value : token | quoted_string; */ cseq_token : {IS_TOKEN(CSeq)}? token; header_cseq returns [belle_sip_header_cseq_t* ret] scope { belle_sip_header_cseq_t* current; } @init { $header_cseq::current = belle_sip_header_cseq_new();$ret = $header_cseq::current; } : cseq_token hcolon seq_number {belle_sip_header_cseq_set_seq_number($header_cseq::current,atoi((const char*)$seq_number.text->chars));} lws method {belle_sip_header_cseq_set_method($header_cseq::current,(const char*)$method.text->chars);} ; catch [ANTLR3_RECOGNITION_EXCEPTION] { belle_sip_message("[\%s] reason [\%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref($header_cseq::current); $ret=NULL; } seq_number:DIGIT+; /*Date header*/ date_token: {IS_TOKEN(Date)}? token; header_date returns [belle_sip_header_date_t* ret] scope { belle_sip_header_date_t* current; } @init {$header_date::current = belle_sip_header_date_new(); $ret=$header_date::current; } : date_token /*( 'Date' )*/ hcolon sip_date{belle_sip_header_date_set_date($header_date::current,(const char*) $sip_date.text->chars); }; catch [ANTLR3_RECOGNITION_EXCEPTION] { belle_sip_message("[\%s] reason [\%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref($header_date::current); $ret=NULL; } date : sip_date; sip_date : /*wkday*/alpha alpha alpha COMMA SP /*date1*/DIGIT DIGIT SP alpha alpha alpha SP DIGIT DIGIT DIGIT DIGIT SP /*time*/DIGIT DIGIT COLON DIGIT DIGIT COLON DIGIT DIGIT SP /*GMTT*/alpha alpha alpha; /* // rfc1123-date //rfc1123-date = wkday "," SP date1 SP time SP "GMT" //date1 = 2DIGIT SP month SP 4DIGIT // ; day month year (e.g., 02 Jun 1982) //time = 2DIGIT ":" 2DIGIT ":" 2DIGIT // ; 00:00:00 - 23:59:59 //wkday = "Mon" / "Tue" / "Wed" // / "Thu" / "Fri" / "Sat" / "Sun" //month = "Jan" / "Feb" / "Mar" / "Apr" // / "May" / "Jun" / "Jul" / "Aug" // / "Sep" / "Oct" / "Nov" / "Dec" error_info : 'Error-Info' HCOLON error_uri (COMMA error_uri)*; error_uri : LAQUOT absoluteURI RAQUOT ( SEMI generic_param )*; */ header_expires returns [belle_sip_header_expires_t* ret] scope { belle_sip_header_expires_t* current; } @init { $header_expires::current = belle_sip_header_expires_new();$ret = $header_expires::current; } : {IS_TOKEN(Expires)}? token /*'Expires'*/ hcolon delta_seconds {belle_sip_header_expires_set_expires($header_expires::current,atoi((const char *)$delta_seconds.text->chars));}; catch [ANTLR3_RECOGNITION_EXCEPTION] { belle_sip_message("[\%s] reason [\%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref($header_expires::current); $ret=NULL; } from_token: {IS_HEADER_NAMED(From,f)}? token; header_from returns [belle_sip_header_from_t* ret] scope { belle_sip_header_from_t* current; } @init { $header_from::current = belle_sip_header_from_new();$ret = $header_from::current; } : from_token/* ( 'From' | 'f' )*/ sp_tab_colon from_spec { if (!belle_sip_header_address_get_uri((belle_sip_header_address_t*)($header_from::current)) && !belle_sip_header_address_get_absolute_uri((belle_sip_header_address_t*)($header_from::current))) { belle_sip_object_unref($header_from::current); $ret=NULL; } }; catch [ANTLR3_RECOGNITION_EXCEPTION] { belle_sip_message("[\%s] reason [\%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref($header_from::current); $ret=NULL; } from_spec : ( name_addr_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($header_from::current)] | paramless_addr_spec_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($header_from::current)] ) ( SEMI lws? from_param lws?)* ; from_param : /*tag_param |*/ generic_param [BELLE_SIP_PARAMETERS($header_from::current)]; /* tag_param : 'tag' EQUAL token; */ /* in_reply_to : 'In-Reply-To' HCOLON callid (COMMA callid); */ header_max_forwards returns [belle_sip_header_max_forwards_t* ret] scope { belle_sip_header_max_forwards_t* current; } @init { $header_max_forwards::current = belle_sip_header_max_forwards_new();$ret = $header_max_forwards::current; } : {IS_TOKEN(Max-Forwards)}? token /*'Max-Forwards'*/ hcolon max_forwards {belle_sip_header_max_forwards_set_max_forwards($header_max_forwards::current,atoi((const char*)$max_forwards.text->chars));}; catch [ANTLR3_RECOGNITION_EXCEPTION] { belle_sip_message("[\%s] reason [\%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref($header_max_forwards::current); $ret=NULL; } max_forwards:DIGIT+; /* mime_version : 'MIME-Version' HCOLON DIGIT+ '.' DIGIT+; min_expires : 'Min-Expires' HCOLON delta_seconds; organization : 'Organization' HCOLON (text_utf8_trim)?; text_utf8_trim : ; priority : 'Priority' HCOLON priority_value; priority_value : 'emergency' | 'urgent' | 'normal' | 'non-urgent' | other_priority; other_priority : token; */ header_proxy_authenticate returns [belle_sip_header_proxy_authenticate_t* ret] scope { belle_sip_header_proxy_authenticate_t* current; } @init { $header_proxy_authenticate::current = belle_sip_header_proxy_authenticate_new();$ret = $header_proxy_authenticate::current; } : {IS_TOKEN(Proxy-Authenticate)}? token /*'Proxy-Authenticate'*/ hcolon (challenge[BELLE_SIP_HEADER_WWW_AUTHENTICATE($header_proxy_authenticate::current)] (comma {belle_sip_header_t* header = BELLE_SIP_HEADER($header_proxy_authenticate::current); belle_sip_header_set_next(header,(belle_sip_header_t*)($header_proxy_authenticate::current = belle_sip_header_proxy_authenticate_new())); } challenge[BELLE_SIP_HEADER_WWW_AUTHENTICATE($header_proxy_authenticate::current)])*); catch [ANTLR3_RECOGNITION_EXCEPTION] { belle_sip_message("[\%s] reason [\%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref($ret); $ret=NULL; } challenge [belle_sip_header_www_authenticate_t* www_authenticate] : ({IS_TOKEN(Digest)}? token /*'Digest'*/ {belle_sip_header_www_authenticate_set_scheme(www_authenticate,"Digest");} lws digest_cln[www_authenticate] (comma digest_cln[www_authenticate])*) | other_challenge [www_authenticate]; other_challenge [belle_sip_header_www_authenticate_t* www_authenticate] : auth_scheme {belle_sip_header_www_authenticate_set_scheme(www_authenticate,(char*)$auth_scheme.text->chars);} lws auth_param[(belle_sip_header_authorization_t*)www_authenticate] (comma auth_param[(belle_sip_header_authorization_t*)www_authenticate])*; digest_cln [belle_sip_header_www_authenticate_t* www_authenticate] : realm {belle_sip_header_www_authenticate_set_realm(www_authenticate,(char*)$realm.ret); belle_sip_free($realm.ret);} | nonce {belle_sip_header_www_authenticate_set_nonce(www_authenticate,(char*)$nonce.ret); belle_sip_free($nonce.ret);} | algorithm {belle_sip_header_www_authenticate_set_algorithm(www_authenticate,$algorithm.ret);} | opaque {belle_sip_header_www_authenticate_set_opaque(www_authenticate,$opaque.ret); belle_sip_free($opaque.ret);} | qop_opts {belle_sip_header_www_authenticate_set_qop(www_authenticate,$qop_opts.ret); /*belle_sip_free($qop_opts.ret);*/} | domain {belle_sip_header_www_authenticate_set_domain(www_authenticate,$domain.ret); belle_sip_free($domain.ret);} | stale { if (strcmp("true",$stale.ret)==0) { belle_sip_header_www_authenticate_set_stale(www_authenticate,1); } } | auth_param[(belle_sip_header_authorization_t*)www_authenticate]; /* the cast above is very BAD, but auth_param works on fields common to the two structures*/ realm returns [char* ret=NULL] : {IS_TOKEN(realm)}? token /*'realm'*/ equal realm_value { $ret = _belle_sip_str_dup_and_unquote_string((char*)$realm_value.text->chars); }; realm_value : quoted_string ; domain returns [char* ret=NULL] : {IS_TOKEN(domain)}? token /*'domain'*/ equal quoted_string { $ret = _belle_sip_str_dup_and_unquote_string((char*)$quoted_string.text->chars);}; /* LDQUOT uri ( SP+ uri )* RDQUOT; uri : absoluteURI | '/'.; */ nonce returns [char* ret=NULL] : {IS_TOKEN(nonce)}? token /*'nonce'*/ equal nonce_value{ $ret = _belle_sip_str_dup_and_unquote_string((char*)$nonce_value.text->chars); }; opaque returns [char* ret=NULL] : {IS_TOKEN(opaque)}? token /*'opaque'*/ equal quoted_string{ $ret = _belle_sip_str_dup_and_unquote_string((char*)$quoted_string.text->chars); }; stale returns [const char* ret=NULL] : {IS_TOKEN(stale)}? token /*'stale'*/ equal stale_value {$ret=(char*)$stale_value.text->chars;} /* ( 'true' | 'false' )*/; stale_value:token; algorithm returns [const char* ret=NULL] : {IS_TOKEN(algorithm)}? token /*'algorithm'*/ equal /* ( 'MD5' | 'MD5-sess' |*/ alg_value=token {$ret=(char*)$alg_value.text->chars;}/*)*/ ; qop_opts returns [belle_sip_list_t* ret=NULL] scope { belle_sip_list_t* list; } @init{$qop_opts::list=NULL;} : {IS_TOKEN(qop)}? token /*'qop'*/ equal /*ldquot*/DQUOTE qop_opts_value (COMMA qop_opts_value)* /*rdquot*/DQUOTE {$ret=$qop_opts::list;} ; qop_opts_value : lws? token lws? {$qop_opts::list=belle_sip_list_append($qop_opts::list,belle_sip_strdup((const char*)$token.text->chars));}; header_proxy_authorization returns [belle_sip_header_proxy_authorization_t* ret=NULL] scope { belle_sip_header_proxy_authorization_t* current; } @init { $header_proxy_authorization::current = belle_sip_header_proxy_authorization_new();$ret = $header_proxy_authorization::current; } : {IS_TOKEN(Proxy-Authorization)}? token /*'Proxy-Authorization'*/ hcolon credentials[(belle_sip_header_authorization_t*)$header_proxy_authorization::current]; catch [ANTLR3_RECOGNITION_EXCEPTION] { belle_sip_message("[\%s] reason [\%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref($header_proxy_authorization::current); $ret=NULL; } /* proxy_require : 'Proxy-Require' HCOLON option_tag (COMMA option_tag)*; option_tag : token; */ /*FIXME service-route = recorde-route = route, too many copy/past*/ service_route_token: {IS_TOKEN(Service-Route)}? token; header_service_route returns [belle_sip_header_service_route_t* ret=NULL] scope { belle_sip_header_service_route_t* current; belle_sip_header_service_route_t* first;} @init { $header_service_route::current = NULL;$header_service_route::first =NULL;} : service_route_token /*'Service-Route'*/ sp_tab_colon srv_route (COMMA srv_route)* {$ret = $header_service_route::first;}; catch [ANTLR3_RECOGNITION_EXCEPTION] { belle_sip_message("[\%s] reason [\%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); $ret = $header_service_route::first; if ($ret) belle_sip_object_unref($ret); $ret=NULL; } srv_route scope { belle_sip_header_service_route_t* prev;} @init { if ($header_service_route::current == NULL) { $header_service_route::first = $header_service_route::current = belle_sip_header_service_route_new(); $srv_route::prev=NULL; } else { belle_sip_header_t* header = BELLE_SIP_HEADER($header_service_route::current); $srv_route::prev=$header_service_route::current; belle_sip_header_set_next(header,(belle_sip_header_t*)($header_service_route::current = belle_sip_header_service_route_new())); } } : name_addr[BELLE_SIP_HEADER_ADDRESS($header_service_route::current)] ( SEMI lws? sr_param lws?)*; sr_param : generic_param[BELLE_SIP_PARAMETERS($header_service_route::current)]; record_route_token: {IS_TOKEN(Record-Route)}? token; header_record_route returns [belle_sip_header_record_route_t* ret=NULL] scope { belle_sip_header_record_route_t* current; belle_sip_header_record_route_t* first;} @init { $header_record_route::current = NULL;$header_record_route::first =NULL;} : record_route_token /*'Record-Route'*/ sp_tab_colon rec_route ( COMMA rec_route)* {$ret = $header_record_route::first;}; catch [ANTLR3_RECOGNITION_EXCEPTION] { belle_sip_message("[\%s] reason [\%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); $ret = $header_record_route::first; if ($ret) belle_sip_object_unref($ret); $ret=NULL; } rec_route scope { belle_sip_header_record_route_t* prev;} @init { if ($header_record_route::current == NULL) { $header_record_route::first = $header_record_route::current = belle_sip_header_record_route_new(); $rec_route::prev=NULL; } else { belle_sip_header_t* header = BELLE_SIP_HEADER($header_record_route::current); $rec_route::prev=$header_record_route::current; belle_sip_header_set_next(header,(belle_sip_header_t*)($header_record_route::current = belle_sip_header_record_route_new())); } } : name_addr[BELLE_SIP_HEADER_ADDRESS($header_record_route::current)] ( SEMI lws? rr_param lws? )*; rr_param : generic_param[BELLE_SIP_PARAMETERS($header_record_route::current)]; /* reply_to : 'Reply-To' HCOLON rplyto_spec; rplyto_spec : ( name_addr | addr_spec ) ( SEMI rplyto_param )*; rplyto_param : generic_param; require : 'Require' HCOLON option_tag (COMMA option_tag)*; retry_after : 'Retry-After' HCOLON delta_seconds comment? ( SEMI retry_param )*; */ comment : LPAREN . RPAREN; /* retry_param : ('duration' EQUAL delta_seconds) | generic_param; */ route_token: {IS_TOKEN(Route)}? token; header_route returns [belle_sip_header_route_t* ret=NULL] scope { belle_sip_header_route_t* current;belle_sip_header_route_t* first; } @init { $header_route::current = NULL; $header_route::first =NULL;} : route_token /*'Route'*/ sp_tab_colon route_param ( COMMA route_param)*{$ret = $header_route::first;}; catch [ANTLR3_RECOGNITION_EXCEPTION] { belle_sip_message("[\%s] reason [\%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); $ret = $header_route::first; if ($ret) belle_sip_object_unref($ret); $ret=NULL; } route_param scope { belle_sip_header_route_t* prev;} @init { if ($header_route::current == NULL) { $header_route::first = $header_route::current = belle_sip_header_route_new(); $route_param::prev=NULL; } else { belle_sip_header_t* header = BELLE_SIP_HEADER($header_route::current); $route_param::prev=$header_route::current; belle_sip_header_set_next(header,(belle_sip_header_t*)($header_route::current = belle_sip_header_route_new())); } } : name_addr[BELLE_SIP_HEADER_ADDRESS($header_route::current)] ( SEMI lws? r_param lws?)*; r_param : generic_param[BELLE_SIP_PARAMETERS($header_route::current)]; /* server : 'Server' HCOLON server_val (lws server_val)*; */ /* subject : ( 'Subject' | 's' ) HCOLON (text_utf_huit)?; text_utf_huit : ; supported : ( 'Supported' | 'k' ) HCOLON (option_tag (COMMA option_tag)*)?; timestamp : 'Timestamp' HCOLON (DIGIT)+ ( '.' (DIGIT)* )? ( lws delay )?; delay : (DIGIT)* ( '.' (DIGIT)* )?; */ to_token: {IS_HEADER_NAMED(To,t)}? token; header_to returns [belle_sip_header_to_t* ret=NULL] scope { belle_sip_header_to_t* current; } @init { $header_to::current = belle_sip_header_to_new(); $ret = $header_to::current;} : to_token /*'To' ( 'To' | 't' )*/ sp_tab_colon to_spec; catch [ANTLR3_RECOGNITION_EXCEPTION] { belle_sip_message("[\%s] reason [\%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref($header_to::current); $ret=NULL; } to_spec : ( name_addr_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($header_to::current)] | paramless_addr_spec_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($header_to::current)] ) ( SEMI lws? to_param lws?)*; to_param : /*tag_param |*/ generic_param [BELLE_SIP_PARAMETERS($header_to::current)]; diversion_token: {IS_HEADER_NAMED(Diversion,d)}? token; header_diversion returns [belle_sip_header_diversion_t* ret=NULL] scope { belle_sip_header_diversion_t* current; } @init { $header_diversion::current = belle_sip_header_diversion_new(); $ret = $header_diversion::current;} : diversion_token /*'Diversion' ( 'Diversion' | 'd' )*/ sp_tab_colon diversion_spec; catch [ANTLR3_RECOGNITION_EXCEPTION] { belle_sip_message("[\%s] reason [\%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref($header_diversion::current); $ret=NULL; } diversion_spec : ( name_addr_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($header_diversion::current)] | paramless_addr_spec_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($header_diversion::current)] ) ( SEMI lws? diversion_param lws?)*; diversion_param : /*tag_param |*/ generic_param [BELLE_SIP_PARAMETERS($header_diversion::current)]; refer_to_token: {IS_TOKEN(Refer-To)}? token; header_refer_to returns [belle_sip_header_refer_to_t* ret=NULL] : refer_to_token /*'Refer-To'*/ sp_tab_colon refer_to_spec[BELLE_SIP_HEADER_ADDRESS(belle_sip_header_refer_to_new())] {$ret = BELLE_SIP_HEADER_REFER_TO($refer_to_spec.ret);}; referred_by_token: {IS_TOKEN(Referred-By)}? token; header_referred_by returns [belle_sip_header_referred_by_t* ret=NULL] : referred_by_token /*'Referred-By'*/ sp_tab_colon refer_to_spec[BELLE_SIP_HEADER_ADDRESS(belle_sip_header_referred_by_new())] {$ret = BELLE_SIP_HEADER_REFERRED_BY($refer_to_spec.ret);}; refer_to_spec [belle_sip_header_address_t* address] returns [belle_sip_header_address_t* ret] @init {$ret=address;} : (( name_addr[address] | paramless_addr_spec[address]) ( SEMI lws? generic_param [BELLE_SIP_PARAMETERS(address)] lws? )* ); catch [ANTLR3_RECOGNITION_EXCEPTION] { belle_sip_message("[\%s] reason [\%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref(address); $ret=NULL; } /* unsupported : 'Unsupported' HCOLON option_tag (COMMA option_tag)*; */ header_user_agent returns [belle_sip_header_user_agent_t* ret] scope { belle_sip_header_user_agent_t* current; } @init { $header_user_agent::current = belle_sip_header_user_agent_new();$ret = $header_user_agent::current;} : {IS_TOKEN(User-Agent)}? token /*'User-Agent'*/ hcolon server_val (lws server_val)*; catch [ANTLR3_RECOGNITION_EXCEPTION] { belle_sip_message("[\%s] reason [\%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref($header_user_agent::current); $ret=NULL; } server_val : word {belle_sip_header_user_agent_add_product($header_user_agent::current,(const char*)$word.text->chars); }; /*serval_item : product | comment ; product : token (SLASH product_version)?; product_version : token; */ via_token: {IS_HEADER_NAMED(Via,v)}? token; header_via returns [belle_sip_header_via_t* ret] scope { belle_sip_header_via_t* current; belle_sip_header_via_t* first; } @init { $header_via::current = NULL;$header_via::first =NULL;$ret = NULL;} : via_token/* ( 'via' | 'v' )*/ hcolon via_parm (comma via_parm)* {$ret = $header_via::first;} ; catch [ANTLR3_RECOGNITION_EXCEPTION] { belle_sip_message("[\%s] reason [\%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); $ret = $header_via::first; if ($ret) belle_sip_object_unref($ret); $ret=NULL; } via_parm scope { belle_sip_header_via_t* prev;} @init { if ($header_via::current == NULL) { $header_via::first = $header_via::current = belle_sip_header_via_new(); $via_parm::prev=NULL; } else { belle_sip_header_t* header; $via_parm::prev=$header_via::current; header = BELLE_SIP_HEADER($header_via::current); belle_sip_header_set_next(header,(belle_sip_header_t*)($header_via::current = belle_sip_header_via_new())); } } : sent_protocol lws sent_by ( semi via_params )*; via_params : /*via_ttl | via_maddr | via_branch | via_extension */ via_received[$header_via::current] | generic_param [BELLE_SIP_PARAMETERS($header_via::current)]; /*via_ttl : 'ttl' EQUAL ttl; via_maddr : 'maddr' EQUAL host;*/ via_received [belle_sip_header_via_t* object] : {IS_TOKEN(received)}? token EQUAL via_address {belle_sip_header_via_set_received(object,(const char*)$via_address.ret);}; via_address returns [const char* ret=NULL] : ipv4address {$ret=(const char*)$ipv4address.text->chars;} | ipv6address {$ret=(const char *)$ipv6address.text->chars;} | ipv6reference {$ret=(const char*)$ipv6reference.ret;} ; /* via_branch : 'branch' EQUAL token; via_extension : generic_param;*/ sent_protocol : (protocol_name slash protocol_version) {belle_sip_header_via_set_protocol($header_via::current,(const char*)$text->chars);} slash transport {belle_sip_header_via_set_transport($header_via::current,(const char*)$transport.text->chars);} ; protocol_name : /*'SIP' |*/ token; protocol_version : token; transport : /* 'UDP' | 'TCP' | 'TLS' | 'SCTP' | */ other_transport; other_transport : token; sent_by : host {belle_sip_header_via_set_host($header_via::current,$host.ret);} ( COLON port {belle_sip_header_via_set_port($header_via::current,$port.ret);} )? ; /* warning : 'Warning' HCOLON warning_value (COMMA warning_value)*; warning_value : warn_code SP warn_agent SP warn_text; warn_code : DIGIT DIGIT DIGIT; warn_agent : hostport | pseudonym; // the name or pseudonym of the server adding // the Warning header, for use in debugging warn_text : quoted_string; pseudonym : token; */ header_www_authenticate returns [belle_sip_header_www_authenticate_t* ret] scope { belle_sip_header_www_authenticate_t* current; } @init { $header_www_authenticate::current = belle_sip_header_www_authenticate_new();$ret = $header_www_authenticate::current; } : {IS_TOKEN(WWW-Authenticate)}? token /*'WWW-Authenticate'*/ hcolon (challenge[$header_www_authenticate::current] (comma {belle_sip_header_t* header = BELLE_SIP_HEADER($header_www_authenticate::current); belle_sip_header_set_next(header,(belle_sip_header_t*)($header_www_authenticate::current = belle_sip_header_www_authenticate_new())); } challenge[$header_www_authenticate::current])*); catch [ANTLR3_RECOGNITION_EXCEPTION] { belle_sip_message("[\%s] reason [\%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref($ret); $ret=NULL; } state_value: token ; header_subscription_state returns [belle_sip_header_subscription_state_t* ret] scope { belle_sip_header_subscription_state_t* current; } @init { $header_subscription_state::current = belle_sip_header_subscription_state_new();$ret = $header_subscription_state::current; } : {IS_TOKEN(Subscription-State)}? token /*"Subscription-State"*/ hcolon state_value {belle_sip_header_subscription_state_set_state($header_subscription_state::current,(const char*)$state_value.text->chars);} (semi generic_param [BELLE_SIP_PARAMETERS($header_subscription_state::current)])* ; catch [ANTLR3_RECOGNITION_EXCEPTION] { belle_sip_message("[\%s] reason [\%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref($header_subscription_state::current); $ret=NULL; } header_event returns [belle_sip_header_event_t* ret] scope { belle_sip_header_event_t* current; } @init { $header_event::current = belle_sip_header_event_new();$ret = $header_event::current; } : {IS_HEADER_NAMED(Event,o)}? token /*"Event"*/ hcolon event_package {belle_sip_header_event_set_package_name($header_event::current,(const char*)$event_package.text->chars);} (semi generic_param [BELLE_SIP_PARAMETERS($header_event::current)])* ; catch [ANTLR3_RECOGNITION_EXCEPTION] { belle_sip_message("[\%s] reason [\%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref($header_event::current); $ret=NULL; } event_package : token; /* Replaces = "Replaces" HCOLON replaces-values *(COMMA replaces-values) replaces-values = callid *( SEMI replaces-param ) callid = token [ "@" token ] replaces-param = to-tag | from-tag | extension-param to-tag = "to-tag" EQUAL ( UUID | "*" ) from-tag = "from-tag" EQUAL UUID extension-param = token [ EQUAL ( token | quoted-string ) ] */ header_replaces returns [belle_sip_header_replaces_t* ret] scope { belle_sip_header_replaces_t* current; } @init { $header_replaces::current = belle_sip_header_replaces_new();$ret = $header_replaces::current; } : {IS_TOKEN(Replaces)}? token /*"Replaces"*/ hcolon call_id {belle_sip_header_replaces_set_call_id($header_replaces::current,(const char*)$call_id.text->chars);} (semi generic_param [BELLE_SIP_PARAMETERS($header_replaces::current)])* ; catch [ANTLR3_RECOGNITION_EXCEPTION] { belle_sip_message("[\%s] reason [\%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref($header_replaces::current); $ret=NULL; } //**********************************Privacy*******************************// header_p_preferred_identity returns [belle_sip_header_p_preferred_identity_t* ret] @init { $ret=NULL; } : {IS_TOKEN(P-Preferred-Identity)}? token /*"P-Preferred-Identity"*/ sp_tab_colon header_address_base[(belle_sip_header_address_t*)belle_sip_header_p_preferred_identity_new()] {$ret=(belle_sip_header_p_preferred_identity_t*)$header_address_base.ret;}; header_privacy returns [belle_sip_header_privacy_t* ret] scope { belle_sip_header_privacy_t* current; } @init { $header_privacy::current = belle_sip_header_privacy_new();$ret = $header_privacy::current;} : {IS_TOKEN(Privacy)}? token /*'Privacy'*/ hcolon privacy_val (semi privacy_val)*; catch [ANTLR3_RECOGNITION_EXCEPTION] { belle_sip_message("[\%s] reason [\%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref($ret); $ret=NULL; } privacy_val: token {belle_sip_header_privacy_add_privacy($header_privacy::current,(const char*)$token.text->chars);}; //**********************************Supported*******************************// header_supported returns [belle_sip_header_supported_t* ret] scope { belle_sip_header_supported_t* current; } @init { $header_supported::current = belle_sip_header_supported_new();$ret = $header_supported::current;} : {IS_TOKEN(Supported)}? token /*'Supported'*/ hcolon supported_val (comma supported_val)*; catch [ANTLR3_RECOGNITION_EXCEPTION] { belle_sip_message("[\%s] reason [\%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref($ret); $ret=NULL; } supported_val: token {belle_sip_header_supported_add_supported($header_supported::current,(const char*)$token.text->chars);}; //**********************************Session-Expires*******************************// header_session_expires returns [belle_sip_header_session_expires_t* ret] scope { belle_sip_header_session_expires_t* current; } @init { $header_session_expires::current = belle_sip_header_session_expires_new(); $ret = $header_session_expires::current; } : {IS_TOKEN(Session-Expires)}? token /*"Session-Expires"*/ hcolon delta_seconds { belle_sip_header_session_expires_set_delta($header_session_expires::current, atoi((const char *)$delta_seconds.text->chars)); } (semi generic_param [BELLE_SIP_PARAMETERS($header_session_expires::current)])*; catch [ANTLR3_RECOGNITION_EXCEPTION] { belle_sip_message("[\%s] reason [\%s]", (const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref($header_session_expires::current); $ret=NULL; } //**********************************Require*******************************// header_require returns [belle_sip_header_require_t* ret] scope { belle_sip_header_require_t* current; } @init { $header_require::current = belle_sip_header_require_new();$ret = $header_require::current;} : {IS_TOKEN(Require)}? token /*'Require'*/ hcolon require_val (comma require_val)*; catch [ANTLR3_RECOGNITION_EXCEPTION] { belle_sip_message("[\%s] reason [\%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref($ret); $ret=NULL; } require_val: token {belle_sip_header_require_add_require($header_require::current,(const char*)$token.text->chars);}; //**********************************Content-Disposition*******************************// content_disposition_value: token ; header_content_disposition returns [belle_sip_header_content_disposition_t* ret] scope { belle_sip_header_content_disposition_t* current; } @init { $header_content_disposition::current = belle_sip_header_content_disposition_new();$ret = $header_content_disposition::current; } : {IS_TOKEN(Content-Disposition)}? token /*"Content-Disposition"*/ hcolon content_disposition_value {belle_sip_header_content_disposition_set_content_disposition($header_content_disposition::current,(const char*)$content_disposition_value.text->chars);} (semi generic_param [BELLE_SIP_PARAMETERS($header_content_disposition::current)])* ; catch [ANTLR3_RECOGNITION_EXCEPTION] { belle_sip_message("[\%s] reason [\%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref($header_content_disposition::current); $ret=NULL; } //**********************************Accept*******************************// accept_token : {IS_TOKEN(Accept)}? token; header_accept returns [belle_sip_header_accept_t* ret=NULL] scope { belle_sip_header_accept_t* current; belle_sip_header_accept_t* first; } @init { $header_accept::current = NULL;$header_accept::first =NULL;$ret = NULL;} : accept_token/* ( 'Accept')*/ hcolon accept_param (comma accept_param)* {$ret = $header_accept::first;} ; catch [ANTLR3_RECOGNITION_EXCEPTION] { belle_sip_message("[\%s] reason [\%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); $ret = $header_accept::first; if ($ret) belle_sip_object_unref($ret); $ret=NULL; } accept_param scope { belle_sip_header_accept_t* prev;} @init { if ($header_accept::current == NULL) { $header_accept::first = $header_accept::current = belle_sip_header_accept_new(); $accept_param::prev=NULL; } else { belle_sip_header_t* header; $accept_param::prev=$header_accept::current; header = BELLE_SIP_HEADER($header_accept::current); belle_sip_header_set_next(header,(belle_sip_header_t*)($header_accept::current = belle_sip_header_accept_new())); } } : accept_main_media_type {belle_sip_header_accept_set_type($header_accept::current,(const char*)$accept_main_media_type.text->chars);} slash accept_sub_media_type {belle_sip_header_accept_set_subtype($header_accept::current,(const char*)$accept_sub_media_type.text->chars);} (semi generic_param [BELLE_SIP_PARAMETERS($header_accept::current)])*; accept_main_media_type: token; accept_sub_media_type: token; //****************************Reason***********************************// /* Reason = "Reason" HCOLON reason-value *(COMMA reason-value) reason-value = protocol *(SEMI reason-params) protocol = "SIP" / "Q.850" / token reason-params = protocol-cause / reason-text / reason-extension protocol-cause = "cause" EQUAL cause cause = 1*DIGIT reason-text = "text" EQUAL quoted-string reason-extension = generic-param */ header_reason returns [belle_sip_header_reason_t* ret=NULL] scope { belle_sip_header_reason_t* current;belle_sip_header_reason_t* first; } @init { $header_reason::current = NULL; $header_reason::first =NULL;} : {IS_TOKEN(Reason)}? token /*'Reason'*/ hcolon header_reason_param ( comma header_reason_param)* {$ret = $header_reason::first; }; catch [ANTLR3_RECOGNITION_EXCEPTION] { belle_sip_message("[\%s] reason [\%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); $ret = $header_reason::first; if ($ret) belle_sip_object_unref($ret); $ret=NULL; } header_reason_param scope { belle_sip_header_reason_t* prev;} @init { if ($header_reason::current == NULL) { $header_reason::first = $header_reason::current = belle_sip_header_reason_new(); $header_reason_param::prev=NULL; } else { belle_sip_header_t* header = BELLE_SIP_HEADER($header_reason::current); $header_reason_param::prev=$header_reason::current; belle_sip_header_set_next(header,(belle_sip_header_t*)($header_reason::current = belle_sip_header_reason_new())); } } :header_reason_protocol {belle_sip_header_reason_set_protocol($header_reason::current,(const char*)$header_reason_protocol.text->chars);} (semi generic_param [BELLE_SIP_PARAMETERS($header_reason::current)])*; header_reason_protocol : token; //*********************************************// /* AuthenticationInfo = "Authentication-Info" ":" auth-info auth-info = 1#(nextnonce | [ message-qop ] | [ response-auth ] | [ cnonce ] | [nonce-count] ) nextnonce = "nextnonce" "=" nonce-value response-auth = "rspauth" "=" response-digest response-digest = <"> *LHEX <"> */ header_authentication_info returns [belle_sip_header_authentication_info_t* ret=NULL] scope { belle_sip_header_authentication_info_t* current; } @init {$header_authentication_info::current = belle_sip_header_authentication_info_new(); $ret=$header_authentication_info::current; } : {IS_TOKEN( Authentication-Info)}? token /*' Authentication-Info'*/ hcolon auth_info ( comma auth_info)*; catch [ANTLR3_RECOGNITION_EXCEPTION] { belle_sip_message("[\%s] reason [\%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref($header_authentication_info::current); $ret=NULL; } auth_info : ( next_nonce { belle_sip_header_authentication_info_set_next_nonce($header_authentication_info::current,(char*)$next_nonce.ret); belle_sip_free($next_nonce.ret); } |cnonce{ belle_sip_header_authentication_info_set_cnonce($header_authentication_info::current,(char*)$cnonce.ret); belle_sip_free($cnonce.ret); } | authentication_info_message_qop{ belle_sip_header_authentication_info_set_qop($header_authentication_info::current,$authentication_info_message_qop.ret); } |nonce_count{ belle_sip_header_authentication_info_set_nonce_count($header_authentication_info::current,atoi((char*)$nonce_count.ret)); } |rspauth { belle_sip_header_authentication_info_set_rsp_auth($header_authentication_info::current,$rspauth.ret); belle_sip_free($rspauth.ret); }) ; qop_token : {IS_TOKEN(qop)}? token/*'qop'*/; /*as defined by 3261*/ authentication_info_message_qop returns [const char* ret=NULL] : qop_token equal token { $ret = (const char*)$token.text->chars;}; rspauth returns [char* ret=NULL] : {IS_TOKEN(rspauth)}? token /*'nonce'*/ equal quoted_string{ $ret = _belle_sip_str_dup_and_unquote_string((char*)$quoted_string.text->chars); }; next_nonce returns [char* ret=NULL] : {IS_TOKEN(nextnonce)}? token /*'nonce'*/ equal nonce_value{ $ret = _belle_sip_str_dup_and_unquote_string((char*)$nonce_value.text->chars); }; quoted_algorithm returns [char* ret=NULL] : {IS_TOKEN(nextnonce)}? token /*'nonce'*/ equal nonce_value{ $ret = _belle_sip_str_dup_and_unquote_string((char*)$nonce_value.text->chars); }; //**********************************************// header returns [belle_sip_header_t* ret=NULL] : header_extension_base[FALSE] {$ret=$header_extension_base.ret;}; //********************************************************************************************// header_extension_base[ANTLR3_BOOLEAN is_http] returns [belle_sip_header_t* ret] scope {int as_value;} @init {$header_extension_base::as_value=0;$ret=NULL;} : (header_name hcolon /*sp_tab_colon*/ /*because LWS can be in both colon or header_value*/ (header_value[(const char*)$header_name.text->chars,$is_http ]{$header_extension_base::as_value=1;$ret=$header_value.ret;})?) { if (!$ret && !$header_extension_base::as_value) { /*to handle value parsing error*/ /*special case: header without value*/ $ret=belle_sip_header_create((const char*)$header_name.text->chars,NULL); } }; catch [ANTLR3_RECOGNITION_EXCEPTION] { belle_sip_message("[\%s] reason [\%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); if ($ret) belle_sip_object_unref($ret); $ret=NULL; } header_name : token; header_value[const char* name, ANTLR3_BOOLEAN is_http] returns [belle_sip_header_t* ret] options { greedy = false; } @init {$ret=NULL;} : (~(SP|CRLF) ((CRLF SP) | ~CRLF)* ) { if ($is_http) { $ret=belle_http_header_create($name,(const char*)$header_value.text->chars); }else { $ret=belle_sip_header_create($name,(const char*)$header_value.text->chars); } } ; message_body options { greedy = false; } : OCTET+; paramless_uri returns [belle_sip_uri_t* ret=NULL] scope { belle_sip_uri_t* current; } @init { $paramless_uri::current = belle_sip_uri_new(); } : sip_schema[$paramless_uri::current] ( (userinfo[$paramless_uri::current]) =>(userinfo[$paramless_uri::current] hostport[$paramless_uri::current]) | hostport[$paramless_uri::current]) headers[$paramless_uri::current]? {$ret = $paramless_uri::current;}; catch [ANTLR3_RECOGNITION_EXCEPTION] { belle_sip_message("[\%s] reason [\%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref($paramless_uri::current); $ret=NULL; } uri returns [belle_sip_uri_t* ret=NULL] scope { belle_sip_uri_t* current; } @init { $uri::current = belle_sip_uri_new(); } : sip_schema[$uri::current] ( ((userinfo[NULL])=>userinfo[$uri::current] hostport[$uri::current]) | hostport[$uri::current] ) uri_parameters[$uri::current]? headers[$uri::current]? {$ret = $uri::current;}; catch [ANTLR3_RECOGNITION_EXCEPTION] { belle_sip_message("[\%s] reason [\%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref($uri::current); $ret=NULL; } fast_uri returns [belle_sip_uri_t* ret=NULL] scope { belle_sip_uri_t* current; } @init { $fast_uri::current = belle_sip_uri_new(); } : sip_schema[$fast_uri::current] ( ((userinfo[NULL])=>userinfo[$fast_uri::current] fast_hostport[$fast_uri::current]) | fast_hostport[$fast_uri::current] ) uri_parameters[$fast_uri::current]? headers[$fast_uri::current]? {$ret = $fast_uri::current;}; catch [ANTLR3_RECOGNITION_EXCEPTION] { belle_sip_message("[\%s] reason [\%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref($fast_uri::current); $ret=NULL; } sip_token: {IS_TOKEN(sip)}? token; sips_token: {IS_TOKEN(sips)}? token; sip_schema[belle_sip_uri_t* uri] : (sips_token {belle_sip_uri_set_secure(uri,1);} | sip_token) COLON ; userinfo[belle_sip_uri_t* uri] scope { belle_sip_uri_t* current; } @init {$userinfo::current=uri;} : user ( COLON password )? AT; user : ( unreserved | escaped | user_unreserved )+ { char* unescaped_username; unescaped_username=belle_sip_to_unescaped_string((const char *)$text->chars); belle_sip_uri_set_user($userinfo::current,unescaped_username); belle_sip_free(unescaped_username); }; password : ( unreserved | escaped |AND | EQUAL | PLUS | DOLLARD | COMMA )* { char* unescaped_userpasswd; const char* source = (const char*)$text->chars; if( source != NULL ){ unescaped_userpasswd=belle_sip_to_unescaped_string((const char *)source); belle_sip_uri_set_user_password($userinfo::current,unescaped_userpasswd); belle_sip_free(unescaped_userpasswd); } }; hostport[belle_sip_uri_t* uri] scope { belle_sip_uri_t* current; } @init {$hostport::current=uri;} : host ( COLON port {belle_sip_uri_set_port($hostport::current,$port.ret);})? {belle_sip_uri_set_host($hostport::current,$host.ret);}; fast_hostport[belle_sip_uri_t* uri] scope { belle_sip_uri_t* current; } @init {$fast_hostport::current=uri;} : fast_host ( COLON port {belle_sip_uri_set_port($fast_hostport::current,$port.ret);})? {belle_sip_uri_set_host($fast_hostport::current,$fast_host.ret);}; uri_parameters[belle_sip_uri_t* uri] scope { belle_sip_uri_t* current; } @init {$uri_parameters::current=uri;} : ( (semi uri_parameter)|(lws? SEMI) )+; /*allow semi only teven if not in the rfc*/ uri_parameter //all parameters are considered as other : other_param ; other_param : pname { char* unescaped_parameters = belle_sip_to_unescaped_string((const char *) $pname.text->chars); belle_sip_parameters_set_parameter(BELLE_SIP_PARAMETERS($uri_parameters::current) ,unescaped_parameters ,NULL); belle_sip_free(unescaped_parameters); } | (pname EQUAL pvalue) { char* unescaped_pname = belle_sip_to_unescaped_string((const char *) $pname.text->chars); char* unescaped_pvalue = belle_sip_to_unescaped_string((const char *) $pvalue.text->chars); belle_sip_parameters_set_parameter(BELLE_SIP_PARAMETERS($uri_parameters::current) ,unescaped_pname ,unescaped_pvalue); belle_sip_free(unescaped_pname); belle_sip_free(unescaped_pvalue); } ; pname : paramchar+; pvalue : paramchar+; paramchar : (param_unreserved)=>param_unreserved | unreserved | escaped; param_unreserved : LSBRAQUET | RSBRAQUET | SLASH | COLON | AND | PLUS | DOLLARD | DOT; headers[belle_sip_uri_t* uri] scope { belle_sip_uri_t* current; int is_hvalue; } @init {$headers::current=uri; $headers::is_hvalue=0;} : QMARK uri_header ( AND uri_header )* ; uri_header scope {int is_hvalue; } @init {$uri_header::is_hvalue=0;} : hname EQUAL (hvalue{$uri_header::is_hvalue = 1;})? { char* unescaped_hname = belle_sip_to_unescaped_string((const char *)$hname.text->chars); char* unescaped_hvalue = ($uri_header::is_hvalue)?belle_sip_to_unescaped_string((const char *)$hvalue.text->chars):NULL; belle_sip_uri_set_header($headers::current,unescaped_hname,unescaped_hvalue); belle_sip_free(unescaped_hname); if (unescaped_hvalue) belle_sip_free(unescaped_hvalue); }; hname : ( hnv_unreserved | unreserved | escaped )+; hvalue : ( hnv_unreserved | unreserved | escaped )+; /*hnv-unreserved = "[" / "]" / "/" / "?" / ":" / "+" / "$"*/ hnv_unreserved : LSBRAQUET | RSBRAQUET | SLASH | QMARK | COLON | PLUS | DOLLARD ; fast_host returns [const char* ret] scope { const char* current; } @init {$fast_host::current=$ret=NULL;} : (fast_hostname {$fast_host::current=(const char *)$fast_hostname.text->chars;} /*| ipv4address {$fast_host::current=(const char *)$ipv4address.text->chars;} because cannot discriminate quickly betwenn 192.168.0.1 and 192.168.0.com*/ | ipv6reference {$fast_host::current=(const char *)$ipv6reference.ret;}) {$ret=$fast_host::current;}; fast_hostname: alphanum ( alphanum | DASH | DOT )*; //*************************common tokens*******************************/ user_unreserved : AND | EQUAL | PLUS | DOLLARD | COMMA | SEMI | QMARK | SLASH; host returns [const char* ret] scope { const char* current; } @init {$host::current=$ret=NULL;} : (hostname {$host::current=(const char *)$hostname.text->chars;} | ipv4address {$host::current=(const char *)$ipv4address.text->chars;} | ipv6reference {$host::current=(const char *)$ipv6reference.ret;}) {$ret=$host::current;}; hostname : ( domainlabel DOT )* (toplabel)=>toplabel DOT? ; domainlabel : alphanum | (alphanum ( alphanum | DASH )* alphanum) ; toplabel : alphanum ( DASH? alphanum)+; ipv4address : three_digit DOT three_digit DOT three_digit DOT three_digit ; ipv6reference returns [const char* ret=NULL] : LSBRAQUET ipv6address RSBRAQUET {$ret=(const char *)$ipv6address.text->chars;}; ipv6address : hexpart ( COLON ipv4address )? | ( hexseq )? COLON COLON ipv4address; hexpart : hexseq | hexseq COLON COLON ( hexseq )? | COLON COLON ( hexseq )?; hexseq : hex4 ( COLON hex4)*; hex4 : hexdigit+;/* hexdigit hexdigit hexdigit ;*/ port returns [int ret] @init {$ret=-1;} : DIGIT+ { $ret=atoi((const char *)$text->chars); }; escaped : PERCENT hexdigit hexdigit; ttl : three_digit; three_digit: (DIGIT) => DIGIT | (DIGIT DIGIT) => (DIGIT DIGIT) | (DIGIT DIGIT DIGIT) =>(DIGIT DIGIT DIGIT) ; token : (alphanum | mark | PERCENT | PLUS | BQUOTE )+; reserved_for_from_to_contact_addr_spec: COLON | AT | AND | EQUAL | PLUS | DOLLARD | SLASH; reserved : SEMI | COMMA | QMARK | reserved_for_from_to_contact_addr_spec ; unreserved : alphanum |mark; alphanum : alpha | DIGIT ; hexdigit : HEX_CHAR|DIGIT; alpha : HEX_CHAR | COMMON_CHAR; word : (alphanum | mark | PERCENT | PLUS | BQUOTE | LAQUOT | RAQUOT | COLON | BSLASH | DQUOTE | SLASH | LSBRAQUET | RSBRAQUET | QMARK | LBRACE | RBRACE )+; mark : DASH | USCORE | DOT | EMARK | TILDE | STAR | SQUOTE | LPAREN | RPAREN ; sp_tab_colon :( SP | HTAB )* COLON ; hcolon : sp_tab_colon lws? //SWS; ;//|( SP | HTAB )* COLON LWS+; ldquot : lws? DQUOTE ; rdquot : DQUOTE lws?; semi: lws? SEMI lws?; comma : lws? COMMA lws?; sp_laquot : lws? LAQUOT ; raquot_sp : RAQUOT lws?; equal: lws? EQUAL lws?; slash : lws? SLASH lws?; lws : (SP* CRLF SP+) | SP+ ; //linear whitespace //*************************************common tokens*****************/ COMMON_CHAR : 'g'..'z' | 'G'..'Z' ; HEX_CHAR: 'a'..'f' |'A'..'F'; DIGIT : '0'..'9' ; AT: '@'; AND: '&'; DOLLARD: '$'; QMARK: '?'; EMARK: '!'; DASH: '-'; CRLF : '\r\n' { USER1 = (int)((char*)ctx->pLexer->input->currentLine - (char*)ctx->pLexer->input->data); /*GETCHARINDEX()*/;}; HTAB : ' '; OR : '|'; PERCENT: '%'; DQUOTE : '"'; SQUOTE : '\''; BQUOTE: '`'; BSLASH: '\\'; LBRACE: '{'; RBRACE: '}'; USCORE: '_'; TILDE: '~'; DOT: '.'; PLUS: '+'; COLON : ':' ; SEMI : ';' ; COMMA : ',' ; LAQUOT : '<' ; RAQUOT : '>' ; RPAREN : ')' ; LPAREN : '(' ; RSBRAQUET : ']' ; LSBRAQUET : '[' ; EQUAL : '=' ; SLASH : '/' ; STAR : '*' ; SP : ' ' ; OCTET : . ; belle-sip-5.2.0+dfsg/src/grammars/belle_sip_messageLexer.c000066400000000000000000001760001434613136500235310ustar00rootroot00000000000000/** \file * This C source file was generated by $ANTLR version 3.4 * * - From the grammar source file : ../grammars/belle_sip_message.g * - On : 2022-08-03 14:19:17 * - for the lexer : belle_sip_messageLexerLexer * * Editing it, at least manually, is not wise. * * C language generator and runtime by Jim Idle, jimi|hereisanat|idle|dotgoeshere|ws. * * */ // [The "BSD license"] // Copyright (c) 2005-2009 Jim Idle, Temporal Wave LLC // http://www.temporal-wave.com // http://www.linkedin.com/in/jimidle // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // 1. Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // 2. Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // 3. The name of the author may not be used to endorse or promote products // derived from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR // IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES // OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT // NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF // THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /* ============================================================================= * This is what the grammar programmer asked us to put at the top of every file. */ /* belle-sip - SIP (RFC3261) library. Copyright (C) 2010 Belledonne Communications SARL This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #pragma GCC diagnostic ignored "-Wparentheses" #pragma GCC diagnostic ignored "-Wunused" /* End of Header action. * ============================================================================= */ /* ----------------------------------------- * Include the ANTLR3 generated header file. */ #include "belle_sip_messageLexer.h" /* ----------------------------------------- */ /** String literals used by belle_sip_messageLexer that we must do things like MATCHS() with. * C will normally just lay down 8 bit characters, and you can use L"xxx" to * get wchar_t, but wchar_t is 16 bits on Windows, which is not UTF32 and so * we perform this little trick of defining the literals as arrays of UINT32 * and passing in the address of these. */ static ANTLR3_UCHAR lit_1[] = { 0x0D, 0x0A, ANTLR3_STRING_TERMINATOR}; /* MACROS that hide the C interface implementations from the * generated code, which makes it a little more understandable to the human eye. * I am very much against using C pre-processor macros for function calls and bits * of code as you cannot see what is happening when single stepping in debuggers * and so on. The exception (in my book at least) is for generated code, where you are * not maintaining it, but may wish to read and understand it. If you single step it, you know that input() * hides some indirect calls, but is always referring to the input stream. This is * probably more readable than ctx->input->istream->input(snarfle0->blarg) and allows me to rejig * the runtime interfaces without changing the generated code too often, without * confusing the reader of the generated output, who may not wish to know the gory * details of the interface inheritance. */ #define CTX ctx /* Aids in accessing scopes for grammar programmers */ #undef SCOPE_TYPE #undef SCOPE_STACK #undef SCOPE_TOP #define SCOPE_TYPE(scope) pbelle_sip_messageLexer_##scope##_SCOPE #define SCOPE_STACK(scope) pbelle_sip_messageLexer_##scope##Stack #define SCOPE_TOP(scope) ctx->pbelle_sip_messageLexer_##scope##Top #define SCOPE_SIZE(scope) ctx->pbelle_sip_messageLexer_##scope##Stack_limit #define SCOPE_INSTANCE(scope, i) (ctx->SCOPE_STACK(scope)->get(ctx->SCOPE_STACK(scope),i)) /* Macros for accessing things in a lexer */ #undef LEXER #undef RECOGNIZER #undef RULEMEMO #undef GETCHARINDEX #undef GETLINE #undef GETCHARPOSITIONINLINE #undef EMIT #undef EMITNEW #undef MATCHC #undef MATCHS #undef MATCHRANGE #undef LTOKEN #undef HASFAILED #undef FAILEDFLAG #undef INPUT #undef STRSTREAM #undef LA #undef HASEXCEPTION #undef EXCEPTION #undef CONSTRUCTEX #undef CONSUME #undef LRECOVER #undef MARK #undef REWIND #undef REWINDLAST #undef BACKTRACKING #undef MATCHANY #undef MEMOIZE #undef HAVEPARSEDRULE #undef GETTEXT #undef INDEX #undef SEEK #undef PUSHSTREAM #undef POPSTREAM #undef SETTEXT #undef SETTEXT8 #define LEXER ctx->pLexer #define RECOGNIZER LEXER->rec #define LEXSTATE RECOGNIZER->state #define TOKSOURCE LEXSTATE->tokSource #define GETCHARINDEX() LEXER->getCharIndex(LEXER) #define GETLINE() LEXER->getLine(LEXER) #define GETTEXT() LEXER->getText(LEXER) #define GETCHARPOSITIONINLINE() LEXER->getCharPositionInLine(LEXER) #define EMIT() LEXSTATE->type = _type; LEXER->emit(LEXER) #define EMITNEW(t) LEXER->emitNew(LEXER, t) #define MATCHC(c) LEXER->matchc(LEXER, c) #define MATCHS(s) LEXER->matchs(LEXER, s) #define MATCHRANGE(c1,c2) LEXER->matchRange(LEXER, c1, c2) #define MATCHANY() LEXER->matchAny(LEXER) #define LTOKEN LEXSTATE->token #define HASFAILED() (LEXSTATE->failed == ANTLR3_TRUE) #define BACKTRACKING LEXSTATE->backtracking #define FAILEDFLAG LEXSTATE->failed #define INPUT LEXER->input #define STRSTREAM INPUT #define ISTREAM INPUT->istream #define INDEX() ISTREAM->index(ISTREAM) #define SEEK(n) ISTREAM->seek(ISTREAM, n) #define EOF_TOKEN &(LEXSTATE->tokSource->eofToken) #define HASEXCEPTION() (LEXSTATE->error == ANTLR3_TRUE) #define EXCEPTION LEXSTATE->exception #define CONSTRUCTEX() RECOGNIZER->exConstruct(RECOGNIZER) #define LRECOVER() LEXER->recover(LEXER) #define MARK() ISTREAM->mark(ISTREAM) #define REWIND(m) ISTREAM->rewind(ISTREAM, m) #define REWINDLAST() ISTREAM->rewindLast(ISTREAM) #define MEMOIZE(ri,si) RECOGNIZER->memoize(RECOGNIZER, ri, si) #define HAVEPARSEDRULE(r) RECOGNIZER->alreadyParsedRule(RECOGNIZER, r) #define PUSHSTREAM(str) LEXER->pushCharStream(LEXER, str) #define POPSTREAM() LEXER->popCharStream(LEXER) #define SETTEXT(str) LEXSTATE->text = str #define SKIP() LEXSTATE->token = &(TOKSOURCE->skipToken) #define USER1 LEXSTATE->user1 #define USER2 LEXSTATE->user2 #define USER3 LEXSTATE->user3 #define CUSTOM LEXSTATE->custom #define RULEMEMO LEXSTATE->ruleMemo #define DBG RECOGNIZER->debugger /* If we have been told we can rely on the standard 8 bit or UTF16 input * stream, then we can define our macros to use the direct pointers * in the input object, which is much faster than indirect calls. This * is really only significant to lexers with a lot of fragment rules (which * do not place LA(1) in a temporary at the moment) and even then * only if there is a lot of input (order of say 1M or so). */ #if defined(ANTLR3_INLINE_INPUT_8BIT) || defined(ANTLR3_INLINE_INPUT_UTF16) # ifdef ANTLR3_INLINE_INPUT_8BIT /* 8 bit character set */ # define NEXTCHAR ((pANTLR3_UINT8)(INPUT->nextChar)) # define DATAP ((pANTLR3_UINT8)(INPUT->data)) # else # define NEXTCHAR ((pANTLR3_UINT16)(INPUT->nextChar)) # define DATAP ((pANTLR3_UINT16)(INPUT->data)) # endif # define LA(n) ((NEXTCHAR + n) > (DATAP + INPUT->sizeBuf) ? ANTLR3_CHARSTREAM_EOF : (ANTLR3_UCHAR)(*(NEXTCHAR + n - 1))) # define CONSUME() \ { \ if (NEXTCHAR < (DATAP + INPUT->sizeBuf)) \ { \ INPUT->charPositionInLine++; \ if ((ANTLR3_UCHAR)(*NEXTCHAR) == INPUT->newlineChar) \ { \ INPUT->line++; \ INPUT->charPositionInLine = 0; \ INPUT->currentLine = (void *)(NEXTCHAR + 1); \ } \ INPUT->nextChar = (void *)(NEXTCHAR + 1); \ } \ } #else // Pick up the input character by calling the input stream implementation. // #define CONSUME() INPUT->istream->consume(INPUT->istream) #define LA(n) INPUT->istream->_LA(INPUT->istream, n) #endif #define TOKTEXT(tok, txt) tok, (pANTLR3_UINT8)txt /* The 4 tokens defined below may well clash with your own #defines or token types. If so * then for the present you must use different names for your defines as these are hard coded * in the code generator. It would be better not to use such names internally, and maybe * we can change this in a forthcoming release. I deliberately do not #undef these * here as this will at least give you a redefined error somewhere if they clash. */ #define UP ANTLR3_TOKEN_UP #define DOWN ANTLR3_TOKEN_DOWN #define EOR ANTLR3_TOKEN_EOR #define INVALID ANTLR3_TOKEN_INVALID /* ============================================================================= * Functions to create and destroy scopes. First come the rule scopes, followed * by the global declared scopes. */ /* ============================================================================= */ /* ============================================================================= * Start of recognizer */ /* Forward declare the locally static matching functions we have generated and any predicate functions. */ static ANTLR3_INLINE void mCOMMON_CHAR (pbelle_sip_messageLexer ctx); static ANTLR3_INLINE void mHEX_CHAR (pbelle_sip_messageLexer ctx); static ANTLR3_INLINE void mDIGIT (pbelle_sip_messageLexer ctx); static ANTLR3_INLINE void mAT (pbelle_sip_messageLexer ctx); static ANTLR3_INLINE void mAND (pbelle_sip_messageLexer ctx); static ANTLR3_INLINE void mDOLLARD (pbelle_sip_messageLexer ctx); static ANTLR3_INLINE void mQMARK (pbelle_sip_messageLexer ctx); static ANTLR3_INLINE void mEMARK (pbelle_sip_messageLexer ctx); static ANTLR3_INLINE void mDASH (pbelle_sip_messageLexer ctx); static ANTLR3_INLINE void mCRLF (pbelle_sip_messageLexer ctx); static ANTLR3_INLINE void mHTAB (pbelle_sip_messageLexer ctx); static ANTLR3_INLINE void mOR (pbelle_sip_messageLexer ctx); static ANTLR3_INLINE void mPERCENT (pbelle_sip_messageLexer ctx); static ANTLR3_INLINE void mDQUOTE (pbelle_sip_messageLexer ctx); static ANTLR3_INLINE void mSQUOTE (pbelle_sip_messageLexer ctx); static ANTLR3_INLINE void mBQUOTE (pbelle_sip_messageLexer ctx); static ANTLR3_INLINE void mBSLASH (pbelle_sip_messageLexer ctx); static ANTLR3_INLINE void mLBRACE (pbelle_sip_messageLexer ctx); static ANTLR3_INLINE void mRBRACE (pbelle_sip_messageLexer ctx); static ANTLR3_INLINE void mUSCORE (pbelle_sip_messageLexer ctx); static ANTLR3_INLINE void mTILDE (pbelle_sip_messageLexer ctx); static ANTLR3_INLINE void mDOT (pbelle_sip_messageLexer ctx); static ANTLR3_INLINE void mPLUS (pbelle_sip_messageLexer ctx); static ANTLR3_INLINE void mCOLON (pbelle_sip_messageLexer ctx); static ANTLR3_INLINE void mSEMI (pbelle_sip_messageLexer ctx); static ANTLR3_INLINE void mCOMMA (pbelle_sip_messageLexer ctx); static ANTLR3_INLINE void mLAQUOT (pbelle_sip_messageLexer ctx); static ANTLR3_INLINE void mRAQUOT (pbelle_sip_messageLexer ctx); static ANTLR3_INLINE void mRPAREN (pbelle_sip_messageLexer ctx); static ANTLR3_INLINE void mLPAREN (pbelle_sip_messageLexer ctx); static ANTLR3_INLINE void mRSBRAQUET (pbelle_sip_messageLexer ctx); static ANTLR3_INLINE void mLSBRAQUET (pbelle_sip_messageLexer ctx); static ANTLR3_INLINE void mEQUAL (pbelle_sip_messageLexer ctx); static ANTLR3_INLINE void mSLASH (pbelle_sip_messageLexer ctx); static ANTLR3_INLINE void mSTAR (pbelle_sip_messageLexer ctx); static ANTLR3_INLINE void mSP (pbelle_sip_messageLexer ctx); static ANTLR3_INLINE void mOCTET (pbelle_sip_messageLexer ctx); static ANTLR3_INLINE void mTokens (pbelle_sip_messageLexer ctx); static void belle_sip_messageLexerFree(pbelle_sip_messageLexer ctx); /* ========================================================================= * Lexer matching rules end. * ========================================================================= */ static void belle_sip_messageLexerFree (pbelle_sip_messageLexer ctx) { LEXER->free(LEXER); ANTLR3_FREE(ctx); } static void belle_sip_messageLexerReset (pbelle_sip_messageLexer ctx) { RECOGNIZER->reset(RECOGNIZER); } /** \brief Name of the grammar file that generated this code */ static const char fileName[] = "../grammars/belle_sip_message.g"; /** \brief Return the name of the grammar file that generated this code. */ static const char * getGrammarFileName() { return fileName; } /** \brief Create a new lexer called belle_sip_messageLexer * * \param[in] instream Pointer to an initialized input stream * \return * - Success pbelle_sip_messageLexer initialized for the lex start * - Fail NULL */ ANTLR3_API pbelle_sip_messageLexer belle_sip_messageLexerNew ( pANTLR3_INPUT_STREAM instream) { // See if we can create a new lexer with the standard constructor // return belle_sip_messageLexerNewSSD(instream, NULL); } /** \brief Create a new lexer called belle_sip_messageLexer * * \param[in] instream Pointer to an initialized input stream * \param[state] state Previously created shared recognizer stat * \return * - Success pbelle_sip_messageLexer initialized for the lex start * - Fail NULL */ ANTLR3_API pbelle_sip_messageLexer belle_sip_messageLexerNewSSD (pANTLR3_INPUT_STREAM instream, pANTLR3_RECOGNIZER_SHARED_STATE state) { pbelle_sip_messageLexer ctx; // Context structure we will build and return ctx = (pbelle_sip_messageLexer) ANTLR3_CALLOC(1, sizeof(belle_sip_messageLexer)); if (ctx == NULL) { // Failed to allocate memory for lexer context return NULL; } /* ------------------------------------------------------------------- * Memory for basic structure is allocated, now to fill in * in base ANTLR3 structures. We initialize the function pointers * for the standard ANTLR3 lexer function set, but upon return * from here, the programmer may set the pointers to provide custom * implementations of each function. * * We don't use the macros defined in belle_sip_messageLexer.h here so you can get a sense * of what goes where. */ /* Create a base lexer, using the supplied input stream */ ctx->pLexer = antlr3LexerNewStream(ANTLR3_SIZE_HINT, instream, state); /* Check that we allocated the memory correctly */ if (ctx->pLexer == NULL) { ANTLR3_FREE(ctx); return NULL; } /* Install the implementation of our belle_sip_messageLexer interface */ ctx->mCOMMON_CHAR = mCOMMON_CHAR; ctx->mHEX_CHAR = mHEX_CHAR; ctx->mDIGIT = mDIGIT; ctx->mAT = mAT; ctx->mAND = mAND; ctx->mDOLLARD = mDOLLARD; ctx->mQMARK = mQMARK; ctx->mEMARK = mEMARK; ctx->mDASH = mDASH; ctx->mCRLF = mCRLF; ctx->mHTAB = mHTAB; ctx->mOR = mOR; ctx->mPERCENT = mPERCENT; ctx->mDQUOTE = mDQUOTE; ctx->mSQUOTE = mSQUOTE; ctx->mBQUOTE = mBQUOTE; ctx->mBSLASH = mBSLASH; ctx->mLBRACE = mLBRACE; ctx->mRBRACE = mRBRACE; ctx->mUSCORE = mUSCORE; ctx->mTILDE = mTILDE; ctx->mDOT = mDOT; ctx->mPLUS = mPLUS; ctx->mCOLON = mCOLON; ctx->mSEMI = mSEMI; ctx->mCOMMA = mCOMMA; ctx->mLAQUOT = mLAQUOT; ctx->mRAQUOT = mRAQUOT; ctx->mRPAREN = mRPAREN; ctx->mLPAREN = mLPAREN; ctx->mRSBRAQUET = mRSBRAQUET; ctx->mLSBRAQUET = mLSBRAQUET; ctx->mEQUAL = mEQUAL; ctx->mSLASH = mSLASH; ctx->mSTAR = mSTAR; ctx->mSP = mSP; ctx->mOCTET = mOCTET; ctx->mTokens = mTokens; /** When the nextToken() call is made to this lexer's pANTLR3_TOKEN_SOURCE * it will call mTokens() in this generated code, and will pass it the ctx * pointer of this lexer, not the context of the base lexer, so store that now. */ ctx->pLexer->ctx = ctx; /**Install the token matching function */ ctx->pLexer->mTokens = (void (*) (void *))(mTokens); ctx->getGrammarFileName = getGrammarFileName; ctx->free = belle_sip_messageLexerFree; ctx->reset = belle_sip_messageLexerReset; /* Return the newly built lexer to the caller */ return ctx; } /* ========================================================================= * Functions to match the lexer grammar defined tokens from the input stream */ // Comes from: 2004:3: ( 'g' .. 'z' | 'G' .. 'Z' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start COMMON_CHAR * * Looks to match the characters the constitute the token COMMON_CHAR * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mCOMMON_CHAR(pbelle_sip_messageLexer ctx) { ANTLR3_UINT32 _type; _type = COMMON_CHAR; // ../grammars/belle_sip_message.g:2004:3: ( 'g' .. 'z' | 'G' .. 'Z' ) // ../grammars/belle_sip_message.g: { if ( ((LA(1) >= 'G') && (LA(1) <= 'Z')) || ((LA(1) >= 'g') && (LA(1) <= 'z')) ) { CONSUME(); } else { CONSTRUCTEX(); EXCEPTION->type = ANTLR3_MISMATCHED_SET_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_MISMATCHED_SET_NAME; LRECOVER(); goto ruleCOMMON_CHAREx; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto ruleCOMMON_CHAREx; /* Prevent compiler warnings */ ruleCOMMON_CHAREx: ; } // $ANTLR end COMMON_CHAR // Comes from: 2006:9: ( 'a' .. 'f' | 'A' .. 'F' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start HEX_CHAR * * Looks to match the characters the constitute the token HEX_CHAR * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mHEX_CHAR(pbelle_sip_messageLexer ctx) { ANTLR3_UINT32 _type; _type = HEX_CHAR; // ../grammars/belle_sip_message.g:2006:9: ( 'a' .. 'f' | 'A' .. 'F' ) // ../grammars/belle_sip_message.g: { if ( ((LA(1) >= 'A') && (LA(1) <= 'F')) || ((LA(1) >= 'a') && (LA(1) <= 'f')) ) { CONSUME(); } else { CONSTRUCTEX(); EXCEPTION->type = ANTLR3_MISMATCHED_SET_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_MISMATCHED_SET_NAME; LRECOVER(); goto ruleHEX_CHAREx; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto ruleHEX_CHAREx; /* Prevent compiler warnings */ ruleHEX_CHAREx: ; } // $ANTLR end HEX_CHAR // Comes from: 2007:7: ( '0' .. '9' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start DIGIT * * Looks to match the characters the constitute the token DIGIT * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mDIGIT(pbelle_sip_messageLexer ctx) { ANTLR3_UINT32 _type; _type = DIGIT; // ../grammars/belle_sip_message.g:2007:7: ( '0' .. '9' ) // ../grammars/belle_sip_message.g: { if ( ((LA(1) >= '0') && (LA(1) <= '9')) ) { CONSUME(); } else { CONSTRUCTEX(); EXCEPTION->type = ANTLR3_MISMATCHED_SET_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_MISMATCHED_SET_NAME; LRECOVER(); goto ruleDIGITEx; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto ruleDIGITEx; /* Prevent compiler warnings */ ruleDIGITEx: ; } // $ANTLR end DIGIT // Comes from: 2008:3: ( '@' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start AT * * Looks to match the characters the constitute the token AT * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mAT(pbelle_sip_messageLexer ctx) { ANTLR3_UINT32 _type; _type = AT; // ../grammars/belle_sip_message.g:2008:3: ( '@' ) // ../grammars/belle_sip_message.g:2008:5: '@' { MATCHC('@'); if (HASEXCEPTION()) { goto ruleATEx; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto ruleATEx; /* Prevent compiler warnings */ ruleATEx: ; } // $ANTLR end AT // Comes from: 2009:4: ( '&' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start AND * * Looks to match the characters the constitute the token AND * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mAND(pbelle_sip_messageLexer ctx) { ANTLR3_UINT32 _type; _type = AND; // ../grammars/belle_sip_message.g:2009:4: ( '&' ) // ../grammars/belle_sip_message.g:2009:6: '&' { MATCHC('&'); if (HASEXCEPTION()) { goto ruleANDEx; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto ruleANDEx; /* Prevent compiler warnings */ ruleANDEx: ; } // $ANTLR end AND // Comes from: 2010:8: ( '$' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start DOLLARD * * Looks to match the characters the constitute the token DOLLARD * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mDOLLARD(pbelle_sip_messageLexer ctx) { ANTLR3_UINT32 _type; _type = DOLLARD; // ../grammars/belle_sip_message.g:2010:8: ( '$' ) // ../grammars/belle_sip_message.g:2010:10: '$' { MATCHC('$'); if (HASEXCEPTION()) { goto ruleDOLLARDEx; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto ruleDOLLARDEx; /* Prevent compiler warnings */ ruleDOLLARDEx: ; } // $ANTLR end DOLLARD // Comes from: 2011:6: ( '?' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start QMARK * * Looks to match the characters the constitute the token QMARK * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mQMARK(pbelle_sip_messageLexer ctx) { ANTLR3_UINT32 _type; _type = QMARK; // ../grammars/belle_sip_message.g:2011:6: ( '?' ) // ../grammars/belle_sip_message.g:2011:8: '?' { MATCHC('?'); if (HASEXCEPTION()) { goto ruleQMARKEx; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto ruleQMARKEx; /* Prevent compiler warnings */ ruleQMARKEx: ; } // $ANTLR end QMARK // Comes from: 2012:6: ( '!' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start EMARK * * Looks to match the characters the constitute the token EMARK * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mEMARK(pbelle_sip_messageLexer ctx) { ANTLR3_UINT32 _type; _type = EMARK; // ../grammars/belle_sip_message.g:2012:6: ( '!' ) // ../grammars/belle_sip_message.g:2012:8: '!' { MATCHC('!'); if (HASEXCEPTION()) { goto ruleEMARKEx; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto ruleEMARKEx; /* Prevent compiler warnings */ ruleEMARKEx: ; } // $ANTLR end EMARK // Comes from: 2013:5: ( '-' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start DASH * * Looks to match the characters the constitute the token DASH * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mDASH(pbelle_sip_messageLexer ctx) { ANTLR3_UINT32 _type; _type = DASH; // ../grammars/belle_sip_message.g:2013:5: ( '-' ) // ../grammars/belle_sip_message.g:2013:7: '-' { MATCHC('-'); if (HASEXCEPTION()) { goto ruleDASHEx; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto ruleDASHEx; /* Prevent compiler warnings */ ruleDASHEx: ; } // $ANTLR end DASH // Comes from: 2014:7: ( '\\r\\n' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start CRLF * * Looks to match the characters the constitute the token CRLF * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mCRLF(pbelle_sip_messageLexer ctx) { ANTLR3_UINT32 _type; _type = CRLF; // ../grammars/belle_sip_message.g:2014:7: ( '\\r\\n' ) // ../grammars/belle_sip_message.g:2014:9: '\\r\\n' { MATCHS(lit_1); if (HASEXCEPTION()) { goto ruleCRLFEx; } { USER1 = (int)((char*)ctx->pLexer->input->currentLine - (char*)ctx->pLexer->input->data); /*GETCHARINDEX()*/; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto ruleCRLFEx; /* Prevent compiler warnings */ ruleCRLFEx: ; } // $ANTLR end CRLF // Comes from: 2015:7: ( '\t' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start HTAB * * Looks to match the characters the constitute the token HTAB * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mHTAB(pbelle_sip_messageLexer ctx) { ANTLR3_UINT32 _type; _type = HTAB; // ../grammars/belle_sip_message.g:2015:7: ( '\t' ) // ../grammars/belle_sip_message.g:2015:9: '\t' { MATCHC(0x9); if (HASEXCEPTION()) { goto ruleHTABEx; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto ruleHTABEx; /* Prevent compiler warnings */ ruleHTABEx: ; } // $ANTLR end HTAB // Comes from: 2016:4: ( '|' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start OR * * Looks to match the characters the constitute the token OR * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mOR(pbelle_sip_messageLexer ctx) { ANTLR3_UINT32 _type; _type = OR; // ../grammars/belle_sip_message.g:2016:4: ( '|' ) // ../grammars/belle_sip_message.g:2016:6: '|' { MATCHC('|'); if (HASEXCEPTION()) { goto ruleOREx; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto ruleOREx; /* Prevent compiler warnings */ ruleOREx: ; } // $ANTLR end OR // Comes from: 2017:8: ( '%' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start PERCENT * * Looks to match the characters the constitute the token PERCENT * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mPERCENT(pbelle_sip_messageLexer ctx) { ANTLR3_UINT32 _type; _type = PERCENT; // ../grammars/belle_sip_message.g:2017:8: ( '%' ) // ../grammars/belle_sip_message.g:2017:10: '%' { MATCHC('%'); if (HASEXCEPTION()) { goto rulePERCENTEx; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto rulePERCENTEx; /* Prevent compiler warnings */ rulePERCENTEx: ; } // $ANTLR end PERCENT // Comes from: 2018:9: ( '\"' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start DQUOTE * * Looks to match the characters the constitute the token DQUOTE * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mDQUOTE(pbelle_sip_messageLexer ctx) { ANTLR3_UINT32 _type; _type = DQUOTE; // ../grammars/belle_sip_message.g:2018:9: ( '\"' ) // ../grammars/belle_sip_message.g:2018:11: '\"' { MATCHC('"'); if (HASEXCEPTION()) { goto ruleDQUOTEEx; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto ruleDQUOTEEx; /* Prevent compiler warnings */ ruleDQUOTEEx: ; } // $ANTLR end DQUOTE // Comes from: 2019:9: ( '\\'' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start SQUOTE * * Looks to match the characters the constitute the token SQUOTE * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mSQUOTE(pbelle_sip_messageLexer ctx) { ANTLR3_UINT32 _type; _type = SQUOTE; // ../grammars/belle_sip_message.g:2019:9: ( '\\'' ) // ../grammars/belle_sip_message.g:2019:11: '\\'' { MATCHC('\''); if (HASEXCEPTION()) { goto ruleSQUOTEEx; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto ruleSQUOTEEx; /* Prevent compiler warnings */ ruleSQUOTEEx: ; } // $ANTLR end SQUOTE // Comes from: 2020:7: ( '`' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start BQUOTE * * Looks to match the characters the constitute the token BQUOTE * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mBQUOTE(pbelle_sip_messageLexer ctx) { ANTLR3_UINT32 _type; _type = BQUOTE; // ../grammars/belle_sip_message.g:2020:7: ( '`' ) // ../grammars/belle_sip_message.g:2020:9: '`' { MATCHC('`'); if (HASEXCEPTION()) { goto ruleBQUOTEEx; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto ruleBQUOTEEx; /* Prevent compiler warnings */ ruleBQUOTEEx: ; } // $ANTLR end BQUOTE // Comes from: 2021:7: ( '\\\\' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start BSLASH * * Looks to match the characters the constitute the token BSLASH * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mBSLASH(pbelle_sip_messageLexer ctx) { ANTLR3_UINT32 _type; _type = BSLASH; // ../grammars/belle_sip_message.g:2021:7: ( '\\\\' ) // ../grammars/belle_sip_message.g:2021:9: '\\\\' { MATCHC('\\'); if (HASEXCEPTION()) { goto ruleBSLASHEx; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto ruleBSLASHEx; /* Prevent compiler warnings */ ruleBSLASHEx: ; } // $ANTLR end BSLASH // Comes from: 2022:7: ( '{' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start LBRACE * * Looks to match the characters the constitute the token LBRACE * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mLBRACE(pbelle_sip_messageLexer ctx) { ANTLR3_UINT32 _type; _type = LBRACE; // ../grammars/belle_sip_message.g:2022:7: ( '{' ) // ../grammars/belle_sip_message.g:2022:9: '{' { MATCHC('{'); if (HASEXCEPTION()) { goto ruleLBRACEEx; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto ruleLBRACEEx; /* Prevent compiler warnings */ ruleLBRACEEx: ; } // $ANTLR end LBRACE // Comes from: 2023:7: ( '}' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start RBRACE * * Looks to match the characters the constitute the token RBRACE * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mRBRACE(pbelle_sip_messageLexer ctx) { ANTLR3_UINT32 _type; _type = RBRACE; // ../grammars/belle_sip_message.g:2023:7: ( '}' ) // ../grammars/belle_sip_message.g:2023:9: '}' { MATCHC('}'); if (HASEXCEPTION()) { goto ruleRBRACEEx; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto ruleRBRACEEx; /* Prevent compiler warnings */ ruleRBRACEEx: ; } // $ANTLR end RBRACE // Comes from: 2024:7: ( '_' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start USCORE * * Looks to match the characters the constitute the token USCORE * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mUSCORE(pbelle_sip_messageLexer ctx) { ANTLR3_UINT32 _type; _type = USCORE; // ../grammars/belle_sip_message.g:2024:7: ( '_' ) // ../grammars/belle_sip_message.g:2024:9: '_' { MATCHC('_'); if (HASEXCEPTION()) { goto ruleUSCOREEx; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto ruleUSCOREEx; /* Prevent compiler warnings */ ruleUSCOREEx: ; } // $ANTLR end USCORE // Comes from: 2025:6: ( '~' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start TILDE * * Looks to match the characters the constitute the token TILDE * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mTILDE(pbelle_sip_messageLexer ctx) { ANTLR3_UINT32 _type; _type = TILDE; // ../grammars/belle_sip_message.g:2025:6: ( '~' ) // ../grammars/belle_sip_message.g:2025:8: '~' { MATCHC('~'); if (HASEXCEPTION()) { goto ruleTILDEEx; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto ruleTILDEEx; /* Prevent compiler warnings */ ruleTILDEEx: ; } // $ANTLR end TILDE // Comes from: 2026:4: ( '.' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start DOT * * Looks to match the characters the constitute the token DOT * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mDOT(pbelle_sip_messageLexer ctx) { ANTLR3_UINT32 _type; _type = DOT; // ../grammars/belle_sip_message.g:2026:4: ( '.' ) // ../grammars/belle_sip_message.g:2026:6: '.' { MATCHC('.'); if (HASEXCEPTION()) { goto ruleDOTEx; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto ruleDOTEx; /* Prevent compiler warnings */ ruleDOTEx: ; } // $ANTLR end DOT // Comes from: 2029:5: ( '+' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start PLUS * * Looks to match the characters the constitute the token PLUS * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mPLUS(pbelle_sip_messageLexer ctx) { ANTLR3_UINT32 _type; _type = PLUS; // ../grammars/belle_sip_message.g:2029:5: ( '+' ) // ../grammars/belle_sip_message.g:2029:7: '+' { MATCHC('+'); if (HASEXCEPTION()) { goto rulePLUSEx; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto rulePLUSEx; /* Prevent compiler warnings */ rulePLUSEx: ; } // $ANTLR end PLUS // Comes from: 2031:3: ( ':' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start COLON * * Looks to match the characters the constitute the token COLON * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mCOLON(pbelle_sip_messageLexer ctx) { ANTLR3_UINT32 _type; _type = COLON; // ../grammars/belle_sip_message.g:2031:3: ( ':' ) // ../grammars/belle_sip_message.g:2031:5: ':' { MATCHC(':'); if (HASEXCEPTION()) { goto ruleCOLONEx; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto ruleCOLONEx; /* Prevent compiler warnings */ ruleCOLONEx: ; } // $ANTLR end COLON // Comes from: 2034:3: ( ';' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start SEMI * * Looks to match the characters the constitute the token SEMI * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mSEMI(pbelle_sip_messageLexer ctx) { ANTLR3_UINT32 _type; _type = SEMI; // ../grammars/belle_sip_message.g:2034:3: ( ';' ) // ../grammars/belle_sip_message.g:2034:5: ';' { MATCHC(';'); if (HASEXCEPTION()) { goto ruleSEMIEx; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto ruleSEMIEx; /* Prevent compiler warnings */ ruleSEMIEx: ; } // $ANTLR end SEMI // Comes from: 2037:3: ( ',' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start COMMA * * Looks to match the characters the constitute the token COMMA * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mCOMMA(pbelle_sip_messageLexer ctx) { ANTLR3_UINT32 _type; _type = COMMA; // ../grammars/belle_sip_message.g:2037:3: ( ',' ) // ../grammars/belle_sip_message.g:2037:5: ',' { MATCHC(','); if (HASEXCEPTION()) { goto ruleCOMMAEx; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto ruleCOMMAEx; /* Prevent compiler warnings */ ruleCOMMAEx: ; } // $ANTLR end COMMA // Comes from: 2040:3: ( '<' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start LAQUOT * * Looks to match the characters the constitute the token LAQUOT * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mLAQUOT(pbelle_sip_messageLexer ctx) { ANTLR3_UINT32 _type; _type = LAQUOT; // ../grammars/belle_sip_message.g:2040:3: ( '<' ) // ../grammars/belle_sip_message.g:2040:5: '<' { MATCHC('<'); if (HASEXCEPTION()) { goto ruleLAQUOTEx; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto ruleLAQUOTEx; /* Prevent compiler warnings */ ruleLAQUOTEx: ; } // $ANTLR end LAQUOT // Comes from: 2043:3: ( '>' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start RAQUOT * * Looks to match the characters the constitute the token RAQUOT * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mRAQUOT(pbelle_sip_messageLexer ctx) { ANTLR3_UINT32 _type; _type = RAQUOT; // ../grammars/belle_sip_message.g:2043:3: ( '>' ) // ../grammars/belle_sip_message.g:2043:5: '>' { MATCHC('>'); if (HASEXCEPTION()) { goto ruleRAQUOTEx; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto ruleRAQUOTEx; /* Prevent compiler warnings */ ruleRAQUOTEx: ; } // $ANTLR end RAQUOT // Comes from: 2047:3: ( ')' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start RPAREN * * Looks to match the characters the constitute the token RPAREN * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mRPAREN(pbelle_sip_messageLexer ctx) { ANTLR3_UINT32 _type; _type = RPAREN; // ../grammars/belle_sip_message.g:2047:3: ( ')' ) // ../grammars/belle_sip_message.g:2047:5: ')' { MATCHC(')'); if (HASEXCEPTION()) { goto ruleRPARENEx; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto ruleRPARENEx; /* Prevent compiler warnings */ ruleRPARENEx: ; } // $ANTLR end RPAREN // Comes from: 2051:3: ( '(' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start LPAREN * * Looks to match the characters the constitute the token LPAREN * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mLPAREN(pbelle_sip_messageLexer ctx) { ANTLR3_UINT32 _type; _type = LPAREN; // ../grammars/belle_sip_message.g:2051:3: ( '(' ) // ../grammars/belle_sip_message.g:2051:5: '(' { MATCHC('('); if (HASEXCEPTION()) { goto ruleLPARENEx; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto ruleLPARENEx; /* Prevent compiler warnings */ ruleLPARENEx: ; } // $ANTLR end LPAREN // Comes from: 2054:3: ( ']' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start RSBRAQUET * * Looks to match the characters the constitute the token RSBRAQUET * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mRSBRAQUET(pbelle_sip_messageLexer ctx) { ANTLR3_UINT32 _type; _type = RSBRAQUET; // ../grammars/belle_sip_message.g:2054:3: ( ']' ) // ../grammars/belle_sip_message.g:2054:5: ']' { MATCHC(']'); if (HASEXCEPTION()) { goto ruleRSBRAQUETEx; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto ruleRSBRAQUETEx; /* Prevent compiler warnings */ ruleRSBRAQUETEx: ; } // $ANTLR end RSBRAQUET // Comes from: 2058:3: ( '[' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start LSBRAQUET * * Looks to match the characters the constitute the token LSBRAQUET * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mLSBRAQUET(pbelle_sip_messageLexer ctx) { ANTLR3_UINT32 _type; _type = LSBRAQUET; // ../grammars/belle_sip_message.g:2058:3: ( '[' ) // ../grammars/belle_sip_message.g:2058:5: '[' { MATCHC('['); if (HASEXCEPTION()) { goto ruleLSBRAQUETEx; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto ruleLSBRAQUETEx; /* Prevent compiler warnings */ ruleLSBRAQUETEx: ; } // $ANTLR end LSBRAQUET // Comes from: 2062:3: ( '=' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start EQUAL * * Looks to match the characters the constitute the token EQUAL * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mEQUAL(pbelle_sip_messageLexer ctx) { ANTLR3_UINT32 _type; _type = EQUAL; // ../grammars/belle_sip_message.g:2062:3: ( '=' ) // ../grammars/belle_sip_message.g:2062:5: '=' { MATCHC('='); if (HASEXCEPTION()) { goto ruleEQUALEx; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto ruleEQUALEx; /* Prevent compiler warnings */ ruleEQUALEx: ; } // $ANTLR end EQUAL // Comes from: 2066:3: ( '/' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start SLASH * * Looks to match the characters the constitute the token SLASH * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mSLASH(pbelle_sip_messageLexer ctx) { ANTLR3_UINT32 _type; _type = SLASH; // ../grammars/belle_sip_message.g:2066:3: ( '/' ) // ../grammars/belle_sip_message.g:2066:5: '/' { MATCHC('/'); if (HASEXCEPTION()) { goto ruleSLASHEx; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto ruleSLASHEx; /* Prevent compiler warnings */ ruleSLASHEx: ; } // $ANTLR end SLASH // Comes from: 2070:3: ( '*' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start STAR * * Looks to match the characters the constitute the token STAR * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mSTAR(pbelle_sip_messageLexer ctx) { ANTLR3_UINT32 _type; _type = STAR; // ../grammars/belle_sip_message.g:2070:3: ( '*' ) // ../grammars/belle_sip_message.g:2070:5: '*' { MATCHC('*'); if (HASEXCEPTION()) { goto ruleSTAREx; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto ruleSTAREx; /* Prevent compiler warnings */ ruleSTAREx: ; } // $ANTLR end STAR // Comes from: 2073:3: ( ' ' ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start SP * * Looks to match the characters the constitute the token SP * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mSP(pbelle_sip_messageLexer ctx) { ANTLR3_UINT32 _type; _type = SP; // ../grammars/belle_sip_message.g:2073:3: ( ' ' ) // ../grammars/belle_sip_message.g:2073:5: ' ' { MATCHC(' '); if (HASEXCEPTION()) { goto ruleSPEx; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto ruleSPEx; /* Prevent compiler warnings */ ruleSPEx: ; } // $ANTLR end SP // Comes from: 2075:7: ( . ) /** \brief Lexer rule generated by ANTLR3 * * $ANTLR start OCTET * * Looks to match the characters the constitute the token OCTET * from the attached input stream. * * * \remark * - lexer->error == ANTLR3_TRUE if an exception was thrown. */ static ANTLR3_INLINE void mOCTET(pbelle_sip_messageLexer ctx) { ANTLR3_UINT32 _type; _type = OCTET; // ../grammars/belle_sip_message.g:2075:7: ( . ) // ../grammars/belle_sip_message.g:2075:9: . { MATCHANY(); if (HASEXCEPTION()) { goto ruleOCTETEx; } } LEXSTATE->type = _type; // This is where rules clean up and exit // goto ruleOCTETEx; /* Prevent compiler warnings */ ruleOCTETEx: ; } // $ANTLR end OCTET /** This is the entry point in to the lexer from an object that * wants to generate the next token, such as a pCOMMON_TOKEN_STREAM */ static void mTokens(pbelle_sip_messageLexer ctx) { { // ../grammars/belle_sip_message.g:1:8: ( COMMON_CHAR | HEX_CHAR | DIGIT | AT | AND | DOLLARD | QMARK | EMARK | DASH | CRLF | HTAB | OR | PERCENT | DQUOTE | SQUOTE | BQUOTE | BSLASH | LBRACE | RBRACE | USCORE | TILDE | DOT | PLUS | COLON | SEMI | COMMA | LAQUOT | RAQUOT | RPAREN | LPAREN | RSBRAQUET | LSBRAQUET | EQUAL | SLASH | STAR | SP | OCTET ) ANTLR3_UINT32 alt1; alt1=37; { int LA1_0 = LA(1); if ( (((LA1_0 >= 'G') && (LA1_0 <= 'Z')) || ((LA1_0 >= 'g') && (LA1_0 <= 'z')))) { alt1=1; } else if ( (((LA1_0 >= 'A') && (LA1_0 <= 'F')) || ((LA1_0 >= 'a') && (LA1_0 <= 'f')))) { alt1=2; } else if ( (((LA1_0 >= '0') && (LA1_0 <= '9')))) { alt1=3; } else if ( (LA1_0 == '@')) { alt1=4; } else if ( (LA1_0 == '&')) { alt1=5; } else if ( (LA1_0 == '$')) { alt1=6; } else if ( (LA1_0 == '?')) { alt1=7; } else if ( (LA1_0 == '!')) { alt1=8; } else if ( (LA1_0 == '-')) { alt1=9; } else if ( (LA1_0 == '\r')) { switch ( LA(2) ) { case '\n': { alt1=10; } break; default: alt1=37; } } else if ( (LA1_0 == '\t')) { alt1=11; } else if ( (LA1_0 == '|')) { alt1=12; } else if ( (LA1_0 == '%')) { alt1=13; } else if ( (LA1_0 == '"')) { alt1=14; } else if ( (LA1_0 == '\'')) { alt1=15; } else if ( (LA1_0 == '`')) { alt1=16; } else if ( (LA1_0 == '\\')) { alt1=17; } else if ( (LA1_0 == '{')) { alt1=18; } else if ( (LA1_0 == '}')) { alt1=19; } else if ( (LA1_0 == '_')) { alt1=20; } else if ( (LA1_0 == '~')) { alt1=21; } else if ( (LA1_0 == '.')) { alt1=22; } else if ( (LA1_0 == '+')) { alt1=23; } else if ( (LA1_0 == ':')) { alt1=24; } else if ( (LA1_0 == ';')) { alt1=25; } else if ( (LA1_0 == ',')) { alt1=26; } else if ( (LA1_0 == '<')) { alt1=27; } else if ( (LA1_0 == '>')) { alt1=28; } else if ( (LA1_0 == ')')) { alt1=29; } else if ( (LA1_0 == '(')) { alt1=30; } else if ( (LA1_0 == ']')) { alt1=31; } else if ( (LA1_0 == '[')) { alt1=32; } else if ( (LA1_0 == '=')) { alt1=33; } else if ( (LA1_0 == '/')) { alt1=34; } else if ( (LA1_0 == '*')) { alt1=35; } else if ( (LA1_0 == ' ')) { alt1=36; } else if ( (((LA1_0 >= 0x0000) && (LA1_0 <= '\b')) || ((LA1_0 >= '\n') && (LA1_0 <= '\f')) || ((LA1_0 >= 0x000E) && (LA1_0 <= 0x001F)) || LA1_0 == '#' || LA1_0 == '^' || ((LA1_0 >= 0x007F) && (LA1_0 <= 0xFFFF)))) { alt1=37; } else { CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 1; EXCEPTION->state = 0; goto ruleTokensEx; } } switch (alt1) { case 1: // ../grammars/belle_sip_message.g:1:10: COMMON_CHAR { /* 1:10: COMMON_CHAR */ mCOMMON_CHAR(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; case 2: // ../grammars/belle_sip_message.g:1:22: HEX_CHAR { /* 1:22: HEX_CHAR */ mHEX_CHAR(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; case 3: // ../grammars/belle_sip_message.g:1:31: DIGIT { /* 1:31: DIGIT */ mDIGIT(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; case 4: // ../grammars/belle_sip_message.g:1:37: AT { /* 1:37: AT */ mAT(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; case 5: // ../grammars/belle_sip_message.g:1:40: AND { /* 1:40: AND */ mAND(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; case 6: // ../grammars/belle_sip_message.g:1:44: DOLLARD { /* 1:44: DOLLARD */ mDOLLARD(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; case 7: // ../grammars/belle_sip_message.g:1:52: QMARK { /* 1:52: QMARK */ mQMARK(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; case 8: // ../grammars/belle_sip_message.g:1:58: EMARK { /* 1:58: EMARK */ mEMARK(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; case 9: // ../grammars/belle_sip_message.g:1:64: DASH { /* 1:64: DASH */ mDASH(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; case 10: // ../grammars/belle_sip_message.g:1:69: CRLF { /* 1:69: CRLF */ mCRLF(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; case 11: // ../grammars/belle_sip_message.g:1:74: HTAB { /* 1:74: HTAB */ mHTAB(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; case 12: // ../grammars/belle_sip_message.g:1:79: OR { /* 1:79: OR */ mOR(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; case 13: // ../grammars/belle_sip_message.g:1:82: PERCENT { /* 1:82: PERCENT */ mPERCENT(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; case 14: // ../grammars/belle_sip_message.g:1:90: DQUOTE { /* 1:90: DQUOTE */ mDQUOTE(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; case 15: // ../grammars/belle_sip_message.g:1:97: SQUOTE { /* 1:97: SQUOTE */ mSQUOTE(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; case 16: // ../grammars/belle_sip_message.g:1:104: BQUOTE { /* 1:104: BQUOTE */ mBQUOTE(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; case 17: // ../grammars/belle_sip_message.g:1:111: BSLASH { /* 1:111: BSLASH */ mBSLASH(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; case 18: // ../grammars/belle_sip_message.g:1:118: LBRACE { /* 1:118: LBRACE */ mLBRACE(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; case 19: // ../grammars/belle_sip_message.g:1:125: RBRACE { /* 1:125: RBRACE */ mRBRACE(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; case 20: // ../grammars/belle_sip_message.g:1:132: USCORE { /* 1:132: USCORE */ mUSCORE(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; case 21: // ../grammars/belle_sip_message.g:1:139: TILDE { /* 1:139: TILDE */ mTILDE(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; case 22: // ../grammars/belle_sip_message.g:1:145: DOT { /* 1:145: DOT */ mDOT(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; case 23: // ../grammars/belle_sip_message.g:1:149: PLUS { /* 1:149: PLUS */ mPLUS(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; case 24: // ../grammars/belle_sip_message.g:1:154: COLON { /* 1:154: COLON */ mCOLON(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; case 25: // ../grammars/belle_sip_message.g:1:160: SEMI { /* 1:160: SEMI */ mSEMI(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; case 26: // ../grammars/belle_sip_message.g:1:165: COMMA { /* 1:165: COMMA */ mCOMMA(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; case 27: // ../grammars/belle_sip_message.g:1:171: LAQUOT { /* 1:171: LAQUOT */ mLAQUOT(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; case 28: // ../grammars/belle_sip_message.g:1:178: RAQUOT { /* 1:178: RAQUOT */ mRAQUOT(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; case 29: // ../grammars/belle_sip_message.g:1:185: RPAREN { /* 1:185: RPAREN */ mRPAREN(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; case 30: // ../grammars/belle_sip_message.g:1:192: LPAREN { /* 1:192: LPAREN */ mLPAREN(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; case 31: // ../grammars/belle_sip_message.g:1:199: RSBRAQUET { /* 1:199: RSBRAQUET */ mRSBRAQUET(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; case 32: // ../grammars/belle_sip_message.g:1:209: LSBRAQUET { /* 1:209: LSBRAQUET */ mLSBRAQUET(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; case 33: // ../grammars/belle_sip_message.g:1:219: EQUAL { /* 1:219: EQUAL */ mEQUAL(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; case 34: // ../grammars/belle_sip_message.g:1:225: SLASH { /* 1:225: SLASH */ mSLASH(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; case 35: // ../grammars/belle_sip_message.g:1:231: STAR { /* 1:231: STAR */ mSTAR(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; case 36: // ../grammars/belle_sip_message.g:1:236: SP { /* 1:236: SP */ mSP(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; case 37: // ../grammars/belle_sip_message.g:1:239: OCTET { /* 1:239: OCTET */ mOCTET(ctx ); if (HASEXCEPTION()) { goto ruleTokensEx; } } break; } } goto ruleTokensEx; /* Prevent compiler warnings */ ruleTokensEx: ; } /* ========================================================================= * Lexer matching rules end. * ========================================================================= */ /* End of Lexer code * ================================================ * ================================================ */ /* End of code * ============================================================================= */ belle-sip-5.2.0+dfsg/src/grammars/belle_sip_messageLexer.h000066400000000000000000000335631434613136500235440ustar00rootroot00000000000000/** \file * This C header file was generated by $ANTLR version 3.4 * * - From the grammar source file : ../grammars/belle_sip_message.g * - On : 2021-09-07 16:55:34 * - for the lexer : belle_sip_messageLexerLexer * * Editing it, at least manually, is not wise. * * C language generator and runtime by Jim Idle, jimi|hereisanat|idle|dotgoeshere|ws. * * * The lexer belle_sip_messageLexer has the callable functions (rules) shown below, * which will invoke the code for the associated rule in the source grammar * assuming that the input stream is pointing to a token/text stream that could begin * this rule. * * For instance if you call the first (topmost) rule in a parser grammar, you will * get the results of a full parse, but calling a rule half way through the grammar will * allow you to pass part of a full token stream to the parser, such as for syntax checking * in editors and so on. * * The parser entry points are called indirectly (by function pointer to function) via * a parser context typedef pbelle_sip_messageLexer, which is returned from a call to belle_sip_messageLexerNew(). * * As this is a generated lexer, it is unlikely you will call it 'manually'. However * the methods are provided anyway. * * The methods in pbelle_sip_messageLexer are as follows: * * - void pbelle_sip_messageLexer->COMMON_CHAR(pbelle_sip_messageLexer) * - void pbelle_sip_messageLexer->HEX_CHAR(pbelle_sip_messageLexer) * - void pbelle_sip_messageLexer->DIGIT(pbelle_sip_messageLexer) * - void pbelle_sip_messageLexer->AT(pbelle_sip_messageLexer) * - void pbelle_sip_messageLexer->AND(pbelle_sip_messageLexer) * - void pbelle_sip_messageLexer->DOLLARD(pbelle_sip_messageLexer) * - void pbelle_sip_messageLexer->QMARK(pbelle_sip_messageLexer) * - void pbelle_sip_messageLexer->EMARK(pbelle_sip_messageLexer) * - void pbelle_sip_messageLexer->DASH(pbelle_sip_messageLexer) * - void pbelle_sip_messageLexer->CRLF(pbelle_sip_messageLexer) * - void pbelle_sip_messageLexer->HTAB(pbelle_sip_messageLexer) * - void pbelle_sip_messageLexer->OR(pbelle_sip_messageLexer) * - void pbelle_sip_messageLexer->PERCENT(pbelle_sip_messageLexer) * - void pbelle_sip_messageLexer->DQUOTE(pbelle_sip_messageLexer) * - void pbelle_sip_messageLexer->SQUOTE(pbelle_sip_messageLexer) * - void pbelle_sip_messageLexer->BQUOTE(pbelle_sip_messageLexer) * - void pbelle_sip_messageLexer->BSLASH(pbelle_sip_messageLexer) * - void pbelle_sip_messageLexer->LBRACE(pbelle_sip_messageLexer) * - void pbelle_sip_messageLexer->RBRACE(pbelle_sip_messageLexer) * - void pbelle_sip_messageLexer->USCORE(pbelle_sip_messageLexer) * - void pbelle_sip_messageLexer->TILDE(pbelle_sip_messageLexer) * - void pbelle_sip_messageLexer->DOT(pbelle_sip_messageLexer) * - void pbelle_sip_messageLexer->PLUS(pbelle_sip_messageLexer) * - void pbelle_sip_messageLexer->COLON(pbelle_sip_messageLexer) * - void pbelle_sip_messageLexer->SEMI(pbelle_sip_messageLexer) * - void pbelle_sip_messageLexer->COMMA(pbelle_sip_messageLexer) * - void pbelle_sip_messageLexer->LAQUOT(pbelle_sip_messageLexer) * - void pbelle_sip_messageLexer->RAQUOT(pbelle_sip_messageLexer) * - void pbelle_sip_messageLexer->RPAREN(pbelle_sip_messageLexer) * - void pbelle_sip_messageLexer->LPAREN(pbelle_sip_messageLexer) * - void pbelle_sip_messageLexer->RSBRAQUET(pbelle_sip_messageLexer) * - void pbelle_sip_messageLexer->LSBRAQUET(pbelle_sip_messageLexer) * - void pbelle_sip_messageLexer->EQUAL(pbelle_sip_messageLexer) * - void pbelle_sip_messageLexer->SLASH(pbelle_sip_messageLexer) * - void pbelle_sip_messageLexer->STAR(pbelle_sip_messageLexer) * - void pbelle_sip_messageLexer->SP(pbelle_sip_messageLexer) * - void pbelle_sip_messageLexer->OCTET(pbelle_sip_messageLexer) * - void pbelle_sip_messageLexer->Tokens(pbelle_sip_messageLexer) * * The return type for any particular rule is of course determined by the source * grammar file. */ // [The "BSD license"] // Copyright (c) 2005-2009 Jim Idle, Temporal Wave LLC // http://www.temporal-wave.com // http://www.linkedin.com/in/jimidle // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // 1. Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // 2. Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // 3. The name of the author may not be used to endorse or promote products // derived from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR // IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES // OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT // NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF // THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef _belle_sip_messageLexer_H #define _belle_sip_messageLexer_H /* ============================================================================= * Standard antlr3 C runtime definitions */ #include /* End of standard antlr 3 runtime definitions * ============================================================================= */ #ifdef __cplusplus extern "C" { #endif // Forward declare the context typedef so that we can use it before it is // properly defined. Delegators and delegates (from import statements) are // interdependent and their context structures contain pointers to each other // C only allows such things to be declared if you pre-declare the typedef. // typedef struct belle_sip_messageLexer_Ctx_struct belle_sip_messageLexer, * pbelle_sip_messageLexer; /* belle-sip - SIP (RFC3261) library. Copyright (C) 2010 Belledonne Communications SARL This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #pragma GCC diagnostic ignored "-Wparentheses" #pragma GCC diagnostic ignored "-Wunused" #ifdef ANTLR3_WINDOWS // Disable: Unreferenced parameter, - Rules with parameters that are not used // constant conditional, - ANTLR realizes that a prediction is always true (synpred usually) // initialized but unused variable - tree rewrite variables declared but not needed // Unreferenced local variable - lexer rule declares but does not always use _type // potentially unitialized variable used - retval always returned from a rule // unreferenced local function has been removed - susually getTokenNames or freeScope, they can go without warnigns // // These are only really displayed at warning level /W4 but that is the code ideal I am aiming at // and the codegen must generate some of these warnings by necessity, apart from 4100, which is // usually generated when a parser rule is given a parameter that it does not use. Mostly though // this is a matter of orthogonality hence I disable that one. // #pragma warning( disable : 4100 ) #pragma warning( disable : 4101 ) #pragma warning( disable : 4127 ) #pragma warning( disable : 4189 ) #pragma warning( disable : 4505 ) #pragma warning( disable : 4701 ) #endif /** Context tracking structure for belle_sip_messageLexer */ struct belle_sip_messageLexer_Ctx_struct { /** Built in ANTLR3 context tracker contains all the generic elements * required for context tracking. */ pANTLR3_LEXER pLexer; void (*mCOMMON_CHAR) (struct belle_sip_messageLexer_Ctx_struct * ctx); void (*mHEX_CHAR) (struct belle_sip_messageLexer_Ctx_struct * ctx); void (*mDIGIT) (struct belle_sip_messageLexer_Ctx_struct * ctx); void (*mAT) (struct belle_sip_messageLexer_Ctx_struct * ctx); void (*mAND) (struct belle_sip_messageLexer_Ctx_struct * ctx); void (*mDOLLARD) (struct belle_sip_messageLexer_Ctx_struct * ctx); void (*mQMARK) (struct belle_sip_messageLexer_Ctx_struct * ctx); void (*mEMARK) (struct belle_sip_messageLexer_Ctx_struct * ctx); void (*mDASH) (struct belle_sip_messageLexer_Ctx_struct * ctx); void (*mCRLF) (struct belle_sip_messageLexer_Ctx_struct * ctx); void (*mHTAB) (struct belle_sip_messageLexer_Ctx_struct * ctx); void (*mOR) (struct belle_sip_messageLexer_Ctx_struct * ctx); void (*mPERCENT) (struct belle_sip_messageLexer_Ctx_struct * ctx); void (*mDQUOTE) (struct belle_sip_messageLexer_Ctx_struct * ctx); void (*mSQUOTE) (struct belle_sip_messageLexer_Ctx_struct * ctx); void (*mBQUOTE) (struct belle_sip_messageLexer_Ctx_struct * ctx); void (*mBSLASH) (struct belle_sip_messageLexer_Ctx_struct * ctx); void (*mLBRACE) (struct belle_sip_messageLexer_Ctx_struct * ctx); void (*mRBRACE) (struct belle_sip_messageLexer_Ctx_struct * ctx); void (*mUSCORE) (struct belle_sip_messageLexer_Ctx_struct * ctx); void (*mTILDE) (struct belle_sip_messageLexer_Ctx_struct * ctx); void (*mDOT) (struct belle_sip_messageLexer_Ctx_struct * ctx); void (*mPLUS) (struct belle_sip_messageLexer_Ctx_struct * ctx); void (*mCOLON) (struct belle_sip_messageLexer_Ctx_struct * ctx); void (*mSEMI) (struct belle_sip_messageLexer_Ctx_struct * ctx); void (*mCOMMA) (struct belle_sip_messageLexer_Ctx_struct * ctx); void (*mLAQUOT) (struct belle_sip_messageLexer_Ctx_struct * ctx); void (*mRAQUOT) (struct belle_sip_messageLexer_Ctx_struct * ctx); void (*mRPAREN) (struct belle_sip_messageLexer_Ctx_struct * ctx); void (*mLPAREN) (struct belle_sip_messageLexer_Ctx_struct * ctx); void (*mRSBRAQUET) (struct belle_sip_messageLexer_Ctx_struct * ctx); void (*mLSBRAQUET) (struct belle_sip_messageLexer_Ctx_struct * ctx); void (*mEQUAL) (struct belle_sip_messageLexer_Ctx_struct * ctx); void (*mSLASH) (struct belle_sip_messageLexer_Ctx_struct * ctx); void (*mSTAR) (struct belle_sip_messageLexer_Ctx_struct * ctx); void (*mSP) (struct belle_sip_messageLexer_Ctx_struct * ctx); void (*mOCTET) (struct belle_sip_messageLexer_Ctx_struct * ctx); void (*mTokens) (struct belle_sip_messageLexer_Ctx_struct * ctx); const char * (*getGrammarFileName)(); void (*reset) (struct belle_sip_messageLexer_Ctx_struct * ctx); void (*free) (struct belle_sip_messageLexer_Ctx_struct * ctx); }; // Function protoypes for the constructor functions that external translation units // such as delegators and delegates may wish to call. // ANTLR3_API pbelle_sip_messageLexer belle_sip_messageLexerNew ( pANTLR3_INPUT_STREAM instream); ANTLR3_API pbelle_sip_messageLexer belle_sip_messageLexerNewSSD ( pANTLR3_INPUT_STREAM instream, pANTLR3_RECOGNIZER_SHARED_STATE state); /** Symbolic definitions of all the tokens that the lexer will work with. * \{ * * Antlr will define EOF, but we can't use that as it it is too common in * in C header files and that would be confusing. There is no way to filter this out at the moment * so we just undef it here for now. That isn't the value we get back from C recognizers * anyway. We are looking for ANTLR3_TOKEN_EOF. */ #ifdef EOF #undef EOF #endif #ifdef Tokens #undef Tokens #endif #define EOF -1 #define AND 4 #define AT 5 #define BQUOTE 6 #define BSLASH 7 #define COLON 8 #define COMMA 9 #define COMMON_CHAR 10 #define CRLF 11 #define DASH 12 #define DIGIT 13 #define DOLLARD 14 #define DOT 15 #define DQUOTE 16 #define EMARK 17 #define EQUAL 18 #define HEX_CHAR 19 #define HTAB 20 #define LAQUOT 21 #define LBRACE 22 #define LPAREN 23 #define LSBRAQUET 24 #define OCTET 25 #define OR 26 #define PERCENT 27 #define PLUS 28 #define QMARK 29 #define RAQUOT 30 #define RBRACE 31 #define RPAREN 32 #define RSBRAQUET 33 #define SEMI 34 #define SLASH 35 #define SP 36 #define SQUOTE 37 #define STAR 38 #define TILDE 39 #define USCORE 40 #ifdef EOF #undef EOF #define EOF ANTLR3_TOKEN_EOF #endif #ifndef TOKENSOURCE #define TOKENSOURCE(lxr) lxr->pLexer->rec->state->tokSource #endif /* End of token definitions for belle_sip_messageLexer * ============================================================================= */ /** } */ #ifdef __cplusplus } #endif #endif /* END - Note:Keep extra line feed to satisfy UNIX systems */ belle-sip-5.2.0+dfsg/src/grammars/belle_sip_messageParser.c000066400000000000000000313600641434613136500237170ustar00rootroot00000000000000/** \file * This C source file was generated by $ANTLR version 3.4 * * - From the grammar source file : ../grammars/belle_sip_message.g * - On : 2022-08-03 14:19:16 * - for the parser : belle_sip_messageParserParser * * Editing it, at least manually, is not wise. * * C language generator and runtime by Jim Idle, jimi|hereisanat|idle|dotgoeshere|ws. * * */ // [The "BSD license"] // Copyright (c) 2005-2009 Jim Idle, Temporal Wave LLC // http://www.temporal-wave.com // http://www.linkedin.com/in/jimidle // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // 1. Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // 2. Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // 3. The name of the author may not be used to endorse or promote products // derived from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR // IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES // OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT // NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF // THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /* ============================================================================= * This is what the grammar programmer asked us to put at the top of every file. */ /* belle-sip - SIP (RFC3261) library. Copyright (C) 2010 Belledonne Communications SARL This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #pragma GCC diagnostic ignored "-Wparentheses" #pragma GCC diagnostic ignored "-Wunused" #ifndef __clang__ #pragma GCC diagnostic ignored "-Wunused-but-set-variable" #pragma GCC diagnostic ignored "-Wunused-variable" #pragma GCC diagnostic ignored "-Wunused-function" #endif /* End of Header action. * ============================================================================= */ /* ----------------------------------------- * Include the ANTLR3 generated header file. */ #include "belle_sip_messageParser.h" /* ----------------------------------------- */ /* MACROS that hide the C interface implementations from the * generated code, which makes it a little more understandable to the human eye. * I am very much against using C pre-processor macros for function calls and bits * of code as you cannot see what is happening when single stepping in debuggers * and so on. The exception (in my book at least) is for generated code, where you are * not maintaining it, but may wish to read and understand it. If you single step it, you know that input() * hides some indirect calls, but is always referring to the input stream. This is * probably more readable than ctx->input->istream->input(snarfle0->blarg) and allows me to rejig * the runtime interfaces without changing the generated code too often, without * confusing the reader of the generated output, who may not wish to know the gory * details of the interface inheritance. */ #define CTX ctx /* Aids in accessing scopes for grammar programmers */ #undef SCOPE_TYPE #undef SCOPE_STACK #undef SCOPE_TOP #define SCOPE_TYPE(scope) pbelle_sip_messageParser_##scope##_SCOPE #define SCOPE_STACK(scope) pbelle_sip_messageParser_##scope##Stack #define SCOPE_TOP(scope) ctx->pbelle_sip_messageParser_##scope##Top #define SCOPE_SIZE(scope) ctx->pbelle_sip_messageParser_##scope##Stack_limit #define SCOPE_INSTANCE(scope, i) (ctx->SCOPE_STACK(scope)->get(ctx->SCOPE_STACK(scope),i)) /* Macros for accessing things in the parser */ #undef PARSER #undef RECOGNIZER #undef HAVEPARSEDRULE #undef MEMOIZE #undef INPUT #undef STRSTREAM #undef HASEXCEPTION #undef EXCEPTION #undef MATCHT #undef MATCHANYT #undef FOLLOWSTACK #undef FOLLOWPUSH #undef FOLLOWPOP #undef PRECOVER #undef PREPORTERROR #undef LA #undef LT #undef CONSTRUCTEX #undef CONSUME #undef MARK #undef REWIND #undef REWINDLAST #undef PERRORRECOVERY #undef HASFAILED #undef FAILEDFLAG #undef RECOVERFROMMISMATCHEDSET #undef RECOVERFROMMISMATCHEDELEMENT #undef INDEX #undef ADAPTOR #undef SEEK #undef RULEMEMO #undef DBG #define PARSER ctx->pParser #define RECOGNIZER PARSER->rec #define PSRSTATE RECOGNIZER->state #define HAVEPARSEDRULE(r) RECOGNIZER->alreadyParsedRule(RECOGNIZER, r) #define MEMOIZE(ri,si) RECOGNIZER->memoize(RECOGNIZER, ri, si) #define INPUT PARSER->tstream #define STRSTREAM INPUT #define ISTREAM INPUT->istream #define INDEX() ISTREAM->index(INPUT->istream) #define HASEXCEPTION() (PSRSTATE->error == ANTLR3_TRUE) #define EXCEPTION PSRSTATE->exception #define MATCHT(t, fs) RECOGNIZER->match(RECOGNIZER, t, fs) #define MATCHANYT() RECOGNIZER->matchAny(RECOGNIZER) #define FOLLOWSTACK PSRSTATE->following #ifdef SKIP_FOLLOW_SETS #define FOLLOWPUSH(x) #define FOLLOWPOP() #else #define FOLLOWPUSH(x) FOLLOWSTACK->push(FOLLOWSTACK, ((void *)(&(x))), NULL) #define FOLLOWPOP() FOLLOWSTACK->pop(FOLLOWSTACK) #endif #define PRECOVER() RECOGNIZER->recover(RECOGNIZER) #define PREPORTERROR() RECOGNIZER->reportError(RECOGNIZER) #define LA(n) INPUT->istream->_LA(ISTREAM, n) #define LT(n) INPUT->_LT(INPUT, n) #define CONSTRUCTEX() RECOGNIZER->exConstruct(RECOGNIZER) #define CONSUME() ISTREAM->consume(ISTREAM) #define MARK() ISTREAM->mark(ISTREAM) #define REWIND(m) ISTREAM->rewind(ISTREAM, m) #define REWINDLAST() ISTREAM->rewindLast(ISTREAM) #define SEEK(n) ISTREAM->seek(ISTREAM, n) #define PERRORRECOVERY PSRSTATE->errorRecovery #define FAILEDFLAG PSRSTATE->failed #define HASFAILED() (FAILEDFLAG == ANTLR3_TRUE) #define BACKTRACKING PSRSTATE->backtracking #define RECOVERFROMMISMATCHEDSET(s) RECOGNIZER->recoverFromMismatchedSet(RECOGNIZER, s) #define RECOVERFROMMISMATCHEDELEMENT(e) RECOGNIZER->recoverFromMismatchedElement(RECOGNIZER, s) #define ADAPTOR ctx->adaptor #define RULEMEMO PSRSTATE->ruleMemo #define DBG RECOGNIZER->debugger #define TOKTEXT(tok, txt) tok, (pANTLR3_UINT8)txt /* The 4 tokens defined below may well clash with your own #defines or token types. If so * then for the present you must use different names for your defines as these are hard coded * in the code generator. It would be better not to use such names internally, and maybe * we can change this in a forthcoming release. I deliberately do not #undef these * here as this will at least give you a redefined error somewhere if they clash. */ #define UP ANTLR3_TOKEN_UP #define DOWN ANTLR3_TOKEN_DOWN #define EOR ANTLR3_TOKEN_EOR #define INVALID ANTLR3_TOKEN_INVALID /* ============================================================================= * Functions to create and destroy scopes. First come the rule scopes, followed * by the global declared scopes. */ /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sip_messageParser_message scope set */ static pbelle_sip_messageParser_message_SCOPE pbelle_sip_messageParser_messagePush(pbelle_sip_messageParser ctx); static void ANTLR3_CDECL messageFree(pbelle_sip_messageParser_message_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL messageFree(pbelle_sip_messageParser_message_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sip_messageParser message scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sip_messageParser_messageTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sip_messageParser_message_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sip_messageParser_message_SCOPE pbelle_sip_messageParser_messagePush(pbelle_sip_messageParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sip_messageParser_message_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sip_messageParser_messageStack->size(ctx->pbelle_sip_messageParser_messageStack) > ctx->pbelle_sip_messageParser_messageStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sip_messageParser_message_SCOPE)ctx->pbelle_sip_messageParser_messageStack->get(ctx->pbelle_sip_messageParser_messageStack, ctx->pbelle_sip_messageParser_messageStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sip_messageParser_message_SCOPE) ANTLR3_MALLOC(sizeof(belle_sip_messageParser_message_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sip_messageParser_messageStack->push(ctx->pbelle_sip_messageParser_messageStack, newAttributes, (void (*)(void *))messageFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sip_messageParser_messageStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sip_messageParser_message_raw scope set */ static pbelle_sip_messageParser_message_raw_SCOPE pbelle_sip_messageParser_message_rawPush(pbelle_sip_messageParser ctx); static void ANTLR3_CDECL message_rawFree(pbelle_sip_messageParser_message_raw_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL message_rawFree(pbelle_sip_messageParser_message_raw_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sip_messageParser message_raw scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sip_messageParser_message_rawTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sip_messageParser_message_raw_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sip_messageParser_message_raw_SCOPE pbelle_sip_messageParser_message_rawPush(pbelle_sip_messageParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sip_messageParser_message_raw_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sip_messageParser_message_rawStack->size(ctx->pbelle_sip_messageParser_message_rawStack) > ctx->pbelle_sip_messageParser_message_rawStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sip_messageParser_message_raw_SCOPE)ctx->pbelle_sip_messageParser_message_rawStack->get(ctx->pbelle_sip_messageParser_message_rawStack, ctx->pbelle_sip_messageParser_message_rawStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sip_messageParser_message_raw_SCOPE) ANTLR3_MALLOC(sizeof(belle_sip_messageParser_message_raw_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sip_messageParser_message_rawStack->push(ctx->pbelle_sip_messageParser_message_rawStack, newAttributes, (void (*)(void *))message_rawFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sip_messageParser_message_rawStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sip_messageParser_common_request scope set */ static pbelle_sip_messageParser_common_request_SCOPE pbelle_sip_messageParser_common_requestPush(pbelle_sip_messageParser ctx); static void ANTLR3_CDECL common_requestFree(pbelle_sip_messageParser_common_request_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL common_requestFree(pbelle_sip_messageParser_common_request_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sip_messageParser common_request scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sip_messageParser_common_requestTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sip_messageParser_common_request_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sip_messageParser_common_request_SCOPE pbelle_sip_messageParser_common_requestPush(pbelle_sip_messageParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sip_messageParser_common_request_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sip_messageParser_common_requestStack->size(ctx->pbelle_sip_messageParser_common_requestStack) > ctx->pbelle_sip_messageParser_common_requestStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sip_messageParser_common_request_SCOPE)ctx->pbelle_sip_messageParser_common_requestStack->get(ctx->pbelle_sip_messageParser_common_requestStack, ctx->pbelle_sip_messageParser_common_requestStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sip_messageParser_common_request_SCOPE) ANTLR3_MALLOC(sizeof(belle_sip_messageParser_common_request_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sip_messageParser_common_requestStack->push(ctx->pbelle_sip_messageParser_common_requestStack, newAttributes, (void (*)(void *))common_requestFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sip_messageParser_common_requestStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sip_messageParser_request_line scope set */ static pbelle_sip_messageParser_request_line_SCOPE pbelle_sip_messageParser_request_linePush(pbelle_sip_messageParser ctx); static void ANTLR3_CDECL request_lineFree(pbelle_sip_messageParser_request_line_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL request_lineFree(pbelle_sip_messageParser_request_line_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sip_messageParser request_line scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sip_messageParser_request_lineTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sip_messageParser_request_line_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sip_messageParser_request_line_SCOPE pbelle_sip_messageParser_request_linePush(pbelle_sip_messageParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sip_messageParser_request_line_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sip_messageParser_request_lineStack->size(ctx->pbelle_sip_messageParser_request_lineStack) > ctx->pbelle_sip_messageParser_request_lineStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sip_messageParser_request_line_SCOPE)ctx->pbelle_sip_messageParser_request_lineStack->get(ctx->pbelle_sip_messageParser_request_lineStack, ctx->pbelle_sip_messageParser_request_lineStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sip_messageParser_request_line_SCOPE) ANTLR3_MALLOC(sizeof(belle_sip_messageParser_request_line_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sip_messageParser_request_lineStack->push(ctx->pbelle_sip_messageParser_request_lineStack, newAttributes, (void (*)(void *))request_lineFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sip_messageParser_request_lineStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sip_messageParser_status_line scope set */ static pbelle_sip_messageParser_status_line_SCOPE pbelle_sip_messageParser_status_linePush(pbelle_sip_messageParser ctx); static void ANTLR3_CDECL status_lineFree(pbelle_sip_messageParser_status_line_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL status_lineFree(pbelle_sip_messageParser_status_line_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sip_messageParser status_line scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sip_messageParser_status_lineTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sip_messageParser_status_line_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sip_messageParser_status_line_SCOPE pbelle_sip_messageParser_status_linePush(pbelle_sip_messageParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sip_messageParser_status_line_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sip_messageParser_status_lineStack->size(ctx->pbelle_sip_messageParser_status_lineStack) > ctx->pbelle_sip_messageParser_status_lineStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sip_messageParser_status_line_SCOPE)ctx->pbelle_sip_messageParser_status_lineStack->get(ctx->pbelle_sip_messageParser_status_lineStack, ctx->pbelle_sip_messageParser_status_lineStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sip_messageParser_status_line_SCOPE) ANTLR3_MALLOC(sizeof(belle_sip_messageParser_status_line_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sip_messageParser_status_lineStack->push(ctx->pbelle_sip_messageParser_status_lineStack, newAttributes, (void (*)(void *))status_lineFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sip_messageParser_status_lineStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sip_messageParser_http_request_line scope set */ static pbelle_sip_messageParser_http_request_line_SCOPE pbelle_sip_messageParser_http_request_linePush(pbelle_sip_messageParser ctx); static void ANTLR3_CDECL http_request_lineFree(pbelle_sip_messageParser_http_request_line_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL http_request_lineFree(pbelle_sip_messageParser_http_request_line_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sip_messageParser http_request_line scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sip_messageParser_http_request_lineTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sip_messageParser_http_request_line_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sip_messageParser_http_request_line_SCOPE pbelle_sip_messageParser_http_request_linePush(pbelle_sip_messageParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sip_messageParser_http_request_line_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sip_messageParser_http_request_lineStack->size(ctx->pbelle_sip_messageParser_http_request_lineStack) > ctx->pbelle_sip_messageParser_http_request_lineStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sip_messageParser_http_request_line_SCOPE)ctx->pbelle_sip_messageParser_http_request_lineStack->get(ctx->pbelle_sip_messageParser_http_request_lineStack, ctx->pbelle_sip_messageParser_http_request_lineStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sip_messageParser_http_request_line_SCOPE) ANTLR3_MALLOC(sizeof(belle_sip_messageParser_http_request_line_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sip_messageParser_http_request_lineStack->push(ctx->pbelle_sip_messageParser_http_request_lineStack, newAttributes, (void (*)(void *))http_request_lineFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sip_messageParser_http_request_lineStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sip_messageParser_generic_uri_for_from_to_contact_addr_spec scope set */ static pbelle_sip_messageParser_generic_uri_for_from_to_contact_addr_spec_SCOPE pbelle_sip_messageParser_generic_uri_for_from_to_contact_addr_specPush(pbelle_sip_messageParser ctx); static void ANTLR3_CDECL generic_uri_for_from_to_contact_addr_specFree(pbelle_sip_messageParser_generic_uri_for_from_to_contact_addr_spec_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL generic_uri_for_from_to_contact_addr_specFree(pbelle_sip_messageParser_generic_uri_for_from_to_contact_addr_spec_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sip_messageParser generic_uri_for_from_to_contact_addr_spec scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sip_messageParser_generic_uri_for_from_to_contact_addr_specTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sip_messageParser_generic_uri_for_from_to_contact_addr_spec_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sip_messageParser_generic_uri_for_from_to_contact_addr_spec_SCOPE pbelle_sip_messageParser_generic_uri_for_from_to_contact_addr_specPush(pbelle_sip_messageParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sip_messageParser_generic_uri_for_from_to_contact_addr_spec_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sip_messageParser_generic_uri_for_from_to_contact_addr_specStack->size(ctx->pbelle_sip_messageParser_generic_uri_for_from_to_contact_addr_specStack) > ctx->pbelle_sip_messageParser_generic_uri_for_from_to_contact_addr_specStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sip_messageParser_generic_uri_for_from_to_contact_addr_spec_SCOPE)ctx->pbelle_sip_messageParser_generic_uri_for_from_to_contact_addr_specStack->get(ctx->pbelle_sip_messageParser_generic_uri_for_from_to_contact_addr_specStack, ctx->pbelle_sip_messageParser_generic_uri_for_from_to_contact_addr_specStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sip_messageParser_generic_uri_for_from_to_contact_addr_spec_SCOPE) ANTLR3_MALLOC(sizeof(belle_sip_messageParser_generic_uri_for_from_to_contact_addr_spec_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sip_messageParser_generic_uri_for_from_to_contact_addr_specStack->push(ctx->pbelle_sip_messageParser_generic_uri_for_from_to_contact_addr_specStack, newAttributes, (void (*)(void *))generic_uri_for_from_to_contact_addr_specFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sip_messageParser_generic_uri_for_from_to_contact_addr_specStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sip_messageParser_generic_uri scope set */ static pbelle_sip_messageParser_generic_uri_SCOPE pbelle_sip_messageParser_generic_uriPush(pbelle_sip_messageParser ctx); static void ANTLR3_CDECL generic_uriFree(pbelle_sip_messageParser_generic_uri_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL generic_uriFree(pbelle_sip_messageParser_generic_uri_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sip_messageParser generic_uri scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sip_messageParser_generic_uriTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sip_messageParser_generic_uri_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sip_messageParser_generic_uri_SCOPE pbelle_sip_messageParser_generic_uriPush(pbelle_sip_messageParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sip_messageParser_generic_uri_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sip_messageParser_generic_uriStack->size(ctx->pbelle_sip_messageParser_generic_uriStack) > ctx->pbelle_sip_messageParser_generic_uriStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sip_messageParser_generic_uri_SCOPE)ctx->pbelle_sip_messageParser_generic_uriStack->get(ctx->pbelle_sip_messageParser_generic_uriStack, ctx->pbelle_sip_messageParser_generic_uriStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sip_messageParser_generic_uri_SCOPE) ANTLR3_MALLOC(sizeof(belle_sip_messageParser_generic_uri_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sip_messageParser_generic_uriStack->push(ctx->pbelle_sip_messageParser_generic_uriStack, newAttributes, (void (*)(void *))generic_uriFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sip_messageParser_generic_uriStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sip_messageParser_authority_userinfo scope set */ static pbelle_sip_messageParser_authority_userinfo_SCOPE pbelle_sip_messageParser_authority_userinfoPush(pbelle_sip_messageParser ctx); static void ANTLR3_CDECL authority_userinfoFree(pbelle_sip_messageParser_authority_userinfo_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL authority_userinfoFree(pbelle_sip_messageParser_authority_userinfo_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sip_messageParser authority_userinfo scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sip_messageParser_authority_userinfoTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sip_messageParser_authority_userinfo_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sip_messageParser_authority_userinfo_SCOPE pbelle_sip_messageParser_authority_userinfoPush(pbelle_sip_messageParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sip_messageParser_authority_userinfo_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sip_messageParser_authority_userinfoStack->size(ctx->pbelle_sip_messageParser_authority_userinfoStack) > ctx->pbelle_sip_messageParser_authority_userinfoStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sip_messageParser_authority_userinfo_SCOPE)ctx->pbelle_sip_messageParser_authority_userinfoStack->get(ctx->pbelle_sip_messageParser_authority_userinfoStack, ctx->pbelle_sip_messageParser_authority_userinfoStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sip_messageParser_authority_userinfo_SCOPE) ANTLR3_MALLOC(sizeof(belle_sip_messageParser_authority_userinfo_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sip_messageParser_authority_userinfoStack->push(ctx->pbelle_sip_messageParser_authority_userinfoStack, newAttributes, (void (*)(void *))authority_userinfoFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sip_messageParser_authority_userinfoStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sip_messageParser_authority_hostport scope set */ static pbelle_sip_messageParser_authority_hostport_SCOPE pbelle_sip_messageParser_authority_hostportPush(pbelle_sip_messageParser ctx); static void ANTLR3_CDECL authority_hostportFree(pbelle_sip_messageParser_authority_hostport_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL authority_hostportFree(pbelle_sip_messageParser_authority_hostport_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sip_messageParser authority_hostport scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sip_messageParser_authority_hostportTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sip_messageParser_authority_hostport_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sip_messageParser_authority_hostport_SCOPE pbelle_sip_messageParser_authority_hostportPush(pbelle_sip_messageParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sip_messageParser_authority_hostport_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sip_messageParser_authority_hostportStack->size(ctx->pbelle_sip_messageParser_authority_hostportStack) > ctx->pbelle_sip_messageParser_authority_hostportStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sip_messageParser_authority_hostport_SCOPE)ctx->pbelle_sip_messageParser_authority_hostportStack->get(ctx->pbelle_sip_messageParser_authority_hostportStack, ctx->pbelle_sip_messageParser_authority_hostportStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sip_messageParser_authority_hostport_SCOPE) ANTLR3_MALLOC(sizeof(belle_sip_messageParser_authority_hostport_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sip_messageParser_authority_hostportStack->push(ctx->pbelle_sip_messageParser_authority_hostportStack, newAttributes, (void (*)(void *))authority_hostportFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sip_messageParser_authority_hostportStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sip_messageParser_generic_param scope set */ static pbelle_sip_messageParser_generic_param_SCOPE pbelle_sip_messageParser_generic_paramPush(pbelle_sip_messageParser ctx); static void ANTLR3_CDECL generic_paramFree(pbelle_sip_messageParser_generic_param_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL generic_paramFree(pbelle_sip_messageParser_generic_param_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sip_messageParser generic_param scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sip_messageParser_generic_paramTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sip_messageParser_generic_param_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sip_messageParser_generic_param_SCOPE pbelle_sip_messageParser_generic_paramPush(pbelle_sip_messageParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sip_messageParser_generic_param_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sip_messageParser_generic_paramStack->size(ctx->pbelle_sip_messageParser_generic_paramStack) > ctx->pbelle_sip_messageParser_generic_paramStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sip_messageParser_generic_param_SCOPE)ctx->pbelle_sip_messageParser_generic_paramStack->get(ctx->pbelle_sip_messageParser_generic_paramStack, ctx->pbelle_sip_messageParser_generic_paramStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sip_messageParser_generic_param_SCOPE) ANTLR3_MALLOC(sizeof(belle_sip_messageParser_generic_param_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sip_messageParser_generic_paramStack->push(ctx->pbelle_sip_messageParser_generic_paramStack, newAttributes, (void (*)(void *))generic_paramFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sip_messageParser_generic_paramStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sip_messageParser_header_allow scope set */ static pbelle_sip_messageParser_header_allow_SCOPE pbelle_sip_messageParser_header_allowPush(pbelle_sip_messageParser ctx); static void ANTLR3_CDECL header_allowFree(pbelle_sip_messageParser_header_allow_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL header_allowFree(pbelle_sip_messageParser_header_allow_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sip_messageParser header_allow scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sip_messageParser_header_allowTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sip_messageParser_header_allow_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sip_messageParser_header_allow_SCOPE pbelle_sip_messageParser_header_allowPush(pbelle_sip_messageParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sip_messageParser_header_allow_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sip_messageParser_header_allowStack->size(ctx->pbelle_sip_messageParser_header_allowStack) > ctx->pbelle_sip_messageParser_header_allowStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sip_messageParser_header_allow_SCOPE)ctx->pbelle_sip_messageParser_header_allowStack->get(ctx->pbelle_sip_messageParser_header_allowStack, ctx->pbelle_sip_messageParser_header_allowStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sip_messageParser_header_allow_SCOPE) ANTLR3_MALLOC(sizeof(belle_sip_messageParser_header_allow_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sip_messageParser_header_allowStack->push(ctx->pbelle_sip_messageParser_header_allowStack, newAttributes, (void (*)(void *))header_allowFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sip_messageParser_header_allowStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sip_messageParser_header_authorization scope set */ static pbelle_sip_messageParser_header_authorization_SCOPE pbelle_sip_messageParser_header_authorizationPush(pbelle_sip_messageParser ctx); static void ANTLR3_CDECL header_authorizationFree(pbelle_sip_messageParser_header_authorization_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL header_authorizationFree(pbelle_sip_messageParser_header_authorization_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sip_messageParser header_authorization scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sip_messageParser_header_authorizationTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sip_messageParser_header_authorization_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sip_messageParser_header_authorization_SCOPE pbelle_sip_messageParser_header_authorizationPush(pbelle_sip_messageParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sip_messageParser_header_authorization_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sip_messageParser_header_authorizationStack->size(ctx->pbelle_sip_messageParser_header_authorizationStack) > ctx->pbelle_sip_messageParser_header_authorizationStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sip_messageParser_header_authorization_SCOPE)ctx->pbelle_sip_messageParser_header_authorizationStack->get(ctx->pbelle_sip_messageParser_header_authorizationStack, ctx->pbelle_sip_messageParser_header_authorizationStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sip_messageParser_header_authorization_SCOPE) ANTLR3_MALLOC(sizeof(belle_sip_messageParser_header_authorization_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sip_messageParser_header_authorizationStack->push(ctx->pbelle_sip_messageParser_header_authorizationStack, newAttributes, (void (*)(void *))header_authorizationFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sip_messageParser_header_authorizationStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sip_messageParser_header_call_id scope set */ static pbelle_sip_messageParser_header_call_id_SCOPE pbelle_sip_messageParser_header_call_idPush(pbelle_sip_messageParser ctx); static void ANTLR3_CDECL header_call_idFree(pbelle_sip_messageParser_header_call_id_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL header_call_idFree(pbelle_sip_messageParser_header_call_id_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sip_messageParser header_call_id scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sip_messageParser_header_call_idTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sip_messageParser_header_call_id_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sip_messageParser_header_call_id_SCOPE pbelle_sip_messageParser_header_call_idPush(pbelle_sip_messageParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sip_messageParser_header_call_id_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sip_messageParser_header_call_idStack->size(ctx->pbelle_sip_messageParser_header_call_idStack) > ctx->pbelle_sip_messageParser_header_call_idStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sip_messageParser_header_call_id_SCOPE)ctx->pbelle_sip_messageParser_header_call_idStack->get(ctx->pbelle_sip_messageParser_header_call_idStack, ctx->pbelle_sip_messageParser_header_call_idStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sip_messageParser_header_call_id_SCOPE) ANTLR3_MALLOC(sizeof(belle_sip_messageParser_header_call_id_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sip_messageParser_header_call_idStack->push(ctx->pbelle_sip_messageParser_header_call_idStack, newAttributes, (void (*)(void *))header_call_idFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sip_messageParser_header_call_idStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sip_messageParser_header_retry_after scope set */ static pbelle_sip_messageParser_header_retry_after_SCOPE pbelle_sip_messageParser_header_retry_afterPush(pbelle_sip_messageParser ctx); static void ANTLR3_CDECL header_retry_afterFree(pbelle_sip_messageParser_header_retry_after_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL header_retry_afterFree(pbelle_sip_messageParser_header_retry_after_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sip_messageParser header_retry_after scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sip_messageParser_header_retry_afterTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sip_messageParser_header_retry_after_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sip_messageParser_header_retry_after_SCOPE pbelle_sip_messageParser_header_retry_afterPush(pbelle_sip_messageParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sip_messageParser_header_retry_after_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sip_messageParser_header_retry_afterStack->size(ctx->pbelle_sip_messageParser_header_retry_afterStack) > ctx->pbelle_sip_messageParser_header_retry_afterStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sip_messageParser_header_retry_after_SCOPE)ctx->pbelle_sip_messageParser_header_retry_afterStack->get(ctx->pbelle_sip_messageParser_header_retry_afterStack, ctx->pbelle_sip_messageParser_header_retry_afterStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sip_messageParser_header_retry_after_SCOPE) ANTLR3_MALLOC(sizeof(belle_sip_messageParser_header_retry_after_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sip_messageParser_header_retry_afterStack->push(ctx->pbelle_sip_messageParser_header_retry_afterStack, newAttributes, (void (*)(void *))header_retry_afterFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sip_messageParser_header_retry_afterStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sip_messageParser_header_contact scope set */ static pbelle_sip_messageParser_header_contact_SCOPE pbelle_sip_messageParser_header_contactPush(pbelle_sip_messageParser ctx); static void ANTLR3_CDECL header_contactFree(pbelle_sip_messageParser_header_contact_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL header_contactFree(pbelle_sip_messageParser_header_contact_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sip_messageParser header_contact scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sip_messageParser_header_contactTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sip_messageParser_header_contact_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sip_messageParser_header_contact_SCOPE pbelle_sip_messageParser_header_contactPush(pbelle_sip_messageParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sip_messageParser_header_contact_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sip_messageParser_header_contactStack->size(ctx->pbelle_sip_messageParser_header_contactStack) > ctx->pbelle_sip_messageParser_header_contactStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sip_messageParser_header_contact_SCOPE)ctx->pbelle_sip_messageParser_header_contactStack->get(ctx->pbelle_sip_messageParser_header_contactStack, ctx->pbelle_sip_messageParser_header_contactStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sip_messageParser_header_contact_SCOPE) ANTLR3_MALLOC(sizeof(belle_sip_messageParser_header_contact_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sip_messageParser_header_contactStack->push(ctx->pbelle_sip_messageParser_header_contactStack, newAttributes, (void (*)(void *))header_contactFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sip_messageParser_header_contactStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sip_messageParser_contact_param scope set */ static pbelle_sip_messageParser_contact_param_SCOPE pbelle_sip_messageParser_contact_paramPush(pbelle_sip_messageParser ctx); static void ANTLR3_CDECL contact_paramFree(pbelle_sip_messageParser_contact_param_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL contact_paramFree(pbelle_sip_messageParser_contact_param_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sip_messageParser contact_param scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sip_messageParser_contact_paramTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sip_messageParser_contact_param_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sip_messageParser_contact_param_SCOPE pbelle_sip_messageParser_contact_paramPush(pbelle_sip_messageParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sip_messageParser_contact_param_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sip_messageParser_contact_paramStack->size(ctx->pbelle_sip_messageParser_contact_paramStack) > ctx->pbelle_sip_messageParser_contact_paramStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sip_messageParser_contact_param_SCOPE)ctx->pbelle_sip_messageParser_contact_paramStack->get(ctx->pbelle_sip_messageParser_contact_paramStack, ctx->pbelle_sip_messageParser_contact_paramStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sip_messageParser_contact_param_SCOPE) ANTLR3_MALLOC(sizeof(belle_sip_messageParser_contact_param_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sip_messageParser_contact_paramStack->push(ctx->pbelle_sip_messageParser_contact_paramStack, newAttributes, (void (*)(void *))contact_paramFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sip_messageParser_contact_paramStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sip_messageParser_header_content_length scope set */ static pbelle_sip_messageParser_header_content_length_SCOPE pbelle_sip_messageParser_header_content_lengthPush(pbelle_sip_messageParser ctx); static void ANTLR3_CDECL header_content_lengthFree(pbelle_sip_messageParser_header_content_length_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL header_content_lengthFree(pbelle_sip_messageParser_header_content_length_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sip_messageParser header_content_length scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sip_messageParser_header_content_lengthTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sip_messageParser_header_content_length_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sip_messageParser_header_content_length_SCOPE pbelle_sip_messageParser_header_content_lengthPush(pbelle_sip_messageParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sip_messageParser_header_content_length_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sip_messageParser_header_content_lengthStack->size(ctx->pbelle_sip_messageParser_header_content_lengthStack) > ctx->pbelle_sip_messageParser_header_content_lengthStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sip_messageParser_header_content_length_SCOPE)ctx->pbelle_sip_messageParser_header_content_lengthStack->get(ctx->pbelle_sip_messageParser_header_content_lengthStack, ctx->pbelle_sip_messageParser_header_content_lengthStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sip_messageParser_header_content_length_SCOPE) ANTLR3_MALLOC(sizeof(belle_sip_messageParser_header_content_length_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sip_messageParser_header_content_lengthStack->push(ctx->pbelle_sip_messageParser_header_content_lengthStack, newAttributes, (void (*)(void *))header_content_lengthFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sip_messageParser_header_content_lengthStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sip_messageParser_header_content_type scope set */ static pbelle_sip_messageParser_header_content_type_SCOPE pbelle_sip_messageParser_header_content_typePush(pbelle_sip_messageParser ctx); static void ANTLR3_CDECL header_content_typeFree(pbelle_sip_messageParser_header_content_type_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL header_content_typeFree(pbelle_sip_messageParser_header_content_type_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sip_messageParser header_content_type scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sip_messageParser_header_content_typeTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sip_messageParser_header_content_type_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sip_messageParser_header_content_type_SCOPE pbelle_sip_messageParser_header_content_typePush(pbelle_sip_messageParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sip_messageParser_header_content_type_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sip_messageParser_header_content_typeStack->size(ctx->pbelle_sip_messageParser_header_content_typeStack) > ctx->pbelle_sip_messageParser_header_content_typeStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sip_messageParser_header_content_type_SCOPE)ctx->pbelle_sip_messageParser_header_content_typeStack->get(ctx->pbelle_sip_messageParser_header_content_typeStack, ctx->pbelle_sip_messageParser_header_content_typeStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sip_messageParser_header_content_type_SCOPE) ANTLR3_MALLOC(sizeof(belle_sip_messageParser_header_content_type_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sip_messageParser_header_content_typeStack->push(ctx->pbelle_sip_messageParser_header_content_typeStack, newAttributes, (void (*)(void *))header_content_typeFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sip_messageParser_header_content_typeStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sip_messageParser_header_cseq scope set */ static pbelle_sip_messageParser_header_cseq_SCOPE pbelle_sip_messageParser_header_cseqPush(pbelle_sip_messageParser ctx); static void ANTLR3_CDECL header_cseqFree(pbelle_sip_messageParser_header_cseq_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL header_cseqFree(pbelle_sip_messageParser_header_cseq_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sip_messageParser header_cseq scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sip_messageParser_header_cseqTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sip_messageParser_header_cseq_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sip_messageParser_header_cseq_SCOPE pbelle_sip_messageParser_header_cseqPush(pbelle_sip_messageParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sip_messageParser_header_cseq_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sip_messageParser_header_cseqStack->size(ctx->pbelle_sip_messageParser_header_cseqStack) > ctx->pbelle_sip_messageParser_header_cseqStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sip_messageParser_header_cseq_SCOPE)ctx->pbelle_sip_messageParser_header_cseqStack->get(ctx->pbelle_sip_messageParser_header_cseqStack, ctx->pbelle_sip_messageParser_header_cseqStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sip_messageParser_header_cseq_SCOPE) ANTLR3_MALLOC(sizeof(belle_sip_messageParser_header_cseq_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sip_messageParser_header_cseqStack->push(ctx->pbelle_sip_messageParser_header_cseqStack, newAttributes, (void (*)(void *))header_cseqFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sip_messageParser_header_cseqStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sip_messageParser_header_date scope set */ static pbelle_sip_messageParser_header_date_SCOPE pbelle_sip_messageParser_header_datePush(pbelle_sip_messageParser ctx); static void ANTLR3_CDECL header_dateFree(pbelle_sip_messageParser_header_date_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL header_dateFree(pbelle_sip_messageParser_header_date_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sip_messageParser header_date scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sip_messageParser_header_dateTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sip_messageParser_header_date_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sip_messageParser_header_date_SCOPE pbelle_sip_messageParser_header_datePush(pbelle_sip_messageParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sip_messageParser_header_date_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sip_messageParser_header_dateStack->size(ctx->pbelle_sip_messageParser_header_dateStack) > ctx->pbelle_sip_messageParser_header_dateStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sip_messageParser_header_date_SCOPE)ctx->pbelle_sip_messageParser_header_dateStack->get(ctx->pbelle_sip_messageParser_header_dateStack, ctx->pbelle_sip_messageParser_header_dateStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sip_messageParser_header_date_SCOPE) ANTLR3_MALLOC(sizeof(belle_sip_messageParser_header_date_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sip_messageParser_header_dateStack->push(ctx->pbelle_sip_messageParser_header_dateStack, newAttributes, (void (*)(void *))header_dateFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sip_messageParser_header_dateStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sip_messageParser_header_expires scope set */ static pbelle_sip_messageParser_header_expires_SCOPE pbelle_sip_messageParser_header_expiresPush(pbelle_sip_messageParser ctx); static void ANTLR3_CDECL header_expiresFree(pbelle_sip_messageParser_header_expires_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL header_expiresFree(pbelle_sip_messageParser_header_expires_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sip_messageParser header_expires scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sip_messageParser_header_expiresTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sip_messageParser_header_expires_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sip_messageParser_header_expires_SCOPE pbelle_sip_messageParser_header_expiresPush(pbelle_sip_messageParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sip_messageParser_header_expires_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sip_messageParser_header_expiresStack->size(ctx->pbelle_sip_messageParser_header_expiresStack) > ctx->pbelle_sip_messageParser_header_expiresStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sip_messageParser_header_expires_SCOPE)ctx->pbelle_sip_messageParser_header_expiresStack->get(ctx->pbelle_sip_messageParser_header_expiresStack, ctx->pbelle_sip_messageParser_header_expiresStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sip_messageParser_header_expires_SCOPE) ANTLR3_MALLOC(sizeof(belle_sip_messageParser_header_expires_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sip_messageParser_header_expiresStack->push(ctx->pbelle_sip_messageParser_header_expiresStack, newAttributes, (void (*)(void *))header_expiresFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sip_messageParser_header_expiresStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sip_messageParser_header_from scope set */ static pbelle_sip_messageParser_header_from_SCOPE pbelle_sip_messageParser_header_fromPush(pbelle_sip_messageParser ctx); static void ANTLR3_CDECL header_fromFree(pbelle_sip_messageParser_header_from_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL header_fromFree(pbelle_sip_messageParser_header_from_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sip_messageParser header_from scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sip_messageParser_header_fromTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sip_messageParser_header_from_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sip_messageParser_header_from_SCOPE pbelle_sip_messageParser_header_fromPush(pbelle_sip_messageParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sip_messageParser_header_from_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sip_messageParser_header_fromStack->size(ctx->pbelle_sip_messageParser_header_fromStack) > ctx->pbelle_sip_messageParser_header_fromStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sip_messageParser_header_from_SCOPE)ctx->pbelle_sip_messageParser_header_fromStack->get(ctx->pbelle_sip_messageParser_header_fromStack, ctx->pbelle_sip_messageParser_header_fromStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sip_messageParser_header_from_SCOPE) ANTLR3_MALLOC(sizeof(belle_sip_messageParser_header_from_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sip_messageParser_header_fromStack->push(ctx->pbelle_sip_messageParser_header_fromStack, newAttributes, (void (*)(void *))header_fromFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sip_messageParser_header_fromStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sip_messageParser_header_max_forwards scope set */ static pbelle_sip_messageParser_header_max_forwards_SCOPE pbelle_sip_messageParser_header_max_forwardsPush(pbelle_sip_messageParser ctx); static void ANTLR3_CDECL header_max_forwardsFree(pbelle_sip_messageParser_header_max_forwards_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL header_max_forwardsFree(pbelle_sip_messageParser_header_max_forwards_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sip_messageParser header_max_forwards scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sip_messageParser_header_max_forwardsTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sip_messageParser_header_max_forwards_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sip_messageParser_header_max_forwards_SCOPE pbelle_sip_messageParser_header_max_forwardsPush(pbelle_sip_messageParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sip_messageParser_header_max_forwards_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sip_messageParser_header_max_forwardsStack->size(ctx->pbelle_sip_messageParser_header_max_forwardsStack) > ctx->pbelle_sip_messageParser_header_max_forwardsStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sip_messageParser_header_max_forwards_SCOPE)ctx->pbelle_sip_messageParser_header_max_forwardsStack->get(ctx->pbelle_sip_messageParser_header_max_forwardsStack, ctx->pbelle_sip_messageParser_header_max_forwardsStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sip_messageParser_header_max_forwards_SCOPE) ANTLR3_MALLOC(sizeof(belle_sip_messageParser_header_max_forwards_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sip_messageParser_header_max_forwardsStack->push(ctx->pbelle_sip_messageParser_header_max_forwardsStack, newAttributes, (void (*)(void *))header_max_forwardsFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sip_messageParser_header_max_forwardsStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sip_messageParser_header_proxy_authenticate scope set */ static pbelle_sip_messageParser_header_proxy_authenticate_SCOPE pbelle_sip_messageParser_header_proxy_authenticatePush(pbelle_sip_messageParser ctx); static void ANTLR3_CDECL header_proxy_authenticateFree(pbelle_sip_messageParser_header_proxy_authenticate_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL header_proxy_authenticateFree(pbelle_sip_messageParser_header_proxy_authenticate_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sip_messageParser header_proxy_authenticate scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sip_messageParser_header_proxy_authenticateTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sip_messageParser_header_proxy_authenticate_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sip_messageParser_header_proxy_authenticate_SCOPE pbelle_sip_messageParser_header_proxy_authenticatePush(pbelle_sip_messageParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sip_messageParser_header_proxy_authenticate_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sip_messageParser_header_proxy_authenticateStack->size(ctx->pbelle_sip_messageParser_header_proxy_authenticateStack) > ctx->pbelle_sip_messageParser_header_proxy_authenticateStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sip_messageParser_header_proxy_authenticate_SCOPE)ctx->pbelle_sip_messageParser_header_proxy_authenticateStack->get(ctx->pbelle_sip_messageParser_header_proxy_authenticateStack, ctx->pbelle_sip_messageParser_header_proxy_authenticateStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sip_messageParser_header_proxy_authenticate_SCOPE) ANTLR3_MALLOC(sizeof(belle_sip_messageParser_header_proxy_authenticate_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sip_messageParser_header_proxy_authenticateStack->push(ctx->pbelle_sip_messageParser_header_proxy_authenticateStack, newAttributes, (void (*)(void *))header_proxy_authenticateFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sip_messageParser_header_proxy_authenticateStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sip_messageParser_qop_opts scope set */ static pbelle_sip_messageParser_qop_opts_SCOPE pbelle_sip_messageParser_qop_optsPush(pbelle_sip_messageParser ctx); static void ANTLR3_CDECL qop_optsFree(pbelle_sip_messageParser_qop_opts_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL qop_optsFree(pbelle_sip_messageParser_qop_opts_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sip_messageParser qop_opts scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sip_messageParser_qop_optsTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sip_messageParser_qop_opts_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sip_messageParser_qop_opts_SCOPE pbelle_sip_messageParser_qop_optsPush(pbelle_sip_messageParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sip_messageParser_qop_opts_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sip_messageParser_qop_optsStack->size(ctx->pbelle_sip_messageParser_qop_optsStack) > ctx->pbelle_sip_messageParser_qop_optsStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sip_messageParser_qop_opts_SCOPE)ctx->pbelle_sip_messageParser_qop_optsStack->get(ctx->pbelle_sip_messageParser_qop_optsStack, ctx->pbelle_sip_messageParser_qop_optsStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sip_messageParser_qop_opts_SCOPE) ANTLR3_MALLOC(sizeof(belle_sip_messageParser_qop_opts_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sip_messageParser_qop_optsStack->push(ctx->pbelle_sip_messageParser_qop_optsStack, newAttributes, (void (*)(void *))qop_optsFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sip_messageParser_qop_optsStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sip_messageParser_header_proxy_authorization scope set */ static pbelle_sip_messageParser_header_proxy_authorization_SCOPE pbelle_sip_messageParser_header_proxy_authorizationPush(pbelle_sip_messageParser ctx); static void ANTLR3_CDECL header_proxy_authorizationFree(pbelle_sip_messageParser_header_proxy_authorization_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL header_proxy_authorizationFree(pbelle_sip_messageParser_header_proxy_authorization_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sip_messageParser header_proxy_authorization scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sip_messageParser_header_proxy_authorizationTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sip_messageParser_header_proxy_authorization_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sip_messageParser_header_proxy_authorization_SCOPE pbelle_sip_messageParser_header_proxy_authorizationPush(pbelle_sip_messageParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sip_messageParser_header_proxy_authorization_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sip_messageParser_header_proxy_authorizationStack->size(ctx->pbelle_sip_messageParser_header_proxy_authorizationStack) > ctx->pbelle_sip_messageParser_header_proxy_authorizationStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sip_messageParser_header_proxy_authorization_SCOPE)ctx->pbelle_sip_messageParser_header_proxy_authorizationStack->get(ctx->pbelle_sip_messageParser_header_proxy_authorizationStack, ctx->pbelle_sip_messageParser_header_proxy_authorizationStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sip_messageParser_header_proxy_authorization_SCOPE) ANTLR3_MALLOC(sizeof(belle_sip_messageParser_header_proxy_authorization_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sip_messageParser_header_proxy_authorizationStack->push(ctx->pbelle_sip_messageParser_header_proxy_authorizationStack, newAttributes, (void (*)(void *))header_proxy_authorizationFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sip_messageParser_header_proxy_authorizationStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sip_messageParser_header_service_route scope set */ static pbelle_sip_messageParser_header_service_route_SCOPE pbelle_sip_messageParser_header_service_routePush(pbelle_sip_messageParser ctx); static void ANTLR3_CDECL header_service_routeFree(pbelle_sip_messageParser_header_service_route_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL header_service_routeFree(pbelle_sip_messageParser_header_service_route_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sip_messageParser header_service_route scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sip_messageParser_header_service_routeTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sip_messageParser_header_service_route_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sip_messageParser_header_service_route_SCOPE pbelle_sip_messageParser_header_service_routePush(pbelle_sip_messageParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sip_messageParser_header_service_route_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sip_messageParser_header_service_routeStack->size(ctx->pbelle_sip_messageParser_header_service_routeStack) > ctx->pbelle_sip_messageParser_header_service_routeStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sip_messageParser_header_service_route_SCOPE)ctx->pbelle_sip_messageParser_header_service_routeStack->get(ctx->pbelle_sip_messageParser_header_service_routeStack, ctx->pbelle_sip_messageParser_header_service_routeStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sip_messageParser_header_service_route_SCOPE) ANTLR3_MALLOC(sizeof(belle_sip_messageParser_header_service_route_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sip_messageParser_header_service_routeStack->push(ctx->pbelle_sip_messageParser_header_service_routeStack, newAttributes, (void (*)(void *))header_service_routeFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sip_messageParser_header_service_routeStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sip_messageParser_srv_route scope set */ static pbelle_sip_messageParser_srv_route_SCOPE pbelle_sip_messageParser_srv_routePush(pbelle_sip_messageParser ctx); static void ANTLR3_CDECL srv_routeFree(pbelle_sip_messageParser_srv_route_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL srv_routeFree(pbelle_sip_messageParser_srv_route_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sip_messageParser srv_route scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sip_messageParser_srv_routeTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sip_messageParser_srv_route_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sip_messageParser_srv_route_SCOPE pbelle_sip_messageParser_srv_routePush(pbelle_sip_messageParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sip_messageParser_srv_route_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sip_messageParser_srv_routeStack->size(ctx->pbelle_sip_messageParser_srv_routeStack) > ctx->pbelle_sip_messageParser_srv_routeStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sip_messageParser_srv_route_SCOPE)ctx->pbelle_sip_messageParser_srv_routeStack->get(ctx->pbelle_sip_messageParser_srv_routeStack, ctx->pbelle_sip_messageParser_srv_routeStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sip_messageParser_srv_route_SCOPE) ANTLR3_MALLOC(sizeof(belle_sip_messageParser_srv_route_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sip_messageParser_srv_routeStack->push(ctx->pbelle_sip_messageParser_srv_routeStack, newAttributes, (void (*)(void *))srv_routeFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sip_messageParser_srv_routeStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sip_messageParser_header_record_route scope set */ static pbelle_sip_messageParser_header_record_route_SCOPE pbelle_sip_messageParser_header_record_routePush(pbelle_sip_messageParser ctx); static void ANTLR3_CDECL header_record_routeFree(pbelle_sip_messageParser_header_record_route_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL header_record_routeFree(pbelle_sip_messageParser_header_record_route_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sip_messageParser header_record_route scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sip_messageParser_header_record_routeTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sip_messageParser_header_record_route_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sip_messageParser_header_record_route_SCOPE pbelle_sip_messageParser_header_record_routePush(pbelle_sip_messageParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sip_messageParser_header_record_route_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sip_messageParser_header_record_routeStack->size(ctx->pbelle_sip_messageParser_header_record_routeStack) > ctx->pbelle_sip_messageParser_header_record_routeStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sip_messageParser_header_record_route_SCOPE)ctx->pbelle_sip_messageParser_header_record_routeStack->get(ctx->pbelle_sip_messageParser_header_record_routeStack, ctx->pbelle_sip_messageParser_header_record_routeStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sip_messageParser_header_record_route_SCOPE) ANTLR3_MALLOC(sizeof(belle_sip_messageParser_header_record_route_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sip_messageParser_header_record_routeStack->push(ctx->pbelle_sip_messageParser_header_record_routeStack, newAttributes, (void (*)(void *))header_record_routeFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sip_messageParser_header_record_routeStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sip_messageParser_rec_route scope set */ static pbelle_sip_messageParser_rec_route_SCOPE pbelle_sip_messageParser_rec_routePush(pbelle_sip_messageParser ctx); static void ANTLR3_CDECL rec_routeFree(pbelle_sip_messageParser_rec_route_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL rec_routeFree(pbelle_sip_messageParser_rec_route_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sip_messageParser rec_route scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sip_messageParser_rec_routeTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sip_messageParser_rec_route_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sip_messageParser_rec_route_SCOPE pbelle_sip_messageParser_rec_routePush(pbelle_sip_messageParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sip_messageParser_rec_route_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sip_messageParser_rec_routeStack->size(ctx->pbelle_sip_messageParser_rec_routeStack) > ctx->pbelle_sip_messageParser_rec_routeStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sip_messageParser_rec_route_SCOPE)ctx->pbelle_sip_messageParser_rec_routeStack->get(ctx->pbelle_sip_messageParser_rec_routeStack, ctx->pbelle_sip_messageParser_rec_routeStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sip_messageParser_rec_route_SCOPE) ANTLR3_MALLOC(sizeof(belle_sip_messageParser_rec_route_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sip_messageParser_rec_routeStack->push(ctx->pbelle_sip_messageParser_rec_routeStack, newAttributes, (void (*)(void *))rec_routeFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sip_messageParser_rec_routeStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sip_messageParser_header_route scope set */ static pbelle_sip_messageParser_header_route_SCOPE pbelle_sip_messageParser_header_routePush(pbelle_sip_messageParser ctx); static void ANTLR3_CDECL header_routeFree(pbelle_sip_messageParser_header_route_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL header_routeFree(pbelle_sip_messageParser_header_route_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sip_messageParser header_route scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sip_messageParser_header_routeTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sip_messageParser_header_route_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sip_messageParser_header_route_SCOPE pbelle_sip_messageParser_header_routePush(pbelle_sip_messageParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sip_messageParser_header_route_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sip_messageParser_header_routeStack->size(ctx->pbelle_sip_messageParser_header_routeStack) > ctx->pbelle_sip_messageParser_header_routeStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sip_messageParser_header_route_SCOPE)ctx->pbelle_sip_messageParser_header_routeStack->get(ctx->pbelle_sip_messageParser_header_routeStack, ctx->pbelle_sip_messageParser_header_routeStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sip_messageParser_header_route_SCOPE) ANTLR3_MALLOC(sizeof(belle_sip_messageParser_header_route_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sip_messageParser_header_routeStack->push(ctx->pbelle_sip_messageParser_header_routeStack, newAttributes, (void (*)(void *))header_routeFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sip_messageParser_header_routeStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sip_messageParser_route_param scope set */ static pbelle_sip_messageParser_route_param_SCOPE pbelle_sip_messageParser_route_paramPush(pbelle_sip_messageParser ctx); static void ANTLR3_CDECL route_paramFree(pbelle_sip_messageParser_route_param_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL route_paramFree(pbelle_sip_messageParser_route_param_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sip_messageParser route_param scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sip_messageParser_route_paramTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sip_messageParser_route_param_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sip_messageParser_route_param_SCOPE pbelle_sip_messageParser_route_paramPush(pbelle_sip_messageParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sip_messageParser_route_param_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sip_messageParser_route_paramStack->size(ctx->pbelle_sip_messageParser_route_paramStack) > ctx->pbelle_sip_messageParser_route_paramStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sip_messageParser_route_param_SCOPE)ctx->pbelle_sip_messageParser_route_paramStack->get(ctx->pbelle_sip_messageParser_route_paramStack, ctx->pbelle_sip_messageParser_route_paramStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sip_messageParser_route_param_SCOPE) ANTLR3_MALLOC(sizeof(belle_sip_messageParser_route_param_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sip_messageParser_route_paramStack->push(ctx->pbelle_sip_messageParser_route_paramStack, newAttributes, (void (*)(void *))route_paramFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sip_messageParser_route_paramStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sip_messageParser_header_to scope set */ static pbelle_sip_messageParser_header_to_SCOPE pbelle_sip_messageParser_header_toPush(pbelle_sip_messageParser ctx); static void ANTLR3_CDECL header_toFree(pbelle_sip_messageParser_header_to_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL header_toFree(pbelle_sip_messageParser_header_to_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sip_messageParser header_to scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sip_messageParser_header_toTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sip_messageParser_header_to_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sip_messageParser_header_to_SCOPE pbelle_sip_messageParser_header_toPush(pbelle_sip_messageParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sip_messageParser_header_to_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sip_messageParser_header_toStack->size(ctx->pbelle_sip_messageParser_header_toStack) > ctx->pbelle_sip_messageParser_header_toStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sip_messageParser_header_to_SCOPE)ctx->pbelle_sip_messageParser_header_toStack->get(ctx->pbelle_sip_messageParser_header_toStack, ctx->pbelle_sip_messageParser_header_toStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sip_messageParser_header_to_SCOPE) ANTLR3_MALLOC(sizeof(belle_sip_messageParser_header_to_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sip_messageParser_header_toStack->push(ctx->pbelle_sip_messageParser_header_toStack, newAttributes, (void (*)(void *))header_toFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sip_messageParser_header_toStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sip_messageParser_header_diversion scope set */ static pbelle_sip_messageParser_header_diversion_SCOPE pbelle_sip_messageParser_header_diversionPush(pbelle_sip_messageParser ctx); static void ANTLR3_CDECL header_diversionFree(pbelle_sip_messageParser_header_diversion_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL header_diversionFree(pbelle_sip_messageParser_header_diversion_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sip_messageParser header_diversion scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sip_messageParser_header_diversionTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sip_messageParser_header_diversion_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sip_messageParser_header_diversion_SCOPE pbelle_sip_messageParser_header_diversionPush(pbelle_sip_messageParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sip_messageParser_header_diversion_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sip_messageParser_header_diversionStack->size(ctx->pbelle_sip_messageParser_header_diversionStack) > ctx->pbelle_sip_messageParser_header_diversionStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sip_messageParser_header_diversion_SCOPE)ctx->pbelle_sip_messageParser_header_diversionStack->get(ctx->pbelle_sip_messageParser_header_diversionStack, ctx->pbelle_sip_messageParser_header_diversionStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sip_messageParser_header_diversion_SCOPE) ANTLR3_MALLOC(sizeof(belle_sip_messageParser_header_diversion_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sip_messageParser_header_diversionStack->push(ctx->pbelle_sip_messageParser_header_diversionStack, newAttributes, (void (*)(void *))header_diversionFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sip_messageParser_header_diversionStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sip_messageParser_header_user_agent scope set */ static pbelle_sip_messageParser_header_user_agent_SCOPE pbelle_sip_messageParser_header_user_agentPush(pbelle_sip_messageParser ctx); static void ANTLR3_CDECL header_user_agentFree(pbelle_sip_messageParser_header_user_agent_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL header_user_agentFree(pbelle_sip_messageParser_header_user_agent_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sip_messageParser header_user_agent scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sip_messageParser_header_user_agentTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sip_messageParser_header_user_agent_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sip_messageParser_header_user_agent_SCOPE pbelle_sip_messageParser_header_user_agentPush(pbelle_sip_messageParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sip_messageParser_header_user_agent_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sip_messageParser_header_user_agentStack->size(ctx->pbelle_sip_messageParser_header_user_agentStack) > ctx->pbelle_sip_messageParser_header_user_agentStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sip_messageParser_header_user_agent_SCOPE)ctx->pbelle_sip_messageParser_header_user_agentStack->get(ctx->pbelle_sip_messageParser_header_user_agentStack, ctx->pbelle_sip_messageParser_header_user_agentStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sip_messageParser_header_user_agent_SCOPE) ANTLR3_MALLOC(sizeof(belle_sip_messageParser_header_user_agent_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sip_messageParser_header_user_agentStack->push(ctx->pbelle_sip_messageParser_header_user_agentStack, newAttributes, (void (*)(void *))header_user_agentFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sip_messageParser_header_user_agentStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sip_messageParser_header_via scope set */ static pbelle_sip_messageParser_header_via_SCOPE pbelle_sip_messageParser_header_viaPush(pbelle_sip_messageParser ctx); static void ANTLR3_CDECL header_viaFree(pbelle_sip_messageParser_header_via_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL header_viaFree(pbelle_sip_messageParser_header_via_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sip_messageParser header_via scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sip_messageParser_header_viaTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sip_messageParser_header_via_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sip_messageParser_header_via_SCOPE pbelle_sip_messageParser_header_viaPush(pbelle_sip_messageParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sip_messageParser_header_via_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sip_messageParser_header_viaStack->size(ctx->pbelle_sip_messageParser_header_viaStack) > ctx->pbelle_sip_messageParser_header_viaStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sip_messageParser_header_via_SCOPE)ctx->pbelle_sip_messageParser_header_viaStack->get(ctx->pbelle_sip_messageParser_header_viaStack, ctx->pbelle_sip_messageParser_header_viaStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sip_messageParser_header_via_SCOPE) ANTLR3_MALLOC(sizeof(belle_sip_messageParser_header_via_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sip_messageParser_header_viaStack->push(ctx->pbelle_sip_messageParser_header_viaStack, newAttributes, (void (*)(void *))header_viaFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sip_messageParser_header_viaStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sip_messageParser_via_parm scope set */ static pbelle_sip_messageParser_via_parm_SCOPE pbelle_sip_messageParser_via_parmPush(pbelle_sip_messageParser ctx); static void ANTLR3_CDECL via_parmFree(pbelle_sip_messageParser_via_parm_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL via_parmFree(pbelle_sip_messageParser_via_parm_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sip_messageParser via_parm scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sip_messageParser_via_parmTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sip_messageParser_via_parm_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sip_messageParser_via_parm_SCOPE pbelle_sip_messageParser_via_parmPush(pbelle_sip_messageParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sip_messageParser_via_parm_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sip_messageParser_via_parmStack->size(ctx->pbelle_sip_messageParser_via_parmStack) > ctx->pbelle_sip_messageParser_via_parmStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sip_messageParser_via_parm_SCOPE)ctx->pbelle_sip_messageParser_via_parmStack->get(ctx->pbelle_sip_messageParser_via_parmStack, ctx->pbelle_sip_messageParser_via_parmStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sip_messageParser_via_parm_SCOPE) ANTLR3_MALLOC(sizeof(belle_sip_messageParser_via_parm_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sip_messageParser_via_parmStack->push(ctx->pbelle_sip_messageParser_via_parmStack, newAttributes, (void (*)(void *))via_parmFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sip_messageParser_via_parmStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sip_messageParser_header_www_authenticate scope set */ static pbelle_sip_messageParser_header_www_authenticate_SCOPE pbelle_sip_messageParser_header_www_authenticatePush(pbelle_sip_messageParser ctx); static void ANTLR3_CDECL header_www_authenticateFree(pbelle_sip_messageParser_header_www_authenticate_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL header_www_authenticateFree(pbelle_sip_messageParser_header_www_authenticate_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sip_messageParser header_www_authenticate scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sip_messageParser_header_www_authenticateTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sip_messageParser_header_www_authenticate_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sip_messageParser_header_www_authenticate_SCOPE pbelle_sip_messageParser_header_www_authenticatePush(pbelle_sip_messageParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sip_messageParser_header_www_authenticate_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sip_messageParser_header_www_authenticateStack->size(ctx->pbelle_sip_messageParser_header_www_authenticateStack) > ctx->pbelle_sip_messageParser_header_www_authenticateStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sip_messageParser_header_www_authenticate_SCOPE)ctx->pbelle_sip_messageParser_header_www_authenticateStack->get(ctx->pbelle_sip_messageParser_header_www_authenticateStack, ctx->pbelle_sip_messageParser_header_www_authenticateStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sip_messageParser_header_www_authenticate_SCOPE) ANTLR3_MALLOC(sizeof(belle_sip_messageParser_header_www_authenticate_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sip_messageParser_header_www_authenticateStack->push(ctx->pbelle_sip_messageParser_header_www_authenticateStack, newAttributes, (void (*)(void *))header_www_authenticateFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sip_messageParser_header_www_authenticateStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sip_messageParser_header_subscription_state scope set */ static pbelle_sip_messageParser_header_subscription_state_SCOPE pbelle_sip_messageParser_header_subscription_statePush(pbelle_sip_messageParser ctx); static void ANTLR3_CDECL header_subscription_stateFree(pbelle_sip_messageParser_header_subscription_state_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL header_subscription_stateFree(pbelle_sip_messageParser_header_subscription_state_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sip_messageParser header_subscription_state scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sip_messageParser_header_subscription_stateTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sip_messageParser_header_subscription_state_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sip_messageParser_header_subscription_state_SCOPE pbelle_sip_messageParser_header_subscription_statePush(pbelle_sip_messageParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sip_messageParser_header_subscription_state_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sip_messageParser_header_subscription_stateStack->size(ctx->pbelle_sip_messageParser_header_subscription_stateStack) > ctx->pbelle_sip_messageParser_header_subscription_stateStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sip_messageParser_header_subscription_state_SCOPE)ctx->pbelle_sip_messageParser_header_subscription_stateStack->get(ctx->pbelle_sip_messageParser_header_subscription_stateStack, ctx->pbelle_sip_messageParser_header_subscription_stateStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sip_messageParser_header_subscription_state_SCOPE) ANTLR3_MALLOC(sizeof(belle_sip_messageParser_header_subscription_state_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sip_messageParser_header_subscription_stateStack->push(ctx->pbelle_sip_messageParser_header_subscription_stateStack, newAttributes, (void (*)(void *))header_subscription_stateFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sip_messageParser_header_subscription_stateStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sip_messageParser_header_event scope set */ static pbelle_sip_messageParser_header_event_SCOPE pbelle_sip_messageParser_header_eventPush(pbelle_sip_messageParser ctx); static void ANTLR3_CDECL header_eventFree(pbelle_sip_messageParser_header_event_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL header_eventFree(pbelle_sip_messageParser_header_event_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sip_messageParser header_event scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sip_messageParser_header_eventTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sip_messageParser_header_event_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sip_messageParser_header_event_SCOPE pbelle_sip_messageParser_header_eventPush(pbelle_sip_messageParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sip_messageParser_header_event_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sip_messageParser_header_eventStack->size(ctx->pbelle_sip_messageParser_header_eventStack) > ctx->pbelle_sip_messageParser_header_eventStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sip_messageParser_header_event_SCOPE)ctx->pbelle_sip_messageParser_header_eventStack->get(ctx->pbelle_sip_messageParser_header_eventStack, ctx->pbelle_sip_messageParser_header_eventStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sip_messageParser_header_event_SCOPE) ANTLR3_MALLOC(sizeof(belle_sip_messageParser_header_event_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sip_messageParser_header_eventStack->push(ctx->pbelle_sip_messageParser_header_eventStack, newAttributes, (void (*)(void *))header_eventFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sip_messageParser_header_eventStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sip_messageParser_header_replaces scope set */ static pbelle_sip_messageParser_header_replaces_SCOPE pbelle_sip_messageParser_header_replacesPush(pbelle_sip_messageParser ctx); static void ANTLR3_CDECL header_replacesFree(pbelle_sip_messageParser_header_replaces_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL header_replacesFree(pbelle_sip_messageParser_header_replaces_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sip_messageParser header_replaces scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sip_messageParser_header_replacesTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sip_messageParser_header_replaces_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sip_messageParser_header_replaces_SCOPE pbelle_sip_messageParser_header_replacesPush(pbelle_sip_messageParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sip_messageParser_header_replaces_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sip_messageParser_header_replacesStack->size(ctx->pbelle_sip_messageParser_header_replacesStack) > ctx->pbelle_sip_messageParser_header_replacesStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sip_messageParser_header_replaces_SCOPE)ctx->pbelle_sip_messageParser_header_replacesStack->get(ctx->pbelle_sip_messageParser_header_replacesStack, ctx->pbelle_sip_messageParser_header_replacesStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sip_messageParser_header_replaces_SCOPE) ANTLR3_MALLOC(sizeof(belle_sip_messageParser_header_replaces_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sip_messageParser_header_replacesStack->push(ctx->pbelle_sip_messageParser_header_replacesStack, newAttributes, (void (*)(void *))header_replacesFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sip_messageParser_header_replacesStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sip_messageParser_header_privacy scope set */ static pbelle_sip_messageParser_header_privacy_SCOPE pbelle_sip_messageParser_header_privacyPush(pbelle_sip_messageParser ctx); static void ANTLR3_CDECL header_privacyFree(pbelle_sip_messageParser_header_privacy_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL header_privacyFree(pbelle_sip_messageParser_header_privacy_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sip_messageParser header_privacy scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sip_messageParser_header_privacyTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sip_messageParser_header_privacy_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sip_messageParser_header_privacy_SCOPE pbelle_sip_messageParser_header_privacyPush(pbelle_sip_messageParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sip_messageParser_header_privacy_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sip_messageParser_header_privacyStack->size(ctx->pbelle_sip_messageParser_header_privacyStack) > ctx->pbelle_sip_messageParser_header_privacyStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sip_messageParser_header_privacy_SCOPE)ctx->pbelle_sip_messageParser_header_privacyStack->get(ctx->pbelle_sip_messageParser_header_privacyStack, ctx->pbelle_sip_messageParser_header_privacyStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sip_messageParser_header_privacy_SCOPE) ANTLR3_MALLOC(sizeof(belle_sip_messageParser_header_privacy_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sip_messageParser_header_privacyStack->push(ctx->pbelle_sip_messageParser_header_privacyStack, newAttributes, (void (*)(void *))header_privacyFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sip_messageParser_header_privacyStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sip_messageParser_header_supported scope set */ static pbelle_sip_messageParser_header_supported_SCOPE pbelle_sip_messageParser_header_supportedPush(pbelle_sip_messageParser ctx); static void ANTLR3_CDECL header_supportedFree(pbelle_sip_messageParser_header_supported_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL header_supportedFree(pbelle_sip_messageParser_header_supported_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sip_messageParser header_supported scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sip_messageParser_header_supportedTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sip_messageParser_header_supported_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sip_messageParser_header_supported_SCOPE pbelle_sip_messageParser_header_supportedPush(pbelle_sip_messageParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sip_messageParser_header_supported_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sip_messageParser_header_supportedStack->size(ctx->pbelle_sip_messageParser_header_supportedStack) > ctx->pbelle_sip_messageParser_header_supportedStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sip_messageParser_header_supported_SCOPE)ctx->pbelle_sip_messageParser_header_supportedStack->get(ctx->pbelle_sip_messageParser_header_supportedStack, ctx->pbelle_sip_messageParser_header_supportedStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sip_messageParser_header_supported_SCOPE) ANTLR3_MALLOC(sizeof(belle_sip_messageParser_header_supported_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sip_messageParser_header_supportedStack->push(ctx->pbelle_sip_messageParser_header_supportedStack, newAttributes, (void (*)(void *))header_supportedFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sip_messageParser_header_supportedStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sip_messageParser_header_session_expires scope set */ static pbelle_sip_messageParser_header_session_expires_SCOPE pbelle_sip_messageParser_header_session_expiresPush(pbelle_sip_messageParser ctx); static void ANTLR3_CDECL header_session_expiresFree(pbelle_sip_messageParser_header_session_expires_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL header_session_expiresFree(pbelle_sip_messageParser_header_session_expires_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sip_messageParser header_session_expires scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sip_messageParser_header_session_expiresTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sip_messageParser_header_session_expires_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sip_messageParser_header_session_expires_SCOPE pbelle_sip_messageParser_header_session_expiresPush(pbelle_sip_messageParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sip_messageParser_header_session_expires_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sip_messageParser_header_session_expiresStack->size(ctx->pbelle_sip_messageParser_header_session_expiresStack) > ctx->pbelle_sip_messageParser_header_session_expiresStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sip_messageParser_header_session_expires_SCOPE)ctx->pbelle_sip_messageParser_header_session_expiresStack->get(ctx->pbelle_sip_messageParser_header_session_expiresStack, ctx->pbelle_sip_messageParser_header_session_expiresStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sip_messageParser_header_session_expires_SCOPE) ANTLR3_MALLOC(sizeof(belle_sip_messageParser_header_session_expires_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sip_messageParser_header_session_expiresStack->push(ctx->pbelle_sip_messageParser_header_session_expiresStack, newAttributes, (void (*)(void *))header_session_expiresFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sip_messageParser_header_session_expiresStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sip_messageParser_header_require scope set */ static pbelle_sip_messageParser_header_require_SCOPE pbelle_sip_messageParser_header_requirePush(pbelle_sip_messageParser ctx); static void ANTLR3_CDECL header_requireFree(pbelle_sip_messageParser_header_require_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL header_requireFree(pbelle_sip_messageParser_header_require_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sip_messageParser header_require scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sip_messageParser_header_requireTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sip_messageParser_header_require_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sip_messageParser_header_require_SCOPE pbelle_sip_messageParser_header_requirePush(pbelle_sip_messageParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sip_messageParser_header_require_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sip_messageParser_header_requireStack->size(ctx->pbelle_sip_messageParser_header_requireStack) > ctx->pbelle_sip_messageParser_header_requireStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sip_messageParser_header_require_SCOPE)ctx->pbelle_sip_messageParser_header_requireStack->get(ctx->pbelle_sip_messageParser_header_requireStack, ctx->pbelle_sip_messageParser_header_requireStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sip_messageParser_header_require_SCOPE) ANTLR3_MALLOC(sizeof(belle_sip_messageParser_header_require_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sip_messageParser_header_requireStack->push(ctx->pbelle_sip_messageParser_header_requireStack, newAttributes, (void (*)(void *))header_requireFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sip_messageParser_header_requireStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sip_messageParser_header_content_disposition scope set */ static pbelle_sip_messageParser_header_content_disposition_SCOPE pbelle_sip_messageParser_header_content_dispositionPush(pbelle_sip_messageParser ctx); static void ANTLR3_CDECL header_content_dispositionFree(pbelle_sip_messageParser_header_content_disposition_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL header_content_dispositionFree(pbelle_sip_messageParser_header_content_disposition_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sip_messageParser header_content_disposition scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sip_messageParser_header_content_dispositionTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sip_messageParser_header_content_disposition_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sip_messageParser_header_content_disposition_SCOPE pbelle_sip_messageParser_header_content_dispositionPush(pbelle_sip_messageParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sip_messageParser_header_content_disposition_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sip_messageParser_header_content_dispositionStack->size(ctx->pbelle_sip_messageParser_header_content_dispositionStack) > ctx->pbelle_sip_messageParser_header_content_dispositionStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sip_messageParser_header_content_disposition_SCOPE)ctx->pbelle_sip_messageParser_header_content_dispositionStack->get(ctx->pbelle_sip_messageParser_header_content_dispositionStack, ctx->pbelle_sip_messageParser_header_content_dispositionStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sip_messageParser_header_content_disposition_SCOPE) ANTLR3_MALLOC(sizeof(belle_sip_messageParser_header_content_disposition_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sip_messageParser_header_content_dispositionStack->push(ctx->pbelle_sip_messageParser_header_content_dispositionStack, newAttributes, (void (*)(void *))header_content_dispositionFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sip_messageParser_header_content_dispositionStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sip_messageParser_header_accept scope set */ static pbelle_sip_messageParser_header_accept_SCOPE pbelle_sip_messageParser_header_acceptPush(pbelle_sip_messageParser ctx); static void ANTLR3_CDECL header_acceptFree(pbelle_sip_messageParser_header_accept_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL header_acceptFree(pbelle_sip_messageParser_header_accept_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sip_messageParser header_accept scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sip_messageParser_header_acceptTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sip_messageParser_header_accept_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sip_messageParser_header_accept_SCOPE pbelle_sip_messageParser_header_acceptPush(pbelle_sip_messageParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sip_messageParser_header_accept_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sip_messageParser_header_acceptStack->size(ctx->pbelle_sip_messageParser_header_acceptStack) > ctx->pbelle_sip_messageParser_header_acceptStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sip_messageParser_header_accept_SCOPE)ctx->pbelle_sip_messageParser_header_acceptStack->get(ctx->pbelle_sip_messageParser_header_acceptStack, ctx->pbelle_sip_messageParser_header_acceptStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sip_messageParser_header_accept_SCOPE) ANTLR3_MALLOC(sizeof(belle_sip_messageParser_header_accept_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sip_messageParser_header_acceptStack->push(ctx->pbelle_sip_messageParser_header_acceptStack, newAttributes, (void (*)(void *))header_acceptFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sip_messageParser_header_acceptStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sip_messageParser_accept_param scope set */ static pbelle_sip_messageParser_accept_param_SCOPE pbelle_sip_messageParser_accept_paramPush(pbelle_sip_messageParser ctx); static void ANTLR3_CDECL accept_paramFree(pbelle_sip_messageParser_accept_param_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL accept_paramFree(pbelle_sip_messageParser_accept_param_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sip_messageParser accept_param scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sip_messageParser_accept_paramTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sip_messageParser_accept_param_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sip_messageParser_accept_param_SCOPE pbelle_sip_messageParser_accept_paramPush(pbelle_sip_messageParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sip_messageParser_accept_param_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sip_messageParser_accept_paramStack->size(ctx->pbelle_sip_messageParser_accept_paramStack) > ctx->pbelle_sip_messageParser_accept_paramStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sip_messageParser_accept_param_SCOPE)ctx->pbelle_sip_messageParser_accept_paramStack->get(ctx->pbelle_sip_messageParser_accept_paramStack, ctx->pbelle_sip_messageParser_accept_paramStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sip_messageParser_accept_param_SCOPE) ANTLR3_MALLOC(sizeof(belle_sip_messageParser_accept_param_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sip_messageParser_accept_paramStack->push(ctx->pbelle_sip_messageParser_accept_paramStack, newAttributes, (void (*)(void *))accept_paramFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sip_messageParser_accept_paramStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sip_messageParser_header_reason scope set */ static pbelle_sip_messageParser_header_reason_SCOPE pbelle_sip_messageParser_header_reasonPush(pbelle_sip_messageParser ctx); static void ANTLR3_CDECL header_reasonFree(pbelle_sip_messageParser_header_reason_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL header_reasonFree(pbelle_sip_messageParser_header_reason_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sip_messageParser header_reason scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sip_messageParser_header_reasonTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sip_messageParser_header_reason_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sip_messageParser_header_reason_SCOPE pbelle_sip_messageParser_header_reasonPush(pbelle_sip_messageParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sip_messageParser_header_reason_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sip_messageParser_header_reasonStack->size(ctx->pbelle_sip_messageParser_header_reasonStack) > ctx->pbelle_sip_messageParser_header_reasonStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sip_messageParser_header_reason_SCOPE)ctx->pbelle_sip_messageParser_header_reasonStack->get(ctx->pbelle_sip_messageParser_header_reasonStack, ctx->pbelle_sip_messageParser_header_reasonStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sip_messageParser_header_reason_SCOPE) ANTLR3_MALLOC(sizeof(belle_sip_messageParser_header_reason_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sip_messageParser_header_reasonStack->push(ctx->pbelle_sip_messageParser_header_reasonStack, newAttributes, (void (*)(void *))header_reasonFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sip_messageParser_header_reasonStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sip_messageParser_header_reason_param scope set */ static pbelle_sip_messageParser_header_reason_param_SCOPE pbelle_sip_messageParser_header_reason_paramPush(pbelle_sip_messageParser ctx); static void ANTLR3_CDECL header_reason_paramFree(pbelle_sip_messageParser_header_reason_param_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL header_reason_paramFree(pbelle_sip_messageParser_header_reason_param_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sip_messageParser header_reason_param scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sip_messageParser_header_reason_paramTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sip_messageParser_header_reason_param_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sip_messageParser_header_reason_param_SCOPE pbelle_sip_messageParser_header_reason_paramPush(pbelle_sip_messageParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sip_messageParser_header_reason_param_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sip_messageParser_header_reason_paramStack->size(ctx->pbelle_sip_messageParser_header_reason_paramStack) > ctx->pbelle_sip_messageParser_header_reason_paramStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sip_messageParser_header_reason_param_SCOPE)ctx->pbelle_sip_messageParser_header_reason_paramStack->get(ctx->pbelle_sip_messageParser_header_reason_paramStack, ctx->pbelle_sip_messageParser_header_reason_paramStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sip_messageParser_header_reason_param_SCOPE) ANTLR3_MALLOC(sizeof(belle_sip_messageParser_header_reason_param_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sip_messageParser_header_reason_paramStack->push(ctx->pbelle_sip_messageParser_header_reason_paramStack, newAttributes, (void (*)(void *))header_reason_paramFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sip_messageParser_header_reason_paramStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sip_messageParser_header_authentication_info scope set */ static pbelle_sip_messageParser_header_authentication_info_SCOPE pbelle_sip_messageParser_header_authentication_infoPush(pbelle_sip_messageParser ctx); static void ANTLR3_CDECL header_authentication_infoFree(pbelle_sip_messageParser_header_authentication_info_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL header_authentication_infoFree(pbelle_sip_messageParser_header_authentication_info_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sip_messageParser header_authentication_info scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sip_messageParser_header_authentication_infoTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sip_messageParser_header_authentication_info_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sip_messageParser_header_authentication_info_SCOPE pbelle_sip_messageParser_header_authentication_infoPush(pbelle_sip_messageParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sip_messageParser_header_authentication_info_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sip_messageParser_header_authentication_infoStack->size(ctx->pbelle_sip_messageParser_header_authentication_infoStack) > ctx->pbelle_sip_messageParser_header_authentication_infoStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sip_messageParser_header_authentication_info_SCOPE)ctx->pbelle_sip_messageParser_header_authentication_infoStack->get(ctx->pbelle_sip_messageParser_header_authentication_infoStack, ctx->pbelle_sip_messageParser_header_authentication_infoStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sip_messageParser_header_authentication_info_SCOPE) ANTLR3_MALLOC(sizeof(belle_sip_messageParser_header_authentication_info_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sip_messageParser_header_authentication_infoStack->push(ctx->pbelle_sip_messageParser_header_authentication_infoStack, newAttributes, (void (*)(void *))header_authentication_infoFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sip_messageParser_header_authentication_infoStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sip_messageParser_header_extension_base scope set */ static pbelle_sip_messageParser_header_extension_base_SCOPE pbelle_sip_messageParser_header_extension_basePush(pbelle_sip_messageParser ctx); static void ANTLR3_CDECL header_extension_baseFree(pbelle_sip_messageParser_header_extension_base_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL header_extension_baseFree(pbelle_sip_messageParser_header_extension_base_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sip_messageParser header_extension_base scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sip_messageParser_header_extension_baseTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sip_messageParser_header_extension_base_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sip_messageParser_header_extension_base_SCOPE pbelle_sip_messageParser_header_extension_basePush(pbelle_sip_messageParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sip_messageParser_header_extension_base_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sip_messageParser_header_extension_baseStack->size(ctx->pbelle_sip_messageParser_header_extension_baseStack) > ctx->pbelle_sip_messageParser_header_extension_baseStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sip_messageParser_header_extension_base_SCOPE)ctx->pbelle_sip_messageParser_header_extension_baseStack->get(ctx->pbelle_sip_messageParser_header_extension_baseStack, ctx->pbelle_sip_messageParser_header_extension_baseStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sip_messageParser_header_extension_base_SCOPE) ANTLR3_MALLOC(sizeof(belle_sip_messageParser_header_extension_base_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sip_messageParser_header_extension_baseStack->push(ctx->pbelle_sip_messageParser_header_extension_baseStack, newAttributes, (void (*)(void *))header_extension_baseFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sip_messageParser_header_extension_baseStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sip_messageParser_paramless_uri scope set */ static pbelle_sip_messageParser_paramless_uri_SCOPE pbelle_sip_messageParser_paramless_uriPush(pbelle_sip_messageParser ctx); static void ANTLR3_CDECL paramless_uriFree(pbelle_sip_messageParser_paramless_uri_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL paramless_uriFree(pbelle_sip_messageParser_paramless_uri_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sip_messageParser paramless_uri scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sip_messageParser_paramless_uriTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sip_messageParser_paramless_uri_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sip_messageParser_paramless_uri_SCOPE pbelle_sip_messageParser_paramless_uriPush(pbelle_sip_messageParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sip_messageParser_paramless_uri_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sip_messageParser_paramless_uriStack->size(ctx->pbelle_sip_messageParser_paramless_uriStack) > ctx->pbelle_sip_messageParser_paramless_uriStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sip_messageParser_paramless_uri_SCOPE)ctx->pbelle_sip_messageParser_paramless_uriStack->get(ctx->pbelle_sip_messageParser_paramless_uriStack, ctx->pbelle_sip_messageParser_paramless_uriStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sip_messageParser_paramless_uri_SCOPE) ANTLR3_MALLOC(sizeof(belle_sip_messageParser_paramless_uri_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sip_messageParser_paramless_uriStack->push(ctx->pbelle_sip_messageParser_paramless_uriStack, newAttributes, (void (*)(void *))paramless_uriFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sip_messageParser_paramless_uriStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sip_messageParser_uri scope set */ static pbelle_sip_messageParser_uri_SCOPE pbelle_sip_messageParser_uriPush(pbelle_sip_messageParser ctx); static void ANTLR3_CDECL uriFree(pbelle_sip_messageParser_uri_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL uriFree(pbelle_sip_messageParser_uri_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sip_messageParser uri scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sip_messageParser_uriTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sip_messageParser_uri_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sip_messageParser_uri_SCOPE pbelle_sip_messageParser_uriPush(pbelle_sip_messageParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sip_messageParser_uri_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sip_messageParser_uriStack->size(ctx->pbelle_sip_messageParser_uriStack) > ctx->pbelle_sip_messageParser_uriStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sip_messageParser_uri_SCOPE)ctx->pbelle_sip_messageParser_uriStack->get(ctx->pbelle_sip_messageParser_uriStack, ctx->pbelle_sip_messageParser_uriStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sip_messageParser_uri_SCOPE) ANTLR3_MALLOC(sizeof(belle_sip_messageParser_uri_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sip_messageParser_uriStack->push(ctx->pbelle_sip_messageParser_uriStack, newAttributes, (void (*)(void *))uriFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sip_messageParser_uriStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sip_messageParser_fast_uri scope set */ static pbelle_sip_messageParser_fast_uri_SCOPE pbelle_sip_messageParser_fast_uriPush(pbelle_sip_messageParser ctx); static void ANTLR3_CDECL fast_uriFree(pbelle_sip_messageParser_fast_uri_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL fast_uriFree(pbelle_sip_messageParser_fast_uri_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sip_messageParser fast_uri scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sip_messageParser_fast_uriTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sip_messageParser_fast_uri_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sip_messageParser_fast_uri_SCOPE pbelle_sip_messageParser_fast_uriPush(pbelle_sip_messageParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sip_messageParser_fast_uri_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sip_messageParser_fast_uriStack->size(ctx->pbelle_sip_messageParser_fast_uriStack) > ctx->pbelle_sip_messageParser_fast_uriStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sip_messageParser_fast_uri_SCOPE)ctx->pbelle_sip_messageParser_fast_uriStack->get(ctx->pbelle_sip_messageParser_fast_uriStack, ctx->pbelle_sip_messageParser_fast_uriStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sip_messageParser_fast_uri_SCOPE) ANTLR3_MALLOC(sizeof(belle_sip_messageParser_fast_uri_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sip_messageParser_fast_uriStack->push(ctx->pbelle_sip_messageParser_fast_uriStack, newAttributes, (void (*)(void *))fast_uriFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sip_messageParser_fast_uriStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sip_messageParser_userinfo scope set */ static pbelle_sip_messageParser_userinfo_SCOPE pbelle_sip_messageParser_userinfoPush(pbelle_sip_messageParser ctx); static void ANTLR3_CDECL userinfoFree(pbelle_sip_messageParser_userinfo_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL userinfoFree(pbelle_sip_messageParser_userinfo_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sip_messageParser userinfo scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sip_messageParser_userinfoTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sip_messageParser_userinfo_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sip_messageParser_userinfo_SCOPE pbelle_sip_messageParser_userinfoPush(pbelle_sip_messageParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sip_messageParser_userinfo_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sip_messageParser_userinfoStack->size(ctx->pbelle_sip_messageParser_userinfoStack) > ctx->pbelle_sip_messageParser_userinfoStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sip_messageParser_userinfo_SCOPE)ctx->pbelle_sip_messageParser_userinfoStack->get(ctx->pbelle_sip_messageParser_userinfoStack, ctx->pbelle_sip_messageParser_userinfoStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sip_messageParser_userinfo_SCOPE) ANTLR3_MALLOC(sizeof(belle_sip_messageParser_userinfo_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sip_messageParser_userinfoStack->push(ctx->pbelle_sip_messageParser_userinfoStack, newAttributes, (void (*)(void *))userinfoFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sip_messageParser_userinfoStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sip_messageParser_hostport scope set */ static pbelle_sip_messageParser_hostport_SCOPE pbelle_sip_messageParser_hostportPush(pbelle_sip_messageParser ctx); static void ANTLR3_CDECL hostportFree(pbelle_sip_messageParser_hostport_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL hostportFree(pbelle_sip_messageParser_hostport_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sip_messageParser hostport scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sip_messageParser_hostportTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sip_messageParser_hostport_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sip_messageParser_hostport_SCOPE pbelle_sip_messageParser_hostportPush(pbelle_sip_messageParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sip_messageParser_hostport_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sip_messageParser_hostportStack->size(ctx->pbelle_sip_messageParser_hostportStack) > ctx->pbelle_sip_messageParser_hostportStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sip_messageParser_hostport_SCOPE)ctx->pbelle_sip_messageParser_hostportStack->get(ctx->pbelle_sip_messageParser_hostportStack, ctx->pbelle_sip_messageParser_hostportStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sip_messageParser_hostport_SCOPE) ANTLR3_MALLOC(sizeof(belle_sip_messageParser_hostport_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sip_messageParser_hostportStack->push(ctx->pbelle_sip_messageParser_hostportStack, newAttributes, (void (*)(void *))hostportFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sip_messageParser_hostportStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sip_messageParser_fast_hostport scope set */ static pbelle_sip_messageParser_fast_hostport_SCOPE pbelle_sip_messageParser_fast_hostportPush(pbelle_sip_messageParser ctx); static void ANTLR3_CDECL fast_hostportFree(pbelle_sip_messageParser_fast_hostport_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL fast_hostportFree(pbelle_sip_messageParser_fast_hostport_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sip_messageParser fast_hostport scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sip_messageParser_fast_hostportTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sip_messageParser_fast_hostport_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sip_messageParser_fast_hostport_SCOPE pbelle_sip_messageParser_fast_hostportPush(pbelle_sip_messageParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sip_messageParser_fast_hostport_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sip_messageParser_fast_hostportStack->size(ctx->pbelle_sip_messageParser_fast_hostportStack) > ctx->pbelle_sip_messageParser_fast_hostportStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sip_messageParser_fast_hostport_SCOPE)ctx->pbelle_sip_messageParser_fast_hostportStack->get(ctx->pbelle_sip_messageParser_fast_hostportStack, ctx->pbelle_sip_messageParser_fast_hostportStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sip_messageParser_fast_hostport_SCOPE) ANTLR3_MALLOC(sizeof(belle_sip_messageParser_fast_hostport_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sip_messageParser_fast_hostportStack->push(ctx->pbelle_sip_messageParser_fast_hostportStack, newAttributes, (void (*)(void *))fast_hostportFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sip_messageParser_fast_hostportStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sip_messageParser_uri_parameters scope set */ static pbelle_sip_messageParser_uri_parameters_SCOPE pbelle_sip_messageParser_uri_parametersPush(pbelle_sip_messageParser ctx); static void ANTLR3_CDECL uri_parametersFree(pbelle_sip_messageParser_uri_parameters_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL uri_parametersFree(pbelle_sip_messageParser_uri_parameters_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sip_messageParser uri_parameters scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sip_messageParser_uri_parametersTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sip_messageParser_uri_parameters_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sip_messageParser_uri_parameters_SCOPE pbelle_sip_messageParser_uri_parametersPush(pbelle_sip_messageParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sip_messageParser_uri_parameters_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sip_messageParser_uri_parametersStack->size(ctx->pbelle_sip_messageParser_uri_parametersStack) > ctx->pbelle_sip_messageParser_uri_parametersStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sip_messageParser_uri_parameters_SCOPE)ctx->pbelle_sip_messageParser_uri_parametersStack->get(ctx->pbelle_sip_messageParser_uri_parametersStack, ctx->pbelle_sip_messageParser_uri_parametersStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sip_messageParser_uri_parameters_SCOPE) ANTLR3_MALLOC(sizeof(belle_sip_messageParser_uri_parameters_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sip_messageParser_uri_parametersStack->push(ctx->pbelle_sip_messageParser_uri_parametersStack, newAttributes, (void (*)(void *))uri_parametersFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sip_messageParser_uri_parametersStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sip_messageParser_headers scope set */ static pbelle_sip_messageParser_headers_SCOPE pbelle_sip_messageParser_headersPush(pbelle_sip_messageParser ctx); static void ANTLR3_CDECL headersFree(pbelle_sip_messageParser_headers_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL headersFree(pbelle_sip_messageParser_headers_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sip_messageParser headers scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sip_messageParser_headersTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sip_messageParser_headers_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sip_messageParser_headers_SCOPE pbelle_sip_messageParser_headersPush(pbelle_sip_messageParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sip_messageParser_headers_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sip_messageParser_headersStack->size(ctx->pbelle_sip_messageParser_headersStack) > ctx->pbelle_sip_messageParser_headersStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sip_messageParser_headers_SCOPE)ctx->pbelle_sip_messageParser_headersStack->get(ctx->pbelle_sip_messageParser_headersStack, ctx->pbelle_sip_messageParser_headersStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sip_messageParser_headers_SCOPE) ANTLR3_MALLOC(sizeof(belle_sip_messageParser_headers_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sip_messageParser_headersStack->push(ctx->pbelle_sip_messageParser_headersStack, newAttributes, (void (*)(void *))headersFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sip_messageParser_headersStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sip_messageParser_uri_header scope set */ static pbelle_sip_messageParser_uri_header_SCOPE pbelle_sip_messageParser_uri_headerPush(pbelle_sip_messageParser ctx); static void ANTLR3_CDECL uri_headerFree(pbelle_sip_messageParser_uri_header_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL uri_headerFree(pbelle_sip_messageParser_uri_header_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sip_messageParser uri_header scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sip_messageParser_uri_headerTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sip_messageParser_uri_header_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sip_messageParser_uri_header_SCOPE pbelle_sip_messageParser_uri_headerPush(pbelle_sip_messageParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sip_messageParser_uri_header_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sip_messageParser_uri_headerStack->size(ctx->pbelle_sip_messageParser_uri_headerStack) > ctx->pbelle_sip_messageParser_uri_headerStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sip_messageParser_uri_header_SCOPE)ctx->pbelle_sip_messageParser_uri_headerStack->get(ctx->pbelle_sip_messageParser_uri_headerStack, ctx->pbelle_sip_messageParser_uri_headerStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sip_messageParser_uri_header_SCOPE) ANTLR3_MALLOC(sizeof(belle_sip_messageParser_uri_header_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sip_messageParser_uri_headerStack->push(ctx->pbelle_sip_messageParser_uri_headerStack, newAttributes, (void (*)(void *))uri_headerFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sip_messageParser_uri_headerStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sip_messageParser_fast_host scope set */ static pbelle_sip_messageParser_fast_host_SCOPE pbelle_sip_messageParser_fast_hostPush(pbelle_sip_messageParser ctx); static void ANTLR3_CDECL fast_hostFree(pbelle_sip_messageParser_fast_host_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL fast_hostFree(pbelle_sip_messageParser_fast_host_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sip_messageParser fast_host scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sip_messageParser_fast_hostTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sip_messageParser_fast_host_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sip_messageParser_fast_host_SCOPE pbelle_sip_messageParser_fast_hostPush(pbelle_sip_messageParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sip_messageParser_fast_host_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sip_messageParser_fast_hostStack->size(ctx->pbelle_sip_messageParser_fast_hostStack) > ctx->pbelle_sip_messageParser_fast_hostStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sip_messageParser_fast_host_SCOPE)ctx->pbelle_sip_messageParser_fast_hostStack->get(ctx->pbelle_sip_messageParser_fast_hostStack, ctx->pbelle_sip_messageParser_fast_hostStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sip_messageParser_fast_host_SCOPE) ANTLR3_MALLOC(sizeof(belle_sip_messageParser_fast_host_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sip_messageParser_fast_hostStack->push(ctx->pbelle_sip_messageParser_fast_hostStack, newAttributes, (void (*)(void *))fast_hostFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sip_messageParser_fast_hostStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ruleAttributeScopeFuncDecl(scope) */ /* ----------------------------------------------------------------------------- * Function declarations for creating a belle_sip_messageParser_host scope set */ static pbelle_sip_messageParser_host_SCOPE pbelle_sip_messageParser_hostPush(pbelle_sip_messageParser ctx); static void ANTLR3_CDECL hostFree(pbelle_sip_messageParser_host_SCOPE scope); /* ----------------------------------------------------------------------------- */ /* ruleAttributeScopeFuncs(scope) */ /* attributeFuncs(scope) */ static void ANTLR3_CDECL hostFree(pbelle_sip_messageParser_host_SCOPE scope) { ANTLR3_FREE(scope); } /** \brief Allocate initial memory for a belle_sip_messageParser host scope variable stack entry and * add it to the top of the stack. * * \remark * By default the structure is freed with ANTLR_FREE(), but you can use the * the \@init action to install a pointer to a custom free() routine by * adding the code: * \code * ctx->pbelle_sip_messageParser_hostTop->free = myroutine; * \endcode * * With lots of comments of course! The routine should be declared in * \@members { } as: * \code * void ANTLR3_CDECL myfunc( pbelle_sip_messageParser_host_SCOPE ptr). * \endcode * * It should perform any custom freeing stuff that you need (call ANTLR_FREE3, not free() * NB: It should not free the pointer it is given, which is the scope stack entry itself * and will be freed by the function that calls your custom free routine. * */ static pbelle_sip_messageParser_host_SCOPE pbelle_sip_messageParser_hostPush(pbelle_sip_messageParser ctx) { /* Pointer used to create a new set of attributes */ pbelle_sip_messageParser_host_SCOPE newAttributes; /* Allocate the memory for a new structure if we need one. */ if (ctx->pbelle_sip_messageParser_hostStack->size(ctx->pbelle_sip_messageParser_hostStack) > ctx->pbelle_sip_messageParser_hostStack_limit) { // The current limit value was less than the number of scopes available on the stack so // we can just reuse one. Our limit tracks the stack count, so the index of the entry we want // is one less than that, or conveniently, the current value of limit. // newAttributes = (pbelle_sip_messageParser_host_SCOPE)ctx->pbelle_sip_messageParser_hostStack->get(ctx->pbelle_sip_messageParser_hostStack, ctx->pbelle_sip_messageParser_hostStack_limit); } else { // Need a new allocation // newAttributes = (pbelle_sip_messageParser_host_SCOPE) ANTLR3_MALLOC(sizeof(belle_sip_messageParser_host_SCOPE)); if (newAttributes != NULL) { /* Standard ANTLR3 library implementation */ ctx->pbelle_sip_messageParser_hostStack->push(ctx->pbelle_sip_messageParser_hostStack, newAttributes, (void (*)(void *))hostFree); } } // Blank out any previous free pointer, the user might or might install a new one. // newAttributes->free = NULL; // Indicate the position in the available stack that the current level is at // ctx->pbelle_sip_messageParser_hostStack_limit++; /* Return value is the pointer to the new entry, which may be used locally * without de-referencing via the context. */ return newAttributes; } /* ============================================================================= */ /* ============================================================================= * Start of recognizer */ /** \brief Table of all token names in symbolic order, mainly used for * error reporting. */ pANTLR3_UINT8 belle_sip_messageParserTokenNames[37+4] = { (pANTLR3_UINT8) "", /* String to print to indicate an invalid token */ (pANTLR3_UINT8) "", (pANTLR3_UINT8) "", (pANTLR3_UINT8) "", (pANTLR3_UINT8) "AND", (pANTLR3_UINT8) "AT", (pANTLR3_UINT8) "BQUOTE", (pANTLR3_UINT8) "BSLASH", (pANTLR3_UINT8) "COLON", (pANTLR3_UINT8) "COMMA", (pANTLR3_UINT8) "COMMON_CHAR", (pANTLR3_UINT8) "CRLF", (pANTLR3_UINT8) "DASH", (pANTLR3_UINT8) "DIGIT", (pANTLR3_UINT8) "DOLLARD", (pANTLR3_UINT8) "DOT", (pANTLR3_UINT8) "DQUOTE", (pANTLR3_UINT8) "EMARK", (pANTLR3_UINT8) "EQUAL", (pANTLR3_UINT8) "HEX_CHAR", (pANTLR3_UINT8) "HTAB", (pANTLR3_UINT8) "LAQUOT", (pANTLR3_UINT8) "LBRACE", (pANTLR3_UINT8) "LPAREN", (pANTLR3_UINT8) "LSBRAQUET", (pANTLR3_UINT8) "OCTET", (pANTLR3_UINT8) "OR", (pANTLR3_UINT8) "PERCENT", (pANTLR3_UINT8) "PLUS", (pANTLR3_UINT8) "QMARK", (pANTLR3_UINT8) "RAQUOT", (pANTLR3_UINT8) "RBRACE", (pANTLR3_UINT8) "RPAREN", (pANTLR3_UINT8) "RSBRAQUET", (pANTLR3_UINT8) "SEMI", (pANTLR3_UINT8) "SLASH", (pANTLR3_UINT8) "SP", (pANTLR3_UINT8) "SQUOTE", (pANTLR3_UINT8) "STAR", (pANTLR3_UINT8) "TILDE", (pANTLR3_UINT8) "USCORE" }; /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sip_messageParser_messageStack */ void pbelle_sip_messageParser_messagePop(pbelle_sip_messageParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(message)->free != NULL) { SCOPE_TOP(message)->free(SCOPE_TOP(message)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sip_messageParser_messageStack_limit--; SCOPE_TOP(message) = (pbelle_sip_messageParser_message_SCOPE)(ctx->pbelle_sip_messageParser_messageStack->get(ctx->pbelle_sip_messageParser_messageStack, ctx->pbelle_sip_messageParser_messageStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sip_messageParser_message_rawStack */ void pbelle_sip_messageParser_message_rawPop(pbelle_sip_messageParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(message_raw)->free != NULL) { SCOPE_TOP(message_raw)->free(SCOPE_TOP(message_raw)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sip_messageParser_message_rawStack_limit--; SCOPE_TOP(message_raw) = (pbelle_sip_messageParser_message_raw_SCOPE)(ctx->pbelle_sip_messageParser_message_rawStack->get(ctx->pbelle_sip_messageParser_message_rawStack, ctx->pbelle_sip_messageParser_message_rawStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sip_messageParser_common_requestStack */ void pbelle_sip_messageParser_common_requestPop(pbelle_sip_messageParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(common_request)->free != NULL) { SCOPE_TOP(common_request)->free(SCOPE_TOP(common_request)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sip_messageParser_common_requestStack_limit--; SCOPE_TOP(common_request) = (pbelle_sip_messageParser_common_request_SCOPE)(ctx->pbelle_sip_messageParser_common_requestStack->get(ctx->pbelle_sip_messageParser_common_requestStack, ctx->pbelle_sip_messageParser_common_requestStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sip_messageParser_request_lineStack */ void pbelle_sip_messageParser_request_linePop(pbelle_sip_messageParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(request_line)->free != NULL) { SCOPE_TOP(request_line)->free(SCOPE_TOP(request_line)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sip_messageParser_request_lineStack_limit--; SCOPE_TOP(request_line) = (pbelle_sip_messageParser_request_line_SCOPE)(ctx->pbelle_sip_messageParser_request_lineStack->get(ctx->pbelle_sip_messageParser_request_lineStack, ctx->pbelle_sip_messageParser_request_lineStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sip_messageParser_status_lineStack */ void pbelle_sip_messageParser_status_linePop(pbelle_sip_messageParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(status_line)->free != NULL) { SCOPE_TOP(status_line)->free(SCOPE_TOP(status_line)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sip_messageParser_status_lineStack_limit--; SCOPE_TOP(status_line) = (pbelle_sip_messageParser_status_line_SCOPE)(ctx->pbelle_sip_messageParser_status_lineStack->get(ctx->pbelle_sip_messageParser_status_lineStack, ctx->pbelle_sip_messageParser_status_lineStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sip_messageParser_http_request_lineStack */ void pbelle_sip_messageParser_http_request_linePop(pbelle_sip_messageParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(http_request_line)->free != NULL) { SCOPE_TOP(http_request_line)->free(SCOPE_TOP(http_request_line)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sip_messageParser_http_request_lineStack_limit--; SCOPE_TOP(http_request_line) = (pbelle_sip_messageParser_http_request_line_SCOPE)(ctx->pbelle_sip_messageParser_http_request_lineStack->get(ctx->pbelle_sip_messageParser_http_request_lineStack, ctx->pbelle_sip_messageParser_http_request_lineStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sip_messageParser_generic_uri_for_from_to_contact_addr_specStack */ void pbelle_sip_messageParser_generic_uri_for_from_to_contact_addr_specPop(pbelle_sip_messageParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(generic_uri_for_from_to_contact_addr_spec)->free != NULL) { SCOPE_TOP(generic_uri_for_from_to_contact_addr_spec)->free(SCOPE_TOP(generic_uri_for_from_to_contact_addr_spec)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sip_messageParser_generic_uri_for_from_to_contact_addr_specStack_limit--; SCOPE_TOP(generic_uri_for_from_to_contact_addr_spec) = (pbelle_sip_messageParser_generic_uri_for_from_to_contact_addr_spec_SCOPE)(ctx->pbelle_sip_messageParser_generic_uri_for_from_to_contact_addr_specStack->get(ctx->pbelle_sip_messageParser_generic_uri_for_from_to_contact_addr_specStack, ctx->pbelle_sip_messageParser_generic_uri_for_from_to_contact_addr_specStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sip_messageParser_generic_uriStack */ void pbelle_sip_messageParser_generic_uriPop(pbelle_sip_messageParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(generic_uri)->free != NULL) { SCOPE_TOP(generic_uri)->free(SCOPE_TOP(generic_uri)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sip_messageParser_generic_uriStack_limit--; SCOPE_TOP(generic_uri) = (pbelle_sip_messageParser_generic_uri_SCOPE)(ctx->pbelle_sip_messageParser_generic_uriStack->get(ctx->pbelle_sip_messageParser_generic_uriStack, ctx->pbelle_sip_messageParser_generic_uriStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sip_messageParser_authority_userinfoStack */ void pbelle_sip_messageParser_authority_userinfoPop(pbelle_sip_messageParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(authority_userinfo)->free != NULL) { SCOPE_TOP(authority_userinfo)->free(SCOPE_TOP(authority_userinfo)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sip_messageParser_authority_userinfoStack_limit--; SCOPE_TOP(authority_userinfo) = (pbelle_sip_messageParser_authority_userinfo_SCOPE)(ctx->pbelle_sip_messageParser_authority_userinfoStack->get(ctx->pbelle_sip_messageParser_authority_userinfoStack, ctx->pbelle_sip_messageParser_authority_userinfoStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sip_messageParser_authority_hostportStack */ void pbelle_sip_messageParser_authority_hostportPop(pbelle_sip_messageParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(authority_hostport)->free != NULL) { SCOPE_TOP(authority_hostport)->free(SCOPE_TOP(authority_hostport)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sip_messageParser_authority_hostportStack_limit--; SCOPE_TOP(authority_hostport) = (pbelle_sip_messageParser_authority_hostport_SCOPE)(ctx->pbelle_sip_messageParser_authority_hostportStack->get(ctx->pbelle_sip_messageParser_authority_hostportStack, ctx->pbelle_sip_messageParser_authority_hostportStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sip_messageParser_generic_paramStack */ void pbelle_sip_messageParser_generic_paramPop(pbelle_sip_messageParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(generic_param)->free != NULL) { SCOPE_TOP(generic_param)->free(SCOPE_TOP(generic_param)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sip_messageParser_generic_paramStack_limit--; SCOPE_TOP(generic_param) = (pbelle_sip_messageParser_generic_param_SCOPE)(ctx->pbelle_sip_messageParser_generic_paramStack->get(ctx->pbelle_sip_messageParser_generic_paramStack, ctx->pbelle_sip_messageParser_generic_paramStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sip_messageParser_header_allowStack */ void pbelle_sip_messageParser_header_allowPop(pbelle_sip_messageParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(header_allow)->free != NULL) { SCOPE_TOP(header_allow)->free(SCOPE_TOP(header_allow)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sip_messageParser_header_allowStack_limit--; SCOPE_TOP(header_allow) = (pbelle_sip_messageParser_header_allow_SCOPE)(ctx->pbelle_sip_messageParser_header_allowStack->get(ctx->pbelle_sip_messageParser_header_allowStack, ctx->pbelle_sip_messageParser_header_allowStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sip_messageParser_header_authorizationStack */ void pbelle_sip_messageParser_header_authorizationPop(pbelle_sip_messageParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(header_authorization)->free != NULL) { SCOPE_TOP(header_authorization)->free(SCOPE_TOP(header_authorization)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sip_messageParser_header_authorizationStack_limit--; SCOPE_TOP(header_authorization) = (pbelle_sip_messageParser_header_authorization_SCOPE)(ctx->pbelle_sip_messageParser_header_authorizationStack->get(ctx->pbelle_sip_messageParser_header_authorizationStack, ctx->pbelle_sip_messageParser_header_authorizationStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sip_messageParser_header_call_idStack */ void pbelle_sip_messageParser_header_call_idPop(pbelle_sip_messageParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(header_call_id)->free != NULL) { SCOPE_TOP(header_call_id)->free(SCOPE_TOP(header_call_id)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sip_messageParser_header_call_idStack_limit--; SCOPE_TOP(header_call_id) = (pbelle_sip_messageParser_header_call_id_SCOPE)(ctx->pbelle_sip_messageParser_header_call_idStack->get(ctx->pbelle_sip_messageParser_header_call_idStack, ctx->pbelle_sip_messageParser_header_call_idStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sip_messageParser_header_retry_afterStack */ void pbelle_sip_messageParser_header_retry_afterPop(pbelle_sip_messageParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(header_retry_after)->free != NULL) { SCOPE_TOP(header_retry_after)->free(SCOPE_TOP(header_retry_after)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sip_messageParser_header_retry_afterStack_limit--; SCOPE_TOP(header_retry_after) = (pbelle_sip_messageParser_header_retry_after_SCOPE)(ctx->pbelle_sip_messageParser_header_retry_afterStack->get(ctx->pbelle_sip_messageParser_header_retry_afterStack, ctx->pbelle_sip_messageParser_header_retry_afterStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sip_messageParser_header_contactStack */ void pbelle_sip_messageParser_header_contactPop(pbelle_sip_messageParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(header_contact)->free != NULL) { SCOPE_TOP(header_contact)->free(SCOPE_TOP(header_contact)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sip_messageParser_header_contactStack_limit--; SCOPE_TOP(header_contact) = (pbelle_sip_messageParser_header_contact_SCOPE)(ctx->pbelle_sip_messageParser_header_contactStack->get(ctx->pbelle_sip_messageParser_header_contactStack, ctx->pbelle_sip_messageParser_header_contactStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sip_messageParser_contact_paramStack */ void pbelle_sip_messageParser_contact_paramPop(pbelle_sip_messageParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(contact_param)->free != NULL) { SCOPE_TOP(contact_param)->free(SCOPE_TOP(contact_param)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sip_messageParser_contact_paramStack_limit--; SCOPE_TOP(contact_param) = (pbelle_sip_messageParser_contact_param_SCOPE)(ctx->pbelle_sip_messageParser_contact_paramStack->get(ctx->pbelle_sip_messageParser_contact_paramStack, ctx->pbelle_sip_messageParser_contact_paramStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sip_messageParser_header_content_lengthStack */ void pbelle_sip_messageParser_header_content_lengthPop(pbelle_sip_messageParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(header_content_length)->free != NULL) { SCOPE_TOP(header_content_length)->free(SCOPE_TOP(header_content_length)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sip_messageParser_header_content_lengthStack_limit--; SCOPE_TOP(header_content_length) = (pbelle_sip_messageParser_header_content_length_SCOPE)(ctx->pbelle_sip_messageParser_header_content_lengthStack->get(ctx->pbelle_sip_messageParser_header_content_lengthStack, ctx->pbelle_sip_messageParser_header_content_lengthStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sip_messageParser_header_content_typeStack */ void pbelle_sip_messageParser_header_content_typePop(pbelle_sip_messageParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(header_content_type)->free != NULL) { SCOPE_TOP(header_content_type)->free(SCOPE_TOP(header_content_type)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sip_messageParser_header_content_typeStack_limit--; SCOPE_TOP(header_content_type) = (pbelle_sip_messageParser_header_content_type_SCOPE)(ctx->pbelle_sip_messageParser_header_content_typeStack->get(ctx->pbelle_sip_messageParser_header_content_typeStack, ctx->pbelle_sip_messageParser_header_content_typeStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sip_messageParser_header_cseqStack */ void pbelle_sip_messageParser_header_cseqPop(pbelle_sip_messageParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(header_cseq)->free != NULL) { SCOPE_TOP(header_cseq)->free(SCOPE_TOP(header_cseq)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sip_messageParser_header_cseqStack_limit--; SCOPE_TOP(header_cseq) = (pbelle_sip_messageParser_header_cseq_SCOPE)(ctx->pbelle_sip_messageParser_header_cseqStack->get(ctx->pbelle_sip_messageParser_header_cseqStack, ctx->pbelle_sip_messageParser_header_cseqStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sip_messageParser_header_dateStack */ void pbelle_sip_messageParser_header_datePop(pbelle_sip_messageParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(header_date)->free != NULL) { SCOPE_TOP(header_date)->free(SCOPE_TOP(header_date)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sip_messageParser_header_dateStack_limit--; SCOPE_TOP(header_date) = (pbelle_sip_messageParser_header_date_SCOPE)(ctx->pbelle_sip_messageParser_header_dateStack->get(ctx->pbelle_sip_messageParser_header_dateStack, ctx->pbelle_sip_messageParser_header_dateStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sip_messageParser_header_expiresStack */ void pbelle_sip_messageParser_header_expiresPop(pbelle_sip_messageParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(header_expires)->free != NULL) { SCOPE_TOP(header_expires)->free(SCOPE_TOP(header_expires)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sip_messageParser_header_expiresStack_limit--; SCOPE_TOP(header_expires) = (pbelle_sip_messageParser_header_expires_SCOPE)(ctx->pbelle_sip_messageParser_header_expiresStack->get(ctx->pbelle_sip_messageParser_header_expiresStack, ctx->pbelle_sip_messageParser_header_expiresStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sip_messageParser_header_fromStack */ void pbelle_sip_messageParser_header_fromPop(pbelle_sip_messageParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(header_from)->free != NULL) { SCOPE_TOP(header_from)->free(SCOPE_TOP(header_from)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sip_messageParser_header_fromStack_limit--; SCOPE_TOP(header_from) = (pbelle_sip_messageParser_header_from_SCOPE)(ctx->pbelle_sip_messageParser_header_fromStack->get(ctx->pbelle_sip_messageParser_header_fromStack, ctx->pbelle_sip_messageParser_header_fromStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sip_messageParser_header_max_forwardsStack */ void pbelle_sip_messageParser_header_max_forwardsPop(pbelle_sip_messageParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(header_max_forwards)->free != NULL) { SCOPE_TOP(header_max_forwards)->free(SCOPE_TOP(header_max_forwards)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sip_messageParser_header_max_forwardsStack_limit--; SCOPE_TOP(header_max_forwards) = (pbelle_sip_messageParser_header_max_forwards_SCOPE)(ctx->pbelle_sip_messageParser_header_max_forwardsStack->get(ctx->pbelle_sip_messageParser_header_max_forwardsStack, ctx->pbelle_sip_messageParser_header_max_forwardsStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sip_messageParser_header_proxy_authenticateStack */ void pbelle_sip_messageParser_header_proxy_authenticatePop(pbelle_sip_messageParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(header_proxy_authenticate)->free != NULL) { SCOPE_TOP(header_proxy_authenticate)->free(SCOPE_TOP(header_proxy_authenticate)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sip_messageParser_header_proxy_authenticateStack_limit--; SCOPE_TOP(header_proxy_authenticate) = (pbelle_sip_messageParser_header_proxy_authenticate_SCOPE)(ctx->pbelle_sip_messageParser_header_proxy_authenticateStack->get(ctx->pbelle_sip_messageParser_header_proxy_authenticateStack, ctx->pbelle_sip_messageParser_header_proxy_authenticateStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sip_messageParser_qop_optsStack */ void pbelle_sip_messageParser_qop_optsPop(pbelle_sip_messageParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(qop_opts)->free != NULL) { SCOPE_TOP(qop_opts)->free(SCOPE_TOP(qop_opts)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sip_messageParser_qop_optsStack_limit--; SCOPE_TOP(qop_opts) = (pbelle_sip_messageParser_qop_opts_SCOPE)(ctx->pbelle_sip_messageParser_qop_optsStack->get(ctx->pbelle_sip_messageParser_qop_optsStack, ctx->pbelle_sip_messageParser_qop_optsStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sip_messageParser_header_proxy_authorizationStack */ void pbelle_sip_messageParser_header_proxy_authorizationPop(pbelle_sip_messageParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(header_proxy_authorization)->free != NULL) { SCOPE_TOP(header_proxy_authorization)->free(SCOPE_TOP(header_proxy_authorization)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sip_messageParser_header_proxy_authorizationStack_limit--; SCOPE_TOP(header_proxy_authorization) = (pbelle_sip_messageParser_header_proxy_authorization_SCOPE)(ctx->pbelle_sip_messageParser_header_proxy_authorizationStack->get(ctx->pbelle_sip_messageParser_header_proxy_authorizationStack, ctx->pbelle_sip_messageParser_header_proxy_authorizationStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sip_messageParser_header_service_routeStack */ void pbelle_sip_messageParser_header_service_routePop(pbelle_sip_messageParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(header_service_route)->free != NULL) { SCOPE_TOP(header_service_route)->free(SCOPE_TOP(header_service_route)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sip_messageParser_header_service_routeStack_limit--; SCOPE_TOP(header_service_route) = (pbelle_sip_messageParser_header_service_route_SCOPE)(ctx->pbelle_sip_messageParser_header_service_routeStack->get(ctx->pbelle_sip_messageParser_header_service_routeStack, ctx->pbelle_sip_messageParser_header_service_routeStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sip_messageParser_srv_routeStack */ void pbelle_sip_messageParser_srv_routePop(pbelle_sip_messageParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(srv_route)->free != NULL) { SCOPE_TOP(srv_route)->free(SCOPE_TOP(srv_route)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sip_messageParser_srv_routeStack_limit--; SCOPE_TOP(srv_route) = (pbelle_sip_messageParser_srv_route_SCOPE)(ctx->pbelle_sip_messageParser_srv_routeStack->get(ctx->pbelle_sip_messageParser_srv_routeStack, ctx->pbelle_sip_messageParser_srv_routeStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sip_messageParser_header_record_routeStack */ void pbelle_sip_messageParser_header_record_routePop(pbelle_sip_messageParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(header_record_route)->free != NULL) { SCOPE_TOP(header_record_route)->free(SCOPE_TOP(header_record_route)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sip_messageParser_header_record_routeStack_limit--; SCOPE_TOP(header_record_route) = (pbelle_sip_messageParser_header_record_route_SCOPE)(ctx->pbelle_sip_messageParser_header_record_routeStack->get(ctx->pbelle_sip_messageParser_header_record_routeStack, ctx->pbelle_sip_messageParser_header_record_routeStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sip_messageParser_rec_routeStack */ void pbelle_sip_messageParser_rec_routePop(pbelle_sip_messageParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(rec_route)->free != NULL) { SCOPE_TOP(rec_route)->free(SCOPE_TOP(rec_route)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sip_messageParser_rec_routeStack_limit--; SCOPE_TOP(rec_route) = (pbelle_sip_messageParser_rec_route_SCOPE)(ctx->pbelle_sip_messageParser_rec_routeStack->get(ctx->pbelle_sip_messageParser_rec_routeStack, ctx->pbelle_sip_messageParser_rec_routeStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sip_messageParser_header_routeStack */ void pbelle_sip_messageParser_header_routePop(pbelle_sip_messageParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(header_route)->free != NULL) { SCOPE_TOP(header_route)->free(SCOPE_TOP(header_route)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sip_messageParser_header_routeStack_limit--; SCOPE_TOP(header_route) = (pbelle_sip_messageParser_header_route_SCOPE)(ctx->pbelle_sip_messageParser_header_routeStack->get(ctx->pbelle_sip_messageParser_header_routeStack, ctx->pbelle_sip_messageParser_header_routeStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sip_messageParser_route_paramStack */ void pbelle_sip_messageParser_route_paramPop(pbelle_sip_messageParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(route_param)->free != NULL) { SCOPE_TOP(route_param)->free(SCOPE_TOP(route_param)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sip_messageParser_route_paramStack_limit--; SCOPE_TOP(route_param) = (pbelle_sip_messageParser_route_param_SCOPE)(ctx->pbelle_sip_messageParser_route_paramStack->get(ctx->pbelle_sip_messageParser_route_paramStack, ctx->pbelle_sip_messageParser_route_paramStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sip_messageParser_header_toStack */ void pbelle_sip_messageParser_header_toPop(pbelle_sip_messageParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(header_to)->free != NULL) { SCOPE_TOP(header_to)->free(SCOPE_TOP(header_to)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sip_messageParser_header_toStack_limit--; SCOPE_TOP(header_to) = (pbelle_sip_messageParser_header_to_SCOPE)(ctx->pbelle_sip_messageParser_header_toStack->get(ctx->pbelle_sip_messageParser_header_toStack, ctx->pbelle_sip_messageParser_header_toStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sip_messageParser_header_diversionStack */ void pbelle_sip_messageParser_header_diversionPop(pbelle_sip_messageParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(header_diversion)->free != NULL) { SCOPE_TOP(header_diversion)->free(SCOPE_TOP(header_diversion)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sip_messageParser_header_diversionStack_limit--; SCOPE_TOP(header_diversion) = (pbelle_sip_messageParser_header_diversion_SCOPE)(ctx->pbelle_sip_messageParser_header_diversionStack->get(ctx->pbelle_sip_messageParser_header_diversionStack, ctx->pbelle_sip_messageParser_header_diversionStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sip_messageParser_header_user_agentStack */ void pbelle_sip_messageParser_header_user_agentPop(pbelle_sip_messageParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(header_user_agent)->free != NULL) { SCOPE_TOP(header_user_agent)->free(SCOPE_TOP(header_user_agent)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sip_messageParser_header_user_agentStack_limit--; SCOPE_TOP(header_user_agent) = (pbelle_sip_messageParser_header_user_agent_SCOPE)(ctx->pbelle_sip_messageParser_header_user_agentStack->get(ctx->pbelle_sip_messageParser_header_user_agentStack, ctx->pbelle_sip_messageParser_header_user_agentStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sip_messageParser_header_viaStack */ void pbelle_sip_messageParser_header_viaPop(pbelle_sip_messageParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(header_via)->free != NULL) { SCOPE_TOP(header_via)->free(SCOPE_TOP(header_via)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sip_messageParser_header_viaStack_limit--; SCOPE_TOP(header_via) = (pbelle_sip_messageParser_header_via_SCOPE)(ctx->pbelle_sip_messageParser_header_viaStack->get(ctx->pbelle_sip_messageParser_header_viaStack, ctx->pbelle_sip_messageParser_header_viaStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sip_messageParser_via_parmStack */ void pbelle_sip_messageParser_via_parmPop(pbelle_sip_messageParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(via_parm)->free != NULL) { SCOPE_TOP(via_parm)->free(SCOPE_TOP(via_parm)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sip_messageParser_via_parmStack_limit--; SCOPE_TOP(via_parm) = (pbelle_sip_messageParser_via_parm_SCOPE)(ctx->pbelle_sip_messageParser_via_parmStack->get(ctx->pbelle_sip_messageParser_via_parmStack, ctx->pbelle_sip_messageParser_via_parmStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sip_messageParser_header_www_authenticateStack */ void pbelle_sip_messageParser_header_www_authenticatePop(pbelle_sip_messageParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(header_www_authenticate)->free != NULL) { SCOPE_TOP(header_www_authenticate)->free(SCOPE_TOP(header_www_authenticate)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sip_messageParser_header_www_authenticateStack_limit--; SCOPE_TOP(header_www_authenticate) = (pbelle_sip_messageParser_header_www_authenticate_SCOPE)(ctx->pbelle_sip_messageParser_header_www_authenticateStack->get(ctx->pbelle_sip_messageParser_header_www_authenticateStack, ctx->pbelle_sip_messageParser_header_www_authenticateStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sip_messageParser_header_subscription_stateStack */ void pbelle_sip_messageParser_header_subscription_statePop(pbelle_sip_messageParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(header_subscription_state)->free != NULL) { SCOPE_TOP(header_subscription_state)->free(SCOPE_TOP(header_subscription_state)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sip_messageParser_header_subscription_stateStack_limit--; SCOPE_TOP(header_subscription_state) = (pbelle_sip_messageParser_header_subscription_state_SCOPE)(ctx->pbelle_sip_messageParser_header_subscription_stateStack->get(ctx->pbelle_sip_messageParser_header_subscription_stateStack, ctx->pbelle_sip_messageParser_header_subscription_stateStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sip_messageParser_header_eventStack */ void pbelle_sip_messageParser_header_eventPop(pbelle_sip_messageParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(header_event)->free != NULL) { SCOPE_TOP(header_event)->free(SCOPE_TOP(header_event)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sip_messageParser_header_eventStack_limit--; SCOPE_TOP(header_event) = (pbelle_sip_messageParser_header_event_SCOPE)(ctx->pbelle_sip_messageParser_header_eventStack->get(ctx->pbelle_sip_messageParser_header_eventStack, ctx->pbelle_sip_messageParser_header_eventStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sip_messageParser_header_replacesStack */ void pbelle_sip_messageParser_header_replacesPop(pbelle_sip_messageParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(header_replaces)->free != NULL) { SCOPE_TOP(header_replaces)->free(SCOPE_TOP(header_replaces)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sip_messageParser_header_replacesStack_limit--; SCOPE_TOP(header_replaces) = (pbelle_sip_messageParser_header_replaces_SCOPE)(ctx->pbelle_sip_messageParser_header_replacesStack->get(ctx->pbelle_sip_messageParser_header_replacesStack, ctx->pbelle_sip_messageParser_header_replacesStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sip_messageParser_header_privacyStack */ void pbelle_sip_messageParser_header_privacyPop(pbelle_sip_messageParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(header_privacy)->free != NULL) { SCOPE_TOP(header_privacy)->free(SCOPE_TOP(header_privacy)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sip_messageParser_header_privacyStack_limit--; SCOPE_TOP(header_privacy) = (pbelle_sip_messageParser_header_privacy_SCOPE)(ctx->pbelle_sip_messageParser_header_privacyStack->get(ctx->pbelle_sip_messageParser_header_privacyStack, ctx->pbelle_sip_messageParser_header_privacyStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sip_messageParser_header_supportedStack */ void pbelle_sip_messageParser_header_supportedPop(pbelle_sip_messageParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(header_supported)->free != NULL) { SCOPE_TOP(header_supported)->free(SCOPE_TOP(header_supported)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sip_messageParser_header_supportedStack_limit--; SCOPE_TOP(header_supported) = (pbelle_sip_messageParser_header_supported_SCOPE)(ctx->pbelle_sip_messageParser_header_supportedStack->get(ctx->pbelle_sip_messageParser_header_supportedStack, ctx->pbelle_sip_messageParser_header_supportedStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sip_messageParser_header_session_expiresStack */ void pbelle_sip_messageParser_header_session_expiresPop(pbelle_sip_messageParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(header_session_expires)->free != NULL) { SCOPE_TOP(header_session_expires)->free(SCOPE_TOP(header_session_expires)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sip_messageParser_header_session_expiresStack_limit--; SCOPE_TOP(header_session_expires) = (pbelle_sip_messageParser_header_session_expires_SCOPE)(ctx->pbelle_sip_messageParser_header_session_expiresStack->get(ctx->pbelle_sip_messageParser_header_session_expiresStack, ctx->pbelle_sip_messageParser_header_session_expiresStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sip_messageParser_header_requireStack */ void pbelle_sip_messageParser_header_requirePop(pbelle_sip_messageParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(header_require)->free != NULL) { SCOPE_TOP(header_require)->free(SCOPE_TOP(header_require)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sip_messageParser_header_requireStack_limit--; SCOPE_TOP(header_require) = (pbelle_sip_messageParser_header_require_SCOPE)(ctx->pbelle_sip_messageParser_header_requireStack->get(ctx->pbelle_sip_messageParser_header_requireStack, ctx->pbelle_sip_messageParser_header_requireStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sip_messageParser_header_content_dispositionStack */ void pbelle_sip_messageParser_header_content_dispositionPop(pbelle_sip_messageParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(header_content_disposition)->free != NULL) { SCOPE_TOP(header_content_disposition)->free(SCOPE_TOP(header_content_disposition)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sip_messageParser_header_content_dispositionStack_limit--; SCOPE_TOP(header_content_disposition) = (pbelle_sip_messageParser_header_content_disposition_SCOPE)(ctx->pbelle_sip_messageParser_header_content_dispositionStack->get(ctx->pbelle_sip_messageParser_header_content_dispositionStack, ctx->pbelle_sip_messageParser_header_content_dispositionStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sip_messageParser_header_acceptStack */ void pbelle_sip_messageParser_header_acceptPop(pbelle_sip_messageParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(header_accept)->free != NULL) { SCOPE_TOP(header_accept)->free(SCOPE_TOP(header_accept)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sip_messageParser_header_acceptStack_limit--; SCOPE_TOP(header_accept) = (pbelle_sip_messageParser_header_accept_SCOPE)(ctx->pbelle_sip_messageParser_header_acceptStack->get(ctx->pbelle_sip_messageParser_header_acceptStack, ctx->pbelle_sip_messageParser_header_acceptStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sip_messageParser_accept_paramStack */ void pbelle_sip_messageParser_accept_paramPop(pbelle_sip_messageParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(accept_param)->free != NULL) { SCOPE_TOP(accept_param)->free(SCOPE_TOP(accept_param)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sip_messageParser_accept_paramStack_limit--; SCOPE_TOP(accept_param) = (pbelle_sip_messageParser_accept_param_SCOPE)(ctx->pbelle_sip_messageParser_accept_paramStack->get(ctx->pbelle_sip_messageParser_accept_paramStack, ctx->pbelle_sip_messageParser_accept_paramStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sip_messageParser_header_reasonStack */ void pbelle_sip_messageParser_header_reasonPop(pbelle_sip_messageParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(header_reason)->free != NULL) { SCOPE_TOP(header_reason)->free(SCOPE_TOP(header_reason)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sip_messageParser_header_reasonStack_limit--; SCOPE_TOP(header_reason) = (pbelle_sip_messageParser_header_reason_SCOPE)(ctx->pbelle_sip_messageParser_header_reasonStack->get(ctx->pbelle_sip_messageParser_header_reasonStack, ctx->pbelle_sip_messageParser_header_reasonStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sip_messageParser_header_reason_paramStack */ void pbelle_sip_messageParser_header_reason_paramPop(pbelle_sip_messageParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(header_reason_param)->free != NULL) { SCOPE_TOP(header_reason_param)->free(SCOPE_TOP(header_reason_param)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sip_messageParser_header_reason_paramStack_limit--; SCOPE_TOP(header_reason_param) = (pbelle_sip_messageParser_header_reason_param_SCOPE)(ctx->pbelle_sip_messageParser_header_reason_paramStack->get(ctx->pbelle_sip_messageParser_header_reason_paramStack, ctx->pbelle_sip_messageParser_header_reason_paramStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sip_messageParser_header_authentication_infoStack */ void pbelle_sip_messageParser_header_authentication_infoPop(pbelle_sip_messageParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(header_authentication_info)->free != NULL) { SCOPE_TOP(header_authentication_info)->free(SCOPE_TOP(header_authentication_info)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sip_messageParser_header_authentication_infoStack_limit--; SCOPE_TOP(header_authentication_info) = (pbelle_sip_messageParser_header_authentication_info_SCOPE)(ctx->pbelle_sip_messageParser_header_authentication_infoStack->get(ctx->pbelle_sip_messageParser_header_authentication_infoStack, ctx->pbelle_sip_messageParser_header_authentication_infoStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sip_messageParser_header_extension_baseStack */ void pbelle_sip_messageParser_header_extension_basePop(pbelle_sip_messageParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(header_extension_base)->free != NULL) { SCOPE_TOP(header_extension_base)->free(SCOPE_TOP(header_extension_base)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sip_messageParser_header_extension_baseStack_limit--; SCOPE_TOP(header_extension_base) = (pbelle_sip_messageParser_header_extension_base_SCOPE)(ctx->pbelle_sip_messageParser_header_extension_baseStack->get(ctx->pbelle_sip_messageParser_header_extension_baseStack, ctx->pbelle_sip_messageParser_header_extension_baseStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sip_messageParser_paramless_uriStack */ void pbelle_sip_messageParser_paramless_uriPop(pbelle_sip_messageParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(paramless_uri)->free != NULL) { SCOPE_TOP(paramless_uri)->free(SCOPE_TOP(paramless_uri)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sip_messageParser_paramless_uriStack_limit--; SCOPE_TOP(paramless_uri) = (pbelle_sip_messageParser_paramless_uri_SCOPE)(ctx->pbelle_sip_messageParser_paramless_uriStack->get(ctx->pbelle_sip_messageParser_paramless_uriStack, ctx->pbelle_sip_messageParser_paramless_uriStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sip_messageParser_uriStack */ void pbelle_sip_messageParser_uriPop(pbelle_sip_messageParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(uri)->free != NULL) { SCOPE_TOP(uri)->free(SCOPE_TOP(uri)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sip_messageParser_uriStack_limit--; SCOPE_TOP(uri) = (pbelle_sip_messageParser_uri_SCOPE)(ctx->pbelle_sip_messageParser_uriStack->get(ctx->pbelle_sip_messageParser_uriStack, ctx->pbelle_sip_messageParser_uriStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sip_messageParser_fast_uriStack */ void pbelle_sip_messageParser_fast_uriPop(pbelle_sip_messageParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(fast_uri)->free != NULL) { SCOPE_TOP(fast_uri)->free(SCOPE_TOP(fast_uri)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sip_messageParser_fast_uriStack_limit--; SCOPE_TOP(fast_uri) = (pbelle_sip_messageParser_fast_uri_SCOPE)(ctx->pbelle_sip_messageParser_fast_uriStack->get(ctx->pbelle_sip_messageParser_fast_uriStack, ctx->pbelle_sip_messageParser_fast_uriStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sip_messageParser_userinfoStack */ void pbelle_sip_messageParser_userinfoPop(pbelle_sip_messageParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(userinfo)->free != NULL) { SCOPE_TOP(userinfo)->free(SCOPE_TOP(userinfo)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sip_messageParser_userinfoStack_limit--; SCOPE_TOP(userinfo) = (pbelle_sip_messageParser_userinfo_SCOPE)(ctx->pbelle_sip_messageParser_userinfoStack->get(ctx->pbelle_sip_messageParser_userinfoStack, ctx->pbelle_sip_messageParser_userinfoStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sip_messageParser_hostportStack */ void pbelle_sip_messageParser_hostportPop(pbelle_sip_messageParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(hostport)->free != NULL) { SCOPE_TOP(hostport)->free(SCOPE_TOP(hostport)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sip_messageParser_hostportStack_limit--; SCOPE_TOP(hostport) = (pbelle_sip_messageParser_hostport_SCOPE)(ctx->pbelle_sip_messageParser_hostportStack->get(ctx->pbelle_sip_messageParser_hostportStack, ctx->pbelle_sip_messageParser_hostportStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sip_messageParser_fast_hostportStack */ void pbelle_sip_messageParser_fast_hostportPop(pbelle_sip_messageParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(fast_hostport)->free != NULL) { SCOPE_TOP(fast_hostport)->free(SCOPE_TOP(fast_hostport)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sip_messageParser_fast_hostportStack_limit--; SCOPE_TOP(fast_hostport) = (pbelle_sip_messageParser_fast_hostport_SCOPE)(ctx->pbelle_sip_messageParser_fast_hostportStack->get(ctx->pbelle_sip_messageParser_fast_hostportStack, ctx->pbelle_sip_messageParser_fast_hostportStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sip_messageParser_uri_parametersStack */ void pbelle_sip_messageParser_uri_parametersPop(pbelle_sip_messageParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(uri_parameters)->free != NULL) { SCOPE_TOP(uri_parameters)->free(SCOPE_TOP(uri_parameters)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sip_messageParser_uri_parametersStack_limit--; SCOPE_TOP(uri_parameters) = (pbelle_sip_messageParser_uri_parameters_SCOPE)(ctx->pbelle_sip_messageParser_uri_parametersStack->get(ctx->pbelle_sip_messageParser_uri_parametersStack, ctx->pbelle_sip_messageParser_uri_parametersStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sip_messageParser_headersStack */ void pbelle_sip_messageParser_headersPop(pbelle_sip_messageParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(headers)->free != NULL) { SCOPE_TOP(headers)->free(SCOPE_TOP(headers)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sip_messageParser_headersStack_limit--; SCOPE_TOP(headers) = (pbelle_sip_messageParser_headers_SCOPE)(ctx->pbelle_sip_messageParser_headersStack->get(ctx->pbelle_sip_messageParser_headersStack, ctx->pbelle_sip_messageParser_headersStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sip_messageParser_uri_headerStack */ void pbelle_sip_messageParser_uri_headerPop(pbelle_sip_messageParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(uri_header)->free != NULL) { SCOPE_TOP(uri_header)->free(SCOPE_TOP(uri_header)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sip_messageParser_uri_headerStack_limit--; SCOPE_TOP(uri_header) = (pbelle_sip_messageParser_uri_header_SCOPE)(ctx->pbelle_sip_messageParser_uri_headerStack->get(ctx->pbelle_sip_messageParser_uri_headerStack, ctx->pbelle_sip_messageParser_uri_headerStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sip_messageParser_fast_hostStack */ void pbelle_sip_messageParser_fast_hostPop(pbelle_sip_messageParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(fast_host)->free != NULL) { SCOPE_TOP(fast_host)->free(SCOPE_TOP(fast_host)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sip_messageParser_fast_hostStack_limit--; SCOPE_TOP(fast_host) = (pbelle_sip_messageParser_fast_host_SCOPE)(ctx->pbelle_sip_messageParser_fast_hostStack->get(ctx->pbelle_sip_messageParser_fast_hostStack, ctx->pbelle_sip_messageParser_fast_hostStack_limit - 1)); } /* ruleAttributeScopeFuncMacro(scope) */ /** Function for popping the top value from a pbelle_sip_messageParser_hostStack */ void pbelle_sip_messageParser_hostPop(pbelle_sip_messageParser ctx) { // First see if the user defined a function they want to be called when a // scope is popped/freed. // // If the user supplied the scope entries with a free function,then call it first // if (SCOPE_TOP(host)->free != NULL) { SCOPE_TOP(host)->free(SCOPE_TOP(host)); } // Now we decrement the scope's upper limit bound. We do not actually pop the scope as // we want to reuse scope entries if we do continuous push and pops. Most scopes don't // next too far so we don't want to keep freeing and allocating them // ctx->pbelle_sip_messageParser_hostStack_limit--; SCOPE_TOP(host) = (pbelle_sip_messageParser_host_SCOPE)(ctx->pbelle_sip_messageParser_hostStack->get(ctx->pbelle_sip_messageParser_hostStack, ctx->pbelle_sip_messageParser_hostStack_limit - 1)); } // Forward declare the locally static matching functions we have generated. // static belle_sip_message_t* message (pbelle_sip_messageParser ctx); static belle_sip_message_t* message_raw (pbelle_sip_messageParser ctx, size_t* length); static belle_sip_request_t* request (pbelle_sip_messageParser ctx); static belle_sip_message_t* common_request (pbelle_sip_messageParser ctx); static belle_sip_request_t* request_line (pbelle_sip_messageParser ctx); static void sip_version (pbelle_sip_messageParser ctx); static void generic_version (pbelle_sip_messageParser ctx); static void message_header (pbelle_sip_messageParser ctx, belle_sip_message_t* message); static belle_sip_messageParser_method_return method (pbelle_sip_messageParser ctx); static void extension_method (pbelle_sip_messageParser ctx); static belle_sip_message_t* common_response (pbelle_sip_messageParser ctx); static belle_sip_response_t* response (pbelle_sip_messageParser ctx); static belle_sip_response_t* status_line (pbelle_sip_messageParser ctx); static belle_sip_messageParser_status_code_return status_code (pbelle_sip_messageParser ctx); static void extension_code (pbelle_sip_messageParser ctx); static belle_sip_messageParser_reason_phrase_return reason_phrase (pbelle_sip_messageParser ctx); static belle_http_request_t* http_request (pbelle_sip_messageParser ctx); static belle_http_request_t * http_request_line (pbelle_sip_messageParser ctx); static void http_version (pbelle_sip_messageParser ctx); static belle_http_response_t* http_response (pbelle_sip_messageParser ctx); static belle_http_response_t* http_status_line (pbelle_sip_messageParser ctx); static belle_sip_messageParser_opaque_part_for_from_to_contact_addr_spec_return opaque_part_for_from_to_contact_addr_spec (pbelle_sip_messageParser ctx); static belle_sip_messageParser_opaque_part_return opaque_part (pbelle_sip_messageParser ctx); static void uric_no_slash_for_from_to_contact_addr_spec (pbelle_sip_messageParser ctx); static void uric_no_slash (pbelle_sip_messageParser ctx); static belle_sip_messageParser_scheme_return scheme (pbelle_sip_messageParser ctx); static belle_generic_uri_t* generic_uri_for_from_to_contact_addr_spec (pbelle_sip_messageParser ctx); static belle_generic_uri_t* generic_uri (pbelle_sip_messageParser ctx); static belle_generic_uri_t* hier_part (pbelle_sip_messageParser ctx, belle_generic_uri_t* uri); static belle_sip_messageParser_path_segments_return path_segments (pbelle_sip_messageParser ctx, belle_generic_uri_t* uri); static void segment (pbelle_sip_messageParser ctx); static void param (pbelle_sip_messageParser ctx); static void pchar (pbelle_sip_messageParser ctx); static belle_sip_messageParser_query_return query (pbelle_sip_messageParser ctx); static void uric (pbelle_sip_messageParser ctx); static void uric_for_from_to_contact_addr_spec (pbelle_sip_messageParser ctx); static void authority (pbelle_sip_messageParser ctx, belle_generic_uri_t* uri); static void authority_userinfo (pbelle_sip_messageParser ctx, belle_generic_uri_t* uri); static belle_sip_messageParser_authority_user_return authority_user (pbelle_sip_messageParser ctx); static belle_sip_messageParser_authority_password_return authority_password (pbelle_sip_messageParser ctx); static void authority_hostport (pbelle_sip_messageParser ctx, belle_generic_uri_t* uri); static belle_sip_param_pair_t* generic_param (pbelle_sip_messageParser ctx, belle_sip_parameters_t* object); static belle_sip_messageParser_gen_value_return gen_value (pbelle_sip_messageParser ctx); static belle_sip_messageParser_quoted_string_return quoted_string (pbelle_sip_messageParser ctx); static belle_sip_header_allow_t* header_allow (pbelle_sip_messageParser ctx); static belle_sip_messageParser_methods_return methods (pbelle_sip_messageParser ctx); static void authorization_token (pbelle_sip_messageParser ctx); static void digest_token (pbelle_sip_messageParser ctx); static belle_sip_header_authorization_t* header_authorization (pbelle_sip_messageParser ctx); static void credentials (pbelle_sip_messageParser ctx, belle_sip_header_authorization_t* header_authorization_base); static void digest_response (pbelle_sip_messageParser ctx, belle_sip_header_authorization_t* header_authorization_base); static void dig_resp (pbelle_sip_messageParser ctx, belle_sip_header_authorization_t* header_authorization_base); static void username_token (pbelle_sip_messageParser ctx); static char* username (pbelle_sip_messageParser ctx); static belle_sip_messageParser_username_value_return username_value (pbelle_sip_messageParser ctx); static void uri_token (pbelle_sip_messageParser ctx); static void digest_uri (pbelle_sip_messageParser ctx, belle_sip_header_authorization_t* header_authorization_base); static const char* message_qop (pbelle_sip_messageParser ctx); static belle_sip_messageParser_qop_value_return qop_value (pbelle_sip_messageParser ctx); static char* cnonce (pbelle_sip_messageParser ctx); static belle_sip_messageParser_cnonce_value_return cnonce_value (pbelle_sip_messageParser ctx); static const char* nonce_count (pbelle_sip_messageParser ctx); static belle_sip_messageParser_nc_value_return nc_value (pbelle_sip_messageParser ctx); static char* dresponse (pbelle_sip_messageParser ctx); static belle_sip_messageParser_request_digest_return request_digest (pbelle_sip_messageParser ctx); static void huit_lhex (pbelle_sip_messageParser ctx); static void auth_param (pbelle_sip_messageParser ctx, belle_sip_header_authorization_t* header_authorization_base); static belle_sip_messageParser_auth_param_value_return auth_param_value (pbelle_sip_messageParser ctx); static belle_sip_messageParser_auth_param_name_return auth_param_name (pbelle_sip_messageParser ctx); static void other_response (pbelle_sip_messageParser ctx, belle_sip_header_authorization_t* header_authorization_base); static belle_sip_messageParser_auth_scheme_return auth_scheme (pbelle_sip_messageParser ctx); static belle_sip_messageParser_nonce_value_return nonce_value (pbelle_sip_messageParser ctx); static void call_id_token (pbelle_sip_messageParser ctx); static belle_sip_header_call_id_t* header_call_id (pbelle_sip_messageParser ctx); static belle_sip_messageParser_call_id_return call_id (pbelle_sip_messageParser ctx); static void retry_after_token (pbelle_sip_messageParser ctx); static belle_sip_header_retry_after_t* header_retry_after (pbelle_sip_messageParser ctx); static belle_sip_messageParser_retry_after_return retry_after (pbelle_sip_messageParser ctx); static void contact_token (pbelle_sip_messageParser ctx); static belle_sip_header_contact_t* header_contact (pbelle_sip_messageParser ctx); static void contact_param (pbelle_sip_messageParser ctx); static belle_sip_header_address_t* header_address (pbelle_sip_messageParser ctx); static belle_sip_header_address_t* header_address_param_less (pbelle_sip_messageParser ctx); static belle_sip_header_address_t* header_address_base (pbelle_sip_messageParser ctx, belle_sip_header_address_t* obj); static belle_sip_header_address_t* fast_header_address (pbelle_sip_messageParser ctx); static belle_sip_header_address_t* fast_header_address_param_less (pbelle_sip_messageParser ctx); static void name_addr (pbelle_sip_messageParser ctx, belle_sip_header_address_t* object); static void name_addr_with_generic_uri (pbelle_sip_messageParser ctx, belle_sip_header_address_t* object); static void fast_name_addr_with_generic_uri (pbelle_sip_messageParser ctx, belle_sip_header_address_t* object); static void addr_spec (pbelle_sip_messageParser ctx, belle_sip_header_address_t* object); static void addr_spec_with_generic_uri (pbelle_sip_messageParser ctx, belle_sip_header_address_t* object); static void fast_addr_spec_with_generic_uri (pbelle_sip_messageParser ctx, belle_sip_header_address_t* object); static void paramless_addr_spec (pbelle_sip_messageParser ctx, belle_sip_header_address_t* object); static void paramless_addr_spec_with_generic_uri (pbelle_sip_messageParser ctx, belle_sip_header_address_t* object); static belle_sip_messageParser_display_name_tokens_return display_name_tokens (pbelle_sip_messageParser ctx); static void display_name (pbelle_sip_messageParser ctx, belle_sip_header_address_t* object); static void contact_params (pbelle_sip_messageParser ctx); static void contact_extension (pbelle_sip_messageParser ctx); static belle_sip_messageParser_delta_seconds_return delta_seconds (pbelle_sip_messageParser ctx); static void content_length_token (pbelle_sip_messageParser ctx); static belle_sip_header_content_length_t* header_content_length (pbelle_sip_messageParser ctx); static belle_sip_messageParser_content_length_return content_length (pbelle_sip_messageParser ctx); static void content_type_token (pbelle_sip_messageParser ctx); static belle_sip_header_content_type_t* header_content_type (pbelle_sip_messageParser ctx); static void media_type (pbelle_sip_messageParser ctx); static belle_sip_messageParser_m_type_return m_type (pbelle_sip_messageParser ctx); static void type_param (pbelle_sip_messageParser ctx); static belle_sip_messageParser_type_param_value_return type_param_value (pbelle_sip_messageParser ctx); static belle_sip_messageParser_m_subtype_return m_subtype (pbelle_sip_messageParser ctx); static void cseq_token (pbelle_sip_messageParser ctx); static belle_sip_header_cseq_t* header_cseq (pbelle_sip_messageParser ctx); static belle_sip_messageParser_seq_number_return seq_number (pbelle_sip_messageParser ctx); static void date_token (pbelle_sip_messageParser ctx); static belle_sip_header_date_t* header_date (pbelle_sip_messageParser ctx); static void date (pbelle_sip_messageParser ctx); static belle_sip_messageParser_sip_date_return sip_date (pbelle_sip_messageParser ctx); static belle_sip_header_expires_t* header_expires (pbelle_sip_messageParser ctx); static void from_token (pbelle_sip_messageParser ctx); static belle_sip_header_from_t* header_from (pbelle_sip_messageParser ctx); static void from_spec (pbelle_sip_messageParser ctx); static void from_param (pbelle_sip_messageParser ctx); static belle_sip_header_max_forwards_t* header_max_forwards (pbelle_sip_messageParser ctx); static belle_sip_messageParser_max_forwards_return max_forwards (pbelle_sip_messageParser ctx); static belle_sip_header_proxy_authenticate_t* header_proxy_authenticate (pbelle_sip_messageParser ctx); static void challenge (pbelle_sip_messageParser ctx, belle_sip_header_www_authenticate_t* www_authenticate); static void other_challenge (pbelle_sip_messageParser ctx, belle_sip_header_www_authenticate_t* www_authenticate); static void digest_cln (pbelle_sip_messageParser ctx, belle_sip_header_www_authenticate_t* www_authenticate); static char* realm (pbelle_sip_messageParser ctx); static belle_sip_messageParser_realm_value_return realm_value (pbelle_sip_messageParser ctx); static char* domain (pbelle_sip_messageParser ctx); static char* nonce (pbelle_sip_messageParser ctx); static char* opaque (pbelle_sip_messageParser ctx); static const char* stale (pbelle_sip_messageParser ctx); static belle_sip_messageParser_stale_value_return stale_value (pbelle_sip_messageParser ctx); static const char* algorithm (pbelle_sip_messageParser ctx); static belle_sip_list_t* qop_opts (pbelle_sip_messageParser ctx); static void qop_opts_value (pbelle_sip_messageParser ctx); static belle_sip_header_proxy_authorization_t* header_proxy_authorization (pbelle_sip_messageParser ctx); static void service_route_token (pbelle_sip_messageParser ctx); static belle_sip_header_service_route_t* header_service_route (pbelle_sip_messageParser ctx); static void srv_route (pbelle_sip_messageParser ctx); static void sr_param (pbelle_sip_messageParser ctx); static void record_route_token (pbelle_sip_messageParser ctx); static belle_sip_header_record_route_t* header_record_route (pbelle_sip_messageParser ctx); static void rec_route (pbelle_sip_messageParser ctx); static void rr_param (pbelle_sip_messageParser ctx); static void comment (pbelle_sip_messageParser ctx); static void route_token (pbelle_sip_messageParser ctx); static belle_sip_header_route_t* header_route (pbelle_sip_messageParser ctx); static void route_param (pbelle_sip_messageParser ctx); static void r_param (pbelle_sip_messageParser ctx); static void to_token (pbelle_sip_messageParser ctx); static belle_sip_header_to_t* header_to (pbelle_sip_messageParser ctx); static void to_spec (pbelle_sip_messageParser ctx); static void to_param (pbelle_sip_messageParser ctx); static void diversion_token (pbelle_sip_messageParser ctx); static belle_sip_header_diversion_t* header_diversion (pbelle_sip_messageParser ctx); static void diversion_spec (pbelle_sip_messageParser ctx); static void diversion_param (pbelle_sip_messageParser ctx); static void refer_to_token (pbelle_sip_messageParser ctx); static belle_sip_header_refer_to_t* header_refer_to (pbelle_sip_messageParser ctx); static void referred_by_token (pbelle_sip_messageParser ctx); static belle_sip_header_referred_by_t* header_referred_by (pbelle_sip_messageParser ctx); static belle_sip_header_address_t* refer_to_spec (pbelle_sip_messageParser ctx, belle_sip_header_address_t* address); static belle_sip_header_user_agent_t* header_user_agent (pbelle_sip_messageParser ctx); static void server_val (pbelle_sip_messageParser ctx); static void via_token (pbelle_sip_messageParser ctx); static belle_sip_header_via_t* header_via (pbelle_sip_messageParser ctx); static void via_parm (pbelle_sip_messageParser ctx); static void via_params (pbelle_sip_messageParser ctx); static void via_received (pbelle_sip_messageParser ctx, belle_sip_header_via_t* object); static const char* via_address (pbelle_sip_messageParser ctx); static belle_sip_messageParser_sent_protocol_return sent_protocol (pbelle_sip_messageParser ctx); static void protocol_name (pbelle_sip_messageParser ctx); static void protocol_version (pbelle_sip_messageParser ctx); static belle_sip_messageParser_transport_return transport (pbelle_sip_messageParser ctx); static void other_transport (pbelle_sip_messageParser ctx); static void sent_by (pbelle_sip_messageParser ctx); static belle_sip_header_www_authenticate_t* header_www_authenticate (pbelle_sip_messageParser ctx); static belle_sip_messageParser_state_value_return state_value (pbelle_sip_messageParser ctx); static belle_sip_header_subscription_state_t* header_subscription_state (pbelle_sip_messageParser ctx); static belle_sip_header_event_t* header_event (pbelle_sip_messageParser ctx); static belle_sip_messageParser_event_package_return event_package (pbelle_sip_messageParser ctx); static belle_sip_header_replaces_t* header_replaces (pbelle_sip_messageParser ctx); static belle_sip_header_p_preferred_identity_t* header_p_preferred_identity (pbelle_sip_messageParser ctx); static belle_sip_header_privacy_t* header_privacy (pbelle_sip_messageParser ctx); static void privacy_val (pbelle_sip_messageParser ctx); static belle_sip_header_supported_t* header_supported (pbelle_sip_messageParser ctx); static void supported_val (pbelle_sip_messageParser ctx); static belle_sip_header_session_expires_t* header_session_expires (pbelle_sip_messageParser ctx); static belle_sip_header_require_t* header_require (pbelle_sip_messageParser ctx); static void require_val (pbelle_sip_messageParser ctx); static belle_sip_messageParser_content_disposition_value_return content_disposition_value (pbelle_sip_messageParser ctx); static belle_sip_header_content_disposition_t* header_content_disposition (pbelle_sip_messageParser ctx); static void accept_token (pbelle_sip_messageParser ctx); static belle_sip_header_accept_t* header_accept (pbelle_sip_messageParser ctx); static void accept_param (pbelle_sip_messageParser ctx); static belle_sip_messageParser_accept_main_media_type_return accept_main_media_type (pbelle_sip_messageParser ctx); static belle_sip_messageParser_accept_sub_media_type_return accept_sub_media_type (pbelle_sip_messageParser ctx); static belle_sip_header_reason_t* header_reason (pbelle_sip_messageParser ctx); static void header_reason_param (pbelle_sip_messageParser ctx); static belle_sip_messageParser_header_reason_protocol_return header_reason_protocol (pbelle_sip_messageParser ctx); static belle_sip_header_authentication_info_t* header_authentication_info (pbelle_sip_messageParser ctx); static void auth_info (pbelle_sip_messageParser ctx); static void qop_token (pbelle_sip_messageParser ctx); static const char* authentication_info_message_qop (pbelle_sip_messageParser ctx); static char* rspauth (pbelle_sip_messageParser ctx); static char* next_nonce (pbelle_sip_messageParser ctx); static char* quoted_algorithm (pbelle_sip_messageParser ctx); static belle_sip_header_t* header (pbelle_sip_messageParser ctx); static belle_sip_header_t* header_extension_base (pbelle_sip_messageParser ctx, ANTLR3_BOOLEAN is_http); static belle_sip_messageParser_header_name_return header_name (pbelle_sip_messageParser ctx); static belle_sip_messageParser_header_value_return header_value (pbelle_sip_messageParser ctx, const char* name, ANTLR3_BOOLEAN is_http); static void message_body (pbelle_sip_messageParser ctx); static belle_sip_uri_t* paramless_uri (pbelle_sip_messageParser ctx); static belle_sip_uri_t* uri (pbelle_sip_messageParser ctx); static belle_sip_uri_t* fast_uri (pbelle_sip_messageParser ctx); static void sip_token (pbelle_sip_messageParser ctx); static void sips_token (pbelle_sip_messageParser ctx); static void sip_schema (pbelle_sip_messageParser ctx, belle_sip_uri_t* uri); static void userinfo (pbelle_sip_messageParser ctx, belle_sip_uri_t* uri); static belle_sip_messageParser_user_return user (pbelle_sip_messageParser ctx); static belle_sip_messageParser_password_return password (pbelle_sip_messageParser ctx); static void hostport (pbelle_sip_messageParser ctx, belle_sip_uri_t* uri); static void fast_hostport (pbelle_sip_messageParser ctx, belle_sip_uri_t* uri); static void uri_parameters (pbelle_sip_messageParser ctx, belle_sip_uri_t* uri); static void uri_parameter (pbelle_sip_messageParser ctx); static void other_param (pbelle_sip_messageParser ctx); static belle_sip_messageParser_pname_return pname (pbelle_sip_messageParser ctx); static belle_sip_messageParser_pvalue_return pvalue (pbelle_sip_messageParser ctx); static void paramchar (pbelle_sip_messageParser ctx); static void param_unreserved (pbelle_sip_messageParser ctx); static void headers (pbelle_sip_messageParser ctx, belle_sip_uri_t* uri); static void uri_header (pbelle_sip_messageParser ctx); static belle_sip_messageParser_hname_return hname (pbelle_sip_messageParser ctx); static belle_sip_messageParser_hvalue_return hvalue (pbelle_sip_messageParser ctx); static void hnv_unreserved (pbelle_sip_messageParser ctx); static const char* fast_host (pbelle_sip_messageParser ctx); static belle_sip_messageParser_fast_hostname_return fast_hostname (pbelle_sip_messageParser ctx); static void user_unreserved (pbelle_sip_messageParser ctx); static const char* host (pbelle_sip_messageParser ctx); static belle_sip_messageParser_hostname_return hostname (pbelle_sip_messageParser ctx); static void domainlabel (pbelle_sip_messageParser ctx); static void toplabel (pbelle_sip_messageParser ctx); static belle_sip_messageParser_ipv4address_return ipv4address (pbelle_sip_messageParser ctx); static const char* ipv6reference (pbelle_sip_messageParser ctx); static belle_sip_messageParser_ipv6address_return ipv6address (pbelle_sip_messageParser ctx); static void hexpart (pbelle_sip_messageParser ctx); static void hexseq (pbelle_sip_messageParser ctx); static void hex4 (pbelle_sip_messageParser ctx); static belle_sip_messageParser_port_return port (pbelle_sip_messageParser ctx); static void escaped (pbelle_sip_messageParser ctx); static void ttl (pbelle_sip_messageParser ctx); static void three_digit (pbelle_sip_messageParser ctx); static belle_sip_messageParser_token_return token (pbelle_sip_messageParser ctx); static void reserved_for_from_to_contact_addr_spec (pbelle_sip_messageParser ctx); static void reserved (pbelle_sip_messageParser ctx); static void unreserved (pbelle_sip_messageParser ctx); static void alphanum (pbelle_sip_messageParser ctx); static void hexdigit (pbelle_sip_messageParser ctx); static void alpha (pbelle_sip_messageParser ctx); static belle_sip_messageParser_word_return word (pbelle_sip_messageParser ctx); static void mark (pbelle_sip_messageParser ctx); static void sp_tab_colon (pbelle_sip_messageParser ctx); static void hcolon (pbelle_sip_messageParser ctx); static void ldquot (pbelle_sip_messageParser ctx); static void rdquot (pbelle_sip_messageParser ctx); static void semi (pbelle_sip_messageParser ctx); static void comma (pbelle_sip_messageParser ctx); static void sp_laquot (pbelle_sip_messageParser ctx); static void raquot_sp (pbelle_sip_messageParser ctx); static void equal (pbelle_sip_messageParser ctx); static void slash (pbelle_sip_messageParser ctx); static void lws (pbelle_sip_messageParser ctx); static ANTLR3_BOOLEAN synpred1_belle_sip_message (pbelle_sip_messageParser ctx); static ANTLR3_BOOLEAN synpred2_belle_sip_message (pbelle_sip_messageParser ctx); static ANTLR3_BOOLEAN synpred3_belle_sip_message (pbelle_sip_messageParser ctx); static ANTLR3_BOOLEAN synpred4_belle_sip_message (pbelle_sip_messageParser ctx); static ANTLR3_BOOLEAN synpred6_belle_sip_message (pbelle_sip_messageParser ctx); static ANTLR3_BOOLEAN synpred7_belle_sip_message (pbelle_sip_messageParser ctx); static ANTLR3_BOOLEAN synpred8_belle_sip_message (pbelle_sip_messageParser ctx); static ANTLR3_BOOLEAN synpred9_belle_sip_message (pbelle_sip_messageParser ctx); static ANTLR3_BOOLEAN synpred10_belle_sip_message (pbelle_sip_messageParser ctx); static ANTLR3_BOOLEAN synpred11_belle_sip_message (pbelle_sip_messageParser ctx); static ANTLR3_BOOLEAN synpred12_belle_sip_message (pbelle_sip_messageParser ctx); static ANTLR3_BOOLEAN synpred13_belle_sip_message (pbelle_sip_messageParser ctx); static ANTLR3_BOOLEAN synpred14_belle_sip_message (pbelle_sip_messageParser ctx); static ANTLR3_BOOLEAN synpred15_belle_sip_message (pbelle_sip_messageParser ctx); static ANTLR3_BOOLEAN synpred16_belle_sip_message (pbelle_sip_messageParser ctx); static void belle_sip_messageParserFree(pbelle_sip_messageParser ctx); static void belle_sip_messageParserReset (pbelle_sip_messageParser ctx); /* For use in tree output where we are accumulating rule labels via label += ruleRef * we need a function that knows how to free a return scope when the list is destroyed. * We cannot just use ANTLR3_FREE because in debug tracking mode, this is a macro. */ static void ANTLR3_CDECL freeScope(void * scope) { ANTLR3_FREE(scope); } /** \brief Name of the grammar file that generated this code */ static const char fileName[] = "../grammars/belle_sip_message.g"; /** \brief Return the name of the grammar file that generated this code. */ static const char * getGrammarFileName() { return fileName; } /** \brief Create a new belle_sip_messageParser parser and return a context for it. * * \param[in] instream Pointer to an input stream interface. * * \return Pointer to new parser context upon success. */ ANTLR3_API pbelle_sip_messageParser belle_sip_messageParserNew (pANTLR3_COMMON_TOKEN_STREAM instream) { // See if we can create a new parser with the standard constructor // return belle_sip_messageParserNewSSD(instream, NULL); } /** \brief Create a new belle_sip_messageParser parser and return a context for it. * * \param[in] instream Pointer to an input stream interface. * * \return Pointer to new parser context upon success. */ ANTLR3_API pbelle_sip_messageParser belle_sip_messageParserNewSSD (pANTLR3_COMMON_TOKEN_STREAM instream, pANTLR3_RECOGNIZER_SHARED_STATE state) { pbelle_sip_messageParser ctx; /* Context structure we will build and return */ ctx = (pbelle_sip_messageParser) ANTLR3_CALLOC(1, sizeof(belle_sip_messageParser)); if (ctx == NULL) { // Failed to allocate memory for parser context // return NULL; } /* ------------------------------------------------------------------- * Memory for basic structure is allocated, now to fill in * the base ANTLR3 structures. We initialize the function pointers * for the standard ANTLR3 parser function set, but upon return * from here, the programmer may set the pointers to provide custom * implementations of each function. * * We don't use the macros defined in belle_sip_messageParser.h here, in order that you can get a sense * of what goes where. */ /* Create a base parser/recognizer, using the supplied token stream */ ctx->pParser = antlr3ParserNewStream(ANTLR3_SIZE_HINT, instream->tstream, state); /* Install the implementation of our belle_sip_messageParser interface */ ctx->message = message; ctx->message_raw = message_raw; ctx->request = request; ctx->common_request = common_request; ctx->request_line = request_line; ctx->sip_version = sip_version; ctx->generic_version = generic_version; ctx->message_header = message_header; ctx->method = method; ctx->extension_method = extension_method; ctx->common_response = common_response; ctx->response = response; ctx->status_line = status_line; ctx->status_code = status_code; ctx->extension_code = extension_code; ctx->reason_phrase = reason_phrase; ctx->http_request = http_request; ctx->http_request_line = http_request_line; ctx->http_version = http_version; ctx->http_response = http_response; ctx->http_status_line = http_status_line; ctx->opaque_part_for_from_to_contact_addr_spec = opaque_part_for_from_to_contact_addr_spec; ctx->opaque_part = opaque_part; ctx->uric_no_slash_for_from_to_contact_addr_spec = uric_no_slash_for_from_to_contact_addr_spec; ctx->uric_no_slash = uric_no_slash; ctx->scheme = scheme; ctx->generic_uri_for_from_to_contact_addr_spec = generic_uri_for_from_to_contact_addr_spec; ctx->generic_uri = generic_uri; ctx->hier_part = hier_part; ctx->path_segments = path_segments; ctx->segment = segment; ctx->param = param; ctx->pchar = pchar; ctx->query = query; ctx->uric = uric; ctx->uric_for_from_to_contact_addr_spec = uric_for_from_to_contact_addr_spec; ctx->authority = authority; ctx->authority_userinfo = authority_userinfo; ctx->authority_user = authority_user; ctx->authority_password = authority_password; ctx->authority_hostport = authority_hostport; ctx->generic_param = generic_param; ctx->gen_value = gen_value; ctx->quoted_string = quoted_string; ctx->header_allow = header_allow; ctx->methods = methods; ctx->authorization_token = authorization_token; ctx->digest_token = digest_token; ctx->header_authorization = header_authorization; ctx->credentials = credentials; ctx->digest_response = digest_response; ctx->dig_resp = dig_resp; ctx->username_token = username_token; ctx->username = username; ctx->username_value = username_value; ctx->uri_token = uri_token; ctx->digest_uri = digest_uri; ctx->message_qop = message_qop; ctx->qop_value = qop_value; ctx->cnonce = cnonce; ctx->cnonce_value = cnonce_value; ctx->nonce_count = nonce_count; ctx->nc_value = nc_value; ctx->dresponse = dresponse; ctx->request_digest = request_digest; ctx->huit_lhex = huit_lhex; ctx->auth_param = auth_param; ctx->auth_param_value = auth_param_value; ctx->auth_param_name = auth_param_name; ctx->other_response = other_response; ctx->auth_scheme = auth_scheme; ctx->nonce_value = nonce_value; ctx->call_id_token = call_id_token; ctx->header_call_id = header_call_id; ctx->call_id = call_id; ctx->retry_after_token = retry_after_token; ctx->header_retry_after = header_retry_after; ctx->retry_after = retry_after; ctx->contact_token = contact_token; ctx->header_contact = header_contact; ctx->contact_param = contact_param; ctx->header_address = header_address; ctx->header_address_param_less = header_address_param_less; ctx->header_address_base = header_address_base; ctx->fast_header_address = fast_header_address; ctx->fast_header_address_param_less = fast_header_address_param_less; ctx->name_addr = name_addr; ctx->name_addr_with_generic_uri = name_addr_with_generic_uri; ctx->fast_name_addr_with_generic_uri = fast_name_addr_with_generic_uri; ctx->addr_spec = addr_spec; ctx->addr_spec_with_generic_uri = addr_spec_with_generic_uri; ctx->fast_addr_spec_with_generic_uri = fast_addr_spec_with_generic_uri; ctx->paramless_addr_spec = paramless_addr_spec; ctx->paramless_addr_spec_with_generic_uri = paramless_addr_spec_with_generic_uri; ctx->display_name_tokens = display_name_tokens; ctx->display_name = display_name; ctx->contact_params = contact_params; ctx->contact_extension = contact_extension; ctx->delta_seconds = delta_seconds; ctx->content_length_token = content_length_token; ctx->header_content_length = header_content_length; ctx->content_length = content_length; ctx->content_type_token = content_type_token; ctx->header_content_type = header_content_type; ctx->media_type = media_type; ctx->m_type = m_type; ctx->type_param = type_param; ctx->type_param_value = type_param_value; ctx->m_subtype = m_subtype; ctx->cseq_token = cseq_token; ctx->header_cseq = header_cseq; ctx->seq_number = seq_number; ctx->date_token = date_token; ctx->header_date = header_date; ctx->date = date; ctx->sip_date = sip_date; ctx->header_expires = header_expires; ctx->from_token = from_token; ctx->header_from = header_from; ctx->from_spec = from_spec; ctx->from_param = from_param; ctx->header_max_forwards = header_max_forwards; ctx->max_forwards = max_forwards; ctx->header_proxy_authenticate = header_proxy_authenticate; ctx->challenge = challenge; ctx->other_challenge = other_challenge; ctx->digest_cln = digest_cln; ctx->realm = realm; ctx->realm_value = realm_value; ctx->domain = domain; ctx->nonce = nonce; ctx->opaque = opaque; ctx->stale = stale; ctx->stale_value = stale_value; ctx->algorithm = algorithm; ctx->qop_opts = qop_opts; ctx->qop_opts_value = qop_opts_value; ctx->header_proxy_authorization = header_proxy_authorization; ctx->service_route_token = service_route_token; ctx->header_service_route = header_service_route; ctx->srv_route = srv_route; ctx->sr_param = sr_param; ctx->record_route_token = record_route_token; ctx->header_record_route = header_record_route; ctx->rec_route = rec_route; ctx->rr_param = rr_param; ctx->comment = comment; ctx->route_token = route_token; ctx->header_route = header_route; ctx->route_param = route_param; ctx->r_param = r_param; ctx->to_token = to_token; ctx->header_to = header_to; ctx->to_spec = to_spec; ctx->to_param = to_param; ctx->diversion_token = diversion_token; ctx->header_diversion = header_diversion; ctx->diversion_spec = diversion_spec; ctx->diversion_param = diversion_param; ctx->refer_to_token = refer_to_token; ctx->header_refer_to = header_refer_to; ctx->referred_by_token = referred_by_token; ctx->header_referred_by = header_referred_by; ctx->refer_to_spec = refer_to_spec; ctx->header_user_agent = header_user_agent; ctx->server_val = server_val; ctx->via_token = via_token; ctx->header_via = header_via; ctx->via_parm = via_parm; ctx->via_params = via_params; ctx->via_received = via_received; ctx->via_address = via_address; ctx->sent_protocol = sent_protocol; ctx->protocol_name = protocol_name; ctx->protocol_version = protocol_version; ctx->transport = transport; ctx->other_transport = other_transport; ctx->sent_by = sent_by; ctx->header_www_authenticate = header_www_authenticate; ctx->state_value = state_value; ctx->header_subscription_state = header_subscription_state; ctx->header_event = header_event; ctx->event_package = event_package; ctx->header_replaces = header_replaces; ctx->header_p_preferred_identity = header_p_preferred_identity; ctx->header_privacy = header_privacy; ctx->privacy_val = privacy_val; ctx->header_supported = header_supported; ctx->supported_val = supported_val; ctx->header_session_expires = header_session_expires; ctx->header_require = header_require; ctx->require_val = require_val; ctx->content_disposition_value = content_disposition_value; ctx->header_content_disposition = header_content_disposition; ctx->accept_token = accept_token; ctx->header_accept = header_accept; ctx->accept_param = accept_param; ctx->accept_main_media_type = accept_main_media_type; ctx->accept_sub_media_type = accept_sub_media_type; ctx->header_reason = header_reason; ctx->header_reason_param = header_reason_param; ctx->header_reason_protocol = header_reason_protocol; ctx->header_authentication_info = header_authentication_info; ctx->auth_info = auth_info; ctx->qop_token = qop_token; ctx->authentication_info_message_qop = authentication_info_message_qop; ctx->rspauth = rspauth; ctx->next_nonce = next_nonce; ctx->quoted_algorithm = quoted_algorithm; ctx->header = header; ctx->header_extension_base = header_extension_base; ctx->header_name = header_name; ctx->header_value = header_value; ctx->message_body = message_body; ctx->paramless_uri = paramless_uri; ctx->uri = uri; ctx->fast_uri = fast_uri; ctx->sip_token = sip_token; ctx->sips_token = sips_token; ctx->sip_schema = sip_schema; ctx->userinfo = userinfo; ctx->user = user; ctx->password = password; ctx->hostport = hostport; ctx->fast_hostport = fast_hostport; ctx->uri_parameters = uri_parameters; ctx->uri_parameter = uri_parameter; ctx->other_param = other_param; ctx->pname = pname; ctx->pvalue = pvalue; ctx->paramchar = paramchar; ctx->param_unreserved = param_unreserved; ctx->headers = headers; ctx->uri_header = uri_header; ctx->hname = hname; ctx->hvalue = hvalue; ctx->hnv_unreserved = hnv_unreserved; ctx->fast_host = fast_host; ctx->fast_hostname = fast_hostname; ctx->user_unreserved = user_unreserved; ctx->host = host; ctx->hostname = hostname; ctx->domainlabel = domainlabel; ctx->toplabel = toplabel; ctx->ipv4address = ipv4address; ctx->ipv6reference = ipv6reference; ctx->ipv6address = ipv6address; ctx->hexpart = hexpart; ctx->hexseq = hexseq; ctx->hex4 = hex4; ctx->port = port; ctx->escaped = escaped; ctx->ttl = ttl; ctx->three_digit = three_digit; ctx->token = token; ctx->reserved_for_from_to_contact_addr_spec = reserved_for_from_to_contact_addr_spec; ctx->reserved = reserved; ctx->unreserved = unreserved; ctx->alphanum = alphanum; ctx->hexdigit = hexdigit; ctx->alpha = alpha; ctx->word = word; ctx->mark = mark; ctx->sp_tab_colon = sp_tab_colon; ctx->hcolon = hcolon; ctx->ldquot = ldquot; ctx->rdquot = rdquot; ctx->semi = semi; ctx->comma = comma; ctx->sp_laquot = sp_laquot; ctx->raquot_sp = raquot_sp; ctx->equal = equal; ctx->slash = slash; ctx->lws = lws; ctx->synpred1_belle_sip_message = synpred1_belle_sip_message; ctx->synpred2_belle_sip_message = synpred2_belle_sip_message; ctx->synpred3_belle_sip_message = synpred3_belle_sip_message; ctx->synpred4_belle_sip_message = synpred4_belle_sip_message; ctx->synpred6_belle_sip_message = synpred6_belle_sip_message; ctx->synpred7_belle_sip_message = synpred7_belle_sip_message; ctx->synpred8_belle_sip_message = synpred8_belle_sip_message; ctx->synpred9_belle_sip_message = synpred9_belle_sip_message; ctx->synpred10_belle_sip_message = synpred10_belle_sip_message; ctx->synpred11_belle_sip_message = synpred11_belle_sip_message; ctx->synpred12_belle_sip_message = synpred12_belle_sip_message; ctx->synpred13_belle_sip_message = synpred13_belle_sip_message; ctx->synpred14_belle_sip_message = synpred14_belle_sip_message; ctx->synpred15_belle_sip_message = synpred15_belle_sip_message; ctx->synpred16_belle_sip_message = synpred16_belle_sip_message; ctx->free = belle_sip_messageParserFree; ctx->reset = belle_sip_messageParserReset; ctx->getGrammarFileName = getGrammarFileName; /* Install the scope pushing methods. */ /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_messagePush = pbelle_sip_messageParser_messagePush; ctx->pbelle_sip_messageParser_messageStack = antlr3StackNew(0); ctx->pbelle_sip_messageParser_messageStack_limit = 0; ctx->pbelle_sip_messageParser_messageTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_message_rawPush = pbelle_sip_messageParser_message_rawPush; ctx->pbelle_sip_messageParser_message_rawStack = antlr3StackNew(0); ctx->pbelle_sip_messageParser_message_rawStack_limit = 0; ctx->pbelle_sip_messageParser_message_rawTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_common_requestPush = pbelle_sip_messageParser_common_requestPush; ctx->pbelle_sip_messageParser_common_requestStack = antlr3StackNew(0); ctx->pbelle_sip_messageParser_common_requestStack_limit = 0; ctx->pbelle_sip_messageParser_common_requestTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_request_linePush = pbelle_sip_messageParser_request_linePush; ctx->pbelle_sip_messageParser_request_lineStack = antlr3StackNew(0); ctx->pbelle_sip_messageParser_request_lineStack_limit = 0; ctx->pbelle_sip_messageParser_request_lineTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_status_linePush = pbelle_sip_messageParser_status_linePush; ctx->pbelle_sip_messageParser_status_lineStack = antlr3StackNew(0); ctx->pbelle_sip_messageParser_status_lineStack_limit = 0; ctx->pbelle_sip_messageParser_status_lineTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_http_request_linePush = pbelle_sip_messageParser_http_request_linePush; ctx->pbelle_sip_messageParser_http_request_lineStack = antlr3StackNew(0); ctx->pbelle_sip_messageParser_http_request_lineStack_limit = 0; ctx->pbelle_sip_messageParser_http_request_lineTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_generic_uri_for_from_to_contact_addr_specPush = pbelle_sip_messageParser_generic_uri_for_from_to_contact_addr_specPush; ctx->pbelle_sip_messageParser_generic_uri_for_from_to_contact_addr_specStack = antlr3StackNew(0); ctx->pbelle_sip_messageParser_generic_uri_for_from_to_contact_addr_specStack_limit = 0; ctx->pbelle_sip_messageParser_generic_uri_for_from_to_contact_addr_specTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_generic_uriPush = pbelle_sip_messageParser_generic_uriPush; ctx->pbelle_sip_messageParser_generic_uriStack = antlr3StackNew(0); ctx->pbelle_sip_messageParser_generic_uriStack_limit = 0; ctx->pbelle_sip_messageParser_generic_uriTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_authority_userinfoPush = pbelle_sip_messageParser_authority_userinfoPush; ctx->pbelle_sip_messageParser_authority_userinfoStack = antlr3StackNew(0); ctx->pbelle_sip_messageParser_authority_userinfoStack_limit = 0; ctx->pbelle_sip_messageParser_authority_userinfoTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_authority_hostportPush = pbelle_sip_messageParser_authority_hostportPush; ctx->pbelle_sip_messageParser_authority_hostportStack = antlr3StackNew(0); ctx->pbelle_sip_messageParser_authority_hostportStack_limit = 0; ctx->pbelle_sip_messageParser_authority_hostportTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_generic_paramPush = pbelle_sip_messageParser_generic_paramPush; ctx->pbelle_sip_messageParser_generic_paramStack = antlr3StackNew(0); ctx->pbelle_sip_messageParser_generic_paramStack_limit = 0; ctx->pbelle_sip_messageParser_generic_paramTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_allowPush = pbelle_sip_messageParser_header_allowPush; ctx->pbelle_sip_messageParser_header_allowStack = antlr3StackNew(0); ctx->pbelle_sip_messageParser_header_allowStack_limit = 0; ctx->pbelle_sip_messageParser_header_allowTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_authorizationPush = pbelle_sip_messageParser_header_authorizationPush; ctx->pbelle_sip_messageParser_header_authorizationStack = antlr3StackNew(0); ctx->pbelle_sip_messageParser_header_authorizationStack_limit = 0; ctx->pbelle_sip_messageParser_header_authorizationTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_call_idPush = pbelle_sip_messageParser_header_call_idPush; ctx->pbelle_sip_messageParser_header_call_idStack = antlr3StackNew(0); ctx->pbelle_sip_messageParser_header_call_idStack_limit = 0; ctx->pbelle_sip_messageParser_header_call_idTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_retry_afterPush = pbelle_sip_messageParser_header_retry_afterPush; ctx->pbelle_sip_messageParser_header_retry_afterStack = antlr3StackNew(0); ctx->pbelle_sip_messageParser_header_retry_afterStack_limit = 0; ctx->pbelle_sip_messageParser_header_retry_afterTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_contactPush = pbelle_sip_messageParser_header_contactPush; ctx->pbelle_sip_messageParser_header_contactStack = antlr3StackNew(0); ctx->pbelle_sip_messageParser_header_contactStack_limit = 0; ctx->pbelle_sip_messageParser_header_contactTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_contact_paramPush = pbelle_sip_messageParser_contact_paramPush; ctx->pbelle_sip_messageParser_contact_paramStack = antlr3StackNew(0); ctx->pbelle_sip_messageParser_contact_paramStack_limit = 0; ctx->pbelle_sip_messageParser_contact_paramTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_content_lengthPush = pbelle_sip_messageParser_header_content_lengthPush; ctx->pbelle_sip_messageParser_header_content_lengthStack = antlr3StackNew(0); ctx->pbelle_sip_messageParser_header_content_lengthStack_limit = 0; ctx->pbelle_sip_messageParser_header_content_lengthTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_content_typePush = pbelle_sip_messageParser_header_content_typePush; ctx->pbelle_sip_messageParser_header_content_typeStack = antlr3StackNew(0); ctx->pbelle_sip_messageParser_header_content_typeStack_limit = 0; ctx->pbelle_sip_messageParser_header_content_typeTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_cseqPush = pbelle_sip_messageParser_header_cseqPush; ctx->pbelle_sip_messageParser_header_cseqStack = antlr3StackNew(0); ctx->pbelle_sip_messageParser_header_cseqStack_limit = 0; ctx->pbelle_sip_messageParser_header_cseqTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_datePush = pbelle_sip_messageParser_header_datePush; ctx->pbelle_sip_messageParser_header_dateStack = antlr3StackNew(0); ctx->pbelle_sip_messageParser_header_dateStack_limit = 0; ctx->pbelle_sip_messageParser_header_dateTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_expiresPush = pbelle_sip_messageParser_header_expiresPush; ctx->pbelle_sip_messageParser_header_expiresStack = antlr3StackNew(0); ctx->pbelle_sip_messageParser_header_expiresStack_limit = 0; ctx->pbelle_sip_messageParser_header_expiresTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_fromPush = pbelle_sip_messageParser_header_fromPush; ctx->pbelle_sip_messageParser_header_fromStack = antlr3StackNew(0); ctx->pbelle_sip_messageParser_header_fromStack_limit = 0; ctx->pbelle_sip_messageParser_header_fromTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_max_forwardsPush = pbelle_sip_messageParser_header_max_forwardsPush; ctx->pbelle_sip_messageParser_header_max_forwardsStack = antlr3StackNew(0); ctx->pbelle_sip_messageParser_header_max_forwardsStack_limit = 0; ctx->pbelle_sip_messageParser_header_max_forwardsTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_proxy_authenticatePush = pbelle_sip_messageParser_header_proxy_authenticatePush; ctx->pbelle_sip_messageParser_header_proxy_authenticateStack = antlr3StackNew(0); ctx->pbelle_sip_messageParser_header_proxy_authenticateStack_limit = 0; ctx->pbelle_sip_messageParser_header_proxy_authenticateTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_qop_optsPush = pbelle_sip_messageParser_qop_optsPush; ctx->pbelle_sip_messageParser_qop_optsStack = antlr3StackNew(0); ctx->pbelle_sip_messageParser_qop_optsStack_limit = 0; ctx->pbelle_sip_messageParser_qop_optsTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_proxy_authorizationPush = pbelle_sip_messageParser_header_proxy_authorizationPush; ctx->pbelle_sip_messageParser_header_proxy_authorizationStack = antlr3StackNew(0); ctx->pbelle_sip_messageParser_header_proxy_authorizationStack_limit = 0; ctx->pbelle_sip_messageParser_header_proxy_authorizationTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_service_routePush = pbelle_sip_messageParser_header_service_routePush; ctx->pbelle_sip_messageParser_header_service_routeStack = antlr3StackNew(0); ctx->pbelle_sip_messageParser_header_service_routeStack_limit = 0; ctx->pbelle_sip_messageParser_header_service_routeTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_srv_routePush = pbelle_sip_messageParser_srv_routePush; ctx->pbelle_sip_messageParser_srv_routeStack = antlr3StackNew(0); ctx->pbelle_sip_messageParser_srv_routeStack_limit = 0; ctx->pbelle_sip_messageParser_srv_routeTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_record_routePush = pbelle_sip_messageParser_header_record_routePush; ctx->pbelle_sip_messageParser_header_record_routeStack = antlr3StackNew(0); ctx->pbelle_sip_messageParser_header_record_routeStack_limit = 0; ctx->pbelle_sip_messageParser_header_record_routeTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_rec_routePush = pbelle_sip_messageParser_rec_routePush; ctx->pbelle_sip_messageParser_rec_routeStack = antlr3StackNew(0); ctx->pbelle_sip_messageParser_rec_routeStack_limit = 0; ctx->pbelle_sip_messageParser_rec_routeTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_routePush = pbelle_sip_messageParser_header_routePush; ctx->pbelle_sip_messageParser_header_routeStack = antlr3StackNew(0); ctx->pbelle_sip_messageParser_header_routeStack_limit = 0; ctx->pbelle_sip_messageParser_header_routeTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_route_paramPush = pbelle_sip_messageParser_route_paramPush; ctx->pbelle_sip_messageParser_route_paramStack = antlr3StackNew(0); ctx->pbelle_sip_messageParser_route_paramStack_limit = 0; ctx->pbelle_sip_messageParser_route_paramTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_toPush = pbelle_sip_messageParser_header_toPush; ctx->pbelle_sip_messageParser_header_toStack = antlr3StackNew(0); ctx->pbelle_sip_messageParser_header_toStack_limit = 0; ctx->pbelle_sip_messageParser_header_toTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_diversionPush = pbelle_sip_messageParser_header_diversionPush; ctx->pbelle_sip_messageParser_header_diversionStack = antlr3StackNew(0); ctx->pbelle_sip_messageParser_header_diversionStack_limit = 0; ctx->pbelle_sip_messageParser_header_diversionTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_user_agentPush = pbelle_sip_messageParser_header_user_agentPush; ctx->pbelle_sip_messageParser_header_user_agentStack = antlr3StackNew(0); ctx->pbelle_sip_messageParser_header_user_agentStack_limit = 0; ctx->pbelle_sip_messageParser_header_user_agentTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_viaPush = pbelle_sip_messageParser_header_viaPush; ctx->pbelle_sip_messageParser_header_viaStack = antlr3StackNew(0); ctx->pbelle_sip_messageParser_header_viaStack_limit = 0; ctx->pbelle_sip_messageParser_header_viaTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_via_parmPush = pbelle_sip_messageParser_via_parmPush; ctx->pbelle_sip_messageParser_via_parmStack = antlr3StackNew(0); ctx->pbelle_sip_messageParser_via_parmStack_limit = 0; ctx->pbelle_sip_messageParser_via_parmTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_www_authenticatePush = pbelle_sip_messageParser_header_www_authenticatePush; ctx->pbelle_sip_messageParser_header_www_authenticateStack = antlr3StackNew(0); ctx->pbelle_sip_messageParser_header_www_authenticateStack_limit = 0; ctx->pbelle_sip_messageParser_header_www_authenticateTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_subscription_statePush = pbelle_sip_messageParser_header_subscription_statePush; ctx->pbelle_sip_messageParser_header_subscription_stateStack = antlr3StackNew(0); ctx->pbelle_sip_messageParser_header_subscription_stateStack_limit = 0; ctx->pbelle_sip_messageParser_header_subscription_stateTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_eventPush = pbelle_sip_messageParser_header_eventPush; ctx->pbelle_sip_messageParser_header_eventStack = antlr3StackNew(0); ctx->pbelle_sip_messageParser_header_eventStack_limit = 0; ctx->pbelle_sip_messageParser_header_eventTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_replacesPush = pbelle_sip_messageParser_header_replacesPush; ctx->pbelle_sip_messageParser_header_replacesStack = antlr3StackNew(0); ctx->pbelle_sip_messageParser_header_replacesStack_limit = 0; ctx->pbelle_sip_messageParser_header_replacesTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_privacyPush = pbelle_sip_messageParser_header_privacyPush; ctx->pbelle_sip_messageParser_header_privacyStack = antlr3StackNew(0); ctx->pbelle_sip_messageParser_header_privacyStack_limit = 0; ctx->pbelle_sip_messageParser_header_privacyTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_supportedPush = pbelle_sip_messageParser_header_supportedPush; ctx->pbelle_sip_messageParser_header_supportedStack = antlr3StackNew(0); ctx->pbelle_sip_messageParser_header_supportedStack_limit = 0; ctx->pbelle_sip_messageParser_header_supportedTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_session_expiresPush = pbelle_sip_messageParser_header_session_expiresPush; ctx->pbelle_sip_messageParser_header_session_expiresStack = antlr3StackNew(0); ctx->pbelle_sip_messageParser_header_session_expiresStack_limit = 0; ctx->pbelle_sip_messageParser_header_session_expiresTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_requirePush = pbelle_sip_messageParser_header_requirePush; ctx->pbelle_sip_messageParser_header_requireStack = antlr3StackNew(0); ctx->pbelle_sip_messageParser_header_requireStack_limit = 0; ctx->pbelle_sip_messageParser_header_requireTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_content_dispositionPush = pbelle_sip_messageParser_header_content_dispositionPush; ctx->pbelle_sip_messageParser_header_content_dispositionStack = antlr3StackNew(0); ctx->pbelle_sip_messageParser_header_content_dispositionStack_limit = 0; ctx->pbelle_sip_messageParser_header_content_dispositionTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_acceptPush = pbelle_sip_messageParser_header_acceptPush; ctx->pbelle_sip_messageParser_header_acceptStack = antlr3StackNew(0); ctx->pbelle_sip_messageParser_header_acceptStack_limit = 0; ctx->pbelle_sip_messageParser_header_acceptTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_accept_paramPush = pbelle_sip_messageParser_accept_paramPush; ctx->pbelle_sip_messageParser_accept_paramStack = antlr3StackNew(0); ctx->pbelle_sip_messageParser_accept_paramStack_limit = 0; ctx->pbelle_sip_messageParser_accept_paramTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_reasonPush = pbelle_sip_messageParser_header_reasonPush; ctx->pbelle_sip_messageParser_header_reasonStack = antlr3StackNew(0); ctx->pbelle_sip_messageParser_header_reasonStack_limit = 0; ctx->pbelle_sip_messageParser_header_reasonTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_reason_paramPush = pbelle_sip_messageParser_header_reason_paramPush; ctx->pbelle_sip_messageParser_header_reason_paramStack = antlr3StackNew(0); ctx->pbelle_sip_messageParser_header_reason_paramStack_limit = 0; ctx->pbelle_sip_messageParser_header_reason_paramTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_authentication_infoPush = pbelle_sip_messageParser_header_authentication_infoPush; ctx->pbelle_sip_messageParser_header_authentication_infoStack = antlr3StackNew(0); ctx->pbelle_sip_messageParser_header_authentication_infoStack_limit = 0; ctx->pbelle_sip_messageParser_header_authentication_infoTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_extension_basePush = pbelle_sip_messageParser_header_extension_basePush; ctx->pbelle_sip_messageParser_header_extension_baseStack = antlr3StackNew(0); ctx->pbelle_sip_messageParser_header_extension_baseStack_limit = 0; ctx->pbelle_sip_messageParser_header_extension_baseTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_paramless_uriPush = pbelle_sip_messageParser_paramless_uriPush; ctx->pbelle_sip_messageParser_paramless_uriStack = antlr3StackNew(0); ctx->pbelle_sip_messageParser_paramless_uriStack_limit = 0; ctx->pbelle_sip_messageParser_paramless_uriTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_uriPush = pbelle_sip_messageParser_uriPush; ctx->pbelle_sip_messageParser_uriStack = antlr3StackNew(0); ctx->pbelle_sip_messageParser_uriStack_limit = 0; ctx->pbelle_sip_messageParser_uriTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_fast_uriPush = pbelle_sip_messageParser_fast_uriPush; ctx->pbelle_sip_messageParser_fast_uriStack = antlr3StackNew(0); ctx->pbelle_sip_messageParser_fast_uriStack_limit = 0; ctx->pbelle_sip_messageParser_fast_uriTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_userinfoPush = pbelle_sip_messageParser_userinfoPush; ctx->pbelle_sip_messageParser_userinfoStack = antlr3StackNew(0); ctx->pbelle_sip_messageParser_userinfoStack_limit = 0; ctx->pbelle_sip_messageParser_userinfoTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_hostportPush = pbelle_sip_messageParser_hostportPush; ctx->pbelle_sip_messageParser_hostportStack = antlr3StackNew(0); ctx->pbelle_sip_messageParser_hostportStack_limit = 0; ctx->pbelle_sip_messageParser_hostportTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_fast_hostportPush = pbelle_sip_messageParser_fast_hostportPush; ctx->pbelle_sip_messageParser_fast_hostportStack = antlr3StackNew(0); ctx->pbelle_sip_messageParser_fast_hostportStack_limit = 0; ctx->pbelle_sip_messageParser_fast_hostportTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_uri_parametersPush = pbelle_sip_messageParser_uri_parametersPush; ctx->pbelle_sip_messageParser_uri_parametersStack = antlr3StackNew(0); ctx->pbelle_sip_messageParser_uri_parametersStack_limit = 0; ctx->pbelle_sip_messageParser_uri_parametersTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_headersPush = pbelle_sip_messageParser_headersPush; ctx->pbelle_sip_messageParser_headersStack = antlr3StackNew(0); ctx->pbelle_sip_messageParser_headersStack_limit = 0; ctx->pbelle_sip_messageParser_headersTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_uri_headerPush = pbelle_sip_messageParser_uri_headerPush; ctx->pbelle_sip_messageParser_uri_headerStack = antlr3StackNew(0); ctx->pbelle_sip_messageParser_uri_headerStack_limit = 0; ctx->pbelle_sip_messageParser_uri_headerTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_fast_hostPush = pbelle_sip_messageParser_fast_hostPush; ctx->pbelle_sip_messageParser_fast_hostStack = antlr3StackNew(0); ctx->pbelle_sip_messageParser_fast_hostStack_limit = 0; ctx->pbelle_sip_messageParser_fast_hostTop = NULL; /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_hostPush = pbelle_sip_messageParser_hostPush; ctx->pbelle_sip_messageParser_hostStack = antlr3StackNew(0); ctx->pbelle_sip_messageParser_hostStack_limit = 0; ctx->pbelle_sip_messageParser_hostTop = NULL; /* Install the token table */ PSRSTATE->tokenNames = belle_sip_messageParserTokenNames; /* Return the newly built parser to the caller */ return ctx; } static void belle_sip_messageParserReset (pbelle_sip_messageParser ctx) { RECOGNIZER->reset(RECOGNIZER); } /** Free the parser resources */ static void belle_sip_messageParserFree(pbelle_sip_messageParser ctx) { /* Free any scope memory */ /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_messageStack->free(ctx->pbelle_sip_messageParser_messageStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_message_rawStack->free(ctx->pbelle_sip_messageParser_message_rawStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_common_requestStack->free(ctx->pbelle_sip_messageParser_common_requestStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_request_lineStack->free(ctx->pbelle_sip_messageParser_request_lineStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_status_lineStack->free(ctx->pbelle_sip_messageParser_status_lineStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_http_request_lineStack->free(ctx->pbelle_sip_messageParser_http_request_lineStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_generic_uri_for_from_to_contact_addr_specStack->free(ctx->pbelle_sip_messageParser_generic_uri_for_from_to_contact_addr_specStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_generic_uriStack->free(ctx->pbelle_sip_messageParser_generic_uriStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_authority_userinfoStack->free(ctx->pbelle_sip_messageParser_authority_userinfoStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_authority_hostportStack->free(ctx->pbelle_sip_messageParser_authority_hostportStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_generic_paramStack->free(ctx->pbelle_sip_messageParser_generic_paramStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_allowStack->free(ctx->pbelle_sip_messageParser_header_allowStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_authorizationStack->free(ctx->pbelle_sip_messageParser_header_authorizationStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_call_idStack->free(ctx->pbelle_sip_messageParser_header_call_idStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_retry_afterStack->free(ctx->pbelle_sip_messageParser_header_retry_afterStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_contactStack->free(ctx->pbelle_sip_messageParser_header_contactStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_contact_paramStack->free(ctx->pbelle_sip_messageParser_contact_paramStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_content_lengthStack->free(ctx->pbelle_sip_messageParser_header_content_lengthStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_content_typeStack->free(ctx->pbelle_sip_messageParser_header_content_typeStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_cseqStack->free(ctx->pbelle_sip_messageParser_header_cseqStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_dateStack->free(ctx->pbelle_sip_messageParser_header_dateStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_expiresStack->free(ctx->pbelle_sip_messageParser_header_expiresStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_fromStack->free(ctx->pbelle_sip_messageParser_header_fromStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_max_forwardsStack->free(ctx->pbelle_sip_messageParser_header_max_forwardsStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_proxy_authenticateStack->free(ctx->pbelle_sip_messageParser_header_proxy_authenticateStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_qop_optsStack->free(ctx->pbelle_sip_messageParser_qop_optsStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_proxy_authorizationStack->free(ctx->pbelle_sip_messageParser_header_proxy_authorizationStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_service_routeStack->free(ctx->pbelle_sip_messageParser_header_service_routeStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_srv_routeStack->free(ctx->pbelle_sip_messageParser_srv_routeStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_record_routeStack->free(ctx->pbelle_sip_messageParser_header_record_routeStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_rec_routeStack->free(ctx->pbelle_sip_messageParser_rec_routeStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_routeStack->free(ctx->pbelle_sip_messageParser_header_routeStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_route_paramStack->free(ctx->pbelle_sip_messageParser_route_paramStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_toStack->free(ctx->pbelle_sip_messageParser_header_toStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_diversionStack->free(ctx->pbelle_sip_messageParser_header_diversionStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_user_agentStack->free(ctx->pbelle_sip_messageParser_header_user_agentStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_viaStack->free(ctx->pbelle_sip_messageParser_header_viaStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_via_parmStack->free(ctx->pbelle_sip_messageParser_via_parmStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_www_authenticateStack->free(ctx->pbelle_sip_messageParser_header_www_authenticateStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_subscription_stateStack->free(ctx->pbelle_sip_messageParser_header_subscription_stateStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_eventStack->free(ctx->pbelle_sip_messageParser_header_eventStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_replacesStack->free(ctx->pbelle_sip_messageParser_header_replacesStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_privacyStack->free(ctx->pbelle_sip_messageParser_header_privacyStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_supportedStack->free(ctx->pbelle_sip_messageParser_header_supportedStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_session_expiresStack->free(ctx->pbelle_sip_messageParser_header_session_expiresStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_requireStack->free(ctx->pbelle_sip_messageParser_header_requireStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_content_dispositionStack->free(ctx->pbelle_sip_messageParser_header_content_dispositionStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_acceptStack->free(ctx->pbelle_sip_messageParser_header_acceptStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_accept_paramStack->free(ctx->pbelle_sip_messageParser_accept_paramStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_reasonStack->free(ctx->pbelle_sip_messageParser_header_reasonStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_reason_paramStack->free(ctx->pbelle_sip_messageParser_header_reason_paramStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_authentication_infoStack->free(ctx->pbelle_sip_messageParser_header_authentication_infoStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_header_extension_baseStack->free(ctx->pbelle_sip_messageParser_header_extension_baseStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_paramless_uriStack->free(ctx->pbelle_sip_messageParser_paramless_uriStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_uriStack->free(ctx->pbelle_sip_messageParser_uriStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_fast_uriStack->free(ctx->pbelle_sip_messageParser_fast_uriStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_userinfoStack->free(ctx->pbelle_sip_messageParser_userinfoStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_hostportStack->free(ctx->pbelle_sip_messageParser_hostportStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_fast_hostportStack->free(ctx->pbelle_sip_messageParser_fast_hostportStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_uri_parametersStack->free(ctx->pbelle_sip_messageParser_uri_parametersStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_headersStack->free(ctx->pbelle_sip_messageParser_headersStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_uri_headerStack->free(ctx->pbelle_sip_messageParser_uri_headerStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_fast_hostStack->free(ctx->pbelle_sip_messageParser_fast_hostStack); /* ruleAttributeScope(scope) */ ctx->pbelle_sip_messageParser_hostStack->free(ctx->pbelle_sip_messageParser_hostStack); // Free this parser // ctx->pParser->free(ctx->pParser); ANTLR3_FREE(ctx); /* Everything is released, so we can return */ return; } /** Return token names used by this parser * * The returned pointer is used as an index into the token names table (using the token * number as the index). * * \return Pointer to first char * in the table. */ static pANTLR3_UINT8 *getTokenNames() { return belle_sip_messageParserTokenNames; } /* Declare the bitsets */ /** Bitset defining follow set for error recovery in rule state: FOLLOW_message_raw_in_message73 */ static ANTLR3_BITWORD FOLLOW_message_raw_in_message73_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_message_raw_in_message73 = { FOLLOW_message_raw_in_message73_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_common_request_in_message_raw102 */ static ANTLR3_BITWORD FOLLOW_common_request_in_message_raw102_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_common_request_in_message_raw102 = { FOLLOW_common_request_in_message_raw102_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_common_response_in_message_raw112 */ static ANTLR3_BITWORD FOLLOW_common_response_in_message_raw112_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_common_response_in_message_raw112 = { FOLLOW_common_response_in_message_raw112_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_common_request_in_request128 */ static ANTLR3_BITWORD FOLLOW_common_request_in_request128_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_common_request_in_request128 = { FOLLOW_common_request_in_request128_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_request_line_in_common_request174 */ static ANTLR3_BITWORD FOLLOW_request_line_in_common_request174_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_request_line_in_common_request174 = { FOLLOW_request_line_in_common_request174_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_http_request_line_in_common_request202 */ static ANTLR3_BITWORD FOLLOW_http_request_line_in_common_request202_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_http_request_line_in_common_request202 = { FOLLOW_http_request_line_in_common_request202_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_message_header_in_common_request208 */ static ANTLR3_BITWORD FOLLOW_message_header_in_common_request208_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188ABC40) }; static ANTLR3_BITSET_LIST FOLLOW_message_header_in_common_request208 = { FOLLOW_message_header_in_common_request208_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_CRLF_in_common_request214 */ static ANTLR3_BITWORD FOLLOW_CRLF_in_common_request214_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_CRLF_in_common_request214 = { FOLLOW_CRLF_in_common_request214_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_method_in_request_line244 */ static ANTLR3_BITWORD FOLLOW_method_in_request_line244_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000000) }; static ANTLR3_BITSET_LIST FOLLOW_method_in_request_line244 = { FOLLOW_method_in_request_line244_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SP_in_request_line253 */ static ANTLR3_BITWORD FOLLOW_SP_in_request_line253_bits[] = { ANTLR3_UINT64_LIT(0x000001E9188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_SP_in_request_line253 = { FOLLOW_SP_in_request_line253_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_uri_in_request_line262 */ static ANTLR3_BITWORD FOLLOW_uri_in_request_line262_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000000) }; static ANTLR3_BITSET_LIST FOLLOW_uri_in_request_line262 = { FOLLOW_uri_in_request_line262_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_generic_uri_in_request_line280 */ static ANTLR3_BITWORD FOLLOW_generic_uri_in_request_line280_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000000) }; static ANTLR3_BITSET_LIST FOLLOW_generic_uri_in_request_line280 = { FOLLOW_generic_uri_in_request_line280_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SP_in_request_line297 */ static ANTLR3_BITWORD FOLLOW_SP_in_request_line297_bits[] = { ANTLR3_UINT64_LIT(0x0000000000080400) }; static ANTLR3_BITSET_LIST FOLLOW_SP_in_request_line297 = { FOLLOW_SP_in_request_line297_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_sip_version_in_request_line304 */ static ANTLR3_BITWORD FOLLOW_sip_version_in_request_line304_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000800) }; static ANTLR3_BITSET_LIST FOLLOW_sip_version_in_request_line304 = { FOLLOW_sip_version_in_request_line304_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_CRLF_in_request_line311 */ static ANTLR3_BITWORD FOLLOW_CRLF_in_request_line311_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_CRLF_in_request_line311 = { FOLLOW_CRLF_in_request_line311_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_generic_version_in_sip_version329 */ static ANTLR3_BITWORD FOLLOW_generic_version_in_sip_version329_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_generic_version_in_sip_version329 = { FOLLOW_generic_version_in_sip_version329_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_alpha_in_generic_version338 */ static ANTLR3_BITWORD FOLLOW_alpha_in_generic_version338_bits[] = { ANTLR3_UINT64_LIT(0x0000000800080400) }; static ANTLR3_BITSET_LIST FOLLOW_alpha_in_generic_version338 = { FOLLOW_alpha_in_generic_version338_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SLASH_in_generic_version341 */ static ANTLR3_BITWORD FOLLOW_SLASH_in_generic_version341_bits[] = { ANTLR3_UINT64_LIT(0x0000000000002000) }; static ANTLR3_BITSET_LIST FOLLOW_SLASH_in_generic_version341 = { FOLLOW_SLASH_in_generic_version341_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DIGIT_in_generic_version343 */ static ANTLR3_BITWORD FOLLOW_DIGIT_in_generic_version343_bits[] = { ANTLR3_UINT64_LIT(0x0000000000008000) }; static ANTLR3_BITSET_LIST FOLLOW_DIGIT_in_generic_version343 = { FOLLOW_DIGIT_in_generic_version343_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DOT_in_generic_version345 */ static ANTLR3_BITWORD FOLLOW_DOT_in_generic_version345_bits[] = { ANTLR3_UINT64_LIT(0x0000000000002000) }; static ANTLR3_BITSET_LIST FOLLOW_DOT_in_generic_version345 = { FOLLOW_DOT_in_generic_version345_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DIGIT_in_generic_version347 */ static ANTLR3_BITWORD FOLLOW_DIGIT_in_generic_version347_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_DIGIT_in_generic_version347 = { FOLLOW_DIGIT_in_generic_version347_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_header_extension_base_in_message_header423 */ static ANTLR3_BITWORD FOLLOW_header_extension_base_in_message_header423_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000800) }; static ANTLR3_BITSET_LIST FOLLOW_header_extension_base_in_message_header423 = { FOLLOW_header_extension_base_in_message_header423_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_CRLF_in_message_header446 */ static ANTLR3_BITWORD FOLLOW_CRLF_in_message_header446_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_CRLF_in_message_header446 = { FOLLOW_CRLF_in_message_header446_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_extension_method_in_method485 */ static ANTLR3_BITWORD FOLLOW_extension_method_in_method485_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_extension_method_in_method485 = { FOLLOW_extension_method_in_method485_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_extension_method497 */ static ANTLR3_BITWORD FOLLOW_token_in_extension_method497_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_extension_method497 = { FOLLOW_token_in_extension_method497_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_status_line_in_common_response533 */ static ANTLR3_BITWORD FOLLOW_status_line_in_common_response533_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB442) }; static ANTLR3_BITSET_LIST FOLLOW_status_line_in_common_response533 = { FOLLOW_status_line_in_common_response533_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_http_status_line_in_common_response564 */ static ANTLR3_BITWORD FOLLOW_http_status_line_in_common_response564_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB442) }; static ANTLR3_BITSET_LIST FOLLOW_http_status_line_in_common_response564 = { FOLLOW_http_status_line_in_common_response564_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_message_header_in_common_response571 */ static ANTLR3_BITWORD FOLLOW_message_header_in_common_response571_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188ABC40) }; static ANTLR3_BITSET_LIST FOLLOW_message_header_in_common_response571 = { FOLLOW_message_header_in_common_response571_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_CRLF_in_common_response577 */ static ANTLR3_BITWORD FOLLOW_CRLF_in_common_response577_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_CRLF_in_common_response577 = { FOLLOW_CRLF_in_common_response577_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_common_response_in_response601 */ static ANTLR3_BITWORD FOLLOW_common_response_in_response601_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_common_response_in_response601 = { FOLLOW_common_response_in_response601_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_sip_version_in_status_line630 */ static ANTLR3_BITWORD FOLLOW_sip_version_in_status_line630_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000000) }; static ANTLR3_BITSET_LIST FOLLOW_sip_version_in_status_line630 = { FOLLOW_sip_version_in_status_line630_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SP_in_status_line636 */ static ANTLR3_BITWORD FOLLOW_SP_in_status_line636_bits[] = { ANTLR3_UINT64_LIT(0x0000000000002000) }; static ANTLR3_BITSET_LIST FOLLOW_SP_in_status_line636 = { FOLLOW_SP_in_status_line636_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_status_code_in_status_line638 */ static ANTLR3_BITWORD FOLLOW_status_code_in_status_line638_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000000) }; static ANTLR3_BITSET_LIST FOLLOW_status_code_in_status_line638 = { FOLLOW_status_code_in_status_line638_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SP_in_status_line646 */ static ANTLR3_BITWORD FOLLOW_SP_in_status_line646_bits[] = { ANTLR3_UINT64_LIT(0x000001FFFFFFFFF0) }; static ANTLR3_BITSET_LIST FOLLOW_SP_in_status_line646 = { FOLLOW_SP_in_status_line646_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_reason_phrase_in_status_line648 */ static ANTLR3_BITWORD FOLLOW_reason_phrase_in_status_line648_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000800) }; static ANTLR3_BITSET_LIST FOLLOW_reason_phrase_in_status_line648 = { FOLLOW_reason_phrase_in_status_line648_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_CRLF_in_status_line656 */ static ANTLR3_BITWORD FOLLOW_CRLF_in_status_line656_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_CRLF_in_status_line656 = { FOLLOW_CRLF_in_status_line656_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_extension_code_in_status_code673 */ static ANTLR3_BITWORD FOLLOW_extension_code_in_status_code673_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_extension_code_in_status_code673 = { FOLLOW_extension_code_in_status_code673_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DIGIT_in_extension_code684 */ static ANTLR3_BITWORD FOLLOW_DIGIT_in_extension_code684_bits[] = { ANTLR3_UINT64_LIT(0x0000000000002000) }; static ANTLR3_BITSET_LIST FOLLOW_DIGIT_in_extension_code684 = { FOLLOW_DIGIT_in_extension_code684_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DIGIT_in_extension_code686 */ static ANTLR3_BITWORD FOLLOW_DIGIT_in_extension_code686_bits[] = { ANTLR3_UINT64_LIT(0x0000000000002000) }; static ANTLR3_BITSET_LIST FOLLOW_DIGIT_in_extension_code686 = { FOLLOW_DIGIT_in_extension_code686_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DIGIT_in_extension_code688 */ static ANTLR3_BITWORD FOLLOW_DIGIT_in_extension_code688_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_DIGIT_in_extension_code688 = { FOLLOW_DIGIT_in_extension_code688_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_common_request_in_http_request719 */ static ANTLR3_BITWORD FOLLOW_common_request_in_http_request719_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_common_request_in_http_request719 = { FOLLOW_common_request_in_http_request719_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_method_in_http_request_line744 */ static ANTLR3_BITWORD FOLLOW_method_in_http_request_line744_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000000) }; static ANTLR3_BITSET_LIST FOLLOW_method_in_http_request_line744 = { FOLLOW_method_in_http_request_line744_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SP_in_http_request_line752 */ static ANTLR3_BITWORD FOLLOW_SP_in_http_request_line752_bits[] = { ANTLR3_UINT64_LIT(0x0000000800080400) }; static ANTLR3_BITSET_LIST FOLLOW_SP_in_http_request_line752 = { FOLLOW_SP_in_http_request_line752_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_generic_uri_in_http_request_line762 */ static ANTLR3_BITWORD FOLLOW_generic_uri_in_http_request_line762_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000000) }; static ANTLR3_BITSET_LIST FOLLOW_generic_uri_in_http_request_line762 = { FOLLOW_generic_uri_in_http_request_line762_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SP_in_http_request_line770 */ static ANTLR3_BITWORD FOLLOW_SP_in_http_request_line770_bits[] = { ANTLR3_UINT64_LIT(0x0000000000080400) }; static ANTLR3_BITSET_LIST FOLLOW_SP_in_http_request_line770 = { FOLLOW_SP_in_http_request_line770_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_http_version_in_http_request_line776 */ static ANTLR3_BITWORD FOLLOW_http_version_in_http_request_line776_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000800) }; static ANTLR3_BITSET_LIST FOLLOW_http_version_in_http_request_line776 = { FOLLOW_http_version_in_http_request_line776_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_CRLF_in_http_request_line778 */ static ANTLR3_BITWORD FOLLOW_CRLF_in_http_request_line778_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_CRLF_in_http_request_line778 = { FOLLOW_CRLF_in_http_request_line778_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_generic_version_in_http_version794 */ static ANTLR3_BITWORD FOLLOW_generic_version_in_http_version794_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_generic_version_in_http_version794 = { FOLLOW_generic_version_in_http_version794_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_common_response_in_http_response811 */ static ANTLR3_BITWORD FOLLOW_common_response_in_http_response811_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_common_response_in_http_response811 = { FOLLOW_common_response_in_http_response811_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_http_version_in_http_status_line836 */ static ANTLR3_BITWORD FOLLOW_http_version_in_http_status_line836_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000000) }; static ANTLR3_BITSET_LIST FOLLOW_http_version_in_http_status_line836 = { FOLLOW_http_version_in_http_status_line836_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SP_in_http_status_line843 */ static ANTLR3_BITWORD FOLLOW_SP_in_http_status_line843_bits[] = { ANTLR3_UINT64_LIT(0x0000000000002000) }; static ANTLR3_BITSET_LIST FOLLOW_SP_in_http_status_line843 = { FOLLOW_SP_in_http_status_line843_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_status_code_in_http_status_line845 */ static ANTLR3_BITWORD FOLLOW_status_code_in_http_status_line845_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000000) }; static ANTLR3_BITSET_LIST FOLLOW_status_code_in_http_status_line845 = { FOLLOW_status_code_in_http_status_line845_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SP_in_http_status_line854 */ static ANTLR3_BITWORD FOLLOW_SP_in_http_status_line854_bits[] = { ANTLR3_UINT64_LIT(0x000001FFFFFFFFF0) }; static ANTLR3_BITSET_LIST FOLLOW_SP_in_http_status_line854 = { FOLLOW_SP_in_http_status_line854_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_reason_phrase_in_http_status_line856 */ static ANTLR3_BITWORD FOLLOW_reason_phrase_in_http_status_line856_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000800) }; static ANTLR3_BITSET_LIST FOLLOW_reason_phrase_in_http_status_line856 = { FOLLOW_reason_phrase_in_http_status_line856_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_CRLF_in_http_status_line865 */ static ANTLR3_BITWORD FOLLOW_CRLF_in_http_status_line865_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_CRLF_in_http_status_line865 = { FOLLOW_CRLF_in_http_status_line865_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_uric_no_slash_for_from_to_contact_addr_spec_in_opaque_part_for_from_to_contact_addr_spec889 */ static ANTLR3_BITWORD FOLLOW_uric_no_slash_for_from_to_contact_addr_spec_in_opaque_part_for_from_to_contact_addr_spec889_bits[] = { ANTLR3_UINT64_LIT(0x000001E9188EF532) }; static ANTLR3_BITSET_LIST FOLLOW_uric_no_slash_for_from_to_contact_addr_spec_in_opaque_part_for_from_to_contact_addr_spec889 = { FOLLOW_uric_no_slash_for_from_to_contact_addr_spec_in_opaque_part_for_from_to_contact_addr_spec889_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_uric_for_from_to_contact_addr_spec_in_opaque_part_for_from_to_contact_addr_spec891 */ static ANTLR3_BITWORD FOLLOW_uric_for_from_to_contact_addr_spec_in_opaque_part_for_from_to_contact_addr_spec891_bits[] = { ANTLR3_UINT64_LIT(0x000001E9188EF532) }; static ANTLR3_BITSET_LIST FOLLOW_uric_for_from_to_contact_addr_spec_in_opaque_part_for_from_to_contact_addr_spec891 = { FOLLOW_uric_for_from_to_contact_addr_spec_in_opaque_part_for_from_to_contact_addr_spec891_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_uric_no_slash_in_opaque_part901 */ static ANTLR3_BITWORD FOLLOW_uric_no_slash_in_opaque_part901_bits[] = { ANTLR3_UINT64_LIT(0x000001ED388EF732) }; static ANTLR3_BITSET_LIST FOLLOW_uric_no_slash_in_opaque_part901 = { FOLLOW_uric_no_slash_in_opaque_part901_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_uric_in_opaque_part903 */ static ANTLR3_BITWORD FOLLOW_uric_in_opaque_part903_bits[] = { ANTLR3_UINT64_LIT(0x000001ED388EF732) }; static ANTLR3_BITSET_LIST FOLLOW_uric_in_opaque_part903 = { FOLLOW_uric_in_opaque_part903_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_unreserved_in_uric_no_slash_for_from_to_contact_addr_spec913 */ static ANTLR3_BITWORD FOLLOW_unreserved_in_uric_no_slash_for_from_to_contact_addr_spec913_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_unreserved_in_uric_no_slash_for_from_to_contact_addr_spec913 = { FOLLOW_unreserved_in_uric_no_slash_for_from_to_contact_addr_spec913_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_escaped_in_uric_no_slash_for_from_to_contact_addr_spec917 */ static ANTLR3_BITWORD FOLLOW_escaped_in_uric_no_slash_for_from_to_contact_addr_spec917_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_escaped_in_uric_no_slash_for_from_to_contact_addr_spec917 = { FOLLOW_escaped_in_uric_no_slash_for_from_to_contact_addr_spec917_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_uric_no_slash_for_from_to_contact_addr_spec922 */ static ANTLR3_BITWORD FOLLOW_COLON_in_uric_no_slash_for_from_to_contact_addr_spec922_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_COLON_in_uric_no_slash_for_from_to_contact_addr_spec922 = { FOLLOW_COLON_in_uric_no_slash_for_from_to_contact_addr_spec922_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_AT_in_uric_no_slash_for_from_to_contact_addr_spec926 */ static ANTLR3_BITWORD FOLLOW_AT_in_uric_no_slash_for_from_to_contact_addr_spec926_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_AT_in_uric_no_slash_for_from_to_contact_addr_spec926 = { FOLLOW_AT_in_uric_no_slash_for_from_to_contact_addr_spec926_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_AND_in_uric_no_slash_for_from_to_contact_addr_spec929 */ static ANTLR3_BITWORD FOLLOW_AND_in_uric_no_slash_for_from_to_contact_addr_spec929_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_AND_in_uric_no_slash_for_from_to_contact_addr_spec929 = { FOLLOW_AND_in_uric_no_slash_for_from_to_contact_addr_spec929_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_EQUAL_in_uric_no_slash_for_from_to_contact_addr_spec933 */ static ANTLR3_BITWORD FOLLOW_EQUAL_in_uric_no_slash_for_from_to_contact_addr_spec933_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_EQUAL_in_uric_no_slash_for_from_to_contact_addr_spec933 = { FOLLOW_EQUAL_in_uric_no_slash_for_from_to_contact_addr_spec933_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_PLUS_in_uric_no_slash_for_from_to_contact_addr_spec937 */ static ANTLR3_BITWORD FOLLOW_PLUS_in_uric_no_slash_for_from_to_contact_addr_spec937_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_PLUS_in_uric_no_slash_for_from_to_contact_addr_spec937 = { FOLLOW_PLUS_in_uric_no_slash_for_from_to_contact_addr_spec937_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DOLLARD_in_uric_no_slash_for_from_to_contact_addr_spec941 */ static ANTLR3_BITWORD FOLLOW_DOLLARD_in_uric_no_slash_for_from_to_contact_addr_spec941_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_DOLLARD_in_uric_no_slash_for_from_to_contact_addr_spec941 = { FOLLOW_DOLLARD_in_uric_no_slash_for_from_to_contact_addr_spec941_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_uric_no_slash948 */ static ANTLR3_BITWORD FOLLOW_COMMA_in_uric_no_slash948_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_COMMA_in_uric_no_slash948 = { FOLLOW_COMMA_in_uric_no_slash948_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SEMI_in_uric_no_slash952 */ static ANTLR3_BITWORD FOLLOW_SEMI_in_uric_no_slash952_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_SEMI_in_uric_no_slash952 = { FOLLOW_SEMI_in_uric_no_slash952_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_QMARK_in_uric_no_slash956 */ static ANTLR3_BITWORD FOLLOW_QMARK_in_uric_no_slash956_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_QMARK_in_uric_no_slash956 = { FOLLOW_QMARK_in_uric_no_slash956_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_uric_no_slash_for_from_to_contact_addr_spec_in_uric_no_slash961 */ static ANTLR3_BITWORD FOLLOW_uric_no_slash_for_from_to_contact_addr_spec_in_uric_no_slash961_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_uric_no_slash_for_from_to_contact_addr_spec_in_uric_no_slash961 = { FOLLOW_uric_no_slash_for_from_to_contact_addr_spec_in_uric_no_slash961_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_alpha_in_scheme970 */ static ANTLR3_BITWORD FOLLOW_alpha_in_scheme970_bits[] = { ANTLR3_UINT64_LIT(0x000000001008B402) }; static ANTLR3_BITSET_LIST FOLLOW_alpha_in_scheme970 = { FOLLOW_alpha_in_scheme970_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_alphanum_in_scheme974 */ static ANTLR3_BITWORD FOLLOW_alphanum_in_scheme974_bits[] = { ANTLR3_UINT64_LIT(0x000000001008B402) }; static ANTLR3_BITSET_LIST FOLLOW_alphanum_in_scheme974 = { FOLLOW_alphanum_in_scheme974_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_PLUS_in_scheme978 */ static ANTLR3_BITWORD FOLLOW_PLUS_in_scheme978_bits[] = { ANTLR3_UINT64_LIT(0x000000001008B402) }; static ANTLR3_BITSET_LIST FOLLOW_PLUS_in_scheme978 = { FOLLOW_PLUS_in_scheme978_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DASH_in_scheme982 */ static ANTLR3_BITWORD FOLLOW_DASH_in_scheme982_bits[] = { ANTLR3_UINT64_LIT(0x000000001008B402) }; static ANTLR3_BITSET_LIST FOLLOW_DASH_in_scheme982 = { FOLLOW_DASH_in_scheme982_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DOT_in_scheme986 */ static ANTLR3_BITWORD FOLLOW_DOT_in_scheme986_bits[] = { ANTLR3_UINT64_LIT(0x000000001008B402) }; static ANTLR3_BITSET_LIST FOLLOW_DOT_in_scheme986 = { FOLLOW_DOT_in_scheme986_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_scheme_in_generic_uri_for_from_to_contact_addr_spec1016 */ static ANTLR3_BITWORD FOLLOW_scheme_in_generic_uri_for_from_to_contact_addr_spec1016_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000100) }; static ANTLR3_BITSET_LIST FOLLOW_scheme_in_generic_uri_for_from_to_contact_addr_spec1016 = { FOLLOW_scheme_in_generic_uri_for_from_to_contact_addr_spec1016_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_generic_uri_for_from_to_contact_addr_spec1023 */ static ANTLR3_BITWORD FOLLOW_COLON_in_generic_uri_for_from_to_contact_addr_spec1023_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188EF530) }; static ANTLR3_BITSET_LIST FOLLOW_COLON_in_generic_uri_for_from_to_contact_addr_spec1023 = { FOLLOW_COLON_in_generic_uri_for_from_to_contact_addr_spec1023_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_opaque_part_for_from_to_contact_addr_spec_in_generic_uri_for_from_to_contact_addr_spec1026 */ static ANTLR3_BITWORD FOLLOW_opaque_part_for_from_to_contact_addr_spec_in_generic_uri_for_from_to_contact_addr_spec1026_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_opaque_part_for_from_to_contact_addr_spec_in_generic_uri_for_from_to_contact_addr_spec1026 = { FOLLOW_opaque_part_for_from_to_contact_addr_spec_in_generic_uri_for_from_to_contact_addr_spec1026_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_hier_part_in_generic_uri1064 */ static ANTLR3_BITWORD FOLLOW_hier_part_in_generic_uri1064_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_hier_part_in_generic_uri1064 = { FOLLOW_hier_part_in_generic_uri1064_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_scheme_in_generic_uri1076 */ static ANTLR3_BITWORD FOLLOW_scheme_in_generic_uri1076_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000100) }; static ANTLR3_BITSET_LIST FOLLOW_scheme_in_generic_uri1076 = { FOLLOW_scheme_in_generic_uri1076_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_generic_uri1087 */ static ANTLR3_BITWORD FOLLOW_COLON_in_generic_uri1087_bits[] = { ANTLR3_UINT64_LIT(0x000001ED388EF730) }; static ANTLR3_BITSET_LIST FOLLOW_COLON_in_generic_uri1087 = { FOLLOW_COLON_in_generic_uri1087_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_opaque_part_in_generic_uri1091 */ static ANTLR3_BITWORD FOLLOW_opaque_part_in_generic_uri1091_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_opaque_part_in_generic_uri1091 = { FOLLOW_opaque_part_in_generic_uri1091_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_hier_part_in_generic_uri1105 */ static ANTLR3_BITWORD FOLLOW_hier_part_in_generic_uri1105_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_hier_part_in_generic_uri1105 = { FOLLOW_hier_part_in_generic_uri1105_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SLASH_in_hier_part1146 */ static ANTLR3_BITWORD FOLLOW_SLASH_in_hier_part1146_bits[] = { ANTLR3_UINT64_LIT(0x0000000800000000) }; static ANTLR3_BITSET_LIST FOLLOW_SLASH_in_hier_part1146 = { FOLLOW_SLASH_in_hier_part1146_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SLASH_in_hier_part1148 */ static ANTLR3_BITWORD FOLLOW_SLASH_in_hier_part1148_bits[] = { ANTLR3_UINT64_LIT(0x0000000800000000) }; static ANTLR3_BITSET_LIST FOLLOW_SLASH_in_hier_part1148 = { FOLLOW_SLASH_in_hier_part1148_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_path_segments_in_hier_part1150 */ static ANTLR3_BITWORD FOLLOW_path_segments_in_hier_part1150_bits[] = { ANTLR3_UINT64_LIT(0x0000000020000002) }; static ANTLR3_BITSET_LIST FOLLOW_path_segments_in_hier_part1150 = { FOLLOW_path_segments_in_hier_part1150_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SLASH_in_hier_part1177 */ static ANTLR3_BITWORD FOLLOW_SLASH_in_hier_part1177_bits[] = { ANTLR3_UINT64_LIT(0x0000000800000000) }; static ANTLR3_BITSET_LIST FOLLOW_SLASH_in_hier_part1177 = { FOLLOW_SLASH_in_hier_part1177_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SLASH_in_hier_part1179 */ static ANTLR3_BITWORD FOLLOW_SLASH_in_hier_part1179_bits[] = { ANTLR3_UINT64_LIT(0x000001ED398EF610) }; static ANTLR3_BITSET_LIST FOLLOW_SLASH_in_hier_part1179 = { FOLLOW_SLASH_in_hier_part1179_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_authority_in_hier_part1181 */ static ANTLR3_BITWORD FOLLOW_authority_in_hier_part1181_bits[] = { ANTLR3_UINT64_LIT(0x0000000820000002) }; static ANTLR3_BITSET_LIST FOLLOW_authority_in_hier_part1181 = { FOLLOW_authority_in_hier_part1181_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_path_segments_in_hier_part1185 */ static ANTLR3_BITWORD FOLLOW_path_segments_in_hier_part1185_bits[] = { ANTLR3_UINT64_LIT(0x0000000020000002) }; static ANTLR3_BITSET_LIST FOLLOW_path_segments_in_hier_part1185 = { FOLLOW_path_segments_in_hier_part1185_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_path_segments_in_hier_part1199 */ static ANTLR3_BITWORD FOLLOW_path_segments_in_hier_part1199_bits[] = { ANTLR3_UINT64_LIT(0x0000000020000002) }; static ANTLR3_BITSET_LIST FOLLOW_path_segments_in_hier_part1199 = { FOLLOW_path_segments_in_hier_part1199_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_QMARK_in_hier_part1208 */ static ANTLR3_BITWORD FOLLOW_QMARK_in_hier_part1208_bits[] = { ANTLR3_UINT64_LIT(0x000001ED388EF730) }; static ANTLR3_BITSET_LIST FOLLOW_QMARK_in_hier_part1208 = { FOLLOW_QMARK_in_hier_part1208_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_query_in_hier_part1210 */ static ANTLR3_BITWORD FOLLOW_query_in_hier_part1210_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_query_in_hier_part1210 = { FOLLOW_query_in_hier_part1210_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SLASH_in_path_segments1238 */ static ANTLR3_BITWORD FOLLOW_SLASH_in_path_segments1238_bits[] = { ANTLR3_UINT64_LIT(0x000001ED188EF730) }; static ANTLR3_BITSET_LIST FOLLOW_SLASH_in_path_segments1238 = { FOLLOW_SLASH_in_path_segments1238_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_segment_in_path_segments1241 */ static ANTLR3_BITWORD FOLLOW_segment_in_path_segments1241_bits[] = { ANTLR3_UINT64_LIT(0x0000000800000002) }; static ANTLR3_BITSET_LIST FOLLOW_segment_in_path_segments1241 = { FOLLOW_segment_in_path_segments1241_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SLASH_in_path_segments1245 */ static ANTLR3_BITWORD FOLLOW_SLASH_in_path_segments1245_bits[] = { ANTLR3_UINT64_LIT(0x000001ED188EF730) }; static ANTLR3_BITSET_LIST FOLLOW_SLASH_in_path_segments1245 = { FOLLOW_SLASH_in_path_segments1245_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_segment_in_path_segments1247 */ static ANTLR3_BITWORD FOLLOW_segment_in_path_segments1247_bits[] = { ANTLR3_UINT64_LIT(0x0000000800000002) }; static ANTLR3_BITSET_LIST FOLLOW_segment_in_path_segments1247 = { FOLLOW_segment_in_path_segments1247_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_pchar_in_segment1261 */ static ANTLR3_BITWORD FOLLOW_pchar_in_segment1261_bits[] = { ANTLR3_UINT64_LIT(0x000001E5188EF732) }; static ANTLR3_BITSET_LIST FOLLOW_pchar_in_segment1261 = { FOLLOW_pchar_in_segment1261_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SEMI_in_segment1266 */ static ANTLR3_BITWORD FOLLOW_SEMI_in_segment1266_bits[] = { ANTLR3_UINT64_LIT(0x000001E5188EF730) }; static ANTLR3_BITSET_LIST FOLLOW_SEMI_in_segment1266 = { FOLLOW_SEMI_in_segment1266_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_param_in_segment1268 */ static ANTLR3_BITWORD FOLLOW_param_in_segment1268_bits[] = { ANTLR3_UINT64_LIT(0x0000000400000002) }; static ANTLR3_BITSET_LIST FOLLOW_param_in_segment1268 = { FOLLOW_param_in_segment1268_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_pchar_in_param1277 */ static ANTLR3_BITWORD FOLLOW_pchar_in_param1277_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188EF732) }; static ANTLR3_BITSET_LIST FOLLOW_pchar_in_param1277 = { FOLLOW_pchar_in_param1277_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_unreserved_in_pchar1285 */ static ANTLR3_BITWORD FOLLOW_unreserved_in_pchar1285_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_unreserved_in_pchar1285 = { FOLLOW_unreserved_in_pchar1285_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_escaped_in_pchar1289 */ static ANTLR3_BITWORD FOLLOW_escaped_in_pchar1289_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_escaped_in_pchar1289 = { FOLLOW_escaped_in_pchar1289_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_pchar1293 */ static ANTLR3_BITWORD FOLLOW_COLON_in_pchar1293_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_COLON_in_pchar1293 = { FOLLOW_COLON_in_pchar1293_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_AT_in_pchar1297 */ static ANTLR3_BITWORD FOLLOW_AT_in_pchar1297_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_AT_in_pchar1297 = { FOLLOW_AT_in_pchar1297_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_AND_in_pchar1301 */ static ANTLR3_BITWORD FOLLOW_AND_in_pchar1301_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_AND_in_pchar1301 = { FOLLOW_AND_in_pchar1301_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_EQUAL_in_pchar1305 */ static ANTLR3_BITWORD FOLLOW_EQUAL_in_pchar1305_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_EQUAL_in_pchar1305 = { FOLLOW_EQUAL_in_pchar1305_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_PLUS_in_pchar1309 */ static ANTLR3_BITWORD FOLLOW_PLUS_in_pchar1309_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_PLUS_in_pchar1309 = { FOLLOW_PLUS_in_pchar1309_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DOLLARD_in_pchar1313 */ static ANTLR3_BITWORD FOLLOW_DOLLARD_in_pchar1313_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_DOLLARD_in_pchar1313 = { FOLLOW_DOLLARD_in_pchar1313_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_pchar1317 */ static ANTLR3_BITWORD FOLLOW_COMMA_in_pchar1317_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_COMMA_in_pchar1317 = { FOLLOW_COMMA_in_pchar1317_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_uric_in_query1324 */ static ANTLR3_BITWORD FOLLOW_uric_in_query1324_bits[] = { ANTLR3_UINT64_LIT(0x000001ED388EF732) }; static ANTLR3_BITSET_LIST FOLLOW_uric_in_query1324 = { FOLLOW_uric_in_query1324_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_reserved_in_uric1331 */ static ANTLR3_BITWORD FOLLOW_reserved_in_uric1331_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_reserved_in_uric1331 = { FOLLOW_reserved_in_uric1331_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_unreserved_in_uric1335 */ static ANTLR3_BITWORD FOLLOW_unreserved_in_uric1335_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_unreserved_in_uric1335 = { FOLLOW_unreserved_in_uric1335_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_escaped_in_uric1339 */ static ANTLR3_BITWORD FOLLOW_escaped_in_uric1339_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_escaped_in_uric1339 = { FOLLOW_escaped_in_uric1339_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_reserved_for_from_to_contact_addr_spec_in_uric_for_from_to_contact_addr_spec1346 */ static ANTLR3_BITWORD FOLLOW_reserved_for_from_to_contact_addr_spec_in_uric_for_from_to_contact_addr_spec1346_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_reserved_for_from_to_contact_addr_spec_in_uric_for_from_to_contact_addr_spec1346 = { FOLLOW_reserved_for_from_to_contact_addr_spec_in_uric_for_from_to_contact_addr_spec1346_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_unreserved_in_uric_for_from_to_contact_addr_spec1350 */ static ANTLR3_BITWORD FOLLOW_unreserved_in_uric_for_from_to_contact_addr_spec1350_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_unreserved_in_uric_for_from_to_contact_addr_spec1350 = { FOLLOW_unreserved_in_uric_for_from_to_contact_addr_spec1350_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_escaped_in_uric_for_from_to_contact_addr_spec1354 */ static ANTLR3_BITWORD FOLLOW_escaped_in_uric_for_from_to_contact_addr_spec1354_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_escaped_in_uric_for_from_to_contact_addr_spec1354 = { FOLLOW_escaped_in_uric_for_from_to_contact_addr_spec1354_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_authority_userinfo_in_authority1372 */ static ANTLR3_BITWORD FOLLOW_authority_userinfo_in_authority1372_bits[] = { ANTLR3_UINT64_LIT(0x0000000001082400) }; static ANTLR3_BITSET_LIST FOLLOW_authority_userinfo_in_authority1372 = { FOLLOW_authority_userinfo_in_authority1372_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_authority_hostport_in_authority1378 */ static ANTLR3_BITWORD FOLLOW_authority_hostport_in_authority1378_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_authority_hostport_in_authority1378 = { FOLLOW_authority_hostport_in_authority1378_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_authority_user_in_authority_userinfo1416 */ static ANTLR3_BITWORD FOLLOW_authority_user_in_authority_userinfo1416_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000120) }; static ANTLR3_BITSET_LIST FOLLOW_authority_user_in_authority_userinfo1416 = { FOLLOW_authority_user_in_authority_userinfo1416_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_authority_userinfo1420 */ static ANTLR3_BITWORD FOLLOW_COLON_in_authority_userinfo1420_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188EF630) }; static ANTLR3_BITSET_LIST FOLLOW_COLON_in_authority_userinfo1420 = { FOLLOW_COLON_in_authority_userinfo1420_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_authority_password_in_authority_userinfo1422 */ static ANTLR3_BITWORD FOLLOW_authority_password_in_authority_userinfo1422_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000020) }; static ANTLR3_BITSET_LIST FOLLOW_authority_password_in_authority_userinfo1422 = { FOLLOW_authority_password_in_authority_userinfo1422_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_AT_in_authority_userinfo1428 */ static ANTLR3_BITWORD FOLLOW_AT_in_authority_userinfo1428_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_AT_in_authority_userinfo1428 = { FOLLOW_AT_in_authority_userinfo1428_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_unreserved_in_authority_user1451 */ static ANTLR3_BITWORD FOLLOW_unreserved_in_authority_user1451_bits[] = { ANTLR3_UINT64_LIT(0x000001ED388EF612) }; static ANTLR3_BITSET_LIST FOLLOW_unreserved_in_authority_user1451 = { FOLLOW_unreserved_in_authority_user1451_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_escaped_in_authority_user1456 */ static ANTLR3_BITWORD FOLLOW_escaped_in_authority_user1456_bits[] = { ANTLR3_UINT64_LIT(0x000001ED388EF612) }; static ANTLR3_BITSET_LIST FOLLOW_escaped_in_authority_user1456 = { FOLLOW_escaped_in_authority_user1456_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_user_unreserved_in_authority_user1460 */ static ANTLR3_BITWORD FOLLOW_user_unreserved_in_authority_user1460_bits[] = { ANTLR3_UINT64_LIT(0x000001ED388EF612) }; static ANTLR3_BITSET_LIST FOLLOW_user_unreserved_in_authority_user1460 = { FOLLOW_user_unreserved_in_authority_user1460_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_unreserved_in_authority_password1484 */ static ANTLR3_BITWORD FOLLOW_unreserved_in_authority_password1484_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188EF612) }; static ANTLR3_BITSET_LIST FOLLOW_unreserved_in_authority_password1484 = { FOLLOW_unreserved_in_authority_password1484_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_escaped_in_authority_password1488 */ static ANTLR3_BITWORD FOLLOW_escaped_in_authority_password1488_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188EF612) }; static ANTLR3_BITSET_LIST FOLLOW_escaped_in_authority_password1488 = { FOLLOW_escaped_in_authority_password1488_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_AND_in_authority_password1492 */ static ANTLR3_BITWORD FOLLOW_AND_in_authority_password1492_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188EF612) }; static ANTLR3_BITSET_LIST FOLLOW_AND_in_authority_password1492 = { FOLLOW_AND_in_authority_password1492_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_EQUAL_in_authority_password1496 */ static ANTLR3_BITWORD FOLLOW_EQUAL_in_authority_password1496_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188EF612) }; static ANTLR3_BITSET_LIST FOLLOW_EQUAL_in_authority_password1496 = { FOLLOW_EQUAL_in_authority_password1496_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_PLUS_in_authority_password1500 */ static ANTLR3_BITWORD FOLLOW_PLUS_in_authority_password1500_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188EF612) }; static ANTLR3_BITSET_LIST FOLLOW_PLUS_in_authority_password1500 = { FOLLOW_PLUS_in_authority_password1500_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DOLLARD_in_authority_password1504 */ static ANTLR3_BITWORD FOLLOW_DOLLARD_in_authority_password1504_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188EF612) }; static ANTLR3_BITSET_LIST FOLLOW_DOLLARD_in_authority_password1504 = { FOLLOW_DOLLARD_in_authority_password1504_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_authority_password1508 */ static ANTLR3_BITWORD FOLLOW_COMMA_in_authority_password1508_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188EF612) }; static ANTLR3_BITSET_LIST FOLLOW_COMMA_in_authority_password1508 = { FOLLOW_COMMA_in_authority_password1508_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_host_in_authority_hostport1540 */ static ANTLR3_BITWORD FOLLOW_host_in_authority_hostport1540_bits[] = { ANTLR3_UINT64_LIT(0x0000001400000902) }; static ANTLR3_BITSET_LIST FOLLOW_host_in_authority_hostport1540 = { FOLLOW_host_in_authority_hostport1540_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_authority_hostport1547 */ static ANTLR3_BITWORD FOLLOW_COLON_in_authority_hostport1547_bits[] = { ANTLR3_UINT64_LIT(0x0000000000002000) }; static ANTLR3_BITSET_LIST FOLLOW_COLON_in_authority_hostport1547 = { FOLLOW_COLON_in_authority_hostport1547_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_port_in_authority_hostport1549 */ static ANTLR3_BITWORD FOLLOW_port_in_authority_hostport1549_bits[] = { ANTLR3_UINT64_LIT(0x0000001400000802) }; static ANTLR3_BITSET_LIST FOLLOW_port_in_authority_hostport1549 = { FOLLOW_port_in_authority_hostport1549_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_semi_in_authority_hostport1558 */ static ANTLR3_BITWORD FOLLOW_semi_in_authority_hostport1558_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_semi_in_authority_hostport1558 = { FOLLOW_semi_in_authority_hostport1558_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_generic_param_in_authority_hostport1561 */ static ANTLR3_BITWORD FOLLOW_generic_param_in_authority_hostport1561_bits[] = { ANTLR3_UINT64_LIT(0x0000001400000802) }; static ANTLR3_BITSET_LIST FOLLOW_generic_param_in_authority_hostport1561 = { FOLLOW_generic_param_in_authority_hostport1561_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_generic_param1603 */ static ANTLR3_BITWORD FOLLOW_token_in_generic_param1603_bits[] = { ANTLR3_UINT64_LIT(0x0000001000040802) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_generic_param1603 = { FOLLOW_token_in_generic_param1603_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_equal_in_generic_param1608 */ static ANTLR3_BITWORD FOLLOW_equal_in_generic_param1608_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188BB440) }; static ANTLR3_BITSET_LIST FOLLOW_equal_in_generic_param1608 = { FOLLOW_equal_in_generic_param1608_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_gen_value_in_generic_param1610 */ static ANTLR3_BITWORD FOLLOW_gen_value_in_generic_param1610_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_gen_value_in_generic_param1610 = { FOLLOW_gen_value_in_generic_param1610_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_gen_value1628 */ static ANTLR3_BITWORD FOLLOW_token_in_gen_value1628_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_gen_value1628 = { FOLLOW_token_in_gen_value1628_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_quoted_string_in_gen_value1633 */ static ANTLR3_BITWORD FOLLOW_quoted_string_in_gen_value1633_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_quoted_string_in_gen_value1633 = { FOLLOW_quoted_string_in_gen_value1633_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DQUOTE_in_quoted_string1654 */ static ANTLR3_BITWORD FOLLOW_DQUOTE_in_quoted_string1654_bits[] = { ANTLR3_UINT64_LIT(0x000001FFFFFFFFF0) }; static ANTLR3_BITSET_LIST FOLLOW_DQUOTE_in_quoted_string1654 = { FOLLOW_DQUOTE_in_quoted_string1654_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_set_in_quoted_string1657 */ static ANTLR3_BITWORD FOLLOW_set_in_quoted_string1657_bits[] = { ANTLR3_UINT64_LIT(0x000001FFFFFFFFF0) }; static ANTLR3_BITSET_LIST FOLLOW_set_in_quoted_string1657 = { FOLLOW_set_in_quoted_string1657_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_BSLASH_in_quoted_string1669 */ static ANTLR3_BITWORD FOLLOW_BSLASH_in_quoted_string1669_bits[] = { ANTLR3_UINT64_LIT(0x000001FFFFFFFFF0) }; static ANTLR3_BITSET_LIST FOLLOW_BSLASH_in_quoted_string1669 = { FOLLOW_BSLASH_in_quoted_string1669_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DQUOTE_in_quoted_string1677 */ static ANTLR3_BITWORD FOLLOW_DQUOTE_in_quoted_string1677_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_DQUOTE_in_quoted_string1677 = { FOLLOW_DQUOTE_in_quoted_string1677_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_header_allow1707 */ static ANTLR3_BITWORD FOLLOW_token_in_header_allow1707_bits[] = { ANTLR3_UINT64_LIT(0x0000001000100100) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_header_allow1707 = { FOLLOW_token_in_header_allow1707_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_hcolon_in_header_allow1711 */ static ANTLR3_BITWORD FOLLOW_hcolon_in_header_allow1711_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_hcolon_in_header_allow1711 = { FOLLOW_hcolon_in_header_allow1711_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_methods_in_header_allow1713 */ static ANTLR3_BITWORD FOLLOW_methods_in_header_allow1713_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_methods_in_header_allow1713 = { FOLLOW_methods_in_header_allow1713_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_method_in_methods1731 */ static ANTLR3_BITWORD FOLLOW_method_in_methods1731_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000A02) }; static ANTLR3_BITSET_LIST FOLLOW_method_in_methods1731 = { FOLLOW_method_in_methods1731_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_comma_in_methods1734 */ static ANTLR3_BITWORD FOLLOW_comma_in_methods1734_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_comma_in_methods1734 = { FOLLOW_comma_in_methods1734_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_method_in_methods1736 */ static ANTLR3_BITWORD FOLLOW_method_in_methods1736_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000A02) }; static ANTLR3_BITSET_LIST FOLLOW_method_in_methods1736 = { FOLLOW_method_in_methods1736_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_authorization_token1746 */ static ANTLR3_BITWORD FOLLOW_token_in_authorization_token1746_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_authorization_token1746 = { FOLLOW_token_in_authorization_token1746_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_digest_token1754 */ static ANTLR3_BITWORD FOLLOW_token_in_digest_token1754_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_digest_token1754 = { FOLLOW_token_in_digest_token1754_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_authorization_token_in_header_authorization1781 */ static ANTLR3_BITWORD FOLLOW_authorization_token_in_header_authorization1781_bits[] = { ANTLR3_UINT64_LIT(0x0000001000100100) }; static ANTLR3_BITSET_LIST FOLLOW_authorization_token_in_header_authorization1781 = { FOLLOW_authorization_token_in_header_authorization1781_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_hcolon_in_header_authorization1785 */ static ANTLR3_BITWORD FOLLOW_hcolon_in_header_authorization1785_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_hcolon_in_header_authorization1785 = { FOLLOW_hcolon_in_header_authorization1785_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_credentials_in_header_authorization1787 */ static ANTLR3_BITWORD FOLLOW_credentials_in_header_authorization1787_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_credentials_in_header_authorization1787 = { FOLLOW_credentials_in_header_authorization1787_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_digest_token_in_credentials1810 */ static ANTLR3_BITWORD FOLLOW_digest_token_in_credentials1810_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000800) }; static ANTLR3_BITSET_LIST FOLLOW_digest_token_in_credentials1810 = { FOLLOW_digest_token_in_credentials1810_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_lws_in_credentials1821 */ static ANTLR3_BITWORD FOLLOW_lws_in_credentials1821_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_lws_in_credentials1821 = { FOLLOW_lws_in_credentials1821_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_digest_response_in_credentials1823 */ static ANTLR3_BITWORD FOLLOW_digest_response_in_credentials1823_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_digest_response_in_credentials1823 = { FOLLOW_digest_response_in_credentials1823_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_other_response_in_credentials1850 */ static ANTLR3_BITWORD FOLLOW_other_response_in_credentials1850_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_other_response_in_credentials1850 = { FOLLOW_other_response_in_credentials1850_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_dig_resp_in_digest_response1865 */ static ANTLR3_BITWORD FOLLOW_dig_resp_in_digest_response1865_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000A02) }; static ANTLR3_BITSET_LIST FOLLOW_dig_resp_in_digest_response1865 = { FOLLOW_dig_resp_in_digest_response1865_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_comma_in_digest_response1869 */ static ANTLR3_BITWORD FOLLOW_comma_in_digest_response1869_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_comma_in_digest_response1869 = { FOLLOW_comma_in_digest_response1869_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_dig_resp_in_digest_response1871 */ static ANTLR3_BITWORD FOLLOW_dig_resp_in_digest_response1871_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000A02) }; static ANTLR3_BITSET_LIST FOLLOW_dig_resp_in_digest_response1871 = { FOLLOW_dig_resp_in_digest_response1871_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_username_in_dig_resp1888 */ static ANTLR3_BITWORD FOLLOW_username_in_dig_resp1888_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_username_in_dig_resp1888 = { FOLLOW_username_in_dig_resp1888_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_realm_in_dig_resp1896 */ static ANTLR3_BITWORD FOLLOW_realm_in_dig_resp1896_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_realm_in_dig_resp1896 = { FOLLOW_realm_in_dig_resp1896_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_nonce_in_dig_resp1904 */ static ANTLR3_BITWORD FOLLOW_nonce_in_dig_resp1904_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_nonce_in_dig_resp1904 = { FOLLOW_nonce_in_dig_resp1904_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_digest_uri_in_dig_resp1912 */ static ANTLR3_BITWORD FOLLOW_digest_uri_in_dig_resp1912_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_digest_uri_in_dig_resp1912 = { FOLLOW_digest_uri_in_dig_resp1912_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_dresponse_in_dig_resp1919 */ static ANTLR3_BITWORD FOLLOW_dresponse_in_dig_resp1919_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_dresponse_in_dig_resp1919 = { FOLLOW_dresponse_in_dig_resp1919_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_algorithm_in_dig_resp1928 */ static ANTLR3_BITWORD FOLLOW_algorithm_in_dig_resp1928_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_algorithm_in_dig_resp1928 = { FOLLOW_algorithm_in_dig_resp1928_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_cnonce_in_dig_resp1937 */ static ANTLR3_BITWORD FOLLOW_cnonce_in_dig_resp1937_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_cnonce_in_dig_resp1937 = { FOLLOW_cnonce_in_dig_resp1937_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_opaque_in_dig_resp1944 */ static ANTLR3_BITWORD FOLLOW_opaque_in_dig_resp1944_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_opaque_in_dig_resp1944 = { FOLLOW_opaque_in_dig_resp1944_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_message_qop_in_dig_resp1952 */ static ANTLR3_BITWORD FOLLOW_message_qop_in_dig_resp1952_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_message_qop_in_dig_resp1952 = { FOLLOW_message_qop_in_dig_resp1952_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_nonce_count_in_dig_resp1959 */ static ANTLR3_BITWORD FOLLOW_nonce_count_in_dig_resp1959_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_nonce_count_in_dig_resp1959 = { FOLLOW_nonce_count_in_dig_resp1959_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_auth_param_in_dig_resp1966 */ static ANTLR3_BITWORD FOLLOW_auth_param_in_dig_resp1966_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_auth_param_in_dig_resp1966 = { FOLLOW_auth_param_in_dig_resp1966_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_username_token1979 */ static ANTLR3_BITWORD FOLLOW_token_in_username_token1979_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_username_token1979 = { FOLLOW_token_in_username_token1979_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_username_token_in_username1994 */ static ANTLR3_BITWORD FOLLOW_username_token_in_username1994_bits[] = { ANTLR3_UINT64_LIT(0x0000001000040800) }; static ANTLR3_BITSET_LIST FOLLOW_username_token_in_username1994 = { FOLLOW_username_token_in_username1994_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_equal_in_username1998 */ static ANTLR3_BITWORD FOLLOW_equal_in_username1998_bits[] = { ANTLR3_UINT64_LIT(0x0000000000010000) }; static ANTLR3_BITSET_LIST FOLLOW_equal_in_username1998 = { FOLLOW_equal_in_username1998_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_username_value_in_username2000 */ static ANTLR3_BITWORD FOLLOW_username_value_in_username2000_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_username_value_in_username2000 = { FOLLOW_username_value_in_username2000_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_quoted_string_in_username_value2014 */ static ANTLR3_BITWORD FOLLOW_quoted_string_in_username_value2014_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_quoted_string_in_username_value2014 = { FOLLOW_quoted_string_in_username_value2014_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_uri_token2023 */ static ANTLR3_BITWORD FOLLOW_token_in_uri_token2023_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_uri_token2023 = { FOLLOW_token_in_uri_token2023_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_uri_token_in_digest_uri2036 */ static ANTLR3_BITWORD FOLLOW_uri_token_in_digest_uri2036_bits[] = { ANTLR3_UINT64_LIT(0x0000001000040800) }; static ANTLR3_BITSET_LIST FOLLOW_uri_token_in_digest_uri2036 = { FOLLOW_uri_token_in_digest_uri2036_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_equal_in_digest_uri2040 */ static ANTLR3_BITWORD FOLLOW_equal_in_digest_uri2040_bits[] = { ANTLR3_UINT64_LIT(0x0000000000010000) }; static ANTLR3_BITSET_LIST FOLLOW_equal_in_digest_uri2040 = { FOLLOW_equal_in_digest_uri2040_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DQUOTE_in_digest_uri2042 */ static ANTLR3_BITWORD FOLLOW_DQUOTE_in_digest_uri2042_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_DQUOTE_in_digest_uri2042 = { FOLLOW_DQUOTE_in_digest_uri2042_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_uri_in_digest_uri2044 */ static ANTLR3_BITWORD FOLLOW_uri_in_digest_uri2044_bits[] = { ANTLR3_UINT64_LIT(0x0000000000010000) }; static ANTLR3_BITSET_LIST FOLLOW_uri_in_digest_uri2044 = { FOLLOW_uri_in_digest_uri2044_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DQUOTE_in_digest_uri2046 */ static ANTLR3_BITWORD FOLLOW_DQUOTE_in_digest_uri2046_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_DQUOTE_in_digest_uri2046 = { FOLLOW_DQUOTE_in_digest_uri2046_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_message_qop2071 */ static ANTLR3_BITWORD FOLLOW_token_in_message_qop2071_bits[] = { ANTLR3_UINT64_LIT(0x0000001000040800) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_message_qop2071 = { FOLLOW_token_in_message_qop2071_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_equal_in_message_qop2074 */ static ANTLR3_BITWORD FOLLOW_equal_in_message_qop2074_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_equal_in_message_qop2074 = { FOLLOW_equal_in_message_qop2074_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_qop_value_in_message_qop2077 */ static ANTLR3_BITWORD FOLLOW_qop_value_in_message_qop2077_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_qop_value_in_message_qop2077 = { FOLLOW_qop_value_in_message_qop2077_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_qop_value2090 */ static ANTLR3_BITWORD FOLLOW_token_in_qop_value2090_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_qop_value2090 = { FOLLOW_token_in_qop_value2090_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_cnonce2108 */ static ANTLR3_BITWORD FOLLOW_token_in_cnonce2108_bits[] = { ANTLR3_UINT64_LIT(0x0000001000040800) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_cnonce2108 = { FOLLOW_token_in_cnonce2108_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_equal_in_cnonce2112 */ static ANTLR3_BITWORD FOLLOW_equal_in_cnonce2112_bits[] = { ANTLR3_UINT64_LIT(0x0000000000010000) }; static ANTLR3_BITSET_LIST FOLLOW_equal_in_cnonce2112 = { FOLLOW_equal_in_cnonce2112_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_cnonce_value_in_cnonce2114 */ static ANTLR3_BITWORD FOLLOW_cnonce_value_in_cnonce2114_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_cnonce_value_in_cnonce2114 = { FOLLOW_cnonce_value_in_cnonce2114_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_nonce_value_in_cnonce_value2127 */ static ANTLR3_BITWORD FOLLOW_nonce_value_in_cnonce_value2127_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_nonce_value_in_cnonce_value2127 = { FOLLOW_nonce_value_in_cnonce_value2127_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_nonce_count2144 */ static ANTLR3_BITWORD FOLLOW_token_in_nonce_count2144_bits[] = { ANTLR3_UINT64_LIT(0x0000001000040800) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_nonce_count2144 = { FOLLOW_token_in_nonce_count2144_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_equal_in_nonce_count2148 */ static ANTLR3_BITWORD FOLLOW_equal_in_nonce_count2148_bits[] = { ANTLR3_UINT64_LIT(0x0000000000082000) }; static ANTLR3_BITSET_LIST FOLLOW_equal_in_nonce_count2148 = { FOLLOW_equal_in_nonce_count2148_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_nc_value_in_nonce_count2150 */ static ANTLR3_BITWORD FOLLOW_nc_value_in_nonce_count2150_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_nc_value_in_nonce_count2150 = { FOLLOW_nc_value_in_nonce_count2150_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_huit_lhex_in_nc_value2163 */ static ANTLR3_BITWORD FOLLOW_huit_lhex_in_nc_value2163_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_huit_lhex_in_nc_value2163 = { FOLLOW_huit_lhex_in_nc_value2163_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_dresponse2181 */ static ANTLR3_BITWORD FOLLOW_token_in_dresponse2181_bits[] = { ANTLR3_UINT64_LIT(0x0000001000040800) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_dresponse2181 = { FOLLOW_token_in_dresponse2181_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_equal_in_dresponse2185 */ static ANTLR3_BITWORD FOLLOW_equal_in_dresponse2185_bits[] = { ANTLR3_UINT64_LIT(0x0000000000010000) }; static ANTLR3_BITSET_LIST FOLLOW_equal_in_dresponse2185 = { FOLLOW_equal_in_dresponse2185_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_request_digest_in_dresponse2187 */ static ANTLR3_BITWORD FOLLOW_request_digest_in_dresponse2187_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_request_digest_in_dresponse2187 = { FOLLOW_request_digest_in_dresponse2187_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_quoted_string_in_request_digest2199 */ static ANTLR3_BITWORD FOLLOW_quoted_string_in_request_digest2199_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_quoted_string_in_request_digest2199 = { FOLLOW_quoted_string_in_request_digest2199_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_hexdigit_in_huit_lhex2210 */ static ANTLR3_BITWORD FOLLOW_hexdigit_in_huit_lhex2210_bits[] = { ANTLR3_UINT64_LIT(0x0000000000082002) }; static ANTLR3_BITSET_LIST FOLLOW_hexdigit_in_huit_lhex2210 = { FOLLOW_hexdigit_in_huit_lhex2210_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_auth_param_name_in_auth_param2225 */ static ANTLR3_BITWORD FOLLOW_auth_param_name_in_auth_param2225_bits[] = { ANTLR3_UINT64_LIT(0x0000001000040800) }; static ANTLR3_BITSET_LIST FOLLOW_auth_param_name_in_auth_param2225 = { FOLLOW_auth_param_name_in_auth_param2225_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_equal_in_auth_param2227 */ static ANTLR3_BITWORD FOLLOW_equal_in_auth_param2227_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188BB440) }; static ANTLR3_BITSET_LIST FOLLOW_equal_in_auth_param2227 = { FOLLOW_equal_in_auth_param2227_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_auth_param_value_in_auth_param2250 */ static ANTLR3_BITWORD FOLLOW_auth_param_value_in_auth_param2250_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_auth_param_value_in_auth_param2250 = { FOLLOW_auth_param_value_in_auth_param2250_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_auth_param_value2270 */ static ANTLR3_BITWORD FOLLOW_token_in_auth_param_value2270_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_auth_param_value2270 = { FOLLOW_token_in_auth_param_value2270_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_quoted_string_in_auth_param_value2274 */ static ANTLR3_BITWORD FOLLOW_quoted_string_in_auth_param_value2274_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_quoted_string_in_auth_param_value2274 = { FOLLOW_quoted_string_in_auth_param_value2274_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_auth_param_name2286 */ static ANTLR3_BITWORD FOLLOW_token_in_auth_param_name2286_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_auth_param_name2286 = { FOLLOW_token_in_auth_param_name2286_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_auth_scheme_in_other_response2299 */ static ANTLR3_BITWORD FOLLOW_auth_scheme_in_other_response2299_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000800) }; static ANTLR3_BITSET_LIST FOLLOW_auth_scheme_in_other_response2299 = { FOLLOW_auth_scheme_in_other_response2299_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_lws_in_other_response2308 */ static ANTLR3_BITWORD FOLLOW_lws_in_other_response2308_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_lws_in_other_response2308 = { FOLLOW_lws_in_other_response2308_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_auth_param_in_other_response2310 */ static ANTLR3_BITWORD FOLLOW_auth_param_in_other_response2310_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000A02) }; static ANTLR3_BITSET_LIST FOLLOW_auth_param_in_other_response2310 = { FOLLOW_auth_param_in_other_response2310_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_comma_in_other_response2335 */ static ANTLR3_BITWORD FOLLOW_comma_in_other_response2335_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_comma_in_other_response2335 = { FOLLOW_comma_in_other_response2335_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_auth_param_in_other_response2337 */ static ANTLR3_BITWORD FOLLOW_auth_param_in_other_response2337_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000A02) }; static ANTLR3_BITSET_LIST FOLLOW_auth_param_in_other_response2337 = { FOLLOW_auth_param_in_other_response2337_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_auth_scheme2352 */ static ANTLR3_BITWORD FOLLOW_token_in_auth_scheme2352_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_auth_scheme2352 = { FOLLOW_token_in_auth_scheme2352_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_quoted_string_in_nonce_value2370 */ static ANTLR3_BITWORD FOLLOW_quoted_string_in_nonce_value2370_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_quoted_string_in_nonce_value2370 = { FOLLOW_quoted_string_in_nonce_value2370_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_call_id_token2382 */ static ANTLR3_BITWORD FOLLOW_token_in_call_id_token2382_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_call_id_token2382 = { FOLLOW_token_in_call_id_token2382_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_call_id_token_in_header_call_id2407 */ static ANTLR3_BITWORD FOLLOW_call_id_token_in_header_call_id2407_bits[] = { ANTLR3_UINT64_LIT(0x0000001000100100) }; static ANTLR3_BITSET_LIST FOLLOW_call_id_token_in_header_call_id2407 = { FOLLOW_call_id_token_in_header_call_id2407_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_hcolon_in_header_call_id2411 */ static ANTLR3_BITWORD FOLLOW_hcolon_in_header_call_id2411_bits[] = { ANTLR3_UINT64_LIT(0x000001EBF9EBB5C0) }; static ANTLR3_BITSET_LIST FOLLOW_hcolon_in_header_call_id2411 = { FOLLOW_hcolon_in_header_call_id2411_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_call_id_in_header_call_id2413 */ static ANTLR3_BITWORD FOLLOW_call_id_in_header_call_id2413_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_call_id_in_header_call_id2413 = { FOLLOW_call_id_in_header_call_id2413_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_word_in_call_id2431 */ static ANTLR3_BITWORD FOLLOW_word_in_call_id2431_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000022) }; static ANTLR3_BITSET_LIST FOLLOW_word_in_call_id2431 = { FOLLOW_word_in_call_id2431_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_AT_in_call_id2435 */ static ANTLR3_BITWORD FOLLOW_AT_in_call_id2435_bits[] = { ANTLR3_UINT64_LIT(0x000001EBF9EBB5C0) }; static ANTLR3_BITSET_LIST FOLLOW_AT_in_call_id2435 = { FOLLOW_AT_in_call_id2435_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_word_in_call_id2437 */ static ANTLR3_BITWORD FOLLOW_word_in_call_id2437_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_word_in_call_id2437 = { FOLLOW_word_in_call_id2437_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_retry_after_token2453 */ static ANTLR3_BITWORD FOLLOW_token_in_retry_after_token2453_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_retry_after_token2453 = { FOLLOW_token_in_retry_after_token2453_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_retry_after_token_in_header_retry_after2476 */ static ANTLR3_BITWORD FOLLOW_retry_after_token_in_header_retry_after2476_bits[] = { ANTLR3_UINT64_LIT(0x0000001000100100) }; static ANTLR3_BITSET_LIST FOLLOW_retry_after_token_in_header_retry_after2476 = { FOLLOW_retry_after_token_in_header_retry_after2476_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_hcolon_in_header_retry_after2480 */ static ANTLR3_BITWORD FOLLOW_hcolon_in_header_retry_after2480_bits[] = { ANTLR3_UINT64_LIT(0x0000000000002000) }; static ANTLR3_BITSET_LIST FOLLOW_hcolon_in_header_retry_after2480 = { FOLLOW_hcolon_in_header_retry_after2480_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_retry_after_in_header_retry_after2482 */ static ANTLR3_BITWORD FOLLOW_retry_after_in_header_retry_after2482_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_retry_after_in_header_retry_after2482 = { FOLLOW_retry_after_in_header_retry_after2482_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DIGIT_in_retry_after2498 */ static ANTLR3_BITWORD FOLLOW_DIGIT_in_retry_after2498_bits[] = { ANTLR3_UINT64_LIT(0x0000000000002002) }; static ANTLR3_BITSET_LIST FOLLOW_DIGIT_in_retry_after2498 = { FOLLOW_DIGIT_in_retry_after2498_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_contact_token2509 */ static ANTLR3_BITWORD FOLLOW_token_in_contact_token2509_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_contact_token2509 = { FOLLOW_token_in_contact_token2509_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_contact_token_in_header_contact2540 */ static ANTLR3_BITWORD FOLLOW_contact_token_in_header_contact2540_bits[] = { ANTLR3_UINT64_LIT(0x0000001000100100) }; static ANTLR3_BITSET_LIST FOLLOW_contact_token_in_header_contact2540 = { FOLLOW_contact_token_in_header_contact2540_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_sp_tab_colon_in_header_contact2548 */ static ANTLR3_BITWORD FOLLOW_sp_tab_colon_in_header_contact2548_bits[] = { ANTLR3_UINT64_LIT(0x000001F118ABBC40) }; static ANTLR3_BITSET_LIST FOLLOW_sp_tab_colon_in_header_contact2548 = { FOLLOW_sp_tab_colon_in_header_contact2548_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_lws_in_header_contact2572 */ static ANTLR3_BITWORD FOLLOW_lws_in_header_contact2572_bits[] = { ANTLR3_UINT64_LIT(0x0000004000000000) }; static ANTLR3_BITSET_LIST FOLLOW_lws_in_header_contact2572 = { FOLLOW_lws_in_header_contact2572_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_STAR_in_header_contact2575 */ static ANTLR3_BITWORD FOLLOW_STAR_in_header_contact2575_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_STAR_in_header_contact2575 = { FOLLOW_STAR_in_header_contact2575_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_contact_param_in_header_contact2601 */ static ANTLR3_BITWORD FOLLOW_contact_param_in_header_contact2601_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000202) }; static ANTLR3_BITSET_LIST FOLLOW_contact_param_in_header_contact2601 = { FOLLOW_contact_param_in_header_contact2601_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_header_contact2605 */ static ANTLR3_BITWORD FOLLOW_COMMA_in_header_contact2605_bits[] = { ANTLR3_UINT64_LIT(0x000001F118ABBC40) }; static ANTLR3_BITSET_LIST FOLLOW_COMMA_in_header_contact2605 = { FOLLOW_COMMA_in_header_contact2605_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_contact_param_in_header_contact2607 */ static ANTLR3_BITWORD FOLLOW_contact_param_in_header_contact2607_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000202) }; static ANTLR3_BITSET_LIST FOLLOW_contact_param_in_header_contact2607 = { FOLLOW_contact_param_in_header_contact2607_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_name_addr_in_contact_param2642 */ static ANTLR3_BITWORD FOLLOW_name_addr_in_contact_param2642_bits[] = { ANTLR3_UINT64_LIT(0x0000000400000002) }; static ANTLR3_BITSET_LIST FOLLOW_name_addr_in_contact_param2642 = { FOLLOW_name_addr_in_contact_param2642_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_paramless_addr_spec_in_contact_param2652 */ static ANTLR3_BITWORD FOLLOW_paramless_addr_spec_in_contact_param2652_bits[] = { ANTLR3_UINT64_LIT(0x0000000400000002) }; static ANTLR3_BITSET_LIST FOLLOW_paramless_addr_spec_in_contact_param2652 = { FOLLOW_paramless_addr_spec_in_contact_param2652_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SEMI_in_contact_param2657 */ static ANTLR3_BITWORD FOLLOW_SEMI_in_contact_param2657_bits[] = { ANTLR3_UINT64_LIT(0x000001F1188ABC40) }; static ANTLR3_BITSET_LIST FOLLOW_SEMI_in_contact_param2657 = { FOLLOW_SEMI_in_contact_param2657_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_lws_in_contact_param2659 */ static ANTLR3_BITWORD FOLLOW_lws_in_contact_param2659_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_lws_in_contact_param2659 = { FOLLOW_lws_in_contact_param2659_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_contact_params_in_contact_param2662 */ static ANTLR3_BITWORD FOLLOW_contact_params_in_contact_param2662_bits[] = { ANTLR3_UINT64_LIT(0x0000001400000802) }; static ANTLR3_BITSET_LIST FOLLOW_contact_params_in_contact_param2662 = { FOLLOW_contact_params_in_contact_param2662_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_lws_in_contact_param2664 */ static ANTLR3_BITWORD FOLLOW_lws_in_contact_param2664_bits[] = { ANTLR3_UINT64_LIT(0x0000000400000002) }; static ANTLR3_BITSET_LIST FOLLOW_lws_in_contact_param2664 = { FOLLOW_lws_in_contact_param2664_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_name_addr_with_generic_uri_in_header_address2690 */ static ANTLR3_BITWORD FOLLOW_name_addr_with_generic_uri_in_header_address2690_bits[] = { ANTLR3_UINT64_LIT(0x0000000400000002) }; static ANTLR3_BITSET_LIST FOLLOW_name_addr_with_generic_uri_in_header_address2690 = { FOLLOW_name_addr_with_generic_uri_in_header_address2690_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SEMI_in_header_address2695 */ static ANTLR3_BITWORD FOLLOW_SEMI_in_header_address2695_bits[] = { ANTLR3_UINT64_LIT(0x000001F1188ABC40) }; static ANTLR3_BITSET_LIST FOLLOW_SEMI_in_header_address2695 = { FOLLOW_SEMI_in_header_address2695_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_lws_in_header_address2697 */ static ANTLR3_BITWORD FOLLOW_lws_in_header_address2697_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_lws_in_header_address2697 = { FOLLOW_lws_in_header_address2697_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_generic_param_in_header_address2700 */ static ANTLR3_BITWORD FOLLOW_generic_param_in_header_address2700_bits[] = { ANTLR3_UINT64_LIT(0x0000001400000802) }; static ANTLR3_BITSET_LIST FOLLOW_generic_param_in_header_address2700 = { FOLLOW_generic_param_in_header_address2700_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_lws_in_header_address2704 */ static ANTLR3_BITWORD FOLLOW_lws_in_header_address2704_bits[] = { ANTLR3_UINT64_LIT(0x0000000400000002) }; static ANTLR3_BITSET_LIST FOLLOW_lws_in_header_address2704 = { FOLLOW_lws_in_header_address2704_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_addr_spec_with_generic_uri_in_header_address2713 */ static ANTLR3_BITWORD FOLLOW_addr_spec_with_generic_uri_in_header_address2713_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_addr_spec_with_generic_uri_in_header_address2713 = { FOLLOW_addr_spec_with_generic_uri_in_header_address2713_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_header_address_base_in_header_address_param_less2744 */ static ANTLR3_BITWORD FOLLOW_header_address_base_in_header_address_param_less2744_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_header_address_base_in_header_address_param_less2744 = { FOLLOW_header_address_base_in_header_address_param_less2744_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_name_addr_with_generic_uri_in_header_address_base2778 */ static ANTLR3_BITWORD FOLLOW_name_addr_with_generic_uri_in_header_address_base2778_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_name_addr_with_generic_uri_in_header_address_base2778 = { FOLLOW_name_addr_with_generic_uri_in_header_address_base2778_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_addr_spec_with_generic_uri_in_header_address_base2783 */ static ANTLR3_BITWORD FOLLOW_addr_spec_with_generic_uri_in_header_address_base2783_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_addr_spec_with_generic_uri_in_header_address_base2783 = { FOLLOW_addr_spec_with_generic_uri_in_header_address_base2783_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_fast_name_addr_with_generic_uri_in_fast_header_address2822 */ static ANTLR3_BITWORD FOLLOW_fast_name_addr_with_generic_uri_in_fast_header_address2822_bits[] = { ANTLR3_UINT64_LIT(0x0000000400000002) }; static ANTLR3_BITSET_LIST FOLLOW_fast_name_addr_with_generic_uri_in_fast_header_address2822 = { FOLLOW_fast_name_addr_with_generic_uri_in_fast_header_address2822_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SEMI_in_fast_header_address2827 */ static ANTLR3_BITWORD FOLLOW_SEMI_in_fast_header_address2827_bits[] = { ANTLR3_UINT64_LIT(0x000001F1188ABC40) }; static ANTLR3_BITSET_LIST FOLLOW_SEMI_in_fast_header_address2827 = { FOLLOW_SEMI_in_fast_header_address2827_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_lws_in_fast_header_address2829 */ static ANTLR3_BITWORD FOLLOW_lws_in_fast_header_address2829_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_lws_in_fast_header_address2829 = { FOLLOW_lws_in_fast_header_address2829_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_generic_param_in_fast_header_address2832 */ static ANTLR3_BITWORD FOLLOW_generic_param_in_fast_header_address2832_bits[] = { ANTLR3_UINT64_LIT(0x0000001400000802) }; static ANTLR3_BITSET_LIST FOLLOW_generic_param_in_fast_header_address2832 = { FOLLOW_generic_param_in_fast_header_address2832_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_lws_in_fast_header_address2836 */ static ANTLR3_BITWORD FOLLOW_lws_in_fast_header_address2836_bits[] = { ANTLR3_UINT64_LIT(0x0000000400000002) }; static ANTLR3_BITSET_LIST FOLLOW_lws_in_fast_header_address2836 = { FOLLOW_lws_in_fast_header_address2836_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_fast_addr_spec_with_generic_uri_in_fast_header_address2845 */ static ANTLR3_BITWORD FOLLOW_fast_addr_spec_with_generic_uri_in_fast_header_address2845_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_fast_addr_spec_with_generic_uri_in_fast_header_address2845 = { FOLLOW_fast_addr_spec_with_generic_uri_in_fast_header_address2845_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_fast_name_addr_with_generic_uri_in_fast_header_address_param_less2883 */ static ANTLR3_BITWORD FOLLOW_fast_name_addr_with_generic_uri_in_fast_header_address_param_less2883_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_fast_name_addr_with_generic_uri_in_fast_header_address_param_less2883 = { FOLLOW_fast_name_addr_with_generic_uri_in_fast_header_address_param_less2883_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_fast_addr_spec_with_generic_uri_in_fast_header_address_param_less2889 */ static ANTLR3_BITWORD FOLLOW_fast_addr_spec_with_generic_uri_in_fast_header_address_param_less2889_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_fast_addr_spec_with_generic_uri_in_fast_header_address_param_less2889 = { FOLLOW_fast_addr_spec_with_generic_uri_in_fast_header_address_param_less2889_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_lws_in_name_addr2917 */ static ANTLR3_BITWORD FOLLOW_lws_in_name_addr2917_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188BB440) }; static ANTLR3_BITSET_LIST FOLLOW_lws_in_name_addr2917 = { FOLLOW_lws_in_name_addr2917_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_display_name_in_name_addr2920 */ static ANTLR3_BITWORD FOLLOW_display_name_in_name_addr2920_bits[] = { ANTLR3_UINT64_LIT(0x0000001000200800) }; static ANTLR3_BITSET_LIST FOLLOW_display_name_in_name_addr2920 = { FOLLOW_display_name_in_name_addr2920_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_sp_laquot_in_name_addr2925 */ static ANTLR3_BITWORD FOLLOW_sp_laquot_in_name_addr2925_bits[] = { ANTLR3_UINT64_LIT(0x000001F1188ABC40) }; static ANTLR3_BITSET_LIST FOLLOW_sp_laquot_in_name_addr2925 = { FOLLOW_sp_laquot_in_name_addr2925_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_addr_spec_in_name_addr2928 */ static ANTLR3_BITWORD FOLLOW_addr_spec_in_name_addr2928_bits[] = { ANTLR3_UINT64_LIT(0x0000000040000000) }; static ANTLR3_BITSET_LIST FOLLOW_addr_spec_in_name_addr2928 = { FOLLOW_addr_spec_in_name_addr2928_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_raquot_sp_in_name_addr2931 */ static ANTLR3_BITWORD FOLLOW_raquot_sp_in_name_addr2931_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_raquot_sp_in_name_addr2931 = { FOLLOW_raquot_sp_in_name_addr2931_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_lws_in_name_addr_with_generic_uri2948 */ static ANTLR3_BITWORD FOLLOW_lws_in_name_addr_with_generic_uri2948_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188BB440) }; static ANTLR3_BITSET_LIST FOLLOW_lws_in_name_addr_with_generic_uri2948 = { FOLLOW_lws_in_name_addr_with_generic_uri2948_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_display_name_in_name_addr_with_generic_uri2951 */ static ANTLR3_BITWORD FOLLOW_display_name_in_name_addr_with_generic_uri2951_bits[] = { ANTLR3_UINT64_LIT(0x0000001000200800) }; static ANTLR3_BITSET_LIST FOLLOW_display_name_in_name_addr_with_generic_uri2951 = { FOLLOW_display_name_in_name_addr_with_generic_uri2951_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_sp_laquot_in_name_addr_with_generic_uri2956 */ static ANTLR3_BITWORD FOLLOW_sp_laquot_in_name_addr_with_generic_uri2956_bits[] = { ANTLR3_UINT64_LIT(0x000001F9188ABC40) }; static ANTLR3_BITSET_LIST FOLLOW_sp_laquot_in_name_addr_with_generic_uri2956 = { FOLLOW_sp_laquot_in_name_addr_with_generic_uri2956_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_addr_spec_with_generic_uri_in_name_addr_with_generic_uri2959 */ static ANTLR3_BITWORD FOLLOW_addr_spec_with_generic_uri_in_name_addr_with_generic_uri2959_bits[] = { ANTLR3_UINT64_LIT(0x0000000040000000) }; static ANTLR3_BITSET_LIST FOLLOW_addr_spec_with_generic_uri_in_name_addr_with_generic_uri2959 = { FOLLOW_addr_spec_with_generic_uri_in_name_addr_with_generic_uri2959_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_raquot_sp_in_name_addr_with_generic_uri2962 */ static ANTLR3_BITWORD FOLLOW_raquot_sp_in_name_addr_with_generic_uri2962_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_raquot_sp_in_name_addr_with_generic_uri2962 = { FOLLOW_raquot_sp_in_name_addr_with_generic_uri2962_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_lws_in_fast_name_addr_with_generic_uri2979 */ static ANTLR3_BITWORD FOLLOW_lws_in_fast_name_addr_with_generic_uri2979_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188BB440) }; static ANTLR3_BITSET_LIST FOLLOW_lws_in_fast_name_addr_with_generic_uri2979 = { FOLLOW_lws_in_fast_name_addr_with_generic_uri2979_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_display_name_in_fast_name_addr_with_generic_uri2982 */ static ANTLR3_BITWORD FOLLOW_display_name_in_fast_name_addr_with_generic_uri2982_bits[] = { ANTLR3_UINT64_LIT(0x0000001000200800) }; static ANTLR3_BITSET_LIST FOLLOW_display_name_in_fast_name_addr_with_generic_uri2982 = { FOLLOW_display_name_in_fast_name_addr_with_generic_uri2982_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_sp_laquot_in_fast_name_addr_with_generic_uri2987 */ static ANTLR3_BITWORD FOLLOW_sp_laquot_in_fast_name_addr_with_generic_uri2987_bits[] = { ANTLR3_UINT64_LIT(0x000001F9188ABC40) }; static ANTLR3_BITSET_LIST FOLLOW_sp_laquot_in_fast_name_addr_with_generic_uri2987 = { FOLLOW_sp_laquot_in_fast_name_addr_with_generic_uri2987_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_fast_addr_spec_with_generic_uri_in_fast_name_addr_with_generic_uri2990 */ static ANTLR3_BITWORD FOLLOW_fast_addr_spec_with_generic_uri_in_fast_name_addr_with_generic_uri2990_bits[] = { ANTLR3_UINT64_LIT(0x0000000040000000) }; static ANTLR3_BITSET_LIST FOLLOW_fast_addr_spec_with_generic_uri_in_fast_name_addr_with_generic_uri2990 = { FOLLOW_fast_addr_spec_with_generic_uri_in_fast_name_addr_with_generic_uri2990_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_raquot_sp_in_fast_name_addr_with_generic_uri2993 */ static ANTLR3_BITWORD FOLLOW_raquot_sp_in_fast_name_addr_with_generic_uri2993_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_raquot_sp_in_fast_name_addr_with_generic_uri2993 = { FOLLOW_raquot_sp_in_fast_name_addr_with_generic_uri2993_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_lws_in_addr_spec3007 */ static ANTLR3_BITWORD FOLLOW_lws_in_addr_spec3007_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_lws_in_addr_spec3007 = { FOLLOW_lws_in_addr_spec3007_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_uri_in_addr_spec3010 */ static ANTLR3_BITWORD FOLLOW_uri_in_addr_spec3010_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000802) }; static ANTLR3_BITSET_LIST FOLLOW_uri_in_addr_spec3010 = { FOLLOW_uri_in_addr_spec3010_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_lws_in_addr_spec3014 */ static ANTLR3_BITWORD FOLLOW_lws_in_addr_spec3014_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_lws_in_addr_spec3014 = { FOLLOW_lws_in_addr_spec3014_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_lws_in_addr_spec_with_generic_uri3027 */ static ANTLR3_BITWORD FOLLOW_lws_in_addr_spec_with_generic_uri3027_bits[] = { ANTLR3_UINT64_LIT(0x000001E9188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_lws_in_addr_spec_with_generic_uri3027 = { FOLLOW_lws_in_addr_spec_with_generic_uri3027_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_uri_in_addr_spec_with_generic_uri3032 */ static ANTLR3_BITWORD FOLLOW_uri_in_addr_spec_with_generic_uri3032_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000802) }; static ANTLR3_BITSET_LIST FOLLOW_uri_in_addr_spec_with_generic_uri3032 = { FOLLOW_uri_in_addr_spec_with_generic_uri3032_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_generic_uri_in_addr_spec_with_generic_uri3044 */ static ANTLR3_BITWORD FOLLOW_generic_uri_in_addr_spec_with_generic_uri3044_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000802) }; static ANTLR3_BITSET_LIST FOLLOW_generic_uri_in_addr_spec_with_generic_uri3044 = { FOLLOW_generic_uri_in_addr_spec_with_generic_uri3044_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_lws_in_addr_spec_with_generic_uri3053 */ static ANTLR3_BITWORD FOLLOW_lws_in_addr_spec_with_generic_uri3053_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_lws_in_addr_spec_with_generic_uri3053 = { FOLLOW_lws_in_addr_spec_with_generic_uri3053_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_lws_in_fast_addr_spec_with_generic_uri3068 */ static ANTLR3_BITWORD FOLLOW_lws_in_fast_addr_spec_with_generic_uri3068_bits[] = { ANTLR3_UINT64_LIT(0x000001E9188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_lws_in_fast_addr_spec_with_generic_uri3068 = { FOLLOW_lws_in_fast_addr_spec_with_generic_uri3068_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_fast_uri_in_fast_addr_spec_with_generic_uri3073 */ static ANTLR3_BITWORD FOLLOW_fast_uri_in_fast_addr_spec_with_generic_uri3073_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000802) }; static ANTLR3_BITSET_LIST FOLLOW_fast_uri_in_fast_addr_spec_with_generic_uri3073 = { FOLLOW_fast_uri_in_fast_addr_spec_with_generic_uri3073_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_generic_uri_in_fast_addr_spec_with_generic_uri3085 */ static ANTLR3_BITWORD FOLLOW_generic_uri_in_fast_addr_spec_with_generic_uri3085_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000802) }; static ANTLR3_BITSET_LIST FOLLOW_generic_uri_in_fast_addr_spec_with_generic_uri3085 = { FOLLOW_generic_uri_in_fast_addr_spec_with_generic_uri3085_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_lws_in_fast_addr_spec_with_generic_uri3094 */ static ANTLR3_BITWORD FOLLOW_lws_in_fast_addr_spec_with_generic_uri3094_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_lws_in_fast_addr_spec_with_generic_uri3094 = { FOLLOW_lws_in_fast_addr_spec_with_generic_uri3094_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_lws_in_paramless_addr_spec3107 */ static ANTLR3_BITWORD FOLLOW_lws_in_paramless_addr_spec3107_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_lws_in_paramless_addr_spec3107 = { FOLLOW_lws_in_paramless_addr_spec3107_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_paramless_uri_in_paramless_addr_spec3110 */ static ANTLR3_BITWORD FOLLOW_paramless_uri_in_paramless_addr_spec3110_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000802) }; static ANTLR3_BITSET_LIST FOLLOW_paramless_uri_in_paramless_addr_spec3110 = { FOLLOW_paramless_uri_in_paramless_addr_spec3110_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_lws_in_paramless_addr_spec3114 */ static ANTLR3_BITWORD FOLLOW_lws_in_paramless_addr_spec3114_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_lws_in_paramless_addr_spec3114 = { FOLLOW_lws_in_paramless_addr_spec3114_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_lws_in_paramless_addr_spec_with_generic_uri3128 */ static ANTLR3_BITWORD FOLLOW_lws_in_paramless_addr_spec_with_generic_uri3128_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_lws_in_paramless_addr_spec_with_generic_uri3128 = { FOLLOW_lws_in_paramless_addr_spec_with_generic_uri3128_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_paramless_uri_in_paramless_addr_spec_with_generic_uri3133 */ static ANTLR3_BITWORD FOLLOW_paramless_uri_in_paramless_addr_spec_with_generic_uri3133_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000802) }; static ANTLR3_BITSET_LIST FOLLOW_paramless_uri_in_paramless_addr_spec_with_generic_uri3133 = { FOLLOW_paramless_uri_in_paramless_addr_spec_with_generic_uri3133_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_generic_uri_for_from_to_contact_addr_spec_in_paramless_addr_spec_with_generic_uri3145 */ static ANTLR3_BITWORD FOLLOW_generic_uri_for_from_to_contact_addr_spec_in_paramless_addr_spec_with_generic_uri3145_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000802) }; static ANTLR3_BITSET_LIST FOLLOW_generic_uri_for_from_to_contact_addr_spec_in_paramless_addr_spec_with_generic_uri3145 = { FOLLOW_generic_uri_for_from_to_contact_addr_spec_in_paramless_addr_spec_with_generic_uri3145_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_lws_in_paramless_addr_spec_with_generic_uri3153 */ static ANTLR3_BITWORD FOLLOW_lws_in_paramless_addr_spec_with_generic_uri3153_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_lws_in_paramless_addr_spec_with_generic_uri3153 = { FOLLOW_lws_in_paramless_addr_spec_with_generic_uri3153_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_display_name_tokens3163 */ static ANTLR3_BITWORD FOLLOW_token_in_display_name_tokens3163_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000802) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_display_name_tokens3163 = { FOLLOW_token_in_display_name_tokens3163_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_lws_in_display_name_tokens3166 */ static ANTLR3_BITWORD FOLLOW_lws_in_display_name_tokens3166_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_lws_in_display_name_tokens3166 = { FOLLOW_lws_in_display_name_tokens3166_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_display_name_tokens3168 */ static ANTLR3_BITWORD FOLLOW_token_in_display_name_tokens3168_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000802) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_display_name_tokens3168 = { FOLLOW_token_in_display_name_tokens3168_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_display_name_tokens_in_display_name3182 */ static ANTLR3_BITWORD FOLLOW_display_name_tokens_in_display_name3182_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_display_name_tokens_in_display_name3182 = { FOLLOW_display_name_tokens_in_display_name3182_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_quoted_string_in_display_name3193 */ static ANTLR3_BITWORD FOLLOW_quoted_string_in_display_name3193_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_quoted_string_in_display_name3193 = { FOLLOW_quoted_string_in_display_name3193_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_contact_extension_in_contact_params3221 */ static ANTLR3_BITWORD FOLLOW_contact_extension_in_contact_params3221_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_contact_extension_in_contact_params3221 = { FOLLOW_contact_extension_in_contact_params3221_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_generic_param_in_contact_extension3234 */ static ANTLR3_BITWORD FOLLOW_generic_param_in_contact_extension3234_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_generic_param_in_contact_extension3234 = { FOLLOW_generic_param_in_contact_extension3234_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DIGIT_in_delta_seconds3248 */ static ANTLR3_BITWORD FOLLOW_DIGIT_in_delta_seconds3248_bits[] = { ANTLR3_UINT64_LIT(0x0000000000002002) }; static ANTLR3_BITSET_LIST FOLLOW_DIGIT_in_delta_seconds3248 = { FOLLOW_DIGIT_in_delta_seconds3248_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_content_length_token3263 */ static ANTLR3_BITWORD FOLLOW_token_in_content_length_token3263_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_content_length_token3263 = { FOLLOW_token_in_content_length_token3263_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_content_length_token_in_header_content_length3287 */ static ANTLR3_BITWORD FOLLOW_content_length_token_in_header_content_length3287_bits[] = { ANTLR3_UINT64_LIT(0x0000001000100100) }; static ANTLR3_BITSET_LIST FOLLOW_content_length_token_in_header_content_length3287 = { FOLLOW_content_length_token_in_header_content_length3287_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_hcolon_in_header_content_length3296 */ static ANTLR3_BITWORD FOLLOW_hcolon_in_header_content_length3296_bits[] = { ANTLR3_UINT64_LIT(0x0000000000002000) }; static ANTLR3_BITSET_LIST FOLLOW_hcolon_in_header_content_length3296 = { FOLLOW_hcolon_in_header_content_length3296_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_content_length_in_header_content_length3303 */ static ANTLR3_BITWORD FOLLOW_content_length_in_header_content_length3303_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_content_length_in_header_content_length3303 = { FOLLOW_content_length_in_header_content_length3303_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DIGIT_in_content_length3316 */ static ANTLR3_BITWORD FOLLOW_DIGIT_in_content_length3316_bits[] = { ANTLR3_UINT64_LIT(0x0000000000002002) }; static ANTLR3_BITSET_LIST FOLLOW_DIGIT_in_content_length3316 = { FOLLOW_DIGIT_in_content_length3316_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_content_type_token3328 */ static ANTLR3_BITWORD FOLLOW_token_in_content_type_token3328_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_content_type_token3328 = { FOLLOW_token_in_content_type_token3328_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_content_type_token_in_header_content_type3352 */ static ANTLR3_BITWORD FOLLOW_content_type_token_in_header_content_type3352_bits[] = { ANTLR3_UINT64_LIT(0x0000001000100100) }; static ANTLR3_BITSET_LIST FOLLOW_content_type_token_in_header_content_type3352 = { FOLLOW_content_type_token_in_header_content_type3352_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_hcolon_in_header_content_type3355 */ static ANTLR3_BITWORD FOLLOW_hcolon_in_header_content_type3355_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_hcolon_in_header_content_type3355 = { FOLLOW_hcolon_in_header_content_type3355_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_media_type_in_header_content_type3357 */ static ANTLR3_BITWORD FOLLOW_media_type_in_header_content_type3357_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_media_type_in_header_content_type3357 = { FOLLOW_media_type_in_header_content_type3357_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_m_type_in_media_type3373 */ static ANTLR3_BITWORD FOLLOW_m_type_in_media_type3373_bits[] = { ANTLR3_UINT64_LIT(0x0000001800000800) }; static ANTLR3_BITSET_LIST FOLLOW_m_type_in_media_type3373 = { FOLLOW_m_type_in_media_type3373_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_slash_in_media_type3382 */ static ANTLR3_BITWORD FOLLOW_slash_in_media_type3382_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_slash_in_media_type3382 = { FOLLOW_slash_in_media_type3382_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_m_subtype_in_media_type3389 */ static ANTLR3_BITWORD FOLLOW_m_subtype_in_media_type3389_bits[] = { ANTLR3_UINT64_LIT(0x0000001400000802) }; static ANTLR3_BITSET_LIST FOLLOW_m_subtype_in_media_type3389 = { FOLLOW_m_subtype_in_media_type3389_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_semi_in_media_type3399 */ static ANTLR3_BITWORD FOLLOW_semi_in_media_type3399_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_semi_in_media_type3399 = { FOLLOW_semi_in_media_type3399_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_type_param_in_media_type3401 */ static ANTLR3_BITWORD FOLLOW_type_param_in_media_type3401_bits[] = { ANTLR3_UINT64_LIT(0x0000001400000802) }; static ANTLR3_BITSET_LIST FOLLOW_type_param_in_media_type3401 = { FOLLOW_type_param_in_media_type3401_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_semi_in_media_type3406 */ static ANTLR3_BITWORD FOLLOW_semi_in_media_type3406_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_semi_in_media_type3406 = { FOLLOW_semi_in_media_type3406_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_generic_param_in_media_type3408 */ static ANTLR3_BITWORD FOLLOW_generic_param_in_media_type3408_bits[] = { ANTLR3_UINT64_LIT(0x0000001400000802) }; static ANTLR3_BITSET_LIST FOLLOW_generic_param_in_media_type3408 = { FOLLOW_generic_param_in_media_type3408_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_m_type3421 */ static ANTLR3_BITWORD FOLLOW_token_in_m_type3421_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_m_type3421 = { FOLLOW_token_in_m_type3421_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_type_param3430 */ static ANTLR3_BITWORD FOLLOW_token_in_type_param3430_bits[] = { ANTLR3_UINT64_LIT(0x0000001000040800) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_type_param3430 = { FOLLOW_token_in_type_param3430_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_equal_in_type_param3432 */ static ANTLR3_BITWORD FOLLOW_equal_in_type_param3432_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_equal_in_type_param3432 = { FOLLOW_equal_in_type_param3432_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_type_param_value_in_type_param3434 */ static ANTLR3_BITWORD FOLLOW_type_param_value_in_type_param3434_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_type_param_value_in_type_param3434 = { FOLLOW_type_param_value_in_type_param3434_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_m_type_in_type_param_value3441 */ static ANTLR3_BITWORD FOLLOW_m_type_in_type_param_value3441_bits[] = { ANTLR3_UINT64_LIT(0x0000001800000800) }; static ANTLR3_BITSET_LIST FOLLOW_m_type_in_type_param_value3441 = { FOLLOW_m_type_in_type_param_value3441_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_slash_in_type_param_value3443 */ static ANTLR3_BITWORD FOLLOW_slash_in_type_param_value3443_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_slash_in_type_param_value3443 = { FOLLOW_slash_in_type_param_value3443_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_m_subtype_in_type_param_value3445 */ static ANTLR3_BITWORD FOLLOW_m_subtype_in_type_param_value3445_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_m_subtype_in_type_param_value3445 = { FOLLOW_m_subtype_in_type_param_value3445_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_m_subtype3464 */ static ANTLR3_BITWORD FOLLOW_token_in_m_subtype3464_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_m_subtype3464 = { FOLLOW_token_in_m_subtype3464_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_cseq_token3477 */ static ANTLR3_BITWORD FOLLOW_token_in_cseq_token3477_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_cseq_token3477 = { FOLLOW_token_in_cseq_token3477_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_cseq_token_in_header_cseq3500 */ static ANTLR3_BITWORD FOLLOW_cseq_token_in_header_cseq3500_bits[] = { ANTLR3_UINT64_LIT(0x0000001000100100) }; static ANTLR3_BITSET_LIST FOLLOW_cseq_token_in_header_cseq3500 = { FOLLOW_cseq_token_in_header_cseq3500_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_hcolon_in_header_cseq3506 */ static ANTLR3_BITWORD FOLLOW_hcolon_in_header_cseq3506_bits[] = { ANTLR3_UINT64_LIT(0x0000000000002000) }; static ANTLR3_BITSET_LIST FOLLOW_hcolon_in_header_cseq3506 = { FOLLOW_hcolon_in_header_cseq3506_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_seq_number_in_header_cseq3512 */ static ANTLR3_BITWORD FOLLOW_seq_number_in_header_cseq3512_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000800) }; static ANTLR3_BITSET_LIST FOLLOW_seq_number_in_header_cseq3512 = { FOLLOW_seq_number_in_header_cseq3512_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_lws_in_header_cseq3520 */ static ANTLR3_BITWORD FOLLOW_lws_in_header_cseq3520_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_lws_in_header_cseq3520 = { FOLLOW_lws_in_header_cseq3520_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_method_in_header_cseq3526 */ static ANTLR3_BITWORD FOLLOW_method_in_header_cseq3526_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_method_in_header_cseq3526 = { FOLLOW_method_in_header_cseq3526_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DIGIT_in_seq_number3540 */ static ANTLR3_BITWORD FOLLOW_DIGIT_in_seq_number3540_bits[] = { ANTLR3_UINT64_LIT(0x0000000000002002) }; static ANTLR3_BITSET_LIST FOLLOW_DIGIT_in_seq_number3540 = { FOLLOW_DIGIT_in_seq_number3540_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_date_token3552 */ static ANTLR3_BITWORD FOLLOW_token_in_date_token3552_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_date_token3552 = { FOLLOW_token_in_date_token3552_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_date_token_in_header_date3577 */ static ANTLR3_BITWORD FOLLOW_date_token_in_header_date3577_bits[] = { ANTLR3_UINT64_LIT(0x0000001000100100) }; static ANTLR3_BITSET_LIST FOLLOW_date_token_in_header_date3577 = { FOLLOW_date_token_in_header_date3577_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_hcolon_in_header_date3581 */ static ANTLR3_BITWORD FOLLOW_hcolon_in_header_date3581_bits[] = { ANTLR3_UINT64_LIT(0x0000000000080400) }; static ANTLR3_BITSET_LIST FOLLOW_hcolon_in_header_date3581 = { FOLLOW_hcolon_in_header_date3581_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_sip_date_in_header_date3583 */ static ANTLR3_BITWORD FOLLOW_sip_date_in_header_date3583_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_sip_date_in_header_date3583 = { FOLLOW_sip_date_in_header_date3583_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_sip_date_in_date3600 */ static ANTLR3_BITWORD FOLLOW_sip_date_in_date3600_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_sip_date_in_date3600 = { FOLLOW_sip_date_in_date3600_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_alpha_in_sip_date3612 */ static ANTLR3_BITWORD FOLLOW_alpha_in_sip_date3612_bits[] = { ANTLR3_UINT64_LIT(0x0000000000080400) }; static ANTLR3_BITSET_LIST FOLLOW_alpha_in_sip_date3612 = { FOLLOW_alpha_in_sip_date3612_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_alpha_in_sip_date3614 */ static ANTLR3_BITWORD FOLLOW_alpha_in_sip_date3614_bits[] = { ANTLR3_UINT64_LIT(0x0000000000080400) }; static ANTLR3_BITSET_LIST FOLLOW_alpha_in_sip_date3614 = { FOLLOW_alpha_in_sip_date3614_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_alpha_in_sip_date3616 */ static ANTLR3_BITWORD FOLLOW_alpha_in_sip_date3616_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000200) }; static ANTLR3_BITSET_LIST FOLLOW_alpha_in_sip_date3616 = { FOLLOW_alpha_in_sip_date3616_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_sip_date3618 */ static ANTLR3_BITWORD FOLLOW_COMMA_in_sip_date3618_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000000) }; static ANTLR3_BITSET_LIST FOLLOW_COMMA_in_sip_date3618 = { FOLLOW_COMMA_in_sip_date3618_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SP_in_sip_date3620 */ static ANTLR3_BITWORD FOLLOW_SP_in_sip_date3620_bits[] = { ANTLR3_UINT64_LIT(0x0000000000002000) }; static ANTLR3_BITSET_LIST FOLLOW_SP_in_sip_date3620 = { FOLLOW_SP_in_sip_date3620_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DIGIT_in_sip_date3623 */ static ANTLR3_BITWORD FOLLOW_DIGIT_in_sip_date3623_bits[] = { ANTLR3_UINT64_LIT(0x0000000000002000) }; static ANTLR3_BITSET_LIST FOLLOW_DIGIT_in_sip_date3623 = { FOLLOW_DIGIT_in_sip_date3623_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DIGIT_in_sip_date3625 */ static ANTLR3_BITWORD FOLLOW_DIGIT_in_sip_date3625_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000000) }; static ANTLR3_BITSET_LIST FOLLOW_DIGIT_in_sip_date3625 = { FOLLOW_DIGIT_in_sip_date3625_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SP_in_sip_date3627 */ static ANTLR3_BITWORD FOLLOW_SP_in_sip_date3627_bits[] = { ANTLR3_UINT64_LIT(0x0000000000080400) }; static ANTLR3_BITSET_LIST FOLLOW_SP_in_sip_date3627 = { FOLLOW_SP_in_sip_date3627_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_alpha_in_sip_date3629 */ static ANTLR3_BITWORD FOLLOW_alpha_in_sip_date3629_bits[] = { ANTLR3_UINT64_LIT(0x0000000000080400) }; static ANTLR3_BITSET_LIST FOLLOW_alpha_in_sip_date3629 = { FOLLOW_alpha_in_sip_date3629_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_alpha_in_sip_date3631 */ static ANTLR3_BITWORD FOLLOW_alpha_in_sip_date3631_bits[] = { ANTLR3_UINT64_LIT(0x0000000000080400) }; static ANTLR3_BITSET_LIST FOLLOW_alpha_in_sip_date3631 = { FOLLOW_alpha_in_sip_date3631_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_alpha_in_sip_date3633 */ static ANTLR3_BITWORD FOLLOW_alpha_in_sip_date3633_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000000) }; static ANTLR3_BITSET_LIST FOLLOW_alpha_in_sip_date3633 = { FOLLOW_alpha_in_sip_date3633_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SP_in_sip_date3635 */ static ANTLR3_BITWORD FOLLOW_SP_in_sip_date3635_bits[] = { ANTLR3_UINT64_LIT(0x0000000000002000) }; static ANTLR3_BITSET_LIST FOLLOW_SP_in_sip_date3635 = { FOLLOW_SP_in_sip_date3635_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DIGIT_in_sip_date3637 */ static ANTLR3_BITWORD FOLLOW_DIGIT_in_sip_date3637_bits[] = { ANTLR3_UINT64_LIT(0x0000000000002000) }; static ANTLR3_BITSET_LIST FOLLOW_DIGIT_in_sip_date3637 = { FOLLOW_DIGIT_in_sip_date3637_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DIGIT_in_sip_date3639 */ static ANTLR3_BITWORD FOLLOW_DIGIT_in_sip_date3639_bits[] = { ANTLR3_UINT64_LIT(0x0000000000002000) }; static ANTLR3_BITSET_LIST FOLLOW_DIGIT_in_sip_date3639 = { FOLLOW_DIGIT_in_sip_date3639_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DIGIT_in_sip_date3641 */ static ANTLR3_BITWORD FOLLOW_DIGIT_in_sip_date3641_bits[] = { ANTLR3_UINT64_LIT(0x0000000000002000) }; static ANTLR3_BITSET_LIST FOLLOW_DIGIT_in_sip_date3641 = { FOLLOW_DIGIT_in_sip_date3641_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DIGIT_in_sip_date3643 */ static ANTLR3_BITWORD FOLLOW_DIGIT_in_sip_date3643_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000000) }; static ANTLR3_BITSET_LIST FOLLOW_DIGIT_in_sip_date3643 = { FOLLOW_DIGIT_in_sip_date3643_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SP_in_sip_date3645 */ static ANTLR3_BITWORD FOLLOW_SP_in_sip_date3645_bits[] = { ANTLR3_UINT64_LIT(0x0000000000002000) }; static ANTLR3_BITSET_LIST FOLLOW_SP_in_sip_date3645 = { FOLLOW_SP_in_sip_date3645_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DIGIT_in_sip_date3648 */ static ANTLR3_BITWORD FOLLOW_DIGIT_in_sip_date3648_bits[] = { ANTLR3_UINT64_LIT(0x0000000000002000) }; static ANTLR3_BITSET_LIST FOLLOW_DIGIT_in_sip_date3648 = { FOLLOW_DIGIT_in_sip_date3648_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DIGIT_in_sip_date3650 */ static ANTLR3_BITWORD FOLLOW_DIGIT_in_sip_date3650_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000100) }; static ANTLR3_BITSET_LIST FOLLOW_DIGIT_in_sip_date3650 = { FOLLOW_DIGIT_in_sip_date3650_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_sip_date3653 */ static ANTLR3_BITWORD FOLLOW_COLON_in_sip_date3653_bits[] = { ANTLR3_UINT64_LIT(0x0000000000002000) }; static ANTLR3_BITSET_LIST FOLLOW_COLON_in_sip_date3653 = { FOLLOW_COLON_in_sip_date3653_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DIGIT_in_sip_date3655 */ static ANTLR3_BITWORD FOLLOW_DIGIT_in_sip_date3655_bits[] = { ANTLR3_UINT64_LIT(0x0000000000002000) }; static ANTLR3_BITSET_LIST FOLLOW_DIGIT_in_sip_date3655 = { FOLLOW_DIGIT_in_sip_date3655_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DIGIT_in_sip_date3657 */ static ANTLR3_BITWORD FOLLOW_DIGIT_in_sip_date3657_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000100) }; static ANTLR3_BITSET_LIST FOLLOW_DIGIT_in_sip_date3657 = { FOLLOW_DIGIT_in_sip_date3657_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_sip_date3660 */ static ANTLR3_BITWORD FOLLOW_COLON_in_sip_date3660_bits[] = { ANTLR3_UINT64_LIT(0x0000000000002000) }; static ANTLR3_BITSET_LIST FOLLOW_COLON_in_sip_date3660 = { FOLLOW_COLON_in_sip_date3660_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DIGIT_in_sip_date3662 */ static ANTLR3_BITWORD FOLLOW_DIGIT_in_sip_date3662_bits[] = { ANTLR3_UINT64_LIT(0x0000000000002000) }; static ANTLR3_BITSET_LIST FOLLOW_DIGIT_in_sip_date3662 = { FOLLOW_DIGIT_in_sip_date3662_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DIGIT_in_sip_date3664 */ static ANTLR3_BITWORD FOLLOW_DIGIT_in_sip_date3664_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000000) }; static ANTLR3_BITSET_LIST FOLLOW_DIGIT_in_sip_date3664 = { FOLLOW_DIGIT_in_sip_date3664_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SP_in_sip_date3666 */ static ANTLR3_BITWORD FOLLOW_SP_in_sip_date3666_bits[] = { ANTLR3_UINT64_LIT(0x0000000000080400) }; static ANTLR3_BITSET_LIST FOLLOW_SP_in_sip_date3666 = { FOLLOW_SP_in_sip_date3666_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_alpha_in_sip_date3669 */ static ANTLR3_BITWORD FOLLOW_alpha_in_sip_date3669_bits[] = { ANTLR3_UINT64_LIT(0x0000000000080400) }; static ANTLR3_BITSET_LIST FOLLOW_alpha_in_sip_date3669 = { FOLLOW_alpha_in_sip_date3669_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_alpha_in_sip_date3671 */ static ANTLR3_BITWORD FOLLOW_alpha_in_sip_date3671_bits[] = { ANTLR3_UINT64_LIT(0x0000000000080400) }; static ANTLR3_BITSET_LIST FOLLOW_alpha_in_sip_date3671 = { FOLLOW_alpha_in_sip_date3671_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_alpha_in_sip_date3673 */ static ANTLR3_BITWORD FOLLOW_alpha_in_sip_date3673_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_alpha_in_sip_date3673 = { FOLLOW_alpha_in_sip_date3673_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_header_expires3705 */ static ANTLR3_BITWORD FOLLOW_token_in_header_expires3705_bits[] = { ANTLR3_UINT64_LIT(0x0000001000100100) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_header_expires3705 = { FOLLOW_token_in_header_expires3705_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_hcolon_in_header_expires3709 */ static ANTLR3_BITWORD FOLLOW_hcolon_in_header_expires3709_bits[] = { ANTLR3_UINT64_LIT(0x0000000000002000) }; static ANTLR3_BITSET_LIST FOLLOW_hcolon_in_header_expires3709 = { FOLLOW_hcolon_in_header_expires3709_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_delta_seconds_in_header_expires3711 */ static ANTLR3_BITWORD FOLLOW_delta_seconds_in_header_expires3711_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_delta_seconds_in_header_expires3711 = { FOLLOW_delta_seconds_in_header_expires3711_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_from_token3729 */ static ANTLR3_BITWORD FOLLOW_token_in_from_token3729_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_from_token3729 = { FOLLOW_token_in_from_token3729_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_from_token_in_header_from3755 */ static ANTLR3_BITWORD FOLLOW_from_token_in_header_from3755_bits[] = { ANTLR3_UINT64_LIT(0x0000001000100100) }; static ANTLR3_BITSET_LIST FOLLOW_from_token_in_header_from3755 = { FOLLOW_from_token_in_header_from3755_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_sp_tab_colon_in_header_from3758 */ static ANTLR3_BITWORD FOLLOW_sp_tab_colon_in_header_from3758_bits[] = { ANTLR3_UINT64_LIT(0x000001F118ABBC40) }; static ANTLR3_BITSET_LIST FOLLOW_sp_tab_colon_in_header_from3758 = { FOLLOW_sp_tab_colon_in_header_from3758_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_from_spec_in_header_from3760 */ static ANTLR3_BITWORD FOLLOW_from_spec_in_header_from3760_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_from_spec_in_header_from3760 = { FOLLOW_from_spec_in_header_from3760_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_name_addr_with_generic_uri_in_from_spec3788 */ static ANTLR3_BITWORD FOLLOW_name_addr_with_generic_uri_in_from_spec3788_bits[] = { ANTLR3_UINT64_LIT(0x0000000400000002) }; static ANTLR3_BITSET_LIST FOLLOW_name_addr_with_generic_uri_in_from_spec3788 = { FOLLOW_name_addr_with_generic_uri_in_from_spec3788_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_paramless_addr_spec_with_generic_uri_in_from_spec3793 */ static ANTLR3_BITWORD FOLLOW_paramless_addr_spec_with_generic_uri_in_from_spec3793_bits[] = { ANTLR3_UINT64_LIT(0x0000000400000002) }; static ANTLR3_BITSET_LIST FOLLOW_paramless_addr_spec_with_generic_uri_in_from_spec3793 = { FOLLOW_paramless_addr_spec_with_generic_uri_in_from_spec3793_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SEMI_in_from_spec3806 */ static ANTLR3_BITWORD FOLLOW_SEMI_in_from_spec3806_bits[] = { ANTLR3_UINT64_LIT(0x000001F1188ABC40) }; static ANTLR3_BITSET_LIST FOLLOW_SEMI_in_from_spec3806 = { FOLLOW_SEMI_in_from_spec3806_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_lws_in_from_spec3808 */ static ANTLR3_BITWORD FOLLOW_lws_in_from_spec3808_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_lws_in_from_spec3808 = { FOLLOW_lws_in_from_spec3808_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_from_param_in_from_spec3811 */ static ANTLR3_BITWORD FOLLOW_from_param_in_from_spec3811_bits[] = { ANTLR3_UINT64_LIT(0x0000001400000802) }; static ANTLR3_BITSET_LIST FOLLOW_from_param_in_from_spec3811 = { FOLLOW_from_param_in_from_spec3811_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_lws_in_from_spec3813 */ static ANTLR3_BITWORD FOLLOW_lws_in_from_spec3813_bits[] = { ANTLR3_UINT64_LIT(0x0000000400000002) }; static ANTLR3_BITSET_LIST FOLLOW_lws_in_from_spec3813 = { FOLLOW_lws_in_from_spec3813_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_generic_param_in_from_param3830 */ static ANTLR3_BITWORD FOLLOW_generic_param_in_from_param3830_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_generic_param_in_from_param3830 = { FOLLOW_generic_param_in_from_param3830_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_header_max_forwards3864 */ static ANTLR3_BITWORD FOLLOW_token_in_header_max_forwards3864_bits[] = { ANTLR3_UINT64_LIT(0x0000001000100100) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_header_max_forwards3864 = { FOLLOW_token_in_header_max_forwards3864_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_hcolon_in_header_max_forwards3868 */ static ANTLR3_BITWORD FOLLOW_hcolon_in_header_max_forwards3868_bits[] = { ANTLR3_UINT64_LIT(0x0000000000002000) }; static ANTLR3_BITSET_LIST FOLLOW_hcolon_in_header_max_forwards3868 = { FOLLOW_hcolon_in_header_max_forwards3868_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_max_forwards_in_header_max_forwards3874 */ static ANTLR3_BITWORD FOLLOW_max_forwards_in_header_max_forwards3874_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_max_forwards_in_header_max_forwards3874 = { FOLLOW_max_forwards_in_header_max_forwards3874_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DIGIT_in_max_forwards3887 */ static ANTLR3_BITWORD FOLLOW_DIGIT_in_max_forwards3887_bits[] = { ANTLR3_UINT64_LIT(0x0000000000002002) }; static ANTLR3_BITSET_LIST FOLLOW_DIGIT_in_max_forwards3887 = { FOLLOW_DIGIT_in_max_forwards3887_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_header_proxy_authenticate3918 */ static ANTLR3_BITWORD FOLLOW_token_in_header_proxy_authenticate3918_bits[] = { ANTLR3_UINT64_LIT(0x0000001000100100) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_header_proxy_authenticate3918 = { FOLLOW_token_in_header_proxy_authenticate3918_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_hcolon_in_header_proxy_authenticate3924 */ static ANTLR3_BITWORD FOLLOW_hcolon_in_header_proxy_authenticate3924_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_hcolon_in_header_proxy_authenticate3924 = { FOLLOW_hcolon_in_header_proxy_authenticate3924_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_challenge_in_header_proxy_authenticate3927 */ static ANTLR3_BITWORD FOLLOW_challenge_in_header_proxy_authenticate3927_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000A02) }; static ANTLR3_BITSET_LIST FOLLOW_challenge_in_header_proxy_authenticate3927 = { FOLLOW_challenge_in_header_proxy_authenticate3927_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_comma_in_header_proxy_authenticate3939 */ static ANTLR3_BITWORD FOLLOW_comma_in_header_proxy_authenticate3939_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_comma_in_header_proxy_authenticate3939 = { FOLLOW_comma_in_header_proxy_authenticate3939_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_challenge_in_header_proxy_authenticate3945 */ static ANTLR3_BITWORD FOLLOW_challenge_in_header_proxy_authenticate3945_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000A02) }; static ANTLR3_BITSET_LIST FOLLOW_challenge_in_header_proxy_authenticate3945 = { FOLLOW_challenge_in_header_proxy_authenticate3945_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_challenge3972 */ static ANTLR3_BITWORD FOLLOW_token_in_challenge3972_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000800) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_challenge3972 = { FOLLOW_token_in_challenge3972_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_lws_in_challenge3983 */ static ANTLR3_BITWORD FOLLOW_lws_in_challenge3983_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_lws_in_challenge3983 = { FOLLOW_lws_in_challenge3983_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_digest_cln_in_challenge3985 */ static ANTLR3_BITWORD FOLLOW_digest_cln_in_challenge3985_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000A02) }; static ANTLR3_BITSET_LIST FOLLOW_digest_cln_in_challenge3985 = { FOLLOW_digest_cln_in_challenge3985_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_comma_in_challenge3989 */ static ANTLR3_BITWORD FOLLOW_comma_in_challenge3989_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_comma_in_challenge3989 = { FOLLOW_comma_in_challenge3989_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_digest_cln_in_challenge3991 */ static ANTLR3_BITWORD FOLLOW_digest_cln_in_challenge3991_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000A02) }; static ANTLR3_BITSET_LIST FOLLOW_digest_cln_in_challenge3991 = { FOLLOW_digest_cln_in_challenge3991_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_other_challenge_in_challenge4022 */ static ANTLR3_BITWORD FOLLOW_other_challenge_in_challenge4022_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_other_challenge_in_challenge4022 = { FOLLOW_other_challenge_in_challenge4022_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_auth_scheme_in_other_challenge4037 */ static ANTLR3_BITWORD FOLLOW_auth_scheme_in_other_challenge4037_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000800) }; static ANTLR3_BITSET_LIST FOLLOW_auth_scheme_in_other_challenge4037 = { FOLLOW_auth_scheme_in_other_challenge4037_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_lws_in_other_challenge4046 */ static ANTLR3_BITWORD FOLLOW_lws_in_other_challenge4046_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_lws_in_other_challenge4046 = { FOLLOW_lws_in_other_challenge4046_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_auth_param_in_other_challenge4048 */ static ANTLR3_BITWORD FOLLOW_auth_param_in_other_challenge4048_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000A02) }; static ANTLR3_BITSET_LIST FOLLOW_auth_param_in_other_challenge4048 = { FOLLOW_auth_param_in_other_challenge4048_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_comma_in_other_challenge4075 */ static ANTLR3_BITWORD FOLLOW_comma_in_other_challenge4075_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_comma_in_other_challenge4075 = { FOLLOW_comma_in_other_challenge4075_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_auth_param_in_other_challenge4077 */ static ANTLR3_BITWORD FOLLOW_auth_param_in_other_challenge4077_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000A02) }; static ANTLR3_BITSET_LIST FOLLOW_auth_param_in_other_challenge4077 = { FOLLOW_auth_param_in_other_challenge4077_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_realm_in_digest_cln4094 */ static ANTLR3_BITWORD FOLLOW_realm_in_digest_cln4094_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_realm_in_digest_cln4094 = { FOLLOW_realm_in_digest_cln4094_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_nonce_in_digest_cln4102 */ static ANTLR3_BITWORD FOLLOW_nonce_in_digest_cln4102_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_nonce_in_digest_cln4102 = { FOLLOW_nonce_in_digest_cln4102_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_algorithm_in_digest_cln4110 */ static ANTLR3_BITWORD FOLLOW_algorithm_in_digest_cln4110_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_algorithm_in_digest_cln4110 = { FOLLOW_algorithm_in_digest_cln4110_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_opaque_in_digest_cln4118 */ static ANTLR3_BITWORD FOLLOW_opaque_in_digest_cln4118_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_opaque_in_digest_cln4118 = { FOLLOW_opaque_in_digest_cln4118_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_qop_opts_in_digest_cln4127 */ static ANTLR3_BITWORD FOLLOW_qop_opts_in_digest_cln4127_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_qop_opts_in_digest_cln4127 = { FOLLOW_qop_opts_in_digest_cln4127_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_domain_in_digest_cln4135 */ static ANTLR3_BITWORD FOLLOW_domain_in_digest_cln4135_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_domain_in_digest_cln4135 = { FOLLOW_domain_in_digest_cln4135_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_stale_in_digest_cln4143 */ static ANTLR3_BITWORD FOLLOW_stale_in_digest_cln4143_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_stale_in_digest_cln4143 = { FOLLOW_stale_in_digest_cln4143_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_auth_param_in_digest_cln4154 */ static ANTLR3_BITWORD FOLLOW_auth_param_in_digest_cln4154_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_auth_param_in_digest_cln4154 = { FOLLOW_auth_param_in_digest_cln4154_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_realm4175 */ static ANTLR3_BITWORD FOLLOW_token_in_realm4175_bits[] = { ANTLR3_UINT64_LIT(0x0000001000040800) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_realm4175 = { FOLLOW_token_in_realm4175_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_equal_in_realm4179 */ static ANTLR3_BITWORD FOLLOW_equal_in_realm4179_bits[] = { ANTLR3_UINT64_LIT(0x0000000000010000) }; static ANTLR3_BITSET_LIST FOLLOW_equal_in_realm4179 = { FOLLOW_equal_in_realm4179_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_realm_value_in_realm4181 */ static ANTLR3_BITWORD FOLLOW_realm_value_in_realm4181_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_realm_value_in_realm4181 = { FOLLOW_realm_value_in_realm4181_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_quoted_string_in_realm_value4194 */ static ANTLR3_BITWORD FOLLOW_quoted_string_in_realm_value4194_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_quoted_string_in_realm_value4194 = { FOLLOW_quoted_string_in_realm_value4194_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_domain4213 */ static ANTLR3_BITWORD FOLLOW_token_in_domain4213_bits[] = { ANTLR3_UINT64_LIT(0x0000001000040800) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_domain4213 = { FOLLOW_token_in_domain4213_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_equal_in_domain4217 */ static ANTLR3_BITWORD FOLLOW_equal_in_domain4217_bits[] = { ANTLR3_UINT64_LIT(0x0000000000010000) }; static ANTLR3_BITSET_LIST FOLLOW_equal_in_domain4217 = { FOLLOW_equal_in_domain4217_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_quoted_string_in_domain4219 */ static ANTLR3_BITWORD FOLLOW_quoted_string_in_domain4219_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_quoted_string_in_domain4219 = { FOLLOW_quoted_string_in_domain4219_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_nonce4243 */ static ANTLR3_BITWORD FOLLOW_token_in_nonce4243_bits[] = { ANTLR3_UINT64_LIT(0x0000001000040800) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_nonce4243 = { FOLLOW_token_in_nonce4243_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_equal_in_nonce4247 */ static ANTLR3_BITWORD FOLLOW_equal_in_nonce4247_bits[] = { ANTLR3_UINT64_LIT(0x0000000000010000) }; static ANTLR3_BITSET_LIST FOLLOW_equal_in_nonce4247 = { FOLLOW_equal_in_nonce4247_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_nonce_value_in_nonce4249 */ static ANTLR3_BITWORD FOLLOW_nonce_value_in_nonce4249_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_nonce_value_in_nonce4249 = { FOLLOW_nonce_value_in_nonce4249_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_opaque4267 */ static ANTLR3_BITWORD FOLLOW_token_in_opaque4267_bits[] = { ANTLR3_UINT64_LIT(0x0000001000040800) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_opaque4267 = { FOLLOW_token_in_opaque4267_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_equal_in_opaque4271 */ static ANTLR3_BITWORD FOLLOW_equal_in_opaque4271_bits[] = { ANTLR3_UINT64_LIT(0x0000000000010000) }; static ANTLR3_BITSET_LIST FOLLOW_equal_in_opaque4271 = { FOLLOW_equal_in_opaque4271_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_quoted_string_in_opaque4273 */ static ANTLR3_BITWORD FOLLOW_quoted_string_in_opaque4273_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_quoted_string_in_opaque4273 = { FOLLOW_quoted_string_in_opaque4273_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_stale4293 */ static ANTLR3_BITWORD FOLLOW_token_in_stale4293_bits[] = { ANTLR3_UINT64_LIT(0x0000001000040800) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_stale4293 = { FOLLOW_token_in_stale4293_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_equal_in_stale4297 */ static ANTLR3_BITWORD FOLLOW_equal_in_stale4297_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_equal_in_stale4297 = { FOLLOW_equal_in_stale4297_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_stale_value_in_stale4299 */ static ANTLR3_BITWORD FOLLOW_stale_value_in_stale4299_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_stale_value_in_stale4299 = { FOLLOW_stale_value_in_stale4299_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_stale_value4309 */ static ANTLR3_BITWORD FOLLOW_token_in_stale_value4309_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_stale_value4309 = { FOLLOW_token_in_stale_value4309_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_algorithm4327 */ static ANTLR3_BITWORD FOLLOW_token_in_algorithm4327_bits[] = { ANTLR3_UINT64_LIT(0x0000001000040800) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_algorithm4327 = { FOLLOW_token_in_algorithm4327_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_equal_in_algorithm4331 */ static ANTLR3_BITWORD FOLLOW_equal_in_algorithm4331_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_equal_in_algorithm4331 = { FOLLOW_equal_in_algorithm4331_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_algorithm4337 */ static ANTLR3_BITWORD FOLLOW_token_in_algorithm4337_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_algorithm4337 = { FOLLOW_token_in_algorithm4337_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_qop_opts4369 */ static ANTLR3_BITWORD FOLLOW_token_in_qop_opts4369_bits[] = { ANTLR3_UINT64_LIT(0x0000001000040800) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_qop_opts4369 = { FOLLOW_token_in_qop_opts4369_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_equal_in_qop_opts4373 */ static ANTLR3_BITWORD FOLLOW_equal_in_qop_opts4373_bits[] = { ANTLR3_UINT64_LIT(0x0000000000010000) }; static ANTLR3_BITSET_LIST FOLLOW_equal_in_qop_opts4373 = { FOLLOW_equal_in_qop_opts4373_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DQUOTE_in_qop_opts4378 */ static ANTLR3_BITWORD FOLLOW_DQUOTE_in_qop_opts4378_bits[] = { ANTLR3_UINT64_LIT(0x000001F1188ABC40) }; static ANTLR3_BITSET_LIST FOLLOW_DQUOTE_in_qop_opts4378 = { FOLLOW_DQUOTE_in_qop_opts4378_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_qop_opts_value_in_qop_opts4382 */ static ANTLR3_BITWORD FOLLOW_qop_opts_value_in_qop_opts4382_bits[] = { ANTLR3_UINT64_LIT(0x0000000000010200) }; static ANTLR3_BITSET_LIST FOLLOW_qop_opts_value_in_qop_opts4382 = { FOLLOW_qop_opts_value_in_qop_opts4382_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_qop_opts4387 */ static ANTLR3_BITWORD FOLLOW_COMMA_in_qop_opts4387_bits[] = { ANTLR3_UINT64_LIT(0x000001F1188ABC40) }; static ANTLR3_BITSET_LIST FOLLOW_COMMA_in_qop_opts4387 = { FOLLOW_COMMA_in_qop_opts4387_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_qop_opts_value_in_qop_opts4389 */ static ANTLR3_BITWORD FOLLOW_qop_opts_value_in_qop_opts4389_bits[] = { ANTLR3_UINT64_LIT(0x0000000000010200) }; static ANTLR3_BITSET_LIST FOLLOW_qop_opts_value_in_qop_opts4389 = { FOLLOW_qop_opts_value_in_qop_opts4389_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DQUOTE_in_qop_opts4396 */ static ANTLR3_BITWORD FOLLOW_DQUOTE_in_qop_opts4396_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_DQUOTE_in_qop_opts4396 = { FOLLOW_DQUOTE_in_qop_opts4396_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_lws_in_qop_opts_value4407 */ static ANTLR3_BITWORD FOLLOW_lws_in_qop_opts_value4407_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_lws_in_qop_opts_value4407 = { FOLLOW_lws_in_qop_opts_value4407_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_qop_opts_value4410 */ static ANTLR3_BITWORD FOLLOW_token_in_qop_opts_value4410_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000802) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_qop_opts_value4410 = { FOLLOW_token_in_qop_opts_value4410_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_lws_in_qop_opts_value4412 */ static ANTLR3_BITWORD FOLLOW_lws_in_qop_opts_value4412_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_lws_in_qop_opts_value4412 = { FOLLOW_lws_in_qop_opts_value4412_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_header_proxy_authorization4443 */ static ANTLR3_BITWORD FOLLOW_token_in_header_proxy_authorization4443_bits[] = { ANTLR3_UINT64_LIT(0x0000001000100100) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_header_proxy_authorization4443 = { FOLLOW_token_in_header_proxy_authorization4443_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_hcolon_in_header_proxy_authorization4447 */ static ANTLR3_BITWORD FOLLOW_hcolon_in_header_proxy_authorization4447_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_hcolon_in_header_proxy_authorization4447 = { FOLLOW_hcolon_in_header_proxy_authorization4447_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_credentials_in_header_proxy_authorization4449 */ static ANTLR3_BITWORD FOLLOW_credentials_in_header_proxy_authorization4449_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_credentials_in_header_proxy_authorization4449 = { FOLLOW_credentials_in_header_proxy_authorization4449_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_service_route_token4470 */ static ANTLR3_BITWORD FOLLOW_token_in_service_route_token4470_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_service_route_token4470 = { FOLLOW_token_in_service_route_token4470_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_service_route_token_in_header_service_route4495 */ static ANTLR3_BITWORD FOLLOW_service_route_token_in_header_service_route4495_bits[] = { ANTLR3_UINT64_LIT(0x0000001000100100) }; static ANTLR3_BITSET_LIST FOLLOW_service_route_token_in_header_service_route4495 = { FOLLOW_service_route_token_in_header_service_route4495_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_sp_tab_colon_in_header_service_route4499 */ static ANTLR3_BITWORD FOLLOW_sp_tab_colon_in_header_service_route4499_bits[] = { ANTLR3_UINT64_LIT(0x000001F118ABBC40) }; static ANTLR3_BITSET_LIST FOLLOW_sp_tab_colon_in_header_service_route4499 = { FOLLOW_sp_tab_colon_in_header_service_route4499_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_srv_route_in_header_service_route4501 */ static ANTLR3_BITWORD FOLLOW_srv_route_in_header_service_route4501_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000202) }; static ANTLR3_BITSET_LIST FOLLOW_srv_route_in_header_service_route4501 = { FOLLOW_srv_route_in_header_service_route4501_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_header_service_route4504 */ static ANTLR3_BITWORD FOLLOW_COMMA_in_header_service_route4504_bits[] = { ANTLR3_UINT64_LIT(0x000001F118ABBC40) }; static ANTLR3_BITSET_LIST FOLLOW_COMMA_in_header_service_route4504 = { FOLLOW_COMMA_in_header_service_route4504_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_srv_route_in_header_service_route4506 */ static ANTLR3_BITWORD FOLLOW_srv_route_in_header_service_route4506_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000202) }; static ANTLR3_BITSET_LIST FOLLOW_srv_route_in_header_service_route4506 = { FOLLOW_srv_route_in_header_service_route4506_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_name_addr_in_srv_route4537 */ static ANTLR3_BITWORD FOLLOW_name_addr_in_srv_route4537_bits[] = { ANTLR3_UINT64_LIT(0x0000000400000002) }; static ANTLR3_BITSET_LIST FOLLOW_name_addr_in_srv_route4537 = { FOLLOW_name_addr_in_srv_route4537_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SEMI_in_srv_route4542 */ static ANTLR3_BITWORD FOLLOW_SEMI_in_srv_route4542_bits[] = { ANTLR3_UINT64_LIT(0x000001F1188ABC40) }; static ANTLR3_BITSET_LIST FOLLOW_SEMI_in_srv_route4542 = { FOLLOW_SEMI_in_srv_route4542_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_lws_in_srv_route4544 */ static ANTLR3_BITWORD FOLLOW_lws_in_srv_route4544_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_lws_in_srv_route4544 = { FOLLOW_lws_in_srv_route4544_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_sr_param_in_srv_route4547 */ static ANTLR3_BITWORD FOLLOW_sr_param_in_srv_route4547_bits[] = { ANTLR3_UINT64_LIT(0x0000001400000802) }; static ANTLR3_BITSET_LIST FOLLOW_sr_param_in_srv_route4547 = { FOLLOW_sr_param_in_srv_route4547_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_lws_in_srv_route4549 */ static ANTLR3_BITWORD FOLLOW_lws_in_srv_route4549_bits[] = { ANTLR3_UINT64_LIT(0x0000000400000002) }; static ANTLR3_BITSET_LIST FOLLOW_lws_in_srv_route4549 = { FOLLOW_lws_in_srv_route4549_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_generic_param_in_sr_param4565 */ static ANTLR3_BITWORD FOLLOW_generic_param_in_sr_param4565_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_generic_param_in_sr_param4565 = { FOLLOW_generic_param_in_sr_param4565_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_record_route_token4576 */ static ANTLR3_BITWORD FOLLOW_token_in_record_route_token4576_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_record_route_token4576 = { FOLLOW_token_in_record_route_token4576_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_record_route_token_in_header_record_route4601 */ static ANTLR3_BITWORD FOLLOW_record_route_token_in_header_record_route4601_bits[] = { ANTLR3_UINT64_LIT(0x0000001000100100) }; static ANTLR3_BITSET_LIST FOLLOW_record_route_token_in_header_record_route4601 = { FOLLOW_record_route_token_in_header_record_route4601_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_sp_tab_colon_in_header_record_route4605 */ static ANTLR3_BITWORD FOLLOW_sp_tab_colon_in_header_record_route4605_bits[] = { ANTLR3_UINT64_LIT(0x000001F118ABBC40) }; static ANTLR3_BITSET_LIST FOLLOW_sp_tab_colon_in_header_record_route4605 = { FOLLOW_sp_tab_colon_in_header_record_route4605_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rec_route_in_header_record_route4607 */ static ANTLR3_BITWORD FOLLOW_rec_route_in_header_record_route4607_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000202) }; static ANTLR3_BITSET_LIST FOLLOW_rec_route_in_header_record_route4607 = { FOLLOW_rec_route_in_header_record_route4607_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_header_record_route4611 */ static ANTLR3_BITWORD FOLLOW_COMMA_in_header_record_route4611_bits[] = { ANTLR3_UINT64_LIT(0x000001F118ABBC40) }; static ANTLR3_BITSET_LIST FOLLOW_COMMA_in_header_record_route4611 = { FOLLOW_COMMA_in_header_record_route4611_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rec_route_in_header_record_route4613 */ static ANTLR3_BITWORD FOLLOW_rec_route_in_header_record_route4613_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000202) }; static ANTLR3_BITSET_LIST FOLLOW_rec_route_in_header_record_route4613 = { FOLLOW_rec_route_in_header_record_route4613_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_name_addr_in_rec_route4643 */ static ANTLR3_BITWORD FOLLOW_name_addr_in_rec_route4643_bits[] = { ANTLR3_UINT64_LIT(0x0000000400000002) }; static ANTLR3_BITSET_LIST FOLLOW_name_addr_in_rec_route4643 = { FOLLOW_name_addr_in_rec_route4643_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SEMI_in_rec_route4648 */ static ANTLR3_BITWORD FOLLOW_SEMI_in_rec_route4648_bits[] = { ANTLR3_UINT64_LIT(0x000001F1188ABC40) }; static ANTLR3_BITSET_LIST FOLLOW_SEMI_in_rec_route4648 = { FOLLOW_SEMI_in_rec_route4648_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_lws_in_rec_route4650 */ static ANTLR3_BITWORD FOLLOW_lws_in_rec_route4650_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_lws_in_rec_route4650 = { FOLLOW_lws_in_rec_route4650_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rr_param_in_rec_route4653 */ static ANTLR3_BITWORD FOLLOW_rr_param_in_rec_route4653_bits[] = { ANTLR3_UINT64_LIT(0x0000001400000802) }; static ANTLR3_BITSET_LIST FOLLOW_rr_param_in_rec_route4653 = { FOLLOW_rr_param_in_rec_route4653_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_lws_in_rec_route4655 */ static ANTLR3_BITWORD FOLLOW_lws_in_rec_route4655_bits[] = { ANTLR3_UINT64_LIT(0x0000000400000002) }; static ANTLR3_BITSET_LIST FOLLOW_lws_in_rec_route4655 = { FOLLOW_lws_in_rec_route4655_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_generic_param_in_rr_param4671 */ static ANTLR3_BITWORD FOLLOW_generic_param_in_rr_param4671_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_generic_param_in_rr_param4671 = { FOLLOW_generic_param_in_rr_param4671_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_LPAREN_in_comment4681 */ static ANTLR3_BITWORD FOLLOW_LPAREN_in_comment4681_bits[] = { ANTLR3_UINT64_LIT(0x000001FFFFFFFFF0) }; static ANTLR3_BITSET_LIST FOLLOW_LPAREN_in_comment4681 = { FOLLOW_LPAREN_in_comment4681_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_RPAREN_in_comment4685 */ static ANTLR3_BITWORD FOLLOW_RPAREN_in_comment4685_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_RPAREN_in_comment4685 = { FOLLOW_RPAREN_in_comment4685_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_route_token4697 */ static ANTLR3_BITWORD FOLLOW_token_in_route_token4697_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_route_token4697 = { FOLLOW_token_in_route_token4697_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_route_token_in_header_route4722 */ static ANTLR3_BITWORD FOLLOW_route_token_in_header_route4722_bits[] = { ANTLR3_UINT64_LIT(0x0000001000100100) }; static ANTLR3_BITSET_LIST FOLLOW_route_token_in_header_route4722 = { FOLLOW_route_token_in_header_route4722_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_sp_tab_colon_in_header_route4726 */ static ANTLR3_BITWORD FOLLOW_sp_tab_colon_in_header_route4726_bits[] = { ANTLR3_UINT64_LIT(0x000001F118ABBC40) }; static ANTLR3_BITSET_LIST FOLLOW_sp_tab_colon_in_header_route4726 = { FOLLOW_sp_tab_colon_in_header_route4726_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_route_param_in_header_route4728 */ static ANTLR3_BITWORD FOLLOW_route_param_in_header_route4728_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000202) }; static ANTLR3_BITSET_LIST FOLLOW_route_param_in_header_route4728 = { FOLLOW_route_param_in_header_route4728_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_header_route4732 */ static ANTLR3_BITWORD FOLLOW_COMMA_in_header_route4732_bits[] = { ANTLR3_UINT64_LIT(0x000001F118ABBC40) }; static ANTLR3_BITSET_LIST FOLLOW_COMMA_in_header_route4732 = { FOLLOW_COMMA_in_header_route4732_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_route_param_in_header_route4734 */ static ANTLR3_BITWORD FOLLOW_route_param_in_header_route4734_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000202) }; static ANTLR3_BITSET_LIST FOLLOW_route_param_in_header_route4734 = { FOLLOW_route_param_in_header_route4734_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_name_addr_in_route_param4763 */ static ANTLR3_BITWORD FOLLOW_name_addr_in_route_param4763_bits[] = { ANTLR3_UINT64_LIT(0x0000000400000002) }; static ANTLR3_BITSET_LIST FOLLOW_name_addr_in_route_param4763 = { FOLLOW_name_addr_in_route_param4763_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SEMI_in_route_param4768 */ static ANTLR3_BITWORD FOLLOW_SEMI_in_route_param4768_bits[] = { ANTLR3_UINT64_LIT(0x000001F1188ABC40) }; static ANTLR3_BITSET_LIST FOLLOW_SEMI_in_route_param4768 = { FOLLOW_SEMI_in_route_param4768_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_lws_in_route_param4770 */ static ANTLR3_BITWORD FOLLOW_lws_in_route_param4770_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_lws_in_route_param4770 = { FOLLOW_lws_in_route_param4770_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_r_param_in_route_param4773 */ static ANTLR3_BITWORD FOLLOW_r_param_in_route_param4773_bits[] = { ANTLR3_UINT64_LIT(0x0000001400000802) }; static ANTLR3_BITSET_LIST FOLLOW_r_param_in_route_param4773 = { FOLLOW_r_param_in_route_param4773_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_lws_in_route_param4775 */ static ANTLR3_BITWORD FOLLOW_lws_in_route_param4775_bits[] = { ANTLR3_UINT64_LIT(0x0000000400000002) }; static ANTLR3_BITSET_LIST FOLLOW_lws_in_route_param4775 = { FOLLOW_lws_in_route_param4775_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_generic_param_in_r_param4790 */ static ANTLR3_BITWORD FOLLOW_generic_param_in_r_param4790_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_generic_param_in_r_param4790 = { FOLLOW_generic_param_in_r_param4790_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_to_token4805 */ static ANTLR3_BITWORD FOLLOW_token_in_to_token4805_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_to_token4805 = { FOLLOW_token_in_to_token4805_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_to_token_in_header_to4831 */ static ANTLR3_BITWORD FOLLOW_to_token_in_header_to4831_bits[] = { ANTLR3_UINT64_LIT(0x0000001000100100) }; static ANTLR3_BITSET_LIST FOLLOW_to_token_in_header_to4831 = { FOLLOW_to_token_in_header_to4831_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_sp_tab_colon_in_header_to4835 */ static ANTLR3_BITWORD FOLLOW_sp_tab_colon_in_header_to4835_bits[] = { ANTLR3_UINT64_LIT(0x000001F118ABBC40) }; static ANTLR3_BITSET_LIST FOLLOW_sp_tab_colon_in_header_to4835 = { FOLLOW_sp_tab_colon_in_header_to4835_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_to_spec_in_header_to4837 */ static ANTLR3_BITWORD FOLLOW_to_spec_in_header_to4837_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_to_spec_in_header_to4837 = { FOLLOW_to_spec_in_header_to4837_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_name_addr_with_generic_uri_in_to_spec4856 */ static ANTLR3_BITWORD FOLLOW_name_addr_with_generic_uri_in_to_spec4856_bits[] = { ANTLR3_UINT64_LIT(0x0000000400000002) }; static ANTLR3_BITSET_LIST FOLLOW_name_addr_with_generic_uri_in_to_spec4856 = { FOLLOW_name_addr_with_generic_uri_in_to_spec4856_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_paramless_addr_spec_with_generic_uri_in_to_spec4861 */ static ANTLR3_BITWORD FOLLOW_paramless_addr_spec_with_generic_uri_in_to_spec4861_bits[] = { ANTLR3_UINT64_LIT(0x0000000400000002) }; static ANTLR3_BITSET_LIST FOLLOW_paramless_addr_spec_with_generic_uri_in_to_spec4861 = { FOLLOW_paramless_addr_spec_with_generic_uri_in_to_spec4861_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SEMI_in_to_spec4883 */ static ANTLR3_BITWORD FOLLOW_SEMI_in_to_spec4883_bits[] = { ANTLR3_UINT64_LIT(0x000001F1188ABC40) }; static ANTLR3_BITSET_LIST FOLLOW_SEMI_in_to_spec4883 = { FOLLOW_SEMI_in_to_spec4883_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_lws_in_to_spec4885 */ static ANTLR3_BITWORD FOLLOW_lws_in_to_spec4885_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_lws_in_to_spec4885 = { FOLLOW_lws_in_to_spec4885_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_to_param_in_to_spec4888 */ static ANTLR3_BITWORD FOLLOW_to_param_in_to_spec4888_bits[] = { ANTLR3_UINT64_LIT(0x0000001400000802) }; static ANTLR3_BITSET_LIST FOLLOW_to_param_in_to_spec4888 = { FOLLOW_to_param_in_to_spec4888_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_lws_in_to_spec4890 */ static ANTLR3_BITWORD FOLLOW_lws_in_to_spec4890_bits[] = { ANTLR3_UINT64_LIT(0x0000000400000002) }; static ANTLR3_BITSET_LIST FOLLOW_lws_in_to_spec4890 = { FOLLOW_lws_in_to_spec4890_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_generic_param_in_to_param4906 */ static ANTLR3_BITWORD FOLLOW_generic_param_in_to_param4906_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_generic_param_in_to_param4906 = { FOLLOW_generic_param_in_to_param4906_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_diversion_token4917 */ static ANTLR3_BITWORD FOLLOW_token_in_diversion_token4917_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_diversion_token4917 = { FOLLOW_token_in_diversion_token4917_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_diversion_token_in_header_diversion4942 */ static ANTLR3_BITWORD FOLLOW_diversion_token_in_header_diversion4942_bits[] = { ANTLR3_UINT64_LIT(0x0000001000100100) }; static ANTLR3_BITSET_LIST FOLLOW_diversion_token_in_header_diversion4942 = { FOLLOW_diversion_token_in_header_diversion4942_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_sp_tab_colon_in_header_diversion4946 */ static ANTLR3_BITWORD FOLLOW_sp_tab_colon_in_header_diversion4946_bits[] = { ANTLR3_UINT64_LIT(0x000001F118ABBC40) }; static ANTLR3_BITSET_LIST FOLLOW_sp_tab_colon_in_header_diversion4946 = { FOLLOW_sp_tab_colon_in_header_diversion4946_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_diversion_spec_in_header_diversion4948 */ static ANTLR3_BITWORD FOLLOW_diversion_spec_in_header_diversion4948_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_diversion_spec_in_header_diversion4948 = { FOLLOW_diversion_spec_in_header_diversion4948_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_name_addr_with_generic_uri_in_diversion_spec4967 */ static ANTLR3_BITWORD FOLLOW_name_addr_with_generic_uri_in_diversion_spec4967_bits[] = { ANTLR3_UINT64_LIT(0x0000000400000002) }; static ANTLR3_BITSET_LIST FOLLOW_name_addr_with_generic_uri_in_diversion_spec4967 = { FOLLOW_name_addr_with_generic_uri_in_diversion_spec4967_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_paramless_addr_spec_with_generic_uri_in_diversion_spec4972 */ static ANTLR3_BITWORD FOLLOW_paramless_addr_spec_with_generic_uri_in_diversion_spec4972_bits[] = { ANTLR3_UINT64_LIT(0x0000000400000002) }; static ANTLR3_BITSET_LIST FOLLOW_paramless_addr_spec_with_generic_uri_in_diversion_spec4972 = { FOLLOW_paramless_addr_spec_with_generic_uri_in_diversion_spec4972_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SEMI_in_diversion_spec4994 */ static ANTLR3_BITWORD FOLLOW_SEMI_in_diversion_spec4994_bits[] = { ANTLR3_UINT64_LIT(0x000001F1188ABC40) }; static ANTLR3_BITSET_LIST FOLLOW_SEMI_in_diversion_spec4994 = { FOLLOW_SEMI_in_diversion_spec4994_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_lws_in_diversion_spec4996 */ static ANTLR3_BITWORD FOLLOW_lws_in_diversion_spec4996_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_lws_in_diversion_spec4996 = { FOLLOW_lws_in_diversion_spec4996_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_diversion_param_in_diversion_spec4999 */ static ANTLR3_BITWORD FOLLOW_diversion_param_in_diversion_spec4999_bits[] = { ANTLR3_UINT64_LIT(0x0000001400000802) }; static ANTLR3_BITSET_LIST FOLLOW_diversion_param_in_diversion_spec4999 = { FOLLOW_diversion_param_in_diversion_spec4999_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_lws_in_diversion_spec5001 */ static ANTLR3_BITWORD FOLLOW_lws_in_diversion_spec5001_bits[] = { ANTLR3_UINT64_LIT(0x0000000400000002) }; static ANTLR3_BITSET_LIST FOLLOW_lws_in_diversion_spec5001 = { FOLLOW_lws_in_diversion_spec5001_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_generic_param_in_diversion_param5017 */ static ANTLR3_BITWORD FOLLOW_generic_param_in_diversion_param5017_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_generic_param_in_diversion_param5017 = { FOLLOW_generic_param_in_diversion_param5017_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_refer_to_token5029 */ static ANTLR3_BITWORD FOLLOW_token_in_refer_to_token5029_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_refer_to_token5029 = { FOLLOW_token_in_refer_to_token5029_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_refer_to_token_in_header_refer_to5045 */ static ANTLR3_BITWORD FOLLOW_refer_to_token_in_header_refer_to5045_bits[] = { ANTLR3_UINT64_LIT(0x0000001000100100) }; static ANTLR3_BITSET_LIST FOLLOW_refer_to_token_in_header_refer_to5045 = { FOLLOW_refer_to_token_in_header_refer_to5045_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_sp_tab_colon_in_header_refer_to5055 */ static ANTLR3_BITWORD FOLLOW_sp_tab_colon_in_header_refer_to5055_bits[] = { ANTLR3_UINT64_LIT(0x000001F118ABBC40) }; static ANTLR3_BITSET_LIST FOLLOW_sp_tab_colon_in_header_refer_to5055 = { FOLLOW_sp_tab_colon_in_header_refer_to5055_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_refer_to_spec_in_header_refer_to5063 */ static ANTLR3_BITWORD FOLLOW_refer_to_spec_in_header_refer_to5063_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_refer_to_spec_in_header_refer_to5063 = { FOLLOW_refer_to_spec_in_header_refer_to5063_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_referred_by_token5076 */ static ANTLR3_BITWORD FOLLOW_token_in_referred_by_token5076_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_referred_by_token5076 = { FOLLOW_token_in_referred_by_token5076_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_referred_by_token_in_header_referred_by5092 */ static ANTLR3_BITWORD FOLLOW_referred_by_token_in_header_referred_by5092_bits[] = { ANTLR3_UINT64_LIT(0x0000001000100100) }; static ANTLR3_BITSET_LIST FOLLOW_referred_by_token_in_header_referred_by5092 = { FOLLOW_referred_by_token_in_header_referred_by5092_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_sp_tab_colon_in_header_referred_by5102 */ static ANTLR3_BITWORD FOLLOW_sp_tab_colon_in_header_referred_by5102_bits[] = { ANTLR3_UINT64_LIT(0x000001F118ABBC40) }; static ANTLR3_BITSET_LIST FOLLOW_sp_tab_colon_in_header_referred_by5102 = { FOLLOW_sp_tab_colon_in_header_referred_by5102_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_refer_to_spec_in_header_referred_by5110 */ static ANTLR3_BITWORD FOLLOW_refer_to_spec_in_header_referred_by5110_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_refer_to_spec_in_header_referred_by5110 = { FOLLOW_refer_to_spec_in_header_referred_by5110_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_name_addr_in_refer_to_spec5142 */ static ANTLR3_BITWORD FOLLOW_name_addr_in_refer_to_spec5142_bits[] = { ANTLR3_UINT64_LIT(0x0000000400000002) }; static ANTLR3_BITSET_LIST FOLLOW_name_addr_in_refer_to_spec5142 = { FOLLOW_name_addr_in_refer_to_spec5142_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_paramless_addr_spec_in_refer_to_spec5147 */ static ANTLR3_BITWORD FOLLOW_paramless_addr_spec_in_refer_to_spec5147_bits[] = { ANTLR3_UINT64_LIT(0x0000000400000002) }; static ANTLR3_BITSET_LIST FOLLOW_paramless_addr_spec_in_refer_to_spec5147 = { FOLLOW_paramless_addr_spec_in_refer_to_spec5147_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SEMI_in_refer_to_spec5154 */ static ANTLR3_BITWORD FOLLOW_SEMI_in_refer_to_spec5154_bits[] = { ANTLR3_UINT64_LIT(0x000001F1188ABC40) }; static ANTLR3_BITSET_LIST FOLLOW_SEMI_in_refer_to_spec5154 = { FOLLOW_SEMI_in_refer_to_spec5154_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_lws_in_refer_to_spec5156 */ static ANTLR3_BITWORD FOLLOW_lws_in_refer_to_spec5156_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_lws_in_refer_to_spec5156 = { FOLLOW_lws_in_refer_to_spec5156_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_generic_param_in_refer_to_spec5159 */ static ANTLR3_BITWORD FOLLOW_generic_param_in_refer_to_spec5159_bits[] = { ANTLR3_UINT64_LIT(0x0000001400000802) }; static ANTLR3_BITSET_LIST FOLLOW_generic_param_in_refer_to_spec5159 = { FOLLOW_generic_param_in_refer_to_spec5159_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_lws_in_refer_to_spec5163 */ static ANTLR3_BITWORD FOLLOW_lws_in_refer_to_spec5163_bits[] = { ANTLR3_UINT64_LIT(0x0000000400000002) }; static ANTLR3_BITSET_LIST FOLLOW_lws_in_refer_to_spec5163 = { FOLLOW_lws_in_refer_to_spec5163_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_header_user_agent5206 */ static ANTLR3_BITWORD FOLLOW_token_in_header_user_agent5206_bits[] = { ANTLR3_UINT64_LIT(0x0000001000100100) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_header_user_agent5206 = { FOLLOW_token_in_header_user_agent5206_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_hcolon_in_header_user_agent5210 */ static ANTLR3_BITWORD FOLLOW_hcolon_in_header_user_agent5210_bits[] = { ANTLR3_UINT64_LIT(0x000001EBF9EBB5C0) }; static ANTLR3_BITSET_LIST FOLLOW_hcolon_in_header_user_agent5210 = { FOLLOW_hcolon_in_header_user_agent5210_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_server_val_in_header_user_agent5212 */ static ANTLR3_BITWORD FOLLOW_server_val_in_header_user_agent5212_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000802) }; static ANTLR3_BITSET_LIST FOLLOW_server_val_in_header_user_agent5212 = { FOLLOW_server_val_in_header_user_agent5212_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_lws_in_header_user_agent5215 */ static ANTLR3_BITWORD FOLLOW_lws_in_header_user_agent5215_bits[] = { ANTLR3_UINT64_LIT(0x000001EBF9EBB5C0) }; static ANTLR3_BITSET_LIST FOLLOW_lws_in_header_user_agent5215 = { FOLLOW_lws_in_header_user_agent5215_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_server_val_in_header_user_agent5217 */ static ANTLR3_BITWORD FOLLOW_server_val_in_header_user_agent5217_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000802) }; static ANTLR3_BITSET_LIST FOLLOW_server_val_in_header_user_agent5217 = { FOLLOW_server_val_in_header_user_agent5217_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_word_in_server_val5236 */ static ANTLR3_BITWORD FOLLOW_word_in_server_val5236_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_word_in_server_val5236 = { FOLLOW_word_in_server_val5236_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_via_token5249 */ static ANTLR3_BITWORD FOLLOW_token_in_via_token5249_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_via_token5249 = { FOLLOW_token_in_via_token5249_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_via_token_in_header_via5275 */ static ANTLR3_BITWORD FOLLOW_via_token_in_header_via5275_bits[] = { ANTLR3_UINT64_LIT(0x0000001000100100) }; static ANTLR3_BITSET_LIST FOLLOW_via_token_in_header_via5275 = { FOLLOW_via_token_in_header_via5275_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_hcolon_in_header_via5278 */ static ANTLR3_BITWORD FOLLOW_hcolon_in_header_via5278_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_hcolon_in_header_via5278 = { FOLLOW_hcolon_in_header_via5278_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_via_parm_in_header_via5280 */ static ANTLR3_BITWORD FOLLOW_via_parm_in_header_via5280_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000A02) }; static ANTLR3_BITSET_LIST FOLLOW_via_parm_in_header_via5280 = { FOLLOW_via_parm_in_header_via5280_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_comma_in_header_via5283 */ static ANTLR3_BITWORD FOLLOW_comma_in_header_via5283_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_comma_in_header_via5283 = { FOLLOW_comma_in_header_via5283_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_via_parm_in_header_via5285 */ static ANTLR3_BITWORD FOLLOW_via_parm_in_header_via5285_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000A02) }; static ANTLR3_BITSET_LIST FOLLOW_via_parm_in_header_via5285 = { FOLLOW_via_parm_in_header_via5285_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_sent_protocol_in_via_parm5316 */ static ANTLR3_BITWORD FOLLOW_sent_protocol_in_via_parm5316_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000800) }; static ANTLR3_BITSET_LIST FOLLOW_sent_protocol_in_via_parm5316 = { FOLLOW_sent_protocol_in_via_parm5316_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_lws_in_via_parm5319 */ static ANTLR3_BITWORD FOLLOW_lws_in_via_parm5319_bits[] = { ANTLR3_UINT64_LIT(0x0000000001082400) }; static ANTLR3_BITSET_LIST FOLLOW_lws_in_via_parm5319 = { FOLLOW_lws_in_via_parm5319_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_sent_by_in_via_parm5321 */ static ANTLR3_BITWORD FOLLOW_sent_by_in_via_parm5321_bits[] = { ANTLR3_UINT64_LIT(0x0000001400000802) }; static ANTLR3_BITSET_LIST FOLLOW_sent_by_in_via_parm5321 = { FOLLOW_sent_by_in_via_parm5321_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_semi_in_via_parm5325 */ static ANTLR3_BITWORD FOLLOW_semi_in_via_parm5325_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_semi_in_via_parm5325 = { FOLLOW_semi_in_via_parm5325_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_via_params_in_via_parm5327 */ static ANTLR3_BITWORD FOLLOW_via_params_in_via_parm5327_bits[] = { ANTLR3_UINT64_LIT(0x0000001400000802) }; static ANTLR3_BITSET_LIST FOLLOW_via_params_in_via_parm5327 = { FOLLOW_via_params_in_via_parm5327_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_via_received_in_via_params5344 */ static ANTLR3_BITWORD FOLLOW_via_received_in_via_params5344_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_via_received_in_via_params5344 = { FOLLOW_via_received_in_via_params5344_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_generic_param_in_via_params5349 */ static ANTLR3_BITWORD FOLLOW_generic_param_in_via_params5349_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_generic_param_in_via_params5349 = { FOLLOW_generic_param_in_via_params5349_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_via_received5366 */ static ANTLR3_BITWORD FOLLOW_token_in_via_received5366_bits[] = { ANTLR3_UINT64_LIT(0x0000000000040000) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_via_received5366 = { FOLLOW_token_in_via_received5366_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_EQUAL_in_via_received5368 */ static ANTLR3_BITWORD FOLLOW_EQUAL_in_via_received5368_bits[] = { ANTLR3_UINT64_LIT(0x0000000001082100) }; static ANTLR3_BITSET_LIST FOLLOW_EQUAL_in_via_received5368 = { FOLLOW_EQUAL_in_via_received5368_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_via_address_in_via_received5370 */ static ANTLR3_BITWORD FOLLOW_via_address_in_via_received5370_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_via_address_in_via_received5370 = { FOLLOW_via_address_in_via_received5370_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_ipv4address_in_via_address5388 */ static ANTLR3_BITWORD FOLLOW_ipv4address_in_via_address5388_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_ipv4address_in_via_address5388 = { FOLLOW_ipv4address_in_via_address5388_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_ipv6address_in_via_address5400 */ static ANTLR3_BITWORD FOLLOW_ipv6address_in_via_address5400_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_ipv6address_in_via_address5400 = { FOLLOW_ipv6address_in_via_address5400_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_ipv6reference_in_via_address5412 */ static ANTLR3_BITWORD FOLLOW_ipv6reference_in_via_address5412_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_ipv6reference_in_via_address5412 = { FOLLOW_ipv6reference_in_via_address5412_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_protocol_name_in_sent_protocol5429 */ static ANTLR3_BITWORD FOLLOW_protocol_name_in_sent_protocol5429_bits[] = { ANTLR3_UINT64_LIT(0x0000001800000800) }; static ANTLR3_BITSET_LIST FOLLOW_protocol_name_in_sent_protocol5429 = { FOLLOW_protocol_name_in_sent_protocol5429_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_slash_in_sent_protocol5431 */ static ANTLR3_BITWORD FOLLOW_slash_in_sent_protocol5431_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_slash_in_sent_protocol5431 = { FOLLOW_slash_in_sent_protocol5431_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_protocol_version_in_sent_protocol5433 */ static ANTLR3_BITWORD FOLLOW_protocol_version_in_sent_protocol5433_bits[] = { ANTLR3_UINT64_LIT(0x0000001800000800) }; static ANTLR3_BITSET_LIST FOLLOW_protocol_version_in_sent_protocol5433 = { FOLLOW_protocol_version_in_sent_protocol5433_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_slash_in_sent_protocol5459 */ static ANTLR3_BITWORD FOLLOW_slash_in_sent_protocol5459_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_slash_in_sent_protocol5459 = { FOLLOW_slash_in_sent_protocol5459_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_transport_in_sent_protocol5461 */ static ANTLR3_BITWORD FOLLOW_transport_in_sent_protocol5461_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_transport_in_sent_protocol5461 = { FOLLOW_transport_in_sent_protocol5461_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_protocol_name5477 */ static ANTLR3_BITWORD FOLLOW_token_in_protocol_name5477_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_protocol_name5477 = { FOLLOW_token_in_protocol_name5477_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_protocol_version5488 */ static ANTLR3_BITWORD FOLLOW_token_in_protocol_version5488_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_protocol_version5488 = { FOLLOW_token_in_protocol_version5488_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_other_transport_in_transport5500 */ static ANTLR3_BITWORD FOLLOW_other_transport_in_transport5500_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_other_transport_in_transport5500 = { FOLLOW_other_transport_in_transport5500_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_other_transport5509 */ static ANTLR3_BITWORD FOLLOW_token_in_other_transport5509_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_other_transport5509 = { FOLLOW_token_in_other_transport5509_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_host_in_sent_by5521 */ static ANTLR3_BITWORD FOLLOW_host_in_sent_by5521_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000102) }; static ANTLR3_BITSET_LIST FOLLOW_host_in_sent_by5521 = { FOLLOW_host_in_sent_by5521_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_sent_by5532 */ static ANTLR3_BITWORD FOLLOW_COLON_in_sent_by5532_bits[] = { ANTLR3_UINT64_LIT(0x0000000000002000) }; static ANTLR3_BITSET_LIST FOLLOW_COLON_in_sent_by5532 = { FOLLOW_COLON_in_sent_by5532_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_port_in_sent_by5534 */ static ANTLR3_BITWORD FOLLOW_port_in_sent_by5534_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_port_in_sent_by5534 = { FOLLOW_port_in_sent_by5534_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_header_www_authenticate5570 */ static ANTLR3_BITWORD FOLLOW_token_in_header_www_authenticate5570_bits[] = { ANTLR3_UINT64_LIT(0x0000001000100100) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_header_www_authenticate5570 = { FOLLOW_token_in_header_www_authenticate5570_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_hcolon_in_header_www_authenticate5574 */ static ANTLR3_BITWORD FOLLOW_hcolon_in_header_www_authenticate5574_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_hcolon_in_header_www_authenticate5574 = { FOLLOW_hcolon_in_header_www_authenticate5574_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_challenge_in_header_www_authenticate5577 */ static ANTLR3_BITWORD FOLLOW_challenge_in_header_www_authenticate5577_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000A02) }; static ANTLR3_BITSET_LIST FOLLOW_challenge_in_header_www_authenticate5577 = { FOLLOW_challenge_in_header_www_authenticate5577_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_comma_in_header_www_authenticate5589 */ static ANTLR3_BITWORD FOLLOW_comma_in_header_www_authenticate5589_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_comma_in_header_www_authenticate5589 = { FOLLOW_comma_in_header_www_authenticate5589_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_challenge_in_header_www_authenticate5595 */ static ANTLR3_BITWORD FOLLOW_challenge_in_header_www_authenticate5595_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000A02) }; static ANTLR3_BITSET_LIST FOLLOW_challenge_in_header_www_authenticate5595 = { FOLLOW_challenge_in_header_www_authenticate5595_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_state_value5613 */ static ANTLR3_BITWORD FOLLOW_token_in_state_value5613_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_state_value5613 = { FOLLOW_token_in_state_value5613_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_header_subscription_state5639 */ static ANTLR3_BITWORD FOLLOW_token_in_header_subscription_state5639_bits[] = { ANTLR3_UINT64_LIT(0x0000001000100100) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_header_subscription_state5639 = { FOLLOW_token_in_header_subscription_state5639_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_hcolon_in_header_subscription_state5644 */ static ANTLR3_BITWORD FOLLOW_hcolon_in_header_subscription_state5644_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_hcolon_in_header_subscription_state5644 = { FOLLOW_hcolon_in_header_subscription_state5644_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_state_value_in_header_subscription_state5646 */ static ANTLR3_BITWORD FOLLOW_state_value_in_header_subscription_state5646_bits[] = { ANTLR3_UINT64_LIT(0x0000001400000802) }; static ANTLR3_BITSET_LIST FOLLOW_state_value_in_header_subscription_state5646 = { FOLLOW_state_value_in_header_subscription_state5646_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_semi_in_header_subscription_state5652 */ static ANTLR3_BITWORD FOLLOW_semi_in_header_subscription_state5652_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_semi_in_header_subscription_state5652 = { FOLLOW_semi_in_header_subscription_state5652_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_generic_param_in_header_subscription_state5655 */ static ANTLR3_BITWORD FOLLOW_generic_param_in_header_subscription_state5655_bits[] = { ANTLR3_UINT64_LIT(0x0000001400000802) }; static ANTLR3_BITSET_LIST FOLLOW_generic_param_in_header_subscription_state5655 = { FOLLOW_generic_param_in_header_subscription_state5655_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_header_event5691 */ static ANTLR3_BITWORD FOLLOW_token_in_header_event5691_bits[] = { ANTLR3_UINT64_LIT(0x0000001000100100) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_header_event5691 = { FOLLOW_token_in_header_event5691_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_hcolon_in_header_event5696 */ static ANTLR3_BITWORD FOLLOW_hcolon_in_header_event5696_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_hcolon_in_header_event5696 = { FOLLOW_hcolon_in_header_event5696_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_event_package_in_header_event5698 */ static ANTLR3_BITWORD FOLLOW_event_package_in_header_event5698_bits[] = { ANTLR3_UINT64_LIT(0x0000001400000802) }; static ANTLR3_BITSET_LIST FOLLOW_event_package_in_header_event5698 = { FOLLOW_event_package_in_header_event5698_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_semi_in_header_event5704 */ static ANTLR3_BITWORD FOLLOW_semi_in_header_event5704_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_semi_in_header_event5704 = { FOLLOW_semi_in_header_event5704_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_generic_param_in_header_event5707 */ static ANTLR3_BITWORD FOLLOW_generic_param_in_header_event5707_bits[] = { ANTLR3_UINT64_LIT(0x0000001400000802) }; static ANTLR3_BITSET_LIST FOLLOW_generic_param_in_header_event5707 = { FOLLOW_generic_param_in_header_event5707_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_event_package5727 */ static ANTLR3_BITWORD FOLLOW_token_in_event_package5727_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_event_package5727 = { FOLLOW_token_in_event_package5727_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_header_replaces5754 */ static ANTLR3_BITWORD FOLLOW_token_in_header_replaces5754_bits[] = { ANTLR3_UINT64_LIT(0x0000001000100100) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_header_replaces5754 = { FOLLOW_token_in_header_replaces5754_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_hcolon_in_header_replaces5759 */ static ANTLR3_BITWORD FOLLOW_hcolon_in_header_replaces5759_bits[] = { ANTLR3_UINT64_LIT(0x000001EBF9EBB5C0) }; static ANTLR3_BITSET_LIST FOLLOW_hcolon_in_header_replaces5759 = { FOLLOW_hcolon_in_header_replaces5759_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_call_id_in_header_replaces5761 */ static ANTLR3_BITWORD FOLLOW_call_id_in_header_replaces5761_bits[] = { ANTLR3_UINT64_LIT(0x0000001400000802) }; static ANTLR3_BITSET_LIST FOLLOW_call_id_in_header_replaces5761 = { FOLLOW_call_id_in_header_replaces5761_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_semi_in_header_replaces5768 */ static ANTLR3_BITWORD FOLLOW_semi_in_header_replaces5768_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_semi_in_header_replaces5768 = { FOLLOW_semi_in_header_replaces5768_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_generic_param_in_header_replaces5771 */ static ANTLR3_BITWORD FOLLOW_generic_param_in_header_replaces5771_bits[] = { ANTLR3_UINT64_LIT(0x0000001400000802) }; static ANTLR3_BITSET_LIST FOLLOW_generic_param_in_header_replaces5771 = { FOLLOW_generic_param_in_header_replaces5771_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_header_p_preferred_identity5807 */ static ANTLR3_BITWORD FOLLOW_token_in_header_p_preferred_identity5807_bits[] = { ANTLR3_UINT64_LIT(0x0000001000100100) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_header_p_preferred_identity5807 = { FOLLOW_token_in_header_p_preferred_identity5807_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_sp_tab_colon_in_header_p_preferred_identity5812 */ static ANTLR3_BITWORD FOLLOW_sp_tab_colon_in_header_p_preferred_identity5812_bits[] = { ANTLR3_UINT64_LIT(0x000001F918ABBC40) }; static ANTLR3_BITSET_LIST FOLLOW_sp_tab_colon_in_header_p_preferred_identity5812 = { FOLLOW_sp_tab_colon_in_header_p_preferred_identity5812_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_header_address_base_in_header_p_preferred_identity5814 */ static ANTLR3_BITWORD FOLLOW_header_address_base_in_header_p_preferred_identity5814_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_header_address_base_in_header_p_preferred_identity5814 = { FOLLOW_header_address_base_in_header_p_preferred_identity5814_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_header_privacy5845 */ static ANTLR3_BITWORD FOLLOW_token_in_header_privacy5845_bits[] = { ANTLR3_UINT64_LIT(0x0000001000100100) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_header_privacy5845 = { FOLLOW_token_in_header_privacy5845_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_hcolon_in_header_privacy5849 */ static ANTLR3_BITWORD FOLLOW_hcolon_in_header_privacy5849_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_hcolon_in_header_privacy5849 = { FOLLOW_hcolon_in_header_privacy5849_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_privacy_val_in_header_privacy5851 */ static ANTLR3_BITWORD FOLLOW_privacy_val_in_header_privacy5851_bits[] = { ANTLR3_UINT64_LIT(0x0000001400000802) }; static ANTLR3_BITSET_LIST FOLLOW_privacy_val_in_header_privacy5851 = { FOLLOW_privacy_val_in_header_privacy5851_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_semi_in_header_privacy5854 */ static ANTLR3_BITWORD FOLLOW_semi_in_header_privacy5854_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_semi_in_header_privacy5854 = { FOLLOW_semi_in_header_privacy5854_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_privacy_val_in_header_privacy5856 */ static ANTLR3_BITWORD FOLLOW_privacy_val_in_header_privacy5856_bits[] = { ANTLR3_UINT64_LIT(0x0000001400000802) }; static ANTLR3_BITSET_LIST FOLLOW_privacy_val_in_header_privacy5856 = { FOLLOW_privacy_val_in_header_privacy5856_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_privacy_val5870 */ static ANTLR3_BITWORD FOLLOW_token_in_privacy_val5870_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_privacy_val5870 = { FOLLOW_token_in_privacy_val5870_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_header_supported5899 */ static ANTLR3_BITWORD FOLLOW_token_in_header_supported5899_bits[] = { ANTLR3_UINT64_LIT(0x0000001000100100) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_header_supported5899 = { FOLLOW_token_in_header_supported5899_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_hcolon_in_header_supported5903 */ static ANTLR3_BITWORD FOLLOW_hcolon_in_header_supported5903_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_hcolon_in_header_supported5903 = { FOLLOW_hcolon_in_header_supported5903_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_supported_val_in_header_supported5905 */ static ANTLR3_BITWORD FOLLOW_supported_val_in_header_supported5905_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000A02) }; static ANTLR3_BITSET_LIST FOLLOW_supported_val_in_header_supported5905 = { FOLLOW_supported_val_in_header_supported5905_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_comma_in_header_supported5908 */ static ANTLR3_BITWORD FOLLOW_comma_in_header_supported5908_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_comma_in_header_supported5908 = { FOLLOW_comma_in_header_supported5908_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_supported_val_in_header_supported5910 */ static ANTLR3_BITWORD FOLLOW_supported_val_in_header_supported5910_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000A02) }; static ANTLR3_BITSET_LIST FOLLOW_supported_val_in_header_supported5910 = { FOLLOW_supported_val_in_header_supported5910_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_supported_val5924 */ static ANTLR3_BITWORD FOLLOW_token_in_supported_val5924_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_supported_val5924 = { FOLLOW_token_in_supported_val5924_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_header_session_expires5952 */ static ANTLR3_BITWORD FOLLOW_token_in_header_session_expires5952_bits[] = { ANTLR3_UINT64_LIT(0x0000001000100100) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_header_session_expires5952 = { FOLLOW_token_in_header_session_expires5952_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_hcolon_in_header_session_expires5956 */ static ANTLR3_BITWORD FOLLOW_hcolon_in_header_session_expires5956_bits[] = { ANTLR3_UINT64_LIT(0x0000000000002000) }; static ANTLR3_BITSET_LIST FOLLOW_hcolon_in_header_session_expires5956 = { FOLLOW_hcolon_in_header_session_expires5956_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_delta_seconds_in_header_session_expires5958 */ static ANTLR3_BITWORD FOLLOW_delta_seconds_in_header_session_expires5958_bits[] = { ANTLR3_UINT64_LIT(0x0000001400000802) }; static ANTLR3_BITSET_LIST FOLLOW_delta_seconds_in_header_session_expires5958 = { FOLLOW_delta_seconds_in_header_session_expires5958_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_semi_in_header_session_expires5963 */ static ANTLR3_BITWORD FOLLOW_semi_in_header_session_expires5963_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_semi_in_header_session_expires5963 = { FOLLOW_semi_in_header_session_expires5963_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_generic_param_in_header_session_expires5965 */ static ANTLR3_BITWORD FOLLOW_generic_param_in_header_session_expires5965_bits[] = { ANTLR3_UINT64_LIT(0x0000001400000802) }; static ANTLR3_BITSET_LIST FOLLOW_generic_param_in_header_session_expires5965 = { FOLLOW_generic_param_in_header_session_expires5965_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_header_require6003 */ static ANTLR3_BITWORD FOLLOW_token_in_header_require6003_bits[] = { ANTLR3_UINT64_LIT(0x0000001000100100) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_header_require6003 = { FOLLOW_token_in_header_require6003_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_hcolon_in_header_require6007 */ static ANTLR3_BITWORD FOLLOW_hcolon_in_header_require6007_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_hcolon_in_header_require6007 = { FOLLOW_hcolon_in_header_require6007_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_require_val_in_header_require6009 */ static ANTLR3_BITWORD FOLLOW_require_val_in_header_require6009_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000A02) }; static ANTLR3_BITSET_LIST FOLLOW_require_val_in_header_require6009 = { FOLLOW_require_val_in_header_require6009_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_comma_in_header_require6012 */ static ANTLR3_BITWORD FOLLOW_comma_in_header_require6012_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_comma_in_header_require6012 = { FOLLOW_comma_in_header_require6012_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_require_val_in_header_require6014 */ static ANTLR3_BITWORD FOLLOW_require_val_in_header_require6014_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000A02) }; static ANTLR3_BITSET_LIST FOLLOW_require_val_in_header_require6014 = { FOLLOW_require_val_in_header_require6014_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_require_val6028 */ static ANTLR3_BITWORD FOLLOW_token_in_require_val6028_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_require_val6028 = { FOLLOW_token_in_require_val6028_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_content_disposition_value6039 */ static ANTLR3_BITWORD FOLLOW_token_in_content_disposition_value6039_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_content_disposition_value6039 = { FOLLOW_token_in_content_disposition_value6039_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_header_content_disposition6064 */ static ANTLR3_BITWORD FOLLOW_token_in_header_content_disposition6064_bits[] = { ANTLR3_UINT64_LIT(0x0000001000100100) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_header_content_disposition6064 = { FOLLOW_token_in_header_content_disposition6064_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_hcolon_in_header_content_disposition6068 */ static ANTLR3_BITWORD FOLLOW_hcolon_in_header_content_disposition6068_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_hcolon_in_header_content_disposition6068 = { FOLLOW_hcolon_in_header_content_disposition6068_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_content_disposition_value_in_header_content_disposition6070 */ static ANTLR3_BITWORD FOLLOW_content_disposition_value_in_header_content_disposition6070_bits[] = { ANTLR3_UINT64_LIT(0x0000001400000802) }; static ANTLR3_BITSET_LIST FOLLOW_content_disposition_value_in_header_content_disposition6070 = { FOLLOW_content_disposition_value_in_header_content_disposition6070_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_semi_in_header_content_disposition6075 */ static ANTLR3_BITWORD FOLLOW_semi_in_header_content_disposition6075_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_semi_in_header_content_disposition6075 = { FOLLOW_semi_in_header_content_disposition6075_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_generic_param_in_header_content_disposition6078 */ static ANTLR3_BITWORD FOLLOW_generic_param_in_header_content_disposition6078_bits[] = { ANTLR3_UINT64_LIT(0x0000001400000802) }; static ANTLR3_BITSET_LIST FOLLOW_generic_param_in_header_content_disposition6078 = { FOLLOW_generic_param_in_header_content_disposition6078_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_accept_token6102 */ static ANTLR3_BITWORD FOLLOW_token_in_accept_token6102_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_accept_token6102 = { FOLLOW_token_in_accept_token6102_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_accept_token_in_header_accept6124 */ static ANTLR3_BITWORD FOLLOW_accept_token_in_header_accept6124_bits[] = { ANTLR3_UINT64_LIT(0x0000001000100100) }; static ANTLR3_BITSET_LIST FOLLOW_accept_token_in_header_accept6124 = { FOLLOW_accept_token_in_header_accept6124_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_hcolon_in_header_accept6127 */ static ANTLR3_BITWORD FOLLOW_hcolon_in_header_accept6127_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_hcolon_in_header_accept6127 = { FOLLOW_hcolon_in_header_accept6127_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_accept_param_in_header_accept6129 */ static ANTLR3_BITWORD FOLLOW_accept_param_in_header_accept6129_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000A02) }; static ANTLR3_BITSET_LIST FOLLOW_accept_param_in_header_accept6129 = { FOLLOW_accept_param_in_header_accept6129_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_comma_in_header_accept6132 */ static ANTLR3_BITWORD FOLLOW_comma_in_header_accept6132_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_comma_in_header_accept6132 = { FOLLOW_comma_in_header_accept6132_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_accept_param_in_header_accept6134 */ static ANTLR3_BITWORD FOLLOW_accept_param_in_header_accept6134_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000A02) }; static ANTLR3_BITSET_LIST FOLLOW_accept_param_in_header_accept6134 = { FOLLOW_accept_param_in_header_accept6134_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_accept_main_media_type_in_accept_param6163 */ static ANTLR3_BITWORD FOLLOW_accept_main_media_type_in_accept_param6163_bits[] = { ANTLR3_UINT64_LIT(0x0000001800000800) }; static ANTLR3_BITSET_LIST FOLLOW_accept_main_media_type_in_accept_param6163 = { FOLLOW_accept_main_media_type_in_accept_param6163_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_slash_in_accept_param6167 */ static ANTLR3_BITWORD FOLLOW_slash_in_accept_param6167_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_slash_in_accept_param6167 = { FOLLOW_slash_in_accept_param6167_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_accept_sub_media_type_in_accept_param6169 */ static ANTLR3_BITWORD FOLLOW_accept_sub_media_type_in_accept_param6169_bits[] = { ANTLR3_UINT64_LIT(0x0000001400000802) }; static ANTLR3_BITSET_LIST FOLLOW_accept_sub_media_type_in_accept_param6169 = { FOLLOW_accept_sub_media_type_in_accept_param6169_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_semi_in_accept_param6174 */ static ANTLR3_BITWORD FOLLOW_semi_in_accept_param6174_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_semi_in_accept_param6174 = { FOLLOW_semi_in_accept_param6174_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_generic_param_in_accept_param6177 */ static ANTLR3_BITWORD FOLLOW_generic_param_in_accept_param6177_bits[] = { ANTLR3_UINT64_LIT(0x0000001400000802) }; static ANTLR3_BITSET_LIST FOLLOW_generic_param_in_accept_param6177 = { FOLLOW_generic_param_in_accept_param6177_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_accept_main_media_type6188 */ static ANTLR3_BITWORD FOLLOW_token_in_accept_main_media_type6188_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_accept_main_media_type6188 = { FOLLOW_token_in_accept_main_media_type6188_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_accept_sub_media_type6194 */ static ANTLR3_BITWORD FOLLOW_token_in_accept_sub_media_type6194_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_accept_sub_media_type6194 = { FOLLOW_token_in_accept_sub_media_type6194_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_header_reason6223 */ static ANTLR3_BITWORD FOLLOW_token_in_header_reason6223_bits[] = { ANTLR3_UINT64_LIT(0x0000001000100100) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_header_reason6223 = { FOLLOW_token_in_header_reason6223_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_hcolon_in_header_reason6227 */ static ANTLR3_BITWORD FOLLOW_hcolon_in_header_reason6227_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_hcolon_in_header_reason6227 = { FOLLOW_hcolon_in_header_reason6227_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_header_reason_param_in_header_reason6229 */ static ANTLR3_BITWORD FOLLOW_header_reason_param_in_header_reason6229_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000A02) }; static ANTLR3_BITSET_LIST FOLLOW_header_reason_param_in_header_reason6229 = { FOLLOW_header_reason_param_in_header_reason6229_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_comma_in_header_reason6234 */ static ANTLR3_BITWORD FOLLOW_comma_in_header_reason6234_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_comma_in_header_reason6234 = { FOLLOW_comma_in_header_reason6234_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_header_reason_param_in_header_reason6236 */ static ANTLR3_BITWORD FOLLOW_header_reason_param_in_header_reason6236_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000A02) }; static ANTLR3_BITSET_LIST FOLLOW_header_reason_param_in_header_reason6236 = { FOLLOW_header_reason_param_in_header_reason6236_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_header_reason_protocol_in_header_reason_param6262 */ static ANTLR3_BITWORD FOLLOW_header_reason_protocol_in_header_reason_param6262_bits[] = { ANTLR3_UINT64_LIT(0x0000001400000802) }; static ANTLR3_BITSET_LIST FOLLOW_header_reason_protocol_in_header_reason_param6262 = { FOLLOW_header_reason_protocol_in_header_reason_param6262_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_semi_in_header_reason_param6268 */ static ANTLR3_BITWORD FOLLOW_semi_in_header_reason_param6268_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_semi_in_header_reason_param6268 = { FOLLOW_semi_in_header_reason_param6268_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_generic_param_in_header_reason_param6271 */ static ANTLR3_BITWORD FOLLOW_generic_param_in_header_reason_param6271_bits[] = { ANTLR3_UINT64_LIT(0x0000001400000802) }; static ANTLR3_BITSET_LIST FOLLOW_generic_param_in_header_reason_param6271 = { FOLLOW_generic_param_in_header_reason_param6271_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_header_reason_protocol6283 */ static ANTLR3_BITWORD FOLLOW_token_in_header_reason_protocol6283_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_header_reason_protocol6283 = { FOLLOW_token_in_header_reason_protocol6283_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_header_authentication_info6315 */ static ANTLR3_BITWORD FOLLOW_token_in_header_authentication_info6315_bits[] = { ANTLR3_UINT64_LIT(0x0000001000100100) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_header_authentication_info6315 = { FOLLOW_token_in_header_authentication_info6315_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_hcolon_in_header_authentication_info6319 */ static ANTLR3_BITWORD FOLLOW_hcolon_in_header_authentication_info6319_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_hcolon_in_header_authentication_info6319 = { FOLLOW_hcolon_in_header_authentication_info6319_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_auth_info_in_header_authentication_info6323 */ static ANTLR3_BITWORD FOLLOW_auth_info_in_header_authentication_info6323_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000A02) }; static ANTLR3_BITSET_LIST FOLLOW_auth_info_in_header_authentication_info6323 = { FOLLOW_auth_info_in_header_authentication_info6323_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_comma_in_header_authentication_info6327 */ static ANTLR3_BITWORD FOLLOW_comma_in_header_authentication_info6327_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_comma_in_header_authentication_info6327 = { FOLLOW_comma_in_header_authentication_info6327_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_auth_info_in_header_authentication_info6329 */ static ANTLR3_BITWORD FOLLOW_auth_info_in_header_authentication_info6329_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000A02) }; static ANTLR3_BITSET_LIST FOLLOW_auth_info_in_header_authentication_info6329 = { FOLLOW_auth_info_in_header_authentication_info6329_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_next_nonce_in_auth_info6354 */ static ANTLR3_BITWORD FOLLOW_next_nonce_in_auth_info6354_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_next_nonce_in_auth_info6354 = { FOLLOW_next_nonce_in_auth_info6354_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_cnonce_in_auth_info6361 */ static ANTLR3_BITWORD FOLLOW_cnonce_in_auth_info6361_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_cnonce_in_auth_info6361 = { FOLLOW_cnonce_in_auth_info6361_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_authentication_info_message_qop_in_auth_info6368 */ static ANTLR3_BITWORD FOLLOW_authentication_info_message_qop_in_auth_info6368_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_authentication_info_message_qop_in_auth_info6368 = { FOLLOW_authentication_info_message_qop_in_auth_info6368_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_nonce_count_in_auth_info6375 */ static ANTLR3_BITWORD FOLLOW_nonce_count_in_auth_info6375_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_nonce_count_in_auth_info6375 = { FOLLOW_nonce_count_in_auth_info6375_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_rspauth_in_auth_info6382 */ static ANTLR3_BITWORD FOLLOW_rspauth_in_auth_info6382_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_rspauth_in_auth_info6382 = { FOLLOW_rspauth_in_auth_info6382_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_qop_token6398 */ static ANTLR3_BITWORD FOLLOW_token_in_qop_token6398_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_qop_token6398 = { FOLLOW_token_in_qop_token6398_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_qop_token_in_authentication_info_message_qop6417 */ static ANTLR3_BITWORD FOLLOW_qop_token_in_authentication_info_message_qop6417_bits[] = { ANTLR3_UINT64_LIT(0x0000001000040800) }; static ANTLR3_BITSET_LIST FOLLOW_qop_token_in_authentication_info_message_qop6417 = { FOLLOW_qop_token_in_authentication_info_message_qop6417_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_equal_in_authentication_info_message_qop6419 */ static ANTLR3_BITWORD FOLLOW_equal_in_authentication_info_message_qop6419_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB440) }; static ANTLR3_BITSET_LIST FOLLOW_equal_in_authentication_info_message_qop6419 = { FOLLOW_equal_in_authentication_info_message_qop6419_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_authentication_info_message_qop6422 */ static ANTLR3_BITWORD FOLLOW_token_in_authentication_info_message_qop6422_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_authentication_info_message_qop6422 = { FOLLOW_token_in_authentication_info_message_qop6422_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_rspauth6444 */ static ANTLR3_BITWORD FOLLOW_token_in_rspauth6444_bits[] = { ANTLR3_UINT64_LIT(0x0000001000040800) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_rspauth6444 = { FOLLOW_token_in_rspauth6444_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_equal_in_rspauth6448 */ static ANTLR3_BITWORD FOLLOW_equal_in_rspauth6448_bits[] = { ANTLR3_UINT64_LIT(0x0000000000010000) }; static ANTLR3_BITSET_LIST FOLLOW_equal_in_rspauth6448 = { FOLLOW_equal_in_rspauth6448_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_quoted_string_in_rspauth6450 */ static ANTLR3_BITWORD FOLLOW_quoted_string_in_rspauth6450_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_quoted_string_in_rspauth6450 = { FOLLOW_quoted_string_in_rspauth6450_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_next_nonce6469 */ static ANTLR3_BITWORD FOLLOW_token_in_next_nonce6469_bits[] = { ANTLR3_UINT64_LIT(0x0000001000040800) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_next_nonce6469 = { FOLLOW_token_in_next_nonce6469_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_equal_in_next_nonce6473 */ static ANTLR3_BITWORD FOLLOW_equal_in_next_nonce6473_bits[] = { ANTLR3_UINT64_LIT(0x0000000000010000) }; static ANTLR3_BITSET_LIST FOLLOW_equal_in_next_nonce6473 = { FOLLOW_equal_in_next_nonce6473_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_nonce_value_in_next_nonce6475 */ static ANTLR3_BITWORD FOLLOW_nonce_value_in_next_nonce6475_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_nonce_value_in_next_nonce6475 = { FOLLOW_nonce_value_in_next_nonce6475_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_quoted_algorithm6495 */ static ANTLR3_BITWORD FOLLOW_token_in_quoted_algorithm6495_bits[] = { ANTLR3_UINT64_LIT(0x0000001000040800) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_quoted_algorithm6495 = { FOLLOW_token_in_quoted_algorithm6495_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_equal_in_quoted_algorithm6499 */ static ANTLR3_BITWORD FOLLOW_equal_in_quoted_algorithm6499_bits[] = { ANTLR3_UINT64_LIT(0x0000000000010000) }; static ANTLR3_BITSET_LIST FOLLOW_equal_in_quoted_algorithm6499 = { FOLLOW_equal_in_quoted_algorithm6499_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_nonce_value_in_quoted_algorithm6501 */ static ANTLR3_BITWORD FOLLOW_nonce_value_in_quoted_algorithm6501_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_nonce_value_in_quoted_algorithm6501 = { FOLLOW_nonce_value_in_quoted_algorithm6501_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_header_extension_base_in_header6517 */ static ANTLR3_BITWORD FOLLOW_header_extension_base_in_header6517_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_header_extension_base_in_header6517 = { FOLLOW_header_extension_base_in_header6517_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_header_name_in_header_extension_base6550 */ static ANTLR3_BITWORD FOLLOW_header_name_in_header_extension_base6550_bits[] = { ANTLR3_UINT64_LIT(0x0000001000100100) }; static ANTLR3_BITSET_LIST FOLLOW_header_name_in_header_extension_base6550 = { FOLLOW_header_name_in_header_extension_base6550_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_hcolon_in_header_extension_base6559 */ static ANTLR3_BITWORD FOLLOW_hcolon_in_header_extension_base6559_bits[] = { ANTLR3_UINT64_LIT(0x000001EFFFFFF7F2) }; static ANTLR3_BITSET_LIST FOLLOW_hcolon_in_header_extension_base6559 = { FOLLOW_hcolon_in_header_extension_base6559_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_header_value_in_header_extension_base6573 */ static ANTLR3_BITWORD FOLLOW_header_value_in_header_extension_base6573_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_header_value_in_header_extension_base6573 = { FOLLOW_header_value_in_header_extension_base6573_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_header_name6599 */ static ANTLR3_BITWORD FOLLOW_token_in_header_name6599_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_header_name6599 = { FOLLOW_token_in_header_name6599_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_set_in_header_value6633 */ static ANTLR3_BITWORD FOLLOW_set_in_header_value6633_bits[] = { ANTLR3_UINT64_LIT(0x000001FFFFFFFFF2) }; static ANTLR3_BITSET_LIST FOLLOW_set_in_header_value6633 = { FOLLOW_set_in_header_value6633_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_CRLF_in_header_value6642 */ static ANTLR3_BITWORD FOLLOW_CRLF_in_header_value6642_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000000) }; static ANTLR3_BITSET_LIST FOLLOW_CRLF_in_header_value6642 = { FOLLOW_CRLF_in_header_value6642_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SP_in_header_value6644 */ static ANTLR3_BITWORD FOLLOW_SP_in_header_value6644_bits[] = { ANTLR3_UINT64_LIT(0x000001FFFFFFFFF2) }; static ANTLR3_BITSET_LIST FOLLOW_SP_in_header_value6644 = { FOLLOW_SP_in_header_value6644_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_set_in_header_value6649 */ static ANTLR3_BITWORD FOLLOW_set_in_header_value6649_bits[] = { ANTLR3_UINT64_LIT(0x000001FFFFFFFFF2) }; static ANTLR3_BITSET_LIST FOLLOW_set_in_header_value6649 = { FOLLOW_set_in_header_value6649_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_OCTET_in_message_body6681 */ static ANTLR3_BITWORD FOLLOW_OCTET_in_message_body6681_bits[] = { ANTLR3_UINT64_LIT(0x0000000002000002) }; static ANTLR3_BITSET_LIST FOLLOW_OCTET_in_message_body6681 = { FOLLOW_OCTET_in_message_body6681_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_sip_schema_in_paramless_uri6708 */ static ANTLR3_BITWORD FOLLOW_sip_schema_in_paramless_uri6708_bits[] = { ANTLR3_UINT64_LIT(0x000001ED398EF610) }; static ANTLR3_BITSET_LIST FOLLOW_sip_schema_in_paramless_uri6708 = { FOLLOW_sip_schema_in_paramless_uri6708_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_userinfo_in_paramless_uri6720 */ static ANTLR3_BITWORD FOLLOW_userinfo_in_paramless_uri6720_bits[] = { ANTLR3_UINT64_LIT(0x0000000001082400) }; static ANTLR3_BITSET_LIST FOLLOW_userinfo_in_paramless_uri6720 = { FOLLOW_userinfo_in_paramless_uri6720_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_hostport_in_paramless_uri6723 */ static ANTLR3_BITWORD FOLLOW_hostport_in_paramless_uri6723_bits[] = { ANTLR3_UINT64_LIT(0x0000000020000002) }; static ANTLR3_BITSET_LIST FOLLOW_hostport_in_paramless_uri6723 = { FOLLOW_hostport_in_paramless_uri6723_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_hostport_in_paramless_uri6729 */ static ANTLR3_BITWORD FOLLOW_hostport_in_paramless_uri6729_bits[] = { ANTLR3_UINT64_LIT(0x0000000020000002) }; static ANTLR3_BITSET_LIST FOLLOW_hostport_in_paramless_uri6729 = { FOLLOW_hostport_in_paramless_uri6729_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_headers_in_paramless_uri6736 */ static ANTLR3_BITWORD FOLLOW_headers_in_paramless_uri6736_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_headers_in_paramless_uri6736 = { FOLLOW_headers_in_paramless_uri6736_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_sip_schema_in_uri6772 */ static ANTLR3_BITWORD FOLLOW_sip_schema_in_uri6772_bits[] = { ANTLR3_UINT64_LIT(0x000001ED398EF610) }; static ANTLR3_BITSET_LIST FOLLOW_sip_schema_in_uri6772 = { FOLLOW_sip_schema_in_uri6772_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_userinfo_in_uri6783 */ static ANTLR3_BITWORD FOLLOW_userinfo_in_uri6783_bits[] = { ANTLR3_UINT64_LIT(0x0000000001082400) }; static ANTLR3_BITSET_LIST FOLLOW_userinfo_in_uri6783 = { FOLLOW_userinfo_in_uri6783_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_hostport_in_uri6786 */ static ANTLR3_BITWORD FOLLOW_hostport_in_uri6786_bits[] = { ANTLR3_UINT64_LIT(0x0000001420000802) }; static ANTLR3_BITSET_LIST FOLLOW_hostport_in_uri6786 = { FOLLOW_hostport_in_uri6786_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_hostport_in_uri6792 */ static ANTLR3_BITWORD FOLLOW_hostport_in_uri6792_bits[] = { ANTLR3_UINT64_LIT(0x0000001420000802) }; static ANTLR3_BITSET_LIST FOLLOW_hostport_in_uri6792 = { FOLLOW_hostport_in_uri6792_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_uri_parameters_in_uri6800 */ static ANTLR3_BITWORD FOLLOW_uri_parameters_in_uri6800_bits[] = { ANTLR3_UINT64_LIT(0x0000000020000002) }; static ANTLR3_BITSET_LIST FOLLOW_uri_parameters_in_uri6800 = { FOLLOW_uri_parameters_in_uri6800_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_headers_in_uri6807 */ static ANTLR3_BITWORD FOLLOW_headers_in_uri6807_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_headers_in_uri6807 = { FOLLOW_headers_in_uri6807_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_sip_schema_in_fast_uri6843 */ static ANTLR3_BITWORD FOLLOW_sip_schema_in_fast_uri6843_bits[] = { ANTLR3_UINT64_LIT(0x000001ED398EF610) }; static ANTLR3_BITSET_LIST FOLLOW_sip_schema_in_fast_uri6843 = { FOLLOW_sip_schema_in_fast_uri6843_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_userinfo_in_fast_uri6854 */ static ANTLR3_BITWORD FOLLOW_userinfo_in_fast_uri6854_bits[] = { ANTLR3_UINT64_LIT(0x0000000001082400) }; static ANTLR3_BITSET_LIST FOLLOW_userinfo_in_fast_uri6854 = { FOLLOW_userinfo_in_fast_uri6854_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_fast_hostport_in_fast_uri6857 */ static ANTLR3_BITWORD FOLLOW_fast_hostport_in_fast_uri6857_bits[] = { ANTLR3_UINT64_LIT(0x0000001420000802) }; static ANTLR3_BITSET_LIST FOLLOW_fast_hostport_in_fast_uri6857 = { FOLLOW_fast_hostport_in_fast_uri6857_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_fast_hostport_in_fast_uri6863 */ static ANTLR3_BITWORD FOLLOW_fast_hostport_in_fast_uri6863_bits[] = { ANTLR3_UINT64_LIT(0x0000001420000802) }; static ANTLR3_BITSET_LIST FOLLOW_fast_hostport_in_fast_uri6863 = { FOLLOW_fast_hostport_in_fast_uri6863_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_uri_parameters_in_fast_uri6871 */ static ANTLR3_BITWORD FOLLOW_uri_parameters_in_fast_uri6871_bits[] = { ANTLR3_UINT64_LIT(0x0000000020000002) }; static ANTLR3_BITSET_LIST FOLLOW_uri_parameters_in_fast_uri6871 = { FOLLOW_uri_parameters_in_fast_uri6871_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_headers_in_fast_uri6878 */ static ANTLR3_BITWORD FOLLOW_headers_in_fast_uri6878_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_headers_in_fast_uri6878 = { FOLLOW_headers_in_fast_uri6878_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_sip_token6899 */ static ANTLR3_BITWORD FOLLOW_token_in_sip_token6899_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_sip_token6899 = { FOLLOW_token_in_sip_token6899_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_token_in_sips_token6908 */ static ANTLR3_BITWORD FOLLOW_token_in_sips_token6908_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_token_in_sips_token6908 = { FOLLOW_token_in_sips_token6908_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_sips_token_in_sip_schema6919 */ static ANTLR3_BITWORD FOLLOW_sips_token_in_sip_schema6919_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000100) }; static ANTLR3_BITSET_LIST FOLLOW_sips_token_in_sip_schema6919 = { FOLLOW_sips_token_in_sip_schema6919_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_sip_token_in_sip_schema6937 */ static ANTLR3_BITWORD FOLLOW_sip_token_in_sip_schema6937_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000100) }; static ANTLR3_BITSET_LIST FOLLOW_sip_token_in_sip_schema6937 = { FOLLOW_sip_token_in_sip_schema6937_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_sip_schema6940 */ static ANTLR3_BITWORD FOLLOW_COLON_in_sip_schema6940_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_COLON_in_sip_schema6940 = { FOLLOW_COLON_in_sip_schema6940_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_user_in_userinfo6966 */ static ANTLR3_BITWORD FOLLOW_user_in_userinfo6966_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000120) }; static ANTLR3_BITSET_LIST FOLLOW_user_in_userinfo6966 = { FOLLOW_user_in_userinfo6966_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_userinfo6970 */ static ANTLR3_BITWORD FOLLOW_COLON_in_userinfo6970_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188EF630) }; static ANTLR3_BITSET_LIST FOLLOW_COLON_in_userinfo6970 = { FOLLOW_COLON_in_userinfo6970_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_password_in_userinfo6972 */ static ANTLR3_BITWORD FOLLOW_password_in_userinfo6972_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000020) }; static ANTLR3_BITSET_LIST FOLLOW_password_in_userinfo6972 = { FOLLOW_password_in_userinfo6972_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_AT_in_userinfo6978 */ static ANTLR3_BITWORD FOLLOW_AT_in_userinfo6978_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_AT_in_userinfo6978 = { FOLLOW_AT_in_userinfo6978_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_unreserved_in_user7000 */ static ANTLR3_BITWORD FOLLOW_unreserved_in_user7000_bits[] = { ANTLR3_UINT64_LIT(0x000001ED388EF612) }; static ANTLR3_BITSET_LIST FOLLOW_unreserved_in_user7000 = { FOLLOW_unreserved_in_user7000_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_escaped_in_user7005 */ static ANTLR3_BITWORD FOLLOW_escaped_in_user7005_bits[] = { ANTLR3_UINT64_LIT(0x000001ED388EF612) }; static ANTLR3_BITSET_LIST FOLLOW_escaped_in_user7005 = { FOLLOW_escaped_in_user7005_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_user_unreserved_in_user7009 */ static ANTLR3_BITWORD FOLLOW_user_unreserved_in_user7009_bits[] = { ANTLR3_UINT64_LIT(0x000001ED388EF612) }; static ANTLR3_BITSET_LIST FOLLOW_user_unreserved_in_user7009 = { FOLLOW_user_unreserved_in_user7009_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_unreserved_in_password7032 */ static ANTLR3_BITWORD FOLLOW_unreserved_in_password7032_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188EF612) }; static ANTLR3_BITSET_LIST FOLLOW_unreserved_in_password7032 = { FOLLOW_unreserved_in_password7032_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_escaped_in_password7036 */ static ANTLR3_BITWORD FOLLOW_escaped_in_password7036_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188EF612) }; static ANTLR3_BITSET_LIST FOLLOW_escaped_in_password7036 = { FOLLOW_escaped_in_password7036_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_AND_in_password7039 */ static ANTLR3_BITWORD FOLLOW_AND_in_password7039_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188EF612) }; static ANTLR3_BITSET_LIST FOLLOW_AND_in_password7039 = { FOLLOW_AND_in_password7039_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_EQUAL_in_password7043 */ static ANTLR3_BITWORD FOLLOW_EQUAL_in_password7043_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188EF612) }; static ANTLR3_BITSET_LIST FOLLOW_EQUAL_in_password7043 = { FOLLOW_EQUAL_in_password7043_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_PLUS_in_password7047 */ static ANTLR3_BITWORD FOLLOW_PLUS_in_password7047_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188EF612) }; static ANTLR3_BITSET_LIST FOLLOW_PLUS_in_password7047 = { FOLLOW_PLUS_in_password7047_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DOLLARD_in_password7051 */ static ANTLR3_BITWORD FOLLOW_DOLLARD_in_password7051_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188EF612) }; static ANTLR3_BITSET_LIST FOLLOW_DOLLARD_in_password7051 = { FOLLOW_DOLLARD_in_password7051_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_password7055 */ static ANTLR3_BITWORD FOLLOW_COMMA_in_password7055_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188EF612) }; static ANTLR3_BITSET_LIST FOLLOW_COMMA_in_password7055 = { FOLLOW_COMMA_in_password7055_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_host_in_hostport7087 */ static ANTLR3_BITWORD FOLLOW_host_in_hostport7087_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000102) }; static ANTLR3_BITSET_LIST FOLLOW_host_in_hostport7087 = { FOLLOW_host_in_hostport7087_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_hostport7091 */ static ANTLR3_BITWORD FOLLOW_COLON_in_hostport7091_bits[] = { ANTLR3_UINT64_LIT(0x0000000000002000) }; static ANTLR3_BITSET_LIST FOLLOW_COLON_in_hostport7091 = { FOLLOW_COLON_in_hostport7091_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_port_in_hostport7093 */ static ANTLR3_BITWORD FOLLOW_port_in_hostport7093_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_port_in_hostport7093 = { FOLLOW_port_in_hostport7093_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_fast_host_in_fast_hostport7126 */ static ANTLR3_BITWORD FOLLOW_fast_host_in_fast_hostport7126_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000102) }; static ANTLR3_BITSET_LIST FOLLOW_fast_host_in_fast_hostport7126 = { FOLLOW_fast_host_in_fast_hostport7126_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_fast_hostport7130 */ static ANTLR3_BITWORD FOLLOW_COLON_in_fast_hostport7130_bits[] = { ANTLR3_UINT64_LIT(0x0000000000002000) }; static ANTLR3_BITSET_LIST FOLLOW_COLON_in_fast_hostport7130 = { FOLLOW_COLON_in_fast_hostport7130_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_port_in_fast_hostport7132 */ static ANTLR3_BITWORD FOLLOW_port_in_fast_hostport7132_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_port_in_fast_hostport7132 = { FOLLOW_port_in_fast_hostport7132_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_semi_in_uri_parameters7164 */ static ANTLR3_BITWORD FOLLOW_semi_in_uri_parameters7164_bits[] = { ANTLR3_UINT64_LIT(0x000001EB198AF510) }; static ANTLR3_BITSET_LIST FOLLOW_semi_in_uri_parameters7164 = { FOLLOW_semi_in_uri_parameters7164_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_uri_parameter_in_uri_parameters7166 */ static ANTLR3_BITWORD FOLLOW_uri_parameter_in_uri_parameters7166_bits[] = { ANTLR3_UINT64_LIT(0x0000001400000802) }; static ANTLR3_BITSET_LIST FOLLOW_uri_parameter_in_uri_parameters7166 = { FOLLOW_uri_parameter_in_uri_parameters7166_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_lws_in_uri_parameters7170 */ static ANTLR3_BITWORD FOLLOW_lws_in_uri_parameters7170_bits[] = { ANTLR3_UINT64_LIT(0x0000000400000000) }; static ANTLR3_BITSET_LIST FOLLOW_lws_in_uri_parameters7170 = { FOLLOW_lws_in_uri_parameters7170_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SEMI_in_uri_parameters7173 */ static ANTLR3_BITWORD FOLLOW_SEMI_in_uri_parameters7173_bits[] = { ANTLR3_UINT64_LIT(0x0000001400000802) }; static ANTLR3_BITSET_LIST FOLLOW_SEMI_in_uri_parameters7173 = { FOLLOW_SEMI_in_uri_parameters7173_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_other_param_in_uri_parameter7193 */ static ANTLR3_BITWORD FOLLOW_other_param_in_uri_parameter7193_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_other_param_in_uri_parameter7193 = { FOLLOW_other_param_in_uri_parameter7193_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_pname_in_other_param7202 */ static ANTLR3_BITWORD FOLLOW_pname_in_other_param7202_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_pname_in_other_param7202 = { FOLLOW_pname_in_other_param7202_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_pname_in_other_param7214 */ static ANTLR3_BITWORD FOLLOW_pname_in_other_param7214_bits[] = { ANTLR3_UINT64_LIT(0x0000000000040000) }; static ANTLR3_BITSET_LIST FOLLOW_pname_in_other_param7214 = { FOLLOW_pname_in_other_param7214_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_EQUAL_in_other_param7216 */ static ANTLR3_BITWORD FOLLOW_EQUAL_in_other_param7216_bits[] = { ANTLR3_UINT64_LIT(0x000001EB198AF510) }; static ANTLR3_BITSET_LIST FOLLOW_EQUAL_in_other_param7216 = { FOLLOW_EQUAL_in_other_param7216_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_pvalue_in_other_param7218 */ static ANTLR3_BITWORD FOLLOW_pvalue_in_other_param7218_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_pvalue_in_other_param7218 = { FOLLOW_pvalue_in_other_param7218_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_paramchar_in_pname7238 */ static ANTLR3_BITWORD FOLLOW_paramchar_in_pname7238_bits[] = { ANTLR3_UINT64_LIT(0x000001EB198AF512) }; static ANTLR3_BITSET_LIST FOLLOW_paramchar_in_pname7238 = { FOLLOW_paramchar_in_pname7238_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_paramchar_in_pvalue7250 */ static ANTLR3_BITWORD FOLLOW_paramchar_in_pvalue7250_bits[] = { ANTLR3_UINT64_LIT(0x000001EB198AF512) }; static ANTLR3_BITSET_LIST FOLLOW_paramchar_in_pvalue7250 = { FOLLOW_paramchar_in_pvalue7250_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_param_unreserved_in_paramchar7266 */ static ANTLR3_BITWORD FOLLOW_param_unreserved_in_paramchar7266_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_param_unreserved_in_paramchar7266 = { FOLLOW_param_unreserved_in_paramchar7266_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_unreserved_in_paramchar7270 */ static ANTLR3_BITWORD FOLLOW_unreserved_in_paramchar7270_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_unreserved_in_paramchar7270 = { FOLLOW_unreserved_in_paramchar7270_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_escaped_in_paramchar7274 */ static ANTLR3_BITWORD FOLLOW_escaped_in_paramchar7274_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_escaped_in_paramchar7274 = { FOLLOW_escaped_in_paramchar7274_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_QMARK_in_headers7348 */ static ANTLR3_BITWORD FOLLOW_QMARK_in_headers7348_bits[] = { ANTLR3_UINT64_LIT(0x000001EB398AF500) }; static ANTLR3_BITSET_LIST FOLLOW_QMARK_in_headers7348 = { FOLLOW_QMARK_in_headers7348_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_uri_header_in_headers7350 */ static ANTLR3_BITWORD FOLLOW_uri_header_in_headers7350_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000012) }; static ANTLR3_BITSET_LIST FOLLOW_uri_header_in_headers7350 = { FOLLOW_uri_header_in_headers7350_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_AND_in_headers7354 */ static ANTLR3_BITWORD FOLLOW_AND_in_headers7354_bits[] = { ANTLR3_UINT64_LIT(0x000001EB398AF500) }; static ANTLR3_BITSET_LIST FOLLOW_AND_in_headers7354 = { FOLLOW_AND_in_headers7354_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_uri_header_in_headers7356 */ static ANTLR3_BITWORD FOLLOW_uri_header_in_headers7356_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000012) }; static ANTLR3_BITSET_LIST FOLLOW_uri_header_in_headers7356 = { FOLLOW_uri_header_in_headers7356_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_hname_in_uri_header7390 */ static ANTLR3_BITWORD FOLLOW_hname_in_uri_header7390_bits[] = { ANTLR3_UINT64_LIT(0x0000000000040000) }; static ANTLR3_BITSET_LIST FOLLOW_hname_in_uri_header7390 = { FOLLOW_hname_in_uri_header7390_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_EQUAL_in_uri_header7392 */ static ANTLR3_BITWORD FOLLOW_EQUAL_in_uri_header7392_bits[] = { ANTLR3_UINT64_LIT(0x000001EB398AF502) }; static ANTLR3_BITSET_LIST FOLLOW_EQUAL_in_uri_header7392 = { FOLLOW_EQUAL_in_uri_header7392_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_hvalue_in_uri_header7395 */ static ANTLR3_BITWORD FOLLOW_hvalue_in_uri_header7395_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_hvalue_in_uri_header7395 = { FOLLOW_hvalue_in_uri_header7395_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_hnv_unreserved_in_hname7420 */ static ANTLR3_BITWORD FOLLOW_hnv_unreserved_in_hname7420_bits[] = { ANTLR3_UINT64_LIT(0x000001EB398AF502) }; static ANTLR3_BITSET_LIST FOLLOW_hnv_unreserved_in_hname7420 = { FOLLOW_hnv_unreserved_in_hname7420_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_unreserved_in_hname7424 */ static ANTLR3_BITWORD FOLLOW_unreserved_in_hname7424_bits[] = { ANTLR3_UINT64_LIT(0x000001EB398AF502) }; static ANTLR3_BITSET_LIST FOLLOW_unreserved_in_hname7424 = { FOLLOW_unreserved_in_hname7424_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_escaped_in_hname7428 */ static ANTLR3_BITWORD FOLLOW_escaped_in_hname7428_bits[] = { ANTLR3_UINT64_LIT(0x000001EB398AF502) }; static ANTLR3_BITSET_LIST FOLLOW_escaped_in_hname7428 = { FOLLOW_escaped_in_hname7428_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_hnv_unreserved_in_hvalue7450 */ static ANTLR3_BITWORD FOLLOW_hnv_unreserved_in_hvalue7450_bits[] = { ANTLR3_UINT64_LIT(0x000001EB398AF502) }; static ANTLR3_BITSET_LIST FOLLOW_hnv_unreserved_in_hvalue7450 = { FOLLOW_hnv_unreserved_in_hvalue7450_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_unreserved_in_hvalue7454 */ static ANTLR3_BITWORD FOLLOW_unreserved_in_hvalue7454_bits[] = { ANTLR3_UINT64_LIT(0x000001EB398AF502) }; static ANTLR3_BITSET_LIST FOLLOW_unreserved_in_hvalue7454 = { FOLLOW_unreserved_in_hvalue7454_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_escaped_in_hvalue7458 */ static ANTLR3_BITWORD FOLLOW_escaped_in_hvalue7458_bits[] = { ANTLR3_UINT64_LIT(0x000001EB398AF502) }; static ANTLR3_BITSET_LIST FOLLOW_escaped_in_hvalue7458 = { FOLLOW_escaped_in_hvalue7458_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_fast_hostname_in_fast_host7540 */ static ANTLR3_BITWORD FOLLOW_fast_hostname_in_fast_host7540_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_fast_hostname_in_fast_host7540 = { FOLLOW_fast_hostname_in_fast_host7540_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_ipv6reference_in_fast_host7589 */ static ANTLR3_BITWORD FOLLOW_ipv6reference_in_fast_host7589_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_ipv6reference_in_fast_host7589 = { FOLLOW_ipv6reference_in_fast_host7589_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_alphanum_in_fast_hostname7604 */ static ANTLR3_BITWORD FOLLOW_alphanum_in_fast_hostname7604_bits[] = { ANTLR3_UINT64_LIT(0x000000000008B402) }; static ANTLR3_BITSET_LIST FOLLOW_alphanum_in_fast_hostname7604 = { FOLLOW_alphanum_in_fast_hostname7604_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_alphanum_in_fast_hostname7608 */ static ANTLR3_BITWORD FOLLOW_alphanum_in_fast_hostname7608_bits[] = { ANTLR3_UINT64_LIT(0x000000000008B402) }; static ANTLR3_BITSET_LIST FOLLOW_alphanum_in_fast_hostname7608 = { FOLLOW_alphanum_in_fast_hostname7608_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DASH_in_fast_hostname7612 */ static ANTLR3_BITWORD FOLLOW_DASH_in_fast_hostname7612_bits[] = { ANTLR3_UINT64_LIT(0x000000000008B402) }; static ANTLR3_BITSET_LIST FOLLOW_DASH_in_fast_hostname7612 = { FOLLOW_DASH_in_fast_hostname7612_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DOT_in_fast_hostname7616 */ static ANTLR3_BITWORD FOLLOW_DOT_in_fast_hostname7616_bits[] = { ANTLR3_UINT64_LIT(0x000000000008B402) }; static ANTLR3_BITSET_LIST FOLLOW_DOT_in_fast_hostname7616 = { FOLLOW_DOT_in_fast_hostname7616_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_hostname_in_host7693 */ static ANTLR3_BITWORD FOLLOW_hostname_in_host7693_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_hostname_in_host7693 = { FOLLOW_hostname_in_host7693_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_ipv4address_in_host7719 */ static ANTLR3_BITWORD FOLLOW_ipv4address_in_host7719_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_ipv4address_in_host7719 = { FOLLOW_ipv4address_in_host7719_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_ipv6reference_in_host7745 */ static ANTLR3_BITWORD FOLLOW_ipv6reference_in_host7745_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_ipv6reference_in_host7745 = { FOLLOW_ipv6reference_in_host7745_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_domainlabel_in_hostname7768 */ static ANTLR3_BITWORD FOLLOW_domainlabel_in_hostname7768_bits[] = { ANTLR3_UINT64_LIT(0x0000000000008000) }; static ANTLR3_BITSET_LIST FOLLOW_domainlabel_in_hostname7768 = { FOLLOW_domainlabel_in_hostname7768_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DOT_in_hostname7770 */ static ANTLR3_BITWORD FOLLOW_DOT_in_hostname7770_bits[] = { ANTLR3_UINT64_LIT(0x0000000000082400) }; static ANTLR3_BITSET_LIST FOLLOW_DOT_in_hostname7770 = { FOLLOW_DOT_in_hostname7770_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_toplabel_in_hostname7779 */ static ANTLR3_BITWORD FOLLOW_toplabel_in_hostname7779_bits[] = { ANTLR3_UINT64_LIT(0x0000000000008002) }; static ANTLR3_BITSET_LIST FOLLOW_toplabel_in_hostname7779 = { FOLLOW_toplabel_in_hostname7779_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DOT_in_hostname7781 */ static ANTLR3_BITWORD FOLLOW_DOT_in_hostname7781_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_DOT_in_hostname7781 = { FOLLOW_DOT_in_hostname7781_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_alphanum_in_domainlabel7797 */ static ANTLR3_BITWORD FOLLOW_alphanum_in_domainlabel7797_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_alphanum_in_domainlabel7797 = { FOLLOW_alphanum_in_domainlabel7797_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_alphanum_in_domainlabel7802 */ static ANTLR3_BITWORD FOLLOW_alphanum_in_domainlabel7802_bits[] = { ANTLR3_UINT64_LIT(0x0000000000083400) }; static ANTLR3_BITSET_LIST FOLLOW_alphanum_in_domainlabel7802 = { FOLLOW_alphanum_in_domainlabel7802_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_alphanum_in_domainlabel7806 */ static ANTLR3_BITWORD FOLLOW_alphanum_in_domainlabel7806_bits[] = { ANTLR3_UINT64_LIT(0x0000000000083400) }; static ANTLR3_BITSET_LIST FOLLOW_alphanum_in_domainlabel7806 = { FOLLOW_alphanum_in_domainlabel7806_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DASH_in_domainlabel7810 */ static ANTLR3_BITWORD FOLLOW_DASH_in_domainlabel7810_bits[] = { ANTLR3_UINT64_LIT(0x0000000000083400) }; static ANTLR3_BITSET_LIST FOLLOW_DASH_in_domainlabel7810 = { FOLLOW_DASH_in_domainlabel7810_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_alphanum_in_domainlabel7815 */ static ANTLR3_BITWORD FOLLOW_alphanum_in_domainlabel7815_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_alphanum_in_domainlabel7815 = { FOLLOW_alphanum_in_domainlabel7815_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_alphanum_in_toplabel7833 */ static ANTLR3_BITWORD FOLLOW_alphanum_in_toplabel7833_bits[] = { ANTLR3_UINT64_LIT(0x0000000000083400) }; static ANTLR3_BITSET_LIST FOLLOW_alphanum_in_toplabel7833 = { FOLLOW_alphanum_in_toplabel7833_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DASH_in_toplabel7838 */ static ANTLR3_BITWORD FOLLOW_DASH_in_toplabel7838_bits[] = { ANTLR3_UINT64_LIT(0x0000000000082400) }; static ANTLR3_BITSET_LIST FOLLOW_DASH_in_toplabel7838 = { FOLLOW_DASH_in_toplabel7838_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_alphanum_in_toplabel7842 */ static ANTLR3_BITWORD FOLLOW_alphanum_in_toplabel7842_bits[] = { ANTLR3_UINT64_LIT(0x0000000000083402) }; static ANTLR3_BITSET_LIST FOLLOW_alphanum_in_toplabel7842 = { FOLLOW_alphanum_in_toplabel7842_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_three_digit_in_ipv4address7856 */ static ANTLR3_BITWORD FOLLOW_three_digit_in_ipv4address7856_bits[] = { ANTLR3_UINT64_LIT(0x0000000000008000) }; static ANTLR3_BITSET_LIST FOLLOW_three_digit_in_ipv4address7856 = { FOLLOW_three_digit_in_ipv4address7856_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DOT_in_ipv4address7858 */ static ANTLR3_BITWORD FOLLOW_DOT_in_ipv4address7858_bits[] = { ANTLR3_UINT64_LIT(0x0000000000002000) }; static ANTLR3_BITSET_LIST FOLLOW_DOT_in_ipv4address7858 = { FOLLOW_DOT_in_ipv4address7858_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_three_digit_in_ipv4address7860 */ static ANTLR3_BITWORD FOLLOW_three_digit_in_ipv4address7860_bits[] = { ANTLR3_UINT64_LIT(0x0000000000008000) }; static ANTLR3_BITSET_LIST FOLLOW_three_digit_in_ipv4address7860 = { FOLLOW_three_digit_in_ipv4address7860_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DOT_in_ipv4address7862 */ static ANTLR3_BITWORD FOLLOW_DOT_in_ipv4address7862_bits[] = { ANTLR3_UINT64_LIT(0x0000000000002000) }; static ANTLR3_BITSET_LIST FOLLOW_DOT_in_ipv4address7862 = { FOLLOW_DOT_in_ipv4address7862_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_three_digit_in_ipv4address7864 */ static ANTLR3_BITWORD FOLLOW_three_digit_in_ipv4address7864_bits[] = { ANTLR3_UINT64_LIT(0x0000000000008000) }; static ANTLR3_BITSET_LIST FOLLOW_three_digit_in_ipv4address7864 = { FOLLOW_three_digit_in_ipv4address7864_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DOT_in_ipv4address7866 */ static ANTLR3_BITWORD FOLLOW_DOT_in_ipv4address7866_bits[] = { ANTLR3_UINT64_LIT(0x0000000000002000) }; static ANTLR3_BITSET_LIST FOLLOW_DOT_in_ipv4address7866 = { FOLLOW_DOT_in_ipv4address7866_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_three_digit_in_ipv4address7868 */ static ANTLR3_BITWORD FOLLOW_three_digit_in_ipv4address7868_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_three_digit_in_ipv4address7868 = { FOLLOW_three_digit_in_ipv4address7868_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_LSBRAQUET_in_ipv6reference7882 */ static ANTLR3_BITWORD FOLLOW_LSBRAQUET_in_ipv6reference7882_bits[] = { ANTLR3_UINT64_LIT(0x0000000000082100) }; static ANTLR3_BITSET_LIST FOLLOW_LSBRAQUET_in_ipv6reference7882 = { FOLLOW_LSBRAQUET_in_ipv6reference7882_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_ipv6address_in_ipv6reference7884 */ static ANTLR3_BITWORD FOLLOW_ipv6address_in_ipv6reference7884_bits[] = { ANTLR3_UINT64_LIT(0x0000000200000000) }; static ANTLR3_BITSET_LIST FOLLOW_ipv6address_in_ipv6reference7884 = { FOLLOW_ipv6address_in_ipv6reference7884_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_RSBRAQUET_in_ipv6reference7886 */ static ANTLR3_BITWORD FOLLOW_RSBRAQUET_in_ipv6reference7886_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_RSBRAQUET_in_ipv6reference7886 = { FOLLOW_RSBRAQUET_in_ipv6reference7886_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_hexpart_in_ipv6address7899 */ static ANTLR3_BITWORD FOLLOW_hexpart_in_ipv6address7899_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000102) }; static ANTLR3_BITSET_LIST FOLLOW_hexpart_in_ipv6address7899 = { FOLLOW_hexpart_in_ipv6address7899_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_ipv6address7903 */ static ANTLR3_BITWORD FOLLOW_COLON_in_ipv6address7903_bits[] = { ANTLR3_UINT64_LIT(0x0000000000002000) }; static ANTLR3_BITSET_LIST FOLLOW_COLON_in_ipv6address7903 = { FOLLOW_COLON_in_ipv6address7903_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_ipv4address_in_ipv6address7905 */ static ANTLR3_BITWORD FOLLOW_ipv4address_in_ipv6address7905_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_ipv4address_in_ipv6address7905 = { FOLLOW_ipv4address_in_ipv6address7905_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_hexseq_in_ipv6address7914 */ static ANTLR3_BITWORD FOLLOW_hexseq_in_ipv6address7914_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000100) }; static ANTLR3_BITSET_LIST FOLLOW_hexseq_in_ipv6address7914 = { FOLLOW_hexseq_in_ipv6address7914_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_ipv6address7919 */ static ANTLR3_BITWORD FOLLOW_COLON_in_ipv6address7919_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000100) }; static ANTLR3_BITSET_LIST FOLLOW_COLON_in_ipv6address7919 = { FOLLOW_COLON_in_ipv6address7919_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_ipv6address7921 */ static ANTLR3_BITWORD FOLLOW_COLON_in_ipv6address7921_bits[] = { ANTLR3_UINT64_LIT(0x0000000000002000) }; static ANTLR3_BITSET_LIST FOLLOW_COLON_in_ipv6address7921 = { FOLLOW_COLON_in_ipv6address7921_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_ipv4address_in_ipv6address7923 */ static ANTLR3_BITWORD FOLLOW_ipv4address_in_ipv6address7923_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_ipv4address_in_ipv6address7923 = { FOLLOW_ipv4address_in_ipv6address7923_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_hexseq_in_hexpart7938 */ static ANTLR3_BITWORD FOLLOW_hexseq_in_hexpart7938_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_hexseq_in_hexpart7938 = { FOLLOW_hexseq_in_hexpart7938_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_hexseq_in_hexpart7942 */ static ANTLR3_BITWORD FOLLOW_hexseq_in_hexpart7942_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000100) }; static ANTLR3_BITSET_LIST FOLLOW_hexseq_in_hexpart7942 = { FOLLOW_hexseq_in_hexpart7942_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_hexpart7944 */ static ANTLR3_BITWORD FOLLOW_COLON_in_hexpart7944_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000100) }; static ANTLR3_BITSET_LIST FOLLOW_COLON_in_hexpart7944 = { FOLLOW_COLON_in_hexpart7944_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_hexpart7946 */ static ANTLR3_BITWORD FOLLOW_COLON_in_hexpart7946_bits[] = { ANTLR3_UINT64_LIT(0x0000000000082002) }; static ANTLR3_BITSET_LIST FOLLOW_COLON_in_hexpart7946 = { FOLLOW_COLON_in_hexpart7946_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_hexseq_in_hexpart7950 */ static ANTLR3_BITWORD FOLLOW_hexseq_in_hexpart7950_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_hexseq_in_hexpart7950 = { FOLLOW_hexseq_in_hexpart7950_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_hexpart7957 */ static ANTLR3_BITWORD FOLLOW_COLON_in_hexpart7957_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000100) }; static ANTLR3_BITSET_LIST FOLLOW_COLON_in_hexpart7957 = { FOLLOW_COLON_in_hexpart7957_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_hexpart7959 */ static ANTLR3_BITWORD FOLLOW_COLON_in_hexpart7959_bits[] = { ANTLR3_UINT64_LIT(0x0000000000082002) }; static ANTLR3_BITSET_LIST FOLLOW_COLON_in_hexpart7959 = { FOLLOW_COLON_in_hexpart7959_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_hexseq_in_hexpart7963 */ static ANTLR3_BITWORD FOLLOW_hexseq_in_hexpart7963_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_hexseq_in_hexpart7963 = { FOLLOW_hexseq_in_hexpart7963_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_hex4_in_hexseq7982 */ static ANTLR3_BITWORD FOLLOW_hex4_in_hexseq7982_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000102) }; static ANTLR3_BITSET_LIST FOLLOW_hex4_in_hexseq7982 = { FOLLOW_hex4_in_hexseq7982_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_hexseq7986 */ static ANTLR3_BITWORD FOLLOW_COLON_in_hexseq7986_bits[] = { ANTLR3_UINT64_LIT(0x0000000000082000) }; static ANTLR3_BITSET_LIST FOLLOW_COLON_in_hexseq7986 = { FOLLOW_COLON_in_hexseq7986_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_hex4_in_hexseq7988 */ static ANTLR3_BITWORD FOLLOW_hex4_in_hexseq7988_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000102) }; static ANTLR3_BITSET_LIST FOLLOW_hex4_in_hexseq7988 = { FOLLOW_hex4_in_hexseq7988_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_hexdigit_in_hex48008 */ static ANTLR3_BITWORD FOLLOW_hexdigit_in_hex48008_bits[] = { ANTLR3_UINT64_LIT(0x0000000000082002) }; static ANTLR3_BITSET_LIST FOLLOW_hexdigit_in_hex48008 = { FOLLOW_hexdigit_in_hex48008_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DIGIT_in_port8030 */ static ANTLR3_BITWORD FOLLOW_DIGIT_in_port8030_bits[] = { ANTLR3_UINT64_LIT(0x0000000000002002) }; static ANTLR3_BITSET_LIST FOLLOW_DIGIT_in_port8030 = { FOLLOW_DIGIT_in_port8030_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_PERCENT_in_escaped8046 */ static ANTLR3_BITWORD FOLLOW_PERCENT_in_escaped8046_bits[] = { ANTLR3_UINT64_LIT(0x0000000000082000) }; static ANTLR3_BITSET_LIST FOLLOW_PERCENT_in_escaped8046 = { FOLLOW_PERCENT_in_escaped8046_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_hexdigit_in_escaped8048 */ static ANTLR3_BITWORD FOLLOW_hexdigit_in_escaped8048_bits[] = { ANTLR3_UINT64_LIT(0x0000000000082000) }; static ANTLR3_BITSET_LIST FOLLOW_hexdigit_in_escaped8048 = { FOLLOW_hexdigit_in_escaped8048_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_hexdigit_in_escaped8050 */ static ANTLR3_BITWORD FOLLOW_hexdigit_in_escaped8050_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_hexdigit_in_escaped8050 = { FOLLOW_hexdigit_in_escaped8050_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_three_digit_in_ttl8057 */ static ANTLR3_BITWORD FOLLOW_three_digit_in_ttl8057_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_three_digit_in_ttl8057 = { FOLLOW_three_digit_in_ttl8057_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DIGIT_in_three_digit8069 */ static ANTLR3_BITWORD FOLLOW_DIGIT_in_three_digit8069_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_DIGIT_in_three_digit8069 = { FOLLOW_DIGIT_in_three_digit8069_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DIGIT_in_three_digit8106 */ static ANTLR3_BITWORD FOLLOW_DIGIT_in_three_digit8106_bits[] = { ANTLR3_UINT64_LIT(0x0000000000002000) }; static ANTLR3_BITSET_LIST FOLLOW_DIGIT_in_three_digit8106 = { FOLLOW_DIGIT_in_three_digit8106_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DIGIT_in_three_digit8108 */ static ANTLR3_BITWORD FOLLOW_DIGIT_in_three_digit8108_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_DIGIT_in_three_digit8108 = { FOLLOW_DIGIT_in_three_digit8108_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DIGIT_in_three_digit8147 */ static ANTLR3_BITWORD FOLLOW_DIGIT_in_three_digit8147_bits[] = { ANTLR3_UINT64_LIT(0x0000000000002000) }; static ANTLR3_BITSET_LIST FOLLOW_DIGIT_in_three_digit8147 = { FOLLOW_DIGIT_in_three_digit8147_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DIGIT_in_three_digit8149 */ static ANTLR3_BITWORD FOLLOW_DIGIT_in_three_digit8149_bits[] = { ANTLR3_UINT64_LIT(0x0000000000002000) }; static ANTLR3_BITSET_LIST FOLLOW_DIGIT_in_three_digit8149 = { FOLLOW_DIGIT_in_three_digit8149_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DIGIT_in_three_digit8151 */ static ANTLR3_BITWORD FOLLOW_DIGIT_in_three_digit8151_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_DIGIT_in_three_digit8151 = { FOLLOW_DIGIT_in_three_digit8151_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_alphanum_in_token8165 */ static ANTLR3_BITWORD FOLLOW_alphanum_in_token8165_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB442) }; static ANTLR3_BITSET_LIST FOLLOW_alphanum_in_token8165 = { FOLLOW_alphanum_in_token8165_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_mark_in_token8169 */ static ANTLR3_BITWORD FOLLOW_mark_in_token8169_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB442) }; static ANTLR3_BITSET_LIST FOLLOW_mark_in_token8169 = { FOLLOW_mark_in_token8169_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_PERCENT_in_token8173 */ static ANTLR3_BITWORD FOLLOW_PERCENT_in_token8173_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB442) }; static ANTLR3_BITSET_LIST FOLLOW_PERCENT_in_token8173 = { FOLLOW_PERCENT_in_token8173_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_PLUS_in_token8177 */ static ANTLR3_BITWORD FOLLOW_PLUS_in_token8177_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB442) }; static ANTLR3_BITSET_LIST FOLLOW_PLUS_in_token8177 = { FOLLOW_PLUS_in_token8177_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_BQUOTE_in_token8181 */ static ANTLR3_BITWORD FOLLOW_BQUOTE_in_token8181_bits[] = { ANTLR3_UINT64_LIT(0x000001E1188AB442) }; static ANTLR3_BITSET_LIST FOLLOW_BQUOTE_in_token8181 = { FOLLOW_BQUOTE_in_token8181_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SEMI_in_reserved8230 */ static ANTLR3_BITWORD FOLLOW_SEMI_in_reserved8230_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_SEMI_in_reserved8230 = { FOLLOW_SEMI_in_reserved8230_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_reserved8234 */ static ANTLR3_BITWORD FOLLOW_COMMA_in_reserved8234_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_COMMA_in_reserved8234 = { FOLLOW_COMMA_in_reserved8234_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_QMARK_in_reserved8239 */ static ANTLR3_BITWORD FOLLOW_QMARK_in_reserved8239_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_QMARK_in_reserved8239 = { FOLLOW_QMARK_in_reserved8239_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_reserved_for_from_to_contact_addr_spec_in_reserved8244 */ static ANTLR3_BITWORD FOLLOW_reserved_for_from_to_contact_addr_spec_in_reserved8244_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_reserved_for_from_to_contact_addr_spec_in_reserved8244 = { FOLLOW_reserved_for_from_to_contact_addr_spec_in_reserved8244_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_alphanum_in_unreserved8256 */ static ANTLR3_BITWORD FOLLOW_alphanum_in_unreserved8256_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_alphanum_in_unreserved8256 = { FOLLOW_alphanum_in_unreserved8256_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_mark_in_unreserved8259 */ static ANTLR3_BITWORD FOLLOW_mark_in_unreserved8259_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_mark_in_unreserved8259 = { FOLLOW_mark_in_unreserved8259_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_alpha_in_alphanum8270 */ static ANTLR3_BITWORD FOLLOW_alpha_in_alphanum8270_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_alpha_in_alphanum8270 = { FOLLOW_alpha_in_alphanum8270_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DIGIT_in_alphanum8274 */ static ANTLR3_BITWORD FOLLOW_DIGIT_in_alphanum8274_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_DIGIT_in_alphanum8274 = { FOLLOW_DIGIT_in_alphanum8274_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_alphanum_in_word8310 */ static ANTLR3_BITWORD FOLLOW_alphanum_in_word8310_bits[] = { ANTLR3_UINT64_LIT(0x000001EBF9EBB5C2) }; static ANTLR3_BITSET_LIST FOLLOW_alphanum_in_word8310 = { FOLLOW_alphanum_in_word8310_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_mark_in_word8314 */ static ANTLR3_BITWORD FOLLOW_mark_in_word8314_bits[] = { ANTLR3_UINT64_LIT(0x000001EBF9EBB5C2) }; static ANTLR3_BITSET_LIST FOLLOW_mark_in_word8314 = { FOLLOW_mark_in_word8314_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_PERCENT_in_word8320 */ static ANTLR3_BITWORD FOLLOW_PERCENT_in_word8320_bits[] = { ANTLR3_UINT64_LIT(0x000001EBF9EBB5C2) }; static ANTLR3_BITSET_LIST FOLLOW_PERCENT_in_word8320 = { FOLLOW_PERCENT_in_word8320_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_PLUS_in_word8346 */ static ANTLR3_BITWORD FOLLOW_PLUS_in_word8346_bits[] = { ANTLR3_UINT64_LIT(0x000001EBF9EBB5C2) }; static ANTLR3_BITSET_LIST FOLLOW_PLUS_in_word8346 = { FOLLOW_PLUS_in_word8346_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_BQUOTE_in_word8350 */ static ANTLR3_BITWORD FOLLOW_BQUOTE_in_word8350_bits[] = { ANTLR3_UINT64_LIT(0x000001EBF9EBB5C2) }; static ANTLR3_BITSET_LIST FOLLOW_BQUOTE_in_word8350 = { FOLLOW_BQUOTE_in_word8350_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_LAQUOT_in_word8375 */ static ANTLR3_BITWORD FOLLOW_LAQUOT_in_word8375_bits[] = { ANTLR3_UINT64_LIT(0x000001EBF9EBB5C2) }; static ANTLR3_BITSET_LIST FOLLOW_LAQUOT_in_word8375 = { FOLLOW_LAQUOT_in_word8375_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_RAQUOT_in_word8379 */ static ANTLR3_BITWORD FOLLOW_RAQUOT_in_word8379_bits[] = { ANTLR3_UINT64_LIT(0x000001EBF9EBB5C2) }; static ANTLR3_BITSET_LIST FOLLOW_RAQUOT_in_word8379 = { FOLLOW_RAQUOT_in_word8379_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_word8404 */ static ANTLR3_BITWORD FOLLOW_COLON_in_word8404_bits[] = { ANTLR3_UINT64_LIT(0x000001EBF9EBB5C2) }; static ANTLR3_BITSET_LIST FOLLOW_COLON_in_word8404 = { FOLLOW_COLON_in_word8404_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_BSLASH_in_word8408 */ static ANTLR3_BITWORD FOLLOW_BSLASH_in_word8408_bits[] = { ANTLR3_UINT64_LIT(0x000001EBF9EBB5C2) }; static ANTLR3_BITSET_LIST FOLLOW_BSLASH_in_word8408 = { FOLLOW_BSLASH_in_word8408_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DQUOTE_in_word8412 */ static ANTLR3_BITWORD FOLLOW_DQUOTE_in_word8412_bits[] = { ANTLR3_UINT64_LIT(0x000001EBF9EBB5C2) }; static ANTLR3_BITSET_LIST FOLLOW_DQUOTE_in_word8412 = { FOLLOW_DQUOTE_in_word8412_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SLASH_in_word8416 */ static ANTLR3_BITWORD FOLLOW_SLASH_in_word8416_bits[] = { ANTLR3_UINT64_LIT(0x000001EBF9EBB5C2) }; static ANTLR3_BITSET_LIST FOLLOW_SLASH_in_word8416 = { FOLLOW_SLASH_in_word8416_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_LSBRAQUET_in_word8420 */ static ANTLR3_BITWORD FOLLOW_LSBRAQUET_in_word8420_bits[] = { ANTLR3_UINT64_LIT(0x000001EBF9EBB5C2) }; static ANTLR3_BITSET_LIST FOLLOW_LSBRAQUET_in_word8420 = { FOLLOW_LSBRAQUET_in_word8420_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_RSBRAQUET_in_word8424 */ static ANTLR3_BITWORD FOLLOW_RSBRAQUET_in_word8424_bits[] = { ANTLR3_UINT64_LIT(0x000001EBF9EBB5C2) }; static ANTLR3_BITSET_LIST FOLLOW_RSBRAQUET_in_word8424 = { FOLLOW_RSBRAQUET_in_word8424_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_QMARK_in_word8428 */ static ANTLR3_BITWORD FOLLOW_QMARK_in_word8428_bits[] = { ANTLR3_UINT64_LIT(0x000001EBF9EBB5C2) }; static ANTLR3_BITSET_LIST FOLLOW_QMARK_in_word8428 = { FOLLOW_QMARK_in_word8428_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_LBRACE_in_word8432 */ static ANTLR3_BITWORD FOLLOW_LBRACE_in_word8432_bits[] = { ANTLR3_UINT64_LIT(0x000001EBF9EBB5C2) }; static ANTLR3_BITSET_LIST FOLLOW_LBRACE_in_word8432 = { FOLLOW_LBRACE_in_word8432_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_RBRACE_in_word8436 */ static ANTLR3_BITWORD FOLLOW_RBRACE_in_word8436_bits[] = { ANTLR3_UINT64_LIT(0x000001EBF9EBB5C2) }; static ANTLR3_BITSET_LIST FOLLOW_RBRACE_in_word8436 = { FOLLOW_RBRACE_in_word8436_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_COLON_in_sp_tab_colon8508 */ static ANTLR3_BITWORD FOLLOW_COLON_in_sp_tab_colon8508_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_COLON_in_sp_tab_colon8508 = { FOLLOW_COLON_in_sp_tab_colon8508_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_sp_tab_colon_in_hcolon8517 */ static ANTLR3_BITWORD FOLLOW_sp_tab_colon_in_hcolon8517_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000802) }; static ANTLR3_BITSET_LIST FOLLOW_sp_tab_colon_in_hcolon8517 = { FOLLOW_sp_tab_colon_in_hcolon8517_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_lws_in_hcolon8519 */ static ANTLR3_BITWORD FOLLOW_lws_in_hcolon8519_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_lws_in_hcolon8519 = { FOLLOW_lws_in_hcolon8519_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_lws_in_ldquot8540 */ static ANTLR3_BITWORD FOLLOW_lws_in_ldquot8540_bits[] = { ANTLR3_UINT64_LIT(0x0000000000010000) }; static ANTLR3_BITSET_LIST FOLLOW_lws_in_ldquot8540 = { FOLLOW_lws_in_ldquot8540_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DQUOTE_in_ldquot8543 */ static ANTLR3_BITWORD FOLLOW_DQUOTE_in_ldquot8543_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_DQUOTE_in_ldquot8543 = { FOLLOW_DQUOTE_in_ldquot8543_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DQUOTE_in_rdquot8551 */ static ANTLR3_BITWORD FOLLOW_DQUOTE_in_rdquot8551_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000802) }; static ANTLR3_BITSET_LIST FOLLOW_DQUOTE_in_rdquot8551 = { FOLLOW_DQUOTE_in_rdquot8551_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_lws_in_rdquot8553 */ static ANTLR3_BITWORD FOLLOW_lws_in_rdquot8553_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_lws_in_rdquot8553 = { FOLLOW_lws_in_rdquot8553_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_lws_in_semi8560 */ static ANTLR3_BITWORD FOLLOW_lws_in_semi8560_bits[] = { ANTLR3_UINT64_LIT(0x0000000400000000) }; static ANTLR3_BITSET_LIST FOLLOW_lws_in_semi8560 = { FOLLOW_lws_in_semi8560_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SEMI_in_semi8563 */ static ANTLR3_BITWORD FOLLOW_SEMI_in_semi8563_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000802) }; static ANTLR3_BITSET_LIST FOLLOW_SEMI_in_semi8563 = { FOLLOW_SEMI_in_semi8563_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_lws_in_semi8565 */ static ANTLR3_BITWORD FOLLOW_lws_in_semi8565_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_lws_in_semi8565 = { FOLLOW_lws_in_semi8565_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_lws_in_comma8573 */ static ANTLR3_BITWORD FOLLOW_lws_in_comma8573_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000200) }; static ANTLR3_BITSET_LIST FOLLOW_lws_in_comma8573 = { FOLLOW_lws_in_comma8573_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_COMMA_in_comma8576 */ static ANTLR3_BITWORD FOLLOW_COMMA_in_comma8576_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000802) }; static ANTLR3_BITSET_LIST FOLLOW_COMMA_in_comma8576 = { FOLLOW_COMMA_in_comma8576_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_lws_in_comma8578 */ static ANTLR3_BITWORD FOLLOW_lws_in_comma8578_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_lws_in_comma8578 = { FOLLOW_lws_in_comma8578_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_lws_in_sp_laquot8588 */ static ANTLR3_BITWORD FOLLOW_lws_in_sp_laquot8588_bits[] = { ANTLR3_UINT64_LIT(0x0000000000200000) }; static ANTLR3_BITSET_LIST FOLLOW_lws_in_sp_laquot8588 = { FOLLOW_lws_in_sp_laquot8588_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_LAQUOT_in_sp_laquot8591 */ static ANTLR3_BITWORD FOLLOW_LAQUOT_in_sp_laquot8591_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_LAQUOT_in_sp_laquot8591 = { FOLLOW_LAQUOT_in_sp_laquot8591_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_RAQUOT_in_raquot_sp8601 */ static ANTLR3_BITWORD FOLLOW_RAQUOT_in_raquot_sp8601_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000802) }; static ANTLR3_BITSET_LIST FOLLOW_RAQUOT_in_raquot_sp8601 = { FOLLOW_RAQUOT_in_raquot_sp8601_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_lws_in_raquot_sp8603 */ static ANTLR3_BITWORD FOLLOW_lws_in_raquot_sp8603_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_lws_in_raquot_sp8603 = { FOLLOW_lws_in_raquot_sp8603_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_lws_in_equal8613 */ static ANTLR3_BITWORD FOLLOW_lws_in_equal8613_bits[] = { ANTLR3_UINT64_LIT(0x0000000000040000) }; static ANTLR3_BITSET_LIST FOLLOW_lws_in_equal8613 = { FOLLOW_lws_in_equal8613_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_EQUAL_in_equal8616 */ static ANTLR3_BITWORD FOLLOW_EQUAL_in_equal8616_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000802) }; static ANTLR3_BITSET_LIST FOLLOW_EQUAL_in_equal8616 = { FOLLOW_EQUAL_in_equal8616_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_lws_in_equal8618 */ static ANTLR3_BITWORD FOLLOW_lws_in_equal8618_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_lws_in_equal8618 = { FOLLOW_lws_in_equal8618_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_lws_in_slash8626 */ static ANTLR3_BITWORD FOLLOW_lws_in_slash8626_bits[] = { ANTLR3_UINT64_LIT(0x0000000800000000) }; static ANTLR3_BITSET_LIST FOLLOW_lws_in_slash8626 = { FOLLOW_lws_in_slash8626_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SLASH_in_slash8629 */ static ANTLR3_BITWORD FOLLOW_SLASH_in_slash8629_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000802) }; static ANTLR3_BITSET_LIST FOLLOW_SLASH_in_slash8629 = { FOLLOW_SLASH_in_slash8629_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_lws_in_slash8631 */ static ANTLR3_BITWORD FOLLOW_lws_in_slash8631_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_lws_in_slash8631 = { FOLLOW_lws_in_slash8631_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SP_in_lws8640 */ static ANTLR3_BITWORD FOLLOW_SP_in_lws8640_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000800) }; static ANTLR3_BITSET_LIST FOLLOW_SP_in_lws8640 = { FOLLOW_SP_in_lws8640_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_CRLF_in_lws8643 */ static ANTLR3_BITWORD FOLLOW_CRLF_in_lws8643_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000000) }; static ANTLR3_BITSET_LIST FOLLOW_CRLF_in_lws8643 = { FOLLOW_CRLF_in_lws8643_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SP_in_lws8645 */ static ANTLR3_BITWORD FOLLOW_SP_in_lws8645_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000002) }; static ANTLR3_BITSET_LIST FOLLOW_SP_in_lws8645 = { FOLLOW_SP_in_lws8645_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SP_in_lws8651 */ static ANTLR3_BITWORD FOLLOW_SP_in_lws8651_bits[] = { ANTLR3_UINT64_LIT(0x0000001000000002) }; static ANTLR3_BITSET_LIST FOLLOW_SP_in_lws8651 = { FOLLOW_SP_in_lws8651_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_sip_version_in_synpred1_belle_sip_message166 */ static ANTLR3_BITWORD FOLLOW_sip_version_in_synpred1_belle_sip_message166_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000800) }; static ANTLR3_BITSET_LIST FOLLOW_sip_version_in_synpred1_belle_sip_message166 = { FOLLOW_sip_version_in_synpred1_belle_sip_message166_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_CRLF_in_synpred1_belle_sip_message168 */ static ANTLR3_BITWORD FOLLOW_CRLF_in_synpred1_belle_sip_message168_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_CRLF_in_synpred1_belle_sip_message168 = { FOLLOW_CRLF_in_synpred1_belle_sip_message168_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_http_version_in_synpred2_belle_sip_message194 */ static ANTLR3_BITWORD FOLLOW_http_version_in_synpred2_belle_sip_message194_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000800) }; static ANTLR3_BITSET_LIST FOLLOW_http_version_in_synpred2_belle_sip_message194 = { FOLLOW_http_version_in_synpred2_belle_sip_message194_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_CRLF_in_synpred2_belle_sip_message196 */ static ANTLR3_BITWORD FOLLOW_CRLF_in_synpred2_belle_sip_message196_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_CRLF_in_synpred2_belle_sip_message196 = { FOLLOW_CRLF_in_synpred2_belle_sip_message196_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_sip_version_in_synpred3_belle_sip_message518 */ static ANTLR3_BITWORD FOLLOW_sip_version_in_synpred3_belle_sip_message518_bits[] = { ANTLR3_UINT64_LIT(0x000001FFFFFFFFF0) }; static ANTLR3_BITSET_LIST FOLLOW_sip_version_in_synpred3_belle_sip_message518 = { FOLLOW_sip_version_in_synpred3_belle_sip_message518_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_CRLF_in_synpred3_belle_sip_message527 */ static ANTLR3_BITWORD FOLLOW_CRLF_in_synpred3_belle_sip_message527_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_CRLF_in_synpred3_belle_sip_message527 = { FOLLOW_CRLF_in_synpred3_belle_sip_message527_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_http_version_in_synpred4_belle_sip_message549 */ static ANTLR3_BITWORD FOLLOW_http_version_in_synpred4_belle_sip_message549_bits[] = { ANTLR3_UINT64_LIT(0x000001FFFFFFFFF0) }; static ANTLR3_BITSET_LIST FOLLOW_http_version_in_synpred4_belle_sip_message549 = { FOLLOW_http_version_in_synpred4_belle_sip_message549_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_CRLF_in_synpred4_belle_sip_message558 */ static ANTLR3_BITWORD FOLLOW_CRLF_in_synpred4_belle_sip_message558_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_CRLF_in_synpred4_belle_sip_message558 = { FOLLOW_CRLF_in_synpred4_belle_sip_message558_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SLASH_in_synpred6_belle_sip_message1136 */ static ANTLR3_BITWORD FOLLOW_SLASH_in_synpred6_belle_sip_message1136_bits[] = { ANTLR3_UINT64_LIT(0x0000000800000000) }; static ANTLR3_BITSET_LIST FOLLOW_SLASH_in_synpred6_belle_sip_message1136 = { FOLLOW_SLASH_in_synpred6_belle_sip_message1136_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SLASH_in_synpred6_belle_sip_message1138 */ static ANTLR3_BITWORD FOLLOW_SLASH_in_synpred6_belle_sip_message1138_bits[] = { ANTLR3_UINT64_LIT(0x0000000800000000) }; static ANTLR3_BITSET_LIST FOLLOW_SLASH_in_synpred6_belle_sip_message1138 = { FOLLOW_SLASH_in_synpred6_belle_sip_message1138_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_path_segments_in_synpred6_belle_sip_message1140 */ static ANTLR3_BITWORD FOLLOW_path_segments_in_synpred6_belle_sip_message1140_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_path_segments_in_synpred6_belle_sip_message1140 = { FOLLOW_path_segments_in_synpred6_belle_sip_message1140_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SLASH_in_synpred7_belle_sip_message1161 */ static ANTLR3_BITWORD FOLLOW_SLASH_in_synpred7_belle_sip_message1161_bits[] = { ANTLR3_UINT64_LIT(0x0000000800000000) }; static ANTLR3_BITSET_LIST FOLLOW_SLASH_in_synpred7_belle_sip_message1161 = { FOLLOW_SLASH_in_synpred7_belle_sip_message1161_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_SLASH_in_synpred7_belle_sip_message1163 */ static ANTLR3_BITWORD FOLLOW_SLASH_in_synpred7_belle_sip_message1163_bits[] = { ANTLR3_UINT64_LIT(0x000001ED398EF610) }; static ANTLR3_BITSET_LIST FOLLOW_SLASH_in_synpred7_belle_sip_message1163 = { FOLLOW_SLASH_in_synpred7_belle_sip_message1163_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_authority_in_synpred7_belle_sip_message1165 */ static ANTLR3_BITWORD FOLLOW_authority_in_synpred7_belle_sip_message1165_bits[] = { ANTLR3_UINT64_LIT(0x0000000800000002) }; static ANTLR3_BITSET_LIST FOLLOW_authority_in_synpred7_belle_sip_message1165 = { FOLLOW_authority_in_synpred7_belle_sip_message1165_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_path_segments_in_synpred7_belle_sip_message1169 */ static ANTLR3_BITWORD FOLLOW_path_segments_in_synpred7_belle_sip_message1169_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_path_segments_in_synpred7_belle_sip_message1169 = { FOLLOW_path_segments_in_synpred7_belle_sip_message1169_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_authority_userinfo_in_synpred8_belle_sip_message1367 */ static ANTLR3_BITWORD FOLLOW_authority_userinfo_in_synpred8_belle_sip_message1367_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_authority_userinfo_in_synpred8_belle_sip_message1367 = { FOLLOW_authority_userinfo_in_synpred8_belle_sip_message1367_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_userinfo_in_synpred9_belle_sip_message6714 */ static ANTLR3_BITWORD FOLLOW_userinfo_in_synpred9_belle_sip_message6714_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_userinfo_in_synpred9_belle_sip_message6714 = { FOLLOW_userinfo_in_synpred9_belle_sip_message6714_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_userinfo_in_synpred10_belle_sip_message6779 */ static ANTLR3_BITWORD FOLLOW_userinfo_in_synpred10_belle_sip_message6779_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_userinfo_in_synpred10_belle_sip_message6779 = { FOLLOW_userinfo_in_synpred10_belle_sip_message6779_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_userinfo_in_synpred11_belle_sip_message6850 */ static ANTLR3_BITWORD FOLLOW_userinfo_in_synpred11_belle_sip_message6850_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_userinfo_in_synpred11_belle_sip_message6850 = { FOLLOW_userinfo_in_synpred11_belle_sip_message6850_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_param_unreserved_in_synpred12_belle_sip_message7263 */ static ANTLR3_BITWORD FOLLOW_param_unreserved_in_synpred12_belle_sip_message7263_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_param_unreserved_in_synpred12_belle_sip_message7263 = { FOLLOW_param_unreserved_in_synpred12_belle_sip_message7263_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_toplabel_in_synpred13_belle_sip_message7776 */ static ANTLR3_BITWORD FOLLOW_toplabel_in_synpred13_belle_sip_message7776_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_toplabel_in_synpred13_belle_sip_message7776 = { FOLLOW_toplabel_in_synpred13_belle_sip_message7776_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DIGIT_in_synpred14_belle_sip_message8064 */ static ANTLR3_BITWORD FOLLOW_DIGIT_in_synpred14_belle_sip_message8064_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_DIGIT_in_synpred14_belle_sip_message8064 = { FOLLOW_DIGIT_in_synpred14_belle_sip_message8064_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DIGIT_in_synpred15_belle_sip_message8098 */ static ANTLR3_BITWORD FOLLOW_DIGIT_in_synpred15_belle_sip_message8098_bits[] = { ANTLR3_UINT64_LIT(0x0000000000002000) }; static ANTLR3_BITSET_LIST FOLLOW_DIGIT_in_synpred15_belle_sip_message8098 = { FOLLOW_DIGIT_in_synpred15_belle_sip_message8098_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DIGIT_in_synpred15_belle_sip_message8100 */ static ANTLR3_BITWORD FOLLOW_DIGIT_in_synpred15_belle_sip_message8100_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_DIGIT_in_synpred15_belle_sip_message8100 = { FOLLOW_DIGIT_in_synpred15_belle_sip_message8100_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DIGIT_in_synpred16_belle_sip_message8138 */ static ANTLR3_BITWORD FOLLOW_DIGIT_in_synpred16_belle_sip_message8138_bits[] = { ANTLR3_UINT64_LIT(0x0000000000002000) }; static ANTLR3_BITSET_LIST FOLLOW_DIGIT_in_synpred16_belle_sip_message8138 = { FOLLOW_DIGIT_in_synpred16_belle_sip_message8138_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DIGIT_in_synpred16_belle_sip_message8140 */ static ANTLR3_BITWORD FOLLOW_DIGIT_in_synpred16_belle_sip_message8140_bits[] = { ANTLR3_UINT64_LIT(0x0000000000002000) }; static ANTLR3_BITSET_LIST FOLLOW_DIGIT_in_synpred16_belle_sip_message8140 = { FOLLOW_DIGIT_in_synpred16_belle_sip_message8140_bits, 1 }; /** Bitset defining follow set for error recovery in rule state: FOLLOW_DIGIT_in_synpred16_belle_sip_message8142 */ static ANTLR3_BITWORD FOLLOW_DIGIT_in_synpred16_belle_sip_message8142_bits[] = { ANTLR3_UINT64_LIT(0x0000000000000002) }; static ANTLR3_BITSET_LIST FOLLOW_DIGIT_in_synpred16_belle_sip_message8142 = { FOLLOW_DIGIT_in_synpred16_belle_sip_message8142_bits, 1 }; /* ========================================================================= * DFA tables for the parser */ /** Static dfa state tables for Cyclic dfa: * 104:1: message_raw[size_t* length] returns [belle_sip_message_t* ret] : ( common_request | common_response ); */ static const ANTLR3_INT32 dfa1_eot[4] = { -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa1_eof[4] = { -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa1_min[4] = { 6, 6, -1, -1 }; static const ANTLR3_INT32 dfa1_max[4] = { 40, 40, -1, -1 }; static const ANTLR3_INT32 dfa1_accept[4] = { -1, -1, 1, 2 }; static const ANTLR3_INT32 dfa1_special[4] = { -1, -1, -1, -1 }; /** Used when there is no transition table entry for a particular state */ #define dfa1_T_empty NULL static const ANTLR3_INT32 dfa1_T0[] = { 2, -1, -1, -1, 1, -1, 2, 2, -1, 2, -1, 2, -1, 1, -1, -1, -1, 2, -1, -1, -1, 2, 2, -1, -1, -1, 2, -1, -1, -1, -1, 2, 2, 2, 2 }; static const ANTLR3_INT32 dfa1_T1[] = { 2, -1, -1, -1, 1, -1, 2, 2, -1, 2, -1, 2, -1, 1, -1, -1, -1, 2, -1, -1, -1, 2, 2, -1, -1, -1, 2, -1, -1, 3, 2, 2, 2, 2, 2 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa1_transitions[] = { dfa1_T0, dfa1_T1, NULL, NULL }; /* Declare tracking structure for Cyclic DFA 1 */ static ANTLR3_CYCLIC_DFA cdfa1 = { 1, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"104:1: message_raw[size_t* length] returns [belle_sip_message_t* ret] : ( common_request | common_response );", (CDFA_SPECIAL_FUNC) antlr3dfaspecialStateTransition, /* Default special state transition function */ antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa1_eot, /* EOT table */ dfa1_eof, /* EOF table */ dfa1_min, /* Minimum tokens for each state */ dfa1_max, /* Maximum tokens for each state */ dfa1_accept, /* Accept table */ dfa1_special, /* Special transition states */ dfa1_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 1 * --------------------- *//** Static dfa state tables for Cyclic dfa: * 117:6: ( ( (~ ( CRLF ) )* sip_version CRLF )=> request_line | ( (~ ( CRLF ) )* http_version CRLF )=> http_request_line ) */ static const ANTLR3_INT32 dfa2_eot[3887] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa2_eof[3887] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa2_min[3887] = { 6, 6, 6, 6, 6, 6, 6, 6, 6, -1, -1, -1, -1, -1, 4, 4, 6, 6, 6, 6, 6, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 10, 4, 4, 4, 13, 4, -1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 10, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 8, 8, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 13, 13, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, -1, 4, 4, 4, 10, -1, 4, 4, 4, 13, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 13, 4, 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 10, 36, 4, 4, 4, 4, 4, 4, 4, 8, 8, 8, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 15, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, -1, 4, -1, -1, -1, 4, 4, 4, 4, 13, 4, -1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 8, 8, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 13, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 4, 6, 36, 6, 11, 6, 34, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 8, 8, 8, 13, 4, 8, 13, 8, 13, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, -1, -1, 4, -1, -1, -1, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 8, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 10, 36, 4, 4, 4, 4, 4, 4, 4, 8, 8, 8, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 13, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 10, 36, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 8, 8, 8, 13, 11, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 8, 13, 13, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 11, 4, 4, 4, 4, 4, 13, 4, 4, 4, 13, 4, 4, 4, 4, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, -1, 4, 4, 4, 4, 4, 13, 4, 4, 4, -1, -1, 4, -1, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, -1, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 13, 8, 8, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 4, 6, 36, 6, 11, 6, 34, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 8, 8, 8, 13, 4, 8, 13, 8, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 6, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 4, 6, 36, 6, 4, 11, 18, 4, 4, 6, 6, 6, 6, 6, 6, 4, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 8, 13, 8, 13, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 8, 8, 8, 13, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 13, 13, 4, 4, 4, 4, 13, 4, 4, 4, 4, 13, 13, 4, -1, 4, 13, 4, 4, 4, 13, 4, 4, 4, 4, -1, 4, 4, 4, 4, 13, 13, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 13, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 10, 4, 4, 36, 4, 4, 4, 4, 4, 4, 8, 8, 8, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 10, 36, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 8, 8, 8, 13, 11, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 8, 13, 13, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 6, 6, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 6, 4, 4, 4, 6, 6, 6, 6, 4, 4, 11, 4, 4, 13, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 8, 8, 8, 13, 13, 4, 13, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 8, 13, 13, 15, 4, 4, 4, 4, 6, 6, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, -1, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 13, 4, 4, 4, 4, 13, 13, 4, 4, 13, 4, 4, 4, 13, 4, 4, 4, 6, 4, 4, 4, 4, 4, 4, 4, 36, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 11, 4, 4, 34, 4, 4, 4, 4, 8, 8, 8, 13, 8, 13, 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 4, 4, 4, 4, 6, 4, 6, 36, 6, 4, 11, 18, 4, 4, 6, 6, 6, 6, 6, 6, 4, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 8, 13, 8, 13, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 8, 8, 8, 13, 13, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 6, 4, 4, 4, 4, 13, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 6, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 6, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 8, 15, 13, 4, 4, 13, 8, 15, 13, 4, 4, 4, 4, 4, 6, 4, 4, 4, 4, 13, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, -1, 4, 4, 4, 4, 13, 13, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 10, 4, 36, 6, 6, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 4, 4, 4, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 8, 8, 8, 13, 11, 8, 13, 13, 13, 4, 4, 4, 4, 4, 4, 4, 4, 6, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 6, 4, 4, 4, 4, 6, 6, 6, 6, 6, 6, 4, 4, 11, 4, 4, 13, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 8, 8, 8, 13, 13, 4, 13, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 8, 13, 13, 15, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 6, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 13, 13, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 6, 6, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 6, 4, 4, 4, 4, 4, 4, 4, 4, 6, 6, 4, 4, 4, 4, 4, 4, 6, 6, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 8, 13, 13, 4, 13, 13, 4, 4, 4, 6, 6, 4, 4, 13, 4, 4, 4, 4, 0, 13, 13, 4, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 11, 4, 4, 4, 4, 6, 4, 4, 4, 4, 4, 18, 4, 4, 13, 4, 4, 4, 13, 4, 4, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 6, 6, 4, 13, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 8, 13, 8, 13, 8, 8, 8, 13, 13, 4, 4, 4, 4, 6, 6, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 6, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 8, 15, 13, 4, 4, 13, 8, 15, 13, 13, 4, 4, 4, 4, 4, 4, 4, 4, 6, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 6, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 6, 6, 4, 4, 4, 4, 4, 4, 4, 4, 15, 13, 15, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 6, 6, 4, 13, 4, 13, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 8, 8, 8, 13, 13, 8, 13, 13, 15, 4, 4, 4, 4, 4, 6, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 6, 6, 13, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 6, 4, 4, 4, 4, 6, 6, 4, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 8, 13, 13, 4, 13, 13, 4, 4, 4, 4, 4, 4, 6, 6, 13, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 6, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 4, 4, 4, 4, 4, 4, 4, 4, 13, 13, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 13, 4, 13, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 6, 6, 4, 4, 4, 8, 15, 13, 8, 15, 13, 4, 4, 4, 6, 6, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 13, 13, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 6, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 6, 6, 4, 4, 4, 4, 4, 4, 4, 4, 4, 15, 13, 15, 13, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 13, 4, 13, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 6, 4, 4, 4, 4, 4, 33, 33, 13, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 13, 4, 13, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 8, 13, 13, 13, 13, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 13, 4, 4, 6, 6, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 13, 4, 13, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 15, 13, 15, 13, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 13, 4, 4, 4, 4, 4, 6, 6, 13, 4, 4, 4, 4, 4, 33, 33, 4, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, -1, 13, 13, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 13, 33, 33, 13, 4, 4, 4, 4, 4, 4, 4 }; static const ANTLR3_INT32 dfa2_max[3887] = { 40, 40, 40, 40, 40, 40, 40, 40, 40, -1, -1, -1, -1, -1, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 19, 40, -1, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 35, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 33, 8, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 19, 19, 13, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, -1, 40, 40, 40, 36, -1, 40, 40, 40, 19, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 19, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 36, 36, 40, 40, 40, 40, 40, 40, 40, 19, 36, 33, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 15, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, -1, 40, -1, -1, -1, 40, 40, 40, 40, 19, 40, -1, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 33, 8, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 19, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 36, 40, 36, 40, 36, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 33, 33, 33, 13, 40, 33, 13, 33, 19, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 13, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, -1, -1, 40, -1, -1, -1, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 36, 36, 40, 40, 40, 40, 40, 40, 40, 19, 36, 33, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 19, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 36, 36, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 33, 33, 33, 13, 36, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 33, 19, 13, 15, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 11, 40, 40, 40, 40, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, -1, 40, 40, 40, 40, 40, 19, 40, 40, 40, -1, -1, 40, -1, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, -1, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 19, 33, 8, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 36, 40, 36, 40, 36, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 33, 33, 33, 13, 40, 33, 13, 33, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 36, 40, 40, 36, 36, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 33, 19, 33, 15, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 33, 33, 33, 15, 15, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 0, 19, 19, 40, 40, 40, 40, 19, 40, 40, 40, 40, 19, 19, 40, -1, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, -1, 40, 40, 40, 40, 19, 19, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 19, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 36, 40, 40, 36, 40, 40, 40, 40, 40, 40, 19, 36, 33, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 36, 36, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 33, 33, 33, 13, 36, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 33, 19, 13, 15, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 36, 40, 40, 19, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 33, 33, 33, 15, 13, 40, 19, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 33, 15, 13, 15, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, -1, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 19, 40, 40, 40, 40, 19, 19, 40, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 36, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 36, 40, 40, 36, 40, 40, 40, 40, 33, 33, 33, 13, 33, 13, 33, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 36, 40, 40, 36, 36, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 33, 19, 33, 15, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 33, 33, 33, 15, 15, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 33, 15, 15, 40, 40, 19, 33, 15, 15, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, -1, 40, 40, 40, 40, 19, 19, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 36, 40, 36, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 33, 33, 33, 13, 36, 33, 19, 13, 15, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 36, 40, 40, 19, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 33, 33, 33, 15, 13, 40, 19, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 33, 15, 13, 15, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 19, 19, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 33, 15, 13, 40, 15, 13, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 0, 19, 19, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 36, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 36, 40, 40, 19, 40, 40, 40, 19, 40, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 19, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 33, 19, 33, 15, 33, 33, 33, 15, 15, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 33, 15, 15, 40, 40, 19, 33, 15, 15, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 15, 33, 15, 33, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 19, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 33, 33, 33, 15, 13, 33, 15, 13, 15, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 33, 15, 13, 40, 15, 13, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 33, 33, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 19, 40, 19, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 33, 15, 15, 33, 15, 15, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 19, 19, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 15, 33, 15, 33, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 19, 40, 19, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 33, 33, 19, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 19, 40, 19, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 33, 15, 13, 15, 13, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 33, 33, 40, 19, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 15, 33, 15, 33, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 33, 33, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, -1, 33, 33, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 19, 33, 33, 19, 40, 40, 40, 40, 40, 40, 40 }; static const ANTLR3_INT32 dfa2_accept[3887] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 1, 1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, 1, 1, 1, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 1, -1, 1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa2_special[3887] = { -1, -1, -1, -1, -1, -1, -1, 506, 16, -1, -1, -1, -1, -1, -1, 830, 873, 633, 515, 363, 520, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 30, 794, 400, -1, -1, -1, -1, -1, -1, -1, -1, 422, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 682, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 127, 406, 39, -1, 368, -1, -1, -1, -1, 899, 398, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 246, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 488, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 698, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 140, 280, -1, 310, -1, 87, 430, 471, 635, 148, -1, 756, 125, -1, 194, -1, -1, -1, 205, 43, 722, 754, -1, 373, -1, 493, -1, -1, -1, 421, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 95, 238, -1, 271, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 761, -1, 564, 814, -1, 790, 751, -1, 729, 870, 377, -1, 496, 605, 504, 502, 425, 256, 844, -1, -1, -1, 182, -1, -1, -1, 292, 34, 61, -1, 894, 250, 248, 821, 2, 222, -1, 898, 397, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 592, 725, -1, 763, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 703, -1, 404, 309, -1, 735, 696, -1, -1, -1, -1, 48, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 820, 31, -1, 68, -1, -1, -1, -1, 800, 7, -1, 32, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 644, 458, 770, 501, 533, -1, 322, 606, 154, -1, -1, -1, 313, -1, -1, 210, 867, 863, -1, 160, 157, 159, 889, 838, -1, 346, 101, 872, 639, 631, -1, 388, 653, 578, -1, -1, 38, -1, -1, 75, 760, 784, -1, 245, 26, 27, 610, 717, -1, 654, 903, 769, 508, 537, -1, 170, 487, 279, 664, 420, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 264, -1, 895, -1, 295, 257, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 608, 229, 523, 261, 707, 283, -1, 704, 710, 711, 667, 556, 51, 332, 807, -1, 660, -1, -1, 273, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 509, -1, -1, 547, 500, -1, -1, -1, 476, -1, 287, 550, -1, 516, 464, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 361, -1, -1, 789, 746, -1, 812, -1, 21, 227, 503, 54, -1, -1, 277, -1, 913, -1, 293, 35, 62, -1, 251, 249, 822, 3, -1, 928, 107, 371, 859, -1, -1, 206, 44, 723, 755, -1, 374, 494, 905, 402, 491, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 288, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 385, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 162, 712, 69, 759, 265, 779, -1, 270, 267, 268, -1, -1, 764, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 709, -1, 324, -1, -1, -1, -1, 805, -1, 907, 269, 11, 446, 29, -1, 569, 451, 450, 453, 383, -1, 736, 697, -1, -1, -1, 370, 538, -1, 563, -1, -1, 390, -1, -1, 71, -1, 366, 211, 484, 234, 915, 255, -1, -1, -1, 36, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 435, 567, 315, -1, 824, -1, 595, 226, 695, 50, -1, 734, 323, 607, 155, -1, -1, 436, 298, -1, 424, -1, -1, -1, 146, 582, 559, -1, 864, 865, 643, 868, 312, 342, 804, -1, 623, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 730, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 787, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 90, 641, 625, -1, 19, 663, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 352, -1, 296, 258, -1, -1, -1, -1, -1, -1, -1, 428, 66, 45, -1, 629, 104, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 714, 911, 262, 325, 750, -1, 349, 355, 351, 353, 216, -1, 455, 662, 10, 495, -1, 118, 117, 123, 119, 338, 774, 112, 604, -1, 656, 431, 290, 266, -1, -1, -1, 67, -1, -1, 97, 55, -1, 545, 497, -1, 77, -1, 511, 461, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 792, 748, 362, 448, 617, 156, 833, 854, -1, 114, 115, 674, 802, -1, 914, 186, 438, 1, -1, -1, 340, 56, 840, 600, 614, -1, 240, 348, 665, 901, -1, 839, -1, 686, -1, -1, -1, 133, 672, 655, -1, 28, 869, 705, 78, 636, 618, -1, 826, 828, 917, 834, 831, 347, 658, 386, 806, 221, 189, -1, 797, 241, 319, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 549, 456, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 632, 129, 113, -1, 408, 411, 201, 415, 177, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 89, 263, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 505, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 276, 457, 757, 305, -1, 848, 847, 849, 850, 684, 767, -1, -1, -1, -1, 737, 433, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 886, -1, -1, 557, 52, 333, 808, -1, 661, 739, 700, 328, 878, -1, -1, 560, -1, 72, -1, 681, 881, 235, 577, 715, -1, 187, 37, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 317, 521, -1, -1, 568, -1, 552, 47, 25, -1, 912, 916, 88, 921, 919, 454, 178, 98, -1, 884, 490, 524, 63, -1, 525, 528, 237, 535, 96, -1, 620, 486, -1, 539, 673, 218, -1, 531, 239, -1, 473, 637, 171, -1, 460, 462, 466, 469, 197, 619, 236, 219, -1, 413, 272, 777, 580, 627, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 416, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 247, -1, -1, 532, -1, -1, -1, -1, -1, -1, -1, -1, 419, 603, 132, -1, 572, 158, 741, 359, 341, -1, 571, 573, 652, 575, 574, 91, 540, 387, 708, 601, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 152, 579, 566, -1, 642, 166, 169, 174, 624, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 64, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 294, 254, 811, -1, -1, 803, 12, 481, -1, 223, 522, 890, 534, 498, -1, 17, 15, 124, 20, 18, 343, 719, 570, 147, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 224, 896, 70, 449, -1, 275, 99, 58, -1, 546, 499, 136, -1, 513, 463, 105, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 791, 783, 403, 541, -1, 758, 13, 42, 529, -1, 581, 584, 590, 587, 558, 875, 379, 364, -1, 321, 326, 336, 330, 409, 111, 542, 526, -1, 459, 468, 583, 474, 480, 14, 597, 472, -1, -1, 609, -1, 555, -1, -1, 825, 923, 645, -1, 198, 196, 286, 203, 200, 638, 879, 688, 823, 179, 630, -1, 384, 649, 669, 320, 193, -1, -1, -1, 689, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 46, 74, 553, -1, 76, 79, 727, 83, 599, 175, 33, 86, 233, 693, -1, 85, 726, -1, -1, -1, -1, -1, 845, -1, -1, -1, 185, 217, 356, 827, -1, 212, 213, 215, 220, 855, 344, 887, 866, -1, 172, 926, 303, 851, 829, -1, 116, 120, 214, 126, 128, 585, 871, -1, -1, -1, -1, -1, -1, -1, 908, 647, -1, -1, 253, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 634, 131, 121, -1, 195, 646, 648, 650, 176, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 702, 766, -1, -1, -1, 106, -1, -1, -1, 360, 365, 530, 57, -1, 611, 616, 613, 612, 94, 701, 334, 308, -1, 765, 771, 768, 772, 354, 441, 82, 59, -1, 510, 517, 615, 514, 512, 837, 122, -1, -1, -1, -1, -1, -1, 396, 842, 191, 659, -1, 536, 291, 738, 561, -1, 73, 202, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 861, 507, 543, 80, -1, 130, 134, 135, 139, 109, -1, 405, -1, -1, 427, 862, 856, -1, 809, 810, 816, 818, 909, 598, 432, 621, 576, 161, 799, -1, 544, 389, 670, 209, -1, 778, 782, 780, 785, 225, 728, 465, 426, -1, 922, 920, 924, 925, 492, 475, 231, 204, -1, 671, 676, 781, 675, 677, 190, 252, 274, -1, -1, -1, 762, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 668, 554, 284, 692, 853, 380, -1, 683, 685, 690, 687, 399, -1, -1, -1, 832, 437, 412, -1, 651, 482, -1, -1, -1, 489, 527, 65, -1, 242, 742, 745, 747, 102, 358, 801, 788, -1, 732, 733, 836, 740, 743, 281, 841, 626, 485, 752, 888, 414, -1, 749, 442, -1, -1, -1, -1, -1, -1, -1, 452, -1, -1, 744, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 301, -1, 110, 904, 429, 858, 84, 551, -1, 165, 164, 168, 167, 588, -1, 852, -1, -1, 260, 813, 798, -1, 314, 311, 318, 316, 846, -1, -1, -1, 100, 60, 622, 548, 518, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 876, 350, 375, 857, -1, 892, 893, 900, 906, 877, 278, 410, 897, -1, 230, 628, 874, 228, 678, -1, 331, 329, 337, 335, 706, -1, 92, -1, -1, 285, 24, 929, -1, 470, 479, 477, 478, 53, 282, 163, 713, -1, -1, -1, -1, -1, -1, -1, 142, 5, 173, -1, -1, -1, -1, -1, 299, 817, 776, -1, -1, 300, -1, -1, -1, 775, 795, 339, -1, 372, 378, 381, 382, 357, 691, 207, 188, -1, 145, 149, 150, 151, 243, -1, -1, -1, -1, -1, -1, -1, 49, 81, 562, -1, 724, 297, 302, 307, 602, 180, 40, 306, 434, 910, -1, 304, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, 443, 183, 327, 796, -1, 393, 391, 395, 394, 819, 244, 0, 392, -1, -1, 153, 565, -1, -1, -1, -1, -1, -1, -1, -1, -1, 418, -1, 843, 860, 401, -1, 439, 444, 445, 447, 423, 773, -1, 640, 208, 467, 927, -1, 586, 594, 591, 593, 22, 407, 184, 589, -1, 891, -1, -1, -1, -1, -1, -1, -1, 793, 367, 596, 440, 679, -1, 232, -1, 835, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 8, -1, 657, 815, 345, -1, 880, 883, 882, 885, 369, 731, 103, -1, -1, -1, 289, -1, 192, -1, 680, 23, 483, -1, 138, 137, 141, 143, 519, 902, -1, -1, -1, -1, 694, 181, 199, 666, -1, 716, 718, 721, 720, 699, 93, -1, -1, 144, 4, 376, -1, -1, -1, -1, 259, -1, -1, 786, 417, -1, -1, -1, -1, -1, -1, -1, 753, 918, 108, -1 }; /** Used when there is no transition table entry for a particular state */ #define dfa2_T_empty NULL static const ANTLR3_INT32 dfa2_T0[] = { 508, 508, -1, -1, 508, 506, 554, -1, 511, 1304, 508, 511, -1, 511, 508, 554, -1, -1, -1, 511, -1, -1, -1, 512, 508, 507, -1, -1, 511, -1, 505, 508, 35, 511, 511, 511, 511 }; static const ANTLR3_INT32 dfa2_T1[] = { 3347, 2684, -1, -1, 3346, 2689, 3342, 205, 3352, 3343, 3350, 3344, -1, 3352, 3348, 3342, -1, -1, -1, 3352, 405, -1, -1, 3345, 3349, 1751, -1, -1, 3352, 405, 3351, 3031, 204, 3352, 3352, 3352, 3352 }; static const ANTLR3_INT32 dfa2_T2[] = { 575, 574, -1, -1, 573, 579, 613, -1, 571, 1351, 578, 571, -1, 571, 576, 613, -1, -1, -1, 571, -1, -1, -1, 572, 577, 34, -1, -1, 571, -1, 580, 279, 35, 571, 571, 571, 571 }; static const ANTLR3_INT32 dfa2_T3[] = { 74, 73, -1, -1, 72, 78, 68, -1, 70, 69, 77, 70, -1, 70, 75, 68, -1, -1, -1, 70, -1, -1, -1, 71, 76, 34, -1, -1, 70, -1, 33, 66, 35, 70, 70, 70, 70 }; static const ANTLR3_INT32 dfa2_T4[] = { 811, 810, -1, -1, 809, 815, 2708, -1, 2277, 2709, 814, 1774, -1, 807, 812, 2708, -1, -1, -1, 807, -1, -1, -1, 808, 813, 242, -1, -1, 807, -1, 458, 241, 35, 807, 807, 807, 807 }; static const ANTLR3_INT32 dfa2_T5[] = { 159, 59, -1, -1, 58, 163, 1372, -1, 946, 1373, 162, 157, -1, 157, 160, 1372, -1, -1, -1, 157, -1, -1, -1, 158, 161, 34, -1, -1, 157, -1, 154, 66, 35, 157, 157, 157, 157 }; static const ANTLR3_INT32 dfa2_T6[] = { 184, 176, -1, -1, 175, 182, 177, -1, 179, 178, 184, 179, -1, 179, 184, 177, -1, -1, -1, 179, -1, -1, -1, 180, 184, 183, -1, -1, 179, -1, 181, 184, 35, 179, 179, 179, 179 }; static const ANTLR3_INT32 dfa2_T7[] = { 1691, 1686, -1, -1, 1685, 1695, 1687, -1, 1689, 1688, 1694, 1689, -1, 1689, 1692, 1687, -1, -1, -1, 1689, -1, -1, -1, 1690, 1693, 230, -1, -1, 1689, -1, 1696, 1219, 35, 1689, 1689, 1689, 1689 }; static const ANTLR3_INT32 dfa2_T8[] = { 839, 482, -1, -1, 508, 843, 835, -1, 837, 836, 842, 837, -1, 837, 840, 835, -1, -1, -1, 837, -1, -1, -1, 838, 841, 507, -1, -1, 837, -1, 505, 508, 35, 837, 837, 837, 837 }; static const ANTLR3_INT32 dfa2_T9[] = { 1403, 1402, -1, -1, 2367, 1407, 1891, 338, 1893, 1892, 1406, 2366, -1, 1399, 1404, 1891, -1, -1, -1, 1399, -1, -1, -1, 1400, 1405, 34, -1, -1, 1399, -1, 1882, 1883, 337, 1399, 1399, 1399, 1399 }; static const ANTLR3_INT32 dfa2_T10[] = { 2674, 2673, -1, -1, 2672, 2678, 2668, -1, 2670, 2669, 2677, 2670, -1, 2670, 2675, 2668, -1, -1, -1, 2670, -1, -1, -1, 2671, 2676, 2237, -1, -1, 2670, -1, 2235, 2236, 35, 2670, 2670, 2670, 2670 }; static const ANTLR3_INT32 dfa2_T11[] = { 564, 563, -1, -1, 1340, 568, 914, 338, 917, 915, 567, 1341, -1, 560, 565, 914, -1, -1, -1, 560, -1, -1, -1, 561, 566, 34, -1, -1, 560, -1, 902, 903, 337, 560, 560, 560, 560 }; static const ANTLR3_INT32 dfa2_T12[] = { 749, 748, -1, -1, 738, 753, 2031, -1, 1590, 2032, 752, 746, -1, 746, 750, 2031, -1, -1, -1, 746, -1, -1, -1, 747, 751, 242, -1, -1, 746, -1, 732, 733, 35, 746, 746, 746, 746 }; static const ANTLR3_INT32 dfa2_T13[] = { 1553, 108, -1, -1, 2436, 106, 2439, -1, 2441, 2440, 2436, 2441, -1, 2441, 108, 2439, -1, -1, -1, 2441, 2437, -1, -1, 2442, 2436, 2435, -1, -1, 2441, 2437, 105, 2436, 35, 2441, 2441, 2441, 2441 }; static const ANTLR3_INT32 dfa2_T14[] = { 782, 436, -1, -1, 459, 786, 778, -1, 780, 1195, 785, 780, -1, 780, 783, 778, -1, -1, -1, 780, -1, -1, -1, 781, 784, 242, -1, -1, 780, -1, 458, 241, 35, 780, 780, 780, 780 }; static const ANTLR3_INT32 dfa2_T15[] = { 108, 108, -1, -1, 725, 106, 1062, -1, 1064, 1063, 725, 1064, -1, 1064, 1105, 1062, -1, -1, -1, 1064, 414, -1, -1, 1065, 725, 724, -1, -1, 1064, 414, 105, 725, 35, 1064, 1064, 1064, 1064 }; static const ANTLR3_INT32 dfa2_T16[] = { 108, 108, -1, -1, 1551, 106, 1989, -1, 1991, 1990, 1551, 1991, -1, 1991, 1988, 1989, -1, -1, -1, 1991, 1552, -1, -1, 1992, 1551, 1550, -1, -1, 1991, 1552, 105, 1551, 35, 1991, 1991, 1991, 1991 }; static const ANTLR3_INT32 dfa2_T17[] = { 564, 563, -1, -1, 1340, 568, 601, 338, 560, 1342, 567, 560, -1, 560, 565, 601, -1, -1, -1, 560, -1, -1, -1, 561, 566, 34, -1, -1, 560, -1, 902, 903, 337, 560, 560, 560, 560 }; static const ANTLR3_INT32 dfa2_T18[] = { 82, 82, -1, -1, 1047, 80, 682, 338, 684, 683, 82, 1046, -1, 85, 82, 682, -1, -1, -1, 85, -1, -1, -1, 86, 82, 1050, -1, -1, 85, -1, 1048, 1049, 337, 85, 85, 85, 85 }; static const ANTLR3_INT32 dfa2_T19[] = { 3713, 2578, 2092, -1, 3712, 2583, 3707, 1588, 3715, 3708, 3714, 3709, -1, 3715, 2580, 3707, -1, -1, -1, 3715, 1080, -1, -1, 3710, 3711, 854, -1, -1, 3715, 1080, 2986, 3678, 1585, 3715, 3715, 3715, 3715 }; static const ANTLR3_INT32 dfa2_T20[] = { 867, 862, -1, -1, 861, 871, 863, -1, 865, 864, 870, 865, -1, 865, 868, 863, -1, -1, -1, 865, -1, -1, -1, 866, 869, 126, -1, -1, 865, -1, 531, 254, 35, 865, 865, 865, 865 }; static const ANTLR3_INT32 dfa2_T21[] = { 508, 508, -1, -1, 508, 506, 882, -1, 884, 883, 508, 881, -1, 511, 508, 882, -1, -1, -1, 511, -1, -1, -1, 512, 508, 507, -1, -1, 511, -1, 505, 508, 35, 511, 511, 511, 511 }; static const ANTLR3_INT32 dfa2_T22[] = { 3205, 1576, 2092, -1, 3204, 1581, 3200, 1588, 3208, 3201, 3207, 3202, -1, 3208, 1578, 3200, -1, -1, -1, 3208, 1080, -1, -1, 3203, 3206, 854, -1, -1, 3208, 1080, 2051, 3153, 1585, 3208, 3208, 3208, 3208 }; static const ANTLR3_INT32 dfa2_T23[] = { 108, 108, -1, -1, 108, 106, 1066, -1, 695, 1067, 108, 389, -1, 111, 108, 1066, -1, -1, -1, 111, -1, -1, -1, 112, 108, 107, -1, -1, 111, -1, 105, 108, 35, 111, 111, 111, 111 }; static const ANTLR3_INT32 dfa2_T24[] = { 575, 574, -1, -1, 1349, 579, 922, 338, 925, 2318, 578, 2319, -1, 571, 576, 922, -1, -1, -1, 571, -1, -1, -1, 572, 577, 34, -1, -1, 571, -1, 1348, 903, 337, 571, 571, 571, 571 }; static const ANTLR3_INT32 dfa2_T25[] = { 82, 82, 1383, -1, 82, 80, 2401, 338, 2403, 2402, 82, 2403, -1, 2403, 82, 2401, -1, -1, -1, 2403, -1, -1, -1, 2404, 2405, 1050, -1, -1, 2403, -1, 1048, 1049, 337, 2403, 2403, 2403, 2403 }; static const ANTLR3_INT32 dfa2_T26[] = { 1403, 1402, -1, -1, 2367, 1407, 1437, 338, 1399, 2365, 1406, 1399, -1, 1399, 1404, 1437, -1, -1, -1, 1399, -1, -1, -1, 1400, 1405, 34, -1, -1, 1399, -1, 1882, 1883, 337, 1399, 1399, 1399, 1399 }; static const ANTLR3_INT32 dfa2_T27[] = { 1577, 1576, -1, -1, 1575, 1581, 2061, -1, 2064, 2062, 1580, 2063, -1, 1573, 1578, 2061, -1, -1, -1, 1573, -1, -1, -1, 1574, 1579, 242, -1, -1, 1573, -1, 1140, 733, 35, 1573, 1573, 1573, 1573 }; static const ANTLR3_INT32 dfa2_T28[] = { 575, 574, -1, -1, 1349, 579, 922, 338, 925, 3076, 578, 3077, -1, 571, 576, 922, -1, -1, -1, 571, -1, -1, -1, 572, 577, 34, -1, -1, 571, -1, 1348, 903, 337, 571, 571, 571, 571 }; static const ANTLR3_INT32 dfa2_T29[] = { 221, 436, -1, -1, 435, 228, 444, -1, 219, 445, 227, 219, -1, 219, 225, 444, -1, -1, -1, 219, -1, -1, -1, 220, 226, 230, -1, -1, 219, -1, 229, 441, 35, 219, 219, 219, 219 }; static const ANTLR3_INT32 dfa2_T30[] = { 1956, 1955, -1, -1, 1954, 1960, 1950, -1, 1952, 1951, 1959, 1952, -1, 1952, 1957, 1950, -1, -1, -1, 1952, -1, -1, -1, 1953, 1958, 1050, -1, -1, 1952, -1, 1520, 1521, 35, 1952, 1952, 1952, 1952 }; static const ANTLR3_INT32 dfa2_T31[] = { 621, 620, -1, -1, 619, 625, 615, -1, 617, 616, 624, 617, -1, 617, 622, 615, -1, -1, -1, 617, -1, -1, -1, 618, 623, 65, -1, -1, 617, -1, 322, 139, 35, 617, 617, 617, 617 }; static const ANTLR3_INT32 dfa2_T32[] = { 3713, 2578, -1, -1, 3712, 2583, 3718, 205, 3723, 3719, 3714, 3720, -1, 3723, 2580, 3718, -1, -1, -1, 3723, 1080, -1, -1, 3721, 3722, 854, -1, -1, 3723, 1080, 3251, 3226, 204, 3723, 3723, 3723, 3723 }; static const ANTLR3_INT32 dfa2_T33[] = { 508, 508, -1, -1, 1306, 506, 882, 205, 884, 883, 508, 1305, -1, 511, 508, 882, -1, -1, -1, 511, -1, -1, -1, 512, 508, 1308, -1, -1, 511, -1, 1307, 508, 204, 511, 511, 511, 511 }; static const ANTLR3_INT32 dfa2_T34[] = { 3573, 2684, -1, -1, 3572, 2689, 3568, 205, 3576, 3569, 3575, 3570, -1, 3576, 2686, 3568, -1, -1, -1, 3576, 1080, -1, -1, 3571, 3574, 1751, -1, -1, 3576, 1080, 3351, 3323, 204, 3576, 3576, 3576, 3576 }; static const ANTLR3_INT32 dfa2_T35[] = { 575, 574, -1, -1, 1349, 579, 922, 338, 925, 1353, 578, 1354, -1, 571, 576, 922, -1, -1, -1, 571, -1, -1, -1, 572, 577, 34, -1, -1, 571, -1, 1348, 903, 337, 571, 571, 571, 571 }; static const ANTLR3_INT32 dfa2_T36[] = { 641, -1, -1, -1, 961, 952, 957, 962, -1, 957, -1, 957, 954, 961, -1, -1, -1, 957, -1, -1, -1, 958, 959, 34, -1, -1, 957, -1, 643, 1395, 951, 957, 957, 957, 957 }; static const ANTLR3_INT32 dfa2_T37[] = { 56, 141, -1, -1, 140, 63, 149, -1, 54, 150, 62, 54, -1, 54, 60, 149, -1, -1, -1, 54, -1, -1, -1, 55, 61, 65, -1, -1, 54, -1, 64, 146, 35, 54, 54, 54, 54 }; static const ANTLR3_INT32 dfa2_T38[] = { 896, 895, -1, -1, 894, 900, 2322, -1, 1847, 2323, 899, 1360, -1, 892, 897, 2322, -1, -1, -1, 892, -1, -1, -1, 893, 898, 34, -1, -1, 892, -1, 580, 279, 35, 892, 892, 892, 892 }; static const ANTLR3_INT32 dfa2_T39[] = { 575, 574, -1, -1, 1349, 579, 922, 338, 925, 3599, 578, 1350, -1, 571, 576, 922, -1, -1, -1, 571, -1, -1, -1, 572, 577, 34, -1, -1, 571, -1, 1348, 903, 337, 571, 571, 571, 571 }; static const ANTLR3_INT32 dfa2_T40[] = { 1414, 1413, -1, -1, 2375, 1418, 1899, 338, 1901, 3609, 1417, 3610, -1, 1410, 1415, 1899, -1, -1, -1, 1410, -1, -1, -1, 1411, 1416, 34, -1, -1, 1410, -1, 2376, 1883, 337, 1410, 1410, 1410, 1410 }; static const ANTLR3_INT32 dfa2_T41[] = { 1135, 1134, -1, -1, 1133, 1139, 1175, -1, 1131, 2054, 1138, 1131, -1, 1131, 1136, 1175, -1, -1, -1, 1131, -1, -1, -1, 1132, 1137, 242, -1, -1, 1131, -1, 1140, 733, 35, 1131, 1131, 1131, 1131 }; static const ANTLR3_INT32 dfa2_T42[] = { 1414, 1413, -1, -1, 2375, 1418, 1899, 338, 1901, 2378, 1417, 2379, -1, 1410, 1415, 1899, -1, -1, -1, 1410, -1, -1, -1, 1411, 1416, 34, -1, -1, 1410, -1, 2376, 1883, 337, 1410, 1410, 1410, 1410 }; static const ANTLR3_INT32 dfa2_T43[] = { 1808, 1807, -1, -1, 1806, 1812, 1802, -1, 1804, 1803, 1811, 1804, -1, 1804, 1809, 1802, -1, -1, -1, 1804, -1, -1, -1, 1805, 1810, 34, -1, -1, 1804, -1, 1332, 1333, 35, 1804, 1804, 1804, 1804 }; static const ANTLR3_INT32 dfa2_T44[] = { 1790, 508, 1203, -1, 1790, 506, 2218, 2458, 2223, 2219, 1790, 2220, -1, 2223, 2663, 2218, -1, -1, -1, 2223, 405, -1, -1, 2221, 2222, 1751, -1, -1, 2223, 405, 1749, 2664, 2456, 2223, 2223, 2223, 2223 }; static const ANTLR3_INT32 dfa2_T45[] = { 1414, 1413, -1, -1, 2375, 1418, 1899, 338, 1901, 3101, 1417, 3102, -1, 1410, 1415, 1899, -1, -1, -1, 1410, -1, -1, -1, 1411, 1416, 34, -1, -1, 1410, -1, 2376, 1883, 337, 1410, 1410, 1410, 1410 }; static const ANTLR3_INT32 dfa2_T46[] = { 2260, 464, -1, -1, 2259, 469, 2255, 205, 2257, 2256, 2262, 2254, -1, 2257, 466, 2255, -1, -1, -1, 2257, 1080, -1, -1, 2258, 2261, 854, -1, -1, 2257, 1080, 1237, 2245, 204, 2257, 2257, 2257, 2257 }; static const ANTLR3_INT32 dfa2_T47[] = { 1765, 464, -1, -1, 1761, 469, 1759, 205, 1762, 1760, 1767, 1758, -1, 1762, 1764, 1759, -1, -1, -1, 1762, 405, -1, -1, 1763, 1766, 854, -1, -1, 1762, 405, 1237, 1271, 204, 1762, 1762, 1762, 1762 }; static const ANTLR3_INT32 dfa2_T48[] = { 2717, 508, 2092, -1, 2717, 506, 3015, 1588, 3020, 3016, 2717, 3017, -1, 3020, 508, 3015, -1, -1, -1, 3020, 1080, -1, -1, 3018, 3019, 1751, -1, -1, 3020, 1080, 1749, 3319, 1585, 3020, 3020, 3020, 3020 }; static const ANTLR3_INT32 dfa2_T49[] = { 498, 497, -1, -1, 496, 502, 542, -1, 494, 1302, 501, 494, -1, 494, 499, 542, -1, -1, -1, 494, -1, -1, -1, 495, 500, 242, -1, -1, 494, -1, 240, 241, 35, 494, 494, 494, 494 }; static const ANTLR3_INT32 dfa2_T50[] = { 365, 165, -1, -1, 353, 369, 361, -1, 363, 362, 368, 363, -1, 363, 366, 361, -1, -1, -1, 363, -1, -1, -1, 364, 367, 34, -1, -1, 363, -1, 154, 66, 35, 363, 363, 363, 363 }; static const ANTLR3_INT32 dfa2_T51[] = { 575, 574, -1, -1, 1349, 579, 922, 338, 925, 923, 578, 1354, -1, 571, 576, 922, -1, -1, -1, 571, -1, -1, -1, 572, 577, 34, -1, -1, 571, -1, 1348, 903, 337, 571, 571, 571, 571 }; static const ANTLR3_INT32 dfa2_T52[] = { 1444, 999, -1, -1, 1412, 1448, 1440, -1, 1442, 1441, 1447, 1442, -1, 1442, 1445, 1440, -1, -1, -1, 1442, -1, -1, -1, 1443, 1446, 34, -1, -1, 1442, -1, 1419, 974, 35, 1442, 1442, 1442, 1442 }; static const ANTLR3_INT32 dfa2_T53[] = { 1383, -1, -1, -1, 1390, 338, 1392, 1858, -1, 1392, -1, 1392, -1, 1857, -1, -1, -1, 1392, -1, -1, -1, 1393, 1394, 34, -1, -1, 1392, -1, 643, 666, 337, 1392, 1392, 1392, 1392 }; static const ANTLR3_INT32 dfa2_T54[] = { 1383, -1, -1, -1, 1390, 338, 1392, 2724, -1, 1392, -1, 1392, -1, 2723, -1, -1, -1, 1392, -1, -1, -1, 1393, 1394, 34, -1, -1, 1392, -1, 643, 666, 337, 1392, 1392, 1392, 1392 }; static const ANTLR3_INT32 dfa2_T55[] = { 1383, -1, -1, -1, 1390, 338, 1392, 3075, -1, 1392, -1, 1392, -1, 3074, -1, -1, -1, 1392, -1, -1, -1, 1393, 1394, 34, -1, -1, 1392, -1, 643, 666, 337, 1392, 1392, 1392, 1392 }; static const ANTLR3_INT32 dfa2_T56[] = { 1383, -1, -1, -1, 1390, 338, 1392, 3382, -1, 1392, -1, 1392, -1, 3381, -1, -1, -1, 1392, -1, -1, -1, 1393, 1394, 34, -1, -1, 1392, -1, 643, 666, 337, 1392, 1392, 1392, 1392 }; static const ANTLR3_INT32 dfa2_T57[] = { 1383, -1, -1, -1, 1390, 338, 1392, 3608, -1, 1392, -1, 1392, -1, 3607, -1, -1, -1, 1392, -1, -1, -1, 1393, 1394, 34, -1, -1, 1392, -1, 643, 666, 337, 1392, 1392, 1392, 1392 }; static const ANTLR3_INT32 dfa2_T58[] = { 498, 497, -1, -1, 496, 502, 542, -1, 494, 2283, 501, 494, -1, 494, 499, 542, -1, -1, -1, 494, -1, -1, -1, 495, 500, 242, -1, -1, 494, -1, 240, 241, 35, 494, 494, 494, 494 }; static const ANTLR3_INT32 dfa2_T59[] = { 575, 574, -1, -1, 573, 579, 922, -1, 925, 923, 578, 924, -1, 571, 576, 922, -1, -1, -1, 571, -1, -1, -1, 572, 577, 34, -1, -1, 571, -1, 580, 279, 35, 571, 571, 571, 571 }; static const ANTLR3_INT32 dfa2_T60[] = { 56, 141, -1, -1, 140, 63, 658, -1, 341, 659, 62, 54, -1, 54, 60, 658, -1, -1, -1, 54, -1, -1, -1, 55, 61, 65, -1, -1, 54, -1, 64, 146, 35, 54, 54, 54, 54 }; static const ANTLR3_INT32 dfa2_T61[] = { 1414, 1413, -1, -1, 2375, 1418, 1899, 338, 1901, 3831, 1417, 2374, -1, 1410, 1415, 1899, -1, -1, -1, 1410, -1, -1, -1, 1411, 1416, 34, -1, -1, 1410, -1, 2376, 1883, 337, 1410, 1410, 1410, 1410 }; static const ANTLR3_INT32 dfa2_T62[] = { 346, -1, -1, -1, -1, 1015, -1, 1016, -1, -1, -1, 664, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 347 }; static const ANTLR3_INT32 dfa2_T63[] = { 801, -1, -1, -1, -1, 1702, -1, 1703, -1, -1, -1, 1226, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 802 }; static const ANTLR3_INT32 dfa2_T64[] = { 498, 497, -1, -1, 496, 502, 542, -1, 494, 3062, 501, 494, -1, 494, 499, 542, -1, -1, -1, 494, -1, -1, -1, 495, 500, 242, -1, -1, 494, -1, 240, 241, 35, 494, 494, 494, 494 }; static const ANTLR3_INT32 dfa2_T65[] = { 1711, 1710, -1, -1, 1709, 1715, 1705, -1, 1707, 2569, 1714, 1707, -1, 1707, 1712, 1705, -1, -1, -1, 1707, -1, -1, -1, 1708, 1713, 242, -1, -1, 1707, -1, 1716, 1717, 35, 1707, 1707, 1707, 1707 }; static const ANTLR3_INT32 dfa2_T66[] = { 1414, 1413, -1, -1, 2375, 1418, 1899, 338, 1901, 1900, 1417, 2379, -1, 1410, 1415, 1899, -1, -1, -1, 1410, -1, -1, -1, 1411, 1416, 34, -1, -1, 1410, -1, 2376, 1883, 337, 1410, 1410, 1410, 1410 }; static const ANTLR3_INT32 dfa2_T67[] = { 1414, 1413, -1, -1, 2375, 1418, 1899, 338, 1901, 1900, 1417, 3102, -1, 1410, 1415, 1899, -1, -1, -1, 1410, -1, -1, -1, 1411, 1416, 34, -1, -1, 1410, -1, 2376, 1883, 337, 1410, 1410, 1410, 1410 }; static const ANTLR3_INT32 dfa2_T68[] = { 1213, 1208, -1, -1, 1207, 1217, 1209, -1, 1211, 1210, 1216, 1211, -1, 1211, 1214, 1209, -1, -1, -1, 1211, -1, -1, -1, 1212, 1215, 230, -1, -1, 1211, -1, 1218, 1219, 35, 1211, 1211, 1211, 1211 }; static const ANTLR3_INT32 dfa2_T69[] = { 739, 427, -1, -1, 738, 743, 734, -1, 736, 735, 742, 736, -1, 736, 740, 734, -1, -1, -1, 736, -1, -1, -1, 737, 741, 242, -1, -1, 736, -1, 732, 733, 35, 736, 736, 736, 736 }; static const ANTLR3_INT32 dfa2_T70[] = { 3129, 2019, -1, -1, 3128, 2024, 3124, 205, 3132, 3125, 3131, 3126, -1, 3132, 2021, 3124, -1, -1, -1, 3132, 1080, -1, -1, 3127, 3130, 854, -1, -1, 3132, 1080, 2826, 3123, 204, 3132, 3132, 3132, 3132 }; static const ANTLR3_INT32 dfa2_T71[] = { 575, 574, -1, -1, 1349, 579, 922, 338, 925, 923, 578, 2319, -1, 571, 576, 922, -1, -1, -1, 571, -1, -1, -1, 572, 577, 34, -1, -1, 571, -1, 1348, 903, 337, 571, 571, 571, 571 }; static const ANTLR3_INT32 dfa2_T72[] = { 3424, 2879, -1, -1, 3423, 2884, 3419, 403, 3427, 3420, 3426, 3421, -1, 3427, 2881, 3419, -1, -1, -1, 3427, 405, -1, -1, 3422, 3425, 854, -1, -1, 3427, 405, 3151, 2827, 402, 3427, 3427, 3427, 3427 }; static const ANTLR3_INT32 dfa2_T73[] = { 3026, 2229, -1, -1, 3025, 2234, 3021, 205, 3032, 3022, 3029, 3023, -1, 3032, 3027, 3021, -1, -1, -1, 3032, 405, -1, -1, 3024, 3028, 1751, -1, -1, 3032, 405, 3030, 3031, 204, 3032, 3032, 3032, 3032 }; static const ANTLR3_INT32 dfa2_T74[] = { 13, -1, 15, -1, 16, -1, 18, 17, -1, 20, -1, 10, -1, 16, -1, -1, -1, 10, -1, -1, -1, 11, 19, -1, -1, -1, 10, -1, -1, -1, -1, 10, 10, 10, 10 }; static const ANTLR3_INT32 dfa2_T75[] = { 575, 574, -1, -1, 1349, 579, 922, 338, 925, 923, 578, 3077, -1, 571, 576, 922, -1, -1, -1, 571, -1, -1, -1, 572, 577, 34, -1, -1, 571, -1, 1348, 903, 337, 571, 571, 571, 571 }; static const ANTLR3_INT32 dfa2_T76[] = { 1414, 1413, -1, -1, 2375, 1418, 1899, 338, 1901, 1900, 1417, 2374, -1, 1410, 1415, 1899, -1, -1, -1, 1410, -1, -1, -1, 1411, 1416, 34, -1, -1, 1410, -1, 2376, 1883, 337, 1410, 1410, 1410, 1410 }; static const ANTLR3_INT32 dfa2_T77[] = { 355, 354, -1, -1, 353, 359, 1499, -1, 1040, 1500, 358, 673, -1, 351, 356, 1499, -1, -1, -1, 351, -1, -1, -1, 352, 357, 34, -1, -1, 351, -1, 154, 66, 35, 351, 351, 351, 351 }; static const ANTLR3_INT32 dfa2_T78[] = { 1730, 810, 1203, -1, 1727, 815, 2068, 2458, 2073, 2069, 1732, 2070, -1, 2073, 2552, 2068, -1, -1, -1, 2073, 405, -1, -1, 2071, 2072, 854, -1, -1, 2073, 405, 1630, 2553, 2456, 2073, 2073, 2073, 2073 }; static const ANTLR3_INT32 dfa2_T79[] = { 498, 497, -1, -1, 496, 502, 542, -1, 494, 1296, 501, 494, -1, 494, 499, 542, -1, -1, -1, 494, -1, -1, -1, 495, 500, 242, -1, -1, 494, -1, 240, 241, 35, 494, 494, 494, 494 }; static const ANTLR3_INT32 dfa2_T80[] = { 1414, 1413, -1, -1, 2375, 1418, 1899, 338, 1901, 1900, 1417, 3610, -1, 1410, 1415, 1899, -1, -1, -1, 1410, -1, -1, -1, 1411, 1416, 34, -1, -1, 1410, -1, 2376, 1883, 337, 1410, 1410, 1410, 1410 }; static const ANTLR3_INT32 dfa2_T81[] = { 575, 574, -1, -1, 1349, 579, 922, 338, 925, 923, 578, 1350, -1, 571, 576, 922, -1, -1, -1, 571, -1, -1, -1, 572, 577, 34, -1, -1, 571, -1, 1348, 903, 337, 571, 571, 571, 571 }; static const ANTLR3_INT32 dfa2_T82[] = { 377, 176, -1, -1, 82, 381, 373, -1, 375, 374, 380, 375, -1, 375, 378, 373, -1, -1, -1, 375, -1, -1, -1, 376, 379, 81, -1, -1, 375, -1, 79, 82, 35, 375, 375, 375, 375 }; static const ANTLR3_INT32 dfa2_T83[] = { 1079, 108, -1, -1, 1079, 106, 1535, 205, 1537, 1536, 1079, 1534, -1, 1537, 108, 1535, -1, -1, -1, 1537, 1080, -1, -1, 1538, 1079, 694, -1, -1, 1537, 1080, 693, 1079, 204, 1537, 1537, 1537, 1537 }; static const ANTLR3_INT32 dfa2_T84[] = { 3778, 2184, -1, -1, 3777, 2189, 3773, 205, 3781, 3774, 3780, 3775, -1, 3781, 2186, 3773, -1, -1, -1, 3781, 1080, -1, -1, 3776, 3779, 854, -1, -1, 3781, 1080, 3170, 3435, 204, 3781, 3781, 3781, 3781 }; static const ANTLR3_INT32 dfa2_T85[] = { 1680, 1675, -1, -1, 1674, 1684, 1676, -1, 1678, 1677, 1683, 1678, -1, 1678, 1681, 1676, -1, -1, -1, 1678, -1, -1, -1, 1679, 1682, 230, -1, -1, 1678, -1, 1218, 1219, 35, 1678, 1678, 1678, 1678 }; static const ANTLR3_INT32 dfa2_T86[] = { 1034 }; static const ANTLR3_INT32 dfa2_T87[] = { 1721 }; static const ANTLR3_INT32 dfa2_T88[] = { 641, -1, -1, -1, 956, -1, 957, 962, -1, 957, -1, 957, -1, 956, -1, -1, -1, 957, -1, -1, -1, 958, 959, -1, -1, -1, 957, -1, -1, -1, 963, 957, 957, 957, 957 }; static const ANTLR3_INT32 dfa2_T89[] = { 1203, -1, -1, -1, 1643, -1, 1644, 1649, -1, 1644, -1, 1644, -1, 1643, -1, -1, -1, 1644, -1, -1, -1, 1645, 1646, -1, -1, -1, 1644, -1, -1, -1, 1650, 1644, 1644, 1644, 1644 }; static const ANTLR3_INT32 dfa2_T90[] = { 651, 646, -1, -1, 645, 655, 647, -1, 649, 648, 654, 649, -1, 649, 652, 647, -1, -1, -1, 649, -1, -1, -1, 650, 653, 65, -1, -1, 649, -1, 656, 657, 35, 649, 649, 649, 649 }; static const ANTLR3_INT32 dfa2_T91[] = { 3842, 2638, -1, -1, 3841, 2643, 3837, 205, 3845, 3838, 3844, 3839, -1, 3845, 2640, 3837, -1, -1, -1, 3845, 1080, -1, -1, 3840, 3843, 854, -1, -1, 3845, 1080, 3463, 3435, 204, 3845, 3845, 3845, 3845 }; static const ANTLR3_INT32 dfa2_T92[] = { 346, -1, -1, -1, -1, 1467, -1, 1016, -1, -1, -1, 664, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 347 }; static const ANTLR3_INT32 dfa2_T93[] = { 801, -1, -1, -1, -1, 2176, -1, 1703, -1, -1, -1, 1226, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 802 }; static const ANTLR3_INT32 dfa2_T94[] = { 476, 471, -1, -1, 470, 480, 472, -1, 474, 473, 479, 474, -1, 474, 477, 472, -1, -1, -1, 474, -1, -1, -1, 475, 478, 230, -1, -1, 474, -1, 229, 441, 35, 474, 474, 474, 474 }; static const ANTLR3_INT32 dfa2_T95[] = { 2685, 2684, -1, -1, 2683, 2689, 2679, -1, 2681, 2680, 2688, 2681, -1, 2681, 2686, 2679, -1, -1, -1, 2681, -1, -1, -1, 2682, 2687, 2237, -1, -1, 2681, -1, 2690, 2236, 35, 2681, 2681, 2681, 2681 }; static const ANTLR3_INT32 dfa2_T96[] = { 564, 563, -1, -1, 562, 568, 601, -1, 560, 1346, 567, 560, -1, 560, 565, 601, -1, -1, -1, 560, -1, -1, -1, 561, 566, 34, -1, -1, 560, -1, 278, 279, 35, 560, 560, 560, 560 }; static const ANTLR3_INT32 dfa2_T97[] = { 1577, 1576, -1, -1, 1575, 1581, 1624, -1, 1573, 1625, 1580, 1573, -1, 1573, 1578, 1624, -1, -1, -1, 1573, 754, -1, -1, 1574, 1579, 242, -1, -1, 1573, -1, 1140, 733, 35, 1573, 1573, 1573, 1573 }; static const ANTLR3_INT32 dfa2_T98[] = { 2020, 2019, -1, -1, 2018, 2024, 2014, -1, 2016, 2015, 2023, 2016, -1, 2016, 2021, 2014, -1, -1, -1, 2016, -1, -1, -1, 2017, 2022, 242, -1, -1, 2016, -1, 2025, 2026, 35, 2016, 2016, 2016, 2016 }; static const ANTLR3_INT32 dfa2_T99[] = { 3651, 2638, -1, -1, 3650, 2643, 3646, 205, 3654, 3647, 3653, 3648, -1, 3654, 3784, 3646, -1, -1, -1, 3654, 405, -1, -1, 3649, 3652, 854, -1, -1, 3654, 405, 3463, 3171, 204, 3654, 3654, 3654, 3654 }; static const ANTLR3_INT32 dfa2_T100[] = { 2822, 2019, -1, -1, 2821, 2024, 2817, 205, 2828, 2818, 2825, 2819, -1, 2828, 2823, 2817, -1, -1, -1, 2828, 405, -1, -1, 2820, 2824, 854, -1, -1, 2828, 405, 2826, 2827, 204, 2828, 2828, 2828, 2828 }; static const ANTLR3_INT32 dfa2_T101[] = { 564, 563, -1, -1, 562, 568, 601, -1, 560, 2314, 567, 560, -1, 560, 565, 601, -1, -1, -1, 560, -1, -1, -1, 561, 566, 34, -1, -1, 560, -1, 278, 279, 35, 560, 560, 560, 560 }; static const ANTLR3_INT32 dfa2_T102[] = { 1099, 89, -1, -1, 1103, 197, 1095, -1, 1097, 1096, 1101, 1097, -1, 1097, 194, 1095, -1, -1, -1, 1097, 1104, -1, -1, 1098, 1100, 1102, -1, -1, 1097, 1104, 105, 1103, 35, 1097, 1097, 1097, 1097 }; static const ANTLR3_INT32 dfa2_T103[] = { 498, 497, -1, -1, 496, 502, 874, -1, 876, 875, 501, 873, -1, 494, 499, 874, -1, -1, -1, 494, -1, -1, -1, 495, 500, 242, -1, -1, 494, -1, 240, 241, 35, 494, 494, 494, 494 }; static const ANTLR3_INT32 dfa2_T104[] = { 1383, -1, -1, -1, 1390, 338, 1392, 1391, -1, 1392, -1, 1392, -1, 1390, -1, -1, -1, 1392, -1, -1, -1, 1393, 1394, 34, -1, -1, 1392, -1, 643, 666, 337, 1392, 1392, 1392, 1392 }; static const ANTLR3_INT32 dfa2_T105[] = { 1577, 1576, -1, -1, 2545, 1581, 1624, 1588, 1573, 3221, 1580, 1573, -1, 1573, 1578, 1624, -1, -1, -1, 1573, -1, -1, -1, 1574, 1579, 854, -1, -1, 1573, -1, 2051, 1584, 1585, 1573, 1573, 1573, 1573 }; static const ANTLR3_INT32 dfa2_T106[] = { 2836, 1123, -1, -1, 2835, 1128, 2844, -1, 2849, 2845, 2838, 2846, -1, 2849, 1125, 2844, -1, -1, -1, 2849, 1080, -1, -1, 2847, 2848, 242, -1, -1, 2849, 1080, 732, 2830, 35, 2849, 2849, 2849, 2849 }; static const ANTLR3_INT32 dfa2_T107[] = { 564, 563, -1, -1, 562, 568, 601, -1, 560, 3073, 567, 560, -1, 560, 565, 601, -1, -1, -1, 560, -1, -1, -1, 561, 566, 34, -1, -1, 560, -1, 278, 279, 35, 560, 560, 560, 560 }; static const ANTLR3_INT32 dfa2_T108[] = { 1170, 771, -1, -1, 1133, 1174, 1166, -1, 1168, 1167, 1173, 1168, -1, 1168, 1171, 1166, -1, -1, -1, 1168, -1, -1, -1, 1169, 1172, 242, -1, -1, 1168, -1, 1140, 733, 35, 1168, 1168, 1168, 1168 }; static const ANTLR3_INT32 dfa2_T109[] = { 276, 268, -1, -1, 267, 274, 269, -1, 271, 270, 276, 271, -1, 271, 276, 269, -1, -1, -1, 271, -1, -1, -1, 272, 276, 275, -1, -1, 271, -1, 273, 276, 35, 271, 271, 271, 271 }; static const ANTLR3_INT32 dfa2_T110[] = { 1577, 1576, -1, -1, 2545, 1581, 1624, 1588, 1573, 2551, 1580, 1573, -1, 1573, 1578, 1624, -1, -1, -1, 1573, -1, -1, -1, 1574, 1579, 854, -1, -1, 1573, -1, 2051, 1584, 1585, 1573, 1573, 1573, 1573 }; static const ANTLR3_INT32 dfa2_T111[] = { 108, 108, -1, -1, 108, 106, 198, -1, 111, 199, 108, 111, -1, 111, 108, 198, -1, -1, -1, 111, 200, -1, -1, 112, 108, 107, -1, -1, 111, -1, 105, 108, 35, 111, 111, 111, 111 }; static const ANTLR3_INT32 dfa2_T112[] = { 2579, 2578, -1, -1, 3302, 2583, 2619, 1588, 2575, 3728, 2582, 2575, -1, 2575, 2580, 2619, -1, -1, -1, 2575, -1, -1, -1, 2576, 2581, 854, -1, -1, 2575, -1, 2986, 2588, 1585, 2575, 2575, 2575, 2575 }; static const ANTLR3_INT32 dfa2_T113[] = { 1861, 1861, 1861, 1862, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1863, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861, 1861 }; static const ANTLR3_INT32 dfa2_T114[] = { 2566, 2566, 2566, 2567, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2568, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566, 2566 }; static const ANTLR3_INT32 dfa2_T115[] = { 498, 497, -1, -1, 1298, 502, 874, 205, 876, 875, 501, 1297, -1, 494, 499, 874, -1, -1, -1, 494, -1, -1, -1, 495, 500, 854, -1, -1, 494, -1, 853, 241, 204, 494, 494, 494, 494 }; static const ANTLR3_INT32 dfa2_T116[] = { 1588, -1, 2520, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 854, -1, -1, -1, -1, 2028, 1228, 1585 }; static const ANTLR3_INT32 dfa2_T117[] = { 508, 508, -1, -1, 1306, 506, 882, 205, 884, 1310, 508, 1311, -1, 511, 508, 882, -1, -1, -1, 511, -1, -1, -1, 512, 508, 1308, -1, -1, 511, -1, 1307, 508, 204, 511, 511, 511, 511 }; static const ANTLR3_INT32 dfa2_T118[] = { 346, -1, -1, -1, -1, 664, -1, 1016, -1, -1, -1, 664, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 347 }; static const ANTLR3_INT32 dfa2_T119[] = { 801, -1, -1, -1, -1, 1226, -1, 1703, -1, -1, -1, 1226, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 802 }; static const ANTLR3_INT32 dfa2_T120[] = { 2535, 1576, 1203, -1, 2534, 1581, 2530, 2458, 2538, 2531, 2537, 2532, -1, 2538, 2900, 2530, -1, -1, -1, 2538, 405, -1, -1, 2533, 2536, 854, -1, -1, 2538, 405, 2051, 2455, 2456, 2538, 2538, 2538, 2538 }; static const ANTLR3_INT32 dfa2_T121[] = { 193, 89, -1, -1, 725, 197, 717, -1, 719, 718, 723, 719, -1, 719, 721, 717, -1, -1, -1, 719, 414, -1, -1, 720, 722, 724, -1, -1, 719, 414, 105, 725, 35, 719, 719, 719, 719 }; static const ANTLR3_INT32 dfa2_T122[] = { 193, 89, -1, -1, 1551, 197, 1544, -1, 1546, 1545, 1549, 1546, -1, 1546, 1986, 1544, -1, -1, -1, 1546, 1552, -1, -1, 1547, 1548, 1550, -1, -1, 1546, 1552, 105, 1551, 35, 1546, 1546, 1546, 1546 }; static const ANTLR3_INT32 dfa2_T123[] = { 1203, -1, -1, -1, 1643, 1639, 1644, 1649, -1, 1644, -1, 1644, 1641, 1643, -1, -1, -1, 1644, -1, -1, -1, 1645, 1646, 242, -1, -1, 1644, -1, 1205, 1228, 1638, 1644, 1644, 1644, 1644 }; static const ANTLR3_INT32 dfa2_T124[] = { 170, 165, -1, -1, 164, 174, 166, -1, 168, 167, 173, 168, -1, 168, 171, 166, -1, -1, -1, 168, -1, -1, -1, 169, 172, 65, -1, -1, 168, -1, 64, 146, 35, 168, 168, 168, 168 }; static const ANTLR3_INT32 dfa2_T125[] = { 1124, 1123, -1, -1, 1122, 1128, 1163, -1, 1120, 2049, 1127, 1120, -1, 1120, 1125, 1163, -1, -1, -1, 1120, -1, -1, -1, 1121, 1126, 242, -1, -1, 1120, -1, 732, 733, 35, 1120, 1120, 1120, 1120 }; static const ANTLR3_INT32 dfa2_T126[] = { 1124, 1123, -1, -1, 2043, 1128, 1600, 1588, 1603, 1601, 1127, 2044, -1, 1120, 1125, 1600, -1, -1, -1, 1120, -1, -1, -1, 1121, 1126, 854, -1, -1, 1120, -1, 1583, 1584, 1585, 1120, 1120, 1120, 1120 }; static const ANTLR3_INT32 dfa2_T127[] = { 2889, -1, -1, -1, -1, 3659, -1, 2519, -1, -1, -1, 3191, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1596 }; static const ANTLR3_INT32 dfa2_T128[] = { 2579, 2578, -1, -1, 3302, 2583, 2619, 1588, 2575, 3306, 2582, 2575, -1, 2575, 2580, 2619, -1, -1, -1, 2575, -1, -1, -1, 2576, 2581, 854, -1, -1, 2575, -1, 2986, 2588, 1585, 2575, 2575, 2575, 2575 }; static const ANTLR3_INT32 dfa2_T129[] = { 56, 141, -1, -1, 140, 63, 142, -1, 145, 143, 62, 144, -1, 54, 60, 142, -1, -1, -1, 54, -1, -1, -1, 55, 61, 65, -1, -1, 54, -1, 64, 146, 35, 54, 54, 54, 54 }; static const ANTLR3_INT32 dfa2_T130[] = { 1004, 999, -1, -1, 998, 1008, 1000, -1, 1002, 1001, 1007, 1002, -1, 1002, 1005, 1000, -1, -1, -1, 1002, -1, -1, -1, 1003, 1006, 65, -1, -1, 1002, -1, 1009, 657, 35, 1002, 1002, 1002, 1002 }; static const ANTLR3_INT32 dfa2_T131[] = { 2524 }; static const ANTLR3_INT32 dfa2_T132[] = { 508, 508, -1, -1, 1306, 506, 882, 205, 884, 2286, 508, 2287, -1, 511, 508, 882, -1, -1, -1, 511, -1, -1, -1, 512, 508, 1308, -1, -1, 511, -1, 1307, 508, 204, 511, 511, 511, 511 }; static const ANTLR3_INT32 dfa2_T133[] = { 1577, 1576, -1, -1, 2545, 1581, 1624, 1588, 1573, 3671, 1580, 1573, -1, 1573, 1578, 1624, -1, -1, -1, 1573, -1, -1, -1, 1574, 1579, 854, -1, -1, 1573, -1, 2051, 1584, 1585, 1573, 1573, 1573, 1573 }; static const ANTLR3_INT32 dfa2_T134[] = { 508, 508, -1, -1, 1306, 506, 882, 205, 884, 3064, 508, 3065, -1, 511, 508, 882, -1, -1, -1, 511, -1, -1, -1, 512, 508, 1308, -1, -1, 511, -1, 1307, 508, 204, 511, 511, 511, 511 }; static const ANTLR3_INT32 dfa2_T135[] = { 405, -1, -1, -1, 405, -1, 1541, 205, 715, 1540, 405, 712, -1, 715, 1093, 1541, -1, -1, -1, 715, 405, -1, -1, 716, 405, 1090, -1, -1, 715, 405, 407, 405, 1091, 715, 715, 715, 715 }; static const ANTLR3_INT32 dfa2_T136[] = { 1124, 1123, -1, -1, 1122, 1128, 1163, -1, 1120, 2899, 1127, 1120, -1, 1120, 1125, 1163, -1, -1, -1, 1120, -1, -1, -1, 1121, 1126, 242, -1, -1, 1120, -1, 732, 733, 35, 1120, 1120, 1120, 1120 }; static const ANTLR3_INT32 dfa2_T137[] = { 87, 205, -1, -1, -1, -1, -1, -1, -1, 87, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 407, -1, 406 }; static const ANTLR3_INT32 dfa2_T138[] = { 1497, -1, 1016 }; static const ANTLR3_INT32 dfa2_T139[] = { 2206, -1, 1703 }; static const ANTLR3_INT32 dfa2_T140[] = { 1595, -1, -1, -1, -1, 2890, -1, 2519, -1, -1, -1, 2037, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1596 }; static const ANTLR3_INT32 dfa2_T141[] = { 749, 748, -1, -1, 738, 753, 1142, -1, 746, 1143, 752, 746, -1, 746, 750, 1142, -1, -1, -1, 746, -1, -1, -1, 747, 751, 242, -1, -1, 746, -1, 732, 733, 35, 746, 746, 746, 746 }; static const ANTLR3_INT32 dfa2_T142[] = { 1619, 1182, -1, -1, 1575, 1623, 1615, -1, 1617, 1616, 1622, 1617, -1, 1617, 1620, 1615, -1, -1, -1, 1617, -1, -1, -1, 1618, 1621, 242, -1, -1, 1617, -1, 1140, 733, 35, 1617, 1617, 1617, 1617 }; static const ANTLR3_INT32 dfa2_T143[] = { 2112, 2111, -1, -1, 2977, 2116, 2596, 1588, 2598, 2597, 2115, 2976, -1, 2108, 2113, 2596, -1, -1, -1, 2108, -1, -1, -1, 2109, 2114, 854, -1, -1, 2108, -1, 2587, 2588, 1585, 2108, 2108, 2108, 2108 }; static const ANTLR3_INT32 dfa2_T144[] = { 3292, 2578, 1203, -1, 3291, 2583, 3286, 2458, 3294, 3287, 3293, 3288, -1, 3294, 3547, 3286, -1, -1, -1, 3294, 405, -1, -1, 3289, 3290, 854, -1, -1, 3294, 405, 2986, 3261, 2456, 3294, 3294, 3294, 3294 }; static const ANTLR3_INT32 dfa2_T145[] = { 3272, 3271, -1, -1, 3270, 3276, 3266, -1, 3268, 3267, 3275, 3268, -1, 3268, 3273, 3266, -1, -1, -1, 3268, -1, -1, -1, 3269, 3274, 242, -1, -1, 3268, -1, 2969, 1661, 35, 3268, 3268, 3268, 3268 }; static const ANTLR3_INT32 dfa2_T146[] = { 811, 810, -1, -1, 809, 815, 2213, -1, 1741, 2214, 814, 1244, -1, 807, 812, 2213, -1, -1, -1, 807, -1, -1, -1, 808, 813, 242, -1, -1, 807, -1, 458, 241, 35, 807, 807, 807, 807 }; static const ANTLR3_INT32 dfa2_T147[] = { 1923, -1, 1924 }; static const ANTLR3_INT32 dfa2_T148[] = { 1940, -1, 1941 }; static const ANTLR3_INT32 dfa2_T149[] = { 2628, -1, 2629 }; static const ANTLR3_INT32 dfa2_T150[] = { 2645, -1, 2646 }; static const ANTLR3_INT32 dfa2_T151[] = { 508, 508, -1, -1, 1306, 506, 882, 205, 884, 3597, 508, 1305, -1, 511, 508, 882, -1, -1, -1, 511, -1, -1, -1, 512, 508, 1308, -1, -1, 511, -1, 1307, 508, 204, 511, 511, 511, 511 }; static const ANTLR3_INT32 dfa2_T152[] = { 1124, 1123, -1, -1, 1122, 1128, 1163, -1, 1120, 3479, 1127, 1120, -1, 1120, 1125, 1163, -1, -1, -1, 1120, -1, -1, -1, 1121, 1126, 242, -1, -1, 1120, -1, 732, 733, 35, 1120, 1120, 1120, 1120 }; static const ANTLR3_INT32 dfa2_T153[] = { 2795, -1, 2796 }; static const ANTLR3_INT32 dfa2_T154[] = { 2798, -1, 2799 }; static const ANTLR3_INT32 dfa2_T155[] = { 3309, -1, 3310 }; static const ANTLR3_INT32 dfa2_T156[] = { 3312, -1, 3313 }; static const ANTLR3_INT32 dfa2_T157[] = { 2579, 2578, -1, -1, 3302, 2583, 2619, 1588, 2575, 3870, 2582, 2575, -1, 2575, 2580, 2619, -1, -1, -1, 2575, -1, -1, -1, 2576, 2581, 854, -1, -1, 2575, -1, 2986, 2588, 1585, 2575, 2575, 2575, 2575 }; static const ANTLR3_INT32 dfa2_T158[] = { 99, 89, -1, -1, 408, 97, 409, -1, 411, 410, 415, 411, -1, 411, 726, 409, -1, -1, -1, 411, 414, -1, -1, 412, 415, 413, -1, -1, 411, 414, 94, 415, 35, 411, 411, 411, 411 }; static const ANTLR3_INT32 dfa2_T159[] = { 99, 89, -1, -1, 1559, 97, 1560, -1, 1562, 1561, 1565, 1562, -1, 1562, 1995, 1560, -1, -1, -1, 1562, 1552, -1, -1, 1563, 1565, 1564, -1, -1, 1562, 1552, 94, 1565, 35, 1562, 1562, 1562, 1562 }; static const ANTLR3_INT32 dfa2_T160[] = { 3405, -1, -1, -1, -1, -1, 3405 }; static const ANTLR3_INT32 dfa2_T161[] = { 3627, -1, -1, -1, -1, -1, 3627 }; static const ANTLR3_INT32 dfa2_T162[] = { 3628, -1, -1, -1, -1, -1, 3628 }; static const ANTLR3_INT32 dfa2_T163[] = { 3770, -1, -1, -1, -1, -1, 3770 }; static const ANTLR3_INT32 dfa2_T164[] = { 3798, -1, -1, -1, -1, -1, 3798 }; static const ANTLR3_INT32 dfa2_T165[] = { 3861, -1, -1, -1, -1, -1, 3861 }; static const ANTLR3_INT32 dfa2_T166[] = { 2522, -1, -1, -1, -1, 3474, -1, 2519, -1, -1, -1, 2894, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1596 }; static const ANTLR3_INT32 dfa2_T167[] = { 564, 563, -1, -1, 562, 568, 601, -1, 560, 1342, 567, 560, -1, 560, 565, 601, -1, -1, -1, 560, -1, -1, -1, 561, 566, 34, -1, -1, 560, -1, 278, 279, 35, 560, 560, 560, 560 }; static const ANTLR3_INT32 dfa2_T168[] = { 99, 89, -1, -1, 88, 97, 102, -1, 96, 103, 99, 96, -1, 96, 99, 102, -1, -1, -1, 96, -1, -1, -1, 93, 99, 98, -1, -1, 96, -1, 94, 99, 35, 96, 96, 96, 96 }; static const ANTLR3_INT32 dfa2_T169[] = { 811, 810, -1, -1, 809, 815, 1292, -1, 807, 1293, 814, 807, -1, 807, 812, 1292, -1, -1, -1, 807, 200, -1, -1, 808, 813, 242, -1, -1, 807, -1, 458, 241, 35, 807, 807, 807, 807 }; static const ANTLR3_INT32 dfa2_T170[] = { 981, 980, -1, -1, 975, 985, 1370, -1, 978, 1371, 984, 978, -1, 978, 982, 1370, -1, -1, -1, 978, -1, -1, -1, 979, 983, 34, -1, -1, 978, -1, 973, 974, 35, 978, 978, 978, 978 }; static const ANTLR3_INT32 dfa2_T171[] = { 508, 508, -1, -1, 508, 506, 509, -1, 511, 510, 508, 511, -1, 511, 508, 509, -1, -1, -1, 511, -1, -1, -1, 512, 508, 507, -1, -1, 511, -1, 505, 508, 35, 511, 511, 511, 511 }; static const ANTLR3_INT32 dfa2_T172[] = { 608, 316, -1, -1, 573, 612, 604, -1, 606, 605, 611, 606, -1, 606, 609, 604, -1, -1, -1, 606, -1, -1, -1, 607, 610, 34, -1, -1, 606, -1, 580, 279, 35, 606, 606, 606, 606 }; static const ANTLR3_INT32 dfa2_T173[] = { 1135, 1134, -1, -1, 1133, 1139, 2540, -1, 2055, 2541, 1138, 1610, -1, 1131, 1136, 2540, -1, -1, -1, 1131, -1, -1, -1, 1132, 1137, 242, -1, -1, 1131, -1, 1140, 733, 35, 1131, 1131, 1131, 1131 }; static const ANTLR3_INT32 dfa2_T174[] = { 1099, 89, -1, -1, 2436, 197, 2429, -1, 2431, 2430, 2434, 2431, -1, 2431, 194, 2429, -1, -1, -1, 2431, 2437, -1, -1, 2432, 2433, 2435, -1, -1, 2431, 2437, 105, 2436, 35, 2431, 2431, 2431, 2431 }; static const ANTLR3_INT32 dfa2_T175[] = { 508, 508, -1, -1, 1277, 506, 1273, -1, 1275, 1274, 1277, 1275, -1, 1275, 1768, 1273, -1, -1, -1, 1275, 414, -1, -1, 1276, 1277, 1272, -1, -1, 1275, 414, 505, 1277, 35, 1275, 1275, 1275, 1275 }; static const ANTLR3_INT32 dfa2_T176[] = { 508, 508, -1, -1, 2703, 506, 2699, -1, 2701, 2700, 2703, 2701, -1, 2701, 3054, 2699, -1, -1, -1, 2701, 1552, -1, -1, 2702, 2703, 2698, -1, -1, 2701, 1552, 505, 2703, 35, 2701, 2701, 2701, 2701 }; static const ANTLR3_INT32 dfa2_T177[] = { 355, 354, -1, -1, 1039, 359, 370, 338, 351, 1043, 358, 351, -1, 351, 356, 370, -1, -1, -1, 351, -1, -1, -1, 352, 357, 34, -1, -1, 351, -1, 944, 945, 337, 351, 351, 351, 351 }; static const ANTLR3_INT32 dfa2_T178[] = { 2305, 2304, -1, -1, 2303, 2309, 2299, -1, 2301, 2300, 2308, 2301, -1, 2301, 2306, 2299, -1, -1, -1, 2301, -1, -1, -1, 2302, 2307, 34, -1, -1, 2301, -1, 1824, 1333, 35, 2301, 2301, 2301, 2301 }; static const ANTLR3_INT32 dfa2_T179[] = { 1942, -1, 1016 }; static const ANTLR3_INT32 dfa2_T180[] = { 1135, 1134, -1, -1, 1133, 1139, 1608, -1, 1611, 1609, 1138, 1610, -1, 1131, 1136, 1608, -1, -1, -1, 1131, -1, -1, -1, 1132, 1137, 242, -1, -1, 1131, -1, 1140, 733, 35, 1131, 1131, 1131, 1131 }; static const ANTLR3_INT32 dfa2_T181[] = { 2647, -1, 1703 }; static const ANTLR3_INT32 dfa2_T182[] = { 355, 354, -1, -1, 1039, 359, 370, 338, 351, 2802, 358, 351, -1, 351, 356, 370, -1, -1, -1, 351, -1, -1, -1, 352, 357, 34, -1, -1, 351, -1, 944, 945, 337, 351, 351, 351, 351 }; static const ANTLR3_INT32 dfa2_T183[] = { 526, 224, -1, -1, 223, 530, 522, -1, 524, 523, 529, 524, -1, 524, 527, 522, -1, -1, -1, 524, -1, -1, -1, 525, 528, 126, -1, -1, 524, -1, 531, 254, 35, 524, 524, 524, 524 }; static const ANTLR3_INT32 dfa2_T184[] = { 2391, -1, 1924 }; static const ANTLR3_INT32 dfa2_T185[] = { 2397, -1, 1941 }; static const ANTLR3_INT32 dfa2_T186[] = { 3001, -1, 2629 }; static const ANTLR3_INT32 dfa2_T187[] = { 3007, -1, 2646 }; static const ANTLR3_INT32 dfa2_T188[] = { 355, 354, -1, -1, 1039, 359, 370, 338, 351, 1945, 358, 351, -1, 351, 356, 370, -1, -1, -1, 351, -1, -1, -1, 352, 357, 34, -1, -1, 351, -1, 944, 945, 337, 351, 351, 351, 351 }; static const ANTLR3_INT32 dfa2_T189[] = { 3109, -1, 2796 }; static const ANTLR3_INT32 dfa2_T190[] = { 3111, -1, 2799 }; static const ANTLR3_INT32 dfa2_T191[] = { 3559, -1, 3310 }; static const ANTLR3_INT32 dfa2_T192[] = { 3561, -1, 3313 }; static const ANTLR3_INT32 dfa2_T193[] = { 811, 810, -1, -1, 2276, 815, 1292, 205, 807, 2280, 814, 807, -1, 807, 812, 1292, -1, -1, -1, 807, -1, -1, -1, 808, 813, 854, -1, -1, 807, -1, 1237, 241, 204, 807, 807, 807, 807 }; static const ANTLR3_INT32 dfa2_T194[] = { 82, 82, 641, -1, 82, 80, 1504, 952, 1506, 1505, 82, 1506, -1, 1506, 1946, 1504, -1, -1, -1, 1506, -1, -1, -1, 1507, 1508, 1050, -1, -1, 1506, -1, 1048, 1049, 951, 1506, 1506, 1506, 1506 }; static const ANTLR3_INT32 dfa2_T195[] = { 564, 563, -1, -1, 1340, 568, 914, 338, 917, 2312, 567, 2313, -1, 560, 565, 914, -1, -1, -1, 560, -1, -1, -1, 561, 566, 34, -1, -1, 560, -1, 902, 903, 337, 560, 560, 560, 560 }; static const ANTLR3_INT32 dfa2_T196[] = { 1577, 1576, -1, -1, 2545, 1581, 1624, 1588, 1573, 2547, 1580, 1573, -1, 1573, 1578, 1624, -1, -1, -1, 1573, -1, -1, -1, 1574, 1579, 854, -1, -1, 1573, -1, 2051, 1584, 1585, 1573, 1573, 1573, 1573 }; static const ANTLR3_INT32 dfa2_T197[] = { 2880, 2879, -1, -1, 2878, 2884, 2874, -1, 2876, 2875, 2883, 2876, -1, 2876, 2881, 2874, -1, -1, -1, 2876, -1, -1, -1, 2877, 2882, 242, -1, -1, 2876, -1, 2510, 2026, 35, 2876, 2876, 2876, 2876 }; static const ANTLR3_INT32 dfa2_T198[] = { 3329, 2229, -1, -1, 3328, 2234, 3324, 205, 3332, 3325, 3331, 3326, -1, 3332, 2231, 3324, -1, -1, -1, 3332, 1080, -1, -1, 3327, 3330, 1751, -1, -1, 3332, 1080, 3030, 3323, 204, 3332, 3332, 3332, 3332 }; static const ANTLR3_INT32 dfa2_T199[] = { 1403, 1402, 641, -1, 1401, 1407, 2343, 640, 2345, 2344, 1406, 2345, -1, 2345, 1404, 2343, -1, -1, -1, 2345, -1, -1, -1, 2346, 2347, 34, -1, -1, 2345, -1, 973, 974, 639, 2345, 2345, 2345, 2345 }; static const ANTLR3_INT32 dfa2_T200[] = { 355, 354, -1, -1, 353, 359, 370, -1, 351, 371, 358, 351, -1, 351, 356, 370, -1, -1, -1, 351, 57, -1, -1, 352, 357, 34, -1, -1, 351, -1, 154, 66, 35, 351, 351, 351, 351 }; static const ANTLR3_INT32 dfa2_T201[] = { 811, 810, -1, -1, 2276, 815, 1292, 205, 807, 3059, 814, 807, -1, 807, 812, 1292, -1, -1, -1, 807, -1, -1, -1, 808, 813, 854, -1, -1, 807, -1, 1237, 241, 204, 807, 807, 807, 807 }; static const ANTLR3_INT32 dfa2_T202[] = { 564, 563, -1, -1, 1340, 568, 914, 338, 917, 3071, 567, 3072, -1, 560, 565, 914, -1, -1, -1, 560, -1, -1, -1, 561, 566, 34, -1, -1, 560, -1, 902, 903, 337, 560, 560, 560, 560 }; static const ANTLR3_INT32 dfa2_T203[] = { 811, 810, -1, -1, 2276, 815, 1292, 205, 807, 3595, 814, 807, -1, 807, 812, 1292, -1, -1, -1, 807, -1, -1, -1, 808, 813, 854, -1, -1, 807, -1, 1237, 241, 204, 807, 807, 807, 807 }; static const ANTLR3_INT32 dfa2_T204[] = { 564, 563, -1, -1, 1340, 568, 914, 338, 917, 1344, 567, 1345, -1, 560, 565, 914, -1, -1, -1, 560, -1, -1, -1, 561, 566, 34, -1, -1, 560, -1, 902, 903, 337, 560, 560, 560, 560 }; static const ANTLR3_INT32 dfa2_T205[] = { 564, 563, -1, -1, 1340, 568, 914, 338, 917, 3598, 567, 1341, -1, 560, 565, 914, -1, -1, -1, 560, -1, -1, -1, 561, 566, 34, -1, -1, 560, -1, 902, 903, 337, 560, 560, 560, 560 }; static const ANTLR3_INT32 dfa2_T206[] = { 1403, 1402, -1, -1, 2367, 1407, 1891, 338, 1893, 3604, 1406, 3605, -1, 1399, 1404, 1891, -1, -1, -1, 1399, -1, -1, -1, 1400, 1405, 34, -1, -1, 1399, -1, 1882, 1883, 337, 1399, 1399, 1399, 1399 }; static const ANTLR3_INT32 dfa2_T207[] = { 1124, 1123, -1, -1, 1122, 1128, 1163, -1, 1120, 2045, 1127, 1120, -1, 1120, 1125, 1163, -1, -1, -1, 1120, -1, -1, -1, 1121, 1126, 242, -1, -1, 1120, -1, 732, 733, 35, 1120, 1120, 1120, 1120 }; static const ANTLR3_INT32 dfa2_T208[] = { 355, 354, -1, -1, 353, 359, 349, 338, 351, 1498, 358, 351, -1, 351, 356, 349, -1, -1, -1, 351, -1, -1, -1, 352, 357, 34, -1, -1, 351, -1, 944, 945, 337, 351, 351, 351, 351 }; static const ANTLR3_INT32 dfa2_T209[] = { 2836, 1123, 2092, -1, 2835, 1128, 2831, 1588, 2839, 2832, 2838, 2833, -1, 2839, 1125, 2831, -1, -1, -1, 2839, 1080, -1, -1, 2834, 2837, 854, -1, -1, 2839, 1080, 1583, 3153, 1585, 2839, 2839, 2839, 2839 }; static const ANTLR3_INT32 dfa2_T210[] = { 1403, 1402, -1, -1, 2367, 1407, 1891, 338, 1893, 2369, 1406, 2370, -1, 1399, 1404, 1891, -1, -1, -1, 1399, -1, -1, -1, 1400, 1405, 34, -1, -1, 1399, -1, 1882, 1883, 337, 1399, 1399, 1399, 1399 }; static const ANTLR3_INT32 dfa2_T211[] = { 1016 }; static const ANTLR3_INT32 dfa2_T212[] = { 1703 }; static const ANTLR3_INT32 dfa2_T213[] = { 1403, 1402, -1, -1, 2367, 1407, 1891, 338, 1893, 3095, 1406, 3096, -1, 1399, 1404, 1891, -1, -1, -1, 1399, -1, -1, -1, 1400, 1405, 34, -1, -1, 1399, -1, 1882, 1883, 337, 1399, 1399, 1399, 1399 }; static const ANTLR3_INT32 dfa2_T214[] = { 1924 }; static const ANTLR3_INT32 dfa2_T215[] = { 1941 }; static const ANTLR3_INT32 dfa2_T216[] = { 3292, 2578, 1203, -1, 3291, 2583, 3286, 2012, 3294, 3287, 3293, 3288, -1, 3294, 2580, 3286, -1, -1, -1, 3294, 405, -1, -1, 3289, 3290, 854, -1, -1, 3294, 405, 3251, 2928, 2010, 3294, 3294, 3294, 3294 }; static const ANTLR3_INT32 dfa2_T217[] = { 2629 }; static const ANTLR3_INT32 dfa2_T218[] = { 2646 }; static const ANTLR3_INT32 dfa2_T219[] = { 2579, 2578, -1, -1, 3302, 2583, 2619, 1588, 2575, 3300, 2582, 2575, -1, 2575, 2580, 2619, -1, -1, -1, 2575, -1, -1, -1, 2576, 2581, 854, -1, -1, 2575, -1, 2986, 2588, 1585, 2575, 2575, 2575, 2575 }; static const ANTLR3_INT32 dfa2_T220[] = { 453, 224, -1, -1, 459, 457, 449, -1, 451, 450, 456, 451, -1, 451, 454, 449, -1, -1, -1, 451, -1, -1, -1, 452, 455, 242, -1, -1, 451, -1, 458, 241, 35, 451, 451, 451, 451 }; static const ANTLR3_INT32 dfa2_T221[] = { 641, -1, -1, -1, 956, 952, 957, 955, -1, 957, -1, 957, 954, 953, -1, -1, -1, 957, -1, -1, -1, 958, 959, 34, -1, -1, 957, -1, 643, 666, 951, 957, 957, 957, 957 }; static const ANTLR3_INT32 dfa2_T222[] = { 641, -1, -1, -1, 956, 952, 957, 1800, -1, 957, -1, 957, 954, 1799, -1, -1, -1, 957, -1, -1, -1, 958, 959, 34, -1, -1, 957, -1, 643, 666, 951, 957, 957, 957, 957 }; static const ANTLR3_INT32 dfa2_T223[] = { 641, -1, -1, -1, 956, 952, 957, 2317, -1, 957, -1, 957, 954, 2316, -1, -1, -1, 957, -1, -1, -1, 958, 959, 34, -1, -1, 957, -1, 643, 666, 951, 957, 957, 957, 957 }; static const ANTLR3_INT32 dfa2_T224[] = { 641, -1, -1, -1, 956, 952, 957, 2754, -1, 957, -1, 957, 954, 2753, -1, -1, -1, 957, -1, -1, -1, 958, 959, 34, -1, -1, 957, -1, 643, 666, 951, 957, 957, 957, 957 }; static const ANTLR3_INT32 dfa2_T225[] = { 641, -1, -1, -1, 956, 952, 957, 3100, -1, 957, -1, 957, 954, 3099, -1, -1, -1, 957, -1, -1, -1, 958, 959, 34, -1, -1, 957, -1, 643, 666, 951, 957, 957, 957, 957 }; static const ANTLR3_INT32 dfa2_T226[] = { 3518, 2111, 2092, -1, 3517, 2116, 3512, 1588, 3520, 3513, 3519, 3514, -1, 3520, 2113, 3512, -1, -1, -1, 3520, 1080, -1, -1, 3515, 3516, 854, -1, -1, 3520, 1080, 2587, 3678, 1585, 3520, 3520, 3520, 3520 }; static const ANTLR3_INT32 dfa2_T227[] = { 575, 574, -1, -1, 573, 579, 922, -1, 925, 1841, 578, 1842, -1, 571, 576, 922, -1, -1, -1, 571, -1, -1, -1, 572, 577, 34, -1, -1, 571, -1, 580, 279, 35, 571, 571, 571, 571 }; static const ANTLR3_INT32 dfa2_T228[] = { 2796 }; static const ANTLR3_INT32 dfa2_T229[] = { 2799 }; static const ANTLR3_INT32 dfa2_T230[] = { 3310 }; static const ANTLR3_INT32 dfa2_T231[] = { 3313 }; static const ANTLR3_INT32 dfa2_T232[] = { 262, 257, -1, -1, 256, 266, 258, -1, 260, 259, 265, 260, -1, 260, 263, 258, -1, -1, -1, 260, -1, -1, -1, 261, 264, 126, -1, -1, 260, -1, 125, 254, 35, 260, 260, 260, 260 }; static const ANTLR3_INT32 dfa2_T233[] = { 665, -1, -1, 338, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 34, -1, -1, -1, -1, 643, 666, 337 }; static const ANTLR3_INT32 dfa2_T234[] = { 811, 810, -1, -1, 2276, 815, 1292, 205, 807, 2274, 814, 807, -1, 807, 812, 1292, -1, -1, -1, 807, -1, -1, -1, 808, 813, 854, -1, -1, 807, -1, 1237, 241, 204, 807, 807, 807, 807 }; static const ANTLR3_INT32 dfa2_T235[] = { 564, 563, -1, -1, 1340, 568, 914, 338, 917, 915, 567, 1345, -1, 560, 565, 914, -1, -1, -1, 560, -1, -1, -1, 561, 566, 34, -1, -1, 560, -1, 902, 903, 337, 560, 560, 560, 560 }; static const ANTLR3_INT32 dfa2_T236[] = { 575, 574, -1, -1, 573, 579, 922, -1, 925, 926, 578, 927, -1, 571, 576, 922, -1, -1, -1, 571, -1, -1, -1, 572, 577, 34, -1, -1, 571, -1, 580, 279, 35, 571, 571, 571, 571 }; static const ANTLR3_INT32 dfa2_T237[] = { 1432, 988, -1, -1, 1401, 1436, 1428, -1, 1430, 1429, 1435, 1430, -1, 1430, 1433, 1428, -1, -1, -1, 1430, -1, -1, -1, 1431, 1434, 34, -1, -1, 1430, -1, 973, 974, 35, 1430, 1430, 1430, 1430 }; static const ANTLR3_INT32 dfa2_T238[] = { 355, 354, -1, -1, 1039, 359, 370, 338, 351, 1037, 358, 351, -1, 351, 356, 370, -1, -1, -1, 351, -1, -1, -1, 352, 357, 34, -1, -1, 351, -1, 944, 945, 337, 351, 351, 351, 351 }; static const ANTLR3_INT32 dfa2_T239[] = { 564, 563, -1, -1, 562, 568, 914, -1, 917, 915, 567, 916, -1, 560, 565, 914, -1, -1, -1, 560, -1, -1, -1, 561, 566, 34, -1, -1, 560, -1, 278, 279, 35, 560, 560, 560, 560 }; static const ANTLR3_INT32 dfa2_T240[] = { 498, 497, -1, -1, 1298, 502, 874, 205, 876, 1300, 501, 1301, -1, 494, 499, 874, -1, -1, -1, 494, -1, -1, -1, 495, 500, 854, -1, -1, 494, -1, 853, 241, 204, 494, 494, 494, 494 }; static const ANTLR3_INT32 dfa2_T241[] = { 1403, 1402, -1, -1, 2367, 1407, 1891, 338, 1893, 3830, 1406, 2366, -1, 1399, 1404, 1891, -1, -1, -1, 1399, -1, -1, -1, 1400, 1405, 34, -1, -1, 1399, -1, 1882, 1883, 337, 1399, 1399, 1399, 1399 }; static const ANTLR3_INT32 dfa2_T242[] = { 575, 574, -1, -1, 573, 579, 922, -1, 925, 2740, 578, 2741, -1, 571, 576, 922, -1, -1, -1, 571, -1, -1, -1, 572, 577, 34, -1, -1, 571, -1, 580, 279, 35, 571, 571, 571, 571 }; static const ANTLR3_INT32 dfa2_T243[] = { 1403, 1402, -1, -1, 2367, 1407, 1891, 338, 1893, 1892, 1406, 2370, -1, 1399, 1404, 1891, -1, -1, -1, 1399, -1, -1, -1, 1400, 1405, 34, -1, -1, 1399, -1, 1882, 1883, 337, 1399, 1399, 1399, 1399 }; static const ANTLR3_INT32 dfa2_T244[] = { 1730, 810, -1, -1, 1727, 815, 1725, 205, 1728, 1726, 1732, 1724, -1, 1728, 2207, 1725, -1, -1, -1, 1728, 405, -1, -1, 1729, 1731, 854, -1, -1, 1728, 405, 1237, 1271, 204, 1728, 1728, 1728, 1728 }; static const ANTLR3_INT32 dfa2_T245[] = { 2268, 508, -1, -1, 2269, 506, 2264, -1, 2266, 2265, 2269, 2266, -1, 2266, 508, 2264, -1, -1, -1, 2266, 1104, -1, -1, 2267, 2269, 2263, -1, -1, 2266, 1104, 505, 2269, 35, 2266, 2266, 2266, 2266 }; static const ANTLR3_INT32 dfa2_T246[] = { 1403, 1402, -1, -1, 2367, 1407, 1891, 338, 1893, 1892, 1406, 3096, -1, 1399, 1404, 1891, -1, -1, -1, 1399, -1, -1, -1, 1400, 1405, 34, -1, -1, 1399, -1, 1882, 1883, 337, 1399, 1399, 1399, 1399 }; static const ANTLR3_INT32 dfa2_T247[] = { 498, 497, -1, -1, 1298, 502, 874, 205, 876, 2281, 501, 2282, -1, 494, 499, 874, -1, -1, -1, 494, -1, -1, -1, 495, 500, 854, -1, -1, 494, -1, 853, 241, 204, 494, 494, 494, 494 }; static const ANTLR3_INT32 dfa2_T248[] = { 749, 748, -1, -1, 1586, 753, 1144, 1588, 1147, 1145, 752, 2514, -1, 746, 750, 1144, -1, -1, -1, 746, -1, -1, -1, 747, 751, 854, -1, -1, 746, -1, 1583, 1584, 1585, 746, 746, 746, 746 }; static const ANTLR3_INT32 dfa2_T249[] = { 498, 497, -1, -1, 1298, 502, 874, 205, 876, 3060, 501, 3061, -1, 494, 499, 874, -1, -1, -1, 494, -1, -1, -1, 495, 500, 854, -1, -1, 494, -1, 853, 241, 204, 494, 494, 494, 494 }; static const ANTLR3_INT32 dfa2_T250[] = { 564, 563, -1, -1, 1340, 568, 914, 338, 917, 915, 567, 2313, -1, 560, 565, 914, -1, -1, -1, 560, -1, -1, -1, 561, 566, 34, -1, -1, 560, -1, 902, 903, 337, 560, 560, 560, 560 }; static const ANTLR3_INT32 dfa2_T251[] = { 749, 748, -1, -1, 1586, 753, 1144, 1588, 1147, 1145, 752, 1592, -1, 746, 750, 1144, -1, -1, -1, 746, -1, -1, -1, 747, 751, 854, -1, -1, 746, -1, 1583, 1584, 1585, 746, 746, 746, 746 }; static const ANTLR3_INT32 dfa2_T252[] = { 498, 497, -1, -1, 1298, 502, 874, 205, 876, 3596, 501, 1297, -1, 494, 499, 874, -1, -1, -1, 494, -1, -1, -1, 495, 500, 854, -1, -1, 494, -1, 853, 241, 204, 494, 494, 494, 494 }; static const ANTLR3_INT32 dfa2_T253[] = { 564, 563, -1, -1, 1340, 568, 914, 338, 917, 915, 567, 3072, -1, 560, 565, 914, -1, -1, -1, 560, -1, -1, -1, 561, 566, 34, -1, -1, 560, -1, 902, 903, 337, 560, 560, 560, 560 }; static const ANTLR3_INT32 dfa2_T254[] = { 465, 464, -1, -1, 459, 469, 787, -1, 462, 788, 468, 462, -1, 462, 466, 787, -1, -1, -1, 462, 754, -1, -1, 463, 467, 242, -1, -1, 462, -1, 458, 241, 35, 462, 462, 462, 462 }; static const ANTLR3_INT32 dfa2_T255[] = { 2123, 2122, -1, -1, 2121, 2127, 2604, -1, 2987, 2605, 2126, 2119, -1, 2119, 2124, 2604, -1, -1, -1, 2119, -1, -1, -1, 2120, 2125, 242, -1, -1, 2119, -1, 2128, 1661, 35, 2119, 2119, 2119, 2119 }; static const ANTLR3_INT32 dfa2_T256[] = { 1668, 1667, -1, -1, 2586, 1672, 2130, 1588, 2132, 2131, 1671, 3278, -1, 1665, 1669, 2130, -1, -1, -1, 1665, -1, -1, -1, 1666, 1670, 854, -1, -1, 1665, -1, 2587, 2588, 1585, 1665, 1665, 1665, 1665 }; static const ANTLR3_INT32 dfa2_T257[] = { 1967, 1966, -1, -1, 1965, 1971, 1961, -1, 1963, 1962, 1970, 1963, -1, 1963, 1968, 1961, -1, -1, -1, 1963, -1, -1, -1, 1964, 1969, 1050, -1, -1, 1963, -1, 1972, 1521, 35, 1963, 1963, 1963, 1963 }; static const ANTLR3_INT32 dfa2_T258[] = { 1668, 1667, -1, -1, 2586, 1672, 2130, 1588, 2132, 2131, 1671, 2591, -1, 1665, 1669, 2130, -1, -1, -1, 1665, -1, -1, -1, 1666, 1670, 854, -1, -1, 1665, -1, 2587, 2588, 1585, 1665, 1665, 1665, 1665 }; static const ANTLR3_INT32 dfa2_T259[] = { 1403, 1402, -1, -1, 2367, 1407, 1891, 338, 1893, 1892, 1406, 3605, -1, 1399, 1404, 1891, -1, -1, -1, 1399, -1, -1, -1, 1400, 1405, 34, -1, -1, 1399, -1, 1882, 1883, 337, 1399, 1399, 1399, 1399 }; static const ANTLR3_INT32 dfa2_T260[] = { 249, 248, -1, -1, 243, 253, 1278, -1, 855, 1279, 252, 246, -1, 246, 250, 1278, -1, -1, -1, 246, -1, -1, -1, 247, 251, 242, -1, -1, 246, -1, 240, 241, 35, 246, 246, 246, 246 }; static const ANTLR3_INT32 dfa2_T261[] = { 1135, 1134, -1, -1, 1133, 1139, 1129, -1, 1131, 1130, 1138, 1131, -1, 1131, 1136, 1129, -1, -1, -1, 1131, -1, -1, -1, 1132, 1137, 242, -1, -1, 1131, -1, 1140, 733, 35, 1131, 1131, 1131, 1131 }; static const ANTLR3_INT32 dfa2_T262[] = { 355, 354, -1, -1, 1039, 359, 674, 338, 676, 675, 358, 1038, -1, 351, 356, 674, -1, -1, -1, 351, -1, -1, -1, 352, 357, 34, -1, -1, 351, -1, 944, 945, 337, 351, 351, 351, 351 }; static const ANTLR3_INT32 dfa2_T263[] = { 749, 748, -1, -1, 1586, 753, 1144, 1588, 1147, 1145, 752, 3187, -1, 746, 750, 1144, -1, -1, -1, 746, -1, -1, -1, 747, 751, 854, -1, -1, 746, -1, 1583, 1584, 1585, 746, 746, 746, 746 }; static const ANTLR3_INT32 dfa2_T264[] = { 3205, 1576, -1, -1, 3204, 1581, 3211, 205, 3216, 3212, 3207, 3213, -1, 3216, 1578, 3211, -1, -1, -1, 3216, 1080, -1, -1, 3214, 3215, 854, -1, -1, 3216, 1080, 2477, 2830, 204, 3216, 3216, 3216, 3216 }; static const ANTLR3_INT32 dfa2_T265[] = { 1135, 1134, -1, -1, 2052, 1139, 1608, 1588, 1611, 2904, 1138, 2905, -1, 1131, 1136, 1608, -1, -1, -1, 1131, -1, -1, -1, 1132, 1137, 854, -1, -1, 1131, -1, 2051, 1584, 1585, 1131, 1131, 1131, 1131 }; static const ANTLR3_INT32 dfa2_T266[] = { 1909, 1453, -1, -1, 1872, 1913, 1905, -1, 1907, 1906, 1912, 1907, -1, 1907, 1910, 1905, -1, -1, -1, 1907, -1, -1, -1, 1908, 1911, 34, -1, -1, 1907, -1, 1419, 974, 35, 1907, 1907, 1907, 1907 }; static const ANTLR3_INT32 dfa2_T267[] = { 1668, 1667, -1, -1, 2586, 1672, 2130, 1588, 2132, 2131, 1671, 3703, -1, 1665, 1669, 2130, -1, -1, -1, 1665, -1, -1, -1, 1666, 1670, 854, -1, -1, 1665, -1, 2587, 2588, 1585, 1665, 1665, 1665, 1665 }; static const ANTLR3_INT32 dfa2_T268[] = { 2717, 508, -1, -1, 2717, 506, 2715, -1, 2718, 2716, 2717, 2714, -1, 2718, 508, 2715, -1, -1, -1, 2718, 1080, -1, -1, 2719, 2717, 507, -1, -1, 2718, 1080, 505, 2717, 35, 2718, 2718, 2718, 2718 }; static const ANTLR3_INT32 dfa2_T269[] = { 1135, 1134, -1, -1, 2052, 1139, 1608, 1588, 1611, 2056, 1138, 2057, -1, 1131, 1136, 1608, -1, -1, -1, 1131, -1, -1, -1, 1132, 1137, 854, -1, -1, 1131, -1, 2051, 1584, 1585, 1131, 1131, 1131, 1131 }; static const ANTLR3_INT32 dfa2_T270[] = { 811, 810, -1, -1, 809, 815, 1775, -1, 1777, 1778, 814, 1779, -1, 807, 812, 1775, -1, -1, -1, 807, -1, -1, -1, 808, 813, 242, -1, -1, 807, -1, 458, 241, 35, 807, 807, 807, 807 }; static const ANTLR3_INT32 dfa2_T271[] = { 2473, 1134, -1, -1, 2472, 1139, 2468, 205, 2478, 2469, 2476, 2470, -1, 2478, 2474, 2468, -1, -1, -1, 2478, 405, -1, -1, 2471, 2475, 854, -1, -1, 2478, 405, 2477, 2009, 204, 2478, 2478, 2478, 2478 }; static const ANTLR3_INT32 dfa2_T272[] = { 3411, 2504, -1, -1, 3410, 2509, 3406, 205, 3414, 3407, 3413, 3408, -1, 3414, 2506, 3406, -1, -1, -1, 3414, 1080, -1, -1, 3409, 3412, 854, -1, -1, 3414, 1080, 3151, 3123, 204, 3414, 3414, 3414, 3414 }; static const ANTLR3_INT32 dfa2_T273[] = { 749, 748, -1, -1, 1586, 753, 1144, 1588, 1147, 1145, 752, 1587, -1, 746, 750, 1144, -1, -1, -1, 746, -1, -1, -1, 747, 751, 854, -1, -1, 746, -1, 1583, 1584, 1585, 746, 746, 746, 746 }; static const ANTLR3_INT32 dfa2_T274[] = { 811, 810, -1, -1, 809, 815, 1775, -1, 1777, 3367, 814, 3368, -1, 807, 812, 1775, -1, -1, -1, 807, -1, -1, -1, 808, 813, 242, -1, -1, 807, -1, 458, 241, 35, 807, 807, 807, 807 }; static const ANTLR3_INT32 dfa2_T275[] = { 811, 810, -1, -1, 809, 815, 1775, -1, 1777, 2710, 814, 2711, -1, 807, 812, 1775, -1, -1, -1, 807, -1, -1, -1, 808, 813, 242, -1, -1, 807, -1, 458, 241, 35, 807, 807, 807, 807 }; static const ANTLR3_INT32 dfa2_T276[] = { 2123, 2122, -1, -1, 2985, 2127, 2604, 1588, 2606, 3810, 2126, 3811, -1, 2119, 2124, 2604, -1, -1, -1, 2119, -1, -1, -1, 2120, 2125, 854, -1, -1, 2119, -1, 2986, 2588, 1585, 2119, 2119, 2119, 2119 }; static const ANTLR3_INT32 dfa2_T277[] = { 3197, -1, 2519 }; static const ANTLR3_INT32 dfa2_T278[] = { 1414, 1413, -1, -1, 1412, 1418, 1408, -1, 1410, 1409, 1417, 1410, -1, 1410, 1415, 1408, -1, -1, -1, 1410, -1, -1, -1, 1411, 1416, 34, -1, -1, 1410, -1, 1419, 974, 35, 1410, 1410, 1410, 1410 }; static const ANTLR3_INT32 dfa2_T279[] = { 2123, 2122, -1, -1, 2985, 2127, 2604, 1588, 2606, 2988, 2126, 2989, -1, 2119, 2124, 2604, -1, -1, -1, 2119, -1, -1, -1, 2120, 2125, 854, -1, -1, 2119, -1, 2986, 2588, 1585, 2119, 2119, 2119, 2119 }; static const ANTLR3_INT32 dfa2_T280[] = { 1668, 1667, -1, -1, 2586, 1672, 2130, 1588, 2132, 2131, 1671, 2585, -1, 1665, 1669, 2130, -1, -1, -1, 1665, -1, -1, -1, 1666, 1670, 854, -1, -1, 1665, -1, 2587, 2588, 1585, 1665, 1665, 1665, 1665 }; static const ANTLR3_INT32 dfa2_T281[] = { 2123, 2122, -1, -1, 2985, 2127, 2604, 1588, 2606, 3551, 2126, 3552, -1, 2119, 2124, 2604, -1, -1, -1, 2119, -1, -1, -1, 2120, 2125, 854, -1, -1, 2119, -1, 2986, 2588, 1585, 2119, 2119, 2119, 2119 }; static const ANTLR3_INT32 dfa2_T282[] = { 3472, -1, 3193 }; static const ANTLR3_INT32 dfa2_T283[] = { 3475, -1, 3196 }; static const ANTLR3_INT32 dfa2_T284[] = { 1135, 1134, -1, -1, 2052, 1139, 1608, 1588, 1611, 3483, 1138, 3484, -1, 1131, 1136, 1608, -1, -1, -1, 1131, -1, -1, -1, 1132, 1137, 854, -1, -1, 1131, -1, 2051, 1584, 1585, 1131, 1131, 1131, 1131 }; static const ANTLR3_INT32 dfa2_T285[] = { 193, 89, -1, -1, 108, 197, 189, 205, 191, 395, 196, 191, -1, 191, 194, 189, -1, -1, -1, 191, -1, -1, -1, 192, 195, 694, -1, -1, 191, -1, 693, 108, 204, 191, 191, 191, 191 }; static const ANTLR3_INT32 dfa2_T286[] = { 2123, 2122, -1, -1, 2985, 2127, 2604, 1588, 2606, 3881, 2126, 2984, -1, 2119, 2124, 2604, -1, -1, -1, 2119, -1, -1, -1, 2120, 2125, 854, -1, -1, 2119, -1, 2986, 2588, 1585, 2119, 2119, 2119, 2119 }; static const ANTLR3_INT32 dfa2_T287[] = { 641, -1, -1, -1, 956, 952, 957, 962, -1, 957, -1, 957, 954, 956, -1, -1, -1, 957, -1, -1, -1, 958, 959, 34, -1, -1, 957, -1, 643, 666, 951, 957, 957, 957, 957 }; static const ANTLR3_INT32 dfa2_T288[] = { 249, 248, -1, -1, 243, 253, 516, -1, 518, 517, 252, 515, -1, 246, 250, 516, -1, -1, -1, 246, -1, -1, -1, 247, 251, 242, -1, -1, 246, -1, 240, 241, 35, 246, 246, 246, 246 }; static const ANTLR3_INT32 dfa2_T289[] = { 3129, 2019, -1, -1, 3128, 2024, 3124, -1, 3132, 3125, 3131, 3126, -1, 3132, 2021, 3124, -1, -1, -1, 3132, 1080, -1, -1, 3127, 3130, 242, -1, -1, 3132, 1080, 2025, 3123, 35, 3132, 3132, 3132, 3132 }; static const ANTLR3_INT32 dfa2_T290[] = { 3787, -1, 3661 }; static const ANTLR3_INT32 dfa2_T291[] = { 3789, -1, 3663 }; static const ANTLR3_INT32 dfa2_T292[] = { 2654, 810, 2092, -1, 2653, 815, 2912, 2091, 2917, 2913, 2656, 2914, 2093, 2917, 812, 2912, -1, -1, -1, 2917, 1080, -1, -1, 2915, 2916, 242, -1, -1, 2917, 1080, 458, 2245, 2090, 2917, 2917, 2917, 2917 }; static const ANTLR3_INT32 dfa2_T293[] = { 508, 508, -1, -1, 508, 506, 2238, -1, 1752, 2239, 508, 511, -1, 511, 508, 2238, -1, -1, -1, 511, -1, -1, -1, 512, 508, 507, -1, -1, 511, -1, 505, 508, 35, 511, 511, 511, 511 }; static const ANTLR3_INT32 dfa2_T294[] = { 1135, 1134, -1, -1, 2052, 1139, 1608, 1588, 1611, 3792, 1138, 2053, -1, 1131, 1136, 1608, -1, -1, -1, 1131, -1, -1, -1, 1132, 1137, 854, -1, -1, 1131, -1, 2051, 1584, 1585, 1131, 1131, 1131, 1131 }; static const ANTLR3_INT32 dfa2_T295[] = { 3044, 3043, -1, -1, 3042, 3048, 3038, -1, 3040, 3039, 3047, 3040, -1, 3040, 3045, 3038, -1, -1, -1, 3040, -1, -1, -1, 3041, 3046, 2237, -1, -1, 3040, -1, 2690, 2236, 35, 3040, 3040, 3040, 3040 }; static const ANTLR3_INT32 dfa2_T296[] = { 1158, 760, -1, -1, 1122, 1162, 1154, -1, 1156, 1155, 1161, 1156, -1, 1156, 1159, 1154, -1, -1, -1, 1156, -1, -1, -1, 1157, 1160, 242, -1, -1, 1156, -1, 732, 733, 35, 1156, 1156, 1156, 1156 }; static const ANTLR3_INT32 dfa2_T297[] = { 317, 316, -1, -1, 315, 321, 311, -1, 313, 312, 320, 313, -1, 313, 318, 311, -1, -1, -1, 313, -1, -1, -1, 314, 319, 65, -1, -1, 313, -1, 322, 139, 35, 313, 313, 313, 313 }; static const ANTLR3_INT32 dfa2_T298[] = { 2955, 2111, -1, -1, 2954, 2116, 3236, 403, 3241, 3237, 2956, 3238, -1, 3241, 2113, 3236, -1, -1, -1, 3241, 405, -1, -1, 3239, 3240, 854, -1, -1, 3241, 405, 2927, 2928, 402, 3241, 3241, 3241, 3241 }; static const ANTLR3_INT32 dfa2_T299[] = { 1668, 1667, -1, -1, 1662, 1672, 2970, -1, 2589, 2971, 1671, 2129, -1, 1665, 1669, 2970, -1, -1, -1, 1665, -1, -1, -1, 1666, 1670, 242, -1, -1, 1665, -1, 1660, 1661, 35, 1665, 1665, 1665, 1665 }; static const ANTLR3_INT32 dfa2_T300[] = { 3778, 2184, -1, -1, 3777, 2189, 3773, -1, 3781, 3774, 3780, 3775, -1, 3781, 2186, 3773, -1, -1, -1, 3781, 1080, -1, -1, 3776, 3779, 242, -1, -1, 3781, 1080, 1716, 3435, 35, 3781, 3781, 3781, 3781 }; static const ANTLR3_INT32 dfa2_T301[] = { 3696, 3271, -1, -1, 3695, 3276, 3691, 205, 3699, 3692, 3698, 3693, -1, 3699, 3800, 3691, -1, -1, -1, 3699, 405, -1, -1, 3694, 3697, 854, -1, -1, 3699, 405, 3530, 2928, 204, 3699, 3699, 3699, 3699 }; static const ANTLR3_INT32 dfa2_T302[] = { 993, 988, -1, -1, 987, 997, 989, -1, 991, 990, 996, 991, -1, 991, 994, 989, -1, -1, -1, 991, -1, -1, -1, 992, 995, 65, -1, -1, 991, -1, 656, 657, 35, 991, 991, 991, 991 }; static const ANTLR3_INT32 dfa2_T303[] = { 2230, 2229, -1, -1, 2228, 2234, 2224, -1, 2226, 2225, 2233, 2226, -1, 2226, 2231, 2224, -1, -1, -1, 2226, -1, -1, -1, 2227, 2232, 2237, -1, -1, 2226, -1, 2235, 2236, 35, 2226, 2226, 2226, 2226 }; static const ANTLR3_INT32 dfa2_T304[] = { 249, 248, -1, -1, 852, 253, 516, 205, 518, 517, 252, 851, -1, 246, 250, 516, -1, -1, -1, 246, -1, -1, -1, 247, 251, 854, -1, -1, 246, -1, 853, 241, 204, 246, 246, 246, 246 }; static const ANTLR3_INT32 dfa2_T305[] = { 120, 115, -1, -1, 114, 124, 116, -1, 118, 117, 123, 118, -1, 118, 121, 116, -1, -1, -1, 118, -1, -1, -1, 119, 122, 126, -1, -1, 118, -1, 125, 254, 35, 118, 118, 118, 118 }; static const ANTLR3_INT32 dfa2_T306[] = { 811, 810, -1, -1, 2276, 815, 1775, 205, 1777, 1776, 814, 2279, -1, 807, 812, 1775, -1, -1, -1, 807, -1, -1, -1, 808, 813, 854, -1, -1, 807, -1, 1237, 241, 204, 807, 807, 807, 807 }; static const ANTLR3_INT32 dfa2_T307[] = { 285, 132, -1, -1, 284, 289, 280, -1, 282, 281, 288, 282, -1, 282, 286, 280, -1, -1, -1, 282, -1, -1, -1, 283, 287, 34, -1, -1, 282, -1, 278, 279, 35, 282, 282, 282, 282 }; static const ANTLR3_INT32 dfa2_T308[] = { 355, 354, -1, -1, 353, 359, 370, -1, 351, 1043, 358, 351, -1, 351, 356, 370, -1, -1, -1, 351, -1, -1, -1, 352, 357, 34, -1, -1, 351, -1, 154, 66, 35, 351, 351, 351, 351 }; static const ANTLR3_INT32 dfa2_T309[] = { 355, 354, -1, -1, 353, 359, 370, -1, 351, 2802, 358, 351, -1, 351, 356, 370, -1, -1, -1, 351, -1, -1, -1, 352, 357, 34, -1, -1, 351, -1, 154, 66, 35, 351, 351, 351, 351 }; static const ANTLR3_INT32 dfa2_T310[] = { 465, 464, -1, -1, 459, 469, 503, -1, 462, 504, 468, 462, -1, 462, 466, 503, -1, -1, -1, 462, -1, -1, -1, 463, 467, 242, -1, -1, 462, -1, 458, 241, 35, 462, 462, 462, 462 }; static const ANTLR3_INT32 dfa2_T311[] = { 1577, 1576, -1, -1, 1575, 1581, 2908, -1, 2548, 2909, 1580, 1573, -1, 1573, 1578, 2908, -1, -1, -1, 1573, -1, -1, -1, 1574, 1579, 242, -1, -1, 1573, -1, 1140, 733, 35, 1573, 1573, 1573, 1573 }; static const ANTLR3_INT32 dfa2_T312[] = { 221, 436, -1, -1, 435, 228, 437, -1, 796, 438, 227, 219, -1, 219, 225, 437, -1, -1, -1, 219, -1, -1, -1, 220, 226, 230, -1, -1, 219, -1, 229, 441, 35, 219, 219, 219, 219 }; static const ANTLR3_INT32 dfa2_T313[] = { 811, 810, -1, -1, 2276, 815, 1775, 205, 1777, 1776, 814, 3058, -1, 807, 812, 1775, -1, -1, -1, 807, -1, -1, -1, 808, 813, 854, -1, -1, 807, -1, 1237, 241, 204, 807, 807, 807, 807 }; static const ANTLR3_INT32 dfa2_T314[] = { 355, 354, -1, -1, 353, 359, 370, -1, 351, 1945, 358, 351, -1, 351, 356, 370, -1, -1, -1, 351, -1, -1, -1, 352, 357, 34, -1, -1, 351, -1, 154, 66, 35, 351, 351, 351, 351 }; static const ANTLR3_INT32 dfa2_T315[] = { 811, 810, -1, -1, 2276, 815, 1775, 205, 1777, 1776, 814, 3594, -1, 807, 812, 1775, -1, -1, -1, 807, -1, -1, -1, 808, 813, 854, -1, -1, 807, -1, 1237, 241, 204, 807, 807, 807, 807 }; static const ANTLR3_INT32 dfa2_T316[] = { 1487, 1486, -1, -1, 1485, 1491, 1481, -1, 1483, 1482, 1490, 1483, -1, 1483, 1488, 1481, -1, -1, -1, 1483, -1, -1, -1, 1484, 1489, 34, -1, -1, 1483, -1, 1492, 1030, 35, 1483, 1483, 1483, 1483 }; static const ANTLR3_INT32 dfa2_T317[] = { 1075, 89, -1, -1, 1079, 197, 1071, 205, 1078, 1072, 1077, 1073, -1, 1078, 194, 1071, -1, -1, -1, 1078, 1080, -1, -1, 1074, 1076, 694, -1, -1, 1078, 1080, 693, 1079, 204, 1078, 1078, 1078, 1078 }; static const ANTLR3_INT32 dfa2_T318[] = { 811, 810, -1, -1, 2276, 815, 1775, 205, 1777, 1776, 814, 2275, -1, 807, 812, 1775, -1, -1, -1, 807, -1, -1, -1, 808, 813, 854, -1, -1, 807, -1, 1237, 241, 204, 807, 807, 807, 807 }; static const ANTLR3_INT32 dfa2_T319[] = { 811, 810, -1, -1, 809, 815, 832, -1, 807, 1744, 814, 807, -1, 807, 812, 832, -1, -1, -1, 807, -1, -1, -1, 808, 813, 242, -1, -1, 807, -1, 458, 241, 35, 807, 807, 807, 807 }; static const ANTLR3_INT32 dfa2_T320[] = { 295, 294, -1, -1, 904, 299, 584, 338, 587, 585, 298, 905, -1, 292, 296, 584, -1, -1, -1, 292, -1, -1, -1, 293, 297, 34, -1, -1, 292, -1, 902, 903, 337, 292, 292, 292, 292 }; static const ANTLR3_INT32 dfa2_T321[] = { 596, 305, -1, -1, 562, 600, 592, -1, 594, 593, 599, 594, -1, 594, 597, 592, -1, -1, -1, 594, -1, -1, -1, 595, 598, 34, -1, -1, 594, -1, 278, 279, 35, 594, 594, 594, 594 }; static const ANTLR3_INT32 dfa2_T322[] = { 749, 748, -1, -1, 738, 753, 1144, -1, 1147, 1148, 752, 1149, -1, 746, 750, 1144, -1, -1, -1, 746, -1, -1, -1, 747, 751, 242, -1, -1, 746, -1, 732, 733, 35, 746, 746, 746, 746 }; static const ANTLR3_INT32 dfa2_T323[] = { 1124, 1123, -1, -1, 1122, 1128, 2526, -1, 2046, 2527, 1127, 1602, -1, 1120, 1125, 2526, -1, -1, -1, 1120, -1, -1, -1, 1121, 1126, 242, -1, -1, 1120, -1, 732, 733, 35, 1120, 1120, 1120, 1120 }; static const ANTLR3_INT32 dfa2_T324[] = { 1203, -1, -1, -1, 1643, 1639, 1644, 2842, -1, 1644, -1, 1644, 1641, 2841, -1, -1, -1, 1644, -1, -1, -1, 1645, 1646, 242, -1, -1, 1644, -1, 1205, 1228, 1638, 1644, 1644, 1644, 1644 }; static const ANTLR3_INT32 dfa2_T325[] = { 1203, -1, -1, -1, 1643, 1639, 1644, 3210, -1, 1644, -1, 1644, 1641, 3209, -1, -1, -1, 1644, -1, -1, -1, 1645, 1646, 242, -1, -1, 1644, -1, 1205, 1228, 1638, 1644, 1644, 1644, 1644 }; static const ANTLR3_INT32 dfa2_T326[] = { 1203, -1, -1, -1, 1643, 1639, 1644, 3533, -1, 1644, -1, 1644, 1641, 3532, -1, -1, -1, 1644, -1, -1, -1, 1645, 1646, 242, -1, -1, 1644, -1, 1205, 1228, 1638, 1644, 1644, 1644, 1644 }; static const ANTLR3_INT32 dfa2_T327[] = { 1203, -1, -1, -1, 1643, 1639, 1644, 3717, -1, 1644, -1, 1644, 1641, 3716, -1, -1, -1, 1644, -1, -1, -1, 1645, 1646, 242, -1, -1, 1644, -1, 1205, 1228, 1638, 1644, 1644, 1644, 1644 }; static const ANTLR3_INT32 dfa2_T328[] = { 811, 810, -1, -1, 809, 815, 832, -1, 807, 2662, 814, 807, -1, 807, 812, 832, -1, -1, -1, 807, -1, -1, -1, 808, 813, 242, -1, -1, 807, -1, 458, 241, 35, 807, 807, 807, 807 }; static const ANTLR3_INT32 dfa2_T329[] = { 508, 508, -1, -1, 1306, 506, 882, 205, 884, 3371, 508, 881, -1, 511, 508, 882, -1, -1, -1, 511, -1, -1, -1, 512, 508, 1308, -1, -1, 511, -1, 1307, 508, 204, 511, 511, 511, 511 }; static const ANTLR3_INT32 dfa2_T330[] = { 82, 82, -1, -1, 82, 80, 83, -1, 85, 84, 82, 85, -1, 85, 82, 83, -1, -1, -1, 85, -1, -1, -1, 86, 82, 81, -1, -1, 85, -1, 79, 82, 35, 85, 85, 85, 85 }; static const ANTLR3_INT32 dfa2_T331[] = { 811, 810, -1, -1, 809, 815, 832, -1, 807, 3318, 814, 807, -1, 807, 812, 832, -1, -1, -1, 807, -1, -1, -1, 808, 813, 242, -1, -1, 807, -1, 458, 241, 35, 807, 807, 807, 807 }; static const ANTLR3_INT32 dfa2_T332[] = { 1553, 108, -1, -1, 1103, 106, 1554, -1, 1556, 1555, 1103, 1556, -1, 1556, 108, 1554, -1, -1, -1, 1556, 1104, -1, -1, 1557, 1103, 1102, -1, -1, 1556, 1104, 105, 1103, 35, 1556, 1556, 1556, 1556 }; static const ANTLR3_INT32 dfa2_T333[] = { 508, 508, -1, -1, 1748, 506, 1253, 1588, 1255, 1254, 508, 1754, -1, 511, 508, 1253, -1, -1, -1, 511, -1, -1, -1, 512, 508, 1751, -1, -1, 511, -1, 1749, 1750, 1585, 511, 511, 511, 511 }; static const ANTLR3_INT32 dfa2_T334[] = { 1124, 1123, -1, -1, 1122, 1128, 1600, -1, 1603, 1601, 1127, 1602, -1, 1120, 1125, 1600, -1, -1, -1, 1120, -1, -1, -1, 1121, 1126, 242, -1, -1, 1120, -1, 732, 733, 35, 1120, 1120, 1120, 1120 }; static const ANTLR3_INT32 dfa2_T335[] = { 3857, 3271, -1, -1, 3856, 3276, 3852, 205, 3860, 3853, 3859, 3854, -1, 3860, 3273, 3852, -1, -1, -1, 3860, 1080, -1, -1, 3855, 3858, 854, -1, -1, 3860, 1080, 3530, 3226, 204, 3860, 3860, 3860, 3860 }; static const ANTLR3_INT32 dfa2_T336[] = { 749, 748, -1, -1, 738, 753, 1144, -1, 1147, 2033, 752, 2034, -1, 746, 750, 1144, -1, -1, -1, 746, -1, -1, -1, 747, 751, 242, -1, -1, 746, -1, 732, 733, 35, 746, 746, 746, 746 }; static const ANTLR3_INT32 dfa2_T337[] = { 1655, 1208, -1, -1, 1662, 1659, 1651, -1, 1653, 1652, 1658, 1653, -1, 1653, 1656, 1651, -1, -1, -1, 1653, -1, -1, -1, 1654, 1657, 242, -1, -1, 1653, -1, 1660, 1661, 35, 1653, 1653, 1653, 1653 }; static const ANTLR3_INT32 dfa2_T338[] = { 1287, 862, -1, -1, 809, 1291, 1283, -1, 1285, 1284, 1290, 1285, -1, 1285, 1288, 1283, -1, -1, -1, 1285, -1, -1, -1, 1286, 1289, 242, -1, -1, 1285, -1, 458, 241, 35, 1285, 1285, 1285, 1285 }; static const ANTLR3_INT32 dfa2_T339[] = { 981, 980, -1, -1, 1881, 985, 1421, 338, 1423, 1422, 984, 1880, -1, 978, 982, 1421, -1, -1, -1, 978, -1, -1, -1, 979, 983, 34, -1, -1, 978, -1, 1882, 1883, 337, 978, 978, 978, 978 }; static const ANTLR3_INT32 dfa2_T340[] = { 749, 748, -1, -1, 738, 753, 1144, -1, 1147, 2886, 752, 2887, -1, 746, 750, 1144, -1, -1, -1, 746, -1, -1, -1, 747, 751, 242, -1, -1, 746, -1, 732, 733, 35, 746, 746, 746, 746 }; static const ANTLR3_INT32 dfa2_T341[] = { 508, 508, -1, -1, 1748, 506, 1253, 1588, 1255, 1254, 508, 3357, -1, 511, 508, 1253, -1, -1, -1, 511, -1, -1, -1, 512, 508, 1751, -1, -1, 511, -1, 1749, 1750, 1585, 511, 511, 511, 511 }; static const ANTLR3_INT32 dfa2_T342[] = { 2762, 2761, -1, -1, 2760, 2766, 2756, -1, 2758, 2757, 2765, 2758, -1, 2758, 2763, 2756, -1, -1, -1, 2758, -1, -1, -1, 2759, 2764, 34, -1, -1, 2758, -1, 2359, 974, 35, 2758, 2758, 2758, 2758 }; static const ANTLR3_INT32 dfa2_T343[] = { 508, 508, -1, -1, 1748, 506, 1253, 1588, 1255, 1254, 508, 2692, -1, 511, 508, 1253, -1, -1, -1, 511, -1, -1, -1, 512, 508, 1751, -1, -1, 511, -1, 1749, 1750, 1585, 511, 511, 511, 511 }; static const ANTLR3_INT32 dfa2_T344[] = { 3147, 2504, -1, -1, 3146, 2509, 3142, 205, 3152, 3143, 3150, 3144, -1, 3152, 3148, 3142, -1, -1, -1, 3152, 405, -1, -1, 3145, 3149, 854, -1, -1, 3152, 405, 3151, 2827, 204, 3152, 3152, 3152, 3152 }; static const ANTLR3_INT32 dfa2_T345[] = { 355, 354, -1, -1, 353, 359, 370, -1, 351, 1037, 358, 351, -1, 351, 356, 370, -1, -1, -1, 351, -1, -1, -1, 352, 357, 34, -1, -1, 351, -1, 154, 66, 35, 351, 351, 351, 351 }; static const ANTLR3_INT32 dfa2_T346[] = { 508, 508, -1, -1, 1748, 506, 1253, 1588, 1255, 1254, 508, 1747, -1, 511, 508, 1253, -1, -1, -1, 511, -1, -1, -1, 512, 508, 1751, -1, -1, 511, -1, 1749, 1750, 1585, 511, 511, 511, 511 }; static const ANTLR3_INT32 dfa2_T347[] = { 490, 482, -1, -1, 481, 488, 483, -1, 485, 484, 490, 485, -1, 485, 490, 483, -1, -1, -1, 485, -1, -1, -1, 486, 490, 489, -1, -1, 485, -1, 487, 490, -1, 485, 485, 485, 485 }; static const ANTLR3_INT32 dfa2_T348[] = { 2639, 2638, -1, -1, 2637, 2643, 2633, -1, 2635, 2634, 2642, 2635, -1, 2635, 2640, 2633, -1, -1, -1, 2635, -1, -1, -1, 2636, 2641, 242, -1, -1, 2635, -1, 2201, 1717, 35, 2635, 2635, 2635, 2635 }; static const ANTLR3_INT32 dfa2_T349[] = { 2092, -1, -1, -1, 2099, 793, 2101, 3257, -1, 2101, -1, 2101, -1, 3256, -1, -1, -1, 2101, -1, -1, -1, 2102, 2103, 242, -1, -1, 2101, -1, 1205, 1228, 792, 2101, 2101, 2101, 2101 }; static const ANTLR3_INT32 dfa2_T350[] = { 549, 268, -1, -1, 508, 553, 545, -1, 547, 546, 552, 547, -1, 547, 550, 545, -1, -1, -1, 547, -1, -1, -1, 548, 551, 507, -1, -1, 547, -1, 505, 508, 35, 547, 547, 547, 547 }; static const ANTLR3_INT32 dfa2_T351[] = { 2167, 2162, -1, -1, 2161, 2171, 2163, -1, 2165, 2164, 2170, 2165, -1, 2165, 2168, 2163, -1, -1, -1, 2165, -1, -1, -1, 2166, 2169, 230, -1, -1, 2165, -1, 1696, 1219, 35, 2165, 2165, 2165, 2165 }; static const ANTLR3_INT32 dfa2_T352[] = { 1414, 1413, -1, -1, 1412, 1418, 1899, -1, 2377, 1900, 1417, 1410, -1, 1410, 1415, 1899, -1, -1, -1, 1410, -1, -1, -1, 1411, 1416, 34, -1, -1, 1410, -1, 1419, 974, 35, 1410, 1410, 1410, 1410 }; static const ANTLR3_INT32 dfa2_T353[] = { 564, 563, -1, -1, 562, 568, 914, -1, 917, 1831, 567, 1832, -1, 560, 565, 914, -1, -1, -1, 560, -1, -1, -1, 561, 566, 34, -1, -1, 560, -1, 278, 279, 35, 560, 560, 560, 560 }; static const ANTLR3_INT32 dfa2_T354[] = { 3247, 2122, -1, -1, 3246, 2127, 3242, 205, 3252, 3243, 3250, 3244, -1, 3252, 3248, 3242, -1, -1, -1, 3252, 405, -1, -1, 3245, 3249, 854, -1, -1, 3252, 405, 3251, 2928, 204, 3252, 3252, 3252, 3252 }; static const ANTLR3_INT32 dfa2_T355[] = { 896, 895, 1383, -1, 894, 900, 2733, 338, 2735, 2734, 899, 2735, -1, 2735, 897, 2733, -1, -1, -1, 2735, -1, -1, -1, 2736, 2737, 34, -1, -1, 2735, -1, 1348, 903, 337, 2735, 2735, 2735, 2735 }; static const ANTLR3_INT32 dfa2_T356[] = { 564, 563, -1, -1, 562, 568, 914, -1, 917, 918, 567, 919, -1, 560, 565, 914, -1, -1, -1, 560, -1, -1, -1, 561, 566, 34, -1, -1, 560, -1, 278, 279, 35, 560, 560, 560, 560 }; static const ANTLR3_INT32 dfa2_T357[] = { 133, 132, -1, -1, 131, 137, 127, -1, 129, 128, 136, 129, -1, 129, 134, 127, -1, -1, -1, 129, -1, -1, -1, 130, 135, 65, -1, -1, 129, -1, 138, 139, 35, 129, 129, 129, 129 }; static const ANTLR3_INT32 dfa2_T358[] = { 811, 810, -1, -1, 1740, 815, 1245, 1588, 1247, 1246, 814, 1739, -1, 807, 812, 1245, -1, -1, -1, 807, -1, -1, -1, 808, 813, 854, -1, -1, 807, -1, 1630, 1631, 1585, 807, 807, 807, 807 }; static const ANTLR3_INT32 dfa2_T359[] = { 564, 563, -1, -1, 562, 568, 914, -1, 917, 2731, 567, 2732, -1, 560, 565, 914, -1, -1, -1, 560, -1, -1, -1, 561, 566, 34, -1, -1, 560, -1, 278, 279, 35, 560, 560, 560, 560 }; static const ANTLR3_INT32 dfa2_T360[] = { 3329, 2229, -1, -1, 3328, 2234, 3324, -1, 3332, 3325, 3331, 3326, -1, 3332, 2231, 3324, -1, -1, -1, 3332, 1080, -1, -1, 3327, 3330, 2237, -1, -1, 3332, 1080, 2235, 3323, 35, 3332, 3332, 3332, 3332 }; static const ANTLR3_INT32 dfa2_T361[] = { 405, -1, -1, -1, 405, -1, 713, 403, 715, 714, 405, 712, -1, 715, -1, 713, -1, -1, -1, 715, 405, -1, -1, 716, 405, -1, -1, -1, 715, 405, 407, 405, 711, 715, 715, 715, 715 }; static const ANTLR3_INT32 dfa2_T362[] = { 1577, 1576, -1, -1, 1575, 1581, 1571, -1, 1573, 1572, 1580, 1573, -1, 1573, 1578, 1571, -1, -1, -1, 1573, -1, -1, -1, 1574, 1579, 242, -1, -1, 1573, -1, 1140, 733, 35, 1573, 1573, 1573, 1573 }; static const ANTLR3_INT32 dfa2_T363[] = { 1874, 1873, 1383, -1, 1872, 1878, 3389, 338, 3391, 3390, 1877, 3391, -1, 3391, 1875, 3389, -1, -1, -1, 3391, -1, -1, -1, 3392, 3393, 34, -1, -1, 3391, -1, 2376, 1883, 337, 3391, 3391, 3391, 3391 }; static const ANTLR3_INT32 dfa2_T364[] = { 186, -1, -1, -1, -1, -1, 186 }; static const ANTLR3_INT32 dfa2_T365[] = { 187, -1, -1, -1, -1, -1, 187 }; static const ANTLR3_INT32 dfa2_T366[] = { 67, -1, -1, -1, -1, -1, 67 }; static const ANTLR3_INT32 dfa2_T367[] = { 2395, -1, -1, -1, -1, -1, 2395 }; static const ANTLR3_INT32 dfa2_T368[] = { 2631, -1, -1, -1, -1, -1, 2631 }; static const ANTLR3_INT32 dfa2_T369[] = { 1469, -1, -1, -1, -1, -1, 1469 }; static const ANTLR3_INT32 dfa2_T370[] = { 2178, -1, -1, -1, -1, -1, 2178 }; static const ANTLR3_INT32 dfa2_T371[] = { 215, -1, -1, -1, -1, -1, 215 }; static const ANTLR3_INT32 dfa2_T372[] = { 360, -1, -1, -1, -1, -1, 360 }; static const ANTLR3_INT32 dfa2_T373[] = { 521, -1, -1, -1, -1, -1, 521 }; static const ANTLR3_INT32 dfa2_T374[] = { 848, -1, -1, -1, -1, -1, 848 }; static const ANTLR3_INT32 dfa2_T375[] = { 670, -1, -1, -1, -1, -1, 670 }; static const ANTLR3_INT32 dfa2_T376[] = { 1927, -1, -1, -1, -1, -1, 1927 }; static const ANTLR3_INT32 dfa2_T377[] = { 822, -1, -1, -1, -1, -1, 822 }; static const ANTLR3_INT32 dfa2_T378[] = { 849, -1, -1, -1, -1, -1, 849 }; static const ANTLR3_INT32 dfa2_T379[] = { 2632, -1, -1, -1, -1, -1, 2632 }; static const ANTLR3_INT32 dfa2_T380[] = { 1233, -1, -1, -1, -1, -1, 1233 }; static const ANTLR3_INT32 dfa2_T381[] = { 1926, -1, -1, -1, -1, -1, 1926 }; static const ANTLR3_INT32 dfa2_T382[] = { 3005, -1, -1, -1, -1, -1, 3005 }; static const ANTLR3_INT32 dfa2_T383[] = { 401, 89, -1, -1, 396, 97, 397, 403, 404, 398, 401, 399, -1, 404, 99, 397, -1, -1, -1, 404, 405, -1, -1, 400, 401, 206, -1, -1, 404, 405, 202, 401, 402, 404, 404, 404, 404 }; static const ANTLR3_INT32 dfa2_T384[] = { 2123, 2122, -1, -1, 2121, 2127, 2117, -1, 2119, 3285, 2126, 2119, -1, 2119, 2124, 2117, -1, -1, -1, 2119, -1, -1, -1, 2120, 2125, 242, -1, -1, 2119, -1, 2128, 1661, 35, 2119, 2119, 2119, 2119 }; static const ANTLR3_INT32 dfa2_T385[] = { 1458, 1453, -1, -1, 1452, 1462, 1454, -1, 1456, 1455, 1461, 1456, -1, 1456, 1459, 1454, -1, -1, -1, 1456, -1, -1, -1, 1457, 1460, 65, -1, -1, 1456, -1, 1009, 657, 35, 1456, 1456, 1456, 1456 }; static const ANTLR3_INT32 dfa2_T386[] = { 108, 108, -1, -1, 108, 106, 1066, -1, 695, 1067, 108, 111, -1, 111, 108, 1066, -1, -1, -1, 111, -1, -1, -1, 112, 108, 107, -1, -1, 111, -1, 105, 108, 35, 111, 111, 111, 111 }; static const ANTLR3_INT32 dfa2_T387[] = { 2112, 2111, -1, -1, 2110, 2116, 2596, -1, 2978, 2597, 2115, 2108, -1, 2108, 2113, 2596, -1, -1, -1, 2108, -1, -1, -1, 2109, 2114, 242, -1, -1, 2108, -1, 1660, 1661, 35, 2108, 2108, 2108, 2108 }; static const ANTLR3_INT32 dfa2_T388[] = { 1874, 1873, -1, -1, 1872, 1878, 1868, -1, 1870, 1869, 1877, 1870, -1, 1870, 1875, 1868, -1, -1, -1, 1870, -1, -1, -1, 1871, 1876, 34, -1, -1, 1870, -1, 1419, 974, 35, 1870, 1870, 1870, 1870 }; static const ANTLR3_INT32 dfa2_T389[] = { 2092, -1, -1, -1, 2099, 793, 2101, 2100, -1, 2101, -1, 2101, -1, 2099, -1, -1, -1, 2101, -1, -1, -1, 2102, 2103, 242, -1, -1, 2101, -1, 1205, 1228, 792, 2101, 2101, 2101, 2101 }; static const ANTLR3_INT32 dfa2_T390[] = { 1124, 1123, -1, -1, 1122, 1128, 1118, -1, 1120, 1119, 1127, 1120, -1, 1120, 1125, 1118, -1, -1, -1, 1120, -1, -1, -1, 1121, 1126, 242, -1, -1, 1120, -1, 732, 733, 35, 1120, 1120, 1120, 1120 }; static const ANTLR3_INT32 dfa2_T391[] = { 811, 810, -1, -1, 809, 815, 832, -1, 807, 1738, 814, 807, -1, 807, 812, 832, -1, -1, -1, 807, -1, -1, -1, 808, 813, 242, -1, -1, 807, -1, 458, 241, 35, 807, 807, 807, 807 }; static const ANTLR3_INT32 dfa2_T392[] = { 2123, 2122, -1, -1, 2121, 2127, 2117, -1, 2119, 2118, 2126, 2119, -1, 2119, 2124, 2117, -1, -1, -1, 2119, -1, -1, -1, 2120, 2125, 242, -1, -1, 2119, -1, 2128, 1661, 35, 2119, 2119, 2119, 2119 }; static const ANTLR3_INT32 dfa2_T393[] = { 2654, 810, 2092, -1, 2653, 815, 2912, 1588, 2917, 2913, 2656, 2914, -1, 2917, 812, 2912, -1, -1, -1, 2917, 1080, -1, -1, 2915, 2916, 854, -1, -1, 2917, 1080, 1630, 3222, 1585, 2917, 2917, 2917, 2917 }; static const ANTLR3_INT32 dfa2_T394[] = { 1124, 1123, -1, -1, 2043, 1128, 1600, 1588, 1603, 2897, 1127, 2898, -1, 1120, 1125, 1600, -1, -1, -1, 1120, -1, -1, -1, 1121, 1126, 854, -1, -1, 1120, -1, 1583, 1584, 1585, 1120, 1120, 1120, 1120 }; static const ANTLR3_INT32 dfa2_T395[] = { 896, 895, 1383, -1, 894, 900, 2733, 1382, 2735, 2734, 899, 2735, 1384, 2735, 897, 2733, -1, -1, -1, 2735, -1, -1, -1, 2736, 2737, 34, -1, -1, 2735, -1, 580, 279, 1381, 2735, 2735, 2735, 2735 }; static const ANTLR3_INT32 dfa2_T396[] = { 1124, 1123, -1, -1, 2043, 1128, 1600, 1588, 1603, 2047, 1127, 2048, -1, 1120, 1125, 1600, -1, -1, -1, 1120, -1, -1, -1, 1121, 1126, 854, -1, -1, 1120, -1, 1583, 1584, 1585, 1120, 1120, 1120, 1120 }; static const ANTLR3_INT32 dfa2_T397[] = { 2006, 1123, -1, -1, 2005, 1128, 2461, 205, 2467, 2462, 2008, 2463, -1, 2467, 2465, 2461, -1, -1, -1, 2467, 405, -1, -1, 2464, 2466, 854, -1, -1, 2467, 405, 2011, 2009, 204, 2467, 2467, 2467, 2467 }; static const ANTLR3_INT32 dfa2_T398[] = { 108, 108, -1, -1, 108, 106, 390, -1, 392, 391, 108, 389, -1, 111, 108, 390, -1, -1, -1, 111, -1, -1, -1, 112, 108, 107, -1, -1, 111, -1, 105, 108, 35, 111, 111, 111, 111 }; static const ANTLR3_INT32 dfa2_T399[] = { 1414, 1413, -1, -1, 1412, 1418, 2781, -1, 2377, 2782, 1417, 1898, -1, 1410, 1415, 2781, -1, -1, -1, 1410, -1, -1, -1, 1411, 1416, 34, -1, -1, 1410, -1, 1419, 974, 35, 1410, 1410, 1410, 1410 }; static const ANTLR3_INT32 dfa2_T400[] = { 498, 497, -1, -1, 1298, 502, 874, 205, 876, 3369, 501, 873, -1, 494, 499, 874, -1, -1, -1, 494, -1, -1, -1, 495, 500, 854, -1, -1, 494, -1, 853, 241, 204, 494, 494, 494, 494 }; static const ANTLR3_INT32 dfa2_T401[] = { 2112, 2111, -1, -1, 2977, 2116, 2596, 1588, 2598, 3804, 2115, 3805, -1, 2108, 2113, 2596, -1, -1, -1, 2108, -1, -1, -1, 2109, 2114, 854, -1, -1, 2108, -1, 2587, 2588, 1585, 2108, 2108, 2108, 2108 }; static const ANTLR3_INT32 dfa2_T402[] = { 355, 354, -1, -1, 1039, 359, 674, 338, 676, 1943, 358, 1944, -1, 351, 356, 674, -1, -1, -1, 351, -1, -1, -1, 352, 357, 34, -1, -1, 351, -1, 944, 945, 337, 351, 351, 351, 351 }; static const ANTLR3_INT32 dfa2_T403[] = { 1403, 1402, -1, -1, 1401, 1407, 1397, -1, 1399, 1398, 1406, 1399, -1, 1399, 1404, 1397, -1, -1, -1, 1399, -1, -1, -1, 1400, 1405, 34, -1, -1, 1399, -1, 973, 974, 35, 1399, 1399, 1399, 1399 }; static const ANTLR3_INT32 dfa2_T404[] = { 2112, 2111, -1, -1, 2977, 2116, 2596, 1588, 2598, 2979, 2115, 2980, -1, 2108, 2113, 2596, -1, -1, -1, 2108, -1, -1, -1, 2109, 2114, 854, -1, -1, 2108, -1, 2587, 2588, 1585, 2108, 2108, 2108, 2108 }; static const ANTLR3_INT32 dfa2_T405[] = { 2112, 2111, -1, -1, 2977, 2116, 2596, 1588, 2598, 3544, 2115, 3545, -1, 2108, 2113, 2596, -1, -1, -1, 2108, -1, -1, -1, 2109, 2114, 854, -1, -1, 2108, -1, 2587, 2588, 1585, 2108, 2108, 2108, 2108 }; static const ANTLR3_INT32 dfa2_T406[] = { 355, 354, -1, -1, 1039, 359, 674, 338, 676, 1041, 358, 1042, -1, 351, 356, 674, -1, -1, -1, 351, -1, -1, -1, 352, 357, 34, -1, -1, 351, -1, 944, 945, 337, 351, 351, 351, 351 }; static const ANTLR3_INT32 dfa2_T407[] = { 82, 82, -1, -1, 82, 80, 682, -1, 684, 683, 82, 681, -1, 85, 82, 682, -1, -1, -1, 85, -1, -1, -1, 86, 82, 81, -1, -1, 85, -1, 79, 82, 35, 85, 85, 85, 85 }; static const ANTLR3_INT32 dfa2_T408[] = { 575, 574, -1, -1, 1349, 579, 922, 338, 925, 3376, 578, 924, -1, 571, 576, 922, -1, -1, -1, 571, -1, -1, -1, 572, 577, 34, -1, -1, 571, -1, 1348, 903, 337, 571, 571, 571, 571 }; static const ANTLR3_INT32 dfa2_T409[] = { 1124, 1123, -1, -1, 2043, 1128, 1600, 1588, 1603, 3477, 1127, 3478, -1, 1120, 1125, 1600, -1, -1, -1, 1120, -1, -1, -1, 1121, 1126, 854, -1, -1, 1120, -1, 1583, 1584, 1585, 1120, 1120, 1120, 1120 }; static const ANTLR3_INT32 dfa2_T410[] = { 295, 294, -1, -1, 284, 299, 290, -1, 292, 291, 298, 292, -1, 292, 296, 290, -1, -1, -1, 292, 57, -1, -1, 293, 297, 34, -1, -1, 292, -1, 278, 279, 35, 292, 292, 292, 292 }; static const ANTLR3_INT32 dfa2_T411[] = { 108, 108, -1, -1, 692, 106, 390, 205, 392, 391, 108, 691, -1, 111, 108, 390, -1, -1, -1, 111, -1, -1, -1, 112, 108, 694, -1, -1, 111, -1, 693, 108, 204, 111, 111, 111, 111 }; static const ANTLR3_INT32 dfa2_T412[] = { 2112, 2111, -1, -1, 2977, 2116, 2596, 1588, 2598, 3880, 2115, 2976, -1, 2108, 2113, 2596, -1, -1, -1, 2108, -1, -1, -1, 2109, 2114, 854, -1, -1, 2108, -1, 2587, 2588, 1585, 2108, 2108, 2108, 2108 }; static const ANTLR3_INT32 dfa2_T413[] = { 355, 354, -1, -1, 1039, 359, 674, 338, 676, 2800, 358, 2801, -1, 351, 356, 674, -1, -1, -1, 351, -1, -1, -1, 352, 357, 34, -1, -1, 351, -1, 944, 945, 337, 351, 351, 351, 351 }; static const ANTLR3_INT32 dfa2_T414[] = { 355, 354, -1, -1, 1039, 359, 674, 338, 676, 3403, 358, 1038, -1, 351, 356, 674, -1, -1, -1, 351, -1, -1, -1, 352, 357, 34, -1, -1, 351, -1, 944, 945, 337, 351, 351, 351, 351 }; static const ANTLR3_INT32 dfa2_T415[] = { 1124, 1123, -1, -1, 2043, 1128, 1600, 1588, 1603, 3791, 1127, 2044, -1, 1120, 1125, 1600, -1, -1, -1, 1120, -1, -1, -1, 1121, 1126, 854, -1, -1, 1120, -1, 1583, 1584, 1585, 1120, 1120, 1120, 1120 }; static const ANTLR3_INT32 dfa2_T416[] = { 1414, 1413, -1, -1, 2375, 1418, 1899, 338, 1901, 3755, 1417, 1898, -1, 1410, 1415, 1899, -1, -1, -1, 1410, -1, -1, -1, 1411, 1416, 34, -1, -1, 1410, -1, 2376, 1883, 337, 1410, 1410, 1410, 1410 }; static const ANTLR3_INT32 dfa2_T417[] = { 1819, 1818, -1, -1, 1817, 1823, 1813, -1, 1815, 1814, 1822, 1815, -1, 1815, 1820, 1813, -1, -1, -1, 1815, -1, -1, -1, 1816, 1821, 34, -1, -1, 1815, -1, 1824, 1333, 35, 1815, 1815, 1815, 1815 }; static const ANTLR3_INT32 dfa2_T418[] = { 428, 427, -1, -1, 426, 432, 422, -1, 424, 423, 431, 424, -1, 424, 429, 422, -1, -1, -1, 424, -1, -1, -1, 425, 430, 230, -1, -1, 424, -1, 433, 434, 35, 424, 424, 424, 424 }; static const ANTLR3_INT32 dfa2_T419[] = { 2196, 2195, -1, -1, 2194, 2200, 2190, -1, 2192, 2191, 2199, 2192, -1, 2192, 2197, 2190, -1, -1, -1, 2192, -1, -1, -1, 2193, 2198, 242, -1, -1, 2192, -1, 2201, 1717, 35, 2192, 2192, 2192, 2192 }; static const ANTLR3_INT32 dfa2_T420[] = { 295, 294, -1, -1, 284, 299, 582, -1, 292, 583, 298, 292, -1, 292, 296, 582, -1, -1, -1, 292, -1, -1, -1, 293, 297, 34, -1, -1, 292, -1, 278, 279, 35, 292, 292, 292, 292 }; static const ANTLR3_INT32 dfa2_T421[] = { 355, 354, -1, -1, 1039, 359, 674, 338, 676, 675, 358, 1944, -1, 351, 356, 674, -1, -1, -1, 351, -1, -1, -1, 352, 357, 34, -1, -1, 351, -1, 944, 945, 337, 351, 351, 351, 351 }; static const ANTLR3_INT32 dfa2_T422[] = { 355, 354, -1, -1, 353, 359, 674, -1, 676, 675, 358, 673, -1, 351, 356, 674, -1, -1, -1, 351, -1, -1, -1, 352, 357, 34, -1, -1, 351, -1, 154, 66, 35, 351, 351, 351, 351 }; static const ANTLR3_INT32 dfa2_T423[] = { 2006, 1123, 1203, -1, 2005, 1128, 2001, 2458, 2013, 2002, 2008, 2003, -1, 2013, 2457, 2001, -1, -1, -1, 2013, 405, -1, -1, 2004, 2007, 854, -1, -1, 2013, 405, 1583, 2455, 2456, 2013, 2013, 2013, 2013 }; static const ANTLR3_INT32 dfa2_T424[] = { 1668, 1667, -1, -1, 1662, 1672, 2130, -1, 2132, 2131, 1671, 2129, -1, 1665, 1669, 2130, -1, -1, -1, 1665, -1, -1, -1, 1666, 1670, 242, -1, -1, 1665, -1, 1660, 1661, 35, 1665, 1665, 1665, 1665 }; static const ANTLR3_INT32 dfa2_T425[] = { 537, 257, -1, -1, 496, 541, 533, -1, 535, 534, 540, 535, -1, 535, 538, 533, -1, -1, -1, 535, -1, -1, -1, 536, 539, 242, -1, -1, 535, -1, 240, 241, 35, 535, 535, 535, 535 }; static const ANTLR3_INT32 dfa2_T426[] = { 355, 354, -1, -1, 1039, 359, 674, 338, 676, 675, 358, 1042, -1, 351, 356, 674, -1, -1, -1, 351, -1, -1, -1, 352, 357, 34, -1, -1, 351, -1, 944, 945, 337, 351, 351, 351, 351 }; static const ANTLR3_INT32 dfa2_T427[] = { 401, 89, -1, -1, 396, 97, 397, 205, 404, 398, 401, 399, -1, 404, 709, 397, -1, -1, -1, 404, 405, -1, -1, 400, 401, 206, -1, -1, 404, 405, 202, 401, 204, 404, 404, 404, 404 }; static const ANTLR3_INT32 dfa2_T428[] = { 193, 89, -1, -1, 108, 197, 189, -1, 191, 395, 196, 191, -1, 191, 194, 189, -1, -1, -1, 191, -1, -1, -1, 192, 195, 107, -1, -1, 191, -1, 105, 108, 35, 191, 191, 191, 191 }; static const ANTLR3_INT32 dfa2_T429[] = { 355, 354, -1, -1, 1039, 359, 674, 338, 676, 675, 358, 2801, -1, 351, 356, 674, -1, -1, -1, 351, -1, -1, -1, 352, 357, 34, -1, -1, 351, -1, 944, 945, 337, 351, 351, 351, 351 }; static const ANTLR3_INT32 dfa2_T430[] = { 295, 294, -1, -1, 284, 299, 1335, -1, 907, 1336, 298, 292, -1, 292, 296, 1335, -1, -1, -1, 292, -1, -1, -1, 293, 297, 34, -1, -1, 292, -1, 278, 279, 35, 292, 292, 292, 292 }; static const ANTLR3_INT32 dfa2_T431[] = { 981, 980, -1, -1, 975, 985, 2360, -1, 1884, 2361, 984, 1420, -1, 978, 982, 2360, -1, -1, -1, 978, -1, -1, -1, 979, 983, 34, -1, -1, 978, -1, 973, 974, 35, 978, 978, 978, 978 }; static const ANTLR3_INT32 dfa2_T432[] = { 327, 141, -1, -1, 58, 331, 323, -1, 325, 324, 330, 325, -1, 325, 328, 323, -1, -1, -1, 325, -1, -1, -1, 326, 329, 34, -1, -1, 325, -1, 154, 66, 35, 325, 325, 325, 325 }; static const ANTLR3_INT32 dfa2_T433[] = { 2955, 2111, 1203, -1, 2954, 2116, 2949, 2458, 2957, 2950, 2956, 2951, -1, 2957, 3260, 2949, -1, -1, -1, 2957, 405, -1, -1, 2952, 2953, 854, -1, -1, 2957, 405, 2587, 3261, 2456, 2957, 2957, 2957, 2957 }; static const ANTLR3_INT32 dfa2_T434[] = { 827, 471, -1, -1, 809, 831, 823, -1, 825, 824, 830, 825, -1, 825, 828, 823, -1, -1, -1, 825, -1, -1, -1, 826, 829, 242, -1, -1, 825, -1, 458, 241, 35, 825, 825, 825, 825 }; static const ANTLR3_INT32 dfa2_T435[] = { 2268, 508, -1, -1, 3364, 506, 3360, -1, 3362, 3361, 3364, 3362, -1, 3362, 508, 3360, -1, -1, -1, 3362, 2437, -1, -1, 3363, 3364, 3359, -1, -1, 3362, 2437, 505, 3364, 35, 3362, 3362, 3362, 3362 }; static const ANTLR3_INT32 dfa2_T436[] = { 221, 436, -1, -1, 789, 228, 217, 793, 219, 799, 227, 219, -1, 219, 225, 217, -1, -1, -1, 219, -1, -1, -1, 220, 226, 230, -1, -1, 219, -1, 790, 794, 792, 219, 219, 219, 219 }; static const ANTLR3_INT32 dfa2_T437[] = { 644 }; static const ANTLR3_INT32 dfa2_T438[] = { 963 }; static const ANTLR3_INT32 dfa2_T439[] = { 1206 }; static const ANTLR3_INT32 dfa2_T440[] = { 1650 }; static const ANTLR3_INT32 dfa2_T441[] = { 1860 }; static const ANTLR3_INT32 dfa2_T442[] = { 2565 }; static const ANTLR3_INT32 dfa2_T443[] = { 3401, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 347 }; static const ANTLR3_INT32 dfa2_T444[] = { 3729, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 802 }; static const ANTLR3_INT32 dfa2_T445[] = { 221, 436, -1, -1, 789, 228, 217, 793, 219, 2624, 227, 219, -1, 219, 225, 217, -1, -1, -1, 219, -1, -1, -1, 220, 226, 230, -1, -1, 219, -1, 790, 794, 792, 219, 219, 219, 219 }; static const ANTLR3_INT32 dfa2_T446[] = { 782, 436, -1, -1, 459, 786, 778, -1, 780, 779, 785, 780, -1, 780, 783, 778, -1, -1, -1, 780, -1, -1, -1, 781, 784, 242, -1, -1, 780, -1, 458, 241, 35, 780, 780, 780, 780 }; static const ANTLR3_INT32 dfa2_T447[] = { 387 }; static const ANTLR3_INT32 dfa2_T448[] = { 688 }; static const ANTLR3_INT32 dfa2_T449[] = { 1055 }; static const ANTLR3_INT32 dfa2_T450[] = { 221, 436, -1, -1, 789, 228, 217, 793, 219, 1699, 227, 219, -1, 219, 225, 217, -1, -1, -1, 219, -1, -1, -1, 220, 226, 230, -1, -1, 219, -1, 790, 794, 792, 219, 219, 219, 219 }; static const ANTLR3_INT32 dfa2_T451[] = { 306, 305, -1, -1, 304, 310, 300, -1, 302, 301, 309, 302, -1, 302, 307, 300, -1, -1, -1, 302, -1, -1, -1, 303, 308, 65, -1, -1, 302, -1, 138, 139, 35, 302, 302, 302, 302 }; static const ANTLR3_INT32 dfa2_T452[] = { 2535, 1576, -1, -1, 2534, 1581, 2860, 205, 2865, 2861, 2537, 2862, -1, 2865, 2903, 2860, -1, -1, -1, 2865, 405, -1, -1, 2863, 2864, 854, -1, -1, 2865, 405, 2477, 2009, 204, 2865, 2865, 2865, 2865 }; static const ANTLR3_INT32 dfa2_T453[] = { 465, 464, -1, -1, 459, 469, 503, 205, 462, 1723, 468, 462, -1, 462, 466, 503, -1, -1, -1, 462, -1, -1, -1, 463, 467, 854, -1, -1, 462, -1, 1237, 241, 204, 462, 462, 462, 462 }; static const ANTLR3_INT32 dfa2_T454[] = { 1383, -1, -1, -1, 1390, 338, 1392, 3082, -1, 1392, -1, 1392, -1, 3081, -1, -1, -1, 1392, -1, -1, -1, 1393, 1394, 34, -1, -1, 1392, -1, 643, 666, 337, 1392, 1392, 1392, 1392 }; static const ANTLR3_INT32 dfa2_T455[] = { 1383, -1, -1, -1, 1390, 338, 1392, 3115, -1, 1392, -1, 1392, -1, 3114, -1, -1, -1, 1392, -1, -1, -1, 1393, 1394, 34, -1, -1, 1392, -1, 643, 666, 337, 1392, 1392, 1392, 1392 }; static const ANTLR3_INT32 dfa2_T456[] = { 668, -1, -1, -1, -1, 1013, -1, -1, -1, -1, -1, 1014, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 347 }; static const ANTLR3_INT32 dfa2_T457[] = { 1230, -1, -1, -1, -1, 1700, -1, -1, -1, -1, -1, 1701, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 802 }; static const ANTLR3_INT32 dfa2_T458[] = { 465, 464, -1, -1, 459, 469, 503, -1, 462, 1723, 468, 462, -1, 462, 466, 503, -1, -1, -1, 462, -1, -1, -1, 463, 467, 242, -1, -1, 462, -1, 458, 241, 35, 462, 462, 462, 462 }; static const ANTLR3_INT32 dfa2_T459[] = { 811, 810, 1203, -1, 809, 815, 2080, 1202, 2082, 2081, 814, 2082, -1, 2082, 812, 2080, -1, -1, -1, 2082, -1, -1, -1, 2083, 2084, 242, -1, -1, 2082, -1, 458, 241, 1201, 2082, 2082, 2082, 2082 }; static const ANTLR3_INT32 dfa2_T460[] = { 465, 464, -1, -1, 459, 469, 1190, -1, 1632, 1191, 468, 462, -1, 462, 466, 1190, -1, -1, -1, 462, -1, -1, -1, 463, 467, 242, -1, -1, 462, -1, 458, 241, 35, 462, 462, 462, 462 }; static const ANTLR3_INT32 dfa2_T461[] = { 1577, 1576, -1, -1, 2545, 1581, 2061, 1588, 2064, 2062, 1580, 2550, -1, 1573, 1578, 2061, -1, -1, -1, 1573, -1, -1, -1, 1574, 1579, 854, -1, -1, 1573, -1, 2051, 1584, 1585, 1573, 1573, 1573, 1573 }; static const ANTLR3_INT32 dfa2_T462[] = { 1080, -1, 2092, -1, 1080, -1, 3173, 1588, 3178, 3174, 1080, 3175, -1, 3178, -1, 3173, -1, -1, -1, 3178, 1080, -1, -1, 3176, 3177, 854, -1, -1, 3178, 1080, 2028, 3465, 1585, 3178, 3178, 3178, 3178 }; static const ANTLR3_INT32 dfa2_T463[] = { 1203, -1, -1, -1, 1643, 1639, 1644, 2870, -1, 1644, -1, 1644, 1641, 2869, -1, -1, -1, 1644, -1, -1, -1, 1645, 1646, 242, -1, -1, 1644, -1, 1205, 1228, 1638, 1644, 1644, 1644, 1644 }; static const ANTLR3_INT32 dfa2_T464[] = { 3614, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 347 }; static const ANTLR3_INT32 dfa2_T465[] = { 3815, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 802 }; static const ANTLR3_INT32 dfa2_T466[] = { 1203, -1, -1, -1, 1643, 1639, 1644, 2561, -1, 1644, -1, 1644, 1641, 2560, -1, -1, -1, 1644, -1, -1, -1, 1645, 1646, 242, -1, -1, 1644, -1, 1205, 1228, 1638, 1644, 1644, 1644, 1644 }; static const ANTLR3_INT32 dfa2_T467[] = { 249, 248, -1, -1, 243, 253, 513, -1, 246, 514, 252, 246, -1, 246, 250, 513, -1, -1, -1, 246, -1, -1, -1, 247, 251, 242, -1, -1, 246, -1, 240, 241, 35, 246, 246, 246, 246 }; static const ANTLR3_INT32 dfa2_T468[] = { 1403, 1402, -1, -1, 1401, 1407, 1891, -1, 2368, 1892, 1406, 1399, -1, 1399, 1404, 1891, -1, -1, -1, 1399, -1, -1, -1, 1400, 1405, 34, -1, -1, 1399, -1, 973, 974, 35, 1399, 1399, 1399, 1399 }; static const ANTLR3_INT32 dfa2_T469[] = { 2579, 2578, -1, -1, 3302, 2583, 2993, 1588, 2995, 2994, 2582, 3305, -1, 2575, 2580, 2993, -1, -1, -1, 2575, -1, -1, -1, 2576, 2581, 854, -1, -1, 2575, -1, 2986, 2588, 1585, 2575, 2575, 2575, 2575 }; static const ANTLR3_INT32 dfa2_T470[] = { 896, 895, 641, -1, 894, 900, 1833, 952, 1835, 1834, 899, 1835, -1, 1835, 2315, 1833, -1, -1, -1, 1835, -1, -1, -1, 1836, 1837, 34, -1, -1, 1835, -1, 1348, 903, 951, 1835, 1835, 1835, 1835 }; static const ANTLR3_INT32 dfa2_T471[] = { 2955, 2111, -1, -1, 2954, 2116, 3236, 205, 3241, 3237, 2956, 3238, -1, 3241, 3264, 3236, -1, -1, -1, 3241, 405, -1, -1, 3239, 3240, 854, -1, -1, 3241, 405, 2927, 2928, 204, 3241, 3241, 3241, 3241 }; static const ANTLR3_INT32 dfa2_T472[] = { 1577, 1576, -1, -1, 2545, 1581, 2061, 1588, 2064, 2062, 1580, 3670, -1, 1573, 1578, 2061, -1, -1, -1, 1573, -1, -1, -1, 1574, 1579, 854, -1, -1, 1573, -1, 2051, 1584, 1585, 1573, 1573, 1573, 1573 }; static const ANTLR3_INT32 dfa2_T473[] = { 1024, 1023, -1, -1, 1022, 1028, 1018, -1, 1020, 1019, 1027, 1020, -1, 1020, 1025, 1018, -1, -1, -1, 1020, -1, -1, -1, 1021, 1026, 34, -1, -1, 1020, -1, 1029, 1030, 35, 1020, 1020, 1020, 1020 }; static const ANTLR3_INT32 dfa2_T474[] = { 1112, 89, -1, -1, 1106, 97, 1107, -1, 1109, 1108, 1113, 1109, -1, 1109, 99, 1107, -1, -1, -1, 1109, 1104, -1, -1, 1110, 1113, 1111, -1, -1, 1109, 1104, 94, 1113, 35, 1109, 1109, 1109, 1109 }; static const ANTLR3_INT32 dfa2_T475[] = { 811, 810, 2092, -1, 809, 815, 2934, 793, 2936, 2935, 814, 2936, -1, 2936, 812, 2934, -1, -1, -1, 2936, -1, -1, -1, 2937, 2938, 242, -1, -1, 2936, -1, 1636, 1631, 792, 2936, 2936, 2936, 2936 }; static const ANTLR3_INT32 dfa2_T476[] = { 1577, 1576, -1, -1, 2545, 1581, 2061, 1588, 2064, 2062, 1580, 3220, -1, 1573, 1578, 2061, -1, -1, -1, 1573, -1, -1, -1, 1574, 1579, 854, -1, -1, 1573, -1, 2051, 1584, 1585, 1573, 1573, 1573, 1573 }; static const ANTLR3_INT32 dfa2_T477[] = { 2856, 1134, -1, -1, 2855, 1139, 2851, 205, 2859, 2852, 2858, 2853, -1, 2859, 1136, 2851, -1, -1, -1, 2859, 1080, -1, -1, 2854, 2857, 854, -1, -1, 2859, 1080, 2477, 2830, 204, 2859, 2859, 2859, 2859 }; static const ANTLR3_INT32 dfa2_T478[] = { 1327, 1326, -1, -1, 1325, 1331, 1321, -1, 1323, 1322, 1330, 1323, -1, 1323, 1328, 1321, -1, -1, -1, 1323, -1, -1, -1, 1324, 1329, 34, -1, -1, 1323, -1, 1332, 1333, 35, 1323, 1323, 1323, 1323 }; static const ANTLR3_INT32 dfa2_T479[] = { 295, 294, -1, -1, 284, 299, 584, -1, 587, 585, 298, 586, -1, 292, 296, 584, -1, -1, -1, 292, -1, -1, -1, 293, 297, 34, -1, -1, 292, -1, 278, 279, 35, 292, 292, 292, 292 }; static const ANTLR3_INT32 dfa2_T480[] = { 2579, 2578, -1, -1, 3302, 2583, 2993, 1588, 2995, 2994, 2582, 3869, -1, 2575, 2580, 2993, -1, -1, -1, 2575, -1, -1, -1, 2576, 2581, 854, -1, -1, 2575, -1, 2986, 2588, 1585, 2575, 2575, 2575, 2575 }; static const ANTLR3_INT32 dfa2_T481[] = { 1874, 1873, 641, -1, 1872, 1878, 2776, 952, 2778, 2777, 1877, 2778, -1, 2778, 3098, 2776, -1, -1, -1, 2778, -1, -1, -1, 2779, 2780, 34, -1, -1, 2778, -1, 2376, 1883, 951, 2778, 2778, 2778, 2778 }; static const ANTLR3_INT32 dfa2_T482[] = { 1577, 1576, -1, -1, 2545, 1581, 2061, 1588, 2064, 2062, 1580, 2546, -1, 1573, 1578, 2061, -1, -1, -1, 1573, -1, -1, -1, 1574, 1579, 854, -1, -1, 1573, -1, 2051, 1584, 1585, 1573, 1573, 1573, 1573 }; static const ANTLR3_INT32 dfa2_T483[] = { 221, 436, -1, -1, 789, 228, 217, 793, 219, 795, 227, 219, -1, 219, 225, 217, -1, -1, -1, 219, -1, -1, -1, 220, 226, 230, -1, -1, 219, -1, 790, 794, 792, 219, 219, 219, 219 }; static const ANTLR3_INT32 dfa2_T484[] = { 2417, 2416, -1, -1, 2415, 2421, 2411, -1, 2413, 2412, 2420, 2413, -1, 2413, 2418, 2411, -1, -1, -1, 2413, -1, -1, -1, 2414, 2419, 1050, -1, -1, 2413, -1, 1972, 1521, 35, 2413, 2413, 2413, 2413 }; static const ANTLR3_INT32 dfa2_T485[] = { 2579, 2578, -1, -1, 3302, 2583, 2993, 1588, 2995, 2994, 2582, 3727, -1, 2575, 2580, 2993, -1, -1, -1, 2575, -1, -1, -1, 2576, 2581, 854, -1, -1, 2575, -1, 2986, 2588, 1585, 2575, 2575, 2575, 2575 }; static const ANTLR3_INT32 dfa2_T486[] = { 1668, 1667, -1, -1, 1662, 1672, 1663, -1, 1665, 1664, 1671, 1665, -1, 1665, 1669, 1663, -1, -1, -1, 1665, 754, -1, -1, 1666, 1670, 242, -1, -1, 1665, -1, 1660, 1661, 35, 1665, 1665, 1665, 1665 }; static const ANTLR3_INT32 dfa2_T487[] = { 2112, 2111, -1, -1, 2110, 2116, 2106, -1, 2108, 3280, 2115, 2108, -1, 2108, 2113, 2106, -1, -1, -1, 2108, -1, -1, -1, 2109, 2114, 242, -1, -1, 2108, -1, 1660, 1661, 35, 2108, 2108, 2108, 2108 }; static const ANTLR3_INT32 dfa2_T488[] = { 668, -1, -1, -1, -1, 667, -1, -1, -1, -1, -1, 669, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 347 }; static const ANTLR3_INT32 dfa2_T489[] = { 1230, -1, -1, -1, -1, 1229, -1, -1, -1, -1, -1, 1231, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 802 }; static const ANTLR3_INT32 dfa2_T490[] = { 2579, 2578, -1, -1, 3302, 2583, 2993, 1588, 2995, 2994, 2582, 3301, -1, 2575, 2580, 2993, -1, -1, -1, 2575, -1, -1, -1, 2576, 2581, 854, -1, -1, 2575, -1, 2986, 2588, 1585, 2575, 2575, 2575, 2575 }; static const ANTLR3_INT32 dfa2_T491[] = { 347 }; static const ANTLR3_INT32 dfa2_T492[] = { 802 }; static const ANTLR3_INT32 dfa2_T493[] = { 87, 338, -1, -1, -1, -1, -1, -1, -1, 87, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 643, -1, 642 }; static const ANTLR3_INT32 dfa2_T494[] = { 87, 793, -1, -1, -1, -1, -1, -1, -1, 87, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1205, -1, 1204 }; static const ANTLR3_INT32 dfa2_T495[] = { 490, 482, -1, -1, 481, 488, 483, -1, 485, 484, 490, 485, -1, 485, 490, 483, -1, -1, -1, 485, -1, -1, -1, 486, 490, 489, -1, -1, 485, -1, 487, 490, 35, 485, 485, 485, 485 }; static const ANTLR3_INT32 dfa2_T496[] = { 2112, 2111, -1, -1, 2110, 2116, 2106, -1, 2108, 2107, 2115, 2108, -1, 2108, 2113, 2106, -1, -1, -1, 2108, -1, -1, -1, 2109, 2114, 242, -1, -1, 2108, -1, 1660, 1661, 35, 2108, 2108, 2108, 2108 }; static const ANTLR3_INT32 dfa2_T497[] = { 249, 248, -1, -1, 243, 253, 516, -1, 855, 517, 252, 246, -1, 246, 250, 516, -1, -1, -1, 246, -1, -1, -1, 247, 251, 242, -1, -1, 246, -1, 240, 241, 35, 246, 246, 246, 246 }; static const ANTLR3_INT32 dfa2_T498[] = { 811, 810, -1, -1, 809, 815, 1245, -1, 1247, 1246, 814, 1244, -1, 807, 812, 1245, -1, -1, -1, 807, -1, -1, -1, 808, 813, 242, -1, -1, 807, -1, 458, 241, 35, 807, 807, 807, 807 }; static const ANTLR3_INT32 dfa2_T499[] = { 28, 27, -1, -1, 26, 32, 22, -1, 24, 23, 31, 24, -1, 24, 29, 22, -1, -1, -1, 24, -1, -1, -1, 25, 30, 34, -1, -1, 24, -1, 33, 66, 35, 24, 24, 24, 24 }; static const ANTLR3_INT32 dfa2_T500[] = { 405, -1, -1, -1, 405, -1, 713, 205, 715, 714, 405, 712, -1, 715, 1093, 713, -1, -1, -1, 715, 405, -1, -1, 716, 405, 1090, -1, -1, 715, 405, 407, 1092, 1091, 715, 715, 715, 715 }; static const ANTLR3_INT32 dfa2_T501[] = { 3739, 2673, -1, -1, 3738, 2678, 3734, 205, 3742, 3735, 3741, 3736, -1, 3742, 2675, 3734, -1, -1, -1, 3742, 1080, -1, -1, 3737, 3740, 1751, -1, -1, 3742, 1080, 3030, 3323, 204, 3742, 3742, 3742, 3742 }; static const ANTLR3_INT32 dfa2_T502[] = { 1403, 1402, -1, -1, 1401, 1407, 2771, -1, 2368, 2772, 1406, 1890, -1, 1399, 1404, 2771, -1, -1, -1, 1399, -1, -1, -1, 1400, 1405, 34, -1, -1, 1399, -1, 973, 974, 35, 1399, 1399, 1399, 1399 }; static const ANTLR3_INT32 dfa2_T503[] = { 2185, 2184, -1, -1, 2183, 2189, 2179, -1, 2181, 2180, 2188, 2181, -1, 2181, 2186, 2179, -1, -1, -1, 2181, -1, -1, -1, 2182, 2187, 242, -1, -1, 2181, -1, 1716, 1717, 35, 2181, 2181, 2181, 2181 }; static const ANTLR3_INT32 dfa2_T504[] = { 2579, 2578, -1, -1, 2577, 2583, 3555, -1, 3303, 3556, 2582, 2992, -1, 2575, 2580, 3555, -1, -1, -1, 2575, -1, -1, -1, 2576, 2581, 242, -1, -1, 2575, -1, 2128, 1661, 35, 2575, 2575, 2575, 2575 }; static const ANTLR3_INT32 dfa2_T505[] = { 811, 810, 2092, -1, 809, 815, 2934, 2091, 2936, 2935, 814, 2936, 2093, 2936, 812, 2934, -1, -1, -1, 2936, -1, -1, -1, 2937, 2938, 242, -1, -1, 2936, -1, 458, 241, 2090, 2936, 2936, 2936, 2936 }; static const ANTLR3_INT32 dfa2_T506[] = { 3459, 2195, -1, -1, 3458, 2200, 3454, 205, 3464, 3455, 3462, 3456, -1, 3464, 3460, 3454, -1, -1, -1, 3464, 405, -1, -1, 3457, 3461, 854, -1, -1, 3464, 405, 3463, 3171, 204, 3464, 3464, 3464, 3464 }; static const ANTLR3_INT32 dfa2_T507[] = { 2092, -1, -1, -1, 2564, 793, 2101, 2100, -1, 2101, -1, 2101, -1, 2564, -1, -1, -1, 2101, -1, -1, -1, 2102, 2103, 242, -1, -1, 2101, -1, 1205, 2104, 792, 2101, 2101, 2101, 2101 }; static const ANTLR3_INT32 dfa2_T508[] = { 564, 563, -1, -1, 1340, 568, 914, 338, 917, 3373, 567, 916, -1, 560, 565, 914, -1, -1, -1, 560, -1, -1, -1, 561, 566, 34, -1, -1, 560, -1, 902, 903, 337, 560, 560, 560, 560 }; static const ANTLR3_INT32 dfa2_T509[] = { 575, 574, -1, -1, 573, 579, 569, -1, 571, 1838, 578, 571, -1, 571, 576, 569, -1, -1, -1, 571, -1, -1, -1, 572, 577, 34, -1, -1, 571, -1, 580, 279, 35, 571, 571, 571, 571 }; static const ANTLR3_INT32 dfa2_T510[] = { 3496, 2122, -1, -1, 3495, 2127, 3491, 205, 3499, 3492, 3498, 3493, -1, 3499, 2124, 3491, -1, -1, -1, 3499, 1080, -1, -1, 3494, 3497, 854, -1, -1, 3499, 1080, 3251, 3226, 204, 3499, 3499, 3499, 3499 }; static const ANTLR3_INT32 dfa2_T511[] = { 498, 497, -1, -1, 496, 502, 492, -1, 494, 493, 501, 494, -1, 494, 499, 492, -1, -1, -1, 494, -1, -1, -1, 495, 500, 242, -1, -1, 494, -1, 240, 241, 35, 494, 494, 494, 494 }; static const ANTLR3_INT32 dfa2_T512[] = { 1403, 1402, -1, -1, 2367, 1407, 1891, 338, 1893, 3752, 1406, 1890, -1, 1399, 1404, 1891, -1, -1, -1, 1399, -1, -1, -1, 1400, 1405, 34, -1, -1, 1399, -1, 1882, 1883, 337, 1399, 1399, 1399, 1399 }; static const ANTLR3_INT32 dfa2_T513[] = { 3402, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 347 }; static const ANTLR3_INT32 dfa2_T514[] = { 3730, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 802 }; static const ANTLR3_INT32 dfa2_T515[] = { 1476, 1475, -1, -1, 1474, 1480, 1470, -1, 1472, 1471, 1479, 1472, -1, 1472, 1477, 1470, -1, -1, -1, 1472, -1, -1, -1, 1473, 1478, 34, -1, -1, 1472, -1, 1029, 1030, 35, 1472, 1472, 1472, 1472 }; static const ANTLR3_INT32 dfa2_T516[] = { 355, 354, -1, -1, 353, 359, 674, -1, 676, 677, 358, 678, -1, 351, 356, 674, -1, -1, -1, 351, -1, -1, -1, 352, 357, 34, -1, -1, 351, -1, 154, 66, 35, 351, 351, 351, 351 }; static const ANTLR3_INT32 dfa2_T517[] = { 933, 620, -1, -1, 894, 937, 929, -1, 931, 930, 936, 931, -1, 931, 934, 929, -1, -1, -1, 931, -1, -1, -1, 932, 935, 34, -1, -1, 931, -1, 580, 279, 35, 931, 931, 931, 931 }; static const ANTLR3_INT32 dfa2_T518[] = { 1790, 508, -1, -1, 1790, 506, 1788, 205, 1791, 1789, 1790, 1787, -1, 1791, 2284, 1788, -1, -1, -1, 1791, 405, -1, -1, 1792, 1790, 1308, -1, -1, 1791, 405, 1307, 1790, 204, 1791, 1791, 1791, 1791 }; static const ANTLR3_INT32 dfa2_T519[] = { 355, 354, -1, -1, 353, 359, 674, -1, 676, 2399, 358, 2400, -1, 351, 356, 674, -1, -1, -1, 351, -1, -1, -1, 352, 357, 34, -1, -1, 351, -1, 154, 66, 35, 351, 351, 351, 351 }; static const ANTLR3_INT32 dfa2_T520[] = { 355, 354, -1, -1, 353, 359, 674, -1, 676, 1501, 358, 1502, -1, 351, 356, 674, -1, -1, -1, 351, -1, -1, -1, 352, 357, 34, -1, -1, 351, -1, 154, 66, 35, 351, 351, 351, 351 }; static const ANTLR3_INT32 dfa2_T521[] = { 405, -1, 1203, -1, 405, -1, 2512, 2458, 2485, 2481, 405, 2482, -1, 2485, 2867, 2512, -1, -1, -1, 2485, 405, -1, -1, 2483, 2484, 854, -1, -1, 2485, 405, 2028, 2868, 2456, 2485, 2485, 2485, 2485 }; static const ANTLR3_INT32 dfa2_T522[] = { 1711, 1710, -1, -1, 1709, 1715, 1705, 1526, 1707, 1706, 1714, 1707, -1, 1707, 1712, 1705, -1, -1, -1, 1707, -1, -1, -1, 1708, 1713, 242, -1, -1, 1707, -1, 1716, 1717, 35, 1707, 1707, 1707, 1707 }; static const ANTLR3_INT32 dfa2_T523[] = { 3651, 2638, -1, -1, 3650, 2643, 3646, 403, 3654, 3647, 3653, 3648, -1, 3654, 2640, 3646, -1, -1, -1, 3654, 405, -1, -1, 3649, 3652, 854, -1, -1, 3654, 405, 3463, 3171, 402, 3654, 3654, 3654, 3654 }; static const ANTLR3_INT32 dfa2_T524[] = { 221, 436, -1, -1, 435, 228, 217, -1, 219, 799, 227, 219, -1, 219, 225, 217, -1, -1, -1, 219, -1, -1, -1, 220, 226, 230, -1, -1, 219, -1, 229, 441, 35, 219, 219, 219, 219 }; static const ANTLR3_INT32 dfa2_T525[] = { 508, 508, -1, -1, 508, 506, 1253, -1, 1255, 1256, 508, 1257, -1, 511, 508, 1253, -1, -1, -1, 511, -1, -1, -1, 512, 508, 507, -1, -1, 511, -1, 505, 508, 35, 511, 511, 511, 511 }; static const ANTLR3_INT32 dfa2_T526[] = { 221, 436, -1, -1, 435, 228, 217, -1, 219, 1699, 227, 219, -1, 219, 225, 217, -1, -1, -1, 219, -1, -1, -1, 220, 226, 230, -1, -1, 219, -1, 229, 441, 35, 219, 219, 219, 219 }; static const ANTLR3_INT32 dfa2_T527[] = { 3638, 2195, -1, -1, 3637, 2200, 3633, 205, 3641, 3634, 3640, 3635, -1, 3641, 2197, 3633, -1, -1, -1, 3641, 1080, -1, -1, 3636, 3639, 854, -1, -1, 3641, 1080, 3463, 3435, 204, 3641, 3641, 3641, 3641 }; static const ANTLR3_INT32 dfa2_T528[] = { 1494, -1, -1, -1, -1, -1, 1495 }; static const ANTLR3_INT32 dfa2_T529[] = { 1921, -1, -1, -1, -1, -1, 1922 }; static const ANTLR3_INT32 dfa2_T530[] = { 2203, -1, -1, -1, -1, -1, 2204 }; static const ANTLR3_INT32 dfa2_T531[] = { 2626, -1, -1, -1, -1, -1, 2627 }; static const ANTLR3_INT32 dfa2_T532[] = { 1874, 1873, -1, -1, 2788, 1878, 2383, 338, 2385, 2384, 1877, 2787, -1, 1870, 1875, 2383, -1, -1, -1, 1870, -1, -1, -1, 1871, 1876, 34, -1, -1, 1870, -1, 2376, 1883, 337, 1870, 1870, 1870, 1870 }; static const ANTLR3_INT32 dfa2_T533[] = { 1577, 1576, -1, -1, 1575, 1581, 2061, -1, 2064, 2065, 1580, 2066, -1, 1573, 1578, 2061, -1, -1, -1, 1573, -1, -1, -1, 1574, 1579, 242, -1, -1, 1573, -1, 1140, 733, 35, 1573, 1573, 1573, 1573 }; static const ANTLR3_INT32 dfa2_T534[] = { 1577, 1576, -1, -1, 1575, 1581, 2061, -1, 2064, 3486, 1580, 3487, -1, 1573, 1578, 2061, -1, -1, -1, 1573, -1, -1, -1, 1574, 1579, 242, -1, -1, 1573, -1, 1140, 733, 35, 1573, 1573, 1573, 1573 }; static const ANTLR3_INT32 dfa2_T535[] = { 896, 895, -1, -1, 1844, 900, 1358, 338, 1361, 1359, 899, 1845, -1, 892, 897, 1358, -1, -1, -1, 892, -1, -1, -1, 893, 898, 34, -1, -1, 892, -1, 1348, 903, 337, 892, 892, 892, 892 }; static const ANTLR3_INT32 dfa2_T536[] = { 2964, 2963, -1, -1, 2962, 2968, 2958, -1, 2960, 2959, 2967, 2960, -1, 2960, 2965, 2958, -1, -1, -1, 2960, -1, -1, -1, 2961, 2966, 242, -1, -1, 2960, -1, 2969, 1661, 35, 2960, 2960, 2960, 2960 }; static const ANTLR3_INT32 dfa2_T537[] = { 508, 508, -1, -1, 508, 506, 1253, -1, 1255, 2240, 508, 2241, -1, 511, 508, 1253, -1, -1, -1, 511, -1, -1, -1, 512, 508, 507, -1, -1, 511, -1, 505, 508, 35, 511, 511, 511, 511 }; static const ANTLR3_INT32 dfa2_T538[] = { 221, 436, -1, -1, 435, 228, 217, -1, 219, 2624, 227, 219, -1, 219, 225, 217, -1, -1, -1, 219, -1, -1, -1, 220, 226, 230, -1, -1, 219, -1, 229, 441, 35, 219, 219, 219, 219 }; static const ANTLR3_INT32 dfa2_T539[] = { 1577, 1576, -1, -1, 1575, 1581, 2061, -1, 2064, 2910, 1580, 2911, -1, 1573, 1578, 2061, -1, -1, -1, 1573, -1, -1, -1, 1574, 1579, 242, -1, -1, 1573, -1, 1140, 733, 35, 1573, 1573, 1573, 1573 }; static const ANTLR3_INT32 dfa2_T540[] = { 2614, 2162, -1, -1, 2577, 2618, 2610, -1, 2612, 2611, 2617, 2612, -1, 2612, 2615, 2610, -1, -1, -1, 2612, -1, -1, -1, 2613, 2616, 242, -1, -1, 2612, -1, 2128, 1661, 35, 2612, 2612, 2612, 2612 }; static const ANTLR3_INT32 dfa2_T541[] = { 3615, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 347 }; static const ANTLR3_INT32 dfa2_T542[] = { 3816, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 802 }; static const ANTLR3_INT32 dfa2_T543[] = { 811, 810, -1, -1, 1740, 815, 1245, 1588, 1247, 1742, 814, 1743, -1, 807, 812, 1245, -1, -1, -1, 807, -1, -1, -1, 808, 813, 854, -1, -1, 807, -1, 1630, 1631, 1585, 807, 807, 807, 807 }; static const ANTLR3_INT32 dfa2_T544[] = { 508, 508, -1, -1, 508, 506, 1253, -1, 1255, 3049, 508, 3050, -1, 511, 508, 1253, -1, -1, -1, 511, -1, -1, -1, 512, 508, 507, -1, -1, 511, -1, 505, 508, 35, 511, 511, 511, 511 }; static const ANTLR3_INT32 dfa2_T545[] = { 3166, 1710, -1, -1, 3165, 1715, 3162, 205, 3172, 3179, 3169, 3163, -1, 3172, 3167, 3162, -1, -1, -1, 3172, 405, -1, -1, 3164, 3168, 854, -1, -1, 3172, 405, 3170, 3171, 204, 3172, 3172, 3172, 3172 }; static const ANTLR3_INT32 dfa2_T546[] = { 2717, 508, -1, -1, 2717, 506, 2715, 205, 2718, 2716, 2717, 2714, -1, 2718, 508, 2715, -1, -1, -1, 2718, 1080, -1, -1, 2719, 2717, 1308, -1, -1, 2718, 1080, 1307, 2717, 204, 2718, 2718, 2718, 2718 }; static const ANTLR3_INT32 dfa2_T547[] = { 811, 810, -1, -1, 1740, 815, 1245, 1588, 1247, 3316, 814, 3317, -1, 807, 812, 1245, -1, -1, -1, 807, -1, -1, -1, 808, 813, 854, -1, -1, 807, -1, 1630, 1631, 1585, 807, 807, 807, 807 }; static const ANTLR3_INT32 dfa2_T548[] = { 159, 59, -1, -1, 58, 163, 628, -1, 946, 629, 162, 157, -1, 157, 160, 628, -1, -1, -1, 157, -1, -1, -1, 158, 161, 34, -1, -1, 157, -1, 154, 66, 35, 157, 157, 157, 157 }; static const ANTLR3_INT32 dfa2_T549[] = { 811, 810, -1, -1, 1740, 815, 1245, 1588, 1247, 2660, 814, 2661, -1, 807, 812, 1245, -1, -1, -1, 807, -1, -1, -1, 808, 813, 854, -1, -1, 807, -1, 1630, 1631, 1585, 807, 807, 807, 807 }; static const ANTLR3_INT32 dfa2_T550[] = { 3441, 1710, -1, -1, 3440, 1715, 3436, 205, 3444, 3437, 3443, 3438, -1, 3444, 1712, 3436, -1, -1, -1, 3444, 1080, -1, -1, 3439, 3442, 854, -1, -1, 3444, 1080, 3170, 3435, 204, 3444, 3444, 3444, 3444 }; static const ANTLR3_INT32 dfa2_T551[] = { 811, 810, -1, -1, 1740, 815, 1245, 1588, 1247, 3731, 814, 1739, -1, 807, 812, 1245, -1, -1, -1, 807, -1, -1, -1, 808, 813, 854, -1, -1, 807, -1, 1630, 1631, 1585, 807, 807, 807, 807 }; static const ANTLR3_INT32 dfa2_T552[] = { 465, 464, -1, -1, 459, 469, 1733, -1, 1238, 1734, 468, 816, -1, 462, 466, 1733, -1, -1, -1, 462, -1, -1, -1, 463, 467, 242, -1, -1, 462, -1, 458, 241, 35, 462, 462, 462, 462 }; static const ANTLR3_INT32 dfa2_T553[] = { 641, -1, -1, -1, 956, 952, 957, 2332, -1, 957, -1, 957, 954, 2331, -1, -1, -1, 957, -1, -1, -1, 958, 959, 34, -1, -1, 957, -1, 643, 666, 951, 957, 957, 957, 957 }; static const ANTLR3_INT32 dfa2_T554[] = { 641, -1, -1, -1, 956, 952, 957, 2407, -1, 957, -1, 957, 954, 2406, -1, -1, -1, 957, -1, -1, -1, 958, 959, 34, -1, -1, 957, -1, 643, 666, 951, 957, 957, 957, 957 }; static const ANTLR3_INT32 dfa2_T555[] = { 1414, 1413, -1, -1, 1412, 1418, 1449, -1, 1410, 2380, 1417, 1410, -1, 1410, 1415, 1449, -1, -1, -1, 1410, -1, -1, -1, 1411, 1416, 34, -1, -1, 1410, -1, 1419, 974, 35, 1410, 1410, 1410, 1410 }; static const ANTLR3_INT32 dfa2_T556[] = { 221, 436, -1, -1, 435, 228, 217, -1, 219, 795, 227, 219, -1, 219, 225, 217, -1, -1, -1, 219, -1, -1, -1, 220, 226, 230, -1, -1, 219, -1, 229, 441, 35, 219, 219, 219, 219 }; static const ANTLR3_INT32 dfa2_T557[] = { 564, 563, 1383, -1, 562, 568, 2289, 338, 2291, 2290, 567, 2291, -1, 2291, 565, 2289, -1, -1, -1, 2291, -1, -1, -1, 2292, 2293, 34, -1, -1, 2291, -1, 902, 903, 337, 2291, 2291, 2291, 2291 }; static const ANTLR3_INT32 dfa2_T558[] = { 3232, 1667, -1, -1, 3231, 1672, 3227, 205, 3235, 3228, 3234, 3229, -1, 3235, 1669, 3227, -1, -1, -1, 3235, 1080, -1, -1, 3230, 3233, 854, -1, -1, 3235, 1080, 2927, 3226, 204, 3235, 3235, 3235, 3235 }; static const ANTLR3_INT32 dfa2_T559[] = { 1414, 1413, -1, -1, 1412, 1418, 1449, -1, 1410, 3103, 1417, 1410, -1, 1410, 1415, 1449, -1, -1, -1, 1410, -1, -1, -1, 1411, 1416, 34, -1, -1, 1410, -1, 1419, 974, 35, 1410, 1410, 1410, 1410 }; static const ANTLR3_INT32 dfa2_T560[] = { 3496, 2122, -1, -1, 3495, 2127, 3491, -1, 3499, 3492, 3498, 3493, -1, 3499, 2124, 3491, -1, -1, -1, 3499, 1080, -1, -1, 3494, 3497, 242, -1, -1, 3499, 1080, 2128, 3226, 35, 3499, 3499, 3499, 3499 }; static const ANTLR3_INT32 dfa2_T561[] = { 1414, 1413, -1, -1, 1412, 1418, 1449, -1, 1410, 3611, 1417, 1410, -1, 1410, 1415, 1449, -1, -1, -1, 1410, -1, -1, -1, 1411, 1416, 34, -1, -1, 1410, -1, 1419, 974, 35, 1410, 1410, 1410, 1410 }; static const ANTLR3_INT32 dfa2_T562[] = { 1588, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2028, -1, 2027 }; static const ANTLR3_INT32 dfa2_T563[] = { 1403, 1402, 1383, -1, 1401, 1407, 3084, 338, 3086, 3085, 1406, 3086, -1, 3086, 1404, 3084, -1, -1, -1, 3086, -1, -1, -1, 3087, 3088, 34, -1, -1, 3086, -1, 1882, 1883, 337, 3086, 3086, 3086, 3086 }; static const ANTLR3_INT32 dfa2_T564[] = { 811, 810, 1203, -1, 809, 815, 2080, 1639, 2082, 2081, 814, 2082, -1, 2082, 2559, 2080, -1, -1, -1, 2082, -1, -1, -1, 2083, 2084, 242, -1, -1, 2082, -1, 1636, 1631, 1638, 2082, 2082, 2082, 2082 }; static const ANTLR3_INT32 dfa2_T565[] = { 1268, 497, -1, -1, 1265, 502, 1263, 205, 1266, 1264, 1270, 1262, -1, 1266, 1756, 1263, -1, -1, -1, 1266, 405, -1, -1, 1267, 1269, 854, -1, -1, 1266, 405, 853, 1271, 204, 1266, 1266, 1266, 1266 }; static const ANTLR3_INT32 dfa2_T566[] = { 2836, 1123, -1, -1, 2835, 1128, 2844, 205, 2849, 2845, 2838, 2846, -1, 2849, 1125, 2844, -1, -1, -1, 2849, 1080, -1, -1, 2847, 2848, 854, -1, -1, 2849, 1080, 2011, 2830, 204, 2849, 2849, 2849, 2849 }; static const ANTLR3_INT32 dfa2_T567[] = { 1515, 1514, -1, -1, 1513, 1519, 1509, -1, 1511, 1510, 1518, 1511, -1, 1511, 1516, 1509, -1, -1, -1, 1511, -1, -1, -1, 1512, 1517, 1050, -1, -1, 1511, -1, 1520, 1521, 35, 1511, 1511, 1511, 1511 }; static const ANTLR3_INT32 dfa2_T568[] = { 2123, 2122, -1, -1, 2121, 2127, 2158, -1, 2119, 2990, 2126, 2119, -1, 2119, 2124, 2158, -1, -1, -1, 2119, -1, -1, -1, 2120, 2125, 242, -1, -1, 2119, -1, 2128, 1661, 35, 2119, 2119, 2119, 2119 }; static const ANTLR3_INT32 dfa2_T569[] = { 2123, 2122, -1, -1, 2121, 2127, 2158, -1, 2119, 3553, 2126, 2119, -1, 2119, 2124, 2158, -1, -1, -1, 2119, -1, -1, -1, 2120, 2125, 242, -1, -1, 2119, -1, 2128, 1661, 35, 2119, 2119, 2119, 2119 }; static const ANTLR3_INT32 dfa2_T570[] = { 56, 141, -1, -1, 140, 63, 142, -1, 341, 143, 62, 54, -1, 54, 60, 142, -1, -1, -1, 54, -1, -1, -1, 55, 61, 65, -1, -1, 54, -1, 64, 146, 35, 54, 54, 54, 54 }; static const ANTLR3_INT32 dfa2_T571[] = { 108, 108, -1, -1, 108, 106, 390, -1, 695, 391, 108, 111, -1, 111, 108, 390, -1, -1, -1, 111, -1, -1, -1, 112, 108, 107, -1, -1, 111, -1, 105, 108, 35, 111, 111, 111, 111 }; static const ANTLR3_INT32 dfa2_T572[] = { 2123, 2122, -1, -1, 2121, 2127, 2158, -1, 2119, 3812, 2126, 2119, -1, 2119, 2124, 2158, -1, -1, -1, 2119, -1, -1, -1, 2120, 2125, 242, -1, -1, 2119, -1, 2128, 1661, 35, 2119, 2119, 2119, 2119 }; static const ANTLR3_INT32 dfa2_T573[] = { 6, -1, -1, -1, 1, -1, 3, 2, -1, 3, -1, 3, -1, 1, -1, -1, -1, 3, -1, -1, -1, 4, 5, -1, -1, -1, 3, -1, -1, -1, 7, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa2_T574[] = { 249, 248, -1, -1, 243, 253, 244, -1, 246, 858, 252, 246, -1, 246, 250, 244, -1, -1, -1, 246, -1, -1, -1, 247, 251, 242, -1, -1, 246, -1, 240, 241, 35, 246, 246, 246, 246 }; static const ANTLR3_INT32 dfa2_T575[] = { 2035, -1, -1, -1, -1, 2036, -1, -1, -1, -1, -1, 2037 }; static const ANTLR3_INT32 dfa2_T576[] = { 249, 248, -1, -1, 243, 253, 244, -1, 246, 2706, 252, 246, -1, 246, 250, 244, -1, -1, -1, 246, -1, -1, -1, 247, 251, 242, -1, -1, 246, -1, 240, 241, 35, 246, 246, 246, 246 }; static const ANTLR3_INT32 dfa2_T577[] = { 249, 248, -1, -1, 243, 253, 244, -1, 246, 1772, 252, 246, -1, 246, 250, 244, -1, -1, -1, 246, -1, -1, -1, 247, 251, 242, -1, -1, 246, -1, 240, 241, 35, 246, 246, 246, 246 }; static const ANTLR3_INT32 dfa2_T578[] = { 896, 895, -1, -1, 894, 900, 938, -1, 892, 939, 899, 892, -1, 892, 897, 938, -1, -1, -1, 892, 57, -1, -1, 893, 898, 34, -1, -1, 892, -1, 580, 279, 35, 892, 892, 892, 892 }; static const ANTLR3_INT32 dfa2_T579[] = { 1414, 1413, -1, -1, 1412, 1418, 1449, -1, 1410, 2373, 1417, 1410, -1, 1410, 1415, 1449, -1, -1, -1, 1410, -1, -1, -1, 1411, 1416, 34, -1, -1, 1410, -1, 1419, 974, 35, 1410, 1410, 1410, 1410 }; static const ANTLR3_INT32 dfa2_T580[] = { 2249, 497, -1, -1, 2248, 502, 2243, 205, 2246, 2244, 2251, 2242, -1, 2246, 499, 2243, -1, -1, -1, 2246, 1080, -1, -1, 2247, 2250, 854, -1, -1, 2246, 1080, 853, 2245, 204, 2246, 2246, 2246, 2246 }; static const ANTLR3_INT32 dfa2_T581[] = { 82, 82, -1, -1, 82, 80, 1522, -1, 1051, 1523, 82, 85, -1, 85, 82, 1522, -1, -1, -1, 85, -1, -1, -1, 86, 82, 81, -1, -1, 85, -1, 79, 82, 35, 85, 85, 85, 85 }; static const ANTLR3_INT32 dfa2_T582[] = { 1668, 1667, -1, -1, 1662, 1672, 2970, -1, 2589, 2971, 1671, 1665, -1, 1665, 1669, 2970, -1, -1, -1, 1665, -1, -1, -1, 1666, 1670, 242, -1, -1, 1665, -1, 1660, 1661, 35, 1665, 1665, 1665, 1665 }; static const ANTLR3_INT32 dfa2_T583[] = { 1203, -1, -1, -1, 1648, 1639, 1644, 1649, -1, 1644, -1, 1644, 1641, 1648, -1, -1, -1, 1644, -1, -1, -1, 1645, 1646, 242, -1, -1, 1644, -1, 1205, 2104, 1638, 1644, 1644, 1644, 1644 }; static const ANTLR3_INT32 dfa2_T584[] = { 159, 59, -1, -1, 58, 163, 1372, -1, 946, 1373, 162, 627, -1, 157, 160, 1372, -1, -1, -1, 157, -1, -1, -1, 158, 161, 34, -1, -1, 157, -1, 154, 66, 35, 157, 157, 157, 157 }; static const ANTLR3_INT32 dfa2_T585[] = { 1183, 1182, -1, -1, 1181, 1187, 1177, -1, 1179, 1178, 1186, 1179, -1, 1179, 1184, 1177, -1, -1, -1, 1179, -1, -1, -1, 1180, 1185, 230, -1, -1, 1179, -1, 777, 434, 35, 1179, 1179, 1179, 1179 }; static const ANTLR3_INT32 dfa2_T586[] = { 564, 563, -1, -1, 562, 568, 558, -1, 560, 1828, 567, 560, -1, 560, 565, 558, -1, -1, -1, 560, -1, -1, -1, 561, 566, 34, -1, -1, 560, -1, 278, 279, 35, 560, 560, 560, 560 }; static const ANTLR3_INT32 dfa2_T587[] = { 641, -1, -1, -1, 956, 640, 957, 962, -1, 957, -1, 957, -1, 956, -1, -1, -1, 957, -1, -1, -1, 958, 959, -1, -1, -1, 957, -1, -1, -1, 960, 957, 957, 957, 957 }; static const ANTLR3_INT32 dfa2_T588[] = { 1203, -1, -1, -1, 1643, 1202, 1644, 1649, -1, 1644, -1, 1644, -1, 1643, -1, -1, -1, 1644, -1, -1, -1, 1645, 1646, -1, -1, -1, 1644, -1, -1, -1, 1647, 1644, 1644, 1644, 1644 }; static const ANTLR3_INT32 dfa2_T589[] = { 249, 248, -1, -1, 243, 253, 244, -1, 246, 850, 252, 246, -1, 246, 250, 244, -1, -1, -1, 246, -1, -1, -1, 247, 251, 242, -1, -1, 246, -1, 240, 241, 35, 246, 246, 246, 246 }; static const ANTLR3_INT32 dfa2_T590[] = { 896, 895, -1, -1, 894, 900, 890, -1, 892, 891, 899, 892, -1, 892, 897, 890, -1, -1, -1, 892, -1, -1, -1, 893, 898, 34, -1, -1, 892, -1, 580, 279, 35, 892, 892, 892, 892 }; static const ANTLR3_INT32 dfa2_T591[] = { 405, -1, -1, -1, 405, -1, 1541, 205, 715, 2428, 405, 712, -1, 715, 1093, 1541, -1, -1, -1, 715, 405, -1, -1, 716, 405, 1090, -1, -1, 715, 405, 407, 405, 1091, 715, 715, 715, 715 }; static const ANTLR3_INT32 dfa2_T592[] = { 2494, 2493, -1, -1, 2492, 2498, 2488, -1, 2490, 2489, 2497, 2490, -1, 2490, 2495, 2488, -1, -1, -1, 2490, -1, -1, -1, 2491, 2496, 242, -1, -1, 2490, -1, 2025, 2026, 35, 2490, 2490, 2490, 2490 }; static const ANTLR3_INT32 dfa2_T593[] = { 2579, 2578, -1, -1, 2577, 2583, 2993, -1, 2995, 2994, 2582, 2992, -1, 2575, 2580, 2993, -1, -1, -1, 2575, -1, -1, -1, 2576, 2581, 242, -1, -1, 2575, -1, 2128, 1661, 35, 2575, 2575, 2575, 2575 }; static const ANTLR3_INT32 dfa2_T594[] = { 3166, 1710, -1, -1, 3165, 1715, 3162, 2812, 3172, 3179, 3169, 3163, -1, 3172, 3167, 3162, -1, -1, -1, 3172, 405, -1, -1, 3164, 3168, 854, -1, -1, 3172, 405, 3170, 3171, 204, 3172, 3172, 3172, 3172 }; static const ANTLR3_INT32 dfa2_T595[] = { 896, 895, -1, -1, 894, 900, 2322, -1, 1847, 2323, 899, 892, -1, 892, 897, 2322, -1, -1, -1, 892, -1, -1, -1, 893, 898, 34, -1, -1, 892, -1, 580, 279, 35, 892, 892, 892, 892 }; static const ANTLR3_INT32 dfa2_T596[] = { 1383, -1, -1, -1, 1390, -1, 1392, 1391, -1, 1392, 1384, 1392, -1, 1390, -1, -1, -1, 1392, -1, -1, -1, 1393, 1394, -1, -1, -1, 1392, -1, -1, -1, 1860, 1392, 1392, 1392, 1392 }; static const ANTLR3_INT32 dfa2_T597[] = { 2092, -1, -1, -1, 2099, -1, 2101, 2100, -1, 2101, 2093, 2101, -1, 2099, -1, -1, -1, 2101, -1, -1, -1, 2102, 2103, -1, -1, -1, 2101, -1, -1, -1, 2565, 2101, 2101, 2101, 2101 }; static const ANTLR3_INT32 dfa2_T598[] = { 56, 141, -1, -1, 140, 63, 658, -1, 341, 659, 62, 144, -1, 54, 60, 658, -1, -1, -1, 54, -1, -1, -1, 55, 61, 65, -1, -1, 54, -1, 64, 146, 35, 54, 54, 54, 54 }; static const ANTLR3_INT32 dfa2_T599[] = { 1874, 1873, -1, -1, 1872, 1878, 3105, -1, 2789, 3106, 1877, 2382, -1, 1870, 1875, 3105, -1, -1, -1, 1870, -1, -1, -1, 1871, 1876, 34, -1, -1, 1870, -1, 1419, 974, 35, 1870, 1870, 1870, 1870 }; static const ANTLR3_INT32 dfa2_T600[] = { 3857, 3271, -1, -1, 3856, 3276, 3852, -1, 3860, 3853, 3859, 3854, -1, 3860, 3273, 3852, -1, -1, -1, 3860, 1080, -1, -1, 3855, 3858, 242, -1, -1, 3860, 1080, 2969, 3226, 35, 3860, 3860, 3860, 3860 }; static const ANTLR3_INT32 dfa2_T601[] = { 2123, 2122, -1, -1, 2121, 2127, 2158, -1, 2119, 2983, 2126, 2119, -1, 2119, 2124, 2158, -1, -1, -1, 2119, -1, -1, -1, 2120, 2125, 242, -1, -1, 2119, -1, 2128, 1661, 35, 2119, 2119, 2119, 2119 }; static const ANTLR3_INT32 dfa2_T602[] = { 355, 354, -1, -1, 353, 359, 349, -1, 351, 350, 358, 351, -1, 351, 356, 349, -1, -1, -1, 351, -1, -1, -1, 352, 357, 34, -1, -1, 351, -1, 154, 66, 35, 351, 351, 351, 351 }; static const ANTLR3_INT32 dfa2_T603[] = { 1539, -1, -1, -1, -1, -1, 1539 }; static const ANTLR3_INT32 dfa2_T604[] = { 1094, -1, -1, -1, -1, -1, 1094 }; static const ANTLR3_INT32 dfa2_T605[] = { 727, -1, -1, -1, -1, -1, 727 }; static const ANTLR3_INT32 dfa2_T606[] = { 3645, -1, -1, -1, -1, -1, 3645 }; static const ANTLR3_INT32 dfa2_T607[] = { 2253, -1, -1, -1, -1, -1, 2253 }; static const ANTLR3_INT32 dfa2_T608[] = { 1527, -1, -1, -1, -1, -1, 1527 }; static const ANTLR3_INT32 dfa2_T609[] = { 3785, -1, -1, -1, -1, -1, 3785 }; static const ANTLR3_INT32 dfa2_T610[] = { 1996, -1, -1, -1, -1, -1, 1996 }; static const ANTLR3_INT32 dfa2_T611[] = { 1533, -1, -1, -1, -1, -1, 1533 }; static const ANTLR3_INT32 dfa2_T612[] = { 1543, -1, -1, -1, -1, -1, 1543 }; static const ANTLR3_INT32 dfa2_T613[] = { 2816, -1, -1, -1, -1, -1, 2816 }; static const ANTLR3_INT32 dfa2_T614[] = { 1558, -1, -1, -1, -1, -1, 1558 }; static const ANTLR3_INT32 dfa2_T615[] = { 1757, -1, -1, -1, -1, -1, 1757 }; static const ANTLR3_INT32 dfa2_T616[] = { 2285, -1, -1, -1, -1, -1, 2285 }; static const ANTLR3_INT32 dfa2_T617[] = { 2813, -1, -1, -1, -1, -1, 2813 }; static const ANTLR3_INT32 dfa2_T618[] = { 3644, -1, -1, -1, -1, -1, 3644 }; static const ANTLR3_INT32 dfa2_T619[] = { 3434, -1, -1, -1, -1, -1, 3434 }; static const ANTLR3_INT32 dfa2_T620[] = { 1987, -1, -1, -1, -1, -1, 1987 }; static const ANTLR3_INT32 dfa2_T621[] = { 2208, -1, -1, -1, -1, -1, 2208 }; static const ANTLR3_INT32 dfa2_T622[] = { 1570, -1, -1, -1, -1, -1, 1570 }; static const ANTLR3_INT32 dfa2_T623[] = { 151, -1, -1, -1, -1, -1, 151 }; static const ANTLR3_INT32 dfa2_T624[] = { 372, -1, -1, -1, -1, -1, 372 }; static const ANTLR3_INT32 dfa2_T625[] = { 384, -1, -1, -1, -1, -1, 384 }; static const ANTLR3_INT32 dfa2_T626[] = { 1150, -1, -1, -1, -1, -1, 1150 }; static const ANTLR3_INT32 dfa2_T627[] = { 1569, -1, -1, -1, -1, -1, 1569 }; static const ANTLR3_INT32 dfa2_T628[] = { 590, -1, -1, -1, -1, -1, 590 }; static const ANTLR3_INT32 dfa2_T629[] = { 2947, -1, -1, -1, -1, -1, 2947 }; static const ANTLR3_INT32 dfa2_T630[] = { 3037, -1, -1, -1, -1, -1, 3037 }; static const ANTLR3_INT32 dfa2_T631[] = { 1315, -1, -1, -1, -1, -1, 1315 }; static const ANTLR3_INT32 dfa2_T632[] = { 3877, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1596 }; static const ANTLR3_INT32 dfa2_T633[] = { 2341, -1, -1, -1, -1, -1, 2341 }; static const ANTLR3_INT32 dfa2_T634[] = { 626, -1, -1, -1, -1, -1, 626 }; static const ANTLR3_INT32 dfa2_T635[] = { 1949, -1, -1, -1, -1, -1, 1949 }; static const ANTLR3_INT32 dfa2_T636[] = { 3036, -1, -1, -1, -1, -1, 3036 }; static const ANTLR3_INT32 dfa2_T637[] = { 1866, -1, -1, -1, -1, -1, 1866 }; static const ANTLR3_INT32 dfa2_T638[] = { 2571, -1, -1, -1, -1, -1, 2571 }; static const ANTLR3_INT32 dfa2_T639[] = { 2410, -1, -1, -1, -1, -1, 2410 }; static const ANTLR3_INT32 dfa2_T640[] = { 2572, -1, -1, -1, -1, -1, 2572 }; static const ANTLR3_INT32 dfa2_T641[] = { 672, -1, -1, -1, -1, -1, 672 }; static const ANTLR3_INT32 dfa2_T642[] = { 2409, -1, -1, -1, -1, -1, 2409 }; static const ANTLR3_INT32 dfa2_T643[] = { 3355, -1, -1, -1, -1, -1, 3355 }; static const ANTLR3_INT32 dfa2_T644[] = { 2000, -1, -1, -1, -1, -1, 2000 }; static const ANTLR3_INT32 dfa2_T645[] = { 2807, -1, -1, -1, -1, -1, 2807 }; static const ANTLR3_INT32 dfa2_T646[] = { 680, -1, -1, -1, -1, -1, 680 }; static const ANTLR3_INT32 dfa2_T647[] = { 888, -1, -1, -1, -1, -1, 888 }; static const ANTLR3_INT32 dfa2_T648[] = { 1867, -1, -1, -1, -1, -1, 1867 }; static const ANTLR3_INT32 dfa2_T649[] = { 2135, -1, -1, -1, -1, -1, 2135 }; static const ANTLR3_INT32 dfa2_T650[] = { 1426, -1, -1, -1, -1, -1, 1426 }; static const ANTLR3_INT32 dfa2_T651[] = { 2667, -1, -1, -1, -1, -1, 2667 }; static const ANTLR3_INT32 dfa2_T652[] = { 889, -1, -1, -1, -1, -1, 889 }; static const ANTLR3_INT32 dfa2_T653[] = { 1112, 89, -1, -1, 2445, 97, 2446, -1, 2448, 2447, 2451, 2448, -1, 2448, 99, 2446, -1, -1, -1, 2448, 2437, -1, -1, 2449, 2451, 2450, -1, -1, 2448, 2437, 94, 2451, 35, 2448, 2448, 2448, 2448 }; static const ANTLR3_INT32 dfa2_T654[] = { 1414, 1413, -1, -1, 1412, 1418, 1899, -1, 1901, 1900, 1417, 1898, -1, 1410, 1415, 1899, -1, -1, -1, 1410, -1, -1, -1, 1411, 1416, 34, -1, -1, 1410, -1, 1419, 974, 35, 1410, 1410, 1410, 1410 }; static const ANTLR3_INT32 dfa2_T655[] = { 465, 464, -1, -1, 459, 469, 2076, -1, 1632, 2077, 468, 1189, -1, 462, 466, 2076, -1, -1, -1, 462, -1, -1, -1, 463, 467, 242, -1, -1, 462, -1, 458, 241, 35, 462, 462, 462, 462 }; static const ANTLR3_INT32 dfa2_T656[] = { 859, -1, -1, -1, -1, -1, 859 }; static const ANTLR3_INT32 dfa2_T657[] = { 185, -1, -1, -1, -1, -1, 185 }; static const ANTLR3_INT32 dfa2_T658[] = { 1925, -1, -1, -1, -1, -1, 1925 }; static const ANTLR3_INT32 dfa2_T659[] = { 385, -1, -1, -1, -1, -1, 385 }; static const ANTLR3_INT32 dfa2_T660[] = { 386, -1, -1, -1, -1, -1, 386 }; static const ANTLR3_INT32 dfa2_T661[] = { 1260, -1, -1, -1, -1, -1, 1260 }; static const ANTLR3_INT32 dfa2_T662[] = { 421, -1, -1, -1, -1, -1, 421 }; static const ANTLR3_INT32 dfa2_T663[] = { 1722, -1, -1, -1, -1, -1, 1722 }; static const ANTLR3_INT32 dfa2_T664[] = { 2394, -1, -1, -1, -1, -1, 2394 }; static const ANTLR3_INT32 dfa2_T665[] = { 671, -1, -1, -1, -1, -1, 671 }; static const ANTLR3_INT32 dfa2_T666[] = { 3003, -1, -1, -1, -1, -1, 3003 }; static const ANTLR3_INT32 dfa2_T667[] = { 3004, -1, -1, -1, -1, -1, 3004 }; static const ANTLR3_INT32 dfa2_T668[] = { 1035, -1, -1, -1, -1, -1, 1035 }; static const ANTLR3_INT32 dfa2_T669[] = { 2393, -1, -1, -1, -1, -1, 2393 }; static const ANTLR3_INT32 dfa2_T670[] = { 2797, -1, -1, -1, -1, -1, 2797 }; static const ANTLR3_INT32 dfa2_T671[] = { 3311, -1, -1, -1, -1, -1, 3311 }; static const ANTLR3_INT32 dfa2_T672[] = { 2630, -1, -1, -1, -1, -1, 2630 }; static const ANTLR3_INT32 dfa2_T673[] = { 1242, -1, -1, -1, -1, -1, 1242 }; static const ANTLR3_INT32 dfa2_T674[] = { 1259, -1, -1, -1, -1, -1, 1259 }; static const ANTLR3_INT32 dfa2_T675[] = { 2092, -1, -1, -1, 2099, 793, 2101, 3656, -1, 2101, -1, 2101, -1, 3655, -1, -1, -1, 2101, -1, -1, -1, 2102, 2103, 242, -1, -1, 2101, -1, 1205, 1228, 792, 2101, 2101, 2101, 2101 }; static const ANTLR3_INT32 dfa2_T676[] = { 3338, 2673, -1, -1, 3337, 2678, 3333, 205, 3341, 3334, 3340, 3335, -1, 3341, 3578, 3333, -1, -1, -1, 3341, 405, -1, -1, 3336, 3339, 1751, -1, -1, 3341, 405, 3030, 3031, 204, 3341, 3341, 3341, 3341 }; static const ANTLR3_INT32 dfa2_T677[] = { 355, 354, -1, -1, 1039, 359, 674, 338, 676, 3113, 358, 673, -1, 351, 356, 674, -1, -1, -1, 351, -1, -1, -1, 352, 357, 34, -1, -1, 351, -1, 944, 945, 337, 351, 351, 351, 351 }; static const ANTLR3_INT32 dfa2_T678[] = { 1466, -1, -1, -1, -1, 1014, -1, -1, -1, -1, -1, 1014, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 347 }; static const ANTLR3_INT32 dfa2_T679[] = { 2175, -1, -1, -1, -1, 1701, -1, -1, -1, -1, -1, 1701, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 802 }; static const ANTLR3_INT32 dfa2_T680[] = { 193, 89, -1, -1, 1551, 197, 1544, -1, 1546, 1545, 1549, 1546, -1, 1546, 194, 1544, -1, -1, -1, 1546, 1552, -1, -1, 1547, 1548, 1550, -1, -1, 1546, 1552, 105, 1551, 35, 1546, 1546, 1546, 1546 }; static const ANTLR3_INT32 dfa2_T681[] = { 465, 464, -1, -1, 459, 469, 460, -1, 462, 461, 468, 462, -1, 462, 466, 460, -1, -1, -1, 462, 200, -1, -1, 463, 467, 242, -1, -1, 462, -1, 458, 241, 35, 462, 462, 462, 462 }; static const ANTLR3_INT32 dfa2_T682[] = { 3205, 1576, 2092, -1, 3204, 1581, 3200, 2091, 3208, 3201, 3207, 3202, 2093, 3208, 1578, 3200, -1, -1, -1, 3208, 1080, -1, -1, 3203, 3206, 242, -1, -1, 3208, 1080, 1140, 2830, 2090, 3208, 3208, 3208, 3208 }; static const ANTLR3_INT32 dfa2_T683[] = { 476, 471, 2092, -1, 470, 480, 2085, 793, 2087, 2086, 479, 2087, -1, 2087, 477, 2085, -1, -1, -1, 2087, -1, -1, -1, 2088, 2089, 230, -1, -1, 2087, -1, 790, 794, 792, 2087, 2087, 2087, 2087 }; static const ANTLR3_INT32 dfa2_T684[] = { 1135, 1134, -1, -1, 2052, 1139, 1608, 1588, 1611, 3668, 1138, 1610, -1, 1131, 1136, 1608, -1, -1, -1, 1131, -1, -1, -1, 1132, 1137, 854, -1, -1, 1131, -1, 2051, 1584, 1585, 1131, 1131, 1131, 1131 }; static const ANTLR3_INT32 dfa2_T685[] = { 1403, 1402, -1, -1, 1401, 1407, 1437, -1, 1399, 2371, 1406, 1399, -1, 1399, 1404, 1437, -1, -1, -1, 1399, -1, -1, -1, 1400, 1405, 34, -1, -1, 1399, -1, 973, 974, 35, 1399, 1399, 1399, 1399 }; static const ANTLR3_INT32 dfa2_T686[] = { 1032, -1, -1, -1, -1, 669, -1, -1, -1, -1, -1, 669, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 347 }; static const ANTLR3_INT32 dfa2_T687[] = { 1719, -1, -1, -1, -1, 1231, -1, -1, -1, -1, -1, 1231, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 802 }; static const ANTLR3_INT32 dfa2_T688[] = { 159, 59, -1, -1, 943, 163, 332, 338, 157, 949, 162, 157, -1, 157, 160, 332, -1, -1, -1, 157, -1, -1, -1, 158, 161, 34, -1, -1, 157, -1, 944, 945, 337, 157, 157, 157, 157 }; static const ANTLR3_INT32 dfa2_T689[] = { 2579, 2578, -1, -1, 2577, 2583, 2619, -1, 2575, 2620, 2582, 2575, -1, 2575, 2580, 2619, -1, -1, -1, 2575, 754, -1, -1, 2576, 2581, 242, -1, -1, 2575, -1, 2128, 1661, 35, 2575, 2575, 2575, 2575 }; static const ANTLR3_INT32 dfa2_T690[] = { 564, 563, 641, -1, 562, 568, 1316, 952, 1318, 1317, 567, 1318, -1, 1318, 1798, 1316, -1, -1, -1, 1318, -1, -1, -1, 1319, 1320, 34, -1, -1, 1318, -1, 902, 903, 951, 1318, 1318, 1318, 1318 }; static const ANTLR3_INT32 dfa2_T691[] = { 159, 59, -1, -1, 943, 163, 332, 338, 157, 2749, 162, 157, -1, 157, 160, 332, -1, -1, -1, 157, -1, -1, -1, 158, 161, 34, -1, -1, 157, -1, 944, 945, 337, 157, 157, 157, 157 }; static const ANTLR3_INT32 dfa2_T692[] = { 1403, 1402, -1, -1, 1401, 1407, 1437, -1, 1399, 3097, 1406, 1399, -1, 1399, 1404, 1437, -1, -1, -1, 1399, -1, -1, -1, 1400, 1405, 34, -1, -1, 1399, -1, 973, 974, 35, 1399, 1399, 1399, 1399 }; static const ANTLR3_INT32 dfa2_T693[] = { 896, 895, -1, -1, 894, 900, 1358, -1, 1361, 1359, 899, 1360, -1, 892, 897, 1358, -1, -1, -1, 892, -1, -1, -1, 893, 898, 34, -1, -1, 892, -1, 580, 279, 35, 892, 892, 892, 892 }; static const ANTLR3_INT32 dfa2_T694[] = { 159, 59, -1, -1, 943, 163, 332, 338, 157, 1856, 162, 157, -1, 157, 160, 332, -1, -1, -1, 157, -1, -1, -1, 158, 161, 34, -1, -1, 157, -1, 944, 945, 337, 157, 157, 157, 157 }; static const ANTLR3_INT32 dfa2_T695[] = { 3518, 2111, -1, -1, 3517, 2116, 3534, -1, 3539, 3535, 3519, 3536, -1, 3539, 2113, 3534, -1, -1, -1, 3539, 1080, -1, -1, 3537, 3538, 242, -1, -1, 3539, 1080, 1660, 3226, 35, 3539, 3539, 3539, 3539 }; static const ANTLR3_INT32 dfa2_T696[] = { 1403, 1402, -1, -1, 1401, 1407, 1437, -1, 1399, 3606, 1406, 1399, -1, 1399, 1404, 1437, -1, -1, -1, 1399, -1, -1, -1, 1400, 1405, 34, -1, -1, 1399, -1, 973, 974, 35, 1399, 1399, 1399, 1399 }; static const ANTLR3_INT32 dfa2_T697[] = { 465, 464, -1, -1, 1236, 469, 460, 205, 462, 3012, 468, 462, -1, 462, 466, 460, -1, -1, -1, 462, -1, -1, -1, 463, 467, 854, -1, -1, 462, -1, 1237, 241, 204, 462, 462, 462, 462 }; static const ANTLR3_INT32 dfa2_T698[] = { 708, 108, -1, -1, 708, 106, 1058, 205, 1060, 1059, 708, 1057, -1, 1060, 1081, 1058, -1, -1, -1, 1060, 405, -1, -1, 1061, 708, 694, -1, -1, 1060, 405, 693, 708, 204, 1060, 1060, 1060, 1060 }; static const ANTLR3_INT32 dfa2_T699[] = { 465, 464, -1, -1, 1236, 469, 460, 205, 462, 1241, 468, 462, -1, 462, 466, 460, -1, -1, -1, 462, -1, -1, -1, 463, 467, 854, -1, -1, 462, -1, 1237, 241, 204, 462, 462, 462, 462 }; static const ANTLR3_INT32 dfa2_T700[] = { 2123, 2122, -1, -1, 2985, 2127, 2604, 1588, 2606, 3867, 2126, 2603, -1, 2119, 2124, 2604, -1, -1, -1, 2119, -1, -1, -1, 2120, 2125, 854, -1, -1, 2119, -1, 2986, 2588, 1585, 2119, 2119, 2119, 2119 }; static const ANTLR3_INT32 dfa2_T701[] = { 1403, 1402, 641, -1, 1401, 1407, 2343, 952, 2345, 2344, 1406, 2345, -1, 2345, 2752, 2343, -1, -1, -1, 2345, -1, -1, -1, 2346, 2347, 34, -1, -1, 2345, -1, 1882, 1883, 951, 2345, 2345, 2345, 2345 }; static const ANTLR3_INT32 dfa2_T702[] = { 159, 59, -1, -1, 58, 163, 332, -1, 157, 333, 162, 157, -1, 157, 160, 332, -1, -1, -1, 157, 57, -1, -1, 158, 161, 34, -1, -1, 157, -1, 154, 66, 35, 157, 157, 157, 157 }; static const ANTLR3_INT32 dfa2_T703[] = { 465, 464, -1, -1, 1236, 469, 460, 205, 462, 2211, 468, 462, -1, 462, 466, 460, -1, -1, -1, 462, -1, -1, -1, 463, 467, 854, -1, -1, 462, -1, 1237, 241, 204, 462, 462, 462, 462 }; static const ANTLR3_INT32 dfa2_T704[] = { 2153, 1686, -1, -1, 2121, 2157, 2149, -1, 2151, 2150, 2156, 2151, -1, 2151, 2154, 2149, -1, -1, -1, 2151, -1, -1, -1, 2152, 2155, 242, -1, -1, 2151, -1, 2128, 1661, 35, 2151, 2151, 2151, 2151 }; static const ANTLR3_INT32 dfa2_T705[] = { 2112, 2111, -1, -1, 2110, 2116, 2146, -1, 2108, 2981, 2115, 2108, -1, 2108, 2113, 2146, -1, -1, -1, 2108, -1, -1, -1, 2109, 2114, 242, -1, -1, 2108, -1, 1660, 1661, 35, 2108, 2108, 2108, 2108 }; static const ANTLR3_INT32 dfa2_T706[] = { 82, 82, 641, -1, 82, 80, 1504, 640, 1506, 1505, 82, 1506, -1, 1506, 82, 1504, -1, -1, -1, 1506, -1, -1, -1, 1507, 1508, 81, -1, -1, 1506, -1, 79, 82, 639, 1506, 1506, 1506, 1506 }; static const ANTLR3_INT32 dfa2_T707[] = { 2112, 2111, -1, -1, 2110, 2116, 2146, -1, 2108, 3546, 2115, 2108, -1, 2108, 2113, 2146, -1, -1, -1, 2108, -1, -1, -1, 2109, 2114, 242, -1, -1, 2108, -1, 1660, 1661, 35, 2108, 2108, 2108, 2108 }; static const ANTLR3_INT32 dfa2_T708[] = { 3586, 3043, -1, -1, 3585, 3048, 3581, 205, 3589, 3582, 3588, 3583, -1, 3589, 3745, 3581, -1, -1, -1, 3589, 405, -1, -1, 3584, 3587, 1751, -1, -1, 3589, 405, 3351, 3031, 204, 3589, 3589, 3589, 3589 }; static const ANTLR3_INT32 dfa2_T709[] = { 1668, 1667, -1, -1, 1662, 1672, 2074, -1, 1665, 2075, 1671, 1665, -1, 1665, 1669, 2074, -1, -1, -1, 1665, -1, -1, -1, 1666, 1670, 242, -1, -1, 1665, -1, 1660, 1661, 35, 1665, 1665, 1665, 1665 }; static const ANTLR3_INT32 dfa2_T710[] = { 108, 108, -1, -1, 108, 106, 198, -1, 111, 1531, 108, 111, -1, 111, 108, 198, -1, -1, -1, 111, -1, -1, -1, 112, 108, 107, -1, -1, 111, -1, 105, 108, 35, 111, 111, 111, 111 }; static const ANTLR3_INT32 dfa2_T711[] = { 159, 59, -1, -1, 58, 163, 155, 338, 157, 1364, 162, 157, -1, 157, 160, 155, -1, -1, -1, 157, -1, -1, -1, 158, 161, 34, -1, -1, 157, -1, 944, 945, 337, 157, 157, 157, 157 }; static const ANTLR3_INT32 dfa2_T712[] = { 108, 108, -1, -1, 108, 106, 198, -1, 111, 698, 108, 111, -1, 111, 108, 198, -1, -1, -1, 111, -1, -1, -1, 112, 108, 107, -1, -1, 111, -1, 105, 108, 35, 111, 111, 111, 111 }; static const ANTLR3_INT32 dfa2_T713[] = { 108, 108, -1, -1, 108, 106, 198, -1, 111, 2426, 108, 111, -1, 111, 108, 198, -1, -1, -1, 111, -1, -1, -1, 112, 108, 107, -1, -1, 111, -1, 105, 108, 35, 111, 111, 111, 111 }; static const ANTLR3_INT32 dfa2_T714[] = { 2112, 2111, -1, -1, 2110, 2116, 2146, -1, 2108, 3806, 2115, 2108, -1, 2108, 2113, 2146, -1, -1, -1, 2108, -1, -1, -1, 2109, 2114, 242, -1, -1, 2108, -1, 1660, 1661, 35, 2108, 2108, 2108, 2108 }; static const ANTLR3_INT32 dfa2_T715[] = { 2923, 1667, -1, -1, 2922, 1672, 2918, 205, 2929, 2919, 2926, 2920, -1, 2929, 2924, 2918, -1, -1, -1, 2929, 405, -1, -1, 2921, 2925, 854, -1, -1, 2929, 405, 2927, 2928, 204, 2929, 2929, 2929, 2929 }; static const ANTLR3_INT32 dfa2_T716[] = { 465, 464, -1, -1, 1236, 469, 460, 205, 462, 1234, 468, 462, -1, 462, 466, 460, -1, -1, -1, 462, -1, -1, -1, 463, 467, 854, -1, -1, 462, -1, 1237, 241, 204, 462, 462, 462, 462 }; static const ANTLR3_INT32 dfa2_T717[] = { 159, 59, -1, -1, 943, 163, 332, 338, 157, 941, 162, 157, -1, 157, 160, 332, -1, -1, -1, 157, -1, -1, -1, 158, 161, 34, -1, -1, 157, -1, 944, 945, 337, 157, 157, 157, 157 }; static const ANTLR3_INT32 dfa2_T718[] = { 249, 248, -1, -1, 852, 253, 516, 205, 518, 2704, 252, 2705, -1, 246, 250, 516, -1, -1, -1, 246, -1, -1, -1, 247, 251, 854, -1, -1, 246, -1, 853, 241, 204, 246, 246, 246, 246 }; static const ANTLR3_INT32 dfa2_T719[] = { 1403, 1402, -1, -1, 1401, 1407, 1437, -1, 1399, 2365, 1406, 1399, -1, 1399, 1404, 1437, -1, -1, -1, 1399, -1, -1, -1, 1400, 1405, 34, -1, -1, 1399, -1, 973, 974, 35, 1399, 1399, 1399, 1399 }; static const ANTLR3_INT32 dfa2_T720[] = { 249, 248, -1, -1, 852, 253, 516, 205, 518, 856, 252, 857, -1, 246, 250, 516, -1, -1, -1, 246, -1, -1, -1, 247, 251, 854, -1, -1, 246, -1, 853, 241, 204, 246, 246, 246, 246 }; static const ANTLR3_INT32 dfa2_T721[] = { 249, 248, -1, -1, 852, 253, 516, 205, 518, 1770, 252, 1771, -1, 246, 250, 516, -1, -1, -1, 246, -1, -1, -1, 247, 251, 854, -1, -1, 246, -1, 853, 241, 204, 246, 246, 246, 246 }; static const ANTLR3_INT32 dfa2_T722[] = { 56, 141, -1, -1, 334, 63, 52, 338, 54, 1012, 62, 54, -1, 54, 60, 52, -1, -1, -1, 54, -1, -1, -1, 55, 61, 65, -1, -1, 54, -1, 335, 339, 337, 54, 54, 54, 54 }; static const ANTLR3_INT32 dfa2_T723[] = { 108, 108, -1, -1, 108, 106, 198, -1, 111, 690, 108, 111, -1, 111, 108, 198, -1, -1, -1, 111, -1, -1, -1, 112, 108, 107, -1, -1, 111, -1, 105, 108, 35, 111, 111, 111, 111 }; static const ANTLR3_INT32 dfa2_T724[] = { 2123, 2122, -1, -1, 2121, 2127, 3295, -1, 2987, 3296, 2126, 2603, -1, 2119, 2124, 3295, -1, -1, -1, 2119, -1, -1, -1, 2120, 2125, 242, -1, -1, 2119, -1, 2128, 1661, 35, 2119, 2119, 2119, 2119 }; static const ANTLR3_INT32 dfa2_T725[] = { 56, 141, -1, -1, 334, 63, 52, 338, 54, 344, 62, 54, -1, 54, 60, 52, -1, -1, -1, 54, -1, -1, -1, 55, 61, 65, -1, -1, 54, -1, 335, 339, 337, 54, 54, 54, 54 }; static const ANTLR3_INT32 dfa2_T726[] = { 249, 248, -1, -1, 852, 253, 516, 205, 518, 3366, 252, 851, -1, 246, 250, 516, -1, -1, -1, 246, -1, -1, -1, 247, 251, 854, -1, -1, 246, -1, 853, 241, 204, 246, 246, 246, 246 }; static const ANTLR3_INT32 dfa2_T727[] = { 82, 82, -1, -1, 82, 80, 83, -1, 85, 1503, 82, 85, -1, 85, 82, 83, -1, -1, -1, 85, -1, -1, -1, 86, 82, 81, -1, -1, 85, -1, 79, 82, 35, 85, 85, 85, 85 }; static const ANTLR3_INT32 dfa2_T728[] = { 2654, 810, -1, -1, 2653, 815, 2649, 205, 2651, 2650, 2656, 2648, -1, 2651, 812, 2649, -1, -1, -1, 2651, 1080, -1, -1, 2652, 2655, 854, -1, -1, 2651, 1080, 1237, 2245, 204, 2651, 2651, 2651, 2651 }; static const ANTLR3_INT32 dfa2_T729[] = { 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337, 2337 }; static const ANTLR3_INT32 dfa2_T730[] = { 2943, 2943, 2943, 2943, 2943, 2943, 2943, 2943, 2943, 2943, 2943, 2943, 2943, 2943, 2943, 2943, 2943, 2943, 2943, 2943, 2943, 2943, 2943, 2943, 2943, 2943, 2943, 2943, 2943, 2943, 2943, 2943, 2943, 2943, 2943, 2943, 2943 }; static const ANTLR3_INT32 dfa2_T731[] = { 56, 141, -1, -1, 334, 63, 52, 338, 54, 1919, 62, 54, -1, 54, 60, 52, -1, -1, -1, 54, -1, -1, -1, 55, 61, 65, -1, -1, 54, -1, 335, 339, 337, 54, 54, 54, 54 }; static const ANTLR3_INT32 dfa2_T732[] = { 3849, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1596 }; static const ANTLR3_INT32 dfa2_T733[] = { 811, 810, -1, -1, 809, 815, 805, -1, 807, 2212, 814, 807, -1, 807, 812, 805, -1, -1, -1, 807, -1, -1, -1, 808, 813, 242, -1, -1, 807, -1, 458, 241, 35, 807, 807, 807, 807 }; static const ANTLR3_INT32 dfa2_T734[] = { 405, -1, -1, -1, 405, -1, 1541, 205, 715, 714, 405, 1984, -1, 715, 1093, 1541, -1, -1, -1, 715, 405, -1, -1, 716, 405, 1090, -1, -1, 715, 405, 407, 405, 1091, 715, 715, 715, 715 }; static const ANTLR3_INT32 dfa2_T735[] = { 2123, 2122, -1, -1, 2121, 2127, 2604, -1, 2606, 2605, 2126, 2603, -1, 2119, 2124, 2604, -1, -1, -1, 2119, -1, -1, -1, 2120, 2125, 242, -1, -1, 2119, -1, 2128, 1661, 35, 2119, 2119, 2119, 2119 }; static const ANTLR3_INT32 dfa2_T736[] = { 1641, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2028, -1, 2840 }; static const ANTLR3_INT32 dfa2_T737[] = { 159, 59, -1, -1, 943, 163, 628, 338, 630, 629, 162, 942, -1, 157, 160, 628, -1, -1, -1, 157, -1, -1, -1, 158, 161, 34, -1, -1, 157, -1, 944, 945, 337, 157, 157, 157, 157 }; static const ANTLR3_INT32 dfa2_T738[] = { 3138, 2493, -1, -1, 3137, 2498, 3133, 205, 3141, 3134, 3140, 3135, -1, 3141, 3416, 3133, -1, -1, -1, 3141, 405, -1, -1, 3136, 3139, 854, -1, -1, 3141, 405, 2826, 2827, 204, 3141, 3141, 3141, 3141 }; static const ANTLR3_INT32 dfa2_T739[] = { 1227, -1, -1, 793, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 242, -1, -1, -1, -1, 1205, 1228, 792 }; static const ANTLR3_INT32 dfa2_T740[] = { 56, 141, -1, -1, 334, 63, 142, 338, 145, 143, 62, 336, -1, 54, 60, 142, -1, -1, -1, 54, -1, -1, -1, 55, 61, 65, -1, -1, 54, -1, 335, 339, 337, 54, 54, 54, 54 }; static const ANTLR3_INT32 dfa2_T741[] = { 465, 464, -1, -1, 459, 469, 817, -1, 819, 1735, 468, 1736, -1, 462, 466, 817, -1, -1, -1, 462, -1, -1, -1, 463, 467, 242, -1, -1, 462, -1, 458, 241, 35, 462, 462, 462, 462 }; static const ANTLR3_INT32 dfa2_T742[] = { 465, 464, -1, -1, 459, 469, 817, -1, 819, 820, 468, 821, -1, 462, 466, 817, -1, -1, -1, 462, -1, -1, -1, 463, 467, 242, -1, -1, 462, -1, 458, 241, 35, 462, 462, 462, 462 }; static const ANTLR3_INT32 dfa2_T743[] = { 1203, -1, -1, -1, 1643, 1639, 1644, 2555, -1, 1644, -1, 1644, 1641, 2554, -1, -1, -1, 1644, -1, -1, -1, 1645, 1646, 242, -1, -1, 1644, -1, 1205, 1228, 1638, 1644, 1644, 1644, 1644 }; static const ANTLR3_INT32 dfa2_T744[] = { 1203, -1, -1, -1, 1643, 1639, 1644, 2666, -1, 1644, -1, 1644, 1641, 2665, -1, -1, -1, 1644, -1, -1, -1, 1645, 1646, 242, -1, -1, 1644, -1, 1205, 1228, 1638, 1644, 1644, 1644, 1644 }; static const ANTLR3_INT32 dfa2_T745[] = { 465, 464, -1, -1, 459, 469, 817, -1, 819, 2658, 468, 2659, -1, 462, 466, 817, -1, -1, -1, 462, -1, -1, -1, 463, 467, 242, -1, -1, 462, -1, 458, 241, 35, 462, 462, 462, 462 }; static const ANTLR3_INT32 dfa2_T746[] = { 575, 574, -1, -1, 573, 579, 569, -1, 571, 570, 578, 571, -1, 571, 576, 569, -1, -1, -1, 571, -1, -1, -1, 572, 577, 34, -1, -1, 571, -1, 580, 279, 35, 571, 571, 571, 571 }; static const ANTLR3_INT32 dfa2_T747[] = { 2112, 2111, -1, -1, 2110, 2116, 2146, -1, 2108, 2975, 2115, 2108, -1, 2108, 2113, 2146, -1, -1, -1, 2108, -1, -1, -1, 2109, 2114, 242, -1, -1, 2108, -1, 1660, 1661, 35, 2108, 2108, 2108, 2108 }; static const ANTLR3_INT32 dfa2_T748[] = { 170, 165, 1383, -1, 164, 174, 1376, 338, 1378, 1377, 173, 1378, -1, 1378, 171, 1376, -1, -1, -1, 1378, -1, -1, -1, 1379, 1380, 65, -1, -1, 1378, -1, 335, 339, 337, 1378, 1378, 1378, 1378 }; static const ANTLR3_INT32 dfa2_T749[] = { 3696, 3271, -1, -1, 3695, 3276, 3691, 403, 3699, 3692, 3698, 3693, -1, 3699, 3273, 3691, -1, -1, -1, 3699, 405, -1, -1, 3694, 3697, 854, -1, -1, 3699, 405, 3530, 2928, 402, 3699, 3699, 3699, 3699 }; static const ANTLR3_INT32 dfa2_T750[] = { 1466, -1, -1, -1, -1, 1922, -1, -1, -1, -1, -1, 1922, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 347 }; static const ANTLR3_INT32 dfa2_T751[] = { 2175, -1, -1, -1, -1, 2627, -1, -1, -1, -1, -1, 2627, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 802 }; static const ANTLR3_INT32 dfa2_T752[] = { 1414, 1413, -1, -1, 1412, 1418, 1899, -1, 1901, 2783, 1417, 2784, -1, 1410, 1415, 1899, -1, -1, -1, 1410, -1, -1, -1, 1411, 1416, 34, -1, -1, 1410, -1, 1419, 974, 35, 1410, 1410, 1410, 1410 }; static const ANTLR3_INT32 dfa2_T753[] = { 56, 141, -1, -1, 334, 63, 52, 338, 54, 340, 62, 54, -1, 54, 60, 52, -1, -1, -1, 54, -1, -1, -1, 55, 61, 65, -1, -1, 54, -1, 335, 339, 337, 54, 54, 54, 54 }; static const ANTLR3_INT32 dfa2_T754[] = { 1414, 1413, -1, -1, 1412, 1418, 1899, -1, 1901, 1902, 1417, 1903, -1, 1410, 1415, 1899, -1, -1, -1, 1410, -1, -1, -1, 1411, 1416, 34, -1, -1, 1410, -1, 1419, 974, 35, 1410, 1410, 1410, 1410 }; static const ANTLR3_INT32 dfa2_T755[] = { 1414, 1413, -1, -1, 1412, 1418, 1899, -1, 1901, 3396, 1417, 3397, -1, 1410, 1415, 1899, -1, -1, -1, 1410, -1, -1, -1, 1411, 1416, 34, -1, -1, 1410, -1, 1419, 974, 35, 1410, 1410, 1410, 1410 }; static const ANTLR3_INT32 dfa2_T756[] = { 3441, 1710, -1, -1, 3440, 1715, 3436, -1, 3444, 3437, 3443, 3438, -1, 3444, 1712, 3436, -1, -1, -1, 3444, 1080, -1, -1, 3439, 3442, 242, -1, -1, 3444, 1080, 1716, 3435, 35, 3444, 3444, 3444, 3444 }; static const ANTLR3_INT32 dfa2_T757[] = { 1790, 508, -1, -1, 1790, 506, 1788, 403, 1791, 1789, 1790, 1787, -1, 1791, 508, 1788, -1, -1, -1, 1791, 405, -1, -1, 1792, 1790, 1308, -1, -1, 1791, 405, 1307, 1790, 402, 1791, 1791, 1791, 1791 }; static const ANTLR3_INT32 dfa2_T758[] = { 2006, 1123, 1203, -1, 2005, 1128, 2001, 2012, 2013, 2002, 2008, 2003, -1, 2013, 1125, 2001, -1, -1, -1, 2013, 405, -1, -1, 2004, 2007, 854, -1, -1, 2013, 405, 2011, 2009, 2010, 2013, 2013, 2013, 2013 }; static const ANTLR3_INT32 dfa2_T759[] = { 3623, 2493, -1, -1, 3622, 2498, 3618, 205, 3626, 3619, 3625, 3620, -1, 3626, 2495, 3618, -1, -1, -1, 3626, 1080, -1, -1, 3621, 3624, 854, -1, -1, 3626, 1080, 2826, 3123, 204, 3626, 3626, 3626, 3626 }; static const ANTLR3_INT32 dfa2_T760[] = { 1032, -1, -1, -1, -1, 1495, -1, -1, -1, -1, -1, 1495, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 347 }; static const ANTLR3_INT32 dfa2_T761[] = { 1719, -1, -1, -1, -1, 2204, -1, -1, -1, -1, -1, 2204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 802 }; static const ANTLR3_INT32 dfa2_T762[] = { 1403, 1402, -1, -1, 1401, 1407, 1891, -1, 1893, 1892, 1406, 1890, -1, 1399, 1404, 1891, -1, -1, -1, 1399, -1, -1, -1, 1400, 1405, 34, -1, -1, 1399, -1, 973, 974, 35, 1399, 1399, 1399, 1399 }; static const ANTLR3_INT32 dfa2_T763[] = { 772, 771, -1, -1, 770, 776, 766, -1, 768, 767, 775, 768, -1, 768, 773, 766, -1, -1, -1, 768, -1, -1, -1, 769, 774, 230, -1, -1, 768, -1, 777, 434, 35, 768, 768, 768, 768 }; static const ANTLR3_INT32 dfa2_T764[] = { 1466, -1, -1, -1, -1, 1465, -1, 1033, -1, -1, -1, 1014, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 347 }; static const ANTLR3_INT32 dfa2_T765[] = { 2175, -1, -1, -1, -1, 2174, -1, 1720, -1, -1, -1, 1701, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 802 }; static const ANTLR3_INT32 dfa2_T766[] = { 159, 59, -1, -1, 58, 163, 332, -1, 157, 949, 162, 157, -1, 157, 160, 332, -1, -1, -1, 157, -1, -1, -1, 158, 161, 34, -1, -1, 157, -1, 154, 66, 35, 157, 157, 157, 157 }; static const ANTLR3_INT32 dfa2_T767[] = { 465, 464, -1, -1, 1236, 469, 817, 205, 819, 818, 468, 3011, -1, 462, 466, 817, -1, -1, -1, 462, -1, -1, -1, 463, 467, 854, -1, -1, 462, -1, 1237, 241, 204, 462, 462, 462, 462 }; static const ANTLR3_INT32 dfa2_T768[] = { 159, 59, -1, -1, 58, 163, 332, -1, 157, 2749, 162, 157, -1, 157, 160, 332, -1, -1, -1, 157, -1, -1, -1, 158, 161, 34, -1, -1, 157, -1, 154, 66, 35, 157, 157, 157, 157 }; static const ANTLR3_INT32 dfa2_T769[] = { 465, 464, -1, -1, 1236, 469, 817, 205, 819, 818, 468, 1240, -1, 462, 466, 817, -1, -1, -1, 462, -1, -1, -1, 463, 467, 854, -1, -1, 462, -1, 1237, 241, 204, 462, 462, 462, 462 }; static const ANTLR3_INT32 dfa2_T770[] = { 465, 464, -1, -1, 1236, 469, 817, 205, 819, 818, 468, 2210, -1, 462, 466, 817, -1, -1, -1, 462, -1, -1, -1, 463, 467, 854, -1, -1, 462, -1, 1237, 241, 204, 462, 462, 462, 462 }; static const ANTLR3_INT32 dfa2_T771[] = { 159, 59, -1, -1, 58, 163, 332, -1, 157, 1856, 162, 157, -1, 157, 160, 332, -1, -1, -1, 157, -1, -1, -1, 158, 161, 34, -1, -1, 157, -1, 154, 66, 35, 157, 157, 157, 157 }; static const ANTLR3_INT32 dfa2_T772[] = { 476, 471, 1203, -1, 470, 480, 1196, 1639, 1198, 1197, 479, 1198, -1, 1198, 1637, 1196, -1, -1, -1, 1198, -1, -1, -1, 1199, 1200, 230, -1, -1, 1198, -1, 790, 794, 1638, 1198, 1198, 1198, 1198 }; static const ANTLR3_INT32 dfa2_T773[] = { 3687, 2963, -1, -1, 3686, 2968, 3682, 205, 3690, 3683, 3689, 3684, -1, 3690, 2965, 3682, -1, -1, -1, 3690, 1080, -1, -1, 3685, 3688, 854, -1, -1, 3690, 1080, 3530, 3226, 204, 3690, 3690, 3690, 3690 }; static const ANTLR3_INT32 dfa2_T774[] = { 2030 }; static const ANTLR3_INT32 dfa2_T775[] = { 1032, -1, -1, -1, -1, 1031, -1, 1033, -1, -1, -1, 669, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 347 }; static const ANTLR3_INT32 dfa2_T776[] = { 1386 }; static const ANTLR3_INT32 dfa2_T777[] = { 1719, -1, -1, -1, -1, 1718, -1, 1720, -1, -1, -1, 1231, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 802 }; static const ANTLR3_INT32 dfa2_T778[] = { 2095 }; static const ANTLR3_INT32 dfa2_T779[] = { 465, 464, -1, -1, 1236, 469, 817, 205, 819, 818, 468, 1235, -1, 462, 466, 817, -1, -1, -1, 462, -1, -1, -1, 463, 467, 854, -1, -1, 462, -1, 1237, 241, 204, 462, 462, 462, 462 }; static const ANTLR3_INT32 dfa2_T780[] = { 465, 464, -1, -1, 459, 469, 787, -1, 462, 1635, 468, 462, -1, 462, 466, 787, -1, -1, -1, 462, -1, -1, -1, 463, 467, 242, -1, -1, 462, -1, 458, 241, 35, 462, 462, 462, 462 }; static const ANTLR3_INT32 dfa2_T781[] = { 749, 748, -1, -1, 738, 753, 1144, -1, 1590, 1145, 752, 746, -1, 746, 750, 1144, -1, -1, -1, 746, -1, -1, -1, 747, 751, 242, -1, -1, 746, -1, 732, 733, 35, 746, 746, 746, 746 }; static const ANTLR3_INT32 dfa2_T782[] = { 1124, 1123, -1, -1, 2043, 1128, 1600, 1588, 1603, 3664, 1127, 1602, -1, 1120, 1125, 1600, -1, -1, -1, 1120, -1, -1, -1, 1121, 1126, 854, -1, -1, 1120, -1, 1583, 1584, 1585, 1120, 1120, 1120, 1120 }; static const ANTLR3_INT32 dfa2_T783[] = { 465, 464, -1, -1, 459, 469, 787, -1, 462, 2558, 468, 462, -1, 462, 466, 787, -1, -1, -1, 462, -1, -1, -1, 463, 467, 242, -1, -1, 462, -1, 458, 241, 35, 462, 462, 462, 462 }; static const ANTLR3_INT32 dfa2_T784[] = { 465, 464, -1, -1, 459, 469, 787, -1, 462, 3255, 468, 462, -1, 462, 466, 787, -1, -1, -1, 462, -1, -1, -1, 463, 467, 242, -1, -1, 462, -1, 458, 241, 35, 462, 462, 462, 462 }; static const ANTLR3_INT32 dfa2_T785[] = { 1466, -1, -1, -1, -1, 1920, -1, 1033, -1, -1, -1, 1014, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 347 }; static const ANTLR3_INT32 dfa2_T786[] = { 2175, -1, -1, -1, -1, 2625, -1, 1720, -1, -1, -1, 1701, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 802 }; static const ANTLR3_INT32 dfa2_T787[] = { 1596 }; static const ANTLR3_INT32 dfa2_T788[] = { 508, 508, -1, -1, 1277, 506, 1273, -1, 1275, 1274, 1277, 1275, -1, 1275, 508, 1273, -1, -1, -1, 1275, 414, -1, -1, 1276, 1277, 1272, -1, -1, 1275, 414, 505, 1277, -1, 1275, 1275, 1275, 1275 }; static const ANTLR3_INT32 dfa2_T789[] = { 355, 354, 1383, -1, 353, 359, 2326, 338, 2328, 2327, 358, 2328, -1, 2328, 356, 2326, -1, -1, -1, 2328, -1, -1, -1, 2329, 2330, 34, -1, -1, 2328, -1, 944, 945, 337, 2328, 2328, 2328, 2328 }; static const ANTLR3_INT32 dfa2_T790[] = { 2112, 2111, -1, -1, 2977, 2116, 2596, 1588, 2598, 3863, 2115, 2595, -1, 2108, 2113, 2596, -1, -1, -1, 2108, -1, -1, -1, 2109, 2114, 854, -1, -1, 2108, -1, 2587, 2588, 1585, 2108, 2108, 2108, 2108 }; static const ANTLR3_INT32 dfa2_T791[] = { 276, 268, -1, -1, 267, 274, 269, -1, 271, 270, 276, 271, -1, 271, 276, 269, -1, -1, -1, 271, -1, -1, -1, 272, 276, 275, -1, -1, 271, -1, 273, 276, -1, 271, 271, 271, 271 }; static const ANTLR3_INT32 dfa2_T792[] = { 1032, -1, -1, -1, -1, 1493, -1, 1033, -1, -1, -1, 669, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 347 }; static const ANTLR3_INT32 dfa2_T793[] = { 1719, -1, -1, -1, -1, 2202, -1, 1720, -1, -1, -1, 1231, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 802 }; static const ANTLR3_INT32 dfa2_T794[] = { 159, 59, -1, -1, 58, 163, 332, -1, 157, 941, 162, 157, -1, 157, 160, 332, -1, -1, -1, 157, -1, -1, -1, 158, 161, 34, -1, -1, 157, -1, 154, 66, 35, 157, 157, 157, 157 }; static const ANTLR3_INT32 dfa2_T795[] = { 2141, 1675, -1, -1, 2110, 2145, 2137, -1, 2139, 2138, 2144, 2139, -1, 2139, 2142, 2137, -1, -1, -1, 2139, -1, -1, -1, 2140, 2143, 242, -1, -1, 2139, -1, 1660, 1661, 35, 2139, 2139, 2139, 2139 }; static const ANTLR3_INT32 dfa2_T796[] = { 108, 108, -1, -1, 692, 106, 390, 205, 392, 696, 108, 697, -1, 111, 108, 390, -1, -1, -1, 111, -1, -1, -1, 112, 108, 694, -1, -1, 111, -1, 693, 108, 204, 111, 111, 111, 111 }; static const ANTLR3_INT32 dfa2_T797[] = { 56, 141, -1, -1, 140, 63, 52, -1, 54, 1012, 62, 54, -1, 54, 60, 52, -1, -1, -1, 54, -1, -1, -1, 55, 61, 65, -1, -1, 54, -1, 64, 146, 35, 54, 54, 54, 54 }; static const ANTLR3_INT32 dfa2_T798[] = { 465, 464, -1, -1, 1629, 469, 1190, 1588, 1192, 1191, 468, 1628, -1, 462, 466, 1190, -1, -1, -1, 462, -1, -1, -1, 463, 467, 854, -1, -1, 462, -1, 1630, 1631, 1585, 462, 462, 462, 462 }; static const ANTLR3_INT32 dfa2_T799[] = { 56, 141, -1, -1, 140, 63, 52, -1, 54, 344, 62, 54, -1, 54, 60, 52, -1, -1, -1, 54, -1, -1, -1, 55, 61, 65, -1, -1, 54, -1, 64, 146, 35, 54, 54, 54, 54 }; static const ANTLR3_INT32 dfa2_T800[] = { 1466, -1, -1, -1, -1, 1014, -1, 1033, -1, -1, -1, 1014, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 347 }; static const ANTLR3_INT32 dfa2_T801[] = { 2175, -1, -1, -1, -1, 1701, -1, 1720, -1, -1, -1, 1701, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 802 }; static const ANTLR3_INT32 dfa2_T802[] = { 56, 141, -1, -1, 140, 63, 52, -1, 54, 1919, 62, 54, -1, 54, 60, 52, -1, -1, -1, 54, -1, -1, -1, 55, 61, 65, -1, -1, 54, -1, 64, 146, 35, 54, 54, 54, 54 }; static const ANTLR3_INT32 dfa2_T803[] = { 108, 108, -1, -1, 692, 106, 390, 205, 392, 1529, 108, 1530, -1, 111, 108, 390, -1, -1, -1, 111, -1, -1, -1, 112, 108, 694, -1, -1, 111, -1, 693, 108, 204, 111, 111, 111, 111 }; static const ANTLR3_INT32 dfa2_T804[] = { 968, 646, -1, -1, 975, 972, 964, -1, 966, 965, 971, 966, -1, 966, 969, 964, -1, -1, -1, 966, -1, -1, -1, 967, 970, 34, -1, -1, 966, -1, 973, 974, 35, 966, 966, 966, 966 }; static const ANTLR3_INT32 dfa2_T805[] = { 108, 108, -1, -1, 692, 106, 390, 205, 392, 2424, 108, 2425, -1, 111, 108, 390, -1, -1, -1, 111, -1, -1, -1, 112, 108, 694, -1, -1, 111, -1, 693, 108, 204, 111, 111, 111, 111 }; static const ANTLR3_INT32 dfa2_T806[] = { 2579, 2578, -1, -1, 2577, 2583, 3555, -1, 3303, 3556, 2582, 2575, -1, 2575, 2580, 3555, -1, -1, -1, 2575, -1, -1, -1, 2576, 2581, 242, -1, -1, 2575, -1, 2128, 1661, 35, 2575, 2575, 2575, 2575 }; static const ANTLR3_INT32 dfa2_T807[] = { 108, 108, -1, -1, 692, 106, 390, 205, 392, 3118, 108, 691, -1, 111, 108, 390, -1, -1, -1, 111, -1, -1, -1, 112, 108, 694, -1, -1, 111, -1, 693, 108, 204, 111, 111, 111, 111 }; static const ANTLR3_INT32 dfa2_T808[] = { 1017 }; static const ANTLR3_INT32 dfa2_T809[] = { 1704 }; static const ANTLR3_INT32 dfa2_T810[] = { 405, -1, 1203, -1, 405, -1, 2512, -1, 2485, 2481, 405, 2482, -1, 2485, -1, 2512, -1, -1, -1, 2485, 405, -1, -1, 2483, 2484, -1, -1, -1, 2485, 405, 407, 405, 2486, 2485, 2485, 2485, 2485 }; static const ANTLR3_INT32 dfa2_T811[] = { 1032, -1, -1, -1, -1, 669, -1, 1033, -1, -1, -1, 669, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 347 }; static const ANTLR3_INT32 dfa2_T812[] = { 1719, -1, -1, -1, -1, 1231, -1, 1720, -1, -1, -1, 1231, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 802 }; static const ANTLR3_INT32 dfa2_T813[] = { 1668, 1667, -1, -1, 1662, 1672, 2130, -1, 2132, 2133, 1671, 2134, -1, 1665, 1669, 2130, -1, -1, -1, 1665, -1, -1, -1, 1666, 1670, 242, -1, -1, 1665, -1, 1660, 1661, 35, 1665, 1665, 1665, 1665 }; static const ANTLR3_INT32 dfa2_T814[] = { 2112, 2111, -1, -1, 2110, 2116, 3281, -1, 2978, 3282, 2115, 2595, -1, 2108, 2113, 3281, -1, -1, -1, 2108, -1, -1, -1, 2109, 2114, 242, -1, -1, 2108, -1, 1660, 1661, 35, 2108, 2108, 2108, 2108 }; static const ANTLR3_INT32 dfa2_T815[] = { 108, 108, -1, -1, 108, 106, 109, -1, 111, 110, 108, 111, -1, 111, 108, 109, -1, -1, -1, 111, -1, -1, -1, 112, 108, 107, -1, -1, 111, -1, 105, 108, 35, 111, 111, 111, 111 }; static const ANTLR3_INT32 dfa2_T816[] = { 1668, 1667, -1, -1, 1662, 1672, 2130, -1, 2132, 3542, 1671, 3543, -1, 1665, 1669, 2130, -1, -1, -1, 1665, -1, -1, -1, 1666, 1670, 242, -1, -1, 1665, -1, 1660, 1661, 35, 1665, 1665, 1665, 1665 }; static const ANTLR3_INT32 dfa2_T817[] = { 2112, 2111, -1, -1, 2110, 2116, 2596, -1, 2598, 2597, 2115, 2595, -1, 2108, 2113, 2596, -1, -1, -1, 2108, -1, -1, -1, 2109, 2114, 242, -1, -1, 2108, -1, 1660, 1661, 35, 2108, 2108, 2108, 2108 }; static const ANTLR3_INT32 dfa2_T818[] = { 465, 464, -1, -1, 459, 469, 787, -1, 462, 1627, 468, 462, -1, 462, 466, 787, -1, -1, -1, 462, -1, -1, -1, 463, 467, 242, -1, -1, 462, -1, 458, 241, 35, 462, 462, 462, 462 }; static const ANTLR3_INT32 dfa2_T819[] = { 1668, 1667, -1, -1, 1662, 1672, 2130, -1, 2132, 2972, 1671, 2973, -1, 1665, 1669, 2130, -1, -1, -1, 1665, -1, -1, -1, 1666, 1670, 242, -1, -1, 1665, -1, 1660, 1661, 35, 1665, 1665, 1665, 1665 }; static const ANTLR3_INT32 dfa2_T820[] = { 508, 508, -1, -1, 1277, 506, 1273, -1, 1275, 1274, 1277, 1275, -1, 1275, 508, 1273, -1, -1, -1, 1275, 414, -1, -1, 1276, 1277, 1272, -1, -1, 1275, 414, 505, 1277, 35, 1275, 1275, 1275, 1275 }; static const ANTLR3_INT32 dfa2_T821[] = { 56, 141, -1, -1, 140, 63, 52, -1, 54, 340, 62, 54, -1, 54, 60, 52, -1, -1, -1, 54, -1, -1, -1, 55, 61, 65, -1, -1, 54, -1, 64, 146, 35, 54, 54, 54, 54 }; static const ANTLR3_INT32 dfa2_T822[] = { 896, 895, 641, -1, 894, 900, 1833, 640, 1835, 1834, 899, 1835, -1, 1835, 897, 1833, -1, -1, -1, 1835, -1, -1, -1, 1836, 1837, 34, -1, -1, 1835, -1, 580, 279, 639, 1835, 1835, 1835, 1835 }; static const ANTLR3_INT32 dfa2_T823[] = { 249, 248, -1, -1, 852, 253, 516, 205, 518, 3056, 252, 515, -1, 246, 250, 516, -1, -1, -1, 246, -1, -1, -1, 247, 251, 854, -1, -1, 246, -1, 853, 241, 204, 246, 246, 246, 246 }; static const ANTLR3_INT32 dfa2_T824[] = { 159, 59, -1, -1, 943, 163, 628, 338, 630, 947, 162, 948, -1, 157, 160, 628, -1, -1, -1, 157, -1, -1, -1, 158, 161, 34, -1, -1, 157, -1, 944, 945, 337, 157, 157, 157, 157 }; static const ANTLR3_INT32 dfa2_T825[] = { 1466, -1, -1, -1, -1, 2390, -1, 1016, -1, -1, -1, 1922, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 347 }; static const ANTLR3_INT32 dfa2_T826[] = { 2175, -1, -1, -1, -1, 3000, -1, 1703, -1, -1, -1, 2627, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 802 }; static const ANTLR3_INT32 dfa2_T827[] = { 170, 165, 641, -1, 164, 174, 634, 952, 636, 635, 173, 636, -1, 636, 950, 634, -1, -1, -1, 636, -1, -1, -1, 637, 638, 65, -1, -1, 636, -1, 335, 339, 951, 636, 636, 636, 636 }; static const ANTLR3_INT32 dfa2_T828[] = { 159, 59, -1, -1, 943, 163, 628, 338, 630, 2747, 162, 2748, -1, 157, 160, 628, -1, -1, -1, 157, -1, -1, -1, 158, 161, 34, -1, -1, 157, -1, 944, 945, 337, 157, 157, 157, 157 }; static const ANTLR3_INT32 dfa2_T829[] = { 159, 59, -1, -1, 943, 163, 628, 338, 630, 1854, 162, 1855, -1, 157, 160, 628, -1, -1, -1, 157, -1, -1, -1, 158, 161, 34, -1, -1, 157, -1, 944, 945, 337, 157, 157, 157, 157 }; static const ANTLR3_INT32 dfa2_T830[] = { 1403, 1402, -1, -1, 1401, 1407, 1891, -1, 1893, 2773, 1406, 2774, -1, 1399, 1404, 1891, -1, -1, -1, 1399, -1, -1, -1, 1400, 1405, 34, -1, -1, 1399, -1, 973, 974, 35, 1399, 1399, 1399, 1399 }; static const ANTLR3_INT32 dfa2_T831[] = { 1032, -1, -1, -1, -1, 1939, -1, 1016, -1, -1, -1, 1495, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 347 }; static const ANTLR3_INT32 dfa2_T832[] = { 1719, -1, -1, -1, -1, 2644, -1, 1703, -1, -1, -1, 2204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 802 }; static const ANTLR3_INT32 dfa2_T833[] = { 1403, 1402, -1, -1, 1401, 1407, 1891, -1, 1893, 1894, 1406, 1895, -1, 1399, 1404, 1891, -1, -1, -1, 1399, -1, -1, -1, 1400, 1405, 34, -1, -1, 1399, -1, 973, 974, 35, 1399, 1399, 1399, 1399 }; static const ANTLR3_INT32 dfa2_T834[] = { 1403, 1402, -1, -1, 1401, 1407, 1891, -1, 1893, 3387, 1406, 3388, -1, 1399, 1404, 1891, -1, -1, -1, 1399, -1, -1, -1, 1400, 1405, 34, -1, -1, 1399, -1, 973, 974, 35, 1399, 1399, 1399, 1399 }; static const ANTLR3_INT32 dfa2_T835[] = { 159, 59, -1, -1, 943, 163, 628, 338, 630, 3380, 162, 942, -1, 157, 160, 628, -1, -1, -1, 157, -1, -1, -1, 158, 161, 34, -1, -1, 157, -1, 944, 945, 337, 157, 157, 157, 157 }; static const ANTLR3_INT32 dfa2_T836[] = { 56, 141, -1, -1, 334, 63, 142, 338, 145, 1917, 62, 1918, -1, 54, 60, 142, -1, -1, -1, 54, -1, -1, -1, 55, 61, 65, -1, -1, 54, -1, 335, 339, 337, 54, 54, 54, 54 }; static const ANTLR3_INT32 dfa2_T837[] = { 2579, 2578, -1, -1, 2577, 2583, 2573, -1, 2575, 2574, 2582, 2575, -1, 2575, 2580, 2573, -1, -1, -1, 2575, -1, -1, -1, 2576, 2581, 242, -1, -1, 2575, -1, 2128, 1661, 35, 2575, 2575, 2575, 2575 }; static const ANTLR3_INT32 dfa2_T838[] = { 56, 141, -1, -1, 334, 63, 142, 338, 145, 342, 62, 343, -1, 54, 60, 142, -1, -1, -1, 54, -1, -1, -1, 55, 61, 65, -1, -1, 54, -1, 335, 339, 337, 54, 54, 54, 54 }; static const ANTLR3_INT32 dfa2_T839[] = { 295, 294, -1, -1, 284, 299, 584, -1, 907, 585, 298, 292, -1, 292, 296, 584, -1, -1, -1, 292, -1, -1, -1, 293, 297, 34, -1, -1, 292, -1, 278, 279, 35, 292, 292, 292, 292 }; static const ANTLR3_INT32 dfa2_T840[] = { 761, 760, -1, -1, 759, 765, 755, -1, 757, 756, 764, 757, -1, 757, 762, 755, -1, -1, -1, 757, -1, -1, -1, 758, 763, 230, -1, -1, 757, -1, 433, 434, 35, 757, 757, 757, 757 }; static const ANTLR3_INT32 dfa2_T841[] = { 159, 59, -1, -1, 943, 163, 628, 338, 630, 629, 162, 948, -1, 157, 160, 628, -1, -1, -1, 157, -1, -1, -1, 158, 161, 34, -1, -1, 157, -1, 944, 945, 337, 157, 157, 157, 157 }; static const ANTLR3_INT32 dfa2_T842[] = { 159, 59, -1, -1, 58, 163, 628, -1, 630, 629, 162, 627, -1, 157, 160, 628, -1, -1, -1, 157, -1, -1, -1, 158, 161, 34, -1, -1, 157, -1, 154, 66, 35, 157, 157, 157, 157 }; static const ANTLR3_INT32 dfa2_T843[] = { 56, 141, -1, -1, 334, 63, 142, 338, 145, 1010, 62, 1011, -1, 54, 60, 142, -1, -1, -1, 54, -1, -1, -1, 55, 61, 65, -1, -1, 54, -1, 335, 339, 337, 54, 54, 54, 54 }; static const ANTLR3_INT32 dfa2_T844[] = { 235, 115, -1, -1, 243, 239, 231, -1, 233, 232, 238, 233, -1, 233, 236, 231, -1, -1, -1, 233, -1, -1, -1, 234, 237, 242, -1, -1, 233, -1, 240, 241, 35, 233, 233, 233, 233 }; static const ANTLR3_INT32 dfa2_T845[] = { 1466, -1, -1, -1, -1, 2794, -1, 1016, -1, -1, -1, 1922, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 347 }; static const ANTLR3_INT32 dfa2_T846[] = { 2175, -1, -1, -1, -1, 3308, -1, 1703, -1, -1, -1, 2627, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 802 }; static const ANTLR3_INT32 dfa2_T847[] = { 159, 59, -1, -1, 943, 163, 628, 338, 630, 629, 162, 2748, -1, 157, 160, 628, -1, -1, -1, 157, -1, -1, -1, 158, 161, 34, -1, -1, 157, -1, 944, 945, 337, 157, 157, 157, 157 }; static const ANTLR3_INT32 dfa2_T848[] = { 159, 59, -1, -1, 943, 163, 628, 338, 630, 629, 162, 1855, -1, 157, 160, 628, -1, -1, -1, 157, -1, -1, -1, 158, 161, 34, -1, -1, 157, -1, 944, 945, 337, 157, 157, 157, 157 }; static const ANTLR3_INT32 dfa2_T849[] = { 56, 141, -1, -1, 334, 63, 142, 338, 145, 2793, 62, 336, -1, 54, 60, 142, -1, -1, -1, 54, -1, -1, -1, 55, 61, 65, -1, -1, 54, -1, 335, 339, 337, 54, 54, 54, 54 }; static const ANTLR3_INT32 dfa2_T850[] = { 56, 141, -1, -1, 334, 63, 142, 338, 145, 143, 62, 343, -1, 54, 60, 142, -1, -1, -1, 54, -1, -1, -1, 55, 61, 65, -1, -1, 54, -1, 335, 339, 337, 54, 54, 54, 54 }; static const ANTLR3_INT32 dfa2_T851[] = { 405, -1, 1203, -1, 405, -1, 2479, 2012, 2485, 2481, 405, 2482, -1, 2485, -1, 2479, -1, -1, -1, 2485, 405, -1, -1, 2483, 2484, -1, -1, -1, 2485, 405, 407, 405, 2480, 2485, 2485, 2485, 2485 }; static const ANTLR3_INT32 dfa2_T852[] = { 1135, 1134, -1, -1, 1133, 1139, 1129, 1588, 1131, 2539, 1138, 1131, -1, 1131, 1136, 1129, -1, -1, -1, 1131, -1, -1, -1, 1132, 1137, 854, -1, -1, 1131, -1, 2051, 1584, 1585, 1131, 1131, 1131, 1131 }; static const ANTLR3_INT32 dfa2_T853[] = { 56, 141, -1, -1, 334, 63, 142, 338, 145, 143, 62, 1011, -1, 54, 60, 142, -1, -1, -1, 54, -1, -1, -1, 55, 61, 65, -1, -1, 54, -1, 335, 339, 337, 54, 54, 54, 54 }; static const ANTLR3_INT32 dfa2_T854[] = { 1032, -1, -1, -1, -1, 2396, -1, 1016, -1, -1, -1, 1495, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 347 }; static const ANTLR3_INT32 dfa2_T855[] = { 1719, -1, -1, -1, -1, 3006, -1, 1703, -1, -1, -1, 2204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 802 }; static const ANTLR3_INT32 dfa2_T856[] = { 3338, 2673, -1, -1, 3337, 2678, 3333, 403, 3341, 3334, 3340, 3335, -1, 3341, 2675, 3333, -1, -1, -1, 3341, 405, -1, -1, 3336, 3339, 1751, -1, -1, 3341, 405, 3030, 3031, 402, 3341, 3341, 3341, 3341 }; static const ANTLR3_INT32 dfa2_T857[] = { 1874, 1873, 1383, -1, 1872, 1878, 3389, 1382, 3391, 3390, 1877, 3391, 1384, 3391, 1875, 3389, -1, -1, -1, 3391, -1, -1, -1, 3392, 3393, 34, -1, -1, 3391, -1, 1419, 974, 1381, 3391, 3391, 3391, 3391 }; static const ANTLR3_INT32 dfa2_T858[] = { 3824, 3043, -1, -1, 3823, 3048, 3819, 205, 3827, 3820, 3826, 3821, -1, 3827, 3045, 3819, -1, -1, -1, 3827, 1080, -1, -1, 3822, 3825, 1751, -1, -1, 3827, 1080, 3351, 3323, 204, 3827, 3827, 3827, 3827 }; static const ANTLR3_INT32 dfa2_T859[] = { 749, 748, -1, -1, 738, 753, 1142, -1, 746, 2029, 752, 746, -1, 746, 750, 1142, -1, -1, -1, 746, -1, -1, -1, 747, 751, 242, -1, -1, 746, -1, 732, 733, 35, 746, 746, 746, 746 }; static const ANTLR3_INT32 dfa2_T860[] = { 1135, 1134, -1, -1, 2052, 1139, 1608, 1588, 1611, 1609, 1138, 2053, -1, 1131, 1136, 1608, -1, -1, -1, 1131, -1, -1, -1, 1132, 1137, 854, -1, -1, 1131, -1, 2051, 1584, 1585, 1131, 1131, 1131, 1131 }; static const ANTLR3_INT32 dfa2_T861[] = { 2123, 2122, -1, -1, 2121, 2127, 2117, 1588, 2119, 3285, 2126, 2119, -1, 2119, 2124, 2117, -1, -1, -1, 2119, -1, -1, -1, 2120, 2125, 854, -1, -1, 2119, -1, 2986, 2588, 1585, 2119, 2119, 2119, 2119 }; static const ANTLR3_INT32 dfa2_T862[] = { 56, 141, -1, -1, 334, 63, 142, 338, 145, 143, 62, 1918, -1, 54, 60, 142, -1, -1, -1, 54, -1, -1, -1, 55, 61, 65, -1, -1, 54, -1, 335, 339, 337, 54, 54, 54, 54 }; static const ANTLR3_INT32 dfa2_T863[] = { 1466, -1, -1, -1, -1, 1922, -1, 1016, -1, -1, -1, 1922, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 347 }; static const ANTLR3_INT32 dfa2_T864[] = { 2175, -1, -1, -1, -1, 2627, -1, 1703, -1, -1, -1, 2627, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 802 }; static const ANTLR3_INT32 dfa2_T865[] = { 564, 563, -1, -1, 562, 568, 558, -1, 560, 559, 567, 560, -1, 560, 565, 558, -1, -1, -1, 560, -1, -1, -1, 561, 566, 34, -1, -1, 560, -1, 278, 279, 35, 560, 560, 560, 560 }; static const ANTLR3_INT32 dfa2_T866[] = { 1079, 108, -1, -1, 1079, 106, 1535, -1, 1537, 1536, 1079, 1534, -1, 1537, 108, 1535, -1, -1, -1, 1537, 1080, -1, -1, 1538, 1079, 107, -1, -1, 1537, 1080, 105, 1079, 35, 1537, 1537, 1537, 1537 }; static const ANTLR3_INT32 dfa2_T867[] = { 981, 980, -1, -1, 975, 985, 976, -1, 978, 977, 984, 978, -1, 978, 982, 976, -1, -1, -1, 978, 57, -1, -1, 979, 983, 34, -1, -1, 978, -1, 973, 974, 35, 978, 978, 978, 978 }; static const ANTLR3_INT32 dfa2_T868[] = { 2123, 2122, -1, -1, 2985, 2127, 2604, 1588, 2606, 2605, 2126, 2984, -1, 2119, 2124, 2604, -1, -1, -1, 2119, -1, -1, -1, 2120, 2125, 854, -1, -1, 2119, -1, 2986, 2588, 1585, 2119, 2119, 2119, 2119 }; static const ANTLR3_INT32 dfa2_T869[] = { 2505, 2504, -1, -1, 2503, 2509, 2499, -1, 2501, 2500, 2508, 2501, -1, 2501, 2506, 2499, -1, -1, -1, 2501, -1, -1, -1, 2502, 2507, 242, -1, -1, 2501, -1, 2510, 2026, 35, 2501, 2501, 2501, 2501 }; static const ANTLR3_INT32 dfa2_T870[] = { 355, 354, 641, -1, 353, 359, 1365, 952, 1367, 1366, 358, 1367, -1, 1367, 1851, 1365, -1, -1, -1, 1367, -1, -1, -1, 1368, 1369, 34, -1, -1, 1367, -1, 944, 945, 951, 1367, 1367, 1367, 1367 }; static const ANTLR3_INT32 dfa2_T871[] = { 1032, -1, -1, -1, -1, 1495, -1, 1016, -1, -1, -1, 1495, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 347 }; static const ANTLR3_INT32 dfa2_T872[] = { 1719, -1, -1, -1, -1, 2204, -1, 1703, -1, -1, -1, 2204, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 802 }; static const ANTLR3_INT32 dfa2_T873[] = { 295, 294, -1, -1, 284, 299, 1335, -1, 907, 1336, 298, 586, -1, 292, 296, 1335, -1, -1, -1, 292, -1, -1, -1, 293, 297, 34, -1, -1, 292, -1, 278, 279, 35, 292, 292, 292, 292 }; static const ANTLR3_INT32 dfa2_T874[] = { 2535, 1576, -1, -1, 2534, 1581, 2860, 403, 2865, 2861, 2537, 2862, -1, 2865, 1578, 2860, -1, -1, -1, 2865, 405, -1, -1, 2863, 2864, 854, -1, -1, 2865, 405, 2477, 2009, 402, 2865, 2865, 2865, 2865 }; static const ANTLR3_INT32 dfa2_T875[] = { 952, -1, -1, -1, -1, -1, -1, 954, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 643, -1, 1385 }; static const ANTLR3_INT32 dfa2_T876[] = { 1639, -1, -1, -1, -1, -1, -1, 1641, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1205, -1, 2094 }; static const ANTLR3_INT32 dfa2_T877[] = { 2850, -1, -1, -1, -1, -1, 2850 }; static const ANTLR3_INT32 dfa2_T878[] = { 2843, -1, -1, -1, -1, -1, 2843 }; static const ANTLR3_INT32 dfa2_T879[] = { 3160, -1, -1, -1, -1, -1, 3160 }; static const ANTLR3_INT32 dfa2_T880[] = { 3225, -1, -1, -1, -1, -1, 3225 }; static const ANTLR3_INT32 dfa2_T881[] = { 3322, -1, -1, -1, -1, -1, 3322 }; static const ANTLR3_INT32 dfa2_T882[] = { 3676, -1, -1, -1, -1, -1, 3676 }; static const ANTLR3_INT32 dfa2_T883[] = { 3501, -1, -1, -1, -1, -1, 3501 }; static const ANTLR3_INT32 dfa2_T884[] = { 3502, -1, -1, -1, -1, -1, 3502 }; static const ANTLR3_INT32 dfa2_T885[] = { 3579, -1, -1, -1, -1, -1, 3579 }; static const ANTLR3_INT32 dfa2_T886[] = { 3746, -1, -1, -1, -1, -1, 3746 }; static const ANTLR3_INT32 dfa2_T887[] = { 3580, -1, -1, -1, -1, -1, 3580 }; static const ANTLR3_INT32 dfa2_T888[] = { 1396, -1, -1, -1, -1, -1, 1396 }; static const ANTLR3_INT32 dfa2_T889[] = { 277, -1, -1, -1, -1, -1, 277 }; static const ANTLR3_INT32 dfa2_T890[] = { 581, -1, -1, -1, -1, -1, 581 }; static const ANTLR3_INT32 dfa2_T891[] = { 2755, -1, -1, -1, -1, -1, 2755 }; static const ANTLR3_INT32 dfa2_T892[] = { 1897, -1, -1, -1, -1, -1, 1897 }; static const ANTLR3_INT32 dfa2_T893[] = { 591, -1, -1, -1, -1, -1, 591 }; static const ANTLR3_INT32 dfa2_T894[] = { 1451, -1, -1, -1, -1, -1, 1451 }; static const ANTLR3_INT32 dfa2_T895[] = { 2487, -1, -1, -1, -1, -1, 2487 }; static const ANTLR3_INT32 dfa2_T896[] = { 3092, -1, -1, -1, -1, -1, 3092 }; static const ANTLR3_INT32 dfa2_T897[] = { 603, -1, -1, -1, -1, -1, 603 }; static const ANTLR3_INT32 dfa2_T898[] = { 1439, -1, -1, -1, -1, -1, 1439 }; static const ANTLR3_INT32 dfa2_T899[] = { 1357, -1, -1, -1, -1, -1, 1357 }; static const ANTLR3_INT32 dfa2_T900[] = { 1889, -1, -1, -1, -1, -1, 1889 }; static const ANTLR3_INT32 dfa2_T901[] = { 1801, -1, -1, -1, -1, -1, 1801 }; static const ANTLR3_INT32 dfa2_T902[] = { 2381, -1, -1, -1, -1, -1, 2381 }; static const ANTLR3_INT32 dfa2_T903[] = { 2298, -1, -1, -1, -1, -1, 2298 }; static const ANTLR3_INT32 dfa2_T904[] = { 3184, -1, -1, -1, -1, -1, 3184 }; static const ANTLR3_INT32 dfa2_T905[] = { 913, -1, -1, -1, -1, -1, 913 }; static const ANTLR3_INT32 dfa2_T906[] = { 921, -1, -1, -1, -1, -1, 921 }; static const ANTLR3_INT32 dfa2_T907[] = { 3541, -1, -1, -1, -1, -1, 3541 }; static const ANTLR3_INT32 dfa2_T908[] = { 1916, -1, -1, -1, -1, -1, 1916 }; static const ANTLR3_INT32 dfa2_T909[] = { 928, -1, -1, -1, -1, -1, 928 }; static const ANTLR3_INT32 dfa2_T910[] = { 2873, -1, -1, -1, -1, -1, 2873 }; static const ANTLR3_INT32 dfa2_T911[] = { 3265, -1, -1, -1, -1, -1, 3265 }; static const ANTLR3_INT32 dfa2_T912[] = { 2297, -1, -1, -1, -1, -1, 2297 }; static const ANTLR3_INT32 dfa2_T913[] = { 2727, -1, -1, -1, -1, -1, 2727 }; static const ANTLR3_INT32 dfa2_T914[] = { 2872, -1, -1, -1, -1, -1, 2872 }; static const ANTLR3_INT32 dfa2_T915[] = { 986, -1, -1, -1, -1, -1, 986 }; static const ANTLR3_INT32 dfa2_T916[] = { 782, 436, -1, -1, 459, 786, 778, 793, 780, 1195, 785, 780, -1, 780, 783, 778, -1, -1, -1, 780, -1, -1, -1, 781, 784, 242, -1, -1, 780, -1, 1636, 1631, 792, 780, 780, 780, 780 }; static const ANTLR3_INT32 dfa2_T917[] = { 2654, 810, -1, -1, 2653, 815, 2649, -1, 2651, 2650, 2656, 2648, -1, 2651, 812, 2649, -1, -1, -1, 2651, 1080, -1, -1, 2652, 2655, 242, -1, -1, 2651, 1080, 458, 2245, 35, 2651, 2651, 2651, 2651 }; static const ANTLR3_INT32 dfa2_T918[] = { 981, 980, -1, -1, 975, 985, 2360, -1, 1884, 2361, 984, 978, -1, 978, 982, 2360, -1, -1, -1, 978, -1, -1, -1, 979, 983, 34, -1, -1, 978, -1, 973, 974, 35, 978, 978, 978, 978 }; static const ANTLR3_INT32 dfa2_T919[] = { 3526, 2963, -1, -1, 3525, 2968, 3521, 205, 3531, 3522, 3529, 3523, -1, 3531, 3527, 3521, -1, -1, -1, 3531, 405, -1, -1, 3524, 3528, 854, -1, -1, 3531, 405, 3530, 2928, 204, 3531, 3531, 3531, 3531 }; static const ANTLR3_INT32 dfa2_T920[] = { 811, 810, -1, -1, 809, 815, 2708, -1, 2277, 2709, 814, 807, -1, 807, 812, 2708, -1, -1, -1, 807, -1, -1, -1, 808, 813, 242, -1, -1, 807, -1, 458, 241, 35, 807, 807, 807, 807 }; static const ANTLR3_INT32 dfa2_T921[] = { -1 }; static const ANTLR3_INT32 dfa2_T922[] = { 416, -1, -1, -1, -1, -1, 416 }; static const ANTLR3_INT32 dfa2_T923[] = { 214, -1, -1, -1, -1, -1, 214 }; static const ANTLR3_INT32 dfa2_T924[] = { 1303, -1, -1, -1, -1, -1, 1303 }; static const ANTLR3_INT32 dfa2_T925[] = { 2444, -1, -1, -1, -1, -1, 2444 }; static const ANTLR3_INT32 dfa2_T926[] = { 2815, -1, -1, -1, -1, -1, 2815 }; static const ANTLR3_INT32 dfa2_T927[] = { 1780, -1, -1, -1, -1, -1, 1780 }; static const ANTLR3_INT32 dfa2_T928[] = { 2273, -1, -1, -1, -1, -1, 2273 }; static const ANTLR3_INT32 dfa2_T929[] = { 1295, -1, -1, -1, -1, -1, 1295 }; static const ANTLR3_INT32 dfa2_T930[] = { 3365, -1, -1, -1, -1, -1, 3365 }; static const ANTLR3_INT32 dfa2_T931[] = { 532, -1, -1, -1, -1, -1, 532 }; static const ANTLR3_INT32 dfa2_T932[] = { 689, -1, -1, -1, -1, -1, 689 }; static const ANTLR3_INT32 dfa2_T933[] = { 847, -1, -1, -1, -1, -1, 847 }; static const ANTLR3_INT32 dfa2_T934[] = { 3051, -1, -1, -1, -1, -1, 3051 }; static const ANTLR3_INT32 dfa2_T935[] = { 3052, -1, -1, -1, -1, -1, 3052 }; static const ANTLR3_INT32 dfa2_T936[] = { 3875, -1, -1, -1, -1, -1, 3875 }; static const ANTLR3_INT32 dfa2_T937[] = { 3370, -1, -1, -1, -1, -1, 3370 }; static const ANTLR3_INT32 dfa2_T938[] = { 879, -1, -1, -1, -1, -1, 879 }; static const ANTLR3_INT32 dfa2_T939[] = { 3053, -1, -1, -1, -1, -1, 3053 }; static const ANTLR3_INT32 dfa2_T940[] = { 887, -1, -1, -1, -1, -1, 887 }; static const ANTLR3_INT32 dfa2_T941[] = { 1978, -1, -1, -1, -1, -1, 1978 }; static const ANTLR3_INT32 dfa2_T942[] = { 3772, -1, -1, -1, -1, -1, 3772 }; static const ANTLR3_INT32 dfa2_T943[] = { 3884, -1, -1, -1, -1, -1, 3884 }; static const ANTLR3_INT32 dfa2_T944[] = { 3314, -1, -1, -1, -1, -1, 3314 }; static const ANTLR3_INT32 dfa2_T945[] = { 3748, -1, -1, -1, -1, -1, 3748 }; static const ANTLR3_INT32 dfa2_T946[] = { 2427, -1, -1, -1, -1, -1, 2427 }; static const ANTLR3_INT32 dfa2_T947[] = { 3120, -1, -1, -1, -1, -1, 3120 }; static const ANTLR3_INT32 dfa2_T948[] = { 3835, -1, -1, -1, -1, -1, 3835 }; static const ANTLR3_INT32 dfa2_T949[] = { 2270, -1, -1, -1, -1, -1, 2270 }; static const ANTLR3_INT32 dfa2_T950[] = { 1232, -1, -1, -1, -1, -1, 1232 }; static const ANTLR3_INT32 dfa2_T951[] = { 1282, -1, -1, -1, -1, -1, 1282 }; static const ANTLR3_INT32 dfa2_T952[] = { 2092, -1, -1, -1, 2099, 793, 2101, 3511, -1, 2101, -1, 2101, -1, 3510, -1, -1, -1, 2101, -1, -1, -1, 2102, 2103, 242, -1, -1, 2101, -1, 1205, 1228, 792, 2101, 2101, 2101, 2101 }; static const ANTLR3_INT32 dfa2_T953[] = { 108, 108, -1, -1, 692, 106, 390, 205, 392, 2811, 108, 389, -1, 111, 108, 390, -1, -1, -1, 111, -1, -1, -1, 112, 108, 694, -1, -1, 111, -1, 693, 108, 204, 111, 111, 111, 111 }; static const ANTLR3_INT32 dfa2_T954[] = { 465, 464, -1, -1, 459, 469, 1190, -1, 1192, 1191, 468, 1189, -1, 462, 466, 1190, -1, -1, -1, 462, -1, -1, -1, 463, 467, 242, -1, -1, 462, -1, 458, 241, 35, 462, 462, 462, 462 }; static const ANTLR3_INT32 dfa2_T955[] = { 811, 810, -1, -1, 809, 815, 1775, -1, 1777, 1776, 814, 1774, -1, 807, 812, 1775, -1, -1, -1, 807, -1, -1, -1, 808, 813, 242, -1, -1, 807, -1, 458, 241, 35, 807, 807, 807, 807 }; static const ANTLR3_INT32 dfa2_T956[] = { 811, 810, -1, -1, 1740, 815, 1245, 1588, 1247, 3564, 814, 1244, -1, 807, 812, 1245, -1, -1, -1, 807, -1, -1, -1, 808, 813, 854, -1, -1, 807, -1, 1630, 1631, 1585, 807, 807, 807, 807 }; static const ANTLR3_INT32 dfa2_T957[] = { 508, 508, -1, -1, 508, 506, 509, 205, 511, 1786, 508, 511, -1, 511, 508, 509, -1, -1, -1, 511, -1, -1, -1, 512, 508, 1308, -1, -1, 511, -1, 1307, 508, 204, 511, 511, 511, 511 }; static const ANTLR3_INT32 dfa2_T958[] = { 3292, 2578, -1, -1, 3291, 2583, 3503, 205, 3508, 3504, 3293, 3505, -1, 3508, 3550, 3503, -1, -1, -1, 3508, 405, -1, -1, 3506, 3507, 854, -1, -1, 3508, 405, 3251, 2928, 204, 3508, 3508, 3508, 3508 }; static const ANTLR3_INT32 dfa2_T959[] = { 1711, 1710, -1, -1, 1709, 1715, 1705, -1, 1707, 1706, 1714, 1707, -1, 1707, 1712, 1705, -1, -1, -1, 1707, -1, -1, -1, 1708, 1713, 242, -1, -1, 1707, -1, 1716, 1717, 35, 1707, 1707, 1707, 1707 }; static const ANTLR3_INT32 dfa2_T960[] = { 99, 89, -1, -1, 408, 97, 409, -1, 411, 410, 415, 411, -1, 411, 99, 409, -1, -1, -1, 411, 414, -1, -1, 412, 415, 413, -1, -1, 411, 414, 94, 415, 35, 411, 411, 411, 411 }; static const ANTLR3_INT32 dfa2_T961[] = { 508, 508, -1, -1, 508, 506, 1253, -1, 1752, 1254, 508, 511, -1, 511, 508, 1253, -1, -1, -1, 511, -1, -1, -1, 512, 508, 507, -1, -1, 511, -1, 505, 508, 35, 511, 511, 511, 511 }; static const ANTLR3_INT32 dfa2_T962[] = { 221, 224, -1, -1, 223, 228, 217, -1, 219, 218, 227, 219, -1, 219, 225, 217, -1, -1, -1, 219, 222, -1, -1, 220, 226, 230, -1, -1, 219, -1, 229, 216, 35, 219, 219, 219, 219 }; static const ANTLR3_INT32 dfa2_T963[] = { 159, 59, -1, -1, 58, 163, 628, -1, 630, 631, 162, 632, -1, 157, 160, 628, -1, -1, -1, 157, -1, -1, -1, 158, 161, 34, -1, -1, 157, -1, 154, 66, 35, 157, 157, 157, 157 }; static const ANTLR3_INT32 dfa2_T964[] = { 193, 89, -1, -1, 108, 197, 189, -1, 191, 190, 196, 191, -1, 191, 194, 189, -1, -1, -1, 191, -1, -1, -1, 192, 195, 107, -1, -1, 191, -1, 105, 108, 35, 191, 191, 191, 191 }; static const ANTLR3_INT32 dfa2_T965[] = { 981, 980, -1, -1, 975, 985, 1421, -1, 1423, 1422, 984, 1420, -1, 978, 982, 1421, -1, -1, -1, 978, -1, -1, -1, 979, 983, 34, -1, -1, 978, -1, 973, 974, 35, 978, 978, 978, 978 }; static const ANTLR3_INT32 dfa2_T966[] = { 159, 59, -1, -1, 58, 163, 628, -1, 630, 1374, 162, 1375, -1, 157, 160, 628, -1, -1, -1, 157, -1, -1, -1, 158, 161, 34, -1, -1, 157, -1, 154, 66, 35, 157, 157, 157, 157 }; static const ANTLR3_INT32 dfa2_T967[] = { 703, 89, -1, -1, 708, 197, 699, 205, 707, 700, 706, 701, -1, 707, 704, 699, -1, -1, -1, 707, 405, -1, -1, 702, 705, 694, -1, -1, 707, 405, 693, 708, 204, 707, 707, 707, 707 }; static const ANTLR3_INT32 dfa2_T968[] = { 159, 59, -1, -1, 58, 163, 628, -1, 630, 2333, 162, 2334, -1, 157, 160, 628, -1, -1, -1, 157, -1, -1, -1, 158, 161, 34, -1, -1, 157, -1, 154, 66, 35, 157, 157, 157, 157 }; static const ANTLR3_INT32 dfa2_T969[] = { 1577, 1576, -1, -1, 1575, 1581, 2061, -1, 2548, 2062, 1580, 1573, -1, 1573, 1578, 2061, -1, -1, -1, 1573, -1, -1, -1, 1574, 1579, 242, -1, -1, 1573, -1, 1140, 733, 35, 1573, 1573, 1573, 1573 }; static const ANTLR3_INT32 dfa2_T970[] = { 56, 141, -1, -1, 140, 63, 142, -1, 145, 660, 62, 661, -1, 54, 60, 142, -1, -1, -1, 54, -1, -1, -1, 55, 61, 65, -1, -1, 54, -1, 64, 146, 35, 54, 54, 54, 54 }; static const ANTLR3_INT32 dfa2_T971[] = { 56, 141, -1, -1, 140, 63, 142, -1, 145, 147, 62, 148, -1, 54, 60, 142, -1, -1, -1, 54, -1, -1, -1, 55, 61, 65, -1, -1, 54, -1, 64, 146, 35, 54, 54, 54, 54 }; static const ANTLR3_INT32 dfa2_T972[] = { 1124, 1123, -1, -1, 1122, 1128, 1118, 1588, 1120, 2525, 1127, 1120, -1, 1120, 1125, 1118, -1, -1, -1, 1120, -1, -1, -1, 1121, 1126, 854, -1, -1, 1120, -1, 1583, 1584, 1585, 1120, 1120, 1120, 1120 }; static const ANTLR3_INT32 dfa2_T973[] = { 56, 141, -1, -1, 140, 63, 142, -1, 145, 1463, 62, 1464, -1, 54, 60, 142, -1, -1, -1, 54, -1, -1, -1, 55, 61, 65, -1, -1, 54, -1, 64, 146, 35, 54, 54, 54, 54 }; static const ANTLR3_INT32 dfa2_T974[] = { 295, 294, -1, -1, 284, 299, 582, 338, 292, 1334, 298, 292, -1, 292, 296, 582, -1, -1, -1, 292, -1, -1, -1, 293, 297, 34, -1, -1, 292, -1, 902, 903, 337, 292, 292, 292, 292 }; static const ANTLR3_INT32 dfa2_T975[] = { 295, 294, -1, -1, 904, 299, 290, 338, 292, 910, 298, 292, -1, 292, 296, 290, -1, -1, -1, 292, -1, -1, -1, 293, 297, 34, -1, -1, 292, -1, 902, 903, 337, 292, 292, 292, 292 }; static const ANTLR3_INT32 dfa2_T976[] = { 981, 980, -1, -1, 1881, 985, 976, 338, 978, 1887, 984, 978, -1, 978, 982, 976, -1, -1, -1, 978, -1, -1, -1, 979, 983, 34, -1, -1, 978, -1, 1882, 1883, 337, 978, 978, 978, 978 }; static const ANTLR3_INT32 dfa2_T977[] = { 465, 464, -1, -1, 1629, 469, 1190, 1588, 1192, 2556, 468, 2557, -1, 462, 466, 1190, -1, -1, -1, 462, -1, -1, -1, 463, 467, 854, -1, -1, 462, -1, 1630, 1631, 1585, 462, 462, 462, 462 }; static const ANTLR3_INT32 dfa2_T978[] = { 295, 294, -1, -1, 904, 299, 290, 338, 292, 2730, 298, 292, -1, 292, 296, 290, -1, -1, -1, 292, -1, -1, -1, 293, 297, 34, -1, -1, 292, -1, 902, 903, 337, 292, 292, 292, 292 }; static const ANTLR3_INT32 dfa2_T979[] = { 981, 980, -1, -1, 975, 985, 1370, 338, 978, 2342, 984, 978, -1, 978, 982, 1370, -1, -1, -1, 978, -1, -1, -1, 979, 983, 34, -1, -1, 978, -1, 1882, 1883, 337, 978, 978, 978, 978 }; static const ANTLR3_INT32 dfa2_T980[] = { 2112, 2111, -1, -1, 2110, 2116, 2106, 1588, 2108, 3280, 2115, 2108, -1, 2108, 2113, 2106, -1, -1, -1, 2108, -1, -1, -1, 2109, 2114, 854, -1, -1, 2108, -1, 2587, 2588, 1585, 2108, 2108, 2108, 2108 }; static const ANTLR3_INT32 dfa2_T981[] = { 295, 294, -1, -1, 904, 299, 290, 338, 292, 1827, 298, 292, -1, 292, 296, 290, -1, -1, -1, 292, -1, -1, -1, 293, 297, 34, -1, -1, 292, -1, 902, 903, 337, 292, 292, 292, 292 }; static const ANTLR3_INT32 dfa2_T982[] = { 981, 980, -1, -1, 1881, 985, 976, 338, 978, 2769, 984, 978, -1, 978, 982, 976, -1, -1, -1, 978, -1, -1, -1, 979, 983, 34, -1, -1, 978, -1, 1882, 1883, 337, 978, 978, 978, 978 }; static const ANTLR3_INT32 dfa2_T983[] = { 1730, 810, 1203, -1, 1727, 815, 2068, 2012, 2073, 2069, 1732, 2070, -1, 2073, 812, 2068, -1, -1, -1, 2073, 405, -1, -1, 2071, 2072, 854, -1, -1, 2073, 405, 1237, 1271, 2010, 2073, 2073, 2073, 2073 }; static const ANTLR3_INT32 dfa2_T984[] = { 465, 464, -1, -1, 1629, 469, 1190, 1588, 1192, 1633, 468, 1634, -1, 462, 466, 1190, -1, -1, -1, 462, -1, -1, -1, 463, 467, 854, -1, -1, 462, -1, 1630, 1631, 1585, 462, 462, 462, 462 }; static const ANTLR3_INT32 dfa2_T985[] = { 405, -1, 1203, -1, 405, -1, 2479, 2458, 2485, 2481, 405, 2482, -1, 2485, 2867, 2479, -1, -1, -1, 2485, 405, -1, -1, 2483, 2484, 854, -1, -1, 2485, 405, 2028, 2866, 2456, 2485, 2485, 2485, 2485 }; static const ANTLR3_INT32 dfa2_T986[] = { 1414, 1413, -1, -1, 1412, 1418, 1408, -1, 1410, 2775, 1417, 1410, -1, 1410, 1415, 1408, -1, -1, -1, 1410, -1, -1, -1, 1411, 1416, 34, -1, -1, 1410, -1, 1419, 974, 35, 1410, 1410, 1410, 1410 }; static const ANTLR3_INT32 dfa2_T987[] = { 1087, 89, -1, -1, 1082, 97, 1083, 205, 1088, 1084, 1087, 1085, -1, 1088, 99, 1083, -1, -1, -1, 1088, 1080, -1, -1, 1086, 1087, 206, -1, -1, 1088, 1080, 202, 1087, 204, 1088, 1088, 1088, 1088 }; static const ANTLR3_INT32 dfa2_T988[] = { 1203, -1, -1, -1, 1643, 1639, 1644, 2460, -1, 1644, -1, 1644, 1641, 2459, -1, -1, -1, 1644, -1, -1, -1, 1645, 1646, 242, -1, -1, 1644, -1, 1205, 1228, 1638, 1644, 1644, 1644, 1644 }; static const ANTLR3_INT32 dfa2_T989[] = { 1203, -1, -1, -1, 1643, 1639, 1644, 2902, -1, 1644, -1, 1644, 1641, 2901, -1, -1, -1, 1644, -1, -1, -1, 1645, 1646, 242, -1, -1, 1644, -1, 1205, 1228, 1638, 1644, 1644, 1644, 1644 }; static const ANTLR3_INT32 dfa2_T990[] = { 1203, -1, -1, -1, 1643, 1639, 1644, 3263, -1, 1644, -1, 1644, 1641, 3262, -1, -1, -1, 1644, -1, -1, -1, 1645, 1646, 242, -1, -1, 1644, -1, 1205, 1228, 1638, 1644, 1644, 1644, 1644 }; static const ANTLR3_INT32 dfa2_T991[] = { 1203, -1, -1, -1, 1643, 1639, 1644, 3549, -1, 1644, -1, 1644, 1641, 3548, -1, -1, -1, 1644, -1, -1, -1, 1645, 1646, 242, -1, -1, 1644, -1, 1205, 1228, 1638, 1644, 1644, 1644, 1644 }; static const ANTLR3_INT32 dfa2_T992[] = { 981, 980, -1, -1, 1881, 985, 976, 338, 978, 3386, 984, 978, -1, 978, 982, 976, -1, -1, -1, 978, -1, -1, -1, 979, 983, 34, -1, -1, 978, -1, 1882, 1883, 337, 978, 978, 978, 978 }; static const ANTLR3_INT32 dfa2_T993[] = { 465, 464, -1, -1, 1629, 469, 1190, 1588, 1192, 3253, 468, 3254, -1, 462, 466, 1190, -1, -1, -1, 462, -1, -1, -1, 463, 467, 854, -1, -1, 462, -1, 1630, 1631, 1585, 462, 462, 462, 462 }; static const ANTLR3_INT32 dfa2_T994[] = { 87, 2458, -1, -1, -1, -1, -1, -1, 1641, 87, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2028, -1, 2829 }; static const ANTLR3_INT32 dfa2_T995[] = { 498, 497, -1, -1, 496, 502, 492, 205, 494, 1781, 501, 494, -1, 494, 499, 492, -1, -1, -1, 494, -1, -1, -1, 495, 500, 854, -1, -1, 494, -1, 853, 241, 204, 494, 494, 494, 494 }; static const ANTLR3_INT32 dfa2_T996[] = { 1383, -1, -1, -1, 1390, 338, 1392, 2336, -1, 1392, -1, 1392, -1, 2335, -1, -1, -1, 1392, -1, -1, -1, 1393, 1394, 34, -1, -1, 1392, -1, 643, 666, 337, 1392, 1392, 1392, 1392 }; static const ANTLR3_INT32 dfa2_T997[] = { 1383, -1, -1, -1, 1390, 338, 1392, 3068, -1, 1392, -1, 1392, -1, 3067, -1, -1, -1, 1392, -1, -1, -1, 1393, 1394, 34, -1, -1, 1392, -1, 643, 666, 337, 1392, 1392, 1392, 1392 }; static const ANTLR3_INT32 dfa2_T998[] = { 1383, -1, -1, -1, 1390, 338, 1392, 3375, -1, 1392, -1, 1392, -1, 3374, -1, -1, -1, 1392, -1, -1, -1, 1393, 1394, 34, -1, -1, 1392, -1, 643, 666, 337, 1392, 1392, 1392, 1392 }; static const ANTLR3_INT32 dfa2_T999[] = { 1383, -1, -1, -1, 1390, 338, 1392, 3602, -1, 1392, -1, 1392, -1, 3601, -1, -1, -1, 1392, -1, -1, -1, 1393, 1394, 34, -1, -1, 1392, -1, 643, 666, 337, 1392, 1392, 1392, 1392 }; static const ANTLR3_INT32 dfa2_T1000[] = { 1383, -1, -1, -1, 1390, 338, 1392, 3754, -1, 1392, -1, 1392, -1, 3753, -1, -1, -1, 1392, -1, -1, -1, 1393, 1394, 34, -1, -1, 1392, -1, 643, 666, 337, 1392, 1392, 1392, 1392 }; static const ANTLR3_INT32 dfa2_T1001[] = { 465, 464, -1, -1, 1629, 469, 1190, 1588, 1192, 3677, 468, 1628, -1, 462, 466, 1190, -1, -1, -1, 462, -1, -1, -1, 463, 467, 854, -1, -1, 462, -1, 1630, 1631, 1585, 462, 462, 462, 462 }; static const ANTLR3_INT32 dfa2_T1002[] = { 498, 497, -1, -1, 496, 502, 492, -1, 494, 1781, 501, 494, -1, 494, 499, 492, -1, -1, -1, 494, -1, -1, -1, 495, 500, 242, -1, -1, 494, -1, 240, 241, 35, 494, 494, 494, 494 }; static const ANTLR3_INT32 dfa2_T1003[] = { 3824, 3043, -1, -1, 3823, 3048, 3819, -1, 3827, 3820, 3826, 3821, -1, 3827, 3045, 3819, -1, -1, -1, 3827, 1080, -1, -1, 3822, 3825, 2237, -1, -1, 3827, 1080, 2690, 3323, 35, 3827, 3827, 3827, 3827 }; static const ANTLR3_INT32 dfa2_T1004[] = { 295, 294, -1, -1, 904, 299, 290, 338, 292, 906, 298, 292, -1, 292, 296, 290, -1, -1, -1, 292, -1, -1, -1, 293, 297, 34, -1, -1, 292, -1, 902, 903, 337, 292, 292, 292, 292 }; static const ANTLR3_INT32 dfa2_T1005[] = { 99, 89, -1, -1, 88, 97, 90, -1, 95, 91, 99, 92, -1, 96, 99, 90, -1, -1, -1, 96, -1, -1, -1, 93, 99, 98, -1, -1, 96, -1, 94, 99, 35, 96, 96, 96, 96 }; static const ANTLR3_INT32 dfa2_T1006[] = { 981, 980, -1, -1, 1881, 985, 976, 338, 978, 1879, 984, 978, -1, 978, 982, 976, -1, -1, -1, 978, -1, -1, -1, 979, 983, 34, -1, -1, 978, -1, 1882, 1883, 337, 978, 978, 978, 978 }; static const ANTLR3_INT32 dfa2_T1007[] = { 2579, 2578, -1, -1, 2577, 2583, 2993, -1, 2995, 2996, 2582, 2997, -1, 2575, 2580, 2993, -1, -1, -1, 2575, -1, -1, -1, 2576, 2581, 242, -1, -1, 2575, -1, 2128, 1661, 35, 2575, 2575, 2575, 2575 }; static const ANTLR3_INT32 dfa2_T1008[] = { 2579, 2578, -1, -1, 2577, 2583, 2993, -1, 2995, 3557, 2582, 3558, -1, 2575, 2580, 2993, -1, -1, -1, 2575, -1, -1, -1, 2576, 2581, 242, -1, -1, 2575, -1, 2128, 1661, 35, 2575, 2575, 2575, 2575 }; static const ANTLR3_INT32 dfa2_T1009[] = { 99, 89, -1, -1, 201, 97, 207, 205, 96, 730, 99, 96, -1, 96, 99, 207, -1, -1, -1, 96, -1, -1, -1, 93, 99, 206, -1, -1, 96, -1, 202, 99, 204, 96, 96, 96, 96 }; static const ANTLR3_INT32 dfa2_T1010[] = { 99, 89, -1, -1, 201, 97, 207, 205, 96, 213, 99, 96, -1, 96, 99, 207, -1, -1, -1, 96, -1, -1, -1, 93, 99, 206, -1, -1, 96, -1, 202, 99, 204, 96, 96, 96, 96 }; static const ANTLR3_INT32 dfa2_T1011[] = { 99, 89, -1, -1, 201, 97, 90, 205, 95, 91, 99, 203, -1, 96, 99, 90, -1, -1, -1, 96, -1, -1, -1, 93, 99, 206, -1, -1, 96, -1, 202, 99, 204, 96, 96, 96, 96 }; static const ANTLR3_INT32 dfa2_T1012[] = { 2579, 2578, -1, -1, 2577, 2583, 2993, -1, 2995, 3813, 2582, 3814, -1, 2575, 2580, 2993, -1, -1, -1, 2575, -1, -1, -1, 2576, 2581, 242, -1, -1, 2575, -1, 2128, 1661, 35, 2575, 2575, 2575, 2575 }; static const ANTLR3_INT32 dfa2_T1013[] = { 82, 82, -1, -1, 1047, 80, 382, 338, 85, 1054, 82, 85, -1, 85, 82, 382, -1, -1, -1, 85, -1, -1, -1, 86, 82, 1050, -1, -1, 85, -1, 1048, 1049, 337, 85, 85, 85, 85 }; static const ANTLR3_INT32 dfa2_T1014[] = { 1203, -1, -1, -1, 1643, 1639, 1644, 3181, -1, 1644, -1, 1644, 1641, 3180, -1, -1, -1, 1644, -1, -1, -1, 1645, 1646, 242, -1, -1, 1644, -1, 1205, 1228, 1638, 1644, 1644, 1644, 1644 }; static const ANTLR3_INT32 dfa2_T1015[] = { 3766, 2879, -1, -1, 3765, 2884, 3761, 205, 3769, 3762, 3768, 3763, -1, 3769, 2881, 3761, -1, -1, -1, 3769, 1080, -1, -1, 3764, 3767, 854, -1, -1, 3769, 1080, 3151, 3123, 204, 3769, 3769, 3769, 3769 }; static const ANTLR3_INT32 dfa2_T1016[] = { 575, 574, -1, -1, 573, 579, 1839, -1, 1352, 1840, 578, 924, -1, 571, 576, 1839, -1, -1, -1, 571, -1, -1, -1, 572, 577, 34, -1, -1, 571, -1, 580, 279, 35, 571, 571, 571, 571 }; static const ANTLR3_INT32 dfa2_T1017[] = { 99, 89, -1, -1, 201, 97, 207, 205, 96, 1568, 99, 96, -1, 96, 99, 207, -1, -1, -1, 96, -1, -1, -1, 93, 99, 206, -1, -1, 96, -1, 202, 99, 204, 96, 96, 96, 96 }; static const ANTLR3_INT32 dfa2_T1018[] = { 1203, -1, -1, -1, 1643, 1639, 1644, 2940, -1, 1644, -1, 1644, 1641, 2939, -1, -1, -1, 1644, -1, -1, -1, 1645, 1646, 242, -1, -1, 1644, -1, 1205, 1228, 1638, 1644, 1644, 1644, 1644 }; static const ANTLR3_INT32 dfa2_T1019[] = { 82, 82, -1, -1, 1047, 80, 382, 338, 85, 1975, 82, 85, -1, 85, 82, 382, -1, -1, -1, 85, -1, -1, -1, 86, 82, 1050, -1, -1, 85, -1, 1048, 1049, 337, 85, 85, 85, 85 }; static const ANTLR3_INT32 dfa2_T1020[] = { 82, 82, -1, -1, 82, 80, 682, -1, 1051, 683, 82, 85, -1, 85, 82, 682, -1, -1, -1, 85, -1, -1, -1, 86, 82, 81, -1, -1, 85, -1, 79, 82, 35, 85, 85, 85, 85 }; static const ANTLR3_INT32 dfa2_T1021[] = { 1268, 497, -1, -1, 1265, 502, 1263, 403, 1266, 1264, 1270, 1262, -1, 1266, 499, 1263, -1, -1, -1, 1266, 405, -1, -1, 1267, 1269, 854, -1, -1, 1266, 405, 853, 1271, 402, 1266, 1266, 1266, 1266 }; static const ANTLR3_INT32 dfa2_T1022[] = { 82, 82, -1, -1, 1047, 80, 382, 338, 85, 2810, 82, 85, -1, 85, 82, 382, -1, -1, -1, 85, -1, -1, -1, 86, 82, 1050, -1, -1, 85, -1, 1048, 1049, 337, 85, 85, 85, 85 }; static const ANTLR3_INT32 dfa2_T1023[] = { 3623, 2493, -1, -1, 3622, 2498, 3618, -1, 3626, 3619, 3625, 3620, -1, 3626, 2495, 3618, -1, -1, -1, 3626, 1080, -1, -1, 3621, 3624, 242, -1, -1, 3626, 1080, 2025, 3123, 35, 3626, 3626, 3626, 3626 }; static const ANTLR3_INT32 dfa2_T1024[] = { 508, 508, -1, -1, 508, 506, 1793, -1, 1309, 1794, 508, 881, -1, 511, 508, 1793, -1, -1, -1, 511, -1, -1, -1, 512, 508, 507, -1, -1, 511, -1, 505, 508, 35, 511, 511, 511, 511 }; static const ANTLR3_INT32 dfa2_T1025[] = { 99, 89, -1, -1, 201, 97, 207, 205, 96, 208, 99, 96, -1, 96, 99, 207, -1, -1, -1, 96, -1, -1, -1, 93, 99, 206, -1, -1, 96, -1, 202, 99, 204, 96, 96, 96, 96 }; static const ANTLR3_INT32 dfa2_T1026[] = { 82, 82, -1, -1, 82, 80, 83, 338, 85, 1503, 82, 85, -1, 85, 82, 83, -1, -1, -1, 85, -1, -1, -1, 86, 82, 1050, -1, -1, 85, -1, 1048, 1049, 337, 85, 85, 85, 85 }; static const ANTLR3_INT32 dfa2_T1027[] = { 3450, 2184, -1, -1, 3449, 2189, 3445, 205, 3453, 3446, 3452, 3447, -1, 3453, 3643, 3445, -1, -1, -1, 3453, 405, -1, -1, 3448, 3451, 854, -1, -1, 3453, 405, 3170, 3171, 204, 3453, 3453, 3453, 3453 }; static const ANTLR3_INT32 dfa2_T1028[] = { 896, 895, -1, -1, 894, 900, 1358, -1, 1847, 1359, 899, 892, -1, 892, 897, 1358, -1, -1, -1, 892, -1, -1, -1, 893, 898, 34, -1, -1, 892, -1, 580, 279, 35, 892, 892, 892, 892 }; static const ANTLR3_INT32 dfa2_T1029[] = { 82, 82, -1, -1, 1047, 80, 382, 338, 85, 1045, 82, 85, -1, 85, 82, 382, -1, -1, -1, 85, -1, -1, -1, 86, 82, 1050, -1, -1, 85, -1, 1048, 1049, 337, 85, 85, 85, 85 }; static const ANTLR3_INT32 dfa2_T1030[] = { 1383, -1, -1, -1, 1390, 1382, 1392, 1391, -1, 1392, 1384, 1392, -1, 1390, -1, -1, -1, 1392, -1, -1, -1, 1393, 1394, -1, -1, -1, 1392, -1, -1, -1, 1389, 1392, 1392, 1392, 1392 }; static const ANTLR3_INT32 dfa2_T1031[] = { 2092, -1, -1, -1, 2099, 2091, 2101, 2100, -1, 2101, 2093, 2101, -1, 2099, -1, -1, -1, 2101, -1, -1, -1, 2102, 2103, -1, -1, -1, 2101, -1, -1, -1, 2098, 2101, 2101, 2101, 2101 }; static const ANTLR3_INT32 dfa2_T1032[] = { 1135, 1134, -1, -1, 1133, 1139, 1175, -1, 1131, 1176, 1138, 1131, -1, 1131, 1136, 1175, -1, -1, -1, 1131, 754, -1, -1, 1132, 1137, 242, -1, -1, 1131, -1, 1140, 733, 35, 1131, 1131, 1131, 1131 }; static const ANTLR3_INT32 dfa2_T1033[] = { 295, 294, -1, -1, 284, 299, 290, -1, 292, 910, 298, 292, -1, 292, 296, 290, -1, -1, -1, 292, -1, -1, -1, 293, 297, 34, -1, -1, 292, -1, 278, 279, 35, 292, 292, 292, 292 }; static const ANTLR3_INT32 dfa2_T1034[] = { 3518, 2111, -1, -1, 3517, 2116, 3534, 205, 3539, 3535, 3519, 3536, -1, 3539, 2113, 3534, -1, -1, -1, 3539, 1080, -1, -1, 3537, 3538, 854, -1, -1, 3539, 1080, 2927, 3226, 204, 3539, 3539, 3539, 3539 }; static const ANTLR3_INT32 dfa2_T1035[] = { 1135, 1134, -1, -1, 2052, 1139, 1175, 1588, 1131, 2058, 1138, 1131, -1, 1131, 1136, 1175, -1, -1, -1, 1131, -1, -1, -1, 1132, 1137, 854, -1, -1, 1131, -1, 2051, 1584, 1585, 1131, 1131, 1131, 1131 }; static const ANTLR3_INT32 dfa2_T1036[] = { 295, 294, -1, -1, 284, 299, 290, -1, 292, 2730, 298, 292, -1, 292, 296, 290, -1, -1, -1, 292, -1, -1, -1, 293, 297, 34, -1, -1, 292, -1, 278, 279, 35, 292, 292, 292, 292 }; static const ANTLR3_INT32 dfa2_T1037[] = { 295, 294, -1, -1, 284, 299, 290, -1, 292, 1827, 298, 292, -1, 292, 296, 290, -1, -1, -1, 292, -1, -1, -1, 293, 297, 34, -1, -1, 292, -1, 278, 279, 35, 292, 292, 292, 292 }; static const ANTLR3_INT32 dfa2_T1038[] = { 159, 59, -1, -1, 58, 163, 155, -1, 157, 156, 162, 157, -1, 157, 160, 155, -1, -1, -1, 157, -1, -1, -1, 158, 161, 34, -1, -1, 157, -1, 154, 66, 35, 157, 157, 157, 157 }; static const ANTLR3_INT32 dfa2_T1039[] = { 2889, -1, -1, -1, -1, 2888, -1, 2523, -1, -1, -1, 2517, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1596 }; static const ANTLR3_INT32 dfa2_T1040[] = { 1577, 1576, -1, -1, 1575, 1581, 1571, -1, 1573, 2907, 1580, 1573, -1, 1573, 1578, 1571, -1, -1, -1, 1573, -1, -1, -1, 1574, 1579, 242, -1, -1, 1573, -1, 1140, 733, 35, 1573, 1573, 1573, 1573 }; static const ANTLR3_INT32 dfa2_T1041[] = { 643, -1, 644 }; static const ANTLR3_INT32 dfa2_T1042[] = { 1205, -1, 1206 }; static const ANTLR3_INT32 dfa2_T1043[] = { 405, -1, 1203, -1, 405, -1, 2885, 2458, 2485, 2481, 405, 2482, -1, 2485, 2867, 2885, -1, -1, -1, 2485, 405, -1, -1, 2483, 2484, 854, -1, -1, 2485, 405, 2028, 3185, 2456, 2485, 2485, 2485, 2485 }; static const ANTLR3_INT32 dfa2_T1044[] = { 1135, 1134, -1, -1, 2052, 1139, 1175, 1588, 1131, 3485, 1138, 1131, -1, 1131, 1136, 1175, -1, -1, -1, 1131, -1, -1, -1, 1132, 1137, 854, -1, -1, 1131, -1, 2051, 1584, 1585, 1131, 1131, 1131, 1131 }; static const ANTLR3_INT32 dfa2_T1045[] = { 749, 748, -1, -1, 738, 753, 744, -1, 746, 1593, 752, 746, -1, 746, 750, 744, -1, -1, -1, 746, -1, -1, -1, 747, 751, 242, -1, -1, 746, -1, 732, 733, 35, 746, 746, 746, 746 }; static const ANTLR3_INT32 dfa2_T1046[] = { 2123, 2122, -1, -1, 2985, 2127, 2158, 1588, 2119, 3553, 2126, 2119, -1, 2119, 2124, 2158, -1, -1, -1, 2119, -1, -1, -1, 2120, 2125, 854, -1, -1, 2119, -1, 2986, 2588, 1585, 2119, 2119, 2119, 2119 }; static const ANTLR3_INT32 dfa2_T1047[] = { 1135, 1134, -1, -1, 2052, 1139, 1175, 1588, 1131, 2906, 1138, 1131, -1, 1131, 1136, 1175, -1, -1, -1, 1131, -1, -1, -1, 1132, 1137, 854, -1, -1, 1131, -1, 2051, 1584, 1585, 1131, 1131, 1131, 1131 }; static const ANTLR3_INT32 dfa2_T1048[] = { 1874, 1873, -1, -1, 1872, 1878, 1914, -1, 1870, 1915, 1877, 1870, -1, 1870, 1875, 1914, -1, -1, -1, 1870, 57, -1, -1, 1871, 1876, 34, -1, -1, 1870, -1, 1419, 974, 35, 1870, 1870, 1870, 1870 }; static const ANTLR3_INT32 dfa2_T1049[] = { 99, 89, -1, -1, 201, 97, 90, 205, 95, 1566, 99, 1567, -1, 96, 99, 90, -1, -1, -1, 96, -1, -1, -1, 93, 99, 206, -1, -1, 96, -1, 202, 99, 204, 96, 96, 96, 96 }; static const ANTLR3_INT32 dfa2_T1050[] = { 749, 748, -1, -1, 738, 753, 744, -1, 746, 2515, 752, 746, -1, 746, 750, 744, -1, -1, -1, 746, -1, -1, -1, 747, 751, 242, -1, -1, 746, -1, 732, 733, 35, 746, 746, 746, 746 }; static const ANTLR3_INT32 dfa2_T1051[] = { 99, 89, -1, -1, 201, 97, 90, 205, 95, 728, 99, 729, -1, 96, 99, 90, -1, -1, -1, 96, -1, -1, -1, 93, 99, 206, -1, -1, 96, -1, 202, 99, 204, 96, 96, 96, 96 }; static const ANTLR3_INT32 dfa2_T1052[] = { 2123, 2122, -1, -1, 2985, 2127, 2158, 1588, 2119, 2990, 2126, 2119, -1, 2119, 2124, 2158, -1, -1, -1, 2119, -1, -1, -1, 2120, 2125, 854, -1, -1, 2119, -1, 2986, 2588, 1585, 2119, 2119, 2119, 2119 }; static const ANTLR3_INT32 dfa2_T1053[] = { 99, 89, -1, -1, 201, 97, 90, 205, 95, 211, 99, 212, -1, 96, 99, 90, -1, -1, -1, 96, -1, -1, -1, 93, 99, 206, -1, -1, 96, -1, 202, 99, 204, 96, 96, 96, 96 }; static const ANTLR3_INT32 dfa2_T1054[] = { 749, 748, -1, -1, 738, 753, 744, -1, 746, 3188, 752, 746, -1, 746, 750, 744, -1, -1, -1, 746, -1, -1, -1, 747, 751, 242, -1, -1, 746, -1, 732, 733, 35, 746, 746, 746, 746 }; static const ANTLR3_INT32 dfa2_T1055[] = { 99, 89, -1, -1, 201, 97, 90, 205, 95, 2453, 99, 203, -1, 96, 99, 90, -1, -1, -1, 96, -1, -1, -1, 93, 99, 206, -1, -1, 96, -1, 202, 99, 204, 96, 96, 96, 96 }; static const ANTLR3_INT32 dfa2_T1056[] = { 2522, -1, -1, -1, -1, 2521, -1, 2523, -1, -1, -1, 2041, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1596 }; static const ANTLR3_INT32 dfa2_T1057[] = { 3424, 2879, -1, -1, 3423, 2884, 3419, 205, 3427, 3420, 3426, 3421, -1, 3427, 3629, 3419, -1, -1, -1, 3427, 405, -1, -1, 3422, 3425, 854, -1, -1, 3427, 405, 3151, 2827, 204, 3427, 3427, 3427, 3427 }; static const ANTLR3_INT32 dfa2_T1058[] = { 2840 }; static const ANTLR3_INT32 dfa2_T1059[] = { 2123, 2122, -1, -1, 2985, 2127, 2158, 1588, 2119, 3812, 2126, 2119, -1, 2119, 2124, 2158, -1, -1, -1, 2119, -1, -1, -1, 2120, 2125, 854, -1, -1, 2119, -1, 2986, 2588, 1585, 2119, 2119, 2119, 2119 }; static const ANTLR3_INT32 dfa2_T1060[] = { 159, 59, -1, -1, 943, 163, 628, 338, 630, 3083, 162, 627, -1, 157, 160, 628, -1, -1, -1, 157, -1, -1, -1, 158, 161, 34, -1, -1, 157, -1, 944, 945, 337, 157, 157, 157, 157 }; static const ANTLR3_INT32 dfa2_T1061[] = { 82, 82, -1, -1, 82, 80, 1522, -1, 1051, 1523, 82, 681, -1, 85, 82, 1522, -1, -1, -1, 85, -1, -1, -1, 86, 82, 81, -1, -1, 85, -1, 79, 82, 35, 85, 85, 85, 85 }; static const ANTLR3_INT32 dfa2_T1062[] = { 1403, 1402, -1, -1, 1401, 1407, 1397, -1, 1399, 2770, 1406, 1399, -1, 1399, 1404, 1397, -1, -1, -1, 1399, -1, -1, -1, 1400, 1405, 34, -1, -1, 1399, -1, 973, 974, 35, 1399, 1399, 1399, 1399 }; static const ANTLR3_INT32 dfa2_T1063[] = { 295, 294, -1, -1, 284, 299, 290, -1, 292, 906, 298, 292, -1, 292, 296, 290, -1, -1, -1, 292, -1, -1, -1, 293, 297, 34, -1, -1, 292, -1, 278, 279, 35, 292, 292, 292, 292 }; static const ANTLR3_INT32 dfa2_T1064[] = { 811, 810, -1, -1, 809, 815, 805, -1, 807, 806, 814, 807, -1, 807, 812, 805, -1, -1, -1, 807, -1, -1, -1, 808, 813, 242, -1, -1, 807, -1, 458, 241, 35, 807, 807, 807, 807 }; static const ANTLR3_INT32 dfa2_T1065[] = { 498, 497, -1, -1, 496, 502, 1782, -1, 1299, 1783, 501, 873, -1, 494, 499, 1782, -1, -1, -1, 494, -1, -1, -1, 495, 500, 242, -1, -1, 494, -1, 240, 241, 35, 494, 494, 494, 494 }; static const ANTLR3_INT32 dfa2_T1066[] = { 641, -1, -1, -1, 956, 952, 957, 1388, -1, 957, -1, 957, 954, 1387, -1, -1, -1, 957, -1, -1, -1, 958, 959, 34, -1, -1, 957, -1, 643, 666, 951, 957, 957, 957, 957 }; static const ANTLR3_INT32 dfa2_T1067[] = { 641, -1, -1, -1, 956, 952, 957, 2295, -1, 957, -1, 957, 954, 2294, -1, -1, -1, 957, -1, -1, -1, 958, 959, 34, -1, -1, 957, -1, 643, 666, 951, 957, 957, 957, 957 }; static const ANTLR3_INT32 dfa2_T1068[] = { 641, -1, -1, -1, 956, 952, 957, 3395, -1, 957, -1, 957, 954, 3394, -1, -1, -1, 957, -1, -1, -1, 958, 959, 34, -1, -1, 957, -1, 643, 666, 951, 957, 957, 957, 957 }; static const ANTLR3_INT32 dfa2_T1069[] = { 641, -1, -1, -1, 956, 952, 957, 2739, -1, 957, -1, 957, 954, 2738, -1, -1, -1, 957, -1, -1, -1, 958, 959, 34, -1, -1, 957, -1, 643, 666, 951, 957, 957, 957, 957 }; static const ANTLR3_INT32 dfa2_T1070[] = { 641, -1, -1, -1, 956, 952, 957, 3090, -1, 957, -1, 957, 954, 3089, -1, -1, -1, 957, -1, -1, -1, 958, 959, 34, -1, -1, 957, -1, 643, 666, 951, 957, 957, 957, 957 }; static const ANTLR3_INT32 dfa2_T1071[] = { 1934, 1933, -1, -1, 1932, 1938, 1928, -1, 1930, 1929, 1937, 1930, -1, 1930, 1935, 1928, -1, -1, -1, 1930, -1, -1, -1, 1931, 1936, 34, -1, -1, 1930, -1, 1492, 1030, 35, 1930, 1930, 1930, 1930 }; static const ANTLR3_INT32 dfa2_T1072[] = { 2354, 2353, -1, -1, 2352, 2358, 2348, -1, 2350, 2349, 2357, 2350, -1, 2350, 2355, 2348, -1, -1, -1, 2350, -1, -1, -1, 2351, 2356, 34, -1, -1, 2350, -1, 2359, 974, 35, 2350, 2350, 2350, 2350 }; static const ANTLR3_INT32 dfa2_T1073[] = { 1874, 1873, -1, -1, 1872, 1878, 3105, -1, 2789, 3106, 1877, 1870, -1, 1870, 1875, 3105, -1, -1, -1, 1870, -1, -1, -1, 1871, 1876, 34, -1, -1, 1870, -1, 1419, 974, 35, 1870, 1870, 1870, 1870 }; static const ANTLR3_INT32 dfa2_T1074[] = { 56, 141, -1, -1, 334, 63, 142, 338, 145, 2389, 62, 144, -1, 54, 60, 142, -1, -1, -1, 54, -1, -1, -1, 55, 61, 65, -1, -1, 54, -1, 335, 339, 337, 54, 54, 54, 54 }; static const ANTLR3_INT32 dfa2_T1075[] = { 295, 294, -1, -1, 904, 299, 584, 338, 587, 908, 298, 909, -1, 292, 296, 584, -1, -1, -1, 292, -1, -1, -1, 293, 297, 34, -1, -1, 292, -1, 902, 903, 337, 292, 292, 292, 292 }; static const ANTLR3_INT32 dfa2_T1076[] = { 295, 294, -1, -1, 904, 299, 584, 338, 587, 1825, 298, 1826, -1, 292, 296, 584, -1, -1, -1, 292, -1, -1, -1, 293, 297, 34, -1, -1, 292, -1, 902, 903, 337, 292, 292, 292, 292 }; static const ANTLR3_INT32 dfa2_T1077[] = { 476, 471, 1203, -1, 470, 480, 1196, 1202, 1198, 1197, 479, 1198, -1, 1198, 477, 1196, -1, -1, -1, 1198, -1, -1, -1, 1199, 1200, 230, -1, -1, 1198, -1, 229, 441, 1201, 1198, 1198, 1198, 1198 }; static const ANTLR3_INT32 dfa2_T1078[] = { 1135, 1134, -1, -1, 2052, 1139, 1175, 1588, 1131, 2054, 1138, 1131, -1, 1131, 1136, 1175, -1, -1, -1, 1131, -1, -1, -1, 1132, 1137, 854, -1, -1, 1131, -1, 2051, 1584, 1585, 1131, 1131, 1131, 1131 }; static const ANTLR3_INT32 dfa2_T1079[] = { 981, 980, -1, -1, 1881, 985, 1421, 338, 1423, 2767, 984, 2768, -1, 978, 982, 1421, -1, -1, -1, 978, -1, -1, -1, 979, 983, 34, -1, -1, 978, -1, 1882, 1883, 337, 978, 978, 978, 978 }; static const ANTLR3_INT32 dfa2_T1080[] = { 2123, 2122, -1, -1, 2985, 2127, 2158, 1588, 2119, 2983, 2126, 2119, -1, 2119, 2124, 2158, -1, -1, -1, 2119, -1, -1, -1, 2120, 2125, 854, -1, -1, 2119, -1, 2986, 2588, 1585, 2119, 2119, 2119, 2119 }; static const ANTLR3_INT32 dfa2_T1081[] = { 662, -1, -1, -1, -1, 663, -1, -1, -1, -1, -1, 664 }; static const ANTLR3_INT32 dfa2_T1082[] = { 1224, -1, -1, -1, -1, 1225, -1, -1, -1, -1, -1, 1226 }; static const ANTLR3_INT32 dfa2_T1083[] = { 295, 294, -1, -1, 904, 299, 584, 338, 587, 3372, 298, 905, -1, 292, 296, 584, -1, -1, -1, 292, -1, -1, -1, 293, 297, 34, -1, -1, 292, -1, 902, 903, 337, 292, 292, 292, 292 }; static const ANTLR3_INT32 dfa2_T1084[] = { 981, 980, -1, -1, 1881, 985, 1421, 338, 1423, 3384, 984, 3385, -1, 978, 982, 1421, -1, -1, -1, 978, -1, -1, -1, 979, 983, 34, -1, -1, 978, -1, 1882, 1883, 337, 978, 978, 978, 978 }; static const ANTLR3_INT32 dfa2_T1085[] = { 508, 508, -1, -1, 508, 506, 2238, -1, 1752, 2239, 508, 1252, -1, 511, 508, 2238, -1, -1, -1, 511, -1, -1, -1, 512, 508, 507, -1, -1, 511, -1, 505, 508, 35, 511, 511, 511, 511 }; static const ANTLR3_INT32 dfa2_T1086[] = { 295, 294, -1, -1, 904, 299, 584, 338, 587, 2728, 298, 2729, -1, 292, 296, 584, -1, -1, -1, 292, -1, -1, -1, 293, 297, 34, -1, -1, 292, -1, 902, 903, 337, 292, 292, 292, 292 }; static const ANTLR3_INT32 dfa2_T1087[] = { 811, 810, -1, -1, 809, 815, 1775, -1, 2277, 1776, 814, 807, -1, 807, 812, 1775, -1, -1, -1, 807, -1, -1, -1, 808, 813, 242, -1, -1, 807, -1, 458, 241, 35, 807, 807, 807, 807 }; static const ANTLR3_INT32 dfa2_T1088[] = { 981, 980, -1, -1, 1881, 985, 1421, 338, 1423, 1885, 984, 1886, -1, 978, 982, 1421, -1, -1, -1, 978, -1, -1, -1, 979, 983, 34, -1, -1, 978, -1, 1882, 1883, 337, 978, 978, 978, 978 }; static const ANTLR3_INT32 dfa2_T1089[] = { 564, 563, -1, -1, 562, 568, 1829, -1, 1343, 1830, 567, 916, -1, 560, 565, 1829, -1, -1, -1, 560, -1, -1, -1, 561, 566, 34, -1, -1, 560, -1, 278, 279, 35, 560, 560, 560, 560 }; static const ANTLR3_INT32 dfa2_T1090[] = { 749, 748, -1, -1, 738, 753, 744, -1, 746, 1589, 752, 746, -1, 746, 750, 744, -1, -1, -1, 746, -1, -1, -1, 747, 751, 242, -1, -1, 746, -1, 732, 733, 35, 746, 746, 746, 746 }; static const ANTLR3_INT32 dfa2_T1091[] = { 811, 810, -1, -1, 809, 815, 805, 1588, 807, 2212, 814, 807, -1, 807, 812, 805, -1, -1, -1, 807, -1, -1, -1, 808, 813, 854, -1, -1, 807, -1, 1630, 1631, 1585, 807, 807, 807, 807 }; static const ANTLR3_INT32 dfa2_T1092[] = { 981, 980, -1, -1, 1881, 985, 1421, 338, 1423, 3751, 984, 1880, -1, 978, 982, 1421, -1, -1, -1, 978, -1, -1, -1, 979, 983, 34, -1, -1, 978, -1, 1882, 1883, 337, 978, 978, 978, 978 }; static const ANTLR3_INT32 dfa2_T1093[] = { 2889, -1, -1, -1, -1, 2517, -1, 2523, -1, -1, -1, 2517, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1596 }; static const ANTLR3_INT32 dfa2_T1094[] = { 295, 294, -1, -1, 904, 299, 584, 338, 587, 585, 298, 2729, -1, 292, 296, 584, -1, -1, -1, 292, -1, -1, -1, 293, 297, 34, -1, -1, 292, -1, 902, 903, 337, 292, 292, 292, 292 }; static const ANTLR3_INT32 dfa2_T1095[] = { 981, 980, -1, -1, 1881, 985, 1421, 338, 1423, 1422, 984, 1886, -1, 978, 982, 1421, -1, -1, -1, 978, -1, -1, -1, 979, 983, 34, -1, -1, 978, -1, 1882, 1883, 337, 978, 978, 978, 978 }; static const ANTLR3_INT32 dfa2_T1096[] = { 87, -1, -1, -1, -1, -1, -1, -1, -1, 87 }; static const ANTLR3_INT32 dfa2_T1097[] = { 295, 294, -1, -1, 904, 299, 584, 338, 587, 585, 298, 909, -1, 292, 296, 584, -1, -1, -1, 292, -1, -1, -1, 293, 297, 34, -1, -1, 292, -1, 902, 903, 337, 292, 292, 292, 292 }; static const ANTLR3_INT32 dfa2_T1098[] = { 3713, 2578, 2092, -1, 3712, 2583, 3707, 2091, 3715, 3708, 3714, 3709, 2093, 3715, 2580, 3707, -1, -1, -1, 3715, 1080, -1, -1, 3710, 3711, 242, -1, -1, 3715, 1080, 2128, 3226, 2090, 3715, 3715, 3715, 3715 }; static const ANTLR3_INT32 dfa2_T1099[] = { 295, 294, -1, -1, 904, 299, 584, 338, 587, 585, 298, 1826, -1, 292, 296, 584, -1, -1, -1, 292, -1, -1, -1, 293, 297, 34, -1, -1, 292, -1, 902, 903, 337, 292, 292, 292, 292 }; static const ANTLR3_INT32 dfa2_T1100[] = { 3138, 2493, -1, -1, 3137, 2498, 3133, 403, 3141, 3134, 3140, 3135, -1, 3141, 2495, 3133, -1, -1, -1, 3141, 405, -1, -1, 3136, 3139, 854, -1, -1, 3141, 405, 2826, 2827, 402, 3141, 3141, 3141, 3141 }; static const ANTLR3_INT32 dfa2_T1101[] = { 1874, 1873, -1, -1, 1872, 1878, 2383, -1, 2385, 2384, 1877, 2382, -1, 1870, 1875, 2383, -1, -1, -1, 1870, -1, -1, -1, 1871, 1876, 34, -1, -1, 1870, -1, 1419, 974, 35, 1870, 1870, 1870, 1870 }; static const ANTLR3_INT32 dfa2_T1102[] = { 981, 980, -1, -1, 1881, 985, 1421, 338, 1423, 1422, 984, 2768, -1, 978, 982, 1421, -1, -1, -1, 978, -1, -1, -1, 979, 983, 34, -1, -1, 978, -1, 1882, 1883, 337, 978, 978, 978, 978 }; static const ANTLR3_INT32 dfa2_T1103[] = { 476, 471, 2092, -1, 470, 480, 2085, 2091, 2087, 2086, 479, 2087, 2093, 2087, 477, 2085, -1, -1, -1, 2087, -1, -1, -1, 2088, 2089, 230, -1, -1, 2087, -1, 229, 441, 2090, 2087, 2087, 2087, 2087 }; static const ANTLR3_INT32 dfa2_T1104[] = { 465, 464, -1, -1, 459, 469, 503, -1, 462, 2067, 468, 462, -1, 462, 466, 503, -1, -1, -1, 462, -1, -1, -1, 463, 467, 242, -1, -1, 462, -1, 458, 241, 35, 462, 462, 462, 462 }; static const ANTLR3_INT32 dfa2_T1105[] = { 981, 980, -1, -1, 1881, 985, 1421, 338, 1423, 1422, 984, 3385, -1, 978, 982, 1421, -1, -1, -1, 978, -1, -1, -1, 979, 983, 34, -1, -1, 978, -1, 1882, 1883, 337, 978, 978, 978, 978 }; static const ANTLR3_INT32 dfa2_T1106[] = { 2522, -1, -1, -1, -1, 2041, -1, 2523, -1, -1, -1, 2041, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1596 }; static const ANTLR3_INT32 dfa2_T1107[] = { 508, 508, -1, -1, 1306, 506, 554, 205, 511, 2288, 508, 511, -1, 511, 508, 554, -1, -1, -1, 511, -1, -1, -1, 512, 508, 1308, -1, -1, 511, -1, 1307, 508, 204, 511, 511, 511, 511 }; static const ANTLR3_INT32 dfa2_T1108[] = { 508, 508, -1, -1, 1306, 506, 554, 205, 511, 3066, 508, 511, -1, 511, 508, 554, -1, -1, -1, 511, -1, -1, -1, 512, 508, 1308, -1, -1, 511, -1, 1307, 508, 204, 511, 511, 511, 511 }; static const ANTLR3_INT32 dfa2_T1109[] = { 3122, -1, -1, -1, -1, -1, 3122 }; static const ANTLR3_INT32 dfa2_T1110[] = { 3417, -1, -1, -1, -1, -1, 3417 }; static const ANTLR3_INT32 dfa2_T1111[] = { 3418, -1, -1, -1, -1, -1, 3418 }; static const ANTLR3_INT32 dfa2_T1112[] = { 3630, -1, -1, -1, -1, -1, 3630 }; static const ANTLR3_INT32 dfa2_T1113[] = { 3681, -1, -1, -1, -1, -1, 3681 }; static const ANTLR3_INT32 dfa2_T1114[] = { 3801, -1, -1, -1, -1, -1, 3801 }; static const ANTLR3_INT32 dfa2_T1115[] = { 508, 508, -1, -1, 1306, 506, 554, 205, 511, 1312, 508, 511, -1, 511, 508, 554, -1, -1, -1, 511, -1, -1, -1, 512, 508, 1308, -1, -1, 511, -1, 1307, 508, 204, 511, 511, 511, 511 }; static const ANTLR3_INT32 dfa2_T1116[] = { 1124, 1123, -1, -1, 1122, 1128, 1163, -1, 1120, 1164, 1127, 1120, -1, 1120, 1125, 1163, -1, -1, -1, 1120, 754, -1, -1, 1121, 1126, 242, -1, -1, 1120, -1, 732, 733, 35, 1120, 1120, 1120, 1120 }; static const ANTLR3_INT32 dfa2_T1117[] = { 896, 895, -1, -1, 894, 900, 890, 338, 892, 2321, 899, 892, -1, 892, 897, 890, -1, -1, -1, 892, -1, -1, -1, 893, 898, 34, -1, -1, 892, -1, 1348, 903, 337, 892, 892, 892, 892 }; static const ANTLR3_INT32 dfa2_T1118[] = { 1124, 1123, -1, -1, 2043, 1128, 1163, 1588, 1120, 2049, 1127, 1120, -1, 1120, 1125, 1163, -1, -1, -1, 1120, -1, -1, -1, 1121, 1126, 854, -1, -1, 1120, -1, 1583, 1584, 1585, 1120, 1120, 1120, 1120 }; static const ANTLR3_INT32 dfa2_T1119[] = { 896, 895, -1, -1, 1844, 900, 938, 338, 892, 1850, 899, 892, -1, 892, 897, 938, -1, -1, -1, 892, -1, -1, -1, 893, 898, 34, -1, -1, 892, -1, 1348, 903, 337, 892, 892, 892, 892 }; static const ANTLR3_INT32 dfa2_T1120[] = { 508, 508, -1, -1, 1306, 506, 554, 205, 511, 1304, 508, 511, -1, 511, 508, 554, -1, -1, -1, 511, -1, -1, -1, 512, 508, 1308, -1, -1, 511, -1, 1307, 508, 204, 511, 511, 511, 511 }; static const ANTLR3_INT32 dfa2_T1121[] = { 1874, 1873, -1, -1, 2788, 1878, 1914, 338, 1870, 2792, 1877, 1870, -1, 1870, 1875, 1914, -1, -1, -1, 1870, -1, -1, -1, 1871, 1876, 34, -1, -1, 1870, -1, 2376, 1883, 337, 1870, 1870, 1870, 1870 }; static const ANTLR3_INT32 dfa2_T1122[] = { 896, 895, -1, -1, 1844, 900, 938, 338, 892, 3379, 899, 892, -1, 892, 897, 938, -1, -1, -1, 892, -1, -1, -1, 893, 898, 34, -1, -1, 892, -1, 1348, 903, 337, 892, 892, 892, 892 }; static const ANTLR3_INT32 dfa2_T1123[] = { 1874, 1873, -1, -1, 1872, 1878, 1868, 338, 1870, 3104, 1877, 1870, -1, 1870, 1875, 1868, -1, -1, -1, 1870, -1, -1, -1, 1871, 1876, 34, -1, -1, 1870, -1, 2376, 1883, 337, 1870, 1870, 1870, 1870 }; static const ANTLR3_INT32 dfa2_T1124[] = { 896, 895, -1, -1, 1844, 900, 938, 338, 892, 2744, 899, 892, -1, 892, 897, 938, -1, -1, -1, 892, -1, -1, -1, 893, 898, 34, -1, -1, 892, -1, 1348, 903, 337, 892, 892, 892, 892 }; static const ANTLR3_INT32 dfa2_T1125[] = { 1124, 1123, -1, -1, 2043, 1128, 1163, 1588, 1120, 3479, 1127, 1120, -1, 1120, 1125, 1163, -1, -1, -1, 1120, -1, -1, -1, 1121, 1126, 854, -1, -1, 1120, -1, 1583, 1584, 1585, 1120, 1120, 1120, 1120 }; static const ANTLR3_INT32 dfa2_T1126[] = { 1874, 1873, -1, -1, 2788, 1878, 1914, 338, 1870, 3400, 1877, 1870, -1, 1870, 1875, 1914, -1, -1, -1, 1870, -1, -1, -1, 1871, 1876, 34, -1, -1, 1870, -1, 2376, 1883, 337, 1870, 1870, 1870, 1870 }; static const ANTLR3_INT32 dfa2_T1127[] = { 2112, 2111, -1, -1, 2977, 2116, 2146, 1588, 2108, 3546, 2115, 2108, -1, 2108, 2113, 2146, -1, -1, -1, 2108, -1, -1, -1, 2109, 2114, 854, -1, -1, 2108, -1, 2587, 2588, 1585, 2108, 2108, 2108, 2108 }; static const ANTLR3_INT32 dfa2_T1128[] = { 1124, 1123, -1, -1, 2043, 1128, 1163, 1588, 1120, 2899, 1127, 1120, -1, 1120, 1125, 1163, -1, -1, -1, 1120, -1, -1, -1, 1121, 1126, 854, -1, -1, 1120, -1, 1583, 1584, 1585, 1120, 1120, 1120, 1120 }; static const ANTLR3_INT32 dfa2_T1129[] = { 2112, 2111, -1, -1, 2977, 2116, 2146, 1588, 2108, 2981, 2115, 2108, -1, 2108, 2113, 2146, -1, -1, -1, 2108, -1, -1, -1, 2109, 2114, 854, -1, -1, 2108, -1, 2587, 2588, 1585, 2108, 2108, 2108, 2108 }; static const ANTLR3_INT32 dfa2_T1130[] = { 1874, 1873, -1, -1, 2788, 1878, 1914, 338, 1870, 3758, 1877, 1870, -1, 1870, 1875, 1914, -1, -1, -1, 1870, -1, -1, -1, 1871, 1876, 34, -1, -1, 1870, -1, 2376, 1883, 337, 1870, 1870, 1870, 1870 }; static const ANTLR3_INT32 dfa2_T1131[] = { 1526 }; static const ANTLR3_INT32 dfa2_T1132[] = { 1114, -1, -1, -1, -1, -1, 1114 }; static const ANTLR3_INT32 dfa2_T1133[] = { 1542, -1, -1, -1, -1, -1, 1542 }; static const ANTLR3_INT32 dfa2_T1134[] = { 3782, -1, -1, -1, -1, -1, 3782 }; static const ANTLR3_INT32 dfa2_T1135[] = { 1977, -1, -1, -1, -1, -1, 1977 }; static const ANTLR3_INT32 dfa2_T1136[] = { 2252, -1, -1, -1, -1, -1, 2252 }; static const ANTLR3_INT32 dfa2_T1137[] = { 2452, -1, -1, -1, -1, -1, 2452 }; static const ANTLR3_INT32 dfa2_T1138[] = { 3119, -1, -1, -1, -1, -1, 3119 }; static const ANTLR3_INT32 dfa2_T1139[] = { 1981, -1, -1, -1, -1, -1, 1981 }; static const ANTLR3_INT32 dfa2_T1140[] = { 1983, -1, -1, -1, -1, -1, 1983 }; static const ANTLR3_INT32 dfa2_T1141[] = { 1985, -1, -1, -1, -1, -1, 1985 }; static const ANTLR3_INT32 dfa2_T1142[] = { 2438, -1, -1, -1, -1, -1, 2438 }; static const ANTLR3_INT32 dfa2_T1143[] = { 3632, -1, -1, -1, -1, -1, 3632 }; static const ANTLR3_INT32 dfa2_T1144[] = { 3846, -1, -1, -1, -1, -1, 3846 }; static const ANTLR3_INT32 dfa2_T1145[] = { 3121, -1, -1, -1, -1, -1, 3121 }; static const ANTLR3_INT32 dfa2_T1146[] = { 3783, -1, -1, -1, -1, -1, 3783 }; static const ANTLR3_INT32 dfa2_T1147[] = { 2657, -1, -1, -1, -1, -1, 2657 }; static const ANTLR3_INT32 dfa2_T1148[] = { 2720, -1, -1, -1, -1, -1, 2720 }; static const ANTLR3_INT32 dfa2_T1149[] = { 2695, -1, -1, -1, -1, -1, 2695 }; static const ANTLR3_INT32 dfa2_T1150[] = { 1994, -1, -1, -1, -1, -1, 1994 }; static const ANTLR3_INT32 dfa2_T1151[] = { 2889, -1, -1, -1, -1, 3471, -1, 2519, -1, -1, -1, 3191, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1596 }; static const ANTLR3_INT32 dfa2_T1152[] = { 687, -1, -1, -1, -1, -1, 687 }; static const ANTLR3_INT32 dfa2_T1153[] = { 345, -1, -1, -1, -1, -1, 345 }; static const ANTLR3_INT32 dfa2_T1154[] = { 2340, -1, -1, -1, -1, -1, 2340 }; static const ANTLR3_INT32 dfa2_T1155[] = { 3035, -1, -1, -1, -1, -1, 3035 }; static const ANTLR3_INT32 dfa2_T1156[] = { 679, -1, -1, -1, -1, -1, 679 }; static const ANTLR3_INT32 dfa2_T1157[] = { 911, -1, -1, -1, -1, -1, 911 }; static const ANTLR3_INT32 dfa2_T1158[] = { 940, -1, -1, -1, -1, -1, 940 }; static const ANTLR3_INT32 dfa2_T1159[] = { 1998, -1, -1, -1, -1, -1, 1998 }; static const ANTLR3_INT32 dfa2_T1160[] = { 1036, -1, -1, -1, -1, -1, 1036 }; static const ANTLR3_INT32 dfa2_T1161[] = { 3116, -1, -1, -1, -1, -1, 3116 }; static const ANTLR3_INT32 dfa2_T1162[] = { 3353, -1, -1, -1, -1, -1, 3353 }; static const ANTLR3_INT32 dfa2_T1163[] = { 3354, -1, -1, -1, -1, -1, 3354 }; static const ANTLR3_INT32 dfa2_T1164[] = { 3259, -1, -1, -1, -1, -1, 3259 }; static const ANTLR3_INT32 dfa2_T1165[] = { 2454, -1, -1, -1, -1, -1, 2454 }; static const ANTLR3_INT32 dfa2_T1166[] = { 1594, -1, -1, -1, -1, -1, 1594 }; static const ANTLR3_INT32 dfa2_T1167[] = { 2339, -1, -1, -1, -1, -1, 2339 }; static const ANTLR3_INT32 dfa2_T1168[] = { 2593, -1, -1, -1, -1, -1, 2593 }; static const ANTLR3_INT32 dfa2_T1169[] = { 2806, -1, -1, -1, -1, -1, 2806 }; static const ANTLR3_INT32 dfa2_T1170[] = { 1044, -1, -1, -1, -1, -1, 1044 }; static const ANTLR3_INT32 dfa2_T1171[] = { 1999, -1, -1, -1, -1, -1, 1999 }; static const ANTLR3_INT32 dfa2_T1172[] = { 2408, -1, -1, -1, -1, -1, 2408 }; static const ANTLR3_INT32 dfa2_T1173[] = { 1888, -1, -1, -1, -1, -1, 1888 }; static const ANTLR3_INT32 dfa2_T1174[] = { 2092, -1, -1, -1, 2099, 793, 2101, 3489, -1, 2101, -1, 2101, -1, 3488, -1, -1, -1, 2101, -1, -1, -1, 2102, 2103, 242, -1, -1, 2101, -1, 1205, 1228, 792, 2101, 2101, 2101, 2101 }; static const ANTLR3_INT32 dfa2_T1175[] = { 2092, -1, -1, -1, 2099, 793, 2101, 3566, -1, 2101, -1, 2101, -1, 3565, -1, -1, -1, 2101, -1, -1, -1, 2102, 2103, 242, -1, -1, 2101, -1, 1205, 1228, 792, 2101, 2101, 2101, 2101 }; static const ANTLR3_INT32 dfa2_T1176[] = { 1313, -1, -1, -1, -1, -1, 1313 }; static const ANTLR3_INT32 dfa2_T1177[] = { 2805, -1, -1, -1, -1, -1, 2805 }; static const ANTLR3_INT32 dfa2_T1178[] = { 2946, -1, -1, -1, -1, -1, 2946 }; static const ANTLR3_INT32 dfa2_T1179[] = { 1314, -1, -1, -1, -1, -1, 1314 }; static const ANTLR3_INT32 dfa2_T1180[] = { 1797, -1, -1, -1, -1, -1, 1797 }; static const ANTLR3_INT32 dfa2_T1181[] = { 3590, -1, -1, -1, -1, -1, 3590 }; static const ANTLR3_INT32 dfa2_T1182[] = { 2751, -1, -1, -1, -1, -1, 2751 }; static const ANTLR3_INT32 dfa2_T1183[] = { 2945, -1, -1, -1, -1, -1, 2945 }; static const ANTLR3_INT32 dfa2_T1184[] = { 82, 82, -1, -1, 1047, 80, 682, 338, 684, 1052, 82, 1053, -1, 85, 82, 682, -1, -1, -1, 85, -1, -1, -1, 86, 82, 1050, -1, -1, 85, -1, 1048, 1049, 337, 85, 85, 85, 85 }; static const ANTLR3_INT32 dfa2_T1185[] = { 2112, 2111, -1, -1, 2977, 2116, 2146, 1588, 2108, 3806, 2115, 2108, -1, 2108, 2113, 2146, -1, -1, -1, 2108, -1, -1, -1, 2109, 2114, 854, -1, -1, 2108, -1, 2587, 2588, 1585, 2108, 2108, 2108, 2108 }; static const ANTLR3_INT32 dfa2_T1186[] = { 99, 89, -1, -1, 1559, 97, 1560, -1, 1562, 1561, 1565, 1562, -1, 1562, 99, 1560, -1, -1, -1, 1562, 1552, -1, -1, 1563, 1565, 1564, -1, -1, 1562, 1552, 94, 1565, 35, 1562, 1562, 1562, 1562 }; static const ANTLR3_INT32 dfa2_T1187[] = { 82, 82, -1, -1, 1047, 80, 682, 338, 684, 2808, 82, 2809, -1, 85, 82, 682, -1, -1, -1, 85, -1, -1, -1, 86, 82, 1050, -1, -1, 85, -1, 1048, 1049, 337, 85, 85, 85, 85 }; static const ANTLR3_INT32 dfa2_T1188[] = { 82, 82, -1, -1, 1047, 80, 682, 338, 684, 1973, 82, 1974, -1, 85, 82, 682, -1, -1, -1, 85, -1, -1, -1, 86, 82, 1050, -1, -1, 85, -1, 1048, 1049, 337, 85, 85, 85, 85 }; static const ANTLR3_INT32 dfa2_T1189[] = { 1595, -1, -1, -1, -1, 2518, -1, 2519, -1, -1, -1, 2037, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1596 }; static const ANTLR3_INT32 dfa2_T1190[] = { 338, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 34, -1, -1, -1, -1, 643, 666, 337 }; static const ANTLR3_INT32 dfa2_T1191[] = { 1135, 1134, -1, -1, 1133, 1139, 2540, -1, 2055, 2541, 1138, 1131, -1, 1131, 1136, 2540, -1, -1, -1, 1131, -1, -1, -1, 1132, 1137, 242, -1, -1, 1131, -1, 1140, 733, 35, 1131, 1131, 1131, 1131 }; static const ANTLR3_INT32 dfa2_T1192[] = { 498, 497, -1, -1, 496, 502, 542, -1, 494, 543, 501, 494, -1, 494, 499, 542, -1, -1, -1, 494, 200, -1, -1, 495, 500, 242, -1, -1, 494, -1, 240, 241, 35, 494, 494, 494, 494 }; static const ANTLR3_INT32 dfa2_T1193[] = { 896, 895, -1, -1, 1844, 900, 938, 338, 892, 1846, 899, 892, -1, 892, 897, 938, -1, -1, -1, 892, -1, -1, -1, 893, 898, 34, -1, -1, 892, -1, 1348, 903, 337, 892, 892, 892, 892 }; static const ANTLR3_INT32 dfa2_T1194[] = { 82, 82, -1, -1, 1047, 80, 682, 338, 684, 3404, 82, 1046, -1, 85, 82, 682, -1, -1, -1, 85, -1, -1, -1, 86, 82, 1050, -1, -1, 85, -1, 1048, 1049, 337, 85, 85, 85, 85 }; static const ANTLR3_INT32 dfa2_T1195[] = { 508, 508, -1, -1, 508, 506, 882, -1, 884, 885, 508, 886, -1, 511, 508, 882, -1, -1, -1, 511, -1, -1, -1, 512, 508, 507, -1, -1, 511, -1, 505, 508, 35, 511, 511, 511, 511 }; static const ANTLR3_INT32 dfa2_T1196[] = { 1874, 1873, -1, -1, 2788, 1878, 1914, 338, 1870, 2786, 1877, 1870, -1, 1870, 1875, 1914, -1, -1, -1, 1870, -1, -1, -1, 1871, 1876, 34, -1, -1, 1870, -1, 2376, 1883, 337, 1870, 1870, 1870, 1870 }; static const ANTLR3_INT32 dfa2_T1197[] = { 2522, -1, -1, -1, -1, 3194, -1, 2519, -1, -1, -1, 2894, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1596 }; static const ANTLR3_INT32 dfa2_T1198[] = { 508, 508, -1, -1, 508, 506, 882, -1, 884, 2721, 508, 2722, -1, 511, 508, 882, -1, -1, -1, 511, -1, -1, -1, 512, 508, 507, -1, -1, 511, -1, 505, 508, 35, 511, 511, 511, 511 }; static const ANTLR3_INT32 dfa2_T1199[] = { 99, 89, -1, -1, 201, 97, 90, 205, 95, 1997, 99, 92, -1, 96, 99, 90, -1, -1, -1, 96, -1, -1, -1, 93, 99, 206, -1, -1, 96, -1, 202, 99, 204, 96, 96, 96, 96 }; static const ANTLR3_INT32 dfa2_T1200[] = { 508, 508, -1, -1, 508, 506, 882, -1, 884, 1795, 508, 1796, -1, 511, 508, 882, -1, -1, -1, 511, -1, -1, -1, 512, 508, 507, -1, -1, 511, -1, 505, 508, 35, 511, 511, 511, 511 }; static const ANTLR3_INT32 dfa2_T1201[] = { 749, 748, -1, -1, 738, 753, 2031, -1, 1590, 2032, 752, 1146, -1, 746, 750, 2031, -1, -1, -1, 746, -1, -1, -1, 747, 751, 242, -1, -1, 746, -1, 732, 733, 35, 746, 746, 746, 746 }; static const ANTLR3_INT32 dfa2_T1202[] = { 82, 82, -1, -1, 1047, 80, 682, 338, 684, 683, 82, 1053, -1, 85, 82, 682, -1, -1, -1, 85, -1, -1, -1, 86, 82, 1050, -1, -1, 85, -1, 1048, 1049, 337, 85, 85, 85, 85 }; static const ANTLR3_INT32 dfa2_T1203[] = { 82, 82, -1, -1, 1047, 80, 682, 338, 684, 683, 82, 2809, -1, 85, 82, 682, -1, -1, -1, 85, -1, -1, -1, 86, 82, 1050, -1, -1, 85, -1, 1048, 1049, 337, 85, 85, 85, 85 }; static const ANTLR3_INT32 dfa2_T1204[] = { 749, 748, -1, -1, 738, 753, 1144, -1, 1147, 1145, 752, 1146, -1, 746, 750, 1144, -1, -1, -1, 746, -1, -1, -1, 747, 751, 242, -1, -1, 746, -1, 732, 733, 35, 746, 746, 746, 746 }; static const ANTLR3_INT32 dfa2_T1205[] = { 82, 82, -1, -1, 1047, 80, 682, 338, 684, 683, 82, 1974, -1, 85, 82, 682, -1, -1, -1, 85, -1, -1, -1, 86, 82, 1050, -1, -1, 85, -1, 1048, 1049, 337, 85, 85, 85, 85 }; static const ANTLR3_INT32 dfa2_T1206[] = { 498, 497, -1, -1, 1298, 502, 542, 205, 494, 2283, 501, 494, -1, 494, 499, 542, -1, -1, -1, 494, -1, -1, -1, 495, 500, 854, -1, -1, 494, -1, 853, 241, 204, 494, 494, 494, 494 }; static const ANTLR3_INT32 dfa2_T1207[] = { 498, 497, -1, -1, 1298, 502, 542, 205, 494, 3062, 501, 494, -1, 494, 499, 542, -1, -1, -1, 494, -1, -1, -1, 495, 500, 854, -1, -1, 494, -1, 853, 241, 204, 494, 494, 494, 494 }; static const ANTLR3_INT32 dfa2_T1208[] = { 1124, 1123, -1, -1, 2043, 1128, 1163, 1588, 1120, 2045, 1127, 1120, -1, 1120, 1125, 1163, -1, -1, -1, 1120, -1, -1, -1, 1121, 1126, 854, -1, -1, 1120, -1, 1583, 1584, 1585, 1120, 1120, 1120, 1120 }; static const ANTLR3_INT32 dfa2_T1209[] = { 498, 497, -1, -1, 1298, 502, 542, 205, 494, 1302, 501, 494, -1, 494, 499, 542, -1, -1, -1, 494, -1, -1, -1, 495, 500, 854, -1, -1, 494, -1, 853, 241, 204, 494, 494, 494, 494 }; static const ANTLR3_INT32 dfa2_T1210[] = { 811, 810, -1, -1, 809, 815, 1292, -1, 807, 2280, 814, 807, -1, 807, 812, 1292, -1, -1, -1, 807, -1, -1, -1, 808, 813, 242, -1, -1, 807, -1, 458, 241, 35, 807, 807, 807, 807 }; static const ANTLR3_INT32 dfa2_T1211[] = { 2955, 2111, 1203, -1, 2954, 2116, 2949, 2012, 2957, 2950, 2956, 2951, -1, 2957, 2113, 2949, -1, -1, -1, 2957, 405, -1, -1, 2952, 2953, 854, -1, -1, 2957, 405, 2927, 2928, 2010, 2957, 2957, 2957, 2957 }; static const ANTLR3_INT32 dfa2_T1212[] = { 2112, 2111, -1, -1, 2977, 2116, 2146, 1588, 2108, 2975, 2115, 2108, -1, 2108, 2113, 2146, -1, -1, -1, 2108, -1, -1, -1, 2109, 2114, 854, -1, -1, 2108, -1, 2587, 2588, 1585, 2108, 2108, 2108, 2108 }; static const ANTLR3_INT32 dfa2_T1213[] = { 13, -1, -1, -1, 8, -1, 10, 9, -1, 10, -1, 10, -1, 8, -1, -1, -1, 10, -1, -1, -1, 11, 12, -1, -1, -1, 10, -1, -1, 14, -1, 10, 10, 10, 10 }; static const ANTLR3_INT32 dfa2_T1214[] = { 811, 810, -1, -1, 809, 815, 1292, -1, 807, 3059, 814, 807, -1, 807, 812, 1292, -1, -1, -1, 807, -1, -1, -1, 808, 813, 242, -1, -1, 807, -1, 458, 241, 35, 807, 807, 807, 807 }; static const ANTLR3_INT32 dfa2_T1215[] = { 811, 810, -1, -1, 809, 815, 1292, -1, 807, 3595, 814, 807, -1, 807, 812, 1292, -1, -1, -1, 807, -1, -1, -1, 808, 813, 242, -1, -1, 807, -1, 458, 241, 35, 807, 807, 807, 807 }; static const ANTLR3_INT32 dfa2_T1216[] = { 498, 497, -1, -1, 1298, 502, 542, 205, 494, 1296, 501, 494, -1, 494, 499, 542, -1, -1, -1, 494, -1, -1, -1, 495, 500, 854, -1, -1, 494, -1, 853, 241, 204, 494, 494, 494, 494 }; static const ANTLR3_INT32 dfa2_T1217[] = { 295, 294, -1, -1, 284, 299, 584, -1, 587, 588, 298, 589, -1, 292, 296, 584, -1, -1, -1, 292, -1, -1, -1, 293, 297, 34, -1, -1, 292, -1, 278, 279, 35, 292, 292, 292, 292 }; static const ANTLR3_INT32 dfa2_T1218[] = { 82, 82, -1, -1, 82, 80, 382, -1, 85, 1054, 82, 85, -1, 85, 82, 382, -1, -1, -1, 85, -1, -1, -1, 86, 82, 81, -1, -1, 85, -1, 79, 82, 35, 85, 85, 85, 85 }; static const ANTLR3_INT32 dfa2_T1219[] = { 82, 82, -1, -1, 82, 80, 382, -1, 85, 1975, 82, 85, -1, 85, 82, 382, -1, -1, -1, 85, -1, -1, -1, 86, 82, 81, -1, -1, 85, -1, 79, 82, 35, 85, 85, 85, 85 }; static const ANTLR3_INT32 dfa2_T1220[] = { 508, 508, -1, -1, 1306, 506, 882, 205, 884, 883, 508, 2287, -1, 511, 508, 882, -1, -1, -1, 511, -1, -1, -1, 512, 508, 1308, -1, -1, 511, -1, 1307, 508, 204, 511, 511, 511, 511 }; static const ANTLR3_INT32 dfa2_T1221[] = { 508, 508, -1, -1, 1306, 506, 882, 205, 884, 883, 508, 3065, -1, 511, 508, 882, -1, -1, -1, 511, -1, -1, -1, 512, 508, 1308, -1, -1, 511, -1, 1307, 508, 204, 511, 511, 511, 511 }; static const ANTLR3_INT32 dfa2_T1222[] = { 295, 294, -1, -1, 284, 299, 584, -1, 587, 2310, 298, 2311, -1, 292, 296, 584, -1, -1, -1, 292, -1, -1, -1, 293, 297, 34, -1, -1, 292, -1, 278, 279, 35, 292, 292, 292, 292 }; static const ANTLR3_INT32 dfa2_T1223[] = { 295, 294, -1, -1, 284, 299, 584, -1, 587, 1337, 298, 1338, -1, 292, 296, 584, -1, -1, -1, 292, -1, -1, -1, 293, 297, 34, -1, -1, 292, -1, 278, 279, 35, 292, 292, 292, 292 }; static const ANTLR3_INT32 dfa2_T1224[] = { 508, 508, -1, -1, 1306, 506, 882, 205, 884, 883, 508, 1311, -1, 511, 508, 882, -1, -1, -1, 511, -1, -1, -1, 512, 508, 1308, -1, -1, 511, -1, 1307, 508, 204, 511, 511, 511, 511 }; static const ANTLR3_INT32 dfa2_T1225[] = { 82, 82, -1, -1, 82, 80, 382, -1, 85, 2810, 82, 85, -1, 85, 82, 382, -1, -1, -1, 85, -1, -1, -1, 86, 82, 81, -1, -1, 85, -1, 79, 82, 35, 85, 85, 85, 85 }; static const ANTLR3_INT32 dfa2_T1226[] = { 811, 810, -1, -1, 809, 815, 1292, -1, 807, 2274, 814, 807, -1, 807, 812, 1292, -1, -1, -1, 807, -1, -1, -1, 808, 813, 242, -1, -1, 807, -1, 458, 241, 35, 807, 807, 807, 807 }; static const ANTLR3_INT32 dfa2_T1227[] = { 1668, 1667, -1, -1, 1662, 1672, 2130, -1, 2589, 2131, 1671, 1665, -1, 1665, 1669, 2130, -1, -1, -1, 1665, -1, -1, -1, 1666, 1670, 242, -1, -1, 1665, -1, 1660, 1661, 35, 1665, 1665, 1665, 1665 }; static const ANTLR3_INT32 dfa2_T1228[] = { 508, 508, -1, -1, 508, 506, 844, -1, 511, 1755, 508, 511, -1, 511, 508, 844, -1, -1, -1, 511, -1, -1, -1, 512, 508, 507, -1, -1, 511, -1, 505, 508, 35, 511, 511, 511, 511 }; static const ANTLR3_INT32 dfa2_T1229[] = { 2092, -1, -1, -1, 2099, 793, 2101, 3467, -1, 2101, -1, 2101, -1, 3466, -1, -1, -1, 2101, -1, -1, -1, 2102, 2103, 242, -1, -1, 2101, -1, 1205, 1228, 792, 2101, 2101, 2101, 2101 }; static const ANTLR3_INT32 dfa2_T1230[] = { 508, 508, -1, -1, 508, 506, 844, -1, 511, 2693, 508, 511, -1, 511, 508, 844, -1, -1, -1, 511, -1, -1, -1, 512, 508, 507, -1, -1, 511, -1, 505, 508, 35, 511, 511, 511, 511 }; static const ANTLR3_INT32 dfa2_T1231[] = { 749, 748, -1, -1, 1586, 753, 1144, 1588, 1147, 1591, 752, 1592, -1, 746, 750, 1144, -1, -1, -1, 746, -1, -1, -1, 747, 751, 854, -1, -1, 746, -1, 1583, 1584, 1585, 746, 746, 746, 746 }; static const ANTLR3_INT32 dfa2_T1232[] = { 2889, -1, -1, -1, -1, 3191, -1, 2519, -1, -1, -1, 3191, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1596 }; static const ANTLR3_INT32 dfa2_T1233[] = { 896, 895, -1, -1, 894, 900, 938, -1, 892, 1850, 899, 892, -1, 892, 897, 938, -1, -1, -1, 892, -1, -1, -1, 893, 898, 34, -1, -1, 892, -1, 580, 279, 35, 892, 892, 892, 892 }; static const ANTLR3_INT32 dfa2_T1234[] = { 508, 508, -1, -1, 508, 506, 844, -1, 511, 3358, 508, 511, -1, 511, 508, 844, -1, -1, -1, 511, -1, -1, -1, 512, 508, 507, -1, -1, 511, -1, 505, 508, 35, 511, 511, 511, 511 }; static const ANTLR3_INT32 dfa2_T1235[] = { 896, 895, -1, -1, 894, 900, 938, -1, 892, 3379, 899, 892, -1, 892, 897, 938, -1, -1, -1, 892, -1, -1, -1, 893, 898, 34, -1, -1, 892, -1, 580, 279, 35, 892, 892, 892, 892 }; static const ANTLR3_INT32 dfa2_T1236[] = { 896, 895, -1, -1, 894, 900, 938, -1, 892, 2744, 899, 892, -1, 892, 897, 938, -1, -1, -1, 892, -1, -1, -1, 893, 898, 34, -1, -1, 892, -1, 580, 279, 35, 892, 892, 892, 892 }; static const ANTLR3_INT32 dfa2_T1237[] = { 1668, 1667, -1, -1, 2586, 1672, 2130, 1588, 2132, 3277, 1671, 3278, -1, 1665, 1669, 2130, -1, -1, -1, 1665, -1, -1, -1, 1666, 1670, 854, -1, -1, 1665, -1, 2587, 2588, 1585, 1665, 1665, 1665, 1665 }; static const ANTLR3_INT32 dfa2_T1238[] = { 498, 497, -1, -1, 496, 502, 874, -1, 876, 877, 501, 878, -1, 494, 499, 874, -1, -1, -1, 494, -1, -1, -1, 495, 500, 242, -1, -1, 494, -1, 240, 241, 35, 494, 494, 494, 494 }; static const ANTLR3_INT32 dfa2_T1239[] = { 3205, 1576, -1, -1, 3204, 1581, 3211, -1, 3216, 3212, 3207, 3213, -1, 3216, 1578, 3211, -1, -1, -1, 3216, 1080, -1, -1, 3214, 3215, 242, -1, -1, 3216, 1080, 1140, 2830, 35, 3216, 3216, 3216, 3216 }; static const ANTLR3_INT32 dfa2_T1240[] = { 749, 748, -1, -1, 1586, 753, 1144, 1588, 1147, 3186, 752, 3187, -1, 746, 750, 1144, -1, -1, -1, 746, -1, -1, -1, 747, 751, 854, -1, -1, 746, -1, 1583, 1584, 1585, 746, 746, 746, 746 }; static const ANTLR3_INT32 dfa2_T1241[] = { 498, 497, -1, -1, 496, 502, 874, -1, 876, 2712, 501, 2713, -1, 494, 499, 874, -1, -1, -1, 494, -1, -1, -1, 495, 500, 242, -1, -1, 494, -1, 240, 241, 35, 494, 494, 494, 494 }; static const ANTLR3_INT32 dfa2_T1242[] = { 1595, -1, -1, -1, -1, 2037, -1, 2519, -1, -1, -1, 2037, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1596 }; static const ANTLR3_INT32 dfa2_T1243[] = { 508, 508, -1, -1, 508, 506, 844, -1, 511, 845, 508, 511, -1, 511, 508, 844, -1, -1, -1, 511, 754, -1, -1, 512, 508, 507, -1, -1, 511, -1, 505, 508, 35, 511, 511, 511, 511 }; static const ANTLR3_INT32 dfa2_T1244[] = { 498, 497, -1, -1, 496, 502, 874, -1, 876, 1784, 501, 1785, -1, 494, 499, 874, -1, -1, -1, 494, -1, -1, -1, 495, 500, 242, -1, -1, 494, -1, 240, 241, 35, 494, 494, 494, 494 }; static const ANTLR3_INT32 dfa2_T1245[] = { 1577, 1576, -1, -1, 1575, 1581, 1624, -1, 1573, 2551, 1580, 1573, -1, 1573, 1578, 1624, -1, -1, -1, 1573, -1, -1, -1, 1574, 1579, 242, -1, -1, 1573, -1, 1140, 733, 35, 1573, 1573, 1573, 1573 }; static const ANTLR3_INT32 dfa2_T1246[] = { 749, 748, -1, -1, 1586, 753, 1144, 1588, 1147, 2513, 752, 2514, -1, 746, 750, 1144, -1, -1, -1, 746, -1, -1, -1, 747, 751, 854, -1, -1, 746, -1, 1583, 1584, 1585, 746, 746, 746, 746 }; static const ANTLR3_INT32 dfa2_T1247[] = { 82, 82, -1, -1, 82, 80, 382, -1, 85, 1045, 82, 85, -1, 85, 82, 382, -1, -1, -1, 85, -1, -1, -1, 86, 82, 81, -1, -1, 85, -1, 79, 82, 35, 85, 85, 85, 85 }; static const ANTLR3_INT32 dfa2_T1248[] = { 2522, -1, -1, -1, -1, 2894, -1, 2519, -1, -1, -1, 2894, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1596 }; static const ANTLR3_INT32 dfa2_T1249[] = { 1668, 1667, -1, -1, 2586, 1672, 2130, 1588, 2132, 2590, 1671, 2591, -1, 1665, 1669, 2130, -1, -1, -1, 1665, -1, -1, -1, 1666, 1670, 854, -1, -1, 1665, -1, 2587, 2588, 1585, 1665, 1665, 1665, 1665 }; static const ANTLR3_INT32 dfa2_T1250[] = { 1577, 1576, -1, -1, 1575, 1581, 1624, -1, 1573, 3221, 1580, 1573, -1, 1573, 1578, 1624, -1, -1, -1, 1573, -1, -1, -1, 1574, 1579, 242, -1, -1, 1573, -1, 1140, 733, 35, 1573, 1573, 1573, 1573 }; static const ANTLR3_INT32 dfa2_T1251[] = { 749, 748, -1, -1, 1586, 753, 1144, 1588, 1147, 3658, 752, 1587, -1, 746, 750, 1144, -1, -1, -1, 746, -1, -1, -1, 747, 751, 854, -1, -1, 746, -1, 1583, 1584, 1585, 746, 746, 746, 746 }; static const ANTLR3_INT32 dfa2_T1252[] = { 1668, 1667, -1, -1, 2586, 1672, 2130, 1588, 2132, 3702, 1671, 3703, -1, 1665, 1669, 2130, -1, -1, -1, 1665, -1, -1, -1, 1666, 1670, 854, -1, -1, 1665, -1, 2587, 2588, 1585, 1665, 1665, 1665, 1665 }; static const ANTLR3_INT32 dfa2_T1253[] = { 1577, 1576, -1, -1, 1575, 1581, 1624, -1, 1573, 3671, 1580, 1573, -1, 1573, 1578, 1624, -1, -1, -1, 1573, -1, -1, -1, 1574, 1579, 242, -1, -1, 1573, -1, 1140, 733, 35, 1573, 1573, 1573, 1573 }; static const ANTLR3_INT32 dfa2_T1254[] = { 2896, -1, 2519 }; static const ANTLR3_INT32 dfa2_T1255[] = { 327, 141, -1, -1, 58, 331, 323, -1, 325, 633, 330, 325, -1, 325, 328, 323, -1, -1, -1, 325, -1, -1, -1, 326, 329, 34, -1, -1, 325, -1, 154, 66, 35, 325, 325, 325, 325 }; static const ANTLR3_INT32 dfa2_T1256[] = { 3192, -1, 3193 }; static const ANTLR3_INT32 dfa2_T1257[] = { 3195, -1, 3196 }; static const ANTLR3_INT32 dfa2_T1258[] = { 3660, -1, 3661 }; static const ANTLR3_INT32 dfa2_T1259[] = { 3662, -1, 3663 }; static const ANTLR3_INT32 dfa2_T1260[] = { 1668, 1667, -1, -1, 2586, 1672, 2130, 1588, 2132, 3862, 1671, 2585, -1, 1665, 1669, 2130, -1, -1, -1, 1665, -1, -1, -1, 1666, 1670, 854, -1, -1, 1665, -1, 2587, 2588, 1585, 1665, 1665, 1665, 1665 }; static const ANTLR3_INT32 dfa2_T1261[] = { 896, 895, -1, -1, 894, 900, 938, -1, 892, 1846, 899, 892, -1, 892, 897, 938, -1, -1, -1, 892, -1, -1, -1, 893, 898, 34, -1, -1, 892, -1, 580, 279, 35, 892, 892, 892, 892 }; static const ANTLR3_INT32 dfa2_T1262[] = { 498, 497, -1, -1, 1298, 502, 874, 205, 876, 875, 501, 2282, -1, 494, 499, 874, -1, -1, -1, 494, -1, -1, -1, 495, 500, 854, -1, -1, 494, -1, 853, 241, 204, 494, 494, 494, 494 }; static const ANTLR3_INT32 dfa2_T1263[] = { 508, 508, -1, -1, 508, 506, 844, -1, 511, 1746, 508, 511, -1, 511, 508, 844, -1, -1, -1, 511, -1, -1, -1, 512, 508, 507, -1, -1, 511, -1, 505, 508, 35, 511, 511, 511, 511 }; static const ANTLR3_INT32 dfa2_T1264[] = { 498, 497, -1, -1, 1298, 502, 874, 205, 876, 875, 501, 3061, -1, 494, 499, 874, -1, -1, -1, 494, -1, -1, -1, 495, 500, 854, -1, -1, 494, -1, 853, 241, 204, 494, 494, 494, 494 }; static const ANTLR3_INT32 dfa2_T1265[] = { 498, 497, -1, -1, 1298, 502, 874, 205, 876, 875, 501, 1301, -1, 494, 499, 874, -1, -1, -1, 494, -1, -1, -1, 495, 500, 854, -1, -1, 494, -1, 853, 241, 204, 494, 494, 494, 494 }; static const ANTLR3_INT32 dfa2_T1266[] = { 1124, 1123, -1, -1, 1122, 1128, 2526, -1, 2046, 2527, 1127, 1120, -1, 1120, 1125, 2526, -1, -1, -1, 1120, -1, -1, -1, 1121, 1126, 242, -1, -1, 1120, -1, 732, 733, 35, 1120, 1120, 1120, 1120 }; static const ANTLR3_INT32 dfa2_T1267[] = { 405, -1, 1203, -1, 405, -1, 2885, 2012, 2485, 2481, 405, 2482, -1, 2485, -1, 2885, -1, -1, -1, 2485, 405, -1, -1, 2483, 2484, -1, -1, -1, 2485, 405, 407, 405, 2480, 2485, 2485, 2485, 2485 }; static const ANTLR3_INT32 dfa2_T1268[] = { 811, 810, -1, -1, 1740, 815, 832, 1588, 807, 3318, 814, 807, -1, 807, 812, 832, -1, -1, -1, 807, -1, -1, -1, 808, 813, 854, -1, -1, 807, -1, 1630, 1631, 1585, 807, 807, 807, 807 }; static const ANTLR3_INT32 dfa2_T1269[] = { 1874, 1873, 641, -1, 1872, 1878, 2776, 640, 2778, 2777, 1877, 2778, -1, 2778, 1875, 2776, -1, -1, -1, 2778, -1, -1, -1, 2779, 2780, 34, -1, -1, 2778, -1, 1419, 974, 639, 2778, 2778, 2778, 2778 }; static const ANTLR3_INT32 dfa2_T1270[] = { 811, 810, -1, -1, 1740, 815, 832, 1588, 807, 1744, 814, 807, -1, 807, 812, 832, -1, -1, -1, 807, -1, -1, -1, 808, 813, 854, -1, -1, 807, -1, 1630, 1631, 1585, 807, 807, 807, 807 }; static const ANTLR3_INT32 dfa2_T1271[] = { 811, 810, -1, -1, 1740, 815, 832, 1588, 807, 2662, 814, 807, -1, 807, 812, 832, -1, -1, -1, 807, -1, -1, -1, 808, 813, 854, -1, -1, 807, -1, 1630, 1631, 1585, 807, 807, 807, 807 }; static const ANTLR3_INT32 dfa2_T1272[] = { 896, 895, -1, -1, 1844, 900, 1358, 338, 1361, 3377, 899, 3378, -1, 892, 897, 1358, -1, -1, -1, 892, -1, -1, -1, 893, 898, 34, -1, -1, 892, -1, 1348, 903, 337, 892, 892, 892, 892 }; static const ANTLR3_INT32 dfa2_T1273[] = { 1874, 1873, -1, -1, 2788, 1878, 2383, 338, 2385, 2790, 1877, 2791, -1, 1870, 1875, 2383, -1, -1, -1, 1870, -1, -1, -1, 1871, 1876, 34, -1, -1, 1870, -1, 2376, 1883, 337, 1870, 1870, 1870, 1870 }; static const ANTLR3_INT32 dfa2_T1274[] = { 896, 895, -1, -1, 1844, 900, 1358, 338, 1361, 1848, 899, 1849, -1, 892, 897, 1358, -1, -1, -1, 892, -1, -1, -1, 893, 898, 34, -1, -1, 892, -1, 1348, 903, 337, 892, 892, 892, 892 }; static const ANTLR3_INT32 dfa2_T1275[] = { 896, 895, -1, -1, 1844, 900, 1358, 338, 1361, 2742, 899, 2743, -1, 892, 897, 1358, -1, -1, -1, 892, -1, -1, -1, 893, 898, 34, -1, -1, 892, -1, 1348, 903, 337, 892, 892, 892, 892 }; static const ANTLR3_INT32 dfa2_T1276[] = { 184, 176, -1, -1, 175, 182, 177, -1, 179, 178, 184, 179, -1, 179, 184, 177, -1, -1, -1, 179, -1, -1, -1, 180, 184, 183, -1, -1, 179, -1, 181, 184, -1, 179, 179, 179, 179 }; static const ANTLR3_INT32 dfa2_T1277[] = { 355, 354, -1, -1, 353, 359, 349, -1, 351, 1498, 358, 351, -1, 351, 356, 349, -1, -1, -1, 351, -1, -1, -1, 352, 357, 34, -1, -1, 351, -1, 154, 66, 35, 351, 351, 351, 351 }; static const ANTLR3_INT32 dfa2_T1278[] = { 1577, 1576, -1, -1, 1575, 1581, 1624, -1, 1573, 2547, 1580, 1573, -1, 1573, 1578, 1624, -1, -1, -1, 1573, -1, -1, -1, 1574, 1579, 242, -1, -1, 1573, -1, 1140, 733, 35, 1573, 1573, 1573, 1573 }; static const ANTLR3_INT32 dfa2_T1279[] = { 1874, 1873, -1, -1, 2788, 1878, 2383, 338, 2385, 3398, 1877, 3399, -1, 1870, 1875, 2383, -1, -1, -1, 1870, -1, -1, -1, 1871, 1876, 34, -1, -1, 1870, -1, 2376, 1883, 337, 1870, 1870, 1870, 1870 }; static const ANTLR3_INT32 dfa2_T1280[] = { 1874, 1873, -1, -1, 2788, 1878, 2383, 338, 2385, 3756, 1877, 3757, -1, 1870, 1875, 2383, -1, -1, -1, 1870, -1, -1, -1, 1871, 1876, 34, -1, -1, 1870, -1, 2376, 1883, 337, 1870, 1870, 1870, 1870 }; static const ANTLR3_INT32 dfa2_T1281[] = { 896, 895, -1, -1, 1844, 900, 1358, 338, 1361, 3750, 899, 1845, -1, 892, 897, 1358, -1, -1, -1, 892, -1, -1, -1, 893, 898, 34, -1, -1, 892, -1, 1348, 903, 337, 892, 892, 892, 892 }; static const ANTLR3_INT32 dfa2_T1282[] = { 896, 895, -1, -1, 1844, 900, 1358, 338, 1361, 1359, 899, 1849, -1, 892, 897, 1358, -1, -1, -1, 892, -1, -1, -1, 893, 898, 34, -1, -1, 892, -1, 1348, 903, 337, 892, 892, 892, 892 }; static const ANTLR3_INT32 dfa2_T1283[] = { 508, 508, -1, -1, 1748, 506, 1253, 1588, 1255, 1753, 508, 1754, -1, 511, 508, 1253, -1, -1, -1, 511, -1, -1, -1, 512, 508, 1751, -1, -1, 511, -1, 1749, 1750, 1585, 511, 511, 511, 511 }; static const ANTLR3_INT32 dfa2_T1284[] = { 896, 895, -1, -1, 1844, 900, 1358, 338, 1361, 1359, 899, 2743, -1, 892, 897, 1358, -1, -1, -1, 892, -1, -1, -1, 893, 898, 34, -1, -1, 892, -1, 1348, 903, 337, 892, 892, 892, 892 }; static const ANTLR3_INT32 dfa2_T1285[] = { 1874, 1873, -1, -1, 2788, 1878, 2383, 338, 2385, 3873, 1877, 2787, -1, 1870, 1875, 2383, -1, -1, -1, 1870, -1, -1, -1, 1871, 1876, 34, -1, -1, 1870, -1, 2376, 1883, 337, 1870, 1870, 1870, 1870 }; static const ANTLR3_INT32 dfa2_T1286[] = { 811, 810, -1, -1, 2276, 815, 1775, 205, 1777, 3057, 814, 3058, -1, 807, 812, 1775, -1, -1, -1, 807, -1, -1, -1, 808, 813, 854, -1, -1, 807, -1, 1237, 241, 204, 807, 807, 807, 807 }; static const ANTLR3_INT32 dfa2_T1287[] = { 811, 810, -1, -1, 2276, 815, 1775, 205, 1777, 3593, 814, 3594, -1, 807, 812, 1775, -1, -1, -1, 807, -1, -1, -1, 808, 813, 854, -1, -1, 807, -1, 1237, 241, 204, 807, 807, 807, 807 }; static const ANTLR3_INT32 dfa2_T1288[] = { 981, 980, -1, -1, 975, 985, 1421, -1, 1884, 1422, 984, 978, -1, 978, 982, 1421, -1, -1, -1, 978, -1, -1, -1, 979, 983, 34, -1, -1, 978, -1, 973, 974, 35, 978, 978, 978, 978 }; static const ANTLR3_INT32 dfa2_T1289[] = { 811, 810, -1, -1, 2276, 815, 1775, 205, 1777, 2278, 814, 2279, -1, 807, 812, 1775, -1, -1, -1, 807, -1, -1, -1, 808, 813, 854, -1, -1, 807, -1, 1237, 241, 204, 807, 807, 807, 807 }; static const ANTLR3_INT32 dfa2_T1290[] = { 708, 108, -1, -1, 708, 106, 1058, 403, 1060, 1059, 708, 1057, -1, 1060, 108, 1058, -1, -1, -1, 1060, 405, -1, -1, 1061, 708, 694, -1, -1, 1060, 405, 693, 708, 402, 1060, 1060, 1060, 1060 }; static const ANTLR3_INT32 dfa2_T1291[] = { 1874, 1873, -1, -1, 2788, 1878, 2383, 338, 2385, 2384, 1877, 3399, -1, 1870, 1875, 2383, -1, -1, -1, 1870, -1, -1, -1, 1871, 1876, 34, -1, -1, 1870, -1, 2376, 1883, 337, 1870, 1870, 1870, 1870 }; static const ANTLR3_INT32 dfa2_T1292[] = { 811, 810, -1, -1, 2276, 815, 1775, 205, 1777, 3829, 814, 2275, -1, 807, 812, 1775, -1, -1, -1, 807, -1, -1, -1, 808, 813, 854, -1, -1, 807, -1, 1237, 241, 204, 807, 807, 807, 807 }; static const ANTLR3_INT32 dfa2_T1293[] = { 1135, 1134, -1, -1, 2052, 1139, 1608, 1588, 1611, 1609, 1138, 2905, -1, 1131, 1136, 1608, -1, -1, -1, 1131, -1, -1, -1, 1132, 1137, 854, -1, -1, 1131, -1, 2051, 1584, 1585, 1131, 1131, 1131, 1131 }; static const ANTLR3_INT32 dfa2_T1294[] = { 2123, 2122, -1, -1, 2985, 2127, 2604, 1588, 2606, 2605, 2126, 2989, -1, 2119, 2124, 2604, -1, -1, -1, 2119, -1, -1, -1, 2120, 2125, 854, -1, -1, 2119, -1, 2986, 2588, 1585, 2119, 2119, 2119, 2119 }; static const ANTLR3_INT32 dfa2_T1295[] = { 1874, 1873, -1, -1, 2788, 1878, 2383, 338, 2385, 2384, 1877, 3757, -1, 1870, 1875, 2383, -1, -1, -1, 1870, -1, -1, -1, 1871, 1876, 34, -1, -1, 1870, -1, 2376, 1883, 337, 1870, 1870, 1870, 1870 }; static const ANTLR3_INT32 dfa2_T1296[] = { 508, 508, -1, -1, 1748, 506, 1253, 1588, 1255, 3356, 508, 3357, -1, 511, 508, 1253, -1, -1, -1, 511, -1, -1, -1, 512, 508, 1751, -1, -1, 511, -1, 1749, 1750, 1585, 511, 511, 511, 511 }; static const ANTLR3_INT32 dfa2_T1297[] = { 1135, 1134, -1, -1, 2052, 1139, 1608, 1588, 1611, 1609, 1138, 2057, -1, 1131, 1136, 1608, -1, -1, -1, 1131, -1, -1, -1, 1132, 1137, 854, -1, -1, 1131, -1, 2051, 1584, 1585, 1131, 1131, 1131, 1131 }; static const ANTLR3_INT32 dfa2_T1298[] = { 2260, 464, -1, -1, 2259, 469, 2255, -1, 2257, 2256, 2262, 2254, -1, 2257, 466, 2255, -1, -1, -1, 2257, 1080, -1, -1, 2258, 2261, 242, -1, -1, 2257, 1080, 458, 2245, 35, 2257, 2257, 2257, 2257 }; static const ANTLR3_INT32 dfa2_T1299[] = { 896, 895, -1, -1, 1844, 900, 1358, 338, 1361, 1359, 899, 3378, -1, 892, 897, 1358, -1, -1, -1, 892, -1, -1, -1, 893, 898, 34, -1, -1, 892, -1, 1348, 903, 337, 892, 892, 892, 892 }; static const ANTLR3_INT32 dfa2_T1300[] = { 1874, 1873, -1, -1, 2788, 1878, 2383, 338, 2385, 2384, 1877, 2791, -1, 1870, 1875, 2383, -1, -1, -1, 1870, -1, -1, -1, 1871, 1876, 34, -1, -1, 1870, -1, 2376, 1883, 337, 1870, 1870, 1870, 1870 }; static const ANTLR3_INT32 dfa2_T1301[] = { 508, 508, -1, -1, 1748, 506, 1253, 1588, 1255, 2691, 508, 2692, -1, 511, 508, 1253, -1, -1, -1, 511, -1, -1, -1, 512, 508, 1751, -1, -1, 511, -1, 1749, 1750, 1585, 511, 511, 511, 511 }; static const ANTLR3_INT32 dfa2_T1302[] = { 2519 }; static const ANTLR3_INT32 dfa2_T1303[] = { 508, 508, -1, -1, 1748, 506, 1253, 1588, 1255, 3747, 508, 1747, -1, 511, 508, 1253, -1, -1, -1, 511, -1, -1, -1, 512, 508, 1751, -1, -1, 511, -1, 1749, 1750, 1585, 511, 511, 511, 511 }; static const ANTLR3_INT32 dfa2_T1304[] = { 2123, 2122, -1, -1, 2985, 2127, 2604, 1588, 2606, 2605, 2126, 3811, -1, 2119, 2124, 2604, -1, -1, -1, 2119, -1, -1, -1, 2120, 2125, 854, -1, -1, 2119, -1, 2986, 2588, 1585, 2119, 2119, 2119, 2119 }; static const ANTLR3_INT32 dfa2_T1305[] = { 465, 464, -1, -1, 459, 469, 1733, -1, 1238, 1734, 468, 462, -1, 462, 466, 1733, -1, -1, -1, 462, -1, -1, -1, 463, 467, 242, -1, -1, 462, -1, 458, 241, 35, 462, 462, 462, 462 }; static const ANTLR3_INT32 dfa2_T1306[] = { 1135, 1134, -1, -1, 2052, 1139, 1608, 1588, 1611, 1609, 1138, 3484, -1, 1131, 1136, 1608, -1, -1, -1, 1131, -1, -1, -1, 1132, 1137, 854, -1, -1, 1131, -1, 2051, 1584, 1585, 1131, 1131, 1131, 1131 }; static const ANTLR3_INT32 dfa2_T1307[] = { 3193 }; static const ANTLR3_INT32 dfa2_T1308[] = { 3196 }; static const ANTLR3_INT32 dfa2_T1309[] = { 2123, 2122, -1, -1, 2985, 2127, 2604, 1588, 2606, 2605, 2126, 3552, -1, 2119, 2124, 2604, -1, -1, -1, 2119, -1, -1, -1, 2120, 2125, 854, -1, -1, 2119, -1, 2986, 2588, 1585, 2119, 2119, 2119, 2119 }; static const ANTLR3_INT32 dfa2_T1310[] = { 1668, 1667, -1, -1, 1662, 1672, 2074, -1, 1665, 2948, 1671, 1665, -1, 1665, 1669, 2074, -1, -1, -1, 1665, -1, -1, -1, 1666, 1670, 242, -1, -1, 1665, -1, 1660, 1661, 35, 1665, 1665, 1665, 1665 }; static const ANTLR3_INT32 dfa2_T1311[] = { 3661 }; static const ANTLR3_INT32 dfa2_T1312[] = { 3663 }; static const ANTLR3_INT32 dfa2_T1313[] = { 811, 810, -1, -1, 1740, 815, 832, 1588, 807, 1738, 814, 807, -1, 807, 812, 832, -1, -1, -1, 807, -1, -1, -1, 808, 813, 854, -1, -1, 807, -1, 1630, 1631, 1585, 807, 807, 807, 807 }; static const ANTLR3_INT32 dfa2_T1314[] = { 1024, 1023, -1, -1, 1022, 1028, 1018, -1, 1020, 1019, 1027, 2338, -1, 1020, 1025, 1018, -1, -1, -1, 1020, -1, -1, -1, 1021, 1026, 34, -1, -1, 1020, -1, 1029, 1030, 35, 1020, 1020, 1020, 1020 }; static const ANTLR3_INT32 dfa2_T1315[] = { 465, 464, -1, -1, 1629, 469, 1190, 1588, 1192, 3509, 468, 1189, -1, 462, 466, 1190, -1, -1, -1, 462, -1, -1, -1, 463, 467, 854, -1, -1, 462, -1, 1630, 1631, 1585, 462, 462, 462, 462 }; static const ANTLR3_INT32 dfa2_T1316[] = { 1080, -1, 2092, -1, 1080, -1, 3173, 2091, 3178, 3174, 1080, 3175, 2093, 3178, -1, 3173, -1, -1, -1, 3178, 1080, -1, -1, 3176, 3177, -1, -1, -1, 3178, 1080, -1, 1080, 2098, 3178, 3178, 3178, 3178 }; static const ANTLR3_INT32 dfa2_T1317[] = { 3411, 2504, -1, -1, 3410, 2509, 3406, -1, 3414, 3407, 3413, 3408, -1, 3414, 2506, 3406, -1, -1, -1, 3414, 1080, -1, -1, 3409, 3412, 242, -1, -1, 3414, 1080, 2510, 3123, 35, 3414, 3414, 3414, 3414 }; static const ANTLR3_INT32 dfa2_T1318[] = { 465, 464, -1, -1, 459, 469, 817, -1, 819, 818, 468, 816, -1, 462, 466, 817, -1, -1, -1, 462, -1, -1, -1, 463, 467, 242, -1, -1, 462, -1, 458, 241, 35, 462, 462, 462, 462 }; static const ANTLR3_INT32 dfa2_T1319[] = { 295, 294, -1, -1, 904, 299, 584, 338, 587, 3070, 298, 586, -1, 292, 296, 584, -1, -1, -1, 292, -1, -1, -1, 293, 297, 34, -1, -1, 292, -1, 902, 903, 337, 292, 292, 292, 292 }; static const ANTLR3_INT32 dfa2_T1320[] = { 3292, 2578, -1, -1, 3291, 2583, 3503, 403, 3508, 3504, 3293, 3505, -1, 3508, 2580, 3503, -1, -1, -1, 3508, 405, -1, -1, 3506, 3507, 854, -1, -1, 3508, 405, 3251, 2928, 402, 3508, 3508, 3508, 3508 }; static const ANTLR3_INT32 dfa2_T1321[] = { 564, 563, 1383, -1, 562, 568, 2289, 1382, 2291, 2290, 567, 2291, 1384, 2291, 565, 2289, -1, -1, -1, 2291, -1, -1, -1, 2292, 2293, 34, -1, -1, 2291, -1, 278, 279, 1381, 2291, 2291, 2291, 2291 }; static const ANTLR3_INT32 dfa2_T1322[] = { 221, 436, -1, -1, 435, 228, 1220, -1, 796, 1221, 227, 439, -1, 219, 225, 1220, -1, -1, -1, 219, -1, -1, -1, 220, 226, 230, -1, -1, 219, -1, 229, 441, 35, 219, 219, 219, 219 }; static const ANTLR3_INT32 dfa2_T1323[] = { 120, 115, -1, -1, 114, 124, 116, -1, 118, 117, 123, 118, -1, 118, 121, 116, -1, -1, -1, 118, -1, -1, -1, 119, 122, 126, -1, -1, 118, -1, 125, 113, 35, 118, 118, 118, 118 }; static const ANTLR3_INT32 dfa2_T1324[] = { 3842, 2638, -1, -1, 3841, 2643, 3837, -1, 3845, 3838, 3844, 3839, -1, 3845, 2640, 3837, -1, -1, -1, 3845, 1080, -1, -1, 3840, 3843, 242, -1, -1, 3845, 1080, 2201, 3435, 35, 3845, 3845, 3845, 3845 }; static const ANTLR3_INT32 dfa2_T1325[] = { 338, -1, 1017, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 34, -1, -1, -1, -1, 643, 666, 337 }; static const ANTLR3_INT32 dfa2_T1326[] = { 981, 980, -1, -1, 1881, 985, 1421, 338, 1423, 3603, 984, 1420, -1, 978, 982, 1421, -1, -1, -1, 978, -1, -1, -1, 979, 983, 34, -1, -1, 978, -1, 1882, 1883, 337, 978, 978, 978, 978 }; static const ANTLR3_INT32 dfa2_T1327[] = { 1024, 1023, -1, -1, 1022, 1028, 1018, -1, 1020, 2750, 1027, 1020, -1, 1020, 1025, 1018, -1, -1, -1, 1020, -1, -1, -1, 1021, 1026, 34, -1, -1, 1020, -1, 1029, 1030, 35, 1020, 1020, 1020, 1020 }; static const ANTLR3_INT32 dfa2_T1328[] = { 1135, 1134, -1, -1, 1133, 1139, 1608, -1, 1611, 1612, 1138, 1613, -1, 1131, 1136, 1608, -1, -1, -1, 1131, -1, -1, -1, 1132, 1137, 242, -1, -1, 1131, -1, 1140, 733, 35, 1131, 1131, 1131, 1131 }; static const ANTLR3_INT32 dfa2_T1329[] = { 1577, 1576, -1, -1, 1575, 1581, 2908, -1, 2548, 2909, 1580, 2063, -1, 1573, 1578, 2908, -1, -1, -1, 1573, -1, -1, -1, 1574, 1579, 242, -1, -1, 1573, -1, 1140, 733, 35, 1573, 1573, 1573, 1573 }; static const ANTLR3_INT32 dfa2_T1330[] = { 1135, 1134, -1, -1, 1133, 1139, 1608, -1, 1611, 2542, 1138, 2543, -1, 1131, 1136, 1608, -1, -1, -1, 1131, -1, -1, -1, 1132, 1137, 242, -1, -1, 1131, -1, 1140, 733, 35, 1131, 1131, 1131, 1131 }; static const ANTLR3_INT32 dfa2_T1331[] = { 508, 508, -1, -1, 508, 506, 1253, -1, 1255, 1254, 508, 1252, -1, 511, 508, 1253, -1, -1, -1, 511, -1, -1, -1, 512, 508, 507, -1, -1, 511, -1, 505, 508, 35, 511, 511, 511, 511 }; static const ANTLR3_INT32 dfa2_T1332[] = { 1135, 1134, -1, -1, 1133, 1139, 1608, -1, 1611, 3217, 1138, 3218, -1, 1131, 1136, 1608, -1, -1, -1, 1131, -1, -1, -1, 1132, 1137, 242, -1, -1, 1131, -1, 1140, 733, 35, 1131, 1131, 1131, 1131 }; static const ANTLR3_INT32 dfa2_T1333[] = { 1075, 89, -1, -1, 1079, 197, 1071, -1, 1078, 1072, 1077, 1073, -1, 1078, 194, 1071, -1, -1, -1, 1078, 1080, -1, -1, 1074, 1076, 107, -1, -1, 1078, 1080, 105, 1079, 35, 1078, 1078, 1078, 1078 }; static const ANTLR3_INT32 dfa2_T1334[] = { 249, 248, -1, -1, 243, 253, 513, 205, 246, 1261, 252, 246, -1, 246, 250, 513, -1, -1, -1, 246, -1, -1, -1, 247, 251, 854, -1, -1, 246, -1, 853, 241, 204, 246, 246, 246, 246 }; static const ANTLR3_INT32 dfa2_T1335[] = { 896, 895, -1, -1, 894, 900, 1358, -1, 1361, 1362, 899, 1363, -1, 892, 897, 1358, -1, -1, -1, 892, -1, -1, -1, 893, 898, 34, -1, -1, 892, -1, 580, 279, 35, 892, 892, 892, 892 }; static const ANTLR3_INT32 dfa2_T1336[] = { 811, 810, -1, -1, 809, 815, 2213, -1, 1741, 2214, 814, 807, -1, 807, 812, 2213, -1, -1, -1, 807, -1, -1, -1, 808, 813, 242, -1, -1, 807, -1, 458, 241, 35, 807, 807, 807, 807 }; static const ANTLR3_INT32 dfa2_T1337[] = { 82, 82, -1, -1, 82, 80, 682, -1, 684, 1524, 82, 1525, -1, 85, 82, 682, -1, -1, -1, 85, -1, -1, -1, 86, 82, 81, -1, -1, 85, -1, 79, 82, 35, 85, 85, 85, 85 }; static const ANTLR3_INT32 dfa2_T1338[] = { 896, 895, -1, -1, 894, 900, 1358, -1, 1361, 3079, 899, 3080, -1, 892, 897, 1358, -1, -1, -1, 892, -1, -1, -1, 893, 898, 34, -1, -1, 892, -1, 580, 279, 35, 892, 892, 892, 892 }; static const ANTLR3_INT32 dfa2_T1339[] = { 82, 82, -1, -1, 82, 80, 682, -1, 684, 685, 82, 686, -1, 85, 82, 682, -1, -1, -1, 85, -1, -1, -1, 86, 82, 81, -1, -1, 85, -1, 79, 82, 35, 85, 85, 85, 85 }; static const ANTLR3_INT32 dfa2_T1340[] = { 249, 248, -1, -1, 243, 253, 513, -1, 246, 1261, 252, 246, -1, 246, 250, 513, -1, -1, -1, 246, -1, -1, -1, 247, 251, 242, -1, -1, 246, -1, 240, 241, 35, 246, 246, 246, 246 }; static const ANTLR3_INT32 dfa2_T1341[] = { 896, 895, -1, -1, 894, 900, 1358, -1, 1361, 2324, 899, 2325, -1, 892, 897, 1358, -1, -1, -1, 892, -1, -1, -1, 893, 898, 34, -1, -1, 892, -1, 580, 279, 35, 892, 892, 892, 892 }; static const ANTLR3_INT32 dfa2_T1342[] = { 82, 82, -1, -1, 82, 80, 682, -1, 684, 2422, 82, 2423, -1, 85, 82, 682, -1, -1, -1, 85, -1, -1, -1, 86, 82, 81, -1, -1, 85, -1, 79, 82, 35, 85, 85, 85, 85 }; static const ANTLR3_INT32 dfa2_T1343[] = { 1124, 1123, -1, -1, 2043, 1128, 1600, 1588, 1603, 1601, 1127, 2898, -1, 1120, 1125, 1600, -1, -1, -1, 1120, -1, -1, -1, 1121, 1126, 854, -1, -1, 1120, -1, 1583, 1584, 1585, 1120, 1120, 1120, 1120 }; static const ANTLR3_INT32 dfa2_T1344[] = { 2579, 2578, -1, -1, 2577, 2583, 2993, -1, 3303, 2994, 2582, 2575, -1, 2575, 2580, 2993, -1, -1, -1, 2575, -1, -1, -1, 2576, 2581, 242, -1, -1, 2575, -1, 2128, 1661, 35, 2575, 2575, 2575, 2575 }; static const ANTLR3_INT32 dfa2_T1345[] = { 3573, 2684, -1, -1, 3572, 2689, 3568, -1, 3576, 3569, 3575, 3570, -1, 3576, 2686, 3568, -1, -1, -1, 3576, 1080, -1, -1, 3571, 3574, 2237, -1, -1, 3576, 1080, 2690, 3323, 35, 3576, 3576, 3576, 3576 }; static const ANTLR3_INT32 dfa2_T1346[] = { 2112, 2111, -1, -1, 2977, 2116, 2596, 1588, 2598, 2597, 2115, 2980, -1, 2108, 2113, 2596, -1, -1, -1, 2108, -1, -1, -1, 2109, 2114, 854, -1, -1, 2108, -1, 2587, 2588, 1585, 2108, 2108, 2108, 2108 }; static const ANTLR3_INT32 dfa2_T1347[] = { 1124, 1123, -1, -1, 2043, 1128, 1600, 1588, 1603, 1601, 1127, 2048, -1, 1120, 1125, 1600, -1, -1, -1, 1120, -1, -1, -1, 1121, 1126, 854, -1, -1, 1120, -1, 1583, 1584, 1585, 1120, 1120, 1120, 1120 }; static const ANTLR3_INT32 dfa2_T1348[] = { 82, 82, -1, -1, 1047, 80, 682, 338, 684, 3117, 82, 681, -1, 85, 82, 682, -1, -1, -1, 85, -1, -1, -1, 86, 82, 1050, -1, -1, 85, -1, 1048, 1049, 337, 85, 85, 85, 85 }; static const ANTLR3_INT32 dfa2_T1349[] = { 56, 59, -1, -1, 58, 63, 52, -1, 54, 53, 62, 54, -1, 54, 60, 52, -1, -1, -1, 54, 57, -1, -1, 55, 61, 65, -1, -1, 54, -1, 64, 51, 35, 54, 54, 54, 54 }; static const ANTLR3_INT32 dfa2_T1350[] = { 405, -1, -1, -1, 405, -1, 1541, 2812, 715, 714, 405, 712, -1, 715, 1093, 1541, -1, -1, -1, 715, 405, -1, -1, 716, 405, 1090, -1, -1, 715, 405, 407, 405, 1091, 715, 715, 715, 715 }; static const ANTLR3_INT32 dfa2_T1351[] = { 2112, 2111, -1, -1, 2977, 2116, 2596, 1588, 2598, 2597, 2115, 3805, -1, 2108, 2113, 2596, -1, -1, -1, 2108, -1, -1, -1, 2109, 2114, 854, -1, -1, 2108, -1, 2587, 2588, 1585, 2108, 2108, 2108, 2108 }; static const ANTLR3_INT32 dfa2_T1352[] = { 1124, 1123, -1, -1, 2043, 1128, 1600, 1588, 1603, 1601, 1127, 3478, -1, 1120, 1125, 1600, -1, -1, -1, 1120, -1, -1, -1, 1121, 1126, 854, -1, -1, 1120, -1, 1583, 1584, 1585, 1120, 1120, 1120, 1120 }; static const ANTLR3_INT32 dfa2_T1353[] = { 508, 508, -1, -1, 508, 506, 509, -1, 511, 1786, 508, 511, -1, 511, 508, 509, -1, -1, -1, 511, -1, -1, -1, 512, 508, 507, -1, -1, 511, -1, 505, 508, 35, 511, 511, 511, 511 }; static const ANTLR3_INT32 dfa2_T1354[] = { 2112, 2111, -1, -1, 2977, 2116, 2596, 1588, 2598, 2597, 2115, 3545, -1, 2108, 2113, 2596, -1, -1, -1, 2108, -1, -1, -1, 2109, 2114, 854, -1, -1, 2108, -1, 2587, 2588, 1585, 2108, 2108, 2108, 2108 }; static const ANTLR3_INT32 dfa2_T1355[] = { 1089, -1, -1, -1, -1, -1, 1089 }; static const ANTLR3_INT32 dfa2_T1356[] = { 1532, -1, -1, -1, -1, -1, 1532 }; static const ANTLR3_INT32 dfa2_T1357[] = { 1577, 1576, -1, -1, 2545, 1581, 2061, 1588, 2064, 3219, 1580, 3220, -1, 1573, 1578, 2061, -1, -1, -1, 1573, -1, -1, -1, 1574, 1579, 854, -1, -1, 1573, -1, 2051, 1584, 1585, 1573, 1573, 1573, 1573 }; static const ANTLR3_INT32 dfa2_T1358[] = { 1250, -1, -1, -1, -1, -1, 1250 }; static const ANTLR3_INT32 dfa2_T1359[] = { 800, -1, -1, -1, -1, -1, 800 }; static const ANTLR3_INT32 dfa2_T1360[] = { 1258, -1, -1, -1, -1, -1, 1258 }; static const ANTLR3_INT32 dfa2_T1361[] = { 1626, -1, -1, -1, -1, -1, 1626 }; static const ANTLR3_INT32 dfa2_T1362[] = { 1737, -1, -1, -1, -1, -1, 1737 }; static const ANTLR3_INT32 dfa2_T1363[] = { 3673, -1, -1, -1, -1, -1, 3673 }; static const ANTLR3_INT32 dfa2_T1364[] = { 1745, -1, -1, -1, -1, -1, 1745 }; static const ANTLR3_INT32 dfa2_T1365[] = { 3883, -1, -1, -1, -1, -1, 3883 }; static const ANTLR3_INT32 dfa2_T1366[] = { 3802, -1, -1, -1, -1, -1, 3802 }; static const ANTLR3_INT32 dfa2_T1367[] = { 3817, -1, -1, -1, -1, -1, 3817 }; static const ANTLR3_INT32 dfa2_T1368[] = { 3871, -1, -1, -1, -1, -1, 3871 }; static const ANTLR3_INT32 dfa2_T1369[] = { 3667, -1, -1, -1, -1, -1, 3667 }; static const ANTLR3_INT32 dfa2_T1370[] = { 3794, -1, -1, -1, -1, -1, 3794 }; static const ANTLR3_INT32 dfa2_T1371[] = { 3866, -1, -1, -1, -1, -1, 3866 }; static const ANTLR3_INT32 dfa2_T1372[] = { 3430, -1, -1, -1, -1, -1, 3430 }; static const ANTLR3_INT32 dfa2_T1373[] = { 3431, -1, -1, -1, -1, -1, 3431 }; static const ANTLR3_INT32 dfa2_T1374[] = { 3733, -1, -1, -1, -1, -1, 3733 }; static const ANTLR3_INT32 dfa2_T1375[] = { 2579, 2578, -1, -1, 3302, 2583, 2993, 1588, 2995, 3304, 2582, 3305, -1, 2575, 2580, 2993, -1, -1, -1, 2575, -1, -1, -1, 2576, 2581, 854, -1, -1, 2575, -1, 2986, 2588, 1585, 2575, 2575, 2575, 2575 }; static const ANTLR3_INT32 dfa2_T1376[] = { 811, 810, -1, -1, 2276, 815, 1775, 205, 1777, 3749, 814, 1774, -1, 807, 812, 1775, -1, -1, -1, 807, -1, -1, -1, 808, 813, 854, -1, -1, 807, -1, 1237, 241, 204, 807, 807, 807, 807 }; static const ANTLR3_INT32 dfa2_T1377[] = { 1577, 1576, -1, -1, 2545, 1581, 2061, 1588, 2064, 2549, 1580, 2550, -1, 1573, 1578, 2061, -1, -1, -1, 1573, -1, -1, -1, 1574, 1579, 854, -1, -1, 1573, -1, 2051, 1584, 1585, 1573, 1573, 1573, 1573 }; static const ANTLR3_INT32 dfa2_T1378[] = { 82, 82, 1383, -1, 82, 80, 2401, 1382, 2403, 2402, 82, 2403, 1384, 2403, 82, 2401, -1, -1, -1, 2403, -1, -1, -1, 2404, 2405, 81, -1, -1, 2403, -1, 79, 82, 1381, 2403, 2403, 2403, 2403 }; static const ANTLR3_INT32 dfa2_T1379[] = { 2579, 2578, -1, -1, 3302, 2583, 2993, 1588, 2995, 3868, 2582, 3869, -1, 2575, 2580, 2993, -1, -1, -1, 2575, -1, -1, -1, 2576, 2581, 854, -1, -1, 2575, -1, 2986, 2588, 1585, 2575, 2575, 2575, 2575 }; static const ANTLR3_INT32 dfa2_T1380[] = { 2579, 2578, -1, -1, 3302, 2583, 2993, 1588, 2995, 3726, 2582, 3727, -1, 2575, 2580, 2993, -1, -1, -1, 2575, -1, -1, -1, 2576, 2581, 854, -1, -1, 2575, -1, 2986, 2588, 1585, 2575, 2575, 2575, 2575 }; static const ANTLR3_INT32 dfa2_T1381[] = { 153, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, 152 }; static const ANTLR3_INT32 dfa2_T1382[] = { 448, -1, -1, -1, -1, 447, -1, -1, -1, -1, -1, 447 }; static const ANTLR3_INT32 dfa2_T1383[] = { 1577, 1576, -1, -1, 2545, 1581, 2061, 1588, 2064, 3669, 1580, 3670, -1, 1573, 1578, 2061, -1, -1, -1, 1573, -1, -1, -1, 1574, 1579, 854, -1, -1, 1573, -1, 2051, 1584, 1585, 1573, 1573, 1573, 1573 }; static const ANTLR3_INT32 dfa2_T1384[] = { 2579, 2578, -1, -1, 3302, 2583, 2993, 1588, 2995, 3886, 2582, 3301, -1, 2575, 2580, 2993, -1, -1, -1, 2575, -1, -1, -1, 2576, 2581, 854, -1, -1, 2575, -1, 2986, 2588, 1585, 2575, 2575, 2575, 2575 }; static const ANTLR3_INT32 dfa2_T1385[] = { 575, 574, -1, -1, 573, 579, 613, -1, 571, 614, 578, 571, -1, 571, 576, 613, -1, -1, -1, 571, 57, -1, -1, 572, 577, 34, -1, -1, 571, -1, 580, 279, 35, 571, 571, 571, 571 }; static const ANTLR3_INT32 dfa2_T1386[] = { 221, 436, -1, -1, 789, 228, 437, 793, 440, 438, 227, 791, -1, 219, 225, 437, -1, -1, -1, 219, -1, -1, -1, 220, 226, 230, -1, -1, 219, -1, 790, 794, 792, 219, 219, 219, 219 }; static const ANTLR3_INT32 dfa2_T1387[] = { 1577, 1576, -1, -1, 2545, 1581, 2061, 1588, 2064, 3850, 1580, 2546, -1, 1573, 1578, 2061, -1, -1, -1, 1573, -1, -1, -1, 1574, 1579, 854, -1, -1, 1573, -1, 2051, 1584, 1585, 1573, 1573, 1573, 1573 }; static const ANTLR3_INT32 dfa2_T1388[] = { 295, 294, -1, -1, 284, 299, 582, -1, 292, 1334, 298, 292, -1, 292, 296, 582, -1, -1, -1, 292, -1, -1, -1, 293, 297, 34, -1, -1, 292, -1, 278, 279, 35, 292, 292, 292, 292 }; static const ANTLR3_INT32 dfa2_T1389[] = { 575, 574, -1, -1, 573, 579, 1839, -1, 1352, 1840, 578, 571, -1, 571, 576, 1839, -1, -1, -1, 571, -1, -1, -1, 572, 577, 34, -1, -1, 571, -1, 580, 279, 35, 571, 571, 571, 571 }; static const ANTLR3_INT32 dfa2_T1390[] = { 338, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 643, -1, 642 }; static const ANTLR3_INT32 dfa2_T1391[] = { 793, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1205, -1, 1204 }; static const ANTLR3_INT32 dfa2_T1392[] = { 3450, 2184, -1, -1, 3449, 2189, 3445, 403, 3453, 3446, 3452, 3447, -1, 3453, 2186, 3445, -1, -1, -1, 3453, 405, -1, -1, 3448, 3451, 854, -1, -1, 3453, 405, 3170, 3171, 402, 3453, 3453, 3453, 3453 }; static const ANTLR3_INT32 dfa2_T1393[] = { 1124, 1123, -1, -1, 1122, 1128, 1600, -1, 1603, 1604, 1127, 1605, -1, 1120, 1125, 1600, -1, -1, -1, 1120, -1, -1, -1, 1121, 1126, 242, -1, -1, 1120, -1, 732, 733, 35, 1120, 1120, 1120, 1120 }; static const ANTLR3_INT32 dfa2_T1394[] = { 1124, 1123, -1, -1, 1122, 1128, 1600, -1, 1603, 2528, 1127, 2529, -1, 1120, 1125, 1600, -1, -1, -1, 1120, -1, -1, -1, 1121, 1126, 242, -1, -1, 1120, -1, 732, 733, 35, 1120, 1120, 1120, 1120 }; static const ANTLR3_INT32 dfa2_T1395[] = { 2092, -1, -1, -1, 2099, 793, 2101, 3224, -1, 2101, -1, 2101, -1, 3223, -1, -1, -1, 2101, -1, -1, -1, 2102, 2103, 242, -1, -1, 2101, -1, 1205, 1228, 792, 2101, 2101, 2101, 2101 }; static const ANTLR3_INT32 dfa2_T1396[] = { 2092, -1, -1, -1, 2099, 793, 2101, 3321, -1, 2101, -1, 2101, -1, 3320, -1, -1, -1, 2101, -1, -1, -1, 2102, 2103, 242, -1, -1, 2101, -1, 1205, 1228, 792, 2101, 2101, 2101, 2101 }; static const ANTLR3_INT32 dfa2_T1397[] = { 1124, 1123, -1, -1, 1122, 1128, 1600, -1, 1603, 3198, 1127, 3199, -1, 1120, 1125, 1600, -1, -1, -1, 1120, -1, -1, -1, 1121, 1126, 242, -1, -1, 1120, -1, 732, 733, 35, 1120, 1120, 1120, 1120 }; static const ANTLR3_INT32 dfa2_T1398[] = { 108, 108, -1, -1, 108, 106, 109, 205, 111, 1056, 108, 111, -1, 111, 108, 109, -1, -1, -1, 111, -1, -1, -1, 112, 108, 694, -1, -1, 111, -1, 693, 108, 204, 111, 111, 111, 111 }; static const ANTLR3_INT32 dfa2_T1399[] = { 209, -1, -1, -1, -1, -1, 209 }; static const ANTLR3_INT32 dfa2_T1400[] = { 104, -1, -1, -1, -1, -1, 104 }; static const ANTLR3_INT32 dfa2_T1401[] = { 3771, -1, -1, -1, -1, -1, 3771 }; static const ANTLR3_INT32 dfa2_T1402[] = { 255, -1, -1, -1, -1, -1, 255 }; static const ANTLR3_INT32 dfa2_T1403[] = { 2697, -1, -1, -1, -1, -1, 2697 }; static const ANTLR3_INT32 dfa2_T1404[] = { 3009, -1, -1, -1, -1, -1, 3009 }; static const ANTLR3_INT32 dfa2_T1405[] = { 880, -1, -1, -1, -1, -1, 880 }; static const ANTLR3_INT32 dfa2_T1406[] = { 1294, -1, -1, -1, -1, -1, 1294 }; static const ANTLR3_INT32 dfa2_T1407[] = { 2814, -1, -1, -1, -1, -1, 2814 }; static const ANTLR3_INT32 dfa2_T1408[] = { 1528, -1, -1, -1, -1, -1, 1528 }; static const ANTLR3_INT32 dfa2_T1409[] = { 2696, -1, -1, -1, -1, -1, 2696 }; static const ANTLR3_INT32 dfa2_T1410[] = { 2443, -1, -1, -1, -1, -1, 2443 }; static const ANTLR3_INT32 dfa2_T1411[] = { 388, -1, -1, -1, -1, -1, 388 }; static const ANTLR3_INT32 dfa2_T1412[] = { 1769, -1, -1, -1, -1, -1, 1769 }; static const ANTLR3_INT32 dfa2_T1413[] = { 491, -1, -1, -1, -1, -1, 491 }; static const ANTLR3_INT32 dfa2_T1414[] = { 3592, -1, -1, -1, -1, -1, 3592 }; static const ANTLR3_INT32 dfa2_T1415[] = { 3063, -1, -1, -1, -1, -1, 3063 }; static const ANTLR3_INT32 dfa2_T1416[] = { 544, -1, -1, -1, -1, -1, 544 }; static const ANTLR3_INT32 dfa2_T1417[] = { 556, -1, -1, -1, -1, -1, 556 }; static const ANTLR3_INT32 dfa2_T1418[] = { 1773, -1, -1, -1, -1, -1, 1773 }; static const ANTLR3_INT32 dfa2_T1419[] = { 804, -1, -1, -1, -1, -1, 804 }; static const ANTLR3_INT32 dfa2_T1420[] = { 3876, -1, -1, -1, -1, -1, 3876 }; static const ANTLR3_INT32 dfa2_T1421[] = { 872, -1, -1, -1, -1, -1, 872 }; static const ANTLR3_INT32 dfa2_T1422[] = { 860, -1, -1, -1, -1, -1, 860 }; static const ANTLR3_INT32 dfa2_T1423[] = { 1993, -1, -1, -1, -1, -1, 1993 }; static const ANTLR3_INT32 dfa2_T1424[] = { 1982, -1, -1, -1, -1, -1, 1982 }; static const ANTLR3_INT32 dfa2_T1425[] = { 2694, -1, -1, -1, -1, -1, 2694 }; static const ANTLR3_INT32 dfa2_T1426[] = { 3836, -1, -1, -1, -1, -1, 3836 }; static const ANTLR3_INT32 dfa2_T1427[] = { 3055, -1, -1, -1, -1, -1, 3055 }; static const ANTLR3_INT32 dfa2_T1428[] = { 3642, -1, -1, -1, -1, -1, 3642 }; static const ANTLR3_INT32 dfa2_T1429[] = { 1874, 1873, -1, -1, 1872, 1878, 2383, -1, 2789, 2384, 1877, 1870, -1, 1870, 1875, 2383, -1, -1, -1, 1870, -1, -1, -1, 1871, 1876, 34, -1, -1, 1870, -1, 1419, 974, 35, 1870, 1870, 1870, 1870 }; static const ANTLR3_INT32 dfa2_T1430[] = { 249, 248, -1, -1, 243, 253, 1278, -1, 855, 1279, 252, 515, -1, 246, 250, 1278, -1, -1, -1, 246, -1, -1, -1, 247, 251, 242, -1, -1, 246, -1, 240, 241, 35, 246, 246, 246, 246 }; static const ANTLR3_INT32 dfa2_T1431[] = { 99, 89, -1, -1, 88, 97, 90, -1, 95, 100, 99, 101, -1, 96, 99, 90, -1, -1, -1, 96, -1, -1, -1, 93, 99, 98, -1, -1, 96, -1, 94, 99, 35, 96, 96, 96, 96 }; static const ANTLR3_INT32 dfa2_T1432[] = { 2123, 2122, -1, -1, 2121, 2127, 2158, -1, 2119, 2159, 2126, 2119, -1, 2119, 2124, 2158, -1, -1, -1, 2119, 754, -1, -1, 2120, 2125, 242, -1, -1, 2119, -1, 2128, 1661, 35, 2119, 2119, 2119, 2119 }; static const ANTLR3_INT32 dfa2_T1433[] = { 981, 980, -1, -1, 975, 985, 976, -1, 978, 1887, 984, 978, -1, 978, 982, 976, -1, -1, -1, 978, -1, -1, -1, 979, 983, 34, -1, -1, 978, -1, 973, 974, 35, 978, 978, 978, 978 }; static const ANTLR3_INT32 dfa2_T1434[] = { 981, 980, -1, -1, 975, 985, 976, -1, 978, 3386, 984, 978, -1, 978, 982, 976, -1, -1, -1, 978, -1, -1, -1, 979, 983, 34, -1, -1, 978, -1, 973, 974, 35, 978, 978, 978, 978 }; static const ANTLR3_INT32 dfa2_T1435[] = { 981, 980, -1, -1, 975, 985, 976, -1, 978, 2769, 984, 978, -1, 978, 982, 976, -1, -1, -1, 978, -1, -1, -1, 979, 983, 34, -1, -1, 978, -1, 973, 974, 35, 978, 978, 978, 978 }; static const ANTLR3_INT32 dfa2_T1436[] = { 2579, 2578, -1, -1, 2577, 2583, 2573, -1, 2575, 3554, 2582, 2575, -1, 2575, 2580, 2573, -1, -1, -1, 2575, -1, -1, -1, 2576, 2581, 242, -1, -1, 2575, -1, 2128, 1661, 35, 2575, 2575, 2575, 2575 }; static const ANTLR3_INT32 dfa2_T1437[] = { 3232, 1667, -1, -1, 3231, 1672, 3227, -1, 3235, 3228, 3234, 3229, -1, 3235, 1669, 3227, -1, -1, -1, 3235, 1080, -1, -1, 3230, 3233, 242, -1, -1, 3235, 1080, 1660, 3226, 35, 3235, 3235, 3235, 3235 }; static const ANTLR3_INT32 dfa2_T1438[] = { 1668, 1667, -1, -1, 1662, 1672, 1663, -1, 1665, 2592, 1671, 1665, -1, 1665, 1669, 1663, -1, -1, -1, 1665, -1, -1, -1, 1666, 1670, 242, -1, -1, 1665, -1, 1660, 1661, 35, 1665, 1665, 1665, 1665 }; static const ANTLR3_INT32 dfa2_T1439[] = { 1668, 1667, -1, -1, 1662, 1672, 1663, -1, 1665, 3279, 1671, 1665, -1, 1665, 1669, 1663, -1, -1, -1, 1665, -1, -1, -1, 1666, 1670, 242, -1, -1, 1665, -1, 1660, 1661, 35, 1665, 1665, 1665, 1665 }; static const ANTLR3_INT32 dfa2_T1440[] = { 465, 464, -1, -1, 459, 469, 503, 1588, 462, 2067, 468, 462, -1, 462, 466, 503, -1, -1, -1, 462, -1, -1, -1, 463, 467, 854, -1, -1, 462, -1, 1630, 1631, 1585, 462, 462, 462, 462 }; static const ANTLR3_INT32 dfa2_T1441[] = { 465, 464, -1, -1, 459, 469, 817, -1, 1238, 818, 468, 462, -1, 462, 466, 817, -1, -1, -1, 462, -1, -1, -1, 463, 467, 242, -1, -1, 462, -1, 458, 241, 35, 462, 462, 462, 462 }; static const ANTLR3_INT32 dfa2_T1442[] = { 1668, 1667, -1, -1, 1662, 1672, 1663, -1, 1665, 3704, 1671, 1665, -1, 1665, 1669, 1663, -1, -1, -1, 1665, -1, -1, -1, 1666, 1670, 242, -1, -1, 1665, -1, 1660, 1661, 35, 1665, 1665, 1665, 1665 }; static const ANTLR3_INT32 dfa2_T1443[] = { 1203, -1, -1, -1, 1643, 1639, 1644, 2931, -1, 1644, -1, 1644, 1641, 2930, -1, -1, -1, 1644, -1, -1, -1, 1645, 1646, 242, -1, -1, 1644, -1, 1205, 1228, 1638, 1644, 1644, 1644, 1644 }; static const ANTLR3_INT32 dfa2_T1444[] = { 1203, -1, -1, -1, 1643, 1639, 1644, 3034, -1, 1644, -1, 1644, 1641, 3033, -1, -1, -1, 1644, -1, -1, -1, 1645, 1646, 242, -1, -1, 1644, -1, 1205, 1228, 1638, 1644, 1644, 1644, 1644 }; static const ANTLR3_INT32 dfa2_T1445[] = { 508, 508, -1, -1, 2703, 506, 2699, -1, 2701, 2700, 2703, 2701, -1, 2701, 508, 2699, -1, -1, -1, 2701, 1552, -1, -1, 2702, 2703, 2698, -1, -1, 2701, 1552, 505, 2703, 35, 2701, 2701, 2701, 2701 }; static const ANTLR3_INT32 dfa2_T1446[] = { 1874, 1873, -1, -1, 2788, 1878, 2383, 338, 2385, 3832, 1877, 2382, -1, 1870, 1875, 2383, -1, -1, -1, 1870, -1, -1, -1, 1871, 1876, 34, -1, -1, 1870, -1, 2376, 1883, 337, 1870, 1870, 1870, 1870 }; static const ANTLR3_INT32 dfa2_T1447[] = { 981, 980, -1, -1, 975, 985, 976, -1, 978, 1879, 984, 978, -1, 978, 982, 976, -1, -1, -1, 978, -1, -1, -1, 979, 983, 34, -1, -1, 978, -1, 973, 974, 35, 978, 978, 978, 978 }; static const ANTLR3_INT32 dfa2_T1448[] = { 896, 895, -1, -1, 1844, 900, 1358, 338, 1361, 3600, 899, 1360, -1, 892, 897, 1358, -1, -1, -1, 892, -1, -1, -1, 893, 898, 34, -1, -1, 892, -1, 1348, 903, 337, 892, 892, 892, 892 }; static const ANTLR3_INT32 dfa2_T1449[] = { 99, 89, -1, -1, 88, 97, 417, -1, 210, 418, 99, 92, -1, 96, 99, 417, -1, -1, -1, 96, -1, -1, -1, 93, 99, 98, -1, -1, 96, -1, 94, 99, 35, 96, 96, 96, 96 }; static const ANTLR3_INT32 dfa2_T1450[] = { 564, 563, -1, -1, 562, 568, 601, -1, 560, 602, 567, 560, -1, 560, 565, 601, -1, -1, -1, 560, 57, -1, -1, 561, 566, 34, -1, -1, 560, -1, 278, 279, 35, 560, 560, 560, 560 }; static const ANTLR3_INT32 dfa2_T1451[] = { 221, 436, -1, -1, 789, 228, 437, 793, 440, 1697, 227, 1698, -1, 219, 225, 437, -1, -1, -1, 219, -1, -1, -1, 220, 226, 230, -1, -1, 219, -1, 790, 794, 792, 219, 219, 219, 219 }; static const ANTLR3_INT32 dfa2_T1452[] = { 811, 810, -1, -1, 1740, 815, 1245, 1588, 1247, 1246, 814, 1743, -1, 807, 812, 1245, -1, -1, -1, 807, -1, -1, -1, 808, 813, 854, -1, -1, 807, -1, 1630, 1631, 1585, 807, 807, 807, 807 }; static const ANTLR3_INT32 dfa2_T1453[] = { 221, 436, -1, -1, 789, 228, 437, 793, 440, 2622, 227, 2623, -1, 219, 225, 437, -1, -1, -1, 219, -1, -1, -1, 220, 226, 230, -1, -1, 219, -1, 790, 794, 792, 219, 219, 219, 219 }; static const ANTLR3_INT32 dfa2_T1454[] = { 811, 810, -1, -1, 1740, 815, 1245, 1588, 1247, 1246, 814, 2661, -1, 807, 812, 1245, -1, -1, -1, 807, -1, -1, -1, 808, 813, 854, -1, -1, 807, -1, 1630, 1631, 1585, 807, 807, 807, 807 }; static const ANTLR3_INT32 dfa2_T1455[] = { 221, 436, -1, -1, 789, 228, 437, 793, 440, 797, 227, 798, -1, 219, 225, 437, -1, -1, -1, 219, -1, -1, -1, 220, 226, 230, -1, -1, 219, -1, 790, 794, 792, 219, 219, 219, 219 }; static const ANTLR3_INT32 dfa2_T1456[] = { 87, 1588, -1, -1, -1, -1, -1, -1, -1, 87, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2028, -1, 2027 }; static const ANTLR3_INT32 dfa2_T1457[] = { 221, 436, -1, -1, 789, 228, 437, 793, 440, 3307, 227, 791, -1, 219, 225, 437, -1, -1, -1, 219, -1, -1, -1, 220, 226, 230, -1, -1, 219, -1, 790, 794, 792, 219, 219, 219, 219 }; static const ANTLR3_INT32 dfa2_T1458[] = { 564, 563, -1, -1, 562, 568, 1829, -1, 1343, 1830, 567, 560, -1, 560, 565, 1829, -1, -1, -1, 560, -1, -1, -1, 561, 566, 34, -1, -1, 560, -1, 278, 279, 35, 560, 560, 560, 560 }; static const ANTLR3_INT32 dfa2_T1459[] = { 1668, 1667, -1, -1, 1662, 1672, 1663, -1, 1665, 2584, 1671, 1665, -1, 1665, 1669, 1663, -1, -1, -1, 1665, -1, -1, -1, 1666, 1670, 242, -1, -1, 1665, -1, 1660, 1661, 35, 1665, 1665, 1665, 1665 }; static const ANTLR3_INT32 dfa2_T1460[] = { 811, 810, -1, -1, 1740, 815, 1245, 1588, 1247, 1246, 814, 3317, -1, 807, 812, 1245, -1, -1, -1, 807, -1, -1, -1, 808, 813, 854, -1, -1, 807, -1, 1630, 1631, 1585, 807, 807, 807, 807 }; static const ANTLR3_INT32 dfa2_T1461[] = { 170, 165, 641, -1, 164, 174, 634, 640, 636, 635, 173, 636, -1, 636, 171, 634, -1, -1, -1, 636, -1, -1, -1, 637, 638, 65, -1, -1, 636, -1, 64, 146, 639, 636, 636, 636, 636 }; static const ANTLR3_INT32 dfa2_T1462[] = { 221, 436, -1, -1, 789, 228, 437, 793, 440, 438, 227, 798, -1, 219, 225, 437, -1, -1, -1, 219, -1, -1, -1, 220, 226, 230, -1, -1, 219, -1, 790, 794, 792, 219, 219, 219, 219 }; static const ANTLR3_INT32 dfa2_T1463[] = { 221, 436, -1, -1, 435, 228, 437, -1, 440, 438, 227, 439, -1, 219, 225, 437, -1, -1, -1, 219, -1, -1, -1, 220, 226, 230, -1, -1, 219, -1, 229, 441, 35, 219, 219, 219, 219 }; static const ANTLR3_INT32 dfa2_T1464[] = { 221, 436, -1, -1, 789, 228, 437, 793, 440, 438, 227, 1698, -1, 219, 225, 437, -1, -1, -1, 219, -1, -1, -1, 220, 226, 230, -1, -1, 219, -1, 790, 794, 792, 219, 219, 219, 219 }; static const ANTLR3_INT32 dfa2_T1465[] = { 3848, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1596 }; static const ANTLR3_INT32 dfa2_T1466[] = { 221, 436, -1, -1, 789, 228, 437, 793, 440, 438, 227, 2623, -1, 219, 225, 437, -1, -1, -1, 219, -1, -1, -1, 220, 226, 230, -1, -1, 219, -1, 790, 794, 792, 219, 219, 219, 219 }; static const ANTLR3_INT32 dfa2_T1467[] = { 641, -1, -1, -1, 961, 640, 957, 962, -1, 957, -1, 957, -1, 961, -1, -1, -1, 957, -1, -1, -1, 958, 959, -1, -1, -1, 957, -1, -1, -1, 960, 957, 957, 957, 957 }; static const ANTLR3_INT32 dfa2_T1468[] = { 1203, -1, -1, -1, 1648, 1202, 1644, 1649, -1, 1644, -1, 1644, -1, 1648, -1, -1, -1, 1644, -1, -1, -1, 1645, 1646, -1, -1, -1, 1644, -1, -1, -1, 1647, 1644, 1644, 1644, 1644 }; static const ANTLR3_INT32 dfa2_T1469[] = { 249, 248, -1, -1, 243, 253, 244, -1, 246, 245, 252, 246, -1, 246, 250, 244, -1, -1, -1, 246, 200, -1, -1, 247, 251, 242, -1, -1, 246, -1, 240, 241, 35, 246, 246, 246, 246 }; static const ANTLR3_INT32 dfa2_T1470[] = { 749, 748, -1, -1, 1586, 753, 1144, 1588, 1147, 3470, 752, 1146, -1, 746, 750, 1144, -1, -1, -1, 746, -1, -1, -1, 747, 751, 854, -1, -1, 746, -1, 1583, 1584, 1585, 746, 746, 746, 746 }; static const ANTLR3_INT32 dfa2_T1471[] = { 2836, 1123, 2092, -1, 2835, 1128, 2831, 2091, 2839, 2832, 2838, 2833, 2093, 2839, 1125, 2831, -1, -1, -1, 2839, 1080, -1, -1, 2834, 2837, 242, -1, -1, 2839, 1080, 732, 2830, 2090, 2839, 2839, 2839, 2839 }; static const ANTLR3_INT32 dfa2_T1472[] = { 2112, 2111, -1, -1, 2110, 2116, 2146, -1, 2108, 2147, 2115, 2108, -1, 2108, 2113, 2146, -1, -1, -1, 2108, 754, -1, -1, 2109, 2114, 242, -1, -1, 2108, -1, 1660, 1661, 35, 2108, 2108, 2108, 2108 }; static const ANTLR3_INT32 dfa2_T1473[] = { 3166, 1710, -1, -1, 3165, 1715, 3162, 205, 3172, 3469, 3169, 3163, -1, 3172, 3167, 3162, -1, -1, -1, 3172, 405, -1, -1, 3164, 3168, 854, -1, -1, 3172, 405, 3170, 3171, 204, 3172, 3172, 3172, 3172 }; static const ANTLR3_INT32 dfa2_T1474[] = { 2040, -1, -1, -1, -1, 2516, -1, -1, -1, -1, -1, 2517, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1596 }; static const ANTLR3_INT32 dfa2_T1475[] = { 1668, 1667, -1, -1, 2586, 1672, 2130, 1588, 2132, 3803, 1671, 2129, -1, 1665, 1669, 2130, -1, -1, -1, 1665, -1, -1, -1, 1666, 1670, 854, -1, -1, 1665, -1, 2587, 2588, 1585, 1665, 1665, 1665, 1665 }; static const ANTLR3_INT32 dfa2_T1476[] = { 170, 165, 1383, -1, 164, 174, 1376, 1382, 1378, 1377, 173, 1378, 1384, 1378, 171, 1376, -1, -1, -1, 1378, -1, -1, -1, 1379, 1380, 65, -1, -1, 1378, -1, 64, 146, 1381, 1378, 1378, 1378, 1378 }; static const ANTLR3_INT32 dfa2_T1477[] = { 249, 248, -1, -1, 852, 253, 244, 205, 246, 858, 252, 246, -1, 246, 250, 244, -1, -1, -1, 246, -1, -1, -1, 247, 251, 854, -1, -1, 246, -1, 853, 241, 204, 246, 246, 246, 246 }; static const ANTLR3_INT32 dfa2_T1478[] = { 249, 248, -1, -1, 852, 253, 244, 205, 246, 1772, 252, 246, -1, 246, 250, 244, -1, -1, -1, 246, -1, -1, -1, 247, 251, 854, -1, -1, 246, -1, 853, 241, 204, 246, 246, 246, 246 }; static const ANTLR3_INT32 dfa2_T1479[] = { 508, 508, -1, -1, 508, 506, 554, -1, 511, 555, 508, 511, -1, 511, 508, 554, -1, -1, -1, 511, 200, -1, -1, 512, 508, 507, -1, -1, 511, -1, 505, 508, 35, 511, 511, 511, 511 }; static const ANTLR3_INT32 dfa2_T1480[] = { 249, 248, -1, -1, 852, 253, 244, 205, 246, 2706, 252, 246, -1, 246, 250, 244, -1, -1, -1, 246, -1, -1, -1, 247, 251, 854, -1, -1, 246, -1, 853, 241, 204, 246, 246, 246, 246 }; static const ANTLR3_INT32 dfa2_T1481[] = { 327, 141, -1, -1, 58, 331, 323, 338, 325, 633, 330, 325, -1, 325, 328, 323, -1, -1, -1, 325, -1, -1, -1, 326, 329, 34, -1, -1, 325, -1, 944, 945, 337, 325, 325, 325, 325 }; static const ANTLR3_INT32 dfa2_T1482[] = { 811, 810, -1, -1, 809, 815, 1245, -1, 1247, 1248, 814, 1249, -1, 807, 812, 1245, -1, -1, -1, 807, -1, -1, -1, 808, 813, 242, -1, -1, 807, -1, 458, 241, 35, 807, 807, 807, 807 }; static const ANTLR3_INT32 dfa2_T1483[] = { 465, 464, -1, -1, 459, 469, 460, -1, 462, 1241, 468, 462, -1, 462, 466, 460, -1, -1, -1, 462, -1, -1, -1, 463, 467, 242, -1, -1, 462, -1, 458, 241, 35, 462, 462, 462, 462 }; static const ANTLR3_INT32 dfa2_T1484[] = { 465, 464, -1, -1, 459, 469, 460, -1, 462, 3012, 468, 462, -1, 462, 466, 460, -1, -1, -1, 462, -1, -1, -1, 463, 467, 242, -1, -1, 462, -1, 458, 241, 35, 462, 462, 462, 462 }; static const ANTLR3_INT32 dfa2_T1485[] = { 465, 464, -1, -1, 459, 469, 460, -1, 462, 2211, 468, 462, -1, 462, 466, 460, -1, -1, -1, 462, -1, -1, -1, 463, 467, 242, -1, -1, 462, -1, 458, 241, 35, 462, 462, 462, 462 }; static const ANTLR3_INT32 dfa2_T1486[] = { 793, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 242, -1, -1, -1, -1, 1205, 1228, 792 }; static const ANTLR3_INT32 dfa2_T1487[] = { 811, 810, -1, -1, 809, 815, 1245, -1, 1247, 2215, 814, 2216, -1, 807, 812, 1245, -1, -1, -1, 807, -1, -1, -1, 808, 813, 242, -1, -1, 807, -1, 458, 241, 35, 807, 807, 807, 807 }; static const ANTLR3_INT32 dfa2_T1488[] = { 249, 248, -1, -1, 852, 253, 244, 205, 246, 850, 252, 246, -1, 246, 250, 244, -1, -1, -1, 246, -1, -1, -1, 247, 251, 854, -1, -1, 246, -1, 853, 241, 204, 246, 246, 246, 246 }; static const ANTLR3_INT32 dfa2_T1489[] = { 811, 810, -1, -1, 809, 815, 1245, -1, 1247, 3013, 814, 3014, -1, 807, 812, 1245, -1, -1, -1, 807, -1, -1, -1, 808, 813, 242, -1, -1, 807, -1, 458, 241, 35, 807, 807, 807, 807 }; static const ANTLR3_INT32 dfa2_T1490[] = { 82, 82, -1, -1, 82, 80, 382, -1, 85, 383, 82, 85, -1, 85, 82, 382, -1, -1, -1, 85, 57, -1, -1, 86, 82, 81, -1, -1, 85, -1, 79, 82, 35, 85, 85, 85, 85 }; static const ANTLR3_INT32 dfa2_T1491[] = { 2123, 2122, -1, -1, 2121, 2127, 3295, -1, 2987, 3296, 2126, 2119, -1, 2119, 2124, 3295, -1, -1, -1, 2119, -1, -1, -1, 2120, 2125, 242, -1, -1, 2119, -1, 2128, 1661, 35, 2119, 2119, 2119, 2119 }; static const ANTLR3_INT32 dfa2_T1492[] = { 1790, 508, 1203, -1, 1790, 506, 2218, 2012, 2223, 2219, 1790, 2220, -1, 2223, 508, 2218, -1, -1, -1, 2223, 405, -1, -1, 2221, 2222, 1308, -1, -1, 2223, 405, 1307, 1790, 2010, 2223, 2223, 2223, 2223 }; static const ANTLR3_INT32 dfa2_T1493[] = { 896, 895, -1, -1, 894, 900, 890, -1, 892, 2321, 899, 892, -1, 892, 897, 890, -1, -1, -1, 892, -1, -1, -1, 893, 898, 34, -1, -1, 892, -1, 580, 279, 35, 892, 892, 892, 892 }; static const ANTLR3_INT32 dfa2_T1494[] = { 465, 464, -1, -1, 459, 469, 460, -1, 462, 1234, 468, 462, -1, 462, 466, 460, -1, -1, -1, 462, -1, -1, -1, 463, 467, 242, -1, -1, 462, -1, 458, 241, 35, 462, 462, 462, 462 }; static const ANTLR3_INT32 dfa2_T1495[] = { 2040, -1, -1, -1, -1, 2039, -1, -1, -1, -1, -1, 2041, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1596 }; static const ANTLR3_INT32 dfa2_T1496[] = { 3166, 1710, -1, -1, 3165, 1715, 3162, 205, 3172, 3786, 3169, 3163, -1, 3172, 3167, 3162, -1, -1, -1, 3172, 405, -1, -1, 3164, 3168, 854, -1, -1, 3172, 405, 3170, 3171, 204, 3172, 3172, 3172, 3172 }; static const ANTLR3_INT32 dfa2_T1497[] = { 99, 89, -1, -1, 88, 97, 417, -1, 210, 418, 99, 96, -1, 96, 99, 417, -1, -1, -1, 96, -1, -1, -1, 93, 99, 98, -1, -1, 96, -1, 94, 99, 35, 96, 96, 96, 96 }; static const ANTLR3_INT32 dfa2_T1498[] = { 249, 248, -1, -1, 243, 253, 516, -1, 518, 1280, 252, 1281, -1, 246, 250, 516, -1, -1, -1, 246, -1, -1, -1, 247, 251, 242, -1, -1, 246, -1, 240, 241, 35, 246, 246, 246, 246 }; static const ANTLR3_INT32 dfa2_T1499[] = { 249, 248, -1, -1, 243, 253, 516, -1, 518, 519, 252, 520, -1, 246, 250, 516, -1, -1, -1, 246, -1, -1, -1, 247, 251, 242, -1, -1, 246, -1, 240, 241, 35, 246, 246, 246, 246 }; static const ANTLR3_INT32 dfa2_T1500[] = { 249, 248, -1, -1, 243, 253, 516, -1, 518, 2271, 252, 2272, -1, 246, 250, 516, -1, -1, -1, 246, -1, -1, -1, 247, 251, 242, -1, -1, 246, -1, 240, 241, 35, 246, 246, 246, 246 }; static const ANTLR3_INT32 dfa2_T1501[] = { 221, 436, -1, -1, 435, 228, 437, -1, 440, 1222, 227, 1223, -1, 219, 225, 437, -1, -1, -1, 219, -1, -1, -1, 220, 226, 230, -1, -1, 219, -1, 229, 441, 35, 219, 219, 219, 219 }; static const ANTLR3_INT32 dfa2_T1502[] = { 981, 980, -1, -1, 975, 985, 1421, -1, 1423, 1424, 984, 1425, -1, 978, 982, 1421, -1, -1, -1, 978, -1, -1, -1, 979, 983, 34, -1, -1, 978, -1, 973, 974, 35, 978, 978, 978, 978 }; static const ANTLR3_INT32 dfa2_T1503[] = { 221, 436, -1, -1, 435, 228, 437, -1, 440, 442, 227, 443, -1, 219, 225, 437, -1, -1, -1, 219, -1, -1, -1, 220, 226, 230, -1, -1, 219, -1, 229, 441, 35, 219, 219, 219, 219 }; static const ANTLR3_INT32 dfa2_T1504[] = { 1595, -1, -1, -1, -1, 1151, -1, -1, -1, -1, -1, 1151, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1596 }; static const ANTLR3_INT32 dfa2_T1505[] = { 981, 980, -1, -1, 975, 985, 1421, -1, 1423, 3093, 984, 3094, -1, 978, 982, 1421, -1, -1, -1, 978, -1, -1, -1, 979, 983, 34, -1, -1, 978, -1, 973, 974, 35, 978, 978, 978, 978 }; static const ANTLR3_INT32 dfa2_T1506[] = { 221, 436, -1, -1, 435, 228, 437, -1, 440, 2172, 227, 2173, -1, 219, 225, 437, -1, -1, -1, 219, -1, -1, -1, 220, 226, 230, -1, -1, 219, -1, 229, 441, 35, 219, 219, 219, 219 }; static const ANTLR3_INT32 dfa2_T1507[] = { 981, 980, -1, -1, 975, 985, 1421, -1, 1423, 2362, 984, 2363, -1, 978, 982, 1421, -1, -1, -1, 978, -1, -1, -1, 979, 983, 34, -1, -1, 978, -1, 973, 974, 35, 978, 978, 978, 978 }; static const ANTLR3_INT32 dfa2_T1508[] = { 405, -1, 1203, -1, 405, -1, 2512, 2012, 2485, 2481, 405, 2482, -1, 2485, -1, 2512, -1, -1, -1, 2485, 405, -1, -1, 2483, 2484, 1090, -1, -1, 2485, 405, 407, 405, 2511, 2485, 2485, 2485, 2485 }; static const ANTLR3_INT32 dfa2_T1509[] = { 508, 508, -1, -1, 1748, 506, 1253, 1588, 1255, 3591, 508, 1252, -1, 511, 508, 1253, -1, -1, -1, 511, -1, -1, -1, 512, 508, 1751, -1, -1, 511, -1, 1749, 1750, 1585, 511, 511, 511, 511 }; static const ANTLR3_INT32 dfa2_T1510[] = { 3158, -1, -1, -1, -1, -1, 3158 }; static const ANTLR3_INT32 dfa2_T1511[] = { 3156, -1, -1, -1, -1, -1, 3156 }; static const ANTLR3_INT32 dfa2_T1512[] = { 3795, -1, -1, -1, -1, -1, 3795 }; static const ANTLR3_INT32 dfa2_T1513[] = { 3743, -1, -1, -1, -1, -1, 3743 }; static const ANTLR3_INT32 dfa2_T1514[] = { 3828, -1, -1, -1, -1, -1, 3828 }; static const ANTLR3_INT32 dfa2_T1515[] = { 3432, -1, -1, -1, -1, -1, 3432 }; static const ANTLR3_INT32 dfa2_T1516[] = { 3490, -1, -1, -1, -1, -1, 3490 }; static const ANTLR3_INT32 dfa2_T1517[] = { 3567, -1, -1, -1, -1, -1, 3567 }; static const ANTLR3_INT32 dfa2_T1518[] = { 3674, -1, -1, -1, -1, -1, 3674 }; static const ANTLR3_INT32 dfa2_T1519[] = { 3744, -1, -1, -1, -1, -1, 3744 }; static const ANTLR3_INT32 dfa2_T1520[] = { 3675, -1, -1, -1, -1, -1, 3675 }; static const ANTLR3_INT32 dfa2_T1521[] = { 2092, -1, -1, -1, 2099, 793, 2101, 2942, -1, 2101, -1, 2101, -1, 2941, -1, -1, -1, 2101, -1, -1, -1, 2102, 2103, 242, -1, -1, 2101, -1, 1205, 1228, 792, 2101, 2101, 2101, 2101 }; static const ANTLR3_INT32 dfa2_T1522[] = { 2092, -1, -1, -1, 2099, 793, 2101, 3429, -1, 2101, -1, 2101, -1, 3428, -1, -1, -1, 2101, -1, -1, -1, 2102, 2103, 242, -1, -1, 2101, -1, 1205, 1228, 792, 2101, 2101, 2101, 2101 }; static const ANTLR3_INT32 dfa2_T1523[] = { 2092, -1, -1, -1, 2099, 793, 2101, 3666, -1, 2101, -1, 2101, -1, 3665, -1, -1, -1, 2101, -1, -1, -1, 2102, 2103, 242, -1, -1, 2101, -1, 1205, 1228, 792, 2101, 2101, 2101, 2101 }; static const ANTLR3_INT32 dfa2_T1524[] = { 2092, -1, -1, -1, 2099, 793, 2101, 3797, -1, 2101, -1, 2101, -1, 3796, -1, -1, -1, 2101, -1, -1, -1, 2102, 2103, 242, -1, -1, 2101, -1, 1205, 1228, 792, 2101, 2101, 2101, 2101 }; static const ANTLR3_INT32 dfa2_T1525[] = { 2092, -1, -1, -1, 2099, 793, 2101, 3865, -1, 2101, -1, 2101, -1, 3864, -1, -1, -1, 2101, -1, -1, -1, 2102, 2103, 242, -1, -1, 2101, -1, 1205, 1228, 792, 2101, 2101, 2101, 2101 }; static const ANTLR3_INT32 dfa2_T1526[] = { 912, -1, -1, -1, -1, -1, 912 }; static const ANTLR3_INT32 dfa2_T1527[] = { 557, -1, -1, -1, -1, -1, 557 }; static const ANTLR3_INT32 dfa2_T1528[] = { 3701, -1, -1, -1, -1, -1, 3701 }; static const ANTLR3_INT32 dfa2_T1529[] = { 2785, -1, -1, -1, -1, -1, 2785 }; static const ANTLR3_INT32 dfa2_T1530[] = { 3091, -1, -1, -1, -1, -1, 3091 }; static const ANTLR3_INT32 dfa2_T1531[] = { 1896, -1, -1, -1, -1, -1, 1896 }; static const ANTLR3_INT32 dfa2_T1532[] = { 2726, -1, -1, -1, -1, -1, 2726 }; static const ANTLR3_INT32 dfa2_T1533[] = { 901, -1, -1, -1, -1, -1, 901 }; static const ANTLR3_INT32 dfa2_T1534[] = { 3540, -1, -1, -1, -1, -1, 3540 }; static const ANTLR3_INT32 dfa2_T1535[] = { 920, -1, -1, -1, -1, -1, 920 }; static const ANTLR3_INT32 dfa2_T1536[] = { 1339, -1, -1, -1, -1, -1, 1339 }; static const ANTLR3_INT32 dfa2_T1537[] = { 2296, -1, -1, -1, -1, -1, 2296 }; static const ANTLR3_INT32 dfa2_T1538[] = { 2388, -1, -1, -1, -1, -1, 2388 }; static const ANTLR3_INT32 dfa2_T1539[] = { 1904, -1, -1, -1, -1, -1, 1904 }; static const ANTLR3_INT32 dfa2_T1540[] = { 3069, -1, -1, -1, -1, -1, 3069 }; static const ANTLR3_INT32 dfa2_T1541[] = { 3383, -1, -1, -1, -1, -1, 3383 }; static const ANTLR3_INT32 dfa2_T1542[] = { 1347, -1, -1, -1, -1, -1, 1347 }; static const ANTLR3_INT32 dfa2_T1543[] = { 3468, -1, -1, -1, -1, -1, 3468 }; static const ANTLR3_INT32 dfa2_T1544[] = { 1843, -1, -1, -1, -1, -1, 1843 }; static const ANTLR3_INT32 dfa2_T1545[] = { 1356, -1, -1, -1, -1, -1, 1356 }; static const ANTLR3_INT32 dfa2_T1546[] = { 3183, -1, -1, -1, -1, -1, 3183 }; static const ANTLR3_INT32 dfa2_T1547[] = { 2871, -1, -1, -1, -1, -1, 2871 }; static const ANTLR3_INT32 dfa2_T1548[] = { 3182, -1, -1, -1, -1, -1, 3182 }; static const ANTLR3_INT32 dfa2_T1549[] = { 1427, -1, -1, -1, -1, -1, 1427 }; static const ANTLR3_INT32 dfa2_T1550[] = { 1865, -1, -1, -1, -1, -1, 1865 }; static const ANTLR3_INT32 dfa2_T1551[] = { 2364, -1, -1, -1, -1, -1, 2364 }; static const ANTLR3_INT32 dfa2_T1552[] = { 2372, -1, -1, -1, -1, -1, 2372 }; static const ANTLR3_INT32 dfa2_T1553[] = { 2725, -1, -1, -1, -1, -1, 2725 }; static const ANTLR3_INT32 dfa2_T1554[] = { 249, 248, -1, -1, 852, 253, 516, 205, 518, 517, 252, 857, -1, 246, 250, 516, -1, -1, -1, 246, -1, -1, -1, 247, 251, 854, -1, -1, 246, -1, 853, 241, 204, 246, 246, 246, 246 }; static const ANTLR3_INT32 dfa2_T1555[] = { 249, 248, -1, -1, 852, 253, 516, 205, 518, 517, 252, 1771, -1, 246, 250, 516, -1, -1, -1, 246, -1, -1, -1, 247, 251, 854, -1, -1, 246, -1, 853, 241, 204, 246, 246, 246, 246 }; static const ANTLR3_INT32 dfa2_T1556[] = { 355, 354, -1, -1, 353, 359, 1499, -1, 1040, 1500, 358, 351, -1, 351, 356, 1499, -1, -1, -1, 351, -1, -1, -1, 352, 357, 34, -1, -1, 351, -1, 154, 66, 35, 351, 351, 351, 351 }; static const ANTLR3_INT32 dfa2_T1557[] = { 2717, 508, 2092, -1, 2717, 506, 3015, 2091, 3020, 3016, 2717, 3017, 2093, 3020, 508, 3015, -1, -1, -1, 3020, 1080, -1, -1, 3018, 3019, 507, -1, -1, 3020, 1080, 505, 2717, 2090, 3020, 3020, 3020, 3020 }; static const ANTLR3_INT32 dfa2_T1558[] = { 465, 464, -1, -1, 1629, 469, 787, 1588, 462, 1635, 468, 462, -1, 462, 466, 787, -1, -1, -1, 462, -1, -1, -1, 463, 467, 854, -1, -1, 462, -1, 1630, 1631, 1585, 462, 462, 462, 462 }; static const ANTLR3_INT32 dfa2_T1559[] = { 249, 248, -1, -1, 852, 253, 516, 205, 518, 517, 252, 2705, -1, 246, 250, 516, -1, -1, -1, 246, -1, -1, -1, 247, 251, 854, -1, -1, 246, -1, 853, 241, 204, 246, 246, 246, 246 }; static const ANTLR3_INT32 dfa2_T1560[] = { 1874, 1873, -1, -1, 1872, 1878, 1914, -1, 1870, 2792, 1877, 1870, -1, 1870, 1875, 1914, -1, -1, -1, 1870, -1, -1, -1, 1871, 1876, 34, -1, -1, 1870, -1, 1419, 974, 35, 1870, 1870, 1870, 1870 }; static const ANTLR3_INT32 dfa2_T1561[] = { 1874, 1873, -1, -1, 1872, 1878, 1914, -1, 1870, 3758, 1877, 1870, -1, 1870, 1875, 1914, -1, -1, -1, 1870, -1, -1, -1, 1871, 1876, 34, -1, -1, 1870, -1, 1419, 974, 35, 1870, 1870, 1870, 1870 }; static const ANTLR3_INT32 dfa2_T1562[] = { 1024, 1023, -1, -1, 1022, 1028, 1018, -1, 1020, 1864, 1027, 1020, -1, 1020, 1025, 1018, -1, -1, -1, 1020, -1, -1, -1, 1021, 1026, 34, -1, -1, 1020, -1, 1029, 1030, 35, 1020, 1020, 1020, 1020 }; static const ANTLR3_INT32 dfa2_T1563[] = { 1874, 1873, -1, -1, 1872, 1878, 1914, -1, 1870, 3400, 1877, 1870, -1, 1870, 1875, 1914, -1, -1, -1, 1870, -1, -1, -1, 1871, 1876, 34, -1, -1, 1870, -1, 1419, 974, 35, 1870, 1870, 1870, 1870 }; static const ANTLR3_INT32 dfa2_T1564[] = { 465, 464, -1, -1, 1629, 469, 787, 1588, 462, 3255, 468, 462, -1, 462, 466, 787, -1, -1, -1, 462, -1, -1, -1, 463, 467, 854, -1, -1, 462, -1, 1630, 1631, 1585, 462, 462, 462, 462 }; static const ANTLR3_INT32 dfa2_T1565[] = { 3713, 2578, -1, -1, 3712, 2583, 3718, -1, 3723, 3719, 3714, 3720, -1, 3723, 2580, 3718, -1, -1, -1, 3723, 1080, -1, -1, 3721, 3722, 242, -1, -1, 3723, 1080, 2128, 3226, 35, 3723, 3723, 3723, 3723 }; static const ANTLR3_INT32 dfa2_T1566[] = { 82, 82, -1, -1, 82, 80, 83, -1, 85, 84, 82, 85, -1, 85, 82, 83, -1, -1, -1, 85, -1, -1, -1, 86, 82, 81, -1, -1, 85, -1, 79, 82, -1, 85, 85, 85, 85 }; static const ANTLR3_INT32 dfa2_T1567[] = { 508, 508, -1, -1, 508, 506, 509, -1, 511, 510, 508, 511, -1, 511, 508, 509, -1, -1, -1, 511, -1, -1, -1, 512, 508, 507, -1, -1, 511, -1, 505, 508, -1, 511, 511, 511, 511 }; static const ANTLR3_INT32 dfa2_T1568[] = { 108, 108, -1, -1, 692, 106, 198, 205, 111, 1531, 108, 111, -1, 111, 108, 198, -1, -1, -1, 111, -1, -1, -1, 112, 108, 694, -1, -1, 111, -1, 693, 108, 204, 111, 111, 111, 111 }; static const ANTLR3_INT32 dfa2_T1569[] = { 465, 464, -1, -1, 1629, 469, 787, 1588, 462, 2558, 468, 462, -1, 462, 466, 787, -1, -1, -1, 462, -1, -1, -1, 463, 467, 854, -1, -1, 462, -1, 1630, 1631, 1585, 462, 462, 462, 462 }; static const ANTLR3_INT32 dfa2_T1570[] = { 108, 108, -1, -1, 692, 106, 198, 205, 111, 2426, 108, 111, -1, 111, 108, 198, -1, -1, -1, 111, -1, -1, -1, 112, 108, 694, -1, -1, 111, -1, 693, 108, 204, 111, 111, 111, 111 }; static const ANTLR3_INT32 dfa2_T1571[] = { 2579, 2578, -1, -1, 2577, 2583, 2619, -1, 2575, 3306, 2582, 2575, -1, 2575, 2580, 2619, -1, -1, -1, 2575, -1, -1, -1, 2576, 2581, 242, -1, -1, 2575, -1, 2128, 1661, 35, 2575, 2575, 2575, 2575 }; static const ANTLR3_INT32 dfa2_T1572[] = { 108, 108, -1, -1, 692, 106, 198, 205, 111, 698, 108, 111, -1, 111, 108, 198, -1, -1, -1, 111, -1, -1, -1, 112, 108, 694, -1, -1, 111, -1, 693, 108, 204, 111, 111, 111, 111 }; static const ANTLR3_INT32 dfa2_T1573[] = { 2579, 2578, -1, -1, 2577, 2583, 2619, -1, 2575, 3728, 2582, 2575, -1, 2575, 2580, 2619, -1, -1, -1, 2575, -1, -1, -1, 2576, 2581, 242, -1, -1, 2575, -1, 2128, 1661, 35, 2575, 2575, 2575, 2575 }; static const ANTLR3_INT32 dfa2_T1574[] = { 2028, -1, 2030 }; static const ANTLR3_INT32 dfa2_T1575[] = { 2579, 2578, -1, -1, 2577, 2583, 2619, -1, 2575, 3870, 2582, 2575, -1, 2575, 2580, 2619, -1, -1, -1, 2575, -1, -1, -1, 2576, 2581, 242, -1, -1, 2575, -1, 2128, 1661, 35, 2575, 2575, 2575, 2575 }; static const ANTLR3_INT32 dfa2_T1576[] = { 159, 59, -1, -1, 58, 163, 155, -1, 157, 1364, 162, 157, -1, 157, 160, 155, -1, -1, -1, 157, -1, -1, -1, 158, 161, 34, -1, -1, 157, -1, 154, 66, 35, 157, 157, 157, 157 }; static const ANTLR3_INT32 dfa2_T1577[] = { 2893, -1, -1, -1, -1, -1, 2894 }; static const ANTLR3_INT32 dfa2_T1578[] = { 3190, -1, -1, -1, -1, -1, 3191 }; static const ANTLR3_INT32 dfa2_T1579[] = { 108, 108, -1, -1, 692, 106, 198, 205, 111, 690, 108, 111, -1, 111, 108, 198, -1, -1, -1, 111, -1, -1, -1, 112, 108, 694, -1, -1, 111, -1, 693, 108, 204, 111, 111, 111, 111 }; static const ANTLR3_INT32 dfa2_T1580[] = { 3166, 1710, -1, -1, 3165, 1715, 3162, 205, 3172, 3179, 3169, 3657, -1, 3172, 3167, 3162, -1, -1, -1, 3172, 405, -1, -1, 3164, 3168, 854, -1, -1, 3172, 405, 3170, 3171, 204, 3172, 3172, 3172, 3172 }; static const ANTLR3_INT32 dfa2_T1581[] = { 1874, 1873, -1, -1, 1872, 1878, 1914, -1, 1870, 2786, 1877, 1870, -1, 1870, 1875, 1914, -1, -1, -1, 1870, -1, -1, -1, 1871, 1876, 34, -1, -1, 1870, -1, 1419, 974, 35, 1870, 1870, 1870, 1870 }; static const ANTLR3_INT32 dfa2_T1582[] = { 465, 464, -1, -1, 1236, 469, 817, 205, 819, 1239, 468, 1240, -1, 462, 466, 817, -1, -1, -1, 462, -1, -1, -1, 463, 467, 854, -1, -1, 462, -1, 1237, 241, 204, 462, 462, 462, 462 }; static const ANTLR3_INT32 dfa2_T1583[] = { 465, 464, -1, -1, 1236, 469, 817, 205, 819, 2209, 468, 2210, -1, 462, 466, 817, -1, -1, -1, 462, -1, -1, -1, 463, 467, 854, -1, -1, 462, -1, 1237, 241, 204, 462, 462, 462, 462 }; static const ANTLR3_INT32 dfa2_T1584[] = { 3878, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1596 }; static const ANTLR3_INT32 dfa2_T1585[] = { 465, 464, -1, -1, 1236, 469, 817, 205, 819, 3563, 468, 1235, -1, 462, 466, 817, -1, -1, -1, 462, -1, -1, -1, 463, 467, 854, -1, -1, 462, -1, 1237, 241, 204, 462, 462, 462, 462 }; static const ANTLR3_INT32 dfa2_T1586[] = { 465, 464, -1, -1, 1236, 469, 817, 205, 819, 3010, 468, 3011, -1, 462, 466, 817, -1, -1, -1, 462, -1, -1, -1, 463, 467, 854, -1, -1, 462, -1, 1237, 241, 204, 462, 462, 462, 462 }; static const ANTLR3_INT32 dfa2_T1587[] = { 2092, -1, -1, -1, 2099, 793, 2101, 2563, -1, 2101, -1, 2101, -1, 2562, -1, -1, -1, 2101, -1, -1, -1, 2102, 2103, 242, -1, -1, 2101, -1, 1205, 1228, 792, 2101, 2101, 2101, 2101 }; static const ANTLR3_INT32 dfa2_T1588[] = { 2092, -1, -1, -1, 2099, 793, 2101, 3155, -1, 2101, -1, 2101, -1, 3154, -1, -1, -1, 2101, -1, -1, -1, 2102, 2103, 242, -1, -1, 2101, -1, 1205, 1228, 792, 2101, 2101, 2101, 2101 }; static const ANTLR3_INT32 dfa2_T1589[] = { 2092, -1, -1, -1, 2099, 793, 2101, 3481, -1, 2101, -1, 2101, -1, 3480, -1, -1, -1, 2101, -1, -1, -1, 2102, 2103, 242, -1, -1, 2101, -1, 1205, 1228, 792, 2101, 2101, 2101, 2101 }; static const ANTLR3_INT32 dfa2_T1590[] = { 2092, -1, -1, -1, 2099, 793, 2101, 3680, -1, 2101, -1, 2101, -1, 3679, -1, -1, -1, 2101, -1, -1, -1, 2102, 2103, 242, -1, -1, 2101, -1, 1205, 1228, 792, 2101, 2101, 2101, 2101 }; static const ANTLR3_INT32 dfa2_T1591[] = { 2092, -1, -1, -1, 2099, 793, 2101, 3808, -1, 2101, -1, 2101, -1, 3807, -1, -1, -1, 2101, -1, -1, -1, 2102, 2103, 242, -1, -1, 2101, -1, 1205, 1228, 792, 2101, 2101, 2101, 2101 }; static const ANTLR3_INT32 dfa2_T1592[] = { 2520 }; static const ANTLR3_INT32 dfa2_T1593[] = { 2112, 2111, -1, -1, 2110, 2116, 3281, -1, 2978, 3282, 2115, 2108, -1, 2108, 2113, 3281, -1, -1, -1, 2108, -1, -1, -1, 2109, 2114, 242, -1, -1, 2108, -1, 1660, 1661, 35, 2108, 2108, 2108, 2108 }; static const ANTLR3_INT32 dfa2_T1594[] = { 465, 464, -1, -1, 1629, 469, 787, 1588, 462, 1627, 468, 462, -1, 462, 466, 787, -1, -1, -1, 462, -1, -1, -1, 463, 467, 854, -1, -1, 462, -1, 1630, 1631, 1585, 462, 462, 462, 462 }; static const ANTLR3_INT32 dfa2_T1595[] = { 710, -1, -1, -1, -1, -1, 710 }; static const ANTLR3_INT32 dfa2_T1596[] = { 1070, -1, -1, -1, -1, -1, 1070 }; static const ANTLR3_INT32 dfa2_T1597[] = { 1251, -1, -1, -1, -1, -1, 1251 }; static const ANTLR3_INT32 dfa2_T1598[] = { 846, -1, -1, -1, -1, -1, 846 }; static const ANTLR3_INT32 dfa2_T1599[] = { 446, -1, -1, -1, -1, -1, 446 }; static const ANTLR3_INT32 dfa2_T1600[] = { 3672, -1, -1, -1, -1, -1, 3672 }; static const ANTLR3_INT32 dfa2_T1601[] = { 3700, -1, -1, -1, -1, -1, 3700 }; static const ANTLR3_INT32 dfa2_T1602[] = { 834, -1, -1, -1, -1, -1, 834 }; static const ANTLR3_INT32 dfa2_T1603[] = { 3818, -1, -1, -1, -1, -1, 3818 }; static const ANTLR3_INT32 dfa2_T1604[] = { 1188, -1, -1, -1, -1, -1, 1188 }; static const ANTLR3_INT32 dfa2_T1605[] = { 1243, -1, -1, -1, -1, -1, 1243 }; static const ANTLR3_INT32 dfa2_T1606[] = { 3482, -1, -1, -1, -1, -1, 3482 }; static const ANTLR3_INT32 dfa2_T1607[] = { 3157, -1, -1, -1, -1, -1, 3157 }; static const ANTLR3_INT32 dfa2_T1608[] = { 3872, -1, -1, -1, -1, -1, 3872 }; static const ANTLR3_INT32 dfa2_T1609[] = { 3809, -1, -1, -1, -1, -1, 3809 }; static const ANTLR3_INT32 dfa2_T1610[] = { 3732, -1, -1, -1, -1, -1, 3732 }; static const ANTLR3_INT32 dfa2_T1611[] = { 3159, -1, -1, -1, -1, -1, 3159 }; static const ANTLR3_INT32 dfa2_T1612[] = { 3500, -1, -1, -1, -1, -1, 3500 }; static const ANTLR3_INT32 dfa2_T1613[] = { 3577, -1, -1, -1, -1, -1, 3577 }; static const ANTLR3_INT32 dfa2_T1614[] = { 108, 108, -1, -1, 108, 106, 390, -1, 392, 393, 108, 394, -1, 111, 108, 390, -1, -1, -1, 111, -1, -1, -1, 112, 108, 107, -1, -1, 111, -1, 105, 108, 35, 111, 111, 111, 111 }; static const ANTLR3_INT32 dfa2_T1615[] = { 108, 108, -1, -1, 108, 106, 390, -1, 392, 1979, 108, 1980, -1, 111, 108, 390, -1, -1, -1, 111, -1, -1, -1, 112, 108, 107, -1, -1, 111, -1, 105, 108, 35, 111, 111, 111, 111 }; static const ANTLR3_INT32 dfa2_T1616[] = { 108, 108, -1, -1, 108, 106, 390, -1, 392, 1068, 108, 1069, -1, 111, 108, 390, -1, -1, -1, 111, -1, -1, -1, 112, 108, 107, -1, -1, 111, -1, 105, 108, 35, 111, 111, 111, 111 }; static const ANTLR3_INT32 dfa2_T1617[] = { 2579, 2578, -1, -1, 2577, 2583, 2619, -1, 2575, 3300, 2582, 2575, -1, 2575, 2580, 2619, -1, -1, -1, 2575, -1, -1, -1, 2576, 2581, 242, -1, -1, 2575, -1, 2128, 1661, 35, 2575, 2575, 2575, 2575 }; static const ANTLR3_INT32 dfa2_T1618[] = { 3166, 1710, -1, -1, 3165, 1715, 3162, 205, 3172, 3161, 3169, 3163, -1, 3172, 3167, 3162, -1, -1, -1, 3172, 405, -1, -1, 3164, 3168, 854, -1, -1, 3172, 405, 3170, 3171, 204, 3172, 3172, 3172, 3172 }; static const ANTLR3_INT32 dfa2_T1619[] = { 564, 563, 641, -1, 562, 568, 1316, 640, 1318, 1317, 567, 1318, -1, 1318, 565, 1316, -1, -1, -1, 1318, -1, -1, -1, 1319, 1320, 34, -1, -1, 1318, -1, 278, 279, 639, 1318, 1318, 1318, 1318 }; static const ANTLR3_INT32 dfa2_T1620[] = { 3638, 2195, -1, -1, 3637, 2200, 3633, -1, 3641, 3634, 3640, 3635, -1, 3641, 2197, 3633, -1, -1, -1, 3641, 1080, -1, -1, 3636, 3639, 242, -1, -1, 3641, 1080, 2201, 3435, 35, 3641, 3641, 3641, 3641 }; static const ANTLR3_INT32 dfa2_T1621[] = { 2535, 1576, 1203, -1, 2534, 1581, 2530, 2012, 2538, 2531, 2537, 2532, -1, 2538, 1578, 2530, -1, -1, -1, 2538, 405, -1, -1, 2533, 2536, 854, -1, -1, 2538, 405, 2477, 2009, 2010, 2538, 2538, 2538, 2538 }; static const ANTLR3_INT32 dfa2_T1622[] = { 2038, -1, -1, 1588, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 854, -1, -1, -1, -1, 2028, 1228, 1585 }; static const ANTLR3_INT32 dfa2_T1623[] = { 1711, 1710, -1, -1, 1709, 1715, 1705, -1, 1707, 1706, 1714, 2944, -1, 1707, 1712, 1705, -1, -1, -1, 1707, -1, -1, -1, 1708, 1713, 242, -1, -1, 1707, -1, 1716, 1717, 35, 1707, 1707, 1707, 1707 }; static const ANTLR3_INT32 dfa2_T1624[] = { 108, 108, -1, -1, 692, 106, 390, 205, 392, 391, 108, 1530, -1, 111, 108, 390, -1, -1, -1, 111, -1, -1, -1, 112, 108, 694, -1, -1, 111, -1, 693, 108, 204, 111, 111, 111, 111 }; static const ANTLR3_INT32 dfa2_T1625[] = { 1203, -1, -1, -1, 1643, 1639, 1644, 2097, -1, 1644, -1, 1644, 1641, 2096, -1, -1, -1, 1644, -1, -1, -1, 1645, 1646, 242, -1, -1, 1644, -1, 1205, 1228, 1638, 1644, 1644, 1644, 1644 }; static const ANTLR3_INT32 dfa2_T1626[] = { 508, 508, -1, -1, 508, 506, 1793, -1, 1309, 1794, 508, 511, -1, 511, 508, 1793, -1, -1, -1, 511, -1, -1, -1, 512, 508, 507, -1, -1, 511, -1, 505, 508, 35, 511, 511, 511, 511 }; static const ANTLR3_INT32 dfa2_T1627[] = { 108, 108, -1, -1, 692, 106, 390, 205, 392, 391, 108, 697, -1, 111, 108, 390, -1, -1, -1, 111, -1, -1, -1, 112, 108, 694, -1, -1, 111, -1, 693, 108, 204, 111, 111, 111, 111 }; static const ANTLR3_INT32 dfa2_T1628[] = { 108, 108, -1, -1, 692, 106, 390, 205, 392, 391, 108, 2425, -1, 111, 108, 390, -1, -1, -1, 111, -1, -1, -1, 112, 108, 694, -1, -1, 111, -1, 693, 108, 204, 111, 111, 111, 111 }; static const ANTLR3_INT32 dfa2_T1629[] = { 1135, 1134, -1, -1, 1133, 1139, 1608, -1, 2055, 1609, 1138, 1131, -1, 1131, 1136, 1608, -1, -1, -1, 1131, -1, -1, -1, 1132, 1137, 242, -1, -1, 1131, -1, 1140, 733, 35, 1131, 1131, 1131, 1131 }; static const ANTLR3_INT32 dfa2_T1630[] = { 793, -1, 1704, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 242, -1, -1, -1, -1, 1205, 1228, 792 }; static const ANTLR3_INT32 dfa2_T1631[] = { 1577, 1576, -1, -1, 2545, 1581, 2061, 1588, 2064, 3793, 1580, 2063, -1, 1573, 1578, 2061, -1, -1, -1, 1573, -1, -1, -1, 1574, 1579, 854, -1, -1, 1573, -1, 2051, 1584, 1585, 1573, 1573, 1573, 1573 }; static const ANTLR3_INT32 dfa2_T1632[] = { 749, 748, -1, -1, 738, 753, 1142, 1588, 746, 2029, 752, 746, -1, 746, 750, 1142, -1, -1, -1, 746, -1, -1, -1, 747, 751, 854, -1, -1, 746, -1, 1583, 1584, 1585, 746, 746, 746, 746 }; static const ANTLR3_INT32 dfa2_T1633[] = { 1668, 1667, -1, -1, 1662, 1672, 2074, 1588, 1665, 2948, 1671, 1665, -1, 1665, 1669, 2074, -1, -1, -1, 1665, -1, -1, -1, 1666, 1670, 854, -1, -1, 1665, -1, 2587, 2588, 1585, 1665, 1665, 1665, 1665 }; static const ANTLR3_INT32 dfa2_T1634[] = { 1711, 1710, -1, -1, 1709, 1715, 1705, -1, 1707, 3258, 1714, 1707, -1, 1707, 1712, 1705, -1, -1, -1, 1707, -1, -1, -1, 1708, 1713, 242, -1, -1, 1707, -1, 1716, 1717, 35, 1707, 1707, 1707, 1707 }; static const ANTLR3_INT32 dfa2_T1635[] = { 1403, 1402, 1383, -1, 1401, 1407, 3084, 1382, 3086, 3085, 1406, 3086, 1384, 3086, 1404, 3084, -1, -1, -1, 3086, -1, -1, -1, 3087, 3088, 34, -1, -1, 3086, -1, 973, 974, 1381, 3086, 3086, 3086, 3086 }; static const ANTLR3_INT32 dfa2_T1636[] = { 2579, 2578, -1, -1, 3302, 2583, 2993, 1588, 2995, 3882, 2582, 2992, -1, 2575, 2580, 2993, -1, -1, -1, 2575, -1, -1, -1, 2576, 2581, 854, -1, -1, 2575, -1, 2986, 2588, 1585, 2575, 2575, 2575, 2575 }; static const ANTLR3_INT32 dfa2_T1637[] = { 221, 436, -1, -1, 789, 228, 437, 793, 440, 2999, 227, 439, -1, 219, 225, 437, -1, -1, -1, 219, -1, -1, -1, 220, 226, 230, -1, -1, 219, -1, 790, 794, 792, 219, 219, 219, 219 }; static const ANTLR3_INT32 dfa2_T1638[] = { 3166, 1710, -1, -1, 3165, 1715, 3162, 205, 3172, 3631, 3169, 3163, -1, 3172, 3167, 3162, -1, -1, -1, 3172, 405, -1, -1, 3164, 3168, 854, -1, -1, 3172, 405, 3170, 3171, 204, 3172, 3172, 3172, 3172 }; static const ANTLR3_INT32 dfa2_T1639[] = { 346, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, 152, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 347 }; static const ANTLR3_INT32 dfa2_T1640[] = { 801, -1, -1, -1, -1, 447, -1, -1, -1, -1, -1, 447, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 802 }; static const ANTLR3_INT32 dfa2_T1641[] = { 465, 464, -1, -1, 459, 469, 2076, -1, 1632, 2077, 468, 462, -1, 462, 466, 2076, -1, -1, -1, 462, -1, -1, -1, 463, 467, 242, -1, -1, 462, -1, 458, 241, 35, 462, 462, 462, 462 }; static const ANTLR3_INT32 dfa2_T1642[] = { 2006, 1123, -1, -1, 2005, 1128, 2461, 403, 2467, 2462, 2008, 2463, -1, 2467, 1125, 2461, -1, -1, -1, 2467, 405, -1, -1, 2464, 2466, 854, -1, -1, 2467, 405, 2011, 2009, 402, 2467, 2467, 2467, 2467 }; static const ANTLR3_INT32 dfa2_T1643[] = { 28, 27, -1, -1, 26, 32, 22, -1, 24, 23, 31, 24, -1, 24, 29, 22, -1, -1, -1, 24, -1, -1, -1, 25, 30, 34, -1, -1, 24, -1, 33, 21, 35, 24, 24, 24, 24 }; static const ANTLR3_INT32 dfa2_T1644[] = { 811, 810, -1, -1, 809, 815, 832, -1, 807, 833, 814, 807, -1, 807, 812, 832, -1, -1, -1, 807, 754, -1, -1, 808, 813, 242, -1, -1, 807, -1, 458, 241, 35, 807, 807, 807, 807 }; static const ANTLR3_INT32 dfa2_T1645[] = { 1203, -1, -1, -1, 1643, 1639, 1644, 1642, -1, 1644, -1, 1644, 1641, 1640, -1, -1, -1, 1644, -1, -1, -1, 1645, 1646, 242, -1, -1, 1644, -1, 1205, 1228, 1638, 1644, 1644, 1644, 1644 }; static const ANTLR3_INT32 dfa2_T1646[] = { 2123, 2122, -1, -1, 2121, 2127, 2604, -1, 2606, 2607, 2126, 2608, -1, 2119, 2124, 2604, -1, -1, -1, 2119, -1, -1, -1, 2120, 2125, 242, -1, -1, 2119, -1, 2128, 1661, 35, 2119, 2119, 2119, 2119 }; static const ANTLR3_INT32 dfa2_T1647[] = { 2249, 497, -1, -1, 2248, 502, 2243, -1, 2246, 2244, 2251, 2242, -1, 2246, 499, 2243, -1, -1, -1, 2246, 1080, -1, -1, 2247, 2250, 242, -1, -1, 2246, 1080, 240, 2245, 35, 2246, 2246, 2246, 2246 }; static const ANTLR3_INT32 dfa2_T1648[] = { 2123, 2122, -1, -1, 2121, 2127, 2604, -1, 2606, 3297, 2126, 3298, -1, 2119, 2124, 2604, -1, -1, -1, 2119, -1, -1, -1, 2120, 2125, 242, -1, -1, 2119, -1, 2128, 1661, 35, 2119, 2119, 2119, 2119 }; static const ANTLR3_INT32 dfa2_T1649[] = { 2123, 2122, -1, -1, 2121, 2127, 2604, -1, 2606, 3724, 2126, 3725, -1, 2119, 2124, 2604, -1, -1, -1, 2119, -1, -1, -1, 2120, 2125, 242, -1, -1, 2119, -1, 2128, 1661, 35, 2119, 2119, 2119, 2119 }; static const ANTLR3_INT32 dfa2_T1650[] = { 405, -1, 1203, -1, 405, -1, 2512, 2012, 2485, 2481, 405, 2482, -1, 2485, -1, 2512, -1, -1, -1, 2485, 405, -1, -1, 2483, 2484, -1, -1, -1, 2485, 405, 407, 405, 2480, 2485, 2485, 2485, 2485 }; static const ANTLR3_INT32 dfa2_T1651[] = { 498, 497, -1, -1, 496, 502, 1782, -1, 1299, 1783, 501, 494, -1, 494, 499, 1782, -1, -1, -1, 494, -1, -1, -1, 495, 500, 242, -1, -1, 494, -1, 240, 241, 35, 494, 494, 494, 494 }; static const ANTLR3_INT32 dfa2_T1652[] = { 465, 464, -1, -1, 1236, 469, 817, 205, 819, 3315, 468, 816, -1, 462, 466, 817, -1, -1, -1, 462, -1, -1, -1, 463, 467, 854, -1, -1, 462, -1, 1237, 241, 204, 462, 462, 462, 462 }; static const ANTLR3_INT32 dfa2_T1653[] = { 99, 89, -1, -1, 88, 97, 90, -1, 210, 91, 99, 96, -1, 96, 99, 90, -1, -1, -1, 96, -1, -1, -1, 93, 99, 98, -1, -1, 96, -1, 94, 99, 35, 96, 96, 96, 96 }; static const ANTLR3_INT32 dfa2_T1654[] = { 108, 108, -1, -1, 725, 106, 1062, -1, 1064, 1063, 725, 1064, -1, 1064, 108, 1062, -1, -1, -1, 1064, 414, -1, -1, 1065, 725, 724, -1, -1, 1064, 414, 105, 725, 35, 1064, 1064, 1064, 1064 }; static const ANTLR3_INT32 dfa2_T1655[] = { 1874, 1873, -1, -1, 1872, 1878, 2383, -1, 2385, 2386, 1877, 2387, -1, 1870, 1875, 2383, -1, -1, -1, 1870, -1, -1, -1, 1871, 1876, 34, -1, -1, 1870, -1, 1419, 974, 35, 1870, 1870, 1870, 1870 }; static const ANTLR3_INT32 dfa2_T1656[] = { 6, -1, -1, -1, 1, -1, 3, 2, -1, 3, -1, 3, -1, 1, -1, -1, -1, 3, -1, -1, -1, 4, 5, -1, -1, -1, 3, -1, -1, -1, -1, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa2_T1657[] = { 1874, 1873, -1, -1, 1872, 1878, 2383, -1, 2385, 3612, 1877, 3613, -1, 1870, 1875, 2383, -1, -1, -1, 1870, -1, -1, -1, 1871, 1876, 34, -1, -1, 1870, -1, 1419, 974, 35, 1870, 1870, 1870, 1870 }; static const ANTLR3_INT32 dfa2_T1658[] = { 1874, 1873, -1, -1, 1872, 1878, 2383, -1, 2385, 3107, 1877, 3108, -1, 1870, 1875, 2383, -1, -1, -1, 1870, -1, -1, -1, 1871, 1876, 34, -1, -1, 1870, -1, 1419, 974, 35, 1870, 1870, 1870, 1870 }; static const ANTLR3_INT32 dfa2_T1659[] = { 508, 508, -1, -1, 508, 506, 509, 1588, 511, 2217, 508, 511, -1, 511, 508, 509, -1, -1, -1, 511, -1, -1, -1, 512, 508, 1751, -1, -1, 511, -1, 1749, 1750, 1585, 511, 511, 511, 511 }; static const ANTLR3_INT32 dfa2_T1660[] = { 87, 952, -1, -1, -1, -1, -1, -1, 954, 87, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 643, -1, 1385 }; static const ANTLR3_INT32 dfa2_T1661[] = { 87, 1639, -1, -1, -1, -1, -1, -1, 1641, 87, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1205, -1, 2094 }; static const ANTLR3_INT32 dfa2_T1662[] = { 575, 574, -1, -1, 573, 579, 922, -1, 1352, 923, 578, 571, -1, 571, 576, 922, -1, -1, -1, 571, -1, -1, -1, 572, 577, 34, -1, -1, 571, -1, 580, 279, 35, 571, 571, 571, 571 }; static const ANTLR3_INT32 dfa2_T1663[] = { 3166, 1710, -1, -1, 3165, 1715, 3162, 205, 3172, 3179, 3169, 3433, -1, 3172, 3167, 3162, -1, -1, -1, 3172, 405, -1, -1, 3164, 3168, 854, -1, -1, 3172, 405, 3170, 3171, 204, 3172, 3172, 3172, 3172 }; static const ANTLR3_INT32 dfa2_T1664[] = { 44, 46, -1, -1, 45, 40, 36, -1, 38, 37, 49, 38, -1, 38, 47, 36, -1, -1, -1, 38, 41, -1, -1, 39, 48, 43, -1, -1, 38, -1, 42, 50, -1, 38, 38, 38, 38 }; static const ANTLR3_INT32 dfa2_T1665[] = { 3687, 2963, -1, -1, 3686, 2968, 3682, -1, 3690, 3683, 3689, 3684, -1, 3690, 2965, 3682, -1, -1, -1, 3690, 1080, -1, -1, 3685, 3688, 242, -1, -1, 3690, 1080, 2969, 3226, 35, 3690, 3690, 3690, 3690 }; static const ANTLR3_INT32 dfa2_T1666[] = { 221, 436, -1, -1, 435, 228, 1220, -1, 796, 1221, 227, 219, -1, 219, 225, 1220, -1, -1, -1, 219, -1, -1, -1, 220, 226, 230, -1, -1, 219, -1, 229, 441, 35, 219, 219, 219, 219 }; static const ANTLR3_INT32 dfa2_T1667[] = { 1383, -1, -1, -1, 1390, 338, 1392, 2746, -1, 1392, -1, 1392, -1, 2745, -1, -1, -1, 1392, -1, -1, -1, 1393, 1394, 34, -1, -1, 1392, -1, 643, 666, 337, 1392, 1392, 1392, 1392 }; static const ANTLR3_INT32 dfa2_T1668[] = { 1383, -1, -1, -1, 1390, 338, 1392, 2804, -1, 1392, -1, 1392, -1, 2803, -1, -1, -1, 1392, -1, -1, -1, 1393, 1394, 34, -1, -1, 1392, -1, 643, 666, 337, 1392, 1392, 1392, 1392 }; static const ANTLR3_INT32 dfa2_T1669[] = { 3586, 3043, -1, -1, 3585, 3048, 3581, 403, 3589, 3582, 3588, 3583, -1, 3589, 3045, 3581, -1, -1, -1, 3589, 405, -1, -1, 3584, 3587, 1751, -1, -1, 3589, 405, 3351, 3031, 402, 3589, 3589, 3589, 3589 }; static const ANTLR3_INT32 dfa2_T1670[] = { 1135, 1134, -1, -1, 1133, 1139, 1129, -1, 1131, 2539, 1138, 1131, -1, 1131, 1136, 1129, -1, -1, -1, 1131, -1, -1, -1, 1132, 1137, 242, -1, -1, 1131, -1, 1140, 733, 35, 1131, 1131, 1131, 1131 }; static const ANTLR3_INT32 dfa2_T1671[] = { 1124, 1123, -1, -1, 1122, 1128, 1600, -1, 2046, 1601, 1127, 1120, -1, 1120, 1125, 1600, -1, -1, -1, 1120, -1, -1, -1, 1121, 1126, 242, -1, -1, 1120, -1, 732, 733, 35, 1120, 1120, 1120, 1120 }; static const ANTLR3_INT32 dfa2_T1672[] = { 2486 }; static const ANTLR3_INT32 dfa2_T1673[] = { 2889, -1, -1, -1, -1, 2517, -1, -1, -1, -1, -1, 2517, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1596 }; static const ANTLR3_INT32 dfa2_T1674[] = { 1414, 1413, -1, -1, 1412, 1418, 1449, -1, 1410, 1450, 1417, 1410, -1, 1410, 1415, 1449, -1, -1, -1, 1410, 57, -1, -1, 1411, 1416, 34, -1, -1, 1410, -1, 1419, 974, 35, 1410, 1410, 1410, 1410 }; static const ANTLR3_INT32 dfa2_T1675[] = { 2522, -1, -1, -1, -1, 2041, -1, -1, -1, -1, -1, 2041, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1596 }; static const ANTLR3_INT32 dfa2_T1676[] = { 1087, 89, -1, -1, 1082, 97, 1083, -1, 1088, 1084, 1087, 1085, -1, 1088, 99, 1083, -1, -1, -1, 1088, 1080, -1, -1, 1086, 1087, 98, -1, -1, 1088, 1080, 94, 1087, 35, 1088, 1088, 1088, 1088 }; static const ANTLR3_INT32 dfa2_T1677[] = { 981, 980, -1, -1, 975, 985, 1370, -1, 978, 2342, 984, 978, -1, 978, 982, 1370, -1, -1, -1, 978, -1, -1, -1, 979, 983, 34, -1, -1, 978, -1, 973, 974, 35, 978, 978, 978, 978 }; static const ANTLR3_INT32 dfa2_T1678[] = { 1414, 1413, -1, -1, 1412, 1418, 2781, -1, 2377, 2782, 1417, 1410, -1, 1410, 1415, 2781, -1, -1, -1, 1410, -1, -1, -1, 1411, 1416, 34, -1, -1, 1410, -1, 1419, 974, 35, 1410, 1410, 1410, 1410 }; static const ANTLR3_INT32 dfa2_T1679[] = { 3739, 2673, -1, -1, 3738, 2678, 3734, -1, 3742, 3735, 3741, 3736, -1, 3742, 2675, 3734, -1, -1, -1, 3742, 1080, -1, -1, 3737, 3740, 2237, -1, -1, 3742, 1080, 2235, 3323, 35, 3742, 3742, 3742, 3742 }; static const ANTLR3_INT32 dfa2_T1680[] = { 2112, 2111, -1, -1, 2110, 2116, 2596, -1, 2598, 2599, 2115, 2600, -1, 2108, 2113, 2596, -1, -1, -1, 2108, -1, -1, -1, 2109, 2114, 242, -1, -1, 2108, -1, 1660, 1661, 35, 2108, 2108, 2108, 2108 }; static const ANTLR3_INT32 dfa2_T1681[] = { 1597 }; static const ANTLR3_INT32 dfa2_T1682[] = { 2112, 2111, -1, -1, 2110, 2116, 2596, -1, 2598, 3283, 2115, 3284, -1, 2108, 2113, 2596, -1, -1, -1, 2108, -1, -1, -1, 2109, 2114, 242, -1, -1, 2108, -1, 1660, 1661, 35, 2108, 2108, 2108, 2108 }; static const ANTLR3_INT32 dfa2_T1683[] = { 2112, 2111, -1, -1, 2110, 2116, 2596, -1, 2598, 3705, 2115, 3706, -1, 2108, 2113, 2596, -1, -1, -1, 2108, -1, -1, -1, 2109, 2114, 242, -1, -1, 2108, -1, 1660, 1661, 35, 2108, 2108, 2108, 2108 }; static const ANTLR3_INT32 dfa2_T1684[] = { 1582, -1, -1, -1, -1, -1, 1582 }; static const ANTLR3_INT32 dfa2_T1685[] = { 1117, -1, -1, -1, -1, -1, 1117 }; static const ANTLR3_INT32 dfa2_T1686[] = { 2601, -1, -1, -1, -1, -1, 2601 }; static const ANTLR3_INT32 dfa2_T1687[] = { 1598, -1, -1, -1, -1, -1, 1598 }; static const ANTLR3_INT32 dfa2_T1688[] = { 3299, -1, -1, -1, -1, -1, 3299 }; static const ANTLR3_INT32 dfa2_T1689[] = { 3874, -1, -1, -1, -1, -1, 3874 }; static const ANTLR3_INT32 dfa2_T1690[] = { 2544, -1, -1, -1, -1, -1, 2544 }; static const ANTLR3_INT32 dfa2_T1691[] = { 1606, -1, -1, -1, -1, -1, 1606 }; static const ANTLR3_INT32 dfa2_T1692[] = { 3759, -1, -1, -1, -1, -1, 3759 }; static const ANTLR3_INT32 dfa2_T1693[] = { 3885, -1, -1, -1, -1, -1, 3885 }; static const ANTLR3_INT32 dfa2_T1694[] = { 3617, -1, -1, -1, -1, -1, 3617 }; static const ANTLR3_INT32 dfa2_T1695[] = { 2609, -1, -1, -1, -1, -1, 2609 }; static const ANTLR3_INT32 dfa2_T1696[] = { 2974, -1, -1, -1, -1, -1, 2974 }; static const ANTLR3_INT32 dfa2_T1697[] = { 2042, -1, -1, -1, -1, -1, 2042 }; static const ANTLR3_INT32 dfa2_T1698[] = { 3851, -1, -1, -1, -1, -1, 3851 }; static const ANTLR3_INT32 dfa2_T1699[] = { 2050, -1, -1, -1, -1, -1, 2050 }; static const ANTLR3_INT32 dfa2_T1700[] = { 2059, -1, -1, -1, -1, -1, 2059 }; static const ANTLR3_INT32 dfa2_T1701[] = { 2982, -1, -1, -1, -1, -1, 2982 }; static const ANTLR3_INT32 dfa2_T1702[] = { 2998, -1, -1, -1, -1, -1, 2998 }; static const ANTLR3_INT32 dfa2_T1703[] = { 2570, -1, -1, -1, -1, -1, 2570 }; static const ANTLR3_INT32 dfa2_T1704[] = { 2136, -1, -1, -1, -1, -1, 2136 }; static const ANTLR3_INT32 dfa2_T1705[] = { 3833, -1, -1, -1, -1, -1, 3833 }; static const ANTLR3_INT32 dfa2_T1706[] = { 87, -1, -1, -1, -1, -1, -1, -1, -1, 87, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 188 }; static const ANTLR3_INT32 dfa2_T1707[] = { 99, 89, -1, -1, 88, 97, 207, -1, 96, 1568, 99, 96, -1, 96, 99, 207, -1, -1, -1, 96, -1, -1, -1, 93, 99, 98, -1, -1, 96, -1, 94, 99, 35, 96, 96, 96, 96 }; static const ANTLR3_INT32 dfa2_T1708[] = { 99, 89, -1, -1, 88, 97, 207, -1, 96, 213, 99, 96, -1, 96, 99, 207, -1, -1, -1, 96, -1, -1, -1, 93, 99, 98, -1, -1, 96, -1, 94, 99, 35, 96, 96, 96, 96 }; static const ANTLR3_INT32 dfa2_T1709[] = { 99, 89, -1, -1, 88, 97, 207, -1, 96, 730, 99, 96, -1, 96, 99, 207, -1, -1, -1, 96, -1, -1, -1, 93, 99, 98, -1, -1, 96, -1, 94, 99, 35, 96, 96, 96, 96 }; static const ANTLR3_INT32 dfa2_T1710[] = { 2458, -1, -1, -1, -1, -1, -1, 1641, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2028, -1, 2829 }; static const ANTLR3_INT32 dfa2_T1711[] = { 99, 89, -1, -1, 88, 97, 207, -1, 96, 208, 99, 96, -1, 96, 99, 207, -1, -1, -1, 96, -1, -1, -1, 93, 99, 98, -1, -1, 96, -1, 94, 99, 35, 96, 96, 96, 96 }; static const ANTLR3_INT32 dfa2_T1712[] = { 564, 563, -1, -1, 562, 568, 914, -1, 1343, 915, 567, 560, -1, 560, 565, 914, -1, -1, -1, 560, -1, -1, -1, 561, 566, 34, -1, -1, 560, -1, 278, 279, 35, 560, 560, 560, 560 }; static const ANTLR3_INT32 dfa2_T1713[] = { 465, 464, -1, -1, 1629, 469, 1190, 1588, 1192, 1191, 468, 2557, -1, 462, 466, 1190, -1, -1, -1, 462, -1, -1, -1, 463, 467, 854, -1, -1, 462, -1, 1630, 1631, 1585, 462, 462, 462, 462 }; static const ANTLR3_INT32 dfa2_T1714[] = { 465, 464, -1, -1, 1629, 469, 1190, 1588, 1192, 1191, 468, 1634, -1, 462, 466, 1190, -1, -1, -1, 462, -1, -1, -1, 463, 467, 854, -1, -1, 462, -1, 1630, 1631, 1585, 462, 462, 462, 462 }; static const ANTLR3_INT32 dfa2_T1715[] = { 575, 574, -1, -1, 1349, 579, 613, 338, 571, 1355, 578, 571, -1, 571, 576, 613, -1, -1, -1, 571, -1, -1, -1, 572, 577, 34, -1, -1, 571, -1, 1348, 903, 337, 571, 571, 571, 571 }; static const ANTLR3_INT32 dfa2_T1716[] = { 355, 354, 641, -1, 353, 359, 1365, 640, 1367, 1366, 358, 1367, -1, 1367, 356, 1365, -1, -1, -1, 1367, -1, -1, -1, 1368, 1369, 34, -1, -1, 1367, -1, 154, 66, 639, 1367, 1367, 1367, 1367 }; static const ANTLR3_INT32 dfa2_T1717[] = { 749, 748, -1, -1, 1586, 753, 744, 1588, 746, 1593, 752, 746, -1, 746, 750, 744, -1, -1, -1, 746, -1, -1, -1, 747, 751, 854, -1, -1, 746, -1, 1583, 1584, 1585, 746, 746, 746, 746 }; static const ANTLR3_INT32 dfa2_T1718[] = { 1577, 1576, -1, -1, 1575, 1581, 1571, 1588, 1573, 2907, 1580, 1573, -1, 1573, 1578, 1571, -1, -1, -1, 1573, -1, -1, -1, 1574, 1579, 854, -1, -1, 1573, -1, 2051, 1584, 1585, 1573, 1573, 1573, 1573 }; static const ANTLR3_INT32 dfa2_T1719[] = { 575, 574, -1, -1, 573, 579, 569, 338, 571, 1838, 578, 571, -1, 571, 576, 569, -1, -1, -1, 571, -1, -1, -1, 572, 577, 34, -1, -1, 571, -1, 1348, 903, 337, 571, 571, 571, 571 }; static const ANTLR3_INT32 dfa2_T1720[] = { 508, 508, -1, -1, 508, 506, 882, -1, 1309, 883, 508, 511, -1, 511, 508, 882, -1, -1, -1, 511, -1, -1, -1, 512, 508, 507, -1, -1, 511, -1, 505, 508, 35, 511, 511, 511, 511 }; static const ANTLR3_INT32 dfa2_T1721[] = { 1414, 1413, -1, -1, 1412, 1418, 1408, 338, 1410, 2775, 1417, 1410, -1, 1410, 1415, 1408, -1, -1, -1, 1410, -1, -1, -1, 1411, 1416, 34, -1, -1, 1410, -1, 2376, 1883, 337, 1410, 1410, 1410, 1410 }; static const ANTLR3_INT32 dfa2_T1722[] = { 465, 464, -1, -1, 1629, 469, 1190, 1588, 1192, 1191, 468, 3254, -1, 462, 466, 1190, -1, -1, -1, 462, -1, -1, -1, 463, 467, 854, -1, -1, 462, -1, 1630, 1631, 1585, 462, 462, 462, 462 }; static const ANTLR3_INT32 dfa2_T1723[] = { 749, 748, -1, -1, 738, 753, 744, -1, 746, 745, 752, 746, -1, 746, 750, 744, -1, -1, -1, 746, 754, -1, -1, 747, 751, 242, -1, -1, 746, -1, 732, 733, 35, 746, 746, 746, 746 }; static const ANTLR3_INT32 dfa2_T1724[] = { 2579, 2578, -1, -1, 2577, 2583, 2573, 1588, 2575, 3554, 2582, 2575, -1, 2575, 2580, 2573, -1, -1, -1, 2575, -1, -1, -1, 2576, 2581, 854, -1, -1, 2575, -1, 2986, 2588, 1585, 2575, 2575, 2575, 2575 }; static const ANTLR3_INT32 dfa2_T1725[] = { 575, 574, -1, -1, 1349, 579, 613, 338, 571, 2320, 578, 571, -1, 571, 576, 613, -1, -1, -1, 571, -1, -1, -1, 572, 577, 34, -1, -1, 571, -1, 1348, 903, 337, 571, 571, 571, 571 }; static const ANTLR3_INT32 dfa2_T1726[] = { 348 }; static const ANTLR3_INT32 dfa2_T1727[] = { 803 }; static const ANTLR3_INT32 dfa2_T1728[] = { 641, -1, -1, -1, 956, 952, 957, 1853, -1, 957, -1, 957, 954, 1852, -1, -1, -1, 957, -1, -1, -1, 958, 959, 34, -1, -1, 957, -1, 643, 666, 951, 957, 957, 957, 957 }; static const ANTLR3_INT32 dfa2_T1729[] = { 641, -1, -1, -1, 956, 952, 957, 1948, -1, 957, -1, 957, 954, 1947, -1, -1, -1, 957, -1, -1, -1, 958, 959, 34, -1, -1, 957, -1, 643, 666, 951, 957, 957, 957, 957 }; static const ANTLR3_INT32 dfa2_T1730[] = { 1124, 1123, -1, -1, 1122, 1128, 1118, -1, 1120, 2525, 1127, 1120, -1, 1120, 1125, 1118, -1, -1, -1, 1120, -1, -1, -1, 1121, 1126, 242, -1, -1, 1120, -1, 732, 733, 35, 1120, 1120, 1120, 1120 }; static const ANTLR3_INT32 dfa2_T1731[] = { 108, 108, -1, -1, 108, 106, 109, -1, 111, 1056, 108, 111, -1, 111, 108, 109, -1, -1, -1, 111, -1, -1, -1, 112, 108, 107, -1, -1, 111, -1, 105, 108, 35, 111, 111, 111, 111 }; static const ANTLR3_INT32 dfa2_T1732[] = { 1414, 1413, -1, -1, 2375, 1418, 1449, 338, 1410, 3103, 1417, 1410, -1, 1410, 1415, 1449, -1, -1, -1, 1410, -1, -1, -1, 1411, 1416, 34, -1, -1, 1410, -1, 2376, 1883, 337, 1410, 1410, 1410, 1410 }; static const ANTLR3_INT32 dfa2_T1733[] = { 1668, 1667, -1, -1, 2586, 1672, 1663, 1588, 1665, 2592, 1671, 1665, -1, 1665, 1669, 1663, -1, -1, -1, 1665, -1, -1, -1, 1666, 1670, 854, -1, -1, 1665, -1, 2587, 2588, 1585, 1665, 1665, 1665, 1665 }; static const ANTLR3_INT32 dfa2_T1734[] = { 2060, -1, -1, -1, -1, -1, 2060 }; static const ANTLR3_INT32 dfa2_T1735[] = { 1141, -1, -1, -1, -1, -1, 1141 }; static const ANTLR3_INT32 dfa2_T1736[] = { 731, -1, -1, -1, -1, -1, 731 }; static const ANTLR3_INT32 dfa2_T1737[] = { 1153, -1, -1, -1, -1, -1, 1153 }; static const ANTLR3_INT32 dfa2_T1738[] = { 3799, -1, -1, -1, -1, -1, 3799 }; static const ANTLR3_INT32 dfa2_T1739[] = { 1165, -1, -1, -1, -1, -1, 1165 }; static const ANTLR3_INT32 dfa2_T1740[] = { 1599, -1, -1, -1, -1, -1, 1599 }; static const ANTLR3_INT32 dfa2_T1741[] = { 3879, -1, -1, -1, -1, -1, 3879 }; static const ANTLR3_INT32 dfa2_T1742[] = { 2602, -1, -1, -1, -1, -1, 2602 }; static const ANTLR3_INT32 dfa2_T1743[] = { 1607, -1, -1, -1, -1, -1, 1607 }; static const ANTLR3_INT32 dfa2_T1744[] = { 3760, -1, -1, -1, -1, -1, 3760 }; static const ANTLR3_INT32 dfa2_T1745[] = { 3834, -1, -1, -1, -1, -1, 3834 }; static const ANTLR3_INT32 dfa2_T1746[] = { 3616, -1, -1, -1, -1, -1, 3616 }; static const ANTLR3_INT32 dfa2_T1747[] = { 2594, -1, -1, -1, -1, -1, 2594 }; static const ANTLR3_INT32 dfa2_T1748[] = { 3415, -1, -1, -1, -1, -1, 3415 }; static const ANTLR3_INT32 dfa2_T1749[] = { 2621, -1, -1, -1, -1, -1, 2621 }; static const ANTLR3_INT32 dfa2_T1750[] = { 1614, -1, -1, -1, -1, -1, 1614 }; static const ANTLR3_INT32 dfa2_T1751[] = { 2105, -1, -1, -1, -1, -1, 2105 }; static const ANTLR3_INT32 dfa2_T1752[] = { 2160, -1, -1, -1, -1, -1, 2160 }; static const ANTLR3_INT32 dfa2_T1753[] = { 2991, -1, -1, -1, -1, -1, 2991 }; static const ANTLR3_INT32 dfa2_T1754[] = { 1673, -1, -1, -1, -1, -1, 1673 }; static const ANTLR3_INT32 dfa2_T1755[] = { 2148, -1, -1, -1, -1, -1, 2148 }; static const ANTLR3_INT32 dfa2_T1756[] = { 1414, 1413, -1, -1, 2375, 1418, 1449, 338, 1410, 2380, 1417, 1410, -1, 1410, 1415, 1449, -1, -1, -1, 1410, -1, -1, -1, 1411, 1416, 34, -1, -1, 1410, -1, 2376, 1883, 337, 1410, 1410, 1410, 1410 }; static const ANTLR3_INT32 dfa2_T1757[] = { 749, 748, -1, -1, 1586, 753, 744, 1588, 746, 3188, 752, 746, -1, 746, 750, 744, -1, -1, -1, 746, -1, -1, -1, 747, 751, 854, -1, -1, 746, -1, 1583, 1584, 1585, 746, 746, 746, 746 }; static const ANTLR3_INT32 dfa2_T1758[] = { 575, 574, -1, -1, 1349, 579, 613, 338, 571, 3078, 578, 571, -1, 571, 576, 613, -1, -1, -1, 571, -1, -1, -1, 572, 577, 34, -1, -1, 571, -1, 1348, 903, 337, 571, 571, 571, 571 }; static const ANTLR3_INT32 dfa2_T1759[] = { 1414, 1413, -1, -1, 2375, 1418, 1449, 338, 1410, 3611, 1417, 1410, -1, 1410, 1415, 1449, -1, -1, -1, 1410, -1, -1, -1, 1411, 1416, 34, -1, -1, 1410, -1, 2376, 1883, 337, 1410, 1410, 1410, 1410 }; static const ANTLR3_INT32 dfa2_T1760[] = { 749, 748, -1, -1, 1586, 753, 744, 1588, 746, 2515, 752, 746, -1, 746, 750, 744, -1, -1, -1, 746, -1, -1, -1, 747, 751, 854, -1, -1, 746, -1, 1583, 1584, 1585, 746, 746, 746, 746 }; static const ANTLR3_INT32 dfa2_T1761[] = { 1668, 1667, -1, -1, 2586, 1672, 1663, 1588, 1665, 3704, 1671, 1665, -1, 1665, 1669, 1663, -1, -1, -1, 1665, -1, -1, -1, 1666, 1670, 854, -1, -1, 1665, -1, 2587, 2588, 1585, 1665, 1665, 1665, 1665 }; static const ANTLR3_INT32 dfa2_T1762[] = { 1403, 1402, -1, -1, 1401, 1407, 1437, -1, 1399, 1438, 1406, 1399, -1, 1399, 1404, 1437, -1, -1, -1, 1399, 57, -1, -1, 1400, 1405, 34, -1, -1, 1399, -1, 973, 974, 35, 1399, 1399, 1399, 1399 }; static const ANTLR3_INT32 dfa2_T1763[] = { 1668, 1667, -1, -1, 2586, 1672, 1663, 1588, 1665, 3279, 1671, 1665, -1, 1665, 1669, 1663, -1, -1, -1, 1665, -1, -1, -1, 1666, 1670, 854, -1, -1, 1665, -1, 2587, 2588, 1585, 1665, 1665, 1665, 1665 }; static const ANTLR3_INT32 dfa2_T1764[] = { 811, 810, -1, -1, 809, 815, 805, 205, 807, 2707, 814, 807, -1, 807, 812, 805, -1, -1, -1, 807, -1, -1, -1, 808, 813, 854, -1, -1, 807, -1, 1237, 241, 204, 807, 807, 807, 807 }; static const ANTLR3_INT32 dfa2_T1765[] = { 811, 810, -1, -1, 809, 815, 805, -1, 807, 2707, 814, 807, -1, 807, 812, 805, -1, -1, -1, 807, -1, -1, -1, 808, 813, 242, -1, -1, 807, -1, 458, 241, 35, 807, 807, 807, 807 }; static const ANTLR3_INT32 dfa2_T1766[] = { 811, 810, -1, -1, 809, 815, 1245, -1, 1741, 1246, 814, 807, -1, 807, 812, 1245, -1, -1, -1, 807, -1, -1, -1, 808, 813, 242, -1, -1, 807, -1, 458, 241, 35, 807, 807, 807, 807 }; static const ANTLR3_INT32 dfa2_T1767[] = { 2889, -1, -1, -1, -1, 3191, -1, -1, -1, -1, -1, 3191, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1596 }; static const ANTLR3_INT32 dfa2_T1768[] = { 575, 574, -1, -1, 1349, 579, 613, 338, 571, 1351, 578, 571, -1, 571, 576, 613, -1, -1, -1, 571, -1, -1, -1, 572, 577, 34, -1, -1, 571, -1, 1348, 903, 337, 571, 571, 571, 571 }; static const ANTLR3_INT32 dfa2_T1769[] = { 99, 89, -1, -1, 88, 97, 90, -1, 95, 419, 99, 420, -1, 96, 99, 90, -1, -1, -1, 96, -1, -1, -1, 93, 99, 98, -1, -1, 96, -1, 94, 99, 35, 96, 96, 96, 96 }; static const ANTLR3_INT32 dfa2_T1770[] = { 954, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 643, -1, 1386 }; static const ANTLR3_INT32 dfa2_T1771[] = { 1641, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1205, -1, 2095 }; static const ANTLR3_INT32 dfa2_T1772[] = { 355, 354, 1383, -1, 353, 359, 2326, 1382, 2328, 2327, 358, 2328, 1384, 2328, 356, 2326, -1, -1, -1, 2328, -1, -1, -1, 2329, 2330, 34, -1, -1, 2328, -1, 154, 66, 1381, 2328, 2328, 2328, 2328 }; static const ANTLR3_INT32 dfa2_T1773[] = { 1595, -1, -1, -1, -1, 2037, -1, -1, -1, -1, -1, 2037, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1596 }; static const ANTLR3_INT32 dfa2_T1774[] = { 99, 89, -1, -1, 88, 97, 90, -1, 95, 1115, 99, 1116, -1, 96, 99, 90, -1, -1, -1, 96, -1, -1, -1, 93, 99, 98, -1, -1, 96, -1, 94, 99, 35, 96, 96, 96, 96 }; static const ANTLR3_INT32 dfa2_T1775[] = { 1403, 1402, -1, -1, 1401, 1407, 2771, -1, 2368, 2772, 1406, 1399, -1, 1399, 1404, 2771, -1, -1, -1, 1399, -1, -1, -1, 1400, 1405, 34, -1, -1, 1399, -1, 973, 974, 35, 1399, 1399, 1399, 1399 }; static const ANTLR3_INT32 dfa2_T1776[] = { 1414, 1413, -1, -1, 2375, 1418, 1449, 338, 1410, 2373, 1417, 1410, -1, 1410, 1415, 1449, -1, -1, -1, 1410, -1, -1, -1, 1411, 1416, 34, -1, -1, 1410, -1, 2376, 1883, 337, 1410, 1410, 1410, 1410 }; static const ANTLR3_INT32 dfa2_T1777[] = { 1383, -1, -1, -1, 1859, 1382, 1392, 1391, -1, 1392, 1384, 1392, -1, 1859, -1, -1, -1, 1392, -1, -1, -1, 1393, 1394, -1, -1, -1, 1392, -1, -1, -1, 1389, 1392, 1392, 1392, 1392 }; static const ANTLR3_INT32 dfa2_T1778[] = { 2092, -1, -1, -1, 2564, 2091, 2101, 2100, -1, 2101, 2093, 2101, -1, 2564, -1, -1, -1, 2101, -1, -1, -1, 2102, 2103, -1, -1, -1, 2101, -1, -1, -1, 2098, 2101, 2101, 2101, 2101 }; static const ANTLR3_INT32 dfa2_T1779[] = { 2522, -1, -1, -1, -1, 2894, -1, -1, -1, -1, -1, 2894, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1596 }; static const ANTLR3_INT32 dfa2_T1780[] = { 1383, -1, -1, -1, 1859, 338, 1392, 1391, -1, 1392, -1, 1392, -1, 1859, -1, -1, -1, 1392, -1, -1, -1, 1393, 1394, 34, -1, -1, 1392, -1, 643, 1395, 337, 1392, 1392, 1392, 1392 }; static const ANTLR3_INT32 dfa2_T1781[] = { 3166, 1710, -1, -1, 3165, 1715, 3162, 3847, 3172, 3179, 3169, 3163, -1, 3172, 3167, 3162, -1, -1, -1, 3172, 405, -1, -1, 3164, 3168, 854, -1, -1, 3172, 405, 3170, 3171, 204, 3172, 3172, 3172, 3172 }; static const ANTLR3_INT32 dfa2_T1782[] = { 465, 464, -1, -1, 459, 469, 1190, -1, 1192, 1193, 468, 1194, -1, 462, 466, 1190, -1, -1, -1, 462, -1, -1, -1, 463, 467, 242, -1, -1, 462, -1, 458, 241, 35, 462, 462, 462, 462 }; static const ANTLR3_INT32 dfa2_T1783[] = { 508, 508, -1, -1, 1748, 506, 844, 1588, 511, 2693, 508, 511, -1, 511, 508, 844, -1, -1, -1, 511, -1, -1, -1, 512, 508, 1751, -1, -1, 511, -1, 1749, 1750, 1585, 511, 511, 511, 511 }; static const ANTLR3_INT32 dfa2_T1784[] = { 1024, 1023, -1, -1, 1022, 1028, 1018, 1526, 1020, 1019, 1027, 1020, -1, 1020, 1025, 1018, -1, -1, -1, 1020, -1, -1, -1, 1021, 1026, 34, -1, -1, 1020, -1, 1029, 1030, 35, 1020, 1020, 1020, 1020 }; static const ANTLR3_INT32 dfa2_T1785[] = { 1668, 1667, -1, -1, 2586, 1672, 1663, 1588, 1665, 2584, 1671, 1665, -1, 1665, 1669, 1663, -1, -1, -1, 1665, -1, -1, -1, 1666, 1670, 854, -1, -1, 1665, -1, 2587, 2588, 1585, 1665, 1665, 1665, 1665 }; static const ANTLR3_INT32 dfa2_T1786[] = { 749, 748, -1, -1, 1586, 753, 744, 1588, 746, 1589, 752, 746, -1, 746, 750, 744, -1, -1, -1, 746, -1, -1, -1, 747, 751, 854, -1, -1, 746, -1, 1583, 1584, 1585, 746, 746, 746, 746 }; static const ANTLR3_INT32 dfa2_T1787[] = { 508, 508, -1, -1, 1748, 506, 844, 1588, 511, 1755, 508, 511, -1, 511, 508, 844, -1, -1, -1, 511, -1, -1, -1, 512, 508, 1751, -1, -1, 511, -1, 1749, 1750, 1585, 511, 511, 511, 511 }; static const ANTLR3_INT32 dfa2_T1788[] = { 1730, 810, -1, -1, 1727, 815, 1725, 403, 1728, 1726, 1732, 1724, -1, 1728, 812, 1725, -1, -1, -1, 1728, 405, -1, -1, 1729, 1731, 854, -1, -1, 1728, 405, 1237, 1271, 402, 1728, 1728, 1728, 1728 }; static const ANTLR3_INT32 dfa2_T1789[] = { 465, 464, -1, -1, 459, 469, 1190, -1, 1192, 2078, 468, 2079, -1, 462, 466, 1190, -1, -1, -1, 462, -1, -1, -1, 463, 467, 242, -1, -1, 462, -1, 458, 241, 35, 462, 462, 462, 462 }; static const ANTLR3_INT32 dfa2_T1790[] = { 498, 497, -1, -1, 496, 502, 874, -1, 1299, 875, 501, 494, -1, 494, 499, 874, -1, -1, -1, 494, -1, -1, -1, 495, 500, 242, -1, -1, 494, -1, 240, 241, 35, 494, 494, 494, 494 }; static const ANTLR3_INT32 dfa2_T1791[] = { 465, 464, -1, -1, 459, 469, 1190, -1, 1192, 2932, 468, 2933, -1, 462, 466, 1190, -1, -1, -1, 462, -1, -1, -1, 463, 467, 242, -1, -1, 462, -1, 458, 241, 35, 462, 462, 462, 462 }; static const ANTLR3_INT32 dfa2_T1792[] = { 3766, 2879, -1, -1, 3765, 2884, 3761, -1, 3769, 3762, 3768, 3763, -1, 3769, 2881, 3761, -1, -1, -1, 3769, 1080, -1, -1, 3764, 3767, 242, -1, -1, 3769, 1080, 2510, 3123, 35, 3769, 3769, 3769, 3769 }; static const ANTLR3_INT32 dfa2_T1793[] = { 99, 89, -1, -1, 201, 97, 90, 205, 95, 91, 99, 729, -1, 96, 99, 90, -1, -1, -1, 96, -1, -1, -1, 93, 99, 206, -1, -1, 96, -1, 202, 99, 204, 96, 96, 96, 96 }; static const ANTLR3_INT32 dfa2_T1794[] = { 99, 89, -1, -1, 201, 97, 90, 205, 95, 91, 99, 212, -1, 96, 99, 90, -1, -1, -1, 96, -1, -1, -1, 93, 99, 206, -1, -1, 96, -1, 202, 99, 204, 96, 96, 96, 96 }; static const ANTLR3_INT32 dfa2_T1795[] = { 508, 508, -1, -1, 1748, 506, 844, 1588, 511, 3358, 508, 511, -1, 511, 508, 844, -1, -1, -1, 511, -1, -1, -1, 512, 508, 1751, -1, -1, 511, -1, 1749, 1750, 1585, 511, 511, 511, 511 }; static const ANTLR3_INT32 dfa2_T1796[] = { 2891 }; static const ANTLR3_INT32 dfa2_T1797[] = { 2895 }; static const ANTLR3_INT32 dfa2_T1798[] = { 346, -1, -1, -1, -1, 664, -1, -1, -1, -1, -1, 664, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 347 }; static const ANTLR3_INT32 dfa2_T1799[] = { 801, -1, -1, -1, -1, 1226, -1, -1, -1, -1, -1, 1226, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 802 }; static const ANTLR3_INT32 dfa2_T1800[] = { 3473 }; static const ANTLR3_INT32 dfa2_T1801[] = { 3476 }; static const ANTLR3_INT32 dfa2_T1802[] = { 99, 89, -1, -1, 201, 97, 90, 205, 95, 91, 99, 1567, -1, 96, 99, 90, -1, -1, -1, 96, -1, -1, -1, 93, 99, 206, -1, -1, 96, -1, 202, 99, 204, 96, 96, 96, 96 }; static const ANTLR3_INT32 dfa2_T1803[] = { 3788 }; static const ANTLR3_INT32 dfa2_T1804[] = { 3790 }; static const ANTLR3_INT32 dfa2_T1805[] = { 3518, 2111, 2092, -1, 3517, 2116, 3512, 2091, 3520, 3513, 3519, 3514, 2093, 3520, 2113, 3512, -1, -1, -1, 3520, 1080, -1, -1, 3515, 3516, 242, -1, -1, 3520, 1080, 1660, 3226, 2090, 3520, 3520, 3520, 3520 }; static const ANTLR3_INT32 dfa2_T1806[] = { 1468 }; static const ANTLR3_INT32 dfa2_T1807[] = { 1496 }; static const ANTLR3_INT32 dfa2_T1808[] = { 2177 }; static const ANTLR3_INT32 dfa2_T1809[] = { 2205 }; static const ANTLR3_INT32 dfa2_T1810[] = { 575, 574, -1, -1, 573, 579, 613, -1, 571, 1355, 578, 571, -1, 571, 576, 613, -1, -1, -1, 571, -1, -1, -1, 572, 577, 34, -1, -1, 571, -1, 580, 279, 35, 571, 571, 571, 571 }; static const ANTLR3_INT32 dfa2_T1811[] = { 2889, -1, -1, -1, -1, 3189, -1, 2523, -1, -1, -1, 2517, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1596 }; static const ANTLR3_INT32 dfa2_T1812[] = { 2392 }; static const ANTLR3_INT32 dfa2_T1813[] = { 2398 }; static const ANTLR3_INT32 dfa2_T1814[] = { 3002 }; static const ANTLR3_INT32 dfa2_T1815[] = { 3008 }; static const ANTLR3_INT32 dfa2_T1816[] = { 3110 }; static const ANTLR3_INT32 dfa2_T1817[] = { 3112 }; static const ANTLR3_INT32 dfa2_T1818[] = { 3560 }; static const ANTLR3_INT32 dfa2_T1819[] = { 3562 }; static const ANTLR3_INT32 dfa2_T1820[] = { 575, 574, -1, -1, 573, 579, 613, -1, 571, 2320, 578, 571, -1, 571, 576, 613, -1, -1, -1, 571, -1, -1, -1, 572, 577, 34, -1, -1, 571, -1, 580, 279, 35, 571, 571, 571, 571 }; static const ANTLR3_INT32 dfa2_T1821[] = { 2856, 1134, -1, -1, 2855, 1139, 2851, -1, 2859, 2852, 2858, 2853, -1, 2859, 1136, 2851, -1, -1, -1, 2859, 1080, -1, -1, 2854, 2857, 242, -1, -1, 2859, 1080, 1140, 2830, 35, 2859, 2859, 2859, 2859 }; static const ANTLR3_INT32 dfa2_T1822[] = { 575, 574, -1, -1, 573, 579, 613, -1, 571, 3078, 578, 571, -1, 571, 576, 613, -1, -1, -1, 571, -1, -1, -1, 572, 577, 34, -1, -1, 571, -1, 580, 279, 35, 571, 571, 571, 571 }; static const ANTLR3_INT32 dfa2_T1823[] = { 1152, -1, -1, -1, -1, 1151, -1, -1, -1, -1, -1, 1151 }; static const ANTLR3_INT32 dfa2_T1824[] = { 508, 508, -1, -1, 508, 506, 554, -1, 511, 1312, 508, 511, -1, 511, 508, 554, -1, -1, -1, 511, -1, -1, -1, 512, 508, 507, -1, -1, 511, -1, 505, 508, 35, 511, 511, 511, 511 }; static const ANTLR3_INT32 dfa2_T1825[] = { 2522, -1, -1, -1, -1, 2892, -1, 2523, -1, -1, -1, 2041, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1596 }; static const ANTLR3_INT32 dfa2_T1826[] = { 564, 563, -1, -1, 1340, 568, 601, 338, 560, 1346, 567, 560, -1, 560, 565, 601, -1, -1, -1, 560, -1, -1, -1, 561, 566, 34, -1, -1, 560, -1, 902, 903, 337, 560, 560, 560, 560 }; static const ANTLR3_INT32 dfa2_T1827[] = { 508, 508, -1, -1, 508, 506, 509, -1, 511, 2217, 508, 511, -1, 511, 508, 509, -1, -1, -1, 511, -1, -1, -1, 512, 508, 507, -1, -1, 511, -1, 505, 508, 35, 511, 511, 511, 511 }; static const ANTLR3_INT32 dfa2_T1828[] = { 508, 508, -1, -1, 508, 506, 554, -1, 511, 2288, 508, 511, -1, 511, 508, 554, -1, -1, -1, 511, -1, -1, -1, 512, 508, 507, -1, -1, 511, -1, 505, 508, 35, 511, 511, 511, 511 }; static const ANTLR3_INT32 dfa2_T1829[] = { 1135, 1134, -1, -1, 1133, 1139, 1175, -1, 1131, 2058, 1138, 1131, -1, 1131, 1136, 1175, -1, -1, -1, 1131, -1, -1, -1, 1132, 1137, 242, -1, -1, 1131, -1, 1140, 733, 35, 1131, 1131, 1131, 1131 }; static const ANTLR3_INT32 dfa2_T1830[] = { 564, 563, -1, -1, 562, 568, 558, 338, 560, 1828, 567, 560, -1, 560, 565, 558, -1, -1, -1, 560, -1, -1, -1, 561, 566, 34, -1, -1, 560, -1, 902, 903, 337, 560, 560, 560, 560 }; static const ANTLR3_INT32 dfa2_T1831[] = { 508, 508, -1, -1, 508, 506, 554, -1, 511, 3066, 508, 511, -1, 511, 508, 554, -1, -1, -1, 511, -1, -1, -1, 512, 508, 507, -1, -1, 511, -1, 505, 508, 35, 511, 511, 511, 511 }; static const ANTLR3_INT32 dfa2_T1832[] = { 1403, 1402, -1, -1, 1401, 1407, 1397, 338, 1399, 2770, 1406, 1399, -1, 1399, 1404, 1397, -1, -1, -1, 1399, -1, -1, -1, 1400, 1405, 34, -1, -1, 1399, -1, 1882, 1883, 337, 1399, 1399, 1399, 1399 }; static const ANTLR3_INT32 dfa2_T1833[] = { 564, 563, -1, -1, 1340, 568, 601, 338, 560, 2314, 567, 560, -1, 560, 565, 601, -1, -1, -1, 560, -1, -1, -1, 561, 566, 34, -1, -1, 560, -1, 902, 903, 337, 560, 560, 560, 560 }; static const ANTLR3_INT32 dfa2_T1834[] = { 508, 508, -1, -1, 1748, 506, 844, 1588, 511, 1746, 508, 511, -1, 511, 508, 844, -1, -1, -1, 511, -1, -1, -1, 512, 508, 1751, -1, -1, 511, -1, 1749, 1750, 1585, 511, 511, 511, 511 }; static const ANTLR3_INT32 dfa2_T1835[] = { 1135, 1134, -1, -1, 1133, 1139, 1175, -1, 1131, 2906, 1138, 1131, -1, 1131, 1136, 1175, -1, -1, -1, 1131, -1, -1, -1, 1132, 1137, 242, -1, -1, 1131, -1, 1140, 733, 35, 1131, 1131, 1131, 1131 }; static const ANTLR3_INT32 dfa2_T1836[] = { 1403, 1402, -1, -1, 2367, 1407, 1437, 338, 1399, 3097, 1406, 1399, -1, 1399, 1404, 1437, -1, -1, -1, 1399, -1, -1, -1, 1400, 1405, 34, -1, -1, 1399, -1, 1882, 1883, 337, 1399, 1399, 1399, 1399 }; static const ANTLR3_INT32 dfa2_T1837[] = { 1403, 1402, -1, -1, 2367, 1407, 1437, 338, 1399, 2371, 1406, 1399, -1, 1399, 1404, 1437, -1, -1, -1, 1399, -1, -1, -1, 1400, 1405, 34, -1, -1, 1399, -1, 1882, 1883, 337, 1399, 1399, 1399, 1399 }; static const ANTLR3_INT32 dfa2_T1838[] = { 564, 563, -1, -1, 1340, 568, 601, 338, 560, 3073, 567, 560, -1, 560, 565, 601, -1, -1, -1, 560, -1, -1, -1, 561, 566, 34, -1, -1, 560, -1, 902, 903, 337, 560, 560, 560, 560 }; static const ANTLR3_INT32 dfa2_T1839[] = { 1135, 1134, -1, -1, 1133, 1139, 1175, -1, 1131, 3485, 1138, 1131, -1, 1131, 1136, 1175, -1, -1, -1, 1131, -1, -1, -1, 1132, 1137, 242, -1, -1, 1131, -1, 1140, 733, 35, 1131, 1131, 1131, 1131 }; static const ANTLR3_INT32 dfa2_T1840[] = { 1403, 1402, -1, -1, 2367, 1407, 1437, 338, 1399, 3606, 1406, 1399, -1, 1399, 1404, 1437, -1, -1, -1, 1399, -1, -1, -1, 1400, 1405, 34, -1, -1, 1399, -1, 1882, 1883, 337, 1399, 1399, 1399, 1399 }; static const ANTLR3_INT32 dfa2_T1841[] = { 108, 108, -1, -1, 1551, 106, 1989, -1, 1991, 1990, 1551, 1991, -1, 1991, 108, 1989, -1, -1, -1, 1991, 1552, -1, -1, 1992, 1551, 1550, -1, -1, 1991, 1552, 105, 1551, 35, 1991, 1991, 1991, 1991 }; static const ANTLR3_INT32 dfa2_T1842[] = { 355, 354, -1, -1, 353, 359, 674, -1, 1040, 675, 358, 351, -1, 351, 356, 674, -1, -1, -1, 351, -1, -1, -1, 352, 357, 34, -1, -1, 351, -1, 154, 66, 35, 351, 351, 351, 351 }; static const ANTLR3_INT32 dfa2_T1843[] = { 1874, 1873, -1, -1, 1872, 1878, 1868, -1, 1870, 3104, 1877, 1870, -1, 1870, 1875, 1868, -1, -1, -1, 1870, -1, -1, -1, 1871, 1876, 34, -1, -1, 1870, -1, 1419, 974, 35, 1870, 1870, 1870, 1870 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa2_transitions[] = { dfa2_T1656, dfa2_T573, dfa2_T573, dfa2_T573, dfa2_T573, dfa2_T573, dfa2_T573, dfa2_T1213, dfa2_T74, NULL, NULL, NULL, NULL, NULL, dfa2_T1643, dfa2_T1664, dfa2_T74, dfa2_T74, dfa2_T74, dfa2_T74, dfa2_T74, dfa2_T1349, dfa2_T499, dfa2_T499, dfa2_T499, dfa2_T366, dfa2_T499, dfa2_T499, dfa2_T499, dfa2_T499, dfa2_T499, dfa2_T499, dfa2_T499, dfa2_T3, dfa2_T1566, dfa2_T1096, dfa2_T1005, dfa2_T1431, dfa2_T168, dfa2_T1400, dfa2_T168, NULL, dfa2_T168, dfa2_T168, dfa2_T168, dfa2_T815, dfa2_T815, dfa2_T168, dfa2_T168, dfa2_T168, dfa2_T1323, dfa2_T357, dfa2_T129, dfa2_T971, dfa2_T37, dfa2_T623, dfa2_T37, dfa2_T1381, dfa2_T1038, dfa2_T1038, dfa2_T37, dfa2_T37, dfa2_T37, dfa2_T37, dfa2_T124, dfa2_T1276, dfa2_T1038, dfa2_T657, dfa2_T3, dfa2_T3, dfa2_T3, dfa2_T364, dfa2_T3, dfa2_T3, dfa2_T3, dfa2_T3, dfa2_T3, dfa2_T3, dfa2_T3, dfa2_T330, dfa2_T330, dfa2_T330, dfa2_T330, dfa2_T330, dfa2_T330, dfa2_T330, dfa2_T365, dfa2_T1706, dfa2_T964, dfa2_T111, dfa2_T1011, dfa2_T1011, dfa2_T1711, dfa2_T1399, dfa2_T168, dfa2_T1653, dfa2_T168, dfa2_T168, dfa2_T168, dfa2_T168, dfa2_T1053, dfa2_T1708, dfa2_T168, dfa2_T168, dfa2_T923, dfa2_T815, dfa2_T815, dfa2_T815, dfa2_T815, dfa2_T815, dfa2_T815, dfa2_T815, dfa2_T371, dfa2_T962, dfa2_T844, dfa2_T1469, dfa2_T305, dfa2_T305, dfa2_T305, dfa2_T1402, dfa2_T305, dfa2_T305, dfa2_T305, dfa2_T305, dfa2_T305, dfa2_T232, dfa2_T791, dfa2_T357, dfa2_T357, dfa2_T357, dfa2_T889, dfa2_T307, dfa2_T410, dfa2_T357, dfa2_T357, dfa2_T357, dfa2_T357, dfa2_T357, dfa2_T451, dfa2_T297, dfa2_T432, dfa2_T702, dfa2_T740, dfa2_T740, dfa2_T821, dfa2_T570, dfa2_T37, dfa2_T838, dfa2_T799, dfa2_T37, dfa2_T37, dfa2_T1153, dfa2_T1639, dfa2_T1726, dfa2_T602, dfa2_T1038, dfa2_T1038, dfa2_T1038, dfa2_T372, dfa2_T1038, dfa2_T1038, dfa2_T1038, dfa2_T1038, dfa2_T1038, dfa2_T50, dfa2_T200, dfa2_T124, dfa2_T124, dfa2_T124, dfa2_T624, dfa2_T124, dfa2_T124, dfa2_T124, dfa2_T124, dfa2_T124, dfa2_T82, dfa2_T1490, dfa2_T6, dfa2_T6, dfa2_T6, dfa2_T625, dfa2_T6, dfa2_T6, dfa2_T6, dfa2_T6, dfa2_T499, dfa2_T659, dfa2_T660, dfa2_T447, dfa2_T964, dfa2_T964, dfa2_T964, dfa2_T1411, dfa2_T964, dfa2_T964, dfa2_T964, dfa2_T964, dfa2_T964, dfa2_T398, dfa2_T1614, NULL, dfa2_T428, dfa2_T383, dfa2_T1025, dfa2_T137, NULL, dfa2_T960, dfa2_T1005, dfa2_T1005, dfa2_T922, dfa2_T1497, dfa2_T1794, dfa2_T1010, dfa2_T1769, dfa2_T168, dfa2_T662, dfa2_T418, dfa2_T1463, dfa2_T1503, dfa2_T29, dfa2_T1599, dfa2_T29, dfa2_T1382, dfa2_T220, dfa2_T681, dfa2_T29, dfa2_T29, dfa2_T29, dfa2_T29, dfa2_T94, dfa2_T347, dfa2_T844, dfa2_T844, dfa2_T844, dfa2_T1413, dfa2_T844, dfa2_T844, dfa2_T844, dfa2_T844, dfa2_T844, dfa2_T511, dfa2_T310, dfa2_T1567, dfa2_T467, dfa2_T288, dfa2_T1499, dfa2_T467, dfa2_T373, dfa2_T467, dfa2_T467, dfa2_T467, dfa2_T467, dfa2_T467, dfa2_T467, dfa2_T183, dfa2_T931, dfa2_T425, dfa2_T1192, dfa2_T232, dfa2_T232, dfa2_T232, dfa2_T1416, dfa2_T232, dfa2_T232, dfa2_T232, dfa2_T232, dfa2_T232, dfa2_T350, dfa2_T1479, dfa2_T109, dfa2_T109, dfa2_T109, dfa2_T1417, dfa2_T109, dfa2_T109, dfa2_T109, dfa2_T109, dfa2_T1527, dfa2_T865, dfa2_T746, dfa2_T307, dfa2_T307, dfa2_T307, dfa2_T890, dfa2_T420, dfa2_T307, dfa2_T307, dfa2_T307, dfa2_T307, dfa2_T307, dfa2_T479, dfa2_T1217, dfa2_T420, dfa2_T628, dfa2_T420, dfa2_T420, dfa2_T420, dfa2_T420, dfa2_T420, dfa2_T420, dfa2_T451, dfa2_T451, dfa2_T451, dfa2_T893, dfa2_T321, dfa2_T1450, dfa2_T451, dfa2_T451, dfa2_T451, dfa2_T451, dfa2_T451, dfa2_T297, dfa2_T297, dfa2_T297, dfa2_T897, dfa2_T172, dfa2_T1385, dfa2_T297, dfa2_T297, dfa2_T297, dfa2_T297, dfa2_T297, dfa2_T31, dfa2_T432, dfa2_T432, dfa2_T432, dfa2_T634, dfa2_T432, dfa2_T432, dfa2_T432, dfa2_T432, dfa2_T432, dfa2_T842, dfa2_T963, dfa2_T1255, dfa2_T1461, dfa2_T753, dfa2_T493, dfa2_T437, dfa2_T90, dfa2_T129, dfa2_T60, dfa2_T850, dfa2_T725, dfa2_T970, dfa2_T37, dfa2_T1081, dfa2_T233, dfa2_T488, dfa2_T602, dfa2_T602, dfa2_T602, dfa2_T375, dfa2_T602, dfa2_T602, dfa2_T602, dfa2_T602, dfa2_T602, dfa2_T602, dfa2_T602, dfa2_T665, dfa2_T50, dfa2_T50, dfa2_T50, dfa2_T641, dfa2_T50, dfa2_T50, dfa2_T50, dfa2_T50, dfa2_T50, dfa2_T422, dfa2_T516, dfa2_T1156, dfa2_T82, dfa2_T82, dfa2_T82, dfa2_T646, dfa2_T82, dfa2_T82, dfa2_T82, dfa2_T82, dfa2_T82, dfa2_T407, dfa2_T1339, dfa2_T1152, dfa2_T3, dfa2_T330, dfa2_T448, dfa2_T932, dfa2_T723, dfa2_T411, dfa2_T411, dfa2_T571, dfa2_T796, dfa2_T712, dfa2_T285, dfa2_T967, dfa2_T427, dfa2_T427, dfa2_T427, dfa2_T1595, dfa2_T427, dfa2_T361, NULL, dfa2_T427, NULL, NULL, NULL, dfa2_T121, dfa2_T158, dfa2_T158, dfa2_T158, dfa2_T605, dfa2_T158, NULL, dfa2_T158, dfa2_T168, dfa2_T1449, dfa2_T1449, dfa2_T1051, dfa2_T1709, dfa2_T815, dfa2_T418, dfa2_T418, dfa2_T418, dfa2_T1736, dfa2_T69, dfa2_T1723, dfa2_T418, dfa2_T418, dfa2_T418, dfa2_T418, dfa2_T418, dfa2_T840, dfa2_T763, dfa2_T446, dfa2_T254, dfa2_T1386, dfa2_T1386, dfa2_T556, dfa2_T312, dfa2_T29, dfa2_T1455, dfa2_T524, dfa2_T29, dfa2_T29, dfa2_T1359, dfa2_T1640, dfa2_T1727, dfa2_T220, dfa2_T220, dfa2_T220, dfa2_T1419, dfa2_T220, dfa2_T220, dfa2_T220, dfa2_T220, dfa2_T220, dfa2_T1064, dfa2_T310, dfa2_T1318, dfa2_T742, dfa2_T310, dfa2_T377, dfa2_T310, dfa2_T310, dfa2_T310, dfa2_T310, dfa2_T310, dfa2_T310, dfa2_T434, dfa2_T1644, dfa2_T94, dfa2_T94, dfa2_T94, dfa2_T1602, dfa2_T94, dfa2_T94, dfa2_T94, dfa2_T94, dfa2_T94, dfa2_T8, dfa2_T1243, dfa2_T495, dfa2_T495, dfa2_T495, dfa2_T1598, dfa2_T495, dfa2_T495, dfa2_T495, dfa2_T495, dfa2_T933, dfa2_T511, dfa2_T511, dfa2_T511, dfa2_T374, dfa2_T511, dfa2_T511, dfa2_T511, dfa2_T511, dfa2_T511, dfa2_T511, dfa2_T511, dfa2_T310, dfa2_T310, dfa2_T171, dfa2_T171, dfa2_T171, dfa2_T171, dfa2_T171, dfa2_T171, dfa2_T171, dfa2_T378, dfa2_T467, dfa2_T467, dfa2_T589, dfa2_T304, dfa2_T304, dfa2_T497, dfa2_T720, dfa2_T574, dfa2_T656, dfa2_T183, dfa2_T183, dfa2_T183, dfa2_T1422, dfa2_T183, dfa2_T183, dfa2_T183, dfa2_T183, dfa2_T183, dfa2_T20, dfa2_T305, dfa2_T425, dfa2_T425, dfa2_T425, dfa2_T1421, dfa2_T425, dfa2_T425, dfa2_T425, dfa2_T425, dfa2_T425, dfa2_T103, dfa2_T1238, dfa2_T938, dfa2_T350, dfa2_T350, dfa2_T350, dfa2_T1405, dfa2_T350, dfa2_T350, dfa2_T350, dfa2_T350, dfa2_T350, dfa2_T21, dfa2_T1195, dfa2_T940, dfa2_T357, dfa2_T865, dfa2_T865, dfa2_T865, dfa2_T647, dfa2_T865, dfa2_T865, dfa2_T865, dfa2_T865, dfa2_T865, dfa2_T865, dfa2_T865, dfa2_T746, dfa2_T746, dfa2_T746, dfa2_T652, dfa2_T746, dfa2_T746, dfa2_T746, dfa2_T746, dfa2_T746, dfa2_T746, dfa2_T746, dfa2_T590, dfa2_T1533, dfa2_T420, dfa2_T420, dfa2_T320, dfa2_T320, dfa2_T1063, dfa2_T839, dfa2_T1075, dfa2_T1033, dfa2_T1157, dfa2_T1526, dfa2_T321, dfa2_T321, dfa2_T321, dfa2_T905, dfa2_T321, dfa2_T321, dfa2_T321, dfa2_T321, dfa2_T321, dfa2_T239, dfa2_T356, dfa2_T1535, dfa2_T172, dfa2_T172, dfa2_T172, dfa2_T906, dfa2_T172, dfa2_T172, dfa2_T172, dfa2_T172, dfa2_T172, dfa2_T59, dfa2_T236, dfa2_T31, dfa2_T31, dfa2_T31, dfa2_T909, dfa2_T517, dfa2_T578, dfa2_T31, dfa2_T31, dfa2_T31, dfa2_T31, dfa2_T31, dfa2_T1158, dfa2_T794, dfa2_T737, dfa2_T737, dfa2_T548, dfa2_T824, dfa2_T766, dfa2_T1481, dfa2_T827, dfa2_T827, dfa2_T827, dfa2_T221, dfa2_T827, dfa2_T1467, dfa2_T438, dfa2_T287, dfa2_T1390, dfa2_T587, dfa2_T1041, dfa2_T804, dfa2_T867, dfa2_T90, dfa2_T90, dfa2_T90, dfa2_T915, dfa2_T90, dfa2_T90, dfa2_T90, dfa2_T90, dfa2_T90, dfa2_T302, dfa2_T130, dfa2_T598, dfa2_T598, dfa2_T843, dfa2_T797, dfa2_T456, dfa2_T62, dfa2_T1798, dfa2_T808, dfa2_T473, dfa2_T775, dfa2_T86, dfa2_T686, dfa2_T668, dfa2_T1038, dfa2_T1160, dfa2_T345, dfa2_T262, dfa2_T262, dfa2_T1842, dfa2_T406, dfa2_T308, dfa2_T124, dfa2_T1170, dfa2_T1247, dfa2_T18, dfa2_T18, dfa2_T1020, dfa2_T1184, dfa2_T1218, dfa2_T6, dfa2_T449, dfa2_T964, dfa2_T398, dfa2_T1579, dfa2_T1731, dfa2_T1290, dfa2_T1654, dfa2_T386, dfa2_T1627, dfa2_T1572, dfa2_T1616, dfa2_T967, dfa2_T967, dfa2_T967, dfa2_T1596, dfa2_T967, dfa2_T1333, dfa2_T967, dfa2_T967, dfa2_T967, dfa2_T698, dfa2_T1676, dfa2_T1355, NULL, NULL, dfa2_T500, NULL, NULL, NULL, dfa2_T121, dfa2_T121, dfa2_T121, dfa2_T604, dfa2_T102, dfa2_T121, dfa2_T121, dfa2_T15, dfa2_T15, dfa2_T474, dfa2_T1132, dfa2_T1793, dfa2_T1009, dfa2_T1774, dfa2_T1685, dfa2_T390, dfa2_T261, dfa2_T69, dfa2_T69, dfa2_T69, dfa2_T1735, dfa2_T141, dfa2_T69, dfa2_T69, dfa2_T69, dfa2_T69, dfa2_T69, dfa2_T1204, dfa2_T322, dfa2_T141, dfa2_T626, dfa2_T141, dfa2_T141, dfa2_T141, dfa2_T141, dfa2_T141, dfa2_T141, dfa2_T1823, dfa2_T840, dfa2_T840, dfa2_T840, dfa2_T1737, dfa2_T296, dfa2_T1116, dfa2_T840, dfa2_T840, dfa2_T840, dfa2_T840, dfa2_T840, dfa2_T763, dfa2_T763, dfa2_T763, dfa2_T1739, dfa2_T108, dfa2_T1032, dfa2_T763, dfa2_T763, dfa2_T763, dfa2_T763, dfa2_T763, dfa2_T585, dfa2_T446, dfa2_T446, dfa2_T446, dfa2_T1604, dfa2_T446, dfa2_T446, dfa2_T446, dfa2_T446, dfa2_T446, dfa2_T954, dfa2_T1782, dfa2_T14, dfa2_T1077, dfa2_T483, dfa2_T494, dfa2_T439, dfa2_T68, dfa2_T1463, dfa2_T1666, dfa2_T1462, dfa2_T436, dfa2_T1501, dfa2_T29, dfa2_T1082, dfa2_T739, dfa2_T489, dfa2_T950, dfa2_T1064, dfa2_T1064, dfa2_T1064, dfa2_T380, dfa2_T1064, dfa2_T1064, dfa2_T1064, dfa2_T1064, dfa2_T1064, dfa2_T1064, dfa2_T1064, dfa2_T1494, dfa2_T779, dfa2_T779, dfa2_T1441, dfa2_T1582, dfa2_T1483, dfa2_T673, dfa2_T434, dfa2_T434, dfa2_T434, dfa2_T1605, dfa2_T434, dfa2_T434, dfa2_T434, dfa2_T434, dfa2_T434, dfa2_T498, dfa2_T1482, dfa2_T1358, dfa2_T8, dfa2_T8, dfa2_T8, dfa2_T1597, dfa2_T8, dfa2_T8, dfa2_T8, dfa2_T8, dfa2_T8, dfa2_T1331, dfa2_T525, dfa2_T1360, dfa2_T844, dfa2_T674, dfa2_T661, dfa2_T288, dfa2_T1488, dfa2_T1340, dfa2_T1021, dfa2_T788, dfa2_T260, dfa2_T1554, dfa2_T1477, dfa2_T1498, dfa2_T467, dfa2_T951, dfa2_T338, dfa2_T169, dfa2_T20, dfa2_T20, dfa2_T20, dfa2_T1406, dfa2_T20, dfa2_T20, dfa2_T20, dfa2_T20, dfa2_T20, dfa2_T929, dfa2_T79, dfa2_T115, dfa2_T115, dfa2_T1790, dfa2_T240, dfa2_T49, dfa2_T232, dfa2_T924, dfa2_T0, dfa2_T33, dfa2_T33, dfa2_T1720, dfa2_T117, dfa2_T1824, dfa2_T109, dfa2_T1176, dfa2_T1179, dfa2_T590, dfa2_T590, dfa2_T590, dfa2_T631, dfa2_T590, dfa2_T590, dfa2_T590, dfa2_T590, dfa2_T590, dfa2_T590, dfa2_T590, dfa2_T307, dfa2_T1619, dfa2_T478, dfa2_T1388, dfa2_T1004, dfa2_T479, dfa2_T430, dfa2_T1097, dfa2_T975, dfa2_T1223, dfa2_T420, dfa2_T451, dfa2_T1536, dfa2_T11, dfa2_T11, dfa2_T167, dfa2_T1712, dfa2_T204, dfa2_T96, dfa2_T297, dfa2_T1542, dfa2_T81, dfa2_T81, dfa2_T2, dfa2_T1662, dfa2_T35, dfa2_T1810, dfa2_T1545, dfa2_T517, dfa2_T517, dfa2_T517, dfa2_T899, dfa2_T517, dfa2_T517, dfa2_T517, dfa2_T517, dfa2_T517, dfa2_T693, dfa2_T1335, dfa2_T432, dfa2_T842, dfa2_T717, dfa2_T1576, dfa2_T1716, dfa2_T170, dfa2_T5, dfa2_T841, dfa2_T688, dfa2_T966, dfa2_T1476, dfa2_T1660, dfa2_T776, dfa2_T1066, dfa2_T1030, dfa2_T1066, dfa2_T287, dfa2_T287, dfa2_T287, dfa2_T287, dfa2_T587, dfa2_T36, dfa2_T287, dfa2_T88, dfa2_T804, dfa2_T804, dfa2_T804, dfa2_T888, dfa2_T804, dfa2_T804, dfa2_T804, dfa2_T804, dfa2_T804, dfa2_T403, dfa2_T278, dfa2_T170, dfa2_T965, dfa2_T1502, dfa2_T170, dfa2_T650, dfa2_T170, dfa2_T170, dfa2_T170, dfa2_T170, dfa2_T170, dfa2_T170, dfa2_T1549, dfa2_T237, dfa2_T1762, dfa2_T302, dfa2_T302, dfa2_T302, dfa2_T898, dfa2_T302, dfa2_T302, dfa2_T302, dfa2_T302, dfa2_T302, dfa2_T52, dfa2_T1674, dfa2_T130, dfa2_T130, dfa2_T130, dfa2_T894, dfa2_T130, dfa2_T130, dfa2_T130, dfa2_T130, dfa2_T130, dfa2_T385, dfa2_T853, dfa2_T722, dfa2_T973, dfa2_T764, dfa2_T678, dfa2_T92, dfa2_T1806, dfa2_T1325, dfa2_T473, dfa2_T473, dfa2_T473, dfa2_T369, dfa2_T473, dfa2_T473, dfa2_T473, dfa2_T473, dfa2_T473, dfa2_T473, dfa2_T473, dfa2_T515, dfa2_T316, dfa2_T792, dfa2_T528, dfa2_T1807, dfa2_T138, dfa2_T602, dfa2_T50, dfa2_T422, dfa2_T238, dfa2_T1277, dfa2_T1556, dfa2_T426, dfa2_T177, dfa2_T520, dfa2_T82, dfa2_T407, dfa2_T1029, dfa2_T727, dfa2_T706, dfa2_T567, dfa2_T330, dfa2_T581, dfa2_T1202, dfa2_T1013, dfa2_T1337, dfa2_T1131, dfa2_T1398, dfa2_T698, dfa2_T698, dfa2_T698, dfa2_T698, dfa2_T608, dfa2_T15, dfa2_T15, dfa2_T15, dfa2_T1408, dfa2_T23, dfa2_T23, dfa2_T803, dfa2_T710, dfa2_T1356, dfa2_T317, dfa2_T317, dfa2_T317, dfa2_T611, dfa2_T317, dfa2_T317, dfa2_T317, dfa2_T317, dfa2_T83, NULL, dfa2_T866, dfa2_T317, dfa2_T987, dfa2_T987, dfa2_T987, dfa2_T603, dfa2_T987, dfa2_T987, dfa2_T427, NULL, NULL, dfa2_T135, NULL, dfa2_T1133, dfa2_T102, dfa2_T102, dfa2_T102, dfa2_T612, dfa2_T680, dfa2_T102, dfa2_T102, dfa2_T332, dfa2_T332, NULL, dfa2_T332, dfa2_T102, dfa2_T474, dfa2_T474, dfa2_T474, dfa2_T614, dfa2_T474, dfa2_T1186, dfa2_T474, dfa2_T158, dfa2_T1049, dfa2_T1707, dfa2_T418, dfa2_T390, dfa2_T390, dfa2_T390, dfa2_T627, dfa2_T390, dfa2_T390, dfa2_T390, dfa2_T390, dfa2_T390, dfa2_T390, dfa2_T390, dfa2_T261, dfa2_T261, dfa2_T261, dfa2_T622, dfa2_T261, dfa2_T261, dfa2_T261, dfa2_T261, dfa2_T261, dfa2_T261, dfa2_T261, dfa2_T362, dfa2_T1684, dfa2_T141, dfa2_T141, dfa2_T273, dfa2_T273, dfa2_T1090, dfa2_T781, dfa2_T1231, dfa2_T1045, dfa2_T1166, dfa2_T1504, dfa2_T1681, dfa2_T1687, dfa2_T296, dfa2_T296, dfa2_T296, dfa2_T1740, dfa2_T296, dfa2_T296, dfa2_T296, dfa2_T296, dfa2_T296, dfa2_T334, dfa2_T1393, dfa2_T1691, dfa2_T108, dfa2_T108, dfa2_T108, dfa2_T1743, dfa2_T108, dfa2_T108, dfa2_T108, dfa2_T108, dfa2_T108, dfa2_T180, dfa2_T1328, dfa2_T585, dfa2_T585, dfa2_T585, dfa2_T1750, dfa2_T142, dfa2_T97, dfa2_T585, dfa2_T585, dfa2_T585, dfa2_T585, dfa2_T585, dfa2_T1361, dfa2_T818, dfa2_T798, dfa2_T798, dfa2_T460, dfa2_T984, dfa2_T780, dfa2_T916, dfa2_T772, dfa2_T772, dfa2_T772, dfa2_T1645, dfa2_T772, dfa2_T1468, dfa2_T440, dfa2_T123, dfa2_T1391, dfa2_T588, dfa2_T1042, dfa2_T337, dfa2_T486, dfa2_T68, dfa2_T68, dfa2_T68, dfa2_T1754, dfa2_T68, dfa2_T68, dfa2_T68, dfa2_T68, dfa2_T68, dfa2_T85, dfa2_T7, dfa2_T1322, dfa2_T1322, dfa2_T1451, dfa2_T526, dfa2_T457, dfa2_T63, dfa2_T1799, dfa2_T809, dfa2_T959, dfa2_T777, dfa2_T87, dfa2_T687, dfa2_T220, dfa2_T663, dfa2_T1318, dfa2_T716, dfa2_T458, dfa2_T1788, dfa2_T1305, dfa2_T769, dfa2_T699, dfa2_T741, dfa2_T310, dfa2_T1362, dfa2_T391, dfa2_T358, dfa2_T358, dfa2_T1766, dfa2_T543, dfa2_T319, dfa2_T94, dfa2_T1364, dfa2_T1263, dfa2_T346, dfa2_T346, dfa2_T961, dfa2_T1283, dfa2_T1228, dfa2_T495, dfa2_T511, dfa2_T171, dfa2_T1334, dfa2_T565, dfa2_T565, dfa2_T565, dfa2_T565, dfa2_T565, dfa2_T615, dfa2_T565, dfa2_T565, dfa2_T565, dfa2_T47, dfa2_T175, dfa2_T175, dfa2_T175, dfa2_T175, dfa2_T1412, dfa2_T175, dfa2_T1430, dfa2_T1430, dfa2_T721, dfa2_T577, dfa2_T183, dfa2_T338, dfa2_T338, dfa2_T338, dfa2_T1418, dfa2_T338, dfa2_T338, dfa2_T338, dfa2_T338, dfa2_T338, dfa2_T955, dfa2_T270, dfa2_T927, dfa2_T425, dfa2_T103, dfa2_T1216, dfa2_T1002, dfa2_T1651, dfa2_T1265, dfa2_T1209, dfa2_T1244, dfa2_T350, dfa2_T21, dfa2_T1120, dfa2_T1353, dfa2_T757, dfa2_T820, dfa2_T1626, dfa2_T1224, dfa2_T1115, dfa2_T1200, dfa2_T865, dfa2_T746, dfa2_T1180, dfa2_T690, dfa2_T690, dfa2_T690, dfa2_T222, dfa2_T690, dfa2_T478, dfa2_T478, dfa2_T478, dfa2_T901, dfa2_T478, dfa2_T478, dfa2_T478, dfa2_T478, dfa2_T478, dfa2_T478, dfa2_T478, dfa2_T43, dfa2_T417, dfa2_T974, dfa2_T873, dfa2_T873, dfa2_T1076, dfa2_T1037, dfa2_T321, dfa2_T586, dfa2_T17, dfa2_T239, dfa2_T1458, dfa2_T235, dfa2_T1826, dfa2_T353, dfa2_T172, dfa2_T822, dfa2_T509, dfa2_T1768, dfa2_T59, dfa2_T1389, dfa2_T51, dfa2_T1715, dfa2_T227, dfa2_T31, dfa2_T1544, dfa2_T535, dfa2_T535, dfa2_T1261, dfa2_T1028, dfa2_T1274, dfa2_T1233, dfa2_T711, dfa2_T870, dfa2_T870, dfa2_T870, dfa2_T1728, dfa2_T870, dfa2_T170, dfa2_T170, dfa2_T584, dfa2_T584, dfa2_T829, dfa2_T771, dfa2_T748, dfa2_T748, dfa2_T748, dfa2_T53, dfa2_T748, dfa2_T1777, dfa2_T441, dfa2_T104, dfa2_T113, dfa2_T875, dfa2_T1770, dfa2_T827, dfa2_T827, dfa2_T1030, dfa2_T104, dfa2_T104, dfa2_T104, dfa2_T104, dfa2_T104, dfa2_T1562, dfa2_T1550, dfa2_T403, dfa2_T403, dfa2_T403, dfa2_T637, dfa2_T403, dfa2_T403, dfa2_T403, dfa2_T403, dfa2_T403, dfa2_T403, dfa2_T403, dfa2_T278, dfa2_T278, dfa2_T278, dfa2_T648, dfa2_T278, dfa2_T278, dfa2_T278, dfa2_T278, dfa2_T278, dfa2_T278, dfa2_T278, dfa2_T388, dfa2_T1447, dfa2_T339, dfa2_T339, dfa2_T1288, dfa2_T1088, dfa2_T1433, dfa2_T1173, dfa2_T90, dfa2_T237, dfa2_T237, dfa2_T237, dfa2_T900, dfa2_T237, dfa2_T237, dfa2_T237, dfa2_T237, dfa2_T237, dfa2_T762, dfa2_T833, dfa2_T1531, dfa2_T52, dfa2_T52, dfa2_T52, dfa2_T892, dfa2_T52, dfa2_T52, dfa2_T52, dfa2_T52, dfa2_T52, dfa2_T654, dfa2_T754, dfa2_T1539, dfa2_T266, dfa2_T1048, dfa2_T385, dfa2_T385, dfa2_T385, dfa2_T908, dfa2_T385, dfa2_T385, dfa2_T385, dfa2_T385, dfa2_T385, dfa2_T836, dfa2_T802, dfa2_T785, dfa2_T529, dfa2_T118, dfa2_T147, dfa2_T658, dfa2_T515, dfa2_T515, dfa2_T515, dfa2_T381, dfa2_T515, dfa2_T515, dfa2_T515, dfa2_T515, dfa2_T515, dfa2_T515, dfa2_T515, dfa2_T316, dfa2_T316, dfa2_T316, dfa2_T376, dfa2_T316, dfa2_T316, dfa2_T316, dfa2_T316, dfa2_T316, dfa2_T316, dfa2_T316, dfa2_T1071, dfa2_T811, dfa2_T831, dfa2_T760, dfa2_T148, dfa2_T179, dfa2_T208, dfa2_T77, dfa2_T77, dfa2_T402, dfa2_T314, dfa2_T1026, dfa2_T194, dfa2_T194, dfa2_T194, dfa2_T1729, dfa2_T194, dfa2_T567, dfa2_T567, dfa2_T567, dfa2_T635, dfa2_T567, dfa2_T567, dfa2_T567, dfa2_T567, dfa2_T567, dfa2_T567, dfa2_T567, dfa2_T30, dfa2_T257, dfa2_T1061, dfa2_T1061, dfa2_T1188, dfa2_T1219, dfa2_T921, dfa2_T1135, dfa2_T941, dfa2_T1624, dfa2_T1568, dfa2_T1615, dfa2_T967, dfa2_T1139, dfa2_T83, dfa2_T83, dfa2_T83, dfa2_T83, dfa2_T1424, dfa2_T1140, dfa2_T734, NULL, dfa2_T121, dfa2_T1141, dfa2_T122, dfa2_T122, dfa2_T122, dfa2_T620, dfa2_T122, dfa2_T122, dfa2_T16, dfa2_T16, NULL, dfa2_T1841, dfa2_T332, dfa2_T332, dfa2_T332, dfa2_T1423, dfa2_T1150, dfa2_T122, dfa2_T159, dfa2_T159, dfa2_T159, dfa2_T610, dfa2_T159, dfa2_T159, dfa2_T1802, dfa2_T1017, dfa2_T1199, dfa2_T1159, dfa2_T1171, dfa2_T362, dfa2_T362, dfa2_T362, dfa2_T644, dfa2_T362, dfa2_T362, dfa2_T362, dfa2_T362, dfa2_T362, dfa2_T362, dfa2_T362, dfa2_T69, dfa2_T758, dfa2_T98, dfa2_T1456, dfa2_T859, dfa2_T1786, dfa2_T774, dfa2_T1204, dfa2_T12, dfa2_T251, dfa2_T1717, dfa2_T336, dfa2_T141, dfa2_T575, dfa2_T1622, dfa2_T1495, dfa2_T840, dfa2_T1697, dfa2_T126, dfa2_T126, dfa2_T207, dfa2_T1671, dfa2_T396, dfa2_T125, dfa2_T763, dfa2_T1699, dfa2_T860, dfa2_T860, dfa2_T41, dfa2_T1629, dfa2_T269, dfa2_T1829, dfa2_T1700, dfa2_T142, dfa2_T142, dfa2_T142, dfa2_T1734, dfa2_T142, dfa2_T142, dfa2_T142, dfa2_T142, dfa2_T142, dfa2_T27, dfa2_T533, dfa2_T446, dfa2_T954, dfa2_T1594, dfa2_T1104, dfa2_T983, dfa2_T709, dfa2_T1641, dfa2_T1714, dfa2_T1558, dfa2_T1789, dfa2_T459, dfa2_T1103, dfa2_T1661, dfa2_T778, dfa2_T1625, dfa2_T1031, dfa2_T1625, dfa2_T123, dfa2_T123, dfa2_T123, dfa2_T123, dfa2_T588, dfa2_T583, dfa2_T123, dfa2_T89, dfa2_T337, dfa2_T337, dfa2_T337, dfa2_T1751, dfa2_T337, dfa2_T337, dfa2_T337, dfa2_T337, dfa2_T337, dfa2_T496, dfa2_T392, dfa2_T709, dfa2_T424, dfa2_T813, dfa2_T709, dfa2_T649, dfa2_T709, dfa2_T709, dfa2_T709, dfa2_T709, dfa2_T709, dfa2_T709, dfa2_T1704, dfa2_T795, dfa2_T1472, dfa2_T85, dfa2_T85, dfa2_T85, dfa2_T1755, dfa2_T85, dfa2_T85, dfa2_T85, dfa2_T85, dfa2_T85, dfa2_T704, dfa2_T1432, dfa2_T7, dfa2_T7, dfa2_T7, dfa2_T1752, dfa2_T7, dfa2_T7, dfa2_T7, dfa2_T7, dfa2_T7, dfa2_T351, dfa2_T1464, dfa2_T450, dfa2_T1506, dfa2_T765, dfa2_T679, dfa2_T93, dfa2_T1808, dfa2_T1630, dfa2_T959, dfa2_T959, dfa2_T959, dfa2_T370, dfa2_T959, dfa2_T959, dfa2_T959, dfa2_T959, dfa2_T959, dfa2_T959, dfa2_T959, dfa2_T503, dfa2_T419, dfa2_T793, dfa2_T530, dfa2_T1809, dfa2_T139, dfa2_T1064, dfa2_T453, dfa2_T244, dfa2_T244, dfa2_T244, dfa2_T244, dfa2_T244, dfa2_T621, dfa2_T244, dfa2_T244, dfa2_T244, dfa2_T552, dfa2_T552, dfa2_T1583, dfa2_T1485, dfa2_T434, dfa2_T498, dfa2_T1313, dfa2_T733, dfa2_T1336, dfa2_T1452, dfa2_T1270, dfa2_T1487, dfa2_T8, dfa2_T1331, dfa2_T1834, dfa2_T1827, dfa2_T1492, dfa2_T303, dfa2_T820, dfa2_T293, dfa2_T333, dfa2_T1787, dfa2_T537, dfa2_T1647, dfa2_T1136, dfa2_T47, dfa2_T47, dfa2_T47, dfa2_T47, dfa2_T47, dfa2_T607, dfa2_T1298, dfa2_T47, dfa2_T47, dfa2_T47, dfa2_T245, dfa2_T949, dfa2_T1555, dfa2_T1478, dfa2_T1500, dfa2_T928, dfa2_T1226, dfa2_T318, dfa2_T318, dfa2_T1087, dfa2_T1289, dfa2_T1210, dfa2_T20, dfa2_T995, dfa2_T1065, dfa2_T1065, dfa2_T247, dfa2_T58, dfa2_T957, dfa2_T518, dfa2_T518, dfa2_T518, dfa2_T518, dfa2_T518, dfa2_T616, dfa2_T1024, dfa2_T1024, dfa2_T132, dfa2_T1828, dfa2_T590, dfa2_T1321, dfa2_T1067, dfa2_T1067, dfa2_T1537, dfa2_T43, dfa2_T43, dfa2_T43, dfa2_T912, dfa2_T43, dfa2_T43, dfa2_T43, dfa2_T43, dfa2_T43, dfa2_T43, dfa2_T43, dfa2_T417, dfa2_T417, dfa2_T417, dfa2_T903, dfa2_T417, dfa2_T417, dfa2_T417, dfa2_T417, dfa2_T417, dfa2_T417, dfa2_T417, dfa2_T178, dfa2_T1099, dfa2_T981, dfa2_T1222, dfa2_T1830, dfa2_T1089, dfa2_T1089, dfa2_T195, dfa2_T101, dfa2_T470, dfa2_T470, dfa2_T470, dfa2_T223, dfa2_T470, dfa2_T1719, dfa2_T1016, dfa2_T1016, dfa2_T24, dfa2_T1820, dfa2_T517, dfa2_T1493, dfa2_T1193, dfa2_T693, dfa2_T595, dfa2_T1282, dfa2_T1119, dfa2_T1341, dfa2_T1772, dfa2_T553, dfa2_T553, dfa2_T848, dfa2_T694, dfa2_T968, dfa2_T996, dfa2_T996, dfa2_T1780, dfa2_T596, dfa2_T113, dfa2_T729, dfa2_T1190, dfa2_T1314, dfa2_T804, dfa2_T1167, dfa2_T1154, dfa2_T388, dfa2_T388, dfa2_T388, dfa2_T633, dfa2_T388, dfa2_T388, dfa2_T388, dfa2_T388, dfa2_T388, dfa2_T388, dfa2_T388, dfa2_T965, dfa2_T1006, dfa2_T1677, dfa2_T199, dfa2_T1072, dfa2_T918, dfa2_T1095, dfa2_T976, dfa2_T1507, dfa2_T170, dfa2_T1551, dfa2_T719, dfa2_T9, dfa2_T9, dfa2_T468, dfa2_T210, dfa2_T685, dfa2_T302, dfa2_T1552, dfa2_T579, dfa2_T76, dfa2_T76, dfa2_T352, dfa2_T42, dfa2_T555, dfa2_T130, dfa2_T266, dfa2_T266, dfa2_T266, dfa2_T902, dfa2_T266, dfa2_T266, dfa2_T266, dfa2_T266, dfa2_T266, dfa2_T1101, dfa2_T1655, dfa2_T1538, dfa2_T862, dfa2_T731, dfa2_T1074, dfa2_T800, dfa2_T825, dfa2_T750, dfa2_T184, dfa2_T1812, dfa2_T473, dfa2_T669, dfa2_T664, dfa2_T1071, dfa2_T1071, dfa2_T1071, dfa2_T367, dfa2_T1071, dfa2_T1071, dfa2_T1071, dfa2_T1071, dfa2_T1071, dfa2_T1071, dfa2_T1071, dfa2_T854, dfa2_T185, dfa2_T1813, dfa2_T211, dfa2_T421, dfa2_T188, dfa2_T519, dfa2_T1378, dfa2_T554, dfa2_T554, dfa2_T1172, dfa2_T30, dfa2_T30, dfa2_T30, dfa2_T642, dfa2_T30, dfa2_T30, dfa2_T30, dfa2_T30, dfa2_T30, dfa2_T30, dfa2_T30, dfa2_T257, dfa2_T257, dfa2_T257, dfa2_T639, dfa2_T257, dfa2_T257, dfa2_T257, dfa2_T257, dfa2_T257, dfa2_T257, dfa2_T257, dfa2_T484, dfa2_T1205, dfa2_T1019, dfa2_T1342, NULL, dfa2_T698, dfa2_T15, dfa2_T805, dfa2_T713, dfa2_T317, dfa2_T946, dfa2_T987, dfa2_T591, dfa2_T102, dfa2_T174, dfa2_T1142, dfa2_T13, dfa2_T16, dfa2_T16, dfa2_T16, dfa2_T1410, dfa2_T925, dfa2_T474, dfa2_T653, dfa2_T1137, dfa2_T1055, dfa2_T390, dfa2_T261, dfa2_T1165, dfa2_T423, dfa2_T423, dfa2_T423, dfa2_T988, dfa2_T397, dfa2_T397, dfa2_T423, dfa2_T397, dfa2_T271, dfa2_T851, dfa2_T1642, dfa2_T1672, dfa2_T423, dfa2_T98, dfa2_T98, dfa2_T98, dfa2_T895, dfa2_T98, dfa2_T98, dfa2_T98, dfa2_T98, dfa2_T98, dfa2_T98, dfa2_T98, dfa2_T592, dfa2_T869, dfa2_T562, dfa2_T1508, dfa2_T1632, dfa2_T1574, dfa2_T1201, dfa2_T1201, dfa2_T1246, dfa2_T1050, dfa2_T1474, dfa2_T1189, dfa2_T1773, dfa2_T1592, dfa2_T1056, dfa2_T131, dfa2_T1675, dfa2_T296, dfa2_T1730, dfa2_T1208, dfa2_T334, dfa2_T1266, dfa2_T1347, dfa2_T1118, dfa2_T1394, dfa2_T108, dfa2_T1621, dfa2_T1670, dfa2_T1078, dfa2_T180, dfa2_T1191, dfa2_T1297, dfa2_T1035, dfa2_T1330, dfa2_T585, dfa2_T1690, dfa2_T482, dfa2_T482, dfa2_T1278, dfa2_T969, dfa2_T1377, dfa2_T1245, dfa2_T1440, dfa2_T78, dfa2_T78, dfa2_T78, dfa2_T743, dfa2_T78, dfa2_T78, dfa2_T709, dfa2_T709, dfa2_T655, dfa2_T655, dfa2_T977, dfa2_T783, dfa2_T564, dfa2_T564, dfa2_T564, dfa2_T466, dfa2_T564, dfa2_T683, dfa2_T683, dfa2_T683, dfa2_T1587, dfa2_T683, dfa2_T1778, dfa2_T442, dfa2_T389, dfa2_T114, dfa2_T876, dfa2_T1771, dfa2_T772, dfa2_T772, dfa2_T1031, dfa2_T389, dfa2_T389, dfa2_T389, dfa2_T389, dfa2_T389, dfa2_T65, dfa2_T1703, dfa2_T496, dfa2_T496, dfa2_T496, dfa2_T638, dfa2_T496, dfa2_T496, dfa2_T496, dfa2_T496, dfa2_T496, dfa2_T496, dfa2_T496, dfa2_T392, dfa2_T392, dfa2_T392, dfa2_T640, dfa2_T392, dfa2_T392, dfa2_T392, dfa2_T392, dfa2_T392, dfa2_T392, dfa2_T392, dfa2_T837, dfa2_T1459, dfa2_T280, dfa2_T280, dfa2_T1227, dfa2_T1249, dfa2_T1438, dfa2_T1168, dfa2_T68, dfa2_T795, dfa2_T795, dfa2_T795, dfa2_T1747, dfa2_T795, dfa2_T795, dfa2_T795, dfa2_T795, dfa2_T795, dfa2_T817, dfa2_T1680, dfa2_T1686, dfa2_T704, dfa2_T704, dfa2_T704, dfa2_T1742, dfa2_T704, dfa2_T704, dfa2_T704, dfa2_T704, dfa2_T704, dfa2_T735, dfa2_T1646, dfa2_T1695, dfa2_T540, dfa2_T689, dfa2_T351, dfa2_T351, dfa2_T351, dfa2_T1749, dfa2_T351, dfa2_T351, dfa2_T351, dfa2_T351, dfa2_T351, dfa2_T1453, dfa2_T538, dfa2_T786, dfa2_T531, dfa2_T119, dfa2_T149, dfa2_T672, dfa2_T503, dfa2_T503, dfa2_T503, dfa2_T368, dfa2_T503, dfa2_T503, dfa2_T503, dfa2_T503, dfa2_T503, dfa2_T503, dfa2_T503, dfa2_T419, dfa2_T419, dfa2_T419, dfa2_T379, dfa2_T419, dfa2_T419, dfa2_T419, dfa2_T419, dfa2_T419, dfa2_T419, dfa2_T419, dfa2_T348, dfa2_T812, dfa2_T832, dfa2_T761, dfa2_T150, dfa2_T181, dfa2_T917, dfa2_T1147, dfa2_T770, dfa2_T703, dfa2_T745, dfa2_T1091, dfa2_T146, dfa2_T146, dfa2_T549, dfa2_T328, dfa2_T1659, dfa2_T44, dfa2_T44, dfa2_T44, dfa2_T744, dfa2_T44, dfa2_T44, dfa2_T303, dfa2_T303, dfa2_T303, dfa2_T651, dfa2_T303, dfa2_T303, dfa2_T303, dfa2_T303, dfa2_T303, dfa2_T303, dfa2_T303, dfa2_T10, dfa2_T95, dfa2_T171, dfa2_T1085, dfa2_T1085, dfa2_T1301, dfa2_T1230, dfa2_T580, dfa2_T580, dfa2_T580, dfa2_T46, dfa2_T580, dfa2_T1425, dfa2_T580, dfa2_T580, dfa2_T580, dfa2_T580, dfa2_T565, dfa2_T1149, dfa2_T46, dfa2_T46, dfa2_T46, dfa2_T46, dfa2_T1409, dfa2_T46, dfa2_T46, dfa2_T46, dfa2_T46, dfa2_T245, dfa2_T245, dfa2_T245, dfa2_T245, dfa2_T1403, dfa2_T1445, dfa2_T245, dfa2_T175, dfa2_T718, dfa2_T576, dfa2_T338, dfa2_T955, dfa2_T234, dfa2_T1765, dfa2_T920, dfa2_T306, dfa2_T193, dfa2_T275, dfa2_T1262, dfa2_T1206, dfa2_T1241, dfa2_T268, dfa2_T1148, dfa2_T1220, dfa2_T1107, dfa2_T1198, dfa2_T557, dfa2_T557, dfa2_T557, dfa2_T54, dfa2_T557, dfa2_T690, dfa2_T690, dfa2_T478, dfa2_T1553, dfa2_T1532, dfa2_T178, dfa2_T178, dfa2_T178, dfa2_T913, dfa2_T178, dfa2_T178, dfa2_T178, dfa2_T178, dfa2_T178, dfa2_T178, dfa2_T178, dfa2_T1086, dfa2_T1036, dfa2_T250, dfa2_T1833, dfa2_T359, dfa2_T395, dfa2_T1069, dfa2_T1069, dfa2_T71, dfa2_T1725, dfa2_T242, dfa2_T1117, dfa2_T38, dfa2_T38, dfa2_T1275, dfa2_T1236, dfa2_T789, dfa2_T789, dfa2_T789, dfa2_T1667, dfa2_T789, dfa2_T870, dfa2_T870, dfa2_T828, dfa2_T768, dfa2_T748, dfa2_T748, dfa2_T113, dfa2_T1327, dfa2_T403, dfa2_T278, dfa2_T1182, dfa2_T979, dfa2_T701, dfa2_T701, dfa2_T701, dfa2_T224, dfa2_T701, dfa2_T1072, dfa2_T1072, dfa2_T1072, dfa2_T891, dfa2_T1072, dfa2_T1072, dfa2_T1072, dfa2_T1072, dfa2_T1072, dfa2_T1072, dfa2_T1072, dfa2_T342, dfa2_T431, dfa2_T431, dfa2_T1079, dfa2_T1435, dfa2_T237, dfa2_T762, dfa2_T26, dfa2_T1062, dfa2_T1775, dfa2_T243, dfa2_T1837, dfa2_T830, dfa2_T52, dfa2_T654, dfa2_T1776, dfa2_T986, dfa2_T1269, dfa2_T1678, dfa2_T66, dfa2_T1756, dfa2_T752, dfa2_T1529, dfa2_T1581, dfa2_T532, dfa2_T532, dfa2_T1429, dfa2_T1273, dfa2_T1560, dfa2_T385, dfa2_T849, dfa2_T845, dfa2_T214, dfa2_T153, dfa2_T515, dfa2_T316, dfa2_T670, dfa2_T871, dfa2_T215, dfa2_T154, dfa2_T413, dfa2_T309, dfa2_T25, dfa2_T25, dfa2_T25, dfa2_T1668, dfa2_T25, dfa2_T194, dfa2_T194, dfa2_T567, dfa2_T1177, dfa2_T1169, dfa2_T484, dfa2_T484, dfa2_T484, dfa2_T645, dfa2_T484, dfa2_T484, dfa2_T484, dfa2_T484, dfa2_T484, dfa2_T484, dfa2_T484, dfa2_T1187, dfa2_T1225, dfa2_T1628, dfa2_T1570, dfa2_T953, dfa2_T83, dfa2_T1350, dfa2_T174, dfa2_T174, dfa2_T174, dfa2_T617, dfa2_T174, dfa2_T174, dfa2_T13, dfa2_T13, NULL, dfa2_T122, dfa2_T13, dfa2_T13, dfa2_T13, dfa2_T1407, dfa2_T926, dfa2_T332, dfa2_T174, dfa2_T653, dfa2_T653, dfa2_T653, dfa2_T613, dfa2_T653, dfa2_T653, dfa2_T159, dfa2_T1011, dfa2_T362, dfa2_T100, dfa2_T994, dfa2_T1471, dfa2_T1058, dfa2_T324, dfa2_T324, dfa2_T397, dfa2_T397, dfa2_T397, dfa2_T878, dfa2_T106, dfa2_T397, dfa2_T397, dfa2_T271, dfa2_T271, dfa2_T271, dfa2_T877, dfa2_T271, dfa2_T271, dfa2_T1821, dfa2_T271, dfa2_T271, dfa2_T874, dfa2_T271, dfa2_T985, dfa2_T1650, dfa2_T521, dfa2_T521, dfa2_T463, dfa2_T521, dfa2_T521, dfa2_T810, dfa2_T1547, dfa2_T592, dfa2_T592, dfa2_T592, dfa2_T914, dfa2_T592, dfa2_T592, dfa2_T592, dfa2_T592, dfa2_T592, dfa2_T592, dfa2_T592, dfa2_T869, dfa2_T869, dfa2_T869, dfa2_T910, dfa2_T869, dfa2_T869, dfa2_T869, dfa2_T869, dfa2_T869, dfa2_T869, dfa2_T869, dfa2_T197, dfa2_T1267, dfa2_T521, dfa2_T248, dfa2_T1760, dfa2_T340, dfa2_T1039, dfa2_T1673, dfa2_T140, dfa2_T1796, dfa2_T116, dfa2_T1825, dfa2_T1577, dfa2_T1797, dfa2_T1254, dfa2_T972, dfa2_T323, dfa2_T323, dfa2_T394, dfa2_T136, dfa2_T120, dfa2_T120, dfa2_T120, dfa2_T989, dfa2_T452, dfa2_T452, dfa2_T120, dfa2_T452, dfa2_T120, dfa2_T852, dfa2_T173, dfa2_T173, dfa2_T265, dfa2_T1835, dfa2_T142, dfa2_T1040, dfa2_T196, dfa2_T27, dfa2_T311, dfa2_T461, dfa2_T110, dfa2_T539, dfa2_T292, dfa2_T715, dfa2_T1443, dfa2_T1443, dfa2_T1713, dfa2_T1569, dfa2_T1791, dfa2_T505, dfa2_T1018, dfa2_T1018, dfa2_T1521, dfa2_T1521, dfa2_T507, dfa2_T597, dfa2_T114, dfa2_T730, dfa2_T1486, dfa2_T1623, dfa2_T337, dfa2_T1183, dfa2_T1178, dfa2_T837, dfa2_T837, dfa2_T837, dfa2_T629, dfa2_T837, dfa2_T837, dfa2_T837, dfa2_T837, dfa2_T837, dfa2_T837, dfa2_T837, dfa2_T424, dfa2_T1785, dfa2_T1310, dfa2_T1211, dfa2_T536, dfa2_T582, dfa2_T258, dfa2_T1733, dfa2_T819, dfa2_T709, dfa2_T1696, dfa2_T747, dfa2_T143, dfa2_T143, dfa2_T387, dfa2_T404, dfa2_T705, dfa2_T85, dfa2_T1701, dfa2_T601, dfa2_T868, dfa2_T868, dfa2_T255, dfa2_T279, dfa2_T568, dfa2_T7, dfa2_T540, dfa2_T540, dfa2_T540, dfa2_T1753, dfa2_T540, dfa2_T540, dfa2_T540, dfa2_T540, dfa2_T540, dfa2_T593, dfa2_T1007, dfa2_T1702, dfa2_T1466, dfa2_T445, dfa2_T1637, dfa2_T801, dfa2_T826, dfa2_T751, dfa2_T186, dfa2_T1814, dfa2_T959, dfa2_T666, dfa2_T667, dfa2_T348, dfa2_T348, dfa2_T348, dfa2_T382, dfa2_T348, dfa2_T348, dfa2_T348, dfa2_T348, dfa2_T348, dfa2_T348, dfa2_T348, dfa2_T855, dfa2_T187, dfa2_T1815, dfa2_T212, dfa2_T728, dfa2_T728, dfa2_T728, dfa2_T728, dfa2_T1404, dfa2_T728, dfa2_T728, dfa2_T728, dfa2_T728, dfa2_T244, dfa2_T1586, dfa2_T1484, dfa2_T1454, dfa2_T1271, dfa2_T1489, dfa2_T1557, dfa2_T73, dfa2_T1444, dfa2_T1444, dfa2_T1155, dfa2_T10, dfa2_T10, dfa2_T10, dfa2_T636, dfa2_T10, dfa2_T10, dfa2_T10, dfa2_T10, dfa2_T10, dfa2_T10, dfa2_T10, dfa2_T95, dfa2_T95, dfa2_T95, dfa2_T630, dfa2_T95, dfa2_T95, dfa2_T95, dfa2_T95, dfa2_T95, dfa2_T95, dfa2_T95, dfa2_T295, dfa2_T343, dfa2_T1783, dfa2_T544, dfa2_T934, dfa2_T47, dfa2_T935, dfa2_T939, dfa2_T176, dfa2_T176, dfa2_T176, dfa2_T176, dfa2_T1427, dfa2_T176, dfa2_T1559, dfa2_T1480, dfa2_T823, dfa2_T1764, dfa2_T4, dfa2_T4, dfa2_T1286, dfa2_T1214, dfa2_T249, dfa2_T64, dfa2_T546, dfa2_T546, dfa2_T546, dfa2_T546, dfa2_T546, dfa2_T1415, dfa2_T518, dfa2_T134, dfa2_T1831, dfa2_T997, dfa2_T997, dfa2_T43, dfa2_T417, dfa2_T1540, dfa2_T1094, dfa2_T978, dfa2_T1319, dfa2_T202, dfa2_T107, dfa2_T355, dfa2_T355, dfa2_T355, dfa2_T55, dfa2_T355, dfa2_T470, dfa2_T470, dfa2_T28, dfa2_T1822, dfa2_T1284, dfa2_T1124, dfa2_T1338, dfa2_T454, dfa2_T454, dfa2_T847, dfa2_T691, dfa2_T1060, dfa2_T1784, dfa2_T388, dfa2_T1635, dfa2_T1070, dfa2_T1070, dfa2_T1530, dfa2_T342, dfa2_T342, dfa2_T342, dfa2_T896, dfa2_T342, dfa2_T342, dfa2_T342, dfa2_T342, dfa2_T342, dfa2_T342, dfa2_T342, dfa2_T1102, dfa2_T982, dfa2_T1505, dfa2_T1832, dfa2_T502, dfa2_T502, dfa2_T213, dfa2_T692, dfa2_T1721, dfa2_T481, dfa2_T481, dfa2_T481, dfa2_T225, dfa2_T481, dfa2_T399, dfa2_T399, dfa2_T45, dfa2_T559, dfa2_T266, dfa2_T1101, dfa2_T1196, dfa2_T1843, dfa2_T1073, dfa2_T1300, dfa2_T1121, dfa2_T1658, dfa2_T740, dfa2_T863, dfa2_T189, dfa2_T1816, dfa2_T1071, dfa2_T190, dfa2_T1817, dfa2_T429, dfa2_T182, dfa2_T677, dfa2_T455, dfa2_T455, dfa2_T30, dfa2_T257, dfa2_T1161, dfa2_T1203, dfa2_T1022, dfa2_T1348, dfa2_T807, dfa2_T921, dfa2_T1138, dfa2_T947, dfa2_T16, dfa2_T1145, dfa2_T100, dfa2_T100, dfa2_T100, dfa2_T1109, dfa2_T100, dfa2_T100, dfa2_T289, dfa2_T100, dfa2_T100, dfa2_T1100, dfa2_T344, dfa2_T100, dfa2_T1710, dfa2_T477, dfa2_T209, dfa2_T209, dfa2_T209, dfa2_T1588, dfa2_T566, dfa2_T566, dfa2_T209, dfa2_T566, dfa2_T209, dfa2_T736, dfa2_T423, dfa2_T423, dfa2_T1511, dfa2_T566, dfa2_T566, dfa2_T566, dfa2_T1607, dfa2_T566, dfa2_T566, dfa2_T1510, dfa2_T477, dfa2_T477, dfa2_T477, dfa2_T1611, dfa2_T477, dfa2_T477, dfa2_T477, dfa2_T477, dfa2_T477, dfa2_T452, dfa2_T452, dfa2_T452, dfa2_T879, dfa2_T452, dfa2_T452, dfa2_T1618, dfa2_T1316, dfa2_T545, dfa2_T1014, dfa2_T1014, dfa2_T98, dfa2_T1548, dfa2_T1546, dfa2_T197, dfa2_T197, dfa2_T197, dfa2_T904, dfa2_T197, dfa2_T197, dfa2_T197, dfa2_T197, dfa2_T197, dfa2_T197, dfa2_T197, dfa2_T1043, dfa2_T1240, dfa2_T1054, dfa2_T1811, dfa2_T1578, dfa2_T1242, dfa2_T1256, dfa2_T1106, dfa2_T1197, dfa2_T1779, dfa2_T1257, dfa2_T277, dfa2_T1343, dfa2_T1128, dfa2_T1397, dfa2_T682, dfa2_T325, dfa2_T325, dfa2_T1239, dfa2_T1293, dfa2_T1047, dfa2_T1332, dfa2_T1718, dfa2_T1329, dfa2_T1329, dfa2_T1357, dfa2_T1250, dfa2_T393, dfa2_T393, dfa2_T393, dfa2_T1395, dfa2_T393, dfa2_T393, dfa2_T715, dfa2_T715, dfa2_T715, dfa2_T880, dfa2_T715, dfa2_T715, dfa2_T1437, dfa2_T715, dfa2_T715, dfa2_T298, dfa2_T354, dfa2_T715, dfa2_T78, dfa2_T78, dfa2_T993, dfa2_T784, dfa2_T475, dfa2_T475, dfa2_T475, dfa2_T349, dfa2_T475, dfa2_T564, dfa2_T564, dfa2_T683, dfa2_T683, dfa2_T114, dfa2_T1634, dfa2_T496, dfa2_T392, dfa2_T1164, dfa2_T1633, dfa2_T433, dfa2_T433, dfa2_T433, dfa2_T990, dfa2_T433, dfa2_T471, dfa2_T471, dfa2_T471, dfa2_T433, dfa2_T536, dfa2_T536, dfa2_T536, dfa2_T911, dfa2_T536, dfa2_T536, dfa2_T536, dfa2_T536, dfa2_T536, dfa2_T536, dfa2_T536, dfa2_T145, dfa2_T299, dfa2_T299, dfa2_T1237, dfa2_T1439, dfa2_T795, dfa2_T817, dfa2_T1212, dfa2_T487, dfa2_T1593, dfa2_T1346, dfa2_T1129, dfa2_T1682, dfa2_T704, dfa2_T735, dfa2_T1080, dfa2_T384, dfa2_T216, dfa2_T1491, dfa2_T1294, dfa2_T1052, dfa2_T1648, dfa2_T1688, dfa2_T1617, dfa2_T490, dfa2_T490, dfa2_T1344, dfa2_T1375, dfa2_T1571, dfa2_T351, dfa2_T1457, dfa2_T846, dfa2_T217, dfa2_T155, dfa2_T503, dfa2_T419, dfa2_T671, dfa2_T872, dfa2_T218, dfa2_T156, dfa2_T944, dfa2_T767, dfa2_T697, dfa2_T1652, dfa2_T547, dfa2_T331, dfa2_T48, dfa2_T48, dfa2_T48, dfa2_T1396, dfa2_T48, dfa2_T48, dfa2_T73, dfa2_T73, dfa2_T73, dfa2_T881, dfa2_T73, dfa2_T73, dfa2_T360, dfa2_T73, dfa2_T73, dfa2_T856, dfa2_T1, dfa2_T73, dfa2_T44, dfa2_T44, dfa2_T303, dfa2_T1162, dfa2_T1163, dfa2_T295, dfa2_T295, dfa2_T295, dfa2_T643, dfa2_T295, dfa2_T295, dfa2_T295, dfa2_T295, dfa2_T295, dfa2_T295, dfa2_T295, dfa2_T1296, dfa2_T1234, dfa2_T580, dfa2_T46, dfa2_T245, dfa2_T435, dfa2_T930, dfa2_T726, dfa2_T313, dfa2_T201, dfa2_T274, dfa2_T1264, dfa2_T1207, dfa2_T400, dfa2_T937, dfa2_T1221, dfa2_T1108, dfa2_T329, dfa2_T557, dfa2_T557, dfa2_T178, dfa2_T1083, dfa2_T253, dfa2_T1838, dfa2_T508, dfa2_T998, dfa2_T998, dfa2_T75, dfa2_T1758, dfa2_T408, dfa2_T1272, dfa2_T1235, dfa2_T789, dfa2_T789, dfa2_T835, dfa2_T563, dfa2_T563, dfa2_T563, dfa2_T56, dfa2_T563, dfa2_T701, dfa2_T701, dfa2_T1072, dfa2_T1541, dfa2_T1084, dfa2_T1434, dfa2_T246, dfa2_T1836, dfa2_T834, dfa2_T857, dfa2_T1068, dfa2_T1068, dfa2_T67, dfa2_T1732, dfa2_T755, dfa2_T1123, dfa2_T599, dfa2_T599, dfa2_T1279, dfa2_T1563, dfa2_T228, dfa2_T443, dfa2_T229, dfa2_T513, dfa2_T414, dfa2_T25, dfa2_T25, dfa2_T484, dfa2_T1194, dfa2_T411, dfa2_T174, dfa2_T13, dfa2_T653, dfa2_T160, dfa2_T272, dfa2_T70, dfa2_T70, dfa2_T70, dfa2_T1748, dfa2_T70, dfa2_T70, dfa2_T70, dfa2_T70, dfa2_T70, dfa2_T738, dfa2_T738, dfa2_T738, dfa2_T1110, dfa2_T738, dfa2_T738, dfa2_T738, dfa2_T738, dfa2_T738, dfa2_T344, dfa2_T344, dfa2_T344, dfa2_T1111, dfa2_T344, dfa2_T344, dfa2_T1317, dfa2_T344, dfa2_T344, dfa2_T72, dfa2_T344, dfa2_T70, dfa2_T1522, dfa2_T1522, dfa2_T397, dfa2_T1372, dfa2_T271, dfa2_T1373, dfa2_T1515, dfa2_T1663, dfa2_T545, dfa2_T545, dfa2_T619, dfa2_T545, dfa2_T545, dfa2_T756, dfa2_T545, dfa2_T545, dfa2_T1392, dfa2_T506, dfa2_T545, dfa2_T462, dfa2_T462, dfa2_T462, dfa2_T1229, dfa2_T462, dfa2_T462, dfa2_T545, dfa2_T521, dfa2_T521, dfa2_T592, dfa2_T869, dfa2_T1543, dfa2_T1473, dfa2_T263, dfa2_T1757, dfa2_T1470, dfa2_T1093, dfa2_T1151, dfa2_T1767, dfa2_T282, dfa2_T1800, dfa2_T166, dfa2_T283, dfa2_T1801, dfa2_T1302, dfa2_T409, dfa2_T152, dfa2_T22, dfa2_T22, dfa2_T22, dfa2_T1589, dfa2_T264, dfa2_T264, dfa2_T22, dfa2_T264, dfa2_T22, dfa2_T120, dfa2_T120, dfa2_T264, dfa2_T264, dfa2_T264, dfa2_T1606, dfa2_T264, dfa2_T264, dfa2_T284, dfa2_T1839, dfa2_T476, dfa2_T105, dfa2_T534, dfa2_T558, dfa2_T1174, dfa2_T1174, dfa2_T1516, dfa2_T510, dfa2_T558, dfa2_T558, dfa2_T558, dfa2_T1612, dfa2_T558, dfa2_T558, dfa2_T558, dfa2_T558, dfa2_T558, dfa2_T471, dfa2_T471, dfa2_T471, dfa2_T883, dfa2_T471, dfa2_T471, dfa2_T354, dfa2_T354, dfa2_T354, dfa2_T884, dfa2_T354, dfa2_T354, dfa2_T560, dfa2_T354, dfa2_T354, dfa2_T1320, dfa2_T354, dfa2_T1722, dfa2_T1564, dfa2_T1315, dfa2_T952, dfa2_T952, dfa2_T522, dfa2_T837, dfa2_T1805, dfa2_T919, dfa2_T326, dfa2_T326, dfa2_T695, dfa2_T1534, dfa2_T145, dfa2_T145, dfa2_T145, dfa2_T907, dfa2_T145, dfa2_T145, dfa2_T145, dfa2_T145, dfa2_T145, dfa2_T145, dfa2_T145, dfa2_T256, dfa2_T1763, dfa2_T816, dfa2_T980, dfa2_T814, dfa2_T814, dfa2_T405, dfa2_T707, dfa2_T861, dfa2_T144, dfa2_T144, dfa2_T144, dfa2_T991, dfa2_T144, dfa2_T958, dfa2_T958, dfa2_T958, dfa2_T144, dfa2_T724, dfa2_T724, dfa2_T281, dfa2_T569, dfa2_T540, dfa2_T593, dfa2_T219, dfa2_T1436, dfa2_T806, dfa2_T469, dfa2_T128, dfa2_T1008, dfa2_T1386, dfa2_T864, dfa2_T191, dfa2_T1818, dfa2_T348, dfa2_T192, dfa2_T1819, dfa2_T728, dfa2_T1585, dfa2_T1460, dfa2_T1268, dfa2_T956, dfa2_T198, dfa2_T1175, dfa2_T1175, dfa2_T1517, dfa2_T34, dfa2_T198, dfa2_T198, dfa2_T198, dfa2_T1613, dfa2_T198, dfa2_T198, dfa2_T198, dfa2_T198, dfa2_T198, dfa2_T676, dfa2_T676, dfa2_T676, dfa2_T885, dfa2_T676, dfa2_T676, dfa2_T676, dfa2_T676, dfa2_T676, dfa2_T1, dfa2_T1, dfa2_T1, dfa2_T887, dfa2_T1, dfa2_T1, dfa2_T1345, dfa2_T1, dfa2_T1, dfa2_T1669, dfa2_T1, dfa2_T10, dfa2_T95, dfa2_T1181, dfa2_T341, dfa2_T1795, dfa2_T1509, dfa2_T435, dfa2_T435, dfa2_T435, dfa2_T435, dfa2_T1414, dfa2_T435, dfa2_T176, dfa2_T304, dfa2_T1287, dfa2_T1215, dfa2_T252, dfa2_T546, dfa2_T151, dfa2_T320, dfa2_T205, dfa2_T355, dfa2_T355, dfa2_T39, dfa2_T1299, dfa2_T1122, dfa2_T1448, dfa2_T737, dfa2_T999, dfa2_T999, dfa2_T342, dfa2_T1105, dfa2_T992, dfa2_T1326, dfa2_T206, dfa2_T696, dfa2_T363, dfa2_T363, dfa2_T363, dfa2_T57, dfa2_T363, dfa2_T481, dfa2_T481, dfa2_T40, dfa2_T561, dfa2_T1291, dfa2_T1126, dfa2_T1657, dfa2_T464, dfa2_T541, dfa2_T262, dfa2_T18, dfa2_T100, dfa2_T272, dfa2_T272, dfa2_T272, dfa2_T1746, dfa2_T272, dfa2_T272, dfa2_T272, dfa2_T272, dfa2_T272, dfa2_T1694, dfa2_T1023, dfa2_T161, dfa2_T162, dfa2_T1057, dfa2_T1057, dfa2_T1057, dfa2_T1112, dfa2_T1057, dfa2_T1057, dfa2_T1057, dfa2_T1057, dfa2_T1057, dfa2_T209, dfa2_T209, dfa2_T566, dfa2_T477, dfa2_T452, dfa2_T1638, dfa2_T1143, dfa2_T527, dfa2_T550, dfa2_T550, dfa2_T550, dfa2_T1428, dfa2_T550, dfa2_T550, dfa2_T550, dfa2_T550, dfa2_T550, dfa2_T1027, dfa2_T1027, dfa2_T1027, dfa2_T618, dfa2_T1027, dfa2_T1027, dfa2_T1027, dfa2_T1027, dfa2_T1027, dfa2_T506, dfa2_T506, dfa2_T506, dfa2_T606, dfa2_T506, dfa2_T506, dfa2_T1620, dfa2_T506, dfa2_T506, dfa2_T523, dfa2_T506, dfa2_T550, dfa2_T675, dfa2_T675, dfa2_T197, dfa2_T1580, dfa2_T1251, dfa2_T127, dfa2_T1307, dfa2_T1258, dfa2_T1248, dfa2_T1308, dfa2_T1259, dfa2_T1352, dfa2_T1125, dfa2_T782, dfa2_T1523, dfa2_T1523, dfa2_T1369, dfa2_T1306, dfa2_T1044, dfa2_T684, dfa2_T1383, dfa2_T1253, dfa2_T393, dfa2_T393, dfa2_T715, dfa2_T510, dfa2_T510, dfa2_T510, dfa2_T1600, dfa2_T510, dfa2_T510, dfa2_T510, dfa2_T510, dfa2_T510, dfa2_T1363, dfa2_T1518, dfa2_T1520, dfa2_T958, dfa2_T958, dfa2_T958, dfa2_T882, dfa2_T958, dfa2_T958, dfa2_T1001, dfa2_T475, dfa2_T475, dfa2_T226, dfa2_T226, dfa2_T226, dfa2_T1590, dfa2_T226, dfa2_T1034, dfa2_T1034, dfa2_T1034, dfa2_T226, dfa2_T919, dfa2_T919, dfa2_T919, dfa2_T1113, dfa2_T919, dfa2_T919, dfa2_T1665, dfa2_T919, dfa2_T919, dfa2_T749, dfa2_T919, dfa2_T433, dfa2_T433, dfa2_T1034, dfa2_T1034, dfa2_T1034, dfa2_T1601, dfa2_T1034, dfa2_T1034, dfa2_T536, dfa2_T1528, dfa2_T1252, dfa2_T1442, dfa2_T1354, dfa2_T1127, dfa2_T1683, dfa2_T1098, dfa2_T327, dfa2_T327, dfa2_T1565, dfa2_T1309, dfa2_T1046, dfa2_T1649, dfa2_T1724, dfa2_T504, dfa2_T504, dfa2_T1380, dfa2_T1573, dfa2_T230, dfa2_T444, dfa2_T231, dfa2_T514, dfa2_T779, dfa2_T551, dfa2_T48, dfa2_T48, dfa2_T73, dfa2_T34, dfa2_T34, dfa2_T34, dfa2_T1610, dfa2_T34, dfa2_T34, dfa2_T34, dfa2_T34, dfa2_T34, dfa2_T1374, dfa2_T1679, dfa2_T1513, dfa2_T1519, dfa2_T708, dfa2_T708, dfa2_T708, dfa2_T886, dfa2_T708, dfa2_T708, dfa2_T708, dfa2_T708, dfa2_T708, dfa2_T295, dfa2_T1303, dfa2_T945, dfa2_T315, dfa2_T203, dfa2_T1376, dfa2_T115, dfa2_T33, dfa2_T11, dfa2_T81, dfa2_T1281, dfa2_T563, dfa2_T563, dfa2_T1092, dfa2_T259, dfa2_T1840, dfa2_T512, dfa2_T1000, dfa2_T1000, dfa2_T80, dfa2_T1759, dfa2_T416, dfa2_T1280, dfa2_T1561, dfa2_T491, dfa2_T491, dfa2_T1692, dfa2_T70, dfa2_T759, dfa2_T759, dfa2_T759, dfa2_T1744, dfa2_T759, dfa2_T759, dfa2_T759, dfa2_T759, dfa2_T759, dfa2_T738, dfa2_T344, dfa2_T1792, dfa2_T163, dfa2_T594, dfa2_T545, dfa2_T527, dfa2_T527, dfa2_T527, dfa2_T1401, dfa2_T527, dfa2_T527, dfa2_T527, dfa2_T527, dfa2_T527, dfa2_T942, dfa2_T300, dfa2_T1134, dfa2_T1146, dfa2_T99, dfa2_T99, dfa2_T99, dfa2_T609, dfa2_T99, dfa2_T99, dfa2_T99, dfa2_T99, dfa2_T99, dfa2_T462, dfa2_T462, dfa2_T1496, dfa2_T273, dfa2_T1232, dfa2_T290, dfa2_T1803, dfa2_T291, dfa2_T1804, dfa2_T415, dfa2_T22, dfa2_T22, dfa2_T264, dfa2_T294, dfa2_T472, dfa2_T133, dfa2_T1631, dfa2_T1370, dfa2_T558, dfa2_T471, dfa2_T354, dfa2_T1512, dfa2_T798, dfa2_T773, dfa2_T1524, dfa2_T1524, dfa2_T164, dfa2_T773, dfa2_T773, dfa2_T773, dfa2_T1738, dfa2_T773, dfa2_T773, dfa2_T773, dfa2_T773, dfa2_T773, dfa2_T301, dfa2_T301, dfa2_T301, dfa2_T1114, dfa2_T301, dfa2_T301, dfa2_T301, dfa2_T301, dfa2_T301, dfa2_T1366, dfa2_T145, dfa2_T267, dfa2_T1761, dfa2_T1475, dfa2_T401, dfa2_T714, dfa2_T19, dfa2_T19, dfa2_T19, dfa2_T1591, dfa2_T19, dfa2_T32, dfa2_T32, dfa2_T32, dfa2_T19, dfa2_T144, dfa2_T144, dfa2_T32, dfa2_T32, dfa2_T32, dfa2_T1609, dfa2_T32, dfa2_T32, dfa2_T276, dfa2_T572, dfa2_T485, dfa2_T112, dfa2_T1012, dfa2_T465, dfa2_T542, dfa2_T358, dfa2_T1367, dfa2_T198, dfa2_T501, dfa2_T501, dfa2_T501, dfa2_T1603, dfa2_T501, dfa2_T501, dfa2_T501, dfa2_T501, dfa2_T501, dfa2_T676, dfa2_T1, dfa2_T1003, dfa2_T1514, dfa2_T346, dfa2_T435, dfa2_T1292, dfa2_T535, dfa2_T339, dfa2_T241, dfa2_T363, dfa2_T363, dfa2_T61, dfa2_T1295, dfa2_T1130, dfa2_T1446, dfa2_T272, dfa2_T1705, dfa2_T1015, dfa2_T1015, dfa2_T1015, dfa2_T1745, dfa2_T1015, dfa2_T1015, dfa2_T1015, dfa2_T1015, dfa2_T1015, dfa2_T1057, dfa2_T948, dfa2_T550, dfa2_T84, dfa2_T84, dfa2_T84, dfa2_T1426, dfa2_T84, dfa2_T84, dfa2_T84, dfa2_T84, dfa2_T84, dfa2_T1027, dfa2_T506, dfa2_T1324, dfa2_T1144, dfa2_T1781, dfa2_T1311, dfa2_T1465, dfa2_T1312, dfa2_T732, dfa2_T126, dfa2_T860, dfa2_T1387, dfa2_T510, dfa2_T958, dfa2_T226, dfa2_T226, dfa2_T919, dfa2_T1698, dfa2_T600, dfa2_T165, dfa2_T1034, dfa2_T1260, dfa2_T1351, dfa2_T1185, dfa2_T790, dfa2_T1525, dfa2_T1525, dfa2_T1371, dfa2_T1304, dfa2_T1059, dfa2_T700, dfa2_T1379, dfa2_T1575, dfa2_T492, dfa2_T492, dfa2_T34, dfa2_T1368, dfa2_T858, dfa2_T858, dfa2_T858, dfa2_T1608, dfa2_T858, dfa2_T858, dfa2_T858, dfa2_T858, dfa2_T858, dfa2_T708, dfa2_T318, dfa2_T9, dfa2_T76, dfa2_T1285, dfa2_T759, dfa2_T1689, dfa2_T527, dfa2_T936, dfa2_T91, dfa2_T91, dfa2_T91, dfa2_T1420, dfa2_T91, dfa2_T91, dfa2_T91, dfa2_T91, dfa2_T91, dfa2_T99, NULL, dfa2_T632, dfa2_T1584, dfa2_T482, dfa2_T773, dfa2_T335, dfa2_T335, dfa2_T335, dfa2_T1741, dfa2_T335, dfa2_T335, dfa2_T335, dfa2_T335, dfa2_T335, dfa2_T301, dfa2_T280, dfa2_T412, dfa2_T19, dfa2_T19, dfa2_T32, dfa2_T286, dfa2_T480, dfa2_T157, dfa2_T1636, dfa2_T501, dfa2_T1365, dfa2_T532, dfa2_T1015, dfa2_T84, dfa2_T943, dfa2_T787, dfa2_T787, dfa2_T1693, dfa2_T143, dfa2_T868, dfa2_T1384, dfa2_T858, dfa2_T91, dfa2_T335, dfa2_T490 }; static ANTLR3_INT32 dfa2_sst(pbelle_sip_messageParser ctx, pANTLR3_BASE_RECOGNIZER recognizer, pANTLR3_INT_STREAM is, pANTLR3_CYCLIC_DFA dfa, ANTLR3_INT32 s) { ANTLR3_INT32 _s; _s = s; switch (s) { case 0: { ANTLR3_UINT32 LA2_3744; ANTLR3_MARKER index2_3744; LA2_3744 = LA(1); index2_3744 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3744 == SEMI) ) { s = 3351; } else if ( (LA2_3744 == QMARK) ) { s = 1751; } else if ( (LA2_3744 == SP) ) { s = 204; } else if ( (LA2_3744 == SLASH) ) { s = 3031; } else if ( (LA2_3744 == COMMON_CHAR || LA2_3744 == HEX_CHAR) ) { s = 3342; } else if ( (LA2_3744 == DIGIT) ) { s = 3343; } else if ( (LA2_3744 == DOT) ) { s = 3344; } else if ( (LA2_3744 == PERCENT) ) { s = 3345; } else if ( (LA2_3744 == COLON) ) { s = 3346; } else if ( (LA2_3744 == AT) ) { s = 2684; } else if ( (LA2_3744 == AND) ) { s = 3347; } else if ( (LA2_3744 == EQUAL) ) { s = 3348; } else if ( (LA2_3744 == PLUS) ) { s = 3349; } else if ( (LA2_3744 == DOLLARD) ) { s = 3350; } else if ( (LA2_3744 == COMMA) ) { s = 2689; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3744 == CRLF) ) { s = 205; } else if ( (LA2_3744 == DASH || LA2_3744 == EMARK || LA2_3744 == LPAREN || LA2_3744 == RPAREN || ((LA2_3744 >= SQUOTE) && (LA2_3744 <= USCORE))) ) { s = 3352; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3744 == LSBRAQUET || LA2_3744 == RSBRAQUET) ) { s = 405; } SEEK(index2_3744); if ( s>=0 ) { return s; } } break; case 1: { ANTLR3_UINT32 LA2_2441; ANTLR3_MARKER index2_2441; LA2_2441 = LA(1); index2_2441 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2441 == SP) ) { s = 35; } else if ( (LA2_2441 == AND) ) { s = 1553; } else if ( (LA2_2441 == QMARK) ) { s = 2435; } else if ( (LA2_2441 == COMMON_CHAR || LA2_2441 == HEX_CHAR) ) { s = 2439; } else if ( (LA2_2441 == DIGIT) ) { s = 2440; } else if ( (LA2_2441 == DASH || LA2_2441 == DOT || LA2_2441 == EMARK || LA2_2441 == LPAREN || LA2_2441 == RPAREN || ((LA2_2441 >= SQUOTE) && (LA2_2441 <= USCORE))) ) { s = 2441; } else if ( (LA2_2441 == PERCENT) ) { s = 2442; } else if ( (LA2_2441 == SEMI) ) { s = 105; } else if ( (LA2_2441 == COMMA) ) { s = 106; } else if ( (LA2_2441 == COLON || LA2_2441 == DOLLARD || LA2_2441 == PLUS || LA2_2441 == SLASH) ) { s = 2436; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2441 == LSBRAQUET || LA2_2441 == RSBRAQUET) ) { s = 2437; } else if ( (LA2_2441 == AT || LA2_2441 == EQUAL) ) { s = 108; } SEEK(index2_2441); if ( s>=0 ) { return s; } } break; case 2: { ANTLR3_UINT32 LA2_725; ANTLR3_MARKER index2_725; LA2_725 = LA(1); index2_725 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_725 == EQUAL) ) { s = 1105; } else if ( (LA2_725 == QMARK) ) { s = 724; } else if ( (LA2_725 == COMMON_CHAR || LA2_725 == HEX_CHAR) ) { s = 1062; } else if ( (LA2_725 == DIGIT) ) { s = 1063; } else if ( (LA2_725 == DASH || LA2_725 == DOT || LA2_725 == EMARK || LA2_725 == LPAREN || LA2_725 == RPAREN || ((LA2_725 >= SQUOTE) && (LA2_725 <= USCORE))) ) { s = 1064; } else if ( (LA2_725 == PERCENT) ) { s = 1065; } else if ( (LA2_725 == SP) ) { s = 35; } else if ( (LA2_725 == SEMI) ) { s = 105; } else if ( (LA2_725 == COMMA) ) { s = 106; } else if ( (LA2_725 == COLON || LA2_725 == DOLLARD || LA2_725 == PLUS || LA2_725 == SLASH) ) { s = 725; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_725 == LSBRAQUET || LA2_725 == RSBRAQUET) ) { s = 414; } else if ( (((LA2_725 >= AND) && (LA2_725 <= AT))) ) { s = 108; } SEEK(index2_725); if ( s>=0 ) { return s; } } break; case 3: { ANTLR3_UINT32 LA2_1551; ANTLR3_MARKER index2_1551; LA2_1551 = LA(1); index2_1551 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1551 == EQUAL) ) { s = 1988; } else if ( (LA2_1551 == QMARK) ) { s = 1550; } else if ( (LA2_1551 == COMMON_CHAR || LA2_1551 == HEX_CHAR) ) { s = 1989; } else if ( (LA2_1551 == DIGIT) ) { s = 1990; } else if ( (LA2_1551 == DASH || LA2_1551 == DOT || LA2_1551 == EMARK || LA2_1551 == LPAREN || LA2_1551 == RPAREN || ((LA2_1551 >= SQUOTE) && (LA2_1551 <= USCORE))) ) { s = 1991; } else if ( (LA2_1551 == PERCENT) ) { s = 1992; } else if ( (LA2_1551 == SP) ) { s = 35; } else if ( (LA2_1551 == SEMI) ) { s = 105; } else if ( (LA2_1551 == COMMA) ) { s = 106; } else if ( (LA2_1551 == COLON || LA2_1551 == DOLLARD || LA2_1551 == PLUS || LA2_1551 == SLASH) ) { s = 1551; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1551 == LSBRAQUET || LA2_1551 == RSBRAQUET) ) { s = 1552; } else if ( (((LA2_1551 >= AND) && (LA2_1551 <= AT))) ) { s = 108; } SEEK(index2_1551); if ( s>=0 ) { return s; } } break; case 4: { ANTLR3_UINT32 LA2_3865; ANTLR3_MARKER index2_3865; LA2_3865 = LA(1); index2_3865 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3865 == SLASH) ) { s = 3678; } else if ( (LA2_3865 == QMARK) ) { s = 854; } else if ( (LA2_3865 == SP) ) { s = 1585; } else if ( (LA2_3865 == CRLF) ) { s = 1588; } else if ( (LA2_3865 == SEMI) ) { s = 2986; } else if ( (LA2_3865 == COMMON_CHAR || LA2_3865 == HEX_CHAR) ) { s = 3707; } else if ( (LA2_3865 == DIGIT) ) { s = 3708; } else if ( (LA2_3865 == DOT) ) { s = 3709; } else if ( (LA2_3865 == PERCENT) ) { s = 3710; } else if ( (LA2_3865 == PLUS) ) { s = 3711; } else if ( (LA2_3865 == BQUOTE) ) { s = 2092; } else if ( (LA2_3865 == COLON) ) { s = 3712; } else if ( (LA2_3865 == AT) ) { s = 2578; } else if ( (LA2_3865 == AND) ) { s = 3713; } else if ( (LA2_3865 == EQUAL) ) { s = 2580; } else if ( (LA2_3865 == DOLLARD) ) { s = 3714; } else if ( (LA2_3865 == COMMA) ) { s = 2583; } else if ( (LA2_3865 == DASH || LA2_3865 == EMARK || LA2_3865 == LPAREN || LA2_3865 == RPAREN || ((LA2_3865 >= SQUOTE) && (LA2_3865 <= USCORE))) ) { s = 3715; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3865 == LSBRAQUET || LA2_3865 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3865); if ( s>=0 ) { return s; } } break; case 5: { ANTLR3_UINT32 LA2_3666; ANTLR3_MARKER index2_3666; LA2_3666 = LA(1); index2_3666 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3666 == QMARK) ) { s = 854; } else if ( (LA2_3666 == SP) ) { s = 1585; } else if ( (LA2_3666 == SLASH) ) { s = 3153; } else if ( (LA2_3666 == SEMI) ) { s = 2051; } else if ( (LA2_3666 == COMMON_CHAR || LA2_3666 == HEX_CHAR) ) { s = 3200; } else if ( (LA2_3666 == DIGIT) ) { s = 3201; } else if ( (LA2_3666 == DOT) ) { s = 3202; } else if ( (LA2_3666 == PERCENT) ) { s = 3203; } else if ( (LA2_3666 == COLON) ) { s = 3204; } else if ( (LA2_3666 == AT) ) { s = 1576; } else if ( (LA2_3666 == AND) ) { s = 3205; } else if ( (LA2_3666 == EQUAL) ) { s = 1578; } else if ( (LA2_3666 == PLUS) ) { s = 3206; } else if ( (LA2_3666 == DOLLARD) ) { s = 3207; } else if ( (LA2_3666 == COMMA) ) { s = 1581; } else if ( (LA2_3666 == CRLF) ) { s = 1588; } else if ( (LA2_3666 == BQUOTE) ) { s = 2092; } else if ( (LA2_3666 == DASH || LA2_3666 == EMARK || LA2_3666 == LPAREN || LA2_3666 == RPAREN || ((LA2_3666 >= SQUOTE) && (LA2_3666 <= USCORE))) ) { s = 3208; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3666 == LSBRAQUET || LA2_3666 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3666); if ( s>=0 ) { return s; } } break; case 6: { ANTLR3_UINT32 LA2_3723; ANTLR3_MARKER index2_3723; LA2_3723 = LA(1); index2_3723 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3723 == QMARK) ) { s = 854; } else if ( (LA2_3723 == SP) ) { s = 204; } else if ( (LA2_3723 == SLASH) ) { s = 3226; } else if ( (LA2_3723 == SEMI) ) { s = 3251; } else if ( (LA2_3723 == COMMON_CHAR || LA2_3723 == HEX_CHAR) ) { s = 3718; } else if ( (LA2_3723 == DIGIT) ) { s = 3719; } else if ( (LA2_3723 == DOT) ) { s = 3720; } else if ( (LA2_3723 == PERCENT) ) { s = 3721; } else if ( (LA2_3723 == COLON) ) { s = 3712; } else if ( (LA2_3723 == AT) ) { s = 2578; } else if ( (LA2_3723 == AND) ) { s = 3713; } else if ( (LA2_3723 == EQUAL) ) { s = 2580; } else if ( (LA2_3723 == PLUS) ) { s = 3722; } else if ( (LA2_3723 == DOLLARD) ) { s = 3714; } else if ( (LA2_3723 == COMMA) ) { s = 2583; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3723 == CRLF) ) { s = 205; } else if ( (LA2_3723 == DASH || LA2_3723 == EMARK || LA2_3723 == LPAREN || LA2_3723 == RPAREN || ((LA2_3723 >= SQUOTE) && (LA2_3723 <= USCORE))) ) { s = 3723; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3723 == LSBRAQUET || LA2_3723 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3723); if ( s>=0 ) { return s; } } break; case 7: { ANTLR3_UINT32 LA2_883; ANTLR3_MARKER index2_883; LA2_883 = LA(1); index2_883 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_883 == COMMON_CHAR || LA2_883 == HEX_CHAR) ) { s = 882; } else if ( (LA2_883 == DIGIT) ) { s = 883; } else if ( (LA2_883 == DASH) ) { s = 884; } else if ( (LA2_883 == DOT) ) { s = 1305; } else if ( (LA2_883 == COLON) ) { s = 1306; } else if ( (LA2_883 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_883 == CRLF) ) { s = 205; } else if ( (LA2_883 == SEMI) ) { s = 1307; } else if ( (LA2_883 == QMARK) ) { s = 1308; } else if ( (LA2_883 == COMMA) ) { s = 506; } else if ( (((LA2_883 >= AND) && (LA2_883 <= AT)) || LA2_883 == DOLLARD || LA2_883 == EQUAL || LA2_883 == PLUS || LA2_883 == SLASH) ) { s = 508; } else if ( (LA2_883 == EMARK || LA2_883 == LPAREN || LA2_883 == RPAREN || ((LA2_883 >= SQUOTE) && (LA2_883 <= USCORE))) ) { s = 511; } else if ( (LA2_883 == PERCENT) ) { s = 512; } SEEK(index2_883); if ( s>=0 ) { return s; } } break; case 8: { ANTLR3_UINT32 LA2_3817; ANTLR3_MARKER index2_3817; LA2_3817 = LA(1); index2_3817 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3817 == SEMI) ) { s = 3351; } else if ( (LA2_3817 == QMARK) ) { s = 1751; } else if ( (LA2_3817 == SP) ) { s = 204; } else if ( (LA2_3817 == SLASH) ) { s = 3323; } else if ( (LA2_3817 == COMMON_CHAR || LA2_3817 == HEX_CHAR) ) { s = 3568; } else if ( (LA2_3817 == DIGIT) ) { s = 3569; } else if ( (LA2_3817 == DOT) ) { s = 3570; } else if ( (LA2_3817 == PERCENT) ) { s = 3571; } else if ( (LA2_3817 == COLON) ) { s = 3572; } else if ( (LA2_3817 == AT) ) { s = 2684; } else if ( (LA2_3817 == AND) ) { s = 3573; } else if ( (LA2_3817 == EQUAL) ) { s = 2686; } else if ( (LA2_3817 == PLUS) ) { s = 3574; } else if ( (LA2_3817 == DOLLARD) ) { s = 3575; } else if ( (LA2_3817 == COMMA) ) { s = 2689; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3817 == CRLF) ) { s = 205; } else if ( (LA2_3817 == DASH || LA2_3817 == EMARK || LA2_3817 == LPAREN || LA2_3817 == RPAREN || ((LA2_3817 >= SQUOTE) && (LA2_3817 <= USCORE))) ) { s = 3576; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3817 == LSBRAQUET || LA2_3817 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3817); if ( s>=0 ) { return s; } } break; case 9: { ANTLR3_UINT32 LA2_3034; ANTLR3_MARKER index2_3034; LA2_3034 = LA(1); index2_3034 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3034 == SP) ) { s = 2456; } else if ( (LA2_3034 == CRLF) ) { s = 2458; } else if ( (LA2_3034 == EQUAL) ) { s = 2663; } else if ( (LA2_3034 == SLASH) ) { s = 2664; } else if ( (LA2_3034 == QMARK) ) { s = 1751; } else if ( (LA2_3034 == SEMI) ) { s = 1749; } else if ( (LA2_3034 == COMMON_CHAR || LA2_3034 == HEX_CHAR) ) { s = 2218; } else if ( (LA2_3034 == DIGIT) ) { s = 2219; } else if ( (LA2_3034 == DOT) ) { s = 2220; } else if ( (LA2_3034 == PERCENT) ) { s = 2221; } else if ( (LA2_3034 == PLUS) ) { s = 2222; } else if ( (LA2_3034 == BQUOTE) ) { s = 1203; } else if ( (LA2_3034 == DASH || LA2_3034 == EMARK || LA2_3034 == LPAREN || LA2_3034 == RPAREN || ((LA2_3034 >= SQUOTE) && (LA2_3034 <= USCORE))) ) { s = 2223; } else if ( (LA2_3034 == AND || LA2_3034 == COLON || LA2_3034 == DOLLARD) ) { s = 1790; } else if ( (LA2_3034 == COMMA) ) { s = 506; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3034 == LSBRAQUET || LA2_3034 == RSBRAQUET) ) { s = 405; } else if ( (LA2_3034 == AT) ) { s = 508; } SEEK(index2_3034); if ( s>=0 ) { return s; } } break; case 10: { ANTLR3_UINT32 LA2_2256; ANTLR3_MARKER index2_2256; LA2_2256 = LA(1); index2_2256 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2256 == QMARK) ) { s = 854; } else if ( (LA2_2256 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2256 == CRLF) ) { s = 205; } else if ( (LA2_2256 == SEMI) ) { s = 1237; } else if ( (LA2_2256 == DOT) ) { s = 2254; } else if ( (LA2_2256 == COMMON_CHAR || LA2_2256 == HEX_CHAR) ) { s = 2255; } else if ( (LA2_2256 == DIGIT) ) { s = 2256; } else if ( (LA2_2256 == SLASH) ) { s = 2245; } else if ( (LA2_2256 == DASH || LA2_2256 == EMARK || LA2_2256 == LPAREN || LA2_2256 == RPAREN || ((LA2_2256 >= SQUOTE) && (LA2_2256 <= USCORE))) ) { s = 2257; } else if ( (LA2_2256 == PERCENT) ) { s = 2258; } else if ( (LA2_2256 == COLON) ) { s = 2259; } else if ( (LA2_2256 == AND) ) { s = 2260; } else if ( (LA2_2256 == AT) ) { s = 464; } else if ( (LA2_2256 == PLUS) ) { s = 2261; } else if ( (LA2_2256 == EQUAL) ) { s = 466; } else if ( (LA2_2256 == DOLLARD) ) { s = 2262; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2256 == LSBRAQUET || LA2_2256 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_2256 == COMMA) ) { s = 469; } SEEK(index2_2256); if ( s>=0 ) { return s; } } break; case 11: { ANTLR3_UINT32 LA2_1760; ANTLR3_MARKER index2_1760; LA2_1760 = LA(1); index2_1760 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1760 == QMARK) ) { s = 854; } else if ( (LA2_1760 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1760 == CRLF) ) { s = 205; } else if ( (LA2_1760 == SEMI) ) { s = 1237; } else if ( (LA2_1760 == DOT) ) { s = 1758; } else if ( (LA2_1760 == COMMON_CHAR || LA2_1760 == HEX_CHAR) ) { s = 1759; } else if ( (LA2_1760 == DIGIT) ) { s = 1760; } else if ( (LA2_1760 == SLASH) ) { s = 1271; } else if ( (LA2_1760 == DASH || LA2_1760 == EMARK || LA2_1760 == LPAREN || LA2_1760 == RPAREN || ((LA2_1760 >= SQUOTE) && (LA2_1760 <= USCORE))) ) { s = 1762; } else if ( (LA2_1760 == PERCENT) ) { s = 1763; } else if ( (LA2_1760 == EQUAL) ) { s = 1764; } else if ( (LA2_1760 == COLON) ) { s = 1761; } else if ( (LA2_1760 == AND) ) { s = 1765; } else if ( (LA2_1760 == AT) ) { s = 464; } else if ( (LA2_1760 == PLUS) ) { s = 1766; } else if ( (LA2_1760 == DOLLARD) ) { s = 1767; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1760 == LSBRAQUET || LA2_1760 == RSBRAQUET) ) { s = 405; } else if ( (LA2_1760 == COMMA) ) { s = 469; } SEEK(index2_1760); if ( s>=0 ) { return s; } } break; case 12: { ANTLR3_UINT32 LA2_3016; ANTLR3_MARKER index2_3016; LA2_3016 = LA(1); index2_3016 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3016 == SLASH) ) { s = 3319; } else if ( (LA2_3016 == QMARK) ) { s = 1751; } else if ( (LA2_3016 == SP) ) { s = 1585; } else if ( (LA2_3016 == CRLF) ) { s = 1588; } else if ( (LA2_3016 == SEMI) ) { s = 1749; } else if ( (LA2_3016 == COMMON_CHAR || LA2_3016 == HEX_CHAR) ) { s = 3015; } else if ( (LA2_3016 == DIGIT) ) { s = 3016; } else if ( (LA2_3016 == DOT) ) { s = 3017; } else if ( (LA2_3016 == PERCENT) ) { s = 3018; } else if ( (LA2_3016 == PLUS) ) { s = 3019; } else if ( (LA2_3016 == BQUOTE) ) { s = 2092; } else if ( (LA2_3016 == DASH || LA2_3016 == EMARK || LA2_3016 == LPAREN || LA2_3016 == RPAREN || ((LA2_3016 >= SQUOTE) && (LA2_3016 <= USCORE))) ) { s = 3020; } else if ( (LA2_3016 == AND || LA2_3016 == COLON || LA2_3016 == DOLLARD) ) { s = 2717; } else if ( (LA2_3016 == COMMA) ) { s = 506; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3016 == LSBRAQUET || LA2_3016 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_3016 == AT || LA2_3016 == EQUAL) ) { s = 508; } SEEK(index2_3016); if ( s>=0 ) { return s; } } break; case 13: { ANTLR3_UINT32 LA2_3124; ANTLR3_MARKER index2_3124; LA2_3124 = LA(1); index2_3124 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3124 == SEMI) ) { s = 2826; } else if ( (LA2_3124 == QMARK) ) { s = 854; } else if ( (LA2_3124 == SP) ) { s = 204; } else if ( (LA2_3124 == SLASH) ) { s = 3123; } else if ( (LA2_3124 == COMMON_CHAR || LA2_3124 == HEX_CHAR) ) { s = 3124; } else if ( (LA2_3124 == DIGIT) ) { s = 3125; } else if ( (LA2_3124 == DOT) ) { s = 3126; } else if ( (LA2_3124 == PERCENT) ) { s = 3127; } else if ( (LA2_3124 == COLON) ) { s = 3128; } else if ( (LA2_3124 == AT) ) { s = 2019; } else if ( (LA2_3124 == AND) ) { s = 3129; } else if ( (LA2_3124 == EQUAL) ) { s = 2021; } else if ( (LA2_3124 == PLUS) ) { s = 3130; } else if ( (LA2_3124 == DOLLARD) ) { s = 3131; } else if ( (LA2_3124 == COMMA) ) { s = 2024; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3124 == CRLF) ) { s = 205; } else if ( (LA2_3124 == DASH || LA2_3124 == EMARK || LA2_3124 == LPAREN || LA2_3124 == RPAREN || ((LA2_3124 >= SQUOTE) && (LA2_3124 <= USCORE))) ) { s = 3132; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3124 == LSBRAQUET || LA2_3124 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3124); if ( s>=0 ) { return s; } } break; case 14: { ANTLR3_UINT32 LA2_3151; ANTLR3_MARKER index2_3151; LA2_3151 = LA(1); index2_3151 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3151 == COMMON_CHAR || LA2_3151 == HEX_CHAR) ) { s = 3419; } else if ( (LA2_3151 == DIGIT) ) { s = 3420; } else if ( (LA2_3151 == DOT) ) { s = 3421; } else if ( (LA2_3151 == PERCENT) ) { s = 3422; } else if ( (LA2_3151 == COLON) ) { s = 3423; } else if ( (LA2_3151 == AT) ) { s = 2879; } else if ( (LA2_3151 == AND) ) { s = 3424; } else if ( (LA2_3151 == EQUAL) ) { s = 2881; } else if ( (LA2_3151 == PLUS) ) { s = 3425; } else if ( (LA2_3151 == DOLLARD) ) { s = 3426; } else if ( (LA2_3151 == COMMA) ) { s = 2884; } else if ( (LA2_3151 == QMARK) ) { s = 854; } else if ( (LA2_3151 == SP) ) { s = 402; } else if ( (LA2_3151 == SLASH) ) { s = 2827; } else if ( (LA2_3151 == SEMI) ) { s = 3151; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3151 == CRLF) ) { s = 403; } else if ( (LA2_3151 == DASH || LA2_3151 == EMARK || LA2_3151 == LPAREN || LA2_3151 == RPAREN || ((LA2_3151 >= SQUOTE) && (LA2_3151 <= USCORE))) ) { s = 3427; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3151 == LSBRAQUET || LA2_3151 == RSBRAQUET) ) { s = 405; } SEEK(index2_3151); if ( s>=0 ) { return s; } } break; case 15: { ANTLR3_UINT32 LA2_3026; ANTLR3_MARKER index2_3026; LA2_3026 = LA(1); index2_3026 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3026 == SEMI) ) { s = 3030; } else if ( (LA2_3026 == SLASH) ) { s = 3031; } else if ( (LA2_3026 == QMARK) ) { s = 1751; } else if ( (LA2_3026 == SP) ) { s = 204; } else if ( (LA2_3026 == COMMON_CHAR || LA2_3026 == HEX_CHAR) ) { s = 3021; } else if ( (LA2_3026 == DIGIT) ) { s = 3022; } else if ( (LA2_3026 == DOT) ) { s = 3023; } else if ( (LA2_3026 == PERCENT) ) { s = 3024; } else if ( (LA2_3026 == COLON) ) { s = 3025; } else if ( (LA2_3026 == AT) ) { s = 2229; } else if ( (LA2_3026 == AND) ) { s = 3026; } else if ( (LA2_3026 == EQUAL) ) { s = 3027; } else if ( (LA2_3026 == PLUS) ) { s = 3028; } else if ( (LA2_3026 == DOLLARD) ) { s = 3029; } else if ( (LA2_3026 == COMMA) ) { s = 2234; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3026 == CRLF) ) { s = 205; } else if ( (LA2_3026 == DASH || LA2_3026 == EMARK || LA2_3026 == LPAREN || LA2_3026 == RPAREN || ((LA2_3026 >= SQUOTE) && (LA2_3026 <= USCORE))) ) { s = 3032; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3026 == LSBRAQUET || LA2_3026 == RSBRAQUET) ) { s = 405; } SEEK(index2_3026); if ( s>=0 ) { return s; } } break; case 16: { ANTLR3_UINT32 LA2_8; ANTLR3_MARKER index2_8; LA2_8 = LA(1); index2_8 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_8 == COLON) ) { s = 15; } else if ( (LA2_8 == COMMON_CHAR || LA2_8 == HEX_CHAR) ) { s = 16; } else if ( (LA2_8 == DIGIT) ) { s = 17; } else if ( (LA2_8 == DASH) ) { s = 18; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_8 == PERCENT) ) { s = 11; } else if ( (LA2_8 == PLUS) ) { s = 19; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_8 == BQUOTE) ) { s = 13; } else if ( (LA2_8 == DOT) ) { s = 20; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_8 == EMARK || LA2_8 == LPAREN || LA2_8 == RPAREN || ((LA2_8 >= SQUOTE) && (LA2_8 <= USCORE))) ) { s = 10; } SEEK(index2_8); if ( s>=0 ) { return s; } } break; case 17: { ANTLR3_UINT32 LA2_3025; ANTLR3_MARKER index2_3025; LA2_3025 = LA(1); index2_3025 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3025 == SEMI) ) { s = 3030; } else if ( (LA2_3025 == SLASH) ) { s = 3031; } else if ( (LA2_3025 == QMARK) ) { s = 1751; } else if ( (LA2_3025 == SP) ) { s = 204; } else if ( (LA2_3025 == COMMON_CHAR || LA2_3025 == HEX_CHAR) ) { s = 3021; } else if ( (LA2_3025 == DIGIT) ) { s = 3022; } else if ( (LA2_3025 == DOT) ) { s = 3023; } else if ( (LA2_3025 == PERCENT) ) { s = 3024; } else if ( (LA2_3025 == COLON) ) { s = 3025; } else if ( (LA2_3025 == AT) ) { s = 2229; } else if ( (LA2_3025 == AND) ) { s = 3026; } else if ( (LA2_3025 == EQUAL) ) { s = 3027; } else if ( (LA2_3025 == PLUS) ) { s = 3028; } else if ( (LA2_3025 == DOLLARD) ) { s = 3029; } else if ( (LA2_3025 == COMMA) ) { s = 2234; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3025 == CRLF) ) { s = 205; } else if ( (LA2_3025 == DASH || LA2_3025 == EMARK || LA2_3025 == LPAREN || LA2_3025 == RPAREN || ((LA2_3025 >= SQUOTE) && (LA2_3025 <= USCORE))) ) { s = 3032; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3025 == LSBRAQUET || LA2_3025 == RSBRAQUET) ) { s = 405; } SEEK(index2_3025); if ( s>=0 ) { return s; } } break; case 18: { ANTLR3_UINT32 LA2_3029; ANTLR3_MARKER index2_3029; LA2_3029 = LA(1); index2_3029 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3029 == SEMI) ) { s = 3030; } else if ( (LA2_3029 == SLASH) ) { s = 3031; } else if ( (LA2_3029 == QMARK) ) { s = 1751; } else if ( (LA2_3029 == SP) ) { s = 204; } else if ( (LA2_3029 == COMMON_CHAR || LA2_3029 == HEX_CHAR) ) { s = 3021; } else if ( (LA2_3029 == DIGIT) ) { s = 3022; } else if ( (LA2_3029 == DOT) ) { s = 3023; } else if ( (LA2_3029 == PERCENT) ) { s = 3024; } else if ( (LA2_3029 == COLON) ) { s = 3025; } else if ( (LA2_3029 == AT) ) { s = 2229; } else if ( (LA2_3029 == AND) ) { s = 3026; } else if ( (LA2_3029 == EQUAL) ) { s = 3027; } else if ( (LA2_3029 == PLUS) ) { s = 3028; } else if ( (LA2_3029 == DOLLARD) ) { s = 3029; } else if ( (LA2_3029 == COMMA) ) { s = 2234; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3029 == CRLF) ) { s = 205; } else if ( (LA2_3029 == DASH || LA2_3029 == EMARK || LA2_3029 == LPAREN || LA2_3029 == RPAREN || ((LA2_3029 >= SQUOTE) && (LA2_3029 <= USCORE))) ) { s = 3032; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3029 == LSBRAQUET || LA2_3029 == RSBRAQUET) ) { s = 405; } SEEK(index2_3029); if ( s>=0 ) { return s; } } break; case 19: { ANTLR3_UINT32 LA2_2072; ANTLR3_MARKER index2_2072; LA2_2072 = LA(1); index2_2072 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2072 == SP) ) { s = 2456; } else if ( (LA2_2072 == CRLF) ) { s = 2458; } else if ( (LA2_2072 == EQUAL) ) { s = 2552; } else if ( (LA2_2072 == SLASH) ) { s = 2553; } else if ( (LA2_2072 == QMARK) ) { s = 854; } else if ( (LA2_2072 == SEMI) ) { s = 1630; } else if ( (LA2_2072 == COMMON_CHAR || LA2_2072 == HEX_CHAR) ) { s = 2068; } else if ( (LA2_2072 == DIGIT) ) { s = 2069; } else if ( (LA2_2072 == DOT) ) { s = 2070; } else if ( (LA2_2072 == PERCENT) ) { s = 2071; } else if ( (LA2_2072 == PLUS) ) { s = 2072; } else if ( (LA2_2072 == BQUOTE) ) { s = 1203; } else if ( (LA2_2072 == DASH || LA2_2072 == EMARK || LA2_2072 == LPAREN || LA2_2072 == RPAREN || ((LA2_2072 >= SQUOTE) && (LA2_2072 <= USCORE))) ) { s = 2073; } else if ( (LA2_2072 == COLON) ) { s = 1727; } else if ( (LA2_2072 == AND) ) { s = 1730; } else if ( (LA2_2072 == AT) ) { s = 810; } else if ( (LA2_2072 == DOLLARD) ) { s = 1732; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2072 == LSBRAQUET || LA2_2072 == RSBRAQUET) ) { s = 405; } else if ( (LA2_2072 == COMMA) ) { s = 815; } SEEK(index2_2072); if ( s>=0 ) { return s; } } break; case 20: { ANTLR3_UINT32 LA2_3028; ANTLR3_MARKER index2_3028; LA2_3028 = LA(1); index2_3028 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3028 == SEMI) ) { s = 3030; } else if ( (LA2_3028 == SLASH) ) { s = 3031; } else if ( (LA2_3028 == QMARK) ) { s = 1751; } else if ( (LA2_3028 == SP) ) { s = 204; } else if ( (LA2_3028 == COMMON_CHAR || LA2_3028 == HEX_CHAR) ) { s = 3021; } else if ( (LA2_3028 == DIGIT) ) { s = 3022; } else if ( (LA2_3028 == DOT) ) { s = 3023; } else if ( (LA2_3028 == PERCENT) ) { s = 3024; } else if ( (LA2_3028 == COLON) ) { s = 3025; } else if ( (LA2_3028 == AT) ) { s = 2229; } else if ( (LA2_3028 == AND) ) { s = 3026; } else if ( (LA2_3028 == EQUAL) ) { s = 3027; } else if ( (LA2_3028 == PLUS) ) { s = 3028; } else if ( (LA2_3028 == DOLLARD) ) { s = 3029; } else if ( (LA2_3028 == COMMA) ) { s = 2234; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3028 == CRLF) ) { s = 205; } else if ( (LA2_3028 == DASH || LA2_3028 == EMARK || LA2_3028 == LPAREN || LA2_3028 == RPAREN || ((LA2_3028 >= SQUOTE) && (LA2_3028 <= USCORE))) ) { s = 3032; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3028 == LSBRAQUET || LA2_3028 == RSBRAQUET) ) { s = 405; } SEEK(index2_3028); if ( s>=0 ) { return s; } } break; case 21: { ANTLR3_UINT32 LA2_1534; ANTLR3_MARKER index2_1534; LA2_1534 = LA(1); index2_1534 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1534 == QMARK) ) { s = 694; } else if ( (LA2_1534 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1534 == CRLF) ) { s = 205; } else if ( (LA2_1534 == SEMI) ) { s = 693; } else if ( (LA2_1534 == DOT) ) { s = 1534; } else if ( (LA2_1534 == COMMON_CHAR || LA2_1534 == HEX_CHAR) ) { s = 1535; } else if ( (LA2_1534 == DIGIT) ) { s = 1536; } else if ( (LA2_1534 == AND || LA2_1534 == COLON || LA2_1534 == DOLLARD || LA2_1534 == PLUS || LA2_1534 == SLASH) ) { s = 1079; } else if ( (LA2_1534 == DASH || LA2_1534 == EMARK || LA2_1534 == LPAREN || LA2_1534 == RPAREN || ((LA2_1534 >= SQUOTE) && (LA2_1534 <= USCORE))) ) { s = 1537; } else if ( (LA2_1534 == PERCENT) ) { s = 1538; } else if ( (LA2_1534 == COMMA) ) { s = 106; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1534 == LSBRAQUET || LA2_1534 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_1534 == AT || LA2_1534 == EQUAL) ) { s = 108; } SEEK(index2_1534); if ( s>=0 ) { return s; } } break; case 22: { ANTLR3_UINT32 LA2_3781; ANTLR3_MARKER index2_3781; LA2_3781 = LA(1); index2_3781 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3781 == SLASH) ) { s = 3435; } else if ( (LA2_3781 == QMARK) ) { s = 854; } else if ( (LA2_3781 == SP) ) { s = 204; } else if ( (LA2_3781 == SEMI) ) { s = 3170; } else if ( (LA2_3781 == COMMON_CHAR || LA2_3781 == HEX_CHAR) ) { s = 3773; } else if ( (LA2_3781 == DIGIT) ) { s = 3774; } else if ( (LA2_3781 == DOT) ) { s = 3775; } else if ( (LA2_3781 == PERCENT) ) { s = 3776; } else if ( (LA2_3781 == COLON) ) { s = 3777; } else if ( (LA2_3781 == AT) ) { s = 2184; } else if ( (LA2_3781 == AND) ) { s = 3778; } else if ( (LA2_3781 == EQUAL) ) { s = 2186; } else if ( (LA2_3781 == PLUS) ) { s = 3779; } else if ( (LA2_3781 == DOLLARD) ) { s = 3780; } else if ( (LA2_3781 == COMMA) ) { s = 2189; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3781 == CRLF) ) { s = 205; } else if ( (LA2_3781 == DASH || LA2_3781 == EMARK || LA2_3781 == LPAREN || LA2_3781 == RPAREN || ((LA2_3781 >= SQUOTE) && (LA2_3781 <= USCORE))) ) { s = 3781; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3781 == LSBRAQUET || LA2_3781 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3781); if ( s>=0 ) { return s; } } break; case 23: { ANTLR3_UINT32 LA2_3838; ANTLR3_MARKER index2_3838; LA2_3838 = LA(1); index2_3838 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3838 == QMARK) ) { s = 854; } else if ( (LA2_3838 == SP) ) { s = 204; } else if ( (LA2_3838 == SLASH) ) { s = 3435; } else if ( (LA2_3838 == SEMI) ) { s = 3463; } else if ( (LA2_3838 == COMMON_CHAR || LA2_3838 == HEX_CHAR) ) { s = 3837; } else if ( (LA2_3838 == DIGIT) ) { s = 3838; } else if ( (LA2_3838 == DOT) ) { s = 3839; } else if ( (LA2_3838 == PERCENT) ) { s = 3840; } else if ( (LA2_3838 == COLON) ) { s = 3841; } else if ( (LA2_3838 == AT) ) { s = 2638; } else if ( (LA2_3838 == AND) ) { s = 3842; } else if ( (LA2_3838 == EQUAL) ) { s = 2640; } else if ( (LA2_3838 == PLUS) ) { s = 3843; } else if ( (LA2_3838 == DOLLARD) ) { s = 3844; } else if ( (LA2_3838 == COMMA) ) { s = 2643; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3838 == CRLF) ) { s = 205; } else if ( (LA2_3838 == DASH || LA2_3838 == EMARK || LA2_3838 == LPAREN || LA2_3838 == RPAREN || ((LA2_3838 >= SQUOTE) && (LA2_3838 <= USCORE))) ) { s = 3845; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3838 == LSBRAQUET || LA2_3838 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3838); if ( s>=0 ) { return s; } } break; case 24: { ANTLR3_UINT32 LA2_3647; ANTLR3_MARKER index2_3647; LA2_3647 = LA(1); index2_3647 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3647 == QMARK) ) { s = 854; } else if ( (LA2_3647 == SP) ) { s = 204; } else if ( (LA2_3647 == SLASH) ) { s = 3171; } else if ( (LA2_3647 == SEMI) ) { s = 3463; } else if ( (LA2_3647 == COMMON_CHAR || LA2_3647 == HEX_CHAR) ) { s = 3646; } else if ( (LA2_3647 == DIGIT) ) { s = 3647; } else if ( (LA2_3647 == DOT) ) { s = 3648; } else if ( (LA2_3647 == PERCENT) ) { s = 3649; } else if ( (LA2_3647 == COLON) ) { s = 3650; } else if ( (LA2_3647 == AT) ) { s = 2638; } else if ( (LA2_3647 == AND) ) { s = 3651; } else if ( (LA2_3647 == EQUAL) ) { s = 3784; } else if ( (LA2_3647 == PLUS) ) { s = 3652; } else if ( (LA2_3647 == DOLLARD) ) { s = 3653; } else if ( (LA2_3647 == COMMA) ) { s = 2643; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3647 == CRLF) ) { s = 205; } else if ( (LA2_3647 == DASH || LA2_3647 == EMARK || LA2_3647 == LPAREN || LA2_3647 == RPAREN || ((LA2_3647 >= SQUOTE) && (LA2_3647 <= USCORE))) ) { s = 3654; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3647 == LSBRAQUET || LA2_3647 == RSBRAQUET) ) { s = 405; } SEEK(index2_3647); if ( s>=0 ) { return s; } } break; case 25: { ANTLR3_UINT32 LA2_2819; ANTLR3_MARKER index2_2819; LA2_2819 = LA(1); index2_2819 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2819 == SEMI) ) { s = 2826; } else if ( (LA2_2819 == QMARK) ) { s = 854; } else if ( (LA2_2819 == SP) ) { s = 204; } else if ( (LA2_2819 == SLASH) ) { s = 2827; } else if ( (LA2_2819 == COMMON_CHAR || LA2_2819 == HEX_CHAR) ) { s = 2817; } else if ( (LA2_2819 == DIGIT) ) { s = 2818; } else if ( (LA2_2819 == DOT) ) { s = 2819; } else if ( (LA2_2819 == PERCENT) ) { s = 2820; } else if ( (LA2_2819 == COLON) ) { s = 2821; } else if ( (LA2_2819 == AT) ) { s = 2019; } else if ( (LA2_2819 == AND) ) { s = 2822; } else if ( (LA2_2819 == EQUAL) ) { s = 2823; } else if ( (LA2_2819 == PLUS) ) { s = 2824; } else if ( (LA2_2819 == DOLLARD) ) { s = 2825; } else if ( (LA2_2819 == COMMA) ) { s = 2024; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2819 == CRLF) ) { s = 205; } else if ( (LA2_2819 == DASH || LA2_2819 == EMARK || LA2_2819 == LPAREN || LA2_2819 == RPAREN || ((LA2_2819 >= SQUOTE) && (LA2_2819 <= USCORE))) ) { s = 2828; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2819 == LSBRAQUET || LA2_2819 == RSBRAQUET) ) { s = 405; } SEEK(index2_2819); if ( s>=0 ) { return s; } } break; case 26: { ANTLR3_UINT32 LA2_1100; ANTLR3_MARKER index2_1100; LA2_1100 = LA(1); index2_1100 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1100 == AT) ) { s = 89; } else if ( (LA2_1100 == COMMON_CHAR || LA2_1100 == HEX_CHAR) ) { s = 1095; } else if ( (LA2_1100 == DIGIT) ) { s = 1096; } else if ( (LA2_1100 == DASH || LA2_1100 == DOT || LA2_1100 == EMARK || LA2_1100 == LPAREN || LA2_1100 == RPAREN || ((LA2_1100 >= SQUOTE) && (LA2_1100 <= USCORE))) ) { s = 1097; } else if ( (LA2_1100 == PERCENT) ) { s = 1098; } else if ( (LA2_1100 == AND) ) { s = 1099; } else if ( (LA2_1100 == EQUAL) ) { s = 194; } else if ( (LA2_1100 == PLUS) ) { s = 1100; } else if ( (LA2_1100 == DOLLARD) ) { s = 1101; } else if ( (LA2_1100 == COMMA) ) { s = 197; } else if ( (LA2_1100 == SP) ) { s = 35; } else if ( (LA2_1100 == QMARK) ) { s = 1102; } else if ( (LA2_1100 == SEMI) ) { s = 105; } else if ( (LA2_1100 == COLON || LA2_1100 == SLASH) ) { s = 1103; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1100 == LSBRAQUET || LA2_1100 == RSBRAQUET) ) { s = 1104; } SEEK(index2_1100); if ( s>=0 ) { return s; } } break; case 27: { ANTLR3_UINT32 LA2_1101; ANTLR3_MARKER index2_1101; LA2_1101 = LA(1); index2_1101 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1101 == AT) ) { s = 89; } else if ( (LA2_1101 == COMMON_CHAR || LA2_1101 == HEX_CHAR) ) { s = 1095; } else if ( (LA2_1101 == DIGIT) ) { s = 1096; } else if ( (LA2_1101 == DASH || LA2_1101 == DOT || LA2_1101 == EMARK || LA2_1101 == LPAREN || LA2_1101 == RPAREN || ((LA2_1101 >= SQUOTE) && (LA2_1101 <= USCORE))) ) { s = 1097; } else if ( (LA2_1101 == PERCENT) ) { s = 1098; } else if ( (LA2_1101 == AND) ) { s = 1099; } else if ( (LA2_1101 == EQUAL) ) { s = 194; } else if ( (LA2_1101 == PLUS) ) { s = 1100; } else if ( (LA2_1101 == DOLLARD) ) { s = 1101; } else if ( (LA2_1101 == COMMA) ) { s = 197; } else if ( (LA2_1101 == SP) ) { s = 35; } else if ( (LA2_1101 == QMARK) ) { s = 1102; } else if ( (LA2_1101 == SEMI) ) { s = 105; } else if ( (LA2_1101 == COLON || LA2_1101 == SLASH) ) { s = 1103; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1101 == LSBRAQUET || LA2_1101 == RSBRAQUET) ) { s = 1104; } SEEK(index2_1101); if ( s>=0 ) { return s; } } break; case 28: { ANTLR3_UINT32 LA2_2465; ANTLR3_MARKER index2_2465; LA2_2465 = LA(1); index2_2465 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2465 == SLASH) ) { s = 2830; } else if ( (LA2_2465 == QMARK) ) { s = 242; } else if ( (LA2_2465 == SP) ) { s = 35; } else if ( (LA2_2465 == SEMI) ) { s = 732; } else if ( (LA2_2465 == COMMON_CHAR || LA2_2465 == HEX_CHAR) ) { s = 2844; } else if ( (LA2_2465 == DIGIT) ) { s = 2845; } else if ( (LA2_2465 == DOT) ) { s = 2846; } else if ( (LA2_2465 == PERCENT) ) { s = 2847; } else if ( (LA2_2465 == COLON) ) { s = 2835; } else if ( (LA2_2465 == AT) ) { s = 1123; } else if ( (LA2_2465 == AND) ) { s = 2836; } else if ( (LA2_2465 == EQUAL) ) { s = 1125; } else if ( (LA2_2465 == PLUS) ) { s = 2848; } else if ( (LA2_2465 == DOLLARD) ) { s = 2838; } else if ( (LA2_2465 == COMMA) ) { s = 1128; } else if ( (LA2_2465 == DASH || LA2_2465 == EMARK || LA2_2465 == LPAREN || LA2_2465 == RPAREN || ((LA2_2465 >= SQUOTE) && (LA2_2465 <= USCORE))) ) { s = 2849; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2465 == LSBRAQUET || LA2_2465 == RSBRAQUET) ) { s = 1080; } SEEK(index2_2465); if ( s>=0 ) { return s; } } break; case 29: { ANTLR3_UINT32 LA2_1762; ANTLR3_MARKER index2_1762; LA2_1762 = LA(1); index2_1762 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1762 == QMARK) ) { s = 854; } else if ( (LA2_1762 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1762 == CRLF) ) { s = 205; } else if ( (LA2_1762 == SEMI) ) { s = 1237; } else if ( (LA2_1762 == DOT) ) { s = 1758; } else if ( (LA2_1762 == COMMON_CHAR || LA2_1762 == HEX_CHAR) ) { s = 1759; } else if ( (LA2_1762 == DIGIT) ) { s = 1760; } else if ( (LA2_1762 == SLASH) ) { s = 1271; } else if ( (LA2_1762 == DASH || LA2_1762 == EMARK || LA2_1762 == LPAREN || LA2_1762 == RPAREN || ((LA2_1762 >= SQUOTE) && (LA2_1762 <= USCORE))) ) { s = 1762; } else if ( (LA2_1762 == PERCENT) ) { s = 1763; } else if ( (LA2_1762 == EQUAL) ) { s = 1764; } else if ( (LA2_1762 == COLON) ) { s = 1761; } else if ( (LA2_1762 == AND) ) { s = 1765; } else if ( (LA2_1762 == AT) ) { s = 464; } else if ( (LA2_1762 == PLUS) ) { s = 1766; } else if ( (LA2_1762 == DOLLARD) ) { s = 1767; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1762 == LSBRAQUET || LA2_1762 == RSBRAQUET) ) { s = 405; } else if ( (LA2_1762 == COMMA) ) { s = 469; } SEEK(index2_1762); if ( s>=0 ) { return s; } } break; case 30: { ANTLR3_UINT32 LA2_89; ANTLR3_MARKER index2_89; LA2_89 = LA(1); index2_89 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_89 == COMMON_CHAR || LA2_89 == HEX_CHAR) ) { s = 198; } else if ( (LA2_89 == DIGIT) ) { s = 199; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_89 == LSBRAQUET) ) { s = 200; } else if ( (LA2_89 == SP) ) { s = 35; } else if ( (LA2_89 == SEMI) ) { s = 105; } else if ( (LA2_89 == COMMA) ) { s = 106; } else if ( (LA2_89 == QMARK) ) { s = 107; } else if ( (((LA2_89 >= AND) && (LA2_89 <= AT)) || LA2_89 == COLON || LA2_89 == DOLLARD || LA2_89 == EQUAL || LA2_89 == PLUS || LA2_89 == SLASH) ) { s = 108; } else if ( (LA2_89 == DASH || LA2_89 == DOT || LA2_89 == EMARK || LA2_89 == LPAREN || LA2_89 == RPAREN || ((LA2_89 >= SQUOTE) && (LA2_89 <= USCORE))) ) { s = 111; } else if ( (LA2_89 == PERCENT) ) { s = 112; } SEEK(index2_89); if ( s>=0 ) { return s; } } break; case 31: { ANTLR3_UINT32 LA2_875; ANTLR3_MARKER index2_875; LA2_875 = LA(1); index2_875 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_875 == COMMON_CHAR || LA2_875 == HEX_CHAR) ) { s = 874; } else if ( (LA2_875 == DIGIT) ) { s = 875; } else if ( (LA2_875 == DASH) ) { s = 876; } else if ( (LA2_875 == DOT) ) { s = 1297; } else if ( (LA2_875 == COLON) ) { s = 1298; } else if ( (LA2_875 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_875 == CRLF) ) { s = 205; } else if ( (LA2_875 == SEMI) ) { s = 853; } else if ( (LA2_875 == QMARK) ) { s = 854; } else if ( (LA2_875 == SLASH) ) { s = 241; } else if ( (LA2_875 == EMARK || LA2_875 == LPAREN || LA2_875 == RPAREN || ((LA2_875 >= SQUOTE) && (LA2_875 <= USCORE))) ) { s = 494; } else if ( (LA2_875 == PERCENT) ) { s = 495; } else if ( (LA2_875 == AT) ) { s = 497; } else if ( (LA2_875 == AND) ) { s = 498; } else if ( (LA2_875 == EQUAL) ) { s = 499; } else if ( (LA2_875 == PLUS) ) { s = 500; } else if ( (LA2_875 == DOLLARD) ) { s = 501; } else if ( (LA2_875 == COMMA) ) { s = 502; } SEEK(index2_875); if ( s>=0 ) { return s; } } break; case 32: { ANTLR3_UINT32 LA2_885; ANTLR3_MARKER index2_885; LA2_885 = LA(1); index2_885 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_885 == DIGIT) ) { s = 1310; } else if ( (LA2_885 == DOT) ) { s = 1311; } else if ( (LA2_885 == COMMON_CHAR || LA2_885 == HEX_CHAR) ) { s = 882; } else if ( (LA2_885 == DASH) ) { s = 884; } else if ( (LA2_885 == COLON) ) { s = 1306; } else if ( (LA2_885 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_885 == CRLF) ) { s = 205; } else if ( (LA2_885 == SEMI) ) { s = 1307; } else if ( (LA2_885 == QMARK) ) { s = 1308; } else if ( (LA2_885 == COMMA) ) { s = 506; } else if ( (((LA2_885 >= AND) && (LA2_885 <= AT)) || LA2_885 == DOLLARD || LA2_885 == EQUAL || LA2_885 == PLUS || LA2_885 == SLASH) ) { s = 508; } else if ( (LA2_885 == EMARK || LA2_885 == LPAREN || LA2_885 == RPAREN || ((LA2_885 >= SQUOTE) && (LA2_885 <= USCORE))) ) { s = 511; } else if ( (LA2_885 == PERCENT) ) { s = 512; } SEEK(index2_885); if ( s>=0 ) { return s; } } break; case 33: { ANTLR3_UINT32 LA2_3210; ANTLR3_MARKER index2_3210; LA2_3210 = LA(1); index2_3210 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3210 == QMARK) ) { s = 854; } else if ( (LA2_3210 == SP) ) { s = 2456; } else if ( (LA2_3210 == SLASH) ) { s = 2455; } else if ( (LA2_3210 == SEMI) ) { s = 2051; } else if ( (LA2_3210 == COMMON_CHAR || LA2_3210 == HEX_CHAR) ) { s = 2530; } else if ( (LA2_3210 == DIGIT) ) { s = 2531; } else if ( (LA2_3210 == DOT) ) { s = 2532; } else if ( (LA2_3210 == PERCENT) ) { s = 2533; } else if ( (LA2_3210 == COLON) ) { s = 2534; } else if ( (LA2_3210 == AT) ) { s = 1576; } else if ( (LA2_3210 == AND) ) { s = 2535; } else if ( (LA2_3210 == EQUAL) ) { s = 2900; } else if ( (LA2_3210 == PLUS) ) { s = 2536; } else if ( (LA2_3210 == DOLLARD) ) { s = 2537; } else if ( (LA2_3210 == COMMA) ) { s = 1581; } else if ( (LA2_3210 == CRLF) ) { s = 2458; } else if ( (LA2_3210 == BQUOTE) ) { s = 1203; } else if ( (LA2_3210 == DASH || LA2_3210 == EMARK || LA2_3210 == LPAREN || LA2_3210 == RPAREN || ((LA2_3210 >= SQUOTE) && (LA2_3210 <= USCORE))) ) { s = 2538; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3210 == LSBRAQUET || LA2_3210 == RSBRAQUET) ) { s = 405; } SEEK(index2_3210); if ( s>=0 ) { return s; } } break; case 34: { ANTLR3_UINT32 LA2_718; ANTLR3_MARKER index2_718; LA2_718 = LA(1); index2_718 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_718 == AT) ) { s = 89; } else if ( (LA2_718 == COMMON_CHAR || LA2_718 == HEX_CHAR) ) { s = 717; } else if ( (LA2_718 == DIGIT) ) { s = 718; } else if ( (LA2_718 == DASH || LA2_718 == DOT || LA2_718 == EMARK || LA2_718 == LPAREN || LA2_718 == RPAREN || ((LA2_718 >= SQUOTE) && (LA2_718 <= USCORE))) ) { s = 719; } else if ( (LA2_718 == PERCENT) ) { s = 720; } else if ( (LA2_718 == AND) ) { s = 193; } else if ( (LA2_718 == EQUAL) ) { s = 721; } else if ( (LA2_718 == PLUS) ) { s = 722; } else if ( (LA2_718 == DOLLARD) ) { s = 723; } else if ( (LA2_718 == COMMA) ) { s = 197; } else if ( (LA2_718 == QMARK) ) { s = 724; } else if ( (LA2_718 == SP) ) { s = 35; } else if ( (LA2_718 == SEMI) ) { s = 105; } else if ( (LA2_718 == COLON || LA2_718 == SLASH) ) { s = 725; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_718 == LSBRAQUET || LA2_718 == RSBRAQUET) ) { s = 414; } SEEK(index2_718); if ( s>=0 ) { return s; } } break; case 35: { ANTLR3_UINT32 LA2_1545; ANTLR3_MARKER index2_1545; LA2_1545 = LA(1); index2_1545 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1545 == AT) ) { s = 89; } else if ( (LA2_1545 == COMMON_CHAR || LA2_1545 == HEX_CHAR) ) { s = 1544; } else if ( (LA2_1545 == DIGIT) ) { s = 1545; } else if ( (LA2_1545 == DASH || LA2_1545 == DOT || LA2_1545 == EMARK || LA2_1545 == LPAREN || LA2_1545 == RPAREN || ((LA2_1545 >= SQUOTE) && (LA2_1545 <= USCORE))) ) { s = 1546; } else if ( (LA2_1545 == PERCENT) ) { s = 1547; } else if ( (LA2_1545 == AND) ) { s = 193; } else if ( (LA2_1545 == EQUAL) ) { s = 1986; } else if ( (LA2_1545 == PLUS) ) { s = 1548; } else if ( (LA2_1545 == DOLLARD) ) { s = 1549; } else if ( (LA2_1545 == COMMA) ) { s = 197; } else if ( (LA2_1545 == QMARK) ) { s = 1550; } else if ( (LA2_1545 == SP) ) { s = 35; } else if ( (LA2_1545 == SEMI) ) { s = 105; } else if ( (LA2_1545 == COLON || LA2_1545 == SLASH) ) { s = 1551; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1545 == LSBRAQUET || LA2_1545 == RSBRAQUET) ) { s = 1552; } SEEK(index2_1545); if ( s>=0 ) { return s; } } break; case 36: { ANTLR3_UINT32 LA2_1795; ANTLR3_MARKER index2_1795; LA2_1795 = LA(1); index2_1795 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1795 == DIGIT) ) { s = 2286; } else if ( (LA2_1795 == DOT) ) { s = 2287; } else if ( (LA2_1795 == COLON) ) { s = 1306; } else if ( (LA2_1795 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1795 == CRLF) ) { s = 205; } else if ( (LA2_1795 == SEMI) ) { s = 1307; } else if ( (LA2_1795 == QMARK) ) { s = 1308; } else if ( (LA2_1795 == DASH) ) { s = 884; } else if ( (LA2_1795 == COMMON_CHAR || LA2_1795 == HEX_CHAR) ) { s = 882; } else if ( (LA2_1795 == COMMA) ) { s = 506; } else if ( (((LA2_1795 >= AND) && (LA2_1795 <= AT)) || LA2_1795 == DOLLARD || LA2_1795 == EQUAL || LA2_1795 == PLUS || LA2_1795 == SLASH) ) { s = 508; } else if ( (LA2_1795 == EMARK || LA2_1795 == LPAREN || LA2_1795 == RPAREN || ((LA2_1795 >= SQUOTE) && (LA2_1795 <= USCORE))) ) { s = 511; } else if ( (LA2_1795 == PERCENT) ) { s = 512; } SEEK(index2_1795); if ( s>=0 ) { return s; } } break; case 37: { ANTLR3_UINT32 LA2_2721; ANTLR3_MARKER index2_2721; LA2_2721 = LA(1); index2_2721 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2721 == DIGIT) ) { s = 3064; } else if ( (LA2_2721 == DOT) ) { s = 3065; } else if ( (LA2_2721 == COLON) ) { s = 1306; } else if ( (LA2_2721 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2721 == CRLF) ) { s = 205; } else if ( (LA2_2721 == SEMI) ) { s = 1307; } else if ( (LA2_2721 == QMARK) ) { s = 1308; } else if ( (LA2_2721 == DASH) ) { s = 884; } else if ( (LA2_2721 == COMMON_CHAR || LA2_2721 == HEX_CHAR) ) { s = 882; } else if ( (LA2_2721 == COMMA) ) { s = 506; } else if ( (((LA2_2721 >= AND) && (LA2_2721 <= AT)) || LA2_2721 == DOLLARD || LA2_2721 == EQUAL || LA2_2721 == PLUS || LA2_2721 == SLASH) ) { s = 508; } else if ( (LA2_2721 == EMARK || LA2_2721 == LPAREN || LA2_2721 == RPAREN || ((LA2_2721 >= SQUOTE) && (LA2_2721 <= USCORE))) ) { s = 511; } else if ( (LA2_2721 == PERCENT) ) { s = 512; } SEEK(index2_2721); if ( s>=0 ) { return s; } } break; case 38: { ANTLR3_UINT32 LA2_1092; ANTLR3_MARKER index2_1092; LA2_1092 = LA(1); index2_1092 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1092 == DIGIT) ) { s = 1540; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1092 == QMARK) ) { s = 1090; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1092 == SP) ) { s = 1091; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1092 == CRLF) ) { s = 205; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1092 == SEMI) ) { s = 407; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1092 == DOT) ) { s = 712; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1092 == COMMON_CHAR || LA2_1092 == HEX_CHAR) ) { s = 1541; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1092 == AND || LA2_1092 == COLON || LA2_1092 == DOLLARD || LA2_1092 == LSBRAQUET || LA2_1092 == PLUS || LA2_1092 == RSBRAQUET || LA2_1092 == SLASH) ) { s = 405; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1092 == DASH || LA2_1092 == EMARK || LA2_1092 == LPAREN || LA2_1092 == RPAREN || ((LA2_1092 >= SQUOTE) && (LA2_1092 <= USCORE))) ) { s = 715; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1092 == PERCENT) ) { s = 716; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1092 == EQUAL) ) { s = 1093; } SEEK(index2_1092); if ( s>=0 ) { return s; } } break; case 39: { ANTLR3_UINT32 LA2_204; ANTLR3_MARKER index2_204; LA2_204 = LA(1); index2_204 = INDEX(); REWINDLAST(); s = -1; if ( (synpred1_belle_sip_message(ctx)) && (LA2_204 == CRLF) ) { s = 205; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_204 == SP) ) { s = 406; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_204 == SEMI) ) { s = 407; } else if ( (LA2_204 == COMMON_CHAR || LA2_204 == HEX_CHAR) ) { s = 87; } SEEK(index2_204); if ( s>=0 ) { return s; } } break; case 40: { ANTLR3_UINT32 LA2_3717; ANTLR3_MARKER index2_3717; LA2_3717 = LA(1); index2_3717 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3717 == SP) ) { s = 2456; } else if ( (LA2_3717 == CRLF) ) { s = 2458; } else if ( (LA2_3717 == EQUAL) ) { s = 3547; } else if ( (LA2_3717 == SLASH) ) { s = 3261; } else if ( (LA2_3717 == QMARK) ) { s = 854; } else if ( (LA2_3717 == SEMI) ) { s = 2986; } else if ( (LA2_3717 == COMMON_CHAR || LA2_3717 == HEX_CHAR) ) { s = 3286; } else if ( (LA2_3717 == DIGIT) ) { s = 3287; } else if ( (LA2_3717 == DOT) ) { s = 3288; } else if ( (LA2_3717 == PERCENT) ) { s = 3289; } else if ( (LA2_3717 == PLUS) ) { s = 3290; } else if ( (LA2_3717 == BQUOTE) ) { s = 1203; } else if ( (LA2_3717 == COLON) ) { s = 3291; } else if ( (LA2_3717 == AT) ) { s = 2578; } else if ( (LA2_3717 == AND) ) { s = 3292; } else if ( (LA2_3717 == DOLLARD) ) { s = 3293; } else if ( (LA2_3717 == COMMA) ) { s = 2583; } else if ( (LA2_3717 == DASH || LA2_3717 == EMARK || LA2_3717 == LPAREN || LA2_3717 == RPAREN || ((LA2_3717 >= SQUOTE) && (LA2_3717 <= USCORE))) ) { s = 3294; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3717 == LSBRAQUET || LA2_3717 == RSBRAQUET) ) { s = 405; } SEEK(index2_3717); if ( s>=0 ) { return s; } } break; case 41: { ANTLR3_UINT32 LA2_3371; ANTLR3_MARKER index2_3371; LA2_3371 = LA(1); index2_3371 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3371 == DIGIT) ) { s = 3597; } else if ( (LA2_3371 == COLON) ) { s = 1306; } else if ( (LA2_3371 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3371 == CRLF) ) { s = 205; } else if ( (LA2_3371 == SEMI) ) { s = 1307; } else if ( (LA2_3371 == QMARK) ) { s = 1308; } else if ( (LA2_3371 == DOT) ) { s = 1305; } else if ( (LA2_3371 == DASH) ) { s = 884; } else if ( (LA2_3371 == COMMON_CHAR || LA2_3371 == HEX_CHAR) ) { s = 882; } else if ( (LA2_3371 == COMMA) ) { s = 506; } else if ( (((LA2_3371 >= AND) && (LA2_3371 <= AT)) || LA2_3371 == DOLLARD || LA2_3371 == EQUAL || LA2_3371 == PLUS || LA2_3371 == SLASH) ) { s = 508; } else if ( (LA2_3371 == EMARK || LA2_3371 == LPAREN || LA2_3371 == RPAREN || ((LA2_3371 >= SQUOTE) && (LA2_3371 <= USCORE))) ) { s = 511; } else if ( (LA2_3371 == PERCENT) ) { s = 512; } SEEK(index2_3371); if ( s>=0 ) { return s; } } break; case 42: { ANTLR3_UINT32 LA2_3125; ANTLR3_MARKER index2_3125; LA2_3125 = LA(1); index2_3125 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3125 == SEMI) ) { s = 2826; } else if ( (LA2_3125 == QMARK) ) { s = 854; } else if ( (LA2_3125 == SP) ) { s = 204; } else if ( (LA2_3125 == SLASH) ) { s = 3123; } else if ( (LA2_3125 == COMMON_CHAR || LA2_3125 == HEX_CHAR) ) { s = 3124; } else if ( (LA2_3125 == DIGIT) ) { s = 3125; } else if ( (LA2_3125 == DOT) ) { s = 3126; } else if ( (LA2_3125 == PERCENT) ) { s = 3127; } else if ( (LA2_3125 == COLON) ) { s = 3128; } else if ( (LA2_3125 == AT) ) { s = 2019; } else if ( (LA2_3125 == AND) ) { s = 3129; } else if ( (LA2_3125 == EQUAL) ) { s = 2021; } else if ( (LA2_3125 == PLUS) ) { s = 3130; } else if ( (LA2_3125 == DOLLARD) ) { s = 3131; } else if ( (LA2_3125 == COMMA) ) { s = 2024; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3125 == CRLF) ) { s = 205; } else if ( (LA2_3125 == DASH || LA2_3125 == EMARK || LA2_3125 == LPAREN || LA2_3125 == RPAREN || ((LA2_3125 >= SQUOTE) && (LA2_3125 <= USCORE))) ) { s = 3132; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3125 == LSBRAQUET || LA2_3125 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3125); if ( s>=0 ) { return s; } } break; case 43: { ANTLR3_UINT32 LA2_409; ANTLR3_MARKER index2_409; LA2_409 = LA(1); index2_409 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_409 == COLON) ) { s = 408; } else if ( (LA2_409 == AT) ) { s = 89; } else if ( (LA2_409 == COMMON_CHAR || LA2_409 == HEX_CHAR) ) { s = 409; } else if ( (LA2_409 == DIGIT) ) { s = 410; } else if ( (LA2_409 == DASH || LA2_409 == DOT || LA2_409 == EMARK || LA2_409 == LPAREN || LA2_409 == RPAREN || ((LA2_409 >= SQUOTE) && (LA2_409 <= USCORE))) ) { s = 411; } else if ( (LA2_409 == PERCENT) ) { s = 412; } else if ( (LA2_409 == EQUAL) ) { s = 726; } else if ( (LA2_409 == QMARK) ) { s = 413; } else if ( (LA2_409 == SEMI) ) { s = 94; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_409 == LSBRAQUET || LA2_409 == RSBRAQUET) ) { s = 414; } else if ( (LA2_409 == SP) ) { s = 35; } else if ( (LA2_409 == COMMA) ) { s = 97; } else if ( (LA2_409 == AND) ) { s = 99; } else if ( (LA2_409 == DOLLARD || LA2_409 == PLUS || LA2_409 == SLASH) ) { s = 415; } SEEK(index2_409); if ( s>=0 ) { return s; } } break; case 44: { ANTLR3_UINT32 LA2_1560; ANTLR3_MARKER index2_1560; LA2_1560 = LA(1); index2_1560 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1560 == COLON) ) { s = 1559; } else if ( (LA2_1560 == AT) ) { s = 89; } else if ( (LA2_1560 == COMMON_CHAR || LA2_1560 == HEX_CHAR) ) { s = 1560; } else if ( (LA2_1560 == DIGIT) ) { s = 1561; } else if ( (LA2_1560 == DASH || LA2_1560 == DOT || LA2_1560 == EMARK || LA2_1560 == LPAREN || LA2_1560 == RPAREN || ((LA2_1560 >= SQUOTE) && (LA2_1560 <= USCORE))) ) { s = 1562; } else if ( (LA2_1560 == PERCENT) ) { s = 1563; } else if ( (LA2_1560 == EQUAL) ) { s = 1995; } else if ( (LA2_1560 == QMARK) ) { s = 1564; } else if ( (LA2_1560 == SEMI) ) { s = 94; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1560 == LSBRAQUET || LA2_1560 == RSBRAQUET) ) { s = 1552; } else if ( (LA2_1560 == SP) ) { s = 35; } else if ( (LA2_1560 == COMMA) ) { s = 97; } else if ( (LA2_1560 == AND) ) { s = 99; } else if ( (LA2_1560 == DOLLARD || LA2_1560 == PLUS || LA2_1560 == SLASH) ) { s = 1565; } SEEK(index2_1560); if ( s>=0 ) { return s; } } break; case 45: { ANTLR3_UINT32 LA2_2220; ANTLR3_MARKER index2_2220; LA2_2220 = LA(1); index2_2220 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2220 == SP) ) { s = 2456; } else if ( (LA2_2220 == CRLF) ) { s = 2458; } else if ( (LA2_2220 == EQUAL) ) { s = 2663; } else if ( (LA2_2220 == SLASH) ) { s = 2664; } else if ( (LA2_2220 == QMARK) ) { s = 1751; } else if ( (LA2_2220 == SEMI) ) { s = 1749; } else if ( (LA2_2220 == COMMON_CHAR || LA2_2220 == HEX_CHAR) ) { s = 2218; } else if ( (LA2_2220 == DIGIT) ) { s = 2219; } else if ( (LA2_2220 == DOT) ) { s = 2220; } else if ( (LA2_2220 == PERCENT) ) { s = 2221; } else if ( (LA2_2220 == PLUS) ) { s = 2222; } else if ( (LA2_2220 == BQUOTE) ) { s = 1203; } else if ( (LA2_2220 == DASH || LA2_2220 == EMARK || LA2_2220 == LPAREN || LA2_2220 == RPAREN || ((LA2_2220 >= SQUOTE) && (LA2_2220 <= USCORE))) ) { s = 2223; } else if ( (LA2_2220 == AND || LA2_2220 == COLON || LA2_2220 == DOLLARD) ) { s = 1790; } else if ( (LA2_2220 == COMMA) ) { s = 506; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2220 == LSBRAQUET || LA2_2220 == RSBRAQUET) ) { s = 405; } else if ( (LA2_2220 == AT) ) { s = 508; } SEEK(index2_2220); if ( s>=0 ) { return s; } } break; case 46: { ANTLR3_UINT32 LA2_3200; ANTLR3_MARKER index2_3200; LA2_3200 = LA(1); index2_3200 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3200 == QMARK) ) { s = 854; } else if ( (LA2_3200 == SP) ) { s = 1585; } else if ( (LA2_3200 == SLASH) ) { s = 3153; } else if ( (LA2_3200 == SEMI) ) { s = 2051; } else if ( (LA2_3200 == COMMON_CHAR || LA2_3200 == HEX_CHAR) ) { s = 3200; } else if ( (LA2_3200 == DIGIT) ) { s = 3201; } else if ( (LA2_3200 == DOT) ) { s = 3202; } else if ( (LA2_3200 == PERCENT) ) { s = 3203; } else if ( (LA2_3200 == COLON) ) { s = 3204; } else if ( (LA2_3200 == AT) ) { s = 1576; } else if ( (LA2_3200 == AND) ) { s = 3205; } else if ( (LA2_3200 == EQUAL) ) { s = 1578; } else if ( (LA2_3200 == PLUS) ) { s = 3206; } else if ( (LA2_3200 == DOLLARD) ) { s = 3207; } else if ( (LA2_3200 == COMMA) ) { s = 1581; } else if ( (LA2_3200 == CRLF) ) { s = 1588; } else if ( (LA2_3200 == BQUOTE) ) { s = 2092; } else if ( (LA2_3200 == DASH || LA2_3200 == EMARK || LA2_3200 == LPAREN || LA2_3200 == RPAREN || ((LA2_3200 >= SQUOTE) && (LA2_3200 <= USCORE))) ) { s = 3208; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3200 == LSBRAQUET || LA2_3200 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3200); if ( s>=0 ) { return s; } } break; case 47: { ANTLR3_UINT32 LA2_2818; ANTLR3_MARKER index2_2818; LA2_2818 = LA(1); index2_2818 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2818 == SEMI) ) { s = 2826; } else if ( (LA2_2818 == QMARK) ) { s = 854; } else if ( (LA2_2818 == SP) ) { s = 204; } else if ( (LA2_2818 == SLASH) ) { s = 2827; } else if ( (LA2_2818 == COMMON_CHAR || LA2_2818 == HEX_CHAR) ) { s = 2817; } else if ( (LA2_2818 == DIGIT) ) { s = 2818; } else if ( (LA2_2818 == DOT) ) { s = 2819; } else if ( (LA2_2818 == PERCENT) ) { s = 2820; } else if ( (LA2_2818 == COLON) ) { s = 2821; } else if ( (LA2_2818 == AT) ) { s = 2019; } else if ( (LA2_2818 == AND) ) { s = 2822; } else if ( (LA2_2818 == EQUAL) ) { s = 2823; } else if ( (LA2_2818 == PLUS) ) { s = 2824; } else if ( (LA2_2818 == DOLLARD) ) { s = 2825; } else if ( (LA2_2818 == COMMA) ) { s = 2024; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2818 == CRLF) ) { s = 205; } else if ( (LA2_2818 == DASH || LA2_2818 == EMARK || LA2_2818 == LPAREN || LA2_2818 == RPAREN || ((LA2_2818 >= SQUOTE) && (LA2_2818 <= USCORE))) ) { s = 2828; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2818 == LSBRAQUET || LA2_2818 == RSBRAQUET) ) { s = 405; } SEEK(index2_2818); if ( s>=0 ) { return s; } } break; case 48: { ANTLR3_UINT32 LA2_862; ANTLR3_MARKER index2_862; LA2_862 = LA(1); index2_862 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_862 == COMMON_CHAR || LA2_862 == HEX_CHAR) ) { s = 1292; } else if ( (LA2_862 == DIGIT) ) { s = 1293; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_862 == LSBRAQUET) ) { s = 200; } else if ( (LA2_862 == QMARK) ) { s = 242; } else if ( (LA2_862 == SP) ) { s = 35; } else if ( (LA2_862 == SLASH) ) { s = 241; } else if ( (LA2_862 == SEMI) ) { s = 458; } else if ( (LA2_862 == DASH || LA2_862 == DOT || LA2_862 == EMARK || LA2_862 == LPAREN || LA2_862 == RPAREN || ((LA2_862 >= SQUOTE) && (LA2_862 <= USCORE))) ) { s = 807; } else if ( (LA2_862 == PERCENT) ) { s = 808; } else if ( (LA2_862 == COLON) ) { s = 809; } else if ( (LA2_862 == AT) ) { s = 810; } else if ( (LA2_862 == AND) ) { s = 811; } else if ( (LA2_862 == EQUAL) ) { s = 812; } else if ( (LA2_862 == PLUS) ) { s = 813; } else if ( (LA2_862 == DOLLARD) ) { s = 814; } else if ( (LA2_862 == COMMA) ) { s = 815; } SEEK(index2_862); if ( s>=0 ) { return s; } } break; case 49: { ANTLR3_UINT32 LA2_3707; ANTLR3_MARKER index2_3707; LA2_3707 = LA(1); index2_3707 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3707 == SLASH) ) { s = 3678; } else if ( (LA2_3707 == QMARK) ) { s = 854; } else if ( (LA2_3707 == SP) ) { s = 1585; } else if ( (LA2_3707 == CRLF) ) { s = 1588; } else if ( (LA2_3707 == SEMI) ) { s = 2986; } else if ( (LA2_3707 == COMMON_CHAR || LA2_3707 == HEX_CHAR) ) { s = 3707; } else if ( (LA2_3707 == DIGIT) ) { s = 3708; } else if ( (LA2_3707 == DOT) ) { s = 3709; } else if ( (LA2_3707 == PERCENT) ) { s = 3710; } else if ( (LA2_3707 == PLUS) ) { s = 3711; } else if ( (LA2_3707 == BQUOTE) ) { s = 2092; } else if ( (LA2_3707 == COLON) ) { s = 3712; } else if ( (LA2_3707 == AT) ) { s = 2578; } else if ( (LA2_3707 == AND) ) { s = 3713; } else if ( (LA2_3707 == EQUAL) ) { s = 2580; } else if ( (LA2_3707 == DOLLARD) ) { s = 3714; } else if ( (LA2_3707 == COMMA) ) { s = 2583; } else if ( (LA2_3707 == DASH || LA2_3707 == EMARK || LA2_3707 == LPAREN || LA2_3707 == RPAREN || ((LA2_3707 >= SQUOTE) && (LA2_3707 <= USCORE))) ) { s = 3715; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3707 == LSBRAQUET || LA2_3707 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3707); if ( s>=0 ) { return s; } } break; case 50: { ANTLR3_UINT32 LA2_1986; ANTLR3_MARKER index2_1986; LA2_1986 = LA(1); index2_1986 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1986 == AT) ) { s = 89; } else if ( (LA2_1986 == COMMON_CHAR || LA2_1986 == HEX_CHAR) ) { s = 2429; } else if ( (LA2_1986 == DIGIT) ) { s = 2430; } else if ( (LA2_1986 == DASH || LA2_1986 == DOT || LA2_1986 == EMARK || LA2_1986 == LPAREN || LA2_1986 == RPAREN || ((LA2_1986 >= SQUOTE) && (LA2_1986 <= USCORE))) ) { s = 2431; } else if ( (LA2_1986 == PERCENT) ) { s = 2432; } else if ( (LA2_1986 == AND) ) { s = 1099; } else if ( (LA2_1986 == EQUAL) ) { s = 194; } else if ( (LA2_1986 == PLUS) ) { s = 2433; } else if ( (LA2_1986 == DOLLARD) ) { s = 2434; } else if ( (LA2_1986 == COMMA) ) { s = 197; } else if ( (LA2_1986 == QMARK) ) { s = 2435; } else if ( (LA2_1986 == SP) ) { s = 35; } else if ( (LA2_1986 == SEMI) ) { s = 105; } else if ( (LA2_1986 == COLON || LA2_1986 == SLASH) ) { s = 2436; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1986 == LSBRAQUET || LA2_1986 == RSBRAQUET) ) { s = 2437; } SEEK(index2_1986); if ( s>=0 ) { return s; } } break; case 51: { ANTLR3_UINT32 LA2_1273; ANTLR3_MARKER index2_1273; LA2_1273 = LA(1); index2_1273 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1273 == EQUAL) ) { s = 1768; } else if ( (LA2_1273 == QMARK) ) { s = 1272; } else if ( (LA2_1273 == COMMON_CHAR || LA2_1273 == HEX_CHAR) ) { s = 1273; } else if ( (LA2_1273 == DIGIT) ) { s = 1274; } else if ( (LA2_1273 == DASH || LA2_1273 == DOT || LA2_1273 == EMARK || LA2_1273 == LPAREN || LA2_1273 == RPAREN || ((LA2_1273 >= SQUOTE) && (LA2_1273 <= USCORE))) ) { s = 1275; } else if ( (LA2_1273 == PERCENT) ) { s = 1276; } else if ( (LA2_1273 == SP) ) { s = 35; } else if ( (LA2_1273 == SEMI) ) { s = 505; } else if ( (LA2_1273 == COMMA) ) { s = 506; } else if ( (LA2_1273 == COLON || LA2_1273 == DOLLARD || LA2_1273 == PLUS || LA2_1273 == SLASH) ) { s = 1277; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1273 == LSBRAQUET || LA2_1273 == RSBRAQUET) ) { s = 414; } else if ( (((LA2_1273 >= AND) && (LA2_1273 <= AT))) ) { s = 508; } SEEK(index2_1273); if ( s>=0 ) { return s; } } break; case 52: { ANTLR3_UINT32 LA2_2699; ANTLR3_MARKER index2_2699; LA2_2699 = LA(1); index2_2699 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2699 == EQUAL) ) { s = 3054; } else if ( (LA2_2699 == QMARK) ) { s = 2698; } else if ( (LA2_2699 == COMMON_CHAR || LA2_2699 == HEX_CHAR) ) { s = 2699; } else if ( (LA2_2699 == DIGIT) ) { s = 2700; } else if ( (LA2_2699 == DASH || LA2_2699 == DOT || LA2_2699 == EMARK || LA2_2699 == LPAREN || LA2_2699 == RPAREN || ((LA2_2699 >= SQUOTE) && (LA2_2699 <= USCORE))) ) { s = 2701; } else if ( (LA2_2699 == PERCENT) ) { s = 2702; } else if ( (LA2_2699 == SP) ) { s = 35; } else if ( (LA2_2699 == SEMI) ) { s = 505; } else if ( (LA2_2699 == COMMA) ) { s = 506; } else if ( (LA2_2699 == COLON || LA2_2699 == DOLLARD || LA2_2699 == PLUS || LA2_2699 == SLASH) ) { s = 2703; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2699 == LSBRAQUET || LA2_2699 == RSBRAQUET) ) { s = 1552; } else if ( (((LA2_2699 >= AND) && (LA2_2699 <= AT))) ) { s = 508; } SEEK(index2_2699); if ( s>=0 ) { return s; } } break; case 53: { ANTLR3_UINT32 LA2_3654; ANTLR3_MARKER index2_3654; LA2_3654 = LA(1); index2_3654 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3654 == QMARK) ) { s = 854; } else if ( (LA2_3654 == SP) ) { s = 204; } else if ( (LA2_3654 == SLASH) ) { s = 3171; } else if ( (LA2_3654 == SEMI) ) { s = 3463; } else if ( (LA2_3654 == COMMON_CHAR || LA2_3654 == HEX_CHAR) ) { s = 3646; } else if ( (LA2_3654 == DIGIT) ) { s = 3647; } else if ( (LA2_3654 == DOT) ) { s = 3648; } else if ( (LA2_3654 == PERCENT) ) { s = 3649; } else if ( (LA2_3654 == COLON) ) { s = 3650; } else if ( (LA2_3654 == AT) ) { s = 2638; } else if ( (LA2_3654 == AND) ) { s = 3651; } else if ( (LA2_3654 == EQUAL) ) { s = 3784; } else if ( (LA2_3654 == PLUS) ) { s = 3652; } else if ( (LA2_3654 == DOLLARD) ) { s = 3653; } else if ( (LA2_3654 == COMMA) ) { s = 2643; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3654 == CRLF) ) { s = 205; } else if ( (LA2_3654 == DASH || LA2_3654 == EMARK || LA2_3654 == LPAREN || LA2_3654 == RPAREN || ((LA2_3654 >= SQUOTE) && (LA2_3654 <= USCORE))) ) { s = 3654; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3654 == LSBRAQUET || LA2_3654 == RSBRAQUET) ) { s = 405; } SEEK(index2_3654); if ( s>=0 ) { return s; } } break; case 54: { ANTLR3_UINT32 LA2_1537; ANTLR3_MARKER index2_1537; LA2_1537 = LA(1); index2_1537 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1537 == QMARK) ) { s = 694; } else if ( (LA2_1537 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1537 == CRLF) ) { s = 205; } else if ( (LA2_1537 == SEMI) ) { s = 693; } else if ( (LA2_1537 == DOT) ) { s = 1534; } else if ( (LA2_1537 == COMMON_CHAR || LA2_1537 == HEX_CHAR) ) { s = 1535; } else if ( (LA2_1537 == DIGIT) ) { s = 1536; } else if ( (LA2_1537 == AND || LA2_1537 == COLON || LA2_1537 == DOLLARD || LA2_1537 == PLUS || LA2_1537 == SLASH) ) { s = 1079; } else if ( (LA2_1537 == DASH || LA2_1537 == EMARK || LA2_1537 == LPAREN || LA2_1537 == RPAREN || ((LA2_1537 >= SQUOTE) && (LA2_1537 <= USCORE))) ) { s = 1537; } else if ( (LA2_1537 == PERCENT) ) { s = 1538; } else if ( (LA2_1537 == COMMA) ) { s = 106; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1537 == LSBRAQUET || LA2_1537 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_1537 == AT || LA2_1537 == EQUAL) ) { s = 108; } SEEK(index2_1537); if ( s>=0 ) { return s; } } break; case 55: { ANTLR3_UINT32 LA2_2279; ANTLR3_MARKER index2_2279; LA2_2279 = LA(1); index2_2279 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2279 == DIGIT) ) { s = 2280; } else if ( (LA2_2279 == COMMON_CHAR || LA2_2279 == HEX_CHAR) ) { s = 1292; } else if ( (LA2_2279 == COLON) ) { s = 2276; } else if ( (LA2_2279 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2279 == CRLF) ) { s = 205; } else if ( (LA2_2279 == SEMI) ) { s = 1237; } else if ( (LA2_2279 == QMARK) ) { s = 854; } else if ( (LA2_2279 == SLASH) ) { s = 241; } else if ( (LA2_2279 == DASH || LA2_2279 == DOT || LA2_2279 == EMARK || LA2_2279 == LPAREN || LA2_2279 == RPAREN || ((LA2_2279 >= SQUOTE) && (LA2_2279 <= USCORE))) ) { s = 807; } else if ( (LA2_2279 == PERCENT) ) { s = 808; } else if ( (LA2_2279 == AT) ) { s = 810; } else if ( (LA2_2279 == AND) ) { s = 811; } else if ( (LA2_2279 == EQUAL) ) { s = 812; } else if ( (LA2_2279 == PLUS) ) { s = 813; } else if ( (LA2_2279 == DOLLARD) ) { s = 814; } else if ( (LA2_2279 == COMMA) ) { s = 815; } SEEK(index2_2279); if ( s>=0 ) { return s; } } break; case 56: { ANTLR3_UINT32 LA2_2445; ANTLR3_MARKER index2_2445; LA2_2445 = LA(1); index2_2445 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2445 == COMMON_CHAR || LA2_2445 == HEX_CHAR) ) { s = 2429; } else if ( (LA2_2445 == DIGIT) ) { s = 2430; } else if ( (LA2_2445 == DASH || LA2_2445 == DOT || LA2_2445 == EMARK || LA2_2445 == LPAREN || LA2_2445 == RPAREN || ((LA2_2445 >= SQUOTE) && (LA2_2445 <= USCORE))) ) { s = 2431; } else if ( (LA2_2445 == PERCENT) ) { s = 2432; } else if ( (LA2_2445 == AND) ) { s = 1099; } else if ( (LA2_2445 == EQUAL) ) { s = 194; } else if ( (LA2_2445 == PLUS) ) { s = 2433; } else if ( (LA2_2445 == DOLLARD) ) { s = 2434; } else if ( (LA2_2445 == COMMA) ) { s = 197; } else if ( (LA2_2445 == AT) ) { s = 89; } else if ( (LA2_2445 == SP) ) { s = 35; } else if ( (LA2_2445 == QMARK) ) { s = 2435; } else if ( (LA2_2445 == SEMI) ) { s = 105; } else if ( (LA2_2445 == COLON || LA2_2445 == SLASH) ) { s = 2436; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2445 == LSBRAQUET || LA2_2445 == RSBRAQUET) ) { s = 2437; } SEEK(index2_2445); if ( s>=0 ) { return s; } } break; case 57: { ANTLR3_UINT32 LA2_3326; ANTLR3_MARKER index2_3326; LA2_3326 = LA(1); index2_3326 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3326 == SEMI) ) { s = 3030; } else if ( (LA2_3326 == SLASH) ) { s = 3323; } else if ( (LA2_3326 == QMARK) ) { s = 1751; } else if ( (LA2_3326 == SP) ) { s = 204; } else if ( (LA2_3326 == COMMON_CHAR || LA2_3326 == HEX_CHAR) ) { s = 3324; } else if ( (LA2_3326 == DIGIT) ) { s = 3325; } else if ( (LA2_3326 == DOT) ) { s = 3326; } else if ( (LA2_3326 == PERCENT) ) { s = 3327; } else if ( (LA2_3326 == COLON) ) { s = 3328; } else if ( (LA2_3326 == AT) ) { s = 2229; } else if ( (LA2_3326 == AND) ) { s = 3329; } else if ( (LA2_3326 == EQUAL) ) { s = 2231; } else if ( (LA2_3326 == PLUS) ) { s = 3330; } else if ( (LA2_3326 == DOLLARD) ) { s = 3331; } else if ( (LA2_3326 == COMMA) ) { s = 2234; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3326 == CRLF) ) { s = 205; } else if ( (LA2_3326 == DASH || LA2_3326 == EMARK || LA2_3326 == LPAREN || LA2_3326 == RPAREN || ((LA2_3326 >= SQUOTE) && (LA2_3326 <= USCORE))) ) { s = 3332; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3326 == LSBRAQUET || LA2_3326 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3326); if ( s>=0 ) { return s; } } break; case 58: { ANTLR3_UINT32 LA2_3058; ANTLR3_MARKER index2_3058; LA2_3058 = LA(1); index2_3058 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3058 == DIGIT) ) { s = 3059; } else if ( (LA2_3058 == COLON) ) { s = 2276; } else if ( (LA2_3058 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3058 == CRLF) ) { s = 205; } else if ( (LA2_3058 == SEMI) ) { s = 1237; } else if ( (LA2_3058 == QMARK) ) { s = 854; } else if ( (LA2_3058 == COMMON_CHAR || LA2_3058 == HEX_CHAR) ) { s = 1292; } else if ( (LA2_3058 == SLASH) ) { s = 241; } else if ( (LA2_3058 == DASH || LA2_3058 == DOT || LA2_3058 == EMARK || LA2_3058 == LPAREN || LA2_3058 == RPAREN || ((LA2_3058 >= SQUOTE) && (LA2_3058 <= USCORE))) ) { s = 807; } else if ( (LA2_3058 == PERCENT) ) { s = 808; } else if ( (LA2_3058 == AT) ) { s = 810; } else if ( (LA2_3058 == AND) ) { s = 811; } else if ( (LA2_3058 == EQUAL) ) { s = 812; } else if ( (LA2_3058 == PLUS) ) { s = 813; } else if ( (LA2_3058 == DOLLARD) ) { s = 814; } else if ( (LA2_3058 == COMMA) ) { s = 815; } SEEK(index2_3058); if ( s>=0 ) { return s; } } break; case 59: { ANTLR3_UINT32 LA2_3344; ANTLR3_MARKER index2_3344; LA2_3344 = LA(1); index2_3344 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3344 == SEMI) ) { s = 3351; } else if ( (LA2_3344 == QMARK) ) { s = 1751; } else if ( (LA2_3344 == SP) ) { s = 204; } else if ( (LA2_3344 == SLASH) ) { s = 3031; } else if ( (LA2_3344 == COMMON_CHAR || LA2_3344 == HEX_CHAR) ) { s = 3342; } else if ( (LA2_3344 == DIGIT) ) { s = 3343; } else if ( (LA2_3344 == DOT) ) { s = 3344; } else if ( (LA2_3344 == PERCENT) ) { s = 3345; } else if ( (LA2_3344 == COLON) ) { s = 3346; } else if ( (LA2_3344 == AT) ) { s = 2684; } else if ( (LA2_3344 == AND) ) { s = 3347; } else if ( (LA2_3344 == EQUAL) ) { s = 3348; } else if ( (LA2_3344 == PLUS) ) { s = 3349; } else if ( (LA2_3344 == DOLLARD) ) { s = 3350; } else if ( (LA2_3344 == COMMA) ) { s = 2689; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3344 == CRLF) ) { s = 205; } else if ( (LA2_3344 == DASH || LA2_3344 == EMARK || LA2_3344 == LPAREN || LA2_3344 == RPAREN || ((LA2_3344 >= SQUOTE) && (LA2_3344 <= USCORE))) ) { s = 3352; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3344 == LSBRAQUET || LA2_3344 == RSBRAQUET) ) { s = 405; } SEEK(index2_3344); if ( s>=0 ) { return s; } } break; case 60: { ANTLR3_UINT32 LA2_3594; ANTLR3_MARKER index2_3594; LA2_3594 = LA(1); index2_3594 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3594 == DIGIT) ) { s = 3595; } else if ( (LA2_3594 == COLON) ) { s = 2276; } else if ( (LA2_3594 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3594 == CRLF) ) { s = 205; } else if ( (LA2_3594 == SEMI) ) { s = 1237; } else if ( (LA2_3594 == QMARK) ) { s = 854; } else if ( (LA2_3594 == COMMON_CHAR || LA2_3594 == HEX_CHAR) ) { s = 1292; } else if ( (LA2_3594 == SLASH) ) { s = 241; } else if ( (LA2_3594 == DASH || LA2_3594 == DOT || LA2_3594 == EMARK || LA2_3594 == LPAREN || LA2_3594 == RPAREN || ((LA2_3594 >= SQUOTE) && (LA2_3594 <= USCORE))) ) { s = 807; } else if ( (LA2_3594 == PERCENT) ) { s = 808; } else if ( (LA2_3594 == AT) ) { s = 810; } else if ( (LA2_3594 == AND) ) { s = 811; } else if ( (LA2_3594 == EQUAL) ) { s = 812; } else if ( (LA2_3594 == PLUS) ) { s = 813; } else if ( (LA2_3594 == DOLLARD) ) { s = 814; } else if ( (LA2_3594 == COMMA) ) { s = 815; } SEEK(index2_3594); if ( s>=0 ) { return s; } } break; case 61: { ANTLR3_UINT32 LA2_719; ANTLR3_MARKER index2_719; LA2_719 = LA(1); index2_719 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_719 == AT) ) { s = 89; } else if ( (LA2_719 == COMMON_CHAR || LA2_719 == HEX_CHAR) ) { s = 717; } else if ( (LA2_719 == DIGIT) ) { s = 718; } else if ( (LA2_719 == DASH || LA2_719 == DOT || LA2_719 == EMARK || LA2_719 == LPAREN || LA2_719 == RPAREN || ((LA2_719 >= SQUOTE) && (LA2_719 <= USCORE))) ) { s = 719; } else if ( (LA2_719 == PERCENT) ) { s = 720; } else if ( (LA2_719 == AND) ) { s = 193; } else if ( (LA2_719 == EQUAL) ) { s = 721; } else if ( (LA2_719 == PLUS) ) { s = 722; } else if ( (LA2_719 == DOLLARD) ) { s = 723; } else if ( (LA2_719 == COMMA) ) { s = 197; } else if ( (LA2_719 == QMARK) ) { s = 724; } else if ( (LA2_719 == SP) ) { s = 35; } else if ( (LA2_719 == SEMI) ) { s = 105; } else if ( (LA2_719 == COLON || LA2_719 == SLASH) ) { s = 725; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_719 == LSBRAQUET || LA2_719 == RSBRAQUET) ) { s = 414; } SEEK(index2_719); if ( s>=0 ) { return s; } } break; case 62: { ANTLR3_UINT32 LA2_1546; ANTLR3_MARKER index2_1546; LA2_1546 = LA(1); index2_1546 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1546 == AT) ) { s = 89; } else if ( (LA2_1546 == COMMON_CHAR || LA2_1546 == HEX_CHAR) ) { s = 1544; } else if ( (LA2_1546 == DIGIT) ) { s = 1545; } else if ( (LA2_1546 == DASH || LA2_1546 == DOT || LA2_1546 == EMARK || LA2_1546 == LPAREN || LA2_1546 == RPAREN || ((LA2_1546 >= SQUOTE) && (LA2_1546 <= USCORE))) ) { s = 1546; } else if ( (LA2_1546 == PERCENT) ) { s = 1547; } else if ( (LA2_1546 == AND) ) { s = 193; } else if ( (LA2_1546 == EQUAL) ) { s = 1986; } else if ( (LA2_1546 == PLUS) ) { s = 1548; } else if ( (LA2_1546 == DOLLARD) ) { s = 1549; } else if ( (LA2_1546 == COMMA) ) { s = 197; } else if ( (LA2_1546 == QMARK) ) { s = 1550; } else if ( (LA2_1546 == SP) ) { s = 35; } else if ( (LA2_1546 == SEMI) ) { s = 105; } else if ( (LA2_1546 == COLON || LA2_1546 == SLASH) ) { s = 1551; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1546 == LSBRAQUET || LA2_1546 == RSBRAQUET) ) { s = 1552; } SEEK(index2_1546); if ( s>=0 ) { return s; } } break; case 63: { ANTLR3_UINT32 LA2_2833; ANTLR3_MARKER index2_2833; LA2_2833 = LA(1); index2_2833 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2833 == SLASH) ) { s = 3153; } else if ( (LA2_2833 == QMARK) ) { s = 854; } else if ( (LA2_2833 == SP) ) { s = 1585; } else if ( (LA2_2833 == SEMI) ) { s = 1583; } else if ( (LA2_2833 == COMMON_CHAR || LA2_2833 == HEX_CHAR) ) { s = 2831; } else if ( (LA2_2833 == DIGIT) ) { s = 2832; } else if ( (LA2_2833 == DOT) ) { s = 2833; } else if ( (LA2_2833 == PERCENT) ) { s = 2834; } else if ( (LA2_2833 == COLON) ) { s = 2835; } else if ( (LA2_2833 == AT) ) { s = 1123; } else if ( (LA2_2833 == AND) ) { s = 2836; } else if ( (LA2_2833 == EQUAL) ) { s = 1125; } else if ( (LA2_2833 == PLUS) ) { s = 2837; } else if ( (LA2_2833 == DOLLARD) ) { s = 2838; } else if ( (LA2_2833 == COMMA) ) { s = 1128; } else if ( (LA2_2833 == CRLF) ) { s = 1588; } else if ( (LA2_2833 == BQUOTE) ) { s = 2092; } else if ( (LA2_2833 == DASH || LA2_2833 == EMARK || LA2_2833 == LPAREN || LA2_2833 == RPAREN || ((LA2_2833 >= SQUOTE) && (LA2_2833 <= USCORE))) ) { s = 2839; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2833 == LSBRAQUET || LA2_2833 == RSBRAQUET) ) { s = 1080; } SEEK(index2_2833); if ( s>=0 ) { return s; } } break; case 64: { ANTLR3_UINT32 LA2_2986; ANTLR3_MARKER index2_2986; LA2_2986 = LA(1); index2_2986 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2986 == SP) ) { s = 2010; } else if ( (LA2_2986 == CRLF) ) { s = 2012; } else if ( (LA2_2986 == COMMON_CHAR || LA2_2986 == HEX_CHAR) ) { s = 3286; } else if ( (LA2_2986 == DIGIT) ) { s = 3287; } else if ( (LA2_2986 == DOT) ) { s = 3288; } else if ( (LA2_2986 == PERCENT) ) { s = 3289; } else if ( (LA2_2986 == PLUS) ) { s = 3290; } else if ( (LA2_2986 == BQUOTE) ) { s = 1203; } else if ( (LA2_2986 == COLON) ) { s = 3291; } else if ( (LA2_2986 == AT) ) { s = 2578; } else if ( (LA2_2986 == AND) ) { s = 3292; } else if ( (LA2_2986 == EQUAL) ) { s = 2580; } else if ( (LA2_2986 == DOLLARD) ) { s = 3293; } else if ( (LA2_2986 == COMMA) ) { s = 2583; } else if ( (LA2_2986 == QMARK) ) { s = 854; } else if ( (LA2_2986 == SLASH) ) { s = 2928; } else if ( (LA2_2986 == SEMI) ) { s = 3251; } else if ( (LA2_2986 == DASH || LA2_2986 == EMARK || LA2_2986 == LPAREN || LA2_2986 == RPAREN || ((LA2_2986 >= SQUOTE) && (LA2_2986 <= USCORE))) ) { s = 3294; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2986 == LSBRAQUET || LA2_2986 == RSBRAQUET) ) { s = 405; } SEEK(index2_2986); if ( s>=0 ) { return s; } } break; case 65: { ANTLR3_UINT32 LA2_3514; ANTLR3_MARKER index2_3514; LA2_3514 = LA(1); index2_3514 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3514 == SLASH) ) { s = 3678; } else if ( (LA2_3514 == QMARK) ) { s = 854; } else if ( (LA2_3514 == SP) ) { s = 1585; } else if ( (LA2_3514 == CRLF) ) { s = 1588; } else if ( (LA2_3514 == SEMI) ) { s = 2587; } else if ( (LA2_3514 == COMMON_CHAR || LA2_3514 == HEX_CHAR) ) { s = 3512; } else if ( (LA2_3514 == DIGIT) ) { s = 3513; } else if ( (LA2_3514 == DOT) ) { s = 3514; } else if ( (LA2_3514 == PERCENT) ) { s = 3515; } else if ( (LA2_3514 == PLUS) ) { s = 3516; } else if ( (LA2_3514 == BQUOTE) ) { s = 2092; } else if ( (LA2_3514 == COLON) ) { s = 3517; } else if ( (LA2_3514 == AT) ) { s = 2111; } else if ( (LA2_3514 == AND) ) { s = 3518; } else if ( (LA2_3514 == EQUAL) ) { s = 2113; } else if ( (LA2_3514 == DOLLARD) ) { s = 3519; } else if ( (LA2_3514 == COMMA) ) { s = 2116; } else if ( (LA2_3514 == DASH || LA2_3514 == EMARK || LA2_3514 == LPAREN || LA2_3514 == RPAREN || ((LA2_3514 >= SQUOTE) && (LA2_3514 <= USCORE))) ) { s = 3520; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3514 == LSBRAQUET || LA2_3514 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3514); if ( s>=0 ) { return s; } } break; case 66: { ANTLR3_UINT32 LA2_2219; ANTLR3_MARKER index2_2219; LA2_2219 = LA(1); index2_2219 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2219 == SP) ) { s = 2456; } else if ( (LA2_2219 == CRLF) ) { s = 2458; } else if ( (LA2_2219 == EQUAL) ) { s = 2663; } else if ( (LA2_2219 == SLASH) ) { s = 2664; } else if ( (LA2_2219 == QMARK) ) { s = 1751; } else if ( (LA2_2219 == SEMI) ) { s = 1749; } else if ( (LA2_2219 == COMMON_CHAR || LA2_2219 == HEX_CHAR) ) { s = 2218; } else if ( (LA2_2219 == DIGIT) ) { s = 2219; } else if ( (LA2_2219 == DOT) ) { s = 2220; } else if ( (LA2_2219 == PERCENT) ) { s = 2221; } else if ( (LA2_2219 == PLUS) ) { s = 2222; } else if ( (LA2_2219 == BQUOTE) ) { s = 1203; } else if ( (LA2_2219 == DASH || LA2_2219 == EMARK || LA2_2219 == LPAREN || LA2_2219 == RPAREN || ((LA2_2219 >= SQUOTE) && (LA2_2219 <= USCORE))) ) { s = 2223; } else if ( (LA2_2219 == AND || LA2_2219 == COLON || LA2_2219 == DOLLARD) ) { s = 1790; } else if ( (LA2_2219 == COMMA) ) { s = 506; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2219 == LSBRAQUET || LA2_2219 == RSBRAQUET) ) { s = 405; } else if ( (LA2_2219 == AT) ) { s = 508; } SEEK(index2_2219); if ( s>=0 ) { return s; } } break; case 67: { ANTLR3_UINT32 LA2_2275; ANTLR3_MARKER index2_2275; LA2_2275 = LA(1); index2_2275 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2275 == COMMON_CHAR || LA2_2275 == HEX_CHAR) ) { s = 1292; } else if ( (LA2_2275 == DIGIT) ) { s = 2274; } else if ( (LA2_2275 == COLON) ) { s = 2276; } else if ( (LA2_2275 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2275 == CRLF) ) { s = 205; } else if ( (LA2_2275 == SEMI) ) { s = 1237; } else if ( (LA2_2275 == QMARK) ) { s = 854; } else if ( (LA2_2275 == SLASH) ) { s = 241; } else if ( (LA2_2275 == DASH || LA2_2275 == DOT || LA2_2275 == EMARK || LA2_2275 == LPAREN || LA2_2275 == RPAREN || ((LA2_2275 >= SQUOTE) && (LA2_2275 <= USCORE))) ) { s = 807; } else if ( (LA2_2275 == PERCENT) ) { s = 808; } else if ( (LA2_2275 == AT) ) { s = 810; } else if ( (LA2_2275 == AND) ) { s = 811; } else if ( (LA2_2275 == EQUAL) ) { s = 812; } else if ( (LA2_2275 == PLUS) ) { s = 813; } else if ( (LA2_2275 == DOLLARD) ) { s = 814; } else if ( (LA2_2275 == COMMA) ) { s = 815; } SEEK(index2_2275); if ( s>=0 ) { return s; } } break; case 68: { ANTLR3_UINT32 LA2_877; ANTLR3_MARKER index2_877; LA2_877 = LA(1); index2_877 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_877 == DIGIT) ) { s = 1300; } else if ( (LA2_877 == DOT) ) { s = 1301; } else if ( (LA2_877 == COMMON_CHAR || LA2_877 == HEX_CHAR) ) { s = 874; } else if ( (LA2_877 == DASH) ) { s = 876; } else if ( (LA2_877 == COLON) ) { s = 1298; } else if ( (LA2_877 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_877 == CRLF) ) { s = 205; } else if ( (LA2_877 == SEMI) ) { s = 853; } else if ( (LA2_877 == QMARK) ) { s = 854; } else if ( (LA2_877 == SLASH) ) { s = 241; } else if ( (LA2_877 == EMARK || LA2_877 == LPAREN || LA2_877 == RPAREN || ((LA2_877 >= SQUOTE) && (LA2_877 <= USCORE))) ) { s = 494; } else if ( (LA2_877 == PERCENT) ) { s = 495; } else if ( (LA2_877 == AT) ) { s = 497; } else if ( (LA2_877 == AND) ) { s = 498; } else if ( (LA2_877 == EQUAL) ) { s = 499; } else if ( (LA2_877 == PLUS) ) { s = 500; } else if ( (LA2_877 == DOLLARD) ) { s = 501; } else if ( (LA2_877 == COMMA) ) { s = 502; } SEEK(index2_877); if ( s>=0 ) { return s; } } break; case 69: { ANTLR3_UINT32 LA2_1725; ANTLR3_MARKER index2_1725; LA2_1725 = LA(1); index2_1725 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1725 == QMARK) ) { s = 854; } else if ( (LA2_1725 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1725 == CRLF) ) { s = 205; } else if ( (LA2_1725 == SEMI) ) { s = 1237; } else if ( (LA2_1725 == DOT) ) { s = 1724; } else if ( (LA2_1725 == COMMON_CHAR || LA2_1725 == HEX_CHAR) ) { s = 1725; } else if ( (LA2_1725 == DIGIT) ) { s = 1726; } else if ( (LA2_1725 == SLASH) ) { s = 1271; } else if ( (LA2_1725 == DASH || LA2_1725 == EMARK || LA2_1725 == LPAREN || LA2_1725 == RPAREN || ((LA2_1725 >= SQUOTE) && (LA2_1725 <= USCORE))) ) { s = 1728; } else if ( (LA2_1725 == PERCENT) ) { s = 1729; } else if ( (LA2_1725 == EQUAL) ) { s = 2207; } else if ( (LA2_1725 == COLON) ) { s = 1727; } else if ( (LA2_1725 == AND) ) { s = 1730; } else if ( (LA2_1725 == AT) ) { s = 810; } else if ( (LA2_1725 == PLUS) ) { s = 1731; } else if ( (LA2_1725 == DOLLARD) ) { s = 1732; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1725 == LSBRAQUET || LA2_1725 == RSBRAQUET) ) { s = 405; } else if ( (LA2_1725 == COMMA) ) { s = 815; } SEEK(index2_1725); if ( s>=0 ) { return s; } } break; case 70: { ANTLR3_UINT32 LA2_3053; ANTLR3_MARKER index2_3053; LA2_3053 = LA(1); index2_3053 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3053 == AND) ) { s = 2268; } else if ( (LA2_3053 == SP) ) { s = 35; } else if ( (LA2_3053 == QMARK) ) { s = 2263; } else if ( (LA2_3053 == COMMON_CHAR || LA2_3053 == HEX_CHAR) ) { s = 2264; } else if ( (LA2_3053 == DIGIT) ) { s = 2265; } else if ( (LA2_3053 == DASH || LA2_3053 == DOT || LA2_3053 == EMARK || LA2_3053 == LPAREN || LA2_3053 == RPAREN || ((LA2_3053 >= SQUOTE) && (LA2_3053 <= USCORE))) ) { s = 2266; } else if ( (LA2_3053 == PERCENT) ) { s = 2267; } else if ( (LA2_3053 == SEMI) ) { s = 505; } else if ( (LA2_3053 == COMMA) ) { s = 506; } else if ( (LA2_3053 == COLON || LA2_3053 == DOLLARD || LA2_3053 == PLUS || LA2_3053 == SLASH) ) { s = 2269; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3053 == LSBRAQUET || LA2_3053 == RSBRAQUET) ) { s = 1104; } else if ( (LA2_3053 == AT || LA2_3053 == EQUAL) ) { s = 508; } SEEK(index2_3053); if ( s>=0 ) { return s; } } break; case 71: { ANTLR3_UINT32 LA2_1784; ANTLR3_MARKER index2_1784; LA2_1784 = LA(1); index2_1784 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1784 == DIGIT) ) { s = 2281; } else if ( (LA2_1784 == DOT) ) { s = 2282; } else if ( (LA2_1784 == COLON) ) { s = 1298; } else if ( (LA2_1784 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1784 == CRLF) ) { s = 205; } else if ( (LA2_1784 == SEMI) ) { s = 853; } else if ( (LA2_1784 == QMARK) ) { s = 854; } else if ( (LA2_1784 == DASH) ) { s = 876; } else if ( (LA2_1784 == COMMON_CHAR || LA2_1784 == HEX_CHAR) ) { s = 874; } else if ( (LA2_1784 == SLASH) ) { s = 241; } else if ( (LA2_1784 == EMARK || LA2_1784 == LPAREN || LA2_1784 == RPAREN || ((LA2_1784 >= SQUOTE) && (LA2_1784 <= USCORE))) ) { s = 494; } else if ( (LA2_1784 == PERCENT) ) { s = 495; } else if ( (LA2_1784 == AT) ) { s = 497; } else if ( (LA2_1784 == AND) ) { s = 498; } else if ( (LA2_1784 == EQUAL) ) { s = 499; } else if ( (LA2_1784 == PLUS) ) { s = 500; } else if ( (LA2_1784 == DOLLARD) ) { s = 501; } else if ( (LA2_1784 == COMMA) ) { s = 502; } SEEK(index2_1784); if ( s>=0 ) { return s; } } break; case 72: { ANTLR3_UINT32 LA2_2712; ANTLR3_MARKER index2_2712; LA2_2712 = LA(1); index2_2712 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2712 == DIGIT) ) { s = 3060; } else if ( (LA2_2712 == DOT) ) { s = 3061; } else if ( (LA2_2712 == COLON) ) { s = 1298; } else if ( (LA2_2712 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2712 == CRLF) ) { s = 205; } else if ( (LA2_2712 == SEMI) ) { s = 853; } else if ( (LA2_2712 == QMARK) ) { s = 854; } else if ( (LA2_2712 == DASH) ) { s = 876; } else if ( (LA2_2712 == COMMON_CHAR || LA2_2712 == HEX_CHAR) ) { s = 874; } else if ( (LA2_2712 == SLASH) ) { s = 241; } else if ( (LA2_2712 == EMARK || LA2_2712 == LPAREN || LA2_2712 == RPAREN || ((LA2_2712 >= SQUOTE) && (LA2_2712 <= USCORE))) ) { s = 494; } else if ( (LA2_2712 == PERCENT) ) { s = 495; } else if ( (LA2_2712 == AT) ) { s = 497; } else if ( (LA2_2712 == AND) ) { s = 498; } else if ( (LA2_2712 == EQUAL) ) { s = 499; } else if ( (LA2_2712 == PLUS) ) { s = 500; } else if ( (LA2_2712 == DOLLARD) ) { s = 501; } else if ( (LA2_2712 == COMMA) ) { s = 502; } SEEK(index2_2712); if ( s>=0 ) { return s; } } break; case 73: { ANTLR3_UINT32 LA2_3369; ANTLR3_MARKER index2_3369; LA2_3369 = LA(1); index2_3369 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3369 == DIGIT) ) { s = 3596; } else if ( (LA2_3369 == COLON) ) { s = 1298; } else if ( (LA2_3369 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3369 == CRLF) ) { s = 205; } else if ( (LA2_3369 == SEMI) ) { s = 853; } else if ( (LA2_3369 == QMARK) ) { s = 854; } else if ( (LA2_3369 == DOT) ) { s = 1297; } else if ( (LA2_3369 == DASH) ) { s = 876; } else if ( (LA2_3369 == COMMON_CHAR || LA2_3369 == HEX_CHAR) ) { s = 874; } else if ( (LA2_3369 == SLASH) ) { s = 241; } else if ( (LA2_3369 == EMARK || LA2_3369 == LPAREN || LA2_3369 == RPAREN || ((LA2_3369 >= SQUOTE) && (LA2_3369 <= USCORE))) ) { s = 494; } else if ( (LA2_3369 == PERCENT) ) { s = 495; } else if ( (LA2_3369 == AT) ) { s = 497; } else if ( (LA2_3369 == AND) ) { s = 498; } else if ( (LA2_3369 == EQUAL) ) { s = 499; } else if ( (LA2_3369 == PLUS) ) { s = 500; } else if ( (LA2_3369 == DOLLARD) ) { s = 501; } else if ( (LA2_3369 == COMMA) ) { s = 502; } SEEK(index2_3369); if ( s>=0 ) { return s; } } break; case 74: { ANTLR3_UINT32 LA2_3201; ANTLR3_MARKER index2_3201; LA2_3201 = LA(1); index2_3201 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3201 == QMARK) ) { s = 854; } else if ( (LA2_3201 == SP) ) { s = 1585; } else if ( (LA2_3201 == SLASH) ) { s = 3153; } else if ( (LA2_3201 == SEMI) ) { s = 2051; } else if ( (LA2_3201 == COMMON_CHAR || LA2_3201 == HEX_CHAR) ) { s = 3200; } else if ( (LA2_3201 == DIGIT) ) { s = 3201; } else if ( (LA2_3201 == DOT) ) { s = 3202; } else if ( (LA2_3201 == PERCENT) ) { s = 3203; } else if ( (LA2_3201 == COLON) ) { s = 3204; } else if ( (LA2_3201 == AT) ) { s = 1576; } else if ( (LA2_3201 == AND) ) { s = 3205; } else if ( (LA2_3201 == EQUAL) ) { s = 1578; } else if ( (LA2_3201 == PLUS) ) { s = 3206; } else if ( (LA2_3201 == DOLLARD) ) { s = 3207; } else if ( (LA2_3201 == COMMA) ) { s = 1581; } else if ( (LA2_3201 == CRLF) ) { s = 1588; } else if ( (LA2_3201 == BQUOTE) ) { s = 2092; } else if ( (LA2_3201 == DASH || LA2_3201 == EMARK || LA2_3201 == LPAREN || LA2_3201 == RPAREN || ((LA2_3201 >= SQUOTE) && (LA2_3201 <= USCORE))) ) { s = 3208; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3201 == LSBRAQUET || LA2_3201 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3201); if ( s>=0 ) { return s; } } break; case 75: { ANTLR3_UINT32 LA2_1095; ANTLR3_MARKER index2_1095; LA2_1095 = LA(1); index2_1095 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1095 == AT) ) { s = 89; } else if ( (LA2_1095 == COMMON_CHAR || LA2_1095 == HEX_CHAR) ) { s = 1095; } else if ( (LA2_1095 == DIGIT) ) { s = 1096; } else if ( (LA2_1095 == DASH || LA2_1095 == DOT || LA2_1095 == EMARK || LA2_1095 == LPAREN || LA2_1095 == RPAREN || ((LA2_1095 >= SQUOTE) && (LA2_1095 <= USCORE))) ) { s = 1097; } else if ( (LA2_1095 == PERCENT) ) { s = 1098; } else if ( (LA2_1095 == AND) ) { s = 1099; } else if ( (LA2_1095 == EQUAL) ) { s = 194; } else if ( (LA2_1095 == PLUS) ) { s = 1100; } else if ( (LA2_1095 == DOLLARD) ) { s = 1101; } else if ( (LA2_1095 == COMMA) ) { s = 197; } else if ( (LA2_1095 == SP) ) { s = 35; } else if ( (LA2_1095 == QMARK) ) { s = 1102; } else if ( (LA2_1095 == SEMI) ) { s = 105; } else if ( (LA2_1095 == COLON || LA2_1095 == SLASH) ) { s = 1103; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1095 == LSBRAQUET || LA2_1095 == RSBRAQUET) ) { s = 1104; } SEEK(index2_1095); if ( s>=0 ) { return s; } } break; case 76: { ANTLR3_UINT32 LA2_3204; ANTLR3_MARKER index2_3204; LA2_3204 = LA(1); index2_3204 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3204 == QMARK) ) { s = 854; } else if ( (LA2_3204 == SP) ) { s = 204; } else if ( (LA2_3204 == SLASH) ) { s = 2830; } else if ( (LA2_3204 == SEMI) ) { s = 2477; } else if ( (LA2_3204 == COMMON_CHAR || LA2_3204 == HEX_CHAR) ) { s = 3211; } else if ( (LA2_3204 == DIGIT) ) { s = 3212; } else if ( (LA2_3204 == DOT) ) { s = 3213; } else if ( (LA2_3204 == PERCENT) ) { s = 3214; } else if ( (LA2_3204 == COLON) ) { s = 3204; } else if ( (LA2_3204 == AT) ) { s = 1576; } else if ( (LA2_3204 == AND) ) { s = 3205; } else if ( (LA2_3204 == EQUAL) ) { s = 1578; } else if ( (LA2_3204 == PLUS) ) { s = 3215; } else if ( (LA2_3204 == DOLLARD) ) { s = 3207; } else if ( (LA2_3204 == COMMA) ) { s = 1581; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3204 == CRLF) ) { s = 205; } else if ( (LA2_3204 == DASH || LA2_3204 == EMARK || LA2_3204 == LPAREN || LA2_3204 == RPAREN || ((LA2_3204 >= SQUOTE) && (LA2_3204 <= USCORE))) ) { s = 3216; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3204 == LSBRAQUET || LA2_3204 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3204); if ( s>=0 ) { return s; } } break; case 77: { ANTLR3_UINT32 LA2_2284; ANTLR3_MARKER index2_2284; LA2_2284 = LA(1); index2_2284 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2284 == DOT) ) { s = 2714; } else if ( (LA2_2284 == COMMON_CHAR || LA2_2284 == HEX_CHAR) ) { s = 2715; } else if ( (LA2_2284 == DIGIT) ) { s = 2716; } else if ( (LA2_2284 == AND || LA2_2284 == COLON || LA2_2284 == DOLLARD || LA2_2284 == PLUS || LA2_2284 == SLASH) ) { s = 2717; } else if ( (LA2_2284 == DASH || LA2_2284 == EMARK || LA2_2284 == LPAREN || LA2_2284 == RPAREN || ((LA2_2284 >= SQUOTE) && (LA2_2284 <= USCORE))) ) { s = 2718; } else if ( (LA2_2284 == PERCENT) ) { s = 2719; } else if ( (LA2_2284 == SP) ) { s = 35; } else if ( (LA2_2284 == SEMI) ) { s = 505; } else if ( (LA2_2284 == COMMA) ) { s = 506; } else if ( (LA2_2284 == QMARK) ) { s = 507; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2284 == LSBRAQUET || LA2_2284 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_2284 == AT || LA2_2284 == EQUAL) ) { s = 508; } SEEK(index2_2284); if ( s>=0 ) { return s; } } break; case 78: { ANTLR3_UINT32 LA2_2468; ANTLR3_MARKER index2_2468; LA2_2468 = LA(1); index2_2468 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2468 == SEMI) ) { s = 2477; } else if ( (LA2_2468 == QMARK) ) { s = 854; } else if ( (LA2_2468 == SP) ) { s = 204; } else if ( (LA2_2468 == SLASH) ) { s = 2009; } else if ( (LA2_2468 == COMMON_CHAR || LA2_2468 == HEX_CHAR) ) { s = 2468; } else if ( (LA2_2468 == DIGIT) ) { s = 2469; } else if ( (LA2_2468 == DOT) ) { s = 2470; } else if ( (LA2_2468 == PERCENT) ) { s = 2471; } else if ( (LA2_2468 == COLON) ) { s = 2472; } else if ( (LA2_2468 == AT) ) { s = 1134; } else if ( (LA2_2468 == AND) ) { s = 2473; } else if ( (LA2_2468 == EQUAL) ) { s = 2474; } else if ( (LA2_2468 == PLUS) ) { s = 2475; } else if ( (LA2_2468 == DOLLARD) ) { s = 2476; } else if ( (LA2_2468 == COMMA) ) { s = 1139; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2468 == CRLF) ) { s = 205; } else if ( (LA2_2468 == DASH || LA2_2468 == EMARK || LA2_2468 == LPAREN || LA2_2468 == RPAREN || ((LA2_2468 >= SQUOTE) && (LA2_2468 <= USCORE))) ) { s = 2478; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2468 == LSBRAQUET || LA2_2468 == RSBRAQUET) ) { s = 405; } SEEK(index2_2468); if ( s>=0 ) { return s; } } break; case 79: { ANTLR3_UINT32 LA2_3205; ANTLR3_MARKER index2_3205; LA2_3205 = LA(1); index2_3205 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3205 == QMARK) ) { s = 854; } else if ( (LA2_3205 == SP) ) { s = 204; } else if ( (LA2_3205 == SLASH) ) { s = 2830; } else if ( (LA2_3205 == SEMI) ) { s = 2477; } else if ( (LA2_3205 == COMMON_CHAR || LA2_3205 == HEX_CHAR) ) { s = 3211; } else if ( (LA2_3205 == DIGIT) ) { s = 3212; } else if ( (LA2_3205 == DOT) ) { s = 3213; } else if ( (LA2_3205 == PERCENT) ) { s = 3214; } else if ( (LA2_3205 == COLON) ) { s = 3204; } else if ( (LA2_3205 == AT) ) { s = 1576; } else if ( (LA2_3205 == AND) ) { s = 3205; } else if ( (LA2_3205 == EQUAL) ) { s = 1578; } else if ( (LA2_3205 == PLUS) ) { s = 3215; } else if ( (LA2_3205 == DOLLARD) ) { s = 3207; } else if ( (LA2_3205 == COMMA) ) { s = 1581; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3205 == CRLF) ) { s = 205; } else if ( (LA2_3205 == DASH || LA2_3205 == EMARK || LA2_3205 == LPAREN || LA2_3205 == RPAREN || ((LA2_3205 >= SQUOTE) && (LA2_3205 <= USCORE))) ) { s = 3216; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3205 == LSBRAQUET || LA2_3205 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3205); if ( s>=0 ) { return s; } } break; case 80: { ANTLR3_UINT32 LA2_3408; ANTLR3_MARKER index2_3408; LA2_3408 = LA(1); index2_3408 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3408 == SEMI) ) { s = 3151; } else if ( (LA2_3408 == QMARK) ) { s = 854; } else if ( (LA2_3408 == SP) ) { s = 204; } else if ( (LA2_3408 == SLASH) ) { s = 3123; } else if ( (LA2_3408 == COMMON_CHAR || LA2_3408 == HEX_CHAR) ) { s = 3406; } else if ( (LA2_3408 == DIGIT) ) { s = 3407; } else if ( (LA2_3408 == DOT) ) { s = 3408; } else if ( (LA2_3408 == PERCENT) ) { s = 3409; } else if ( (LA2_3408 == COLON) ) { s = 3410; } else if ( (LA2_3408 == AT) ) { s = 2504; } else if ( (LA2_3408 == AND) ) { s = 3411; } else if ( (LA2_3408 == EQUAL) ) { s = 2506; } else if ( (LA2_3408 == PLUS) ) { s = 3412; } else if ( (LA2_3408 == DOLLARD) ) { s = 3413; } else if ( (LA2_3408 == COMMA) ) { s = 2509; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3408 == CRLF) ) { s = 205; } else if ( (LA2_3408 == DASH || LA2_3408 == EMARK || LA2_3408 == LPAREN || LA2_3408 == RPAREN || ((LA2_3408 >= SQUOTE) && (LA2_3408 <= USCORE))) ) { s = 3414; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3408 == LSBRAQUET || LA2_3408 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3408); if ( s>=0 ) { return s; } } break; case 81: { ANTLR3_UINT32 LA2_3708; ANTLR3_MARKER index2_3708; LA2_3708 = LA(1); index2_3708 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3708 == SLASH) ) { s = 3678; } else if ( (LA2_3708 == QMARK) ) { s = 854; } else if ( (LA2_3708 == SP) ) { s = 1585; } else if ( (LA2_3708 == CRLF) ) { s = 1588; } else if ( (LA2_3708 == SEMI) ) { s = 2986; } else if ( (LA2_3708 == COMMON_CHAR || LA2_3708 == HEX_CHAR) ) { s = 3707; } else if ( (LA2_3708 == DIGIT) ) { s = 3708; } else if ( (LA2_3708 == DOT) ) { s = 3709; } else if ( (LA2_3708 == PERCENT) ) { s = 3710; } else if ( (LA2_3708 == PLUS) ) { s = 3711; } else if ( (LA2_3708 == BQUOTE) ) { s = 2092; } else if ( (LA2_3708 == COLON) ) { s = 3712; } else if ( (LA2_3708 == AT) ) { s = 2578; } else if ( (LA2_3708 == AND) ) { s = 3713; } else if ( (LA2_3708 == EQUAL) ) { s = 2580; } else if ( (LA2_3708 == DOLLARD) ) { s = 3714; } else if ( (LA2_3708 == COMMA) ) { s = 2583; } else if ( (LA2_3708 == DASH || LA2_3708 == EMARK || LA2_3708 == LPAREN || LA2_3708 == RPAREN || ((LA2_3708 >= SQUOTE) && (LA2_3708 <= USCORE))) ) { s = 3715; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3708 == LSBRAQUET || LA2_3708 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3708); if ( s>=0 ) { return s; } } break; case 82: { ANTLR3_UINT32 LA2_3343; ANTLR3_MARKER index2_3343; LA2_3343 = LA(1); index2_3343 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3343 == SEMI) ) { s = 3351; } else if ( (LA2_3343 == QMARK) ) { s = 1751; } else if ( (LA2_3343 == SP) ) { s = 204; } else if ( (LA2_3343 == SLASH) ) { s = 3031; } else if ( (LA2_3343 == COMMON_CHAR || LA2_3343 == HEX_CHAR) ) { s = 3342; } else if ( (LA2_3343 == DIGIT) ) { s = 3343; } else if ( (LA2_3343 == DOT) ) { s = 3344; } else if ( (LA2_3343 == PERCENT) ) { s = 3345; } else if ( (LA2_3343 == COLON) ) { s = 3346; } else if ( (LA2_3343 == AT) ) { s = 2684; } else if ( (LA2_3343 == AND) ) { s = 3347; } else if ( (LA2_3343 == EQUAL) ) { s = 3348; } else if ( (LA2_3343 == PLUS) ) { s = 3349; } else if ( (LA2_3343 == DOLLARD) ) { s = 3350; } else if ( (LA2_3343 == COMMA) ) { s = 2689; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3343 == CRLF) ) { s = 205; } else if ( (LA2_3343 == DASH || LA2_3343 == EMARK || LA2_3343 == LPAREN || LA2_3343 == RPAREN || ((LA2_3343 >= SQUOTE) && (LA2_3343 <= USCORE))) ) { s = 3352; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3343 == LSBRAQUET || LA2_3343 == RSBRAQUET) ) { s = 405; } SEEK(index2_3343); if ( s>=0 ) { return s; } } break; case 83: { ANTLR3_UINT32 LA2_3207; ANTLR3_MARKER index2_3207; LA2_3207 = LA(1); index2_3207 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3207 == QMARK) ) { s = 854; } else if ( (LA2_3207 == SP) ) { s = 204; } else if ( (LA2_3207 == SLASH) ) { s = 2830; } else if ( (LA2_3207 == SEMI) ) { s = 2477; } else if ( (LA2_3207 == COMMON_CHAR || LA2_3207 == HEX_CHAR) ) { s = 3211; } else if ( (LA2_3207 == DIGIT) ) { s = 3212; } else if ( (LA2_3207 == DOT) ) { s = 3213; } else if ( (LA2_3207 == PERCENT) ) { s = 3214; } else if ( (LA2_3207 == COLON) ) { s = 3204; } else if ( (LA2_3207 == AT) ) { s = 1576; } else if ( (LA2_3207 == AND) ) { s = 3205; } else if ( (LA2_3207 == EQUAL) ) { s = 1578; } else if ( (LA2_3207 == PLUS) ) { s = 3215; } else if ( (LA2_3207 == DOLLARD) ) { s = 3207; } else if ( (LA2_3207 == COMMA) ) { s = 1581; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3207 == CRLF) ) { s = 205; } else if ( (LA2_3207 == DASH || LA2_3207 == EMARK || LA2_3207 == LPAREN || LA2_3207 == RPAREN || ((LA2_3207 >= SQUOTE) && (LA2_3207 <= USCORE))) ) { s = 3216; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3207 == LSBRAQUET || LA2_3207 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3207); if ( s>=0 ) { return s; } } break; case 84: { ANTLR3_UINT32 LA2_3569; ANTLR3_MARKER index2_3569; LA2_3569 = LA(1); index2_3569 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3569 == SEMI) ) { s = 3351; } else if ( (LA2_3569 == QMARK) ) { s = 1751; } else if ( (LA2_3569 == SP) ) { s = 204; } else if ( (LA2_3569 == SLASH) ) { s = 3323; } else if ( (LA2_3569 == COMMON_CHAR || LA2_3569 == HEX_CHAR) ) { s = 3568; } else if ( (LA2_3569 == DIGIT) ) { s = 3569; } else if ( (LA2_3569 == DOT) ) { s = 3570; } else if ( (LA2_3569 == PERCENT) ) { s = 3571; } else if ( (LA2_3569 == COLON) ) { s = 3572; } else if ( (LA2_3569 == AT) ) { s = 2684; } else if ( (LA2_3569 == AND) ) { s = 3573; } else if ( (LA2_3569 == EQUAL) ) { s = 2686; } else if ( (LA2_3569 == PLUS) ) { s = 3574; } else if ( (LA2_3569 == DOLLARD) ) { s = 3575; } else if ( (LA2_3569 == COMMA) ) { s = 2689; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3569 == CRLF) ) { s = 205; } else if ( (LA2_3569 == DASH || LA2_3569 == EMARK || LA2_3569 == LPAREN || LA2_3569 == RPAREN || ((LA2_3569 >= SQUOTE) && (LA2_3569 <= USCORE))) ) { s = 3576; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3569 == LSBRAQUET || LA2_3569 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3569); if ( s>=0 ) { return s; } } break; case 85: { ANTLR3_UINT32 LA2_3215; ANTLR3_MARKER index2_3215; LA2_3215 = LA(1); index2_3215 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3215 == QMARK) ) { s = 854; } else if ( (LA2_3215 == SP) ) { s = 204; } else if ( (LA2_3215 == SLASH) ) { s = 2830; } else if ( (LA2_3215 == SEMI) ) { s = 2477; } else if ( (LA2_3215 == COMMON_CHAR || LA2_3215 == HEX_CHAR) ) { s = 3211; } else if ( (LA2_3215 == DIGIT) ) { s = 3212; } else if ( (LA2_3215 == DOT) ) { s = 3213; } else if ( (LA2_3215 == PERCENT) ) { s = 3214; } else if ( (LA2_3215 == COLON) ) { s = 3204; } else if ( (LA2_3215 == AT) ) { s = 1576; } else if ( (LA2_3215 == AND) ) { s = 3205; } else if ( (LA2_3215 == EQUAL) ) { s = 1578; } else if ( (LA2_3215 == PLUS) ) { s = 3215; } else if ( (LA2_3215 == DOLLARD) ) { s = 3207; } else if ( (LA2_3215 == COMMA) ) { s = 1581; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3215 == CRLF) ) { s = 205; } else if ( (LA2_3215 == DASH || LA2_3215 == EMARK || LA2_3215 == LPAREN || LA2_3215 == RPAREN || ((LA2_3215 >= SQUOTE) && (LA2_3215 <= USCORE))) ) { s = 3216; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3215 == LSBRAQUET || LA2_3215 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3215); if ( s>=0 ) { return s; } } break; case 86: { ANTLR3_UINT32 LA2_3211; ANTLR3_MARKER index2_3211; LA2_3211 = LA(1); index2_3211 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3211 == QMARK) ) { s = 854; } else if ( (LA2_3211 == SP) ) { s = 204; } else if ( (LA2_3211 == SLASH) ) { s = 2830; } else if ( (LA2_3211 == SEMI) ) { s = 2477; } else if ( (LA2_3211 == COMMON_CHAR || LA2_3211 == HEX_CHAR) ) { s = 3211; } else if ( (LA2_3211 == DIGIT) ) { s = 3212; } else if ( (LA2_3211 == DOT) ) { s = 3213; } else if ( (LA2_3211 == PERCENT) ) { s = 3214; } else if ( (LA2_3211 == COLON) ) { s = 3204; } else if ( (LA2_3211 == AT) ) { s = 1576; } else if ( (LA2_3211 == AND) ) { s = 3205; } else if ( (LA2_3211 == EQUAL) ) { s = 1578; } else if ( (LA2_3211 == PLUS) ) { s = 3215; } else if ( (LA2_3211 == DOLLARD) ) { s = 3207; } else if ( (LA2_3211 == COMMA) ) { s = 1581; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3211 == CRLF) ) { s = 205; } else if ( (LA2_3211 == DASH || LA2_3211 == EMARK || LA2_3211 == LPAREN || LA2_3211 == RPAREN || ((LA2_3211 >= SQUOTE) && (LA2_3211 <= USCORE))) ) { s = 3216; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3211 == LSBRAQUET || LA2_3211 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3211); if ( s>=0 ) { return s; } } break; case 87: { ANTLR3_UINT32 LA2_395; ANTLR3_MARKER index2_395; LA2_395 = LA(1); index2_395 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_395 == AT) ) { s = 89; } else if ( (LA2_395 == COMMON_CHAR || LA2_395 == HEX_CHAR) ) { s = 189; } else if ( (LA2_395 == DIGIT) ) { s = 395; } else if ( (LA2_395 == DASH || LA2_395 == DOT || LA2_395 == EMARK || LA2_395 == LPAREN || LA2_395 == RPAREN || ((LA2_395 >= SQUOTE) && (LA2_395 <= USCORE))) ) { s = 191; } else if ( (LA2_395 == PERCENT) ) { s = 192; } else if ( (LA2_395 == AND) ) { s = 193; } else if ( (LA2_395 == EQUAL) ) { s = 194; } else if ( (LA2_395 == PLUS) ) { s = 195; } else if ( (LA2_395 == DOLLARD) ) { s = 196; } else if ( (LA2_395 == COMMA) ) { s = 197; } else if ( (LA2_395 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_395 == CRLF) ) { s = 205; } else if ( (LA2_395 == SEMI) ) { s = 693; } else if ( (LA2_395 == QMARK) ) { s = 694; } else if ( (LA2_395 == COLON || LA2_395 == SLASH) ) { s = 108; } SEEK(index2_395); if ( s>=0 ) { return s; } } break; case 88: { ANTLR3_UINT32 LA2_2823; ANTLR3_MARKER index2_2823; LA2_2823 = LA(1); index2_2823 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2823 == SEMI) ) { s = 2025; } else if ( (LA2_2823 == QMARK) ) { s = 242; } else if ( (LA2_2823 == SP) ) { s = 35; } else if ( (LA2_2823 == SLASH) ) { s = 3123; } else if ( (LA2_2823 == COMMON_CHAR || LA2_2823 == HEX_CHAR) ) { s = 3124; } else if ( (LA2_2823 == DIGIT) ) { s = 3125; } else if ( (LA2_2823 == DOT) ) { s = 3126; } else if ( (LA2_2823 == PERCENT) ) { s = 3127; } else if ( (LA2_2823 == COLON) ) { s = 3128; } else if ( (LA2_2823 == AT) ) { s = 2019; } else if ( (LA2_2823 == AND) ) { s = 3129; } else if ( (LA2_2823 == EQUAL) ) { s = 2021; } else if ( (LA2_2823 == PLUS) ) { s = 3130; } else if ( (LA2_2823 == DOLLARD) ) { s = 3131; } else if ( (LA2_2823 == COMMA) ) { s = 2024; } else if ( (LA2_2823 == DASH || LA2_2823 == EMARK || LA2_2823 == LPAREN || LA2_2823 == RPAREN || ((LA2_2823 >= SQUOTE) && (LA2_2823 <= USCORE))) ) { s = 3132; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2823 == LSBRAQUET || LA2_2823 == RSBRAQUET) ) { s = 1080; } SEEK(index2_2823); if ( s>=0 ) { return s; } } break; case 89: { ANTLR3_UINT32 LA2_2552; ANTLR3_MARKER index2_2552; LA2_2552 = LA(1); index2_2552 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2552 == SP) ) { s = 2090; } else if ( (LA2_2552 == CRLF) ) { s = 2091; } else if ( (LA2_2552 == COMMON_CHAR || LA2_2552 == HEX_CHAR) ) { s = 2912; } else if ( (LA2_2552 == DIGIT) ) { s = 2913; } else if ( (LA2_2552 == DOT) ) { s = 2914; } else if ( (LA2_2552 == PERCENT) ) { s = 2915; } else if ( (LA2_2552 == PLUS) ) { s = 2916; } else if ( (LA2_2552 == BQUOTE) ) { s = 2092; } else if ( (LA2_2552 == DQUOTE) ) { s = 2093; } else if ( (LA2_2552 == DASH || LA2_2552 == EMARK || LA2_2552 == LPAREN || LA2_2552 == RPAREN || ((LA2_2552 >= SQUOTE) && (LA2_2552 <= USCORE))) ) { s = 2917; } else if ( (LA2_2552 == SLASH) ) { s = 2245; } else if ( (LA2_2552 == QMARK) ) { s = 242; } else if ( (LA2_2552 == COLON) ) { s = 2653; } else if ( (LA2_2552 == SEMI) ) { s = 458; } else if ( (LA2_2552 == AND) ) { s = 2654; } else if ( (LA2_2552 == AT) ) { s = 810; } else if ( (LA2_2552 == DOLLARD) ) { s = 2656; } else if ( (LA2_2552 == EQUAL) ) { s = 812; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2552 == LSBRAQUET || LA2_2552 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_2552 == COMMA) ) { s = 815; } SEEK(index2_2552); if ( s>=0 ) { return s; } } break; case 90: { ANTLR3_UINT32 LA2_2068; ANTLR3_MARKER index2_2068; LA2_2068 = LA(1); index2_2068 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2068 == SP) ) { s = 2456; } else if ( (LA2_2068 == CRLF) ) { s = 2458; } else if ( (LA2_2068 == EQUAL) ) { s = 2552; } else if ( (LA2_2068 == SLASH) ) { s = 2553; } else if ( (LA2_2068 == QMARK) ) { s = 854; } else if ( (LA2_2068 == SEMI) ) { s = 1630; } else if ( (LA2_2068 == COMMON_CHAR || LA2_2068 == HEX_CHAR) ) { s = 2068; } else if ( (LA2_2068 == DIGIT) ) { s = 2069; } else if ( (LA2_2068 == DOT) ) { s = 2070; } else if ( (LA2_2068 == PERCENT) ) { s = 2071; } else if ( (LA2_2068 == PLUS) ) { s = 2072; } else if ( (LA2_2068 == BQUOTE) ) { s = 1203; } else if ( (LA2_2068 == DASH || LA2_2068 == EMARK || LA2_2068 == LPAREN || LA2_2068 == RPAREN || ((LA2_2068 >= SQUOTE) && (LA2_2068 <= USCORE))) ) { s = 2073; } else if ( (LA2_2068 == COLON) ) { s = 1727; } else if ( (LA2_2068 == AND) ) { s = 1730; } else if ( (LA2_2068 == AT) ) { s = 810; } else if ( (LA2_2068 == DOLLARD) ) { s = 1732; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2068 == LSBRAQUET || LA2_2068 == RSBRAQUET) ) { s = 405; } else if ( (LA2_2068 == COMMA) ) { s = 815; } SEEK(index2_2068); if ( s>=0 ) { return s; } } break; case 91: { ANTLR3_UINT32 LA2_2927; ANTLR3_MARKER index2_2927; LA2_2927 = LA(1); index2_2927 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2927 == COMMON_CHAR || LA2_2927 == HEX_CHAR) ) { s = 3236; } else if ( (LA2_2927 == DIGIT) ) { s = 3237; } else if ( (LA2_2927 == DOT) ) { s = 3238; } else if ( (LA2_2927 == PERCENT) ) { s = 3239; } else if ( (LA2_2927 == COLON) ) { s = 2954; } else if ( (LA2_2927 == AT) ) { s = 2111; } else if ( (LA2_2927 == AND) ) { s = 2955; } else if ( (LA2_2927 == EQUAL) ) { s = 2113; } else if ( (LA2_2927 == PLUS) ) { s = 3240; } else if ( (LA2_2927 == DOLLARD) ) { s = 2956; } else if ( (LA2_2927 == COMMA) ) { s = 2116; } else if ( (LA2_2927 == SLASH) ) { s = 2928; } else if ( (LA2_2927 == QMARK) ) { s = 854; } else if ( (LA2_2927 == SP) ) { s = 402; } else if ( (LA2_2927 == SEMI) ) { s = 2927; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2927 == CRLF) ) { s = 403; } else if ( (LA2_2927 == DASH || LA2_2927 == EMARK || LA2_2927 == LPAREN || LA2_2927 == RPAREN || ((LA2_2927 >= SQUOTE) && (LA2_2927 <= USCORE))) ) { s = 3241; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2927 == LSBRAQUET || LA2_2927 == RSBRAQUET) ) { s = 405; } SEEK(index2_2927); if ( s>=0 ) { return s; } } break; case 92: { ANTLR3_UINT32 LA2_3643; ANTLR3_MARKER index2_3643; LA2_3643 = LA(1); index2_3643 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3643 == SLASH) ) { s = 3435; } else if ( (LA2_3643 == QMARK) ) { s = 242; } else if ( (LA2_3643 == SP) ) { s = 35; } else if ( (LA2_3643 == SEMI) ) { s = 1716; } else if ( (LA2_3643 == COMMON_CHAR || LA2_3643 == HEX_CHAR) ) { s = 3773; } else if ( (LA2_3643 == DIGIT) ) { s = 3774; } else if ( (LA2_3643 == DOT) ) { s = 3775; } else if ( (LA2_3643 == PERCENT) ) { s = 3776; } else if ( (LA2_3643 == COLON) ) { s = 3777; } else if ( (LA2_3643 == AT) ) { s = 2184; } else if ( (LA2_3643 == AND) ) { s = 3778; } else if ( (LA2_3643 == EQUAL) ) { s = 2186; } else if ( (LA2_3643 == PLUS) ) { s = 3779; } else if ( (LA2_3643 == DOLLARD) ) { s = 3780; } else if ( (LA2_3643 == COMMA) ) { s = 2189; } else if ( (LA2_3643 == DASH || LA2_3643 == EMARK || LA2_3643 == LPAREN || LA2_3643 == RPAREN || ((LA2_3643 >= SQUOTE) && (LA2_3643 <= USCORE))) ) { s = 3781; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3643 == LSBRAQUET || LA2_3643 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3643); if ( s>=0 ) { return s; } } break; case 93: { ANTLR3_UINT32 LA2_3861; ANTLR3_MARKER index2_3861; LA2_3861 = LA(1); index2_3861 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3861 == SLASH) ) { s = 2928; } else if ( (LA2_3861 == QMARK) ) { s = 854; } else if ( (LA2_3861 == SP) ) { s = 204; } else if ( (LA2_3861 == SEMI) ) { s = 3530; } else if ( (LA2_3861 == COMMON_CHAR || LA2_3861 == HEX_CHAR) ) { s = 3691; } else if ( (LA2_3861 == DIGIT) ) { s = 3692; } else if ( (LA2_3861 == DOT) ) { s = 3693; } else if ( (LA2_3861 == PERCENT) ) { s = 3694; } else if ( (LA2_3861 == COLON) ) { s = 3695; } else if ( (LA2_3861 == AT) ) { s = 3271; } else if ( (LA2_3861 == AND) ) { s = 3696; } else if ( (LA2_3861 == EQUAL) ) { s = 3800; } else if ( (LA2_3861 == PLUS) ) { s = 3697; } else if ( (LA2_3861 == DOLLARD) ) { s = 3698; } else if ( (LA2_3861 == COMMA) ) { s = 3276; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3861 == CRLF) ) { s = 205; } else if ( (LA2_3861 == DASH || LA2_3861 == EMARK || LA2_3861 == LPAREN || LA2_3861 == RPAREN || ((LA2_3861 >= SQUOTE) && (LA2_3861 <= USCORE))) ) { s = 3699; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3861 == LSBRAQUET || LA2_3861 == RSBRAQUET) ) { s = 405; } SEEK(index2_3861); if ( s>=0 ) { return s; } } break; case 94: { ANTLR3_UINT32 LA2_3332; ANTLR3_MARKER index2_3332; LA2_3332 = LA(1); index2_3332 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3332 == SEMI) ) { s = 3030; } else if ( (LA2_3332 == SLASH) ) { s = 3323; } else if ( (LA2_3332 == QMARK) ) { s = 1751; } else if ( (LA2_3332 == SP) ) { s = 204; } else if ( (LA2_3332 == COMMON_CHAR || LA2_3332 == HEX_CHAR) ) { s = 3324; } else if ( (LA2_3332 == DIGIT) ) { s = 3325; } else if ( (LA2_3332 == DOT) ) { s = 3326; } else if ( (LA2_3332 == PERCENT) ) { s = 3327; } else if ( (LA2_3332 == COLON) ) { s = 3328; } else if ( (LA2_3332 == AT) ) { s = 2229; } else if ( (LA2_3332 == AND) ) { s = 3329; } else if ( (LA2_3332 == EQUAL) ) { s = 2231; } else if ( (LA2_3332 == PLUS) ) { s = 3330; } else if ( (LA2_3332 == DOLLARD) ) { s = 3331; } else if ( (LA2_3332 == COMMA) ) { s = 2234; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3332 == CRLF) ) { s = 205; } else if ( (LA2_3332 == DASH || LA2_3332 == EMARK || LA2_3332 == LPAREN || LA2_3332 == RPAREN || ((LA2_3332 >= SQUOTE) && (LA2_3332 <= USCORE))) ) { s = 3332; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3332 == LSBRAQUET || LA2_3332 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3332); if ( s>=0 ) { return s; } } break; case 95: { ANTLR3_UINT32 LA2_516; ANTLR3_MARKER index2_516; LA2_516 = LA(1); index2_516 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_516 == COMMON_CHAR || LA2_516 == HEX_CHAR) ) { s = 516; } else if ( (LA2_516 == DIGIT) ) { s = 517; } else if ( (LA2_516 == DASH) ) { s = 518; } else if ( (LA2_516 == DOT) ) { s = 851; } else if ( (LA2_516 == COLON) ) { s = 852; } else if ( (LA2_516 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_516 == CRLF) ) { s = 205; } else if ( (LA2_516 == SEMI) ) { s = 853; } else if ( (LA2_516 == QMARK) ) { s = 854; } else if ( (LA2_516 == SLASH) ) { s = 241; } else if ( (LA2_516 == EMARK || LA2_516 == LPAREN || LA2_516 == RPAREN || ((LA2_516 >= SQUOTE) && (LA2_516 <= USCORE))) ) { s = 246; } else if ( (LA2_516 == PERCENT) ) { s = 247; } else if ( (LA2_516 == AT) ) { s = 248; } else if ( (LA2_516 == AND) ) { s = 249; } else if ( (LA2_516 == EQUAL) ) { s = 250; } else if ( (LA2_516 == PLUS) ) { s = 251; } else if ( (LA2_516 == DOLLARD) ) { s = 252; } else if ( (LA2_516 == COMMA) ) { s = 253; } SEEK(index2_516); if ( s>=0 ) { return s; } } break; case 96: { ANTLR3_UINT32 LA2_2839; ANTLR3_MARKER index2_2839; LA2_2839 = LA(1); index2_2839 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2839 == SLASH) ) { s = 3153; } else if ( (LA2_2839 == QMARK) ) { s = 854; } else if ( (LA2_2839 == SP) ) { s = 1585; } else if ( (LA2_2839 == SEMI) ) { s = 1583; } else if ( (LA2_2839 == COMMON_CHAR || LA2_2839 == HEX_CHAR) ) { s = 2831; } else if ( (LA2_2839 == DIGIT) ) { s = 2832; } else if ( (LA2_2839 == DOT) ) { s = 2833; } else if ( (LA2_2839 == PERCENT) ) { s = 2834; } else if ( (LA2_2839 == COLON) ) { s = 2835; } else if ( (LA2_2839 == AT) ) { s = 1123; } else if ( (LA2_2839 == AND) ) { s = 2836; } else if ( (LA2_2839 == EQUAL) ) { s = 1125; } else if ( (LA2_2839 == PLUS) ) { s = 2837; } else if ( (LA2_2839 == DOLLARD) ) { s = 2838; } else if ( (LA2_2839 == COMMA) ) { s = 1128; } else if ( (LA2_2839 == CRLF) ) { s = 1588; } else if ( (LA2_2839 == BQUOTE) ) { s = 2092; } else if ( (LA2_2839 == DASH || LA2_2839 == EMARK || LA2_2839 == LPAREN || LA2_2839 == RPAREN || ((LA2_2839 >= SQUOTE) && (LA2_2839 <= USCORE))) ) { s = 2839; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2839 == LSBRAQUET || LA2_2839 == RSBRAQUET) ) { s = 1080; } SEEK(index2_2839); if ( s>=0 ) { return s; } } break; case 97: { ANTLR3_UINT32 LA2_2278; ANTLR3_MARKER index2_2278; LA2_2278 = LA(1); index2_2278 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2278 == DOT) ) { s = 2279; } else if ( (LA2_2278 == COMMON_CHAR || LA2_2278 == HEX_CHAR) ) { s = 1775; } else if ( (LA2_2278 == DIGIT) ) { s = 1776; } else if ( (LA2_2278 == DASH) ) { s = 1777; } else if ( (LA2_2278 == COLON) ) { s = 2276; } else if ( (LA2_2278 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2278 == CRLF) ) { s = 205; } else if ( (LA2_2278 == SEMI) ) { s = 1237; } else if ( (LA2_2278 == QMARK) ) { s = 854; } else if ( (LA2_2278 == SLASH) ) { s = 241; } else if ( (LA2_2278 == EMARK || LA2_2278 == LPAREN || LA2_2278 == RPAREN || ((LA2_2278 >= SQUOTE) && (LA2_2278 <= USCORE))) ) { s = 807; } else if ( (LA2_2278 == PERCENT) ) { s = 808; } else if ( (LA2_2278 == AT) ) { s = 810; } else if ( (LA2_2278 == AND) ) { s = 811; } else if ( (LA2_2278 == EQUAL) ) { s = 812; } else if ( (LA2_2278 == PLUS) ) { s = 813; } else if ( (LA2_2278 == DOLLARD) ) { s = 814; } else if ( (LA2_2278 == COMMA) ) { s = 815; } SEEK(index2_2278); if ( s>=0 ) { return s; } } break; case 98: { ANTLR3_UINT32 LA2_2828; ANTLR3_MARKER index2_2828; LA2_2828 = LA(1); index2_2828 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2828 == SEMI) ) { s = 2826; } else if ( (LA2_2828 == QMARK) ) { s = 854; } else if ( (LA2_2828 == SP) ) { s = 204; } else if ( (LA2_2828 == SLASH) ) { s = 2827; } else if ( (LA2_2828 == COMMON_CHAR || LA2_2828 == HEX_CHAR) ) { s = 2817; } else if ( (LA2_2828 == DIGIT) ) { s = 2818; } else if ( (LA2_2828 == DOT) ) { s = 2819; } else if ( (LA2_2828 == PERCENT) ) { s = 2820; } else if ( (LA2_2828 == COLON) ) { s = 2821; } else if ( (LA2_2828 == AT) ) { s = 2019; } else if ( (LA2_2828 == AND) ) { s = 2822; } else if ( (LA2_2828 == EQUAL) ) { s = 2823; } else if ( (LA2_2828 == PLUS) ) { s = 2824; } else if ( (LA2_2828 == DOLLARD) ) { s = 2825; } else if ( (LA2_2828 == COMMA) ) { s = 2024; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2828 == CRLF) ) { s = 205; } else if ( (LA2_2828 == DASH || LA2_2828 == EMARK || LA2_2828 == LPAREN || LA2_2828 == RPAREN || ((LA2_2828 >= SQUOTE) && (LA2_2828 <= USCORE))) ) { s = 2828; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2828 == LSBRAQUET || LA2_2828 == RSBRAQUET) ) { s = 405; } SEEK(index2_2828); if ( s>=0 ) { return s; } } break; case 99: { ANTLR3_UINT32 LA2_3057; ANTLR3_MARKER index2_3057; LA2_3057 = LA(1); index2_3057 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3057 == DOT) ) { s = 3058; } else if ( (LA2_3057 == COLON) ) { s = 2276; } else if ( (LA2_3057 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3057 == CRLF) ) { s = 205; } else if ( (LA2_3057 == SEMI) ) { s = 1237; } else if ( (LA2_3057 == QMARK) ) { s = 854; } else if ( (LA2_3057 == DASH) ) { s = 1777; } else if ( (LA2_3057 == COMMON_CHAR || LA2_3057 == HEX_CHAR) ) { s = 1775; } else if ( (LA2_3057 == DIGIT) ) { s = 1776; } else if ( (LA2_3057 == SLASH) ) { s = 241; } else if ( (LA2_3057 == EMARK || LA2_3057 == LPAREN || LA2_3057 == RPAREN || ((LA2_3057 >= SQUOTE) && (LA2_3057 <= USCORE))) ) { s = 807; } else if ( (LA2_3057 == PERCENT) ) { s = 808; } else if ( (LA2_3057 == AT) ) { s = 810; } else if ( (LA2_3057 == AND) ) { s = 811; } else if ( (LA2_3057 == EQUAL) ) { s = 812; } else if ( (LA2_3057 == PLUS) ) { s = 813; } else if ( (LA2_3057 == DOLLARD) ) { s = 814; } else if ( (LA2_3057 == COMMA) ) { s = 815; } SEEK(index2_3057); if ( s>=0 ) { return s; } } break; case 100: { ANTLR3_UINT32 LA2_3593; ANTLR3_MARKER index2_3593; LA2_3593 = LA(1); index2_3593 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3593 == DOT) ) { s = 3594; } else if ( (LA2_3593 == COLON) ) { s = 2276; } else if ( (LA2_3593 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3593 == CRLF) ) { s = 205; } else if ( (LA2_3593 == SEMI) ) { s = 1237; } else if ( (LA2_3593 == QMARK) ) { s = 854; } else if ( (LA2_3593 == DASH) ) { s = 1777; } else if ( (LA2_3593 == COMMON_CHAR || LA2_3593 == HEX_CHAR) ) { s = 1775; } else if ( (LA2_3593 == DIGIT) ) { s = 1776; } else if ( (LA2_3593 == SLASH) ) { s = 241; } else if ( (LA2_3593 == EMARK || LA2_3593 == LPAREN || LA2_3593 == RPAREN || ((LA2_3593 >= SQUOTE) && (LA2_3593 <= USCORE))) ) { s = 807; } else if ( (LA2_3593 == PERCENT) ) { s = 808; } else if ( (LA2_3593 == AT) ) { s = 810; } else if ( (LA2_3593 == AND) ) { s = 811; } else if ( (LA2_3593 == EQUAL) ) { s = 812; } else if ( (LA2_3593 == PLUS) ) { s = 813; } else if ( (LA2_3593 == DOLLARD) ) { s = 814; } else if ( (LA2_3593 == COMMA) ) { s = 815; } SEEK(index2_3593); if ( s>=0 ) { return s; } } break; case 101: { ANTLR3_UINT32 LA2_1082; ANTLR3_MARKER index2_1082; LA2_1082 = LA(1); index2_1082 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1082 == COMMON_CHAR || LA2_1082 == HEX_CHAR) ) { s = 1071; } else if ( (LA2_1082 == DIGIT) ) { s = 1072; } else if ( (LA2_1082 == DOT) ) { s = 1073; } else if ( (LA2_1082 == PERCENT) ) { s = 1074; } else if ( (LA2_1082 == AND) ) { s = 1075; } else if ( (LA2_1082 == EQUAL) ) { s = 194; } else if ( (LA2_1082 == PLUS) ) { s = 1076; } else if ( (LA2_1082 == DOLLARD) ) { s = 1077; } else if ( (LA2_1082 == COMMA) ) { s = 197; } else if ( (LA2_1082 == AT) ) { s = 89; } else if ( (LA2_1082 == QMARK) ) { s = 694; } else if ( (LA2_1082 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1082 == CRLF) ) { s = 205; } else if ( (LA2_1082 == SEMI) ) { s = 693; } else if ( (LA2_1082 == DASH || LA2_1082 == EMARK || LA2_1082 == LPAREN || LA2_1082 == RPAREN || ((LA2_1082 >= SQUOTE) && (LA2_1082 <= USCORE))) ) { s = 1078; } else if ( (LA2_1082 == COLON || LA2_1082 == SLASH) ) { s = 1079; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1082 == LSBRAQUET || LA2_1082 == RSBRAQUET) ) { s = 1080; } SEEK(index2_1082); if ( s>=0 ) { return s; } } break; case 102: { ANTLR3_UINT32 LA2_3520; ANTLR3_MARKER index2_3520; LA2_3520 = LA(1); index2_3520 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3520 == SLASH) ) { s = 3678; } else if ( (LA2_3520 == QMARK) ) { s = 854; } else if ( (LA2_3520 == SP) ) { s = 1585; } else if ( (LA2_3520 == CRLF) ) { s = 1588; } else if ( (LA2_3520 == SEMI) ) { s = 2587; } else if ( (LA2_3520 == COMMON_CHAR || LA2_3520 == HEX_CHAR) ) { s = 3512; } else if ( (LA2_3520 == DIGIT) ) { s = 3513; } else if ( (LA2_3520 == DOT) ) { s = 3514; } else if ( (LA2_3520 == PERCENT) ) { s = 3515; } else if ( (LA2_3520 == PLUS) ) { s = 3516; } else if ( (LA2_3520 == BQUOTE) ) { s = 2092; } else if ( (LA2_3520 == COLON) ) { s = 3517; } else if ( (LA2_3520 == AT) ) { s = 2111; } else if ( (LA2_3520 == AND) ) { s = 3518; } else if ( (LA2_3520 == EQUAL) ) { s = 2113; } else if ( (LA2_3520 == DOLLARD) ) { s = 3519; } else if ( (LA2_3520 == COMMA) ) { s = 2116; } else if ( (LA2_3520 == DASH || LA2_3520 == EMARK || LA2_3520 == LPAREN || LA2_3520 == RPAREN || ((LA2_3520 >= SQUOTE) && (LA2_3520 <= USCORE))) ) { s = 3520; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3520 == LSBRAQUET || LA2_3520 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3520); if ( s>=0 ) { return s; } } break; case 103: { ANTLR3_UINT32 LA2_3829; ANTLR3_MARKER index2_3829; LA2_3829 = LA(1); index2_3829 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3829 == COLON) ) { s = 2276; } else if ( (LA2_3829 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3829 == CRLF) ) { s = 205; } else if ( (LA2_3829 == SEMI) ) { s = 1237; } else if ( (LA2_3829 == QMARK) ) { s = 854; } else if ( (LA2_3829 == DOT) ) { s = 2275; } else if ( (LA2_3829 == DASH) ) { s = 1777; } else if ( (LA2_3829 == COMMON_CHAR || LA2_3829 == HEX_CHAR) ) { s = 1775; } else if ( (LA2_3829 == DIGIT) ) { s = 1776; } else if ( (LA2_3829 == SLASH) ) { s = 241; } else if ( (LA2_3829 == EMARK || LA2_3829 == LPAREN || LA2_3829 == RPAREN || ((LA2_3829 >= SQUOTE) && (LA2_3829 <= USCORE))) ) { s = 807; } else if ( (LA2_3829 == PERCENT) ) { s = 808; } else if ( (LA2_3829 == AT) ) { s = 810; } else if ( (LA2_3829 == AND) ) { s = 811; } else if ( (LA2_3829 == EQUAL) ) { s = 812; } else if ( (LA2_3829 == PLUS) ) { s = 813; } else if ( (LA2_3829 == DOLLARD) ) { s = 814; } else if ( (LA2_3829 == COMMA) ) { s = 815; } SEEK(index2_3829); if ( s>=0 ) { return s; } } break; case 104: { ANTLR3_UINT32 LA2_2223; ANTLR3_MARKER index2_2223; LA2_2223 = LA(1); index2_2223 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2223 == SP) ) { s = 2456; } else if ( (LA2_2223 == CRLF) ) { s = 2458; } else if ( (LA2_2223 == EQUAL) ) { s = 2663; } else if ( (LA2_2223 == SLASH) ) { s = 2664; } else if ( (LA2_2223 == QMARK) ) { s = 1751; } else if ( (LA2_2223 == SEMI) ) { s = 1749; } else if ( (LA2_2223 == COMMON_CHAR || LA2_2223 == HEX_CHAR) ) { s = 2218; } else if ( (LA2_2223 == DIGIT) ) { s = 2219; } else if ( (LA2_2223 == DOT) ) { s = 2220; } else if ( (LA2_2223 == PERCENT) ) { s = 2221; } else if ( (LA2_2223 == PLUS) ) { s = 2222; } else if ( (LA2_2223 == BQUOTE) ) { s = 1203; } else if ( (LA2_2223 == DASH || LA2_2223 == EMARK || LA2_2223 == LPAREN || LA2_2223 == RPAREN || ((LA2_2223 >= SQUOTE) && (LA2_2223 <= USCORE))) ) { s = 2223; } else if ( (LA2_2223 == AND || LA2_2223 == COLON || LA2_2223 == DOLLARD) ) { s = 1790; } else if ( (LA2_2223 == COMMA) ) { s = 506; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2223 == LSBRAQUET || LA2_2223 == RSBRAQUET) ) { s = 405; } else if ( (LA2_2223 == AT) ) { s = 508; } SEEK(index2_2223); if ( s>=0 ) { return s; } } break; case 105: { ANTLR3_UINT32 LA2_3066; ANTLR3_MARKER index2_3066; LA2_3066 = LA(1); index2_3066 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3066 == DIGIT) ) { s = 3371; } else if ( (LA2_3066 == DASH) ) { s = 884; } else if ( (LA2_3066 == COMMON_CHAR || LA2_3066 == HEX_CHAR) ) { s = 882; } else if ( (LA2_3066 == DOT) ) { s = 881; } else if ( (LA2_3066 == COLON) ) { s = 1306; } else if ( (LA2_3066 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3066 == CRLF) ) { s = 205; } else if ( (LA2_3066 == SEMI) ) { s = 1307; } else if ( (LA2_3066 == QMARK) ) { s = 1308; } else if ( (LA2_3066 == COMMA) ) { s = 506; } else if ( (((LA2_3066 >= AND) && (LA2_3066 <= AT)) || LA2_3066 == DOLLARD || LA2_3066 == EQUAL || LA2_3066 == PLUS || LA2_3066 == SLASH) ) { s = 508; } else if ( (LA2_3066 == EMARK || LA2_3066 == LPAREN || LA2_3066 == RPAREN || ((LA2_3066 >= SQUOTE) && (LA2_3066 <= USCORE))) ) { s = 511; } else if ( (LA2_3066 == PERCENT) ) { s = 512; } SEEK(index2_3066); if ( s>=0 ) { return s; } } break; case 106: { ANTLR3_UINT32 LA2_3319; ANTLR3_MARKER index2_3319; LA2_3319 = LA(1); index2_3319 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3319 == COMMON_CHAR || LA2_3319 == HEX_CHAR) ) { s = 3324; } else if ( (LA2_3319 == DIGIT) ) { s = 3325; } else if ( (LA2_3319 == DOT) ) { s = 3326; } else if ( (LA2_3319 == PERCENT) ) { s = 3327; } else if ( (LA2_3319 == COLON) ) { s = 3328; } else if ( (LA2_3319 == AT) ) { s = 2229; } else if ( (LA2_3319 == AND) ) { s = 3329; } else if ( (LA2_3319 == EQUAL) ) { s = 2231; } else if ( (LA2_3319 == PLUS) ) { s = 3330; } else if ( (LA2_3319 == DOLLARD) ) { s = 3331; } else if ( (LA2_3319 == COMMA) ) { s = 2234; } else if ( (LA2_3319 == SEMI) ) { s = 3030; } else if ( (LA2_3319 == SLASH) ) { s = 3323; } else if ( (LA2_3319 == QMARK) ) { s = 1751; } else if ( (LA2_3319 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3319 == CRLF) ) { s = 205; } else if ( (LA2_3319 == DASH || LA2_3319 == EMARK || LA2_3319 == LPAREN || LA2_3319 == RPAREN || ((LA2_3319 >= SQUOTE) && (LA2_3319 <= USCORE))) ) { s = 3332; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3319 == LSBRAQUET || LA2_3319 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3319); if ( s>=0 ) { return s; } } break; case 107: { ANTLR3_UINT32 LA2_1554; ANTLR3_MARKER index2_1554; LA2_1554 = LA(1); index2_1554 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1554 == AND) ) { s = 1553; } else if ( (LA2_1554 == SP) ) { s = 35; } else if ( (LA2_1554 == QMARK) ) { s = 1102; } else if ( (LA2_1554 == COMMON_CHAR || LA2_1554 == HEX_CHAR) ) { s = 1554; } else if ( (LA2_1554 == DIGIT) ) { s = 1555; } else if ( (LA2_1554 == DASH || LA2_1554 == DOT || LA2_1554 == EMARK || LA2_1554 == LPAREN || LA2_1554 == RPAREN || ((LA2_1554 >= SQUOTE) && (LA2_1554 <= USCORE))) ) { s = 1556; } else if ( (LA2_1554 == PERCENT) ) { s = 1557; } else if ( (LA2_1554 == SEMI) ) { s = 105; } else if ( (LA2_1554 == COMMA) ) { s = 106; } else if ( (LA2_1554 == COLON || LA2_1554 == DOLLARD || LA2_1554 == PLUS || LA2_1554 == SLASH) ) { s = 1103; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1554 == LSBRAQUET || LA2_1554 == RSBRAQUET) ) { s = 1104; } else if ( (LA2_1554 == AT || LA2_1554 == EQUAL) ) { s = 108; } SEEK(index2_1554); if ( s>=0 ) { return s; } } break; case 108: { ANTLR3_UINT32 LA2_3885; ANTLR3_MARKER index2_3885; LA2_3885 = LA(1); index2_3885 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3885 == SLASH) ) { s = 3226; } else if ( (LA2_3885 == QMARK) ) { s = 854; } else if ( (LA2_3885 == SP) ) { s = 204; } else if ( (LA2_3885 == SEMI) ) { s = 3530; } else if ( (LA2_3885 == COMMON_CHAR || LA2_3885 == HEX_CHAR) ) { s = 3852; } else if ( (LA2_3885 == DIGIT) ) { s = 3853; } else if ( (LA2_3885 == DOT) ) { s = 3854; } else if ( (LA2_3885 == PERCENT) ) { s = 3855; } else if ( (LA2_3885 == COLON) ) { s = 3856; } else if ( (LA2_3885 == AT) ) { s = 3271; } else if ( (LA2_3885 == AND) ) { s = 3857; } else if ( (LA2_3885 == EQUAL) ) { s = 3273; } else if ( (LA2_3885 == PLUS) ) { s = 3858; } else if ( (LA2_3885 == DOLLARD) ) { s = 3859; } else if ( (LA2_3885 == COMMA) ) { s = 3276; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3885 == CRLF) ) { s = 205; } else if ( (LA2_3885 == DASH || LA2_3885 == EMARK || LA2_3885 == LPAREN || LA2_3885 == RPAREN || ((LA2_3885 >= SQUOTE) && (LA2_3885 <= USCORE))) ) { s = 3860; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3885 == LSBRAQUET || LA2_3885 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3885); if ( s>=0 ) { return s; } } break; case 109: { ANTLR3_UINT32 LA2_3414; ANTLR3_MARKER index2_3414; LA2_3414 = LA(1); index2_3414 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3414 == SEMI) ) { s = 3151; } else if ( (LA2_3414 == QMARK) ) { s = 854; } else if ( (LA2_3414 == SP) ) { s = 204; } else if ( (LA2_3414 == SLASH) ) { s = 3123; } else if ( (LA2_3414 == COMMON_CHAR || LA2_3414 == HEX_CHAR) ) { s = 3406; } else if ( (LA2_3414 == DIGIT) ) { s = 3407; } else if ( (LA2_3414 == DOT) ) { s = 3408; } else if ( (LA2_3414 == PERCENT) ) { s = 3409; } else if ( (LA2_3414 == COLON) ) { s = 3410; } else if ( (LA2_3414 == AT) ) { s = 2504; } else if ( (LA2_3414 == AND) ) { s = 3411; } else if ( (LA2_3414 == EQUAL) ) { s = 2506; } else if ( (LA2_3414 == PLUS) ) { s = 3412; } else if ( (LA2_3414 == DOLLARD) ) { s = 3413; } else if ( (LA2_3414 == COMMA) ) { s = 2509; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3414 == CRLF) ) { s = 205; } else if ( (LA2_3414 == DASH || LA2_3414 == EMARK || LA2_3414 == LPAREN || LA2_3414 == RPAREN || ((LA2_3414 >= SQUOTE) && (LA2_3414 <= USCORE))) ) { s = 3414; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3414 == LSBRAQUET || LA2_3414 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3414); if ( s>=0 ) { return s; } } break; case 110: { ANTLR3_UINT32 LA2_3565; ANTLR3_MARKER index2_3565; LA2_3565 = LA(1); index2_3565 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3565 == SLASH) ) { s = 3319; } else if ( (LA2_3565 == QMARK) ) { s = 1751; } else if ( (LA2_3565 == SP) ) { s = 1585; } else if ( (LA2_3565 == CRLF) ) { s = 1588; } else if ( (LA2_3565 == SEMI) ) { s = 1749; } else if ( (LA2_3565 == COMMON_CHAR || LA2_3565 == HEX_CHAR) ) { s = 3015; } else if ( (LA2_3565 == DIGIT) ) { s = 3016; } else if ( (LA2_3565 == DOT) ) { s = 3017; } else if ( (LA2_3565 == PERCENT) ) { s = 3018; } else if ( (LA2_3565 == PLUS) ) { s = 3019; } else if ( (LA2_3565 == BQUOTE) ) { s = 2092; } else if ( (LA2_3565 == DASH || LA2_3565 == EMARK || LA2_3565 == LPAREN || LA2_3565 == RPAREN || ((LA2_3565 >= SQUOTE) && (LA2_3565 <= USCORE))) ) { s = 3020; } else if ( (LA2_3565 == AND || LA2_3565 == COLON || LA2_3565 == DOLLARD) ) { s = 2717; } else if ( (LA2_3565 == COMMA) ) { s = 506; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3565 == LSBRAQUET || LA2_3565 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_3565 == AT || LA2_3565 == EQUAL) ) { s = 508; } SEEK(index2_3565); if ( s>=0 ) { return s; } } break; case 111: { ANTLR3_UINT32 LA2_3142; ANTLR3_MARKER index2_3142; LA2_3142 = LA(1); index2_3142 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3142 == SEMI) ) { s = 3151; } else if ( (LA2_3142 == QMARK) ) { s = 854; } else if ( (LA2_3142 == SP) ) { s = 204; } else if ( (LA2_3142 == SLASH) ) { s = 2827; } else if ( (LA2_3142 == COMMON_CHAR || LA2_3142 == HEX_CHAR) ) { s = 3142; } else if ( (LA2_3142 == DIGIT) ) { s = 3143; } else if ( (LA2_3142 == DOT) ) { s = 3144; } else if ( (LA2_3142 == PERCENT) ) { s = 3145; } else if ( (LA2_3142 == COLON) ) { s = 3146; } else if ( (LA2_3142 == AT) ) { s = 2504; } else if ( (LA2_3142 == AND) ) { s = 3147; } else if ( (LA2_3142 == EQUAL) ) { s = 3148; } else if ( (LA2_3142 == PLUS) ) { s = 3149; } else if ( (LA2_3142 == DOLLARD) ) { s = 3150; } else if ( (LA2_3142 == COMMA) ) { s = 2509; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3142 == CRLF) ) { s = 205; } else if ( (LA2_3142 == DASH || LA2_3142 == EMARK || LA2_3142 == LPAREN || LA2_3142 == RPAREN || ((LA2_3142 >= SQUOTE) && (LA2_3142 <= USCORE))) ) { s = 3152; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3142 == LSBRAQUET || LA2_3142 == RSBRAQUET) ) { s = 405; } SEEK(index2_3142); if ( s>=0 ) { return s; } } break; case 112: { ANTLR3_UINT32 LA2_2265; ANTLR3_MARKER index2_2265; LA2_2265 = LA(1); index2_2265 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2265 == AND) ) { s = 2268; } else if ( (LA2_2265 == SP) ) { s = 35; } else if ( (LA2_2265 == QMARK) ) { s = 2263; } else if ( (LA2_2265 == COMMON_CHAR || LA2_2265 == HEX_CHAR) ) { s = 2264; } else if ( (LA2_2265 == DIGIT) ) { s = 2265; } else if ( (LA2_2265 == DASH || LA2_2265 == DOT || LA2_2265 == EMARK || LA2_2265 == LPAREN || LA2_2265 == RPAREN || ((LA2_2265 >= SQUOTE) && (LA2_2265 <= USCORE))) ) { s = 2266; } else if ( (LA2_2265 == PERCENT) ) { s = 2267; } else if ( (LA2_2265 == SEMI) ) { s = 505; } else if ( (LA2_2265 == COMMA) ) { s = 506; } else if ( (LA2_2265 == COLON || LA2_2265 == DOLLARD || LA2_2265 == PLUS || LA2_2265 == SLASH) ) { s = 2269; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2265 == LSBRAQUET || LA2_2265 == RSBRAQUET) ) { s = 1104; } else if ( (LA2_2265 == AT || LA2_2265 == EQUAL) ) { s = 508; } SEEK(index2_2265); if ( s>=0 ) { return s; } } break; case 113: { ANTLR3_UINT32 LA2_2532; ANTLR3_MARKER index2_2532; LA2_2532 = LA(1); index2_2532 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2532 == QMARK) ) { s = 854; } else if ( (LA2_2532 == SP) ) { s = 2456; } else if ( (LA2_2532 == SLASH) ) { s = 2455; } else if ( (LA2_2532 == SEMI) ) { s = 2051; } else if ( (LA2_2532 == COMMON_CHAR || LA2_2532 == HEX_CHAR) ) { s = 2530; } else if ( (LA2_2532 == DIGIT) ) { s = 2531; } else if ( (LA2_2532 == DOT) ) { s = 2532; } else if ( (LA2_2532 == PERCENT) ) { s = 2533; } else if ( (LA2_2532 == COLON) ) { s = 2534; } else if ( (LA2_2532 == AT) ) { s = 1576; } else if ( (LA2_2532 == AND) ) { s = 2535; } else if ( (LA2_2532 == EQUAL) ) { s = 2900; } else if ( (LA2_2532 == PLUS) ) { s = 2536; } else if ( (LA2_2532 == DOLLARD) ) { s = 2537; } else if ( (LA2_2532 == COMMA) ) { s = 1581; } else if ( (LA2_2532 == CRLF) ) { s = 2458; } else if ( (LA2_2532 == BQUOTE) ) { s = 1203; } else if ( (LA2_2532 == DASH || LA2_2532 == EMARK || LA2_2532 == LPAREN || LA2_2532 == RPAREN || ((LA2_2532 >= SQUOTE) && (LA2_2532 <= USCORE))) ) { s = 2538; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2532 == LSBRAQUET || LA2_2532 == RSBRAQUET) ) { s = 405; } SEEK(index2_2532); if ( s>=0 ) { return s; } } break; case 114: { ANTLR3_UINT32 LA2_2433; ANTLR3_MARKER index2_2433; LA2_2433 = LA(1); index2_2433 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2433 == AT) ) { s = 89; } else if ( (LA2_2433 == COMMON_CHAR || LA2_2433 == HEX_CHAR) ) { s = 2429; } else if ( (LA2_2433 == DIGIT) ) { s = 2430; } else if ( (LA2_2433 == DASH || LA2_2433 == DOT || LA2_2433 == EMARK || LA2_2433 == LPAREN || LA2_2433 == RPAREN || ((LA2_2433 >= SQUOTE) && (LA2_2433 <= USCORE))) ) { s = 2431; } else if ( (LA2_2433 == PERCENT) ) { s = 2432; } else if ( (LA2_2433 == AND) ) { s = 1099; } else if ( (LA2_2433 == EQUAL) ) { s = 194; } else if ( (LA2_2433 == PLUS) ) { s = 2433; } else if ( (LA2_2433 == DOLLARD) ) { s = 2434; } else if ( (LA2_2433 == COMMA) ) { s = 197; } else if ( (LA2_2433 == SP) ) { s = 35; } else if ( (LA2_2433 == QMARK) ) { s = 2435; } else if ( (LA2_2433 == SEMI) ) { s = 105; } else if ( (LA2_2433 == COLON || LA2_2433 == SLASH) ) { s = 2436; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2433 == LSBRAQUET || LA2_2433 == RSBRAQUET) ) { s = 2437; } SEEK(index2_2433); if ( s>=0 ) { return s; } } break; case 115: { ANTLR3_UINT32 LA2_2434; ANTLR3_MARKER index2_2434; LA2_2434 = LA(1); index2_2434 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2434 == AT) ) { s = 89; } else if ( (LA2_2434 == COMMON_CHAR || LA2_2434 == HEX_CHAR) ) { s = 2429; } else if ( (LA2_2434 == DIGIT) ) { s = 2430; } else if ( (LA2_2434 == DASH || LA2_2434 == DOT || LA2_2434 == EMARK || LA2_2434 == LPAREN || LA2_2434 == RPAREN || ((LA2_2434 >= SQUOTE) && (LA2_2434 <= USCORE))) ) { s = 2431; } else if ( (LA2_2434 == PERCENT) ) { s = 2432; } else if ( (LA2_2434 == AND) ) { s = 1099; } else if ( (LA2_2434 == EQUAL) ) { s = 194; } else if ( (LA2_2434 == PLUS) ) { s = 2433; } else if ( (LA2_2434 == DOLLARD) ) { s = 2434; } else if ( (LA2_2434 == COMMA) ) { s = 197; } else if ( (LA2_2434 == SP) ) { s = 35; } else if ( (LA2_2434 == QMARK) ) { s = 2435; } else if ( (LA2_2434 == SEMI) ) { s = 105; } else if ( (LA2_2434 == COLON || LA2_2434 == SLASH) ) { s = 2436; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2434 == LSBRAQUET || LA2_2434 == RSBRAQUET) ) { s = 2437; } SEEK(index2_2434); if ( s>=0 ) { return s; } } break; case 116: { ANTLR3_UINT32 LA2_3246; ANTLR3_MARKER index2_3246; LA2_3246 = LA(1); index2_3246 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3246 == SEMI) ) { s = 3251; } else if ( (LA2_3246 == QMARK) ) { s = 854; } else if ( (LA2_3246 == SP) ) { s = 204; } else if ( (LA2_3246 == SLASH) ) { s = 2928; } else if ( (LA2_3246 == COMMON_CHAR || LA2_3246 == HEX_CHAR) ) { s = 3242; } else if ( (LA2_3246 == DIGIT) ) { s = 3243; } else if ( (LA2_3246 == DOT) ) { s = 3244; } else if ( (LA2_3246 == PERCENT) ) { s = 3245; } else if ( (LA2_3246 == COLON) ) { s = 3246; } else if ( (LA2_3246 == AT) ) { s = 2122; } else if ( (LA2_3246 == AND) ) { s = 3247; } else if ( (LA2_3246 == EQUAL) ) { s = 3248; } else if ( (LA2_3246 == PLUS) ) { s = 3249; } else if ( (LA2_3246 == DOLLARD) ) { s = 3250; } else if ( (LA2_3246 == COMMA) ) { s = 2127; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3246 == CRLF) ) { s = 205; } else if ( (LA2_3246 == DASH || LA2_3246 == EMARK || LA2_3246 == LPAREN || LA2_3246 == RPAREN || ((LA2_3246 >= SQUOTE) && (LA2_3246 <= USCORE))) ) { s = 3252; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3246 == LSBRAQUET || LA2_3246 == RSBRAQUET) ) { s = 405; } SEEK(index2_3246); if ( s>=0 ) { return s; } } break; case 117: { ANTLR3_UINT32 LA2_2260; ANTLR3_MARKER index2_2260; LA2_2260 = LA(1); index2_2260 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2260 == QMARK) ) { s = 854; } else if ( (LA2_2260 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2260 == CRLF) ) { s = 205; } else if ( (LA2_2260 == SEMI) ) { s = 1237; } else if ( (LA2_2260 == DOT) ) { s = 2254; } else if ( (LA2_2260 == COMMON_CHAR || LA2_2260 == HEX_CHAR) ) { s = 2255; } else if ( (LA2_2260 == DIGIT) ) { s = 2256; } else if ( (LA2_2260 == SLASH) ) { s = 2245; } else if ( (LA2_2260 == DASH || LA2_2260 == EMARK || LA2_2260 == LPAREN || LA2_2260 == RPAREN || ((LA2_2260 >= SQUOTE) && (LA2_2260 <= USCORE))) ) { s = 2257; } else if ( (LA2_2260 == PERCENT) ) { s = 2258; } else if ( (LA2_2260 == COLON) ) { s = 2259; } else if ( (LA2_2260 == AND) ) { s = 2260; } else if ( (LA2_2260 == AT) ) { s = 464; } else if ( (LA2_2260 == PLUS) ) { s = 2261; } else if ( (LA2_2260 == EQUAL) ) { s = 466; } else if ( (LA2_2260 == DOLLARD) ) { s = 2262; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2260 == LSBRAQUET || LA2_2260 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_2260 == COMMA) ) { s = 469; } SEEK(index2_2260); if ( s>=0 ) { return s; } } break; case 118: { ANTLR3_UINT32 LA2_2259; ANTLR3_MARKER index2_2259; LA2_2259 = LA(1); index2_2259 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2259 == QMARK) ) { s = 854; } else if ( (LA2_2259 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2259 == CRLF) ) { s = 205; } else if ( (LA2_2259 == SEMI) ) { s = 1237; } else if ( (LA2_2259 == DOT) ) { s = 2254; } else if ( (LA2_2259 == COMMON_CHAR || LA2_2259 == HEX_CHAR) ) { s = 2255; } else if ( (LA2_2259 == DIGIT) ) { s = 2256; } else if ( (LA2_2259 == SLASH) ) { s = 2245; } else if ( (LA2_2259 == DASH || LA2_2259 == EMARK || LA2_2259 == LPAREN || LA2_2259 == RPAREN || ((LA2_2259 >= SQUOTE) && (LA2_2259 <= USCORE))) ) { s = 2257; } else if ( (LA2_2259 == PERCENT) ) { s = 2258; } else if ( (LA2_2259 == COLON) ) { s = 2259; } else if ( (LA2_2259 == AND) ) { s = 2260; } else if ( (LA2_2259 == AT) ) { s = 464; } else if ( (LA2_2259 == PLUS) ) { s = 2261; } else if ( (LA2_2259 == EQUAL) ) { s = 466; } else if ( (LA2_2259 == DOLLARD) ) { s = 2262; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2259 == LSBRAQUET || LA2_2259 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_2259 == COMMA) ) { s = 469; } SEEK(index2_2259); if ( s>=0 ) { return s; } } break; case 119: { ANTLR3_UINT32 LA2_2262; ANTLR3_MARKER index2_2262; LA2_2262 = LA(1); index2_2262 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2262 == QMARK) ) { s = 854; } else if ( (LA2_2262 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2262 == CRLF) ) { s = 205; } else if ( (LA2_2262 == SEMI) ) { s = 1237; } else if ( (LA2_2262 == DOT) ) { s = 2254; } else if ( (LA2_2262 == COMMON_CHAR || LA2_2262 == HEX_CHAR) ) { s = 2255; } else if ( (LA2_2262 == DIGIT) ) { s = 2256; } else if ( (LA2_2262 == SLASH) ) { s = 2245; } else if ( (LA2_2262 == DASH || LA2_2262 == EMARK || LA2_2262 == LPAREN || LA2_2262 == RPAREN || ((LA2_2262 >= SQUOTE) && (LA2_2262 <= USCORE))) ) { s = 2257; } else if ( (LA2_2262 == PERCENT) ) { s = 2258; } else if ( (LA2_2262 == COLON) ) { s = 2259; } else if ( (LA2_2262 == AND) ) { s = 2260; } else if ( (LA2_2262 == AT) ) { s = 464; } else if ( (LA2_2262 == PLUS) ) { s = 2261; } else if ( (LA2_2262 == EQUAL) ) { s = 466; } else if ( (LA2_2262 == DOLLARD) ) { s = 2262; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2262 == LSBRAQUET || LA2_2262 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_2262 == COMMA) ) { s = 469; } SEEK(index2_2262); if ( s>=0 ) { return s; } } break; case 120: { ANTLR3_UINT32 LA2_3247; ANTLR3_MARKER index2_3247; LA2_3247 = LA(1); index2_3247 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3247 == SEMI) ) { s = 3251; } else if ( (LA2_3247 == QMARK) ) { s = 854; } else if ( (LA2_3247 == SP) ) { s = 204; } else if ( (LA2_3247 == SLASH) ) { s = 2928; } else if ( (LA2_3247 == COMMON_CHAR || LA2_3247 == HEX_CHAR) ) { s = 3242; } else if ( (LA2_3247 == DIGIT) ) { s = 3243; } else if ( (LA2_3247 == DOT) ) { s = 3244; } else if ( (LA2_3247 == PERCENT) ) { s = 3245; } else if ( (LA2_3247 == COLON) ) { s = 3246; } else if ( (LA2_3247 == AT) ) { s = 2122; } else if ( (LA2_3247 == AND) ) { s = 3247; } else if ( (LA2_3247 == EQUAL) ) { s = 3248; } else if ( (LA2_3247 == PLUS) ) { s = 3249; } else if ( (LA2_3247 == DOLLARD) ) { s = 3250; } else if ( (LA2_3247 == COMMA) ) { s = 2127; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3247 == CRLF) ) { s = 205; } else if ( (LA2_3247 == DASH || LA2_3247 == EMARK || LA2_3247 == LPAREN || LA2_3247 == RPAREN || ((LA2_3247 >= SQUOTE) && (LA2_3247 <= USCORE))) ) { s = 3252; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3247 == LSBRAQUET || LA2_3247 == RSBRAQUET) ) { s = 405; } SEEK(index2_3247); if ( s>=0 ) { return s; } } break; case 121: { ANTLR3_UINT32 LA2_3288; ANTLR3_MARKER index2_3288; LA2_3288 = LA(1); index2_3288 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3288 == SP) ) { s = 2456; } else if ( (LA2_3288 == CRLF) ) { s = 2458; } else if ( (LA2_3288 == EQUAL) ) { s = 3547; } else if ( (LA2_3288 == SLASH) ) { s = 3261; } else if ( (LA2_3288 == QMARK) ) { s = 854; } else if ( (LA2_3288 == SEMI) ) { s = 2986; } else if ( (LA2_3288 == COMMON_CHAR || LA2_3288 == HEX_CHAR) ) { s = 3286; } else if ( (LA2_3288 == DIGIT) ) { s = 3287; } else if ( (LA2_3288 == DOT) ) { s = 3288; } else if ( (LA2_3288 == PERCENT) ) { s = 3289; } else if ( (LA2_3288 == PLUS) ) { s = 3290; } else if ( (LA2_3288 == BQUOTE) ) { s = 1203; } else if ( (LA2_3288 == COLON) ) { s = 3291; } else if ( (LA2_3288 == AT) ) { s = 2578; } else if ( (LA2_3288 == AND) ) { s = 3292; } else if ( (LA2_3288 == DOLLARD) ) { s = 3293; } else if ( (LA2_3288 == COMMA) ) { s = 2583; } else if ( (LA2_3288 == DASH || LA2_3288 == EMARK || LA2_3288 == LPAREN || LA2_3288 == RPAREN || ((LA2_3288 >= SQUOTE) && (LA2_3288 <= USCORE))) ) { s = 3294; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3288 == LSBRAQUET || LA2_3288 == RSBRAQUET) ) { s = 405; } SEEK(index2_3288); if ( s>=0 ) { return s; } } break; case 122: { ANTLR3_UINT32 LA2_3352; ANTLR3_MARKER index2_3352; LA2_3352 = LA(1); index2_3352 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3352 == SEMI) ) { s = 3351; } else if ( (LA2_3352 == QMARK) ) { s = 1751; } else if ( (LA2_3352 == SP) ) { s = 204; } else if ( (LA2_3352 == SLASH) ) { s = 3031; } else if ( (LA2_3352 == COMMON_CHAR || LA2_3352 == HEX_CHAR) ) { s = 3342; } else if ( (LA2_3352 == DIGIT) ) { s = 3343; } else if ( (LA2_3352 == DOT) ) { s = 3344; } else if ( (LA2_3352 == PERCENT) ) { s = 3345; } else if ( (LA2_3352 == COLON) ) { s = 3346; } else if ( (LA2_3352 == AT) ) { s = 2684; } else if ( (LA2_3352 == AND) ) { s = 3347; } else if ( (LA2_3352 == EQUAL) ) { s = 3348; } else if ( (LA2_3352 == PLUS) ) { s = 3349; } else if ( (LA2_3352 == DOLLARD) ) { s = 3350; } else if ( (LA2_3352 == COMMA) ) { s = 2689; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3352 == CRLF) ) { s = 205; } else if ( (LA2_3352 == DASH || LA2_3352 == EMARK || LA2_3352 == LPAREN || LA2_3352 == RPAREN || ((LA2_3352 >= SQUOTE) && (LA2_3352 <= USCORE))) ) { s = 3352; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3352 == LSBRAQUET || LA2_3352 == RSBRAQUET) ) { s = 405; } SEEK(index2_3352); if ( s>=0 ) { return s; } } break; case 123: { ANTLR3_UINT32 LA2_2261; ANTLR3_MARKER index2_2261; LA2_2261 = LA(1); index2_2261 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2261 == QMARK) ) { s = 854; } else if ( (LA2_2261 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2261 == CRLF) ) { s = 205; } else if ( (LA2_2261 == SEMI) ) { s = 1237; } else if ( (LA2_2261 == DOT) ) { s = 2254; } else if ( (LA2_2261 == COMMON_CHAR || LA2_2261 == HEX_CHAR) ) { s = 2255; } else if ( (LA2_2261 == DIGIT) ) { s = 2256; } else if ( (LA2_2261 == SLASH) ) { s = 2245; } else if ( (LA2_2261 == DASH || LA2_2261 == EMARK || LA2_2261 == LPAREN || LA2_2261 == RPAREN || ((LA2_2261 >= SQUOTE) && (LA2_2261 <= USCORE))) ) { s = 2257; } else if ( (LA2_2261 == PERCENT) ) { s = 2258; } else if ( (LA2_2261 == COLON) ) { s = 2259; } else if ( (LA2_2261 == AND) ) { s = 2260; } else if ( (LA2_2261 == AT) ) { s = 464; } else if ( (LA2_2261 == PLUS) ) { s = 2261; } else if ( (LA2_2261 == EQUAL) ) { s = 466; } else if ( (LA2_2261 == DOLLARD) ) { s = 2262; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2261 == LSBRAQUET || LA2_2261 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_2261 == COMMA) ) { s = 469; } SEEK(index2_2261); if ( s>=0 ) { return s; } } break; case 124: { ANTLR3_UINT32 LA2_3027; ANTLR3_MARKER index2_3027; LA2_3027 = LA(1); index2_3027 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3027 == SEMI) ) { s = 2235; } else if ( (LA2_3027 == SLASH) ) { s = 3323; } else if ( (LA2_3027 == QMARK) ) { s = 2237; } else if ( (LA2_3027 == SP) ) { s = 35; } else if ( (LA2_3027 == COMMON_CHAR || LA2_3027 == HEX_CHAR) ) { s = 3324; } else if ( (LA2_3027 == DIGIT) ) { s = 3325; } else if ( (LA2_3027 == DOT) ) { s = 3326; } else if ( (LA2_3027 == PERCENT) ) { s = 3327; } else if ( (LA2_3027 == COLON) ) { s = 3328; } else if ( (LA2_3027 == AT) ) { s = 2229; } else if ( (LA2_3027 == AND) ) { s = 3329; } else if ( (LA2_3027 == EQUAL) ) { s = 2231; } else if ( (LA2_3027 == PLUS) ) { s = 3330; } else if ( (LA2_3027 == DOLLARD) ) { s = 3331; } else if ( (LA2_3027 == COMMA) ) { s = 2234; } else if ( (LA2_3027 == DASH || LA2_3027 == EMARK || LA2_3027 == LPAREN || LA2_3027 == RPAREN || ((LA2_3027 >= SQUOTE) && (LA2_3027 <= USCORE))) ) { s = 3332; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3027 == LSBRAQUET || LA2_3027 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3027); if ( s>=0 ) { return s; } } break; case 125: { ANTLR3_UINT32 LA2_402; ANTLR3_MARKER index2_402; LA2_402 = LA(1); index2_402 = INDEX(); REWINDLAST(); s = -1; if ( (synpred1_belle_sip_message(ctx)) && (LA2_402 == CRLF) ) { s = 403; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_402 == SP) ) { s = 711; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_402 == DOT) ) { s = 712; } else if ( (LA2_402 == COMMON_CHAR || LA2_402 == HEX_CHAR) ) { s = 713; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_402 == DIGIT) ) { s = 714; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_402 == AND || LA2_402 == COLON || LA2_402 == DOLLARD || LA2_402 == LSBRAQUET || LA2_402 == PLUS || LA2_402 == RSBRAQUET || LA2_402 == SLASH) ) { s = 405; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_402 == DASH || LA2_402 == EMARK || LA2_402 == LPAREN || LA2_402 == RPAREN || ((LA2_402 >= SQUOTE) && (LA2_402 <= USCORE))) ) { s = 715; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_402 == PERCENT) ) { s = 716; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_402 == SEMI) ) { s = 407; } SEEK(index2_402); if ( s>=0 ) { return s; } } break; case 126: { ANTLR3_UINT32 LA2_3249; ANTLR3_MARKER index2_3249; LA2_3249 = LA(1); index2_3249 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3249 == SEMI) ) { s = 3251; } else if ( (LA2_3249 == QMARK) ) { s = 854; } else if ( (LA2_3249 == SP) ) { s = 204; } else if ( (LA2_3249 == SLASH) ) { s = 2928; } else if ( (LA2_3249 == COMMON_CHAR || LA2_3249 == HEX_CHAR) ) { s = 3242; } else if ( (LA2_3249 == DIGIT) ) { s = 3243; } else if ( (LA2_3249 == DOT) ) { s = 3244; } else if ( (LA2_3249 == PERCENT) ) { s = 3245; } else if ( (LA2_3249 == COLON) ) { s = 3246; } else if ( (LA2_3249 == AT) ) { s = 2122; } else if ( (LA2_3249 == AND) ) { s = 3247; } else if ( (LA2_3249 == EQUAL) ) { s = 3248; } else if ( (LA2_3249 == PLUS) ) { s = 3249; } else if ( (LA2_3249 == DOLLARD) ) { s = 3250; } else if ( (LA2_3249 == COMMA) ) { s = 2127; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3249 == CRLF) ) { s = 205; } else if ( (LA2_3249 == DASH || LA2_3249 == EMARK || LA2_3249 == LPAREN || LA2_3249 == RPAREN || ((LA2_3249 >= SQUOTE) && (LA2_3249 <= USCORE))) ) { s = 3252; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3249 == LSBRAQUET || LA2_3249 == RSBRAQUET) ) { s = 405; } SEEK(index2_3249); if ( s>=0 ) { return s; } } break; case 127: { ANTLR3_UINT32 LA2_202; ANTLR3_MARKER index2_202; LA2_202 = LA(1); index2_202 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_202 == COLON) ) { s = 396; } else if ( (LA2_202 == AT) ) { s = 89; } else if ( (LA2_202 == COMMON_CHAR || LA2_202 == HEX_CHAR) ) { s = 397; } else if ( (LA2_202 == DIGIT) ) { s = 398; } else if ( (LA2_202 == DOT) ) { s = 399; } else if ( (LA2_202 == PERCENT) ) { s = 400; } else if ( (LA2_202 == AND || LA2_202 == DOLLARD || LA2_202 == PLUS || LA2_202 == SLASH) ) { s = 401; } else if ( (LA2_202 == SP) ) { s = 402; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_202 == CRLF) ) { s = 403; } else if ( (LA2_202 == DASH || LA2_202 == EMARK || LA2_202 == LPAREN || LA2_202 == RPAREN || ((LA2_202 >= SQUOTE) && (LA2_202 <= USCORE))) ) { s = 404; } else if ( (LA2_202 == QMARK) ) { s = 206; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_202 == LSBRAQUET || LA2_202 == RSBRAQUET) ) { s = 405; } else if ( (LA2_202 == SEMI) ) { s = 202; } else if ( (LA2_202 == COMMA) ) { s = 97; } else if ( (LA2_202 == EQUAL) ) { s = 99; } SEEK(index2_202); if ( s>=0 ) { return s; } } break; case 128: { ANTLR3_UINT32 LA2_3250; ANTLR3_MARKER index2_3250; LA2_3250 = LA(1); index2_3250 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3250 == SEMI) ) { s = 3251; } else if ( (LA2_3250 == QMARK) ) { s = 854; } else if ( (LA2_3250 == SP) ) { s = 204; } else if ( (LA2_3250 == SLASH) ) { s = 2928; } else if ( (LA2_3250 == COMMON_CHAR || LA2_3250 == HEX_CHAR) ) { s = 3242; } else if ( (LA2_3250 == DIGIT) ) { s = 3243; } else if ( (LA2_3250 == DOT) ) { s = 3244; } else if ( (LA2_3250 == PERCENT) ) { s = 3245; } else if ( (LA2_3250 == COLON) ) { s = 3246; } else if ( (LA2_3250 == AT) ) { s = 2122; } else if ( (LA2_3250 == AND) ) { s = 3247; } else if ( (LA2_3250 == EQUAL) ) { s = 3248; } else if ( (LA2_3250 == PLUS) ) { s = 3249; } else if ( (LA2_3250 == DOLLARD) ) { s = 3250; } else if ( (LA2_3250 == COMMA) ) { s = 2127; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3250 == CRLF) ) { s = 205; } else if ( (LA2_3250 == DASH || LA2_3250 == EMARK || LA2_3250 == LPAREN || LA2_3250 == RPAREN || ((LA2_3250 >= SQUOTE) && (LA2_3250 <= USCORE))) ) { s = 3252; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3250 == LSBRAQUET || LA2_3250 == RSBRAQUET) ) { s = 405; } SEEK(index2_3250); if ( s>=0 ) { return s; } } break; case 129: { ANTLR3_UINT32 LA2_2531; ANTLR3_MARKER index2_2531; LA2_2531 = LA(1); index2_2531 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2531 == QMARK) ) { s = 854; } else if ( (LA2_2531 == SP) ) { s = 2456; } else if ( (LA2_2531 == SLASH) ) { s = 2455; } else if ( (LA2_2531 == SEMI) ) { s = 2051; } else if ( (LA2_2531 == COMMON_CHAR || LA2_2531 == HEX_CHAR) ) { s = 2530; } else if ( (LA2_2531 == DIGIT) ) { s = 2531; } else if ( (LA2_2531 == DOT) ) { s = 2532; } else if ( (LA2_2531 == PERCENT) ) { s = 2533; } else if ( (LA2_2531 == COLON) ) { s = 2534; } else if ( (LA2_2531 == AT) ) { s = 1576; } else if ( (LA2_2531 == AND) ) { s = 2535; } else if ( (LA2_2531 == EQUAL) ) { s = 2900; } else if ( (LA2_2531 == PLUS) ) { s = 2536; } else if ( (LA2_2531 == DOLLARD) ) { s = 2537; } else if ( (LA2_2531 == COMMA) ) { s = 1581; } else if ( (LA2_2531 == CRLF) ) { s = 2458; } else if ( (LA2_2531 == BQUOTE) ) { s = 1203; } else if ( (LA2_2531 == DASH || LA2_2531 == EMARK || LA2_2531 == LPAREN || LA2_2531 == RPAREN || ((LA2_2531 >= SQUOTE) && (LA2_2531 <= USCORE))) ) { s = 2538; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2531 == LSBRAQUET || LA2_2531 == RSBRAQUET) ) { s = 405; } SEEK(index2_2531); if ( s>=0 ) { return s; } } break; case 130: { ANTLR3_UINT32 LA2_3410; ANTLR3_MARKER index2_3410; LA2_3410 = LA(1); index2_3410 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3410 == SEMI) ) { s = 3151; } else if ( (LA2_3410 == QMARK) ) { s = 854; } else if ( (LA2_3410 == SP) ) { s = 204; } else if ( (LA2_3410 == SLASH) ) { s = 3123; } else if ( (LA2_3410 == COMMON_CHAR || LA2_3410 == HEX_CHAR) ) { s = 3406; } else if ( (LA2_3410 == DIGIT) ) { s = 3407; } else if ( (LA2_3410 == DOT) ) { s = 3408; } else if ( (LA2_3410 == PERCENT) ) { s = 3409; } else if ( (LA2_3410 == COLON) ) { s = 3410; } else if ( (LA2_3410 == AT) ) { s = 2504; } else if ( (LA2_3410 == AND) ) { s = 3411; } else if ( (LA2_3410 == EQUAL) ) { s = 2506; } else if ( (LA2_3410 == PLUS) ) { s = 3412; } else if ( (LA2_3410 == DOLLARD) ) { s = 3413; } else if ( (LA2_3410 == COMMA) ) { s = 2509; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3410 == CRLF) ) { s = 205; } else if ( (LA2_3410 == DASH || LA2_3410 == EMARK || LA2_3410 == LPAREN || LA2_3410 == RPAREN || ((LA2_3410 >= SQUOTE) && (LA2_3410 <= USCORE))) ) { s = 3414; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3410 == LSBRAQUET || LA2_3410 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3410); if ( s>=0 ) { return s; } } break; case 131: { ANTLR3_UINT32 LA2_3287; ANTLR3_MARKER index2_3287; LA2_3287 = LA(1); index2_3287 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3287 == SP) ) { s = 2456; } else if ( (LA2_3287 == CRLF) ) { s = 2458; } else if ( (LA2_3287 == EQUAL) ) { s = 3547; } else if ( (LA2_3287 == SLASH) ) { s = 3261; } else if ( (LA2_3287 == QMARK) ) { s = 854; } else if ( (LA2_3287 == SEMI) ) { s = 2986; } else if ( (LA2_3287 == COMMON_CHAR || LA2_3287 == HEX_CHAR) ) { s = 3286; } else if ( (LA2_3287 == DIGIT) ) { s = 3287; } else if ( (LA2_3287 == DOT) ) { s = 3288; } else if ( (LA2_3287 == PERCENT) ) { s = 3289; } else if ( (LA2_3287 == PLUS) ) { s = 3290; } else if ( (LA2_3287 == BQUOTE) ) { s = 1203; } else if ( (LA2_3287 == COLON) ) { s = 3291; } else if ( (LA2_3287 == AT) ) { s = 2578; } else if ( (LA2_3287 == AND) ) { s = 3292; } else if ( (LA2_3287 == DOLLARD) ) { s = 3293; } else if ( (LA2_3287 == COMMA) ) { s = 2583; } else if ( (LA2_3287 == DASH || LA2_3287 == EMARK || LA2_3287 == LPAREN || LA2_3287 == RPAREN || ((LA2_3287 >= SQUOTE) && (LA2_3287 <= USCORE))) ) { s = 3294; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3287 == LSBRAQUET || LA2_3287 == RSBRAQUET) ) { s = 405; } SEEK(index2_3287); if ( s>=0 ) { return s; } } break; case 132: { ANTLR3_UINT32 LA2_2914; ANTLR3_MARKER index2_2914; LA2_2914 = LA(1); index2_2914 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2914 == SLASH) ) { s = 3222; } else if ( (LA2_2914 == QMARK) ) { s = 854; } else if ( (LA2_2914 == SP) ) { s = 1585; } else if ( (LA2_2914 == CRLF) ) { s = 1588; } else if ( (LA2_2914 == SEMI) ) { s = 1630; } else if ( (LA2_2914 == COMMON_CHAR || LA2_2914 == HEX_CHAR) ) { s = 2912; } else if ( (LA2_2914 == DIGIT) ) { s = 2913; } else if ( (LA2_2914 == DOT) ) { s = 2914; } else if ( (LA2_2914 == PERCENT) ) { s = 2915; } else if ( (LA2_2914 == PLUS) ) { s = 2916; } else if ( (LA2_2914 == BQUOTE) ) { s = 2092; } else if ( (LA2_2914 == DASH || LA2_2914 == EMARK || LA2_2914 == LPAREN || LA2_2914 == RPAREN || ((LA2_2914 >= SQUOTE) && (LA2_2914 <= USCORE))) ) { s = 2917; } else if ( (LA2_2914 == COLON) ) { s = 2653; } else if ( (LA2_2914 == AND) ) { s = 2654; } else if ( (LA2_2914 == AT) ) { s = 810; } else if ( (LA2_2914 == DOLLARD) ) { s = 2656; } else if ( (LA2_2914 == EQUAL) ) { s = 812; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2914 == LSBRAQUET || LA2_2914 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_2914 == COMMA) ) { s = 815; } SEEK(index2_2914); if ( s>=0 ) { return s; } } break; case 133: { ANTLR3_UINT32 LA2_2461; ANTLR3_MARKER index2_2461; LA2_2461 = LA(1); index2_2461 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2461 == SLASH) ) { s = 2009; } else if ( (LA2_2461 == QMARK) ) { s = 854; } else if ( (LA2_2461 == SP) ) { s = 204; } else if ( (LA2_2461 == SEMI) ) { s = 2011; } else if ( (LA2_2461 == COMMON_CHAR || LA2_2461 == HEX_CHAR) ) { s = 2461; } else if ( (LA2_2461 == DIGIT) ) { s = 2462; } else if ( (LA2_2461 == DOT) ) { s = 2463; } else if ( (LA2_2461 == PERCENT) ) { s = 2464; } else if ( (LA2_2461 == COLON) ) { s = 2005; } else if ( (LA2_2461 == AT) ) { s = 1123; } else if ( (LA2_2461 == AND) ) { s = 2006; } else if ( (LA2_2461 == EQUAL) ) { s = 2465; } else if ( (LA2_2461 == PLUS) ) { s = 2466; } else if ( (LA2_2461 == DOLLARD) ) { s = 2008; } else if ( (LA2_2461 == COMMA) ) { s = 1128; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2461 == CRLF) ) { s = 205; } else if ( (LA2_2461 == DASH || LA2_2461 == EMARK || LA2_2461 == LPAREN || LA2_2461 == RPAREN || ((LA2_2461 >= SQUOTE) && (LA2_2461 <= USCORE))) ) { s = 2467; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2461 == LSBRAQUET || LA2_2461 == RSBRAQUET) ) { s = 405; } SEEK(index2_2461); if ( s>=0 ) { return s; } } break; case 134: { ANTLR3_UINT32 LA2_3411; ANTLR3_MARKER index2_3411; LA2_3411 = LA(1); index2_3411 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3411 == SEMI) ) { s = 3151; } else if ( (LA2_3411 == QMARK) ) { s = 854; } else if ( (LA2_3411 == SP) ) { s = 204; } else if ( (LA2_3411 == SLASH) ) { s = 3123; } else if ( (LA2_3411 == COMMON_CHAR || LA2_3411 == HEX_CHAR) ) { s = 3406; } else if ( (LA2_3411 == DIGIT) ) { s = 3407; } else if ( (LA2_3411 == DOT) ) { s = 3408; } else if ( (LA2_3411 == PERCENT) ) { s = 3409; } else if ( (LA2_3411 == COLON) ) { s = 3410; } else if ( (LA2_3411 == AT) ) { s = 2504; } else if ( (LA2_3411 == AND) ) { s = 3411; } else if ( (LA2_3411 == EQUAL) ) { s = 2506; } else if ( (LA2_3411 == PLUS) ) { s = 3412; } else if ( (LA2_3411 == DOLLARD) ) { s = 3413; } else if ( (LA2_3411 == COMMA) ) { s = 2509; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3411 == CRLF) ) { s = 205; } else if ( (LA2_3411 == DASH || LA2_3411 == EMARK || LA2_3411 == LPAREN || LA2_3411 == RPAREN || ((LA2_3411 >= SQUOTE) && (LA2_3411 <= USCORE))) ) { s = 3414; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3411 == LSBRAQUET || LA2_3411 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3411); if ( s>=0 ) { return s; } } break; case 135: { ANTLR3_UINT32 LA2_3412; ANTLR3_MARKER index2_3412; LA2_3412 = LA(1); index2_3412 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3412 == SEMI) ) { s = 3151; } else if ( (LA2_3412 == QMARK) ) { s = 854; } else if ( (LA2_3412 == SP) ) { s = 204; } else if ( (LA2_3412 == SLASH) ) { s = 3123; } else if ( (LA2_3412 == COMMON_CHAR || LA2_3412 == HEX_CHAR) ) { s = 3406; } else if ( (LA2_3412 == DIGIT) ) { s = 3407; } else if ( (LA2_3412 == DOT) ) { s = 3408; } else if ( (LA2_3412 == PERCENT) ) { s = 3409; } else if ( (LA2_3412 == COLON) ) { s = 3410; } else if ( (LA2_3412 == AT) ) { s = 2504; } else if ( (LA2_3412 == AND) ) { s = 3411; } else if ( (LA2_3412 == EQUAL) ) { s = 2506; } else if ( (LA2_3412 == PLUS) ) { s = 3412; } else if ( (LA2_3412 == DOLLARD) ) { s = 3413; } else if ( (LA2_3412 == COMMA) ) { s = 2509; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3412 == CRLF) ) { s = 205; } else if ( (LA2_3412 == DASH || LA2_3412 == EMARK || LA2_3412 == LPAREN || LA2_3412 == RPAREN || ((LA2_3412 >= SQUOTE) && (LA2_3412 <= USCORE))) ) { s = 3414; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3412 == LSBRAQUET || LA2_3412 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3412); if ( s>=0 ) { return s; } } break; case 136: { ANTLR3_UINT32 LA2_3062; ANTLR3_MARKER index2_3062; LA2_3062 = LA(1); index2_3062 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3062 == DIGIT) ) { s = 3369; } else if ( (LA2_3062 == DASH) ) { s = 876; } else if ( (LA2_3062 == COMMON_CHAR || LA2_3062 == HEX_CHAR) ) { s = 874; } else if ( (LA2_3062 == DOT) ) { s = 873; } else if ( (LA2_3062 == COLON) ) { s = 1298; } else if ( (LA2_3062 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3062 == CRLF) ) { s = 205; } else if ( (LA2_3062 == SEMI) ) { s = 853; } else if ( (LA2_3062 == QMARK) ) { s = 854; } else if ( (LA2_3062 == SLASH) ) { s = 241; } else if ( (LA2_3062 == EMARK || LA2_3062 == LPAREN || LA2_3062 == RPAREN || ((LA2_3062 >= SQUOTE) && (LA2_3062 <= USCORE))) ) { s = 494; } else if ( (LA2_3062 == PERCENT) ) { s = 495; } else if ( (LA2_3062 == AT) ) { s = 497; } else if ( (LA2_3062 == AND) ) { s = 498; } else if ( (LA2_3062 == EQUAL) ) { s = 499; } else if ( (LA2_3062 == PLUS) ) { s = 500; } else if ( (LA2_3062 == DOLLARD) ) { s = 501; } else if ( (LA2_3062 == COMMA) ) { s = 502; } SEEK(index2_3062); if ( s>=0 ) { return s; } } break; case 137: { ANTLR3_UINT32 LA2_3842; ANTLR3_MARKER index2_3842; LA2_3842 = LA(1); index2_3842 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3842 == QMARK) ) { s = 854; } else if ( (LA2_3842 == SP) ) { s = 204; } else if ( (LA2_3842 == SLASH) ) { s = 3435; } else if ( (LA2_3842 == SEMI) ) { s = 3463; } else if ( (LA2_3842 == COMMON_CHAR || LA2_3842 == HEX_CHAR) ) { s = 3837; } else if ( (LA2_3842 == DIGIT) ) { s = 3838; } else if ( (LA2_3842 == DOT) ) { s = 3839; } else if ( (LA2_3842 == PERCENT) ) { s = 3840; } else if ( (LA2_3842 == COLON) ) { s = 3841; } else if ( (LA2_3842 == AT) ) { s = 2638; } else if ( (LA2_3842 == AND) ) { s = 3842; } else if ( (LA2_3842 == EQUAL) ) { s = 2640; } else if ( (LA2_3842 == PLUS) ) { s = 3843; } else if ( (LA2_3842 == DOLLARD) ) { s = 3844; } else if ( (LA2_3842 == COMMA) ) { s = 2643; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3842 == CRLF) ) { s = 205; } else if ( (LA2_3842 == DASH || LA2_3842 == EMARK || LA2_3842 == LPAREN || LA2_3842 == RPAREN || ((LA2_3842 >= SQUOTE) && (LA2_3842 <= USCORE))) ) { s = 3845; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3842 == LSBRAQUET || LA2_3842 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3842); if ( s>=0 ) { return s; } } break; case 138: { ANTLR3_UINT32 LA2_3841; ANTLR3_MARKER index2_3841; LA2_3841 = LA(1); index2_3841 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3841 == QMARK) ) { s = 854; } else if ( (LA2_3841 == SP) ) { s = 204; } else if ( (LA2_3841 == SLASH) ) { s = 3435; } else if ( (LA2_3841 == SEMI) ) { s = 3463; } else if ( (LA2_3841 == COMMON_CHAR || LA2_3841 == HEX_CHAR) ) { s = 3837; } else if ( (LA2_3841 == DIGIT) ) { s = 3838; } else if ( (LA2_3841 == DOT) ) { s = 3839; } else if ( (LA2_3841 == PERCENT) ) { s = 3840; } else if ( (LA2_3841 == COLON) ) { s = 3841; } else if ( (LA2_3841 == AT) ) { s = 2638; } else if ( (LA2_3841 == AND) ) { s = 3842; } else if ( (LA2_3841 == EQUAL) ) { s = 2640; } else if ( (LA2_3841 == PLUS) ) { s = 3843; } else if ( (LA2_3841 == DOLLARD) ) { s = 3844; } else if ( (LA2_3841 == COMMA) ) { s = 2643; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3841 == CRLF) ) { s = 205; } else if ( (LA2_3841 == DASH || LA2_3841 == EMARK || LA2_3841 == LPAREN || LA2_3841 == RPAREN || ((LA2_3841 >= SQUOTE) && (LA2_3841 <= USCORE))) ) { s = 3845; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3841 == LSBRAQUET || LA2_3841 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3841); if ( s>=0 ) { return s; } } break; case 139: { ANTLR3_UINT32 LA2_3413; ANTLR3_MARKER index2_3413; LA2_3413 = LA(1); index2_3413 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3413 == SEMI) ) { s = 3151; } else if ( (LA2_3413 == QMARK) ) { s = 854; } else if ( (LA2_3413 == SP) ) { s = 204; } else if ( (LA2_3413 == SLASH) ) { s = 3123; } else if ( (LA2_3413 == COMMON_CHAR || LA2_3413 == HEX_CHAR) ) { s = 3406; } else if ( (LA2_3413 == DIGIT) ) { s = 3407; } else if ( (LA2_3413 == DOT) ) { s = 3408; } else if ( (LA2_3413 == PERCENT) ) { s = 3409; } else if ( (LA2_3413 == COLON) ) { s = 3410; } else if ( (LA2_3413 == AT) ) { s = 2504; } else if ( (LA2_3413 == AND) ) { s = 3411; } else if ( (LA2_3413 == EQUAL) ) { s = 2506; } else if ( (LA2_3413 == PLUS) ) { s = 3412; } else if ( (LA2_3413 == DOLLARD) ) { s = 3413; } else if ( (LA2_3413 == COMMA) ) { s = 2509; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3413 == CRLF) ) { s = 205; } else if ( (LA2_3413 == DASH || LA2_3413 == EMARK || LA2_3413 == LPAREN || LA2_3413 == RPAREN || ((LA2_3413 >= SQUOTE) && (LA2_3413 <= USCORE))) ) { s = 3414; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3413 == LSBRAQUET || LA2_3413 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3413); if ( s>=0 ) { return s; } } break; case 140: { ANTLR3_UINT32 LA2_390; ANTLR3_MARKER index2_390; LA2_390 = LA(1); index2_390 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_390 == COMMON_CHAR || LA2_390 == HEX_CHAR) ) { s = 390; } else if ( (LA2_390 == DIGIT) ) { s = 391; } else if ( (LA2_390 == DASH) ) { s = 392; } else if ( (LA2_390 == DOT) ) { s = 691; } else if ( (LA2_390 == COLON) ) { s = 692; } else if ( (LA2_390 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_390 == CRLF) ) { s = 205; } else if ( (LA2_390 == SEMI) ) { s = 693; } else if ( (LA2_390 == QMARK) ) { s = 694; } else if ( (LA2_390 == COMMA) ) { s = 106; } else if ( (((LA2_390 >= AND) && (LA2_390 <= AT)) || LA2_390 == DOLLARD || LA2_390 == EQUAL || LA2_390 == PLUS || LA2_390 == SLASH) ) { s = 108; } else if ( (LA2_390 == EMARK || LA2_390 == LPAREN || LA2_390 == RPAREN || ((LA2_390 >= SQUOTE) && (LA2_390 <= USCORE))) ) { s = 111; } else if ( (LA2_390 == PERCENT) ) { s = 112; } SEEK(index2_390); if ( s>=0 ) { return s; } } break; case 141: { ANTLR3_UINT32 LA2_3843; ANTLR3_MARKER index2_3843; LA2_3843 = LA(1); index2_3843 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3843 == QMARK) ) { s = 854; } else if ( (LA2_3843 == SP) ) { s = 204; } else if ( (LA2_3843 == SLASH) ) { s = 3435; } else if ( (LA2_3843 == SEMI) ) { s = 3463; } else if ( (LA2_3843 == COMMON_CHAR || LA2_3843 == HEX_CHAR) ) { s = 3837; } else if ( (LA2_3843 == DIGIT) ) { s = 3838; } else if ( (LA2_3843 == DOT) ) { s = 3839; } else if ( (LA2_3843 == PERCENT) ) { s = 3840; } else if ( (LA2_3843 == COLON) ) { s = 3841; } else if ( (LA2_3843 == AT) ) { s = 2638; } else if ( (LA2_3843 == AND) ) { s = 3842; } else if ( (LA2_3843 == EQUAL) ) { s = 2640; } else if ( (LA2_3843 == PLUS) ) { s = 3843; } else if ( (LA2_3843 == DOLLARD) ) { s = 3844; } else if ( (LA2_3843 == COMMA) ) { s = 2643; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3843 == CRLF) ) { s = 205; } else if ( (LA2_3843 == DASH || LA2_3843 == EMARK || LA2_3843 == LPAREN || LA2_3843 == RPAREN || ((LA2_3843 >= SQUOTE) && (LA2_3843 <= USCORE))) ) { s = 3845; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3843 == LSBRAQUET || LA2_3843 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3843); if ( s>=0 ) { return s; } } break; case 142: { ANTLR3_UINT32 LA2_3665; ANTLR3_MARKER index2_3665; LA2_3665 = LA(1); index2_3665 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3665 == QMARK) ) { s = 854; } else if ( (LA2_3665 == SP) ) { s = 1585; } else if ( (LA2_3665 == SLASH) ) { s = 3153; } else if ( (LA2_3665 == SEMI) ) { s = 2051; } else if ( (LA2_3665 == COMMON_CHAR || LA2_3665 == HEX_CHAR) ) { s = 3200; } else if ( (LA2_3665 == DIGIT) ) { s = 3201; } else if ( (LA2_3665 == DOT) ) { s = 3202; } else if ( (LA2_3665 == PERCENT) ) { s = 3203; } else if ( (LA2_3665 == COLON) ) { s = 3204; } else if ( (LA2_3665 == AT) ) { s = 1576; } else if ( (LA2_3665 == AND) ) { s = 3205; } else if ( (LA2_3665 == EQUAL) ) { s = 1578; } else if ( (LA2_3665 == PLUS) ) { s = 3206; } else if ( (LA2_3665 == DOLLARD) ) { s = 3207; } else if ( (LA2_3665 == COMMA) ) { s = 1581; } else if ( (LA2_3665 == CRLF) ) { s = 1588; } else if ( (LA2_3665 == BQUOTE) ) { s = 2092; } else if ( (LA2_3665 == DASH || LA2_3665 == EMARK || LA2_3665 == LPAREN || LA2_3665 == RPAREN || ((LA2_3665 >= SQUOTE) && (LA2_3665 <= USCORE))) ) { s = 3208; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3665 == LSBRAQUET || LA2_3665 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3665); if ( s>=0 ) { return s; } } break; case 143: { ANTLR3_UINT32 LA2_3844; ANTLR3_MARKER index2_3844; LA2_3844 = LA(1); index2_3844 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3844 == QMARK) ) { s = 854; } else if ( (LA2_3844 == SP) ) { s = 204; } else if ( (LA2_3844 == SLASH) ) { s = 3435; } else if ( (LA2_3844 == SEMI) ) { s = 3463; } else if ( (LA2_3844 == COMMON_CHAR || LA2_3844 == HEX_CHAR) ) { s = 3837; } else if ( (LA2_3844 == DIGIT) ) { s = 3838; } else if ( (LA2_3844 == DOT) ) { s = 3839; } else if ( (LA2_3844 == PERCENT) ) { s = 3840; } else if ( (LA2_3844 == COLON) ) { s = 3841; } else if ( (LA2_3844 == AT) ) { s = 2638; } else if ( (LA2_3844 == AND) ) { s = 3842; } else if ( (LA2_3844 == EQUAL) ) { s = 2640; } else if ( (LA2_3844 == PLUS) ) { s = 3843; } else if ( (LA2_3844 == DOLLARD) ) { s = 3844; } else if ( (LA2_3844 == COMMA) ) { s = 2643; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3844 == CRLF) ) { s = 205; } else if ( (LA2_3844 == DASH || LA2_3844 == EMARK || LA2_3844 == LPAREN || LA2_3844 == RPAREN || ((LA2_3844 >= SQUOTE) && (LA2_3844 <= USCORE))) ) { s = 3845; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3844 == LSBRAQUET || LA2_3844 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3844); if ( s>=0 ) { return s; } } break; case 144: { ANTLR3_UINT32 LA2_3864; ANTLR3_MARKER index2_3864; LA2_3864 = LA(1); index2_3864 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3864 == SLASH) ) { s = 3678; } else if ( (LA2_3864 == QMARK) ) { s = 854; } else if ( (LA2_3864 == SP) ) { s = 1585; } else if ( (LA2_3864 == CRLF) ) { s = 1588; } else if ( (LA2_3864 == SEMI) ) { s = 2986; } else if ( (LA2_3864 == COMMON_CHAR || LA2_3864 == HEX_CHAR) ) { s = 3707; } else if ( (LA2_3864 == DIGIT) ) { s = 3708; } else if ( (LA2_3864 == DOT) ) { s = 3709; } else if ( (LA2_3864 == PERCENT) ) { s = 3710; } else if ( (LA2_3864 == PLUS) ) { s = 3711; } else if ( (LA2_3864 == BQUOTE) ) { s = 2092; } else if ( (LA2_3864 == COLON) ) { s = 3712; } else if ( (LA2_3864 == AT) ) { s = 2578; } else if ( (LA2_3864 == AND) ) { s = 3713; } else if ( (LA2_3864 == EQUAL) ) { s = 2580; } else if ( (LA2_3864 == DOLLARD) ) { s = 3714; } else if ( (LA2_3864 == COMMA) ) { s = 2583; } else if ( (LA2_3864 == DASH || LA2_3864 == EMARK || LA2_3864 == LPAREN || LA2_3864 == RPAREN || ((LA2_3864 >= SQUOTE) && (LA2_3864 <= USCORE))) ) { s = 3715; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3864 == LSBRAQUET || LA2_3864 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3864); if ( s>=0 ) { return s; } } break; case 145: { ANTLR3_UINT32 LA2_3695; ANTLR3_MARKER index2_3695; LA2_3695 = LA(1); index2_3695 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3695 == SLASH) ) { s = 2928; } else if ( (LA2_3695 == QMARK) ) { s = 854; } else if ( (LA2_3695 == SP) ) { s = 204; } else if ( (LA2_3695 == SEMI) ) { s = 3530; } else if ( (LA2_3695 == COMMON_CHAR || LA2_3695 == HEX_CHAR) ) { s = 3691; } else if ( (LA2_3695 == DIGIT) ) { s = 3692; } else if ( (LA2_3695 == DOT) ) { s = 3693; } else if ( (LA2_3695 == PERCENT) ) { s = 3694; } else if ( (LA2_3695 == COLON) ) { s = 3695; } else if ( (LA2_3695 == AT) ) { s = 3271; } else if ( (LA2_3695 == AND) ) { s = 3696; } else if ( (LA2_3695 == EQUAL) ) { s = 3800; } else if ( (LA2_3695 == PLUS) ) { s = 3697; } else if ( (LA2_3695 == DOLLARD) ) { s = 3698; } else if ( (LA2_3695 == COMMA) ) { s = 3276; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3695 == CRLF) ) { s = 205; } else if ( (LA2_3695 == DASH || LA2_3695 == EMARK || LA2_3695 == LPAREN || LA2_3695 == RPAREN || ((LA2_3695 >= SQUOTE) && (LA2_3695 <= USCORE))) ) { s = 3699; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3695 == LSBRAQUET || LA2_3695 == RSBRAQUET) ) { s = 405; } SEEK(index2_3695); if ( s>=0 ) { return s; } } break; case 146: { ANTLR3_UINT32 LA2_2001; ANTLR3_MARKER index2_2001; LA2_2001 = LA(1); index2_2001 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2001 == SLASH) ) { s = 2455; } else if ( (LA2_2001 == QMARK) ) { s = 854; } else if ( (LA2_2001 == SP) ) { s = 2456; } else if ( (LA2_2001 == SEMI) ) { s = 1583; } else if ( (LA2_2001 == COMMON_CHAR || LA2_2001 == HEX_CHAR) ) { s = 2001; } else if ( (LA2_2001 == DIGIT) ) { s = 2002; } else if ( (LA2_2001 == DOT) ) { s = 2003; } else if ( (LA2_2001 == PERCENT) ) { s = 2004; } else if ( (LA2_2001 == COLON) ) { s = 2005; } else if ( (LA2_2001 == AT) ) { s = 1123; } else if ( (LA2_2001 == AND) ) { s = 2006; } else if ( (LA2_2001 == EQUAL) ) { s = 2457; } else if ( (LA2_2001 == PLUS) ) { s = 2007; } else if ( (LA2_2001 == DOLLARD) ) { s = 2008; } else if ( (LA2_2001 == COMMA) ) { s = 1128; } else if ( (LA2_2001 == CRLF) ) { s = 2458; } else if ( (LA2_2001 == BQUOTE) ) { s = 1203; } else if ( (LA2_2001 == DASH || LA2_2001 == EMARK || LA2_2001 == LPAREN || LA2_2001 == RPAREN || ((LA2_2001 >= SQUOTE) && (LA2_2001 <= USCORE))) ) { s = 2013; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2001 == LSBRAQUET || LA2_2001 == RSBRAQUET) ) { s = 405; } SEEK(index2_2001); if ( s>=0 ) { return s; } } break; case 147: { ANTLR3_UINT32 LA2_3033; ANTLR3_MARKER index2_3033; LA2_3033 = LA(1); index2_3033 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3033 == SP) ) { s = 2456; } else if ( (LA2_3033 == CRLF) ) { s = 2458; } else if ( (LA2_3033 == EQUAL) ) { s = 2663; } else if ( (LA2_3033 == SLASH) ) { s = 2664; } else if ( (LA2_3033 == QMARK) ) { s = 1751; } else if ( (LA2_3033 == SEMI) ) { s = 1749; } else if ( (LA2_3033 == COMMON_CHAR || LA2_3033 == HEX_CHAR) ) { s = 2218; } else if ( (LA2_3033 == DIGIT) ) { s = 2219; } else if ( (LA2_3033 == DOT) ) { s = 2220; } else if ( (LA2_3033 == PERCENT) ) { s = 2221; } else if ( (LA2_3033 == PLUS) ) { s = 2222; } else if ( (LA2_3033 == BQUOTE) ) { s = 1203; } else if ( (LA2_3033 == DASH || LA2_3033 == EMARK || LA2_3033 == LPAREN || LA2_3033 == RPAREN || ((LA2_3033 >= SQUOTE) && (LA2_3033 <= USCORE))) ) { s = 2223; } else if ( (LA2_3033 == AND || LA2_3033 == COLON || LA2_3033 == DOLLARD) ) { s = 1790; } else if ( (LA2_3033 == COMMA) ) { s = 506; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3033 == LSBRAQUET || LA2_3033 == RSBRAQUET) ) { s = 405; } else if ( (LA2_3033 == AT) ) { s = 508; } SEEK(index2_3033); if ( s>=0 ) { return s; } } break; case 148: { ANTLR3_UINT32 LA2_399; ANTLR3_MARKER index2_399; LA2_399 = LA(1); index2_399 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_399 == COLON) ) { s = 396; } else if ( (LA2_399 == AT) ) { s = 89; } else if ( (LA2_399 == COMMON_CHAR || LA2_399 == HEX_CHAR) ) { s = 397; } else if ( (LA2_399 == DIGIT) ) { s = 398; } else if ( (LA2_399 == DOT) ) { s = 399; } else if ( (LA2_399 == PERCENT) ) { s = 400; } else if ( (LA2_399 == QMARK) ) { s = 206; } else if ( (LA2_399 == SEMI) ) { s = 202; } else if ( (LA2_399 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_399 == CRLF) ) { s = 205; } else if ( (LA2_399 == AND || LA2_399 == DOLLARD || LA2_399 == PLUS || LA2_399 == SLASH) ) { s = 401; } else if ( (LA2_399 == DASH || LA2_399 == EMARK || LA2_399 == LPAREN || LA2_399 == RPAREN || ((LA2_399 >= SQUOTE) && (LA2_399 <= USCORE))) ) { s = 404; } else if ( (LA2_399 == EQUAL) ) { s = 709; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_399 == LSBRAQUET || LA2_399 == RSBRAQUET) ) { s = 405; } else if ( (LA2_399 == COMMA) ) { s = 97; } SEEK(index2_399); if ( s>=0 ) { return s; } } break; case 149: { ANTLR3_UINT32 LA2_3696; ANTLR3_MARKER index2_3696; LA2_3696 = LA(1); index2_3696 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3696 == SLASH) ) { s = 2928; } else if ( (LA2_3696 == QMARK) ) { s = 854; } else if ( (LA2_3696 == SP) ) { s = 204; } else if ( (LA2_3696 == SEMI) ) { s = 3530; } else if ( (LA2_3696 == COMMON_CHAR || LA2_3696 == HEX_CHAR) ) { s = 3691; } else if ( (LA2_3696 == DIGIT) ) { s = 3692; } else if ( (LA2_3696 == DOT) ) { s = 3693; } else if ( (LA2_3696 == PERCENT) ) { s = 3694; } else if ( (LA2_3696 == COLON) ) { s = 3695; } else if ( (LA2_3696 == AT) ) { s = 3271; } else if ( (LA2_3696 == AND) ) { s = 3696; } else if ( (LA2_3696 == EQUAL) ) { s = 3800; } else if ( (LA2_3696 == PLUS) ) { s = 3697; } else if ( (LA2_3696 == DOLLARD) ) { s = 3698; } else if ( (LA2_3696 == COMMA) ) { s = 3276; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3696 == CRLF) ) { s = 205; } else if ( (LA2_3696 == DASH || LA2_3696 == EMARK || LA2_3696 == LPAREN || LA2_3696 == RPAREN || ((LA2_3696 >= SQUOTE) && (LA2_3696 <= USCORE))) ) { s = 3699; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3696 == LSBRAQUET || LA2_3696 == RSBRAQUET) ) { s = 405; } SEEK(index2_3696); if ( s>=0 ) { return s; } } break; case 150: { ANTLR3_UINT32 LA2_3697; ANTLR3_MARKER index2_3697; LA2_3697 = LA(1); index2_3697 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3697 == SLASH) ) { s = 2928; } else if ( (LA2_3697 == QMARK) ) { s = 854; } else if ( (LA2_3697 == SP) ) { s = 204; } else if ( (LA2_3697 == SEMI) ) { s = 3530; } else if ( (LA2_3697 == COMMON_CHAR || LA2_3697 == HEX_CHAR) ) { s = 3691; } else if ( (LA2_3697 == DIGIT) ) { s = 3692; } else if ( (LA2_3697 == DOT) ) { s = 3693; } else if ( (LA2_3697 == PERCENT) ) { s = 3694; } else if ( (LA2_3697 == COLON) ) { s = 3695; } else if ( (LA2_3697 == AT) ) { s = 3271; } else if ( (LA2_3697 == AND) ) { s = 3696; } else if ( (LA2_3697 == EQUAL) ) { s = 3800; } else if ( (LA2_3697 == PLUS) ) { s = 3697; } else if ( (LA2_3697 == DOLLARD) ) { s = 3698; } else if ( (LA2_3697 == COMMA) ) { s = 3276; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3697 == CRLF) ) { s = 205; } else if ( (LA2_3697 == DASH || LA2_3697 == EMARK || LA2_3697 == LPAREN || LA2_3697 == RPAREN || ((LA2_3697 >= SQUOTE) && (LA2_3697 <= USCORE))) ) { s = 3699; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3697 == LSBRAQUET || LA2_3697 == RSBRAQUET) ) { s = 405; } SEEK(index2_3697); if ( s>=0 ) { return s; } } break; case 151: { ANTLR3_UINT32 LA2_3698; ANTLR3_MARKER index2_3698; LA2_3698 = LA(1); index2_3698 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3698 == SLASH) ) { s = 2928; } else if ( (LA2_3698 == QMARK) ) { s = 854; } else if ( (LA2_3698 == SP) ) { s = 204; } else if ( (LA2_3698 == SEMI) ) { s = 3530; } else if ( (LA2_3698 == COMMON_CHAR || LA2_3698 == HEX_CHAR) ) { s = 3691; } else if ( (LA2_3698 == DIGIT) ) { s = 3692; } else if ( (LA2_3698 == DOT) ) { s = 3693; } else if ( (LA2_3698 == PERCENT) ) { s = 3694; } else if ( (LA2_3698 == COLON) ) { s = 3695; } else if ( (LA2_3698 == AT) ) { s = 3271; } else if ( (LA2_3698 == AND) ) { s = 3696; } else if ( (LA2_3698 == EQUAL) ) { s = 3800; } else if ( (LA2_3698 == PLUS) ) { s = 3697; } else if ( (LA2_3698 == DOLLARD) ) { s = 3698; } else if ( (LA2_3698 == COMMA) ) { s = 3276; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3698 == CRLF) ) { s = 205; } else if ( (LA2_3698 == DASH || LA2_3698 == EMARK || LA2_3698 == LPAREN || LA2_3698 == RPAREN || ((LA2_3698 >= SQUOTE) && (LA2_3698 <= USCORE))) ) { s = 3699; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3698 == LSBRAQUET || LA2_3698 == RSBRAQUET) ) { s = 405; } SEEK(index2_3698); if ( s>=0 ) { return s; } } break; case 152: { ANTLR3_UINT32 LA2_2949; ANTLR3_MARKER index2_2949; LA2_2949 = LA(1); index2_2949 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2949 == SP) ) { s = 2456; } else if ( (LA2_2949 == CRLF) ) { s = 2458; } else if ( (LA2_2949 == EQUAL) ) { s = 3260; } else if ( (LA2_2949 == SLASH) ) { s = 3261; } else if ( (LA2_2949 == QMARK) ) { s = 854; } else if ( (LA2_2949 == SEMI) ) { s = 2587; } else if ( (LA2_2949 == COMMON_CHAR || LA2_2949 == HEX_CHAR) ) { s = 2949; } else if ( (LA2_2949 == DIGIT) ) { s = 2950; } else if ( (LA2_2949 == DOT) ) { s = 2951; } else if ( (LA2_2949 == PERCENT) ) { s = 2952; } else if ( (LA2_2949 == PLUS) ) { s = 2953; } else if ( (LA2_2949 == BQUOTE) ) { s = 1203; } else if ( (LA2_2949 == COLON) ) { s = 2954; } else if ( (LA2_2949 == AT) ) { s = 2111; } else if ( (LA2_2949 == AND) ) { s = 2955; } else if ( (LA2_2949 == DOLLARD) ) { s = 2956; } else if ( (LA2_2949 == COMMA) ) { s = 2116; } else if ( (LA2_2949 == DASH || LA2_2949 == EMARK || LA2_2949 == LPAREN || LA2_2949 == RPAREN || ((LA2_2949 >= SQUOTE) && (LA2_2949 <= USCORE))) ) { s = 2957; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2949 == LSBRAQUET || LA2_2949 == RSBRAQUET) ) { s = 405; } SEEK(index2_2949); if ( s>=0 ) { return s; } } break; case 153: { ANTLR3_UINT32 LA2_3748; ANTLR3_MARKER index2_3748; LA2_3748 = LA(1); index2_3748 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3748 == SP) ) { s = 35; } else if ( (LA2_3748 == AND) ) { s = 2268; } else if ( (LA2_3748 == QMARK) ) { s = 3359; } else if ( (LA2_3748 == COMMON_CHAR || LA2_3748 == HEX_CHAR) ) { s = 3360; } else if ( (LA2_3748 == DIGIT) ) { s = 3361; } else if ( (LA2_3748 == DASH || LA2_3748 == DOT || LA2_3748 == EMARK || LA2_3748 == LPAREN || LA2_3748 == RPAREN || ((LA2_3748 >= SQUOTE) && (LA2_3748 <= USCORE))) ) { s = 3362; } else if ( (LA2_3748 == PERCENT) ) { s = 3363; } else if ( (LA2_3748 == SEMI) ) { s = 505; } else if ( (LA2_3748 == COMMA) ) { s = 506; } else if ( (LA2_3748 == COLON || LA2_3748 == DOLLARD || LA2_3748 == PLUS || LA2_3748 == SLASH) ) { s = 3364; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3748 == LSBRAQUET || LA2_3748 == RSBRAQUET) ) { s = 2437; } else if ( (LA2_3748 == AT || LA2_3748 == EQUAL) ) { s = 508; } SEEK(index2_3748); if ( s>=0 ) { return s; } } break; case 154: { ANTLR3_UINT32 LA2_1064; ANTLR3_MARKER index2_1064; LA2_1064 = LA(1); index2_1064 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1064 == EQUAL) ) { s = 1105; } else if ( (LA2_1064 == QMARK) ) { s = 724; } else if ( (LA2_1064 == COMMON_CHAR || LA2_1064 == HEX_CHAR) ) { s = 1062; } else if ( (LA2_1064 == DIGIT) ) { s = 1063; } else if ( (LA2_1064 == DASH || LA2_1064 == DOT || LA2_1064 == EMARK || LA2_1064 == LPAREN || LA2_1064 == RPAREN || ((LA2_1064 >= SQUOTE) && (LA2_1064 <= USCORE))) ) { s = 1064; } else if ( (LA2_1064 == PERCENT) ) { s = 1065; } else if ( (LA2_1064 == SP) ) { s = 35; } else if ( (LA2_1064 == SEMI) ) { s = 105; } else if ( (LA2_1064 == COMMA) ) { s = 106; } else if ( (LA2_1064 == COLON || LA2_1064 == DOLLARD || LA2_1064 == PLUS || LA2_1064 == SLASH) ) { s = 725; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1064 == LSBRAQUET || LA2_1064 == RSBRAQUET) ) { s = 414; } else if ( (((LA2_1064 >= AND) && (LA2_1064 <= AT))) ) { s = 108; } SEEK(index2_1064); if ( s>=0 ) { return s; } } break; case 155: { ANTLR3_UINT32 LA2_1991; ANTLR3_MARKER index2_1991; LA2_1991 = LA(1); index2_1991 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1991 == EQUAL) ) { s = 1988; } else if ( (LA2_1991 == QMARK) ) { s = 1550; } else if ( (LA2_1991 == COMMON_CHAR || LA2_1991 == HEX_CHAR) ) { s = 1989; } else if ( (LA2_1991 == DIGIT) ) { s = 1990; } else if ( (LA2_1991 == DASH || LA2_1991 == DOT || LA2_1991 == EMARK || LA2_1991 == LPAREN || LA2_1991 == RPAREN || ((LA2_1991 >= SQUOTE) && (LA2_1991 <= USCORE))) ) { s = 1991; } else if ( (LA2_1991 == PERCENT) ) { s = 1992; } else if ( (LA2_1991 == SP) ) { s = 35; } else if ( (LA2_1991 == SEMI) ) { s = 105; } else if ( (LA2_1991 == COMMA) ) { s = 106; } else if ( (LA2_1991 == COLON || LA2_1991 == DOLLARD || LA2_1991 == PLUS || LA2_1991 == SLASH) ) { s = 1551; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1991 == LSBRAQUET || LA2_1991 == RSBRAQUET) ) { s = 1552; } else if ( (((LA2_1991 >= AND) && (LA2_1991 <= AT))) ) { s = 108; } SEEK(index2_1991); if ( s>=0 ) { return s; } } break; case 156: { ANTLR3_UINT32 LA2_2429; ANTLR3_MARKER index2_2429; LA2_2429 = LA(1); index2_2429 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2429 == AT) ) { s = 89; } else if ( (LA2_2429 == COMMON_CHAR || LA2_2429 == HEX_CHAR) ) { s = 2429; } else if ( (LA2_2429 == DIGIT) ) { s = 2430; } else if ( (LA2_2429 == DASH || LA2_2429 == DOT || LA2_2429 == EMARK || LA2_2429 == LPAREN || LA2_2429 == RPAREN || ((LA2_2429 >= SQUOTE) && (LA2_2429 <= USCORE))) ) { s = 2431; } else if ( (LA2_2429 == PERCENT) ) { s = 2432; } else if ( (LA2_2429 == AND) ) { s = 1099; } else if ( (LA2_2429 == EQUAL) ) { s = 194; } else if ( (LA2_2429 == PLUS) ) { s = 2433; } else if ( (LA2_2429 == DOLLARD) ) { s = 2434; } else if ( (LA2_2429 == COMMA) ) { s = 197; } else if ( (LA2_2429 == SP) ) { s = 35; } else if ( (LA2_2429 == QMARK) ) { s = 2435; } else if ( (LA2_2429 == SEMI) ) { s = 105; } else if ( (LA2_2429 == COLON || LA2_2429 == SLASH) ) { s = 2436; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2429 == LSBRAQUET || LA2_2429 == RSBRAQUET) ) { s = 2437; } SEEK(index2_2429); if ( s>=0 ) { return s; } } break; case 157: { ANTLR3_UINT32 LA2_1076; ANTLR3_MARKER index2_1076; LA2_1076 = LA(1); index2_1076 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1076 == AT) ) { s = 89; } else if ( (LA2_1076 == COMMON_CHAR || LA2_1076 == HEX_CHAR) ) { s = 1071; } else if ( (LA2_1076 == DIGIT) ) { s = 1072; } else if ( (LA2_1076 == DOT) ) { s = 1073; } else if ( (LA2_1076 == PERCENT) ) { s = 1074; } else if ( (LA2_1076 == AND) ) { s = 1075; } else if ( (LA2_1076 == EQUAL) ) { s = 194; } else if ( (LA2_1076 == PLUS) ) { s = 1076; } else if ( (LA2_1076 == DOLLARD) ) { s = 1077; } else if ( (LA2_1076 == COMMA) ) { s = 197; } else if ( (LA2_1076 == QMARK) ) { s = 694; } else if ( (LA2_1076 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1076 == CRLF) ) { s = 205; } else if ( (LA2_1076 == SEMI) ) { s = 693; } else if ( (LA2_1076 == DASH || LA2_1076 == EMARK || LA2_1076 == LPAREN || LA2_1076 == RPAREN || ((LA2_1076 >= SQUOTE) && (LA2_1076 <= USCORE))) ) { s = 1078; } else if ( (LA2_1076 == COLON || LA2_1076 == SLASH) ) { s = 1079; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1076 == LSBRAQUET || LA2_1076 == RSBRAQUET) ) { s = 1080; } SEEK(index2_1076); if ( s>=0 ) { return s; } } break; case 158: { ANTLR3_UINT32 LA2_2917; ANTLR3_MARKER index2_2917; LA2_2917 = LA(1); index2_2917 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2917 == SLASH) ) { s = 3222; } else if ( (LA2_2917 == QMARK) ) { s = 854; } else if ( (LA2_2917 == SP) ) { s = 1585; } else if ( (LA2_2917 == CRLF) ) { s = 1588; } else if ( (LA2_2917 == SEMI) ) { s = 1630; } else if ( (LA2_2917 == COMMON_CHAR || LA2_2917 == HEX_CHAR) ) { s = 2912; } else if ( (LA2_2917 == DIGIT) ) { s = 2913; } else if ( (LA2_2917 == DOT) ) { s = 2914; } else if ( (LA2_2917 == PERCENT) ) { s = 2915; } else if ( (LA2_2917 == PLUS) ) { s = 2916; } else if ( (LA2_2917 == BQUOTE) ) { s = 2092; } else if ( (LA2_2917 == DASH || LA2_2917 == EMARK || LA2_2917 == LPAREN || LA2_2917 == RPAREN || ((LA2_2917 >= SQUOTE) && (LA2_2917 <= USCORE))) ) { s = 2917; } else if ( (LA2_2917 == COLON) ) { s = 2653; } else if ( (LA2_2917 == AND) ) { s = 2654; } else if ( (LA2_2917 == AT) ) { s = 810; } else if ( (LA2_2917 == DOLLARD) ) { s = 2656; } else if ( (LA2_2917 == EQUAL) ) { s = 812; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2917 == LSBRAQUET || LA2_2917 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_2917 == COMMA) ) { s = 815; } SEEK(index2_2917); if ( s>=0 ) { return s; } } break; case 159: { ANTLR3_UINT32 LA2_1077; ANTLR3_MARKER index2_1077; LA2_1077 = LA(1); index2_1077 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1077 == AT) ) { s = 89; } else if ( (LA2_1077 == COMMON_CHAR || LA2_1077 == HEX_CHAR) ) { s = 1071; } else if ( (LA2_1077 == DIGIT) ) { s = 1072; } else if ( (LA2_1077 == DOT) ) { s = 1073; } else if ( (LA2_1077 == PERCENT) ) { s = 1074; } else if ( (LA2_1077 == AND) ) { s = 1075; } else if ( (LA2_1077 == EQUAL) ) { s = 194; } else if ( (LA2_1077 == PLUS) ) { s = 1076; } else if ( (LA2_1077 == DOLLARD) ) { s = 1077; } else if ( (LA2_1077 == COMMA) ) { s = 197; } else if ( (LA2_1077 == QMARK) ) { s = 694; } else if ( (LA2_1077 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1077 == CRLF) ) { s = 205; } else if ( (LA2_1077 == SEMI) ) { s = 693; } else if ( (LA2_1077 == DASH || LA2_1077 == EMARK || LA2_1077 == LPAREN || LA2_1077 == RPAREN || ((LA2_1077 >= SQUOTE) && (LA2_1077 <= USCORE))) ) { s = 1078; } else if ( (LA2_1077 == COLON || LA2_1077 == SLASH) ) { s = 1079; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1077 == LSBRAQUET || LA2_1077 == RSBRAQUET) ) { s = 1080; } SEEK(index2_1077); if ( s>=0 ) { return s; } } break; case 160: { ANTLR3_UINT32 LA2_1075; ANTLR3_MARKER index2_1075; LA2_1075 = LA(1); index2_1075 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1075 == AT) ) { s = 89; } else if ( (LA2_1075 == COMMON_CHAR || LA2_1075 == HEX_CHAR) ) { s = 1071; } else if ( (LA2_1075 == DIGIT) ) { s = 1072; } else if ( (LA2_1075 == DOT) ) { s = 1073; } else if ( (LA2_1075 == PERCENT) ) { s = 1074; } else if ( (LA2_1075 == AND) ) { s = 1075; } else if ( (LA2_1075 == EQUAL) ) { s = 194; } else if ( (LA2_1075 == PLUS) ) { s = 1076; } else if ( (LA2_1075 == DOLLARD) ) { s = 1077; } else if ( (LA2_1075 == COMMA) ) { s = 197; } else if ( (LA2_1075 == QMARK) ) { s = 694; } else if ( (LA2_1075 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1075 == CRLF) ) { s = 205; } else if ( (LA2_1075 == SEMI) ) { s = 693; } else if ( (LA2_1075 == DASH || LA2_1075 == EMARK || LA2_1075 == LPAREN || LA2_1075 == RPAREN || ((LA2_1075 >= SQUOTE) && (LA2_1075 <= USCORE))) ) { s = 1078; } else if ( (LA2_1075 == COLON || LA2_1075 == SLASH) ) { s = 1079; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1075 == LSBRAQUET || LA2_1075 == RSBRAQUET) ) { s = 1080; } SEEK(index2_1075); if ( s>=0 ) { return s; } } break; case 161: { ANTLR3_UINT32 LA2_3432; ANTLR3_MARKER index2_3432; LA2_3432 = LA(1); index2_3432 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3432 == QMARK) ) { s = 854; } else if ( (LA2_3432 == SP) ) { s = 204; } else if ( (LA2_3432 == SLASH) ) { s = 2009; } else if ( (LA2_3432 == SEMI) ) { s = 2477; } else if ( (LA2_3432 == COMMON_CHAR || LA2_3432 == HEX_CHAR) ) { s = 2860; } else if ( (LA2_3432 == DIGIT) ) { s = 2861; } else if ( (LA2_3432 == DOT) ) { s = 2862; } else if ( (LA2_3432 == PERCENT) ) { s = 2863; } else if ( (LA2_3432 == COLON) ) { s = 2534; } else if ( (LA2_3432 == AT) ) { s = 1576; } else if ( (LA2_3432 == AND) ) { s = 2535; } else if ( (LA2_3432 == EQUAL) ) { s = 2903; } else if ( (LA2_3432 == PLUS) ) { s = 2864; } else if ( (LA2_3432 == DOLLARD) ) { s = 2537; } else if ( (LA2_3432 == COMMA) ) { s = 1581; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3432 == CRLF) ) { s = 205; } else if ( (LA2_3432 == DASH || LA2_3432 == EMARK || LA2_3432 == LPAREN || LA2_3432 == RPAREN || ((LA2_3432 >= SQUOTE) && (LA2_3432 <= USCORE))) ) { s = 2865; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3432 == LSBRAQUET || LA2_3432 == RSBRAQUET) ) { s = 405; } SEEK(index2_3432); if ( s>=0 ) { return s; } } break; case 162: { ANTLR3_UINT32 LA2_1723; ANTLR3_MARKER index2_1723; LA2_1723 = LA(1); index2_1723 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1723 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1723 == CRLF) ) { s = 205; } else if ( (LA2_1723 == SEMI) ) { s = 1237; } else if ( (LA2_1723 == QMARK) ) { s = 854; } else if ( (LA2_1723 == DIGIT) ) { s = 1723; } else if ( (LA2_1723 == SLASH) ) { s = 241; } else if ( (LA2_1723 == COMMON_CHAR || LA2_1723 == HEX_CHAR) ) { s = 503; } else if ( (LA2_1723 == DASH || LA2_1723 == DOT || LA2_1723 == EMARK || LA2_1723 == LPAREN || LA2_1723 == RPAREN || ((LA2_1723 >= SQUOTE) && (LA2_1723 <= USCORE))) ) { s = 462; } else if ( (LA2_1723 == PERCENT) ) { s = 463; } else if ( (LA2_1723 == COLON) ) { s = 459; } else if ( (LA2_1723 == AT) ) { s = 464; } else if ( (LA2_1723 == AND) ) { s = 465; } else if ( (LA2_1723 == EQUAL) ) { s = 466; } else if ( (LA2_1723 == PLUS) ) { s = 467; } else if ( (LA2_1723 == DOLLARD) ) { s = 468; } else if ( (LA2_1723 == COMMA) ) { s = 469; } SEEK(index2_1723); if ( s>=0 ) { return s; } } break; case 163: { ANTLR3_UINT32 LA2_3656; ANTLR3_MARKER index2_3656; LA2_3656 = LA(1); index2_3656 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3656 == SLASH) ) { s = 3465; } else if ( (LA2_3656 == QMARK) ) { s = 854; } else if ( (LA2_3656 == SP) ) { s = 1585; } else if ( (LA2_3656 == CRLF) ) { s = 1588; } else if ( (LA2_3656 == SEMI) ) { s = 2028; } else if ( (LA2_3656 == COMMON_CHAR || LA2_3656 == HEX_CHAR) ) { s = 3173; } else if ( (LA2_3656 == DIGIT) ) { s = 3174; } else if ( (LA2_3656 == DOT) ) { s = 3175; } else if ( (LA2_3656 == PERCENT) ) { s = 3176; } else if ( (LA2_3656 == PLUS) ) { s = 3177; } else if ( (LA2_3656 == BQUOTE) ) { s = 2092; } else if ( (LA2_3656 == DASH || LA2_3656 == EMARK || LA2_3656 == LPAREN || LA2_3656 == RPAREN || ((LA2_3656 >= SQUOTE) && (LA2_3656 <= USCORE))) ) { s = 3178; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3656 == AND || LA2_3656 == COLON || LA2_3656 == DOLLARD || LA2_3656 == LSBRAQUET || LA2_3656 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3656); if ( s>=0 ) { return s; } } break; case 164: { ANTLR3_UINT32 LA2_3573; ANTLR3_MARKER index2_3573; LA2_3573 = LA(1); index2_3573 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3573 == SEMI) ) { s = 3351; } else if ( (LA2_3573 == QMARK) ) { s = 1751; } else if ( (LA2_3573 == SP) ) { s = 204; } else if ( (LA2_3573 == SLASH) ) { s = 3323; } else if ( (LA2_3573 == COMMON_CHAR || LA2_3573 == HEX_CHAR) ) { s = 3568; } else if ( (LA2_3573 == DIGIT) ) { s = 3569; } else if ( (LA2_3573 == DOT) ) { s = 3570; } else if ( (LA2_3573 == PERCENT) ) { s = 3571; } else if ( (LA2_3573 == COLON) ) { s = 3572; } else if ( (LA2_3573 == AT) ) { s = 2684; } else if ( (LA2_3573 == AND) ) { s = 3573; } else if ( (LA2_3573 == EQUAL) ) { s = 2686; } else if ( (LA2_3573 == PLUS) ) { s = 3574; } else if ( (LA2_3573 == DOLLARD) ) { s = 3575; } else if ( (LA2_3573 == COMMA) ) { s = 2689; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3573 == CRLF) ) { s = 205; } else if ( (LA2_3573 == DASH || LA2_3573 == EMARK || LA2_3573 == LPAREN || LA2_3573 == RPAREN || ((LA2_3573 >= SQUOTE) && (LA2_3573 <= USCORE))) ) { s = 3576; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3573 == LSBRAQUET || LA2_3573 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3573); if ( s>=0 ) { return s; } } break; case 165: { ANTLR3_UINT32 LA2_3572; ANTLR3_MARKER index2_3572; LA2_3572 = LA(1); index2_3572 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3572 == SEMI) ) { s = 3351; } else if ( (LA2_3572 == QMARK) ) { s = 1751; } else if ( (LA2_3572 == SP) ) { s = 204; } else if ( (LA2_3572 == SLASH) ) { s = 3323; } else if ( (LA2_3572 == COMMON_CHAR || LA2_3572 == HEX_CHAR) ) { s = 3568; } else if ( (LA2_3572 == DIGIT) ) { s = 3569; } else if ( (LA2_3572 == DOT) ) { s = 3570; } else if ( (LA2_3572 == PERCENT) ) { s = 3571; } else if ( (LA2_3572 == COLON) ) { s = 3572; } else if ( (LA2_3572 == AT) ) { s = 2684; } else if ( (LA2_3572 == AND) ) { s = 3573; } else if ( (LA2_3572 == EQUAL) ) { s = 2686; } else if ( (LA2_3572 == PLUS) ) { s = 3574; } else if ( (LA2_3572 == DOLLARD) ) { s = 3575; } else if ( (LA2_3572 == COMMA) ) { s = 2689; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3572 == CRLF) ) { s = 205; } else if ( (LA2_3572 == DASH || LA2_3572 == EMARK || LA2_3572 == LPAREN || LA2_3572 == RPAREN || ((LA2_3572 >= SQUOTE) && (LA2_3572 <= USCORE))) ) { s = 3576; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3572 == LSBRAQUET || LA2_3572 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3572); if ( s>=0 ) { return s; } } break; case 166: { ANTLR3_UINT32 LA2_2954; ANTLR3_MARKER index2_2954; LA2_2954 = LA(1); index2_2954 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2954 == SLASH) ) { s = 2928; } else if ( (LA2_2954 == QMARK) ) { s = 854; } else if ( (LA2_2954 == SP) ) { s = 204; } else if ( (LA2_2954 == SEMI) ) { s = 2927; } else if ( (LA2_2954 == COMMON_CHAR || LA2_2954 == HEX_CHAR) ) { s = 3236; } else if ( (LA2_2954 == DIGIT) ) { s = 3237; } else if ( (LA2_2954 == DOT) ) { s = 3238; } else if ( (LA2_2954 == PERCENT) ) { s = 3239; } else if ( (LA2_2954 == COLON) ) { s = 2954; } else if ( (LA2_2954 == AT) ) { s = 2111; } else if ( (LA2_2954 == AND) ) { s = 2955; } else if ( (LA2_2954 == EQUAL) ) { s = 3264; } else if ( (LA2_2954 == PLUS) ) { s = 3240; } else if ( (LA2_2954 == DOLLARD) ) { s = 2956; } else if ( (LA2_2954 == COMMA) ) { s = 2116; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2954 == CRLF) ) { s = 205; } else if ( (LA2_2954 == DASH || LA2_2954 == EMARK || LA2_2954 == LPAREN || LA2_2954 == RPAREN || ((LA2_2954 >= SQUOTE) && (LA2_2954 <= USCORE))) ) { s = 3241; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2954 == LSBRAQUET || LA2_2954 == RSBRAQUET) ) { s = 405; } SEEK(index2_2954); if ( s>=0 ) { return s; } } break; case 167: { ANTLR3_UINT32 LA2_3575; ANTLR3_MARKER index2_3575; LA2_3575 = LA(1); index2_3575 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3575 == SEMI) ) { s = 3351; } else if ( (LA2_3575 == QMARK) ) { s = 1751; } else if ( (LA2_3575 == SP) ) { s = 204; } else if ( (LA2_3575 == SLASH) ) { s = 3323; } else if ( (LA2_3575 == COMMON_CHAR || LA2_3575 == HEX_CHAR) ) { s = 3568; } else if ( (LA2_3575 == DIGIT) ) { s = 3569; } else if ( (LA2_3575 == DOT) ) { s = 3570; } else if ( (LA2_3575 == PERCENT) ) { s = 3571; } else if ( (LA2_3575 == COLON) ) { s = 3572; } else if ( (LA2_3575 == AT) ) { s = 2684; } else if ( (LA2_3575 == AND) ) { s = 3573; } else if ( (LA2_3575 == EQUAL) ) { s = 2686; } else if ( (LA2_3575 == PLUS) ) { s = 3574; } else if ( (LA2_3575 == DOLLARD) ) { s = 3575; } else if ( (LA2_3575 == COMMA) ) { s = 2689; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3575 == CRLF) ) { s = 205; } else if ( (LA2_3575 == DASH || LA2_3575 == EMARK || LA2_3575 == LPAREN || LA2_3575 == RPAREN || ((LA2_3575 >= SQUOTE) && (LA2_3575 <= USCORE))) ) { s = 3576; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3575 == LSBRAQUET || LA2_3575 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3575); if ( s>=0 ) { return s; } } break; case 168: { ANTLR3_UINT32 LA2_3574; ANTLR3_MARKER index2_3574; LA2_3574 = LA(1); index2_3574 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3574 == SEMI) ) { s = 3351; } else if ( (LA2_3574 == QMARK) ) { s = 1751; } else if ( (LA2_3574 == SP) ) { s = 204; } else if ( (LA2_3574 == SLASH) ) { s = 3323; } else if ( (LA2_3574 == COMMON_CHAR || LA2_3574 == HEX_CHAR) ) { s = 3568; } else if ( (LA2_3574 == DIGIT) ) { s = 3569; } else if ( (LA2_3574 == DOT) ) { s = 3570; } else if ( (LA2_3574 == PERCENT) ) { s = 3571; } else if ( (LA2_3574 == COLON) ) { s = 3572; } else if ( (LA2_3574 == AT) ) { s = 2684; } else if ( (LA2_3574 == AND) ) { s = 3573; } else if ( (LA2_3574 == EQUAL) ) { s = 2686; } else if ( (LA2_3574 == PLUS) ) { s = 3574; } else if ( (LA2_3574 == DOLLARD) ) { s = 3575; } else if ( (LA2_3574 == COMMA) ) { s = 2689; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3574 == CRLF) ) { s = 205; } else if ( (LA2_3574 == DASH || LA2_3574 == EMARK || LA2_3574 == LPAREN || LA2_3574 == RPAREN || ((LA2_3574 >= SQUOTE) && (LA2_3574 <= USCORE))) ) { s = 3576; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3574 == LSBRAQUET || LA2_3574 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3574); if ( s>=0 ) { return s; } } break; case 169: { ANTLR3_UINT32 LA2_2955; ANTLR3_MARKER index2_2955; LA2_2955 = LA(1); index2_2955 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2955 == SLASH) ) { s = 2928; } else if ( (LA2_2955 == QMARK) ) { s = 854; } else if ( (LA2_2955 == SP) ) { s = 204; } else if ( (LA2_2955 == SEMI) ) { s = 2927; } else if ( (LA2_2955 == COMMON_CHAR || LA2_2955 == HEX_CHAR) ) { s = 3236; } else if ( (LA2_2955 == DIGIT) ) { s = 3237; } else if ( (LA2_2955 == DOT) ) { s = 3238; } else if ( (LA2_2955 == PERCENT) ) { s = 3239; } else if ( (LA2_2955 == COLON) ) { s = 2954; } else if ( (LA2_2955 == AT) ) { s = 2111; } else if ( (LA2_2955 == AND) ) { s = 2955; } else if ( (LA2_2955 == EQUAL) ) { s = 3264; } else if ( (LA2_2955 == PLUS) ) { s = 3240; } else if ( (LA2_2955 == DOLLARD) ) { s = 2956; } else if ( (LA2_2955 == COMMA) ) { s = 2116; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2955 == CRLF) ) { s = 205; } else if ( (LA2_2955 == DASH || LA2_2955 == EMARK || LA2_2955 == LPAREN || LA2_2955 == RPAREN || ((LA2_2955 >= SQUOTE) && (LA2_2955 <= USCORE))) ) { s = 3241; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2955 == LSBRAQUET || LA2_2955 == RSBRAQUET) ) { s = 405; } SEEK(index2_2955); if ( s>=0 ) { return s; } } break; case 170: { ANTLR3_UINT32 LA2_1111; ANTLR3_MARKER index2_1111; LA2_1111 = LA(1); index2_1111 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1111 == COLON) ) { s = 1106; } else if ( (LA2_1111 == AT) ) { s = 89; } else if ( (LA2_1111 == COMMON_CHAR || LA2_1111 == HEX_CHAR) ) { s = 1107; } else if ( (LA2_1111 == DIGIT) ) { s = 1108; } else if ( (LA2_1111 == DASH || LA2_1111 == DOT || LA2_1111 == EMARK || LA2_1111 == LPAREN || LA2_1111 == RPAREN || ((LA2_1111 >= SQUOTE) && (LA2_1111 <= USCORE))) ) { s = 1109; } else if ( (LA2_1111 == PERCENT) ) { s = 1110; } else if ( (LA2_1111 == AND) ) { s = 1112; } else if ( (LA2_1111 == QMARK) ) { s = 1111; } else if ( (LA2_1111 == SP) ) { s = 35; } else if ( (LA2_1111 == SEMI) ) { s = 94; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1111 == LSBRAQUET || LA2_1111 == RSBRAQUET) ) { s = 1104; } else if ( (LA2_1111 == COMMA) ) { s = 97; } else if ( (LA2_1111 == EQUAL) ) { s = 99; } else if ( (LA2_1111 == DOLLARD || LA2_1111 == PLUS || LA2_1111 == SLASH) ) { s = 1113; } SEEK(index2_1111); if ( s>=0 ) { return s; } } break; case 171: { ANTLR3_UINT32 LA2_2853; ANTLR3_MARKER index2_2853; LA2_2853 = LA(1); index2_2853 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2853 == SEMI) ) { s = 2477; } else if ( (LA2_2853 == QMARK) ) { s = 854; } else if ( (LA2_2853 == SP) ) { s = 204; } else if ( (LA2_2853 == SLASH) ) { s = 2830; } else if ( (LA2_2853 == COMMON_CHAR || LA2_2853 == HEX_CHAR) ) { s = 2851; } else if ( (LA2_2853 == DIGIT) ) { s = 2852; } else if ( (LA2_2853 == DOT) ) { s = 2853; } else if ( (LA2_2853 == PERCENT) ) { s = 2854; } else if ( (LA2_2853 == COLON) ) { s = 2855; } else if ( (LA2_2853 == AT) ) { s = 1134; } else if ( (LA2_2853 == AND) ) { s = 2856; } else if ( (LA2_2853 == EQUAL) ) { s = 1136; } else if ( (LA2_2853 == PLUS) ) { s = 2857; } else if ( (LA2_2853 == DOLLARD) ) { s = 2858; } else if ( (LA2_2853 == COMMA) ) { s = 1139; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2853 == CRLF) ) { s = 205; } else if ( (LA2_2853 == DASH || LA2_2853 == EMARK || LA2_2853 == LPAREN || LA2_2853 == RPAREN || ((LA2_2853 >= SQUOTE) && (LA2_2853 <= USCORE))) ) { s = 2859; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2853 == LSBRAQUET || LA2_2853 == RSBRAQUET) ) { s = 1080; } SEEK(index2_2853); if ( s>=0 ) { return s; } } break; case 172: { ANTLR3_UINT32 LA2_3240; ANTLR3_MARKER index2_3240; LA2_3240 = LA(1); index2_3240 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3240 == SLASH) ) { s = 2928; } else if ( (LA2_3240 == QMARK) ) { s = 854; } else if ( (LA2_3240 == SP) ) { s = 204; } else if ( (LA2_3240 == SEMI) ) { s = 2927; } else if ( (LA2_3240 == COMMON_CHAR || LA2_3240 == HEX_CHAR) ) { s = 3236; } else if ( (LA2_3240 == DIGIT) ) { s = 3237; } else if ( (LA2_3240 == DOT) ) { s = 3238; } else if ( (LA2_3240 == PERCENT) ) { s = 3239; } else if ( (LA2_3240 == COLON) ) { s = 2954; } else if ( (LA2_3240 == AT) ) { s = 2111; } else if ( (LA2_3240 == AND) ) { s = 2955; } else if ( (LA2_3240 == EQUAL) ) { s = 3264; } else if ( (LA2_3240 == PLUS) ) { s = 3240; } else if ( (LA2_3240 == DOLLARD) ) { s = 2956; } else if ( (LA2_3240 == COMMA) ) { s = 2116; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3240 == CRLF) ) { s = 205; } else if ( (LA2_3240 == DASH || LA2_3240 == EMARK || LA2_3240 == LPAREN || LA2_3240 == RPAREN || ((LA2_3240 >= SQUOTE) && (LA2_3240 <= USCORE))) ) { s = 3241; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3240 == LSBRAQUET || LA2_3240 == RSBRAQUET) ) { s = 405; } SEEK(index2_3240); if ( s>=0 ) { return s; } } break; case 173: { ANTLR3_UINT32 LA2_3667; ANTLR3_MARKER index2_3667; LA2_3667 = LA(1); index2_3667 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3667 == QMARK) ) { s = 854; } else if ( (LA2_3667 == SP) ) { s = 204; } else if ( (LA2_3667 == SLASH) ) { s = 2830; } else if ( (LA2_3667 == SEMI) ) { s = 2477; } else if ( (LA2_3667 == COMMON_CHAR || LA2_3667 == HEX_CHAR) ) { s = 3211; } else if ( (LA2_3667 == DIGIT) ) { s = 3212; } else if ( (LA2_3667 == DOT) ) { s = 3213; } else if ( (LA2_3667 == PERCENT) ) { s = 3214; } else if ( (LA2_3667 == COLON) ) { s = 3204; } else if ( (LA2_3667 == AT) ) { s = 1576; } else if ( (LA2_3667 == AND) ) { s = 3205; } else if ( (LA2_3667 == EQUAL) ) { s = 1578; } else if ( (LA2_3667 == PLUS) ) { s = 3215; } else if ( (LA2_3667 == DOLLARD) ) { s = 3207; } else if ( (LA2_3667 == COMMA) ) { s = 1581; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3667 == CRLF) ) { s = 205; } else if ( (LA2_3667 == DASH || LA2_3667 == EMARK || LA2_3667 == LPAREN || LA2_3667 == RPAREN || ((LA2_3667 >= SQUOTE) && (LA2_3667 <= USCORE))) ) { s = 3216; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3667 == LSBRAQUET || LA2_3667 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3667); if ( s>=0 ) { return s; } } break; case 174: { ANTLR3_UINT32 LA2_2956; ANTLR3_MARKER index2_2956; LA2_2956 = LA(1); index2_2956 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2956 == SLASH) ) { s = 2928; } else if ( (LA2_2956 == QMARK) ) { s = 854; } else if ( (LA2_2956 == SP) ) { s = 204; } else if ( (LA2_2956 == SEMI) ) { s = 2927; } else if ( (LA2_2956 == COMMON_CHAR || LA2_2956 == HEX_CHAR) ) { s = 3236; } else if ( (LA2_2956 == DIGIT) ) { s = 3237; } else if ( (LA2_2956 == DOT) ) { s = 3238; } else if ( (LA2_2956 == PERCENT) ) { s = 3239; } else if ( (LA2_2956 == COLON) ) { s = 2954; } else if ( (LA2_2956 == AT) ) { s = 2111; } else if ( (LA2_2956 == AND) ) { s = 2955; } else if ( (LA2_2956 == EQUAL) ) { s = 3264; } else if ( (LA2_2956 == PLUS) ) { s = 3240; } else if ( (LA2_2956 == DOLLARD) ) { s = 2956; } else if ( (LA2_2956 == COMMA) ) { s = 2116; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2956 == CRLF) ) { s = 205; } else if ( (LA2_2956 == DASH || LA2_2956 == EMARK || LA2_2956 == LPAREN || LA2_2956 == RPAREN || ((LA2_2956 >= SQUOTE) && (LA2_2956 <= USCORE))) ) { s = 3241; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2956 == LSBRAQUET || LA2_2956 == RSBRAQUET) ) { s = 405; } SEEK(index2_2956); if ( s>=0 ) { return s; } } break; case 175: { ANTLR3_UINT32 LA2_3209; ANTLR3_MARKER index2_3209; LA2_3209 = LA(1); index2_3209 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3209 == QMARK) ) { s = 854; } else if ( (LA2_3209 == SP) ) { s = 2456; } else if ( (LA2_3209 == SLASH) ) { s = 2455; } else if ( (LA2_3209 == SEMI) ) { s = 2051; } else if ( (LA2_3209 == COMMON_CHAR || LA2_3209 == HEX_CHAR) ) { s = 2530; } else if ( (LA2_3209 == DIGIT) ) { s = 2531; } else if ( (LA2_3209 == DOT) ) { s = 2532; } else if ( (LA2_3209 == PERCENT) ) { s = 2533; } else if ( (LA2_3209 == COLON) ) { s = 2534; } else if ( (LA2_3209 == AT) ) { s = 1576; } else if ( (LA2_3209 == AND) ) { s = 2535; } else if ( (LA2_3209 == EQUAL) ) { s = 2900; } else if ( (LA2_3209 == PLUS) ) { s = 2536; } else if ( (LA2_3209 == DOLLARD) ) { s = 2537; } else if ( (LA2_3209 == COMMA) ) { s = 1581; } else if ( (LA2_3209 == CRLF) ) { s = 2458; } else if ( (LA2_3209 == BQUOTE) ) { s = 1203; } else if ( (LA2_3209 == DASH || LA2_3209 == EMARK || LA2_3209 == LPAREN || LA2_3209 == RPAREN || ((LA2_3209 >= SQUOTE) && (LA2_3209 <= USCORE))) ) { s = 2538; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3209 == LSBRAQUET || LA2_3209 == RSBRAQUET) ) { s = 405; } SEEK(index2_3209); if ( s>=0 ) { return s; } } break; case 176: { ANTLR3_UINT32 LA2_3294; ANTLR3_MARKER index2_3294; LA2_3294 = LA(1); index2_3294 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3294 == SP) ) { s = 2456; } else if ( (LA2_3294 == CRLF) ) { s = 2458; } else if ( (LA2_3294 == EQUAL) ) { s = 3547; } else if ( (LA2_3294 == SLASH) ) { s = 3261; } else if ( (LA2_3294 == QMARK) ) { s = 854; } else if ( (LA2_3294 == SEMI) ) { s = 2986; } else if ( (LA2_3294 == COMMON_CHAR || LA2_3294 == HEX_CHAR) ) { s = 3286; } else if ( (LA2_3294 == DIGIT) ) { s = 3287; } else if ( (LA2_3294 == DOT) ) { s = 3288; } else if ( (LA2_3294 == PERCENT) ) { s = 3289; } else if ( (LA2_3294 == PLUS) ) { s = 3290; } else if ( (LA2_3294 == BQUOTE) ) { s = 1203; } else if ( (LA2_3294 == COLON) ) { s = 3291; } else if ( (LA2_3294 == AT) ) { s = 2578; } else if ( (LA2_3294 == AND) ) { s = 3292; } else if ( (LA2_3294 == DOLLARD) ) { s = 3293; } else if ( (LA2_3294 == COMMA) ) { s = 2583; } else if ( (LA2_3294 == DASH || LA2_3294 == EMARK || LA2_3294 == LPAREN || LA2_3294 == RPAREN || ((LA2_3294 >= SQUOTE) && (LA2_3294 <= USCORE))) ) { s = 3294; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3294 == LSBRAQUET || LA2_3294 == RSBRAQUET) ) { s = 405; } SEEK(index2_3294); if ( s>=0 ) { return s; } } break; case 177: { ANTLR3_UINT32 LA2_2538; ANTLR3_MARKER index2_2538; LA2_2538 = LA(1); index2_2538 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2538 == QMARK) ) { s = 854; } else if ( (LA2_2538 == SP) ) { s = 2456; } else if ( (LA2_2538 == SLASH) ) { s = 2455; } else if ( (LA2_2538 == SEMI) ) { s = 2051; } else if ( (LA2_2538 == COMMON_CHAR || LA2_2538 == HEX_CHAR) ) { s = 2530; } else if ( (LA2_2538 == DIGIT) ) { s = 2531; } else if ( (LA2_2538 == DOT) ) { s = 2532; } else if ( (LA2_2538 == PERCENT) ) { s = 2533; } else if ( (LA2_2538 == COLON) ) { s = 2534; } else if ( (LA2_2538 == AT) ) { s = 1576; } else if ( (LA2_2538 == AND) ) { s = 2535; } else if ( (LA2_2538 == EQUAL) ) { s = 2900; } else if ( (LA2_2538 == PLUS) ) { s = 2536; } else if ( (LA2_2538 == DOLLARD) ) { s = 2537; } else if ( (LA2_2538 == COMMA) ) { s = 1581; } else if ( (LA2_2538 == CRLF) ) { s = 2458; } else if ( (LA2_2538 == BQUOTE) ) { s = 1203; } else if ( (LA2_2538 == DASH || LA2_2538 == EMARK || LA2_2538 == LPAREN || LA2_2538 == RPAREN || ((LA2_2538 >= SQUOTE) && (LA2_2538 <= USCORE))) ) { s = 2538; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2538 == LSBRAQUET || LA2_2538 == RSBRAQUET) ) { s = 405; } SEEK(index2_2538); if ( s>=0 ) { return s; } } break; case 178: { ANTLR3_UINT32 LA2_2827; ANTLR3_MARKER index2_2827; LA2_2827 = LA(1); index2_2827 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2827 == COMMON_CHAR || LA2_2827 == HEX_CHAR) ) { s = 3142; } else if ( (LA2_2827 == DIGIT) ) { s = 3143; } else if ( (LA2_2827 == DOT) ) { s = 3144; } else if ( (LA2_2827 == PERCENT) ) { s = 3145; } else if ( (LA2_2827 == COLON) ) { s = 3146; } else if ( (LA2_2827 == AT) ) { s = 2504; } else if ( (LA2_2827 == AND) ) { s = 3147; } else if ( (LA2_2827 == EQUAL) ) { s = 3148; } else if ( (LA2_2827 == PLUS) ) { s = 3149; } else if ( (LA2_2827 == DOLLARD) ) { s = 3150; } else if ( (LA2_2827 == COMMA) ) { s = 2509; } else if ( (LA2_2827 == SEMI) ) { s = 3151; } else if ( (LA2_2827 == QMARK) ) { s = 854; } else if ( (LA2_2827 == SP) ) { s = 204; } else if ( (LA2_2827 == SLASH) ) { s = 2827; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2827 == CRLF) ) { s = 205; } else if ( (LA2_2827 == DASH || LA2_2827 == EMARK || LA2_2827 == LPAREN || LA2_2827 == RPAREN || ((LA2_2827 >= SQUOTE) && (LA2_2827 <= USCORE))) ) { s = 3152; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2827 == LSBRAQUET || LA2_2827 == RSBRAQUET) ) { s = 405; } SEEK(index2_2827); if ( s>=0 ) { return s; } } break; case 179: { ANTLR3_UINT32 LA2_3174; ANTLR3_MARKER index2_3174; LA2_3174 = LA(1); index2_3174 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3174 == SLASH) ) { s = 3465; } else if ( (LA2_3174 == QMARK) ) { s = 854; } else if ( (LA2_3174 == SP) ) { s = 1585; } else if ( (LA2_3174 == CRLF) ) { s = 1588; } else if ( (LA2_3174 == SEMI) ) { s = 2028; } else if ( (LA2_3174 == COMMON_CHAR || LA2_3174 == HEX_CHAR) ) { s = 3173; } else if ( (LA2_3174 == DIGIT) ) { s = 3174; } else if ( (LA2_3174 == DOT) ) { s = 3175; } else if ( (LA2_3174 == PERCENT) ) { s = 3176; } else if ( (LA2_3174 == PLUS) ) { s = 3177; } else if ( (LA2_3174 == BQUOTE) ) { s = 2092; } else if ( (LA2_3174 == DASH || LA2_3174 == EMARK || LA2_3174 == LPAREN || LA2_3174 == RPAREN || ((LA2_3174 >= SQUOTE) && (LA2_3174 <= USCORE))) ) { s = 3178; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3174 == AND || LA2_3174 == COLON || LA2_3174 == DOLLARD || LA2_3174 == LSBRAQUET || LA2_3174 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3174); if ( s>=0 ) { return s; } } break; case 180: { ANTLR3_UINT32 LA2_3716; ANTLR3_MARKER index2_3716; LA2_3716 = LA(1); index2_3716 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3716 == SP) ) { s = 2456; } else if ( (LA2_3716 == CRLF) ) { s = 2458; } else if ( (LA2_3716 == EQUAL) ) { s = 3547; } else if ( (LA2_3716 == SLASH) ) { s = 3261; } else if ( (LA2_3716 == QMARK) ) { s = 854; } else if ( (LA2_3716 == SEMI) ) { s = 2986; } else if ( (LA2_3716 == COMMON_CHAR || LA2_3716 == HEX_CHAR) ) { s = 3286; } else if ( (LA2_3716 == DIGIT) ) { s = 3287; } else if ( (LA2_3716 == DOT) ) { s = 3288; } else if ( (LA2_3716 == PERCENT) ) { s = 3289; } else if ( (LA2_3716 == PLUS) ) { s = 3290; } else if ( (LA2_3716 == BQUOTE) ) { s = 1203; } else if ( (LA2_3716 == COLON) ) { s = 3291; } else if ( (LA2_3716 == AT) ) { s = 2578; } else if ( (LA2_3716 == AND) ) { s = 3292; } else if ( (LA2_3716 == DOLLARD) ) { s = 3293; } else if ( (LA2_3716 == COMMA) ) { s = 2583; } else if ( (LA2_3716 == DASH || LA2_3716 == EMARK || LA2_3716 == LPAREN || LA2_3716 == RPAREN || ((LA2_3716 >= SQUOTE) && (LA2_3716 <= USCORE))) ) { s = 3294; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3716 == LSBRAQUET || LA2_3716 == RSBRAQUET) ) { s = 405; } SEEK(index2_3716); if ( s>=0 ) { return s; } } break; case 181: { ANTLR3_UINT32 LA2_3852; ANTLR3_MARKER index2_3852; LA2_3852 = LA(1); index2_3852 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3852 == SLASH) ) { s = 3226; } else if ( (LA2_3852 == QMARK) ) { s = 854; } else if ( (LA2_3852 == SP) ) { s = 204; } else if ( (LA2_3852 == SEMI) ) { s = 3530; } else if ( (LA2_3852 == COMMON_CHAR || LA2_3852 == HEX_CHAR) ) { s = 3852; } else if ( (LA2_3852 == DIGIT) ) { s = 3853; } else if ( (LA2_3852 == DOT) ) { s = 3854; } else if ( (LA2_3852 == PERCENT) ) { s = 3855; } else if ( (LA2_3852 == COLON) ) { s = 3856; } else if ( (LA2_3852 == AT) ) { s = 3271; } else if ( (LA2_3852 == AND) ) { s = 3857; } else if ( (LA2_3852 == EQUAL) ) { s = 3273; } else if ( (LA2_3852 == PLUS) ) { s = 3858; } else if ( (LA2_3852 == DOLLARD) ) { s = 3859; } else if ( (LA2_3852 == COMMA) ) { s = 3276; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3852 == CRLF) ) { s = 205; } else if ( (LA2_3852 == DASH || LA2_3852 == EMARK || LA2_3852 == LPAREN || LA2_3852 == RPAREN || ((LA2_3852 >= SQUOTE) && (LA2_3852 <= USCORE))) ) { s = 3860; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3852 == LSBRAQUET || LA2_3852 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3852); if ( s>=0 ) { return s; } } break; case 182: { ANTLR3_UINT32 LA2_713; ANTLR3_MARKER index2_713; LA2_713 = LA(1); index2_713 = INDEX(); REWINDLAST(); s = -1; if ( (synpred1_belle_sip_message(ctx)) && (LA2_713 == QMARK) ) { s = 1090; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_713 == SP) ) { s = 1091; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_713 == CRLF) ) { s = 205; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_713 == SEMI) ) { s = 407; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_713 == DOT) ) { s = 712; } else if ( (LA2_713 == COMMON_CHAR || LA2_713 == HEX_CHAR) ) { s = 713; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_713 == DIGIT) ) { s = 714; } else if ( (LA2_713 == SLASH) ) { s = 1092; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_713 == DASH || LA2_713 == EMARK || LA2_713 == LPAREN || LA2_713 == RPAREN || ((LA2_713 >= SQUOTE) && (LA2_713 <= USCORE))) ) { s = 715; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_713 == PERCENT) ) { s = 716; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_713 == EQUAL) ) { s = 1093; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_713 == AND || LA2_713 == COLON || LA2_713 == DOLLARD || LA2_713 == LSBRAQUET || LA2_713 == PLUS || LA2_713 == RSBRAQUET) ) { s = 405; } SEEK(index2_713); if ( s>=0 ) { return s; } } break; case 183: { ANTLR3_UINT32 LA2_3734; ANTLR3_MARKER index2_3734; LA2_3734 = LA(1); index2_3734 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3734 == SLASH) ) { s = 3323; } else if ( (LA2_3734 == QMARK) ) { s = 1751; } else if ( (LA2_3734 == SP) ) { s = 204; } else if ( (LA2_3734 == SEMI) ) { s = 3030; } else if ( (LA2_3734 == COMMON_CHAR || LA2_3734 == HEX_CHAR) ) { s = 3734; } else if ( (LA2_3734 == DIGIT) ) { s = 3735; } else if ( (LA2_3734 == DOT) ) { s = 3736; } else if ( (LA2_3734 == PERCENT) ) { s = 3737; } else if ( (LA2_3734 == COLON) ) { s = 3738; } else if ( (LA2_3734 == AT) ) { s = 2673; } else if ( (LA2_3734 == AND) ) { s = 3739; } else if ( (LA2_3734 == EQUAL) ) { s = 2675; } else if ( (LA2_3734 == PLUS) ) { s = 3740; } else if ( (LA2_3734 == DOLLARD) ) { s = 3741; } else if ( (LA2_3734 == COMMA) ) { s = 2678; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3734 == CRLF) ) { s = 205; } else if ( (LA2_3734 == DASH || LA2_3734 == EMARK || LA2_3734 == LPAREN || LA2_3734 == RPAREN || ((LA2_3734 >= SQUOTE) && (LA2_3734 <= USCORE))) ) { s = 3742; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3734 == LSBRAQUET || LA2_3734 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3734); if ( s>=0 ) { return s; } } break; case 184: { ANTLR3_UINT32 LA2_3783; ANTLR3_MARKER index2_3783; LA2_3783 = LA(1); index2_3783 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3783 == SEMI) ) { s = 3463; } else if ( (LA2_3783 == QMARK) ) { s = 854; } else if ( (LA2_3783 == SP) ) { s = 204; } else if ( (LA2_3783 == SLASH) ) { s = 3171; } else if ( (LA2_3783 == COMMON_CHAR || LA2_3783 == HEX_CHAR) ) { s = 3454; } else if ( (LA2_3783 == DIGIT) ) { s = 3455; } else if ( (LA2_3783 == DOT) ) { s = 3456; } else if ( (LA2_3783 == PERCENT) ) { s = 3457; } else if ( (LA2_3783 == COLON) ) { s = 3458; } else if ( (LA2_3783 == AT) ) { s = 2195; } else if ( (LA2_3783 == AND) ) { s = 3459; } else if ( (LA2_3783 == EQUAL) ) { s = 3460; } else if ( (LA2_3783 == PLUS) ) { s = 3461; } else if ( (LA2_3783 == DOLLARD) ) { s = 3462; } else if ( (LA2_3783 == COMMA) ) { s = 2200; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3783 == CRLF) ) { s = 205; } else if ( (LA2_3783 == DASH || LA2_3783 == EMARK || LA2_3783 == LPAREN || LA2_3783 == RPAREN || ((LA2_3783 >= SQUOTE) && (LA2_3783 <= USCORE))) ) { s = 3464; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3783 == LSBRAQUET || LA2_3783 == RSBRAQUET) ) { s = 405; } SEEK(index2_3783); if ( s>=0 ) { return s; } } break; case 185: { ANTLR3_UINT32 LA2_3226; ANTLR3_MARKER index2_3226; LA2_3226 = LA(1); index2_3226 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3226 == COMMON_CHAR || LA2_3226 == HEX_CHAR) ) { s = 3491; } else if ( (LA2_3226 == DIGIT) ) { s = 3492; } else if ( (LA2_3226 == DOT) ) { s = 3493; } else if ( (LA2_3226 == PERCENT) ) { s = 3494; } else if ( (LA2_3226 == COLON) ) { s = 3495; } else if ( (LA2_3226 == AT) ) { s = 2122; } else if ( (LA2_3226 == AND) ) { s = 3496; } else if ( (LA2_3226 == EQUAL) ) { s = 2124; } else if ( (LA2_3226 == PLUS) ) { s = 3497; } else if ( (LA2_3226 == DOLLARD) ) { s = 3498; } else if ( (LA2_3226 == COMMA) ) { s = 2127; } else if ( (LA2_3226 == SEMI) ) { s = 3251; } else if ( (LA2_3226 == QMARK) ) { s = 854; } else if ( (LA2_3226 == SP) ) { s = 204; } else if ( (LA2_3226 == SLASH) ) { s = 3226; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3226 == CRLF) ) { s = 205; } else if ( (LA2_3226 == DASH || LA2_3226 == EMARK || LA2_3226 == LPAREN || LA2_3226 == RPAREN || ((LA2_3226 >= SQUOTE) && (LA2_3226 <= USCORE))) ) { s = 3499; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3226 == LSBRAQUET || LA2_3226 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3226); if ( s>=0 ) { return s; } } break; case 186: { ANTLR3_UINT32 LA2_2439; ANTLR3_MARKER index2_2439; LA2_2439 = LA(1); index2_2439 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2439 == SP) ) { s = 35; } else if ( (LA2_2439 == AND) ) { s = 1553; } else if ( (LA2_2439 == QMARK) ) { s = 2435; } else if ( (LA2_2439 == COMMON_CHAR || LA2_2439 == HEX_CHAR) ) { s = 2439; } else if ( (LA2_2439 == DIGIT) ) { s = 2440; } else if ( (LA2_2439 == DASH || LA2_2439 == DOT || LA2_2439 == EMARK || LA2_2439 == LPAREN || LA2_2439 == RPAREN || ((LA2_2439 >= SQUOTE) && (LA2_2439 <= USCORE))) ) { s = 2441; } else if ( (LA2_2439 == PERCENT) ) { s = 2442; } else if ( (LA2_2439 == SEMI) ) { s = 105; } else if ( (LA2_2439 == COMMA) ) { s = 106; } else if ( (LA2_2439 == COLON || LA2_2439 == DOLLARD || LA2_2439 == PLUS || LA2_2439 == SLASH) ) { s = 2436; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2439 == LSBRAQUET || LA2_2439 == RSBRAQUET) ) { s = 2437; } else if ( (LA2_2439 == AT || LA2_2439 == EQUAL) ) { s = 108; } SEEK(index2_2439); if ( s>=0 ) { return s; } } break; case 187: { ANTLR3_UINT32 LA2_2720; ANTLR3_MARKER index2_2720; LA2_2720 = LA(1); index2_2720 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2720 == QMARK) ) { s = 1308; } else if ( (LA2_2720 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2720 == CRLF) ) { s = 205; } else if ( (LA2_2720 == SEMI) ) { s = 1307; } else if ( (LA2_2720 == DOT) ) { s = 1787; } else if ( (LA2_2720 == COMMON_CHAR || LA2_2720 == HEX_CHAR) ) { s = 1788; } else if ( (LA2_2720 == DIGIT) ) { s = 1789; } else if ( (LA2_2720 == AND || LA2_2720 == COLON || LA2_2720 == DOLLARD || LA2_2720 == PLUS || LA2_2720 == SLASH) ) { s = 1790; } else if ( (LA2_2720 == DASH || LA2_2720 == EMARK || LA2_2720 == LPAREN || LA2_2720 == RPAREN || ((LA2_2720 >= SQUOTE) && (LA2_2720 <= USCORE))) ) { s = 1791; } else if ( (LA2_2720 == PERCENT) ) { s = 1792; } else if ( (LA2_2720 == EQUAL) ) { s = 2284; } else if ( (LA2_2720 == COMMA) ) { s = 506; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2720 == LSBRAQUET || LA2_2720 == RSBRAQUET) ) { s = 405; } else if ( (LA2_2720 == AT) ) { s = 508; } SEEK(index2_2720); if ( s>=0 ) { return s; } } break; case 188: { ANTLR3_UINT32 LA2_3693; ANTLR3_MARKER index2_3693; LA2_3693 = LA(1); index2_3693 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3693 == SLASH) ) { s = 2928; } else if ( (LA2_3693 == QMARK) ) { s = 854; } else if ( (LA2_3693 == SP) ) { s = 204; } else if ( (LA2_3693 == SEMI) ) { s = 3530; } else if ( (LA2_3693 == COMMON_CHAR || LA2_3693 == HEX_CHAR) ) { s = 3691; } else if ( (LA2_3693 == DIGIT) ) { s = 3692; } else if ( (LA2_3693 == DOT) ) { s = 3693; } else if ( (LA2_3693 == PERCENT) ) { s = 3694; } else if ( (LA2_3693 == COLON) ) { s = 3695; } else if ( (LA2_3693 == AT) ) { s = 3271; } else if ( (LA2_3693 == AND) ) { s = 3696; } else if ( (LA2_3693 == EQUAL) ) { s = 3800; } else if ( (LA2_3693 == PLUS) ) { s = 3697; } else if ( (LA2_3693 == DOLLARD) ) { s = 3698; } else if ( (LA2_3693 == COMMA) ) { s = 3276; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3693 == CRLF) ) { s = 205; } else if ( (LA2_3693 == DASH || LA2_3693 == EMARK || LA2_3693 == LPAREN || LA2_3693 == RPAREN || ((LA2_3693 >= SQUOTE) && (LA2_3693 <= USCORE))) ) { s = 3699; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3693 == LSBRAQUET || LA2_3693 == RSBRAQUET) ) { s = 405; } SEEK(index2_3693); if ( s>=0 ) { return s; } } break; case 189: { ANTLR3_UINT32 LA2_2482; ANTLR3_MARKER index2_2482; LA2_2482 = LA(1); index2_2482 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2482 == SP) ) { s = 2456; } else if ( (LA2_2482 == CRLF) ) { s = 2458; } else if ( (LA2_2482 == EQUAL) ) { s = 2867; } else if ( (LA2_2482 == SLASH) ) { s = 2868; } else if ( (LA2_2482 == QMARK) ) { s = 854; } else if ( (LA2_2482 == SEMI) ) { s = 2028; } else if ( (LA2_2482 == COMMON_CHAR || LA2_2482 == HEX_CHAR) ) { s = 2512; } else if ( (LA2_2482 == DIGIT) ) { s = 2481; } else if ( (LA2_2482 == DOT) ) { s = 2482; } else if ( (LA2_2482 == PERCENT) ) { s = 2483; } else if ( (LA2_2482 == PLUS) ) { s = 2484; } else if ( (LA2_2482 == BQUOTE) ) { s = 1203; } else if ( (LA2_2482 == DASH || LA2_2482 == EMARK || LA2_2482 == LPAREN || LA2_2482 == RPAREN || ((LA2_2482 >= SQUOTE) && (LA2_2482 <= USCORE))) ) { s = 2485; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2482 == AND || LA2_2482 == COLON || LA2_2482 == DOLLARD || LA2_2482 == LSBRAQUET || LA2_2482 == RSBRAQUET) ) { s = 405; } SEEK(index2_2482); if ( s>=0 ) { return s; } } break; case 190: { ANTLR3_UINT32 LA2_3463; ANTLR3_MARKER index2_3463; LA2_3463 = LA(1); index2_3463 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3463 == COMMON_CHAR || LA2_3463 == HEX_CHAR) ) { s = 3646; } else if ( (LA2_3463 == DIGIT) ) { s = 3647; } else if ( (LA2_3463 == DOT) ) { s = 3648; } else if ( (LA2_3463 == PERCENT) ) { s = 3649; } else if ( (LA2_3463 == COLON) ) { s = 3650; } else if ( (LA2_3463 == AT) ) { s = 2638; } else if ( (LA2_3463 == AND) ) { s = 3651; } else if ( (LA2_3463 == EQUAL) ) { s = 2640; } else if ( (LA2_3463 == PLUS) ) { s = 3652; } else if ( (LA2_3463 == DOLLARD) ) { s = 3653; } else if ( (LA2_3463 == COMMA) ) { s = 2643; } else if ( (LA2_3463 == QMARK) ) { s = 854; } else if ( (LA2_3463 == SP) ) { s = 402; } else if ( (LA2_3463 == SLASH) ) { s = 3171; } else if ( (LA2_3463 == SEMI) ) { s = 3463; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3463 == CRLF) ) { s = 403; } else if ( (LA2_3463 == DASH || LA2_3463 == EMARK || LA2_3463 == LPAREN || LA2_3463 == RPAREN || ((LA2_3463 >= SQUOTE) && (LA2_3463 <= USCORE))) ) { s = 3654; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3463 == LSBRAQUET || LA2_3463 == RSBRAQUET) ) { s = 405; } SEEK(index2_3463); if ( s>=0 ) { return s; } } break; case 191: { ANTLR3_UINT32 LA2_3361; ANTLR3_MARKER index2_3361; LA2_3361 = LA(1); index2_3361 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3361 == SP) ) { s = 35; } else if ( (LA2_3361 == AND) ) { s = 2268; } else if ( (LA2_3361 == QMARK) ) { s = 3359; } else if ( (LA2_3361 == COMMON_CHAR || LA2_3361 == HEX_CHAR) ) { s = 3360; } else if ( (LA2_3361 == DIGIT) ) { s = 3361; } else if ( (LA2_3361 == DASH || LA2_3361 == DOT || LA2_3361 == EMARK || LA2_3361 == LPAREN || LA2_3361 == RPAREN || ((LA2_3361 >= SQUOTE) && (LA2_3361 <= USCORE))) ) { s = 3362; } else if ( (LA2_3361 == PERCENT) ) { s = 3363; } else if ( (LA2_3361 == SEMI) ) { s = 505; } else if ( (LA2_3361 == COMMA) ) { s = 506; } else if ( (LA2_3361 == COLON || LA2_3361 == DOLLARD || LA2_3361 == PLUS || LA2_3361 == SLASH) ) { s = 3364; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3361 == LSBRAQUET || LA2_3361 == RSBRAQUET) ) { s = 2437; } else if ( (LA2_3361 == AT || LA2_3361 == EQUAL) ) { s = 508; } SEEK(index2_3361); if ( s>=0 ) { return s; } } break; case 192: { ANTLR3_UINT32 LA2_3835; ANTLR3_MARKER index2_3835; LA2_3835 = LA(1); index2_3835 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3835 == SEMI) ) { s = 3463; } else if ( (LA2_3835 == QMARK) ) { s = 854; } else if ( (LA2_3835 == SP) ) { s = 204; } else if ( (LA2_3835 == SLASH) ) { s = 3435; } else if ( (LA2_3835 == COMMON_CHAR || LA2_3835 == HEX_CHAR) ) { s = 3633; } else if ( (LA2_3835 == DIGIT) ) { s = 3634; } else if ( (LA2_3835 == DOT) ) { s = 3635; } else if ( (LA2_3835 == PERCENT) ) { s = 3636; } else if ( (LA2_3835 == COLON) ) { s = 3637; } else if ( (LA2_3835 == AT) ) { s = 2195; } else if ( (LA2_3835 == AND) ) { s = 3638; } else if ( (LA2_3835 == EQUAL) ) { s = 2197; } else if ( (LA2_3835 == PLUS) ) { s = 3639; } else if ( (LA2_3835 == DOLLARD) ) { s = 3640; } else if ( (LA2_3835 == COMMA) ) { s = 2200; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3835 == CRLF) ) { s = 205; } else if ( (LA2_3835 == DASH || LA2_3835 == EMARK || LA2_3835 == LPAREN || LA2_3835 == RPAREN || ((LA2_3835 >= SQUOTE) && (LA2_3835 <= USCORE))) ) { s = 3641; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3835 == LSBRAQUET || LA2_3835 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3835); if ( s>=0 ) { return s; } } break; case 193: { ANTLR3_UINT32 LA2_3181; ANTLR3_MARKER index2_3181; LA2_3181 = LA(1); index2_3181 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3181 == SP) ) { s = 2456; } else if ( (LA2_3181 == CRLF) ) { s = 2458; } else if ( (LA2_3181 == EQUAL) ) { s = 2867; } else if ( (LA2_3181 == SLASH) ) { s = 2868; } else if ( (LA2_3181 == QMARK) ) { s = 854; } else if ( (LA2_3181 == SEMI) ) { s = 2028; } else if ( (LA2_3181 == COMMON_CHAR || LA2_3181 == HEX_CHAR) ) { s = 2512; } else if ( (LA2_3181 == DIGIT) ) { s = 2481; } else if ( (LA2_3181 == DOT) ) { s = 2482; } else if ( (LA2_3181 == PERCENT) ) { s = 2483; } else if ( (LA2_3181 == PLUS) ) { s = 2484; } else if ( (LA2_3181 == BQUOTE) ) { s = 1203; } else if ( (LA2_3181 == DASH || LA2_3181 == EMARK || LA2_3181 == LPAREN || LA2_3181 == RPAREN || ((LA2_3181 >= SQUOTE) && (LA2_3181 <= USCORE))) ) { s = 2485; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3181 == AND || LA2_3181 == COLON || LA2_3181 == DOLLARD || LA2_3181 == LSBRAQUET || LA2_3181 == RSBRAQUET) ) { s = 405; } SEEK(index2_3181); if ( s>=0 ) { return s; } } break; case 194: { ANTLR3_UINT32 LA2_404; ANTLR3_MARKER index2_404; LA2_404 = LA(1); index2_404 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_404 == COLON) ) { s = 396; } else if ( (LA2_404 == AT) ) { s = 89; } else if ( (LA2_404 == COMMON_CHAR || LA2_404 == HEX_CHAR) ) { s = 397; } else if ( (LA2_404 == DIGIT) ) { s = 398; } else if ( (LA2_404 == DOT) ) { s = 399; } else if ( (LA2_404 == PERCENT) ) { s = 400; } else if ( (LA2_404 == QMARK) ) { s = 206; } else if ( (LA2_404 == SEMI) ) { s = 202; } else if ( (LA2_404 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_404 == CRLF) ) { s = 205; } else if ( (LA2_404 == AND || LA2_404 == DOLLARD || LA2_404 == PLUS || LA2_404 == SLASH) ) { s = 401; } else if ( (LA2_404 == DASH || LA2_404 == EMARK || LA2_404 == LPAREN || LA2_404 == RPAREN || ((LA2_404 >= SQUOTE) && (LA2_404 <= USCORE))) ) { s = 404; } else if ( (LA2_404 == EQUAL) ) { s = 709; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_404 == LSBRAQUET || LA2_404 == RSBRAQUET) ) { s = 405; } else if ( (LA2_404 == COMMA) ) { s = 97; } SEEK(index2_404); if ( s>=0 ) { return s; } } break; case 195: { ANTLR3_UINT32 LA2_3290; ANTLR3_MARKER index2_3290; LA2_3290 = LA(1); index2_3290 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3290 == SP) ) { s = 2456; } else if ( (LA2_3290 == CRLF) ) { s = 2458; } else if ( (LA2_3290 == EQUAL) ) { s = 3547; } else if ( (LA2_3290 == SLASH) ) { s = 3261; } else if ( (LA2_3290 == QMARK) ) { s = 854; } else if ( (LA2_3290 == SEMI) ) { s = 2986; } else if ( (LA2_3290 == COMMON_CHAR || LA2_3290 == HEX_CHAR) ) { s = 3286; } else if ( (LA2_3290 == DIGIT) ) { s = 3287; } else if ( (LA2_3290 == DOT) ) { s = 3288; } else if ( (LA2_3290 == PERCENT) ) { s = 3289; } else if ( (LA2_3290 == PLUS) ) { s = 3290; } else if ( (LA2_3290 == BQUOTE) ) { s = 1203; } else if ( (LA2_3290 == COLON) ) { s = 3291; } else if ( (LA2_3290 == AT) ) { s = 2578; } else if ( (LA2_3290 == AND) ) { s = 3292; } else if ( (LA2_3290 == DOLLARD) ) { s = 3293; } else if ( (LA2_3290 == COMMA) ) { s = 2583; } else if ( (LA2_3290 == DASH || LA2_3290 == EMARK || LA2_3290 == LPAREN || LA2_3290 == RPAREN || ((LA2_3290 >= SQUOTE) && (LA2_3290 <= USCORE))) ) { s = 3294; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3290 == LSBRAQUET || LA2_3290 == RSBRAQUET) ) { s = 405; } SEEK(index2_3290); if ( s>=0 ) { return s; } } break; case 196: { ANTLR3_UINT32 LA2_3166; ANTLR3_MARKER index2_3166; LA2_3166 = LA(1); index2_3166 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3166 == SEMI) ) { s = 3170; } else if ( (LA2_3166 == SLASH) ) { s = 3171; } else if ( (LA2_3166 == QMARK) ) { s = 854; } else if ( (LA2_3166 == SP) ) { s = 204; } else if ( (LA2_3166 == COMMON_CHAR || LA2_3166 == HEX_CHAR) ) { s = 3162; } else if ( (LA2_3166 == DIGIT) ) { s = 3179; } else if ( (LA2_3166 == DOT) ) { s = 3163; } else if ( (LA2_3166 == PERCENT) ) { s = 3164; } else if ( (LA2_3166 == COLON) ) { s = 3165; } else if ( (LA2_3166 == AT) ) { s = 1710; } else if ( (LA2_3166 == AND) ) { s = 3166; } else if ( (LA2_3166 == EQUAL) ) { s = 3167; } else if ( (LA2_3166 == PLUS) ) { s = 3168; } else if ( (LA2_3166 == DOLLARD) ) { s = 3169; } else if ( (LA2_3166 == COMMA) ) { s = 1715; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3166 == CRLF) ) { s = 205; } else if ( (LA2_3166 == DASH || LA2_3166 == EMARK || LA2_3166 == LPAREN || LA2_3166 == RPAREN || ((LA2_3166 >= SQUOTE) && (LA2_3166 <= USCORE))) ) { s = 3172; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3166 == LSBRAQUET || LA2_3166 == RSBRAQUET) ) { s = 405; } SEEK(index2_3166); if ( s>=0 ) { return s; } } break; case 197: { ANTLR3_UINT32 LA2_2859; ANTLR3_MARKER index2_2859; LA2_2859 = LA(1); index2_2859 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2859 == SEMI) ) { s = 2477; } else if ( (LA2_2859 == QMARK) ) { s = 854; } else if ( (LA2_2859 == SP) ) { s = 204; } else if ( (LA2_2859 == SLASH) ) { s = 2830; } else if ( (LA2_2859 == COMMON_CHAR || LA2_2859 == HEX_CHAR) ) { s = 2851; } else if ( (LA2_2859 == DIGIT) ) { s = 2852; } else if ( (LA2_2859 == DOT) ) { s = 2853; } else if ( (LA2_2859 == PERCENT) ) { s = 2854; } else if ( (LA2_2859 == COLON) ) { s = 2855; } else if ( (LA2_2859 == AT) ) { s = 1134; } else if ( (LA2_2859 == AND) ) { s = 2856; } else if ( (LA2_2859 == EQUAL) ) { s = 1136; } else if ( (LA2_2859 == PLUS) ) { s = 2857; } else if ( (LA2_2859 == DOLLARD) ) { s = 2858; } else if ( (LA2_2859 == COMMA) ) { s = 1139; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2859 == CRLF) ) { s = 205; } else if ( (LA2_2859 == DASH || LA2_2859 == EMARK || LA2_2859 == LPAREN || LA2_2859 == RPAREN || ((LA2_2859 >= SQUOTE) && (LA2_2859 <= USCORE))) ) { s = 2859; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2859 == LSBRAQUET || LA2_2859 == RSBRAQUET) ) { s = 1080; } SEEK(index2_2859); if ( s>=0 ) { return s; } } break; case 198: { ANTLR3_UINT32 LA2_3165; ANTLR3_MARKER index2_3165; LA2_3165 = LA(1); index2_3165 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3165 == SEMI) ) { s = 3170; } else if ( (LA2_3165 == SLASH) ) { s = 3171; } else if ( (LA2_3165 == QMARK) ) { s = 854; } else if ( (LA2_3165 == SP) ) { s = 204; } else if ( (LA2_3165 == COMMON_CHAR || LA2_3165 == HEX_CHAR) ) { s = 3162; } else if ( (LA2_3165 == DIGIT) ) { s = 3179; } else if ( (LA2_3165 == DOT) ) { s = 3163; } else if ( (LA2_3165 == PERCENT) ) { s = 3164; } else if ( (LA2_3165 == COLON) ) { s = 3165; } else if ( (LA2_3165 == AT) ) { s = 1710; } else if ( (LA2_3165 == AND) ) { s = 3166; } else if ( (LA2_3165 == EQUAL) ) { s = 3167; } else if ( (LA2_3165 == PLUS) ) { s = 3168; } else if ( (LA2_3165 == DOLLARD) ) { s = 3169; } else if ( (LA2_3165 == COMMA) ) { s = 1715; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3165 == CRLF) ) { s = 205; } else if ( (LA2_3165 == DASH || LA2_3165 == EMARK || LA2_3165 == LPAREN || LA2_3165 == RPAREN || ((LA2_3165 >= SQUOTE) && (LA2_3165 <= USCORE))) ) { s = 3172; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3165 == LSBRAQUET || LA2_3165 == RSBRAQUET) ) { s = 405; } SEEK(index2_3165); if ( s>=0 ) { return s; } } break; case 199: { ANTLR3_UINT32 LA2_3853; ANTLR3_MARKER index2_3853; LA2_3853 = LA(1); index2_3853 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3853 == SLASH) ) { s = 3226; } else if ( (LA2_3853 == QMARK) ) { s = 854; } else if ( (LA2_3853 == SP) ) { s = 204; } else if ( (LA2_3853 == SEMI) ) { s = 3530; } else if ( (LA2_3853 == COMMON_CHAR || LA2_3853 == HEX_CHAR) ) { s = 3852; } else if ( (LA2_3853 == DIGIT) ) { s = 3853; } else if ( (LA2_3853 == DOT) ) { s = 3854; } else if ( (LA2_3853 == PERCENT) ) { s = 3855; } else if ( (LA2_3853 == COLON) ) { s = 3856; } else if ( (LA2_3853 == AT) ) { s = 3271; } else if ( (LA2_3853 == AND) ) { s = 3857; } else if ( (LA2_3853 == EQUAL) ) { s = 3273; } else if ( (LA2_3853 == PLUS) ) { s = 3858; } else if ( (LA2_3853 == DOLLARD) ) { s = 3859; } else if ( (LA2_3853 == COMMA) ) { s = 3276; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3853 == CRLF) ) { s = 205; } else if ( (LA2_3853 == DASH || LA2_3853 == EMARK || LA2_3853 == LPAREN || LA2_3853 == RPAREN || ((LA2_3853 >= SQUOTE) && (LA2_3853 <= USCORE))) ) { s = 3860; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3853 == LSBRAQUET || LA2_3853 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3853); if ( s>=0 ) { return s; } } break; case 200: { ANTLR3_UINT32 LA2_3169; ANTLR3_MARKER index2_3169; LA2_3169 = LA(1); index2_3169 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3169 == SEMI) ) { s = 3170; } else if ( (LA2_3169 == SLASH) ) { s = 3171; } else if ( (LA2_3169 == QMARK) ) { s = 854; } else if ( (LA2_3169 == SP) ) { s = 204; } else if ( (LA2_3169 == COMMON_CHAR || LA2_3169 == HEX_CHAR) ) { s = 3162; } else if ( (LA2_3169 == DIGIT) ) { s = 3179; } else if ( (LA2_3169 == DOT) ) { s = 3163; } else if ( (LA2_3169 == PERCENT) ) { s = 3164; } else if ( (LA2_3169 == COLON) ) { s = 3165; } else if ( (LA2_3169 == AT) ) { s = 1710; } else if ( (LA2_3169 == AND) ) { s = 3166; } else if ( (LA2_3169 == EQUAL) ) { s = 3167; } else if ( (LA2_3169 == PLUS) ) { s = 3168; } else if ( (LA2_3169 == DOLLARD) ) { s = 3169; } else if ( (LA2_3169 == COMMA) ) { s = 1715; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3169 == CRLF) ) { s = 205; } else if ( (LA2_3169 == DASH || LA2_3169 == EMARK || LA2_3169 == LPAREN || LA2_3169 == RPAREN || ((LA2_3169 >= SQUOTE) && (LA2_3169 <= USCORE))) ) { s = 3172; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3169 == LSBRAQUET || LA2_3169 == RSBRAQUET) ) { s = 405; } SEEK(index2_3169); if ( s>=0 ) { return s; } } break; case 201: { ANTLR3_UINT32 LA2_2536; ANTLR3_MARKER index2_2536; LA2_2536 = LA(1); index2_2536 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2536 == QMARK) ) { s = 854; } else if ( (LA2_2536 == SP) ) { s = 2456; } else if ( (LA2_2536 == SLASH) ) { s = 2455; } else if ( (LA2_2536 == SEMI) ) { s = 2051; } else if ( (LA2_2536 == COMMON_CHAR || LA2_2536 == HEX_CHAR) ) { s = 2530; } else if ( (LA2_2536 == DIGIT) ) { s = 2531; } else if ( (LA2_2536 == DOT) ) { s = 2532; } else if ( (LA2_2536 == PERCENT) ) { s = 2533; } else if ( (LA2_2536 == COLON) ) { s = 2534; } else if ( (LA2_2536 == AT) ) { s = 1576; } else if ( (LA2_2536 == AND) ) { s = 2535; } else if ( (LA2_2536 == EQUAL) ) { s = 2900; } else if ( (LA2_2536 == PLUS) ) { s = 2536; } else if ( (LA2_2536 == DOLLARD) ) { s = 2537; } else if ( (LA2_2536 == COMMA) ) { s = 1581; } else if ( (LA2_2536 == CRLF) ) { s = 2458; } else if ( (LA2_2536 == BQUOTE) ) { s = 1203; } else if ( (LA2_2536 == DASH || LA2_2536 == EMARK || LA2_2536 == LPAREN || LA2_2536 == RPAREN || ((LA2_2536 >= SQUOTE) && (LA2_2536 <= USCORE))) ) { s = 2538; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2536 == LSBRAQUET || LA2_2536 == RSBRAQUET) ) { s = 405; } SEEK(index2_2536); if ( s>=0 ) { return s; } } break; case 202: { ANTLR3_UINT32 LA2_3370; ANTLR3_MARKER index2_3370; LA2_3370 = LA(1); index2_3370 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3370 == QMARK) ) { s = 1308; } else if ( (LA2_3370 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3370 == CRLF) ) { s = 205; } else if ( (LA2_3370 == SEMI) ) { s = 1307; } else if ( (LA2_3370 == DOT) ) { s = 2714; } else if ( (LA2_3370 == COMMON_CHAR || LA2_3370 == HEX_CHAR) ) { s = 2715; } else if ( (LA2_3370 == DIGIT) ) { s = 2716; } else if ( (LA2_3370 == AND || LA2_3370 == COLON || LA2_3370 == DOLLARD || LA2_3370 == PLUS || LA2_3370 == SLASH) ) { s = 2717; } else if ( (LA2_3370 == DASH || LA2_3370 == EMARK || LA2_3370 == LPAREN || LA2_3370 == RPAREN || ((LA2_3370 >= SQUOTE) && (LA2_3370 <= USCORE))) ) { s = 2718; } else if ( (LA2_3370 == PERCENT) ) { s = 2719; } else if ( (LA2_3370 == COMMA) ) { s = 506; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3370 == LSBRAQUET || LA2_3370 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_3370 == AT || LA2_3370 == EQUAL) ) { s = 508; } SEEK(index2_3370); if ( s>=0 ) { return s; } } break; case 203: { ANTLR3_UINT32 LA2_3168; ANTLR3_MARKER index2_3168; LA2_3168 = LA(1); index2_3168 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3168 == SEMI) ) { s = 3170; } else if ( (LA2_3168 == SLASH) ) { s = 3171; } else if ( (LA2_3168 == QMARK) ) { s = 854; } else if ( (LA2_3168 == SP) ) { s = 204; } else if ( (LA2_3168 == COMMON_CHAR || LA2_3168 == HEX_CHAR) ) { s = 3162; } else if ( (LA2_3168 == DIGIT) ) { s = 3179; } else if ( (LA2_3168 == DOT) ) { s = 3163; } else if ( (LA2_3168 == PERCENT) ) { s = 3164; } else if ( (LA2_3168 == COLON) ) { s = 3165; } else if ( (LA2_3168 == AT) ) { s = 1710; } else if ( (LA2_3168 == AND) ) { s = 3166; } else if ( (LA2_3168 == EQUAL) ) { s = 3167; } else if ( (LA2_3168 == PLUS) ) { s = 3168; } else if ( (LA2_3168 == DOLLARD) ) { s = 3169; } else if ( (LA2_3168 == COMMA) ) { s = 1715; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3168 == CRLF) ) { s = 205; } else if ( (LA2_3168 == DASH || LA2_3168 == EMARK || LA2_3168 == LPAREN || LA2_3168 == RPAREN || ((LA2_3168 >= SQUOTE) && (LA2_3168 <= USCORE))) ) { s = 3172; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3168 == LSBRAQUET || LA2_3168 == RSBRAQUET) ) { s = 405; } SEEK(index2_3168); if ( s>=0 ) { return s; } } break; case 204: { ANTLR3_UINT32 LA2_3456; ANTLR3_MARKER index2_3456; LA2_3456 = LA(1); index2_3456 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3456 == SEMI) ) { s = 3463; } else if ( (LA2_3456 == QMARK) ) { s = 854; } else if ( (LA2_3456 == SP) ) { s = 204; } else if ( (LA2_3456 == SLASH) ) { s = 3171; } else if ( (LA2_3456 == COMMON_CHAR || LA2_3456 == HEX_CHAR) ) { s = 3454; } else if ( (LA2_3456 == DIGIT) ) { s = 3455; } else if ( (LA2_3456 == DOT) ) { s = 3456; } else if ( (LA2_3456 == PERCENT) ) { s = 3457; } else if ( (LA2_3456 == COLON) ) { s = 3458; } else if ( (LA2_3456 == AT) ) { s = 2195; } else if ( (LA2_3456 == AND) ) { s = 3459; } else if ( (LA2_3456 == EQUAL) ) { s = 3460; } else if ( (LA2_3456 == PLUS) ) { s = 3461; } else if ( (LA2_3456 == DOLLARD) ) { s = 3462; } else if ( (LA2_3456 == COMMA) ) { s = 2200; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3456 == CRLF) ) { s = 205; } else if ( (LA2_3456 == DASH || LA2_3456 == EMARK || LA2_3456 == LPAREN || LA2_3456 == RPAREN || ((LA2_3456 >= SQUOTE) && (LA2_3456 <= USCORE))) ) { s = 3464; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3456 == LSBRAQUET || LA2_3456 == RSBRAQUET) ) { s = 405; } SEEK(index2_3456); if ( s>=0 ) { return s; } } break; case 205: { ANTLR3_UINT32 LA2_408; ANTLR3_MARKER index2_408; LA2_408 = LA(1); index2_408 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_408 == COMMON_CHAR || LA2_408 == HEX_CHAR) ) { s = 717; } else if ( (LA2_408 == DIGIT) ) { s = 718; } else if ( (LA2_408 == DASH || LA2_408 == DOT || LA2_408 == EMARK || LA2_408 == LPAREN || LA2_408 == RPAREN || ((LA2_408 >= SQUOTE) && (LA2_408 <= USCORE))) ) { s = 719; } else if ( (LA2_408 == PERCENT) ) { s = 720; } else if ( (LA2_408 == AND) ) { s = 193; } else if ( (LA2_408 == EQUAL) ) { s = 721; } else if ( (LA2_408 == PLUS) ) { s = 722; } else if ( (LA2_408 == DOLLARD) ) { s = 723; } else if ( (LA2_408 == COMMA) ) { s = 197; } else if ( (LA2_408 == AT) ) { s = 89; } else if ( (LA2_408 == QMARK) ) { s = 724; } else if ( (LA2_408 == SP) ) { s = 35; } else if ( (LA2_408 == SEMI) ) { s = 105; } else if ( (LA2_408 == COLON || LA2_408 == SLASH) ) { s = 725; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_408 == LSBRAQUET || LA2_408 == RSBRAQUET) ) { s = 414; } SEEK(index2_408); if ( s>=0 ) { return s; } } break; case 206: { ANTLR3_UINT32 LA2_1559; ANTLR3_MARKER index2_1559; LA2_1559 = LA(1); index2_1559 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1559 == COMMON_CHAR || LA2_1559 == HEX_CHAR) ) { s = 1544; } else if ( (LA2_1559 == DIGIT) ) { s = 1545; } else if ( (LA2_1559 == DASH || LA2_1559 == DOT || LA2_1559 == EMARK || LA2_1559 == LPAREN || LA2_1559 == RPAREN || ((LA2_1559 >= SQUOTE) && (LA2_1559 <= USCORE))) ) { s = 1546; } else if ( (LA2_1559 == PERCENT) ) { s = 1547; } else if ( (LA2_1559 == AND) ) { s = 193; } else if ( (LA2_1559 == EQUAL) ) { s = 1986; } else if ( (LA2_1559 == PLUS) ) { s = 1548; } else if ( (LA2_1559 == DOLLARD) ) { s = 1549; } else if ( (LA2_1559 == COMMA) ) { s = 197; } else if ( (LA2_1559 == AT) ) { s = 89; } else if ( (LA2_1559 == QMARK) ) { s = 1550; } else if ( (LA2_1559 == SP) ) { s = 35; } else if ( (LA2_1559 == SEMI) ) { s = 105; } else if ( (LA2_1559 == COLON || LA2_1559 == SLASH) ) { s = 1551; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1559 == LSBRAQUET || LA2_1559 == RSBRAQUET) ) { s = 1552; } SEEK(index2_1559); if ( s>=0 ) { return s; } } break; case 207: { ANTLR3_UINT32 LA2_3692; ANTLR3_MARKER index2_3692; LA2_3692 = LA(1); index2_3692 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3692 == SLASH) ) { s = 2928; } else if ( (LA2_3692 == QMARK) ) { s = 854; } else if ( (LA2_3692 == SP) ) { s = 204; } else if ( (LA2_3692 == SEMI) ) { s = 3530; } else if ( (LA2_3692 == COMMON_CHAR || LA2_3692 == HEX_CHAR) ) { s = 3691; } else if ( (LA2_3692 == DIGIT) ) { s = 3692; } else if ( (LA2_3692 == DOT) ) { s = 3693; } else if ( (LA2_3692 == PERCENT) ) { s = 3694; } else if ( (LA2_3692 == COLON) ) { s = 3695; } else if ( (LA2_3692 == AT) ) { s = 3271; } else if ( (LA2_3692 == AND) ) { s = 3696; } else if ( (LA2_3692 == EQUAL) ) { s = 3800; } else if ( (LA2_3692 == PLUS) ) { s = 3697; } else if ( (LA2_3692 == DOLLARD) ) { s = 3698; } else if ( (LA2_3692 == COMMA) ) { s = 3276; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3692 == CRLF) ) { s = 205; } else if ( (LA2_3692 == DASH || LA2_3692 == EMARK || LA2_3692 == LPAREN || LA2_3692 == RPAREN || ((LA2_3692 >= SQUOTE) && (LA2_3692 <= USCORE))) ) { s = 3699; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3692 == LSBRAQUET || LA2_3692 == RSBRAQUET) ) { s = 405; } SEEK(index2_3692); if ( s>=0 ) { return s; } } break; case 208: { ANTLR3_UINT32 LA2_3773; ANTLR3_MARKER index2_3773; LA2_3773 = LA(1); index2_3773 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3773 == SLASH) ) { s = 3435; } else if ( (LA2_3773 == QMARK) ) { s = 854; } else if ( (LA2_3773 == SP) ) { s = 204; } else if ( (LA2_3773 == SEMI) ) { s = 3170; } else if ( (LA2_3773 == COMMON_CHAR || LA2_3773 == HEX_CHAR) ) { s = 3773; } else if ( (LA2_3773 == DIGIT) ) { s = 3774; } else if ( (LA2_3773 == DOT) ) { s = 3775; } else if ( (LA2_3773 == PERCENT) ) { s = 3776; } else if ( (LA2_3773 == COLON) ) { s = 3777; } else if ( (LA2_3773 == AT) ) { s = 2184; } else if ( (LA2_3773 == AND) ) { s = 3778; } else if ( (LA2_3773 == EQUAL) ) { s = 2186; } else if ( (LA2_3773 == PLUS) ) { s = 3779; } else if ( (LA2_3773 == DOLLARD) ) { s = 3780; } else if ( (LA2_3773 == COMMA) ) { s = 2189; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3773 == CRLF) ) { s = 205; } else if ( (LA2_3773 == DASH || LA2_3773 == EMARK || LA2_3773 == LPAREN || LA2_3773 == RPAREN || ((LA2_3773 >= SQUOTE) && (LA2_3773 <= USCORE))) ) { s = 3781; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3773 == LSBRAQUET || LA2_3773 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3773); if ( s>=0 ) { return s; } } break; case 209: { ANTLR3_UINT32 LA2_3438; ANTLR3_MARKER index2_3438; LA2_3438 = LA(1); index2_3438 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3438 == SEMI) ) { s = 3170; } else if ( (LA2_3438 == SLASH) ) { s = 3435; } else if ( (LA2_3438 == QMARK) ) { s = 854; } else if ( (LA2_3438 == SP) ) { s = 204; } else if ( (LA2_3438 == COMMON_CHAR || LA2_3438 == HEX_CHAR) ) { s = 3436; } else if ( (LA2_3438 == DIGIT) ) { s = 3437; } else if ( (LA2_3438 == DOT) ) { s = 3438; } else if ( (LA2_3438 == PERCENT) ) { s = 3439; } else if ( (LA2_3438 == COLON) ) { s = 3440; } else if ( (LA2_3438 == AT) ) { s = 1710; } else if ( (LA2_3438 == AND) ) { s = 3441; } else if ( (LA2_3438 == EQUAL) ) { s = 1712; } else if ( (LA2_3438 == PLUS) ) { s = 3442; } else if ( (LA2_3438 == DOLLARD) ) { s = 3443; } else if ( (LA2_3438 == COMMA) ) { s = 1715; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3438 == CRLF) ) { s = 205; } else if ( (LA2_3438 == DASH || LA2_3438 == EMARK || LA2_3438 == LPAREN || LA2_3438 == RPAREN || ((LA2_3438 >= SQUOTE) && (LA2_3438 <= USCORE))) ) { s = 3444; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3438 == LSBRAQUET || LA2_3438 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3438); if ( s>=0 ) { return s; } } break; case 210: { ANTLR3_UINT32 LA2_1071; ANTLR3_MARKER index2_1071; LA2_1071 = LA(1); index2_1071 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1071 == AT) ) { s = 89; } else if ( (LA2_1071 == COMMON_CHAR || LA2_1071 == HEX_CHAR) ) { s = 1071; } else if ( (LA2_1071 == DIGIT) ) { s = 1072; } else if ( (LA2_1071 == DOT) ) { s = 1073; } else if ( (LA2_1071 == PERCENT) ) { s = 1074; } else if ( (LA2_1071 == AND) ) { s = 1075; } else if ( (LA2_1071 == EQUAL) ) { s = 194; } else if ( (LA2_1071 == PLUS) ) { s = 1076; } else if ( (LA2_1071 == DOLLARD) ) { s = 1077; } else if ( (LA2_1071 == COMMA) ) { s = 197; } else if ( (LA2_1071 == QMARK) ) { s = 694; } else if ( (LA2_1071 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1071 == CRLF) ) { s = 205; } else if ( (LA2_1071 == SEMI) ) { s = 693; } else if ( (LA2_1071 == DASH || LA2_1071 == EMARK || LA2_1071 == LPAREN || LA2_1071 == RPAREN || ((LA2_1071 >= SQUOTE) && (LA2_1071 <= USCORE))) ) { s = 1078; } else if ( (LA2_1071 == COLON || LA2_1071 == SLASH) ) { s = 1079; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1071 == LSBRAQUET || LA2_1071 == RSBRAQUET) ) { s = 1080; } SEEK(index2_1071); if ( s>=0 ) { return s; } } break; case 211: { ANTLR3_UINT32 LA2_1787; ANTLR3_MARKER index2_1787; LA2_1787 = LA(1); index2_1787 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1787 == QMARK) ) { s = 1308; } else if ( (LA2_1787 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1787 == CRLF) ) { s = 205; } else if ( (LA2_1787 == SEMI) ) { s = 1307; } else if ( (LA2_1787 == DOT) ) { s = 1787; } else if ( (LA2_1787 == COMMON_CHAR || LA2_1787 == HEX_CHAR) ) { s = 1788; } else if ( (LA2_1787 == DIGIT) ) { s = 1789; } else if ( (LA2_1787 == AND || LA2_1787 == COLON || LA2_1787 == DOLLARD || LA2_1787 == PLUS || LA2_1787 == SLASH) ) { s = 1790; } else if ( (LA2_1787 == DASH || LA2_1787 == EMARK || LA2_1787 == LPAREN || LA2_1787 == RPAREN || ((LA2_1787 >= SQUOTE) && (LA2_1787 <= USCORE))) ) { s = 1791; } else if ( (LA2_1787 == PERCENT) ) { s = 1792; } else if ( (LA2_1787 == EQUAL) ) { s = 2284; } else if ( (LA2_1787 == COMMA) ) { s = 506; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1787 == LSBRAQUET || LA2_1787 == RSBRAQUET) ) { s = 405; } else if ( (LA2_1787 == AT) ) { s = 508; } SEEK(index2_1787); if ( s>=0 ) { return s; } } break; case 212: { ANTLR3_UINT32 LA2_3231; ANTLR3_MARKER index2_3231; LA2_3231 = LA(1); index2_3231 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3231 == SEMI) ) { s = 2927; } else if ( (LA2_3231 == SLASH) ) { s = 3226; } else if ( (LA2_3231 == QMARK) ) { s = 854; } else if ( (LA2_3231 == SP) ) { s = 204; } else if ( (LA2_3231 == COMMON_CHAR || LA2_3231 == HEX_CHAR) ) { s = 3227; } else if ( (LA2_3231 == DIGIT) ) { s = 3228; } else if ( (LA2_3231 == DOT) ) { s = 3229; } else if ( (LA2_3231 == PERCENT) ) { s = 3230; } else if ( (LA2_3231 == COLON) ) { s = 3231; } else if ( (LA2_3231 == AT) ) { s = 1667; } else if ( (LA2_3231 == AND) ) { s = 3232; } else if ( (LA2_3231 == EQUAL) ) { s = 1669; } else if ( (LA2_3231 == PLUS) ) { s = 3233; } else if ( (LA2_3231 == DOLLARD) ) { s = 3234; } else if ( (LA2_3231 == COMMA) ) { s = 1672; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3231 == CRLF) ) { s = 205; } else if ( (LA2_3231 == DASH || LA2_3231 == EMARK || LA2_3231 == LPAREN || LA2_3231 == RPAREN || ((LA2_3231 >= SQUOTE) && (LA2_3231 <= USCORE))) ) { s = 3235; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3231 == LSBRAQUET || LA2_3231 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3231); if ( s>=0 ) { return s; } } break; case 213: { ANTLR3_UINT32 LA2_3232; ANTLR3_MARKER index2_3232; LA2_3232 = LA(1); index2_3232 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3232 == SEMI) ) { s = 2927; } else if ( (LA2_3232 == SLASH) ) { s = 3226; } else if ( (LA2_3232 == QMARK) ) { s = 854; } else if ( (LA2_3232 == SP) ) { s = 204; } else if ( (LA2_3232 == COMMON_CHAR || LA2_3232 == HEX_CHAR) ) { s = 3227; } else if ( (LA2_3232 == DIGIT) ) { s = 3228; } else if ( (LA2_3232 == DOT) ) { s = 3229; } else if ( (LA2_3232 == PERCENT) ) { s = 3230; } else if ( (LA2_3232 == COLON) ) { s = 3231; } else if ( (LA2_3232 == AT) ) { s = 1667; } else if ( (LA2_3232 == AND) ) { s = 3232; } else if ( (LA2_3232 == EQUAL) ) { s = 1669; } else if ( (LA2_3232 == PLUS) ) { s = 3233; } else if ( (LA2_3232 == DOLLARD) ) { s = 3234; } else if ( (LA2_3232 == COMMA) ) { s = 1672; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3232 == CRLF) ) { s = 205; } else if ( (LA2_3232 == DASH || LA2_3232 == EMARK || LA2_3232 == LPAREN || LA2_3232 == RPAREN || ((LA2_3232 >= SQUOTE) && (LA2_3232 <= USCORE))) ) { s = 3235; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3232 == LSBRAQUET || LA2_3232 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3232); if ( s>=0 ) { return s; } } break; case 214: { ANTLR3_UINT32 LA2_3248; ANTLR3_MARKER index2_3248; LA2_3248 = LA(1); index2_3248 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3248 == SEMI) ) { s = 2128; } else if ( (LA2_3248 == QMARK) ) { s = 242; } else if ( (LA2_3248 == SP) ) { s = 35; } else if ( (LA2_3248 == SLASH) ) { s = 3226; } else if ( (LA2_3248 == COMMON_CHAR || LA2_3248 == HEX_CHAR) ) { s = 3491; } else if ( (LA2_3248 == DIGIT) ) { s = 3492; } else if ( (LA2_3248 == DOT) ) { s = 3493; } else if ( (LA2_3248 == PERCENT) ) { s = 3494; } else if ( (LA2_3248 == COLON) ) { s = 3495; } else if ( (LA2_3248 == AT) ) { s = 2122; } else if ( (LA2_3248 == AND) ) { s = 3496; } else if ( (LA2_3248 == EQUAL) ) { s = 2124; } else if ( (LA2_3248 == PLUS) ) { s = 3497; } else if ( (LA2_3248 == DOLLARD) ) { s = 3498; } else if ( (LA2_3248 == COMMA) ) { s = 2127; } else if ( (LA2_3248 == DASH || LA2_3248 == EMARK || LA2_3248 == LPAREN || LA2_3248 == RPAREN || ((LA2_3248 >= SQUOTE) && (LA2_3248 <= USCORE))) ) { s = 3499; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3248 == LSBRAQUET || LA2_3248 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3248); if ( s>=0 ) { return s; } } break; case 215: { ANTLR3_UINT32 LA2_3233; ANTLR3_MARKER index2_3233; LA2_3233 = LA(1); index2_3233 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3233 == SEMI) ) { s = 2927; } else if ( (LA2_3233 == SLASH) ) { s = 3226; } else if ( (LA2_3233 == QMARK) ) { s = 854; } else if ( (LA2_3233 == SP) ) { s = 204; } else if ( (LA2_3233 == COMMON_CHAR || LA2_3233 == HEX_CHAR) ) { s = 3227; } else if ( (LA2_3233 == DIGIT) ) { s = 3228; } else if ( (LA2_3233 == DOT) ) { s = 3229; } else if ( (LA2_3233 == PERCENT) ) { s = 3230; } else if ( (LA2_3233 == COLON) ) { s = 3231; } else if ( (LA2_3233 == AT) ) { s = 1667; } else if ( (LA2_3233 == AND) ) { s = 3232; } else if ( (LA2_3233 == EQUAL) ) { s = 1669; } else if ( (LA2_3233 == PLUS) ) { s = 3233; } else if ( (LA2_3233 == DOLLARD) ) { s = 3234; } else if ( (LA2_3233 == COMMA) ) { s = 1672; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3233 == CRLF) ) { s = 205; } else if ( (LA2_3233 == DASH || LA2_3233 == EMARK || LA2_3233 == LPAREN || LA2_3233 == RPAREN || ((LA2_3233 >= SQUOTE) && (LA2_3233 <= USCORE))) ) { s = 3235; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3233 == LSBRAQUET || LA2_3233 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3233); if ( s>=0 ) { return s; } } break; case 216: { ANTLR3_UINT32 LA2_2252; ANTLR3_MARKER index2_2252; LA2_2252 = LA(1); index2_2252 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2252 == QMARK) ) { s = 854; } else if ( (LA2_2252 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2252 == CRLF) ) { s = 205; } else if ( (LA2_2252 == SEMI) ) { s = 853; } else if ( (LA2_2252 == DOT) ) { s = 1262; } else if ( (LA2_2252 == COMMON_CHAR || LA2_2252 == HEX_CHAR) ) { s = 1263; } else if ( (LA2_2252 == DIGIT) ) { s = 1264; } else if ( (LA2_2252 == SLASH) ) { s = 1271; } else if ( (LA2_2252 == DASH || LA2_2252 == EMARK || LA2_2252 == LPAREN || LA2_2252 == RPAREN || ((LA2_2252 >= SQUOTE) && (LA2_2252 <= USCORE))) ) { s = 1266; } else if ( (LA2_2252 == PERCENT) ) { s = 1267; } else if ( (LA2_2252 == EQUAL) ) { s = 1756; } else if ( (LA2_2252 == COLON) ) { s = 1265; } else if ( (LA2_2252 == AND) ) { s = 1268; } else if ( (LA2_2252 == AT) ) { s = 497; } else if ( (LA2_2252 == PLUS) ) { s = 1269; } else if ( (LA2_2252 == DOLLARD) ) { s = 1270; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2252 == LSBRAQUET || LA2_2252 == RSBRAQUET) ) { s = 405; } else if ( (LA2_2252 == COMMA) ) { s = 502; } SEEK(index2_2252); if ( s>=0 ) { return s; } } break; case 217: { ANTLR3_UINT32 LA2_3227; ANTLR3_MARKER index2_3227; LA2_3227 = LA(1); index2_3227 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3227 == SEMI) ) { s = 2927; } else if ( (LA2_3227 == SLASH) ) { s = 3226; } else if ( (LA2_3227 == QMARK) ) { s = 854; } else if ( (LA2_3227 == SP) ) { s = 204; } else if ( (LA2_3227 == COMMON_CHAR || LA2_3227 == HEX_CHAR) ) { s = 3227; } else if ( (LA2_3227 == DIGIT) ) { s = 3228; } else if ( (LA2_3227 == DOT) ) { s = 3229; } else if ( (LA2_3227 == PERCENT) ) { s = 3230; } else if ( (LA2_3227 == COLON) ) { s = 3231; } else if ( (LA2_3227 == AT) ) { s = 1667; } else if ( (LA2_3227 == AND) ) { s = 3232; } else if ( (LA2_3227 == EQUAL) ) { s = 1669; } else if ( (LA2_3227 == PLUS) ) { s = 3233; } else if ( (LA2_3227 == DOLLARD) ) { s = 3234; } else if ( (LA2_3227 == COMMA) ) { s = 1672; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3227 == CRLF) ) { s = 205; } else if ( (LA2_3227 == DASH || LA2_3227 == EMARK || LA2_3227 == LPAREN || LA2_3227 == RPAREN || ((LA2_3227 >= SQUOTE) && (LA2_3227 <= USCORE))) ) { s = 3235; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3227 == LSBRAQUET || LA2_3227 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3227); if ( s>=0 ) { return s; } } break; case 218: { ANTLR3_UINT32 LA2_2846; ANTLR3_MARKER index2_2846; LA2_2846 = LA(1); index2_2846 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2846 == SLASH) ) { s = 2830; } else if ( (LA2_2846 == QMARK) ) { s = 854; } else if ( (LA2_2846 == SP) ) { s = 204; } else if ( (LA2_2846 == SEMI) ) { s = 2011; } else if ( (LA2_2846 == COMMON_CHAR || LA2_2846 == HEX_CHAR) ) { s = 2844; } else if ( (LA2_2846 == DIGIT) ) { s = 2845; } else if ( (LA2_2846 == DOT) ) { s = 2846; } else if ( (LA2_2846 == PERCENT) ) { s = 2847; } else if ( (LA2_2846 == COLON) ) { s = 2835; } else if ( (LA2_2846 == AT) ) { s = 1123; } else if ( (LA2_2846 == AND) ) { s = 2836; } else if ( (LA2_2846 == EQUAL) ) { s = 1125; } else if ( (LA2_2846 == PLUS) ) { s = 2848; } else if ( (LA2_2846 == DOLLARD) ) { s = 2838; } else if ( (LA2_2846 == COMMA) ) { s = 1128; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2846 == CRLF) ) { s = 205; } else if ( (LA2_2846 == DASH || LA2_2846 == EMARK || LA2_2846 == LPAREN || LA2_2846 == RPAREN || ((LA2_2846 >= SQUOTE) && (LA2_2846 <= USCORE))) ) { s = 2849; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2846 == LSBRAQUET || LA2_2846 == RSBRAQUET) ) { s = 1080; } SEEK(index2_2846); if ( s>=0 ) { return s; } } break; case 219: { ANTLR3_UINT32 LA2_2862; ANTLR3_MARKER index2_2862; LA2_2862 = LA(1); index2_2862 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2862 == QMARK) ) { s = 854; } else if ( (LA2_2862 == SP) ) { s = 204; } else if ( (LA2_2862 == SLASH) ) { s = 2009; } else if ( (LA2_2862 == SEMI) ) { s = 2477; } else if ( (LA2_2862 == COMMON_CHAR || LA2_2862 == HEX_CHAR) ) { s = 2860; } else if ( (LA2_2862 == DIGIT) ) { s = 2861; } else if ( (LA2_2862 == DOT) ) { s = 2862; } else if ( (LA2_2862 == PERCENT) ) { s = 2863; } else if ( (LA2_2862 == COLON) ) { s = 2534; } else if ( (LA2_2862 == AT) ) { s = 1576; } else if ( (LA2_2862 == AND) ) { s = 2535; } else if ( (LA2_2862 == EQUAL) ) { s = 2903; } else if ( (LA2_2862 == PLUS) ) { s = 2864; } else if ( (LA2_2862 == DOLLARD) ) { s = 2537; } else if ( (LA2_2862 == COMMA) ) { s = 1581; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2862 == CRLF) ) { s = 205; } else if ( (LA2_2862 == DASH || LA2_2862 == EMARK || LA2_2862 == LPAREN || LA2_2862 == RPAREN || ((LA2_2862 >= SQUOTE) && (LA2_2862 <= USCORE))) ) { s = 2865; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2862 == LSBRAQUET || LA2_2862 == RSBRAQUET) ) { s = 405; } SEEK(index2_2862); if ( s>=0 ) { return s; } } break; case 220: { ANTLR3_UINT32 LA2_3234; ANTLR3_MARKER index2_3234; LA2_3234 = LA(1); index2_3234 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3234 == SEMI) ) { s = 2927; } else if ( (LA2_3234 == SLASH) ) { s = 3226; } else if ( (LA2_3234 == QMARK) ) { s = 854; } else if ( (LA2_3234 == SP) ) { s = 204; } else if ( (LA2_3234 == COMMON_CHAR || LA2_3234 == HEX_CHAR) ) { s = 3227; } else if ( (LA2_3234 == DIGIT) ) { s = 3228; } else if ( (LA2_3234 == DOT) ) { s = 3229; } else if ( (LA2_3234 == PERCENT) ) { s = 3230; } else if ( (LA2_3234 == COLON) ) { s = 3231; } else if ( (LA2_3234 == AT) ) { s = 1667; } else if ( (LA2_3234 == AND) ) { s = 3232; } else if ( (LA2_3234 == EQUAL) ) { s = 1669; } else if ( (LA2_3234 == PLUS) ) { s = 3233; } else if ( (LA2_3234 == DOLLARD) ) { s = 3234; } else if ( (LA2_3234 == COMMA) ) { s = 1672; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3234 == CRLF) ) { s = 205; } else if ( (LA2_3234 == DASH || LA2_3234 == EMARK || LA2_3234 == LPAREN || LA2_3234 == RPAREN || ((LA2_3234 >= SQUOTE) && (LA2_3234 <= USCORE))) ) { s = 3235; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3234 == LSBRAQUET || LA2_3234 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3234); if ( s>=0 ) { return s; } } break; case 221: { ANTLR3_UINT32 LA2_2481; ANTLR3_MARKER index2_2481; LA2_2481 = LA(1); index2_2481 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2481 == SP) ) { s = 2456; } else if ( (LA2_2481 == CRLF) ) { s = 2458; } else if ( (LA2_2481 == EQUAL) ) { s = 2867; } else if ( (LA2_2481 == SLASH) ) { s = 2868; } else if ( (LA2_2481 == QMARK) ) { s = 854; } else if ( (LA2_2481 == SEMI) ) { s = 2028; } else if ( (LA2_2481 == COMMON_CHAR || LA2_2481 == HEX_CHAR) ) { s = 2512; } else if ( (LA2_2481 == DIGIT) ) { s = 2481; } else if ( (LA2_2481 == DOT) ) { s = 2482; } else if ( (LA2_2481 == PERCENT) ) { s = 2483; } else if ( (LA2_2481 == PLUS) ) { s = 2484; } else if ( (LA2_2481 == BQUOTE) ) { s = 1203; } else if ( (LA2_2481 == DASH || LA2_2481 == EMARK || LA2_2481 == LPAREN || LA2_2481 == RPAREN || ((LA2_2481 >= SQUOTE) && (LA2_2481 <= USCORE))) ) { s = 2485; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2481 == AND || LA2_2481 == COLON || LA2_2481 == DOLLARD || LA2_2481 == LSBRAQUET || LA2_2481 == RSBRAQUET) ) { s = 405; } SEEK(index2_2481); if ( s>=0 ) { return s; } } break; case 222: { ANTLR3_UINT32 LA2_726; ANTLR3_MARKER index2_726; LA2_726 = LA(1); index2_726 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_726 == COLON) ) { s = 1106; } else if ( (LA2_726 == AT) ) { s = 89; } else if ( (LA2_726 == COMMON_CHAR || LA2_726 == HEX_CHAR) ) { s = 1107; } else if ( (LA2_726 == DIGIT) ) { s = 1108; } else if ( (LA2_726 == DASH || LA2_726 == DOT || LA2_726 == EMARK || LA2_726 == LPAREN || LA2_726 == RPAREN || ((LA2_726 >= SQUOTE) && (LA2_726 <= USCORE))) ) { s = 1109; } else if ( (LA2_726 == PERCENT) ) { s = 1110; } else if ( (LA2_726 == QMARK) ) { s = 1111; } else if ( (LA2_726 == AND) ) { s = 1112; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_726 == LSBRAQUET || LA2_726 == RSBRAQUET) ) { s = 1104; } else if ( (LA2_726 == SEMI) ) { s = 94; } else if ( (LA2_726 == SP) ) { s = 35; } else if ( (LA2_726 == COMMA) ) { s = 97; } else if ( (LA2_726 == EQUAL) ) { s = 99; } else if ( (LA2_726 == DOLLARD || LA2_726 == PLUS || LA2_726 == SLASH) ) { s = 1113; } SEEK(index2_726); if ( s>=0 ) { return s; } } break; case 223: { ANTLR3_UINT32 LA2_3019; ANTLR3_MARKER index2_3019; LA2_3019 = LA(1); index2_3019 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3019 == SLASH) ) { s = 3319; } else if ( (LA2_3019 == QMARK) ) { s = 1751; } else if ( (LA2_3019 == SP) ) { s = 1585; } else if ( (LA2_3019 == CRLF) ) { s = 1588; } else if ( (LA2_3019 == SEMI) ) { s = 1749; } else if ( (LA2_3019 == COMMON_CHAR || LA2_3019 == HEX_CHAR) ) { s = 3015; } else if ( (LA2_3019 == DIGIT) ) { s = 3016; } else if ( (LA2_3019 == DOT) ) { s = 3017; } else if ( (LA2_3019 == PERCENT) ) { s = 3018; } else if ( (LA2_3019 == PLUS) ) { s = 3019; } else if ( (LA2_3019 == BQUOTE) ) { s = 2092; } else if ( (LA2_3019 == DASH || LA2_3019 == EMARK || LA2_3019 == LPAREN || LA2_3019 == RPAREN || ((LA2_3019 >= SQUOTE) && (LA2_3019 <= USCORE))) ) { s = 3020; } else if ( (LA2_3019 == AND || LA2_3019 == COLON || LA2_3019 == DOLLARD) ) { s = 2717; } else if ( (LA2_3019 == COMMA) ) { s = 506; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3019 == LSBRAQUET || LA2_3019 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_3019 == AT || LA2_3019 == EQUAL) ) { s = 508; } SEEK(index2_3019); if ( s>=0 ) { return s; } } break; case 224: { ANTLR3_UINT32 LA2_3051; ANTLR3_MARKER index2_3051; LA2_3051 = LA(1); index2_3051 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3051 == QMARK) ) { s = 854; } else if ( (LA2_3051 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3051 == CRLF) ) { s = 205; } else if ( (LA2_3051 == SEMI) ) { s = 853; } else if ( (LA2_3051 == DOT) ) { s = 2242; } else if ( (LA2_3051 == COMMON_CHAR || LA2_3051 == HEX_CHAR) ) { s = 2243; } else if ( (LA2_3051 == DIGIT) ) { s = 2244; } else if ( (LA2_3051 == SLASH) ) { s = 2245; } else if ( (LA2_3051 == DASH || LA2_3051 == EMARK || LA2_3051 == LPAREN || LA2_3051 == RPAREN || ((LA2_3051 >= SQUOTE) && (LA2_3051 <= USCORE))) ) { s = 2246; } else if ( (LA2_3051 == PERCENT) ) { s = 2247; } else if ( (LA2_3051 == COLON) ) { s = 2248; } else if ( (LA2_3051 == AND) ) { s = 2249; } else if ( (LA2_3051 == AT) ) { s = 497; } else if ( (LA2_3051 == PLUS) ) { s = 2250; } else if ( (LA2_3051 == EQUAL) ) { s = 499; } else if ( (LA2_3051 == DOLLARD) ) { s = 2251; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3051 == LSBRAQUET || LA2_3051 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_3051 == COMMA) ) { s = 502; } SEEK(index2_3051); if ( s>=0 ) { return s; } } break; case 225: { ANTLR3_UINT32 LA2_3444; ANTLR3_MARKER index2_3444; LA2_3444 = LA(1); index2_3444 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3444 == SEMI) ) { s = 3170; } else if ( (LA2_3444 == SLASH) ) { s = 3435; } else if ( (LA2_3444 == QMARK) ) { s = 854; } else if ( (LA2_3444 == SP) ) { s = 204; } else if ( (LA2_3444 == COMMON_CHAR || LA2_3444 == HEX_CHAR) ) { s = 3436; } else if ( (LA2_3444 == DIGIT) ) { s = 3437; } else if ( (LA2_3444 == DOT) ) { s = 3438; } else if ( (LA2_3444 == PERCENT) ) { s = 3439; } else if ( (LA2_3444 == COLON) ) { s = 3440; } else if ( (LA2_3444 == AT) ) { s = 1710; } else if ( (LA2_3444 == AND) ) { s = 3441; } else if ( (LA2_3444 == EQUAL) ) { s = 1712; } else if ( (LA2_3444 == PLUS) ) { s = 3442; } else if ( (LA2_3444 == DOLLARD) ) { s = 3443; } else if ( (LA2_3444 == COMMA) ) { s = 1715; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3444 == CRLF) ) { s = 205; } else if ( (LA2_3444 == DASH || LA2_3444 == EMARK || LA2_3444 == LPAREN || LA2_3444 == RPAREN || ((LA2_3444 >= SQUOTE) && (LA2_3444 <= USCORE))) ) { s = 3444; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3444 == LSBRAQUET || LA2_3444 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3444); if ( s>=0 ) { return s; } } break; case 226: { ANTLR3_UINT32 LA2_1984; ANTLR3_MARKER index2_1984; LA2_1984 = LA(1); index2_1984 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1984 == DIGIT) ) { s = 2428; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1984 == QMARK) ) { s = 1090; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1984 == SP) ) { s = 1091; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1984 == CRLF) ) { s = 205; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1984 == SEMI) ) { s = 407; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1984 == DOT) ) { s = 712; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1984 == COMMON_CHAR || LA2_1984 == HEX_CHAR) ) { s = 1541; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1984 == AND || LA2_1984 == COLON || LA2_1984 == DOLLARD || LA2_1984 == LSBRAQUET || LA2_1984 == PLUS || LA2_1984 == RSBRAQUET || LA2_1984 == SLASH) ) { s = 405; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1984 == DASH || LA2_1984 == EMARK || LA2_1984 == LPAREN || LA2_1984 == RPAREN || ((LA2_1984 >= SQUOTE) && (LA2_1984 <= USCORE))) ) { s = 715; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1984 == PERCENT) ) { s = 716; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1984 == EQUAL) ) { s = 1093; } SEEK(index2_1984); if ( s>=0 ) { return s; } } break; case 227: { ANTLR3_UINT32 LA2_1535; ANTLR3_MARKER index2_1535; LA2_1535 = LA(1); index2_1535 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1535 == QMARK) ) { s = 694; } else if ( (LA2_1535 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1535 == CRLF) ) { s = 205; } else if ( (LA2_1535 == SEMI) ) { s = 693; } else if ( (LA2_1535 == DOT) ) { s = 1534; } else if ( (LA2_1535 == COMMON_CHAR || LA2_1535 == HEX_CHAR) ) { s = 1535; } else if ( (LA2_1535 == DIGIT) ) { s = 1536; } else if ( (LA2_1535 == AND || LA2_1535 == COLON || LA2_1535 == DOLLARD || LA2_1535 == PLUS || LA2_1535 == SLASH) ) { s = 1079; } else if ( (LA2_1535 == DASH || LA2_1535 == EMARK || LA2_1535 == LPAREN || LA2_1535 == RPAREN || ((LA2_1535 >= SQUOTE) && (LA2_1535 <= USCORE))) ) { s = 1537; } else if ( (LA2_1535 == PERCENT) ) { s = 1538; } else if ( (LA2_1535 == COMMA) ) { s = 106; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1535 == LSBRAQUET || LA2_1535 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_1535 == AT || LA2_1535 == EQUAL) ) { s = 108; } SEEK(index2_1535); if ( s>=0 ) { return s; } } break; case 228: { ANTLR3_UINT32 LA2_3634; ANTLR3_MARKER index2_3634; LA2_3634 = LA(1); index2_3634 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3634 == SEMI) ) { s = 3463; } else if ( (LA2_3634 == QMARK) ) { s = 854; } else if ( (LA2_3634 == SP) ) { s = 204; } else if ( (LA2_3634 == SLASH) ) { s = 3435; } else if ( (LA2_3634 == COMMON_CHAR || LA2_3634 == HEX_CHAR) ) { s = 3633; } else if ( (LA2_3634 == DIGIT) ) { s = 3634; } else if ( (LA2_3634 == DOT) ) { s = 3635; } else if ( (LA2_3634 == PERCENT) ) { s = 3636; } else if ( (LA2_3634 == COLON) ) { s = 3637; } else if ( (LA2_3634 == AT) ) { s = 2195; } else if ( (LA2_3634 == AND) ) { s = 3638; } else if ( (LA2_3634 == EQUAL) ) { s = 2197; } else if ( (LA2_3634 == PLUS) ) { s = 3639; } else if ( (LA2_3634 == DOLLARD) ) { s = 3640; } else if ( (LA2_3634 == COMMA) ) { s = 2200; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3634 == CRLF) ) { s = 205; } else if ( (LA2_3634 == DASH || LA2_3634 == EMARK || LA2_3634 == LPAREN || LA2_3634 == RPAREN || ((LA2_3634 >= SQUOTE) && (LA2_3634 <= USCORE))) ) { s = 3641; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3634 == LSBRAQUET || LA2_3634 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3634); if ( s>=0 ) { return s; } } break; case 229: { ANTLR3_UINT32 LA2_1262; ANTLR3_MARKER index2_1262; LA2_1262 = LA(1); index2_1262 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1262 == QMARK) ) { s = 854; } else if ( (LA2_1262 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1262 == CRLF) ) { s = 205; } else if ( (LA2_1262 == SEMI) ) { s = 853; } else if ( (LA2_1262 == DOT) ) { s = 1262; } else if ( (LA2_1262 == COMMON_CHAR || LA2_1262 == HEX_CHAR) ) { s = 1263; } else if ( (LA2_1262 == DIGIT) ) { s = 1264; } else if ( (LA2_1262 == SLASH) ) { s = 1271; } else if ( (LA2_1262 == DASH || LA2_1262 == EMARK || LA2_1262 == LPAREN || LA2_1262 == RPAREN || ((LA2_1262 >= SQUOTE) && (LA2_1262 <= USCORE))) ) { s = 1266; } else if ( (LA2_1262 == PERCENT) ) { s = 1267; } else if ( (LA2_1262 == EQUAL) ) { s = 1756; } else if ( (LA2_1262 == COLON) ) { s = 1265; } else if ( (LA2_1262 == AND) ) { s = 1268; } else if ( (LA2_1262 == AT) ) { s = 497; } else if ( (LA2_1262 == PLUS) ) { s = 1269; } else if ( (LA2_1262 == DOLLARD) ) { s = 1270; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1262 == LSBRAQUET || LA2_1262 == RSBRAQUET) ) { s = 405; } else if ( (LA2_1262 == COMMA) ) { s = 502; } SEEK(index2_1262); if ( s>=0 ) { return s; } } break; case 230: { ANTLR3_UINT32 LA2_3631; ANTLR3_MARKER index2_3631; LA2_3631 = LA(1); index2_3631 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3631 == CRLF) ) { s = 2812; } else if ( (LA2_3631 == SEMI) ) { s = 3170; } else if ( (LA2_3631 == SLASH) ) { s = 3171; } else if ( (LA2_3631 == QMARK) ) { s = 854; } else if ( (LA2_3631 == SP) ) { s = 204; } else if ( (LA2_3631 == COMMON_CHAR || LA2_3631 == HEX_CHAR) ) { s = 3162; } else if ( (LA2_3631 == DIGIT) ) { s = 3179; } else if ( (LA2_3631 == DOT) ) { s = 3163; } else if ( (LA2_3631 == PERCENT) ) { s = 3164; } else if ( (LA2_3631 == COLON) ) { s = 3165; } else if ( (LA2_3631 == AT) ) { s = 1710; } else if ( (LA2_3631 == AND) ) { s = 3166; } else if ( (LA2_3631 == EQUAL) ) { s = 3167; } else if ( (LA2_3631 == PLUS) ) { s = 3168; } else if ( (LA2_3631 == DOLLARD) ) { s = 3169; } else if ( (LA2_3631 == COMMA) ) { s = 1715; } else if ( (LA2_3631 == DASH || LA2_3631 == EMARK || LA2_3631 == LPAREN || LA2_3631 == RPAREN || ((LA2_3631 >= SQUOTE) && (LA2_3631 <= USCORE))) ) { s = 3172; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3631 == LSBRAQUET || LA2_3631 == RSBRAQUET) ) { s = 405; } SEEK(index2_3631); if ( s>=0 ) { return s; } } break; case 231: { ANTLR3_UINT32 LA2_3455; ANTLR3_MARKER index2_3455; LA2_3455 = LA(1); index2_3455 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3455 == SEMI) ) { s = 3463; } else if ( (LA2_3455 == QMARK) ) { s = 854; } else if ( (LA2_3455 == SP) ) { s = 204; } else if ( (LA2_3455 == SLASH) ) { s = 3171; } else if ( (LA2_3455 == COMMON_CHAR || LA2_3455 == HEX_CHAR) ) { s = 3454; } else if ( (LA2_3455 == DIGIT) ) { s = 3455; } else if ( (LA2_3455 == DOT) ) { s = 3456; } else if ( (LA2_3455 == PERCENT) ) { s = 3457; } else if ( (LA2_3455 == COLON) ) { s = 3458; } else if ( (LA2_3455 == AT) ) { s = 2195; } else if ( (LA2_3455 == AND) ) { s = 3459; } else if ( (LA2_3455 == EQUAL) ) { s = 3460; } else if ( (LA2_3455 == PLUS) ) { s = 3461; } else if ( (LA2_3455 == DOLLARD) ) { s = 3462; } else if ( (LA2_3455 == COMMA) ) { s = 2200; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3455 == CRLF) ) { s = 205; } else if ( (LA2_3455 == DASH || LA2_3455 == EMARK || LA2_3455 == LPAREN || LA2_3455 == RPAREN || ((LA2_3455 >= SQUOTE) && (LA2_3455 <= USCORE))) ) { s = 3464; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3455 == LSBRAQUET || LA2_3455 == RSBRAQUET) ) { s = 405; } SEEK(index2_3455); if ( s>=0 ) { return s; } } break; case 232: { ANTLR3_UINT32 LA2_3800; ANTLR3_MARKER index2_3800; LA2_3800 = LA(1); index2_3800 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3800 == SLASH) ) { s = 3226; } else if ( (LA2_3800 == QMARK) ) { s = 242; } else if ( (LA2_3800 == SP) ) { s = 35; } else if ( (LA2_3800 == SEMI) ) { s = 2969; } else if ( (LA2_3800 == COMMON_CHAR || LA2_3800 == HEX_CHAR) ) { s = 3852; } else if ( (LA2_3800 == DIGIT) ) { s = 3853; } else if ( (LA2_3800 == DOT) ) { s = 3854; } else if ( (LA2_3800 == PERCENT) ) { s = 3855; } else if ( (LA2_3800 == COLON) ) { s = 3856; } else if ( (LA2_3800 == AT) ) { s = 3271; } else if ( (LA2_3800 == AND) ) { s = 3857; } else if ( (LA2_3800 == EQUAL) ) { s = 3273; } else if ( (LA2_3800 == PLUS) ) { s = 3858; } else if ( (LA2_3800 == DOLLARD) ) { s = 3859; } else if ( (LA2_3800 == COMMA) ) { s = 3276; } else if ( (LA2_3800 == DASH || LA2_3800 == EMARK || LA2_3800 == LPAREN || LA2_3800 == RPAREN || ((LA2_3800 >= SQUOTE) && (LA2_3800 <= USCORE))) ) { s = 3860; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3800 == LSBRAQUET || LA2_3800 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3800); if ( s>=0 ) { return s; } } break; case 233: { ANTLR3_UINT32 LA2_3212; ANTLR3_MARKER index2_3212; LA2_3212 = LA(1); index2_3212 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3212 == QMARK) ) { s = 854; } else if ( (LA2_3212 == SP) ) { s = 204; } else if ( (LA2_3212 == SLASH) ) { s = 2830; } else if ( (LA2_3212 == SEMI) ) { s = 2477; } else if ( (LA2_3212 == COMMON_CHAR || LA2_3212 == HEX_CHAR) ) { s = 3211; } else if ( (LA2_3212 == DIGIT) ) { s = 3212; } else if ( (LA2_3212 == DOT) ) { s = 3213; } else if ( (LA2_3212 == PERCENT) ) { s = 3214; } else if ( (LA2_3212 == COLON) ) { s = 3204; } else if ( (LA2_3212 == AT) ) { s = 1576; } else if ( (LA2_3212 == AND) ) { s = 3205; } else if ( (LA2_3212 == EQUAL) ) { s = 1578; } else if ( (LA2_3212 == PLUS) ) { s = 3215; } else if ( (LA2_3212 == DOLLARD) ) { s = 3207; } else if ( (LA2_3212 == COMMA) ) { s = 1581; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3212 == CRLF) ) { s = 205; } else if ( (LA2_3212 == DASH || LA2_3212 == EMARK || LA2_3212 == LPAREN || LA2_3212 == RPAREN || ((LA2_3212 >= SQUOTE) && (LA2_3212 <= USCORE))) ) { s = 3216; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3212 == LSBRAQUET || LA2_3212 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3212); if ( s>=0 ) { return s; } } break; case 234: { ANTLR3_UINT32 LA2_1789; ANTLR3_MARKER index2_1789; LA2_1789 = LA(1); index2_1789 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1789 == QMARK) ) { s = 1308; } else if ( (LA2_1789 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1789 == CRLF) ) { s = 205; } else if ( (LA2_1789 == SEMI) ) { s = 1307; } else if ( (LA2_1789 == DOT) ) { s = 1787; } else if ( (LA2_1789 == COMMON_CHAR || LA2_1789 == HEX_CHAR) ) { s = 1788; } else if ( (LA2_1789 == DIGIT) ) { s = 1789; } else if ( (LA2_1789 == AND || LA2_1789 == COLON || LA2_1789 == DOLLARD || LA2_1789 == PLUS || LA2_1789 == SLASH) ) { s = 1790; } else if ( (LA2_1789 == DASH || LA2_1789 == EMARK || LA2_1789 == LPAREN || LA2_1789 == RPAREN || ((LA2_1789 >= SQUOTE) && (LA2_1789 <= USCORE))) ) { s = 1791; } else if ( (LA2_1789 == PERCENT) ) { s = 1792; } else if ( (LA2_1789 == EQUAL) ) { s = 2284; } else if ( (LA2_1789 == COMMA) ) { s = 506; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1789 == LSBRAQUET || LA2_1789 == RSBRAQUET) ) { s = 405; } else if ( (LA2_1789 == AT) ) { s = 508; } SEEK(index2_1789); if ( s>=0 ) { return s; } } break; case 235: { ANTLR3_UINT32 LA2_2716; ANTLR3_MARKER index2_2716; LA2_2716 = LA(1); index2_2716 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2716 == QMARK) ) { s = 1308; } else if ( (LA2_2716 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2716 == CRLF) ) { s = 205; } else if ( (LA2_2716 == SEMI) ) { s = 1307; } else if ( (LA2_2716 == DOT) ) { s = 2714; } else if ( (LA2_2716 == COMMON_CHAR || LA2_2716 == HEX_CHAR) ) { s = 2715; } else if ( (LA2_2716 == DIGIT) ) { s = 2716; } else if ( (LA2_2716 == AND || LA2_2716 == COLON || LA2_2716 == DOLLARD || LA2_2716 == PLUS || LA2_2716 == SLASH) ) { s = 2717; } else if ( (LA2_2716 == DASH || LA2_2716 == EMARK || LA2_2716 == LPAREN || LA2_2716 == RPAREN || ((LA2_2716 >= SQUOTE) && (LA2_2716 <= USCORE))) ) { s = 2718; } else if ( (LA2_2716 == PERCENT) ) { s = 2719; } else if ( (LA2_2716 == COMMA) ) { s = 506; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2716 == LSBRAQUET || LA2_2716 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_2716 == AT || LA2_2716 == EQUAL) ) { s = 508; } SEEK(index2_2716); if ( s>=0 ) { return s; } } break; case 236: { ANTLR3_UINT32 LA2_2861; ANTLR3_MARKER index2_2861; LA2_2861 = LA(1); index2_2861 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2861 == QMARK) ) { s = 854; } else if ( (LA2_2861 == SP) ) { s = 204; } else if ( (LA2_2861 == SLASH) ) { s = 2009; } else if ( (LA2_2861 == SEMI) ) { s = 2477; } else if ( (LA2_2861 == COMMON_CHAR || LA2_2861 == HEX_CHAR) ) { s = 2860; } else if ( (LA2_2861 == DIGIT) ) { s = 2861; } else if ( (LA2_2861 == DOT) ) { s = 2862; } else if ( (LA2_2861 == PERCENT) ) { s = 2863; } else if ( (LA2_2861 == COLON) ) { s = 2534; } else if ( (LA2_2861 == AT) ) { s = 1576; } else if ( (LA2_2861 == AND) ) { s = 2535; } else if ( (LA2_2861 == EQUAL) ) { s = 2903; } else if ( (LA2_2861 == PLUS) ) { s = 2864; } else if ( (LA2_2861 == DOLLARD) ) { s = 2537; } else if ( (LA2_2861 == COMMA) ) { s = 1581; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2861 == CRLF) ) { s = 205; } else if ( (LA2_2861 == DASH || LA2_2861 == EMARK || LA2_2861 == LPAREN || LA2_2861 == RPAREN || ((LA2_2861 >= SQUOTE) && (LA2_2861 <= USCORE))) ) { s = 2865; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2861 == LSBRAQUET || LA2_2861 == RSBRAQUET) ) { s = 405; } SEEK(index2_2861); if ( s>=0 ) { return s; } } break; case 237: { ANTLR3_UINT32 LA2_2837; ANTLR3_MARKER index2_2837; LA2_2837 = LA(1); index2_2837 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2837 == SLASH) ) { s = 3153; } else if ( (LA2_2837 == QMARK) ) { s = 854; } else if ( (LA2_2837 == SP) ) { s = 1585; } else if ( (LA2_2837 == SEMI) ) { s = 1583; } else if ( (LA2_2837 == COMMON_CHAR || LA2_2837 == HEX_CHAR) ) { s = 2831; } else if ( (LA2_2837 == DIGIT) ) { s = 2832; } else if ( (LA2_2837 == DOT) ) { s = 2833; } else if ( (LA2_2837 == PERCENT) ) { s = 2834; } else if ( (LA2_2837 == COLON) ) { s = 2835; } else if ( (LA2_2837 == AT) ) { s = 1123; } else if ( (LA2_2837 == AND) ) { s = 2836; } else if ( (LA2_2837 == EQUAL) ) { s = 1125; } else if ( (LA2_2837 == PLUS) ) { s = 2837; } else if ( (LA2_2837 == DOLLARD) ) { s = 2838; } else if ( (LA2_2837 == COMMA) ) { s = 1128; } else if ( (LA2_2837 == CRLF) ) { s = 1588; } else if ( (LA2_2837 == BQUOTE) ) { s = 2092; } else if ( (LA2_2837 == DASH || LA2_2837 == EMARK || LA2_2837 == LPAREN || LA2_2837 == RPAREN || ((LA2_2837 >= SQUOTE) && (LA2_2837 <= USCORE))) ) { s = 2839; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2837 == LSBRAQUET || LA2_2837 == RSBRAQUET) ) { s = 1080; } SEEK(index2_2837); if ( s>=0 ) { return s; } } break; case 238: { ANTLR3_UINT32 LA2_517; ANTLR3_MARKER index2_517; LA2_517 = LA(1); index2_517 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_517 == COMMON_CHAR || LA2_517 == HEX_CHAR) ) { s = 516; } else if ( (LA2_517 == DIGIT) ) { s = 517; } else if ( (LA2_517 == DASH) ) { s = 518; } else if ( (LA2_517 == DOT) ) { s = 851; } else if ( (LA2_517 == COLON) ) { s = 852; } else if ( (LA2_517 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_517 == CRLF) ) { s = 205; } else if ( (LA2_517 == SEMI) ) { s = 853; } else if ( (LA2_517 == QMARK) ) { s = 854; } else if ( (LA2_517 == SLASH) ) { s = 241; } else if ( (LA2_517 == EMARK || LA2_517 == LPAREN || LA2_517 == RPAREN || ((LA2_517 >= SQUOTE) && (LA2_517 <= USCORE))) ) { s = 246; } else if ( (LA2_517 == PERCENT) ) { s = 247; } else if ( (LA2_517 == AT) ) { s = 248; } else if ( (LA2_517 == AND) ) { s = 249; } else if ( (LA2_517 == EQUAL) ) { s = 250; } else if ( (LA2_517 == PLUS) ) { s = 251; } else if ( (LA2_517 == DOLLARD) ) { s = 252; } else if ( (LA2_517 == COMMA) ) { s = 253; } SEEK(index2_517); if ( s>=0 ) { return s; } } break; case 239: { ANTLR3_UINT32 LA2_2849; ANTLR3_MARKER index2_2849; LA2_2849 = LA(1); index2_2849 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2849 == SLASH) ) { s = 2830; } else if ( (LA2_2849 == QMARK) ) { s = 854; } else if ( (LA2_2849 == SP) ) { s = 204; } else if ( (LA2_2849 == SEMI) ) { s = 2011; } else if ( (LA2_2849 == COMMON_CHAR || LA2_2849 == HEX_CHAR) ) { s = 2844; } else if ( (LA2_2849 == DIGIT) ) { s = 2845; } else if ( (LA2_2849 == DOT) ) { s = 2846; } else if ( (LA2_2849 == PERCENT) ) { s = 2847; } else if ( (LA2_2849 == COLON) ) { s = 2835; } else if ( (LA2_2849 == AT) ) { s = 1123; } else if ( (LA2_2849 == AND) ) { s = 2836; } else if ( (LA2_2849 == EQUAL) ) { s = 1125; } else if ( (LA2_2849 == PLUS) ) { s = 2848; } else if ( (LA2_2849 == DOLLARD) ) { s = 2838; } else if ( (LA2_2849 == COMMA) ) { s = 1128; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2849 == CRLF) ) { s = 205; } else if ( (LA2_2849 == DASH || LA2_2849 == EMARK || LA2_2849 == LPAREN || LA2_2849 == RPAREN || ((LA2_2849 >= SQUOTE) && (LA2_2849 <= USCORE))) ) { s = 2849; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2849 == LSBRAQUET || LA2_2849 == RSBRAQUET) ) { s = 1080; } SEEK(index2_2849); if ( s>=0 ) { return s; } } break; case 240: { ANTLR3_UINT32 LA2_2450; ANTLR3_MARKER index2_2450; LA2_2450 = LA(1); index2_2450 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2450 == COLON) ) { s = 2445; } else if ( (LA2_2450 == AT) ) { s = 89; } else if ( (LA2_2450 == COMMON_CHAR || LA2_2450 == HEX_CHAR) ) { s = 2446; } else if ( (LA2_2450 == DIGIT) ) { s = 2447; } else if ( (LA2_2450 == DASH || LA2_2450 == DOT || LA2_2450 == EMARK || LA2_2450 == LPAREN || LA2_2450 == RPAREN || ((LA2_2450 >= SQUOTE) && (LA2_2450 <= USCORE))) ) { s = 2448; } else if ( (LA2_2450 == PERCENT) ) { s = 2449; } else if ( (LA2_2450 == AND) ) { s = 1112; } else if ( (LA2_2450 == SP) ) { s = 35; } else if ( (LA2_2450 == QMARK) ) { s = 2450; } else if ( (LA2_2450 == SEMI) ) { s = 94; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2450 == LSBRAQUET || LA2_2450 == RSBRAQUET) ) { s = 2437; } else if ( (LA2_2450 == COMMA) ) { s = 97; } else if ( (LA2_2450 == EQUAL) ) { s = 99; } else if ( (LA2_2450 == DOLLARD || LA2_2450 == PLUS || LA2_2450 == SLASH) ) { s = 2451; } SEEK(index2_2450); if ( s>=0 ) { return s; } } break; case 241: { ANTLR3_UINT32 LA2_2485; ANTLR3_MARKER index2_2485; LA2_2485 = LA(1); index2_2485 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2485 == SP) ) { s = 2456; } else if ( (LA2_2485 == CRLF) ) { s = 2458; } else if ( (LA2_2485 == EQUAL) ) { s = 2867; } else if ( (LA2_2485 == SLASH) ) { s = 2868; } else if ( (LA2_2485 == QMARK) ) { s = 854; } else if ( (LA2_2485 == SEMI) ) { s = 2028; } else if ( (LA2_2485 == COMMON_CHAR || LA2_2485 == HEX_CHAR) ) { s = 2512; } else if ( (LA2_2485 == DIGIT) ) { s = 2481; } else if ( (LA2_2485 == DOT) ) { s = 2482; } else if ( (LA2_2485 == PERCENT) ) { s = 2483; } else if ( (LA2_2485 == PLUS) ) { s = 2484; } else if ( (LA2_2485 == BQUOTE) ) { s = 1203; } else if ( (LA2_2485 == DASH || LA2_2485 == EMARK || LA2_2485 == LPAREN || LA2_2485 == RPAREN || ((LA2_2485 >= SQUOTE) && (LA2_2485 <= USCORE))) ) { s = 2485; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2485 == AND || LA2_2485 == COLON || LA2_2485 == DOLLARD || LA2_2485 == LSBRAQUET || LA2_2485 == RSBRAQUET) ) { s = 405; } SEEK(index2_2485); if ( s>=0 ) { return s; } } break; case 242: { ANTLR3_UINT32 LA2_3516; ANTLR3_MARKER index2_3516; LA2_3516 = LA(1); index2_3516 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3516 == SLASH) ) { s = 3678; } else if ( (LA2_3516 == QMARK) ) { s = 854; } else if ( (LA2_3516 == SP) ) { s = 1585; } else if ( (LA2_3516 == CRLF) ) { s = 1588; } else if ( (LA2_3516 == SEMI) ) { s = 2587; } else if ( (LA2_3516 == COMMON_CHAR || LA2_3516 == HEX_CHAR) ) { s = 3512; } else if ( (LA2_3516 == DIGIT) ) { s = 3513; } else if ( (LA2_3516 == DOT) ) { s = 3514; } else if ( (LA2_3516 == PERCENT) ) { s = 3515; } else if ( (LA2_3516 == PLUS) ) { s = 3516; } else if ( (LA2_3516 == BQUOTE) ) { s = 2092; } else if ( (LA2_3516 == COLON) ) { s = 3517; } else if ( (LA2_3516 == AT) ) { s = 2111; } else if ( (LA2_3516 == AND) ) { s = 3518; } else if ( (LA2_3516 == EQUAL) ) { s = 2113; } else if ( (LA2_3516 == DOLLARD) ) { s = 3519; } else if ( (LA2_3516 == COMMA) ) { s = 2116; } else if ( (LA2_3516 == DASH || LA2_3516 == EMARK || LA2_3516 == LPAREN || LA2_3516 == RPAREN || ((LA2_3516 >= SQUOTE) && (LA2_3516 <= USCORE))) ) { s = 3520; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3516 == LSBRAQUET || LA2_3516 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3516); if ( s>=0 ) { return s; } } break; case 243: { ANTLR3_UINT32 LA2_3699; ANTLR3_MARKER index2_3699; LA2_3699 = LA(1); index2_3699 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3699 == SLASH) ) { s = 2928; } else if ( (LA2_3699 == QMARK) ) { s = 854; } else if ( (LA2_3699 == SP) ) { s = 204; } else if ( (LA2_3699 == SEMI) ) { s = 3530; } else if ( (LA2_3699 == COMMON_CHAR || LA2_3699 == HEX_CHAR) ) { s = 3691; } else if ( (LA2_3699 == DIGIT) ) { s = 3692; } else if ( (LA2_3699 == DOT) ) { s = 3693; } else if ( (LA2_3699 == PERCENT) ) { s = 3694; } else if ( (LA2_3699 == COLON) ) { s = 3695; } else if ( (LA2_3699 == AT) ) { s = 3271; } else if ( (LA2_3699 == AND) ) { s = 3696; } else if ( (LA2_3699 == EQUAL) ) { s = 3800; } else if ( (LA2_3699 == PLUS) ) { s = 3697; } else if ( (LA2_3699 == DOLLARD) ) { s = 3698; } else if ( (LA2_3699 == COMMA) ) { s = 3276; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3699 == CRLF) ) { s = 205; } else if ( (LA2_3699 == DASH || LA2_3699 == EMARK || LA2_3699 == LPAREN || LA2_3699 == RPAREN || ((LA2_3699 >= SQUOTE) && (LA2_3699 <= USCORE))) ) { s = 3699; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3699 == LSBRAQUET || LA2_3699 == RSBRAQUET) ) { s = 405; } SEEK(index2_3699); if ( s>=0 ) { return s; } } break; case 244: { ANTLR3_UINT32 LA2_3743; ANTLR3_MARKER index2_3743; LA2_3743 = LA(1); index2_3743 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3743 == SLASH) ) { s = 3031; } else if ( (LA2_3743 == QMARK) ) { s = 1751; } else if ( (LA2_3743 == SP) ) { s = 204; } else if ( (LA2_3743 == SEMI) ) { s = 3030; } else if ( (LA2_3743 == COMMON_CHAR || LA2_3743 == HEX_CHAR) ) { s = 3333; } else if ( (LA2_3743 == DIGIT) ) { s = 3334; } else if ( (LA2_3743 == DOT) ) { s = 3335; } else if ( (LA2_3743 == PERCENT) ) { s = 3336; } else if ( (LA2_3743 == COLON) ) { s = 3337; } else if ( (LA2_3743 == AT) ) { s = 2673; } else if ( (LA2_3743 == AND) ) { s = 3338; } else if ( (LA2_3743 == EQUAL) ) { s = 3578; } else if ( (LA2_3743 == PLUS) ) { s = 3339; } else if ( (LA2_3743 == DOLLARD) ) { s = 3340; } else if ( (LA2_3743 == COMMA) ) { s = 2678; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3743 == CRLF) ) { s = 205; } else if ( (LA2_3743 == DASH || LA2_3743 == EMARK || LA2_3743 == LPAREN || LA2_3743 == RPAREN || ((LA2_3743 >= SQUOTE) && (LA2_3743 <= USCORE))) ) { s = 3341; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3743 == LSBRAQUET || LA2_3743 == RSBRAQUET) ) { s = 405; } SEEK(index2_3743); if ( s>=0 ) { return s; } } break; case 245: { ANTLR3_UINT32 LA2_1099; ANTLR3_MARKER index2_1099; LA2_1099 = LA(1); index2_1099 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1099 == AT) ) { s = 89; } else if ( (LA2_1099 == COMMON_CHAR || LA2_1099 == HEX_CHAR) ) { s = 1544; } else if ( (LA2_1099 == DIGIT) ) { s = 1545; } else if ( (LA2_1099 == DASH || LA2_1099 == DOT || LA2_1099 == EMARK || LA2_1099 == LPAREN || LA2_1099 == RPAREN || ((LA2_1099 >= SQUOTE) && (LA2_1099 <= USCORE))) ) { s = 1546; } else if ( (LA2_1099 == PERCENT) ) { s = 1547; } else if ( (LA2_1099 == AND) ) { s = 193; } else if ( (LA2_1099 == EQUAL) ) { s = 194; } else if ( (LA2_1099 == PLUS) ) { s = 1548; } else if ( (LA2_1099 == DOLLARD) ) { s = 1549; } else if ( (LA2_1099 == COMMA) ) { s = 197; } else if ( (LA2_1099 == QMARK) ) { s = 1550; } else if ( (LA2_1099 == SP) ) { s = 35; } else if ( (LA2_1099 == SEMI) ) { s = 105; } else if ( (LA2_1099 == COLON || LA2_1099 == SLASH) ) { s = 1551; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1099 == LSBRAQUET || LA2_1099 == RSBRAQUET) ) { s = 1552; } SEEK(index2_1099); if ( s>=0 ) { return s; } } break; case 246: { ANTLR3_UINT32 LA2_224; ANTLR3_MARKER index2_224; LA2_224 = LA(1); index2_224 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_224 == COMMON_CHAR || LA2_224 == HEX_CHAR) ) { s = 460; } else if ( (LA2_224 == DIGIT) ) { s = 461; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_224 == LSBRAQUET) ) { s = 200; } else if ( (LA2_224 == SEMI) ) { s = 458; } else if ( (LA2_224 == QMARK) ) { s = 242; } else if ( (LA2_224 == SP) ) { s = 35; } else if ( (LA2_224 == SLASH) ) { s = 241; } else if ( (LA2_224 == DASH || LA2_224 == DOT || LA2_224 == EMARK || LA2_224 == LPAREN || LA2_224 == RPAREN || ((LA2_224 >= SQUOTE) && (LA2_224 <= USCORE))) ) { s = 462; } else if ( (LA2_224 == PERCENT) ) { s = 463; } else if ( (LA2_224 == COLON) ) { s = 459; } else if ( (LA2_224 == AT) ) { s = 464; } else if ( (LA2_224 == AND) ) { s = 465; } else if ( (LA2_224 == EQUAL) ) { s = 466; } else if ( (LA2_224 == PLUS) ) { s = 467; } else if ( (LA2_224 == DOLLARD) ) { s = 468; } else if ( (LA2_224 == COMMA) ) { s = 469; } SEEK(index2_224); if ( s>=0 ) { return s; } } break; case 247: { ANTLR3_UINT32 LA2_2900; ANTLR3_MARKER index2_2900; LA2_2900 = LA(1); index2_2900 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2900 == QMARK) ) { s = 242; } else if ( (LA2_2900 == SP) ) { s = 2090; } else if ( (LA2_2900 == SLASH) ) { s = 2830; } else if ( (LA2_2900 == SEMI) ) { s = 1140; } else if ( (LA2_2900 == COMMON_CHAR || LA2_2900 == HEX_CHAR) ) { s = 3200; } else if ( (LA2_2900 == DIGIT) ) { s = 3201; } else if ( (LA2_2900 == DOT) ) { s = 3202; } else if ( (LA2_2900 == PERCENT) ) { s = 3203; } else if ( (LA2_2900 == COLON) ) { s = 3204; } else if ( (LA2_2900 == AT) ) { s = 1576; } else if ( (LA2_2900 == AND) ) { s = 3205; } else if ( (LA2_2900 == EQUAL) ) { s = 1578; } else if ( (LA2_2900 == PLUS) ) { s = 3206; } else if ( (LA2_2900 == DOLLARD) ) { s = 3207; } else if ( (LA2_2900 == COMMA) ) { s = 1581; } else if ( (LA2_2900 == CRLF) ) { s = 2091; } else if ( (LA2_2900 == BQUOTE) ) { s = 2092; } else if ( (LA2_2900 == DQUOTE) ) { s = 2093; } else if ( (LA2_2900 == DASH || LA2_2900 == EMARK || LA2_2900 == LPAREN || LA2_2900 == RPAREN || ((LA2_2900 >= SQUOTE) && (LA2_2900 <= USCORE))) ) { s = 3208; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2900 == LSBRAQUET || LA2_2900 == RSBRAQUET) ) { s = 1080; } SEEK(index2_2900); if ( s>=0 ) { return s; } } break; case 248: { ANTLR3_UINT32 LA2_723; ANTLR3_MARKER index2_723; LA2_723 = LA(1); index2_723 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_723 == AT) ) { s = 89; } else if ( (LA2_723 == COMMON_CHAR || LA2_723 == HEX_CHAR) ) { s = 717; } else if ( (LA2_723 == DIGIT) ) { s = 718; } else if ( (LA2_723 == DASH || LA2_723 == DOT || LA2_723 == EMARK || LA2_723 == LPAREN || LA2_723 == RPAREN || ((LA2_723 >= SQUOTE) && (LA2_723 <= USCORE))) ) { s = 719; } else if ( (LA2_723 == PERCENT) ) { s = 720; } else if ( (LA2_723 == AND) ) { s = 193; } else if ( (LA2_723 == EQUAL) ) { s = 721; } else if ( (LA2_723 == PLUS) ) { s = 722; } else if ( (LA2_723 == DOLLARD) ) { s = 723; } else if ( (LA2_723 == COMMA) ) { s = 197; } else if ( (LA2_723 == QMARK) ) { s = 724; } else if ( (LA2_723 == SP) ) { s = 35; } else if ( (LA2_723 == SEMI) ) { s = 105; } else if ( (LA2_723 == COLON || LA2_723 == SLASH) ) { s = 725; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_723 == LSBRAQUET || LA2_723 == RSBRAQUET) ) { s = 414; } SEEK(index2_723); if ( s>=0 ) { return s; } } break; case 249: { ANTLR3_UINT32 LA2_1549; ANTLR3_MARKER index2_1549; LA2_1549 = LA(1); index2_1549 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1549 == AT) ) { s = 89; } else if ( (LA2_1549 == COMMON_CHAR || LA2_1549 == HEX_CHAR) ) { s = 1544; } else if ( (LA2_1549 == DIGIT) ) { s = 1545; } else if ( (LA2_1549 == DASH || LA2_1549 == DOT || LA2_1549 == EMARK || LA2_1549 == LPAREN || LA2_1549 == RPAREN || ((LA2_1549 >= SQUOTE) && (LA2_1549 <= USCORE))) ) { s = 1546; } else if ( (LA2_1549 == PERCENT) ) { s = 1547; } else if ( (LA2_1549 == AND) ) { s = 193; } else if ( (LA2_1549 == EQUAL) ) { s = 1986; } else if ( (LA2_1549 == PLUS) ) { s = 1548; } else if ( (LA2_1549 == DOLLARD) ) { s = 1549; } else if ( (LA2_1549 == COMMA) ) { s = 197; } else if ( (LA2_1549 == QMARK) ) { s = 1550; } else if ( (LA2_1549 == SP) ) { s = 35; } else if ( (LA2_1549 == SEMI) ) { s = 105; } else if ( (LA2_1549 == COLON || LA2_1549 == SLASH) ) { s = 1551; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1549 == LSBRAQUET || LA2_1549 == RSBRAQUET) ) { s = 1552; } SEEK(index2_1549); if ( s>=0 ) { return s; } } break; case 250: { ANTLR3_UINT32 LA2_722; ANTLR3_MARKER index2_722; LA2_722 = LA(1); index2_722 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_722 == AT) ) { s = 89; } else if ( (LA2_722 == COMMON_CHAR || LA2_722 == HEX_CHAR) ) { s = 717; } else if ( (LA2_722 == DIGIT) ) { s = 718; } else if ( (LA2_722 == DASH || LA2_722 == DOT || LA2_722 == EMARK || LA2_722 == LPAREN || LA2_722 == RPAREN || ((LA2_722 >= SQUOTE) && (LA2_722 <= USCORE))) ) { s = 719; } else if ( (LA2_722 == PERCENT) ) { s = 720; } else if ( (LA2_722 == AND) ) { s = 193; } else if ( (LA2_722 == EQUAL) ) { s = 721; } else if ( (LA2_722 == PLUS) ) { s = 722; } else if ( (LA2_722 == DOLLARD) ) { s = 723; } else if ( (LA2_722 == COMMA) ) { s = 197; } else if ( (LA2_722 == QMARK) ) { s = 724; } else if ( (LA2_722 == SP) ) { s = 35; } else if ( (LA2_722 == SEMI) ) { s = 105; } else if ( (LA2_722 == COLON || LA2_722 == SLASH) ) { s = 725; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_722 == LSBRAQUET || LA2_722 == RSBRAQUET) ) { s = 414; } SEEK(index2_722); if ( s>=0 ) { return s; } } break; case 251: { ANTLR3_UINT32 LA2_1548; ANTLR3_MARKER index2_1548; LA2_1548 = LA(1); index2_1548 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1548 == AT) ) { s = 89; } else if ( (LA2_1548 == COMMON_CHAR || LA2_1548 == HEX_CHAR) ) { s = 1544; } else if ( (LA2_1548 == DIGIT) ) { s = 1545; } else if ( (LA2_1548 == DASH || LA2_1548 == DOT || LA2_1548 == EMARK || LA2_1548 == LPAREN || LA2_1548 == RPAREN || ((LA2_1548 >= SQUOTE) && (LA2_1548 <= USCORE))) ) { s = 1546; } else if ( (LA2_1548 == PERCENT) ) { s = 1547; } else if ( (LA2_1548 == AND) ) { s = 193; } else if ( (LA2_1548 == EQUAL) ) { s = 1986; } else if ( (LA2_1548 == PLUS) ) { s = 1548; } else if ( (LA2_1548 == DOLLARD) ) { s = 1549; } else if ( (LA2_1548 == COMMA) ) { s = 197; } else if ( (LA2_1548 == QMARK) ) { s = 1550; } else if ( (LA2_1548 == SP) ) { s = 35; } else if ( (LA2_1548 == SEMI) ) { s = 105; } else if ( (LA2_1548 == COLON || LA2_1548 == SLASH) ) { s = 1551; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1548 == LSBRAQUET || LA2_1548 == RSBRAQUET) ) { s = 1552; } SEEK(index2_1548); if ( s>=0 ) { return s; } } break; case 252: { ANTLR3_UINT32 LA2_3464; ANTLR3_MARKER index2_3464; LA2_3464 = LA(1); index2_3464 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3464 == SEMI) ) { s = 3463; } else if ( (LA2_3464 == QMARK) ) { s = 854; } else if ( (LA2_3464 == SP) ) { s = 204; } else if ( (LA2_3464 == SLASH) ) { s = 3171; } else if ( (LA2_3464 == COMMON_CHAR || LA2_3464 == HEX_CHAR) ) { s = 3454; } else if ( (LA2_3464 == DIGIT) ) { s = 3455; } else if ( (LA2_3464 == DOT) ) { s = 3456; } else if ( (LA2_3464 == PERCENT) ) { s = 3457; } else if ( (LA2_3464 == COLON) ) { s = 3458; } else if ( (LA2_3464 == AT) ) { s = 2195; } else if ( (LA2_3464 == AND) ) { s = 3459; } else if ( (LA2_3464 == EQUAL) ) { s = 3460; } else if ( (LA2_3464 == PLUS) ) { s = 3461; } else if ( (LA2_3464 == DOLLARD) ) { s = 3462; } else if ( (LA2_3464 == COMMA) ) { s = 2200; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3464 == CRLF) ) { s = 205; } else if ( (LA2_3464 == DASH || LA2_3464 == EMARK || LA2_3464 == LPAREN || LA2_3464 == RPAREN || ((LA2_3464 >= SQUOTE) && (LA2_3464 <= USCORE))) ) { s = 3464; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3464 == LSBRAQUET || LA2_3464 == RSBRAQUET) ) { s = 405; } SEEK(index2_3464); if ( s>=0 ) { return s; } } break; case 253: { ANTLR3_UINT32 LA2_3264; ANTLR3_MARKER index2_3264; LA2_3264 = LA(1); index2_3264 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3264 == SLASH) ) { s = 3226; } else if ( (LA2_3264 == QMARK) ) { s = 242; } else if ( (LA2_3264 == SP) ) { s = 35; } else if ( (LA2_3264 == SEMI) ) { s = 1660; } else if ( (LA2_3264 == COMMON_CHAR || LA2_3264 == HEX_CHAR) ) { s = 3534; } else if ( (LA2_3264 == DIGIT) ) { s = 3535; } else if ( (LA2_3264 == DOT) ) { s = 3536; } else if ( (LA2_3264 == PERCENT) ) { s = 3537; } else if ( (LA2_3264 == COLON) ) { s = 3517; } else if ( (LA2_3264 == AT) ) { s = 2111; } else if ( (LA2_3264 == AND) ) { s = 3518; } else if ( (LA2_3264 == EQUAL) ) { s = 2113; } else if ( (LA2_3264 == PLUS) ) { s = 3538; } else if ( (LA2_3264 == DOLLARD) ) { s = 3519; } else if ( (LA2_3264 == COMMA) ) { s = 2116; } else if ( (LA2_3264 == DASH || LA2_3264 == EMARK || LA2_3264 == LPAREN || LA2_3264 == RPAREN || ((LA2_3264 >= SQUOTE) && (LA2_3264 <= USCORE))) ) { s = 3539; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3264 == LSBRAQUET || LA2_3264 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3264); if ( s>=0 ) { return s; } } break; case 254: { ANTLR3_UINT32 LA2_3011; ANTLR3_MARKER index2_3011; LA2_3011 = LA(1); index2_3011 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3011 == DIGIT) ) { s = 3012; } else if ( (LA2_3011 == COLON) ) { s = 1236; } else if ( (LA2_3011 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3011 == CRLF) ) { s = 205; } else if ( (LA2_3011 == SEMI) ) { s = 1237; } else if ( (LA2_3011 == QMARK) ) { s = 854; } else if ( (LA2_3011 == COMMON_CHAR || LA2_3011 == HEX_CHAR) ) { s = 460; } else if ( (LA2_3011 == SLASH) ) { s = 241; } else if ( (LA2_3011 == DASH || LA2_3011 == DOT || LA2_3011 == EMARK || LA2_3011 == LPAREN || LA2_3011 == RPAREN || ((LA2_3011 >= SQUOTE) && (LA2_3011 <= USCORE))) ) { s = 462; } else if ( (LA2_3011 == PERCENT) ) { s = 463; } else if ( (LA2_3011 == AT) ) { s = 464; } else if ( (LA2_3011 == AND) ) { s = 465; } else if ( (LA2_3011 == EQUAL) ) { s = 466; } else if ( (LA2_3011 == PLUS) ) { s = 467; } else if ( (LA2_3011 == DOLLARD) ) { s = 468; } else if ( (LA2_3011 == COMMA) ) { s = 469; } SEEK(index2_3011); if ( s>=0 ) { return s; } } break; case 255: { ANTLR3_UINT32 LA2_1791; ANTLR3_MARKER index2_1791; LA2_1791 = LA(1); index2_1791 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1791 == QMARK) ) { s = 1308; } else if ( (LA2_1791 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1791 == CRLF) ) { s = 205; } else if ( (LA2_1791 == SEMI) ) { s = 1307; } else if ( (LA2_1791 == DOT) ) { s = 1787; } else if ( (LA2_1791 == COMMON_CHAR || LA2_1791 == HEX_CHAR) ) { s = 1788; } else if ( (LA2_1791 == DIGIT) ) { s = 1789; } else if ( (LA2_1791 == AND || LA2_1791 == COLON || LA2_1791 == DOLLARD || LA2_1791 == PLUS || LA2_1791 == SLASH) ) { s = 1790; } else if ( (LA2_1791 == DASH || LA2_1791 == EMARK || LA2_1791 == LPAREN || LA2_1791 == RPAREN || ((LA2_1791 >= SQUOTE) && (LA2_1791 <= USCORE))) ) { s = 1791; } else if ( (LA2_1791 == PERCENT) ) { s = 1792; } else if ( (LA2_1791 == EQUAL) ) { s = 2284; } else if ( (LA2_1791 == COMMA) ) { s = 506; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1791 == LSBRAQUET || LA2_1791 == RSBRAQUET) ) { s = 405; } else if ( (LA2_1791 == AT) ) { s = 508; } SEEK(index2_1791); if ( s>=0 ) { return s; } } break; case 256: { ANTLR3_UINT32 LA2_708; ANTLR3_MARKER index2_708; LA2_708 = LA(1); index2_708 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_708 == QMARK) ) { s = 694; } else if ( (LA2_708 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_708 == CRLF) ) { s = 205; } else if ( (LA2_708 == SEMI) ) { s = 693; } else if ( (LA2_708 == DOT) ) { s = 1057; } else if ( (LA2_708 == COMMON_CHAR || LA2_708 == HEX_CHAR) ) { s = 1058; } else if ( (LA2_708 == DIGIT) ) { s = 1059; } else if ( (LA2_708 == AND || LA2_708 == COLON || LA2_708 == DOLLARD || LA2_708 == PLUS || LA2_708 == SLASH) ) { s = 708; } else if ( (LA2_708 == DASH || LA2_708 == EMARK || LA2_708 == LPAREN || LA2_708 == RPAREN || ((LA2_708 >= SQUOTE) && (LA2_708 <= USCORE))) ) { s = 1060; } else if ( (LA2_708 == PERCENT) ) { s = 1061; } else if ( (LA2_708 == EQUAL) ) { s = 1081; } else if ( (LA2_708 == COMMA) ) { s = 106; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_708 == LSBRAQUET || LA2_708 == RSBRAQUET) ) { s = 405; } else if ( (LA2_708 == AT) ) { s = 108; } SEEK(index2_708); if ( s>=0 ) { return s; } } break; case 257: { ANTLR3_UINT32 LA2_1240; ANTLR3_MARKER index2_1240; LA2_1240 = LA(1); index2_1240 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1240 == DIGIT) ) { s = 1241; } else if ( (LA2_1240 == COMMON_CHAR || LA2_1240 == HEX_CHAR) ) { s = 460; } else if ( (LA2_1240 == COLON) ) { s = 1236; } else if ( (LA2_1240 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1240 == CRLF) ) { s = 205; } else if ( (LA2_1240 == SEMI) ) { s = 1237; } else if ( (LA2_1240 == QMARK) ) { s = 854; } else if ( (LA2_1240 == SLASH) ) { s = 241; } else if ( (LA2_1240 == DASH || LA2_1240 == DOT || LA2_1240 == EMARK || LA2_1240 == LPAREN || LA2_1240 == RPAREN || ((LA2_1240 >= SQUOTE) && (LA2_1240 <= USCORE))) ) { s = 462; } else if ( (LA2_1240 == PERCENT) ) { s = 463; } else if ( (LA2_1240 == AT) ) { s = 464; } else if ( (LA2_1240 == AND) ) { s = 465; } else if ( (LA2_1240 == EQUAL) ) { s = 466; } else if ( (LA2_1240 == PLUS) ) { s = 467; } else if ( (LA2_1240 == DOLLARD) ) { s = 468; } else if ( (LA2_1240 == COMMA) ) { s = 469; } SEEK(index2_1240); if ( s>=0 ) { return s; } } break; case 258: { ANTLR3_UINT32 LA2_2210; ANTLR3_MARKER index2_2210; LA2_2210 = LA(1); index2_2210 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2210 == DIGIT) ) { s = 2211; } else if ( (LA2_2210 == COLON) ) { s = 1236; } else if ( (LA2_2210 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2210 == CRLF) ) { s = 205; } else if ( (LA2_2210 == SEMI) ) { s = 1237; } else if ( (LA2_2210 == QMARK) ) { s = 854; } else if ( (LA2_2210 == COMMON_CHAR || LA2_2210 == HEX_CHAR) ) { s = 460; } else if ( (LA2_2210 == SLASH) ) { s = 241; } else if ( (LA2_2210 == DASH || LA2_2210 == DOT || LA2_2210 == EMARK || LA2_2210 == LPAREN || LA2_2210 == RPAREN || ((LA2_2210 >= SQUOTE) && (LA2_2210 <= USCORE))) ) { s = 462; } else if ( (LA2_2210 == PERCENT) ) { s = 463; } else if ( (LA2_2210 == AT) ) { s = 464; } else if ( (LA2_2210 == AND) ) { s = 465; } else if ( (LA2_2210 == EQUAL) ) { s = 466; } else if ( (LA2_2210 == PLUS) ) { s = 467; } else if ( (LA2_2210 == DOLLARD) ) { s = 468; } else if ( (LA2_2210 == COMMA) ) { s = 469; } SEEK(index2_2210); if ( s>=0 ) { return s; } } break; case 259: { ANTLR3_UINT32 LA2_3871; ANTLR3_MARKER index2_3871; LA2_3871 = LA(1); index2_3871 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3871 == SLASH) ) { s = 3323; } else if ( (LA2_3871 == QMARK) ) { s = 1751; } else if ( (LA2_3871 == SP) ) { s = 204; } else if ( (LA2_3871 == SEMI) ) { s = 3030; } else if ( (LA2_3871 == COMMON_CHAR || LA2_3871 == HEX_CHAR) ) { s = 3734; } else if ( (LA2_3871 == DIGIT) ) { s = 3735; } else if ( (LA2_3871 == DOT) ) { s = 3736; } else if ( (LA2_3871 == PERCENT) ) { s = 3737; } else if ( (LA2_3871 == COLON) ) { s = 3738; } else if ( (LA2_3871 == AT) ) { s = 2673; } else if ( (LA2_3871 == AND) ) { s = 3739; } else if ( (LA2_3871 == EQUAL) ) { s = 2675; } else if ( (LA2_3871 == PLUS) ) { s = 3740; } else if ( (LA2_3871 == DOLLARD) ) { s = 3741; } else if ( (LA2_3871 == COMMA) ) { s = 2678; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3871 == CRLF) ) { s = 205; } else if ( (LA2_3871 == DASH || LA2_3871 == EMARK || LA2_3871 == LPAREN || LA2_3871 == RPAREN || ((LA2_3871 >= SQUOTE) && (LA2_3871 <= USCORE))) ) { s = 3742; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3871 == LSBRAQUET || LA2_3871 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3871); if ( s>=0 ) { return s; } } break; case 260: { ANTLR3_UINT32 LA2_3581; ANTLR3_MARKER index2_3581; LA2_3581 = LA(1); index2_3581 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3581 == QMARK) ) { s = 1751; } else if ( (LA2_3581 == SP) ) { s = 204; } else if ( (LA2_3581 == SLASH) ) { s = 3031; } else if ( (LA2_3581 == SEMI) ) { s = 3351; } else if ( (LA2_3581 == COMMON_CHAR || LA2_3581 == HEX_CHAR) ) { s = 3581; } else if ( (LA2_3581 == DIGIT) ) { s = 3582; } else if ( (LA2_3581 == DOT) ) { s = 3583; } else if ( (LA2_3581 == PERCENT) ) { s = 3584; } else if ( (LA2_3581 == COLON) ) { s = 3585; } else if ( (LA2_3581 == AT) ) { s = 3043; } else if ( (LA2_3581 == AND) ) { s = 3586; } else if ( (LA2_3581 == EQUAL) ) { s = 3745; } else if ( (LA2_3581 == PLUS) ) { s = 3587; } else if ( (LA2_3581 == DOLLARD) ) { s = 3588; } else if ( (LA2_3581 == COMMA) ) { s = 3048; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3581 == CRLF) ) { s = 205; } else if ( (LA2_3581 == DASH || LA2_3581 == EMARK || LA2_3581 == LPAREN || LA2_3581 == RPAREN || ((LA2_3581 >= SQUOTE) && (LA2_3581 <= USCORE))) ) { s = 3589; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3581 == LSBRAQUET || LA2_3581 == RSBRAQUET) ) { s = 405; } SEEK(index2_3581); if ( s>=0 ) { return s; } } break; case 261: { ANTLR3_UINT32 LA2_1264; ANTLR3_MARKER index2_1264; LA2_1264 = LA(1); index2_1264 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1264 == QMARK) ) { s = 854; } else if ( (LA2_1264 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1264 == CRLF) ) { s = 205; } else if ( (LA2_1264 == SEMI) ) { s = 853; } else if ( (LA2_1264 == DOT) ) { s = 1262; } else if ( (LA2_1264 == COMMON_CHAR || LA2_1264 == HEX_CHAR) ) { s = 1263; } else if ( (LA2_1264 == DIGIT) ) { s = 1264; } else if ( (LA2_1264 == SLASH) ) { s = 1271; } else if ( (LA2_1264 == DASH || LA2_1264 == EMARK || LA2_1264 == LPAREN || LA2_1264 == RPAREN || ((LA2_1264 >= SQUOTE) && (LA2_1264 <= USCORE))) ) { s = 1266; } else if ( (LA2_1264 == PERCENT) ) { s = 1267; } else if ( (LA2_1264 == EQUAL) ) { s = 1756; } else if ( (LA2_1264 == COLON) ) { s = 1265; } else if ( (LA2_1264 == AND) ) { s = 1268; } else if ( (LA2_1264 == AT) ) { s = 497; } else if ( (LA2_1264 == PLUS) ) { s = 1269; } else if ( (LA2_1264 == DOLLARD) ) { s = 1270; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1264 == LSBRAQUET || LA2_1264 == RSBRAQUET) ) { s = 405; } else if ( (LA2_1264 == COMMA) ) { s = 502; } SEEK(index2_1264); if ( s>=0 ) { return s; } } break; case 262: { ANTLR3_UINT32 LA2_2244; ANTLR3_MARKER index2_2244; LA2_2244 = LA(1); index2_2244 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2244 == QMARK) ) { s = 854; } else if ( (LA2_2244 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2244 == CRLF) ) { s = 205; } else if ( (LA2_2244 == SEMI) ) { s = 853; } else if ( (LA2_2244 == DOT) ) { s = 2242; } else if ( (LA2_2244 == COMMON_CHAR || LA2_2244 == HEX_CHAR) ) { s = 2243; } else if ( (LA2_2244 == DIGIT) ) { s = 2244; } else if ( (LA2_2244 == SLASH) ) { s = 2245; } else if ( (LA2_2244 == DASH || LA2_2244 == EMARK || LA2_2244 == LPAREN || LA2_2244 == RPAREN || ((LA2_2244 >= SQUOTE) && (LA2_2244 <= USCORE))) ) { s = 2246; } else if ( (LA2_2244 == PERCENT) ) { s = 2247; } else if ( (LA2_2244 == COLON) ) { s = 2248; } else if ( (LA2_2244 == AND) ) { s = 2249; } else if ( (LA2_2244 == AT) ) { s = 497; } else if ( (LA2_2244 == PLUS) ) { s = 2250; } else if ( (LA2_2244 == EQUAL) ) { s = 499; } else if ( (LA2_2244 == DOLLARD) ) { s = 2251; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2244 == LSBRAQUET || LA2_2244 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_2244 == COMMA) ) { s = 502; } SEEK(index2_2244); if ( s>=0 ) { return s; } } break; case 263: { ANTLR3_UINT32 LA2_2553; ANTLR3_MARKER index2_2553; LA2_2553 = LA(1); index2_2553 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2553 == COMMON_CHAR || LA2_2553 == HEX_CHAR) ) { s = 2918; } else if ( (LA2_2553 == DIGIT) ) { s = 2919; } else if ( (LA2_2553 == DOT) ) { s = 2920; } else if ( (LA2_2553 == PERCENT) ) { s = 2921; } else if ( (LA2_2553 == COLON) ) { s = 2922; } else if ( (LA2_2553 == AT) ) { s = 1667; } else if ( (LA2_2553 == AND) ) { s = 2923; } else if ( (LA2_2553 == EQUAL) ) { s = 2924; } else if ( (LA2_2553 == PLUS) ) { s = 2925; } else if ( (LA2_2553 == DOLLARD) ) { s = 2926; } else if ( (LA2_2553 == COMMA) ) { s = 1672; } else if ( (LA2_2553 == SEMI) ) { s = 2927; } else if ( (LA2_2553 == SLASH) ) { s = 2928; } else if ( (LA2_2553 == QMARK) ) { s = 854; } else if ( (LA2_2553 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2553 == CRLF) ) { s = 205; } else if ( (LA2_2553 == DASH || LA2_2553 == EMARK || LA2_2553 == LPAREN || LA2_2553 == RPAREN || ((LA2_2553 >= SQUOTE) && (LA2_2553 <= USCORE))) ) { s = 2929; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2553 == LSBRAQUET || LA2_2553 == RSBRAQUET) ) { s = 405; } SEEK(index2_2553); if ( s>=0 ) { return s; } } break; case 264: { ANTLR3_UINT32 LA2_1235; ANTLR3_MARKER index2_1235; LA2_1235 = LA(1); index2_1235 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1235 == COMMON_CHAR || LA2_1235 == HEX_CHAR) ) { s = 460; } else if ( (LA2_1235 == DIGIT) ) { s = 1234; } else if ( (LA2_1235 == COLON) ) { s = 1236; } else if ( (LA2_1235 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1235 == CRLF) ) { s = 205; } else if ( (LA2_1235 == SEMI) ) { s = 1237; } else if ( (LA2_1235 == QMARK) ) { s = 854; } else if ( (LA2_1235 == SLASH) ) { s = 241; } else if ( (LA2_1235 == DASH || LA2_1235 == DOT || LA2_1235 == EMARK || LA2_1235 == LPAREN || LA2_1235 == RPAREN || ((LA2_1235 >= SQUOTE) && (LA2_1235 <= USCORE))) ) { s = 462; } else if ( (LA2_1235 == PERCENT) ) { s = 463; } else if ( (LA2_1235 == AT) ) { s = 464; } else if ( (LA2_1235 == AND) ) { s = 465; } else if ( (LA2_1235 == EQUAL) ) { s = 466; } else if ( (LA2_1235 == PLUS) ) { s = 467; } else if ( (LA2_1235 == DOLLARD) ) { s = 468; } else if ( (LA2_1235 == COMMA) ) { s = 469; } SEEK(index2_1235); if ( s>=0 ) { return s; } } break; case 265: { ANTLR3_UINT32 LA2_1727; ANTLR3_MARKER index2_1727; LA2_1727 = LA(1); index2_1727 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1727 == QMARK) ) { s = 854; } else if ( (LA2_1727 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1727 == CRLF) ) { s = 205; } else if ( (LA2_1727 == SEMI) ) { s = 1237; } else if ( (LA2_1727 == DOT) ) { s = 1724; } else if ( (LA2_1727 == COMMON_CHAR || LA2_1727 == HEX_CHAR) ) { s = 1725; } else if ( (LA2_1727 == DIGIT) ) { s = 1726; } else if ( (LA2_1727 == SLASH) ) { s = 1271; } else if ( (LA2_1727 == DASH || LA2_1727 == EMARK || LA2_1727 == LPAREN || LA2_1727 == RPAREN || ((LA2_1727 >= SQUOTE) && (LA2_1727 <= USCORE))) ) { s = 1728; } else if ( (LA2_1727 == PERCENT) ) { s = 1729; } else if ( (LA2_1727 == EQUAL) ) { s = 2207; } else if ( (LA2_1727 == COLON) ) { s = 1727; } else if ( (LA2_1727 == AND) ) { s = 1730; } else if ( (LA2_1727 == AT) ) { s = 810; } else if ( (LA2_1727 == PLUS) ) { s = 1731; } else if ( (LA2_1727 == DOLLARD) ) { s = 1732; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1727 == LSBRAQUET || LA2_1727 == RSBRAQUET) ) { s = 405; } else if ( (LA2_1727 == COMMA) ) { s = 815; } SEEK(index2_1727); if ( s>=0 ) { return s; } } break; case 266: { ANTLR3_UINT32 LA2_2271; ANTLR3_MARKER index2_2271; LA2_2271 = LA(1); index2_2271 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2271 == DIGIT) ) { s = 2704; } else if ( (LA2_2271 == DOT) ) { s = 2705; } else if ( (LA2_2271 == COLON) ) { s = 852; } else if ( (LA2_2271 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2271 == CRLF) ) { s = 205; } else if ( (LA2_2271 == SEMI) ) { s = 853; } else if ( (LA2_2271 == QMARK) ) { s = 854; } else if ( (LA2_2271 == DASH) ) { s = 518; } else if ( (LA2_2271 == COMMON_CHAR || LA2_2271 == HEX_CHAR) ) { s = 516; } else if ( (LA2_2271 == SLASH) ) { s = 241; } else if ( (LA2_2271 == EMARK || LA2_2271 == LPAREN || LA2_2271 == RPAREN || ((LA2_2271 >= SQUOTE) && (LA2_2271 <= USCORE))) ) { s = 246; } else if ( (LA2_2271 == PERCENT) ) { s = 247; } else if ( (LA2_2271 == AT) ) { s = 248; } else if ( (LA2_2271 == AND) ) { s = 249; } else if ( (LA2_2271 == EQUAL) ) { s = 250; } else if ( (LA2_2271 == PLUS) ) { s = 251; } else if ( (LA2_2271 == DOLLARD) ) { s = 252; } else if ( (LA2_2271 == COMMA) ) { s = 253; } SEEK(index2_2271); if ( s>=0 ) { return s; } } break; case 267: { ANTLR3_UINT32 LA2_1731; ANTLR3_MARKER index2_1731; LA2_1731 = LA(1); index2_1731 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1731 == QMARK) ) { s = 854; } else if ( (LA2_1731 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1731 == CRLF) ) { s = 205; } else if ( (LA2_1731 == SEMI) ) { s = 1237; } else if ( (LA2_1731 == DOT) ) { s = 1724; } else if ( (LA2_1731 == COMMON_CHAR || LA2_1731 == HEX_CHAR) ) { s = 1725; } else if ( (LA2_1731 == DIGIT) ) { s = 1726; } else if ( (LA2_1731 == SLASH) ) { s = 1271; } else if ( (LA2_1731 == DASH || LA2_1731 == EMARK || LA2_1731 == LPAREN || LA2_1731 == RPAREN || ((LA2_1731 >= SQUOTE) && (LA2_1731 <= USCORE))) ) { s = 1728; } else if ( (LA2_1731 == PERCENT) ) { s = 1729; } else if ( (LA2_1731 == EQUAL) ) { s = 2207; } else if ( (LA2_1731 == COLON) ) { s = 1727; } else if ( (LA2_1731 == AND) ) { s = 1730; } else if ( (LA2_1731 == AT) ) { s = 810; } else if ( (LA2_1731 == PLUS) ) { s = 1731; } else if ( (LA2_1731 == DOLLARD) ) { s = 1732; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1731 == LSBRAQUET || LA2_1731 == RSBRAQUET) ) { s = 405; } else if ( (LA2_1731 == COMMA) ) { s = 815; } SEEK(index2_1731); if ( s>=0 ) { return s; } } break; case 268: { ANTLR3_UINT32 LA2_1732; ANTLR3_MARKER index2_1732; LA2_1732 = LA(1); index2_1732 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1732 == QMARK) ) { s = 854; } else if ( (LA2_1732 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1732 == CRLF) ) { s = 205; } else if ( (LA2_1732 == SEMI) ) { s = 1237; } else if ( (LA2_1732 == DOT) ) { s = 1724; } else if ( (LA2_1732 == COMMON_CHAR || LA2_1732 == HEX_CHAR) ) { s = 1725; } else if ( (LA2_1732 == DIGIT) ) { s = 1726; } else if ( (LA2_1732 == SLASH) ) { s = 1271; } else if ( (LA2_1732 == DASH || LA2_1732 == EMARK || LA2_1732 == LPAREN || LA2_1732 == RPAREN || ((LA2_1732 >= SQUOTE) && (LA2_1732 <= USCORE))) ) { s = 1728; } else if ( (LA2_1732 == PERCENT) ) { s = 1729; } else if ( (LA2_1732 == EQUAL) ) { s = 2207; } else if ( (LA2_1732 == COLON) ) { s = 1727; } else if ( (LA2_1732 == AND) ) { s = 1730; } else if ( (LA2_1732 == AT) ) { s = 810; } else if ( (LA2_1732 == PLUS) ) { s = 1731; } else if ( (LA2_1732 == DOLLARD) ) { s = 1732; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1732 == LSBRAQUET || LA2_1732 == RSBRAQUET) ) { s = 405; } else if ( (LA2_1732 == COMMA) ) { s = 815; } SEEK(index2_1732); if ( s>=0 ) { return s; } } break; case 269: { ANTLR3_UINT32 LA2_1759; ANTLR3_MARKER index2_1759; LA2_1759 = LA(1); index2_1759 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1759 == QMARK) ) { s = 854; } else if ( (LA2_1759 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1759 == CRLF) ) { s = 205; } else if ( (LA2_1759 == SEMI) ) { s = 1237; } else if ( (LA2_1759 == DOT) ) { s = 1758; } else if ( (LA2_1759 == COMMON_CHAR || LA2_1759 == HEX_CHAR) ) { s = 1759; } else if ( (LA2_1759 == DIGIT) ) { s = 1760; } else if ( (LA2_1759 == SLASH) ) { s = 1271; } else if ( (LA2_1759 == DASH || LA2_1759 == EMARK || LA2_1759 == LPAREN || LA2_1759 == RPAREN || ((LA2_1759 >= SQUOTE) && (LA2_1759 <= USCORE))) ) { s = 1762; } else if ( (LA2_1759 == PERCENT) ) { s = 1763; } else if ( (LA2_1759 == EQUAL) ) { s = 1764; } else if ( (LA2_1759 == COLON) ) { s = 1761; } else if ( (LA2_1759 == AND) ) { s = 1765; } else if ( (LA2_1759 == AT) ) { s = 464; } else if ( (LA2_1759 == PLUS) ) { s = 1766; } else if ( (LA2_1759 == DOLLARD) ) { s = 1767; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1759 == LSBRAQUET || LA2_1759 == RSBRAQUET) ) { s = 405; } else if ( (LA2_1759 == COMMA) ) { s = 469; } SEEK(index2_1759); if ( s>=0 ) { return s; } } break; case 270: { ANTLR3_UINT32 LA2_1730; ANTLR3_MARKER index2_1730; LA2_1730 = LA(1); index2_1730 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1730 == QMARK) ) { s = 854; } else if ( (LA2_1730 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1730 == CRLF) ) { s = 205; } else if ( (LA2_1730 == SEMI) ) { s = 1237; } else if ( (LA2_1730 == DOT) ) { s = 1724; } else if ( (LA2_1730 == COMMON_CHAR || LA2_1730 == HEX_CHAR) ) { s = 1725; } else if ( (LA2_1730 == DIGIT) ) { s = 1726; } else if ( (LA2_1730 == SLASH) ) { s = 1271; } else if ( (LA2_1730 == DASH || LA2_1730 == EMARK || LA2_1730 == LPAREN || LA2_1730 == RPAREN || ((LA2_1730 >= SQUOTE) && (LA2_1730 <= USCORE))) ) { s = 1728; } else if ( (LA2_1730 == PERCENT) ) { s = 1729; } else if ( (LA2_1730 == EQUAL) ) { s = 2207; } else if ( (LA2_1730 == COLON) ) { s = 1727; } else if ( (LA2_1730 == AND) ) { s = 1730; } else if ( (LA2_1730 == AT) ) { s = 810; } else if ( (LA2_1730 == PLUS) ) { s = 1731; } else if ( (LA2_1730 == DOLLARD) ) { s = 1732; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1730 == LSBRAQUET || LA2_1730 == RSBRAQUET) ) { s = 405; } else if ( (LA2_1730 == COMMA) ) { s = 815; } SEEK(index2_1730); if ( s>=0 ) { return s; } } break; case 271: { ANTLR3_UINT32 LA2_519; ANTLR3_MARKER index2_519; LA2_519 = LA(1); index2_519 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_519 == DIGIT) ) { s = 856; } else if ( (LA2_519 == DOT) ) { s = 857; } else if ( (LA2_519 == COMMON_CHAR || LA2_519 == HEX_CHAR) ) { s = 516; } else if ( (LA2_519 == DASH) ) { s = 518; } else if ( (LA2_519 == COLON) ) { s = 852; } else if ( (LA2_519 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_519 == CRLF) ) { s = 205; } else if ( (LA2_519 == SEMI) ) { s = 853; } else if ( (LA2_519 == QMARK) ) { s = 854; } else if ( (LA2_519 == SLASH) ) { s = 241; } else if ( (LA2_519 == EMARK || LA2_519 == LPAREN || LA2_519 == RPAREN || ((LA2_519 >= SQUOTE) && (LA2_519 <= USCORE))) ) { s = 246; } else if ( (LA2_519 == PERCENT) ) { s = 247; } else if ( (LA2_519 == AT) ) { s = 248; } else if ( (LA2_519 == AND) ) { s = 249; } else if ( (LA2_519 == EQUAL) ) { s = 250; } else if ( (LA2_519 == PLUS) ) { s = 251; } else if ( (LA2_519 == DOLLARD) ) { s = 252; } else if ( (LA2_519 == COMMA) ) { s = 253; } SEEK(index2_519); if ( s>=0 ) { return s; } } break; case 272: { ANTLR3_UINT32 LA2_2865; ANTLR3_MARKER index2_2865; LA2_2865 = LA(1); index2_2865 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2865 == QMARK) ) { s = 854; } else if ( (LA2_2865 == SP) ) { s = 204; } else if ( (LA2_2865 == SLASH) ) { s = 2009; } else if ( (LA2_2865 == SEMI) ) { s = 2477; } else if ( (LA2_2865 == COMMON_CHAR || LA2_2865 == HEX_CHAR) ) { s = 2860; } else if ( (LA2_2865 == DIGIT) ) { s = 2861; } else if ( (LA2_2865 == DOT) ) { s = 2862; } else if ( (LA2_2865 == PERCENT) ) { s = 2863; } else if ( (LA2_2865 == COLON) ) { s = 2534; } else if ( (LA2_2865 == AT) ) { s = 1576; } else if ( (LA2_2865 == AND) ) { s = 2535; } else if ( (LA2_2865 == EQUAL) ) { s = 2903; } else if ( (LA2_2865 == PLUS) ) { s = 2864; } else if ( (LA2_2865 == DOLLARD) ) { s = 2537; } else if ( (LA2_2865 == COMMA) ) { s = 1581; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2865 == CRLF) ) { s = 205; } else if ( (LA2_2865 == DASH || LA2_2865 == EMARK || LA2_2865 == LPAREN || LA2_2865 == RPAREN || ((LA2_2865 >= SQUOTE) && (LA2_2865 <= USCORE))) ) { s = 2865; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2865 == LSBRAQUET || LA2_2865 == RSBRAQUET) ) { s = 405; } SEEK(index2_2865); if ( s>=0 ) { return s; } } break; case 273: { ANTLR3_UINT32 LA2_1280; ANTLR3_MARKER index2_1280; LA2_1280 = LA(1); index2_1280 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1280 == DIGIT) ) { s = 1770; } else if ( (LA2_1280 == DOT) ) { s = 1771; } else if ( (LA2_1280 == COLON) ) { s = 852; } else if ( (LA2_1280 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1280 == CRLF) ) { s = 205; } else if ( (LA2_1280 == SEMI) ) { s = 853; } else if ( (LA2_1280 == QMARK) ) { s = 854; } else if ( (LA2_1280 == DASH) ) { s = 518; } else if ( (LA2_1280 == COMMON_CHAR || LA2_1280 == HEX_CHAR) ) { s = 516; } else if ( (LA2_1280 == SLASH) ) { s = 241; } else if ( (LA2_1280 == EMARK || LA2_1280 == LPAREN || LA2_1280 == RPAREN || ((LA2_1280 >= SQUOTE) && (LA2_1280 <= USCORE))) ) { s = 246; } else if ( (LA2_1280 == PERCENT) ) { s = 247; } else if ( (LA2_1280 == AT) ) { s = 248; } else if ( (LA2_1280 == AND) ) { s = 249; } else if ( (LA2_1280 == EQUAL) ) { s = 250; } else if ( (LA2_1280 == PLUS) ) { s = 251; } else if ( (LA2_1280 == DOLLARD) ) { s = 252; } else if ( (LA2_1280 == COMMA) ) { s = 253; } SEEK(index2_1280); if ( s>=0 ) { return s; } } break; case 274: { ANTLR3_UINT32 LA2_3465; ANTLR3_MARKER index2_3465; LA2_3465 = LA(1); index2_3465 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3465 == COMMON_CHAR || LA2_3465 == HEX_CHAR) ) { s = 3436; } else if ( (LA2_3465 == DIGIT) ) { s = 3437; } else if ( (LA2_3465 == DOT) ) { s = 3438; } else if ( (LA2_3465 == PERCENT) ) { s = 3439; } else if ( (LA2_3465 == COLON) ) { s = 3440; } else if ( (LA2_3465 == AT) ) { s = 1710; } else if ( (LA2_3465 == AND) ) { s = 3441; } else if ( (LA2_3465 == EQUAL) ) { s = 1712; } else if ( (LA2_3465 == PLUS) ) { s = 3442; } else if ( (LA2_3465 == DOLLARD) ) { s = 3443; } else if ( (LA2_3465 == COMMA) ) { s = 1715; } else if ( (LA2_3465 == SEMI) ) { s = 3170; } else if ( (LA2_3465 == SLASH) ) { s = 3435; } else if ( (LA2_3465 == QMARK) ) { s = 854; } else if ( (LA2_3465 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3465 == CRLF) ) { s = 205; } else if ( (LA2_3465 == DASH || LA2_3465 == EMARK || LA2_3465 == LPAREN || LA2_3465 == RPAREN || ((LA2_3465 >= SQUOTE) && (LA2_3465 <= USCORE))) ) { s = 3444; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3465 == LSBRAQUET || LA2_3465 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3465); if ( s>=0 ) { return s; } } break; case 275: { ANTLR3_UINT32 LA2_3056; ANTLR3_MARKER index2_3056; LA2_3056 = LA(1); index2_3056 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3056 == DIGIT) ) { s = 3366; } else if ( (LA2_3056 == COLON) ) { s = 852; } else if ( (LA2_3056 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3056 == CRLF) ) { s = 205; } else if ( (LA2_3056 == SEMI) ) { s = 853; } else if ( (LA2_3056 == QMARK) ) { s = 854; } else if ( (LA2_3056 == DOT) ) { s = 851; } else if ( (LA2_3056 == DASH) ) { s = 518; } else if ( (LA2_3056 == COMMON_CHAR || LA2_3056 == HEX_CHAR) ) { s = 516; } else if ( (LA2_3056 == SLASH) ) { s = 241; } else if ( (LA2_3056 == EMARK || LA2_3056 == LPAREN || LA2_3056 == RPAREN || ((LA2_3056 >= SQUOTE) && (LA2_3056 <= USCORE))) ) { s = 246; } else if ( (LA2_3056 == PERCENT) ) { s = 247; } else if ( (LA2_3056 == AT) ) { s = 248; } else if ( (LA2_3056 == AND) ) { s = 249; } else if ( (LA2_3056 == EQUAL) ) { s = 250; } else if ( (LA2_3056 == PLUS) ) { s = 251; } else if ( (LA2_3056 == DOLLARD) ) { s = 252; } else if ( (LA2_3056 == COMMA) ) { s = 253; } SEEK(index2_3056); if ( s>=0 ) { return s; } } break; case 276: { ANTLR3_UINT32 LA2_2648; ANTLR3_MARKER index2_2648; LA2_2648 = LA(1); index2_2648 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2648 == QMARK) ) { s = 854; } else if ( (LA2_2648 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2648 == CRLF) ) { s = 205; } else if ( (LA2_2648 == SEMI) ) { s = 1237; } else if ( (LA2_2648 == DOT) ) { s = 2648; } else if ( (LA2_2648 == COMMON_CHAR || LA2_2648 == HEX_CHAR) ) { s = 2649; } else if ( (LA2_2648 == DIGIT) ) { s = 2650; } else if ( (LA2_2648 == SLASH) ) { s = 2245; } else if ( (LA2_2648 == DASH || LA2_2648 == EMARK || LA2_2648 == LPAREN || LA2_2648 == RPAREN || ((LA2_2648 >= SQUOTE) && (LA2_2648 <= USCORE))) ) { s = 2651; } else if ( (LA2_2648 == PERCENT) ) { s = 2652; } else if ( (LA2_2648 == COLON) ) { s = 2653; } else if ( (LA2_2648 == AND) ) { s = 2654; } else if ( (LA2_2648 == AT) ) { s = 810; } else if ( (LA2_2648 == PLUS) ) { s = 2655; } else if ( (LA2_2648 == EQUAL) ) { s = 812; } else if ( (LA2_2648 == DOLLARD) ) { s = 2656; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2648 == LSBRAQUET || LA2_2648 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_2648 == COMMA) ) { s = 815; } SEEK(index2_2648); if ( s>=0 ) { return s; } } break; case 277: { ANTLR3_UINT32 LA2_1540; ANTLR3_MARKER index2_1540; LA2_1540 = LA(1); index2_1540 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1540 == DOT) ) { s = 1984; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1540 == QMARK) ) { s = 1090; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1540 == SP) ) { s = 1091; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1540 == CRLF) ) { s = 205; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1540 == SEMI) ) { s = 407; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1540 == AND || LA2_1540 == COLON || LA2_1540 == DOLLARD || LA2_1540 == LSBRAQUET || LA2_1540 == PLUS || LA2_1540 == RSBRAQUET || LA2_1540 == SLASH) ) { s = 405; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1540 == COMMON_CHAR || LA2_1540 == HEX_CHAR) ) { s = 1541; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1540 == DIGIT) ) { s = 714; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1540 == DASH || LA2_1540 == EMARK || LA2_1540 == LPAREN || LA2_1540 == RPAREN || ((LA2_1540 >= SQUOTE) && (LA2_1540 <= USCORE))) ) { s = 715; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1540 == PERCENT) ) { s = 716; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1540 == EQUAL) ) { s = 1093; } SEEK(index2_1540); if ( s>=0 ) { return s; } } break; case 278: { ANTLR3_UINT32 LA2_3627; ANTLR3_MARKER index2_3627; LA2_3627 = LA(1); index2_3627 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3627 == QMARK) ) { s = 854; } else if ( (LA2_3627 == SP) ) { s = 204; } else if ( (LA2_3627 == SLASH) ) { s = 2827; } else if ( (LA2_3627 == SEMI) ) { s = 2826; } else if ( (LA2_3627 == COMMON_CHAR || LA2_3627 == HEX_CHAR) ) { s = 3133; } else if ( (LA2_3627 == DIGIT) ) { s = 3134; } else if ( (LA2_3627 == DOT) ) { s = 3135; } else if ( (LA2_3627 == PERCENT) ) { s = 3136; } else if ( (LA2_3627 == COLON) ) { s = 3137; } else if ( (LA2_3627 == AT) ) { s = 2493; } else if ( (LA2_3627 == AND) ) { s = 3138; } else if ( (LA2_3627 == EQUAL) ) { s = 3416; } else if ( (LA2_3627 == PLUS) ) { s = 3139; } else if ( (LA2_3627 == DOLLARD) ) { s = 3140; } else if ( (LA2_3627 == COMMA) ) { s = 2498; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3627 == CRLF) ) { s = 205; } else if ( (LA2_3627 == DASH || LA2_3627 == EMARK || LA2_3627 == LPAREN || LA2_3627 == RPAREN || ((LA2_3627 >= SQUOTE) && (LA2_3627 <= USCORE))) ) { s = 3141; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3627 == LSBRAQUET || LA2_3627 == RSBRAQUET) ) { s = 405; } SEEK(index2_3627); if ( s>=0 ) { return s; } } break; case 279: { ANTLR3_UINT32 LA2_1113; ANTLR3_MARKER index2_1113; LA2_1113 = LA(1); index2_1113 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1113 == COLON) ) { s = 1106; } else if ( (LA2_1113 == AT) ) { s = 89; } else if ( (LA2_1113 == COMMON_CHAR || LA2_1113 == HEX_CHAR) ) { s = 1107; } else if ( (LA2_1113 == DIGIT) ) { s = 1108; } else if ( (LA2_1113 == DASH || LA2_1113 == DOT || LA2_1113 == EMARK || LA2_1113 == LPAREN || LA2_1113 == RPAREN || ((LA2_1113 >= SQUOTE) && (LA2_1113 <= USCORE))) ) { s = 1109; } else if ( (LA2_1113 == PERCENT) ) { s = 1110; } else if ( (LA2_1113 == AND) ) { s = 1112; } else if ( (LA2_1113 == QMARK) ) { s = 1111; } else if ( (LA2_1113 == SP) ) { s = 35; } else if ( (LA2_1113 == SEMI) ) { s = 94; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1113 == LSBRAQUET || LA2_1113 == RSBRAQUET) ) { s = 1104; } else if ( (LA2_1113 == COMMA) ) { s = 97; } else if ( (LA2_1113 == EQUAL) ) { s = 99; } else if ( (LA2_1113 == DOLLARD || LA2_1113 == PLUS || LA2_1113 == SLASH) ) { s = 1113; } SEEK(index2_1113); if ( s>=0 ) { return s; } } break; case 280: { ANTLR3_UINT32 LA2_391; ANTLR3_MARKER index2_391; LA2_391 = LA(1); index2_391 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_391 == COMMON_CHAR || LA2_391 == HEX_CHAR) ) { s = 390; } else if ( (LA2_391 == DIGIT) ) { s = 391; } else if ( (LA2_391 == DASH) ) { s = 392; } else if ( (LA2_391 == DOT) ) { s = 691; } else if ( (LA2_391 == COLON) ) { s = 692; } else if ( (LA2_391 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_391 == CRLF) ) { s = 205; } else if ( (LA2_391 == SEMI) ) { s = 693; } else if ( (LA2_391 == QMARK) ) { s = 694; } else if ( (LA2_391 == COMMA) ) { s = 106; } else if ( (((LA2_391 >= AND) && (LA2_391 <= AT)) || LA2_391 == DOLLARD || LA2_391 == EQUAL || LA2_391 == PLUS || LA2_391 == SLASH) ) { s = 108; } else if ( (LA2_391 == EMARK || LA2_391 == LPAREN || LA2_391 == RPAREN || ((LA2_391 >= SQUOTE) && (LA2_391 <= USCORE))) ) { s = 111; } else if ( (LA2_391 == PERCENT) ) { s = 112; } SEEK(index2_391); if ( s>=0 ) { return s; } } break; case 281: { ANTLR3_UINT32 LA2_3530; ANTLR3_MARKER index2_3530; LA2_3530 = LA(1); index2_3530 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3530 == COMMON_CHAR || LA2_3530 == HEX_CHAR) ) { s = 3691; } else if ( (LA2_3530 == DIGIT) ) { s = 3692; } else if ( (LA2_3530 == DOT) ) { s = 3693; } else if ( (LA2_3530 == PERCENT) ) { s = 3694; } else if ( (LA2_3530 == COLON) ) { s = 3695; } else if ( (LA2_3530 == AT) ) { s = 3271; } else if ( (LA2_3530 == AND) ) { s = 3696; } else if ( (LA2_3530 == EQUAL) ) { s = 3273; } else if ( (LA2_3530 == PLUS) ) { s = 3697; } else if ( (LA2_3530 == DOLLARD) ) { s = 3698; } else if ( (LA2_3530 == COMMA) ) { s = 3276; } else if ( (LA2_3530 == SLASH) ) { s = 2928; } else if ( (LA2_3530 == QMARK) ) { s = 854; } else if ( (LA2_3530 == SP) ) { s = 402; } else if ( (LA2_3530 == SEMI) ) { s = 3530; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3530 == CRLF) ) { s = 403; } else if ( (LA2_3530 == DASH || LA2_3530 == EMARK || LA2_3530 == LPAREN || LA2_3530 == RPAREN || ((LA2_3530 >= SQUOTE) && (LA2_3530 <= USCORE))) ) { s = 3699; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3530 == LSBRAQUET || LA2_3530 == RSBRAQUET) ) { s = 405; } SEEK(index2_3530); if ( s>=0 ) { return s; } } break; case 282: { ANTLR3_UINT32 LA2_3655; ANTLR3_MARKER index2_3655; LA2_3655 = LA(1); index2_3655 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3655 == SLASH) ) { s = 3465; } else if ( (LA2_3655 == QMARK) ) { s = 854; } else if ( (LA2_3655 == SP) ) { s = 1585; } else if ( (LA2_3655 == CRLF) ) { s = 1588; } else if ( (LA2_3655 == SEMI) ) { s = 2028; } else if ( (LA2_3655 == COMMON_CHAR || LA2_3655 == HEX_CHAR) ) { s = 3173; } else if ( (LA2_3655 == DIGIT) ) { s = 3174; } else if ( (LA2_3655 == DOT) ) { s = 3175; } else if ( (LA2_3655 == PERCENT) ) { s = 3176; } else if ( (LA2_3655 == PLUS) ) { s = 3177; } else if ( (LA2_3655 == BQUOTE) ) { s = 2092; } else if ( (LA2_3655 == DASH || LA2_3655 == EMARK || LA2_3655 == LPAREN || LA2_3655 == RPAREN || ((LA2_3655 >= SQUOTE) && (LA2_3655 <= USCORE))) ) { s = 3178; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3655 == AND || LA2_3655 == COLON || LA2_3655 == DOLLARD || LA2_3655 == LSBRAQUET || LA2_3655 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3655); if ( s>=0 ) { return s; } } break; case 283: { ANTLR3_UINT32 LA2_1266; ANTLR3_MARKER index2_1266; LA2_1266 = LA(1); index2_1266 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1266 == QMARK) ) { s = 854; } else if ( (LA2_1266 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1266 == CRLF) ) { s = 205; } else if ( (LA2_1266 == SEMI) ) { s = 853; } else if ( (LA2_1266 == DOT) ) { s = 1262; } else if ( (LA2_1266 == COMMON_CHAR || LA2_1266 == HEX_CHAR) ) { s = 1263; } else if ( (LA2_1266 == DIGIT) ) { s = 1264; } else if ( (LA2_1266 == SLASH) ) { s = 1271; } else if ( (LA2_1266 == DASH || LA2_1266 == EMARK || LA2_1266 == LPAREN || LA2_1266 == RPAREN || ((LA2_1266 >= SQUOTE) && (LA2_1266 <= USCORE))) ) { s = 1266; } else if ( (LA2_1266 == PERCENT) ) { s = 1267; } else if ( (LA2_1266 == EQUAL) ) { s = 1756; } else if ( (LA2_1266 == COLON) ) { s = 1265; } else if ( (LA2_1266 == AND) ) { s = 1268; } else if ( (LA2_1266 == AT) ) { s = 497; } else if ( (LA2_1266 == PLUS) ) { s = 1269; } else if ( (LA2_1266 == DOLLARD) ) { s = 1270; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1266 == LSBRAQUET || LA2_1266 == RSBRAQUET) ) { s = 405; } else if ( (LA2_1266 == COMMA) ) { s = 502; } SEEK(index2_1266); if ( s>=0 ) { return s; } } break; case 284: { ANTLR3_UINT32 LA2_3490; ANTLR3_MARKER index2_3490; LA2_3490 = LA(1); index2_3490 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3490 == SEMI) ) { s = 2927; } else if ( (LA2_3490 == SLASH) ) { s = 2928; } else if ( (LA2_3490 == QMARK) ) { s = 854; } else if ( (LA2_3490 == SP) ) { s = 204; } else if ( (LA2_3490 == COMMON_CHAR || LA2_3490 == HEX_CHAR) ) { s = 2918; } else if ( (LA2_3490 == DIGIT) ) { s = 2919; } else if ( (LA2_3490 == DOT) ) { s = 2920; } else if ( (LA2_3490 == PERCENT) ) { s = 2921; } else if ( (LA2_3490 == COLON) ) { s = 2922; } else if ( (LA2_3490 == AT) ) { s = 1667; } else if ( (LA2_3490 == AND) ) { s = 2923; } else if ( (LA2_3490 == EQUAL) ) { s = 2924; } else if ( (LA2_3490 == PLUS) ) { s = 2925; } else if ( (LA2_3490 == DOLLARD) ) { s = 2926; } else if ( (LA2_3490 == COMMA) ) { s = 1672; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3490 == CRLF) ) { s = 205; } else if ( (LA2_3490 == DASH || LA2_3490 == EMARK || LA2_3490 == LPAREN || LA2_3490 == RPAREN || ((LA2_3490 >= SQUOTE) && (LA2_3490 <= USCORE))) ) { s = 2929; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3490 == LSBRAQUET || LA2_3490 == RSBRAQUET) ) { s = 405; } SEEK(index2_3490); if ( s>=0 ) { return s; } } break; case 285: { ANTLR3_UINT32 LA2_3646; ANTLR3_MARKER index2_3646; LA2_3646 = LA(1); index2_3646 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3646 == QMARK) ) { s = 854; } else if ( (LA2_3646 == SP) ) { s = 204; } else if ( (LA2_3646 == SLASH) ) { s = 3171; } else if ( (LA2_3646 == SEMI) ) { s = 3463; } else if ( (LA2_3646 == COMMON_CHAR || LA2_3646 == HEX_CHAR) ) { s = 3646; } else if ( (LA2_3646 == DIGIT) ) { s = 3647; } else if ( (LA2_3646 == DOT) ) { s = 3648; } else if ( (LA2_3646 == PERCENT) ) { s = 3649; } else if ( (LA2_3646 == COLON) ) { s = 3650; } else if ( (LA2_3646 == AT) ) { s = 2638; } else if ( (LA2_3646 == AND) ) { s = 3651; } else if ( (LA2_3646 == EQUAL) ) { s = 3784; } else if ( (LA2_3646 == PLUS) ) { s = 3652; } else if ( (LA2_3646 == DOLLARD) ) { s = 3653; } else if ( (LA2_3646 == COMMA) ) { s = 2643; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3646 == CRLF) ) { s = 205; } else if ( (LA2_3646 == DASH || LA2_3646 == EMARK || LA2_3646 == LPAREN || LA2_3646 == RPAREN || ((LA2_3646 >= SQUOTE) && (LA2_3646 <= USCORE))) ) { s = 3654; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3646 == LSBRAQUET || LA2_3646 == RSBRAQUET) ) { s = 405; } SEEK(index2_3646); if ( s>=0 ) { return s; } } break; case 286: { ANTLR3_UINT32 LA2_3167; ANTLR3_MARKER index2_3167; LA2_3167 = LA(1); index2_3167 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3167 == SEMI) ) { s = 1716; } else if ( (LA2_3167 == SLASH) ) { s = 3435; } else if ( (LA2_3167 == QMARK) ) { s = 242; } else if ( (LA2_3167 == SP) ) { s = 35; } else if ( (LA2_3167 == COMMON_CHAR || LA2_3167 == HEX_CHAR) ) { s = 3436; } else if ( (LA2_3167 == DIGIT) ) { s = 3437; } else if ( (LA2_3167 == DOT) ) { s = 3438; } else if ( (LA2_3167 == PERCENT) ) { s = 3439; } else if ( (LA2_3167 == COLON) ) { s = 3440; } else if ( (LA2_3167 == AT) ) { s = 1710; } else if ( (LA2_3167 == AND) ) { s = 3441; } else if ( (LA2_3167 == EQUAL) ) { s = 1712; } else if ( (LA2_3167 == PLUS) ) { s = 3442; } else if ( (LA2_3167 == DOLLARD) ) { s = 3443; } else if ( (LA2_3167 == COMMA) ) { s = 1715; } else if ( (LA2_3167 == DASH || LA2_3167 == EMARK || LA2_3167 == LPAREN || LA2_3167 == RPAREN || ((LA2_3167 >= SQUOTE) && (LA2_3167 <= USCORE))) ) { s = 3444; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3167 == LSBRAQUET || LA2_3167 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3167); if ( s>=0 ) { return s; } } break; case 287: { ANTLR3_UINT32 LA2_1307; ANTLR3_MARKER index2_1307; LA2_1307 = LA(1); index2_1307 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1307 == SP) ) { s = 402; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1307 == CRLF) ) { s = 403; } else if ( (LA2_1307 == DOT) ) { s = 1787; } else if ( (LA2_1307 == COMMON_CHAR || LA2_1307 == HEX_CHAR) ) { s = 1788; } else if ( (LA2_1307 == DIGIT) ) { s = 1789; } else if ( (LA2_1307 == AND || LA2_1307 == COLON || LA2_1307 == DOLLARD || LA2_1307 == PLUS || LA2_1307 == SLASH) ) { s = 1790; } else if ( (LA2_1307 == DASH || LA2_1307 == EMARK || LA2_1307 == LPAREN || LA2_1307 == RPAREN || ((LA2_1307 >= SQUOTE) && (LA2_1307 <= USCORE))) ) { s = 1791; } else if ( (LA2_1307 == PERCENT) ) { s = 1792; } else if ( (LA2_1307 == QMARK) ) { s = 1308; } else if ( (LA2_1307 == SEMI) ) { s = 1307; } else if ( (LA2_1307 == COMMA) ) { s = 506; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1307 == LSBRAQUET || LA2_1307 == RSBRAQUET) ) { s = 405; } else if ( (LA2_1307 == AT || LA2_1307 == EQUAL) ) { s = 508; } SEEK(index2_1307); if ( s>=0 ) { return s; } } break; case 288: { ANTLR3_UINT32 LA2_1583; ANTLR3_MARKER index2_1583; LA2_1583 = LA(1); index2_1583 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1583 == COMMON_CHAR || LA2_1583 == HEX_CHAR) ) { s = 2001; } else if ( (LA2_1583 == DIGIT) ) { s = 2002; } else if ( (LA2_1583 == DOT) ) { s = 2003; } else if ( (LA2_1583 == PERCENT) ) { s = 2004; } else if ( (LA2_1583 == COLON) ) { s = 2005; } else if ( (LA2_1583 == AT) ) { s = 1123; } else if ( (LA2_1583 == AND) ) { s = 2006; } else if ( (LA2_1583 == EQUAL) ) { s = 1125; } else if ( (LA2_1583 == PLUS) ) { s = 2007; } else if ( (LA2_1583 == DOLLARD) ) { s = 2008; } else if ( (LA2_1583 == COMMA) ) { s = 1128; } else if ( (LA2_1583 == SLASH) ) { s = 2009; } else if ( (LA2_1583 == QMARK) ) { s = 854; } else if ( (LA2_1583 == SP) ) { s = 2010; } else if ( (LA2_1583 == SEMI) ) { s = 2011; } else if ( (LA2_1583 == CRLF) ) { s = 2012; } else if ( (LA2_1583 == BQUOTE) ) { s = 1203; } else if ( (LA2_1583 == DASH || LA2_1583 == EMARK || LA2_1583 == LPAREN || LA2_1583 == RPAREN || ((LA2_1583 >= SQUOTE) && (LA2_1583 <= USCORE))) ) { s = 2013; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1583 == LSBRAQUET || LA2_1583 == RSBRAQUET) ) { s = 405; } SEEK(index2_1583); if ( s>=0 ) { return s; } } break; case 289: { ANTLR3_UINT32 LA2_3833; ANTLR3_MARKER index2_3833; LA2_3833 = LA(1); index2_3833 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3833 == QMARK) ) { s = 854; } else if ( (LA2_3833 == SP) ) { s = 204; } else if ( (LA2_3833 == SLASH) ) { s = 3123; } else if ( (LA2_3833 == SEMI) ) { s = 2826; } else if ( (LA2_3833 == COMMON_CHAR || LA2_3833 == HEX_CHAR) ) { s = 3618; } else if ( (LA2_3833 == DIGIT) ) { s = 3619; } else if ( (LA2_3833 == DOT) ) { s = 3620; } else if ( (LA2_3833 == PERCENT) ) { s = 3621; } else if ( (LA2_3833 == COLON) ) { s = 3622; } else if ( (LA2_3833 == AT) ) { s = 2493; } else if ( (LA2_3833 == AND) ) { s = 3623; } else if ( (LA2_3833 == EQUAL) ) { s = 2495; } else if ( (LA2_3833 == PLUS) ) { s = 3624; } else if ( (LA2_3833 == DOLLARD) ) { s = 3625; } else if ( (LA2_3833 == COMMA) ) { s = 2498; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3833 == CRLF) ) { s = 205; } else if ( (LA2_3833 == DASH || LA2_3833 == EMARK || LA2_3833 == LPAREN || LA2_3833 == RPAREN || ((LA2_3833 >= SQUOTE) && (LA2_3833 <= USCORE))) ) { s = 3626; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3833 == LSBRAQUET || LA2_3833 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3833); if ( s>=0 ) { return s; } } break; case 290: { ANTLR3_UINT32 LA2_2270; ANTLR3_MARKER index2_2270; LA2_2270 = LA(1); index2_2270 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2270 == EQUAL) ) { s = 1768; } else if ( (LA2_2270 == QMARK) ) { s = 1272; } else if ( (LA2_2270 == COMMON_CHAR || LA2_2270 == HEX_CHAR) ) { s = 1273; } else if ( (LA2_2270 == DIGIT) ) { s = 1274; } else if ( (LA2_2270 == DASH || LA2_2270 == DOT || LA2_2270 == EMARK || LA2_2270 == LPAREN || LA2_2270 == RPAREN || ((LA2_2270 >= SQUOTE) && (LA2_2270 <= USCORE))) ) { s = 1275; } else if ( (LA2_2270 == PERCENT) ) { s = 1276; } else if ( (LA2_2270 == SP) ) { s = 35; } else if ( (LA2_2270 == SEMI) ) { s = 505; } else if ( (LA2_2270 == COMMA) ) { s = 506; } else if ( (LA2_2270 == COLON || LA2_2270 == DOLLARD || LA2_2270 == PLUS || LA2_2270 == SLASH) ) { s = 1277; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2270 == LSBRAQUET || LA2_2270 == RSBRAQUET) ) { s = 414; } else if ( (((LA2_2270 >= AND) && (LA2_2270 <= AT))) ) { s = 508; } SEEK(index2_2270); if ( s>=0 ) { return s; } } break; case 291: { ANTLR3_UINT32 LA2_3365; ANTLR3_MARKER index2_3365; LA2_3365 = LA(1); index2_3365 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3365 == EQUAL) ) { s = 3054; } else if ( (LA2_3365 == QMARK) ) { s = 2698; } else if ( (LA2_3365 == COMMON_CHAR || LA2_3365 == HEX_CHAR) ) { s = 2699; } else if ( (LA2_3365 == DIGIT) ) { s = 2700; } else if ( (LA2_3365 == DASH || LA2_3365 == DOT || LA2_3365 == EMARK || LA2_3365 == LPAREN || LA2_3365 == RPAREN || ((LA2_3365 >= SQUOTE) && (LA2_3365 <= USCORE))) ) { s = 2701; } else if ( (LA2_3365 == PERCENT) ) { s = 2702; } else if ( (LA2_3365 == SP) ) { s = 35; } else if ( (LA2_3365 == SEMI) ) { s = 505; } else if ( (LA2_3365 == COMMA) ) { s = 506; } else if ( (LA2_3365 == COLON || LA2_3365 == DOLLARD || LA2_3365 == PLUS || LA2_3365 == SLASH) ) { s = 2703; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3365 == LSBRAQUET || LA2_3365 == RSBRAQUET) ) { s = 1552; } else if ( (((LA2_3365 >= AND) && (LA2_3365 <= AT))) ) { s = 508; } SEEK(index2_3365); if ( s>=0 ) { return s; } } break; case 292: { ANTLR3_UINT32 LA2_717; ANTLR3_MARKER index2_717; LA2_717 = LA(1); index2_717 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_717 == AT) ) { s = 89; } else if ( (LA2_717 == COMMON_CHAR || LA2_717 == HEX_CHAR) ) { s = 717; } else if ( (LA2_717 == DIGIT) ) { s = 718; } else if ( (LA2_717 == DASH || LA2_717 == DOT || LA2_717 == EMARK || LA2_717 == LPAREN || LA2_717 == RPAREN || ((LA2_717 >= SQUOTE) && (LA2_717 <= USCORE))) ) { s = 719; } else if ( (LA2_717 == PERCENT) ) { s = 720; } else if ( (LA2_717 == AND) ) { s = 193; } else if ( (LA2_717 == EQUAL) ) { s = 721; } else if ( (LA2_717 == PLUS) ) { s = 722; } else if ( (LA2_717 == DOLLARD) ) { s = 723; } else if ( (LA2_717 == COMMA) ) { s = 197; } else if ( (LA2_717 == QMARK) ) { s = 724; } else if ( (LA2_717 == SP) ) { s = 35; } else if ( (LA2_717 == SEMI) ) { s = 105; } else if ( (LA2_717 == COLON || LA2_717 == SLASH) ) { s = 725; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_717 == LSBRAQUET || LA2_717 == RSBRAQUET) ) { s = 414; } SEEK(index2_717); if ( s>=0 ) { return s; } } break; case 293: { ANTLR3_UINT32 LA2_1544; ANTLR3_MARKER index2_1544; LA2_1544 = LA(1); index2_1544 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1544 == AT) ) { s = 89; } else if ( (LA2_1544 == COMMON_CHAR || LA2_1544 == HEX_CHAR) ) { s = 1544; } else if ( (LA2_1544 == DIGIT) ) { s = 1545; } else if ( (LA2_1544 == DASH || LA2_1544 == DOT || LA2_1544 == EMARK || LA2_1544 == LPAREN || LA2_1544 == RPAREN || ((LA2_1544 >= SQUOTE) && (LA2_1544 <= USCORE))) ) { s = 1546; } else if ( (LA2_1544 == PERCENT) ) { s = 1547; } else if ( (LA2_1544 == AND) ) { s = 193; } else if ( (LA2_1544 == EQUAL) ) { s = 1986; } else if ( (LA2_1544 == PLUS) ) { s = 1548; } else if ( (LA2_1544 == DOLLARD) ) { s = 1549; } else if ( (LA2_1544 == COMMA) ) { s = 197; } else if ( (LA2_1544 == QMARK) ) { s = 1550; } else if ( (LA2_1544 == SP) ) { s = 35; } else if ( (LA2_1544 == SEMI) ) { s = 105; } else if ( (LA2_1544 == COLON || LA2_1544 == SLASH) ) { s = 1551; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1544 == LSBRAQUET || LA2_1544 == RSBRAQUET) ) { s = 1552; } SEEK(index2_1544); if ( s>=0 ) { return s; } } break; case 294: { ANTLR3_UINT32 LA2_3010; ANTLR3_MARKER index2_3010; LA2_3010 = LA(1); index2_3010 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3010 == DOT) ) { s = 3011; } else if ( (LA2_3010 == COLON) ) { s = 1236; } else if ( (LA2_3010 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3010 == CRLF) ) { s = 205; } else if ( (LA2_3010 == SEMI) ) { s = 1237; } else if ( (LA2_3010 == QMARK) ) { s = 854; } else if ( (LA2_3010 == DASH) ) { s = 819; } else if ( (LA2_3010 == COMMON_CHAR || LA2_3010 == HEX_CHAR) ) { s = 817; } else if ( (LA2_3010 == DIGIT) ) { s = 818; } else if ( (LA2_3010 == SLASH) ) { s = 241; } else if ( (LA2_3010 == EMARK || LA2_3010 == LPAREN || LA2_3010 == RPAREN || ((LA2_3010 >= SQUOTE) && (LA2_3010 <= USCORE))) ) { s = 462; } else if ( (LA2_3010 == PERCENT) ) { s = 463; } else if ( (LA2_3010 == AT) ) { s = 464; } else if ( (LA2_3010 == AND) ) { s = 465; } else if ( (LA2_3010 == EQUAL) ) { s = 466; } else if ( (LA2_3010 == PLUS) ) { s = 467; } else if ( (LA2_3010 == DOLLARD) ) { s = 468; } else if ( (LA2_3010 == COMMA) ) { s = 469; } SEEK(index2_3010); if ( s>=0 ) { return s; } } break; case 295: { ANTLR3_UINT32 LA2_1239; ANTLR3_MARKER index2_1239; LA2_1239 = LA(1); index2_1239 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1239 == DOT) ) { s = 1240; } else if ( (LA2_1239 == COMMON_CHAR || LA2_1239 == HEX_CHAR) ) { s = 817; } else if ( (LA2_1239 == DIGIT) ) { s = 818; } else if ( (LA2_1239 == DASH) ) { s = 819; } else if ( (LA2_1239 == COLON) ) { s = 1236; } else if ( (LA2_1239 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1239 == CRLF) ) { s = 205; } else if ( (LA2_1239 == SEMI) ) { s = 1237; } else if ( (LA2_1239 == QMARK) ) { s = 854; } else if ( (LA2_1239 == SLASH) ) { s = 241; } else if ( (LA2_1239 == EMARK || LA2_1239 == LPAREN || LA2_1239 == RPAREN || ((LA2_1239 >= SQUOTE) && (LA2_1239 <= USCORE))) ) { s = 462; } else if ( (LA2_1239 == PERCENT) ) { s = 463; } else if ( (LA2_1239 == AT) ) { s = 464; } else if ( (LA2_1239 == AND) ) { s = 465; } else if ( (LA2_1239 == EQUAL) ) { s = 466; } else if ( (LA2_1239 == PLUS) ) { s = 467; } else if ( (LA2_1239 == DOLLARD) ) { s = 468; } else if ( (LA2_1239 == COMMA) ) { s = 469; } SEEK(index2_1239); if ( s>=0 ) { return s; } } break; case 296: { ANTLR3_UINT32 LA2_2209; ANTLR3_MARKER index2_2209; LA2_2209 = LA(1); index2_2209 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2209 == DOT) ) { s = 2210; } else if ( (LA2_2209 == COLON) ) { s = 1236; } else if ( (LA2_2209 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2209 == CRLF) ) { s = 205; } else if ( (LA2_2209 == SEMI) ) { s = 1237; } else if ( (LA2_2209 == QMARK) ) { s = 854; } else if ( (LA2_2209 == DASH) ) { s = 819; } else if ( (LA2_2209 == COMMON_CHAR || LA2_2209 == HEX_CHAR) ) { s = 817; } else if ( (LA2_2209 == DIGIT) ) { s = 818; } else if ( (LA2_2209 == SLASH) ) { s = 241; } else if ( (LA2_2209 == EMARK || LA2_2209 == LPAREN || LA2_2209 == RPAREN || ((LA2_2209 >= SQUOTE) && (LA2_2209 <= USCORE))) ) { s = 462; } else if ( (LA2_2209 == PERCENT) ) { s = 463; } else if ( (LA2_2209 == AT) ) { s = 464; } else if ( (LA2_2209 == AND) ) { s = 465; } else if ( (LA2_2209 == EQUAL) ) { s = 466; } else if ( (LA2_2209 == PLUS) ) { s = 467; } else if ( (LA2_2209 == DOLLARD) ) { s = 468; } else if ( (LA2_2209 == COMMA) ) { s = 469; } SEEK(index2_2209); if ( s>=0 ) { return s; } } break; case 297: { ANTLR3_UINT32 LA2_3712; ANTLR3_MARKER index2_3712; LA2_3712 = LA(1); index2_3712 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3712 == QMARK) ) { s = 854; } else if ( (LA2_3712 == SP) ) { s = 204; } else if ( (LA2_3712 == SLASH) ) { s = 3226; } else if ( (LA2_3712 == SEMI) ) { s = 3251; } else if ( (LA2_3712 == COMMON_CHAR || LA2_3712 == HEX_CHAR) ) { s = 3718; } else if ( (LA2_3712 == DIGIT) ) { s = 3719; } else if ( (LA2_3712 == DOT) ) { s = 3720; } else if ( (LA2_3712 == PERCENT) ) { s = 3721; } else if ( (LA2_3712 == COLON) ) { s = 3712; } else if ( (LA2_3712 == AT) ) { s = 2578; } else if ( (LA2_3712 == AND) ) { s = 3713; } else if ( (LA2_3712 == EQUAL) ) { s = 2580; } else if ( (LA2_3712 == PLUS) ) { s = 3722; } else if ( (LA2_3712 == DOLLARD) ) { s = 3714; } else if ( (LA2_3712 == COMMA) ) { s = 2583; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3712 == CRLF) ) { s = 205; } else if ( (LA2_3712 == DASH || LA2_3712 == EMARK || LA2_3712 == LPAREN || LA2_3712 == RPAREN || ((LA2_3712 >= SQUOTE) && (LA2_3712 <= USCORE))) ) { s = 3723; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3712 == LSBRAQUET || LA2_3712 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3712); if ( s>=0 ) { return s; } } break; case 298: { ANTLR3_UINT32 LA2_1995; ANTLR3_MARKER index2_1995; LA2_1995 = LA(1); index2_1995 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1995 == COLON) ) { s = 2445; } else if ( (LA2_1995 == AT) ) { s = 89; } else if ( (LA2_1995 == COMMON_CHAR || LA2_1995 == HEX_CHAR) ) { s = 2446; } else if ( (LA2_1995 == DIGIT) ) { s = 2447; } else if ( (LA2_1995 == DASH || LA2_1995 == DOT || LA2_1995 == EMARK || LA2_1995 == LPAREN || LA2_1995 == RPAREN || ((LA2_1995 >= SQUOTE) && (LA2_1995 <= USCORE))) ) { s = 2448; } else if ( (LA2_1995 == PERCENT) ) { s = 2449; } else if ( (LA2_1995 == QMARK) ) { s = 2450; } else if ( (LA2_1995 == AND) ) { s = 1112; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1995 == LSBRAQUET || LA2_1995 == RSBRAQUET) ) { s = 2437; } else if ( (LA2_1995 == SP) ) { s = 35; } else if ( (LA2_1995 == SEMI) ) { s = 94; } else if ( (LA2_1995 == COMMA) ) { s = 97; } else if ( (LA2_1995 == EQUAL) ) { s = 99; } else if ( (LA2_1995 == DOLLARD || LA2_1995 == PLUS || LA2_1995 == SLASH) ) { s = 2451; } SEEK(index2_1995); if ( s>=0 ) { return s; } } break; case 299: { ANTLR3_UINT32 LA2_3673; ANTLR3_MARKER index2_3673; LA2_3673 = LA(1); index2_3673 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3673 == SEMI) ) { s = 2927; } else if ( (LA2_3673 == SLASH) ) { s = 3226; } else if ( (LA2_3673 == QMARK) ) { s = 854; } else if ( (LA2_3673 == SP) ) { s = 204; } else if ( (LA2_3673 == COMMON_CHAR || LA2_3673 == HEX_CHAR) ) { s = 3227; } else if ( (LA2_3673 == DIGIT) ) { s = 3228; } else if ( (LA2_3673 == DOT) ) { s = 3229; } else if ( (LA2_3673 == PERCENT) ) { s = 3230; } else if ( (LA2_3673 == COLON) ) { s = 3231; } else if ( (LA2_3673 == AT) ) { s = 1667; } else if ( (LA2_3673 == AND) ) { s = 3232; } else if ( (LA2_3673 == EQUAL) ) { s = 1669; } else if ( (LA2_3673 == PLUS) ) { s = 3233; } else if ( (LA2_3673 == DOLLARD) ) { s = 3234; } else if ( (LA2_3673 == COMMA) ) { s = 1672; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3673 == CRLF) ) { s = 205; } else if ( (LA2_3673 == DASH || LA2_3673 == EMARK || LA2_3673 == LPAREN || LA2_3673 == RPAREN || ((LA2_3673 >= SQUOTE) && (LA2_3673 <= USCORE))) ) { s = 3235; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3673 == LSBRAQUET || LA2_3673 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3673); if ( s>=0 ) { return s; } } break; case 300: { ANTLR3_UINT32 LA2_3678; ANTLR3_MARKER index2_3678; LA2_3678 = LA(1); index2_3678 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3678 == COMMON_CHAR || LA2_3678 == HEX_CHAR) ) { s = 3682; } else if ( (LA2_3678 == DIGIT) ) { s = 3683; } else if ( (LA2_3678 == DOT) ) { s = 3684; } else if ( (LA2_3678 == PERCENT) ) { s = 3685; } else if ( (LA2_3678 == COLON) ) { s = 3686; } else if ( (LA2_3678 == AT) ) { s = 2963; } else if ( (LA2_3678 == AND) ) { s = 3687; } else if ( (LA2_3678 == EQUAL) ) { s = 2965; } else if ( (LA2_3678 == PLUS) ) { s = 3688; } else if ( (LA2_3678 == DOLLARD) ) { s = 3689; } else if ( (LA2_3678 == COMMA) ) { s = 2968; } else if ( (LA2_3678 == SEMI) ) { s = 3530; } else if ( (LA2_3678 == SLASH) ) { s = 3226; } else if ( (LA2_3678 == QMARK) ) { s = 854; } else if ( (LA2_3678 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3678 == CRLF) ) { s = 205; } else if ( (LA2_3678 == DASH || LA2_3678 == EMARK || LA2_3678 == LPAREN || LA2_3678 == RPAREN || ((LA2_3678 >= SQUOTE) && (LA2_3678 <= USCORE))) ) { s = 3690; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3678 == LSBRAQUET || LA2_3678 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3678); if ( s>=0 ) { return s; } } break; case 301: { ANTLR3_UINT32 LA2_3563; ANTLR3_MARKER index2_3563; LA2_3563 = LA(1); index2_3563 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3563 == COLON) ) { s = 1236; } else if ( (LA2_3563 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3563 == CRLF) ) { s = 205; } else if ( (LA2_3563 == SEMI) ) { s = 1237; } else if ( (LA2_3563 == QMARK) ) { s = 854; } else if ( (LA2_3563 == DOT) ) { s = 1235; } else if ( (LA2_3563 == DASH) ) { s = 819; } else if ( (LA2_3563 == COMMON_CHAR || LA2_3563 == HEX_CHAR) ) { s = 817; } else if ( (LA2_3563 == DIGIT) ) { s = 818; } else if ( (LA2_3563 == SLASH) ) { s = 241; } else if ( (LA2_3563 == EMARK || LA2_3563 == LPAREN || LA2_3563 == RPAREN || ((LA2_3563 >= SQUOTE) && (LA2_3563 <= USCORE))) ) { s = 462; } else if ( (LA2_3563 == PERCENT) ) { s = 463; } else if ( (LA2_3563 == AT) ) { s = 464; } else if ( (LA2_3563 == AND) ) { s = 465; } else if ( (LA2_3563 == EQUAL) ) { s = 466; } else if ( (LA2_3563 == PLUS) ) { s = 467; } else if ( (LA2_3563 == DOLLARD) ) { s = 468; } else if ( (LA2_3563 == COMMA) ) { s = 469; } SEEK(index2_3563); if ( s>=0 ) { return s; } } break; case 302: { ANTLR3_UINT32 LA2_3713; ANTLR3_MARKER index2_3713; LA2_3713 = LA(1); index2_3713 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3713 == QMARK) ) { s = 854; } else if ( (LA2_3713 == SP) ) { s = 204; } else if ( (LA2_3713 == SLASH) ) { s = 3226; } else if ( (LA2_3713 == SEMI) ) { s = 3251; } else if ( (LA2_3713 == COMMON_CHAR || LA2_3713 == HEX_CHAR) ) { s = 3718; } else if ( (LA2_3713 == DIGIT) ) { s = 3719; } else if ( (LA2_3713 == DOT) ) { s = 3720; } else if ( (LA2_3713 == PERCENT) ) { s = 3721; } else if ( (LA2_3713 == COLON) ) { s = 3712; } else if ( (LA2_3713 == AT) ) { s = 2578; } else if ( (LA2_3713 == AND) ) { s = 3713; } else if ( (LA2_3713 == EQUAL) ) { s = 2580; } else if ( (LA2_3713 == PLUS) ) { s = 3722; } else if ( (LA2_3713 == DOLLARD) ) { s = 3714; } else if ( (LA2_3713 == COMMA) ) { s = 2583; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3713 == CRLF) ) { s = 205; } else if ( (LA2_3713 == DASH || LA2_3713 == EMARK || LA2_3713 == LPAREN || LA2_3713 == RPAREN || ((LA2_3713 >= SQUOTE) && (LA2_3713 <= USCORE))) ) { s = 3723; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3713 == LSBRAQUET || LA2_3713 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3713); if ( s>=0 ) { return s; } } break; case 303: { ANTLR3_UINT32 LA2_3242; ANTLR3_MARKER index2_3242; LA2_3242 = LA(1); index2_3242 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3242 == SEMI) ) { s = 3251; } else if ( (LA2_3242 == QMARK) ) { s = 854; } else if ( (LA2_3242 == SP) ) { s = 204; } else if ( (LA2_3242 == SLASH) ) { s = 2928; } else if ( (LA2_3242 == COMMON_CHAR || LA2_3242 == HEX_CHAR) ) { s = 3242; } else if ( (LA2_3242 == DIGIT) ) { s = 3243; } else if ( (LA2_3242 == DOT) ) { s = 3244; } else if ( (LA2_3242 == PERCENT) ) { s = 3245; } else if ( (LA2_3242 == COLON) ) { s = 3246; } else if ( (LA2_3242 == AT) ) { s = 2122; } else if ( (LA2_3242 == AND) ) { s = 3247; } else if ( (LA2_3242 == EQUAL) ) { s = 3248; } else if ( (LA2_3242 == PLUS) ) { s = 3249; } else if ( (LA2_3242 == DOLLARD) ) { s = 3250; } else if ( (LA2_3242 == COMMA) ) { s = 2127; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3242 == CRLF) ) { s = 205; } else if ( (LA2_3242 == DASH || LA2_3242 == EMARK || LA2_3242 == LPAREN || LA2_3242 == RPAREN || ((LA2_3242 >= SQUOTE) && (LA2_3242 <= USCORE))) ) { s = 3252; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3242 == LSBRAQUET || LA2_3242 == RSBRAQUET) ) { s = 405; } SEEK(index2_3242); if ( s>=0 ) { return s; } } break; case 304: { ANTLR3_UINT32 LA2_3722; ANTLR3_MARKER index2_3722; LA2_3722 = LA(1); index2_3722 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3722 == QMARK) ) { s = 854; } else if ( (LA2_3722 == SP) ) { s = 204; } else if ( (LA2_3722 == SLASH) ) { s = 3226; } else if ( (LA2_3722 == SEMI) ) { s = 3251; } else if ( (LA2_3722 == COMMON_CHAR || LA2_3722 == HEX_CHAR) ) { s = 3718; } else if ( (LA2_3722 == DIGIT) ) { s = 3719; } else if ( (LA2_3722 == DOT) ) { s = 3720; } else if ( (LA2_3722 == PERCENT) ) { s = 3721; } else if ( (LA2_3722 == COLON) ) { s = 3712; } else if ( (LA2_3722 == AT) ) { s = 2578; } else if ( (LA2_3722 == AND) ) { s = 3713; } else if ( (LA2_3722 == EQUAL) ) { s = 2580; } else if ( (LA2_3722 == PLUS) ) { s = 3722; } else if ( (LA2_3722 == DOLLARD) ) { s = 3714; } else if ( (LA2_3722 == COMMA) ) { s = 2583; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3722 == CRLF) ) { s = 205; } else if ( (LA2_3722 == DASH || LA2_3722 == EMARK || LA2_3722 == LPAREN || LA2_3722 == RPAREN || ((LA2_3722 >= SQUOTE) && (LA2_3722 <= USCORE))) ) { s = 3723; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3722 == LSBRAQUET || LA2_3722 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3722); if ( s>=0 ) { return s; } } break; case 305: { ANTLR3_UINT32 LA2_2651; ANTLR3_MARKER index2_2651; LA2_2651 = LA(1); index2_2651 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2651 == QMARK) ) { s = 854; } else if ( (LA2_2651 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2651 == CRLF) ) { s = 205; } else if ( (LA2_2651 == SEMI) ) { s = 1237; } else if ( (LA2_2651 == DOT) ) { s = 2648; } else if ( (LA2_2651 == COMMON_CHAR || LA2_2651 == HEX_CHAR) ) { s = 2649; } else if ( (LA2_2651 == DIGIT) ) { s = 2650; } else if ( (LA2_2651 == SLASH) ) { s = 2245; } else if ( (LA2_2651 == DASH || LA2_2651 == EMARK || LA2_2651 == LPAREN || LA2_2651 == RPAREN || ((LA2_2651 >= SQUOTE) && (LA2_2651 <= USCORE))) ) { s = 2651; } else if ( (LA2_2651 == PERCENT) ) { s = 2652; } else if ( (LA2_2651 == COLON) ) { s = 2653; } else if ( (LA2_2651 == AND) ) { s = 2654; } else if ( (LA2_2651 == AT) ) { s = 810; } else if ( (LA2_2651 == PLUS) ) { s = 2655; } else if ( (LA2_2651 == EQUAL) ) { s = 812; } else if ( (LA2_2651 == DOLLARD) ) { s = 2656; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2651 == LSBRAQUET || LA2_2651 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_2651 == COMMA) ) { s = 815; } SEEK(index2_2651); if ( s>=0 ) { return s; } } break; case 306: { ANTLR3_UINT32 LA2_3718; ANTLR3_MARKER index2_3718; LA2_3718 = LA(1); index2_3718 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3718 == QMARK) ) { s = 854; } else if ( (LA2_3718 == SP) ) { s = 204; } else if ( (LA2_3718 == SLASH) ) { s = 3226; } else if ( (LA2_3718 == SEMI) ) { s = 3251; } else if ( (LA2_3718 == COMMON_CHAR || LA2_3718 == HEX_CHAR) ) { s = 3718; } else if ( (LA2_3718 == DIGIT) ) { s = 3719; } else if ( (LA2_3718 == DOT) ) { s = 3720; } else if ( (LA2_3718 == PERCENT) ) { s = 3721; } else if ( (LA2_3718 == COLON) ) { s = 3712; } else if ( (LA2_3718 == AT) ) { s = 2578; } else if ( (LA2_3718 == AND) ) { s = 3713; } else if ( (LA2_3718 == EQUAL) ) { s = 2580; } else if ( (LA2_3718 == PLUS) ) { s = 3722; } else if ( (LA2_3718 == DOLLARD) ) { s = 3714; } else if ( (LA2_3718 == COMMA) ) { s = 2583; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3718 == CRLF) ) { s = 205; } else if ( (LA2_3718 == DASH || LA2_3718 == EMARK || LA2_3718 == LPAREN || LA2_3718 == RPAREN || ((LA2_3718 >= SQUOTE) && (LA2_3718 <= USCORE))) ) { s = 3723; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3718 == LSBRAQUET || LA2_3718 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3718); if ( s>=0 ) { return s; } } break; case 307: { ANTLR3_UINT32 LA2_3714; ANTLR3_MARKER index2_3714; LA2_3714 = LA(1); index2_3714 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3714 == QMARK) ) { s = 854; } else if ( (LA2_3714 == SP) ) { s = 204; } else if ( (LA2_3714 == SLASH) ) { s = 3226; } else if ( (LA2_3714 == SEMI) ) { s = 3251; } else if ( (LA2_3714 == COMMON_CHAR || LA2_3714 == HEX_CHAR) ) { s = 3718; } else if ( (LA2_3714 == DIGIT) ) { s = 3719; } else if ( (LA2_3714 == DOT) ) { s = 3720; } else if ( (LA2_3714 == PERCENT) ) { s = 3721; } else if ( (LA2_3714 == COLON) ) { s = 3712; } else if ( (LA2_3714 == AT) ) { s = 2578; } else if ( (LA2_3714 == AND) ) { s = 3713; } else if ( (LA2_3714 == EQUAL) ) { s = 2580; } else if ( (LA2_3714 == PLUS) ) { s = 3722; } else if ( (LA2_3714 == DOLLARD) ) { s = 3714; } else if ( (LA2_3714 == COMMA) ) { s = 2583; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3714 == CRLF) ) { s = 205; } else if ( (LA2_3714 == DASH || LA2_3714 == EMARK || LA2_3714 == LPAREN || LA2_3714 == RPAREN || ((LA2_3714 >= SQUOTE) && (LA2_3714 <= USCORE))) ) { s = 3723; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3714 == LSBRAQUET || LA2_3714 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3714); if ( s>=0 ) { return s; } } break; case 308: { ANTLR3_UINT32 LA2_3335; ANTLR3_MARKER index2_3335; LA2_3335 = LA(1); index2_3335 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3335 == SLASH) ) { s = 3031; } else if ( (LA2_3335 == QMARK) ) { s = 1751; } else if ( (LA2_3335 == SP) ) { s = 204; } else if ( (LA2_3335 == SEMI) ) { s = 3030; } else if ( (LA2_3335 == COMMON_CHAR || LA2_3335 == HEX_CHAR) ) { s = 3333; } else if ( (LA2_3335 == DIGIT) ) { s = 3334; } else if ( (LA2_3335 == DOT) ) { s = 3335; } else if ( (LA2_3335 == PERCENT) ) { s = 3336; } else if ( (LA2_3335 == COLON) ) { s = 3337; } else if ( (LA2_3335 == AT) ) { s = 2673; } else if ( (LA2_3335 == AND) ) { s = 3338; } else if ( (LA2_3335 == EQUAL) ) { s = 3578; } else if ( (LA2_3335 == PLUS) ) { s = 3339; } else if ( (LA2_3335 == DOLLARD) ) { s = 3340; } else if ( (LA2_3335 == COMMA) ) { s = 2678; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3335 == CRLF) ) { s = 205; } else if ( (LA2_3335 == DASH || LA2_3335 == EMARK || LA2_3335 == LPAREN || LA2_3335 == RPAREN || ((LA2_3335 >= SQUOTE) && (LA2_3335 <= USCORE))) ) { s = 3341; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3335 == LSBRAQUET || LA2_3335 == RSBRAQUET) ) { s = 405; } SEEK(index2_3335); if ( s>=0 ) { return s; } } break; case 309: { ANTLR3_UINT32 LA2_854; ANTLR3_MARKER index2_854; LA2_854 = LA(1); index2_854 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_854 == QMARK) ) { s = 1272; } else if ( (LA2_854 == COMMON_CHAR || LA2_854 == HEX_CHAR) ) { s = 1273; } else if ( (LA2_854 == DIGIT) ) { s = 1274; } else if ( (LA2_854 == DASH || LA2_854 == DOT || LA2_854 == EMARK || LA2_854 == LPAREN || LA2_854 == RPAREN || ((LA2_854 >= SQUOTE) && (LA2_854 <= USCORE))) ) { s = 1275; } else if ( (LA2_854 == PERCENT) ) { s = 1276; } else if ( (LA2_854 == SEMI) ) { s = 505; } else if ( (LA2_854 == COMMA) ) { s = 506; } else if ( (LA2_854 == COLON || LA2_854 == DOLLARD || LA2_854 == PLUS || LA2_854 == SLASH) ) { s = 1277; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_854 == LSBRAQUET || LA2_854 == RSBRAQUET) ) { s = 414; } else if ( (((LA2_854 >= AND) && (LA2_854 <= AT)) || LA2_854 == EQUAL) ) { s = 508; } SEEK(index2_854); if ( s>=0 ) { return s; } } break; case 310: { ANTLR3_UINT32 LA2_393; ANTLR3_MARKER index2_393; LA2_393 = LA(1); index2_393 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_393 == DIGIT) ) { s = 696; } else if ( (LA2_393 == DOT) ) { s = 697; } else if ( (LA2_393 == COMMON_CHAR || LA2_393 == HEX_CHAR) ) { s = 390; } else if ( (LA2_393 == DASH) ) { s = 392; } else if ( (LA2_393 == COLON) ) { s = 692; } else if ( (LA2_393 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_393 == CRLF) ) { s = 205; } else if ( (LA2_393 == SEMI) ) { s = 693; } else if ( (LA2_393 == QMARK) ) { s = 694; } else if ( (LA2_393 == COMMA) ) { s = 106; } else if ( (((LA2_393 >= AND) && (LA2_393 <= AT)) || LA2_393 == DOLLARD || LA2_393 == EQUAL || LA2_393 == PLUS || LA2_393 == SLASH) ) { s = 108; } else if ( (LA2_393 == EMARK || LA2_393 == LPAREN || LA2_393 == RPAREN || ((LA2_393 >= SQUOTE) && (LA2_393 <= USCORE))) ) { s = 111; } else if ( (LA2_393 == PERCENT) ) { s = 112; } SEEK(index2_393); if ( s>=0 ) { return s; } } break; case 311: { ANTLR3_UINT32 LA2_3586; ANTLR3_MARKER index2_3586; LA2_3586 = LA(1); index2_3586 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3586 == QMARK) ) { s = 1751; } else if ( (LA2_3586 == SP) ) { s = 204; } else if ( (LA2_3586 == SLASH) ) { s = 3031; } else if ( (LA2_3586 == SEMI) ) { s = 3351; } else if ( (LA2_3586 == COMMON_CHAR || LA2_3586 == HEX_CHAR) ) { s = 3581; } else if ( (LA2_3586 == DIGIT) ) { s = 3582; } else if ( (LA2_3586 == DOT) ) { s = 3583; } else if ( (LA2_3586 == PERCENT) ) { s = 3584; } else if ( (LA2_3586 == COLON) ) { s = 3585; } else if ( (LA2_3586 == AT) ) { s = 3043; } else if ( (LA2_3586 == AND) ) { s = 3586; } else if ( (LA2_3586 == EQUAL) ) { s = 3745; } else if ( (LA2_3586 == PLUS) ) { s = 3587; } else if ( (LA2_3586 == DOLLARD) ) { s = 3588; } else if ( (LA2_3586 == COMMA) ) { s = 3048; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3586 == CRLF) ) { s = 205; } else if ( (LA2_3586 == DASH || LA2_3586 == EMARK || LA2_3586 == LPAREN || LA2_3586 == RPAREN || ((LA2_3586 >= SQUOTE) && (LA2_3586 <= USCORE))) ) { s = 3589; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3586 == LSBRAQUET || LA2_3586 == RSBRAQUET) ) { s = 405; } SEEK(index2_3586); if ( s>=0 ) { return s; } } break; case 312: { ANTLR3_UINT32 LA2_2009; ANTLR3_MARKER index2_2009; LA2_2009 = LA(1); index2_2009 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2009 == COMMON_CHAR || LA2_2009 == HEX_CHAR) ) { s = 2468; } else if ( (LA2_2009 == DIGIT) ) { s = 2469; } else if ( (LA2_2009 == DOT) ) { s = 2470; } else if ( (LA2_2009 == PERCENT) ) { s = 2471; } else if ( (LA2_2009 == COLON) ) { s = 2472; } else if ( (LA2_2009 == AT) ) { s = 1134; } else if ( (LA2_2009 == AND) ) { s = 2473; } else if ( (LA2_2009 == EQUAL) ) { s = 2474; } else if ( (LA2_2009 == PLUS) ) { s = 2475; } else if ( (LA2_2009 == DOLLARD) ) { s = 2476; } else if ( (LA2_2009 == COMMA) ) { s = 1139; } else if ( (LA2_2009 == SEMI) ) { s = 2477; } else if ( (LA2_2009 == QMARK) ) { s = 854; } else if ( (LA2_2009 == SP) ) { s = 204; } else if ( (LA2_2009 == SLASH) ) { s = 2009; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2009 == CRLF) ) { s = 205; } else if ( (LA2_2009 == DASH || LA2_2009 == EMARK || LA2_2009 == LPAREN || LA2_2009 == RPAREN || ((LA2_2009 >= SQUOTE) && (LA2_2009 <= USCORE))) ) { s = 2478; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2009 == LSBRAQUET || LA2_2009 == RSBRAQUET) ) { s = 405; } SEEK(index2_2009); if ( s>=0 ) { return s; } } break; case 313: { ANTLR3_UINT32 LA2_1068; ANTLR3_MARKER index2_1068; LA2_1068 = LA(1); index2_1068 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1068 == DIGIT) ) { s = 1529; } else if ( (LA2_1068 == DOT) ) { s = 1530; } else if ( (LA2_1068 == COLON) ) { s = 692; } else if ( (LA2_1068 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1068 == CRLF) ) { s = 205; } else if ( (LA2_1068 == SEMI) ) { s = 693; } else if ( (LA2_1068 == QMARK) ) { s = 694; } else if ( (LA2_1068 == DASH) ) { s = 392; } else if ( (LA2_1068 == COMMON_CHAR || LA2_1068 == HEX_CHAR) ) { s = 390; } else if ( (LA2_1068 == COMMA) ) { s = 106; } else if ( (((LA2_1068 >= AND) && (LA2_1068 <= AT)) || LA2_1068 == DOLLARD || LA2_1068 == EQUAL || LA2_1068 == PLUS || LA2_1068 == SLASH) ) { s = 108; } else if ( (LA2_1068 == EMARK || LA2_1068 == LPAREN || LA2_1068 == RPAREN || ((LA2_1068 >= SQUOTE) && (LA2_1068 <= USCORE))) ) { s = 111; } else if ( (LA2_1068 == PERCENT) ) { s = 112; } SEEK(index2_1068); if ( s>=0 ) { return s; } } break; case 314: { ANTLR3_UINT32 LA2_3585; ANTLR3_MARKER index2_3585; LA2_3585 = LA(1); index2_3585 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3585 == QMARK) ) { s = 1751; } else if ( (LA2_3585 == SP) ) { s = 204; } else if ( (LA2_3585 == SLASH) ) { s = 3031; } else if ( (LA2_3585 == SEMI) ) { s = 3351; } else if ( (LA2_3585 == COMMON_CHAR || LA2_3585 == HEX_CHAR) ) { s = 3581; } else if ( (LA2_3585 == DIGIT) ) { s = 3582; } else if ( (LA2_3585 == DOT) ) { s = 3583; } else if ( (LA2_3585 == PERCENT) ) { s = 3584; } else if ( (LA2_3585 == COLON) ) { s = 3585; } else if ( (LA2_3585 == AT) ) { s = 3043; } else if ( (LA2_3585 == AND) ) { s = 3586; } else if ( (LA2_3585 == EQUAL) ) { s = 3745; } else if ( (LA2_3585 == PLUS) ) { s = 3587; } else if ( (LA2_3585 == DOLLARD) ) { s = 3588; } else if ( (LA2_3585 == COMMA) ) { s = 3048; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3585 == CRLF) ) { s = 205; } else if ( (LA2_3585 == DASH || LA2_3585 == EMARK || LA2_3585 == LPAREN || LA2_3585 == RPAREN || ((LA2_3585 >= SQUOTE) && (LA2_3585 <= USCORE))) ) { s = 3589; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3585 == LSBRAQUET || LA2_3585 == RSBRAQUET) ) { s = 405; } SEEK(index2_3585); if ( s>=0 ) { return s; } } break; case 315: { ANTLR3_UINT32 LA2_1979; ANTLR3_MARKER index2_1979; LA2_1979 = LA(1); index2_1979 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1979 == DIGIT) ) { s = 2424; } else if ( (LA2_1979 == DOT) ) { s = 2425; } else if ( (LA2_1979 == COLON) ) { s = 692; } else if ( (LA2_1979 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1979 == CRLF) ) { s = 205; } else if ( (LA2_1979 == SEMI) ) { s = 693; } else if ( (LA2_1979 == QMARK) ) { s = 694; } else if ( (LA2_1979 == DASH) ) { s = 392; } else if ( (LA2_1979 == COMMON_CHAR || LA2_1979 == HEX_CHAR) ) { s = 390; } else if ( (LA2_1979 == COMMA) ) { s = 106; } else if ( (((LA2_1979 >= AND) && (LA2_1979 <= AT)) || LA2_1979 == DOLLARD || LA2_1979 == EQUAL || LA2_1979 == PLUS || LA2_1979 == SLASH) ) { s = 108; } else if ( (LA2_1979 == EMARK || LA2_1979 == LPAREN || LA2_1979 == RPAREN || ((LA2_1979 >= SQUOTE) && (LA2_1979 <= USCORE))) ) { s = 111; } else if ( (LA2_1979 == PERCENT) ) { s = 112; } SEEK(index2_1979); if ( s>=0 ) { return s; } } break; case 316: { ANTLR3_UINT32 LA2_3588; ANTLR3_MARKER index2_3588; LA2_3588 = LA(1); index2_3588 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3588 == QMARK) ) { s = 1751; } else if ( (LA2_3588 == SP) ) { s = 204; } else if ( (LA2_3588 == SLASH) ) { s = 3031; } else if ( (LA2_3588 == SEMI) ) { s = 3351; } else if ( (LA2_3588 == COMMON_CHAR || LA2_3588 == HEX_CHAR) ) { s = 3581; } else if ( (LA2_3588 == DIGIT) ) { s = 3582; } else if ( (LA2_3588 == DOT) ) { s = 3583; } else if ( (LA2_3588 == PERCENT) ) { s = 3584; } else if ( (LA2_3588 == COLON) ) { s = 3585; } else if ( (LA2_3588 == AT) ) { s = 3043; } else if ( (LA2_3588 == AND) ) { s = 3586; } else if ( (LA2_3588 == EQUAL) ) { s = 3745; } else if ( (LA2_3588 == PLUS) ) { s = 3587; } else if ( (LA2_3588 == DOLLARD) ) { s = 3588; } else if ( (LA2_3588 == COMMA) ) { s = 3048; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3588 == CRLF) ) { s = 205; } else if ( (LA2_3588 == DASH || LA2_3588 == EMARK || LA2_3588 == LPAREN || LA2_3588 == RPAREN || ((LA2_3588 >= SQUOTE) && (LA2_3588 <= USCORE))) ) { s = 3589; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3588 == LSBRAQUET || LA2_3588 == RSBRAQUET) ) { s = 405; } SEEK(index2_3588); if ( s>=0 ) { return s; } } break; case 317: { ANTLR3_UINT32 LA2_2811; ANTLR3_MARKER index2_2811; LA2_2811 = LA(1); index2_2811 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2811 == DIGIT) ) { s = 3118; } else if ( (LA2_2811 == COLON) ) { s = 692; } else if ( (LA2_2811 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2811 == CRLF) ) { s = 205; } else if ( (LA2_2811 == SEMI) ) { s = 693; } else if ( (LA2_2811 == QMARK) ) { s = 694; } else if ( (LA2_2811 == DOT) ) { s = 691; } else if ( (LA2_2811 == DASH) ) { s = 392; } else if ( (LA2_2811 == COMMON_CHAR || LA2_2811 == HEX_CHAR) ) { s = 390; } else if ( (LA2_2811 == COMMA) ) { s = 106; } else if ( (((LA2_2811 >= AND) && (LA2_2811 <= AT)) || LA2_2811 == DOLLARD || LA2_2811 == EQUAL || LA2_2811 == PLUS || LA2_2811 == SLASH) ) { s = 108; } else if ( (LA2_2811 == EMARK || LA2_2811 == LPAREN || LA2_2811 == RPAREN || ((LA2_2811 >= SQUOTE) && (LA2_2811 <= USCORE))) ) { s = 111; } else if ( (LA2_2811 == PERCENT) ) { s = 112; } SEEK(index2_2811); if ( s>=0 ) { return s; } } break; case 318: { ANTLR3_UINT32 LA2_3587; ANTLR3_MARKER index2_3587; LA2_3587 = LA(1); index2_3587 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3587 == QMARK) ) { s = 1751; } else if ( (LA2_3587 == SP) ) { s = 204; } else if ( (LA2_3587 == SLASH) ) { s = 3031; } else if ( (LA2_3587 == SEMI) ) { s = 3351; } else if ( (LA2_3587 == COMMON_CHAR || LA2_3587 == HEX_CHAR) ) { s = 3581; } else if ( (LA2_3587 == DIGIT) ) { s = 3582; } else if ( (LA2_3587 == DOT) ) { s = 3583; } else if ( (LA2_3587 == PERCENT) ) { s = 3584; } else if ( (LA2_3587 == COLON) ) { s = 3585; } else if ( (LA2_3587 == AT) ) { s = 3043; } else if ( (LA2_3587 == AND) ) { s = 3586; } else if ( (LA2_3587 == EQUAL) ) { s = 3745; } else if ( (LA2_3587 == PLUS) ) { s = 3587; } else if ( (LA2_3587 == DOLLARD) ) { s = 3588; } else if ( (LA2_3587 == COMMA) ) { s = 3048; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3587 == CRLF) ) { s = 205; } else if ( (LA2_3587 == DASH || LA2_3587 == EMARK || LA2_3587 == LPAREN || LA2_3587 == RPAREN || ((LA2_3587 >= SQUOTE) && (LA2_3587 <= USCORE))) ) { s = 3589; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3587 == LSBRAQUET || LA2_3587 == RSBRAQUET) ) { s = 405; } SEEK(index2_3587); if ( s>=0 ) { return s; } } break; case 319: { ANTLR3_UINT32 LA2_2486; ANTLR3_MARKER index2_2486; LA2_2486 = LA(1); index2_2486 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2486 == COMMON_CHAR || LA2_2486 == HEX_CHAR) ) { s = 2512; } else if ( (LA2_2486 == DIGIT) ) { s = 2481; } else if ( (LA2_2486 == DOT) ) { s = 2482; } else if ( (LA2_2486 == PERCENT) ) { s = 2483; } else if ( (LA2_2486 == PLUS) ) { s = 2484; } else if ( (LA2_2486 == BQUOTE) ) { s = 1203; } else if ( (LA2_2486 == SP) ) { s = 2486; } else if ( (LA2_2486 == DASH || LA2_2486 == EMARK || LA2_2486 == LPAREN || LA2_2486 == RPAREN || ((LA2_2486 >= SQUOTE) && (LA2_2486 <= USCORE))) ) { s = 2485; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2486 == AND || LA2_2486 == COLON || LA2_2486 == DOLLARD || LA2_2486 == LSBRAQUET || LA2_2486 == RSBRAQUET || LA2_2486 == SLASH) ) { s = 405; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2486 == SEMI) ) { s = 407; } SEEK(index2_2486); if ( s>=0 ) { return s; } } break; case 320: { ANTLR3_UINT32 LA2_3180; ANTLR3_MARKER index2_3180; LA2_3180 = LA(1); index2_3180 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3180 == SP) ) { s = 2456; } else if ( (LA2_3180 == CRLF) ) { s = 2458; } else if ( (LA2_3180 == EQUAL) ) { s = 2867; } else if ( (LA2_3180 == SLASH) ) { s = 2868; } else if ( (LA2_3180 == QMARK) ) { s = 854; } else if ( (LA2_3180 == SEMI) ) { s = 2028; } else if ( (LA2_3180 == COMMON_CHAR || LA2_3180 == HEX_CHAR) ) { s = 2512; } else if ( (LA2_3180 == DIGIT) ) { s = 2481; } else if ( (LA2_3180 == DOT) ) { s = 2482; } else if ( (LA2_3180 == PERCENT) ) { s = 2483; } else if ( (LA2_3180 == PLUS) ) { s = 2484; } else if ( (LA2_3180 == BQUOTE) ) { s = 1203; } else if ( (LA2_3180 == DASH || LA2_3180 == EMARK || LA2_3180 == LPAREN || LA2_3180 == RPAREN || ((LA2_3180 >= SQUOTE) && (LA2_3180 <= USCORE))) ) { s = 2485; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3180 == AND || LA2_3180 == COLON || LA2_3180 == DOLLARD || LA2_3180 == LSBRAQUET || LA2_3180 == RSBRAQUET) ) { s = 405; } SEEK(index2_3180); if ( s>=0 ) { return s; } } break; case 321: { ANTLR3_UINT32 LA2_3137; ANTLR3_MARKER index2_3137; LA2_3137 = LA(1); index2_3137 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3137 == QMARK) ) { s = 854; } else if ( (LA2_3137 == SP) ) { s = 204; } else if ( (LA2_3137 == SLASH) ) { s = 2827; } else if ( (LA2_3137 == SEMI) ) { s = 2826; } else if ( (LA2_3137 == COMMON_CHAR || LA2_3137 == HEX_CHAR) ) { s = 3133; } else if ( (LA2_3137 == DIGIT) ) { s = 3134; } else if ( (LA2_3137 == DOT) ) { s = 3135; } else if ( (LA2_3137 == PERCENT) ) { s = 3136; } else if ( (LA2_3137 == COLON) ) { s = 3137; } else if ( (LA2_3137 == AT) ) { s = 2493; } else if ( (LA2_3137 == AND) ) { s = 3138; } else if ( (LA2_3137 == EQUAL) ) { s = 3416; } else if ( (LA2_3137 == PLUS) ) { s = 3139; } else if ( (LA2_3137 == DOLLARD) ) { s = 3140; } else if ( (LA2_3137 == COMMA) ) { s = 2498; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3137 == CRLF) ) { s = 205; } else if ( (LA2_3137 == DASH || LA2_3137 == EMARK || LA2_3137 == LPAREN || LA2_3137 == RPAREN || ((LA2_3137 >= SQUOTE) && (LA2_3137 <= USCORE))) ) { s = 3141; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3137 == LSBRAQUET || LA2_3137 == RSBRAQUET) ) { s = 405; } SEEK(index2_3137); if ( s>=0 ) { return s; } } break; case 322: { ANTLR3_UINT32 LA2_1062; ANTLR3_MARKER index2_1062; LA2_1062 = LA(1); index2_1062 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1062 == EQUAL) ) { s = 1105; } else if ( (LA2_1062 == QMARK) ) { s = 724; } else if ( (LA2_1062 == COMMON_CHAR || LA2_1062 == HEX_CHAR) ) { s = 1062; } else if ( (LA2_1062 == DIGIT) ) { s = 1063; } else if ( (LA2_1062 == DASH || LA2_1062 == DOT || LA2_1062 == EMARK || LA2_1062 == LPAREN || LA2_1062 == RPAREN || ((LA2_1062 >= SQUOTE) && (LA2_1062 <= USCORE))) ) { s = 1064; } else if ( (LA2_1062 == PERCENT) ) { s = 1065; } else if ( (LA2_1062 == SP) ) { s = 35; } else if ( (LA2_1062 == SEMI) ) { s = 105; } else if ( (LA2_1062 == COMMA) ) { s = 106; } else if ( (LA2_1062 == COLON || LA2_1062 == DOLLARD || LA2_1062 == PLUS || LA2_1062 == SLASH) ) { s = 725; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1062 == LSBRAQUET || LA2_1062 == RSBRAQUET) ) { s = 414; } else if ( (((LA2_1062 >= AND) && (LA2_1062 <= AT))) ) { s = 108; } SEEK(index2_1062); if ( s>=0 ) { return s; } } break; case 323: { ANTLR3_UINT32 LA2_1989; ANTLR3_MARKER index2_1989; LA2_1989 = LA(1); index2_1989 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1989 == EQUAL) ) { s = 1988; } else if ( (LA2_1989 == QMARK) ) { s = 1550; } else if ( (LA2_1989 == COMMON_CHAR || LA2_1989 == HEX_CHAR) ) { s = 1989; } else if ( (LA2_1989 == DIGIT) ) { s = 1990; } else if ( (LA2_1989 == DASH || LA2_1989 == DOT || LA2_1989 == EMARK || LA2_1989 == LPAREN || LA2_1989 == RPAREN || ((LA2_1989 >= SQUOTE) && (LA2_1989 <= USCORE))) ) { s = 1991; } else if ( (LA2_1989 == PERCENT) ) { s = 1992; } else if ( (LA2_1989 == SP) ) { s = 35; } else if ( (LA2_1989 == SEMI) ) { s = 105; } else if ( (LA2_1989 == COMMA) ) { s = 106; } else if ( (LA2_1989 == COLON || LA2_1989 == DOLLARD || LA2_1989 == PLUS || LA2_1989 == SLASH) ) { s = 1551; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1989 == LSBRAQUET || LA2_1989 == RSBRAQUET) ) { s = 1552; } else if ( (((LA2_1989 >= AND) && (LA2_1989 <= AT))) ) { s = 108; } SEEK(index2_1989); if ( s>=0 ) { return s; } } break; case 324: { ANTLR3_UINT32 LA2_1751; ANTLR3_MARKER index2_1751; LA2_1751 = LA(1); index2_1751 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1751 == SEMI) ) { s = 505; } else if ( (LA2_1751 == COMMA) ) { s = 506; } else if ( (LA2_1751 == QMARK) ) { s = 1272; } else if ( (LA2_1751 == COLON || LA2_1751 == DOLLARD || LA2_1751 == PLUS || LA2_1751 == SLASH) ) { s = 1277; } else if ( (LA2_1751 == COMMON_CHAR || LA2_1751 == HEX_CHAR) ) { s = 1273; } else if ( (LA2_1751 == DIGIT) ) { s = 1274; } else if ( (LA2_1751 == DASH || LA2_1751 == DOT || LA2_1751 == EMARK || LA2_1751 == LPAREN || LA2_1751 == RPAREN || ((LA2_1751 >= SQUOTE) && (LA2_1751 <= USCORE))) ) { s = 1275; } else if ( (LA2_1751 == PERCENT) ) { s = 1276; } else if ( (((LA2_1751 >= AND) && (LA2_1751 <= AT)) || LA2_1751 == EQUAL) ) { s = 508; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1751 == LSBRAQUET || LA2_1751 == RSBRAQUET) ) { s = 414; } else if ( (LA2_1751 == SP) ) { s = 35; } SEEK(index2_1751); if ( s>=0 ) { return s; } } break; case 325: { ANTLR3_UINT32 LA2_2245; ANTLR3_MARKER index2_2245; LA2_2245 = LA(1); index2_2245 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2245 == QMARK) ) { s = 854; } else if ( (LA2_2245 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2245 == CRLF) ) { s = 205; } else if ( (LA2_2245 == SEMI) ) { s = 1237; } else if ( (LA2_2245 == DOT) ) { s = 2254; } else if ( (LA2_2245 == COMMON_CHAR || LA2_2245 == HEX_CHAR) ) { s = 2255; } else if ( (LA2_2245 == DIGIT) ) { s = 2256; } else if ( (LA2_2245 == COLON) ) { s = 2259; } else if ( (LA2_2245 == DASH || LA2_2245 == EMARK || LA2_2245 == LPAREN || LA2_2245 == RPAREN || ((LA2_2245 >= SQUOTE) && (LA2_2245 <= USCORE))) ) { s = 2257; } else if ( (LA2_2245 == PERCENT) ) { s = 2258; } else if ( (LA2_2245 == AND) ) { s = 2260; } else if ( (LA2_2245 == AT) ) { s = 464; } else if ( (LA2_2245 == PLUS) ) { s = 2261; } else if ( (LA2_2245 == EQUAL) ) { s = 466; } else if ( (LA2_2245 == DOLLARD) ) { s = 2262; } else if ( (LA2_2245 == SLASH) ) { s = 2245; } else if ( (LA2_2245 == COMMA) ) { s = 469; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2245 == LSBRAQUET || LA2_2245 == RSBRAQUET) ) { s = 1080; } SEEK(index2_2245); if ( s>=0 ) { return s; } } break; case 326: { ANTLR3_UINT32 LA2_3138; ANTLR3_MARKER index2_3138; LA2_3138 = LA(1); index2_3138 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3138 == QMARK) ) { s = 854; } else if ( (LA2_3138 == SP) ) { s = 204; } else if ( (LA2_3138 == SLASH) ) { s = 2827; } else if ( (LA2_3138 == SEMI) ) { s = 2826; } else if ( (LA2_3138 == COMMON_CHAR || LA2_3138 == HEX_CHAR) ) { s = 3133; } else if ( (LA2_3138 == DIGIT) ) { s = 3134; } else if ( (LA2_3138 == DOT) ) { s = 3135; } else if ( (LA2_3138 == PERCENT) ) { s = 3136; } else if ( (LA2_3138 == COLON) ) { s = 3137; } else if ( (LA2_3138 == AT) ) { s = 2493; } else if ( (LA2_3138 == AND) ) { s = 3138; } else if ( (LA2_3138 == EQUAL) ) { s = 3416; } else if ( (LA2_3138 == PLUS) ) { s = 3139; } else if ( (LA2_3138 == DOLLARD) ) { s = 3140; } else if ( (LA2_3138 == COMMA) ) { s = 2498; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3138 == CRLF) ) { s = 205; } else if ( (LA2_3138 == DASH || LA2_3138 == EMARK || LA2_3138 == LPAREN || LA2_3138 == RPAREN || ((LA2_3138 >= SQUOTE) && (LA2_3138 <= USCORE))) ) { s = 3141; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3138 == LSBRAQUET || LA2_3138 == RSBRAQUET) ) { s = 405; } SEEK(index2_3138); if ( s>=0 ) { return s; } } break; case 327: { ANTLR3_UINT32 LA2_3735; ANTLR3_MARKER index2_3735; LA2_3735 = LA(1); index2_3735 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3735 == SLASH) ) { s = 3323; } else if ( (LA2_3735 == QMARK) ) { s = 1751; } else if ( (LA2_3735 == SP) ) { s = 204; } else if ( (LA2_3735 == SEMI) ) { s = 3030; } else if ( (LA2_3735 == COMMON_CHAR || LA2_3735 == HEX_CHAR) ) { s = 3734; } else if ( (LA2_3735 == DIGIT) ) { s = 3735; } else if ( (LA2_3735 == DOT) ) { s = 3736; } else if ( (LA2_3735 == PERCENT) ) { s = 3737; } else if ( (LA2_3735 == COLON) ) { s = 3738; } else if ( (LA2_3735 == AT) ) { s = 2673; } else if ( (LA2_3735 == AND) ) { s = 3739; } else if ( (LA2_3735 == EQUAL) ) { s = 2675; } else if ( (LA2_3735 == PLUS) ) { s = 3740; } else if ( (LA2_3735 == DOLLARD) ) { s = 3741; } else if ( (LA2_3735 == COMMA) ) { s = 2678; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3735 == CRLF) ) { s = 205; } else if ( (LA2_3735 == DASH || LA2_3735 == EMARK || LA2_3735 == LPAREN || LA2_3735 == RPAREN || ((LA2_3735 >= SQUOTE) && (LA2_3735 <= USCORE))) ) { s = 3742; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3735 == LSBRAQUET || LA2_3735 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3735); if ( s>=0 ) { return s; } } break; case 328: { ANTLR3_UINT32 LA2_2706; ANTLR3_MARKER index2_2706; LA2_2706 = LA(1); index2_2706 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2706 == DIGIT) ) { s = 3056; } else if ( (LA2_2706 == DASH) ) { s = 518; } else if ( (LA2_2706 == COMMON_CHAR || LA2_2706 == HEX_CHAR) ) { s = 516; } else if ( (LA2_2706 == DOT) ) { s = 515; } else if ( (LA2_2706 == COLON) ) { s = 852; } else if ( (LA2_2706 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2706 == CRLF) ) { s = 205; } else if ( (LA2_2706 == SEMI) ) { s = 853; } else if ( (LA2_2706 == QMARK) ) { s = 854; } else if ( (LA2_2706 == SLASH) ) { s = 241; } else if ( (LA2_2706 == EMARK || LA2_2706 == LPAREN || LA2_2706 == RPAREN || ((LA2_2706 >= SQUOTE) && (LA2_2706 <= USCORE))) ) { s = 246; } else if ( (LA2_2706 == PERCENT) ) { s = 247; } else if ( (LA2_2706 == AT) ) { s = 248; } else if ( (LA2_2706 == AND) ) { s = 249; } else if ( (LA2_2706 == EQUAL) ) { s = 250; } else if ( (LA2_2706 == PLUS) ) { s = 251; } else if ( (LA2_2706 == DOLLARD) ) { s = 252; } else if ( (LA2_2706 == COMMA) ) { s = 253; } SEEK(index2_2706); if ( s>=0 ) { return s; } } break; case 329: { ANTLR3_UINT32 LA2_3638; ANTLR3_MARKER index2_3638; LA2_3638 = LA(1); index2_3638 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3638 == SEMI) ) { s = 3463; } else if ( (LA2_3638 == QMARK) ) { s = 854; } else if ( (LA2_3638 == SP) ) { s = 204; } else if ( (LA2_3638 == SLASH) ) { s = 3435; } else if ( (LA2_3638 == COMMON_CHAR || LA2_3638 == HEX_CHAR) ) { s = 3633; } else if ( (LA2_3638 == DIGIT) ) { s = 3634; } else if ( (LA2_3638 == DOT) ) { s = 3635; } else if ( (LA2_3638 == PERCENT) ) { s = 3636; } else if ( (LA2_3638 == COLON) ) { s = 3637; } else if ( (LA2_3638 == AT) ) { s = 2195; } else if ( (LA2_3638 == AND) ) { s = 3638; } else if ( (LA2_3638 == EQUAL) ) { s = 2197; } else if ( (LA2_3638 == PLUS) ) { s = 3639; } else if ( (LA2_3638 == DOLLARD) ) { s = 3640; } else if ( (LA2_3638 == COMMA) ) { s = 2200; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3638 == CRLF) ) { s = 205; } else if ( (LA2_3638 == DASH || LA2_3638 == EMARK || LA2_3638 == LPAREN || LA2_3638 == RPAREN || ((LA2_3638 >= SQUOTE) && (LA2_3638 <= USCORE))) ) { s = 3641; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3638 == LSBRAQUET || LA2_3638 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3638); if ( s>=0 ) { return s; } } break; case 330: { ANTLR3_UINT32 LA2_3140; ANTLR3_MARKER index2_3140; LA2_3140 = LA(1); index2_3140 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3140 == QMARK) ) { s = 854; } else if ( (LA2_3140 == SP) ) { s = 204; } else if ( (LA2_3140 == SLASH) ) { s = 2827; } else if ( (LA2_3140 == SEMI) ) { s = 2826; } else if ( (LA2_3140 == COMMON_CHAR || LA2_3140 == HEX_CHAR) ) { s = 3133; } else if ( (LA2_3140 == DIGIT) ) { s = 3134; } else if ( (LA2_3140 == DOT) ) { s = 3135; } else if ( (LA2_3140 == PERCENT) ) { s = 3136; } else if ( (LA2_3140 == COLON) ) { s = 3137; } else if ( (LA2_3140 == AT) ) { s = 2493; } else if ( (LA2_3140 == AND) ) { s = 3138; } else if ( (LA2_3140 == EQUAL) ) { s = 3416; } else if ( (LA2_3140 == PLUS) ) { s = 3139; } else if ( (LA2_3140 == DOLLARD) ) { s = 3140; } else if ( (LA2_3140 == COMMA) ) { s = 2498; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3140 == CRLF) ) { s = 205; } else if ( (LA2_3140 == DASH || LA2_3140 == EMARK || LA2_3140 == LPAREN || LA2_3140 == RPAREN || ((LA2_3140 >= SQUOTE) && (LA2_3140 <= USCORE))) ) { s = 3141; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3140 == LSBRAQUET || LA2_3140 == RSBRAQUET) ) { s = 405; } SEEK(index2_3140); if ( s>=0 ) { return s; } } break; case 331: { ANTLR3_UINT32 LA2_3637; ANTLR3_MARKER index2_3637; LA2_3637 = LA(1); index2_3637 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3637 == SEMI) ) { s = 3463; } else if ( (LA2_3637 == QMARK) ) { s = 854; } else if ( (LA2_3637 == SP) ) { s = 204; } else if ( (LA2_3637 == SLASH) ) { s = 3435; } else if ( (LA2_3637 == COMMON_CHAR || LA2_3637 == HEX_CHAR) ) { s = 3633; } else if ( (LA2_3637 == DIGIT) ) { s = 3634; } else if ( (LA2_3637 == DOT) ) { s = 3635; } else if ( (LA2_3637 == PERCENT) ) { s = 3636; } else if ( (LA2_3637 == COLON) ) { s = 3637; } else if ( (LA2_3637 == AT) ) { s = 2195; } else if ( (LA2_3637 == AND) ) { s = 3638; } else if ( (LA2_3637 == EQUAL) ) { s = 2197; } else if ( (LA2_3637 == PLUS) ) { s = 3639; } else if ( (LA2_3637 == DOLLARD) ) { s = 3640; } else if ( (LA2_3637 == COMMA) ) { s = 2200; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3637 == CRLF) ) { s = 205; } else if ( (LA2_3637 == DASH || LA2_3637 == EMARK || LA2_3637 == LPAREN || LA2_3637 == RPAREN || ((LA2_3637 >= SQUOTE) && (LA2_3637 <= USCORE))) ) { s = 3641; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3637 == LSBRAQUET || LA2_3637 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3637); if ( s>=0 ) { return s; } } break; case 332: { ANTLR3_UINT32 LA2_1274; ANTLR3_MARKER index2_1274; LA2_1274 = LA(1); index2_1274 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1274 == EQUAL) ) { s = 1768; } else if ( (LA2_1274 == QMARK) ) { s = 1272; } else if ( (LA2_1274 == COMMON_CHAR || LA2_1274 == HEX_CHAR) ) { s = 1273; } else if ( (LA2_1274 == DIGIT) ) { s = 1274; } else if ( (LA2_1274 == DASH || LA2_1274 == DOT || LA2_1274 == EMARK || LA2_1274 == LPAREN || LA2_1274 == RPAREN || ((LA2_1274 >= SQUOTE) && (LA2_1274 <= USCORE))) ) { s = 1275; } else if ( (LA2_1274 == PERCENT) ) { s = 1276; } else if ( (LA2_1274 == SP) ) { s = 35; } else if ( (LA2_1274 == SEMI) ) { s = 505; } else if ( (LA2_1274 == COMMA) ) { s = 506; } else if ( (LA2_1274 == COLON || LA2_1274 == DOLLARD || LA2_1274 == PLUS || LA2_1274 == SLASH) ) { s = 1277; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1274 == LSBRAQUET || LA2_1274 == RSBRAQUET) ) { s = 414; } else if ( (((LA2_1274 >= AND) && (LA2_1274 <= AT))) ) { s = 508; } SEEK(index2_1274); if ( s>=0 ) { return s; } } break; case 333: { ANTLR3_UINT32 LA2_2700; ANTLR3_MARKER index2_2700; LA2_2700 = LA(1); index2_2700 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2700 == EQUAL) ) { s = 3054; } else if ( (LA2_2700 == QMARK) ) { s = 2698; } else if ( (LA2_2700 == COMMON_CHAR || LA2_2700 == HEX_CHAR) ) { s = 2699; } else if ( (LA2_2700 == DIGIT) ) { s = 2700; } else if ( (LA2_2700 == DASH || LA2_2700 == DOT || LA2_2700 == EMARK || LA2_2700 == LPAREN || LA2_2700 == RPAREN || ((LA2_2700 >= SQUOTE) && (LA2_2700 <= USCORE))) ) { s = 2701; } else if ( (LA2_2700 == PERCENT) ) { s = 2702; } else if ( (LA2_2700 == SP) ) { s = 35; } else if ( (LA2_2700 == SEMI) ) { s = 505; } else if ( (LA2_2700 == COMMA) ) { s = 506; } else if ( (LA2_2700 == COLON || LA2_2700 == DOLLARD || LA2_2700 == PLUS || LA2_2700 == SLASH) ) { s = 2703; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2700 == LSBRAQUET || LA2_2700 == RSBRAQUET) ) { s = 1552; } else if ( (((LA2_2700 >= AND) && (LA2_2700 <= AT))) ) { s = 508; } SEEK(index2_2700); if ( s>=0 ) { return s; } } break; case 334: { ANTLR3_UINT32 LA2_3334; ANTLR3_MARKER index2_3334; LA2_3334 = LA(1); index2_3334 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3334 == SLASH) ) { s = 3031; } else if ( (LA2_3334 == QMARK) ) { s = 1751; } else if ( (LA2_3334 == SP) ) { s = 204; } else if ( (LA2_3334 == SEMI) ) { s = 3030; } else if ( (LA2_3334 == COMMON_CHAR || LA2_3334 == HEX_CHAR) ) { s = 3333; } else if ( (LA2_3334 == DIGIT) ) { s = 3334; } else if ( (LA2_3334 == DOT) ) { s = 3335; } else if ( (LA2_3334 == PERCENT) ) { s = 3336; } else if ( (LA2_3334 == COLON) ) { s = 3337; } else if ( (LA2_3334 == AT) ) { s = 2673; } else if ( (LA2_3334 == AND) ) { s = 3338; } else if ( (LA2_3334 == EQUAL) ) { s = 3578; } else if ( (LA2_3334 == PLUS) ) { s = 3339; } else if ( (LA2_3334 == DOLLARD) ) { s = 3340; } else if ( (LA2_3334 == COMMA) ) { s = 2678; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3334 == CRLF) ) { s = 205; } else if ( (LA2_3334 == DASH || LA2_3334 == EMARK || LA2_3334 == LPAREN || LA2_3334 == RPAREN || ((LA2_3334 >= SQUOTE) && (LA2_3334 <= USCORE))) ) { s = 3341; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3334 == LSBRAQUET || LA2_3334 == RSBRAQUET) ) { s = 405; } SEEK(index2_3334); if ( s>=0 ) { return s; } } break; case 335: { ANTLR3_UINT32 LA2_3640; ANTLR3_MARKER index2_3640; LA2_3640 = LA(1); index2_3640 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3640 == SEMI) ) { s = 3463; } else if ( (LA2_3640 == QMARK) ) { s = 854; } else if ( (LA2_3640 == SP) ) { s = 204; } else if ( (LA2_3640 == SLASH) ) { s = 3435; } else if ( (LA2_3640 == COMMON_CHAR || LA2_3640 == HEX_CHAR) ) { s = 3633; } else if ( (LA2_3640 == DIGIT) ) { s = 3634; } else if ( (LA2_3640 == DOT) ) { s = 3635; } else if ( (LA2_3640 == PERCENT) ) { s = 3636; } else if ( (LA2_3640 == COLON) ) { s = 3637; } else if ( (LA2_3640 == AT) ) { s = 2195; } else if ( (LA2_3640 == AND) ) { s = 3638; } else if ( (LA2_3640 == EQUAL) ) { s = 2197; } else if ( (LA2_3640 == PLUS) ) { s = 3639; } else if ( (LA2_3640 == DOLLARD) ) { s = 3640; } else if ( (LA2_3640 == COMMA) ) { s = 2200; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3640 == CRLF) ) { s = 205; } else if ( (LA2_3640 == DASH || LA2_3640 == EMARK || LA2_3640 == LPAREN || LA2_3640 == RPAREN || ((LA2_3640 >= SQUOTE) && (LA2_3640 <= USCORE))) ) { s = 3641; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3640 == LSBRAQUET || LA2_3640 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3640); if ( s>=0 ) { return s; } } break; case 336: { ANTLR3_UINT32 LA2_3139; ANTLR3_MARKER index2_3139; LA2_3139 = LA(1); index2_3139 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3139 == QMARK) ) { s = 854; } else if ( (LA2_3139 == SP) ) { s = 204; } else if ( (LA2_3139 == SLASH) ) { s = 2827; } else if ( (LA2_3139 == SEMI) ) { s = 2826; } else if ( (LA2_3139 == COMMON_CHAR || LA2_3139 == HEX_CHAR) ) { s = 3133; } else if ( (LA2_3139 == DIGIT) ) { s = 3134; } else if ( (LA2_3139 == DOT) ) { s = 3135; } else if ( (LA2_3139 == PERCENT) ) { s = 3136; } else if ( (LA2_3139 == COLON) ) { s = 3137; } else if ( (LA2_3139 == AT) ) { s = 2493; } else if ( (LA2_3139 == AND) ) { s = 3138; } else if ( (LA2_3139 == EQUAL) ) { s = 3416; } else if ( (LA2_3139 == PLUS) ) { s = 3139; } else if ( (LA2_3139 == DOLLARD) ) { s = 3140; } else if ( (LA2_3139 == COMMA) ) { s = 2498; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3139 == CRLF) ) { s = 205; } else if ( (LA2_3139 == DASH || LA2_3139 == EMARK || LA2_3139 == LPAREN || LA2_3139 == RPAREN || ((LA2_3139 >= SQUOTE) && (LA2_3139 <= USCORE))) ) { s = 3141; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3139 == LSBRAQUET || LA2_3139 == RSBRAQUET) ) { s = 405; } SEEK(index2_3139); if ( s>=0 ) { return s; } } break; case 337: { ANTLR3_UINT32 LA2_3639; ANTLR3_MARKER index2_3639; LA2_3639 = LA(1); index2_3639 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3639 == SEMI) ) { s = 3463; } else if ( (LA2_3639 == QMARK) ) { s = 854; } else if ( (LA2_3639 == SP) ) { s = 204; } else if ( (LA2_3639 == SLASH) ) { s = 3435; } else if ( (LA2_3639 == COMMON_CHAR || LA2_3639 == HEX_CHAR) ) { s = 3633; } else if ( (LA2_3639 == DIGIT) ) { s = 3634; } else if ( (LA2_3639 == DOT) ) { s = 3635; } else if ( (LA2_3639 == PERCENT) ) { s = 3636; } else if ( (LA2_3639 == COLON) ) { s = 3637; } else if ( (LA2_3639 == AT) ) { s = 2195; } else if ( (LA2_3639 == AND) ) { s = 3638; } else if ( (LA2_3639 == EQUAL) ) { s = 2197; } else if ( (LA2_3639 == PLUS) ) { s = 3639; } else if ( (LA2_3639 == DOLLARD) ) { s = 3640; } else if ( (LA2_3639 == COMMA) ) { s = 2200; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3639 == CRLF) ) { s = 205; } else if ( (LA2_3639 == DASH || LA2_3639 == EMARK || LA2_3639 == LPAREN || LA2_3639 == RPAREN || ((LA2_3639 >= SQUOTE) && (LA2_3639 <= USCORE))) ) { s = 3641; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3639 == LSBRAQUET || LA2_3639 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3639); if ( s>=0 ) { return s; } } break; case 338: { ANTLR3_UINT32 LA2_2263; ANTLR3_MARKER index2_2263; LA2_2263 = LA(1); index2_2263 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2263 == AND) ) { s = 2268; } else if ( (LA2_2263 == SP) ) { s = 35; } else if ( (LA2_2263 == QMARK) ) { s = 2263; } else if ( (LA2_2263 == COMMON_CHAR || LA2_2263 == HEX_CHAR) ) { s = 2264; } else if ( (LA2_2263 == DIGIT) ) { s = 2265; } else if ( (LA2_2263 == DASH || LA2_2263 == DOT || LA2_2263 == EMARK || LA2_2263 == LPAREN || LA2_2263 == RPAREN || ((LA2_2263 >= SQUOTE) && (LA2_2263 <= USCORE))) ) { s = 2266; } else if ( (LA2_2263 == PERCENT) ) { s = 2267; } else if ( (LA2_2263 == SEMI) ) { s = 505; } else if ( (LA2_2263 == COMMA) ) { s = 506; } else if ( (LA2_2263 == COLON || LA2_2263 == DOLLARD || LA2_2263 == PLUS || LA2_2263 == SLASH) ) { s = 2269; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2263 == LSBRAQUET || LA2_2263 == RSBRAQUET) ) { s = 1104; } else if ( (LA2_2263 == AT || LA2_2263 == EQUAL) ) { s = 508; } SEEK(index2_2263); if ( s>=0 ) { return s; } } break; case 339: { ANTLR3_UINT32 LA2_3684; ANTLR3_MARKER index2_3684; LA2_3684 = LA(1); index2_3684 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3684 == SEMI) ) { s = 3530; } else if ( (LA2_3684 == SLASH) ) { s = 3226; } else if ( (LA2_3684 == QMARK) ) { s = 854; } else if ( (LA2_3684 == SP) ) { s = 204; } else if ( (LA2_3684 == COMMON_CHAR || LA2_3684 == HEX_CHAR) ) { s = 3682; } else if ( (LA2_3684 == DIGIT) ) { s = 3683; } else if ( (LA2_3684 == DOT) ) { s = 3684; } else if ( (LA2_3684 == PERCENT) ) { s = 3685; } else if ( (LA2_3684 == COLON) ) { s = 3686; } else if ( (LA2_3684 == AT) ) { s = 2963; } else if ( (LA2_3684 == AND) ) { s = 3687; } else if ( (LA2_3684 == EQUAL) ) { s = 2965; } else if ( (LA2_3684 == PLUS) ) { s = 3688; } else if ( (LA2_3684 == DOLLARD) ) { s = 3689; } else if ( (LA2_3684 == COMMA) ) { s = 2968; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3684 == CRLF) ) { s = 205; } else if ( (LA2_3684 == DASH || LA2_3684 == EMARK || LA2_3684 == LPAREN || LA2_3684 == RPAREN || ((LA2_3684 >= SQUOTE) && (LA2_3684 <= USCORE))) ) { s = 3690; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3684 == LSBRAQUET || LA2_3684 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3684); if ( s>=0 ) { return s; } } break; case 340: { ANTLR3_UINT32 LA2_2444; ANTLR3_MARKER index2_2444; LA2_2444 = LA(1); index2_2444 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2444 == AND) ) { s = 1553; } else if ( (LA2_2444 == SP) ) { s = 35; } else if ( (LA2_2444 == QMARK) ) { s = 1102; } else if ( (LA2_2444 == COMMON_CHAR || LA2_2444 == HEX_CHAR) ) { s = 1554; } else if ( (LA2_2444 == DIGIT) ) { s = 1555; } else if ( (LA2_2444 == DASH || LA2_2444 == DOT || LA2_2444 == EMARK || LA2_2444 == LPAREN || LA2_2444 == RPAREN || ((LA2_2444 >= SQUOTE) && (LA2_2444 <= USCORE))) ) { s = 1556; } else if ( (LA2_2444 == PERCENT) ) { s = 1557; } else if ( (LA2_2444 == SEMI) ) { s = 105; } else if ( (LA2_2444 == COMMA) ) { s = 106; } else if ( (LA2_2444 == COLON || LA2_2444 == DOLLARD || LA2_2444 == PLUS || LA2_2444 == SLASH) ) { s = 1103; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2444 == LSBRAQUET || LA2_2444 == RSBRAQUET) ) { s = 1104; } else if ( (LA2_2444 == AT || LA2_2444 == EQUAL) ) { s = 108; } SEEK(index2_2444); if ( s>=0 ) { return s; } } break; case 341: { ANTLR3_UINT32 LA2_2920; ANTLR3_MARKER index2_2920; LA2_2920 = LA(1); index2_2920 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2920 == SEMI) ) { s = 2927; } else if ( (LA2_2920 == SLASH) ) { s = 2928; } else if ( (LA2_2920 == QMARK) ) { s = 854; } else if ( (LA2_2920 == SP) ) { s = 204; } else if ( (LA2_2920 == COMMON_CHAR || LA2_2920 == HEX_CHAR) ) { s = 2918; } else if ( (LA2_2920 == DIGIT) ) { s = 2919; } else if ( (LA2_2920 == DOT) ) { s = 2920; } else if ( (LA2_2920 == PERCENT) ) { s = 2921; } else if ( (LA2_2920 == COLON) ) { s = 2922; } else if ( (LA2_2920 == AT) ) { s = 1667; } else if ( (LA2_2920 == AND) ) { s = 2923; } else if ( (LA2_2920 == EQUAL) ) { s = 2924; } else if ( (LA2_2920 == PLUS) ) { s = 2925; } else if ( (LA2_2920 == DOLLARD) ) { s = 2926; } else if ( (LA2_2920 == COMMA) ) { s = 1672; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2920 == CRLF) ) { s = 205; } else if ( (LA2_2920 == DASH || LA2_2920 == EMARK || LA2_2920 == LPAREN || LA2_2920 == RPAREN || ((LA2_2920 >= SQUOTE) && (LA2_2920 <= USCORE))) ) { s = 2929; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2920 == LSBRAQUET || LA2_2920 == RSBRAQUET) ) { s = 405; } SEEK(index2_2920); if ( s>=0 ) { return s; } } break; case 342: { ANTLR3_UINT32 LA2_2010; ANTLR3_MARKER index2_2010; LA2_2010 = LA(1); index2_2010 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2010 == COMMON_CHAR || LA2_2010 == HEX_CHAR) ) { s = 2479; } else if ( (LA2_2010 == CRLF) ) { s = 2012; } else if ( (LA2_2010 == SP) ) { s = 2480; } else if ( (LA2_2010 == DIGIT) ) { s = 2481; } else if ( (LA2_2010 == DOT) ) { s = 2482; } else if ( (LA2_2010 == PERCENT) ) { s = 2483; } else if ( (LA2_2010 == PLUS) ) { s = 2484; } else if ( (LA2_2010 == BQUOTE) ) { s = 1203; } else if ( (LA2_2010 == DASH || LA2_2010 == EMARK || LA2_2010 == LPAREN || LA2_2010 == RPAREN || ((LA2_2010 >= SQUOTE) && (LA2_2010 <= USCORE))) ) { s = 2485; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2010 == AND || LA2_2010 == COLON || LA2_2010 == DOLLARD || LA2_2010 == LSBRAQUET || LA2_2010 == RSBRAQUET || LA2_2010 == SLASH) ) { s = 405; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2010 == SEMI) ) { s = 407; } SEEK(index2_2010); if ( s>=0 ) { return s; } } break; case 343: { ANTLR3_UINT32 LA2_3030; ANTLR3_MARKER index2_3030; LA2_3030 = LA(1); index2_3030 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3030 == COMMON_CHAR || LA2_3030 == HEX_CHAR) ) { s = 3333; } else if ( (LA2_3030 == DIGIT) ) { s = 3334; } else if ( (LA2_3030 == DOT) ) { s = 3335; } else if ( (LA2_3030 == PERCENT) ) { s = 3336; } else if ( (LA2_3030 == COLON) ) { s = 3337; } else if ( (LA2_3030 == AT) ) { s = 2673; } else if ( (LA2_3030 == AND) ) { s = 3338; } else if ( (LA2_3030 == EQUAL) ) { s = 2675; } else if ( (LA2_3030 == PLUS) ) { s = 3339; } else if ( (LA2_3030 == DOLLARD) ) { s = 3340; } else if ( (LA2_3030 == COMMA) ) { s = 2678; } else if ( (LA2_3030 == SLASH) ) { s = 3031; } else if ( (LA2_3030 == QMARK) ) { s = 1751; } else if ( (LA2_3030 == SP) ) { s = 402; } else if ( (LA2_3030 == SEMI) ) { s = 3030; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3030 == CRLF) ) { s = 403; } else if ( (LA2_3030 == DASH || LA2_3030 == EMARK || LA2_3030 == LPAREN || LA2_3030 == RPAREN || ((LA2_3030 >= SQUOTE) && (LA2_3030 <= USCORE))) ) { s = 3341; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3030 == LSBRAQUET || LA2_3030 == RSBRAQUET) ) { s = 405; } SEEK(index2_3030); if ( s>=0 ) { return s; } } break; case 344: { ANTLR3_UINT32 LA2_3236; ANTLR3_MARKER index2_3236; LA2_3236 = LA(1); index2_3236 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3236 == SLASH) ) { s = 2928; } else if ( (LA2_3236 == QMARK) ) { s = 854; } else if ( (LA2_3236 == SP) ) { s = 204; } else if ( (LA2_3236 == SEMI) ) { s = 2927; } else if ( (LA2_3236 == COMMON_CHAR || LA2_3236 == HEX_CHAR) ) { s = 3236; } else if ( (LA2_3236 == DIGIT) ) { s = 3237; } else if ( (LA2_3236 == DOT) ) { s = 3238; } else if ( (LA2_3236 == PERCENT) ) { s = 3239; } else if ( (LA2_3236 == COLON) ) { s = 2954; } else if ( (LA2_3236 == AT) ) { s = 2111; } else if ( (LA2_3236 == AND) ) { s = 2955; } else if ( (LA2_3236 == EQUAL) ) { s = 3264; } else if ( (LA2_3236 == PLUS) ) { s = 3240; } else if ( (LA2_3236 == DOLLARD) ) { s = 2956; } else if ( (LA2_3236 == COMMA) ) { s = 2116; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3236 == CRLF) ) { s = 205; } else if ( (LA2_3236 == DASH || LA2_3236 == EMARK || LA2_3236 == LPAREN || LA2_3236 == RPAREN || ((LA2_3236 >= SQUOTE) && (LA2_3236 <= USCORE))) ) { s = 3241; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3236 == LSBRAQUET || LA2_3236 == RSBRAQUET) ) { s = 405; } SEEK(index2_3236); if ( s>=0 ) { return s; } } break; case 345: { ANTLR3_UINT32 LA2_3821; ANTLR3_MARKER index2_3821; LA2_3821 = LA(1); index2_3821 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3821 == QMARK) ) { s = 1751; } else if ( (LA2_3821 == SP) ) { s = 204; } else if ( (LA2_3821 == SLASH) ) { s = 3323; } else if ( (LA2_3821 == SEMI) ) { s = 3351; } else if ( (LA2_3821 == COMMON_CHAR || LA2_3821 == HEX_CHAR) ) { s = 3819; } else if ( (LA2_3821 == DIGIT) ) { s = 3820; } else if ( (LA2_3821 == DOT) ) { s = 3821; } else if ( (LA2_3821 == PERCENT) ) { s = 3822; } else if ( (LA2_3821 == COLON) ) { s = 3823; } else if ( (LA2_3821 == AT) ) { s = 3043; } else if ( (LA2_3821 == AND) ) { s = 3824; } else if ( (LA2_3821 == EQUAL) ) { s = 3045; } else if ( (LA2_3821 == PLUS) ) { s = 3825; } else if ( (LA2_3821 == DOLLARD) ) { s = 3826; } else if ( (LA2_3821 == COMMA) ) { s = 3048; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3821 == CRLF) ) { s = 205; } else if ( (LA2_3821 == DASH || LA2_3821 == EMARK || LA2_3821 == LPAREN || LA2_3821 == RPAREN || ((LA2_3821 >= SQUOTE) && (LA2_3821 <= USCORE))) ) { s = 3827; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3821 == LSBRAQUET || LA2_3821 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3821); if ( s>=0 ) { return s; } } break; case 346: { ANTLR3_UINT32 LA2_1081; ANTLR3_MARKER index2_1081; LA2_1081 = LA(1); index2_1081 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1081 == DOT) ) { s = 1534; } else if ( (LA2_1081 == COMMON_CHAR || LA2_1081 == HEX_CHAR) ) { s = 1535; } else if ( (LA2_1081 == DIGIT) ) { s = 1536; } else if ( (LA2_1081 == AND || LA2_1081 == COLON || LA2_1081 == DOLLARD || LA2_1081 == PLUS || LA2_1081 == SLASH) ) { s = 1079; } else if ( (LA2_1081 == DASH || LA2_1081 == EMARK || LA2_1081 == LPAREN || LA2_1081 == RPAREN || ((LA2_1081 >= SQUOTE) && (LA2_1081 <= USCORE))) ) { s = 1537; } else if ( (LA2_1081 == PERCENT) ) { s = 1538; } else if ( (LA2_1081 == SP) ) { s = 35; } else if ( (LA2_1081 == SEMI) ) { s = 105; } else if ( (LA2_1081 == COMMA) ) { s = 106; } else if ( (LA2_1081 == QMARK) ) { s = 107; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1081 == LSBRAQUET || LA2_1081 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_1081 == AT || LA2_1081 == EQUAL) ) { s = 108; } SEEK(index2_1081); if ( s>=0 ) { return s; } } break; case 347: { ANTLR3_UINT32 LA2_2477; ANTLR3_MARKER index2_2477; LA2_2477 = LA(1); index2_2477 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2477 == COMMON_CHAR || LA2_2477 == HEX_CHAR) ) { s = 2860; } else if ( (LA2_2477 == DIGIT) ) { s = 2861; } else if ( (LA2_2477 == DOT) ) { s = 2862; } else if ( (LA2_2477 == PERCENT) ) { s = 2863; } else if ( (LA2_2477 == COLON) ) { s = 2534; } else if ( (LA2_2477 == AT) ) { s = 1576; } else if ( (LA2_2477 == AND) ) { s = 2535; } else if ( (LA2_2477 == EQUAL) ) { s = 1578; } else if ( (LA2_2477 == PLUS) ) { s = 2864; } else if ( (LA2_2477 == DOLLARD) ) { s = 2537; } else if ( (LA2_2477 == COMMA) ) { s = 1581; } else if ( (LA2_2477 == QMARK) ) { s = 854; } else if ( (LA2_2477 == SP) ) { s = 402; } else if ( (LA2_2477 == SLASH) ) { s = 2009; } else if ( (LA2_2477 == SEMI) ) { s = 2477; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2477 == CRLF) ) { s = 403; } else if ( (LA2_2477 == DASH || LA2_2477 == EMARK || LA2_2477 == LPAREN || LA2_2477 == RPAREN || ((LA2_2477 >= SQUOTE) && (LA2_2477 <= USCORE))) ) { s = 2865; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2477 == LSBRAQUET || LA2_2477 == RSBRAQUET) ) { s = 405; } SEEK(index2_2477); if ( s>=0 ) { return s; } } break; case 348: { ANTLR3_UINT32 LA2_2451; ANTLR3_MARKER index2_2451; LA2_2451 = LA(1); index2_2451 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2451 == COLON) ) { s = 2445; } else if ( (LA2_2451 == AT) ) { s = 89; } else if ( (LA2_2451 == COMMON_CHAR || LA2_2451 == HEX_CHAR) ) { s = 2446; } else if ( (LA2_2451 == DIGIT) ) { s = 2447; } else if ( (LA2_2451 == DASH || LA2_2451 == DOT || LA2_2451 == EMARK || LA2_2451 == LPAREN || LA2_2451 == RPAREN || ((LA2_2451 >= SQUOTE) && (LA2_2451 <= USCORE))) ) { s = 2448; } else if ( (LA2_2451 == PERCENT) ) { s = 2449; } else if ( (LA2_2451 == AND) ) { s = 1112; } else if ( (LA2_2451 == SP) ) { s = 35; } else if ( (LA2_2451 == QMARK) ) { s = 2450; } else if ( (LA2_2451 == SEMI) ) { s = 94; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2451 == LSBRAQUET || LA2_2451 == RSBRAQUET) ) { s = 2437; } else if ( (LA2_2451 == COMMA) ) { s = 97; } else if ( (LA2_2451 == EQUAL) ) { s = 99; } else if ( (LA2_2451 == DOLLARD || LA2_2451 == PLUS || LA2_2451 == SLASH) ) { s = 2451; } SEEK(index2_2451); if ( s>=0 ) { return s; } } break; case 349: { ANTLR3_UINT32 LA2_2248; ANTLR3_MARKER index2_2248; LA2_2248 = LA(1); index2_2248 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2248 == QMARK) ) { s = 854; } else if ( (LA2_2248 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2248 == CRLF) ) { s = 205; } else if ( (LA2_2248 == SEMI) ) { s = 853; } else if ( (LA2_2248 == DOT) ) { s = 2242; } else if ( (LA2_2248 == COMMON_CHAR || LA2_2248 == HEX_CHAR) ) { s = 2243; } else if ( (LA2_2248 == DIGIT) ) { s = 2244; } else if ( (LA2_2248 == SLASH) ) { s = 2245; } else if ( (LA2_2248 == DASH || LA2_2248 == EMARK || LA2_2248 == LPAREN || LA2_2248 == RPAREN || ((LA2_2248 >= SQUOTE) && (LA2_2248 <= USCORE))) ) { s = 2246; } else if ( (LA2_2248 == PERCENT) ) { s = 2247; } else if ( (LA2_2248 == COLON) ) { s = 2248; } else if ( (LA2_2248 == AND) ) { s = 2249; } else if ( (LA2_2248 == AT) ) { s = 497; } else if ( (LA2_2248 == PLUS) ) { s = 2250; } else if ( (LA2_2248 == EQUAL) ) { s = 499; } else if ( (LA2_2248 == DOLLARD) ) { s = 2251; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2248 == LSBRAQUET || LA2_2248 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_2248 == COMMA) ) { s = 502; } SEEK(index2_2248); if ( s>=0 ) { return s; } } break; case 350: { ANTLR3_UINT32 LA2_3618; ANTLR3_MARKER index2_3618; LA2_3618 = LA(1); index2_3618 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3618 == QMARK) ) { s = 854; } else if ( (LA2_3618 == SP) ) { s = 204; } else if ( (LA2_3618 == SLASH) ) { s = 3123; } else if ( (LA2_3618 == SEMI) ) { s = 2826; } else if ( (LA2_3618 == COMMON_CHAR || LA2_3618 == HEX_CHAR) ) { s = 3618; } else if ( (LA2_3618 == DIGIT) ) { s = 3619; } else if ( (LA2_3618 == DOT) ) { s = 3620; } else if ( (LA2_3618 == PERCENT) ) { s = 3621; } else if ( (LA2_3618 == COLON) ) { s = 3622; } else if ( (LA2_3618 == AT) ) { s = 2493; } else if ( (LA2_3618 == AND) ) { s = 3623; } else if ( (LA2_3618 == EQUAL) ) { s = 2495; } else if ( (LA2_3618 == PLUS) ) { s = 3624; } else if ( (LA2_3618 == DOLLARD) ) { s = 3625; } else if ( (LA2_3618 == COMMA) ) { s = 2498; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3618 == CRLF) ) { s = 205; } else if ( (LA2_3618 == DASH || LA2_3618 == EMARK || LA2_3618 == LPAREN || LA2_3618 == RPAREN || ((LA2_3618 >= SQUOTE) && (LA2_3618 <= USCORE))) ) { s = 3626; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3618 == LSBRAQUET || LA2_3618 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3618); if ( s>=0 ) { return s; } } break; case 351: { ANTLR3_UINT32 LA2_2250; ANTLR3_MARKER index2_2250; LA2_2250 = LA(1); index2_2250 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2250 == QMARK) ) { s = 854; } else if ( (LA2_2250 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2250 == CRLF) ) { s = 205; } else if ( (LA2_2250 == SEMI) ) { s = 853; } else if ( (LA2_2250 == DOT) ) { s = 2242; } else if ( (LA2_2250 == COMMON_CHAR || LA2_2250 == HEX_CHAR) ) { s = 2243; } else if ( (LA2_2250 == DIGIT) ) { s = 2244; } else if ( (LA2_2250 == SLASH) ) { s = 2245; } else if ( (LA2_2250 == DASH || LA2_2250 == EMARK || LA2_2250 == LPAREN || LA2_2250 == RPAREN || ((LA2_2250 >= SQUOTE) && (LA2_2250 <= USCORE))) ) { s = 2246; } else if ( (LA2_2250 == PERCENT) ) { s = 2247; } else if ( (LA2_2250 == COLON) ) { s = 2248; } else if ( (LA2_2250 == AND) ) { s = 2249; } else if ( (LA2_2250 == AT) ) { s = 497; } else if ( (LA2_2250 == PLUS) ) { s = 2250; } else if ( (LA2_2250 == EQUAL) ) { s = 499; } else if ( (LA2_2250 == DOLLARD) ) { s = 2251; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2250 == LSBRAQUET || LA2_2250 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_2250 == COMMA) ) { s = 502; } SEEK(index2_2250); if ( s>=0 ) { return s; } } break; case 352: { ANTLR3_UINT32 LA2_2207; ANTLR3_MARKER index2_2207; LA2_2207 = LA(1); index2_2207 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2207 == DOT) ) { s = 2648; } else if ( (LA2_2207 == COMMON_CHAR || LA2_2207 == HEX_CHAR) ) { s = 2649; } else if ( (LA2_2207 == DIGIT) ) { s = 2650; } else if ( (LA2_2207 == SLASH) ) { s = 2245; } else if ( (LA2_2207 == DASH || LA2_2207 == EMARK || LA2_2207 == LPAREN || LA2_2207 == RPAREN || ((LA2_2207 >= SQUOTE) && (LA2_2207 <= USCORE))) ) { s = 2651; } else if ( (LA2_2207 == PERCENT) ) { s = 2652; } else if ( (LA2_2207 == QMARK) ) { s = 242; } else if ( (LA2_2207 == SP) ) { s = 35; } else if ( (LA2_2207 == COLON) ) { s = 2653; } else if ( (LA2_2207 == SEMI) ) { s = 458; } else if ( (LA2_2207 == AND) ) { s = 2654; } else if ( (LA2_2207 == AT) ) { s = 810; } else if ( (LA2_2207 == PLUS) ) { s = 2655; } else if ( (LA2_2207 == EQUAL) ) { s = 812; } else if ( (LA2_2207 == DOLLARD) ) { s = 2656; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2207 == LSBRAQUET || LA2_2207 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_2207 == COMMA) ) { s = 815; } SEEK(index2_2207); if ( s>=0 ) { return s; } } break; case 353: { ANTLR3_UINT32 LA2_2251; ANTLR3_MARKER index2_2251; LA2_2251 = LA(1); index2_2251 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2251 == QMARK) ) { s = 854; } else if ( (LA2_2251 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2251 == CRLF) ) { s = 205; } else if ( (LA2_2251 == SEMI) ) { s = 853; } else if ( (LA2_2251 == DOT) ) { s = 2242; } else if ( (LA2_2251 == COMMON_CHAR || LA2_2251 == HEX_CHAR) ) { s = 2243; } else if ( (LA2_2251 == DIGIT) ) { s = 2244; } else if ( (LA2_2251 == SLASH) ) { s = 2245; } else if ( (LA2_2251 == DASH || LA2_2251 == EMARK || LA2_2251 == LPAREN || LA2_2251 == RPAREN || ((LA2_2251 >= SQUOTE) && (LA2_2251 <= USCORE))) ) { s = 2246; } else if ( (LA2_2251 == PERCENT) ) { s = 2247; } else if ( (LA2_2251 == COLON) ) { s = 2248; } else if ( (LA2_2251 == AND) ) { s = 2249; } else if ( (LA2_2251 == AT) ) { s = 497; } else if ( (LA2_2251 == PLUS) ) { s = 2250; } else if ( (LA2_2251 == EQUAL) ) { s = 499; } else if ( (LA2_2251 == DOLLARD) ) { s = 2251; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2251 == LSBRAQUET || LA2_2251 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_2251 == COMMA) ) { s = 502; } SEEK(index2_2251); if ( s>=0 ) { return s; } } break; case 354: { ANTLR3_UINT32 LA2_3341; ANTLR3_MARKER index2_3341; LA2_3341 = LA(1); index2_3341 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3341 == SLASH) ) { s = 3031; } else if ( (LA2_3341 == QMARK) ) { s = 1751; } else if ( (LA2_3341 == SP) ) { s = 204; } else if ( (LA2_3341 == SEMI) ) { s = 3030; } else if ( (LA2_3341 == COMMON_CHAR || LA2_3341 == HEX_CHAR) ) { s = 3333; } else if ( (LA2_3341 == DIGIT) ) { s = 3334; } else if ( (LA2_3341 == DOT) ) { s = 3335; } else if ( (LA2_3341 == PERCENT) ) { s = 3336; } else if ( (LA2_3341 == COLON) ) { s = 3337; } else if ( (LA2_3341 == AT) ) { s = 2673; } else if ( (LA2_3341 == AND) ) { s = 3338; } else if ( (LA2_3341 == EQUAL) ) { s = 3578; } else if ( (LA2_3341 == PLUS) ) { s = 3339; } else if ( (LA2_3341 == DOLLARD) ) { s = 3340; } else if ( (LA2_3341 == COMMA) ) { s = 2678; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3341 == CRLF) ) { s = 205; } else if ( (LA2_3341 == DASH || LA2_3341 == EMARK || LA2_3341 == LPAREN || LA2_3341 == RPAREN || ((LA2_3341 >= SQUOTE) && (LA2_3341 <= USCORE))) ) { s = 3341; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3341 == LSBRAQUET || LA2_3341 == RSBRAQUET) ) { s = 405; } SEEK(index2_3341); if ( s>=0 ) { return s; } } break; case 355: { ANTLR3_UINT32 LA2_2249; ANTLR3_MARKER index2_2249; LA2_2249 = LA(1); index2_2249 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2249 == QMARK) ) { s = 854; } else if ( (LA2_2249 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2249 == CRLF) ) { s = 205; } else if ( (LA2_2249 == SEMI) ) { s = 853; } else if ( (LA2_2249 == DOT) ) { s = 2242; } else if ( (LA2_2249 == COMMON_CHAR || LA2_2249 == HEX_CHAR) ) { s = 2243; } else if ( (LA2_2249 == DIGIT) ) { s = 2244; } else if ( (LA2_2249 == SLASH) ) { s = 2245; } else if ( (LA2_2249 == DASH || LA2_2249 == EMARK || LA2_2249 == LPAREN || LA2_2249 == RPAREN || ((LA2_2249 >= SQUOTE) && (LA2_2249 <= USCORE))) ) { s = 2246; } else if ( (LA2_2249 == PERCENT) ) { s = 2247; } else if ( (LA2_2249 == COLON) ) { s = 2248; } else if ( (LA2_2249 == AND) ) { s = 2249; } else if ( (LA2_2249 == AT) ) { s = 497; } else if ( (LA2_2249 == PLUS) ) { s = 2250; } else if ( (LA2_2249 == EQUAL) ) { s = 499; } else if ( (LA2_2249 == DOLLARD) ) { s = 2251; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2249 == LSBRAQUET || LA2_2249 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_2249 == COMMA) ) { s = 502; } SEEK(index2_2249); if ( s>=0 ) { return s; } } break; case 356: { ANTLR3_UINT32 LA2_3228; ANTLR3_MARKER index2_3228; LA2_3228 = LA(1); index2_3228 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3228 == SEMI) ) { s = 2927; } else if ( (LA2_3228 == SLASH) ) { s = 3226; } else if ( (LA2_3228 == QMARK) ) { s = 854; } else if ( (LA2_3228 == SP) ) { s = 204; } else if ( (LA2_3228 == COMMON_CHAR || LA2_3228 == HEX_CHAR) ) { s = 3227; } else if ( (LA2_3228 == DIGIT) ) { s = 3228; } else if ( (LA2_3228 == DOT) ) { s = 3229; } else if ( (LA2_3228 == PERCENT) ) { s = 3230; } else if ( (LA2_3228 == COLON) ) { s = 3231; } else if ( (LA2_3228 == AT) ) { s = 1667; } else if ( (LA2_3228 == AND) ) { s = 3232; } else if ( (LA2_3228 == EQUAL) ) { s = 1669; } else if ( (LA2_3228 == PLUS) ) { s = 3233; } else if ( (LA2_3228 == DOLLARD) ) { s = 3234; } else if ( (LA2_3228 == COMMA) ) { s = 1672; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3228 == CRLF) ) { s = 205; } else if ( (LA2_3228 == DASH || LA2_3228 == EMARK || LA2_3228 == LPAREN || LA2_3228 == RPAREN || ((LA2_3228 >= SQUOTE) && (LA2_3228 <= USCORE))) ) { s = 3235; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3228 == LSBRAQUET || LA2_3228 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3228); if ( s>=0 ) { return s; } } break; case 357: { ANTLR3_UINT32 LA2_3690; ANTLR3_MARKER index2_3690; LA2_3690 = LA(1); index2_3690 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3690 == SEMI) ) { s = 3530; } else if ( (LA2_3690 == SLASH) ) { s = 3226; } else if ( (LA2_3690 == QMARK) ) { s = 854; } else if ( (LA2_3690 == SP) ) { s = 204; } else if ( (LA2_3690 == COMMON_CHAR || LA2_3690 == HEX_CHAR) ) { s = 3682; } else if ( (LA2_3690 == DIGIT) ) { s = 3683; } else if ( (LA2_3690 == DOT) ) { s = 3684; } else if ( (LA2_3690 == PERCENT) ) { s = 3685; } else if ( (LA2_3690 == COLON) ) { s = 3686; } else if ( (LA2_3690 == AT) ) { s = 2963; } else if ( (LA2_3690 == AND) ) { s = 3687; } else if ( (LA2_3690 == EQUAL) ) { s = 2965; } else if ( (LA2_3690 == PLUS) ) { s = 3688; } else if ( (LA2_3690 == DOLLARD) ) { s = 3689; } else if ( (LA2_3690 == COMMA) ) { s = 2968; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3690 == CRLF) ) { s = 205; } else if ( (LA2_3690 == DASH || LA2_3690 == EMARK || LA2_3690 == LPAREN || LA2_3690 == RPAREN || ((LA2_3690 >= SQUOTE) && (LA2_3690 <= USCORE))) ) { s = 3690; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3690 == LSBRAQUET || LA2_3690 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3690); if ( s>=0 ) { return s; } } break; case 358: { ANTLR3_UINT32 LA2_3521; ANTLR3_MARKER index2_3521; LA2_3521 = LA(1); index2_3521 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3521 == SEMI) ) { s = 3530; } else if ( (LA2_3521 == SLASH) ) { s = 2928; } else if ( (LA2_3521 == QMARK) ) { s = 854; } else if ( (LA2_3521 == SP) ) { s = 204; } else if ( (LA2_3521 == COMMON_CHAR || LA2_3521 == HEX_CHAR) ) { s = 3521; } else if ( (LA2_3521 == DIGIT) ) { s = 3522; } else if ( (LA2_3521 == DOT) ) { s = 3523; } else if ( (LA2_3521 == PERCENT) ) { s = 3524; } else if ( (LA2_3521 == COLON) ) { s = 3525; } else if ( (LA2_3521 == AT) ) { s = 2963; } else if ( (LA2_3521 == AND) ) { s = 3526; } else if ( (LA2_3521 == EQUAL) ) { s = 3527; } else if ( (LA2_3521 == PLUS) ) { s = 3528; } else if ( (LA2_3521 == DOLLARD) ) { s = 3529; } else if ( (LA2_3521 == COMMA) ) { s = 2968; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3521 == CRLF) ) { s = 205; } else if ( (LA2_3521 == DASH || LA2_3521 == EMARK || LA2_3521 == LPAREN || LA2_3521 == RPAREN || ((LA2_3521 >= SQUOTE) && (LA2_3521 <= USCORE))) ) { s = 3531; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3521 == LSBRAQUET || LA2_3521 == RSBRAQUET) ) { s = 405; } SEEK(index2_3521); if ( s>=0 ) { return s; } } break; case 359: { ANTLR3_UINT32 LA2_2919; ANTLR3_MARKER index2_2919; LA2_2919 = LA(1); index2_2919 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2919 == SEMI) ) { s = 2927; } else if ( (LA2_2919 == SLASH) ) { s = 2928; } else if ( (LA2_2919 == QMARK) ) { s = 854; } else if ( (LA2_2919 == SP) ) { s = 204; } else if ( (LA2_2919 == COMMON_CHAR || LA2_2919 == HEX_CHAR) ) { s = 2918; } else if ( (LA2_2919 == DIGIT) ) { s = 2919; } else if ( (LA2_2919 == DOT) ) { s = 2920; } else if ( (LA2_2919 == PERCENT) ) { s = 2921; } else if ( (LA2_2919 == COLON) ) { s = 2922; } else if ( (LA2_2919 == AT) ) { s = 1667; } else if ( (LA2_2919 == AND) ) { s = 2923; } else if ( (LA2_2919 == EQUAL) ) { s = 2924; } else if ( (LA2_2919 == PLUS) ) { s = 2925; } else if ( (LA2_2919 == DOLLARD) ) { s = 2926; } else if ( (LA2_2919 == COMMA) ) { s = 1672; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2919 == CRLF) ) { s = 205; } else if ( (LA2_2919 == DASH || LA2_2919 == EMARK || LA2_2919 == LPAREN || LA2_2919 == RPAREN || ((LA2_2919 >= SQUOTE) && (LA2_2919 <= USCORE))) ) { s = 2929; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2919 == LSBRAQUET || LA2_2919 == RSBRAQUET) ) { s = 405; } SEEK(index2_2919); if ( s>=0 ) { return s; } } break; case 360: { ANTLR3_UINT32 LA2_3323; ANTLR3_MARKER index2_3323; LA2_3323 = LA(1); index2_3323 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3323 == COMMON_CHAR || LA2_3323 == HEX_CHAR) ) { s = 3568; } else if ( (LA2_3323 == DIGIT) ) { s = 3569; } else if ( (LA2_3323 == DOT) ) { s = 3570; } else if ( (LA2_3323 == PERCENT) ) { s = 3571; } else if ( (LA2_3323 == COLON) ) { s = 3572; } else if ( (LA2_3323 == AT) ) { s = 2684; } else if ( (LA2_3323 == AND) ) { s = 3573; } else if ( (LA2_3323 == EQUAL) ) { s = 2686; } else if ( (LA2_3323 == PLUS) ) { s = 3574; } else if ( (LA2_3323 == DOLLARD) ) { s = 3575; } else if ( (LA2_3323 == COMMA) ) { s = 2689; } else if ( (LA2_3323 == SEMI) ) { s = 3351; } else if ( (LA2_3323 == QMARK) ) { s = 1751; } else if ( (LA2_3323 == SP) ) { s = 204; } else if ( (LA2_3323 == SLASH) ) { s = 3323; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3323 == CRLF) ) { s = 205; } else if ( (LA2_3323 == DASH || LA2_3323 == EMARK || LA2_3323 == LPAREN || LA2_3323 == RPAREN || ((LA2_3323 >= SQUOTE) && (LA2_3323 <= USCORE))) ) { s = 3576; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3323 == LSBRAQUET || LA2_3323 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3323); if ( s>=0 ) { return s; } } break; case 361: { ANTLR3_UINT32 LA2_1526; ANTLR3_MARKER index2_1526; LA2_1526 = LA(1); index2_1526 = INDEX(); REWINDLAST(); s = -1; if ( (synpred1_belle_sip_message(ctx)) ) { s = 1552; } else if ( (synpred2_belle_sip_message(ctx)) ) { s = 1976; } SEEK(index2_1526); if ( s>=0 ) { return s; } } break; case 362: { ANTLR3_UINT32 LA2_2426; ANTLR3_MARKER index2_2426; LA2_2426 = LA(1); index2_2426 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2426 == DIGIT) ) { s = 2811; } else if ( (LA2_2426 == DASH) ) { s = 392; } else if ( (LA2_2426 == COMMON_CHAR || LA2_2426 == HEX_CHAR) ) { s = 390; } else if ( (LA2_2426 == DOT) ) { s = 389; } else if ( (LA2_2426 == COLON) ) { s = 692; } else if ( (LA2_2426 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2426 == CRLF) ) { s = 205; } else if ( (LA2_2426 == SEMI) ) { s = 693; } else if ( (LA2_2426 == QMARK) ) { s = 694; } else if ( (LA2_2426 == COMMA) ) { s = 106; } else if ( (((LA2_2426 >= AND) && (LA2_2426 <= AT)) || LA2_2426 == DOLLARD || LA2_2426 == EQUAL || LA2_2426 == PLUS || LA2_2426 == SLASH) ) { s = 108; } else if ( (LA2_2426 == EMARK || LA2_2426 == LPAREN || LA2_2426 == RPAREN || ((LA2_2426 >= SQUOTE) && (LA2_2426 <= USCORE))) ) { s = 111; } else if ( (LA2_2426 == PERCENT) ) { s = 112; } SEEK(index2_2426); if ( s>=0 ) { return s; } } break; case 363: { ANTLR3_UINT32 LA2_19; ANTLR3_MARKER index2_19; LA2_19 = LA(1); index2_19 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_19 == COLON) ) { s = 15; } else if ( (LA2_19 == COMMON_CHAR || LA2_19 == HEX_CHAR) ) { s = 16; } else if ( (LA2_19 == DIGIT) ) { s = 17; } else if ( (LA2_19 == DASH) ) { s = 18; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_19 == PERCENT) ) { s = 11; } else if ( (LA2_19 == PLUS) ) { s = 19; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_19 == BQUOTE) ) { s = 13; } else if ( (LA2_19 == DOT) ) { s = 20; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_19 == EMARK || LA2_19 == LPAREN || LA2_19 == RPAREN || ((LA2_19 >= SQUOTE) && (LA2_19 <= USCORE))) ) { s = 10; } SEEK(index2_19); if ( s>=0 ) { return s; } } break; case 364: { ANTLR3_UINT32 LA2_3135; ANTLR3_MARKER index2_3135; LA2_3135 = LA(1); index2_3135 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3135 == QMARK) ) { s = 854; } else if ( (LA2_3135 == SP) ) { s = 204; } else if ( (LA2_3135 == SLASH) ) { s = 2827; } else if ( (LA2_3135 == SEMI) ) { s = 2826; } else if ( (LA2_3135 == COMMON_CHAR || LA2_3135 == HEX_CHAR) ) { s = 3133; } else if ( (LA2_3135 == DIGIT) ) { s = 3134; } else if ( (LA2_3135 == DOT) ) { s = 3135; } else if ( (LA2_3135 == PERCENT) ) { s = 3136; } else if ( (LA2_3135 == COLON) ) { s = 3137; } else if ( (LA2_3135 == AT) ) { s = 2493; } else if ( (LA2_3135 == AND) ) { s = 3138; } else if ( (LA2_3135 == EQUAL) ) { s = 3416; } else if ( (LA2_3135 == PLUS) ) { s = 3139; } else if ( (LA2_3135 == DOLLARD) ) { s = 3140; } else if ( (LA2_3135 == COMMA) ) { s = 2498; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3135 == CRLF) ) { s = 205; } else if ( (LA2_3135 == DASH || LA2_3135 == EMARK || LA2_3135 == LPAREN || LA2_3135 == RPAREN || ((LA2_3135 >= SQUOTE) && (LA2_3135 <= USCORE))) ) { s = 3141; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3135 == LSBRAQUET || LA2_3135 == RSBRAQUET) ) { s = 405; } SEEK(index2_3135); if ( s>=0 ) { return s; } } break; case 365: { ANTLR3_UINT32 LA2_3324; ANTLR3_MARKER index2_3324; LA2_3324 = LA(1); index2_3324 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3324 == SEMI) ) { s = 3030; } else if ( (LA2_3324 == SLASH) ) { s = 3323; } else if ( (LA2_3324 == QMARK) ) { s = 1751; } else if ( (LA2_3324 == SP) ) { s = 204; } else if ( (LA2_3324 == COMMON_CHAR || LA2_3324 == HEX_CHAR) ) { s = 3324; } else if ( (LA2_3324 == DIGIT) ) { s = 3325; } else if ( (LA2_3324 == DOT) ) { s = 3326; } else if ( (LA2_3324 == PERCENT) ) { s = 3327; } else if ( (LA2_3324 == COLON) ) { s = 3328; } else if ( (LA2_3324 == AT) ) { s = 2229; } else if ( (LA2_3324 == AND) ) { s = 3329; } else if ( (LA2_3324 == EQUAL) ) { s = 2231; } else if ( (LA2_3324 == PLUS) ) { s = 3330; } else if ( (LA2_3324 == DOLLARD) ) { s = 3331; } else if ( (LA2_3324 == COMMA) ) { s = 2234; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3324 == CRLF) ) { s = 205; } else if ( (LA2_3324 == DASH || LA2_3324 == EMARK || LA2_3324 == LPAREN || LA2_3324 == RPAREN || ((LA2_3324 >= SQUOTE) && (LA2_3324 <= USCORE))) ) { s = 3332; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3324 == LSBRAQUET || LA2_3324 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3324); if ( s>=0 ) { return s; } } break; case 366: { ANTLR3_UINT32 LA2_1786; ANTLR3_MARKER index2_1786; LA2_1786 = LA(1); index2_1786 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1786 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1786 == CRLF) ) { s = 205; } else if ( (LA2_1786 == SEMI) ) { s = 1307; } else if ( (LA2_1786 == QMARK) ) { s = 1308; } else if ( (LA2_1786 == DIGIT) ) { s = 1786; } else if ( (LA2_1786 == COMMA) ) { s = 506; } else if ( (((LA2_1786 >= AND) && (LA2_1786 <= AT)) || LA2_1786 == COLON || LA2_1786 == DOLLARD || LA2_1786 == EQUAL || LA2_1786 == PLUS || LA2_1786 == SLASH) ) { s = 508; } else if ( (LA2_1786 == COMMON_CHAR || LA2_1786 == HEX_CHAR) ) { s = 509; } else if ( (LA2_1786 == DASH || LA2_1786 == DOT || LA2_1786 == EMARK || LA2_1786 == LPAREN || LA2_1786 == RPAREN || ((LA2_1786 >= SQUOTE) && (LA2_1786 <= USCORE))) ) { s = 511; } else if ( (LA2_1786 == PERCENT) ) { s = 512; } SEEK(index2_1786); if ( s>=0 ) { return s; } } break; case 367: { ANTLR3_UINT32 LA2_3795; ANTLR3_MARKER index2_3795; LA2_3795 = LA(1); index2_3795 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3795 == QMARK) ) { s = 854; } else if ( (LA2_3795 == SP) ) { s = 204; } else if ( (LA2_3795 == SLASH) ) { s = 2928; } else if ( (LA2_3795 == SEMI) ) { s = 3251; } else if ( (LA2_3795 == COMMON_CHAR || LA2_3795 == HEX_CHAR) ) { s = 3503; } else if ( (LA2_3795 == DIGIT) ) { s = 3504; } else if ( (LA2_3795 == DOT) ) { s = 3505; } else if ( (LA2_3795 == PERCENT) ) { s = 3506; } else if ( (LA2_3795 == COLON) ) { s = 3291; } else if ( (LA2_3795 == AT) ) { s = 2578; } else if ( (LA2_3795 == AND) ) { s = 3292; } else if ( (LA2_3795 == EQUAL) ) { s = 3550; } else if ( (LA2_3795 == PLUS) ) { s = 3507; } else if ( (LA2_3795 == DOLLARD) ) { s = 3293; } else if ( (LA2_3795 == COMMA) ) { s = 2583; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3795 == CRLF) ) { s = 205; } else if ( (LA2_3795 == DASH || LA2_3795 == EMARK || LA2_3795 == LPAREN || LA2_3795 == RPAREN || ((LA2_3795 >= SQUOTE) && (LA2_3795 <= USCORE))) ) { s = 3508; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3795 == LSBRAQUET || LA2_3795 == RSBRAQUET) ) { s = 405; } SEEK(index2_3795); if ( s>=0 ) { return s; } } break; case 368: { ANTLR3_UINT32 LA2_206; ANTLR3_MARKER index2_206; LA2_206 = LA(1); index2_206 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_206 == COLON) ) { s = 408; } else if ( (LA2_206 == AT) ) { s = 89; } else if ( (LA2_206 == COMMON_CHAR || LA2_206 == HEX_CHAR) ) { s = 409; } else if ( (LA2_206 == DIGIT) ) { s = 410; } else if ( (LA2_206 == DASH || LA2_206 == DOT || LA2_206 == EMARK || LA2_206 == LPAREN || LA2_206 == RPAREN || ((LA2_206 >= SQUOTE) && (LA2_206 <= USCORE))) ) { s = 411; } else if ( (LA2_206 == PERCENT) ) { s = 412; } else if ( (LA2_206 == QMARK) ) { s = 413; } else if ( (LA2_206 == SEMI) ) { s = 94; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_206 == LSBRAQUET || LA2_206 == RSBRAQUET) ) { s = 414; } else if ( (LA2_206 == SP) ) { s = 35; } else if ( (LA2_206 == COMMA) ) { s = 97; } else if ( (LA2_206 == AND || LA2_206 == EQUAL) ) { s = 99; } else if ( (LA2_206 == DOLLARD || LA2_206 == PLUS || LA2_206 == SLASH) ) { s = 415; } SEEK(index2_206); if ( s>=0 ) { return s; } } break; case 369: { ANTLR3_UINT32 LA2_3827; ANTLR3_MARKER index2_3827; LA2_3827 = LA(1); index2_3827 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3827 == QMARK) ) { s = 1751; } else if ( (LA2_3827 == SP) ) { s = 204; } else if ( (LA2_3827 == SLASH) ) { s = 3323; } else if ( (LA2_3827 == SEMI) ) { s = 3351; } else if ( (LA2_3827 == COMMON_CHAR || LA2_3827 == HEX_CHAR) ) { s = 3819; } else if ( (LA2_3827 == DIGIT) ) { s = 3820; } else if ( (LA2_3827 == DOT) ) { s = 3821; } else if ( (LA2_3827 == PERCENT) ) { s = 3822; } else if ( (LA2_3827 == COLON) ) { s = 3823; } else if ( (LA2_3827 == AT) ) { s = 3043; } else if ( (LA2_3827 == AND) ) { s = 3824; } else if ( (LA2_3827 == EQUAL) ) { s = 3045; } else if ( (LA2_3827 == PLUS) ) { s = 3825; } else if ( (LA2_3827 == DOLLARD) ) { s = 3826; } else if ( (LA2_3827 == COMMA) ) { s = 3048; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3827 == CRLF) ) { s = 205; } else if ( (LA2_3827 == DASH || LA2_3827 == EMARK || LA2_3827 == LPAREN || LA2_3827 == RPAREN || ((LA2_3827 >= SQUOTE) && (LA2_3827 <= USCORE))) ) { s = 3827; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3827 == LSBRAQUET || LA2_3827 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3827); if ( s>=0 ) { return s; } } break; case 370: { ANTLR3_UINT32 LA2_1775; ANTLR3_MARKER index2_1775; LA2_1775 = LA(1); index2_1775 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1775 == COMMON_CHAR || LA2_1775 == HEX_CHAR) ) { s = 1775; } else if ( (LA2_1775 == DIGIT) ) { s = 1776; } else if ( (LA2_1775 == DASH) ) { s = 1777; } else if ( (LA2_1775 == DOT) ) { s = 2275; } else if ( (LA2_1775 == COLON) ) { s = 2276; } else if ( (LA2_1775 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1775 == CRLF) ) { s = 205; } else if ( (LA2_1775 == SEMI) ) { s = 1237; } else if ( (LA2_1775 == QMARK) ) { s = 854; } else if ( (LA2_1775 == SLASH) ) { s = 241; } else if ( (LA2_1775 == EMARK || LA2_1775 == LPAREN || LA2_1775 == RPAREN || ((LA2_1775 >= SQUOTE) && (LA2_1775 <= USCORE))) ) { s = 807; } else if ( (LA2_1775 == PERCENT) ) { s = 808; } else if ( (LA2_1775 == AT) ) { s = 810; } else if ( (LA2_1775 == AND) ) { s = 811; } else if ( (LA2_1775 == EQUAL) ) { s = 812; } else if ( (LA2_1775 == PLUS) ) { s = 813; } else if ( (LA2_1775 == DOLLARD) ) { s = 814; } else if ( (LA2_1775 == COMMA) ) { s = 815; } SEEK(index2_1775); if ( s>=0 ) { return s; } } break; case 371: { ANTLR3_UINT32 LA2_1555; ANTLR3_MARKER index2_1555; LA2_1555 = LA(1); index2_1555 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1555 == AND) ) { s = 1553; } else if ( (LA2_1555 == SP) ) { s = 35; } else if ( (LA2_1555 == QMARK) ) { s = 1102; } else if ( (LA2_1555 == COMMON_CHAR || LA2_1555 == HEX_CHAR) ) { s = 1554; } else if ( (LA2_1555 == DIGIT) ) { s = 1555; } else if ( (LA2_1555 == DASH || LA2_1555 == DOT || LA2_1555 == EMARK || LA2_1555 == LPAREN || LA2_1555 == RPAREN || ((LA2_1555 >= SQUOTE) && (LA2_1555 <= USCORE))) ) { s = 1556; } else if ( (LA2_1555 == PERCENT) ) { s = 1557; } else if ( (LA2_1555 == SEMI) ) { s = 105; } else if ( (LA2_1555 == COMMA) ) { s = 106; } else if ( (LA2_1555 == COLON || LA2_1555 == DOLLARD || LA2_1555 == PLUS || LA2_1555 == SLASH) ) { s = 1103; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1555 == LSBRAQUET || LA2_1555 == RSBRAQUET) ) { s = 1104; } else if ( (LA2_1555 == AT || LA2_1555 == EQUAL) ) { s = 108; } SEEK(index2_1555); if ( s>=0 ) { return s; } } break; case 372: { ANTLR3_UINT32 LA2_3686; ANTLR3_MARKER index2_3686; LA2_3686 = LA(1); index2_3686 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3686 == SEMI) ) { s = 3530; } else if ( (LA2_3686 == SLASH) ) { s = 3226; } else if ( (LA2_3686 == QMARK) ) { s = 854; } else if ( (LA2_3686 == SP) ) { s = 204; } else if ( (LA2_3686 == COMMON_CHAR || LA2_3686 == HEX_CHAR) ) { s = 3682; } else if ( (LA2_3686 == DIGIT) ) { s = 3683; } else if ( (LA2_3686 == DOT) ) { s = 3684; } else if ( (LA2_3686 == PERCENT) ) { s = 3685; } else if ( (LA2_3686 == COLON) ) { s = 3686; } else if ( (LA2_3686 == AT) ) { s = 2963; } else if ( (LA2_3686 == AND) ) { s = 3687; } else if ( (LA2_3686 == EQUAL) ) { s = 2965; } else if ( (LA2_3686 == PLUS) ) { s = 3688; } else if ( (LA2_3686 == DOLLARD) ) { s = 3689; } else if ( (LA2_3686 == COMMA) ) { s = 2968; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3686 == CRLF) ) { s = 205; } else if ( (LA2_3686 == DASH || LA2_3686 == EMARK || LA2_3686 == LPAREN || LA2_3686 == RPAREN || ((LA2_3686 >= SQUOTE) && (LA2_3686 <= USCORE))) ) { s = 3690; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3686 == LSBRAQUET || LA2_3686 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3686); if ( s>=0 ) { return s; } } break; case 373: { ANTLR3_UINT32 LA2_413; ANTLR3_MARKER index2_413; LA2_413 = LA(1); index2_413 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_413 == COLON) ) { s = 408; } else if ( (LA2_413 == AT) ) { s = 89; } else if ( (LA2_413 == COMMON_CHAR || LA2_413 == HEX_CHAR) ) { s = 409; } else if ( (LA2_413 == DIGIT) ) { s = 410; } else if ( (LA2_413 == DASH || LA2_413 == DOT || LA2_413 == EMARK || LA2_413 == LPAREN || LA2_413 == RPAREN || ((LA2_413 >= SQUOTE) && (LA2_413 <= USCORE))) ) { s = 411; } else if ( (LA2_413 == PERCENT) ) { s = 412; } else if ( (LA2_413 == EQUAL) ) { s = 726; } else if ( (LA2_413 == QMARK) ) { s = 413; } else if ( (LA2_413 == SEMI) ) { s = 94; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_413 == LSBRAQUET || LA2_413 == RSBRAQUET) ) { s = 414; } else if ( (LA2_413 == SP) ) { s = 35; } else if ( (LA2_413 == COMMA) ) { s = 97; } else if ( (LA2_413 == AND) ) { s = 99; } else if ( (LA2_413 == DOLLARD || LA2_413 == PLUS || LA2_413 == SLASH) ) { s = 415; } SEEK(index2_413); if ( s>=0 ) { return s; } } break; case 374: { ANTLR3_UINT32 LA2_1564; ANTLR3_MARKER index2_1564; LA2_1564 = LA(1); index2_1564 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1564 == COLON) ) { s = 1559; } else if ( (LA2_1564 == AT) ) { s = 89; } else if ( (LA2_1564 == COMMON_CHAR || LA2_1564 == HEX_CHAR) ) { s = 1560; } else if ( (LA2_1564 == DIGIT) ) { s = 1561; } else if ( (LA2_1564 == DASH || LA2_1564 == DOT || LA2_1564 == EMARK || LA2_1564 == LPAREN || LA2_1564 == RPAREN || ((LA2_1564 >= SQUOTE) && (LA2_1564 <= USCORE))) ) { s = 1562; } else if ( (LA2_1564 == PERCENT) ) { s = 1563; } else if ( (LA2_1564 == EQUAL) ) { s = 1995; } else if ( (LA2_1564 == QMARK) ) { s = 1564; } else if ( (LA2_1564 == SEMI) ) { s = 94; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1564 == LSBRAQUET || LA2_1564 == RSBRAQUET) ) { s = 1552; } else if ( (LA2_1564 == SP) ) { s = 35; } else if ( (LA2_1564 == COMMA) ) { s = 97; } else if ( (LA2_1564 == AND) ) { s = 99; } else if ( (LA2_1564 == DOLLARD || LA2_1564 == PLUS || LA2_1564 == SLASH) ) { s = 1565; } SEEK(index2_1564); if ( s>=0 ) { return s; } } break; case 375: { ANTLR3_UINT32 LA2_3619; ANTLR3_MARKER index2_3619; LA2_3619 = LA(1); index2_3619 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3619 == QMARK) ) { s = 854; } else if ( (LA2_3619 == SP) ) { s = 204; } else if ( (LA2_3619 == SLASH) ) { s = 3123; } else if ( (LA2_3619 == SEMI) ) { s = 2826; } else if ( (LA2_3619 == COMMON_CHAR || LA2_3619 == HEX_CHAR) ) { s = 3618; } else if ( (LA2_3619 == DIGIT) ) { s = 3619; } else if ( (LA2_3619 == DOT) ) { s = 3620; } else if ( (LA2_3619 == PERCENT) ) { s = 3621; } else if ( (LA2_3619 == COLON) ) { s = 3622; } else if ( (LA2_3619 == AT) ) { s = 2493; } else if ( (LA2_3619 == AND) ) { s = 3623; } else if ( (LA2_3619 == EQUAL) ) { s = 2495; } else if ( (LA2_3619 == PLUS) ) { s = 3624; } else if ( (LA2_3619 == DOLLARD) ) { s = 3625; } else if ( (LA2_3619 == COMMA) ) { s = 2498; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3619 == CRLF) ) { s = 205; } else if ( (LA2_3619 == DASH || LA2_3619 == EMARK || LA2_3619 == LPAREN || LA2_3619 == RPAREN || ((LA2_3619 >= SQUOTE) && (LA2_3619 <= USCORE))) ) { s = 3626; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3619 == LSBRAQUET || LA2_3619 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3619); if ( s>=0 ) { return s; } } break; case 376: { ANTLR3_UINT32 LA2_3866; ANTLR3_MARKER index2_3866; LA2_3866 = LA(1); index2_3866 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3866 == QMARK) ) { s = 854; } else if ( (LA2_3866 == SP) ) { s = 204; } else if ( (LA2_3866 == SLASH) ) { s = 3226; } else if ( (LA2_3866 == SEMI) ) { s = 3251; } else if ( (LA2_3866 == COMMON_CHAR || LA2_3866 == HEX_CHAR) ) { s = 3718; } else if ( (LA2_3866 == DIGIT) ) { s = 3719; } else if ( (LA2_3866 == DOT) ) { s = 3720; } else if ( (LA2_3866 == PERCENT) ) { s = 3721; } else if ( (LA2_3866 == COLON) ) { s = 3712; } else if ( (LA2_3866 == AT) ) { s = 2578; } else if ( (LA2_3866 == AND) ) { s = 3713; } else if ( (LA2_3866 == EQUAL) ) { s = 2580; } else if ( (LA2_3866 == PLUS) ) { s = 3722; } else if ( (LA2_3866 == DOLLARD) ) { s = 3714; } else if ( (LA2_3866 == COMMA) ) { s = 2583; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3866 == CRLF) ) { s = 205; } else if ( (LA2_3866 == DASH || LA2_3866 == EMARK || LA2_3866 == LPAREN || LA2_3866 == RPAREN || ((LA2_3866 >= SQUOTE) && (LA2_3866 <= USCORE))) ) { s = 3723; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3866 == LSBRAQUET || LA2_3866 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3866); if ( s>=0 ) { return s; } } break; case 377: { ANTLR3_UINT32 LA2_701; ANTLR3_MARKER index2_701; LA2_701 = LA(1); index2_701 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_701 == AT) ) { s = 89; } else if ( (LA2_701 == COMMON_CHAR || LA2_701 == HEX_CHAR) ) { s = 699; } else if ( (LA2_701 == DIGIT) ) { s = 700; } else if ( (LA2_701 == DOT) ) { s = 701; } else if ( (LA2_701 == PERCENT) ) { s = 702; } else if ( (LA2_701 == AND) ) { s = 703; } else if ( (LA2_701 == EQUAL) ) { s = 704; } else if ( (LA2_701 == PLUS) ) { s = 705; } else if ( (LA2_701 == DOLLARD) ) { s = 706; } else if ( (LA2_701 == COMMA) ) { s = 197; } else if ( (LA2_701 == QMARK) ) { s = 694; } else if ( (LA2_701 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_701 == CRLF) ) { s = 205; } else if ( (LA2_701 == SEMI) ) { s = 693; } else if ( (LA2_701 == DASH || LA2_701 == EMARK || LA2_701 == LPAREN || LA2_701 == RPAREN || ((LA2_701 >= SQUOTE) && (LA2_701 <= USCORE))) ) { s = 707; } else if ( (LA2_701 == COLON || LA2_701 == SLASH) ) { s = 708; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_701 == LSBRAQUET || LA2_701 == RSBRAQUET) ) { s = 405; } SEEK(index2_701); if ( s>=0 ) { return s; } } break; case 378: { ANTLR3_UINT32 LA2_3687; ANTLR3_MARKER index2_3687; LA2_3687 = LA(1); index2_3687 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3687 == SEMI) ) { s = 3530; } else if ( (LA2_3687 == SLASH) ) { s = 3226; } else if ( (LA2_3687 == QMARK) ) { s = 854; } else if ( (LA2_3687 == SP) ) { s = 204; } else if ( (LA2_3687 == COMMON_CHAR || LA2_3687 == HEX_CHAR) ) { s = 3682; } else if ( (LA2_3687 == DIGIT) ) { s = 3683; } else if ( (LA2_3687 == DOT) ) { s = 3684; } else if ( (LA2_3687 == PERCENT) ) { s = 3685; } else if ( (LA2_3687 == COLON) ) { s = 3686; } else if ( (LA2_3687 == AT) ) { s = 2963; } else if ( (LA2_3687 == AND) ) { s = 3687; } else if ( (LA2_3687 == EQUAL) ) { s = 2965; } else if ( (LA2_3687 == PLUS) ) { s = 3688; } else if ( (LA2_3687 == DOLLARD) ) { s = 3689; } else if ( (LA2_3687 == COMMA) ) { s = 2968; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3687 == CRLF) ) { s = 205; } else if ( (LA2_3687 == DASH || LA2_3687 == EMARK || LA2_3687 == LPAREN || LA2_3687 == RPAREN || ((LA2_3687 >= SQUOTE) && (LA2_3687 <= USCORE))) ) { s = 3690; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3687 == LSBRAQUET || LA2_3687 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3687); if ( s>=0 ) { return s; } } break; case 379: { ANTLR3_UINT32 LA2_3134; ANTLR3_MARKER index2_3134; LA2_3134 = LA(1); index2_3134 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3134 == QMARK) ) { s = 854; } else if ( (LA2_3134 == SP) ) { s = 204; } else if ( (LA2_3134 == SLASH) ) { s = 2827; } else if ( (LA2_3134 == SEMI) ) { s = 2826; } else if ( (LA2_3134 == COMMON_CHAR || LA2_3134 == HEX_CHAR) ) { s = 3133; } else if ( (LA2_3134 == DIGIT) ) { s = 3134; } else if ( (LA2_3134 == DOT) ) { s = 3135; } else if ( (LA2_3134 == PERCENT) ) { s = 3136; } else if ( (LA2_3134 == COLON) ) { s = 3137; } else if ( (LA2_3134 == AT) ) { s = 2493; } else if ( (LA2_3134 == AND) ) { s = 3138; } else if ( (LA2_3134 == EQUAL) ) { s = 3416; } else if ( (LA2_3134 == PLUS) ) { s = 3139; } else if ( (LA2_3134 == DOLLARD) ) { s = 3140; } else if ( (LA2_3134 == COMMA) ) { s = 2498; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3134 == CRLF) ) { s = 205; } else if ( (LA2_3134 == DASH || LA2_3134 == EMARK || LA2_3134 == LPAREN || LA2_3134 == RPAREN || ((LA2_3134 >= SQUOTE) && (LA2_3134 <= USCORE))) ) { s = 3141; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3134 == LSBRAQUET || LA2_3134 == RSBRAQUET) ) { s = 405; } SEEK(index2_3134); if ( s>=0 ) { return s; } } break; case 380: { ANTLR3_UINT32 LA2_3493; ANTLR3_MARKER index2_3493; LA2_3493 = LA(1); index2_3493 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3493 == SEMI) ) { s = 3251; } else if ( (LA2_3493 == QMARK) ) { s = 854; } else if ( (LA2_3493 == SP) ) { s = 204; } else if ( (LA2_3493 == SLASH) ) { s = 3226; } else if ( (LA2_3493 == COMMON_CHAR || LA2_3493 == HEX_CHAR) ) { s = 3491; } else if ( (LA2_3493 == DIGIT) ) { s = 3492; } else if ( (LA2_3493 == DOT) ) { s = 3493; } else if ( (LA2_3493 == PERCENT) ) { s = 3494; } else if ( (LA2_3493 == COLON) ) { s = 3495; } else if ( (LA2_3493 == AT) ) { s = 2122; } else if ( (LA2_3493 == AND) ) { s = 3496; } else if ( (LA2_3493 == EQUAL) ) { s = 2124; } else if ( (LA2_3493 == PLUS) ) { s = 3497; } else if ( (LA2_3493 == DOLLARD) ) { s = 3498; } else if ( (LA2_3493 == COMMA) ) { s = 2127; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3493 == CRLF) ) { s = 205; } else if ( (LA2_3493 == DASH || LA2_3493 == EMARK || LA2_3493 == LPAREN || LA2_3493 == RPAREN || ((LA2_3493 >= SQUOTE) && (LA2_3493 <= USCORE))) ) { s = 3499; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3493 == LSBRAQUET || LA2_3493 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3493); if ( s>=0 ) { return s; } } break; case 381: { ANTLR3_UINT32 LA2_3688; ANTLR3_MARKER index2_3688; LA2_3688 = LA(1); index2_3688 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3688 == SEMI) ) { s = 3530; } else if ( (LA2_3688 == SLASH) ) { s = 3226; } else if ( (LA2_3688 == QMARK) ) { s = 854; } else if ( (LA2_3688 == SP) ) { s = 204; } else if ( (LA2_3688 == COMMON_CHAR || LA2_3688 == HEX_CHAR) ) { s = 3682; } else if ( (LA2_3688 == DIGIT) ) { s = 3683; } else if ( (LA2_3688 == DOT) ) { s = 3684; } else if ( (LA2_3688 == PERCENT) ) { s = 3685; } else if ( (LA2_3688 == COLON) ) { s = 3686; } else if ( (LA2_3688 == AT) ) { s = 2963; } else if ( (LA2_3688 == AND) ) { s = 3687; } else if ( (LA2_3688 == EQUAL) ) { s = 2965; } else if ( (LA2_3688 == PLUS) ) { s = 3688; } else if ( (LA2_3688 == DOLLARD) ) { s = 3689; } else if ( (LA2_3688 == COMMA) ) { s = 2968; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3688 == CRLF) ) { s = 205; } else if ( (LA2_3688 == DASH || LA2_3688 == EMARK || LA2_3688 == LPAREN || LA2_3688 == RPAREN || ((LA2_3688 >= SQUOTE) && (LA2_3688 <= USCORE))) ) { s = 3690; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3688 == LSBRAQUET || LA2_3688 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3688); if ( s>=0 ) { return s; } } break; case 382: { ANTLR3_UINT32 LA2_3689; ANTLR3_MARKER index2_3689; LA2_3689 = LA(1); index2_3689 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3689 == SEMI) ) { s = 3530; } else if ( (LA2_3689 == SLASH) ) { s = 3226; } else if ( (LA2_3689 == QMARK) ) { s = 854; } else if ( (LA2_3689 == SP) ) { s = 204; } else if ( (LA2_3689 == COMMON_CHAR || LA2_3689 == HEX_CHAR) ) { s = 3682; } else if ( (LA2_3689 == DIGIT) ) { s = 3683; } else if ( (LA2_3689 == DOT) ) { s = 3684; } else if ( (LA2_3689 == PERCENT) ) { s = 3685; } else if ( (LA2_3689 == COLON) ) { s = 3686; } else if ( (LA2_3689 == AT) ) { s = 2963; } else if ( (LA2_3689 == AND) ) { s = 3687; } else if ( (LA2_3689 == EQUAL) ) { s = 2965; } else if ( (LA2_3689 == PLUS) ) { s = 3688; } else if ( (LA2_3689 == DOLLARD) ) { s = 3689; } else if ( (LA2_3689 == COMMA) ) { s = 2968; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3689 == CRLF) ) { s = 205; } else if ( (LA2_3689 == DASH || LA2_3689 == EMARK || LA2_3689 == LPAREN || LA2_3689 == RPAREN || ((LA2_3689 >= SQUOTE) && (LA2_3689 <= USCORE))) ) { s = 3690; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3689 == LSBRAQUET || LA2_3689 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3689); if ( s>=0 ) { return s; } } break; case 383: { ANTLR3_UINT32 LA2_1768; ANTLR3_MARKER index2_1768; LA2_1768 = LA(1); index2_1768 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1768 == QMARK) ) { s = 2263; } else if ( (LA2_1768 == COMMON_CHAR || LA2_1768 == HEX_CHAR) ) { s = 2264; } else if ( (LA2_1768 == DIGIT) ) { s = 2265; } else if ( (LA2_1768 == DASH || LA2_1768 == DOT || LA2_1768 == EMARK || LA2_1768 == LPAREN || LA2_1768 == RPAREN || ((LA2_1768 >= SQUOTE) && (LA2_1768 <= USCORE))) ) { s = 2266; } else if ( (LA2_1768 == PERCENT) ) { s = 2267; } else if ( (LA2_1768 == AND) ) { s = 2268; } else if ( (LA2_1768 == SP) ) { s = 35; } else if ( (LA2_1768 == SEMI) ) { s = 505; } else if ( (LA2_1768 == COMMA) ) { s = 506; } else if ( (LA2_1768 == COLON || LA2_1768 == DOLLARD || LA2_1768 == PLUS || LA2_1768 == SLASH) ) { s = 2269; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1768 == LSBRAQUET || LA2_1768 == RSBRAQUET) ) { s = 1104; } else if ( (LA2_1768 == AT || LA2_1768 == EQUAL) ) { s = 508; } SEEK(index2_1768); if ( s>=0 ) { return s; } } break; case 384: { ANTLR3_UINT32 LA2_3177; ANTLR3_MARKER index2_3177; LA2_3177 = LA(1); index2_3177 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3177 == SLASH) ) { s = 3465; } else if ( (LA2_3177 == QMARK) ) { s = 854; } else if ( (LA2_3177 == SP) ) { s = 1585; } else if ( (LA2_3177 == CRLF) ) { s = 1588; } else if ( (LA2_3177 == SEMI) ) { s = 2028; } else if ( (LA2_3177 == COMMON_CHAR || LA2_3177 == HEX_CHAR) ) { s = 3173; } else if ( (LA2_3177 == DIGIT) ) { s = 3174; } else if ( (LA2_3177 == DOT) ) { s = 3175; } else if ( (LA2_3177 == PERCENT) ) { s = 3176; } else if ( (LA2_3177 == PLUS) ) { s = 3177; } else if ( (LA2_3177 == BQUOTE) ) { s = 2092; } else if ( (LA2_3177 == DASH || LA2_3177 == EMARK || LA2_3177 == LPAREN || LA2_3177 == RPAREN || ((LA2_3177 >= SQUOTE) && (LA2_3177 <= USCORE))) ) { s = 3178; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3177 == AND || LA2_3177 == COLON || LA2_3177 == DOLLARD || LA2_3177 == LSBRAQUET || LA2_3177 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3177); if ( s>=0 ) { return s; } } break; case 385: { ANTLR3_UINT32 LA2_1630; ANTLR3_MARKER index2_1630; LA2_1630 = LA(1); index2_1630 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1630 == SP) ) { s = 2010; } else if ( (LA2_1630 == CRLF) ) { s = 2012; } else if ( (LA2_1630 == COMMON_CHAR || LA2_1630 == HEX_CHAR) ) { s = 2068; } else if ( (LA2_1630 == DIGIT) ) { s = 2069; } else if ( (LA2_1630 == DOT) ) { s = 2070; } else if ( (LA2_1630 == PERCENT) ) { s = 2071; } else if ( (LA2_1630 == PLUS) ) { s = 2072; } else if ( (LA2_1630 == BQUOTE) ) { s = 1203; } else if ( (LA2_1630 == DASH || LA2_1630 == EMARK || LA2_1630 == LPAREN || LA2_1630 == RPAREN || ((LA2_1630 >= SQUOTE) && (LA2_1630 <= USCORE))) ) { s = 2073; } else if ( (LA2_1630 == COLON) ) { s = 1727; } else if ( (LA2_1630 == QMARK) ) { s = 854; } else if ( (LA2_1630 == SEMI) ) { s = 1237; } else if ( (LA2_1630 == AND) ) { s = 1730; } else if ( (LA2_1630 == AT) ) { s = 810; } else if ( (LA2_1630 == DOLLARD) ) { s = 1732; } else if ( (LA2_1630 == EQUAL) ) { s = 812; } else if ( (LA2_1630 == SLASH) ) { s = 1271; } else if ( (LA2_1630 == COMMA) ) { s = 815; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1630 == LSBRAQUET || LA2_1630 == RSBRAQUET) ) { s = 405; } SEEK(index2_1630); if ( s>=0 ) { return s; } } break; case 386: { ANTLR3_UINT32 LA2_2479; ANTLR3_MARKER index2_2479; LA2_2479 = LA(1); index2_2479 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2479 == SLASH) ) { s = 2866; } else if ( (LA2_2479 == COMMON_CHAR || LA2_2479 == HEX_CHAR) ) { s = 2479; } else if ( (LA2_2479 == SP) ) { s = 2456; } else if ( (LA2_2479 == CRLF) ) { s = 2458; } else if ( (LA2_2479 == EQUAL) ) { s = 2867; } else if ( (LA2_2479 == QMARK) ) { s = 854; } else if ( (LA2_2479 == SEMI) ) { s = 2028; } else if ( (LA2_2479 == DIGIT) ) { s = 2481; } else if ( (LA2_2479 == DOT) ) { s = 2482; } else if ( (LA2_2479 == PERCENT) ) { s = 2483; } else if ( (LA2_2479 == PLUS) ) { s = 2484; } else if ( (LA2_2479 == BQUOTE) ) { s = 1203; } else if ( (LA2_2479 == DASH || LA2_2479 == EMARK || LA2_2479 == LPAREN || LA2_2479 == RPAREN || ((LA2_2479 >= SQUOTE) && (LA2_2479 <= USCORE))) ) { s = 2485; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2479 == AND || LA2_2479 == COLON || LA2_2479 == DOLLARD || LA2_2479 == LSBRAQUET || LA2_2479 == RSBRAQUET) ) { s = 405; } SEEK(index2_2479); if ( s>=0 ) { return s; } } break; case 387: { ANTLR3_UINT32 LA2_2929; ANTLR3_MARKER index2_2929; LA2_2929 = LA(1); index2_2929 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2929 == SEMI) ) { s = 2927; } else if ( (LA2_2929 == SLASH) ) { s = 2928; } else if ( (LA2_2929 == QMARK) ) { s = 854; } else if ( (LA2_2929 == SP) ) { s = 204; } else if ( (LA2_2929 == COMMON_CHAR || LA2_2929 == HEX_CHAR) ) { s = 2918; } else if ( (LA2_2929 == DIGIT) ) { s = 2919; } else if ( (LA2_2929 == DOT) ) { s = 2920; } else if ( (LA2_2929 == PERCENT) ) { s = 2921; } else if ( (LA2_2929 == COLON) ) { s = 2922; } else if ( (LA2_2929 == AT) ) { s = 1667; } else if ( (LA2_2929 == AND) ) { s = 2923; } else if ( (LA2_2929 == EQUAL) ) { s = 2924; } else if ( (LA2_2929 == PLUS) ) { s = 2925; } else if ( (LA2_2929 == DOLLARD) ) { s = 2926; } else if ( (LA2_2929 == COMMA) ) { s = 1672; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2929 == CRLF) ) { s = 205; } else if ( (LA2_2929 == DASH || LA2_2929 == EMARK || LA2_2929 == LPAREN || LA2_2929 == RPAREN || ((LA2_2929 >= SQUOTE) && (LA2_2929 <= USCORE))) ) { s = 2929; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2929 == LSBRAQUET || LA2_2929 == RSBRAQUET) ) { s = 405; } SEEK(index2_2929); if ( s>=0 ) { return s; } } break; case 388: { ANTLR3_UINT32 LA2_1087; ANTLR3_MARKER index2_1087; LA2_1087 = LA(1); index2_1087 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1087 == COLON) ) { s = 1082; } else if ( (LA2_1087 == AT) ) { s = 89; } else if ( (LA2_1087 == COMMON_CHAR || LA2_1087 == HEX_CHAR) ) { s = 1083; } else if ( (LA2_1087 == DIGIT) ) { s = 1084; } else if ( (LA2_1087 == DOT) ) { s = 1085; } else if ( (LA2_1087 == PERCENT) ) { s = 1086; } else if ( (LA2_1087 == QMARK) ) { s = 206; } else if ( (LA2_1087 == SEMI) ) { s = 202; } else if ( (LA2_1087 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1087 == CRLF) ) { s = 205; } else if ( (LA2_1087 == AND || LA2_1087 == DOLLARD || LA2_1087 == PLUS || LA2_1087 == SLASH) ) { s = 1087; } else if ( (LA2_1087 == DASH || LA2_1087 == EMARK || LA2_1087 == LPAREN || LA2_1087 == RPAREN || ((LA2_1087 >= SQUOTE) && (LA2_1087 <= USCORE))) ) { s = 1088; } else if ( (LA2_1087 == COMMA) ) { s = 97; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1087 == LSBRAQUET || LA2_1087 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_1087 == EQUAL) ) { s = 99; } SEEK(index2_1087); if ( s>=0 ) { return s; } } break; case 389: { ANTLR3_UINT32 LA2_3436; ANTLR3_MARKER index2_3436; LA2_3436 = LA(1); index2_3436 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3436 == SEMI) ) { s = 3170; } else if ( (LA2_3436 == SLASH) ) { s = 3435; } else if ( (LA2_3436 == QMARK) ) { s = 854; } else if ( (LA2_3436 == SP) ) { s = 204; } else if ( (LA2_3436 == COMMON_CHAR || LA2_3436 == HEX_CHAR) ) { s = 3436; } else if ( (LA2_3436 == DIGIT) ) { s = 3437; } else if ( (LA2_3436 == DOT) ) { s = 3438; } else if ( (LA2_3436 == PERCENT) ) { s = 3439; } else if ( (LA2_3436 == COLON) ) { s = 3440; } else if ( (LA2_3436 == AT) ) { s = 1710; } else if ( (LA2_3436 == AND) ) { s = 3441; } else if ( (LA2_3436 == EQUAL) ) { s = 1712; } else if ( (LA2_3436 == PLUS) ) { s = 3442; } else if ( (LA2_3436 == DOLLARD) ) { s = 3443; } else if ( (LA2_3436 == COMMA) ) { s = 1715; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3436 == CRLF) ) { s = 205; } else if ( (LA2_3436 == DASH || LA2_3436 == EMARK || LA2_3436 == LPAREN || LA2_3436 == RPAREN || ((LA2_3436 >= SQUOTE) && (LA2_3436 <= USCORE))) ) { s = 3444; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3436 == LSBRAQUET || LA2_3436 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3436); if ( s>=0 ) { return s; } } break; case 390: { ANTLR3_UINT32 LA2_1781; ANTLR3_MARKER index2_1781; LA2_1781 = LA(1); index2_1781 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1781 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1781 == CRLF) ) { s = 205; } else if ( (LA2_1781 == SEMI) ) { s = 853; } else if ( (LA2_1781 == QMARK) ) { s = 854; } else if ( (LA2_1781 == DIGIT) ) { s = 1781; } else if ( (LA2_1781 == SLASH) ) { s = 241; } else if ( (LA2_1781 == COMMON_CHAR || LA2_1781 == HEX_CHAR) ) { s = 492; } else if ( (LA2_1781 == DASH || LA2_1781 == DOT || LA2_1781 == EMARK || LA2_1781 == LPAREN || LA2_1781 == RPAREN || ((LA2_1781 >= SQUOTE) && (LA2_1781 <= USCORE))) ) { s = 494; } else if ( (LA2_1781 == PERCENT) ) { s = 495; } else if ( (LA2_1781 == COLON) ) { s = 496; } else if ( (LA2_1781 == AT) ) { s = 497; } else if ( (LA2_1781 == AND) ) { s = 498; } else if ( (LA2_1781 == EQUAL) ) { s = 499; } else if ( (LA2_1781 == PLUS) ) { s = 500; } else if ( (LA2_1781 == DOLLARD) ) { s = 501; } else if ( (LA2_1781 == COMMA) ) { s = 502; } SEEK(index2_1781); if ( s>=0 ) { return s; } } break; case 391: { ANTLR3_UINT32 LA2_3739; ANTLR3_MARKER index2_3739; LA2_3739 = LA(1); index2_3739 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3739 == SLASH) ) { s = 3323; } else if ( (LA2_3739 == QMARK) ) { s = 1751; } else if ( (LA2_3739 == SP) ) { s = 204; } else if ( (LA2_3739 == SEMI) ) { s = 3030; } else if ( (LA2_3739 == COMMON_CHAR || LA2_3739 == HEX_CHAR) ) { s = 3734; } else if ( (LA2_3739 == DIGIT) ) { s = 3735; } else if ( (LA2_3739 == DOT) ) { s = 3736; } else if ( (LA2_3739 == PERCENT) ) { s = 3737; } else if ( (LA2_3739 == COLON) ) { s = 3738; } else if ( (LA2_3739 == AT) ) { s = 2673; } else if ( (LA2_3739 == AND) ) { s = 3739; } else if ( (LA2_3739 == EQUAL) ) { s = 2675; } else if ( (LA2_3739 == PLUS) ) { s = 3740; } else if ( (LA2_3739 == DOLLARD) ) { s = 3741; } else if ( (LA2_3739 == COMMA) ) { s = 2678; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3739 == CRLF) ) { s = 205; } else if ( (LA2_3739 == DASH || LA2_3739 == EMARK || LA2_3739 == LPAREN || LA2_3739 == RPAREN || ((LA2_3739 >= SQUOTE) && (LA2_3739 <= USCORE))) ) { s = 3742; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3739 == LSBRAQUET || LA2_3739 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3739); if ( s>=0 ) { return s; } } break; case 392: { ANTLR3_UINT32 LA2_3745; ANTLR3_MARKER index2_3745; LA2_3745 = LA(1); index2_3745 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3745 == QMARK) ) { s = 2237; } else if ( (LA2_3745 == SP) ) { s = 35; } else if ( (LA2_3745 == SLASH) ) { s = 3323; } else if ( (LA2_3745 == SEMI) ) { s = 2690; } else if ( (LA2_3745 == COMMON_CHAR || LA2_3745 == HEX_CHAR) ) { s = 3819; } else if ( (LA2_3745 == DIGIT) ) { s = 3820; } else if ( (LA2_3745 == DOT) ) { s = 3821; } else if ( (LA2_3745 == PERCENT) ) { s = 3822; } else if ( (LA2_3745 == COLON) ) { s = 3823; } else if ( (LA2_3745 == AT) ) { s = 3043; } else if ( (LA2_3745 == AND) ) { s = 3824; } else if ( (LA2_3745 == EQUAL) ) { s = 3045; } else if ( (LA2_3745 == PLUS) ) { s = 3825; } else if ( (LA2_3745 == DOLLARD) ) { s = 3826; } else if ( (LA2_3745 == COMMA) ) { s = 3048; } else if ( (LA2_3745 == DASH || LA2_3745 == EMARK || LA2_3745 == LPAREN || LA2_3745 == RPAREN || ((LA2_3745 >= SQUOTE) && (LA2_3745 <= USCORE))) ) { s = 3827; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3745 == LSBRAQUET || LA2_3745 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3745); if ( s>=0 ) { return s; } } break; case 393: { ANTLR3_UINT32 LA2_3738; ANTLR3_MARKER index2_3738; LA2_3738 = LA(1); index2_3738 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3738 == SLASH) ) { s = 3323; } else if ( (LA2_3738 == QMARK) ) { s = 1751; } else if ( (LA2_3738 == SP) ) { s = 204; } else if ( (LA2_3738 == SEMI) ) { s = 3030; } else if ( (LA2_3738 == COMMON_CHAR || LA2_3738 == HEX_CHAR) ) { s = 3734; } else if ( (LA2_3738 == DIGIT) ) { s = 3735; } else if ( (LA2_3738 == DOT) ) { s = 3736; } else if ( (LA2_3738 == PERCENT) ) { s = 3737; } else if ( (LA2_3738 == COLON) ) { s = 3738; } else if ( (LA2_3738 == AT) ) { s = 2673; } else if ( (LA2_3738 == AND) ) { s = 3739; } else if ( (LA2_3738 == EQUAL) ) { s = 2675; } else if ( (LA2_3738 == PLUS) ) { s = 3740; } else if ( (LA2_3738 == DOLLARD) ) { s = 3741; } else if ( (LA2_3738 == COMMA) ) { s = 2678; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3738 == CRLF) ) { s = 205; } else if ( (LA2_3738 == DASH || LA2_3738 == EMARK || LA2_3738 == LPAREN || LA2_3738 == RPAREN || ((LA2_3738 >= SQUOTE) && (LA2_3738 <= USCORE))) ) { s = 3742; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3738 == LSBRAQUET || LA2_3738 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3738); if ( s>=0 ) { return s; } } break; case 394: { ANTLR3_UINT32 LA2_3741; ANTLR3_MARKER index2_3741; LA2_3741 = LA(1); index2_3741 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3741 == SLASH) ) { s = 3323; } else if ( (LA2_3741 == QMARK) ) { s = 1751; } else if ( (LA2_3741 == SP) ) { s = 204; } else if ( (LA2_3741 == SEMI) ) { s = 3030; } else if ( (LA2_3741 == COMMON_CHAR || LA2_3741 == HEX_CHAR) ) { s = 3734; } else if ( (LA2_3741 == DIGIT) ) { s = 3735; } else if ( (LA2_3741 == DOT) ) { s = 3736; } else if ( (LA2_3741 == PERCENT) ) { s = 3737; } else if ( (LA2_3741 == COLON) ) { s = 3738; } else if ( (LA2_3741 == AT) ) { s = 2673; } else if ( (LA2_3741 == AND) ) { s = 3739; } else if ( (LA2_3741 == EQUAL) ) { s = 2675; } else if ( (LA2_3741 == PLUS) ) { s = 3740; } else if ( (LA2_3741 == DOLLARD) ) { s = 3741; } else if ( (LA2_3741 == COMMA) ) { s = 2678; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3741 == CRLF) ) { s = 205; } else if ( (LA2_3741 == DASH || LA2_3741 == EMARK || LA2_3741 == LPAREN || LA2_3741 == RPAREN || ((LA2_3741 >= SQUOTE) && (LA2_3741 <= USCORE))) ) { s = 3742; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3741 == LSBRAQUET || LA2_3741 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3741); if ( s>=0 ) { return s; } } break; case 395: { ANTLR3_UINT32 LA2_3740; ANTLR3_MARKER index2_3740; LA2_3740 = LA(1); index2_3740 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3740 == SLASH) ) { s = 3323; } else if ( (LA2_3740 == QMARK) ) { s = 1751; } else if ( (LA2_3740 == SP) ) { s = 204; } else if ( (LA2_3740 == SEMI) ) { s = 3030; } else if ( (LA2_3740 == COMMON_CHAR || LA2_3740 == HEX_CHAR) ) { s = 3734; } else if ( (LA2_3740 == DIGIT) ) { s = 3735; } else if ( (LA2_3740 == DOT) ) { s = 3736; } else if ( (LA2_3740 == PERCENT) ) { s = 3737; } else if ( (LA2_3740 == COLON) ) { s = 3738; } else if ( (LA2_3740 == AT) ) { s = 2673; } else if ( (LA2_3740 == AND) ) { s = 3739; } else if ( (LA2_3740 == EQUAL) ) { s = 2675; } else if ( (LA2_3740 == PLUS) ) { s = 3740; } else if ( (LA2_3740 == DOLLARD) ) { s = 3741; } else if ( (LA2_3740 == COMMA) ) { s = 2678; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3740 == CRLF) ) { s = 205; } else if ( (LA2_3740 == DASH || LA2_3740 == EMARK || LA2_3740 == LPAREN || LA2_3740 == RPAREN || ((LA2_3740 >= SQUOTE) && (LA2_3740 <= USCORE))) ) { s = 3742; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3740 == LSBRAQUET || LA2_3740 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3740); if ( s>=0 ) { return s; } } break; case 396: { ANTLR3_UINT32 LA2_3359; ANTLR3_MARKER index2_3359; LA2_3359 = LA(1); index2_3359 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3359 == SP) ) { s = 35; } else if ( (LA2_3359 == AND) ) { s = 2268; } else if ( (LA2_3359 == QMARK) ) { s = 3359; } else if ( (LA2_3359 == COMMON_CHAR || LA2_3359 == HEX_CHAR) ) { s = 3360; } else if ( (LA2_3359 == DIGIT) ) { s = 3361; } else if ( (LA2_3359 == DASH || LA2_3359 == DOT || LA2_3359 == EMARK || LA2_3359 == LPAREN || LA2_3359 == RPAREN || ((LA2_3359 >= SQUOTE) && (LA2_3359 <= USCORE))) ) { s = 3362; } else if ( (LA2_3359 == PERCENT) ) { s = 3363; } else if ( (LA2_3359 == SEMI) ) { s = 505; } else if ( (LA2_3359 == COMMA) ) { s = 506; } else if ( (LA2_3359 == COLON || LA2_3359 == DOLLARD || LA2_3359 == PLUS || LA2_3359 == SLASH) ) { s = 3364; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3359 == LSBRAQUET || LA2_3359 == RSBRAQUET) ) { s = 2437; } else if ( (LA2_3359 == AT || LA2_3359 == EQUAL) ) { s = 508; } SEEK(index2_3359); if ( s>=0 ) { return s; } } break; case 397: { ANTLR3_UINT32 LA2_729; ANTLR3_MARKER index2_729; LA2_729 = LA(1); index2_729 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_729 == DIGIT) ) { s = 730; } else if ( (LA2_729 == COLON) ) { s = 201; } else if ( (LA2_729 == AT) ) { s = 89; } else if ( (LA2_729 == COMMON_CHAR || LA2_729 == HEX_CHAR) ) { s = 207; } else if ( (LA2_729 == DASH || LA2_729 == DOT || LA2_729 == EMARK || LA2_729 == LPAREN || LA2_729 == RPAREN || ((LA2_729 >= SQUOTE) && (LA2_729 <= USCORE))) ) { s = 96; } else if ( (LA2_729 == PERCENT) ) { s = 93; } else if ( (LA2_729 == SEMI) ) { s = 202; } else if ( (LA2_729 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_729 == CRLF) ) { s = 205; } else if ( (LA2_729 == QMARK) ) { s = 206; } else if ( (LA2_729 == COMMA) ) { s = 97; } else if ( (LA2_729 == AND || LA2_729 == DOLLARD || LA2_729 == EQUAL || LA2_729 == PLUS || LA2_729 == SLASH) ) { s = 99; } SEEK(index2_729); if ( s>=0 ) { return s; } } break; case 398: { ANTLR3_UINT32 LA2_212; ANTLR3_MARKER index2_212; LA2_212 = LA(1); index2_212 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_212 == DIGIT) ) { s = 213; } else if ( (LA2_212 == COLON) ) { s = 201; } else if ( (LA2_212 == AT) ) { s = 89; } else if ( (LA2_212 == COMMON_CHAR || LA2_212 == HEX_CHAR) ) { s = 207; } else if ( (LA2_212 == DASH || LA2_212 == DOT || LA2_212 == EMARK || LA2_212 == LPAREN || LA2_212 == RPAREN || ((LA2_212 >= SQUOTE) && (LA2_212 <= USCORE))) ) { s = 96; } else if ( (LA2_212 == PERCENT) ) { s = 93; } else if ( (LA2_212 == SEMI) ) { s = 202; } else if ( (LA2_212 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_212 == CRLF) ) { s = 205; } else if ( (LA2_212 == QMARK) ) { s = 206; } else if ( (LA2_212 == COMMA) ) { s = 97; } else if ( (LA2_212 == AND || LA2_212 == DOLLARD || LA2_212 == EQUAL || LA2_212 == PLUS || LA2_212 == SLASH) ) { s = 99; } SEEK(index2_212); if ( s>=0 ) { return s; } } break; case 399: { ANTLR3_UINT32 LA2_3499; ANTLR3_MARKER index2_3499; LA2_3499 = LA(1); index2_3499 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3499 == SEMI) ) { s = 3251; } else if ( (LA2_3499 == QMARK) ) { s = 854; } else if ( (LA2_3499 == SP) ) { s = 204; } else if ( (LA2_3499 == SLASH) ) { s = 3226; } else if ( (LA2_3499 == COMMON_CHAR || LA2_3499 == HEX_CHAR) ) { s = 3491; } else if ( (LA2_3499 == DIGIT) ) { s = 3492; } else if ( (LA2_3499 == DOT) ) { s = 3493; } else if ( (LA2_3499 == PERCENT) ) { s = 3494; } else if ( (LA2_3499 == COLON) ) { s = 3495; } else if ( (LA2_3499 == AT) ) { s = 2122; } else if ( (LA2_3499 == AND) ) { s = 3496; } else if ( (LA2_3499 == EQUAL) ) { s = 2124; } else if ( (LA2_3499 == PLUS) ) { s = 3497; } else if ( (LA2_3499 == DOLLARD) ) { s = 3498; } else if ( (LA2_3499 == COMMA) ) { s = 2127; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3499 == CRLF) ) { s = 205; } else if ( (LA2_3499 == DASH || LA2_3499 == EMARK || LA2_3499 == LPAREN || LA2_3499 == RPAREN || ((LA2_3499 >= SQUOTE) && (LA2_3499 <= USCORE))) ) { s = 3499; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3499 == LSBRAQUET || LA2_3499 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3499); if ( s>=0 ) { return s; } } break; case 400: { ANTLR3_UINT32 LA2_91; ANTLR3_MARKER index2_91; LA2_91 = LA(1); index2_91 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_91 == COLON) ) { s = 201; } else if ( (LA2_91 == AT) ) { s = 89; } else if ( (LA2_91 == COMMON_CHAR || LA2_91 == HEX_CHAR) ) { s = 90; } else if ( (LA2_91 == DIGIT) ) { s = 91; } else if ( (LA2_91 == DASH) ) { s = 95; } else if ( (LA2_91 == PERCENT) ) { s = 93; } else if ( (LA2_91 == SEMI) ) { s = 202; } else if ( (LA2_91 == DOT) ) { s = 203; } else if ( (LA2_91 == EMARK || LA2_91 == LPAREN || LA2_91 == RPAREN || ((LA2_91 >= SQUOTE) && (LA2_91 <= USCORE))) ) { s = 96; } else if ( (LA2_91 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_91 == CRLF) ) { s = 205; } else if ( (LA2_91 == QMARK) ) { s = 206; } else if ( (LA2_91 == COMMA) ) { s = 97; } else if ( (LA2_91 == AND || LA2_91 == DOLLARD || LA2_91 == EQUAL || LA2_91 == PLUS || LA2_91 == SLASH) ) { s = 99; } SEEK(index2_91); if ( s>=0 ) { return s; } } break; case 401: { ANTLR3_UINT32 LA2_3763; ANTLR3_MARKER index2_3763; LA2_3763 = LA(1); index2_3763 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3763 == QMARK) ) { s = 854; } else if ( (LA2_3763 == SP) ) { s = 204; } else if ( (LA2_3763 == SLASH) ) { s = 3123; } else if ( (LA2_3763 == SEMI) ) { s = 3151; } else if ( (LA2_3763 == COMMON_CHAR || LA2_3763 == HEX_CHAR) ) { s = 3761; } else if ( (LA2_3763 == DIGIT) ) { s = 3762; } else if ( (LA2_3763 == DOT) ) { s = 3763; } else if ( (LA2_3763 == PERCENT) ) { s = 3764; } else if ( (LA2_3763 == COLON) ) { s = 3765; } else if ( (LA2_3763 == AT) ) { s = 2879; } else if ( (LA2_3763 == AND) ) { s = 3766; } else if ( (LA2_3763 == EQUAL) ) { s = 2881; } else if ( (LA2_3763 == PLUS) ) { s = 3767; } else if ( (LA2_3763 == DOLLARD) ) { s = 3768; } else if ( (LA2_3763 == COMMA) ) { s = 2884; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3763 == CRLF) ) { s = 205; } else if ( (LA2_3763 == DASH || LA2_3763 == EMARK || LA2_3763 == LPAREN || LA2_3763 == RPAREN || ((LA2_3763 >= SQUOTE) && (LA2_3763 <= USCORE))) ) { s = 3769; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3763 == LSBRAQUET || LA2_3763 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3763); if ( s>=0 ) { return s; } } break; case 402: { ANTLR3_UINT32 LA2_1567; ANTLR3_MARKER index2_1567; LA2_1567 = LA(1); index2_1567 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1567 == DIGIT) ) { s = 1568; } else if ( (LA2_1567 == COLON) ) { s = 201; } else if ( (LA2_1567 == AT) ) { s = 89; } else if ( (LA2_1567 == COMMON_CHAR || LA2_1567 == HEX_CHAR) ) { s = 207; } else if ( (LA2_1567 == DASH || LA2_1567 == DOT || LA2_1567 == EMARK || LA2_1567 == LPAREN || LA2_1567 == RPAREN || ((LA2_1567 >= SQUOTE) && (LA2_1567 <= USCORE))) ) { s = 96; } else if ( (LA2_1567 == PERCENT) ) { s = 93; } else if ( (LA2_1567 == SEMI) ) { s = 202; } else if ( (LA2_1567 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1567 == CRLF) ) { s = 205; } else if ( (LA2_1567 == QMARK) ) { s = 206; } else if ( (LA2_1567 == COMMA) ) { s = 97; } else if ( (LA2_1567 == AND || LA2_1567 == DOLLARD || LA2_1567 == EQUAL || LA2_1567 == PLUS || LA2_1567 == SLASH) ) { s = 99; } SEEK(index2_1567); if ( s>=0 ) { return s; } } break; case 403: { ANTLR3_UINT32 LA2_3120; ANTLR3_MARKER index2_3120; LA2_3120 = LA(1); index2_3120 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3120 == SP) ) { s = 35; } else if ( (LA2_3120 == AND) ) { s = 1553; } else if ( (LA2_3120 == QMARK) ) { s = 2435; } else if ( (LA2_3120 == COMMON_CHAR || LA2_3120 == HEX_CHAR) ) { s = 2439; } else if ( (LA2_3120 == DIGIT) ) { s = 2440; } else if ( (LA2_3120 == DASH || LA2_3120 == DOT || LA2_3120 == EMARK || LA2_3120 == LPAREN || LA2_3120 == RPAREN || ((LA2_3120 >= SQUOTE) && (LA2_3120 <= USCORE))) ) { s = 2441; } else if ( (LA2_3120 == PERCENT) ) { s = 2442; } else if ( (LA2_3120 == SEMI) ) { s = 105; } else if ( (LA2_3120 == COMMA) ) { s = 106; } else if ( (LA2_3120 == COLON || LA2_3120 == DOLLARD || LA2_3120 == PLUS || LA2_3120 == SLASH) ) { s = 2436; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3120 == LSBRAQUET || LA2_3120 == RSBRAQUET) ) { s = 2437; } else if ( (LA2_3120 == AT || LA2_3120 == EQUAL) ) { s = 108; } SEEK(index2_3120); if ( s>=0 ) { return s; } } break; case 404: { ANTLR3_UINT32 LA2_853; ANTLR3_MARKER index2_853; LA2_853 = LA(1); index2_853 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_853 == SP) ) { s = 402; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_853 == CRLF) ) { s = 403; } else if ( (LA2_853 == DOT) ) { s = 1262; } else if ( (LA2_853 == COMMON_CHAR || LA2_853 == HEX_CHAR) ) { s = 1263; } else if ( (LA2_853 == DIGIT) ) { s = 1264; } else if ( (LA2_853 == COLON) ) { s = 1265; } else if ( (LA2_853 == DASH || LA2_853 == EMARK || LA2_853 == LPAREN || LA2_853 == RPAREN || ((LA2_853 >= SQUOTE) && (LA2_853 <= USCORE))) ) { s = 1266; } else if ( (LA2_853 == PERCENT) ) { s = 1267; } else if ( (LA2_853 == QMARK) ) { s = 854; } else if ( (LA2_853 == SEMI) ) { s = 853; } else if ( (LA2_853 == AND) ) { s = 1268; } else if ( (LA2_853 == AT) ) { s = 497; } else if ( (LA2_853 == PLUS) ) { s = 1269; } else if ( (LA2_853 == EQUAL) ) { s = 499; } else if ( (LA2_853 == DOLLARD) ) { s = 1270; } else if ( (LA2_853 == SLASH) ) { s = 1271; } else if ( (LA2_853 == COMMA) ) { s = 502; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_853 == LSBRAQUET || LA2_853 == RSBRAQUET) ) { s = 405; } SEEK(index2_853); if ( s>=0 ) { return s; } } break; case 405: { ANTLR3_UINT32 LA2_3416; ANTLR3_MARKER index2_3416; LA2_3416 = LA(1); index2_3416 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3416 == QMARK) ) { s = 242; } else if ( (LA2_3416 == SP) ) { s = 35; } else if ( (LA2_3416 == SLASH) ) { s = 3123; } else if ( (LA2_3416 == SEMI) ) { s = 2025; } else if ( (LA2_3416 == COMMON_CHAR || LA2_3416 == HEX_CHAR) ) { s = 3618; } else if ( (LA2_3416 == DIGIT) ) { s = 3619; } else if ( (LA2_3416 == DOT) ) { s = 3620; } else if ( (LA2_3416 == PERCENT) ) { s = 3621; } else if ( (LA2_3416 == COLON) ) { s = 3622; } else if ( (LA2_3416 == AT) ) { s = 2493; } else if ( (LA2_3416 == AND) ) { s = 3623; } else if ( (LA2_3416 == EQUAL) ) { s = 2495; } else if ( (LA2_3416 == PLUS) ) { s = 3624; } else if ( (LA2_3416 == DOLLARD) ) { s = 3625; } else if ( (LA2_3416 == COMMA) ) { s = 2498; } else if ( (LA2_3416 == DASH || LA2_3416 == EMARK || LA2_3416 == LPAREN || LA2_3416 == RPAREN || ((LA2_3416 >= SQUOTE) && (LA2_3416 <= USCORE))) ) { s = 3626; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3416 == LSBRAQUET || LA2_3416 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3416); if ( s>=0 ) { return s; } } break; case 406: { ANTLR3_UINT32 LA2_203; ANTLR3_MARKER index2_203; LA2_203 = LA(1); index2_203 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_203 == COLON) ) { s = 201; } else if ( (LA2_203 == AT) ) { s = 89; } else if ( (LA2_203 == COMMON_CHAR || LA2_203 == HEX_CHAR) ) { s = 207; } else if ( (LA2_203 == DIGIT) ) { s = 208; } else if ( (LA2_203 == DASH || LA2_203 == DOT || LA2_203 == EMARK || LA2_203 == LPAREN || LA2_203 == RPAREN || ((LA2_203 >= SQUOTE) && (LA2_203 <= USCORE))) ) { s = 96; } else if ( (LA2_203 == PERCENT) ) { s = 93; } else if ( (LA2_203 == SEMI) ) { s = 202; } else if ( (LA2_203 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_203 == CRLF) ) { s = 205; } else if ( (LA2_203 == QMARK) ) { s = 206; } else if ( (LA2_203 == COMMA) ) { s = 97; } else if ( (LA2_203 == AND || LA2_203 == DOLLARD || LA2_203 == EQUAL || LA2_203 == PLUS || LA2_203 == SLASH) ) { s = 99; } SEEK(index2_203); if ( s>=0 ) { return s; } } break; case 407: { ANTLR3_UINT32 LA2_3782; ANTLR3_MARKER index2_3782; LA2_3782 = LA(1); index2_3782 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3782 == SLASH) ) { s = 3171; } else if ( (LA2_3782 == QMARK) ) { s = 854; } else if ( (LA2_3782 == SP) ) { s = 204; } else if ( (LA2_3782 == SEMI) ) { s = 3170; } else if ( (LA2_3782 == COMMON_CHAR || LA2_3782 == HEX_CHAR) ) { s = 3445; } else if ( (LA2_3782 == DIGIT) ) { s = 3446; } else if ( (LA2_3782 == DOT) ) { s = 3447; } else if ( (LA2_3782 == PERCENT) ) { s = 3448; } else if ( (LA2_3782 == COLON) ) { s = 3449; } else if ( (LA2_3782 == AT) ) { s = 2184; } else if ( (LA2_3782 == AND) ) { s = 3450; } else if ( (LA2_3782 == EQUAL) ) { s = 3643; } else if ( (LA2_3782 == PLUS) ) { s = 3451; } else if ( (LA2_3782 == DOLLARD) ) { s = 3452; } else if ( (LA2_3782 == COMMA) ) { s = 2189; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3782 == CRLF) ) { s = 205; } else if ( (LA2_3782 == DASH || LA2_3782 == EMARK || LA2_3782 == LPAREN || LA2_3782 == RPAREN || ((LA2_3782 >= SQUOTE) && (LA2_3782 <= USCORE))) ) { s = 3453; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3782 == LSBRAQUET || LA2_3782 == RSBRAQUET) ) { s = 405; } SEEK(index2_3782); if ( s>=0 ) { return s; } } break; case 408: { ANTLR3_UINT32 LA2_2534; ANTLR3_MARKER index2_2534; LA2_2534 = LA(1); index2_2534 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2534 == QMARK) ) { s = 854; } else if ( (LA2_2534 == SP) ) { s = 204; } else if ( (LA2_2534 == SLASH) ) { s = 2009; } else if ( (LA2_2534 == SEMI) ) { s = 2477; } else if ( (LA2_2534 == COMMON_CHAR || LA2_2534 == HEX_CHAR) ) { s = 2860; } else if ( (LA2_2534 == DIGIT) ) { s = 2861; } else if ( (LA2_2534 == DOT) ) { s = 2862; } else if ( (LA2_2534 == PERCENT) ) { s = 2863; } else if ( (LA2_2534 == COLON) ) { s = 2534; } else if ( (LA2_2534 == AT) ) { s = 1576; } else if ( (LA2_2534 == AND) ) { s = 2535; } else if ( (LA2_2534 == EQUAL) ) { s = 2903; } else if ( (LA2_2534 == PLUS) ) { s = 2864; } else if ( (LA2_2534 == DOLLARD) ) { s = 2537; } else if ( (LA2_2534 == COMMA) ) { s = 1581; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2534 == CRLF) ) { s = 205; } else if ( (LA2_2534 == DASH || LA2_2534 == EMARK || LA2_2534 == LPAREN || LA2_2534 == RPAREN || ((LA2_2534 >= SQUOTE) && (LA2_2534 <= USCORE))) ) { s = 2865; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2534 == LSBRAQUET || LA2_2534 == RSBRAQUET) ) { s = 405; } SEEK(index2_2534); if ( s>=0 ) { return s; } } break; case 409: { ANTLR3_UINT32 LA2_3141; ANTLR3_MARKER index2_3141; LA2_3141 = LA(1); index2_3141 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3141 == QMARK) ) { s = 854; } else if ( (LA2_3141 == SP) ) { s = 204; } else if ( (LA2_3141 == SLASH) ) { s = 2827; } else if ( (LA2_3141 == SEMI) ) { s = 2826; } else if ( (LA2_3141 == COMMON_CHAR || LA2_3141 == HEX_CHAR) ) { s = 3133; } else if ( (LA2_3141 == DIGIT) ) { s = 3134; } else if ( (LA2_3141 == DOT) ) { s = 3135; } else if ( (LA2_3141 == PERCENT) ) { s = 3136; } else if ( (LA2_3141 == COLON) ) { s = 3137; } else if ( (LA2_3141 == AT) ) { s = 2493; } else if ( (LA2_3141 == AND) ) { s = 3138; } else if ( (LA2_3141 == EQUAL) ) { s = 3416; } else if ( (LA2_3141 == PLUS) ) { s = 3139; } else if ( (LA2_3141 == DOLLARD) ) { s = 3140; } else if ( (LA2_3141 == COMMA) ) { s = 2498; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3141 == CRLF) ) { s = 205; } else if ( (LA2_3141 == DASH || LA2_3141 == EMARK || LA2_3141 == LPAREN || LA2_3141 == RPAREN || ((LA2_3141 >= SQUOTE) && (LA2_3141 <= USCORE))) ) { s = 3141; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3141 == LSBRAQUET || LA2_3141 == RSBRAQUET) ) { s = 405; } SEEK(index2_3141); if ( s>=0 ) { return s; } } break; case 410: { ANTLR3_UINT32 LA2_3628; ANTLR3_MARKER index2_3628; LA2_3628 = LA(1); index2_3628 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3628 == SEMI) ) { s = 3151; } else if ( (LA2_3628 == QMARK) ) { s = 854; } else if ( (LA2_3628 == SP) ) { s = 204; } else if ( (LA2_3628 == SLASH) ) { s = 2827; } else if ( (LA2_3628 == COMMON_CHAR || LA2_3628 == HEX_CHAR) ) { s = 3142; } else if ( (LA2_3628 == DIGIT) ) { s = 3143; } else if ( (LA2_3628 == DOT) ) { s = 3144; } else if ( (LA2_3628 == PERCENT) ) { s = 3145; } else if ( (LA2_3628 == COLON) ) { s = 3146; } else if ( (LA2_3628 == AT) ) { s = 2504; } else if ( (LA2_3628 == AND) ) { s = 3147; } else if ( (LA2_3628 == EQUAL) ) { s = 3148; } else if ( (LA2_3628 == PLUS) ) { s = 3149; } else if ( (LA2_3628 == DOLLARD) ) { s = 3150; } else if ( (LA2_3628 == COMMA) ) { s = 2509; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3628 == CRLF) ) { s = 205; } else if ( (LA2_3628 == DASH || LA2_3628 == EMARK || LA2_3628 == LPAREN || LA2_3628 == RPAREN || ((LA2_3628 >= SQUOTE) && (LA2_3628 <= USCORE))) ) { s = 3152; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3628 == LSBRAQUET || LA2_3628 == RSBRAQUET) ) { s = 405; } SEEK(index2_3628); if ( s>=0 ) { return s; } } break; case 411: { ANTLR3_UINT32 LA2_2535; ANTLR3_MARKER index2_2535; LA2_2535 = LA(1); index2_2535 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2535 == QMARK) ) { s = 854; } else if ( (LA2_2535 == SP) ) { s = 204; } else if ( (LA2_2535 == SLASH) ) { s = 2009; } else if ( (LA2_2535 == SEMI) ) { s = 2477; } else if ( (LA2_2535 == COMMON_CHAR || LA2_2535 == HEX_CHAR) ) { s = 2860; } else if ( (LA2_2535 == DIGIT) ) { s = 2861; } else if ( (LA2_2535 == DOT) ) { s = 2862; } else if ( (LA2_2535 == PERCENT) ) { s = 2863; } else if ( (LA2_2535 == COLON) ) { s = 2534; } else if ( (LA2_2535 == AT) ) { s = 1576; } else if ( (LA2_2535 == AND) ) { s = 2535; } else if ( (LA2_2535 == EQUAL) ) { s = 2903; } else if ( (LA2_2535 == PLUS) ) { s = 2864; } else if ( (LA2_2535 == DOLLARD) ) { s = 2537; } else if ( (LA2_2535 == COMMA) ) { s = 1581; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2535 == CRLF) ) { s = 205; } else if ( (LA2_2535 == DASH || LA2_2535 == EMARK || LA2_2535 == LPAREN || LA2_2535 == RPAREN || ((LA2_2535 >= SQUOTE) && (LA2_2535 <= USCORE))) ) { s = 2865; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2535 == LSBRAQUET || LA2_2535 == RSBRAQUET) ) { s = 405; } SEEK(index2_2535); if ( s>=0 ) { return s; } } break; case 412: { ANTLR3_UINT32 LA2_3505; ANTLR3_MARKER index2_3505; LA2_3505 = LA(1); index2_3505 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3505 == QMARK) ) { s = 854; } else if ( (LA2_3505 == SP) ) { s = 204; } else if ( (LA2_3505 == SLASH) ) { s = 2928; } else if ( (LA2_3505 == SEMI) ) { s = 3251; } else if ( (LA2_3505 == COMMON_CHAR || LA2_3505 == HEX_CHAR) ) { s = 3503; } else if ( (LA2_3505 == DIGIT) ) { s = 3504; } else if ( (LA2_3505 == DOT) ) { s = 3505; } else if ( (LA2_3505 == PERCENT) ) { s = 3506; } else if ( (LA2_3505 == COLON) ) { s = 3291; } else if ( (LA2_3505 == AT) ) { s = 2578; } else if ( (LA2_3505 == AND) ) { s = 3292; } else if ( (LA2_3505 == EQUAL) ) { s = 3550; } else if ( (LA2_3505 == PLUS) ) { s = 3507; } else if ( (LA2_3505 == DOLLARD) ) { s = 3293; } else if ( (LA2_3505 == COMMA) ) { s = 2583; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3505 == CRLF) ) { s = 205; } else if ( (LA2_3505 == DASH || LA2_3505 == EMARK || LA2_3505 == LPAREN || LA2_3505 == RPAREN || ((LA2_3505 >= SQUOTE) && (LA2_3505 <= USCORE))) ) { s = 3508; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3505 == LSBRAQUET || LA2_3505 == RSBRAQUET) ) { s = 405; } SEEK(index2_3505); if ( s>=0 ) { return s; } } break; case 413: { ANTLR3_UINT32 LA2_2864; ANTLR3_MARKER index2_2864; LA2_2864 = LA(1); index2_2864 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2864 == QMARK) ) { s = 854; } else if ( (LA2_2864 == SP) ) { s = 204; } else if ( (LA2_2864 == SLASH) ) { s = 2009; } else if ( (LA2_2864 == SEMI) ) { s = 2477; } else if ( (LA2_2864 == COMMON_CHAR || LA2_2864 == HEX_CHAR) ) { s = 2860; } else if ( (LA2_2864 == DIGIT) ) { s = 2861; } else if ( (LA2_2864 == DOT) ) { s = 2862; } else if ( (LA2_2864 == PERCENT) ) { s = 2863; } else if ( (LA2_2864 == COLON) ) { s = 2534; } else if ( (LA2_2864 == AT) ) { s = 1576; } else if ( (LA2_2864 == AND) ) { s = 2535; } else if ( (LA2_2864 == EQUAL) ) { s = 2903; } else if ( (LA2_2864 == PLUS) ) { s = 2864; } else if ( (LA2_2864 == DOLLARD) ) { s = 2537; } else if ( (LA2_2864 == COMMA) ) { s = 1581; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2864 == CRLF) ) { s = 205; } else if ( (LA2_2864 == DASH || LA2_2864 == EMARK || LA2_2864 == LPAREN || LA2_2864 == RPAREN || ((LA2_2864 >= SQUOTE) && (LA2_2864 <= USCORE))) ) { s = 2865; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2864 == LSBRAQUET || LA2_2864 == RSBRAQUET) ) { s = 405; } SEEK(index2_2864); if ( s>=0 ) { return s; } } break; case 414: { ANTLR3_UINT32 LA2_3536; ANTLR3_MARKER index2_3536; LA2_3536 = LA(1); index2_3536 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3536 == SLASH) ) { s = 3226; } else if ( (LA2_3536 == QMARK) ) { s = 854; } else if ( (LA2_3536 == SP) ) { s = 204; } else if ( (LA2_3536 == SEMI) ) { s = 2927; } else if ( (LA2_3536 == COMMON_CHAR || LA2_3536 == HEX_CHAR) ) { s = 3534; } else if ( (LA2_3536 == DIGIT) ) { s = 3535; } else if ( (LA2_3536 == DOT) ) { s = 3536; } else if ( (LA2_3536 == PERCENT) ) { s = 3537; } else if ( (LA2_3536 == COLON) ) { s = 3517; } else if ( (LA2_3536 == AT) ) { s = 2111; } else if ( (LA2_3536 == AND) ) { s = 3518; } else if ( (LA2_3536 == EQUAL) ) { s = 2113; } else if ( (LA2_3536 == PLUS) ) { s = 3538; } else if ( (LA2_3536 == DOLLARD) ) { s = 3519; } else if ( (LA2_3536 == COMMA) ) { s = 2116; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3536 == CRLF) ) { s = 205; } else if ( (LA2_3536 == DASH || LA2_3536 == EMARK || LA2_3536 == LPAREN || LA2_3536 == RPAREN || ((LA2_3536 >= SQUOTE) && (LA2_3536 <= USCORE))) ) { s = 3539; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3536 == LSBRAQUET || LA2_3536 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3536); if ( s>=0 ) { return s; } } break; case 415: { ANTLR3_UINT32 LA2_2537; ANTLR3_MARKER index2_2537; LA2_2537 = LA(1); index2_2537 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2537 == QMARK) ) { s = 854; } else if ( (LA2_2537 == SP) ) { s = 204; } else if ( (LA2_2537 == SLASH) ) { s = 2009; } else if ( (LA2_2537 == SEMI) ) { s = 2477; } else if ( (LA2_2537 == COMMON_CHAR || LA2_2537 == HEX_CHAR) ) { s = 2860; } else if ( (LA2_2537 == DIGIT) ) { s = 2861; } else if ( (LA2_2537 == DOT) ) { s = 2862; } else if ( (LA2_2537 == PERCENT) ) { s = 2863; } else if ( (LA2_2537 == COLON) ) { s = 2534; } else if ( (LA2_2537 == AT) ) { s = 1576; } else if ( (LA2_2537 == AND) ) { s = 2535; } else if ( (LA2_2537 == EQUAL) ) { s = 2903; } else if ( (LA2_2537 == PLUS) ) { s = 2864; } else if ( (LA2_2537 == DOLLARD) ) { s = 2537; } else if ( (LA2_2537 == COMMA) ) { s = 1581; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2537 == CRLF) ) { s = 205; } else if ( (LA2_2537 == DASH || LA2_2537 == EMARK || LA2_2537 == LPAREN || LA2_2537 == RPAREN || ((LA2_2537 >= SQUOTE) && (LA2_2537 <= USCORE))) ) { s = 2865; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2537 == LSBRAQUET || LA2_2537 == RSBRAQUET) ) { s = 405; } SEEK(index2_2537); if ( s>=0 ) { return s; } } break; case 416: { ANTLR3_UINT32 LA2_2885; ANTLR3_MARKER index2_2885; LA2_2885 = LA(1); index2_2885 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2885 == SP) ) { s = 2456; } else if ( (LA2_2885 == CRLF) ) { s = 2458; } else if ( (LA2_2885 == EQUAL) ) { s = 2867; } else if ( (LA2_2885 == SLASH) ) { s = 3185; } else if ( (LA2_2885 == QMARK) ) { s = 854; } else if ( (LA2_2885 == SEMI) ) { s = 2028; } else if ( (LA2_2885 == COMMON_CHAR || LA2_2885 == HEX_CHAR) ) { s = 2885; } else if ( (LA2_2885 == DIGIT) ) { s = 2481; } else if ( (LA2_2885 == DOT) ) { s = 2482; } else if ( (LA2_2885 == PERCENT) ) { s = 2483; } else if ( (LA2_2885 == PLUS) ) { s = 2484; } else if ( (LA2_2885 == BQUOTE) ) { s = 1203; } else if ( (LA2_2885 == DASH || LA2_2885 == EMARK || LA2_2885 == LPAREN || LA2_2885 == RPAREN || ((LA2_2885 >= SQUOTE) && (LA2_2885 <= USCORE))) ) { s = 2485; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2885 == AND || LA2_2885 == COLON || LA2_2885 == DOLLARD || LA2_2885 == LSBRAQUET || LA2_2885 == RSBRAQUET) ) { s = 405; } SEEK(index2_2885); if ( s>=0 ) { return s; } } break; case 417: { ANTLR3_UINT32 LA2_3875; ANTLR3_MARKER index2_3875; LA2_3875 = LA(1); index2_3875 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3875 == SLASH) ) { s = 3435; } else if ( (LA2_3875 == QMARK) ) { s = 854; } else if ( (LA2_3875 == SP) ) { s = 204; } else if ( (LA2_3875 == SEMI) ) { s = 3170; } else if ( (LA2_3875 == COMMON_CHAR || LA2_3875 == HEX_CHAR) ) { s = 3773; } else if ( (LA2_3875 == DIGIT) ) { s = 3774; } else if ( (LA2_3875 == DOT) ) { s = 3775; } else if ( (LA2_3875 == PERCENT) ) { s = 3776; } else if ( (LA2_3875 == COLON) ) { s = 3777; } else if ( (LA2_3875 == AT) ) { s = 2184; } else if ( (LA2_3875 == AND) ) { s = 3778; } else if ( (LA2_3875 == EQUAL) ) { s = 2186; } else if ( (LA2_3875 == PLUS) ) { s = 3779; } else if ( (LA2_3875 == DOLLARD) ) { s = 3780; } else if ( (LA2_3875 == COMMA) ) { s = 2189; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3875 == CRLF) ) { s = 205; } else if ( (LA2_3875 == DASH || LA2_3875 == EMARK || LA2_3875 == LPAREN || LA2_3875 == RPAREN || ((LA2_3875 >= SQUOTE) && (LA2_3875 <= USCORE))) ) { s = 3781; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3875 == LSBRAQUET || LA2_3875 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3875); if ( s>=0 ) { return s; } } break; case 418: { ANTLR3_UINT32 LA2_3759; ANTLR3_MARKER index2_3759; LA2_3759 = LA(1); index2_3759 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3759 == SEMI) ) { s = 3151; } else if ( (LA2_3759 == QMARK) ) { s = 854; } else if ( (LA2_3759 == SP) ) { s = 204; } else if ( (LA2_3759 == SLASH) ) { s = 3123; } else if ( (LA2_3759 == COMMON_CHAR || LA2_3759 == HEX_CHAR) ) { s = 3406; } else if ( (LA2_3759 == DIGIT) ) { s = 3407; } else if ( (LA2_3759 == DOT) ) { s = 3408; } else if ( (LA2_3759 == PERCENT) ) { s = 3409; } else if ( (LA2_3759 == COLON) ) { s = 3410; } else if ( (LA2_3759 == AT) ) { s = 2504; } else if ( (LA2_3759 == AND) ) { s = 3411; } else if ( (LA2_3759 == EQUAL) ) { s = 2506; } else if ( (LA2_3759 == PLUS) ) { s = 3412; } else if ( (LA2_3759 == DOLLARD) ) { s = 3413; } else if ( (LA2_3759 == COMMA) ) { s = 2509; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3759 == CRLF) ) { s = 205; } else if ( (LA2_3759 == DASH || LA2_3759 == EMARK || LA2_3759 == LPAREN || LA2_3759 == RPAREN || ((LA2_3759 >= SQUOTE) && (LA2_3759 <= USCORE))) ) { s = 3414; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3759 == LSBRAQUET || LA2_3759 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3759); if ( s>=0 ) { return s; } } break; case 419: { ANTLR3_UINT32 LA2_2912; ANTLR3_MARKER index2_2912; LA2_2912 = LA(1); index2_2912 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2912 == SLASH) ) { s = 3222; } else if ( (LA2_2912 == QMARK) ) { s = 854; } else if ( (LA2_2912 == SP) ) { s = 1585; } else if ( (LA2_2912 == CRLF) ) { s = 1588; } else if ( (LA2_2912 == SEMI) ) { s = 1630; } else if ( (LA2_2912 == COMMON_CHAR || LA2_2912 == HEX_CHAR) ) { s = 2912; } else if ( (LA2_2912 == DIGIT) ) { s = 2913; } else if ( (LA2_2912 == DOT) ) { s = 2914; } else if ( (LA2_2912 == PERCENT) ) { s = 2915; } else if ( (LA2_2912 == PLUS) ) { s = 2916; } else if ( (LA2_2912 == BQUOTE) ) { s = 2092; } else if ( (LA2_2912 == DASH || LA2_2912 == EMARK || LA2_2912 == LPAREN || LA2_2912 == RPAREN || ((LA2_2912 >= SQUOTE) && (LA2_2912 <= USCORE))) ) { s = 2917; } else if ( (LA2_2912 == COLON) ) { s = 2653; } else if ( (LA2_2912 == AND) ) { s = 2654; } else if ( (LA2_2912 == AT) ) { s = 810; } else if ( (LA2_2912 == DOLLARD) ) { s = 2656; } else if ( (LA2_2912 == EQUAL) ) { s = 812; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2912 == LSBRAQUET || LA2_2912 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_2912 == COMMA) ) { s = 815; } SEEK(index2_2912); if ( s>=0 ) { return s; } } break; case 420: { ANTLR3_UINT32 LA2_1115; ANTLR3_MARKER index2_1115; LA2_1115 = LA(1); index2_1115 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1115 == DIGIT) ) { s = 1566; } else if ( (LA2_1115 == DOT) ) { s = 1567; } else if ( (LA2_1115 == COLON) ) { s = 201; } else if ( (LA2_1115 == AT) ) { s = 89; } else if ( (LA2_1115 == COMMON_CHAR || LA2_1115 == HEX_CHAR) ) { s = 90; } else if ( (LA2_1115 == DASH) ) { s = 95; } else if ( (LA2_1115 == PERCENT) ) { s = 93; } else if ( (LA2_1115 == SEMI) ) { s = 202; } else if ( (LA2_1115 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1115 == CRLF) ) { s = 205; } else if ( (LA2_1115 == QMARK) ) { s = 206; } else if ( (LA2_1115 == COMMA) ) { s = 97; } else if ( (LA2_1115 == EMARK || LA2_1115 == LPAREN || LA2_1115 == RPAREN || ((LA2_1115 >= SQUOTE) && (LA2_1115 <= USCORE))) ) { s = 96; } else if ( (LA2_1115 == AND || LA2_1115 == DOLLARD || LA2_1115 == EQUAL || LA2_1115 == PLUS || LA2_1115 == SLASH) ) { s = 99; } SEEK(index2_1115); if ( s>=0 ) { return s; } } break; case 421: { ANTLR3_UINT32 LA2_419; ANTLR3_MARKER index2_419; LA2_419 = LA(1); index2_419 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_419 == DIGIT) ) { s = 728; } else if ( (LA2_419 == DOT) ) { s = 729; } else if ( (LA2_419 == COLON) ) { s = 201; } else if ( (LA2_419 == AT) ) { s = 89; } else if ( (LA2_419 == COMMON_CHAR || LA2_419 == HEX_CHAR) ) { s = 90; } else if ( (LA2_419 == DASH) ) { s = 95; } else if ( (LA2_419 == PERCENT) ) { s = 93; } else if ( (LA2_419 == SEMI) ) { s = 202; } else if ( (LA2_419 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_419 == CRLF) ) { s = 205; } else if ( (LA2_419 == QMARK) ) { s = 206; } else if ( (LA2_419 == COMMA) ) { s = 97; } else if ( (LA2_419 == EMARK || LA2_419 == LPAREN || LA2_419 == RPAREN || ((LA2_419 >= SQUOTE) && (LA2_419 <= USCORE))) ) { s = 96; } else if ( (LA2_419 == AND || LA2_419 == DOLLARD || LA2_419 == EQUAL || LA2_419 == PLUS || LA2_419 == SLASH) ) { s = 99; } SEEK(index2_419); if ( s>=0 ) { return s; } } break; case 422: { ANTLR3_UINT32 LA2_100; ANTLR3_MARKER index2_100; LA2_100 = LA(1); index2_100 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_100 == DIGIT) ) { s = 211; } else if ( (LA2_100 == DOT) ) { s = 212; } else if ( (LA2_100 == COLON) ) { s = 201; } else if ( (LA2_100 == AT) ) { s = 89; } else if ( (LA2_100 == COMMON_CHAR || LA2_100 == HEX_CHAR) ) { s = 90; } else if ( (LA2_100 == DASH) ) { s = 95; } else if ( (LA2_100 == PERCENT) ) { s = 93; } else if ( (LA2_100 == SEMI) ) { s = 202; } else if ( (LA2_100 == EMARK || LA2_100 == LPAREN || LA2_100 == RPAREN || ((LA2_100 >= SQUOTE) && (LA2_100 <= USCORE))) ) { s = 96; } else if ( (LA2_100 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_100 == CRLF) ) { s = 205; } else if ( (LA2_100 == QMARK) ) { s = 206; } else if ( (LA2_100 == COMMA) ) { s = 97; } else if ( (LA2_100 == AND || LA2_100 == DOLLARD || LA2_100 == EQUAL || LA2_100 == PLUS || LA2_100 == SLASH) ) { s = 99; } SEEK(index2_100); if ( s>=0 ) { return s; } } break; case 423: { ANTLR3_UINT32 LA2_3769; ANTLR3_MARKER index2_3769; LA2_3769 = LA(1); index2_3769 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3769 == QMARK) ) { s = 854; } else if ( (LA2_3769 == SP) ) { s = 204; } else if ( (LA2_3769 == SLASH) ) { s = 3123; } else if ( (LA2_3769 == SEMI) ) { s = 3151; } else if ( (LA2_3769 == COMMON_CHAR || LA2_3769 == HEX_CHAR) ) { s = 3761; } else if ( (LA2_3769 == DIGIT) ) { s = 3762; } else if ( (LA2_3769 == DOT) ) { s = 3763; } else if ( (LA2_3769 == PERCENT) ) { s = 3764; } else if ( (LA2_3769 == COLON) ) { s = 3765; } else if ( (LA2_3769 == AT) ) { s = 2879; } else if ( (LA2_3769 == AND) ) { s = 3766; } else if ( (LA2_3769 == EQUAL) ) { s = 2881; } else if ( (LA2_3769 == PLUS) ) { s = 3767; } else if ( (LA2_3769 == DOLLARD) ) { s = 3768; } else if ( (LA2_3769 == COMMA) ) { s = 2884; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3769 == CRLF) ) { s = 205; } else if ( (LA2_3769 == DASH || LA2_3769 == EMARK || LA2_3769 == LPAREN || LA2_3769 == RPAREN || ((LA2_3769 >= SQUOTE) && (LA2_3769 <= USCORE))) ) { s = 3769; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3769 == LSBRAQUET || LA2_3769 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3769); if ( s>=0 ) { return s; } } break; case 424: { ANTLR3_UINT32 LA2_1997; ANTLR3_MARKER index2_1997; LA2_1997 = LA(1); index2_1997 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1997 == DIGIT) ) { s = 2453; } else if ( (LA2_1997 == COLON) ) { s = 201; } else if ( (LA2_1997 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1997 == CRLF) ) { s = 205; } else if ( (LA2_1997 == SEMI) ) { s = 202; } else if ( (LA2_1997 == QMARK) ) { s = 206; } else if ( (LA2_1997 == AT) ) { s = 89; } else if ( (LA2_1997 == COMMON_CHAR || LA2_1997 == HEX_CHAR) ) { s = 90; } else if ( (LA2_1997 == DOT) ) { s = 203; } else if ( (LA2_1997 == PERCENT) ) { s = 93; } else if ( (LA2_1997 == COMMA) ) { s = 97; } else if ( (LA2_1997 == DASH) ) { s = 95; } else if ( (LA2_1997 == EMARK || LA2_1997 == LPAREN || LA2_1997 == RPAREN || ((LA2_1997 >= SQUOTE) && (LA2_1997 <= USCORE))) ) { s = 96; } else if ( (LA2_1997 == AND || LA2_1997 == DOLLARD || LA2_1997 == EQUAL || LA2_1997 == PLUS || LA2_1997 == SLASH) ) { s = 99; } SEEK(index2_1997); if ( s>=0 ) { return s; } } break; case 425: { ANTLR3_UINT32 LA2_707; ANTLR3_MARKER index2_707; LA2_707 = LA(1); index2_707 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_707 == AT) ) { s = 89; } else if ( (LA2_707 == COMMON_CHAR || LA2_707 == HEX_CHAR) ) { s = 699; } else if ( (LA2_707 == DIGIT) ) { s = 700; } else if ( (LA2_707 == DOT) ) { s = 701; } else if ( (LA2_707 == PERCENT) ) { s = 702; } else if ( (LA2_707 == AND) ) { s = 703; } else if ( (LA2_707 == EQUAL) ) { s = 704; } else if ( (LA2_707 == PLUS) ) { s = 705; } else if ( (LA2_707 == DOLLARD) ) { s = 706; } else if ( (LA2_707 == COMMA) ) { s = 197; } else if ( (LA2_707 == QMARK) ) { s = 694; } else if ( (LA2_707 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_707 == CRLF) ) { s = 205; } else if ( (LA2_707 == SEMI) ) { s = 693; } else if ( (LA2_707 == DASH || LA2_707 == EMARK || LA2_707 == LPAREN || LA2_707 == RPAREN || ((LA2_707 >= SQUOTE) && (LA2_707 <= USCORE))) ) { s = 707; } else if ( (LA2_707 == COLON || LA2_707 == SLASH) ) { s = 708; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_707 == LSBRAQUET || LA2_707 == RSBRAQUET) ) { s = 405; } SEEK(index2_707); if ( s>=0 ) { return s; } } break; case 426: { ANTLR3_UINT32 LA2_3447; ANTLR3_MARKER index2_3447; LA2_3447 = LA(1); index2_3447 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3447 == SLASH) ) { s = 3171; } else if ( (LA2_3447 == QMARK) ) { s = 854; } else if ( (LA2_3447 == SP) ) { s = 204; } else if ( (LA2_3447 == SEMI) ) { s = 3170; } else if ( (LA2_3447 == COMMON_CHAR || LA2_3447 == HEX_CHAR) ) { s = 3445; } else if ( (LA2_3447 == DIGIT) ) { s = 3446; } else if ( (LA2_3447 == DOT) ) { s = 3447; } else if ( (LA2_3447 == PERCENT) ) { s = 3448; } else if ( (LA2_3447 == COLON) ) { s = 3449; } else if ( (LA2_3447 == AT) ) { s = 2184; } else if ( (LA2_3447 == AND) ) { s = 3450; } else if ( (LA2_3447 == EQUAL) ) { s = 3643; } else if ( (LA2_3447 == PLUS) ) { s = 3451; } else if ( (LA2_3447 == DOLLARD) ) { s = 3452; } else if ( (LA2_3447 == COMMA) ) { s = 2189; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3447 == CRLF) ) { s = 205; } else if ( (LA2_3447 == DASH || LA2_3447 == EMARK || LA2_3447 == LPAREN || LA2_3447 == RPAREN || ((LA2_3447 >= SQUOTE) && (LA2_3447 <= USCORE))) ) { s = 3453; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3447 == LSBRAQUET || LA2_3447 == RSBRAQUET) ) { s = 405; } SEEK(index2_3447); if ( s>=0 ) { return s; } } break; case 427: { ANTLR3_UINT32 LA2_3419; ANTLR3_MARKER index2_3419; LA2_3419 = LA(1); index2_3419 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3419 == QMARK) ) { s = 854; } else if ( (LA2_3419 == SP) ) { s = 204; } else if ( (LA2_3419 == SLASH) ) { s = 2827; } else if ( (LA2_3419 == SEMI) ) { s = 3151; } else if ( (LA2_3419 == COMMON_CHAR || LA2_3419 == HEX_CHAR) ) { s = 3419; } else if ( (LA2_3419 == DIGIT) ) { s = 3420; } else if ( (LA2_3419 == DOT) ) { s = 3421; } else if ( (LA2_3419 == PERCENT) ) { s = 3422; } else if ( (LA2_3419 == COLON) ) { s = 3423; } else if ( (LA2_3419 == AT) ) { s = 2879; } else if ( (LA2_3419 == AND) ) { s = 3424; } else if ( (LA2_3419 == EQUAL) ) { s = 3629; } else if ( (LA2_3419 == PLUS) ) { s = 3425; } else if ( (LA2_3419 == DOLLARD) ) { s = 3426; } else if ( (LA2_3419 == COMMA) ) { s = 2884; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3419 == CRLF) ) { s = 205; } else if ( (LA2_3419 == DASH || LA2_3419 == EMARK || LA2_3419 == LPAREN || LA2_3419 == RPAREN || ((LA2_3419 >= SQUOTE) && (LA2_3419 <= USCORE))) ) { s = 3427; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3419 == LSBRAQUET || LA2_3419 == RSBRAQUET) ) { s = 405; } SEEK(index2_3419); if ( s>=0 ) { return s; } } break; case 428: { ANTLR3_UINT32 LA2_2218; ANTLR3_MARKER index2_2218; LA2_2218 = LA(1); index2_2218 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2218 == SP) ) { s = 2456; } else if ( (LA2_2218 == CRLF) ) { s = 2458; } else if ( (LA2_2218 == EQUAL) ) { s = 2663; } else if ( (LA2_2218 == SLASH) ) { s = 2664; } else if ( (LA2_2218 == QMARK) ) { s = 1751; } else if ( (LA2_2218 == SEMI) ) { s = 1749; } else if ( (LA2_2218 == COMMON_CHAR || LA2_2218 == HEX_CHAR) ) { s = 2218; } else if ( (LA2_2218 == DIGIT) ) { s = 2219; } else if ( (LA2_2218 == DOT) ) { s = 2220; } else if ( (LA2_2218 == PERCENT) ) { s = 2221; } else if ( (LA2_2218 == PLUS) ) { s = 2222; } else if ( (LA2_2218 == BQUOTE) ) { s = 1203; } else if ( (LA2_2218 == DASH || LA2_2218 == EMARK || LA2_2218 == LPAREN || LA2_2218 == RPAREN || ((LA2_2218 >= SQUOTE) && (LA2_2218 <= USCORE))) ) { s = 2223; } else if ( (LA2_2218 == AND || LA2_2218 == COLON || LA2_2218 == DOLLARD) ) { s = 1790; } else if ( (LA2_2218 == COMMA) ) { s = 506; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2218 == LSBRAQUET || LA2_2218 == RSBRAQUET) ) { s = 405; } else if ( (LA2_2218 == AT) ) { s = 508; } SEEK(index2_2218); if ( s>=0 ) { return s; } } break; case 429: { ANTLR3_UINT32 LA2_3567; ANTLR3_MARKER index2_3567; LA2_3567 = LA(1); index2_3567 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3567 == SEMI) ) { s = 3030; } else if ( (LA2_3567 == SLASH) ) { s = 3031; } else if ( (LA2_3567 == QMARK) ) { s = 1751; } else if ( (LA2_3567 == SP) ) { s = 204; } else if ( (LA2_3567 == COMMON_CHAR || LA2_3567 == HEX_CHAR) ) { s = 3021; } else if ( (LA2_3567 == DIGIT) ) { s = 3022; } else if ( (LA2_3567 == DOT) ) { s = 3023; } else if ( (LA2_3567 == PERCENT) ) { s = 3024; } else if ( (LA2_3567 == COLON) ) { s = 3025; } else if ( (LA2_3567 == AT) ) { s = 2229; } else if ( (LA2_3567 == AND) ) { s = 3026; } else if ( (LA2_3567 == EQUAL) ) { s = 3027; } else if ( (LA2_3567 == PLUS) ) { s = 3028; } else if ( (LA2_3567 == DOLLARD) ) { s = 3029; } else if ( (LA2_3567 == COMMA) ) { s = 2234; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3567 == CRLF) ) { s = 205; } else if ( (LA2_3567 == DASH || LA2_3567 == EMARK || LA2_3567 == LPAREN || LA2_3567 == RPAREN || ((LA2_3567 >= SQUOTE) && (LA2_3567 <= USCORE))) ) { s = 3032; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3567 == LSBRAQUET || LA2_3567 == RSBRAQUET) ) { s = 405; } SEEK(index2_3567); if ( s>=0 ) { return s; } } break; case 430: { ANTLR3_UINT32 LA2_396; ANTLR3_MARKER index2_396; LA2_396 = LA(1); index2_396 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_396 == COMMON_CHAR || LA2_396 == HEX_CHAR) ) { s = 699; } else if ( (LA2_396 == DIGIT) ) { s = 700; } else if ( (LA2_396 == DOT) ) { s = 701; } else if ( (LA2_396 == PERCENT) ) { s = 702; } else if ( (LA2_396 == AND) ) { s = 703; } else if ( (LA2_396 == EQUAL) ) { s = 704; } else if ( (LA2_396 == PLUS) ) { s = 705; } else if ( (LA2_396 == DOLLARD) ) { s = 706; } else if ( (LA2_396 == COMMA) ) { s = 197; } else if ( (LA2_396 == AT) ) { s = 89; } else if ( (LA2_396 == QMARK) ) { s = 694; } else if ( (LA2_396 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_396 == CRLF) ) { s = 205; } else if ( (LA2_396 == SEMI) ) { s = 693; } else if ( (LA2_396 == DASH || LA2_396 == EMARK || LA2_396 == LPAREN || LA2_396 == RPAREN || ((LA2_396 >= SQUOTE) && (LA2_396 <= USCORE))) ) { s = 707; } else if ( (LA2_396 == COLON || LA2_396 == SLASH) ) { s = 708; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_396 == LSBRAQUET || LA2_396 == RSBRAQUET) ) { s = 405; } SEEK(index2_396); if ( s>=0 ) { return s; } } break; case 431: { ANTLR3_UINT32 LA2_2269; ANTLR3_MARKER index2_2269; LA2_2269 = LA(1); index2_2269 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2269 == AND) ) { s = 2268; } else if ( (LA2_2269 == SP) ) { s = 35; } else if ( (LA2_2269 == QMARK) ) { s = 2263; } else if ( (LA2_2269 == COMMON_CHAR || LA2_2269 == HEX_CHAR) ) { s = 2264; } else if ( (LA2_2269 == DIGIT) ) { s = 2265; } else if ( (LA2_2269 == DASH || LA2_2269 == DOT || LA2_2269 == EMARK || LA2_2269 == LPAREN || LA2_2269 == RPAREN || ((LA2_2269 >= SQUOTE) && (LA2_2269 <= USCORE))) ) { s = 2266; } else if ( (LA2_2269 == PERCENT) ) { s = 2267; } else if ( (LA2_2269 == SEMI) ) { s = 505; } else if ( (LA2_2269 == COMMA) ) { s = 506; } else if ( (LA2_2269 == COLON || LA2_2269 == DOLLARD || LA2_2269 == PLUS || LA2_2269 == SLASH) ) { s = 2269; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2269 == LSBRAQUET || LA2_2269 == RSBRAQUET) ) { s = 1104; } else if ( (LA2_2269 == AT || LA2_2269 == EQUAL) ) { s = 508; } SEEK(index2_2269); if ( s>=0 ) { return s; } } break; case 432: { ANTLR3_UINT32 LA2_3429; ANTLR3_MARKER index2_3429; LA2_3429 = LA(1); index2_3429 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3429 == SLASH) ) { s = 3153; } else if ( (LA2_3429 == QMARK) ) { s = 854; } else if ( (LA2_3429 == SP) ) { s = 1585; } else if ( (LA2_3429 == SEMI) ) { s = 1583; } else if ( (LA2_3429 == COMMON_CHAR || LA2_3429 == HEX_CHAR) ) { s = 2831; } else if ( (LA2_3429 == DIGIT) ) { s = 2832; } else if ( (LA2_3429 == DOT) ) { s = 2833; } else if ( (LA2_3429 == PERCENT) ) { s = 2834; } else if ( (LA2_3429 == COLON) ) { s = 2835; } else if ( (LA2_3429 == AT) ) { s = 1123; } else if ( (LA2_3429 == AND) ) { s = 2836; } else if ( (LA2_3429 == EQUAL) ) { s = 1125; } else if ( (LA2_3429 == PLUS) ) { s = 2837; } else if ( (LA2_3429 == DOLLARD) ) { s = 2838; } else if ( (LA2_3429 == COMMA) ) { s = 1128; } else if ( (LA2_3429 == CRLF) ) { s = 1588; } else if ( (LA2_3429 == BQUOTE) ) { s = 2092; } else if ( (LA2_3429 == DASH || LA2_3429 == EMARK || LA2_3429 == LPAREN || LA2_3429 == RPAREN || ((LA2_3429 >= SQUOTE) && (LA2_3429 <= USCORE))) ) { s = 2839; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3429 == LSBRAQUET || LA2_3429 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3429); if ( s>=0 ) { return s; } } break; case 433: { ANTLR3_UINT32 LA2_2664; ANTLR3_MARKER index2_2664; LA2_2664 = LA(1); index2_2664 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2664 == COMMON_CHAR || LA2_2664 == HEX_CHAR) ) { s = 3021; } else if ( (LA2_2664 == DIGIT) ) { s = 3022; } else if ( (LA2_2664 == DOT) ) { s = 3023; } else if ( (LA2_2664 == PERCENT) ) { s = 3024; } else if ( (LA2_2664 == COLON) ) { s = 3025; } else if ( (LA2_2664 == AT) ) { s = 2229; } else if ( (LA2_2664 == AND) ) { s = 3026; } else if ( (LA2_2664 == EQUAL) ) { s = 3027; } else if ( (LA2_2664 == PLUS) ) { s = 3028; } else if ( (LA2_2664 == DOLLARD) ) { s = 3029; } else if ( (LA2_2664 == COMMA) ) { s = 2234; } else if ( (LA2_2664 == SEMI) ) { s = 3030; } else if ( (LA2_2664 == SLASH) ) { s = 3031; } else if ( (LA2_2664 == QMARK) ) { s = 1751; } else if ( (LA2_2664 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2664 == CRLF) ) { s = 205; } else if ( (LA2_2664 == DASH || LA2_2664 == EMARK || LA2_2664 == LPAREN || LA2_2664 == RPAREN || ((LA2_2664 >= SQUOTE) && (LA2_2664 <= USCORE))) ) { s = 3032; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2664 == LSBRAQUET || LA2_2664 == RSBRAQUET) ) { s = 405; } SEEK(index2_2664); if ( s>=0 ) { return s; } } break; case 434: { ANTLR3_UINT32 LA2_3719; ANTLR3_MARKER index2_3719; LA2_3719 = LA(1); index2_3719 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3719 == QMARK) ) { s = 854; } else if ( (LA2_3719 == SP) ) { s = 204; } else if ( (LA2_3719 == SLASH) ) { s = 3226; } else if ( (LA2_3719 == SEMI) ) { s = 3251; } else if ( (LA2_3719 == COMMON_CHAR || LA2_3719 == HEX_CHAR) ) { s = 3718; } else if ( (LA2_3719 == DIGIT) ) { s = 3719; } else if ( (LA2_3719 == DOT) ) { s = 3720; } else if ( (LA2_3719 == PERCENT) ) { s = 3721; } else if ( (LA2_3719 == COLON) ) { s = 3712; } else if ( (LA2_3719 == AT) ) { s = 2578; } else if ( (LA2_3719 == AND) ) { s = 3713; } else if ( (LA2_3719 == EQUAL) ) { s = 2580; } else if ( (LA2_3719 == PLUS) ) { s = 3722; } else if ( (LA2_3719 == DOLLARD) ) { s = 3714; } else if ( (LA2_3719 == COMMA) ) { s = 2583; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3719 == CRLF) ) { s = 205; } else if ( (LA2_3719 == DASH || LA2_3719 == EMARK || LA2_3719 == LPAREN || LA2_3719 == RPAREN || ((LA2_3719 >= SQUOTE) && (LA2_3719 <= USCORE))) ) { s = 3723; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3719 == LSBRAQUET || LA2_3719 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3719); if ( s>=0 ) { return s; } } break; case 435: { ANTLR3_UINT32 LA2_1977; ANTLR3_MARKER index2_1977; LA2_1977 = LA(1); index2_1977 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1977 == QMARK) ) { s = 694; } else if ( (LA2_1977 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1977 == CRLF) ) { s = 205; } else if ( (LA2_1977 == SEMI) ) { s = 693; } else if ( (LA2_1977 == DOT) ) { s = 1057; } else if ( (LA2_1977 == COMMON_CHAR || LA2_1977 == HEX_CHAR) ) { s = 1058; } else if ( (LA2_1977 == DIGIT) ) { s = 1059; } else if ( (LA2_1977 == AND || LA2_1977 == COLON || LA2_1977 == DOLLARD || LA2_1977 == PLUS || LA2_1977 == SLASH) ) { s = 708; } else if ( (LA2_1977 == DASH || LA2_1977 == EMARK || LA2_1977 == LPAREN || LA2_1977 == RPAREN || ((LA2_1977 >= SQUOTE) && (LA2_1977 <= USCORE))) ) { s = 1060; } else if ( (LA2_1977 == PERCENT) ) { s = 1061; } else if ( (LA2_1977 == EQUAL) ) { s = 1081; } else if ( (LA2_1977 == COMMA) ) { s = 106; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1977 == LSBRAQUET || LA2_1977 == RSBRAQUET) ) { s = 405; } else if ( (LA2_1977 == AT) ) { s = 108; } SEEK(index2_1977); if ( s>=0 ) { return s; } } break; case 436: { ANTLR3_UINT32 LA2_1994; ANTLR3_MARKER index2_1994; LA2_1994 = LA(1); index2_1994 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1994 == COLON) ) { s = 1106; } else if ( (LA2_1994 == AT) ) { s = 89; } else if ( (LA2_1994 == COMMON_CHAR || LA2_1994 == HEX_CHAR) ) { s = 1107; } else if ( (LA2_1994 == DIGIT) ) { s = 1108; } else if ( (LA2_1994 == DASH || LA2_1994 == DOT || LA2_1994 == EMARK || LA2_1994 == LPAREN || LA2_1994 == RPAREN || ((LA2_1994 >= SQUOTE) && (LA2_1994 <= USCORE))) ) { s = 1109; } else if ( (LA2_1994 == PERCENT) ) { s = 1110; } else if ( (LA2_1994 == AND) ) { s = 1112; } else if ( (LA2_1994 == QMARK) ) { s = 1111; } else if ( (LA2_1994 == SP) ) { s = 35; } else if ( (LA2_1994 == SEMI) ) { s = 94; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1994 == LSBRAQUET || LA2_1994 == RSBRAQUET) ) { s = 1104; } else if ( (LA2_1994 == COMMA) ) { s = 97; } else if ( (LA2_1994 == EQUAL) ) { s = 99; } else if ( (LA2_1994 == DOLLARD || LA2_1994 == PLUS || LA2_1994 == SLASH) ) { s = 1113; } SEEK(index2_1994); if ( s>=0 ) { return s; } } break; case 437: { ANTLR3_UINT32 LA2_3504; ANTLR3_MARKER index2_3504; LA2_3504 = LA(1); index2_3504 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3504 == QMARK) ) { s = 854; } else if ( (LA2_3504 == SP) ) { s = 204; } else if ( (LA2_3504 == SLASH) ) { s = 2928; } else if ( (LA2_3504 == SEMI) ) { s = 3251; } else if ( (LA2_3504 == COMMON_CHAR || LA2_3504 == HEX_CHAR) ) { s = 3503; } else if ( (LA2_3504 == DIGIT) ) { s = 3504; } else if ( (LA2_3504 == DOT) ) { s = 3505; } else if ( (LA2_3504 == PERCENT) ) { s = 3506; } else if ( (LA2_3504 == COLON) ) { s = 3291; } else if ( (LA2_3504 == AT) ) { s = 2578; } else if ( (LA2_3504 == AND) ) { s = 3292; } else if ( (LA2_3504 == EQUAL) ) { s = 3550; } else if ( (LA2_3504 == PLUS) ) { s = 3507; } else if ( (LA2_3504 == DOLLARD) ) { s = 3293; } else if ( (LA2_3504 == COMMA) ) { s = 2583; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3504 == CRLF) ) { s = 205; } else if ( (LA2_3504 == DASH || LA2_3504 == EMARK || LA2_3504 == LPAREN || LA2_3504 == RPAREN || ((LA2_3504 >= SQUOTE) && (LA2_3504 <= USCORE))) ) { s = 3508; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3504 == LSBRAQUET || LA2_3504 == RSBRAQUET) ) { s = 405; } SEEK(index2_3504); if ( s>=0 ) { return s; } } break; case 438: { ANTLR3_UINT32 LA2_2440; ANTLR3_MARKER index2_2440; LA2_2440 = LA(1); index2_2440 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2440 == SP) ) { s = 35; } else if ( (LA2_2440 == AND) ) { s = 1553; } else if ( (LA2_2440 == QMARK) ) { s = 2435; } else if ( (LA2_2440 == COMMON_CHAR || LA2_2440 == HEX_CHAR) ) { s = 2439; } else if ( (LA2_2440 == DIGIT) ) { s = 2440; } else if ( (LA2_2440 == DASH || LA2_2440 == DOT || LA2_2440 == EMARK || LA2_2440 == LPAREN || LA2_2440 == RPAREN || ((LA2_2440 >= SQUOTE) && (LA2_2440 <= USCORE))) ) { s = 2441; } else if ( (LA2_2440 == PERCENT) ) { s = 2442; } else if ( (LA2_2440 == SEMI) ) { s = 105; } else if ( (LA2_2440 == COMMA) ) { s = 106; } else if ( (LA2_2440 == COLON || LA2_2440 == DOLLARD || LA2_2440 == PLUS || LA2_2440 == SLASH) ) { s = 2436; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2440 == LSBRAQUET || LA2_2440 == RSBRAQUET) ) { s = 2437; } else if ( (LA2_2440 == AT || LA2_2440 == EQUAL) ) { s = 108; } SEEK(index2_2440); if ( s>=0 ) { return s; } } break; case 439: { ANTLR3_UINT32 LA2_3765; ANTLR3_MARKER index2_3765; LA2_3765 = LA(1); index2_3765 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3765 == QMARK) ) { s = 854; } else if ( (LA2_3765 == SP) ) { s = 204; } else if ( (LA2_3765 == SLASH) ) { s = 3123; } else if ( (LA2_3765 == SEMI) ) { s = 3151; } else if ( (LA2_3765 == COMMON_CHAR || LA2_3765 == HEX_CHAR) ) { s = 3761; } else if ( (LA2_3765 == DIGIT) ) { s = 3762; } else if ( (LA2_3765 == DOT) ) { s = 3763; } else if ( (LA2_3765 == PERCENT) ) { s = 3764; } else if ( (LA2_3765 == COLON) ) { s = 3765; } else if ( (LA2_3765 == AT) ) { s = 2879; } else if ( (LA2_3765 == AND) ) { s = 3766; } else if ( (LA2_3765 == EQUAL) ) { s = 2881; } else if ( (LA2_3765 == PLUS) ) { s = 3767; } else if ( (LA2_3765 == DOLLARD) ) { s = 3768; } else if ( (LA2_3765 == COMMA) ) { s = 2884; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3765 == CRLF) ) { s = 205; } else if ( (LA2_3765 == DASH || LA2_3765 == EMARK || LA2_3765 == LPAREN || LA2_3765 == RPAREN || ((LA2_3765 >= SQUOTE) && (LA2_3765 <= USCORE))) ) { s = 3769; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3765 == LSBRAQUET || LA2_3765 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3765); if ( s>=0 ) { return s; } } break; case 440: { ANTLR3_UINT32 LA2_3797; ANTLR3_MARKER index2_3797; LA2_3797 = LA(1); index2_3797 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3797 == SLASH) ) { s = 3678; } else if ( (LA2_3797 == QMARK) ) { s = 854; } else if ( (LA2_3797 == SP) ) { s = 1585; } else if ( (LA2_3797 == CRLF) ) { s = 1588; } else if ( (LA2_3797 == SEMI) ) { s = 2587; } else if ( (LA2_3797 == COMMON_CHAR || LA2_3797 == HEX_CHAR) ) { s = 3512; } else if ( (LA2_3797 == DIGIT) ) { s = 3513; } else if ( (LA2_3797 == DOT) ) { s = 3514; } else if ( (LA2_3797 == PERCENT) ) { s = 3515; } else if ( (LA2_3797 == PLUS) ) { s = 3516; } else if ( (LA2_3797 == BQUOTE) ) { s = 2092; } else if ( (LA2_3797 == COLON) ) { s = 3517; } else if ( (LA2_3797 == AT) ) { s = 2111; } else if ( (LA2_3797 == AND) ) { s = 3518; } else if ( (LA2_3797 == EQUAL) ) { s = 2113; } else if ( (LA2_3797 == DOLLARD) ) { s = 3519; } else if ( (LA2_3797 == COMMA) ) { s = 2116; } else if ( (LA2_3797 == DASH || LA2_3797 == EMARK || LA2_3797 == LPAREN || LA2_3797 == RPAREN || ((LA2_3797 >= SQUOTE) && (LA2_3797 <= USCORE))) ) { s = 3520; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3797 == LSBRAQUET || LA2_3797 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3797); if ( s>=0 ) { return s; } } break; case 441: { ANTLR3_UINT32 LA2_3342; ANTLR3_MARKER index2_3342; LA2_3342 = LA(1); index2_3342 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3342 == SEMI) ) { s = 3351; } else if ( (LA2_3342 == QMARK) ) { s = 1751; } else if ( (LA2_3342 == SP) ) { s = 204; } else if ( (LA2_3342 == SLASH) ) { s = 3031; } else if ( (LA2_3342 == COMMON_CHAR || LA2_3342 == HEX_CHAR) ) { s = 3342; } else if ( (LA2_3342 == DIGIT) ) { s = 3343; } else if ( (LA2_3342 == DOT) ) { s = 3344; } else if ( (LA2_3342 == PERCENT) ) { s = 3345; } else if ( (LA2_3342 == COLON) ) { s = 3346; } else if ( (LA2_3342 == AT) ) { s = 2684; } else if ( (LA2_3342 == AND) ) { s = 3347; } else if ( (LA2_3342 == EQUAL) ) { s = 3348; } else if ( (LA2_3342 == PLUS) ) { s = 3349; } else if ( (LA2_3342 == DOLLARD) ) { s = 3350; } else if ( (LA2_3342 == COMMA) ) { s = 2689; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3342 == CRLF) ) { s = 205; } else if ( (LA2_3342 == DASH || LA2_3342 == EMARK || LA2_3342 == LPAREN || LA2_3342 == RPAREN || ((LA2_3342 >= SQUOTE) && (LA2_3342 <= USCORE))) ) { s = 3352; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3342 == LSBRAQUET || LA2_3342 == RSBRAQUET) ) { s = 405; } SEEK(index2_3342); if ( s>=0 ) { return s; } } break; case 442: { ANTLR3_UINT32 LA2_3539; ANTLR3_MARKER index2_3539; LA2_3539 = LA(1); index2_3539 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3539 == SLASH) ) { s = 3226; } else if ( (LA2_3539 == QMARK) ) { s = 854; } else if ( (LA2_3539 == SP) ) { s = 204; } else if ( (LA2_3539 == SEMI) ) { s = 2927; } else if ( (LA2_3539 == COMMON_CHAR || LA2_3539 == HEX_CHAR) ) { s = 3534; } else if ( (LA2_3539 == DIGIT) ) { s = 3535; } else if ( (LA2_3539 == DOT) ) { s = 3536; } else if ( (LA2_3539 == PERCENT) ) { s = 3537; } else if ( (LA2_3539 == COLON) ) { s = 3517; } else if ( (LA2_3539 == AT) ) { s = 2111; } else if ( (LA2_3539 == AND) ) { s = 3518; } else if ( (LA2_3539 == EQUAL) ) { s = 2113; } else if ( (LA2_3539 == PLUS) ) { s = 3538; } else if ( (LA2_3539 == DOLLARD) ) { s = 3519; } else if ( (LA2_3539 == COMMA) ) { s = 2116; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3539 == CRLF) ) { s = 205; } else if ( (LA2_3539 == DASH || LA2_3539 == EMARK || LA2_3539 == LPAREN || LA2_3539 == RPAREN || ((LA2_3539 >= SQUOTE) && (LA2_3539 <= USCORE))) ) { s = 3539; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3539 == LSBRAQUET || LA2_3539 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3539); if ( s>=0 ) { return s; } } break; case 443: { ANTLR3_UINT32 LA2_3733; ANTLR3_MARKER index2_3733; LA2_3733 = LA(1); index2_3733 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3733 == SEMI) ) { s = 3030; } else if ( (LA2_3733 == SLASH) ) { s = 3323; } else if ( (LA2_3733 == QMARK) ) { s = 1751; } else if ( (LA2_3733 == SP) ) { s = 204; } else if ( (LA2_3733 == COMMON_CHAR || LA2_3733 == HEX_CHAR) ) { s = 3324; } else if ( (LA2_3733 == DIGIT) ) { s = 3325; } else if ( (LA2_3733 == DOT) ) { s = 3326; } else if ( (LA2_3733 == PERCENT) ) { s = 3327; } else if ( (LA2_3733 == COLON) ) { s = 3328; } else if ( (LA2_3733 == AT) ) { s = 2229; } else if ( (LA2_3733 == AND) ) { s = 3329; } else if ( (LA2_3733 == EQUAL) ) { s = 2231; } else if ( (LA2_3733 == PLUS) ) { s = 3330; } else if ( (LA2_3733 == DOLLARD) ) { s = 3331; } else if ( (LA2_3733 == COMMA) ) { s = 2234; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3733 == CRLF) ) { s = 205; } else if ( (LA2_3733 == DASH || LA2_3733 == EMARK || LA2_3733 == LPAREN || LA2_3733 == RPAREN || ((LA2_3733 >= SQUOTE) && (LA2_3733 <= USCORE))) ) { s = 3332; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3733 == LSBRAQUET || LA2_3733 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3733); if ( s>=0 ) { return s; } } break; case 444: { ANTLR3_UINT32 LA2_3766; ANTLR3_MARKER index2_3766; LA2_3766 = LA(1); index2_3766 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3766 == QMARK) ) { s = 854; } else if ( (LA2_3766 == SP) ) { s = 204; } else if ( (LA2_3766 == SLASH) ) { s = 3123; } else if ( (LA2_3766 == SEMI) ) { s = 3151; } else if ( (LA2_3766 == COMMON_CHAR || LA2_3766 == HEX_CHAR) ) { s = 3761; } else if ( (LA2_3766 == DIGIT) ) { s = 3762; } else if ( (LA2_3766 == DOT) ) { s = 3763; } else if ( (LA2_3766 == PERCENT) ) { s = 3764; } else if ( (LA2_3766 == COLON) ) { s = 3765; } else if ( (LA2_3766 == AT) ) { s = 2879; } else if ( (LA2_3766 == AND) ) { s = 3766; } else if ( (LA2_3766 == EQUAL) ) { s = 2881; } else if ( (LA2_3766 == PLUS) ) { s = 3767; } else if ( (LA2_3766 == DOLLARD) ) { s = 3768; } else if ( (LA2_3766 == COMMA) ) { s = 2884; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3766 == CRLF) ) { s = 205; } else if ( (LA2_3766 == DASH || LA2_3766 == EMARK || LA2_3766 == LPAREN || LA2_3766 == RPAREN || ((LA2_3766 >= SQUOTE) && (LA2_3766 <= USCORE))) ) { s = 3769; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3766 == LSBRAQUET || LA2_3766 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3766); if ( s>=0 ) { return s; } } break; case 445: { ANTLR3_UINT32 LA2_3767; ANTLR3_MARKER index2_3767; LA2_3767 = LA(1); index2_3767 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3767 == QMARK) ) { s = 854; } else if ( (LA2_3767 == SP) ) { s = 204; } else if ( (LA2_3767 == SLASH) ) { s = 3123; } else if ( (LA2_3767 == SEMI) ) { s = 3151; } else if ( (LA2_3767 == COMMON_CHAR || LA2_3767 == HEX_CHAR) ) { s = 3761; } else if ( (LA2_3767 == DIGIT) ) { s = 3762; } else if ( (LA2_3767 == DOT) ) { s = 3763; } else if ( (LA2_3767 == PERCENT) ) { s = 3764; } else if ( (LA2_3767 == COLON) ) { s = 3765; } else if ( (LA2_3767 == AT) ) { s = 2879; } else if ( (LA2_3767 == AND) ) { s = 3766; } else if ( (LA2_3767 == EQUAL) ) { s = 2881; } else if ( (LA2_3767 == PLUS) ) { s = 3767; } else if ( (LA2_3767 == DOLLARD) ) { s = 3768; } else if ( (LA2_3767 == COMMA) ) { s = 2884; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3767 == CRLF) ) { s = 205; } else if ( (LA2_3767 == DASH || LA2_3767 == EMARK || LA2_3767 == LPAREN || LA2_3767 == RPAREN || ((LA2_3767 >= SQUOTE) && (LA2_3767 <= USCORE))) ) { s = 3769; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3767 == LSBRAQUET || LA2_3767 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3767); if ( s>=0 ) { return s; } } break; case 446: { ANTLR3_UINT32 LA2_1761; ANTLR3_MARKER index2_1761; LA2_1761 = LA(1); index2_1761 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1761 == QMARK) ) { s = 854; } else if ( (LA2_1761 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1761 == CRLF) ) { s = 205; } else if ( (LA2_1761 == SEMI) ) { s = 1237; } else if ( (LA2_1761 == DOT) ) { s = 1758; } else if ( (LA2_1761 == COMMON_CHAR || LA2_1761 == HEX_CHAR) ) { s = 1759; } else if ( (LA2_1761 == DIGIT) ) { s = 1760; } else if ( (LA2_1761 == SLASH) ) { s = 1271; } else if ( (LA2_1761 == DASH || LA2_1761 == EMARK || LA2_1761 == LPAREN || LA2_1761 == RPAREN || ((LA2_1761 >= SQUOTE) && (LA2_1761 <= USCORE))) ) { s = 1762; } else if ( (LA2_1761 == PERCENT) ) { s = 1763; } else if ( (LA2_1761 == EQUAL) ) { s = 1764; } else if ( (LA2_1761 == COLON) ) { s = 1761; } else if ( (LA2_1761 == AND) ) { s = 1765; } else if ( (LA2_1761 == AT) ) { s = 464; } else if ( (LA2_1761 == PLUS) ) { s = 1766; } else if ( (LA2_1761 == DOLLARD) ) { s = 1767; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1761 == LSBRAQUET || LA2_1761 == RSBRAQUET) ) { s = 405; } else if ( (LA2_1761 == COMMA) ) { s = 469; } SEEK(index2_1761); if ( s>=0 ) { return s; } } break; case 447: { ANTLR3_UINT32 LA2_3768; ANTLR3_MARKER index2_3768; LA2_3768 = LA(1); index2_3768 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3768 == QMARK) ) { s = 854; } else if ( (LA2_3768 == SP) ) { s = 204; } else if ( (LA2_3768 == SLASH) ) { s = 3123; } else if ( (LA2_3768 == SEMI) ) { s = 3151; } else if ( (LA2_3768 == COMMON_CHAR || LA2_3768 == HEX_CHAR) ) { s = 3761; } else if ( (LA2_3768 == DIGIT) ) { s = 3762; } else if ( (LA2_3768 == DOT) ) { s = 3763; } else if ( (LA2_3768 == PERCENT) ) { s = 3764; } else if ( (LA2_3768 == COLON) ) { s = 3765; } else if ( (LA2_3768 == AT) ) { s = 2879; } else if ( (LA2_3768 == AND) ) { s = 3766; } else if ( (LA2_3768 == EQUAL) ) { s = 2881; } else if ( (LA2_3768 == PLUS) ) { s = 3767; } else if ( (LA2_3768 == DOLLARD) ) { s = 3768; } else if ( (LA2_3768 == COMMA) ) { s = 2884; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3768 == CRLF) ) { s = 205; } else if ( (LA2_3768 == DASH || LA2_3768 == EMARK || LA2_3768 == LPAREN || LA2_3768 == RPAREN || ((LA2_3768 >= SQUOTE) && (LA2_3768 <= USCORE))) ) { s = 3769; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3768 == LSBRAQUET || LA2_3768 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3768); if ( s>=0 ) { return s; } } break; case 448: { ANTLR3_UINT32 LA2_2427; ANTLR3_MARKER index2_2427; LA2_2427 = LA(1); index2_2427 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2427 == QMARK) ) { s = 694; } else if ( (LA2_2427 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2427 == CRLF) ) { s = 205; } else if ( (LA2_2427 == SEMI) ) { s = 693; } else if ( (LA2_2427 == DOT) ) { s = 1534; } else if ( (LA2_2427 == COMMON_CHAR || LA2_2427 == HEX_CHAR) ) { s = 1535; } else if ( (LA2_2427 == DIGIT) ) { s = 1536; } else if ( (LA2_2427 == AND || LA2_2427 == COLON || LA2_2427 == DOLLARD || LA2_2427 == PLUS || LA2_2427 == SLASH) ) { s = 1079; } else if ( (LA2_2427 == DASH || LA2_2427 == EMARK || LA2_2427 == LPAREN || LA2_2427 == RPAREN || ((LA2_2427 >= SQUOTE) && (LA2_2427 <= USCORE))) ) { s = 1537; } else if ( (LA2_2427 == PERCENT) ) { s = 1538; } else if ( (LA2_2427 == COMMA) ) { s = 106; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2427 == LSBRAQUET || LA2_2427 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_2427 == AT || LA2_2427 == EQUAL) ) { s = 108; } SEEK(index2_2427); if ( s>=0 ) { return s; } } break; case 449: { ANTLR3_UINT32 LA2_3054; ANTLR3_MARKER index2_3054; LA2_3054 = LA(1); index2_3054 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3054 == QMARK) ) { s = 3359; } else if ( (LA2_3054 == COMMON_CHAR || LA2_3054 == HEX_CHAR) ) { s = 3360; } else if ( (LA2_3054 == DIGIT) ) { s = 3361; } else if ( (LA2_3054 == DASH || LA2_3054 == DOT || LA2_3054 == EMARK || LA2_3054 == LPAREN || LA2_3054 == RPAREN || ((LA2_3054 >= SQUOTE) && (LA2_3054 <= USCORE))) ) { s = 3362; } else if ( (LA2_3054 == PERCENT) ) { s = 3363; } else if ( (LA2_3054 == SP) ) { s = 35; } else if ( (LA2_3054 == AND) ) { s = 2268; } else if ( (LA2_3054 == SEMI) ) { s = 505; } else if ( (LA2_3054 == COMMA) ) { s = 506; } else if ( (LA2_3054 == COLON || LA2_3054 == DOLLARD || LA2_3054 == PLUS || LA2_3054 == SLASH) ) { s = 3364; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3054 == LSBRAQUET || LA2_3054 == RSBRAQUET) ) { s = 2437; } else if ( (LA2_3054 == AT || LA2_3054 == EQUAL) ) { s = 508; } SEEK(index2_3054); if ( s>=0 ) { return s; } } break; case 450: { ANTLR3_UINT32 LA2_1766; ANTLR3_MARKER index2_1766; LA2_1766 = LA(1); index2_1766 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1766 == QMARK) ) { s = 854; } else if ( (LA2_1766 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1766 == CRLF) ) { s = 205; } else if ( (LA2_1766 == SEMI) ) { s = 1237; } else if ( (LA2_1766 == DOT) ) { s = 1758; } else if ( (LA2_1766 == COMMON_CHAR || LA2_1766 == HEX_CHAR) ) { s = 1759; } else if ( (LA2_1766 == DIGIT) ) { s = 1760; } else if ( (LA2_1766 == SLASH) ) { s = 1271; } else if ( (LA2_1766 == DASH || LA2_1766 == EMARK || LA2_1766 == LPAREN || LA2_1766 == RPAREN || ((LA2_1766 >= SQUOTE) && (LA2_1766 <= USCORE))) ) { s = 1762; } else if ( (LA2_1766 == PERCENT) ) { s = 1763; } else if ( (LA2_1766 == EQUAL) ) { s = 1764; } else if ( (LA2_1766 == COLON) ) { s = 1761; } else if ( (LA2_1766 == AND) ) { s = 1765; } else if ( (LA2_1766 == AT) ) { s = 464; } else if ( (LA2_1766 == PLUS) ) { s = 1766; } else if ( (LA2_1766 == DOLLARD) ) { s = 1767; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1766 == LSBRAQUET || LA2_1766 == RSBRAQUET) ) { s = 405; } else if ( (LA2_1766 == COMMA) ) { s = 469; } SEEK(index2_1766); if ( s>=0 ) { return s; } } break; case 451: { ANTLR3_UINT32 LA2_1765; ANTLR3_MARKER index2_1765; LA2_1765 = LA(1); index2_1765 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1765 == QMARK) ) { s = 854; } else if ( (LA2_1765 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1765 == CRLF) ) { s = 205; } else if ( (LA2_1765 == SEMI) ) { s = 1237; } else if ( (LA2_1765 == DOT) ) { s = 1758; } else if ( (LA2_1765 == COMMON_CHAR || LA2_1765 == HEX_CHAR) ) { s = 1759; } else if ( (LA2_1765 == DIGIT) ) { s = 1760; } else if ( (LA2_1765 == SLASH) ) { s = 1271; } else if ( (LA2_1765 == DASH || LA2_1765 == EMARK || LA2_1765 == LPAREN || LA2_1765 == RPAREN || ((LA2_1765 >= SQUOTE) && (LA2_1765 <= USCORE))) ) { s = 1762; } else if ( (LA2_1765 == PERCENT) ) { s = 1763; } else if ( (LA2_1765 == EQUAL) ) { s = 1764; } else if ( (LA2_1765 == COLON) ) { s = 1761; } else if ( (LA2_1765 == AND) ) { s = 1765; } else if ( (LA2_1765 == AT) ) { s = 464; } else if ( (LA2_1765 == PLUS) ) { s = 1766; } else if ( (LA2_1765 == DOLLARD) ) { s = 1767; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1765 == LSBRAQUET || LA2_1765 == RSBRAQUET) ) { s = 405; } else if ( (LA2_1765 == COMMA) ) { s = 469; } SEEK(index2_1765); if ( s>=0 ) { return s; } } break; case 452: { ANTLR3_UINT32 LA2_3547; ANTLR3_MARKER index2_3547; LA2_3547 = LA(1); index2_3547 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3547 == SP) ) { s = 2090; } else if ( (LA2_3547 == CRLF) ) { s = 2091; } else if ( (LA2_3547 == COMMON_CHAR || LA2_3547 == HEX_CHAR) ) { s = 3707; } else if ( (LA2_3547 == DIGIT) ) { s = 3708; } else if ( (LA2_3547 == DOT) ) { s = 3709; } else if ( (LA2_3547 == PERCENT) ) { s = 3710; } else if ( (LA2_3547 == PLUS) ) { s = 3711; } else if ( (LA2_3547 == BQUOTE) ) { s = 2092; } else if ( (LA2_3547 == DQUOTE) ) { s = 2093; } else if ( (LA2_3547 == QMARK) ) { s = 242; } else if ( (LA2_3547 == SLASH) ) { s = 3226; } else if ( (LA2_3547 == SEMI) ) { s = 2128; } else if ( (LA2_3547 == COLON) ) { s = 3712; } else if ( (LA2_3547 == AT) ) { s = 2578; } else if ( (LA2_3547 == AND) ) { s = 3713; } else if ( (LA2_3547 == EQUAL) ) { s = 2580; } else if ( (LA2_3547 == DOLLARD) ) { s = 3714; } else if ( (LA2_3547 == COMMA) ) { s = 2583; } else if ( (LA2_3547 == DASH || LA2_3547 == EMARK || LA2_3547 == LPAREN || LA2_3547 == RPAREN || ((LA2_3547 >= SQUOTE) && (LA2_3547 <= USCORE))) ) { s = 3715; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3547 == LSBRAQUET || LA2_3547 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3547); if ( s>=0 ) { return s; } } break; case 453: { ANTLR3_UINT32 LA2_1767; ANTLR3_MARKER index2_1767; LA2_1767 = LA(1); index2_1767 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1767 == QMARK) ) { s = 854; } else if ( (LA2_1767 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1767 == CRLF) ) { s = 205; } else if ( (LA2_1767 == SEMI) ) { s = 1237; } else if ( (LA2_1767 == DOT) ) { s = 1758; } else if ( (LA2_1767 == COMMON_CHAR || LA2_1767 == HEX_CHAR) ) { s = 1759; } else if ( (LA2_1767 == DIGIT) ) { s = 1760; } else if ( (LA2_1767 == SLASH) ) { s = 1271; } else if ( (LA2_1767 == DASH || LA2_1767 == EMARK || LA2_1767 == LPAREN || LA2_1767 == RPAREN || ((LA2_1767 >= SQUOTE) && (LA2_1767 <= USCORE))) ) { s = 1762; } else if ( (LA2_1767 == PERCENT) ) { s = 1763; } else if ( (LA2_1767 == EQUAL) ) { s = 1764; } else if ( (LA2_1767 == COLON) ) { s = 1761; } else if ( (LA2_1767 == AND) ) { s = 1765; } else if ( (LA2_1767 == AT) ) { s = 464; } else if ( (LA2_1767 == PLUS) ) { s = 1766; } else if ( (LA2_1767 == DOLLARD) ) { s = 1767; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1767 == LSBRAQUET || LA2_1767 == RSBRAQUET) ) { s = 405; } else if ( (LA2_1767 == COMMA) ) { s = 469; } SEEK(index2_1767); if ( s>=0 ) { return s; } } break; case 454: { ANTLR3_UINT32 LA2_2826; ANTLR3_MARKER index2_2826; LA2_2826 = LA(1); index2_2826 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2826 == COMMON_CHAR || LA2_2826 == HEX_CHAR) ) { s = 3133; } else if ( (LA2_2826 == DIGIT) ) { s = 3134; } else if ( (LA2_2826 == DOT) ) { s = 3135; } else if ( (LA2_2826 == PERCENT) ) { s = 3136; } else if ( (LA2_2826 == COLON) ) { s = 3137; } else if ( (LA2_2826 == AT) ) { s = 2493; } else if ( (LA2_2826 == AND) ) { s = 3138; } else if ( (LA2_2826 == EQUAL) ) { s = 2495; } else if ( (LA2_2826 == PLUS) ) { s = 3139; } else if ( (LA2_2826 == DOLLARD) ) { s = 3140; } else if ( (LA2_2826 == COMMA) ) { s = 2498; } else if ( (LA2_2826 == QMARK) ) { s = 854; } else if ( (LA2_2826 == SP) ) { s = 402; } else if ( (LA2_2826 == SLASH) ) { s = 2827; } else if ( (LA2_2826 == SEMI) ) { s = 2826; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2826 == CRLF) ) { s = 403; } else if ( (LA2_2826 == DASH || LA2_2826 == EMARK || LA2_2826 == LPAREN || LA2_2826 == RPAREN || ((LA2_2826 >= SQUOTE) && (LA2_2826 <= USCORE))) ) { s = 3141; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2826 == LSBRAQUET || LA2_2826 == RSBRAQUET) ) { s = 405; } SEEK(index2_2826); if ( s>=0 ) { return s; } } break; case 455: { ANTLR3_UINT32 LA2_2254; ANTLR3_MARKER index2_2254; LA2_2254 = LA(1); index2_2254 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2254 == QMARK) ) { s = 854; } else if ( (LA2_2254 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2254 == CRLF) ) { s = 205; } else if ( (LA2_2254 == SEMI) ) { s = 1237; } else if ( (LA2_2254 == DOT) ) { s = 2254; } else if ( (LA2_2254 == COMMON_CHAR || LA2_2254 == HEX_CHAR) ) { s = 2255; } else if ( (LA2_2254 == DIGIT) ) { s = 2256; } else if ( (LA2_2254 == SLASH) ) { s = 2245; } else if ( (LA2_2254 == DASH || LA2_2254 == EMARK || LA2_2254 == LPAREN || LA2_2254 == RPAREN || ((LA2_2254 >= SQUOTE) && (LA2_2254 <= USCORE))) ) { s = 2257; } else if ( (LA2_2254 == PERCENT) ) { s = 2258; } else if ( (LA2_2254 == COLON) ) { s = 2259; } else if ( (LA2_2254 == AND) ) { s = 2260; } else if ( (LA2_2254 == AT) ) { s = 464; } else if ( (LA2_2254 == PLUS) ) { s = 2261; } else if ( (LA2_2254 == EQUAL) ) { s = 466; } else if ( (LA2_2254 == DOLLARD) ) { s = 2262; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2254 == LSBRAQUET || LA2_2254 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_2254 == COMMA) ) { s = 469; } SEEK(index2_2254); if ( s>=0 ) { return s; } } break; case 456: { ANTLR3_UINT32 LA2_2512; ANTLR3_MARKER index2_2512; LA2_2512 = LA(1); index2_2512 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2512 == SP) ) { s = 2456; } else if ( (LA2_2512 == CRLF) ) { s = 2458; } else if ( (LA2_2512 == EQUAL) ) { s = 2867; } else if ( (LA2_2512 == SLASH) ) { s = 2868; } else if ( (LA2_2512 == QMARK) ) { s = 854; } else if ( (LA2_2512 == SEMI) ) { s = 2028; } else if ( (LA2_2512 == COMMON_CHAR || LA2_2512 == HEX_CHAR) ) { s = 2512; } else if ( (LA2_2512 == DIGIT) ) { s = 2481; } else if ( (LA2_2512 == DOT) ) { s = 2482; } else if ( (LA2_2512 == PERCENT) ) { s = 2483; } else if ( (LA2_2512 == PLUS) ) { s = 2484; } else if ( (LA2_2512 == BQUOTE) ) { s = 1203; } else if ( (LA2_2512 == DASH || LA2_2512 == EMARK || LA2_2512 == LPAREN || LA2_2512 == RPAREN || ((LA2_2512 >= SQUOTE) && (LA2_2512 <= USCORE))) ) { s = 2485; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2512 == AND || LA2_2512 == COLON || LA2_2512 == DOLLARD || LA2_2512 == LSBRAQUET || LA2_2512 == RSBRAQUET) ) { s = 405; } SEEK(index2_2512); if ( s>=0 ) { return s; } } break; case 457: { ANTLR3_UINT32 LA2_2649; ANTLR3_MARKER index2_2649; LA2_2649 = LA(1); index2_2649 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2649 == QMARK) ) { s = 854; } else if ( (LA2_2649 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2649 == CRLF) ) { s = 205; } else if ( (LA2_2649 == SEMI) ) { s = 1237; } else if ( (LA2_2649 == DOT) ) { s = 2648; } else if ( (LA2_2649 == COMMON_CHAR || LA2_2649 == HEX_CHAR) ) { s = 2649; } else if ( (LA2_2649 == DIGIT) ) { s = 2650; } else if ( (LA2_2649 == SLASH) ) { s = 2245; } else if ( (LA2_2649 == DASH || LA2_2649 == EMARK || LA2_2649 == LPAREN || LA2_2649 == RPAREN || ((LA2_2649 >= SQUOTE) && (LA2_2649 <= USCORE))) ) { s = 2651; } else if ( (LA2_2649 == PERCENT) ) { s = 2652; } else if ( (LA2_2649 == COLON) ) { s = 2653; } else if ( (LA2_2649 == AND) ) { s = 2654; } else if ( (LA2_2649 == AT) ) { s = 810; } else if ( (LA2_2649 == PLUS) ) { s = 2655; } else if ( (LA2_2649 == EQUAL) ) { s = 812; } else if ( (LA2_2649 == DOLLARD) ) { s = 2656; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2649 == LSBRAQUET || LA2_2649 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_2649 == COMMA) ) { s = 815; } SEEK(index2_2649); if ( s>=0 ) { return s; } } break; case 458: { ANTLR3_UINT32 LA2_1057; ANTLR3_MARKER index2_1057; LA2_1057 = LA(1); index2_1057 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1057 == QMARK) ) { s = 694; } else if ( (LA2_1057 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1057 == CRLF) ) { s = 205; } else if ( (LA2_1057 == SEMI) ) { s = 693; } else if ( (LA2_1057 == DOT) ) { s = 1057; } else if ( (LA2_1057 == COMMON_CHAR || LA2_1057 == HEX_CHAR) ) { s = 1058; } else if ( (LA2_1057 == DIGIT) ) { s = 1059; } else if ( (LA2_1057 == AND || LA2_1057 == COLON || LA2_1057 == DOLLARD || LA2_1057 == PLUS || LA2_1057 == SLASH) ) { s = 708; } else if ( (LA2_1057 == DASH || LA2_1057 == EMARK || LA2_1057 == LPAREN || LA2_1057 == RPAREN || ((LA2_1057 >= SQUOTE) && (LA2_1057 <= USCORE))) ) { s = 1060; } else if ( (LA2_1057 == PERCENT) ) { s = 1061; } else if ( (LA2_1057 == EQUAL) ) { s = 1081; } else if ( (LA2_1057 == COMMA) ) { s = 106; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1057 == LSBRAQUET || LA2_1057 == RSBRAQUET) ) { s = 405; } else if ( (LA2_1057 == AT) ) { s = 108; } SEEK(index2_1057); if ( s>=0 ) { return s; } } break; case 459: { ANTLR3_UINT32 LA2_3146; ANTLR3_MARKER index2_3146; LA2_3146 = LA(1); index2_3146 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3146 == SEMI) ) { s = 3151; } else if ( (LA2_3146 == QMARK) ) { s = 854; } else if ( (LA2_3146 == SP) ) { s = 204; } else if ( (LA2_3146 == SLASH) ) { s = 2827; } else if ( (LA2_3146 == COMMON_CHAR || LA2_3146 == HEX_CHAR) ) { s = 3142; } else if ( (LA2_3146 == DIGIT) ) { s = 3143; } else if ( (LA2_3146 == DOT) ) { s = 3144; } else if ( (LA2_3146 == PERCENT) ) { s = 3145; } else if ( (LA2_3146 == COLON) ) { s = 3146; } else if ( (LA2_3146 == AT) ) { s = 2504; } else if ( (LA2_3146 == AND) ) { s = 3147; } else if ( (LA2_3146 == EQUAL) ) { s = 3148; } else if ( (LA2_3146 == PLUS) ) { s = 3149; } else if ( (LA2_3146 == DOLLARD) ) { s = 3150; } else if ( (LA2_3146 == COMMA) ) { s = 2509; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3146 == CRLF) ) { s = 205; } else if ( (LA2_3146 == DASH || LA2_3146 == EMARK || LA2_3146 == LPAREN || LA2_3146 == RPAREN || ((LA2_3146 >= SQUOTE) && (LA2_3146 <= USCORE))) ) { s = 3152; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3146 == LSBRAQUET || LA2_3146 == RSBRAQUET) ) { s = 405; } SEEK(index2_3146); if ( s>=0 ) { return s; } } break; case 460: { ANTLR3_UINT32 LA2_2855; ANTLR3_MARKER index2_2855; LA2_2855 = LA(1); index2_2855 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2855 == SEMI) ) { s = 2477; } else if ( (LA2_2855 == QMARK) ) { s = 854; } else if ( (LA2_2855 == SP) ) { s = 204; } else if ( (LA2_2855 == SLASH) ) { s = 2830; } else if ( (LA2_2855 == COMMON_CHAR || LA2_2855 == HEX_CHAR) ) { s = 2851; } else if ( (LA2_2855 == DIGIT) ) { s = 2852; } else if ( (LA2_2855 == DOT) ) { s = 2853; } else if ( (LA2_2855 == PERCENT) ) { s = 2854; } else if ( (LA2_2855 == COLON) ) { s = 2855; } else if ( (LA2_2855 == AT) ) { s = 1134; } else if ( (LA2_2855 == AND) ) { s = 2856; } else if ( (LA2_2855 == EQUAL) ) { s = 1136; } else if ( (LA2_2855 == PLUS) ) { s = 2857; } else if ( (LA2_2855 == DOLLARD) ) { s = 2858; } else if ( (LA2_2855 == COMMA) ) { s = 1139; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2855 == CRLF) ) { s = 205; } else if ( (LA2_2855 == DASH || LA2_2855 == EMARK || LA2_2855 == LPAREN || LA2_2855 == RPAREN || ((LA2_2855 >= SQUOTE) && (LA2_2855 <= USCORE))) ) { s = 2859; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2855 == LSBRAQUET || LA2_2855 == RSBRAQUET) ) { s = 1080; } SEEK(index2_2855); if ( s>=0 ) { return s; } } break; case 461: { ANTLR3_UINT32 LA2_2287; ANTLR3_MARKER index2_2287; LA2_2287 = LA(1); index2_2287 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2287 == DIGIT) ) { s = 2288; } else if ( (LA2_2287 == COLON) ) { s = 1306; } else if ( (LA2_2287 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2287 == CRLF) ) { s = 205; } else if ( (LA2_2287 == SEMI) ) { s = 1307; } else if ( (LA2_2287 == QMARK) ) { s = 1308; } else if ( (LA2_2287 == COMMON_CHAR || LA2_2287 == HEX_CHAR) ) { s = 554; } else if ( (LA2_2287 == COMMA) ) { s = 506; } else if ( (((LA2_2287 >= AND) && (LA2_2287 <= AT)) || LA2_2287 == DOLLARD || LA2_2287 == EQUAL || LA2_2287 == PLUS || LA2_2287 == SLASH) ) { s = 508; } else if ( (LA2_2287 == DASH || LA2_2287 == DOT || LA2_2287 == EMARK || LA2_2287 == LPAREN || LA2_2287 == RPAREN || ((LA2_2287 >= SQUOTE) && (LA2_2287 <= USCORE))) ) { s = 511; } else if ( (LA2_2287 == PERCENT) ) { s = 512; } SEEK(index2_2287); if ( s>=0 ) { return s; } } break; case 462: { ANTLR3_UINT32 LA2_2856; ANTLR3_MARKER index2_2856; LA2_2856 = LA(1); index2_2856 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2856 == SEMI) ) { s = 2477; } else if ( (LA2_2856 == QMARK) ) { s = 854; } else if ( (LA2_2856 == SP) ) { s = 204; } else if ( (LA2_2856 == SLASH) ) { s = 2830; } else if ( (LA2_2856 == COMMON_CHAR || LA2_2856 == HEX_CHAR) ) { s = 2851; } else if ( (LA2_2856 == DIGIT) ) { s = 2852; } else if ( (LA2_2856 == DOT) ) { s = 2853; } else if ( (LA2_2856 == PERCENT) ) { s = 2854; } else if ( (LA2_2856 == COLON) ) { s = 2855; } else if ( (LA2_2856 == AT) ) { s = 1134; } else if ( (LA2_2856 == AND) ) { s = 2856; } else if ( (LA2_2856 == EQUAL) ) { s = 1136; } else if ( (LA2_2856 == PLUS) ) { s = 2857; } else if ( (LA2_2856 == DOLLARD) ) { s = 2858; } else if ( (LA2_2856 == COMMA) ) { s = 1139; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2856 == CRLF) ) { s = 205; } else if ( (LA2_2856 == DASH || LA2_2856 == EMARK || LA2_2856 == LPAREN || LA2_2856 == RPAREN || ((LA2_2856 >= SQUOTE) && (LA2_2856 <= USCORE))) ) { s = 2859; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2856 == LSBRAQUET || LA2_2856 == RSBRAQUET) ) { s = 1080; } SEEK(index2_2856); if ( s>=0 ) { return s; } } break; case 463: { ANTLR3_UINT32 LA2_3065; ANTLR3_MARKER index2_3065; LA2_3065 = LA(1); index2_3065 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3065 == DIGIT) ) { s = 3066; } else if ( (LA2_3065 == COLON) ) { s = 1306; } else if ( (LA2_3065 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3065 == CRLF) ) { s = 205; } else if ( (LA2_3065 == SEMI) ) { s = 1307; } else if ( (LA2_3065 == QMARK) ) { s = 1308; } else if ( (LA2_3065 == COMMON_CHAR || LA2_3065 == HEX_CHAR) ) { s = 554; } else if ( (LA2_3065 == COMMA) ) { s = 506; } else if ( (((LA2_3065 >= AND) && (LA2_3065 <= AT)) || LA2_3065 == DOLLARD || LA2_3065 == EQUAL || LA2_3065 == PLUS || LA2_3065 == SLASH) ) { s = 508; } else if ( (LA2_3065 == DASH || LA2_3065 == DOT || LA2_3065 == EMARK || LA2_3065 == LPAREN || LA2_3065 == RPAREN || ((LA2_3065 >= SQUOTE) && (LA2_3065 <= USCORE))) ) { s = 511; } else if ( (LA2_3065 == PERCENT) ) { s = 512; } SEEK(index2_3065); if ( s>=0 ) { return s; } } break; case 464: { ANTLR3_UINT32 LA2_1311; ANTLR3_MARKER index2_1311; LA2_1311 = LA(1); index2_1311 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1311 == DIGIT) ) { s = 1312; } else if ( (LA2_1311 == COMMON_CHAR || LA2_1311 == HEX_CHAR) ) { s = 554; } else if ( (LA2_1311 == COLON) ) { s = 1306; } else if ( (LA2_1311 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1311 == CRLF) ) { s = 205; } else if ( (LA2_1311 == SEMI) ) { s = 1307; } else if ( (LA2_1311 == QMARK) ) { s = 1308; } else if ( (LA2_1311 == COMMA) ) { s = 506; } else if ( (((LA2_1311 >= AND) && (LA2_1311 <= AT)) || LA2_1311 == DOLLARD || LA2_1311 == EQUAL || LA2_1311 == PLUS || LA2_1311 == SLASH) ) { s = 508; } else if ( (LA2_1311 == DASH || LA2_1311 == DOT || LA2_1311 == EMARK || LA2_1311 == LPAREN || LA2_1311 == RPAREN || ((LA2_1311 >= SQUOTE) && (LA2_1311 <= USCORE))) ) { s = 511; } else if ( (LA2_1311 == PERCENT) ) { s = 512; } SEEK(index2_1311); if ( s>=0 ) { return s; } } break; case 465: { ANTLR3_UINT32 LA2_3446; ANTLR3_MARKER index2_3446; LA2_3446 = LA(1); index2_3446 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3446 == SLASH) ) { s = 3171; } else if ( (LA2_3446 == QMARK) ) { s = 854; } else if ( (LA2_3446 == SP) ) { s = 204; } else if ( (LA2_3446 == SEMI) ) { s = 3170; } else if ( (LA2_3446 == COMMON_CHAR || LA2_3446 == HEX_CHAR) ) { s = 3445; } else if ( (LA2_3446 == DIGIT) ) { s = 3446; } else if ( (LA2_3446 == DOT) ) { s = 3447; } else if ( (LA2_3446 == PERCENT) ) { s = 3448; } else if ( (LA2_3446 == COLON) ) { s = 3449; } else if ( (LA2_3446 == AT) ) { s = 2184; } else if ( (LA2_3446 == AND) ) { s = 3450; } else if ( (LA2_3446 == EQUAL) ) { s = 3643; } else if ( (LA2_3446 == PLUS) ) { s = 3451; } else if ( (LA2_3446 == DOLLARD) ) { s = 3452; } else if ( (LA2_3446 == COMMA) ) { s = 2189; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3446 == CRLF) ) { s = 205; } else if ( (LA2_3446 == DASH || LA2_3446 == EMARK || LA2_3446 == LPAREN || LA2_3446 == RPAREN || ((LA2_3446 >= SQUOTE) && (LA2_3446 <= USCORE))) ) { s = 3453; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3446 == LSBRAQUET || LA2_3446 == RSBRAQUET) ) { s = 405; } SEEK(index2_3446); if ( s>=0 ) { return s; } } break; case 466: { ANTLR3_UINT32 LA2_2857; ANTLR3_MARKER index2_2857; LA2_2857 = LA(1); index2_2857 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2857 == SEMI) ) { s = 2477; } else if ( (LA2_2857 == QMARK) ) { s = 854; } else if ( (LA2_2857 == SP) ) { s = 204; } else if ( (LA2_2857 == SLASH) ) { s = 2830; } else if ( (LA2_2857 == COMMON_CHAR || LA2_2857 == HEX_CHAR) ) { s = 2851; } else if ( (LA2_2857 == DIGIT) ) { s = 2852; } else if ( (LA2_2857 == DOT) ) { s = 2853; } else if ( (LA2_2857 == PERCENT) ) { s = 2854; } else if ( (LA2_2857 == COLON) ) { s = 2855; } else if ( (LA2_2857 == AT) ) { s = 1134; } else if ( (LA2_2857 == AND) ) { s = 2856; } else if ( (LA2_2857 == EQUAL) ) { s = 1136; } else if ( (LA2_2857 == PLUS) ) { s = 2857; } else if ( (LA2_2857 == DOLLARD) ) { s = 2858; } else if ( (LA2_2857 == COMMA) ) { s = 1139; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2857 == CRLF) ) { s = 205; } else if ( (LA2_2857 == DASH || LA2_2857 == EMARK || LA2_2857 == LPAREN || LA2_2857 == RPAREN || ((LA2_2857 >= SQUOTE) && (LA2_2857 <= USCORE))) ) { s = 2859; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2857 == LSBRAQUET || LA2_2857 == RSBRAQUET) ) { s = 1080; } SEEK(index2_2857); if ( s>=0 ) { return s; } } break; case 467: { ANTLR3_UINT32 LA2_3774; ANTLR3_MARKER index2_3774; LA2_3774 = LA(1); index2_3774 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3774 == SLASH) ) { s = 3435; } else if ( (LA2_3774 == QMARK) ) { s = 854; } else if ( (LA2_3774 == SP) ) { s = 204; } else if ( (LA2_3774 == SEMI) ) { s = 3170; } else if ( (LA2_3774 == COMMON_CHAR || LA2_3774 == HEX_CHAR) ) { s = 3773; } else if ( (LA2_3774 == DIGIT) ) { s = 3774; } else if ( (LA2_3774 == DOT) ) { s = 3775; } else if ( (LA2_3774 == PERCENT) ) { s = 3776; } else if ( (LA2_3774 == COLON) ) { s = 3777; } else if ( (LA2_3774 == AT) ) { s = 2184; } else if ( (LA2_3774 == AND) ) { s = 3778; } else if ( (LA2_3774 == EQUAL) ) { s = 2186; } else if ( (LA2_3774 == PLUS) ) { s = 3779; } else if ( (LA2_3774 == DOLLARD) ) { s = 3780; } else if ( (LA2_3774 == COMMA) ) { s = 2189; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3774 == CRLF) ) { s = 205; } else if ( (LA2_3774 == DASH || LA2_3774 == EMARK || LA2_3774 == LPAREN || LA2_3774 == RPAREN || ((LA2_3774 >= SQUOTE) && (LA2_3774 <= USCORE))) ) { s = 3781; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3774 == LSBRAQUET || LA2_3774 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3774); if ( s>=0 ) { return s; } } break; case 468: { ANTLR3_UINT32 LA2_3147; ANTLR3_MARKER index2_3147; LA2_3147 = LA(1); index2_3147 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3147 == SEMI) ) { s = 3151; } else if ( (LA2_3147 == QMARK) ) { s = 854; } else if ( (LA2_3147 == SP) ) { s = 204; } else if ( (LA2_3147 == SLASH) ) { s = 2827; } else if ( (LA2_3147 == COMMON_CHAR || LA2_3147 == HEX_CHAR) ) { s = 3142; } else if ( (LA2_3147 == DIGIT) ) { s = 3143; } else if ( (LA2_3147 == DOT) ) { s = 3144; } else if ( (LA2_3147 == PERCENT) ) { s = 3145; } else if ( (LA2_3147 == COLON) ) { s = 3146; } else if ( (LA2_3147 == AT) ) { s = 2504; } else if ( (LA2_3147 == AND) ) { s = 3147; } else if ( (LA2_3147 == EQUAL) ) { s = 3148; } else if ( (LA2_3147 == PLUS) ) { s = 3149; } else if ( (LA2_3147 == DOLLARD) ) { s = 3150; } else if ( (LA2_3147 == COMMA) ) { s = 2509; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3147 == CRLF) ) { s = 205; } else if ( (LA2_3147 == DASH || LA2_3147 == EMARK || LA2_3147 == LPAREN || LA2_3147 == RPAREN || ((LA2_3147 >= SQUOTE) && (LA2_3147 <= USCORE))) ) { s = 3152; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3147 == LSBRAQUET || LA2_3147 == RSBRAQUET) ) { s = 405; } SEEK(index2_3147); if ( s>=0 ) { return s; } } break; case 469: { ANTLR3_UINT32 LA2_2858; ANTLR3_MARKER index2_2858; LA2_2858 = LA(1); index2_2858 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2858 == SEMI) ) { s = 2477; } else if ( (LA2_2858 == QMARK) ) { s = 854; } else if ( (LA2_2858 == SP) ) { s = 204; } else if ( (LA2_2858 == SLASH) ) { s = 2830; } else if ( (LA2_2858 == COMMON_CHAR || LA2_2858 == HEX_CHAR) ) { s = 2851; } else if ( (LA2_2858 == DIGIT) ) { s = 2852; } else if ( (LA2_2858 == DOT) ) { s = 2853; } else if ( (LA2_2858 == PERCENT) ) { s = 2854; } else if ( (LA2_2858 == COLON) ) { s = 2855; } else if ( (LA2_2858 == AT) ) { s = 1134; } else if ( (LA2_2858 == AND) ) { s = 2856; } else if ( (LA2_2858 == EQUAL) ) { s = 1136; } else if ( (LA2_2858 == PLUS) ) { s = 2857; } else if ( (LA2_2858 == DOLLARD) ) { s = 2858; } else if ( (LA2_2858 == COMMA) ) { s = 1139; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2858 == CRLF) ) { s = 205; } else if ( (LA2_2858 == DASH || LA2_2858 == EMARK || LA2_2858 == LPAREN || LA2_2858 == RPAREN || ((LA2_2858 >= SQUOTE) && (LA2_2858 <= USCORE))) ) { s = 2859; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2858 == LSBRAQUET || LA2_2858 == RSBRAQUET) ) { s = 1080; } SEEK(index2_2858); if ( s>=0 ) { return s; } } break; case 470: { ANTLR3_UINT32 LA2_3650; ANTLR3_MARKER index2_3650; LA2_3650 = LA(1); index2_3650 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3650 == QMARK) ) { s = 854; } else if ( (LA2_3650 == SP) ) { s = 204; } else if ( (LA2_3650 == SLASH) ) { s = 3171; } else if ( (LA2_3650 == SEMI) ) { s = 3463; } else if ( (LA2_3650 == COMMON_CHAR || LA2_3650 == HEX_CHAR) ) { s = 3646; } else if ( (LA2_3650 == DIGIT) ) { s = 3647; } else if ( (LA2_3650 == DOT) ) { s = 3648; } else if ( (LA2_3650 == PERCENT) ) { s = 3649; } else if ( (LA2_3650 == COLON) ) { s = 3650; } else if ( (LA2_3650 == AT) ) { s = 2638; } else if ( (LA2_3650 == AND) ) { s = 3651; } else if ( (LA2_3650 == EQUAL) ) { s = 3784; } else if ( (LA2_3650 == PLUS) ) { s = 3652; } else if ( (LA2_3650 == DOLLARD) ) { s = 3653; } else if ( (LA2_3650 == COMMA) ) { s = 2643; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3650 == CRLF) ) { s = 205; } else if ( (LA2_3650 == DASH || LA2_3650 == EMARK || LA2_3650 == LPAREN || LA2_3650 == RPAREN || ((LA2_3650 >= SQUOTE) && (LA2_3650 <= USCORE))) ) { s = 3654; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3650 == LSBRAQUET || LA2_3650 == RSBRAQUET) ) { s = 405; } SEEK(index2_3650); if ( s>=0 ) { return s; } } break; case 471: { ANTLR3_UINT32 LA2_397; ANTLR3_MARKER index2_397; LA2_397 = LA(1); index2_397 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_397 == COLON) ) { s = 396; } else if ( (LA2_397 == AT) ) { s = 89; } else if ( (LA2_397 == COMMON_CHAR || LA2_397 == HEX_CHAR) ) { s = 397; } else if ( (LA2_397 == DIGIT) ) { s = 398; } else if ( (LA2_397 == DOT) ) { s = 399; } else if ( (LA2_397 == PERCENT) ) { s = 400; } else if ( (LA2_397 == QMARK) ) { s = 206; } else if ( (LA2_397 == SEMI) ) { s = 202; } else if ( (LA2_397 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_397 == CRLF) ) { s = 205; } else if ( (LA2_397 == AND || LA2_397 == DOLLARD || LA2_397 == PLUS || LA2_397 == SLASH) ) { s = 401; } else if ( (LA2_397 == DASH || LA2_397 == EMARK || LA2_397 == LPAREN || LA2_397 == RPAREN || ((LA2_397 >= SQUOTE) && (LA2_397 <= USCORE))) ) { s = 404; } else if ( (LA2_397 == EQUAL) ) { s = 709; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_397 == LSBRAQUET || LA2_397 == RSBRAQUET) ) { s = 405; } else if ( (LA2_397 == COMMA) ) { s = 97; } SEEK(index2_397); if ( s>=0 ) { return s; } } break; case 472: { ANTLR3_UINT32 LA2_3153; ANTLR3_MARKER index2_3153; LA2_3153 = LA(1); index2_3153 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3153 == COMMON_CHAR || LA2_3153 == HEX_CHAR) ) { s = 3124; } else if ( (LA2_3153 == DIGIT) ) { s = 3125; } else if ( (LA2_3153 == DOT) ) { s = 3126; } else if ( (LA2_3153 == PERCENT) ) { s = 3127; } else if ( (LA2_3153 == COLON) ) { s = 3128; } else if ( (LA2_3153 == AT) ) { s = 2019; } else if ( (LA2_3153 == AND) ) { s = 3129; } else if ( (LA2_3153 == EQUAL) ) { s = 2021; } else if ( (LA2_3153 == PLUS) ) { s = 3130; } else if ( (LA2_3153 == DOLLARD) ) { s = 3131; } else if ( (LA2_3153 == COMMA) ) { s = 2024; } else if ( (LA2_3153 == SEMI) ) { s = 2826; } else if ( (LA2_3153 == QMARK) ) { s = 854; } else if ( (LA2_3153 == SP) ) { s = 204; } else if ( (LA2_3153 == SLASH) ) { s = 3123; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3153 == CRLF) ) { s = 205; } else if ( (LA2_3153 == DASH || LA2_3153 == EMARK || LA2_3153 == LPAREN || LA2_3153 == RPAREN || ((LA2_3153 >= SQUOTE) && (LA2_3153 <= USCORE))) ) { s = 3132; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3153 == LSBRAQUET || LA2_3153 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3153); if ( s>=0 ) { return s; } } break; case 473: { ANTLR3_UINT32 LA2_2851; ANTLR3_MARKER index2_2851; LA2_2851 = LA(1); index2_2851 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2851 == SEMI) ) { s = 2477; } else if ( (LA2_2851 == QMARK) ) { s = 854; } else if ( (LA2_2851 == SP) ) { s = 204; } else if ( (LA2_2851 == SLASH) ) { s = 2830; } else if ( (LA2_2851 == COMMON_CHAR || LA2_2851 == HEX_CHAR) ) { s = 2851; } else if ( (LA2_2851 == DIGIT) ) { s = 2852; } else if ( (LA2_2851 == DOT) ) { s = 2853; } else if ( (LA2_2851 == PERCENT) ) { s = 2854; } else if ( (LA2_2851 == COLON) ) { s = 2855; } else if ( (LA2_2851 == AT) ) { s = 1134; } else if ( (LA2_2851 == AND) ) { s = 2856; } else if ( (LA2_2851 == EQUAL) ) { s = 1136; } else if ( (LA2_2851 == PLUS) ) { s = 2857; } else if ( (LA2_2851 == DOLLARD) ) { s = 2858; } else if ( (LA2_2851 == COMMA) ) { s = 1139; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2851 == CRLF) ) { s = 205; } else if ( (LA2_2851 == DASH || LA2_2851 == EMARK || LA2_2851 == LPAREN || LA2_2851 == RPAREN || ((LA2_2851 >= SQUOTE) && (LA2_2851 <= USCORE))) ) { s = 2859; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2851 == LSBRAQUET || LA2_2851 == RSBRAQUET) ) { s = 1080; } SEEK(index2_2851); if ( s>=0 ) { return s; } } break; case 474: { ANTLR3_UINT32 LA2_3149; ANTLR3_MARKER index2_3149; LA2_3149 = LA(1); index2_3149 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3149 == SEMI) ) { s = 3151; } else if ( (LA2_3149 == QMARK) ) { s = 854; } else if ( (LA2_3149 == SP) ) { s = 204; } else if ( (LA2_3149 == SLASH) ) { s = 2827; } else if ( (LA2_3149 == COMMON_CHAR || LA2_3149 == HEX_CHAR) ) { s = 3142; } else if ( (LA2_3149 == DIGIT) ) { s = 3143; } else if ( (LA2_3149 == DOT) ) { s = 3144; } else if ( (LA2_3149 == PERCENT) ) { s = 3145; } else if ( (LA2_3149 == COLON) ) { s = 3146; } else if ( (LA2_3149 == AT) ) { s = 2504; } else if ( (LA2_3149 == AND) ) { s = 3147; } else if ( (LA2_3149 == EQUAL) ) { s = 3148; } else if ( (LA2_3149 == PLUS) ) { s = 3149; } else if ( (LA2_3149 == DOLLARD) ) { s = 3150; } else if ( (LA2_3149 == COMMA) ) { s = 2509; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3149 == CRLF) ) { s = 205; } else if ( (LA2_3149 == DASH || LA2_3149 == EMARK || LA2_3149 == LPAREN || LA2_3149 == RPAREN || ((LA2_3149 >= SQUOTE) && (LA2_3149 <= USCORE))) ) { s = 3152; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3149 == LSBRAQUET || LA2_3149 == RSBRAQUET) ) { s = 405; } SEEK(index2_3149); if ( s>=0 ) { return s; } } break; case 475: { ANTLR3_UINT32 LA2_3454; ANTLR3_MARKER index2_3454; LA2_3454 = LA(1); index2_3454 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3454 == SEMI) ) { s = 3463; } else if ( (LA2_3454 == QMARK) ) { s = 854; } else if ( (LA2_3454 == SP) ) { s = 204; } else if ( (LA2_3454 == SLASH) ) { s = 3171; } else if ( (LA2_3454 == COMMON_CHAR || LA2_3454 == HEX_CHAR) ) { s = 3454; } else if ( (LA2_3454 == DIGIT) ) { s = 3455; } else if ( (LA2_3454 == DOT) ) { s = 3456; } else if ( (LA2_3454 == PERCENT) ) { s = 3457; } else if ( (LA2_3454 == COLON) ) { s = 3458; } else if ( (LA2_3454 == AT) ) { s = 2195; } else if ( (LA2_3454 == AND) ) { s = 3459; } else if ( (LA2_3454 == EQUAL) ) { s = 3460; } else if ( (LA2_3454 == PLUS) ) { s = 3461; } else if ( (LA2_3454 == DOLLARD) ) { s = 3462; } else if ( (LA2_3454 == COMMA) ) { s = 2200; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3454 == CRLF) ) { s = 205; } else if ( (LA2_3454 == DASH || LA2_3454 == EMARK || LA2_3454 == LPAREN || LA2_3454 == RPAREN || ((LA2_3454 >= SQUOTE) && (LA2_3454 <= USCORE))) ) { s = 3464; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3454 == LSBRAQUET || LA2_3454 == RSBRAQUET) ) { s = 405; } SEEK(index2_3454); if ( s>=0 ) { return s; } } break; case 476: { ANTLR3_UINT32 LA2_1305; ANTLR3_MARKER index2_1305; LA2_1305 = LA(1); index2_1305 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1305 == COMMON_CHAR || LA2_1305 == HEX_CHAR) ) { s = 554; } else if ( (LA2_1305 == DIGIT) ) { s = 1304; } else if ( (LA2_1305 == COLON) ) { s = 1306; } else if ( (LA2_1305 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1305 == CRLF) ) { s = 205; } else if ( (LA2_1305 == SEMI) ) { s = 1307; } else if ( (LA2_1305 == QMARK) ) { s = 1308; } else if ( (LA2_1305 == COMMA) ) { s = 506; } else if ( (((LA2_1305 >= AND) && (LA2_1305 <= AT)) || LA2_1305 == DOLLARD || LA2_1305 == EQUAL || LA2_1305 == PLUS || LA2_1305 == SLASH) ) { s = 508; } else if ( (LA2_1305 == DASH || LA2_1305 == DOT || LA2_1305 == EMARK || LA2_1305 == LPAREN || LA2_1305 == RPAREN || ((LA2_1305 >= SQUOTE) && (LA2_1305 <= USCORE))) ) { s = 511; } else if ( (LA2_1305 == PERCENT) ) { s = 512; } SEEK(index2_1305); if ( s>=0 ) { return s; } } break; case 477: { ANTLR3_UINT32 LA2_3652; ANTLR3_MARKER index2_3652; LA2_3652 = LA(1); index2_3652 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3652 == QMARK) ) { s = 854; } else if ( (LA2_3652 == SP) ) { s = 204; } else if ( (LA2_3652 == SLASH) ) { s = 3171; } else if ( (LA2_3652 == SEMI) ) { s = 3463; } else if ( (LA2_3652 == COMMON_CHAR || LA2_3652 == HEX_CHAR) ) { s = 3646; } else if ( (LA2_3652 == DIGIT) ) { s = 3647; } else if ( (LA2_3652 == DOT) ) { s = 3648; } else if ( (LA2_3652 == PERCENT) ) { s = 3649; } else if ( (LA2_3652 == COLON) ) { s = 3650; } else if ( (LA2_3652 == AT) ) { s = 2638; } else if ( (LA2_3652 == AND) ) { s = 3651; } else if ( (LA2_3652 == EQUAL) ) { s = 3784; } else if ( (LA2_3652 == PLUS) ) { s = 3652; } else if ( (LA2_3652 == DOLLARD) ) { s = 3653; } else if ( (LA2_3652 == COMMA) ) { s = 2643; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3652 == CRLF) ) { s = 205; } else if ( (LA2_3652 == DASH || LA2_3652 == EMARK || LA2_3652 == LPAREN || LA2_3652 == RPAREN || ((LA2_3652 >= SQUOTE) && (LA2_3652 <= USCORE))) ) { s = 3654; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3652 == LSBRAQUET || LA2_3652 == RSBRAQUET) ) { s = 405; } SEEK(index2_3652); if ( s>=0 ) { return s; } } break; case 478: { ANTLR3_UINT32 LA2_3653; ANTLR3_MARKER index2_3653; LA2_3653 = LA(1); index2_3653 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3653 == QMARK) ) { s = 854; } else if ( (LA2_3653 == SP) ) { s = 204; } else if ( (LA2_3653 == SLASH) ) { s = 3171; } else if ( (LA2_3653 == SEMI) ) { s = 3463; } else if ( (LA2_3653 == COMMON_CHAR || LA2_3653 == HEX_CHAR) ) { s = 3646; } else if ( (LA2_3653 == DIGIT) ) { s = 3647; } else if ( (LA2_3653 == DOT) ) { s = 3648; } else if ( (LA2_3653 == PERCENT) ) { s = 3649; } else if ( (LA2_3653 == COLON) ) { s = 3650; } else if ( (LA2_3653 == AT) ) { s = 2638; } else if ( (LA2_3653 == AND) ) { s = 3651; } else if ( (LA2_3653 == EQUAL) ) { s = 3784; } else if ( (LA2_3653 == PLUS) ) { s = 3652; } else if ( (LA2_3653 == DOLLARD) ) { s = 3653; } else if ( (LA2_3653 == COMMA) ) { s = 2643; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3653 == CRLF) ) { s = 205; } else if ( (LA2_3653 == DASH || LA2_3653 == EMARK || LA2_3653 == LPAREN || LA2_3653 == RPAREN || ((LA2_3653 >= SQUOTE) && (LA2_3653 <= USCORE))) ) { s = 3654; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3653 == LSBRAQUET || LA2_3653 == RSBRAQUET) ) { s = 405; } SEEK(index2_3653); if ( s>=0 ) { return s; } } break; case 479: { ANTLR3_UINT32 LA2_3651; ANTLR3_MARKER index2_3651; LA2_3651 = LA(1); index2_3651 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3651 == QMARK) ) { s = 854; } else if ( (LA2_3651 == SP) ) { s = 204; } else if ( (LA2_3651 == SLASH) ) { s = 3171; } else if ( (LA2_3651 == SEMI) ) { s = 3463; } else if ( (LA2_3651 == COMMON_CHAR || LA2_3651 == HEX_CHAR) ) { s = 3646; } else if ( (LA2_3651 == DIGIT) ) { s = 3647; } else if ( (LA2_3651 == DOT) ) { s = 3648; } else if ( (LA2_3651 == PERCENT) ) { s = 3649; } else if ( (LA2_3651 == COLON) ) { s = 3650; } else if ( (LA2_3651 == AT) ) { s = 2638; } else if ( (LA2_3651 == AND) ) { s = 3651; } else if ( (LA2_3651 == EQUAL) ) { s = 3784; } else if ( (LA2_3651 == PLUS) ) { s = 3652; } else if ( (LA2_3651 == DOLLARD) ) { s = 3653; } else if ( (LA2_3651 == COMMA) ) { s = 2643; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3651 == CRLF) ) { s = 205; } else if ( (LA2_3651 == DASH || LA2_3651 == EMARK || LA2_3651 == LPAREN || LA2_3651 == RPAREN || ((LA2_3651 >= SQUOTE) && (LA2_3651 <= USCORE))) ) { s = 3654; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3651 == LSBRAQUET || LA2_3651 == RSBRAQUET) ) { s = 405; } SEEK(index2_3651); if ( s>=0 ) { return s; } } break; case 480: { ANTLR3_UINT32 LA2_3150; ANTLR3_MARKER index2_3150; LA2_3150 = LA(1); index2_3150 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3150 == SEMI) ) { s = 3151; } else if ( (LA2_3150 == QMARK) ) { s = 854; } else if ( (LA2_3150 == SP) ) { s = 204; } else if ( (LA2_3150 == SLASH) ) { s = 2827; } else if ( (LA2_3150 == COMMON_CHAR || LA2_3150 == HEX_CHAR) ) { s = 3142; } else if ( (LA2_3150 == DIGIT) ) { s = 3143; } else if ( (LA2_3150 == DOT) ) { s = 3144; } else if ( (LA2_3150 == PERCENT) ) { s = 3145; } else if ( (LA2_3150 == COLON) ) { s = 3146; } else if ( (LA2_3150 == AT) ) { s = 2504; } else if ( (LA2_3150 == AND) ) { s = 3147; } else if ( (LA2_3150 == EQUAL) ) { s = 3148; } else if ( (LA2_3150 == PLUS) ) { s = 3149; } else if ( (LA2_3150 == DOLLARD) ) { s = 3150; } else if ( (LA2_3150 == COMMA) ) { s = 2509; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3150 == CRLF) ) { s = 205; } else if ( (LA2_3150 == DASH || LA2_3150 == EMARK || LA2_3150 == LPAREN || LA2_3150 == RPAREN || ((LA2_3150 >= SQUOTE) && (LA2_3150 <= USCORE))) ) { s = 3152; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3150 == LSBRAQUET || LA2_3150 == RSBRAQUET) ) { s = 405; } SEEK(index2_3150); if ( s>=0 ) { return s; } } break; case 481: { ANTLR3_UINT32 LA2_3017; ANTLR3_MARKER index2_3017; LA2_3017 = LA(1); index2_3017 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3017 == SLASH) ) { s = 3319; } else if ( (LA2_3017 == QMARK) ) { s = 1751; } else if ( (LA2_3017 == SP) ) { s = 1585; } else if ( (LA2_3017 == CRLF) ) { s = 1588; } else if ( (LA2_3017 == SEMI) ) { s = 1749; } else if ( (LA2_3017 == COMMON_CHAR || LA2_3017 == HEX_CHAR) ) { s = 3015; } else if ( (LA2_3017 == DIGIT) ) { s = 3016; } else if ( (LA2_3017 == DOT) ) { s = 3017; } else if ( (LA2_3017 == PERCENT) ) { s = 3018; } else if ( (LA2_3017 == PLUS) ) { s = 3019; } else if ( (LA2_3017 == BQUOTE) ) { s = 2092; } else if ( (LA2_3017 == DASH || LA2_3017 == EMARK || LA2_3017 == LPAREN || LA2_3017 == RPAREN || ((LA2_3017 >= SQUOTE) && (LA2_3017 <= USCORE))) ) { s = 3020; } else if ( (LA2_3017 == AND || LA2_3017 == COLON || LA2_3017 == DOLLARD) ) { s = 2717; } else if ( (LA2_3017 == COMMA) ) { s = 506; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3017 == LSBRAQUET || LA2_3017 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_3017 == AT || LA2_3017 == EQUAL) ) { s = 508; } SEEK(index2_3017); if ( s>=0 ) { return s; } } break; case 482: { ANTLR3_UINT32 LA2_3508; ANTLR3_MARKER index2_3508; LA2_3508 = LA(1); index2_3508 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3508 == QMARK) ) { s = 854; } else if ( (LA2_3508 == SP) ) { s = 204; } else if ( (LA2_3508 == SLASH) ) { s = 2928; } else if ( (LA2_3508 == SEMI) ) { s = 3251; } else if ( (LA2_3508 == COMMON_CHAR || LA2_3508 == HEX_CHAR) ) { s = 3503; } else if ( (LA2_3508 == DIGIT) ) { s = 3504; } else if ( (LA2_3508 == DOT) ) { s = 3505; } else if ( (LA2_3508 == PERCENT) ) { s = 3506; } else if ( (LA2_3508 == COLON) ) { s = 3291; } else if ( (LA2_3508 == AT) ) { s = 2578; } else if ( (LA2_3508 == AND) ) { s = 3292; } else if ( (LA2_3508 == EQUAL) ) { s = 3550; } else if ( (LA2_3508 == PLUS) ) { s = 3507; } else if ( (LA2_3508 == DOLLARD) ) { s = 3293; } else if ( (LA2_3508 == COMMA) ) { s = 2583; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3508 == CRLF) ) { s = 205; } else if ( (LA2_3508 == DASH || LA2_3508 == EMARK || LA2_3508 == LPAREN || LA2_3508 == RPAREN || ((LA2_3508 >= SQUOTE) && (LA2_3508 <= USCORE))) ) { s = 3508; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3508 == LSBRAQUET || LA2_3508 == RSBRAQUET) ) { s = 405; } SEEK(index2_3508); if ( s>=0 ) { return s; } } break; case 483: { ANTLR3_UINT32 LA2_3839; ANTLR3_MARKER index2_3839; LA2_3839 = LA(1); index2_3839 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3839 == QMARK) ) { s = 854; } else if ( (LA2_3839 == SP) ) { s = 204; } else if ( (LA2_3839 == SLASH) ) { s = 3435; } else if ( (LA2_3839 == SEMI) ) { s = 3463; } else if ( (LA2_3839 == COMMON_CHAR || LA2_3839 == HEX_CHAR) ) { s = 3837; } else if ( (LA2_3839 == DIGIT) ) { s = 3838; } else if ( (LA2_3839 == DOT) ) { s = 3839; } else if ( (LA2_3839 == PERCENT) ) { s = 3840; } else if ( (LA2_3839 == COLON) ) { s = 3841; } else if ( (LA2_3839 == AT) ) { s = 2638; } else if ( (LA2_3839 == AND) ) { s = 3842; } else if ( (LA2_3839 == EQUAL) ) { s = 2640; } else if ( (LA2_3839 == PLUS) ) { s = 3843; } else if ( (LA2_3839 == DOLLARD) ) { s = 3844; } else if ( (LA2_3839 == COMMA) ) { s = 2643; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3839 == CRLF) ) { s = 205; } else if ( (LA2_3839 == DASH || LA2_3839 == EMARK || LA2_3839 == LPAREN || LA2_3839 == RPAREN || ((LA2_3839 >= SQUOTE) && (LA2_3839 <= USCORE))) ) { s = 3845; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3839 == LSBRAQUET || LA2_3839 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3839); if ( s>=0 ) { return s; } } break; case 484: { ANTLR3_UINT32 LA2_1788; ANTLR3_MARKER index2_1788; LA2_1788 = LA(1); index2_1788 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1788 == QMARK) ) { s = 1308; } else if ( (LA2_1788 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1788 == CRLF) ) { s = 205; } else if ( (LA2_1788 == SEMI) ) { s = 1307; } else if ( (LA2_1788 == DOT) ) { s = 1787; } else if ( (LA2_1788 == COMMON_CHAR || LA2_1788 == HEX_CHAR) ) { s = 1788; } else if ( (LA2_1788 == DIGIT) ) { s = 1789; } else if ( (LA2_1788 == AND || LA2_1788 == COLON || LA2_1788 == DOLLARD || LA2_1788 == PLUS || LA2_1788 == SLASH) ) { s = 1790; } else if ( (LA2_1788 == DASH || LA2_1788 == EMARK || LA2_1788 == LPAREN || LA2_1788 == RPAREN || ((LA2_1788 >= SQUOTE) && (LA2_1788 <= USCORE))) ) { s = 1791; } else if ( (LA2_1788 == PERCENT) ) { s = 1792; } else if ( (LA2_1788 == EQUAL) ) { s = 2284; } else if ( (LA2_1788 == COMMA) ) { s = 506; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1788 == LSBRAQUET || LA2_1788 == RSBRAQUET) ) { s = 405; } else if ( (LA2_1788 == AT) ) { s = 508; } SEEK(index2_1788); if ( s>=0 ) { return s; } } break; case 485: { ANTLR3_UINT32 LA2_3533; ANTLR3_MARKER index2_3533; LA2_3533 = LA(1); index2_3533 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3533 == SP) ) { s = 2456; } else if ( (LA2_3533 == CRLF) ) { s = 2458; } else if ( (LA2_3533 == EQUAL) ) { s = 3260; } else if ( (LA2_3533 == SLASH) ) { s = 3261; } else if ( (LA2_3533 == QMARK) ) { s = 854; } else if ( (LA2_3533 == SEMI) ) { s = 2587; } else if ( (LA2_3533 == COMMON_CHAR || LA2_3533 == HEX_CHAR) ) { s = 2949; } else if ( (LA2_3533 == DIGIT) ) { s = 2950; } else if ( (LA2_3533 == DOT) ) { s = 2951; } else if ( (LA2_3533 == PERCENT) ) { s = 2952; } else if ( (LA2_3533 == PLUS) ) { s = 2953; } else if ( (LA2_3533 == BQUOTE) ) { s = 1203; } else if ( (LA2_3533 == COLON) ) { s = 2954; } else if ( (LA2_3533 == AT) ) { s = 2111; } else if ( (LA2_3533 == AND) ) { s = 2955; } else if ( (LA2_3533 == DOLLARD) ) { s = 2956; } else if ( (LA2_3533 == COMMA) ) { s = 2116; } else if ( (LA2_3533 == DASH || LA2_3533 == EMARK || LA2_3533 == LPAREN || LA2_3533 == RPAREN || ((LA2_3533 >= SQUOTE) && (LA2_3533 <= USCORE))) ) { s = 2957; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3533 == LSBRAQUET || LA2_3533 == RSBRAQUET) ) { s = 405; } SEEK(index2_3533); if ( s>=0 ) { return s; } } break; case 486: { ANTLR3_UINT32 LA2_2842; ANTLR3_MARKER index2_2842; LA2_2842 = LA(1); index2_2842 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2842 == SLASH) ) { s = 2455; } else if ( (LA2_2842 == QMARK) ) { s = 854; } else if ( (LA2_2842 == SP) ) { s = 2456; } else if ( (LA2_2842 == SEMI) ) { s = 1583; } else if ( (LA2_2842 == COMMON_CHAR || LA2_2842 == HEX_CHAR) ) { s = 2001; } else if ( (LA2_2842 == DIGIT) ) { s = 2002; } else if ( (LA2_2842 == DOT) ) { s = 2003; } else if ( (LA2_2842 == PERCENT) ) { s = 2004; } else if ( (LA2_2842 == COLON) ) { s = 2005; } else if ( (LA2_2842 == AT) ) { s = 1123; } else if ( (LA2_2842 == AND) ) { s = 2006; } else if ( (LA2_2842 == EQUAL) ) { s = 2457; } else if ( (LA2_2842 == PLUS) ) { s = 2007; } else if ( (LA2_2842 == DOLLARD) ) { s = 2008; } else if ( (LA2_2842 == COMMA) ) { s = 1128; } else if ( (LA2_2842 == CRLF) ) { s = 2458; } else if ( (LA2_2842 == BQUOTE) ) { s = 1203; } else if ( (LA2_2842 == DASH || LA2_2842 == EMARK || LA2_2842 == LPAREN || LA2_2842 == RPAREN || ((LA2_2842 >= SQUOTE) && (LA2_2842 <= USCORE))) ) { s = 2013; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2842 == LSBRAQUET || LA2_2842 == RSBRAQUET) ) { s = 405; } SEEK(index2_2842); if ( s>=0 ) { return s; } } break; case 487: { ANTLR3_UINT32 LA2_1112; ANTLR3_MARKER index2_1112; LA2_1112 = LA(1); index2_1112 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1112 == COLON) ) { s = 1559; } else if ( (LA2_1112 == AT) ) { s = 89; } else if ( (LA2_1112 == COMMON_CHAR || LA2_1112 == HEX_CHAR) ) { s = 1560; } else if ( (LA2_1112 == DIGIT) ) { s = 1561; } else if ( (LA2_1112 == DASH || LA2_1112 == DOT || LA2_1112 == EMARK || LA2_1112 == LPAREN || LA2_1112 == RPAREN || ((LA2_1112 >= SQUOTE) && (LA2_1112 <= USCORE))) ) { s = 1562; } else if ( (LA2_1112 == PERCENT) ) { s = 1563; } else if ( (LA2_1112 == QMARK) ) { s = 1564; } else if ( (LA2_1112 == SEMI) ) { s = 94; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1112 == LSBRAQUET || LA2_1112 == RSBRAQUET) ) { s = 1552; } else if ( (LA2_1112 == SP) ) { s = 35; } else if ( (LA2_1112 == COMMA) ) { s = 97; } else if ( (LA2_1112 == AND || LA2_1112 == EQUAL) ) { s = 99; } else if ( (LA2_1112 == DOLLARD || LA2_1112 == PLUS || LA2_1112 == SLASH) ) { s = 1565; } SEEK(index2_1112); if ( s>=0 ) { return s; } } break; case 488: { ANTLR3_UINT32 LA2_257; ANTLR3_MARKER index2_257; LA2_257 = LA(1); index2_257 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_257 == COMMON_CHAR || LA2_257 == HEX_CHAR) ) { s = 542; } else if ( (LA2_257 == DIGIT) ) { s = 543; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_257 == LSBRAQUET) ) { s = 200; } else if ( (LA2_257 == SLASH) ) { s = 241; } else if ( (LA2_257 == QMARK) ) { s = 242; } else if ( (LA2_257 == SP) ) { s = 35; } else if ( (LA2_257 == SEMI) ) { s = 240; } else if ( (LA2_257 == DASH || LA2_257 == DOT || LA2_257 == EMARK || LA2_257 == LPAREN || LA2_257 == RPAREN || ((LA2_257 >= SQUOTE) && (LA2_257 <= USCORE))) ) { s = 494; } else if ( (LA2_257 == PERCENT) ) { s = 495; } else if ( (LA2_257 == COLON) ) { s = 496; } else if ( (LA2_257 == AT) ) { s = 497; } else if ( (LA2_257 == AND) ) { s = 498; } else if ( (LA2_257 == EQUAL) ) { s = 499; } else if ( (LA2_257 == PLUS) ) { s = 500; } else if ( (LA2_257 == DOLLARD) ) { s = 501; } else if ( (LA2_257 == COMMA) ) { s = 502; } SEEK(index2_257); if ( s>=0 ) { return s; } } break; case 489: { ANTLR3_UINT32 LA2_3512; ANTLR3_MARKER index2_3512; LA2_3512 = LA(1); index2_3512 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3512 == SLASH) ) { s = 3678; } else if ( (LA2_3512 == QMARK) ) { s = 854; } else if ( (LA2_3512 == SP) ) { s = 1585; } else if ( (LA2_3512 == CRLF) ) { s = 1588; } else if ( (LA2_3512 == SEMI) ) { s = 2587; } else if ( (LA2_3512 == COMMON_CHAR || LA2_3512 == HEX_CHAR) ) { s = 3512; } else if ( (LA2_3512 == DIGIT) ) { s = 3513; } else if ( (LA2_3512 == DOT) ) { s = 3514; } else if ( (LA2_3512 == PERCENT) ) { s = 3515; } else if ( (LA2_3512 == PLUS) ) { s = 3516; } else if ( (LA2_3512 == BQUOTE) ) { s = 2092; } else if ( (LA2_3512 == COLON) ) { s = 3517; } else if ( (LA2_3512 == AT) ) { s = 2111; } else if ( (LA2_3512 == AND) ) { s = 3518; } else if ( (LA2_3512 == EQUAL) ) { s = 2113; } else if ( (LA2_3512 == DOLLARD) ) { s = 3519; } else if ( (LA2_3512 == COMMA) ) { s = 2116; } else if ( (LA2_3512 == DASH || LA2_3512 == EMARK || LA2_3512 == LPAREN || LA2_3512 == RPAREN || ((LA2_3512 >= SQUOTE) && (LA2_3512 <= USCORE))) ) { s = 3520; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3512 == LSBRAQUET || LA2_3512 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3512); if ( s>=0 ) { return s; } } break; case 490: { ANTLR3_UINT32 LA2_2831; ANTLR3_MARKER index2_2831; LA2_2831 = LA(1); index2_2831 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2831 == SLASH) ) { s = 3153; } else if ( (LA2_2831 == QMARK) ) { s = 854; } else if ( (LA2_2831 == SP) ) { s = 1585; } else if ( (LA2_2831 == SEMI) ) { s = 1583; } else if ( (LA2_2831 == COMMON_CHAR || LA2_2831 == HEX_CHAR) ) { s = 2831; } else if ( (LA2_2831 == DIGIT) ) { s = 2832; } else if ( (LA2_2831 == DOT) ) { s = 2833; } else if ( (LA2_2831 == PERCENT) ) { s = 2834; } else if ( (LA2_2831 == COLON) ) { s = 2835; } else if ( (LA2_2831 == AT) ) { s = 1123; } else if ( (LA2_2831 == AND) ) { s = 2836; } else if ( (LA2_2831 == EQUAL) ) { s = 1125; } else if ( (LA2_2831 == PLUS) ) { s = 2837; } else if ( (LA2_2831 == DOLLARD) ) { s = 2838; } else if ( (LA2_2831 == COMMA) ) { s = 1128; } else if ( (LA2_2831 == CRLF) ) { s = 1588; } else if ( (LA2_2831 == BQUOTE) ) { s = 2092; } else if ( (LA2_2831 == DASH || LA2_2831 == EMARK || LA2_2831 == LPAREN || LA2_2831 == RPAREN || ((LA2_2831 >= SQUOTE) && (LA2_2831 <= USCORE))) ) { s = 2839; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2831 == LSBRAQUET || LA2_2831 == RSBRAQUET) ) { s = 1080; } SEEK(index2_2831); if ( s>=0 ) { return s; } } break; case 491: { ANTLR3_UINT32 LA2_1568; ANTLR3_MARKER index2_1568; LA2_1568 = LA(1); index2_1568 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1568 == DIGIT) ) { s = 1997; } else if ( (LA2_1568 == COLON) ) { s = 201; } else if ( (LA2_1568 == AT) ) { s = 89; } else if ( (LA2_1568 == COMMON_CHAR || LA2_1568 == HEX_CHAR) ) { s = 90; } else if ( (LA2_1568 == DASH) ) { s = 95; } else if ( (LA2_1568 == PERCENT) ) { s = 93; } else if ( (LA2_1568 == SEMI) ) { s = 202; } else if ( (LA2_1568 == DOT) ) { s = 92; } else if ( (LA2_1568 == EMARK || LA2_1568 == LPAREN || LA2_1568 == RPAREN || ((LA2_1568 >= SQUOTE) && (LA2_1568 <= USCORE))) ) { s = 96; } else if ( (LA2_1568 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1568 == CRLF) ) { s = 205; } else if ( (LA2_1568 == QMARK) ) { s = 206; } else if ( (LA2_1568 == COMMA) ) { s = 97; } else if ( (LA2_1568 == AND || LA2_1568 == DOLLARD || LA2_1568 == EQUAL || LA2_1568 == PLUS || LA2_1568 == SLASH) ) { s = 99; } SEEK(index2_1568); if ( s>=0 ) { return s; } } break; case 492: { ANTLR3_UINT32 LA2_3453; ANTLR3_MARKER index2_3453; LA2_3453 = LA(1); index2_3453 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3453 == SLASH) ) { s = 3171; } else if ( (LA2_3453 == QMARK) ) { s = 854; } else if ( (LA2_3453 == SP) ) { s = 204; } else if ( (LA2_3453 == SEMI) ) { s = 3170; } else if ( (LA2_3453 == COMMON_CHAR || LA2_3453 == HEX_CHAR) ) { s = 3445; } else if ( (LA2_3453 == DIGIT) ) { s = 3446; } else if ( (LA2_3453 == DOT) ) { s = 3447; } else if ( (LA2_3453 == PERCENT) ) { s = 3448; } else if ( (LA2_3453 == COLON) ) { s = 3449; } else if ( (LA2_3453 == AT) ) { s = 2184; } else if ( (LA2_3453 == AND) ) { s = 3450; } else if ( (LA2_3453 == EQUAL) ) { s = 3643; } else if ( (LA2_3453 == PLUS) ) { s = 3451; } else if ( (LA2_3453 == DOLLARD) ) { s = 3452; } else if ( (LA2_3453 == COMMA) ) { s = 2189; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3453 == CRLF) ) { s = 205; } else if ( (LA2_3453 == DASH || LA2_3453 == EMARK || LA2_3453 == LPAREN || LA2_3453 == RPAREN || ((LA2_3453 >= SQUOTE) && (LA2_3453 <= USCORE))) ) { s = 3453; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3453 == LSBRAQUET || LA2_3453 == RSBRAQUET) ) { s = 405; } SEEK(index2_3453); if ( s>=0 ) { return s; } } break; case 493: { ANTLR3_UINT32 LA2_415; ANTLR3_MARKER index2_415; LA2_415 = LA(1); index2_415 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_415 == COLON) ) { s = 408; } else if ( (LA2_415 == AT) ) { s = 89; } else if ( (LA2_415 == COMMON_CHAR || LA2_415 == HEX_CHAR) ) { s = 409; } else if ( (LA2_415 == DIGIT) ) { s = 410; } else if ( (LA2_415 == DASH || LA2_415 == DOT || LA2_415 == EMARK || LA2_415 == LPAREN || LA2_415 == RPAREN || ((LA2_415 >= SQUOTE) && (LA2_415 <= USCORE))) ) { s = 411; } else if ( (LA2_415 == PERCENT) ) { s = 412; } else if ( (LA2_415 == EQUAL) ) { s = 726; } else if ( (LA2_415 == QMARK) ) { s = 413; } else if ( (LA2_415 == SEMI) ) { s = 94; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_415 == LSBRAQUET || LA2_415 == RSBRAQUET) ) { s = 414; } else if ( (LA2_415 == SP) ) { s = 35; } else if ( (LA2_415 == COMMA) ) { s = 97; } else if ( (LA2_415 == AND) ) { s = 99; } else if ( (LA2_415 == DOLLARD || LA2_415 == PLUS || LA2_415 == SLASH) ) { s = 415; } SEEK(index2_415); if ( s>=0 ) { return s; } } break; case 494: { ANTLR3_UINT32 LA2_1565; ANTLR3_MARKER index2_1565; LA2_1565 = LA(1); index2_1565 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1565 == COLON) ) { s = 1559; } else if ( (LA2_1565 == AT) ) { s = 89; } else if ( (LA2_1565 == COMMON_CHAR || LA2_1565 == HEX_CHAR) ) { s = 1560; } else if ( (LA2_1565 == DIGIT) ) { s = 1561; } else if ( (LA2_1565 == DASH || LA2_1565 == DOT || LA2_1565 == EMARK || LA2_1565 == LPAREN || LA2_1565 == RPAREN || ((LA2_1565 >= SQUOTE) && (LA2_1565 <= USCORE))) ) { s = 1562; } else if ( (LA2_1565 == PERCENT) ) { s = 1563; } else if ( (LA2_1565 == EQUAL) ) { s = 1995; } else if ( (LA2_1565 == QMARK) ) { s = 1564; } else if ( (LA2_1565 == SEMI) ) { s = 94; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1565 == LSBRAQUET || LA2_1565 == RSBRAQUET) ) { s = 1552; } else if ( (LA2_1565 == SP) ) { s = 35; } else if ( (LA2_1565 == COMMA) ) { s = 97; } else if ( (LA2_1565 == AND) ) { s = 99; } else if ( (LA2_1565 == DOLLARD || LA2_1565 == PLUS || LA2_1565 == SLASH) ) { s = 1565; } SEEK(index2_1565); if ( s>=0 ) { return s; } } break; case 495: { ANTLR3_UINT32 LA2_2257; ANTLR3_MARKER index2_2257; LA2_2257 = LA(1); index2_2257 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2257 == QMARK) ) { s = 854; } else if ( (LA2_2257 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2257 == CRLF) ) { s = 205; } else if ( (LA2_2257 == SEMI) ) { s = 1237; } else if ( (LA2_2257 == DOT) ) { s = 2254; } else if ( (LA2_2257 == COMMON_CHAR || LA2_2257 == HEX_CHAR) ) { s = 2255; } else if ( (LA2_2257 == DIGIT) ) { s = 2256; } else if ( (LA2_2257 == SLASH) ) { s = 2245; } else if ( (LA2_2257 == DASH || LA2_2257 == EMARK || LA2_2257 == LPAREN || LA2_2257 == RPAREN || ((LA2_2257 >= SQUOTE) && (LA2_2257 <= USCORE))) ) { s = 2257; } else if ( (LA2_2257 == PERCENT) ) { s = 2258; } else if ( (LA2_2257 == COLON) ) { s = 2259; } else if ( (LA2_2257 == AND) ) { s = 2260; } else if ( (LA2_2257 == AT) ) { s = 464; } else if ( (LA2_2257 == PLUS) ) { s = 2261; } else if ( (LA2_2257 == EQUAL) ) { s = 466; } else if ( (LA2_2257 == DOLLARD) ) { s = 2262; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2257 == LSBRAQUET || LA2_2257 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_2257 == COMMA) ) { s = 469; } SEEK(index2_2257); if ( s>=0 ) { return s; } } break; case 496: { ANTLR3_UINT32 LA2_703; ANTLR3_MARKER index2_703; LA2_703 = LA(1); index2_703 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_703 == AT) ) { s = 89; } else if ( (LA2_703 == COMMON_CHAR || LA2_703 == HEX_CHAR) ) { s = 699; } else if ( (LA2_703 == DIGIT) ) { s = 700; } else if ( (LA2_703 == DOT) ) { s = 701; } else if ( (LA2_703 == PERCENT) ) { s = 702; } else if ( (LA2_703 == AND) ) { s = 703; } else if ( (LA2_703 == EQUAL) ) { s = 704; } else if ( (LA2_703 == PLUS) ) { s = 705; } else if ( (LA2_703 == DOLLARD) ) { s = 706; } else if ( (LA2_703 == COMMA) ) { s = 197; } else if ( (LA2_703 == QMARK) ) { s = 694; } else if ( (LA2_703 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_703 == CRLF) ) { s = 205; } else if ( (LA2_703 == SEMI) ) { s = 693; } else if ( (LA2_703 == DASH || LA2_703 == EMARK || LA2_703 == LPAREN || LA2_703 == RPAREN || ((LA2_703 >= SQUOTE) && (LA2_703 <= USCORE))) ) { s = 707; } else if ( (LA2_703 == COLON || LA2_703 == SLASH) ) { s = 708; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_703 == LSBRAQUET || LA2_703 == RSBRAQUET) ) { s = 405; } SEEK(index2_703); if ( s>=0 ) { return s; } } break; case 497: { ANTLR3_UINT32 LA2_2282; ANTLR3_MARKER index2_2282; LA2_2282 = LA(1); index2_2282 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2282 == DIGIT) ) { s = 2283; } else if ( (LA2_2282 == COLON) ) { s = 1298; } else if ( (LA2_2282 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2282 == CRLF) ) { s = 205; } else if ( (LA2_2282 == SEMI) ) { s = 853; } else if ( (LA2_2282 == QMARK) ) { s = 854; } else if ( (LA2_2282 == COMMON_CHAR || LA2_2282 == HEX_CHAR) ) { s = 542; } else if ( (LA2_2282 == SLASH) ) { s = 241; } else if ( (LA2_2282 == DASH || LA2_2282 == DOT || LA2_2282 == EMARK || LA2_2282 == LPAREN || LA2_2282 == RPAREN || ((LA2_2282 >= SQUOTE) && (LA2_2282 <= USCORE))) ) { s = 494; } else if ( (LA2_2282 == PERCENT) ) { s = 495; } else if ( (LA2_2282 == AT) ) { s = 497; } else if ( (LA2_2282 == AND) ) { s = 498; } else if ( (LA2_2282 == EQUAL) ) { s = 499; } else if ( (LA2_2282 == PLUS) ) { s = 500; } else if ( (LA2_2282 == DOLLARD) ) { s = 501; } else if ( (LA2_2282 == COMMA) ) { s = 502; } SEEK(index2_2282); if ( s>=0 ) { return s; } } break; case 498: { ANTLR3_UINT32 LA2_3023; ANTLR3_MARKER index2_3023; LA2_3023 = LA(1); index2_3023 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3023 == SEMI) ) { s = 3030; } else if ( (LA2_3023 == SLASH) ) { s = 3031; } else if ( (LA2_3023 == QMARK) ) { s = 1751; } else if ( (LA2_3023 == SP) ) { s = 204; } else if ( (LA2_3023 == COMMON_CHAR || LA2_3023 == HEX_CHAR) ) { s = 3021; } else if ( (LA2_3023 == DIGIT) ) { s = 3022; } else if ( (LA2_3023 == DOT) ) { s = 3023; } else if ( (LA2_3023 == PERCENT) ) { s = 3024; } else if ( (LA2_3023 == COLON) ) { s = 3025; } else if ( (LA2_3023 == AT) ) { s = 2229; } else if ( (LA2_3023 == AND) ) { s = 3026; } else if ( (LA2_3023 == EQUAL) ) { s = 3027; } else if ( (LA2_3023 == PLUS) ) { s = 3028; } else if ( (LA2_3023 == DOLLARD) ) { s = 3029; } else if ( (LA2_3023 == COMMA) ) { s = 2234; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3023 == CRLF) ) { s = 205; } else if ( (LA2_3023 == DASH || LA2_3023 == EMARK || LA2_3023 == LPAREN || LA2_3023 == RPAREN || ((LA2_3023 >= SQUOTE) && (LA2_3023 <= USCORE))) ) { s = 3032; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3023 == LSBRAQUET || LA2_3023 == RSBRAQUET) ) { s = 405; } SEEK(index2_3023); if ( s>=0 ) { return s; } } break; case 499: { ANTLR3_UINT32 LA2_3061; ANTLR3_MARKER index2_3061; LA2_3061 = LA(1); index2_3061 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3061 == DIGIT) ) { s = 3062; } else if ( (LA2_3061 == COLON) ) { s = 1298; } else if ( (LA2_3061 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3061 == CRLF) ) { s = 205; } else if ( (LA2_3061 == SEMI) ) { s = 853; } else if ( (LA2_3061 == QMARK) ) { s = 854; } else if ( (LA2_3061 == COMMON_CHAR || LA2_3061 == HEX_CHAR) ) { s = 542; } else if ( (LA2_3061 == SLASH) ) { s = 241; } else if ( (LA2_3061 == DASH || LA2_3061 == DOT || LA2_3061 == EMARK || LA2_3061 == LPAREN || LA2_3061 == RPAREN || ((LA2_3061 >= SQUOTE) && (LA2_3061 <= USCORE))) ) { s = 494; } else if ( (LA2_3061 == PERCENT) ) { s = 495; } else if ( (LA2_3061 == AT) ) { s = 497; } else if ( (LA2_3061 == AND) ) { s = 498; } else if ( (LA2_3061 == EQUAL) ) { s = 499; } else if ( (LA2_3061 == PLUS) ) { s = 500; } else if ( (LA2_3061 == DOLLARD) ) { s = 501; } else if ( (LA2_3061 == COMMA) ) { s = 502; } SEEK(index2_3061); if ( s>=0 ) { return s; } } break; case 500: { ANTLR3_UINT32 LA2_1301; ANTLR3_MARKER index2_1301; LA2_1301 = LA(1); index2_1301 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1301 == DIGIT) ) { s = 1302; } else if ( (LA2_1301 == COMMON_CHAR || LA2_1301 == HEX_CHAR) ) { s = 542; } else if ( (LA2_1301 == COLON) ) { s = 1298; } else if ( (LA2_1301 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1301 == CRLF) ) { s = 205; } else if ( (LA2_1301 == SEMI) ) { s = 853; } else if ( (LA2_1301 == QMARK) ) { s = 854; } else if ( (LA2_1301 == SLASH) ) { s = 241; } else if ( (LA2_1301 == DASH || LA2_1301 == DOT || LA2_1301 == EMARK || LA2_1301 == LPAREN || LA2_1301 == RPAREN || ((LA2_1301 >= SQUOTE) && (LA2_1301 <= USCORE))) ) { s = 494; } else if ( (LA2_1301 == PERCENT) ) { s = 495; } else if ( (LA2_1301 == AT) ) { s = 497; } else if ( (LA2_1301 == AND) ) { s = 498; } else if ( (LA2_1301 == EQUAL) ) { s = 499; } else if ( (LA2_1301 == PLUS) ) { s = 500; } else if ( (LA2_1301 == DOLLARD) ) { s = 501; } else if ( (LA2_1301 == COMMA) ) { s = 502; } SEEK(index2_1301); if ( s>=0 ) { return s; } } break; case 501: { ANTLR3_UINT32 LA2_1059; ANTLR3_MARKER index2_1059; LA2_1059 = LA(1); index2_1059 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1059 == QMARK) ) { s = 694; } else if ( (LA2_1059 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1059 == CRLF) ) { s = 205; } else if ( (LA2_1059 == SEMI) ) { s = 693; } else if ( (LA2_1059 == DOT) ) { s = 1057; } else if ( (LA2_1059 == COMMON_CHAR || LA2_1059 == HEX_CHAR) ) { s = 1058; } else if ( (LA2_1059 == DIGIT) ) { s = 1059; } else if ( (LA2_1059 == AND || LA2_1059 == COLON || LA2_1059 == DOLLARD || LA2_1059 == PLUS || LA2_1059 == SLASH) ) { s = 708; } else if ( (LA2_1059 == DASH || LA2_1059 == EMARK || LA2_1059 == LPAREN || LA2_1059 == RPAREN || ((LA2_1059 >= SQUOTE) && (LA2_1059 <= USCORE))) ) { s = 1060; } else if ( (LA2_1059 == PERCENT) ) { s = 1061; } else if ( (LA2_1059 == EQUAL) ) { s = 1081; } else if ( (LA2_1059 == COMMA) ) { s = 106; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1059 == LSBRAQUET || LA2_1059 == RSBRAQUET) ) { s = 405; } else if ( (LA2_1059 == AT) ) { s = 108; } SEEK(index2_1059); if ( s>=0 ) { return s; } } break; case 502: { ANTLR3_UINT32 LA2_706; ANTLR3_MARKER index2_706; LA2_706 = LA(1); index2_706 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_706 == AT) ) { s = 89; } else if ( (LA2_706 == COMMON_CHAR || LA2_706 == HEX_CHAR) ) { s = 699; } else if ( (LA2_706 == DIGIT) ) { s = 700; } else if ( (LA2_706 == DOT) ) { s = 701; } else if ( (LA2_706 == PERCENT) ) { s = 702; } else if ( (LA2_706 == AND) ) { s = 703; } else if ( (LA2_706 == EQUAL) ) { s = 704; } else if ( (LA2_706 == PLUS) ) { s = 705; } else if ( (LA2_706 == DOLLARD) ) { s = 706; } else if ( (LA2_706 == COMMA) ) { s = 197; } else if ( (LA2_706 == QMARK) ) { s = 694; } else if ( (LA2_706 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_706 == CRLF) ) { s = 205; } else if ( (LA2_706 == SEMI) ) { s = 693; } else if ( (LA2_706 == DASH || LA2_706 == EMARK || LA2_706 == LPAREN || LA2_706 == RPAREN || ((LA2_706 >= SQUOTE) && (LA2_706 <= USCORE))) ) { s = 707; } else if ( (LA2_706 == COLON || LA2_706 == SLASH) ) { s = 708; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_706 == LSBRAQUET || LA2_706 == RSBRAQUET) ) { s = 405; } SEEK(index2_706); if ( s>=0 ) { return s; } } break; case 503: { ANTLR3_UINT32 LA2_1536; ANTLR3_MARKER index2_1536; LA2_1536 = LA(1); index2_1536 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1536 == QMARK) ) { s = 694; } else if ( (LA2_1536 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1536 == CRLF) ) { s = 205; } else if ( (LA2_1536 == SEMI) ) { s = 693; } else if ( (LA2_1536 == DOT) ) { s = 1534; } else if ( (LA2_1536 == COMMON_CHAR || LA2_1536 == HEX_CHAR) ) { s = 1535; } else if ( (LA2_1536 == DIGIT) ) { s = 1536; } else if ( (LA2_1536 == AND || LA2_1536 == COLON || LA2_1536 == DOLLARD || LA2_1536 == PLUS || LA2_1536 == SLASH) ) { s = 1079; } else if ( (LA2_1536 == DASH || LA2_1536 == EMARK || LA2_1536 == LPAREN || LA2_1536 == RPAREN || ((LA2_1536 >= SQUOTE) && (LA2_1536 <= USCORE))) ) { s = 1537; } else if ( (LA2_1536 == PERCENT) ) { s = 1538; } else if ( (LA2_1536 == COMMA) ) { s = 106; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1536 == LSBRAQUET || LA2_1536 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_1536 == AT || LA2_1536 == EQUAL) ) { s = 108; } SEEK(index2_1536); if ( s>=0 ) { return s; } } break; case 504: { ANTLR3_UINT32 LA2_705; ANTLR3_MARKER index2_705; LA2_705 = LA(1); index2_705 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_705 == AT) ) { s = 89; } else if ( (LA2_705 == COMMON_CHAR || LA2_705 == HEX_CHAR) ) { s = 699; } else if ( (LA2_705 == DIGIT) ) { s = 700; } else if ( (LA2_705 == DOT) ) { s = 701; } else if ( (LA2_705 == PERCENT) ) { s = 702; } else if ( (LA2_705 == AND) ) { s = 703; } else if ( (LA2_705 == EQUAL) ) { s = 704; } else if ( (LA2_705 == PLUS) ) { s = 705; } else if ( (LA2_705 == DOLLARD) ) { s = 706; } else if ( (LA2_705 == COMMA) ) { s = 197; } else if ( (LA2_705 == QMARK) ) { s = 694; } else if ( (LA2_705 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_705 == CRLF) ) { s = 205; } else if ( (LA2_705 == SEMI) ) { s = 693; } else if ( (LA2_705 == DASH || LA2_705 == EMARK || LA2_705 == LPAREN || LA2_705 == RPAREN || ((LA2_705 >= SQUOTE) && (LA2_705 <= USCORE))) ) { s = 707; } else if ( (LA2_705 == COLON || LA2_705 == SLASH) ) { s = 708; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_705 == LSBRAQUET || LA2_705 == RSBRAQUET) ) { s = 405; } SEEK(index2_705); if ( s>=0 ) { return s; } } break; case 505: { ANTLR3_UINT32 LA2_2587; ANTLR3_MARKER index2_2587; LA2_2587 = LA(1); index2_2587 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2587 == SP) ) { s = 2010; } else if ( (LA2_2587 == CRLF) ) { s = 2012; } else if ( (LA2_2587 == COMMON_CHAR || LA2_2587 == HEX_CHAR) ) { s = 2949; } else if ( (LA2_2587 == DIGIT) ) { s = 2950; } else if ( (LA2_2587 == DOT) ) { s = 2951; } else if ( (LA2_2587 == PERCENT) ) { s = 2952; } else if ( (LA2_2587 == PLUS) ) { s = 2953; } else if ( (LA2_2587 == BQUOTE) ) { s = 1203; } else if ( (LA2_2587 == COLON) ) { s = 2954; } else if ( (LA2_2587 == AT) ) { s = 2111; } else if ( (LA2_2587 == AND) ) { s = 2955; } else if ( (LA2_2587 == EQUAL) ) { s = 2113; } else if ( (LA2_2587 == DOLLARD) ) { s = 2956; } else if ( (LA2_2587 == COMMA) ) { s = 2116; } else if ( (LA2_2587 == SLASH) ) { s = 2928; } else if ( (LA2_2587 == QMARK) ) { s = 854; } else if ( (LA2_2587 == SEMI) ) { s = 2927; } else if ( (LA2_2587 == DASH || LA2_2587 == EMARK || LA2_2587 == LPAREN || LA2_2587 == RPAREN || ((LA2_2587 >= SQUOTE) && (LA2_2587 <= USCORE))) ) { s = 2957; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2587 == LSBRAQUET || LA2_2587 == RSBRAQUET) ) { s = 405; } SEEK(index2_2587); if ( s>=0 ) { return s; } } break; case 506: { ANTLR3_UINT32 LA2_7; ANTLR3_MARKER index2_7; LA2_7 = LA(1); index2_7 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_7 == COMMON_CHAR || LA2_7 == HEX_CHAR) ) { s = 8; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_7 == DIGIT) ) { s = 9; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_7 == DASH || LA2_7 == DOT || LA2_7 == EMARK || LA2_7 == LPAREN || LA2_7 == RPAREN || ((LA2_7 >= SQUOTE) && (LA2_7 <= USCORE))) ) { s = 10; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_7 == PERCENT) ) { s = 11; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_7 == PLUS) ) { s = 12; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_7 == BQUOTE) ) { s = 13; } else if ( (LA2_7 == SLASH) ) { s = 14; } SEEK(index2_7); if ( s>=0 ) { return s; } } break; case 507: { ANTLR3_UINT32 LA2_3406; ANTLR3_MARKER index2_3406; LA2_3406 = LA(1); index2_3406 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3406 == SEMI) ) { s = 3151; } else if ( (LA2_3406 == QMARK) ) { s = 854; } else if ( (LA2_3406 == SP) ) { s = 204; } else if ( (LA2_3406 == SLASH) ) { s = 3123; } else if ( (LA2_3406 == COMMON_CHAR || LA2_3406 == HEX_CHAR) ) { s = 3406; } else if ( (LA2_3406 == DIGIT) ) { s = 3407; } else if ( (LA2_3406 == DOT) ) { s = 3408; } else if ( (LA2_3406 == PERCENT) ) { s = 3409; } else if ( (LA2_3406 == COLON) ) { s = 3410; } else if ( (LA2_3406 == AT) ) { s = 2504; } else if ( (LA2_3406 == AND) ) { s = 3411; } else if ( (LA2_3406 == EQUAL) ) { s = 2506; } else if ( (LA2_3406 == PLUS) ) { s = 3412; } else if ( (LA2_3406 == DOLLARD) ) { s = 3413; } else if ( (LA2_3406 == COMMA) ) { s = 2509; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3406 == CRLF) ) { s = 205; } else if ( (LA2_3406 == DASH || LA2_3406 == EMARK || LA2_3406 == LPAREN || LA2_3406 == RPAREN || ((LA2_3406 >= SQUOTE) && (LA2_3406 <= USCORE))) ) { s = 3414; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3406 == LSBRAQUET || LA2_3406 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3406); if ( s>=0 ) { return s; } } break; case 508: { ANTLR3_UINT32 LA2_1108; ANTLR3_MARKER index2_1108; LA2_1108 = LA(1); index2_1108 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1108 == COLON) ) { s = 1106; } else if ( (LA2_1108 == AT) ) { s = 89; } else if ( (LA2_1108 == COMMON_CHAR || LA2_1108 == HEX_CHAR) ) { s = 1107; } else if ( (LA2_1108 == DIGIT) ) { s = 1108; } else if ( (LA2_1108 == DASH || LA2_1108 == DOT || LA2_1108 == EMARK || LA2_1108 == LPAREN || LA2_1108 == RPAREN || ((LA2_1108 >= SQUOTE) && (LA2_1108 <= USCORE))) ) { s = 1109; } else if ( (LA2_1108 == PERCENT) ) { s = 1110; } else if ( (LA2_1108 == AND) ) { s = 1112; } else if ( (LA2_1108 == QMARK) ) { s = 1111; } else if ( (LA2_1108 == SP) ) { s = 35; } else if ( (LA2_1108 == SEMI) ) { s = 94; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1108 == LSBRAQUET || LA2_1108 == RSBRAQUET) ) { s = 1104; } else if ( (LA2_1108 == COMMA) ) { s = 97; } else if ( (LA2_1108 == EQUAL) ) { s = 99; } else if ( (LA2_1108 == DOLLARD || LA2_1108 == PLUS || LA2_1108 == SLASH) ) { s = 1113; } SEEK(index2_1108); if ( s>=0 ) { return s; } } break; case 509: { ANTLR3_UINT32 LA2_1297; ANTLR3_MARKER index2_1297; LA2_1297 = LA(1); index2_1297 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1297 == COMMON_CHAR || LA2_1297 == HEX_CHAR) ) { s = 542; } else if ( (LA2_1297 == DIGIT) ) { s = 1296; } else if ( (LA2_1297 == COLON) ) { s = 1298; } else if ( (LA2_1297 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1297 == CRLF) ) { s = 205; } else if ( (LA2_1297 == SEMI) ) { s = 853; } else if ( (LA2_1297 == QMARK) ) { s = 854; } else if ( (LA2_1297 == SLASH) ) { s = 241; } else if ( (LA2_1297 == DASH || LA2_1297 == DOT || LA2_1297 == EMARK || LA2_1297 == LPAREN || LA2_1297 == RPAREN || ((LA2_1297 >= SQUOTE) && (LA2_1297 <= USCORE))) ) { s = 494; } else if ( (LA2_1297 == PERCENT) ) { s = 495; } else if ( (LA2_1297 == AT) ) { s = 497; } else if ( (LA2_1297 == AND) ) { s = 498; } else if ( (LA2_1297 == EQUAL) ) { s = 499; } else if ( (LA2_1297 == PLUS) ) { s = 500; } else if ( (LA2_1297 == DOLLARD) ) { s = 501; } else if ( (LA2_1297 == COMMA) ) { s = 502; } SEEK(index2_1297); if ( s>=0 ) { return s; } } break; case 510: { ANTLR3_UINT32 LA2_3346; ANTLR3_MARKER index2_3346; LA2_3346 = LA(1); index2_3346 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3346 == SEMI) ) { s = 3351; } else if ( (LA2_3346 == QMARK) ) { s = 1751; } else if ( (LA2_3346 == SP) ) { s = 204; } else if ( (LA2_3346 == SLASH) ) { s = 3031; } else if ( (LA2_3346 == COMMON_CHAR || LA2_3346 == HEX_CHAR) ) { s = 3342; } else if ( (LA2_3346 == DIGIT) ) { s = 3343; } else if ( (LA2_3346 == DOT) ) { s = 3344; } else if ( (LA2_3346 == PERCENT) ) { s = 3345; } else if ( (LA2_3346 == COLON) ) { s = 3346; } else if ( (LA2_3346 == AT) ) { s = 2684; } else if ( (LA2_3346 == AND) ) { s = 3347; } else if ( (LA2_3346 == EQUAL) ) { s = 3348; } else if ( (LA2_3346 == PLUS) ) { s = 3349; } else if ( (LA2_3346 == DOLLARD) ) { s = 3350; } else if ( (LA2_3346 == COMMA) ) { s = 2689; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3346 == CRLF) ) { s = 205; } else if ( (LA2_3346 == DASH || LA2_3346 == EMARK || LA2_3346 == LPAREN || LA2_3346 == RPAREN || ((LA2_3346 >= SQUOTE) && (LA2_3346 <= USCORE))) ) { s = 3352; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3346 == LSBRAQUET || LA2_3346 == RSBRAQUET) ) { s = 405; } SEEK(index2_3346); if ( s>=0 ) { return s; } } break; case 511: { ANTLR3_UINT32 LA2_2286; ANTLR3_MARKER index2_2286; LA2_2286 = LA(1); index2_2286 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2286 == DOT) ) { s = 2287; } else if ( (LA2_2286 == COLON) ) { s = 1306; } else if ( (LA2_2286 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2286 == CRLF) ) { s = 205; } else if ( (LA2_2286 == SEMI) ) { s = 1307; } else if ( (LA2_2286 == QMARK) ) { s = 1308; } else if ( (LA2_2286 == DASH) ) { s = 884; } else if ( (LA2_2286 == COMMON_CHAR || LA2_2286 == HEX_CHAR) ) { s = 882; } else if ( (LA2_2286 == DIGIT) ) { s = 883; } else if ( (LA2_2286 == COMMA) ) { s = 506; } else if ( (((LA2_2286 >= AND) && (LA2_2286 <= AT)) || LA2_2286 == DOLLARD || LA2_2286 == EQUAL || LA2_2286 == PLUS || LA2_2286 == SLASH) ) { s = 508; } else if ( (LA2_2286 == EMARK || LA2_2286 == LPAREN || LA2_2286 == RPAREN || ((LA2_2286 >= SQUOTE) && (LA2_2286 <= USCORE))) ) { s = 511; } else if ( (LA2_2286 == PERCENT) ) { s = 512; } SEEK(index2_2286); if ( s>=0 ) { return s; } } break; case 512: { ANTLR3_UINT32 LA2_3350; ANTLR3_MARKER index2_3350; LA2_3350 = LA(1); index2_3350 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3350 == SEMI) ) { s = 3351; } else if ( (LA2_3350 == QMARK) ) { s = 1751; } else if ( (LA2_3350 == SP) ) { s = 204; } else if ( (LA2_3350 == SLASH) ) { s = 3031; } else if ( (LA2_3350 == COMMON_CHAR || LA2_3350 == HEX_CHAR) ) { s = 3342; } else if ( (LA2_3350 == DIGIT) ) { s = 3343; } else if ( (LA2_3350 == DOT) ) { s = 3344; } else if ( (LA2_3350 == PERCENT) ) { s = 3345; } else if ( (LA2_3350 == COLON) ) { s = 3346; } else if ( (LA2_3350 == AT) ) { s = 2684; } else if ( (LA2_3350 == AND) ) { s = 3347; } else if ( (LA2_3350 == EQUAL) ) { s = 3348; } else if ( (LA2_3350 == PLUS) ) { s = 3349; } else if ( (LA2_3350 == DOLLARD) ) { s = 3350; } else if ( (LA2_3350 == COMMA) ) { s = 2689; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3350 == CRLF) ) { s = 205; } else if ( (LA2_3350 == DASH || LA2_3350 == EMARK || LA2_3350 == LPAREN || LA2_3350 == RPAREN || ((LA2_3350 >= SQUOTE) && (LA2_3350 <= USCORE))) ) { s = 3352; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3350 == LSBRAQUET || LA2_3350 == RSBRAQUET) ) { s = 405; } SEEK(index2_3350); if ( s>=0 ) { return s; } } break; case 513: { ANTLR3_UINT32 LA2_3064; ANTLR3_MARKER index2_3064; LA2_3064 = LA(1); index2_3064 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3064 == DOT) ) { s = 3065; } else if ( (LA2_3064 == COLON) ) { s = 1306; } else if ( (LA2_3064 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3064 == CRLF) ) { s = 205; } else if ( (LA2_3064 == SEMI) ) { s = 1307; } else if ( (LA2_3064 == QMARK) ) { s = 1308; } else if ( (LA2_3064 == DASH) ) { s = 884; } else if ( (LA2_3064 == COMMON_CHAR || LA2_3064 == HEX_CHAR) ) { s = 882; } else if ( (LA2_3064 == DIGIT) ) { s = 883; } else if ( (LA2_3064 == COMMA) ) { s = 506; } else if ( (((LA2_3064 >= AND) && (LA2_3064 <= AT)) || LA2_3064 == DOLLARD || LA2_3064 == EQUAL || LA2_3064 == PLUS || LA2_3064 == SLASH) ) { s = 508; } else if ( (LA2_3064 == EMARK || LA2_3064 == LPAREN || LA2_3064 == RPAREN || ((LA2_3064 >= SQUOTE) && (LA2_3064 <= USCORE))) ) { s = 511; } else if ( (LA2_3064 == PERCENT) ) { s = 512; } SEEK(index2_3064); if ( s>=0 ) { return s; } } break; case 514: { ANTLR3_UINT32 LA2_3349; ANTLR3_MARKER index2_3349; LA2_3349 = LA(1); index2_3349 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3349 == SEMI) ) { s = 3351; } else if ( (LA2_3349 == QMARK) ) { s = 1751; } else if ( (LA2_3349 == SP) ) { s = 204; } else if ( (LA2_3349 == SLASH) ) { s = 3031; } else if ( (LA2_3349 == COMMON_CHAR || LA2_3349 == HEX_CHAR) ) { s = 3342; } else if ( (LA2_3349 == DIGIT) ) { s = 3343; } else if ( (LA2_3349 == DOT) ) { s = 3344; } else if ( (LA2_3349 == PERCENT) ) { s = 3345; } else if ( (LA2_3349 == COLON) ) { s = 3346; } else if ( (LA2_3349 == AT) ) { s = 2684; } else if ( (LA2_3349 == AND) ) { s = 3347; } else if ( (LA2_3349 == EQUAL) ) { s = 3348; } else if ( (LA2_3349 == PLUS) ) { s = 3349; } else if ( (LA2_3349 == DOLLARD) ) { s = 3350; } else if ( (LA2_3349 == COMMA) ) { s = 2689; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3349 == CRLF) ) { s = 205; } else if ( (LA2_3349 == DASH || LA2_3349 == EMARK || LA2_3349 == LPAREN || LA2_3349 == RPAREN || ((LA2_3349 >= SQUOTE) && (LA2_3349 <= USCORE))) ) { s = 3352; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3349 == LSBRAQUET || LA2_3349 == RSBRAQUET) ) { s = 405; } SEEK(index2_3349); if ( s>=0 ) { return s; } } break; case 515: { ANTLR3_UINT32 LA2_18; ANTLR3_MARKER index2_18; LA2_18 = LA(1); index2_18 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_18 == COLON) ) { s = 15; } else if ( (LA2_18 == COMMON_CHAR || LA2_18 == HEX_CHAR) ) { s = 16; } else if ( (LA2_18 == DIGIT) ) { s = 17; } else if ( (LA2_18 == DASH) ) { s = 18; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_18 == PERCENT) ) { s = 11; } else if ( (LA2_18 == PLUS) ) { s = 19; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_18 == BQUOTE) ) { s = 13; } else if ( (LA2_18 == DOT) ) { s = 20; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_18 == EMARK || LA2_18 == LPAREN || LA2_18 == RPAREN || ((LA2_18 >= SQUOTE) && (LA2_18 <= USCORE))) ) { s = 10; } SEEK(index2_18); if ( s>=0 ) { return s; } } break; case 516: { ANTLR3_UINT32 LA2_1310; ANTLR3_MARKER index2_1310; LA2_1310 = LA(1); index2_1310 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1310 == DOT) ) { s = 1311; } else if ( (LA2_1310 == COMMON_CHAR || LA2_1310 == HEX_CHAR) ) { s = 882; } else if ( (LA2_1310 == DIGIT) ) { s = 883; } else if ( (LA2_1310 == DASH) ) { s = 884; } else if ( (LA2_1310 == COLON) ) { s = 1306; } else if ( (LA2_1310 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1310 == CRLF) ) { s = 205; } else if ( (LA2_1310 == SEMI) ) { s = 1307; } else if ( (LA2_1310 == QMARK) ) { s = 1308; } else if ( (LA2_1310 == COMMA) ) { s = 506; } else if ( (((LA2_1310 >= AND) && (LA2_1310 <= AT)) || LA2_1310 == DOLLARD || LA2_1310 == EQUAL || LA2_1310 == PLUS || LA2_1310 == SLASH) ) { s = 508; } else if ( (LA2_1310 == EMARK || LA2_1310 == LPAREN || LA2_1310 == RPAREN || ((LA2_1310 >= SQUOTE) && (LA2_1310 <= USCORE))) ) { s = 511; } else if ( (LA2_1310 == PERCENT) ) { s = 512; } SEEK(index2_1310); if ( s>=0 ) { return s; } } break; case 517: { ANTLR3_UINT32 LA2_3347; ANTLR3_MARKER index2_3347; LA2_3347 = LA(1); index2_3347 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3347 == SEMI) ) { s = 3351; } else if ( (LA2_3347 == QMARK) ) { s = 1751; } else if ( (LA2_3347 == SP) ) { s = 204; } else if ( (LA2_3347 == SLASH) ) { s = 3031; } else if ( (LA2_3347 == COMMON_CHAR || LA2_3347 == HEX_CHAR) ) { s = 3342; } else if ( (LA2_3347 == DIGIT) ) { s = 3343; } else if ( (LA2_3347 == DOT) ) { s = 3344; } else if ( (LA2_3347 == PERCENT) ) { s = 3345; } else if ( (LA2_3347 == COLON) ) { s = 3346; } else if ( (LA2_3347 == AT) ) { s = 2684; } else if ( (LA2_3347 == AND) ) { s = 3347; } else if ( (LA2_3347 == EQUAL) ) { s = 3348; } else if ( (LA2_3347 == PLUS) ) { s = 3349; } else if ( (LA2_3347 == DOLLARD) ) { s = 3350; } else if ( (LA2_3347 == COMMA) ) { s = 2689; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3347 == CRLF) ) { s = 205; } else if ( (LA2_3347 == DASH || LA2_3347 == EMARK || LA2_3347 == LPAREN || LA2_3347 == RPAREN || ((LA2_3347 >= SQUOTE) && (LA2_3347 <= USCORE))) ) { s = 3352; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3347 == LSBRAQUET || LA2_3347 == RSBRAQUET) ) { s = 405; } SEEK(index2_3347); if ( s>=0 ) { return s; } } break; case 518: { ANTLR3_UINT32 LA2_3597; ANTLR3_MARKER index2_3597; LA2_3597 = LA(1); index2_3597 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3597 == COLON) ) { s = 1306; } else if ( (LA2_3597 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3597 == CRLF) ) { s = 205; } else if ( (LA2_3597 == SEMI) ) { s = 1307; } else if ( (LA2_3597 == QMARK) ) { s = 1308; } else if ( (LA2_3597 == DOT) ) { s = 1305; } else if ( (LA2_3597 == DASH) ) { s = 884; } else if ( (LA2_3597 == COMMON_CHAR || LA2_3597 == HEX_CHAR) ) { s = 882; } else if ( (LA2_3597 == DIGIT) ) { s = 883; } else if ( (LA2_3597 == COMMA) ) { s = 506; } else if ( (((LA2_3597 >= AND) && (LA2_3597 <= AT)) || LA2_3597 == DOLLARD || LA2_3597 == EQUAL || LA2_3597 == PLUS || LA2_3597 == SLASH) ) { s = 508; } else if ( (LA2_3597 == EMARK || LA2_3597 == LPAREN || LA2_3597 == RPAREN || ((LA2_3597 >= SQUOTE) && (LA2_3597 <= USCORE))) ) { s = 511; } else if ( (LA2_3597 == PERCENT) ) { s = 512; } SEEK(index2_3597); if ( s>=0 ) { return s; } } break; case 519: { ANTLR3_UINT32 LA2_3845; ANTLR3_MARKER index2_3845; LA2_3845 = LA(1); index2_3845 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3845 == QMARK) ) { s = 854; } else if ( (LA2_3845 == SP) ) { s = 204; } else if ( (LA2_3845 == SLASH) ) { s = 3435; } else if ( (LA2_3845 == SEMI) ) { s = 3463; } else if ( (LA2_3845 == COMMON_CHAR || LA2_3845 == HEX_CHAR) ) { s = 3837; } else if ( (LA2_3845 == DIGIT) ) { s = 3838; } else if ( (LA2_3845 == DOT) ) { s = 3839; } else if ( (LA2_3845 == PERCENT) ) { s = 3840; } else if ( (LA2_3845 == COLON) ) { s = 3841; } else if ( (LA2_3845 == AT) ) { s = 2638; } else if ( (LA2_3845 == AND) ) { s = 3842; } else if ( (LA2_3845 == EQUAL) ) { s = 2640; } else if ( (LA2_3845 == PLUS) ) { s = 3843; } else if ( (LA2_3845 == DOLLARD) ) { s = 3844; } else if ( (LA2_3845 == COMMA) ) { s = 2643; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3845 == CRLF) ) { s = 205; } else if ( (LA2_3845 == DASH || LA2_3845 == EMARK || LA2_3845 == LPAREN || LA2_3845 == RPAREN || ((LA2_3845 >= SQUOTE) && (LA2_3845 <= USCORE))) ) { s = 3845; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3845 == LSBRAQUET || LA2_3845 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3845); if ( s>=0 ) { return s; } } break; case 520: { ANTLR3_UINT32 LA2_20; ANTLR3_MARKER index2_20; LA2_20 = LA(1); index2_20 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_20 == COLON) ) { s = 15; } else if ( (LA2_20 == COMMON_CHAR || LA2_20 == HEX_CHAR) ) { s = 16; } else if ( (LA2_20 == DIGIT) ) { s = 17; } else if ( (LA2_20 == DASH) ) { s = 18; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_20 == PERCENT) ) { s = 11; } else if ( (LA2_20 == PLUS) ) { s = 19; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_20 == BQUOTE) ) { s = 13; } else if ( (LA2_20 == DOT) ) { s = 20; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_20 == EMARK || LA2_20 == LPAREN || LA2_20 == RPAREN || ((LA2_20 >= SQUOTE) && (LA2_20 <= USCORE))) ) { s = 10; } SEEK(index2_20); if ( s>=0 ) { return s; } } break; case 521: { ANTLR3_UINT32 LA2_2812; ANTLR3_MARKER index2_2812; LA2_2812 = LA(1); index2_2812 = INDEX(); REWINDLAST(); s = -1; if ( (synpred1_belle_sip_message(ctx)) ) { s = 2437; } else if ( (synpred2_belle_sip_message(ctx)) ) { s = 1976; } SEEK(index2_2812); if ( s>=0 ) { return s; } } break; case 522: { ANTLR3_UINT32 LA2_3020; ANTLR3_MARKER index2_3020; LA2_3020 = LA(1); index2_3020 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3020 == SLASH) ) { s = 3319; } else if ( (LA2_3020 == QMARK) ) { s = 1751; } else if ( (LA2_3020 == SP) ) { s = 1585; } else if ( (LA2_3020 == CRLF) ) { s = 1588; } else if ( (LA2_3020 == SEMI) ) { s = 1749; } else if ( (LA2_3020 == COMMON_CHAR || LA2_3020 == HEX_CHAR) ) { s = 3015; } else if ( (LA2_3020 == DIGIT) ) { s = 3016; } else if ( (LA2_3020 == DOT) ) { s = 3017; } else if ( (LA2_3020 == PERCENT) ) { s = 3018; } else if ( (LA2_3020 == PLUS) ) { s = 3019; } else if ( (LA2_3020 == BQUOTE) ) { s = 2092; } else if ( (LA2_3020 == DASH || LA2_3020 == EMARK || LA2_3020 == LPAREN || LA2_3020 == RPAREN || ((LA2_3020 >= SQUOTE) && (LA2_3020 <= USCORE))) ) { s = 3020; } else if ( (LA2_3020 == AND || LA2_3020 == COLON || LA2_3020 == DOLLARD) ) { s = 2717; } else if ( (LA2_3020 == COMMA) ) { s = 506; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3020 == LSBRAQUET || LA2_3020 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_3020 == AT || LA2_3020 == EQUAL) ) { s = 508; } SEEK(index2_3020); if ( s>=0 ) { return s; } } break; case 523: { ANTLR3_UINT32 LA2_1263; ANTLR3_MARKER index2_1263; LA2_1263 = LA(1); index2_1263 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1263 == QMARK) ) { s = 854; } else if ( (LA2_1263 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1263 == CRLF) ) { s = 205; } else if ( (LA2_1263 == SEMI) ) { s = 853; } else if ( (LA2_1263 == DOT) ) { s = 1262; } else if ( (LA2_1263 == COMMON_CHAR || LA2_1263 == HEX_CHAR) ) { s = 1263; } else if ( (LA2_1263 == DIGIT) ) { s = 1264; } else if ( (LA2_1263 == SLASH) ) { s = 1271; } else if ( (LA2_1263 == DASH || LA2_1263 == EMARK || LA2_1263 == LPAREN || LA2_1263 == RPAREN || ((LA2_1263 >= SQUOTE) && (LA2_1263 <= USCORE))) ) { s = 1266; } else if ( (LA2_1263 == PERCENT) ) { s = 1267; } else if ( (LA2_1263 == EQUAL) ) { s = 1756; } else if ( (LA2_1263 == COLON) ) { s = 1265; } else if ( (LA2_1263 == AND) ) { s = 1268; } else if ( (LA2_1263 == AT) ) { s = 497; } else if ( (LA2_1263 == PLUS) ) { s = 1269; } else if ( (LA2_1263 == DOLLARD) ) { s = 1270; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1263 == LSBRAQUET || LA2_1263 == RSBRAQUET) ) { s = 405; } else if ( (LA2_1263 == COMMA) ) { s = 502; } SEEK(index2_1263); if ( s>=0 ) { return s; } } break; case 524: { ANTLR3_UINT32 LA2_2832; ANTLR3_MARKER index2_2832; LA2_2832 = LA(1); index2_2832 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2832 == SLASH) ) { s = 3153; } else if ( (LA2_2832 == QMARK) ) { s = 854; } else if ( (LA2_2832 == SP) ) { s = 1585; } else if ( (LA2_2832 == SEMI) ) { s = 1583; } else if ( (LA2_2832 == COMMON_CHAR || LA2_2832 == HEX_CHAR) ) { s = 2831; } else if ( (LA2_2832 == DIGIT) ) { s = 2832; } else if ( (LA2_2832 == DOT) ) { s = 2833; } else if ( (LA2_2832 == PERCENT) ) { s = 2834; } else if ( (LA2_2832 == COLON) ) { s = 2835; } else if ( (LA2_2832 == AT) ) { s = 1123; } else if ( (LA2_2832 == AND) ) { s = 2836; } else if ( (LA2_2832 == EQUAL) ) { s = 1125; } else if ( (LA2_2832 == PLUS) ) { s = 2837; } else if ( (LA2_2832 == DOLLARD) ) { s = 2838; } else if ( (LA2_2832 == COMMA) ) { s = 1128; } else if ( (LA2_2832 == CRLF) ) { s = 1588; } else if ( (LA2_2832 == BQUOTE) ) { s = 2092; } else if ( (LA2_2832 == DASH || LA2_2832 == EMARK || LA2_2832 == LPAREN || LA2_2832 == RPAREN || ((LA2_2832 >= SQUOTE) && (LA2_2832 <= USCORE))) ) { s = 2839; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2832 == LSBRAQUET || LA2_2832 == RSBRAQUET) ) { s = 1080; } SEEK(index2_2832); if ( s>=0 ) { return s; } } break; case 525: { ANTLR3_UINT32 LA2_2835; ANTLR3_MARKER index2_2835; LA2_2835 = LA(1); index2_2835 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2835 == SLASH) ) { s = 2830; } else if ( (LA2_2835 == QMARK) ) { s = 854; } else if ( (LA2_2835 == SP) ) { s = 204; } else if ( (LA2_2835 == SEMI) ) { s = 2011; } else if ( (LA2_2835 == COMMON_CHAR || LA2_2835 == HEX_CHAR) ) { s = 2844; } else if ( (LA2_2835 == DIGIT) ) { s = 2845; } else if ( (LA2_2835 == DOT) ) { s = 2846; } else if ( (LA2_2835 == PERCENT) ) { s = 2847; } else if ( (LA2_2835 == COLON) ) { s = 2835; } else if ( (LA2_2835 == AT) ) { s = 1123; } else if ( (LA2_2835 == AND) ) { s = 2836; } else if ( (LA2_2835 == EQUAL) ) { s = 1125; } else if ( (LA2_2835 == PLUS) ) { s = 2848; } else if ( (LA2_2835 == DOLLARD) ) { s = 2838; } else if ( (LA2_2835 == COMMA) ) { s = 1128; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2835 == CRLF) ) { s = 205; } else if ( (LA2_2835 == DASH || LA2_2835 == EMARK || LA2_2835 == LPAREN || LA2_2835 == RPAREN || ((LA2_2835 >= SQUOTE) && (LA2_2835 <= USCORE))) ) { s = 2849; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2835 == LSBRAQUET || LA2_2835 == RSBRAQUET) ) { s = 1080; } SEEK(index2_2835); if ( s>=0 ) { return s; } } break; case 526: { ANTLR3_UINT32 LA2_3144; ANTLR3_MARKER index2_3144; LA2_3144 = LA(1); index2_3144 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3144 == SEMI) ) { s = 3151; } else if ( (LA2_3144 == QMARK) ) { s = 854; } else if ( (LA2_3144 == SP) ) { s = 204; } else if ( (LA2_3144 == SLASH) ) { s = 2827; } else if ( (LA2_3144 == COMMON_CHAR || LA2_3144 == HEX_CHAR) ) { s = 3142; } else if ( (LA2_3144 == DIGIT) ) { s = 3143; } else if ( (LA2_3144 == DOT) ) { s = 3144; } else if ( (LA2_3144 == PERCENT) ) { s = 3145; } else if ( (LA2_3144 == COLON) ) { s = 3146; } else if ( (LA2_3144 == AT) ) { s = 2504; } else if ( (LA2_3144 == AND) ) { s = 3147; } else if ( (LA2_3144 == EQUAL) ) { s = 3148; } else if ( (LA2_3144 == PLUS) ) { s = 3149; } else if ( (LA2_3144 == DOLLARD) ) { s = 3150; } else if ( (LA2_3144 == COMMA) ) { s = 2509; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3144 == CRLF) ) { s = 205; } else if ( (LA2_3144 == DASH || LA2_3144 == EMARK || LA2_3144 == LPAREN || LA2_3144 == RPAREN || ((LA2_3144 >= SQUOTE) && (LA2_3144 <= USCORE))) ) { s = 3152; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3144 == LSBRAQUET || LA2_3144 == RSBRAQUET) ) { s = 405; } SEEK(index2_3144); if ( s>=0 ) { return s; } } break; case 527: { ANTLR3_UINT32 LA2_3513; ANTLR3_MARKER index2_3513; LA2_3513 = LA(1); index2_3513 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3513 == SLASH) ) { s = 3678; } else if ( (LA2_3513 == QMARK) ) { s = 854; } else if ( (LA2_3513 == SP) ) { s = 1585; } else if ( (LA2_3513 == CRLF) ) { s = 1588; } else if ( (LA2_3513 == SEMI) ) { s = 2587; } else if ( (LA2_3513 == COMMON_CHAR || LA2_3513 == HEX_CHAR) ) { s = 3512; } else if ( (LA2_3513 == DIGIT) ) { s = 3513; } else if ( (LA2_3513 == DOT) ) { s = 3514; } else if ( (LA2_3513 == PERCENT) ) { s = 3515; } else if ( (LA2_3513 == PLUS) ) { s = 3516; } else if ( (LA2_3513 == BQUOTE) ) { s = 2092; } else if ( (LA2_3513 == COLON) ) { s = 3517; } else if ( (LA2_3513 == AT) ) { s = 2111; } else if ( (LA2_3513 == AND) ) { s = 3518; } else if ( (LA2_3513 == EQUAL) ) { s = 2113; } else if ( (LA2_3513 == DOLLARD) ) { s = 3519; } else if ( (LA2_3513 == COMMA) ) { s = 2116; } else if ( (LA2_3513 == DASH || LA2_3513 == EMARK || LA2_3513 == LPAREN || LA2_3513 == RPAREN || ((LA2_3513 >= SQUOTE) && (LA2_3513 <= USCORE))) ) { s = 3520; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3513 == LSBRAQUET || LA2_3513 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3513); if ( s>=0 ) { return s; } } break; case 528: { ANTLR3_UINT32 LA2_2836; ANTLR3_MARKER index2_2836; LA2_2836 = LA(1); index2_2836 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2836 == SLASH) ) { s = 2830; } else if ( (LA2_2836 == QMARK) ) { s = 854; } else if ( (LA2_2836 == SP) ) { s = 204; } else if ( (LA2_2836 == SEMI) ) { s = 2011; } else if ( (LA2_2836 == COMMON_CHAR || LA2_2836 == HEX_CHAR) ) { s = 2844; } else if ( (LA2_2836 == DIGIT) ) { s = 2845; } else if ( (LA2_2836 == DOT) ) { s = 2846; } else if ( (LA2_2836 == PERCENT) ) { s = 2847; } else if ( (LA2_2836 == COLON) ) { s = 2835; } else if ( (LA2_2836 == AT) ) { s = 1123; } else if ( (LA2_2836 == AND) ) { s = 2836; } else if ( (LA2_2836 == EQUAL) ) { s = 1125; } else if ( (LA2_2836 == PLUS) ) { s = 2848; } else if ( (LA2_2836 == DOLLARD) ) { s = 2838; } else if ( (LA2_2836 == COMMA) ) { s = 1128; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2836 == CRLF) ) { s = 205; } else if ( (LA2_2836 == DASH || LA2_2836 == EMARK || LA2_2836 == LPAREN || LA2_2836 == RPAREN || ((LA2_2836 >= SQUOTE) && (LA2_2836 <= USCORE))) ) { s = 2849; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2836 == LSBRAQUET || LA2_2836 == RSBRAQUET) ) { s = 1080; } SEEK(index2_2836); if ( s>=0 ) { return s; } } break; case 529: { ANTLR3_UINT32 LA2_3126; ANTLR3_MARKER index2_3126; LA2_3126 = LA(1); index2_3126 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3126 == SEMI) ) { s = 2826; } else if ( (LA2_3126 == QMARK) ) { s = 854; } else if ( (LA2_3126 == SP) ) { s = 204; } else if ( (LA2_3126 == SLASH) ) { s = 3123; } else if ( (LA2_3126 == COMMON_CHAR || LA2_3126 == HEX_CHAR) ) { s = 3124; } else if ( (LA2_3126 == DIGIT) ) { s = 3125; } else if ( (LA2_3126 == DOT) ) { s = 3126; } else if ( (LA2_3126 == PERCENT) ) { s = 3127; } else if ( (LA2_3126 == COLON) ) { s = 3128; } else if ( (LA2_3126 == AT) ) { s = 2019; } else if ( (LA2_3126 == AND) ) { s = 3129; } else if ( (LA2_3126 == EQUAL) ) { s = 2021; } else if ( (LA2_3126 == PLUS) ) { s = 3130; } else if ( (LA2_3126 == DOLLARD) ) { s = 3131; } else if ( (LA2_3126 == COMMA) ) { s = 2024; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3126 == CRLF) ) { s = 205; } else if ( (LA2_3126 == DASH || LA2_3126 == EMARK || LA2_3126 == LPAREN || LA2_3126 == RPAREN || ((LA2_3126 >= SQUOTE) && (LA2_3126 <= USCORE))) ) { s = 3132; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3126 == LSBRAQUET || LA2_3126 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3126); if ( s>=0 ) { return s; } } break; case 530: { ANTLR3_UINT32 LA2_3325; ANTLR3_MARKER index2_3325; LA2_3325 = LA(1); index2_3325 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3325 == SEMI) ) { s = 3030; } else if ( (LA2_3325 == SLASH) ) { s = 3323; } else if ( (LA2_3325 == QMARK) ) { s = 1751; } else if ( (LA2_3325 == SP) ) { s = 204; } else if ( (LA2_3325 == COMMON_CHAR || LA2_3325 == HEX_CHAR) ) { s = 3324; } else if ( (LA2_3325 == DIGIT) ) { s = 3325; } else if ( (LA2_3325 == DOT) ) { s = 3326; } else if ( (LA2_3325 == PERCENT) ) { s = 3327; } else if ( (LA2_3325 == COLON) ) { s = 3328; } else if ( (LA2_3325 == AT) ) { s = 2229; } else if ( (LA2_3325 == AND) ) { s = 3329; } else if ( (LA2_3325 == EQUAL) ) { s = 2231; } else if ( (LA2_3325 == PLUS) ) { s = 3330; } else if ( (LA2_3325 == DOLLARD) ) { s = 3331; } else if ( (LA2_3325 == COMMA) ) { s = 2234; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3325 == CRLF) ) { s = 205; } else if ( (LA2_3325 == DASH || LA2_3325 == EMARK || LA2_3325 == LPAREN || LA2_3325 == RPAREN || ((LA2_3325 >= SQUOTE) && (LA2_3325 <= USCORE))) ) { s = 3332; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3325 == LSBRAQUET || LA2_3325 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3325); if ( s>=0 ) { return s; } } break; case 531: { ANTLR3_UINT32 LA2_2848; ANTLR3_MARKER index2_2848; LA2_2848 = LA(1); index2_2848 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2848 == SLASH) ) { s = 2830; } else if ( (LA2_2848 == QMARK) ) { s = 854; } else if ( (LA2_2848 == SP) ) { s = 204; } else if ( (LA2_2848 == SEMI) ) { s = 2011; } else if ( (LA2_2848 == COMMON_CHAR || LA2_2848 == HEX_CHAR) ) { s = 2844; } else if ( (LA2_2848 == DIGIT) ) { s = 2845; } else if ( (LA2_2848 == DOT) ) { s = 2846; } else if ( (LA2_2848 == PERCENT) ) { s = 2847; } else if ( (LA2_2848 == COLON) ) { s = 2835; } else if ( (LA2_2848 == AT) ) { s = 1123; } else if ( (LA2_2848 == AND) ) { s = 2836; } else if ( (LA2_2848 == EQUAL) ) { s = 1125; } else if ( (LA2_2848 == PLUS) ) { s = 2848; } else if ( (LA2_2848 == DOLLARD) ) { s = 2838; } else if ( (LA2_2848 == COMMA) ) { s = 1128; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2848 == CRLF) ) { s = 205; } else if ( (LA2_2848 == DASH || LA2_2848 == EMARK || LA2_2848 == LPAREN || LA2_2848 == RPAREN || ((LA2_2848 >= SQUOTE) && (LA2_2848 <= USCORE))) ) { s = 2849; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2848 == LSBRAQUET || LA2_2848 == RSBRAQUET) ) { s = 1080; } SEEK(index2_2848); if ( s>=0 ) { return s; } } break; case 532: { ANTLR3_UINT32 LA2_2903; ANTLR3_MARKER index2_2903; LA2_2903 = LA(1); index2_2903 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2903 == QMARK) ) { s = 242; } else if ( (LA2_2903 == SP) ) { s = 35; } else if ( (LA2_2903 == SLASH) ) { s = 2830; } else if ( (LA2_2903 == SEMI) ) { s = 1140; } else if ( (LA2_2903 == COMMON_CHAR || LA2_2903 == HEX_CHAR) ) { s = 3211; } else if ( (LA2_2903 == DIGIT) ) { s = 3212; } else if ( (LA2_2903 == DOT) ) { s = 3213; } else if ( (LA2_2903 == PERCENT) ) { s = 3214; } else if ( (LA2_2903 == COLON) ) { s = 3204; } else if ( (LA2_2903 == AT) ) { s = 1576; } else if ( (LA2_2903 == AND) ) { s = 3205; } else if ( (LA2_2903 == EQUAL) ) { s = 1578; } else if ( (LA2_2903 == PLUS) ) { s = 3215; } else if ( (LA2_2903 == DOLLARD) ) { s = 3207; } else if ( (LA2_2903 == COMMA) ) { s = 1581; } else if ( (LA2_2903 == DASH || LA2_2903 == EMARK || LA2_2903 == LPAREN || LA2_2903 == RPAREN || ((LA2_2903 >= SQUOTE) && (LA2_2903 <= USCORE))) ) { s = 3216; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2903 == LSBRAQUET || LA2_2903 == RSBRAQUET) ) { s = 1080; } SEEK(index2_2903); if ( s>=0 ) { return s; } } break; case 533: { ANTLR3_UINT32 LA2_1060; ANTLR3_MARKER index2_1060; LA2_1060 = LA(1); index2_1060 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1060 == QMARK) ) { s = 694; } else if ( (LA2_1060 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1060 == CRLF) ) { s = 205; } else if ( (LA2_1060 == SEMI) ) { s = 693; } else if ( (LA2_1060 == DOT) ) { s = 1057; } else if ( (LA2_1060 == COMMON_CHAR || LA2_1060 == HEX_CHAR) ) { s = 1058; } else if ( (LA2_1060 == DIGIT) ) { s = 1059; } else if ( (LA2_1060 == AND || LA2_1060 == COLON || LA2_1060 == DOLLARD || LA2_1060 == PLUS || LA2_1060 == SLASH) ) { s = 708; } else if ( (LA2_1060 == DASH || LA2_1060 == EMARK || LA2_1060 == LPAREN || LA2_1060 == RPAREN || ((LA2_1060 >= SQUOTE) && (LA2_1060 <= USCORE))) ) { s = 1060; } else if ( (LA2_1060 == PERCENT) ) { s = 1061; } else if ( (LA2_1060 == EQUAL) ) { s = 1081; } else if ( (LA2_1060 == COMMA) ) { s = 106; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1060 == LSBRAQUET || LA2_1060 == RSBRAQUET) ) { s = 405; } else if ( (LA2_1060 == AT) ) { s = 108; } SEEK(index2_1060); if ( s>=0 ) { return s; } } break; case 534: { ANTLR3_UINT32 LA2_3022; ANTLR3_MARKER index2_3022; LA2_3022 = LA(1); index2_3022 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3022 == SEMI) ) { s = 3030; } else if ( (LA2_3022 == SLASH) ) { s = 3031; } else if ( (LA2_3022 == QMARK) ) { s = 1751; } else if ( (LA2_3022 == SP) ) { s = 204; } else if ( (LA2_3022 == COMMON_CHAR || LA2_3022 == HEX_CHAR) ) { s = 3021; } else if ( (LA2_3022 == DIGIT) ) { s = 3022; } else if ( (LA2_3022 == DOT) ) { s = 3023; } else if ( (LA2_3022 == PERCENT) ) { s = 3024; } else if ( (LA2_3022 == COLON) ) { s = 3025; } else if ( (LA2_3022 == AT) ) { s = 2229; } else if ( (LA2_3022 == AND) ) { s = 3026; } else if ( (LA2_3022 == EQUAL) ) { s = 3027; } else if ( (LA2_3022 == PLUS) ) { s = 3028; } else if ( (LA2_3022 == DOLLARD) ) { s = 3029; } else if ( (LA2_3022 == COMMA) ) { s = 2234; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3022 == CRLF) ) { s = 205; } else if ( (LA2_3022 == DASH || LA2_3022 == EMARK || LA2_3022 == LPAREN || LA2_3022 == RPAREN || ((LA2_3022 >= SQUOTE) && (LA2_3022 <= USCORE))) ) { s = 3032; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3022 == LSBRAQUET || LA2_3022 == RSBRAQUET) ) { s = 405; } SEEK(index2_3022); if ( s>=0 ) { return s; } } break; case 535: { ANTLR3_UINT32 LA2_2838; ANTLR3_MARKER index2_2838; LA2_2838 = LA(1); index2_2838 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2838 == SLASH) ) { s = 2830; } else if ( (LA2_2838 == QMARK) ) { s = 854; } else if ( (LA2_2838 == SP) ) { s = 204; } else if ( (LA2_2838 == SEMI) ) { s = 2011; } else if ( (LA2_2838 == COMMON_CHAR || LA2_2838 == HEX_CHAR) ) { s = 2844; } else if ( (LA2_2838 == DIGIT) ) { s = 2845; } else if ( (LA2_2838 == DOT) ) { s = 2846; } else if ( (LA2_2838 == PERCENT) ) { s = 2847; } else if ( (LA2_2838 == COLON) ) { s = 2835; } else if ( (LA2_2838 == AT) ) { s = 1123; } else if ( (LA2_2838 == AND) ) { s = 2836; } else if ( (LA2_2838 == EQUAL) ) { s = 1125; } else if ( (LA2_2838 == PLUS) ) { s = 2848; } else if ( (LA2_2838 == DOLLARD) ) { s = 2838; } else if ( (LA2_2838 == COMMA) ) { s = 1128; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2838 == CRLF) ) { s = 205; } else if ( (LA2_2838 == DASH || LA2_2838 == EMARK || LA2_2838 == LPAREN || LA2_2838 == RPAREN || ((LA2_2838 >= SQUOTE) && (LA2_2838 <= USCORE))) ) { s = 2849; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2838 == LSBRAQUET || LA2_2838 == RSBRAQUET) ) { s = 1080; } SEEK(index2_2838); if ( s>=0 ) { return s; } } break; case 536: { ANTLR3_UINT32 LA2_3364; ANTLR3_MARKER index2_3364; LA2_3364 = LA(1); index2_3364 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3364 == SP) ) { s = 35; } else if ( (LA2_3364 == AND) ) { s = 2268; } else if ( (LA2_3364 == QMARK) ) { s = 3359; } else if ( (LA2_3364 == COMMON_CHAR || LA2_3364 == HEX_CHAR) ) { s = 3360; } else if ( (LA2_3364 == DIGIT) ) { s = 3361; } else if ( (LA2_3364 == DASH || LA2_3364 == DOT || LA2_3364 == EMARK || LA2_3364 == LPAREN || LA2_3364 == RPAREN || ((LA2_3364 >= SQUOTE) && (LA2_3364 <= USCORE))) ) { s = 3362; } else if ( (LA2_3364 == PERCENT) ) { s = 3363; } else if ( (LA2_3364 == SEMI) ) { s = 505; } else if ( (LA2_3364 == COMMA) ) { s = 506; } else if ( (LA2_3364 == COLON || LA2_3364 == DOLLARD || LA2_3364 == PLUS || LA2_3364 == SLASH) ) { s = 3364; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3364 == LSBRAQUET || LA2_3364 == RSBRAQUET) ) { s = 2437; } else if ( (LA2_3364 == AT || LA2_3364 == EQUAL) ) { s = 508; } SEEK(index2_3364); if ( s>=0 ) { return s; } } break; case 537: { ANTLR3_UINT32 LA2_1109; ANTLR3_MARKER index2_1109; LA2_1109 = LA(1); index2_1109 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1109 == COLON) ) { s = 1106; } else if ( (LA2_1109 == AT) ) { s = 89; } else if ( (LA2_1109 == COMMON_CHAR || LA2_1109 == HEX_CHAR) ) { s = 1107; } else if ( (LA2_1109 == DIGIT) ) { s = 1108; } else if ( (LA2_1109 == DASH || LA2_1109 == DOT || LA2_1109 == EMARK || LA2_1109 == LPAREN || LA2_1109 == RPAREN || ((LA2_1109 >= SQUOTE) && (LA2_1109 <= USCORE))) ) { s = 1109; } else if ( (LA2_1109 == PERCENT) ) { s = 1110; } else if ( (LA2_1109 == AND) ) { s = 1112; } else if ( (LA2_1109 == QMARK) ) { s = 1111; } else if ( (LA2_1109 == SP) ) { s = 35; } else if ( (LA2_1109 == SEMI) ) { s = 94; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1109 == LSBRAQUET || LA2_1109 == RSBRAQUET) ) { s = 1104; } else if ( (LA2_1109 == COMMA) ) { s = 97; } else if ( (LA2_1109 == EQUAL) ) { s = 99; } else if ( (LA2_1109 == DOLLARD || LA2_1109 == PLUS || LA2_1109 == SLASH) ) { s = 1113; } SEEK(index2_1109); if ( s>=0 ) { return s; } } break; case 538: { ANTLR3_UINT32 LA2_1776; ANTLR3_MARKER index2_1776; LA2_1776 = LA(1); index2_1776 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1776 == COMMON_CHAR || LA2_1776 == HEX_CHAR) ) { s = 1775; } else if ( (LA2_1776 == DIGIT) ) { s = 1776; } else if ( (LA2_1776 == DASH) ) { s = 1777; } else if ( (LA2_1776 == DOT) ) { s = 2275; } else if ( (LA2_1776 == COLON) ) { s = 2276; } else if ( (LA2_1776 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1776 == CRLF) ) { s = 205; } else if ( (LA2_1776 == SEMI) ) { s = 1237; } else if ( (LA2_1776 == QMARK) ) { s = 854; } else if ( (LA2_1776 == SLASH) ) { s = 241; } else if ( (LA2_1776 == EMARK || LA2_1776 == LPAREN || LA2_1776 == RPAREN || ((LA2_1776 >= SQUOTE) && (LA2_1776 <= USCORE))) ) { s = 807; } else if ( (LA2_1776 == PERCENT) ) { s = 808; } else if ( (LA2_1776 == AT) ) { s = 810; } else if ( (LA2_1776 == AND) ) { s = 811; } else if ( (LA2_1776 == EQUAL) ) { s = 812; } else if ( (LA2_1776 == PLUS) ) { s = 813; } else if ( (LA2_1776 == DOLLARD) ) { s = 814; } else if ( (LA2_1776 == COMMA) ) { s = 815; } SEEK(index2_1776); if ( s>=0 ) { return s; } } break; case 539: { ANTLR3_UINT32 LA2_2844; ANTLR3_MARKER index2_2844; LA2_2844 = LA(1); index2_2844 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2844 == SLASH) ) { s = 2830; } else if ( (LA2_2844 == QMARK) ) { s = 854; } else if ( (LA2_2844 == SP) ) { s = 204; } else if ( (LA2_2844 == SEMI) ) { s = 2011; } else if ( (LA2_2844 == COMMON_CHAR || LA2_2844 == HEX_CHAR) ) { s = 2844; } else if ( (LA2_2844 == DIGIT) ) { s = 2845; } else if ( (LA2_2844 == DOT) ) { s = 2846; } else if ( (LA2_2844 == PERCENT) ) { s = 2847; } else if ( (LA2_2844 == COLON) ) { s = 2835; } else if ( (LA2_2844 == AT) ) { s = 1123; } else if ( (LA2_2844 == AND) ) { s = 2836; } else if ( (LA2_2844 == EQUAL) ) { s = 1125; } else if ( (LA2_2844 == PLUS) ) { s = 2848; } else if ( (LA2_2844 == DOLLARD) ) { s = 2838; } else if ( (LA2_2844 == COMMA) ) { s = 1128; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2844 == CRLF) ) { s = 205; } else if ( (LA2_2844 == DASH || LA2_2844 == EMARK || LA2_2844 == LPAREN || LA2_2844 == RPAREN || ((LA2_2844 >= SQUOTE) && (LA2_2844 <= USCORE))) ) { s = 2849; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2844 == LSBRAQUET || LA2_2844 == RSBRAQUET) ) { s = 1080; } SEEK(index2_2844); if ( s>=0 ) { return s; } } break; case 540: { ANTLR3_UINT32 LA2_2928; ANTLR3_MARKER index2_2928; LA2_2928 = LA(1); index2_2928 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2928 == COMMON_CHAR || LA2_2928 == HEX_CHAR) ) { s = 3242; } else if ( (LA2_2928 == DIGIT) ) { s = 3243; } else if ( (LA2_2928 == DOT) ) { s = 3244; } else if ( (LA2_2928 == PERCENT) ) { s = 3245; } else if ( (LA2_2928 == COLON) ) { s = 3246; } else if ( (LA2_2928 == AT) ) { s = 2122; } else if ( (LA2_2928 == AND) ) { s = 3247; } else if ( (LA2_2928 == EQUAL) ) { s = 3248; } else if ( (LA2_2928 == PLUS) ) { s = 3249; } else if ( (LA2_2928 == DOLLARD) ) { s = 3250; } else if ( (LA2_2928 == COMMA) ) { s = 2127; } else if ( (LA2_2928 == SEMI) ) { s = 3251; } else if ( (LA2_2928 == QMARK) ) { s = 854; } else if ( (LA2_2928 == SP) ) { s = 204; } else if ( (LA2_2928 == SLASH) ) { s = 2928; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2928 == CRLF) ) { s = 205; } else if ( (LA2_2928 == DASH || LA2_2928 == EMARK || LA2_2928 == LPAREN || LA2_2928 == RPAREN || ((LA2_2928 >= SQUOTE) && (LA2_2928 <= USCORE))) ) { s = 3252; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2928 == LSBRAQUET || LA2_2928 == RSBRAQUET) ) { s = 405; } SEEK(index2_2928); if ( s>=0 ) { return s; } } break; case 541: { ANTLR3_UINT32 LA2_3121; ANTLR3_MARKER index2_3121; LA2_3121 = LA(1); index2_3121 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3121 == COLON) ) { s = 2445; } else if ( (LA2_3121 == AT) ) { s = 89; } else if ( (LA2_3121 == COMMON_CHAR || LA2_3121 == HEX_CHAR) ) { s = 2446; } else if ( (LA2_3121 == DIGIT) ) { s = 2447; } else if ( (LA2_3121 == DASH || LA2_3121 == DOT || LA2_3121 == EMARK || LA2_3121 == LPAREN || LA2_3121 == RPAREN || ((LA2_3121 >= SQUOTE) && (LA2_3121 <= USCORE))) ) { s = 2448; } else if ( (LA2_3121 == PERCENT) ) { s = 2449; } else if ( (LA2_3121 == AND) ) { s = 1112; } else if ( (LA2_3121 == SP) ) { s = 35; } else if ( (LA2_3121 == QMARK) ) { s = 2450; } else if ( (LA2_3121 == SEMI) ) { s = 94; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3121 == LSBRAQUET || LA2_3121 == RSBRAQUET) ) { s = 2437; } else if ( (LA2_3121 == COMMA) ) { s = 97; } else if ( (LA2_3121 == EQUAL) ) { s = 99; } else if ( (LA2_3121 == DOLLARD || LA2_3121 == PLUS || LA2_3121 == SLASH) ) { s = 2451; } SEEK(index2_3121); if ( s>=0 ) { return s; } } break; case 542: { ANTLR3_UINT32 LA2_3143; ANTLR3_MARKER index2_3143; LA2_3143 = LA(1); index2_3143 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3143 == SEMI) ) { s = 3151; } else if ( (LA2_3143 == QMARK) ) { s = 854; } else if ( (LA2_3143 == SP) ) { s = 204; } else if ( (LA2_3143 == SLASH) ) { s = 2827; } else if ( (LA2_3143 == COMMON_CHAR || LA2_3143 == HEX_CHAR) ) { s = 3142; } else if ( (LA2_3143 == DIGIT) ) { s = 3143; } else if ( (LA2_3143 == DOT) ) { s = 3144; } else if ( (LA2_3143 == PERCENT) ) { s = 3145; } else if ( (LA2_3143 == COLON) ) { s = 3146; } else if ( (LA2_3143 == AT) ) { s = 2504; } else if ( (LA2_3143 == AND) ) { s = 3147; } else if ( (LA2_3143 == EQUAL) ) { s = 3148; } else if ( (LA2_3143 == PLUS) ) { s = 3149; } else if ( (LA2_3143 == DOLLARD) ) { s = 3150; } else if ( (LA2_3143 == COMMA) ) { s = 2509; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3143 == CRLF) ) { s = 205; } else if ( (LA2_3143 == DASH || LA2_3143 == EMARK || LA2_3143 == LPAREN || LA2_3143 == RPAREN || ((LA2_3143 >= SQUOTE) && (LA2_3143 <= USCORE))) ) { s = 3152; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3143 == LSBRAQUET || LA2_3143 == RSBRAQUET) ) { s = 405; } SEEK(index2_3143); if ( s>=0 ) { return s; } } break; case 543: { ANTLR3_UINT32 LA2_3407; ANTLR3_MARKER index2_3407; LA2_3407 = LA(1); index2_3407 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3407 == SEMI) ) { s = 3151; } else if ( (LA2_3407 == QMARK) ) { s = 854; } else if ( (LA2_3407 == SP) ) { s = 204; } else if ( (LA2_3407 == SLASH) ) { s = 3123; } else if ( (LA2_3407 == COMMON_CHAR || LA2_3407 == HEX_CHAR) ) { s = 3406; } else if ( (LA2_3407 == DIGIT) ) { s = 3407; } else if ( (LA2_3407 == DOT) ) { s = 3408; } else if ( (LA2_3407 == PERCENT) ) { s = 3409; } else if ( (LA2_3407 == COLON) ) { s = 3410; } else if ( (LA2_3407 == AT) ) { s = 2504; } else if ( (LA2_3407 == AND) ) { s = 3411; } else if ( (LA2_3407 == EQUAL) ) { s = 2506; } else if ( (LA2_3407 == PLUS) ) { s = 3412; } else if ( (LA2_3407 == DOLLARD) ) { s = 3413; } else if ( (LA2_3407 == COMMA) ) { s = 2509; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3407 == CRLF) ) { s = 205; } else if ( (LA2_3407 == DASH || LA2_3407 == EMARK || LA2_3407 == LPAREN || LA2_3407 == RPAREN || ((LA2_3407 >= SQUOTE) && (LA2_3407 <= USCORE))) ) { s = 3414; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3407 == LSBRAQUET || LA2_3407 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3407); if ( s>=0 ) { return s; } } break; case 544: { ANTLR3_UINT32 LA2_3435; ANTLR3_MARKER index2_3435; LA2_3435 = LA(1); index2_3435 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3435 == COMMON_CHAR || LA2_3435 == HEX_CHAR) ) { s = 3633; } else if ( (LA2_3435 == DIGIT) ) { s = 3634; } else if ( (LA2_3435 == DOT) ) { s = 3635; } else if ( (LA2_3435 == PERCENT) ) { s = 3636; } else if ( (LA2_3435 == COLON) ) { s = 3637; } else if ( (LA2_3435 == AT) ) { s = 2195; } else if ( (LA2_3435 == AND) ) { s = 3638; } else if ( (LA2_3435 == EQUAL) ) { s = 2197; } else if ( (LA2_3435 == PLUS) ) { s = 3639; } else if ( (LA2_3435 == DOLLARD) ) { s = 3640; } else if ( (LA2_3435 == COMMA) ) { s = 2200; } else if ( (LA2_3435 == SEMI) ) { s = 3463; } else if ( (LA2_3435 == QMARK) ) { s = 854; } else if ( (LA2_3435 == SP) ) { s = 204; } else if ( (LA2_3435 == SLASH) ) { s = 3435; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3435 == CRLF) ) { s = 205; } else if ( (LA2_3435 == DASH || LA2_3435 == EMARK || LA2_3435 == LPAREN || LA2_3435 == RPAREN || ((LA2_3435 >= SQUOTE) && (LA2_3435 <= USCORE))) ) { s = 3641; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3435 == LSBRAQUET || LA2_3435 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3435); if ( s>=0 ) { return s; } } break; case 545: { ANTLR3_UINT32 LA2_2281; ANTLR3_MARKER index2_2281; LA2_2281 = LA(1); index2_2281 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2281 == DOT) ) { s = 2282; } else if ( (LA2_2281 == COLON) ) { s = 1298; } else if ( (LA2_2281 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2281 == CRLF) ) { s = 205; } else if ( (LA2_2281 == SEMI) ) { s = 853; } else if ( (LA2_2281 == QMARK) ) { s = 854; } else if ( (LA2_2281 == DASH) ) { s = 876; } else if ( (LA2_2281 == COMMON_CHAR || LA2_2281 == HEX_CHAR) ) { s = 874; } else if ( (LA2_2281 == DIGIT) ) { s = 875; } else if ( (LA2_2281 == SLASH) ) { s = 241; } else if ( (LA2_2281 == EMARK || LA2_2281 == LPAREN || LA2_2281 == RPAREN || ((LA2_2281 >= SQUOTE) && (LA2_2281 <= USCORE))) ) { s = 494; } else if ( (LA2_2281 == PERCENT) ) { s = 495; } else if ( (LA2_2281 == AT) ) { s = 497; } else if ( (LA2_2281 == AND) ) { s = 498; } else if ( (LA2_2281 == EQUAL) ) { s = 499; } else if ( (LA2_2281 == PLUS) ) { s = 500; } else if ( (LA2_2281 == DOLLARD) ) { s = 501; } else if ( (LA2_2281 == COMMA) ) { s = 502; } SEEK(index2_2281); if ( s>=0 ) { return s; } } break; case 546: { ANTLR3_UINT32 LA2_3060; ANTLR3_MARKER index2_3060; LA2_3060 = LA(1); index2_3060 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3060 == DOT) ) { s = 3061; } else if ( (LA2_3060 == COLON) ) { s = 1298; } else if ( (LA2_3060 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3060 == CRLF) ) { s = 205; } else if ( (LA2_3060 == SEMI) ) { s = 853; } else if ( (LA2_3060 == QMARK) ) { s = 854; } else if ( (LA2_3060 == DASH) ) { s = 876; } else if ( (LA2_3060 == COMMON_CHAR || LA2_3060 == HEX_CHAR) ) { s = 874; } else if ( (LA2_3060 == DIGIT) ) { s = 875; } else if ( (LA2_3060 == SLASH) ) { s = 241; } else if ( (LA2_3060 == EMARK || LA2_3060 == LPAREN || LA2_3060 == RPAREN || ((LA2_3060 >= SQUOTE) && (LA2_3060 <= USCORE))) ) { s = 494; } else if ( (LA2_3060 == PERCENT) ) { s = 495; } else if ( (LA2_3060 == AT) ) { s = 497; } else if ( (LA2_3060 == AND) ) { s = 498; } else if ( (LA2_3060 == EQUAL) ) { s = 499; } else if ( (LA2_3060 == PLUS) ) { s = 500; } else if ( (LA2_3060 == DOLLARD) ) { s = 501; } else if ( (LA2_3060 == COMMA) ) { s = 502; } SEEK(index2_3060); if ( s>=0 ) { return s; } } break; case 547: { ANTLR3_UINT32 LA2_1300; ANTLR3_MARKER index2_1300; LA2_1300 = LA(1); index2_1300 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1300 == DOT) ) { s = 1301; } else if ( (LA2_1300 == COMMON_CHAR || LA2_1300 == HEX_CHAR) ) { s = 874; } else if ( (LA2_1300 == DIGIT) ) { s = 875; } else if ( (LA2_1300 == DASH) ) { s = 876; } else if ( (LA2_1300 == COLON) ) { s = 1298; } else if ( (LA2_1300 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1300 == CRLF) ) { s = 205; } else if ( (LA2_1300 == SEMI) ) { s = 853; } else if ( (LA2_1300 == QMARK) ) { s = 854; } else if ( (LA2_1300 == SLASH) ) { s = 241; } else if ( (LA2_1300 == EMARK || LA2_1300 == LPAREN || LA2_1300 == RPAREN || ((LA2_1300 >= SQUOTE) && (LA2_1300 <= USCORE))) ) { s = 494; } else if ( (LA2_1300 == PERCENT) ) { s = 495; } else if ( (LA2_1300 == AT) ) { s = 497; } else if ( (LA2_1300 == AND) ) { s = 498; } else if ( (LA2_1300 == EQUAL) ) { s = 499; } else if ( (LA2_1300 == PLUS) ) { s = 500; } else if ( (LA2_1300 == DOLLARD) ) { s = 501; } else if ( (LA2_1300 == COMMA) ) { s = 502; } SEEK(index2_1300); if ( s>=0 ) { return s; } } break; case 548: { ANTLR3_UINT32 LA2_3596; ANTLR3_MARKER index2_3596; LA2_3596 = LA(1); index2_3596 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3596 == COLON) ) { s = 1298; } else if ( (LA2_3596 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3596 == CRLF) ) { s = 205; } else if ( (LA2_3596 == SEMI) ) { s = 853; } else if ( (LA2_3596 == QMARK) ) { s = 854; } else if ( (LA2_3596 == DOT) ) { s = 1297; } else if ( (LA2_3596 == DASH) ) { s = 876; } else if ( (LA2_3596 == COMMON_CHAR || LA2_3596 == HEX_CHAR) ) { s = 874; } else if ( (LA2_3596 == DIGIT) ) { s = 875; } else if ( (LA2_3596 == SLASH) ) { s = 241; } else if ( (LA2_3596 == EMARK || LA2_3596 == LPAREN || LA2_3596 == RPAREN || ((LA2_3596 >= SQUOTE) && (LA2_3596 <= USCORE))) ) { s = 494; } else if ( (LA2_3596 == PERCENT) ) { s = 495; } else if ( (LA2_3596 == AT) ) { s = 497; } else if ( (LA2_3596 == AND) ) { s = 498; } else if ( (LA2_3596 == EQUAL) ) { s = 499; } else if ( (LA2_3596 == PLUS) ) { s = 500; } else if ( (LA2_3596 == DOLLARD) ) { s = 501; } else if ( (LA2_3596 == COMMA) ) { s = 502; } SEEK(index2_3596); if ( s>=0 ) { return s; } } break; case 549: { ANTLR3_UINT32 LA2_2511; ANTLR3_MARKER index2_2511; LA2_2511 = LA(1); index2_2511 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2511 == CRLF) ) { s = 2012; } else if ( (LA2_2511 == SP) ) { s = 2480; } else if ( (LA2_2511 == COMMON_CHAR || LA2_2511 == HEX_CHAR) ) { s = 2885; } else if ( (LA2_2511 == DIGIT) ) { s = 2481; } else if ( (LA2_2511 == DOT) ) { s = 2482; } else if ( (LA2_2511 == PERCENT) ) { s = 2483; } else if ( (LA2_2511 == PLUS) ) { s = 2484; } else if ( (LA2_2511 == BQUOTE) ) { s = 1203; } else if ( (LA2_2511 == DASH || LA2_2511 == EMARK || LA2_2511 == LPAREN || LA2_2511 == RPAREN || ((LA2_2511 >= SQUOTE) && (LA2_2511 <= USCORE))) ) { s = 2485; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2511 == AND || LA2_2511 == COLON || LA2_2511 == DOLLARD || LA2_2511 == LSBRAQUET || LA2_2511 == RSBRAQUET || LA2_2511 == SLASH) ) { s = 405; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2511 == SEMI) ) { s = 407; } SEEK(index2_2511); if ( s>=0 ) { return s; } } break; case 550: { ANTLR3_UINT32 LA2_1308; ANTLR3_MARKER index2_1308; LA2_1308 = LA(1); index2_1308 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1308 == QMARK) ) { s = 1272; } else if ( (LA2_1308 == COMMON_CHAR || LA2_1308 == HEX_CHAR) ) { s = 1273; } else if ( (LA2_1308 == DIGIT) ) { s = 1274; } else if ( (LA2_1308 == DASH || LA2_1308 == DOT || LA2_1308 == EMARK || LA2_1308 == LPAREN || LA2_1308 == RPAREN || ((LA2_1308 >= SQUOTE) && (LA2_1308 <= USCORE))) ) { s = 1275; } else if ( (LA2_1308 == PERCENT) ) { s = 1276; } else if ( (LA2_1308 == SP) ) { s = 35; } else if ( (LA2_1308 == SEMI) ) { s = 505; } else if ( (LA2_1308 == COMMA) ) { s = 506; } else if ( (LA2_1308 == COLON || LA2_1308 == DOLLARD || LA2_1308 == PLUS || LA2_1308 == SLASH) ) { s = 1277; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1308 == LSBRAQUET || LA2_1308 == RSBRAQUET) ) { s = 414; } else if ( (((LA2_1308 >= AND) && (LA2_1308 <= AT)) || LA2_1308 == EQUAL) ) { s = 508; } SEEK(index2_1308); if ( s>=0 ) { return s; } } break; case 551: { ANTLR3_UINT32 LA2_3570; ANTLR3_MARKER index2_3570; LA2_3570 = LA(1); index2_3570 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3570 == SEMI) ) { s = 3351; } else if ( (LA2_3570 == QMARK) ) { s = 1751; } else if ( (LA2_3570 == SP) ) { s = 204; } else if ( (LA2_3570 == SLASH) ) { s = 3323; } else if ( (LA2_3570 == COMMON_CHAR || LA2_3570 == HEX_CHAR) ) { s = 3568; } else if ( (LA2_3570 == DIGIT) ) { s = 3569; } else if ( (LA2_3570 == DOT) ) { s = 3570; } else if ( (LA2_3570 == PERCENT) ) { s = 3571; } else if ( (LA2_3570 == COLON) ) { s = 3572; } else if ( (LA2_3570 == AT) ) { s = 2684; } else if ( (LA2_3570 == AND) ) { s = 3573; } else if ( (LA2_3570 == EQUAL) ) { s = 2686; } else if ( (LA2_3570 == PLUS) ) { s = 3574; } else if ( (LA2_3570 == DOLLARD) ) { s = 3575; } else if ( (LA2_3570 == COMMA) ) { s = 2689; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3570 == CRLF) ) { s = 205; } else if ( (LA2_3570 == DASH || LA2_3570 == EMARK || LA2_3570 == LPAREN || LA2_3570 == RPAREN || ((LA2_3570 >= SQUOTE) && (LA2_3570 <= USCORE))) ) { s = 3576; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3570 == LSBRAQUET || LA2_3570 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3570); if ( s>=0 ) { return s; } } break; case 552: { ANTLR3_UINT32 LA2_2817; ANTLR3_MARKER index2_2817; LA2_2817 = LA(1); index2_2817 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2817 == SEMI) ) { s = 2826; } else if ( (LA2_2817 == QMARK) ) { s = 854; } else if ( (LA2_2817 == SP) ) { s = 204; } else if ( (LA2_2817 == SLASH) ) { s = 2827; } else if ( (LA2_2817 == COMMON_CHAR || LA2_2817 == HEX_CHAR) ) { s = 2817; } else if ( (LA2_2817 == DIGIT) ) { s = 2818; } else if ( (LA2_2817 == DOT) ) { s = 2819; } else if ( (LA2_2817 == PERCENT) ) { s = 2820; } else if ( (LA2_2817 == COLON) ) { s = 2821; } else if ( (LA2_2817 == AT) ) { s = 2019; } else if ( (LA2_2817 == AND) ) { s = 2822; } else if ( (LA2_2817 == EQUAL) ) { s = 2823; } else if ( (LA2_2817 == PLUS) ) { s = 2824; } else if ( (LA2_2817 == DOLLARD) ) { s = 2825; } else if ( (LA2_2817 == COMMA) ) { s = 2024; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2817 == CRLF) ) { s = 205; } else if ( (LA2_2817 == DASH || LA2_2817 == EMARK || LA2_2817 == LPAREN || LA2_2817 == RPAREN || ((LA2_2817 >= SQUOTE) && (LA2_2817 <= USCORE))) ) { s = 2828; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2817 == LSBRAQUET || LA2_2817 == RSBRAQUET) ) { s = 405; } SEEK(index2_2817); if ( s>=0 ) { return s; } } break; case 553: { ANTLR3_UINT32 LA2_3202; ANTLR3_MARKER index2_3202; LA2_3202 = LA(1); index2_3202 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3202 == QMARK) ) { s = 854; } else if ( (LA2_3202 == SP) ) { s = 1585; } else if ( (LA2_3202 == SLASH) ) { s = 3153; } else if ( (LA2_3202 == SEMI) ) { s = 2051; } else if ( (LA2_3202 == COMMON_CHAR || LA2_3202 == HEX_CHAR) ) { s = 3200; } else if ( (LA2_3202 == DIGIT) ) { s = 3201; } else if ( (LA2_3202 == DOT) ) { s = 3202; } else if ( (LA2_3202 == PERCENT) ) { s = 3203; } else if ( (LA2_3202 == COLON) ) { s = 3204; } else if ( (LA2_3202 == AT) ) { s = 1576; } else if ( (LA2_3202 == AND) ) { s = 3205; } else if ( (LA2_3202 == EQUAL) ) { s = 1578; } else if ( (LA2_3202 == PLUS) ) { s = 3206; } else if ( (LA2_3202 == DOLLARD) ) { s = 3207; } else if ( (LA2_3202 == COMMA) ) { s = 1581; } else if ( (LA2_3202 == CRLF) ) { s = 1588; } else if ( (LA2_3202 == BQUOTE) ) { s = 2092; } else if ( (LA2_3202 == DASH || LA2_3202 == EMARK || LA2_3202 == LPAREN || LA2_3202 == RPAREN || ((LA2_3202 >= SQUOTE) && (LA2_3202 <= USCORE))) ) { s = 3208; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3202 == LSBRAQUET || LA2_3202 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3202); if ( s>=0 ) { return s; } } break; case 554: { ANTLR3_UINT32 LA2_3489; ANTLR3_MARKER index2_3489; LA2_3489 = LA(1); index2_3489 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3489 == SLASH) ) { s = 3222; } else if ( (LA2_3489 == QMARK) ) { s = 854; } else if ( (LA2_3489 == SP) ) { s = 1585; } else if ( (LA2_3489 == CRLF) ) { s = 1588; } else if ( (LA2_3489 == SEMI) ) { s = 1630; } else if ( (LA2_3489 == COMMON_CHAR || LA2_3489 == HEX_CHAR) ) { s = 2912; } else if ( (LA2_3489 == DIGIT) ) { s = 2913; } else if ( (LA2_3489 == DOT) ) { s = 2914; } else if ( (LA2_3489 == PERCENT) ) { s = 2915; } else if ( (LA2_3489 == PLUS) ) { s = 2916; } else if ( (LA2_3489 == BQUOTE) ) { s = 2092; } else if ( (LA2_3489 == DASH || LA2_3489 == EMARK || LA2_3489 == LPAREN || LA2_3489 == RPAREN || ((LA2_3489 >= SQUOTE) && (LA2_3489 <= USCORE))) ) { s = 2917; } else if ( (LA2_3489 == COLON) ) { s = 2653; } else if ( (LA2_3489 == AND) ) { s = 2654; } else if ( (LA2_3489 == AT) ) { s = 810; } else if ( (LA2_3489 == DOLLARD) ) { s = 2656; } else if ( (LA2_3489 == EQUAL) ) { s = 812; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3489 == LSBRAQUET || LA2_3489 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_3489 == COMMA) ) { s = 815; } SEEK(index2_3489); if ( s>=0 ) { return s; } } break; case 555: { ANTLR3_UINT32 LA2_3158; ANTLR3_MARKER index2_3158; LA2_3158 = LA(1); index2_3158 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3158 == SEMI) ) { s = 2477; } else if ( (LA2_3158 == QMARK) ) { s = 854; } else if ( (LA2_3158 == SP) ) { s = 204; } else if ( (LA2_3158 == SLASH) ) { s = 2009; } else if ( (LA2_3158 == COMMON_CHAR || LA2_3158 == HEX_CHAR) ) { s = 2468; } else if ( (LA2_3158 == DIGIT) ) { s = 2469; } else if ( (LA2_3158 == DOT) ) { s = 2470; } else if ( (LA2_3158 == PERCENT) ) { s = 2471; } else if ( (LA2_3158 == COLON) ) { s = 2472; } else if ( (LA2_3158 == AT) ) { s = 1134; } else if ( (LA2_3158 == AND) ) { s = 2473; } else if ( (LA2_3158 == EQUAL) ) { s = 2474; } else if ( (LA2_3158 == PLUS) ) { s = 2475; } else if ( (LA2_3158 == DOLLARD) ) { s = 2476; } else if ( (LA2_3158 == COMMA) ) { s = 1139; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3158 == CRLF) ) { s = 205; } else if ( (LA2_3158 == DASH || LA2_3158 == EMARK || LA2_3158 == LPAREN || LA2_3158 == RPAREN || ((LA2_3158 >= SQUOTE) && (LA2_3158 <= USCORE))) ) { s = 2478; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3158 == LSBRAQUET || LA2_3158 == RSBRAQUET) ) { s = 405; } SEEK(index2_3158); if ( s>=0 ) { return s; } } break; case 556: { ANTLR3_UINT32 LA2_1272; ANTLR3_MARKER index2_1272; LA2_1272 = LA(1); index2_1272 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1272 == EQUAL) ) { s = 1768; } else if ( (LA2_1272 == QMARK) ) { s = 1272; } else if ( (LA2_1272 == COMMON_CHAR || LA2_1272 == HEX_CHAR) ) { s = 1273; } else if ( (LA2_1272 == DIGIT) ) { s = 1274; } else if ( (LA2_1272 == DASH || LA2_1272 == DOT || LA2_1272 == EMARK || LA2_1272 == LPAREN || LA2_1272 == RPAREN || ((LA2_1272 >= SQUOTE) && (LA2_1272 <= USCORE))) ) { s = 1275; } else if ( (LA2_1272 == PERCENT) ) { s = 1276; } else if ( (LA2_1272 == SP) ) { s = 35; } else if ( (LA2_1272 == SEMI) ) { s = 505; } else if ( (LA2_1272 == COMMA) ) { s = 506; } else if ( (LA2_1272 == COLON || LA2_1272 == DOLLARD || LA2_1272 == PLUS || LA2_1272 == SLASH) ) { s = 1277; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1272 == LSBRAQUET || LA2_1272 == RSBRAQUET) ) { s = 414; } else if ( (((LA2_1272 >= AND) && (LA2_1272 <= AT))) ) { s = 508; } SEEK(index2_1272); if ( s>=0 ) { return s; } } break; case 557: { ANTLR3_UINT32 LA2_2698; ANTLR3_MARKER index2_2698; LA2_2698 = LA(1); index2_2698 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2698 == EQUAL) ) { s = 3054; } else if ( (LA2_2698 == QMARK) ) { s = 2698; } else if ( (LA2_2698 == COMMON_CHAR || LA2_2698 == HEX_CHAR) ) { s = 2699; } else if ( (LA2_2698 == DIGIT) ) { s = 2700; } else if ( (LA2_2698 == DASH || LA2_2698 == DOT || LA2_2698 == EMARK || LA2_2698 == LPAREN || LA2_2698 == RPAREN || ((LA2_2698 >= SQUOTE) && (LA2_2698 <= USCORE))) ) { s = 2701; } else if ( (LA2_2698 == PERCENT) ) { s = 2702; } else if ( (LA2_2698 == SP) ) { s = 35; } else if ( (LA2_2698 == SEMI) ) { s = 505; } else if ( (LA2_2698 == COMMA) ) { s = 506; } else if ( (LA2_2698 == COLON || LA2_2698 == DOLLARD || LA2_2698 == PLUS || LA2_2698 == SLASH) ) { s = 2703; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2698 == LSBRAQUET || LA2_2698 == RSBRAQUET) ) { s = 1552; } else if ( (((LA2_2698 >= AND) && (LA2_2698 <= AT))) ) { s = 508; } SEEK(index2_2698); if ( s>=0 ) { return s; } } break; case 558: { ANTLR3_UINT32 LA2_3132; ANTLR3_MARKER index2_3132; LA2_3132 = LA(1); index2_3132 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3132 == SEMI) ) { s = 2826; } else if ( (LA2_3132 == QMARK) ) { s = 854; } else if ( (LA2_3132 == SP) ) { s = 204; } else if ( (LA2_3132 == SLASH) ) { s = 3123; } else if ( (LA2_3132 == COMMON_CHAR || LA2_3132 == HEX_CHAR) ) { s = 3124; } else if ( (LA2_3132 == DIGIT) ) { s = 3125; } else if ( (LA2_3132 == DOT) ) { s = 3126; } else if ( (LA2_3132 == PERCENT) ) { s = 3127; } else if ( (LA2_3132 == COLON) ) { s = 3128; } else if ( (LA2_3132 == AT) ) { s = 2019; } else if ( (LA2_3132 == AND) ) { s = 3129; } else if ( (LA2_3132 == EQUAL) ) { s = 2021; } else if ( (LA2_3132 == PLUS) ) { s = 3130; } else if ( (LA2_3132 == DOLLARD) ) { s = 3131; } else if ( (LA2_3132 == COMMA) ) { s = 2024; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3132 == CRLF) ) { s = 205; } else if ( (LA2_3132 == DASH || LA2_3132 == EMARK || LA2_3132 == LPAREN || LA2_3132 == RPAREN || ((LA2_3132 >= SQUOTE) && (LA2_3132 <= USCORE))) ) { s = 3132; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3132 == LSBRAQUET || LA2_3132 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3132); if ( s>=0 ) { return s; } } break; case 559: { ANTLR3_UINT32 LA2_2003; ANTLR3_MARKER index2_2003; LA2_2003 = LA(1); index2_2003 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2003 == SLASH) ) { s = 2455; } else if ( (LA2_2003 == QMARK) ) { s = 854; } else if ( (LA2_2003 == SP) ) { s = 2456; } else if ( (LA2_2003 == SEMI) ) { s = 1583; } else if ( (LA2_2003 == COMMON_CHAR || LA2_2003 == HEX_CHAR) ) { s = 2001; } else if ( (LA2_2003 == DIGIT) ) { s = 2002; } else if ( (LA2_2003 == DOT) ) { s = 2003; } else if ( (LA2_2003 == PERCENT) ) { s = 2004; } else if ( (LA2_2003 == COLON) ) { s = 2005; } else if ( (LA2_2003 == AT) ) { s = 1123; } else if ( (LA2_2003 == AND) ) { s = 2006; } else if ( (LA2_2003 == EQUAL) ) { s = 2457; } else if ( (LA2_2003 == PLUS) ) { s = 2007; } else if ( (LA2_2003 == DOLLARD) ) { s = 2008; } else if ( (LA2_2003 == COMMA) ) { s = 1128; } else if ( (LA2_2003 == CRLF) ) { s = 2458; } else if ( (LA2_2003 == BQUOTE) ) { s = 1203; } else if ( (LA2_2003 == DASH || LA2_2003 == EMARK || LA2_2003 == LPAREN || LA2_2003 == RPAREN || ((LA2_2003 >= SQUOTE) && (LA2_2003 <= USCORE))) ) { s = 2013; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2003 == LSBRAQUET || LA2_2003 == RSBRAQUET) ) { s = 405; } SEEK(index2_2003); if ( s>=0 ) { return s; } } break; case 560: { ANTLR3_UINT32 LA2_2710; ANTLR3_MARKER index2_2710; LA2_2710 = LA(1); index2_2710 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2710 == DIGIT) ) { s = 3057; } else if ( (LA2_2710 == DOT) ) { s = 3058; } else if ( (LA2_2710 == COLON) ) { s = 2276; } else if ( (LA2_2710 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2710 == CRLF) ) { s = 205; } else if ( (LA2_2710 == SEMI) ) { s = 1237; } else if ( (LA2_2710 == QMARK) ) { s = 854; } else if ( (LA2_2710 == DASH) ) { s = 1777; } else if ( (LA2_2710 == COMMON_CHAR || LA2_2710 == HEX_CHAR) ) { s = 1775; } else if ( (LA2_2710 == SLASH) ) { s = 241; } else if ( (LA2_2710 == EMARK || LA2_2710 == LPAREN || LA2_2710 == RPAREN || ((LA2_2710 >= SQUOTE) && (LA2_2710 <= USCORE))) ) { s = 807; } else if ( (LA2_2710 == PERCENT) ) { s = 808; } else if ( (LA2_2710 == AT) ) { s = 810; } else if ( (LA2_2710 == AND) ) { s = 811; } else if ( (LA2_2710 == EQUAL) ) { s = 812; } else if ( (LA2_2710 == PLUS) ) { s = 813; } else if ( (LA2_2710 == DOLLARD) ) { s = 814; } else if ( (LA2_2710 == COMMA) ) { s = 815; } SEEK(index2_2710); if ( s>=0 ) { return s; } } break; case 561: { ANTLR3_UINT32 LA2_3367; ANTLR3_MARKER index2_3367; LA2_3367 = LA(1); index2_3367 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3367 == DIGIT) ) { s = 3593; } else if ( (LA2_3367 == DOT) ) { s = 3594; } else if ( (LA2_3367 == COLON) ) { s = 2276; } else if ( (LA2_3367 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3367 == CRLF) ) { s = 205; } else if ( (LA2_3367 == SEMI) ) { s = 1237; } else if ( (LA2_3367 == QMARK) ) { s = 854; } else if ( (LA2_3367 == DASH) ) { s = 1777; } else if ( (LA2_3367 == COMMON_CHAR || LA2_3367 == HEX_CHAR) ) { s = 1775; } else if ( (LA2_3367 == SLASH) ) { s = 241; } else if ( (LA2_3367 == EMARK || LA2_3367 == LPAREN || LA2_3367 == RPAREN || ((LA2_3367 >= SQUOTE) && (LA2_3367 <= USCORE))) ) { s = 807; } else if ( (LA2_3367 == PERCENT) ) { s = 808; } else if ( (LA2_3367 == AT) ) { s = 810; } else if ( (LA2_3367 == AND) ) { s = 811; } else if ( (LA2_3367 == EQUAL) ) { s = 812; } else if ( (LA2_3367 == PLUS) ) { s = 813; } else if ( (LA2_3367 == DOLLARD) ) { s = 814; } else if ( (LA2_3367 == COMMA) ) { s = 815; } SEEK(index2_3367); if ( s>=0 ) { return s; } } break; case 562: { ANTLR3_UINT32 LA2_3709; ANTLR3_MARKER index2_3709; LA2_3709 = LA(1); index2_3709 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3709 == SLASH) ) { s = 3678; } else if ( (LA2_3709 == QMARK) ) { s = 854; } else if ( (LA2_3709 == SP) ) { s = 1585; } else if ( (LA2_3709 == CRLF) ) { s = 1588; } else if ( (LA2_3709 == SEMI) ) { s = 2986; } else if ( (LA2_3709 == COMMON_CHAR || LA2_3709 == HEX_CHAR) ) { s = 3707; } else if ( (LA2_3709 == DIGIT) ) { s = 3708; } else if ( (LA2_3709 == DOT) ) { s = 3709; } else if ( (LA2_3709 == PERCENT) ) { s = 3710; } else if ( (LA2_3709 == PLUS) ) { s = 3711; } else if ( (LA2_3709 == BQUOTE) ) { s = 2092; } else if ( (LA2_3709 == COLON) ) { s = 3712; } else if ( (LA2_3709 == AT) ) { s = 2578; } else if ( (LA2_3709 == AND) ) { s = 3713; } else if ( (LA2_3709 == EQUAL) ) { s = 2580; } else if ( (LA2_3709 == DOLLARD) ) { s = 3714; } else if ( (LA2_3709 == COMMA) ) { s = 2583; } else if ( (LA2_3709 == DASH || LA2_3709 == EMARK || LA2_3709 == LPAREN || LA2_3709 == RPAREN || ((LA2_3709 >= SQUOTE) && (LA2_3709 <= USCORE))) ) { s = 3715; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3709 == LSBRAQUET || LA2_3709 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3709); if ( s>=0 ) { return s; } } break; case 563: { ANTLR3_UINT32 LA2_1778; ANTLR3_MARKER index2_1778; LA2_1778 = LA(1); index2_1778 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1778 == DIGIT) ) { s = 2278; } else if ( (LA2_1778 == DOT) ) { s = 2279; } else if ( (LA2_1778 == COMMON_CHAR || LA2_1778 == HEX_CHAR) ) { s = 1775; } else if ( (LA2_1778 == DASH) ) { s = 1777; } else if ( (LA2_1778 == COLON) ) { s = 2276; } else if ( (LA2_1778 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1778 == CRLF) ) { s = 205; } else if ( (LA2_1778 == SEMI) ) { s = 1237; } else if ( (LA2_1778 == QMARK) ) { s = 854; } else if ( (LA2_1778 == SLASH) ) { s = 241; } else if ( (LA2_1778 == EMARK || LA2_1778 == LPAREN || LA2_1778 == RPAREN || ((LA2_1778 >= SQUOTE) && (LA2_1778 <= USCORE))) ) { s = 807; } else if ( (LA2_1778 == PERCENT) ) { s = 808; } else if ( (LA2_1778 == AT) ) { s = 810; } else if ( (LA2_1778 == AND) ) { s = 811; } else if ( (LA2_1778 == EQUAL) ) { s = 812; } else if ( (LA2_1778 == PLUS) ) { s = 813; } else if ( (LA2_1778 == DOLLARD) ) { s = 814; } else if ( (LA2_1778 == COMMA) ) { s = 815; } SEEK(index2_1778); if ( s>=0 ) { return s; } } break; case 564: { ANTLR3_UINT32 LA2_693; ANTLR3_MARKER index2_693; LA2_693 = LA(1); index2_693 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_693 == SP) ) { s = 402; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_693 == CRLF) ) { s = 403; } else if ( (LA2_693 == DOT) ) { s = 1057; } else if ( (LA2_693 == COMMON_CHAR || LA2_693 == HEX_CHAR) ) { s = 1058; } else if ( (LA2_693 == DIGIT) ) { s = 1059; } else if ( (LA2_693 == AND || LA2_693 == COLON || LA2_693 == DOLLARD || LA2_693 == PLUS || LA2_693 == SLASH) ) { s = 708; } else if ( (LA2_693 == DASH || LA2_693 == EMARK || LA2_693 == LPAREN || LA2_693 == RPAREN || ((LA2_693 >= SQUOTE) && (LA2_693 <= USCORE))) ) { s = 1060; } else if ( (LA2_693 == PERCENT) ) { s = 1061; } else if ( (LA2_693 == QMARK) ) { s = 694; } else if ( (LA2_693 == SEMI) ) { s = 693; } else if ( (LA2_693 == COMMA) ) { s = 106; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_693 == LSBRAQUET || LA2_693 == RSBRAQUET) ) { s = 405; } else if ( (LA2_693 == AT || LA2_693 == EQUAL) ) { s = 108; } SEEK(index2_693); if ( s>=0 ) { return s; } } break; case 565: { ANTLR3_UINT32 LA2_3749; ANTLR3_MARKER index2_3749; LA2_3749 = LA(1); index2_3749 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3749 == DIGIT) ) { s = 3829; } else if ( (LA2_3749 == COLON) ) { s = 2276; } else if ( (LA2_3749 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3749 == CRLF) ) { s = 205; } else if ( (LA2_3749 == SEMI) ) { s = 1237; } else if ( (LA2_3749 == QMARK) ) { s = 854; } else if ( (LA2_3749 == DOT) ) { s = 2275; } else if ( (LA2_3749 == DASH) ) { s = 1777; } else if ( (LA2_3749 == COMMON_CHAR || LA2_3749 == HEX_CHAR) ) { s = 1775; } else if ( (LA2_3749 == SLASH) ) { s = 241; } else if ( (LA2_3749 == EMARK || LA2_3749 == LPAREN || LA2_3749 == RPAREN || ((LA2_3749 >= SQUOTE) && (LA2_3749 <= USCORE))) ) { s = 807; } else if ( (LA2_3749 == PERCENT) ) { s = 808; } else if ( (LA2_3749 == AT) ) { s = 810; } else if ( (LA2_3749 == AND) ) { s = 811; } else if ( (LA2_3749 == EQUAL) ) { s = 812; } else if ( (LA2_3749 == PLUS) ) { s = 813; } else if ( (LA2_3749 == DOLLARD) ) { s = 814; } else if ( (LA2_3749 == COMMA) ) { s = 815; } SEEK(index2_3749); if ( s>=0 ) { return s; } } break; case 566: { ANTLR3_UINT32 LA2_2951; ANTLR3_MARKER index2_2951; LA2_2951 = LA(1); index2_2951 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2951 == SP) ) { s = 2456; } else if ( (LA2_2951 == CRLF) ) { s = 2458; } else if ( (LA2_2951 == EQUAL) ) { s = 3260; } else if ( (LA2_2951 == SLASH) ) { s = 3261; } else if ( (LA2_2951 == QMARK) ) { s = 854; } else if ( (LA2_2951 == SEMI) ) { s = 2587; } else if ( (LA2_2951 == COMMON_CHAR || LA2_2951 == HEX_CHAR) ) { s = 2949; } else if ( (LA2_2951 == DIGIT) ) { s = 2950; } else if ( (LA2_2951 == DOT) ) { s = 2951; } else if ( (LA2_2951 == PERCENT) ) { s = 2952; } else if ( (LA2_2951 == PLUS) ) { s = 2953; } else if ( (LA2_2951 == BQUOTE) ) { s = 1203; } else if ( (LA2_2951 == COLON) ) { s = 2954; } else if ( (LA2_2951 == AT) ) { s = 2111; } else if ( (LA2_2951 == AND) ) { s = 2955; } else if ( (LA2_2951 == DOLLARD) ) { s = 2956; } else if ( (LA2_2951 == COMMA) ) { s = 2116; } else if ( (LA2_2951 == DASH || LA2_2951 == EMARK || LA2_2951 == LPAREN || LA2_2951 == RPAREN || ((LA2_2951 >= SQUOTE) && (LA2_2951 <= USCORE))) ) { s = 2957; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2951 == LSBRAQUET || LA2_2951 == RSBRAQUET) ) { s = 405; } SEEK(index2_2951); if ( s>=0 ) { return s; } } break; case 567: { ANTLR3_UINT32 LA2_1978; ANTLR3_MARKER index2_1978; LA2_1978 = LA(1); index2_1978 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1978 == EQUAL) ) { s = 1105; } else if ( (LA2_1978 == QMARK) ) { s = 724; } else if ( (LA2_1978 == COMMON_CHAR || LA2_1978 == HEX_CHAR) ) { s = 1062; } else if ( (LA2_1978 == DIGIT) ) { s = 1063; } else if ( (LA2_1978 == DASH || LA2_1978 == DOT || LA2_1978 == EMARK || LA2_1978 == LPAREN || LA2_1978 == RPAREN || ((LA2_1978 >= SQUOTE) && (LA2_1978 <= USCORE))) ) { s = 1064; } else if ( (LA2_1978 == PERCENT) ) { s = 1065; } else if ( (LA2_1978 == SP) ) { s = 35; } else if ( (LA2_1978 == SEMI) ) { s = 105; } else if ( (LA2_1978 == COMMA) ) { s = 106; } else if ( (LA2_1978 == COLON || LA2_1978 == DOLLARD || LA2_1978 == PLUS || LA2_1978 == SLASH) ) { s = 725; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1978 == LSBRAQUET || LA2_1978 == RSBRAQUET) ) { s = 414; } else if ( (((LA2_1978 >= AND) && (LA2_1978 <= AT))) ) { s = 108; } SEEK(index2_1978); if ( s>=0 ) { return s; } } break; case 568: { ANTLR3_UINT32 LA2_2815; ANTLR3_MARKER index2_2815; LA2_2815 = LA(1); index2_2815 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2815 == EQUAL) ) { s = 1988; } else if ( (LA2_2815 == QMARK) ) { s = 1550; } else if ( (LA2_2815 == COMMON_CHAR || LA2_2815 == HEX_CHAR) ) { s = 1989; } else if ( (LA2_2815 == DIGIT) ) { s = 1990; } else if ( (LA2_2815 == DASH || LA2_2815 == DOT || LA2_2815 == EMARK || LA2_2815 == LPAREN || LA2_2815 == RPAREN || ((LA2_2815 >= SQUOTE) && (LA2_2815 <= USCORE))) ) { s = 1991; } else if ( (LA2_2815 == PERCENT) ) { s = 1992; } else if ( (LA2_2815 == SP) ) { s = 35; } else if ( (LA2_2815 == SEMI) ) { s = 105; } else if ( (LA2_2815 == COMMA) ) { s = 106; } else if ( (LA2_2815 == COLON || LA2_2815 == DOLLARD || LA2_2815 == PLUS || LA2_2815 == SLASH) ) { s = 1551; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2815 == LSBRAQUET || LA2_2815 == RSBRAQUET) ) { s = 1552; } else if ( (((LA2_2815 >= AND) && (LA2_2815 <= AT))) ) { s = 108; } SEEK(index2_2815); if ( s>=0 ) { return s; } } break; case 569: { ANTLR3_UINT32 LA2_1764; ANTLR3_MARKER index2_1764; LA2_1764 = LA(1); index2_1764 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1764 == DOT) ) { s = 2254; } else if ( (LA2_1764 == COMMON_CHAR || LA2_1764 == HEX_CHAR) ) { s = 2255; } else if ( (LA2_1764 == DIGIT) ) { s = 2256; } else if ( (LA2_1764 == SLASH) ) { s = 2245; } else if ( (LA2_1764 == DASH || LA2_1764 == EMARK || LA2_1764 == LPAREN || LA2_1764 == RPAREN || ((LA2_1764 >= SQUOTE) && (LA2_1764 <= USCORE))) ) { s = 2257; } else if ( (LA2_1764 == PERCENT) ) { s = 2258; } else if ( (LA2_1764 == SEMI) ) { s = 458; } else if ( (LA2_1764 == QMARK) ) { s = 242; } else if ( (LA2_1764 == SP) ) { s = 35; } else if ( (LA2_1764 == COLON) ) { s = 2259; } else if ( (LA2_1764 == AND) ) { s = 2260; } else if ( (LA2_1764 == AT) ) { s = 464; } else if ( (LA2_1764 == PLUS) ) { s = 2261; } else if ( (LA2_1764 == EQUAL) ) { s = 466; } else if ( (LA2_1764 == DOLLARD) ) { s = 2262; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1764 == LSBRAQUET || LA2_1764 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_1764 == COMMA) ) { s = 469; } SEEK(index2_1764); if ( s>=0 ) { return s; } } break; case 570: { ANTLR3_UINT32 LA2_3032; ANTLR3_MARKER index2_3032; LA2_3032 = LA(1); index2_3032 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3032 == SEMI) ) { s = 3030; } else if ( (LA2_3032 == SLASH) ) { s = 3031; } else if ( (LA2_3032 == QMARK) ) { s = 1751; } else if ( (LA2_3032 == SP) ) { s = 204; } else if ( (LA2_3032 == COMMON_CHAR || LA2_3032 == HEX_CHAR) ) { s = 3021; } else if ( (LA2_3032 == DIGIT) ) { s = 3022; } else if ( (LA2_3032 == DOT) ) { s = 3023; } else if ( (LA2_3032 == PERCENT) ) { s = 3024; } else if ( (LA2_3032 == COLON) ) { s = 3025; } else if ( (LA2_3032 == AT) ) { s = 2229; } else if ( (LA2_3032 == AND) ) { s = 3026; } else if ( (LA2_3032 == EQUAL) ) { s = 3027; } else if ( (LA2_3032 == PLUS) ) { s = 3028; } else if ( (LA2_3032 == DOLLARD) ) { s = 3029; } else if ( (LA2_3032 == COMMA) ) { s = 2234; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3032 == CRLF) ) { s = 205; } else if ( (LA2_3032 == DASH || LA2_3032 == EMARK || LA2_3032 == LPAREN || LA2_3032 == RPAREN || ((LA2_3032 >= SQUOTE) && (LA2_3032 <= USCORE))) ) { s = 3032; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3032 == LSBRAQUET || LA2_3032 == RSBRAQUET) ) { s = 405; } SEEK(index2_3032); if ( s>=0 ) { return s; } } break; case 571: { ANTLR3_UINT32 LA2_2922; ANTLR3_MARKER index2_2922; LA2_2922 = LA(1); index2_2922 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2922 == SEMI) ) { s = 2927; } else if ( (LA2_2922 == SLASH) ) { s = 2928; } else if ( (LA2_2922 == QMARK) ) { s = 854; } else if ( (LA2_2922 == SP) ) { s = 204; } else if ( (LA2_2922 == COMMON_CHAR || LA2_2922 == HEX_CHAR) ) { s = 2918; } else if ( (LA2_2922 == DIGIT) ) { s = 2919; } else if ( (LA2_2922 == DOT) ) { s = 2920; } else if ( (LA2_2922 == PERCENT) ) { s = 2921; } else if ( (LA2_2922 == COLON) ) { s = 2922; } else if ( (LA2_2922 == AT) ) { s = 1667; } else if ( (LA2_2922 == AND) ) { s = 2923; } else if ( (LA2_2922 == EQUAL) ) { s = 2924; } else if ( (LA2_2922 == PLUS) ) { s = 2925; } else if ( (LA2_2922 == DOLLARD) ) { s = 2926; } else if ( (LA2_2922 == COMMA) ) { s = 1672; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2922 == CRLF) ) { s = 205; } else if ( (LA2_2922 == DASH || LA2_2922 == EMARK || LA2_2922 == LPAREN || LA2_2922 == RPAREN || ((LA2_2922 >= SQUOTE) && (LA2_2922 <= USCORE))) ) { s = 2929; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2922 == LSBRAQUET || LA2_2922 == RSBRAQUET) ) { s = 405; } SEEK(index2_2922); if ( s>=0 ) { return s; } } break; case 572: { ANTLR3_UINT32 LA2_2916; ANTLR3_MARKER index2_2916; LA2_2916 = LA(1); index2_2916 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2916 == SLASH) ) { s = 3222; } else if ( (LA2_2916 == QMARK) ) { s = 854; } else if ( (LA2_2916 == SP) ) { s = 1585; } else if ( (LA2_2916 == CRLF) ) { s = 1588; } else if ( (LA2_2916 == SEMI) ) { s = 1630; } else if ( (LA2_2916 == COMMON_CHAR || LA2_2916 == HEX_CHAR) ) { s = 2912; } else if ( (LA2_2916 == DIGIT) ) { s = 2913; } else if ( (LA2_2916 == DOT) ) { s = 2914; } else if ( (LA2_2916 == PERCENT) ) { s = 2915; } else if ( (LA2_2916 == PLUS) ) { s = 2916; } else if ( (LA2_2916 == BQUOTE) ) { s = 2092; } else if ( (LA2_2916 == DASH || LA2_2916 == EMARK || LA2_2916 == LPAREN || LA2_2916 == RPAREN || ((LA2_2916 >= SQUOTE) && (LA2_2916 <= USCORE))) ) { s = 2917; } else if ( (LA2_2916 == COLON) ) { s = 2653; } else if ( (LA2_2916 == AND) ) { s = 2654; } else if ( (LA2_2916 == AT) ) { s = 810; } else if ( (LA2_2916 == DOLLARD) ) { s = 2656; } else if ( (LA2_2916 == EQUAL) ) { s = 812; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2916 == LSBRAQUET || LA2_2916 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_2916 == COMMA) ) { s = 815; } SEEK(index2_2916); if ( s>=0 ) { return s; } } break; case 573: { ANTLR3_UINT32 LA2_2923; ANTLR3_MARKER index2_2923; LA2_2923 = LA(1); index2_2923 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2923 == SEMI) ) { s = 2927; } else if ( (LA2_2923 == SLASH) ) { s = 2928; } else if ( (LA2_2923 == QMARK) ) { s = 854; } else if ( (LA2_2923 == SP) ) { s = 204; } else if ( (LA2_2923 == COMMON_CHAR || LA2_2923 == HEX_CHAR) ) { s = 2918; } else if ( (LA2_2923 == DIGIT) ) { s = 2919; } else if ( (LA2_2923 == DOT) ) { s = 2920; } else if ( (LA2_2923 == PERCENT) ) { s = 2921; } else if ( (LA2_2923 == COLON) ) { s = 2922; } else if ( (LA2_2923 == AT) ) { s = 1667; } else if ( (LA2_2923 == AND) ) { s = 2923; } else if ( (LA2_2923 == EQUAL) ) { s = 2924; } else if ( (LA2_2923 == PLUS) ) { s = 2925; } else if ( (LA2_2923 == DOLLARD) ) { s = 2926; } else if ( (LA2_2923 == COMMA) ) { s = 1672; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2923 == CRLF) ) { s = 205; } else if ( (LA2_2923 == DASH || LA2_2923 == EMARK || LA2_2923 == LPAREN || LA2_2923 == RPAREN || ((LA2_2923 >= SQUOTE) && (LA2_2923 <= USCORE))) ) { s = 2929; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2923 == LSBRAQUET || LA2_2923 == RSBRAQUET) ) { s = 405; } SEEK(index2_2923); if ( s>=0 ) { return s; } } break; case 574: { ANTLR3_UINT32 LA2_2926; ANTLR3_MARKER index2_2926; LA2_2926 = LA(1); index2_2926 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2926 == SEMI) ) { s = 2927; } else if ( (LA2_2926 == SLASH) ) { s = 2928; } else if ( (LA2_2926 == QMARK) ) { s = 854; } else if ( (LA2_2926 == SP) ) { s = 204; } else if ( (LA2_2926 == COMMON_CHAR || LA2_2926 == HEX_CHAR) ) { s = 2918; } else if ( (LA2_2926 == DIGIT) ) { s = 2919; } else if ( (LA2_2926 == DOT) ) { s = 2920; } else if ( (LA2_2926 == PERCENT) ) { s = 2921; } else if ( (LA2_2926 == COLON) ) { s = 2922; } else if ( (LA2_2926 == AT) ) { s = 1667; } else if ( (LA2_2926 == AND) ) { s = 2923; } else if ( (LA2_2926 == EQUAL) ) { s = 2924; } else if ( (LA2_2926 == PLUS) ) { s = 2925; } else if ( (LA2_2926 == DOLLARD) ) { s = 2926; } else if ( (LA2_2926 == COMMA) ) { s = 1672; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2926 == CRLF) ) { s = 205; } else if ( (LA2_2926 == DASH || LA2_2926 == EMARK || LA2_2926 == LPAREN || LA2_2926 == RPAREN || ((LA2_2926 >= SQUOTE) && (LA2_2926 <= USCORE))) ) { s = 2929; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2926 == LSBRAQUET || LA2_2926 == RSBRAQUET) ) { s = 405; } SEEK(index2_2926); if ( s>=0 ) { return s; } } break; case 575: { ANTLR3_UINT32 LA2_2925; ANTLR3_MARKER index2_2925; LA2_2925 = LA(1); index2_2925 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2925 == SEMI) ) { s = 2927; } else if ( (LA2_2925 == SLASH) ) { s = 2928; } else if ( (LA2_2925 == QMARK) ) { s = 854; } else if ( (LA2_2925 == SP) ) { s = 204; } else if ( (LA2_2925 == COMMON_CHAR || LA2_2925 == HEX_CHAR) ) { s = 2918; } else if ( (LA2_2925 == DIGIT) ) { s = 2919; } else if ( (LA2_2925 == DOT) ) { s = 2920; } else if ( (LA2_2925 == PERCENT) ) { s = 2921; } else if ( (LA2_2925 == COLON) ) { s = 2922; } else if ( (LA2_2925 == AT) ) { s = 1667; } else if ( (LA2_2925 == AND) ) { s = 2923; } else if ( (LA2_2925 == EQUAL) ) { s = 2924; } else if ( (LA2_2925 == PLUS) ) { s = 2925; } else if ( (LA2_2925 == DOLLARD) ) { s = 2926; } else if ( (LA2_2925 == COMMA) ) { s = 1672; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2925 == CRLF) ) { s = 205; } else if ( (LA2_2925 == DASH || LA2_2925 == EMARK || LA2_2925 == LPAREN || LA2_2925 == RPAREN || ((LA2_2925 >= SQUOTE) && (LA2_2925 <= USCORE))) ) { s = 2929; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2925 == LSBRAQUET || LA2_2925 == RSBRAQUET) ) { s = 405; } SEEK(index2_2925); if ( s>=0 ) { return s; } } break; case 576: { ANTLR3_UINT32 LA2_3431; ANTLR3_MARKER index2_3431; LA2_3431 = LA(1); index2_3431 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3431 == SEMI) ) { s = 2477; } else if ( (LA2_3431 == QMARK) ) { s = 854; } else if ( (LA2_3431 == SP) ) { s = 204; } else if ( (LA2_3431 == SLASH) ) { s = 2830; } else if ( (LA2_3431 == COMMON_CHAR || LA2_3431 == HEX_CHAR) ) { s = 2851; } else if ( (LA2_3431 == DIGIT) ) { s = 2852; } else if ( (LA2_3431 == DOT) ) { s = 2853; } else if ( (LA2_3431 == PERCENT) ) { s = 2854; } else if ( (LA2_3431 == COLON) ) { s = 2855; } else if ( (LA2_3431 == AT) ) { s = 1134; } else if ( (LA2_3431 == AND) ) { s = 2856; } else if ( (LA2_3431 == EQUAL) ) { s = 1136; } else if ( (LA2_3431 == PLUS) ) { s = 2857; } else if ( (LA2_3431 == DOLLARD) ) { s = 2858; } else if ( (LA2_3431 == COMMA) ) { s = 1139; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3431 == CRLF) ) { s = 205; } else if ( (LA2_3431 == DASH || LA2_3431 == EMARK || LA2_3431 == LPAREN || LA2_3431 == RPAREN || ((LA2_3431 >= SQUOTE) && (LA2_3431 <= USCORE))) ) { s = 2859; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3431 == LSBRAQUET || LA2_3431 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3431); if ( s>=0 ) { return s; } } break; case 577: { ANTLR3_UINT32 LA2_2717; ANTLR3_MARKER index2_2717; LA2_2717 = LA(1); index2_2717 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2717 == QMARK) ) { s = 1308; } else if ( (LA2_2717 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2717 == CRLF) ) { s = 205; } else if ( (LA2_2717 == SEMI) ) { s = 1307; } else if ( (LA2_2717 == DOT) ) { s = 2714; } else if ( (LA2_2717 == COMMON_CHAR || LA2_2717 == HEX_CHAR) ) { s = 2715; } else if ( (LA2_2717 == DIGIT) ) { s = 2716; } else if ( (LA2_2717 == AND || LA2_2717 == COLON || LA2_2717 == DOLLARD || LA2_2717 == PLUS || LA2_2717 == SLASH) ) { s = 2717; } else if ( (LA2_2717 == DASH || LA2_2717 == EMARK || LA2_2717 == LPAREN || LA2_2717 == RPAREN || ((LA2_2717 >= SQUOTE) && (LA2_2717 <= USCORE))) ) { s = 2718; } else if ( (LA2_2717 == PERCENT) ) { s = 2719; } else if ( (LA2_2717 == COMMA) ) { s = 506; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2717 == LSBRAQUET || LA2_2717 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_2717 == AT || LA2_2717 == EQUAL) ) { s = 508; } SEEK(index2_2717); if ( s>=0 ) { return s; } } break; case 578: { ANTLR3_UINT32 LA2_1089; ANTLR3_MARKER index2_1089; LA2_1089 = LA(1); index2_1089 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1089 == COLON) ) { s = 396; } else if ( (LA2_1089 == AT) ) { s = 89; } else if ( (LA2_1089 == COMMON_CHAR || LA2_1089 == HEX_CHAR) ) { s = 397; } else if ( (LA2_1089 == DIGIT) ) { s = 398; } else if ( (LA2_1089 == DOT) ) { s = 399; } else if ( (LA2_1089 == PERCENT) ) { s = 400; } else if ( (LA2_1089 == QMARK) ) { s = 206; } else if ( (LA2_1089 == SEMI) ) { s = 202; } else if ( (LA2_1089 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1089 == CRLF) ) { s = 205; } else if ( (LA2_1089 == AND || LA2_1089 == DOLLARD || LA2_1089 == PLUS || LA2_1089 == SLASH) ) { s = 401; } else if ( (LA2_1089 == DASH || LA2_1089 == EMARK || LA2_1089 == LPAREN || LA2_1089 == RPAREN || ((LA2_1089 >= SQUOTE) && (LA2_1089 <= USCORE))) ) { s = 404; } else if ( (LA2_1089 == EQUAL) ) { s = 709; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1089 == LSBRAQUET || LA2_1089 == RSBRAQUET) ) { s = 405; } else if ( (LA2_1089 == COMMA) ) { s = 97; } SEEK(index2_1089); if ( s>=0 ) { return s; } } break; case 579: { ANTLR3_UINT32 LA2_2950; ANTLR3_MARKER index2_2950; LA2_2950 = LA(1); index2_2950 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2950 == SP) ) { s = 2456; } else if ( (LA2_2950 == CRLF) ) { s = 2458; } else if ( (LA2_2950 == EQUAL) ) { s = 3260; } else if ( (LA2_2950 == SLASH) ) { s = 3261; } else if ( (LA2_2950 == QMARK) ) { s = 854; } else if ( (LA2_2950 == SEMI) ) { s = 2587; } else if ( (LA2_2950 == COMMON_CHAR || LA2_2950 == HEX_CHAR) ) { s = 2949; } else if ( (LA2_2950 == DIGIT) ) { s = 2950; } else if ( (LA2_2950 == DOT) ) { s = 2951; } else if ( (LA2_2950 == PERCENT) ) { s = 2952; } else if ( (LA2_2950 == PLUS) ) { s = 2953; } else if ( (LA2_2950 == BQUOTE) ) { s = 1203; } else if ( (LA2_2950 == COLON) ) { s = 2954; } else if ( (LA2_2950 == AT) ) { s = 2111; } else if ( (LA2_2950 == AND) ) { s = 2955; } else if ( (LA2_2950 == DOLLARD) ) { s = 2956; } else if ( (LA2_2950 == COMMA) ) { s = 2116; } else if ( (LA2_2950 == DASH || LA2_2950 == EMARK || LA2_2950 == LPAREN || LA2_2950 == RPAREN || ((LA2_2950 >= SQUOTE) && (LA2_2950 <= USCORE))) ) { s = 2957; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2950 == LSBRAQUET || LA2_2950 == RSBRAQUET) ) { s = 405; } SEEK(index2_2950); if ( s>=0 ) { return s; } } break; case 580: { ANTLR3_UINT32 LA2_2867; ANTLR3_MARKER index2_2867; LA2_2867 = LA(1); index2_2867 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2867 == SP) ) { s = 2098; } else if ( (LA2_2867 == CRLF) ) { s = 2091; } else if ( (LA2_2867 == COMMON_CHAR || LA2_2867 == HEX_CHAR) ) { s = 3173; } else if ( (LA2_2867 == DIGIT) ) { s = 3174; } else if ( (LA2_2867 == DOT) ) { s = 3175; } else if ( (LA2_2867 == PERCENT) ) { s = 3176; } else if ( (LA2_2867 == PLUS) ) { s = 3177; } else if ( (LA2_2867 == BQUOTE) ) { s = 2092; } else if ( (LA2_2867 == DQUOTE) ) { s = 2093; } else if ( (LA2_2867 == DASH || LA2_2867 == EMARK || LA2_2867 == LPAREN || LA2_2867 == RPAREN || ((LA2_2867 >= SQUOTE) && (LA2_2867 <= USCORE))) ) { s = 3178; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2867 == AND || LA2_2867 == COLON || LA2_2867 == DOLLARD || LA2_2867 == LSBRAQUET || LA2_2867 == RSBRAQUET || LA2_2867 == SLASH) ) { s = 1080; } SEEK(index2_2867); if ( s>=0 ) { return s; } } break; case 581: { ANTLR3_UINT32 LA2_3128; ANTLR3_MARKER index2_3128; LA2_3128 = LA(1); index2_3128 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3128 == SEMI) ) { s = 2826; } else if ( (LA2_3128 == QMARK) ) { s = 854; } else if ( (LA2_3128 == SP) ) { s = 204; } else if ( (LA2_3128 == SLASH) ) { s = 3123; } else if ( (LA2_3128 == COMMON_CHAR || LA2_3128 == HEX_CHAR) ) { s = 3124; } else if ( (LA2_3128 == DIGIT) ) { s = 3125; } else if ( (LA2_3128 == DOT) ) { s = 3126; } else if ( (LA2_3128 == PERCENT) ) { s = 3127; } else if ( (LA2_3128 == COLON) ) { s = 3128; } else if ( (LA2_3128 == AT) ) { s = 2019; } else if ( (LA2_3128 == AND) ) { s = 3129; } else if ( (LA2_3128 == EQUAL) ) { s = 2021; } else if ( (LA2_3128 == PLUS) ) { s = 3130; } else if ( (LA2_3128 == DOLLARD) ) { s = 3131; } else if ( (LA2_3128 == COMMA) ) { s = 2024; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3128 == CRLF) ) { s = 205; } else if ( (LA2_3128 == DASH || LA2_3128 == EMARK || LA2_3128 == LPAREN || LA2_3128 == RPAREN || ((LA2_3128 >= SQUOTE) && (LA2_3128 <= USCORE))) ) { s = 3132; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3128 == LSBRAQUET || LA2_3128 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3128); if ( s>=0 ) { return s; } } break; case 582: { ANTLR3_UINT32 LA2_2002; ANTLR3_MARKER index2_2002; LA2_2002 = LA(1); index2_2002 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2002 == SLASH) ) { s = 2455; } else if ( (LA2_2002 == QMARK) ) { s = 854; } else if ( (LA2_2002 == SP) ) { s = 2456; } else if ( (LA2_2002 == SEMI) ) { s = 1583; } else if ( (LA2_2002 == COMMON_CHAR || LA2_2002 == HEX_CHAR) ) { s = 2001; } else if ( (LA2_2002 == DIGIT) ) { s = 2002; } else if ( (LA2_2002 == DOT) ) { s = 2003; } else if ( (LA2_2002 == PERCENT) ) { s = 2004; } else if ( (LA2_2002 == COLON) ) { s = 2005; } else if ( (LA2_2002 == AT) ) { s = 1123; } else if ( (LA2_2002 == AND) ) { s = 2006; } else if ( (LA2_2002 == EQUAL) ) { s = 2457; } else if ( (LA2_2002 == PLUS) ) { s = 2007; } else if ( (LA2_2002 == DOLLARD) ) { s = 2008; } else if ( (LA2_2002 == COMMA) ) { s = 1128; } else if ( (LA2_2002 == CRLF) ) { s = 2458; } else if ( (LA2_2002 == BQUOTE) ) { s = 1203; } else if ( (LA2_2002 == DASH || LA2_2002 == EMARK || LA2_2002 == LPAREN || LA2_2002 == RPAREN || ((LA2_2002 >= SQUOTE) && (LA2_2002 <= USCORE))) ) { s = 2013; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2002 == LSBRAQUET || LA2_2002 == RSBRAQUET) ) { s = 405; } SEEK(index2_2002); if ( s>=0 ) { return s; } } break; case 583: { ANTLR3_UINT32 LA2_3148; ANTLR3_MARKER index2_3148; LA2_3148 = LA(1); index2_3148 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3148 == SEMI) ) { s = 2510; } else if ( (LA2_3148 == QMARK) ) { s = 242; } else if ( (LA2_3148 == SP) ) { s = 35; } else if ( (LA2_3148 == SLASH) ) { s = 3123; } else if ( (LA2_3148 == COMMON_CHAR || LA2_3148 == HEX_CHAR) ) { s = 3406; } else if ( (LA2_3148 == DIGIT) ) { s = 3407; } else if ( (LA2_3148 == DOT) ) { s = 3408; } else if ( (LA2_3148 == PERCENT) ) { s = 3409; } else if ( (LA2_3148 == COLON) ) { s = 3410; } else if ( (LA2_3148 == AT) ) { s = 2504; } else if ( (LA2_3148 == AND) ) { s = 3411; } else if ( (LA2_3148 == EQUAL) ) { s = 2506; } else if ( (LA2_3148 == PLUS) ) { s = 3412; } else if ( (LA2_3148 == DOLLARD) ) { s = 3413; } else if ( (LA2_3148 == COMMA) ) { s = 2509; } else if ( (LA2_3148 == DASH || LA2_3148 == EMARK || LA2_3148 == LPAREN || LA2_3148 == RPAREN || ((LA2_3148 >= SQUOTE) && (LA2_3148 <= USCORE))) ) { s = 3414; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3148 == LSBRAQUET || LA2_3148 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3148); if ( s>=0 ) { return s; } } break; case 584: { ANTLR3_UINT32 LA2_3129; ANTLR3_MARKER index2_3129; LA2_3129 = LA(1); index2_3129 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3129 == SEMI) ) { s = 2826; } else if ( (LA2_3129 == QMARK) ) { s = 854; } else if ( (LA2_3129 == SP) ) { s = 204; } else if ( (LA2_3129 == SLASH) ) { s = 3123; } else if ( (LA2_3129 == COMMON_CHAR || LA2_3129 == HEX_CHAR) ) { s = 3124; } else if ( (LA2_3129 == DIGIT) ) { s = 3125; } else if ( (LA2_3129 == DOT) ) { s = 3126; } else if ( (LA2_3129 == PERCENT) ) { s = 3127; } else if ( (LA2_3129 == COLON) ) { s = 3128; } else if ( (LA2_3129 == AT) ) { s = 2019; } else if ( (LA2_3129 == AND) ) { s = 3129; } else if ( (LA2_3129 == EQUAL) ) { s = 2021; } else if ( (LA2_3129 == PLUS) ) { s = 3130; } else if ( (LA2_3129 == DOLLARD) ) { s = 3131; } else if ( (LA2_3129 == COMMA) ) { s = 2024; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3129 == CRLF) ) { s = 205; } else if ( (LA2_3129 == DASH || LA2_3129 == EMARK || LA2_3129 == LPAREN || LA2_3129 == RPAREN || ((LA2_3129 >= SQUOTE) && (LA2_3129 <= USCORE))) ) { s = 3132; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3129 == LSBRAQUET || LA2_3129 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3129); if ( s>=0 ) { return s; } } break; case 585: { ANTLR3_UINT32 LA2_3251; ANTLR3_MARKER index2_3251; LA2_3251 = LA(1); index2_3251 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3251 == COMMON_CHAR || LA2_3251 == HEX_CHAR) ) { s = 3503; } else if ( (LA2_3251 == DIGIT) ) { s = 3504; } else if ( (LA2_3251 == DOT) ) { s = 3505; } else if ( (LA2_3251 == PERCENT) ) { s = 3506; } else if ( (LA2_3251 == COLON) ) { s = 3291; } else if ( (LA2_3251 == AT) ) { s = 2578; } else if ( (LA2_3251 == AND) ) { s = 3292; } else if ( (LA2_3251 == EQUAL) ) { s = 2580; } else if ( (LA2_3251 == PLUS) ) { s = 3507; } else if ( (LA2_3251 == DOLLARD) ) { s = 3293; } else if ( (LA2_3251 == COMMA) ) { s = 2583; } else if ( (LA2_3251 == QMARK) ) { s = 854; } else if ( (LA2_3251 == SP) ) { s = 402; } else if ( (LA2_3251 == SLASH) ) { s = 2928; } else if ( (LA2_3251 == SEMI) ) { s = 3251; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3251 == CRLF) ) { s = 403; } else if ( (LA2_3251 == DASH || LA2_3251 == EMARK || LA2_3251 == LPAREN || LA2_3251 == RPAREN || ((LA2_3251 >= SQUOTE) && (LA2_3251 <= USCORE))) ) { s = 3508; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3251 == LSBRAQUET || LA2_3251 == RSBRAQUET) ) { s = 405; } SEEK(index2_3251); if ( s>=0 ) { return s; } } break; case 586: { ANTLR3_UINT32 LA2_3777; ANTLR3_MARKER index2_3777; LA2_3777 = LA(1); index2_3777 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3777 == SLASH) ) { s = 3435; } else if ( (LA2_3777 == QMARK) ) { s = 854; } else if ( (LA2_3777 == SP) ) { s = 204; } else if ( (LA2_3777 == SEMI) ) { s = 3170; } else if ( (LA2_3777 == COMMON_CHAR || LA2_3777 == HEX_CHAR) ) { s = 3773; } else if ( (LA2_3777 == DIGIT) ) { s = 3774; } else if ( (LA2_3777 == DOT) ) { s = 3775; } else if ( (LA2_3777 == PERCENT) ) { s = 3776; } else if ( (LA2_3777 == COLON) ) { s = 3777; } else if ( (LA2_3777 == AT) ) { s = 2184; } else if ( (LA2_3777 == AND) ) { s = 3778; } else if ( (LA2_3777 == EQUAL) ) { s = 2186; } else if ( (LA2_3777 == PLUS) ) { s = 3779; } else if ( (LA2_3777 == DOLLARD) ) { s = 3780; } else if ( (LA2_3777 == COMMA) ) { s = 2189; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3777 == CRLF) ) { s = 205; } else if ( (LA2_3777 == DASH || LA2_3777 == EMARK || LA2_3777 == LPAREN || LA2_3777 == RPAREN || ((LA2_3777 >= SQUOTE) && (LA2_3777 <= USCORE))) ) { s = 3781; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3777 == LSBRAQUET || LA2_3777 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3777); if ( s>=0 ) { return s; } } break; case 587: { ANTLR3_UINT32 LA2_3131; ANTLR3_MARKER index2_3131; LA2_3131 = LA(1); index2_3131 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3131 == SEMI) ) { s = 2826; } else if ( (LA2_3131 == QMARK) ) { s = 854; } else if ( (LA2_3131 == SP) ) { s = 204; } else if ( (LA2_3131 == SLASH) ) { s = 3123; } else if ( (LA2_3131 == COMMON_CHAR || LA2_3131 == HEX_CHAR) ) { s = 3124; } else if ( (LA2_3131 == DIGIT) ) { s = 3125; } else if ( (LA2_3131 == DOT) ) { s = 3126; } else if ( (LA2_3131 == PERCENT) ) { s = 3127; } else if ( (LA2_3131 == COLON) ) { s = 3128; } else if ( (LA2_3131 == AT) ) { s = 2019; } else if ( (LA2_3131 == AND) ) { s = 3129; } else if ( (LA2_3131 == EQUAL) ) { s = 2021; } else if ( (LA2_3131 == PLUS) ) { s = 3130; } else if ( (LA2_3131 == DOLLARD) ) { s = 3131; } else if ( (LA2_3131 == COMMA) ) { s = 2024; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3131 == CRLF) ) { s = 205; } else if ( (LA2_3131 == DASH || LA2_3131 == EMARK || LA2_3131 == LPAREN || LA2_3131 == RPAREN || ((LA2_3131 >= SQUOTE) && (LA2_3131 <= USCORE))) ) { s = 3132; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3131 == LSBRAQUET || LA2_3131 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3131); if ( s>=0 ) { return s; } } break; case 588: { ANTLR3_UINT32 LA2_3576; ANTLR3_MARKER index2_3576; LA2_3576 = LA(1); index2_3576 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3576 == SEMI) ) { s = 3351; } else if ( (LA2_3576 == QMARK) ) { s = 1751; } else if ( (LA2_3576 == SP) ) { s = 204; } else if ( (LA2_3576 == SLASH) ) { s = 3323; } else if ( (LA2_3576 == COMMON_CHAR || LA2_3576 == HEX_CHAR) ) { s = 3568; } else if ( (LA2_3576 == DIGIT) ) { s = 3569; } else if ( (LA2_3576 == DOT) ) { s = 3570; } else if ( (LA2_3576 == PERCENT) ) { s = 3571; } else if ( (LA2_3576 == COLON) ) { s = 3572; } else if ( (LA2_3576 == AT) ) { s = 2684; } else if ( (LA2_3576 == AND) ) { s = 3573; } else if ( (LA2_3576 == EQUAL) ) { s = 2686; } else if ( (LA2_3576 == PLUS) ) { s = 3574; } else if ( (LA2_3576 == DOLLARD) ) { s = 3575; } else if ( (LA2_3576 == COMMA) ) { s = 2689; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3576 == CRLF) ) { s = 205; } else if ( (LA2_3576 == DASH || LA2_3576 == EMARK || LA2_3576 == LPAREN || LA2_3576 == RPAREN || ((LA2_3576 >= SQUOTE) && (LA2_3576 <= USCORE))) ) { s = 3576; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3576 == LSBRAQUET || LA2_3576 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3576); if ( s>=0 ) { return s; } } break; case 589: { ANTLR3_UINT32 LA2_3784; ANTLR3_MARKER index2_3784; LA2_3784 = LA(1); index2_3784 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3784 == QMARK) ) { s = 242; } else if ( (LA2_3784 == SP) ) { s = 35; } else if ( (LA2_3784 == SLASH) ) { s = 3435; } else if ( (LA2_3784 == SEMI) ) { s = 2201; } else if ( (LA2_3784 == COMMON_CHAR || LA2_3784 == HEX_CHAR) ) { s = 3837; } else if ( (LA2_3784 == DIGIT) ) { s = 3838; } else if ( (LA2_3784 == DOT) ) { s = 3839; } else if ( (LA2_3784 == PERCENT) ) { s = 3840; } else if ( (LA2_3784 == COLON) ) { s = 3841; } else if ( (LA2_3784 == AT) ) { s = 2638; } else if ( (LA2_3784 == AND) ) { s = 3842; } else if ( (LA2_3784 == EQUAL) ) { s = 2640; } else if ( (LA2_3784 == PLUS) ) { s = 3843; } else if ( (LA2_3784 == DOLLARD) ) { s = 3844; } else if ( (LA2_3784 == COMMA) ) { s = 2643; } else if ( (LA2_3784 == DASH || LA2_3784 == EMARK || LA2_3784 == LPAREN || LA2_3784 == RPAREN || ((LA2_3784 >= SQUOTE) && (LA2_3784 <= USCORE))) ) { s = 3845; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3784 == LSBRAQUET || LA2_3784 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3784); if ( s>=0 ) { return s; } } break; case 590: { ANTLR3_UINT32 LA2_3130; ANTLR3_MARKER index2_3130; LA2_3130 = LA(1); index2_3130 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3130 == SEMI) ) { s = 2826; } else if ( (LA2_3130 == QMARK) ) { s = 854; } else if ( (LA2_3130 == SP) ) { s = 204; } else if ( (LA2_3130 == SLASH) ) { s = 3123; } else if ( (LA2_3130 == COMMON_CHAR || LA2_3130 == HEX_CHAR) ) { s = 3124; } else if ( (LA2_3130 == DIGIT) ) { s = 3125; } else if ( (LA2_3130 == DOT) ) { s = 3126; } else if ( (LA2_3130 == PERCENT) ) { s = 3127; } else if ( (LA2_3130 == COLON) ) { s = 3128; } else if ( (LA2_3130 == AT) ) { s = 2019; } else if ( (LA2_3130 == AND) ) { s = 3129; } else if ( (LA2_3130 == EQUAL) ) { s = 2021; } else if ( (LA2_3130 == PLUS) ) { s = 3130; } else if ( (LA2_3130 == DOLLARD) ) { s = 3131; } else if ( (LA2_3130 == COMMA) ) { s = 2024; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3130 == CRLF) ) { s = 205; } else if ( (LA2_3130 == DASH || LA2_3130 == EMARK || LA2_3130 == LPAREN || LA2_3130 == RPAREN || ((LA2_3130 >= SQUOTE) && (LA2_3130 <= USCORE))) ) { s = 3132; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3130 == LSBRAQUET || LA2_3130 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3130); if ( s>=0 ) { return s; } } break; case 591: { ANTLR3_UINT32 LA2_3779; ANTLR3_MARKER index2_3779; LA2_3779 = LA(1); index2_3779 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3779 == SLASH) ) { s = 3435; } else if ( (LA2_3779 == QMARK) ) { s = 854; } else if ( (LA2_3779 == SP) ) { s = 204; } else if ( (LA2_3779 == SEMI) ) { s = 3170; } else if ( (LA2_3779 == COMMON_CHAR || LA2_3779 == HEX_CHAR) ) { s = 3773; } else if ( (LA2_3779 == DIGIT) ) { s = 3774; } else if ( (LA2_3779 == DOT) ) { s = 3775; } else if ( (LA2_3779 == PERCENT) ) { s = 3776; } else if ( (LA2_3779 == COLON) ) { s = 3777; } else if ( (LA2_3779 == AT) ) { s = 2184; } else if ( (LA2_3779 == AND) ) { s = 3778; } else if ( (LA2_3779 == EQUAL) ) { s = 2186; } else if ( (LA2_3779 == PLUS) ) { s = 3779; } else if ( (LA2_3779 == DOLLARD) ) { s = 3780; } else if ( (LA2_3779 == COMMA) ) { s = 2189; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3779 == CRLF) ) { s = 205; } else if ( (LA2_3779 == DASH || LA2_3779 == EMARK || LA2_3779 == LPAREN || LA2_3779 == RPAREN || ((LA2_3779 >= SQUOTE) && (LA2_3779 <= USCORE))) ) { s = 3781; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3779 == LSBRAQUET || LA2_3779 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3779); if ( s>=0 ) { return s; } } break; case 592: { ANTLR3_UINT32 LA2_817; ANTLR3_MARKER index2_817; LA2_817 = LA(1); index2_817 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_817 == COMMON_CHAR || LA2_817 == HEX_CHAR) ) { s = 817; } else if ( (LA2_817 == DIGIT) ) { s = 818; } else if ( (LA2_817 == DASH) ) { s = 819; } else if ( (LA2_817 == DOT) ) { s = 1235; } else if ( (LA2_817 == COLON) ) { s = 1236; } else if ( (LA2_817 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_817 == CRLF) ) { s = 205; } else if ( (LA2_817 == SEMI) ) { s = 1237; } else if ( (LA2_817 == QMARK) ) { s = 854; } else if ( (LA2_817 == SLASH) ) { s = 241; } else if ( (LA2_817 == EMARK || LA2_817 == LPAREN || LA2_817 == RPAREN || ((LA2_817 >= SQUOTE) && (LA2_817 <= USCORE))) ) { s = 462; } else if ( (LA2_817 == PERCENT) ) { s = 463; } else if ( (LA2_817 == AT) ) { s = 464; } else if ( (LA2_817 == AND) ) { s = 465; } else if ( (LA2_817 == EQUAL) ) { s = 466; } else if ( (LA2_817 == PLUS) ) { s = 467; } else if ( (LA2_817 == DOLLARD) ) { s = 468; } else if ( (LA2_817 == COMMA) ) { s = 469; } SEEK(index2_817); if ( s>=0 ) { return s; } } break; case 593: { ANTLR3_UINT32 LA2_3780; ANTLR3_MARKER index2_3780; LA2_3780 = LA(1); index2_3780 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3780 == SLASH) ) { s = 3435; } else if ( (LA2_3780 == QMARK) ) { s = 854; } else if ( (LA2_3780 == SP) ) { s = 204; } else if ( (LA2_3780 == SEMI) ) { s = 3170; } else if ( (LA2_3780 == COMMON_CHAR || LA2_3780 == HEX_CHAR) ) { s = 3773; } else if ( (LA2_3780 == DIGIT) ) { s = 3774; } else if ( (LA2_3780 == DOT) ) { s = 3775; } else if ( (LA2_3780 == PERCENT) ) { s = 3776; } else if ( (LA2_3780 == COLON) ) { s = 3777; } else if ( (LA2_3780 == AT) ) { s = 2184; } else if ( (LA2_3780 == AND) ) { s = 3778; } else if ( (LA2_3780 == EQUAL) ) { s = 2186; } else if ( (LA2_3780 == PLUS) ) { s = 3779; } else if ( (LA2_3780 == DOLLARD) ) { s = 3780; } else if ( (LA2_3780 == COMMA) ) { s = 2189; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3780 == CRLF) ) { s = 205; } else if ( (LA2_3780 == DASH || LA2_3780 == EMARK || LA2_3780 == LPAREN || LA2_3780 == RPAREN || ((LA2_3780 >= SQUOTE) && (LA2_3780 <= USCORE))) ) { s = 3781; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3780 == LSBRAQUET || LA2_3780 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3780); if ( s>=0 ) { return s; } } break; case 594: { ANTLR3_UINT32 LA2_3778; ANTLR3_MARKER index2_3778; LA2_3778 = LA(1); index2_3778 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3778 == SLASH) ) { s = 3435; } else if ( (LA2_3778 == QMARK) ) { s = 854; } else if ( (LA2_3778 == SP) ) { s = 204; } else if ( (LA2_3778 == SEMI) ) { s = 3170; } else if ( (LA2_3778 == COMMON_CHAR || LA2_3778 == HEX_CHAR) ) { s = 3773; } else if ( (LA2_3778 == DIGIT) ) { s = 3774; } else if ( (LA2_3778 == DOT) ) { s = 3775; } else if ( (LA2_3778 == PERCENT) ) { s = 3776; } else if ( (LA2_3778 == COLON) ) { s = 3777; } else if ( (LA2_3778 == AT) ) { s = 2184; } else if ( (LA2_3778 == AND) ) { s = 3778; } else if ( (LA2_3778 == EQUAL) ) { s = 2186; } else if ( (LA2_3778 == PLUS) ) { s = 3779; } else if ( (LA2_3778 == DOLLARD) ) { s = 3780; } else if ( (LA2_3778 == COMMA) ) { s = 2189; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3778 == CRLF) ) { s = 205; } else if ( (LA2_3778 == DASH || LA2_3778 == EMARK || LA2_3778 == LPAREN || LA2_3778 == RPAREN || ((LA2_3778 >= SQUOTE) && (LA2_3778 <= USCORE))) ) { s = 3781; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3778 == LSBRAQUET || LA2_3778 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3778); if ( s>=0 ) { return s; } } break; case 595: { ANTLR3_UINT32 LA2_1983; ANTLR3_MARKER index2_1983; LA2_1983 = LA(1); index2_1983 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1983 == COLON) ) { s = 1082; } else if ( (LA2_1983 == AT) ) { s = 89; } else if ( (LA2_1983 == COMMON_CHAR || LA2_1983 == HEX_CHAR) ) { s = 1083; } else if ( (LA2_1983 == DIGIT) ) { s = 1084; } else if ( (LA2_1983 == DOT) ) { s = 1085; } else if ( (LA2_1983 == PERCENT) ) { s = 1086; } else if ( (LA2_1983 == QMARK) ) { s = 206; } else if ( (LA2_1983 == SEMI) ) { s = 202; } else if ( (LA2_1983 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1983 == CRLF) ) { s = 205; } else if ( (LA2_1983 == AND || LA2_1983 == DOLLARD || LA2_1983 == PLUS || LA2_1983 == SLASH) ) { s = 1087; } else if ( (LA2_1983 == DASH || LA2_1983 == EMARK || LA2_1983 == LPAREN || LA2_1983 == RPAREN || ((LA2_1983 >= SQUOTE) && (LA2_1983 <= USCORE))) ) { s = 1088; } else if ( (LA2_1983 == COMMA) ) { s = 97; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1983 == LSBRAQUET || LA2_1983 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_1983 == EQUAL) ) { s = 99; } SEEK(index2_1983); if ( s>=0 ) { return s; } } break; case 596: { ANTLR3_UINT32 LA2_3796; ANTLR3_MARKER index2_3796; LA2_3796 = LA(1); index2_3796 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3796 == SLASH) ) { s = 3678; } else if ( (LA2_3796 == QMARK) ) { s = 854; } else if ( (LA2_3796 == SP) ) { s = 1585; } else if ( (LA2_3796 == CRLF) ) { s = 1588; } else if ( (LA2_3796 == SEMI) ) { s = 2587; } else if ( (LA2_3796 == COMMON_CHAR || LA2_3796 == HEX_CHAR) ) { s = 3512; } else if ( (LA2_3796 == DIGIT) ) { s = 3513; } else if ( (LA2_3796 == DOT) ) { s = 3514; } else if ( (LA2_3796 == PERCENT) ) { s = 3515; } else if ( (LA2_3796 == PLUS) ) { s = 3516; } else if ( (LA2_3796 == BQUOTE) ) { s = 2092; } else if ( (LA2_3796 == COLON) ) { s = 3517; } else if ( (LA2_3796 == AT) ) { s = 2111; } else if ( (LA2_3796 == AND) ) { s = 3518; } else if ( (LA2_3796 == EQUAL) ) { s = 2113; } else if ( (LA2_3796 == DOLLARD) ) { s = 3519; } else if ( (LA2_3796 == COMMA) ) { s = 2116; } else if ( (LA2_3796 == DASH || LA2_3796 == EMARK || LA2_3796 == LPAREN || LA2_3796 == RPAREN || ((LA2_3796 >= SQUOTE) && (LA2_3796 <= USCORE))) ) { s = 3520; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3796 == LSBRAQUET || LA2_3796 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3796); if ( s>=0 ) { return s; } } break; case 597: { ANTLR3_UINT32 LA2_3152; ANTLR3_MARKER index2_3152; LA2_3152 = LA(1); index2_3152 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3152 == SEMI) ) { s = 3151; } else if ( (LA2_3152 == QMARK) ) { s = 854; } else if ( (LA2_3152 == SP) ) { s = 204; } else if ( (LA2_3152 == SLASH) ) { s = 2827; } else if ( (LA2_3152 == COMMON_CHAR || LA2_3152 == HEX_CHAR) ) { s = 3142; } else if ( (LA2_3152 == DIGIT) ) { s = 3143; } else if ( (LA2_3152 == DOT) ) { s = 3144; } else if ( (LA2_3152 == PERCENT) ) { s = 3145; } else if ( (LA2_3152 == COLON) ) { s = 3146; } else if ( (LA2_3152 == AT) ) { s = 2504; } else if ( (LA2_3152 == AND) ) { s = 3147; } else if ( (LA2_3152 == EQUAL) ) { s = 3148; } else if ( (LA2_3152 == PLUS) ) { s = 3149; } else if ( (LA2_3152 == DOLLARD) ) { s = 3150; } else if ( (LA2_3152 == COMMA) ) { s = 2509; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3152 == CRLF) ) { s = 205; } else if ( (LA2_3152 == DASH || LA2_3152 == EMARK || LA2_3152 == LPAREN || LA2_3152 == RPAREN || ((LA2_3152 >= SQUOTE) && (LA2_3152 <= USCORE))) ) { s = 3152; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3152 == LSBRAQUET || LA2_3152 == RSBRAQUET) ) { s = 405; } SEEK(index2_3152); if ( s>=0 ) { return s; } } break; case 598: { ANTLR3_UINT32 LA2_3428; ANTLR3_MARKER index2_3428; LA2_3428 = LA(1); index2_3428 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3428 == SLASH) ) { s = 3153; } else if ( (LA2_3428 == QMARK) ) { s = 854; } else if ( (LA2_3428 == SP) ) { s = 1585; } else if ( (LA2_3428 == SEMI) ) { s = 1583; } else if ( (LA2_3428 == COMMON_CHAR || LA2_3428 == HEX_CHAR) ) { s = 2831; } else if ( (LA2_3428 == DIGIT) ) { s = 2832; } else if ( (LA2_3428 == DOT) ) { s = 2833; } else if ( (LA2_3428 == PERCENT) ) { s = 2834; } else if ( (LA2_3428 == COLON) ) { s = 2835; } else if ( (LA2_3428 == AT) ) { s = 1123; } else if ( (LA2_3428 == AND) ) { s = 2836; } else if ( (LA2_3428 == EQUAL) ) { s = 1125; } else if ( (LA2_3428 == PLUS) ) { s = 2837; } else if ( (LA2_3428 == DOLLARD) ) { s = 2838; } else if ( (LA2_3428 == COMMA) ) { s = 1128; } else if ( (LA2_3428 == CRLF) ) { s = 1588; } else if ( (LA2_3428 == BQUOTE) ) { s = 2092; } else if ( (LA2_3428 == DASH || LA2_3428 == EMARK || LA2_3428 == LPAREN || LA2_3428 == RPAREN || ((LA2_3428 >= SQUOTE) && (LA2_3428 <= USCORE))) ) { s = 2839; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3428 == LSBRAQUET || LA2_3428 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3428); if ( s>=0 ) { return s; } } break; case 599: { ANTLR3_UINT32 LA2_3208; ANTLR3_MARKER index2_3208; LA2_3208 = LA(1); index2_3208 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3208 == QMARK) ) { s = 854; } else if ( (LA2_3208 == SP) ) { s = 1585; } else if ( (LA2_3208 == SLASH) ) { s = 3153; } else if ( (LA2_3208 == SEMI) ) { s = 2051; } else if ( (LA2_3208 == COMMON_CHAR || LA2_3208 == HEX_CHAR) ) { s = 3200; } else if ( (LA2_3208 == DIGIT) ) { s = 3201; } else if ( (LA2_3208 == DOT) ) { s = 3202; } else if ( (LA2_3208 == PERCENT) ) { s = 3203; } else if ( (LA2_3208 == COLON) ) { s = 3204; } else if ( (LA2_3208 == AT) ) { s = 1576; } else if ( (LA2_3208 == AND) ) { s = 3205; } else if ( (LA2_3208 == EQUAL) ) { s = 1578; } else if ( (LA2_3208 == PLUS) ) { s = 3206; } else if ( (LA2_3208 == DOLLARD) ) { s = 3207; } else if ( (LA2_3208 == COMMA) ) { s = 1581; } else if ( (LA2_3208 == CRLF) ) { s = 1588; } else if ( (LA2_3208 == BQUOTE) ) { s = 2092; } else if ( (LA2_3208 == DASH || LA2_3208 == EMARK || LA2_3208 == LPAREN || LA2_3208 == RPAREN || ((LA2_3208 >= SQUOTE) && (LA2_3208 <= USCORE))) ) { s = 3208; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3208 == LSBRAQUET || LA2_3208 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3208); if ( s>=0 ) { return s; } } break; case 600: { ANTLR3_UINT32 LA2_2447; ANTLR3_MARKER index2_2447; LA2_2447 = LA(1); index2_2447 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2447 == COLON) ) { s = 2445; } else if ( (LA2_2447 == AT) ) { s = 89; } else if ( (LA2_2447 == COMMON_CHAR || LA2_2447 == HEX_CHAR) ) { s = 2446; } else if ( (LA2_2447 == DIGIT) ) { s = 2447; } else if ( (LA2_2447 == DASH || LA2_2447 == DOT || LA2_2447 == EMARK || LA2_2447 == LPAREN || LA2_2447 == RPAREN || ((LA2_2447 >= SQUOTE) && (LA2_2447 <= USCORE))) ) { s = 2448; } else if ( (LA2_2447 == PERCENT) ) { s = 2449; } else if ( (LA2_2447 == AND) ) { s = 1112; } else if ( (LA2_2447 == SP) ) { s = 35; } else if ( (LA2_2447 == QMARK) ) { s = 2450; } else if ( (LA2_2447 == SEMI) ) { s = 94; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2447 == LSBRAQUET || LA2_2447 == RSBRAQUET) ) { s = 2437; } else if ( (LA2_2447 == COMMA) ) { s = 97; } else if ( (LA2_2447 == EQUAL) ) { s = 99; } else if ( (LA2_2447 == DOLLARD || LA2_2447 == PLUS || LA2_2447 == SLASH) ) { s = 2451; } SEEK(index2_2447); if ( s>=0 ) { return s; } } break; case 601: { ANTLR3_UINT32 LA2_2931; ANTLR3_MARKER index2_2931; LA2_2931 = LA(1); index2_2931 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2931 == SP) ) { s = 2456; } else if ( (LA2_2931 == CRLF) ) { s = 2458; } else if ( (LA2_2931 == EQUAL) ) { s = 2552; } else if ( (LA2_2931 == SLASH) ) { s = 2553; } else if ( (LA2_2931 == QMARK) ) { s = 854; } else if ( (LA2_2931 == SEMI) ) { s = 1630; } else if ( (LA2_2931 == COMMON_CHAR || LA2_2931 == HEX_CHAR) ) { s = 2068; } else if ( (LA2_2931 == DIGIT) ) { s = 2069; } else if ( (LA2_2931 == DOT) ) { s = 2070; } else if ( (LA2_2931 == PERCENT) ) { s = 2071; } else if ( (LA2_2931 == PLUS) ) { s = 2072; } else if ( (LA2_2931 == BQUOTE) ) { s = 1203; } else if ( (LA2_2931 == DASH || LA2_2931 == EMARK || LA2_2931 == LPAREN || LA2_2931 == RPAREN || ((LA2_2931 >= SQUOTE) && (LA2_2931 <= USCORE))) ) { s = 2073; } else if ( (LA2_2931 == COLON) ) { s = 1727; } else if ( (LA2_2931 == AND) ) { s = 1730; } else if ( (LA2_2931 == AT) ) { s = 810; } else if ( (LA2_2931 == DOLLARD) ) { s = 1732; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2931 == LSBRAQUET || LA2_2931 == RSBRAQUET) ) { s = 405; } else if ( (LA2_2931 == COMMA) ) { s = 815; } SEEK(index2_2931); if ( s>=0 ) { return s; } } break; case 602: { ANTLR3_UINT32 LA2_3715; ANTLR3_MARKER index2_3715; LA2_3715 = LA(1); index2_3715 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3715 == SLASH) ) { s = 3678; } else if ( (LA2_3715 == QMARK) ) { s = 854; } else if ( (LA2_3715 == SP) ) { s = 1585; } else if ( (LA2_3715 == CRLF) ) { s = 1588; } else if ( (LA2_3715 == SEMI) ) { s = 2986; } else if ( (LA2_3715 == COMMON_CHAR || LA2_3715 == HEX_CHAR) ) { s = 3707; } else if ( (LA2_3715 == DIGIT) ) { s = 3708; } else if ( (LA2_3715 == DOT) ) { s = 3709; } else if ( (LA2_3715 == PERCENT) ) { s = 3710; } else if ( (LA2_3715 == PLUS) ) { s = 3711; } else if ( (LA2_3715 == BQUOTE) ) { s = 2092; } else if ( (LA2_3715 == COLON) ) { s = 3712; } else if ( (LA2_3715 == AT) ) { s = 2578; } else if ( (LA2_3715 == AND) ) { s = 3713; } else if ( (LA2_3715 == EQUAL) ) { s = 2580; } else if ( (LA2_3715 == DOLLARD) ) { s = 3714; } else if ( (LA2_3715 == COMMA) ) { s = 2583; } else if ( (LA2_3715 == DASH || LA2_3715 == EMARK || LA2_3715 == LPAREN || LA2_3715 == RPAREN || ((LA2_3715 >= SQUOTE) && (LA2_3715 <= USCORE))) ) { s = 3715; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3715 == LSBRAQUET || LA2_3715 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3715); if ( s>=0 ) { return s; } } break; case 603: { ANTLR3_UINT32 LA2_2913; ANTLR3_MARKER index2_2913; LA2_2913 = LA(1); index2_2913 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2913 == SLASH) ) { s = 3222; } else if ( (LA2_2913 == QMARK) ) { s = 854; } else if ( (LA2_2913 == SP) ) { s = 1585; } else if ( (LA2_2913 == CRLF) ) { s = 1588; } else if ( (LA2_2913 == SEMI) ) { s = 1630; } else if ( (LA2_2913 == COMMON_CHAR || LA2_2913 == HEX_CHAR) ) { s = 2912; } else if ( (LA2_2913 == DIGIT) ) { s = 2913; } else if ( (LA2_2913 == DOT) ) { s = 2914; } else if ( (LA2_2913 == PERCENT) ) { s = 2915; } else if ( (LA2_2913 == PLUS) ) { s = 2916; } else if ( (LA2_2913 == BQUOTE) ) { s = 2092; } else if ( (LA2_2913 == DASH || LA2_2913 == EMARK || LA2_2913 == LPAREN || LA2_2913 == RPAREN || ((LA2_2913 >= SQUOTE) && (LA2_2913 <= USCORE))) ) { s = 2917; } else if ( (LA2_2913 == COLON) ) { s = 2653; } else if ( (LA2_2913 == AND) ) { s = 2654; } else if ( (LA2_2913 == AT) ) { s = 810; } else if ( (LA2_2913 == DOLLARD) ) { s = 2656; } else if ( (LA2_2913 == EQUAL) ) { s = 812; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2913 == LSBRAQUET || LA2_2913 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_2913 == COMMA) ) { s = 815; } SEEK(index2_2913); if ( s>=0 ) { return s; } } break; case 604: { ANTLR3_UINT32 LA2_2266; ANTLR3_MARKER index2_2266; LA2_2266 = LA(1); index2_2266 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2266 == AND) ) { s = 2268; } else if ( (LA2_2266 == SP) ) { s = 35; } else if ( (LA2_2266 == QMARK) ) { s = 2263; } else if ( (LA2_2266 == COMMON_CHAR || LA2_2266 == HEX_CHAR) ) { s = 2264; } else if ( (LA2_2266 == DIGIT) ) { s = 2265; } else if ( (LA2_2266 == DASH || LA2_2266 == DOT || LA2_2266 == EMARK || LA2_2266 == LPAREN || LA2_2266 == RPAREN || ((LA2_2266 >= SQUOTE) && (LA2_2266 <= USCORE))) ) { s = 2266; } else if ( (LA2_2266 == PERCENT) ) { s = 2267; } else if ( (LA2_2266 == SEMI) ) { s = 505; } else if ( (LA2_2266 == COMMA) ) { s = 506; } else if ( (LA2_2266 == COLON || LA2_2266 == DOLLARD || LA2_2266 == PLUS || LA2_2266 == SLASH) ) { s = 2269; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2266 == LSBRAQUET || LA2_2266 == RSBRAQUET) ) { s = 1104; } else if ( (LA2_2266 == AT || LA2_2266 == EQUAL) ) { s = 508; } SEEK(index2_2266); if ( s>=0 ) { return s; } } break; case 605: { ANTLR3_UINT32 LA2_704; ANTLR3_MARKER index2_704; LA2_704 = LA(1); index2_704 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_704 == AT) ) { s = 89; } else if ( (LA2_704 == COMMON_CHAR || LA2_704 == HEX_CHAR) ) { s = 1071; } else if ( (LA2_704 == DIGIT) ) { s = 1072; } else if ( (LA2_704 == DOT) ) { s = 1073; } else if ( (LA2_704 == PERCENT) ) { s = 1074; } else if ( (LA2_704 == AND) ) { s = 1075; } else if ( (LA2_704 == EQUAL) ) { s = 194; } else if ( (LA2_704 == PLUS) ) { s = 1076; } else if ( (LA2_704 == DOLLARD) ) { s = 1077; } else if ( (LA2_704 == COMMA) ) { s = 197; } else if ( (LA2_704 == DASH || LA2_704 == EMARK || LA2_704 == LPAREN || LA2_704 == RPAREN || ((LA2_704 >= SQUOTE) && (LA2_704 <= USCORE))) ) { s = 1078; } else if ( (LA2_704 == COLON || LA2_704 == SLASH) ) { s = 1079; } else if ( (LA2_704 == SP) ) { s = 35; } else if ( (LA2_704 == SEMI) ) { s = 105; } else if ( (LA2_704 == QMARK) ) { s = 107; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_704 == LSBRAQUET || LA2_704 == RSBRAQUET) ) { s = 1080; } SEEK(index2_704); if ( s>=0 ) { return s; } } break; case 606: { ANTLR3_UINT32 LA2_1063; ANTLR3_MARKER index2_1063; LA2_1063 = LA(1); index2_1063 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1063 == EQUAL) ) { s = 1105; } else if ( (LA2_1063 == QMARK) ) { s = 724; } else if ( (LA2_1063 == COMMON_CHAR || LA2_1063 == HEX_CHAR) ) { s = 1062; } else if ( (LA2_1063 == DIGIT) ) { s = 1063; } else if ( (LA2_1063 == DASH || LA2_1063 == DOT || LA2_1063 == EMARK || LA2_1063 == LPAREN || LA2_1063 == RPAREN || ((LA2_1063 >= SQUOTE) && (LA2_1063 <= USCORE))) ) { s = 1064; } else if ( (LA2_1063 == PERCENT) ) { s = 1065; } else if ( (LA2_1063 == SP) ) { s = 35; } else if ( (LA2_1063 == SEMI) ) { s = 105; } else if ( (LA2_1063 == COMMA) ) { s = 106; } else if ( (LA2_1063 == COLON || LA2_1063 == DOLLARD || LA2_1063 == PLUS || LA2_1063 == SLASH) ) { s = 725; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1063 == LSBRAQUET || LA2_1063 == RSBRAQUET) ) { s = 414; } else if ( (((LA2_1063 >= AND) && (LA2_1063 <= AT))) ) { s = 108; } SEEK(index2_1063); if ( s>=0 ) { return s; } } break; case 607: { ANTLR3_UINT32 LA2_1990; ANTLR3_MARKER index2_1990; LA2_1990 = LA(1); index2_1990 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1990 == EQUAL) ) { s = 1988; } else if ( (LA2_1990 == QMARK) ) { s = 1550; } else if ( (LA2_1990 == COMMON_CHAR || LA2_1990 == HEX_CHAR) ) { s = 1989; } else if ( (LA2_1990 == DIGIT) ) { s = 1990; } else if ( (LA2_1990 == DASH || LA2_1990 == DOT || LA2_1990 == EMARK || LA2_1990 == LPAREN || LA2_1990 == RPAREN || ((LA2_1990 >= SQUOTE) && (LA2_1990 <= USCORE))) ) { s = 1991; } else if ( (LA2_1990 == PERCENT) ) { s = 1992; } else if ( (LA2_1990 == SP) ) { s = 35; } else if ( (LA2_1990 == SEMI) ) { s = 105; } else if ( (LA2_1990 == COMMA) ) { s = 106; } else if ( (LA2_1990 == COLON || LA2_1990 == DOLLARD || LA2_1990 == PLUS || LA2_1990 == SLASH) ) { s = 1551; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1990 == LSBRAQUET || LA2_1990 == RSBRAQUET) ) { s = 1552; } else if ( (((LA2_1990 >= AND) && (LA2_1990 <= AT))) ) { s = 108; } SEEK(index2_1990); if ( s>=0 ) { return s; } } break; case 608: { ANTLR3_UINT32 LA2_1261; ANTLR3_MARKER index2_1261; LA2_1261 = LA(1); index2_1261 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1261 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1261 == CRLF) ) { s = 205; } else if ( (LA2_1261 == SEMI) ) { s = 853; } else if ( (LA2_1261 == QMARK) ) { s = 854; } else if ( (LA2_1261 == DIGIT) ) { s = 1261; } else if ( (LA2_1261 == SLASH) ) { s = 241; } else if ( (LA2_1261 == COMMON_CHAR || LA2_1261 == HEX_CHAR) ) { s = 513; } else if ( (LA2_1261 == DASH || LA2_1261 == DOT || LA2_1261 == EMARK || LA2_1261 == LPAREN || LA2_1261 == RPAREN || ((LA2_1261 >= SQUOTE) && (LA2_1261 <= USCORE))) ) { s = 246; } else if ( (LA2_1261 == PERCENT) ) { s = 247; } else if ( (LA2_1261 == COLON) ) { s = 243; } else if ( (LA2_1261 == AT) ) { s = 248; } else if ( (LA2_1261 == AND) ) { s = 249; } else if ( (LA2_1261 == EQUAL) ) { s = 250; } else if ( (LA2_1261 == PLUS) ) { s = 251; } else if ( (LA2_1261 == DOLLARD) ) { s = 252; } else if ( (LA2_1261 == COMMA) ) { s = 253; } SEEK(index2_1261); if ( s>=0 ) { return s; } } break; case 609: { ANTLR3_UINT32 LA2_3156; ANTLR3_MARKER index2_3156; LA2_3156 = LA(1); index2_3156 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3156 == SLASH) ) { s = 2009; } else if ( (LA2_3156 == QMARK) ) { s = 854; } else if ( (LA2_3156 == SP) ) { s = 204; } else if ( (LA2_3156 == SEMI) ) { s = 2011; } else if ( (LA2_3156 == COMMON_CHAR || LA2_3156 == HEX_CHAR) ) { s = 2461; } else if ( (LA2_3156 == DIGIT) ) { s = 2462; } else if ( (LA2_3156 == DOT) ) { s = 2463; } else if ( (LA2_3156 == PERCENT) ) { s = 2464; } else if ( (LA2_3156 == COLON) ) { s = 2005; } else if ( (LA2_3156 == AT) ) { s = 1123; } else if ( (LA2_3156 == AND) ) { s = 2006; } else if ( (LA2_3156 == EQUAL) ) { s = 2465; } else if ( (LA2_3156 == PLUS) ) { s = 2466; } else if ( (LA2_3156 == DOLLARD) ) { s = 2008; } else if ( (LA2_3156 == COMMA) ) { s = 1128; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3156 == CRLF) ) { s = 205; } else if ( (LA2_3156 == DASH || LA2_3156 == EMARK || LA2_3156 == LPAREN || LA2_3156 == RPAREN || ((LA2_3156 >= SQUOTE) && (LA2_3156 <= USCORE))) ) { s = 2467; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3156 == LSBRAQUET || LA2_3156 == RSBRAQUET) ) { s = 405; } SEEK(index2_3156); if ( s>=0 ) { return s; } } break; case 610: { ANTLR3_UINT32 LA2_1102; ANTLR3_MARKER index2_1102; LA2_1102 = LA(1); index2_1102 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1102 == AND) ) { s = 1553; } else if ( (LA2_1102 == SP) ) { s = 35; } else if ( (LA2_1102 == QMARK) ) { s = 1102; } else if ( (LA2_1102 == COMMON_CHAR || LA2_1102 == HEX_CHAR) ) { s = 1554; } else if ( (LA2_1102 == DIGIT) ) { s = 1555; } else if ( (LA2_1102 == DASH || LA2_1102 == DOT || LA2_1102 == EMARK || LA2_1102 == LPAREN || LA2_1102 == RPAREN || ((LA2_1102 >= SQUOTE) && (LA2_1102 <= USCORE))) ) { s = 1556; } else if ( (LA2_1102 == PERCENT) ) { s = 1557; } else if ( (LA2_1102 == SEMI) ) { s = 105; } else if ( (LA2_1102 == COMMA) ) { s = 106; } else if ( (LA2_1102 == COLON || LA2_1102 == DOLLARD || LA2_1102 == PLUS || LA2_1102 == SLASH) ) { s = 1103; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1102 == LSBRAQUET || LA2_1102 == RSBRAQUET) ) { s = 1104; } else if ( (LA2_1102 == AT || LA2_1102 == EQUAL) ) { s = 108; } SEEK(index2_1102); if ( s>=0 ) { return s; } } break; case 611: { ANTLR3_UINT32 LA2_3328; ANTLR3_MARKER index2_3328; LA2_3328 = LA(1); index2_3328 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3328 == SEMI) ) { s = 3030; } else if ( (LA2_3328 == SLASH) ) { s = 3323; } else if ( (LA2_3328 == QMARK) ) { s = 1751; } else if ( (LA2_3328 == SP) ) { s = 204; } else if ( (LA2_3328 == COMMON_CHAR || LA2_3328 == HEX_CHAR) ) { s = 3324; } else if ( (LA2_3328 == DIGIT) ) { s = 3325; } else if ( (LA2_3328 == DOT) ) { s = 3326; } else if ( (LA2_3328 == PERCENT) ) { s = 3327; } else if ( (LA2_3328 == COLON) ) { s = 3328; } else if ( (LA2_3328 == AT) ) { s = 2229; } else if ( (LA2_3328 == AND) ) { s = 3329; } else if ( (LA2_3328 == EQUAL) ) { s = 2231; } else if ( (LA2_3328 == PLUS) ) { s = 3330; } else if ( (LA2_3328 == DOLLARD) ) { s = 3331; } else if ( (LA2_3328 == COMMA) ) { s = 2234; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3328 == CRLF) ) { s = 205; } else if ( (LA2_3328 == DASH || LA2_3328 == EMARK || LA2_3328 == LPAREN || LA2_3328 == RPAREN || ((LA2_3328 >= SQUOTE) && (LA2_3328 <= USCORE))) ) { s = 3332; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3328 == LSBRAQUET || LA2_3328 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3328); if ( s>=0 ) { return s; } } break; case 612: { ANTLR3_UINT32 LA2_3331; ANTLR3_MARKER index2_3331; LA2_3331 = LA(1); index2_3331 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3331 == SEMI) ) { s = 3030; } else if ( (LA2_3331 == SLASH) ) { s = 3323; } else if ( (LA2_3331 == QMARK) ) { s = 1751; } else if ( (LA2_3331 == SP) ) { s = 204; } else if ( (LA2_3331 == COMMON_CHAR || LA2_3331 == HEX_CHAR) ) { s = 3324; } else if ( (LA2_3331 == DIGIT) ) { s = 3325; } else if ( (LA2_3331 == DOT) ) { s = 3326; } else if ( (LA2_3331 == PERCENT) ) { s = 3327; } else if ( (LA2_3331 == COLON) ) { s = 3328; } else if ( (LA2_3331 == AT) ) { s = 2229; } else if ( (LA2_3331 == AND) ) { s = 3329; } else if ( (LA2_3331 == EQUAL) ) { s = 2231; } else if ( (LA2_3331 == PLUS) ) { s = 3330; } else if ( (LA2_3331 == DOLLARD) ) { s = 3331; } else if ( (LA2_3331 == COMMA) ) { s = 2234; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3331 == CRLF) ) { s = 205; } else if ( (LA2_3331 == DASH || LA2_3331 == EMARK || LA2_3331 == LPAREN || LA2_3331 == RPAREN || ((LA2_3331 >= SQUOTE) && (LA2_3331 <= USCORE))) ) { s = 3332; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3331 == LSBRAQUET || LA2_3331 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3331); if ( s>=0 ) { return s; } } break; case 613: { ANTLR3_UINT32 LA2_3330; ANTLR3_MARKER index2_3330; LA2_3330 = LA(1); index2_3330 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3330 == SEMI) ) { s = 3030; } else if ( (LA2_3330 == SLASH) ) { s = 3323; } else if ( (LA2_3330 == QMARK) ) { s = 1751; } else if ( (LA2_3330 == SP) ) { s = 204; } else if ( (LA2_3330 == COMMON_CHAR || LA2_3330 == HEX_CHAR) ) { s = 3324; } else if ( (LA2_3330 == DIGIT) ) { s = 3325; } else if ( (LA2_3330 == DOT) ) { s = 3326; } else if ( (LA2_3330 == PERCENT) ) { s = 3327; } else if ( (LA2_3330 == COLON) ) { s = 3328; } else if ( (LA2_3330 == AT) ) { s = 2229; } else if ( (LA2_3330 == AND) ) { s = 3329; } else if ( (LA2_3330 == EQUAL) ) { s = 2231; } else if ( (LA2_3330 == PLUS) ) { s = 3330; } else if ( (LA2_3330 == DOLLARD) ) { s = 3331; } else if ( (LA2_3330 == COMMA) ) { s = 2234; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3330 == CRLF) ) { s = 205; } else if ( (LA2_3330 == DASH || LA2_3330 == EMARK || LA2_3330 == LPAREN || LA2_3330 == RPAREN || ((LA2_3330 >= SQUOTE) && (LA2_3330 <= USCORE))) ) { s = 3332; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3330 == LSBRAQUET || LA2_3330 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3330); if ( s>=0 ) { return s; } } break; case 614: { ANTLR3_UINT32 LA2_2448; ANTLR3_MARKER index2_2448; LA2_2448 = LA(1); index2_2448 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2448 == COLON) ) { s = 2445; } else if ( (LA2_2448 == AT) ) { s = 89; } else if ( (LA2_2448 == COMMON_CHAR || LA2_2448 == HEX_CHAR) ) { s = 2446; } else if ( (LA2_2448 == DIGIT) ) { s = 2447; } else if ( (LA2_2448 == DASH || LA2_2448 == DOT || LA2_2448 == EMARK || LA2_2448 == LPAREN || LA2_2448 == RPAREN || ((LA2_2448 >= SQUOTE) && (LA2_2448 <= USCORE))) ) { s = 2448; } else if ( (LA2_2448 == PERCENT) ) { s = 2449; } else if ( (LA2_2448 == AND) ) { s = 1112; } else if ( (LA2_2448 == SP) ) { s = 35; } else if ( (LA2_2448 == QMARK) ) { s = 2450; } else if ( (LA2_2448 == SEMI) ) { s = 94; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2448 == LSBRAQUET || LA2_2448 == RSBRAQUET) ) { s = 2437; } else if ( (LA2_2448 == COMMA) ) { s = 97; } else if ( (LA2_2448 == EQUAL) ) { s = 99; } else if ( (LA2_2448 == DOLLARD || LA2_2448 == PLUS || LA2_2448 == SLASH) ) { s = 2451; } SEEK(index2_2448); if ( s>=0 ) { return s; } } break; case 615: { ANTLR3_UINT32 LA2_3348; ANTLR3_MARKER index2_3348; LA2_3348 = LA(1); index2_3348 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3348 == SEMI) ) { s = 2690; } else if ( (LA2_3348 == QMARK) ) { s = 2237; } else if ( (LA2_3348 == SP) ) { s = 35; } else if ( (LA2_3348 == SLASH) ) { s = 3323; } else if ( (LA2_3348 == COMMON_CHAR || LA2_3348 == HEX_CHAR) ) { s = 3568; } else if ( (LA2_3348 == DIGIT) ) { s = 3569; } else if ( (LA2_3348 == DOT) ) { s = 3570; } else if ( (LA2_3348 == PERCENT) ) { s = 3571; } else if ( (LA2_3348 == COLON) ) { s = 3572; } else if ( (LA2_3348 == AT) ) { s = 2684; } else if ( (LA2_3348 == AND) ) { s = 3573; } else if ( (LA2_3348 == EQUAL) ) { s = 2686; } else if ( (LA2_3348 == PLUS) ) { s = 3574; } else if ( (LA2_3348 == DOLLARD) ) { s = 3575; } else if ( (LA2_3348 == COMMA) ) { s = 2689; } else if ( (LA2_3348 == DASH || LA2_3348 == EMARK || LA2_3348 == LPAREN || LA2_3348 == RPAREN || ((LA2_3348 >= SQUOTE) && (LA2_3348 <= USCORE))) ) { s = 3576; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3348 == LSBRAQUET || LA2_3348 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3348); if ( s>=0 ) { return s; } } break; case 616: { ANTLR3_UINT32 LA2_3329; ANTLR3_MARKER index2_3329; LA2_3329 = LA(1); index2_3329 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3329 == SEMI) ) { s = 3030; } else if ( (LA2_3329 == SLASH) ) { s = 3323; } else if ( (LA2_3329 == QMARK) ) { s = 1751; } else if ( (LA2_3329 == SP) ) { s = 204; } else if ( (LA2_3329 == COMMON_CHAR || LA2_3329 == HEX_CHAR) ) { s = 3324; } else if ( (LA2_3329 == DIGIT) ) { s = 3325; } else if ( (LA2_3329 == DOT) ) { s = 3326; } else if ( (LA2_3329 == PERCENT) ) { s = 3327; } else if ( (LA2_3329 == COLON) ) { s = 3328; } else if ( (LA2_3329 == AT) ) { s = 2229; } else if ( (LA2_3329 == AND) ) { s = 3329; } else if ( (LA2_3329 == EQUAL) ) { s = 2231; } else if ( (LA2_3329 == PLUS) ) { s = 3330; } else if ( (LA2_3329 == DOLLARD) ) { s = 3331; } else if ( (LA2_3329 == COMMA) ) { s = 2234; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3329 == CRLF) ) { s = 205; } else if ( (LA2_3329 == DASH || LA2_3329 == EMARK || LA2_3329 == LPAREN || LA2_3329 == RPAREN || ((LA2_3329 >= SQUOTE) && (LA2_3329 <= USCORE))) ) { s = 3332; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3329 == LSBRAQUET || LA2_3329 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3329); if ( s>=0 ) { return s; } } break; case 617: { ANTLR3_UINT32 LA2_2428; ANTLR3_MARKER index2_2428; LA2_2428 = LA(1); index2_2428 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2428 == CRLF) ) { s = 2812; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2428 == QMARK) ) { s = 1090; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2428 == SP) ) { s = 1091; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2428 == SEMI) ) { s = 407; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2428 == DOT) ) { s = 712; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2428 == COMMON_CHAR || LA2_2428 == HEX_CHAR) ) { s = 1541; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2428 == DIGIT) ) { s = 714; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2428 == AND || LA2_2428 == COLON || LA2_2428 == DOLLARD || LA2_2428 == LSBRAQUET || LA2_2428 == PLUS || LA2_2428 == RSBRAQUET || LA2_2428 == SLASH) ) { s = 405; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2428 == DASH || LA2_2428 == EMARK || LA2_2428 == LPAREN || LA2_2428 == RPAREN || ((LA2_2428 >= SQUOTE) && (LA2_2428 <= USCORE))) ) { s = 715; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2428 == PERCENT) ) { s = 716; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2428 == EQUAL) ) { s = 1093; } SEEK(index2_2428); if ( s>=0 ) { return s; } } break; case 618: { ANTLR3_UINT32 LA2_2470; ANTLR3_MARKER index2_2470; LA2_2470 = LA(1); index2_2470 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2470 == SEMI) ) { s = 2477; } else if ( (LA2_2470 == QMARK) ) { s = 854; } else if ( (LA2_2470 == SP) ) { s = 204; } else if ( (LA2_2470 == SLASH) ) { s = 2009; } else if ( (LA2_2470 == COMMON_CHAR || LA2_2470 == HEX_CHAR) ) { s = 2468; } else if ( (LA2_2470 == DIGIT) ) { s = 2469; } else if ( (LA2_2470 == DOT) ) { s = 2470; } else if ( (LA2_2470 == PERCENT) ) { s = 2471; } else if ( (LA2_2470 == COLON) ) { s = 2472; } else if ( (LA2_2470 == AT) ) { s = 1134; } else if ( (LA2_2470 == AND) ) { s = 2473; } else if ( (LA2_2470 == EQUAL) ) { s = 2474; } else if ( (LA2_2470 == PLUS) ) { s = 2475; } else if ( (LA2_2470 == DOLLARD) ) { s = 2476; } else if ( (LA2_2470 == COMMA) ) { s = 1139; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2470 == CRLF) ) { s = 205; } else if ( (LA2_2470 == DASH || LA2_2470 == EMARK || LA2_2470 == LPAREN || LA2_2470 == RPAREN || ((LA2_2470 >= SQUOTE) && (LA2_2470 <= USCORE))) ) { s = 2478; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2470 == LSBRAQUET || LA2_2470 == RSBRAQUET) ) { s = 405; } SEEK(index2_2470); if ( s>=0 ) { return s; } } break; case 619: { ANTLR3_UINT32 LA2_2860; ANTLR3_MARKER index2_2860; LA2_2860 = LA(1); index2_2860 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2860 == QMARK) ) { s = 854; } else if ( (LA2_2860 == SP) ) { s = 204; } else if ( (LA2_2860 == SLASH) ) { s = 2009; } else if ( (LA2_2860 == SEMI) ) { s = 2477; } else if ( (LA2_2860 == COMMON_CHAR || LA2_2860 == HEX_CHAR) ) { s = 2860; } else if ( (LA2_2860 == DIGIT) ) { s = 2861; } else if ( (LA2_2860 == DOT) ) { s = 2862; } else if ( (LA2_2860 == PERCENT) ) { s = 2863; } else if ( (LA2_2860 == COLON) ) { s = 2534; } else if ( (LA2_2860 == AT) ) { s = 1576; } else if ( (LA2_2860 == AND) ) { s = 2535; } else if ( (LA2_2860 == EQUAL) ) { s = 2903; } else if ( (LA2_2860 == PLUS) ) { s = 2864; } else if ( (LA2_2860 == DOLLARD) ) { s = 2537; } else if ( (LA2_2860 == COMMA) ) { s = 1581; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2860 == CRLF) ) { s = 205; } else if ( (LA2_2860 == DASH || LA2_2860 == EMARK || LA2_2860 == LPAREN || LA2_2860 == RPAREN || ((LA2_2860 >= SQUOTE) && (LA2_2860 <= USCORE))) ) { s = 2865; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2860 == LSBRAQUET || LA2_2860 == RSBRAQUET) ) { s = 405; } SEEK(index2_2860); if ( s>=0 ) { return s; } } break; case 620: { ANTLR3_UINT32 LA2_2841; ANTLR3_MARKER index2_2841; LA2_2841 = LA(1); index2_2841 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2841 == SLASH) ) { s = 2455; } else if ( (LA2_2841 == QMARK) ) { s = 854; } else if ( (LA2_2841 == SP) ) { s = 2456; } else if ( (LA2_2841 == SEMI) ) { s = 1583; } else if ( (LA2_2841 == COMMON_CHAR || LA2_2841 == HEX_CHAR) ) { s = 2001; } else if ( (LA2_2841 == DIGIT) ) { s = 2002; } else if ( (LA2_2841 == DOT) ) { s = 2003; } else if ( (LA2_2841 == PERCENT) ) { s = 2004; } else if ( (LA2_2841 == COLON) ) { s = 2005; } else if ( (LA2_2841 == AT) ) { s = 1123; } else if ( (LA2_2841 == AND) ) { s = 2006; } else if ( (LA2_2841 == EQUAL) ) { s = 2457; } else if ( (LA2_2841 == PLUS) ) { s = 2007; } else if ( (LA2_2841 == DOLLARD) ) { s = 2008; } else if ( (LA2_2841 == COMMA) ) { s = 1128; } else if ( (LA2_2841 == CRLF) ) { s = 2458; } else if ( (LA2_2841 == BQUOTE) ) { s = 1203; } else if ( (LA2_2841 == DASH || LA2_2841 == EMARK || LA2_2841 == LPAREN || LA2_2841 == RPAREN || ((LA2_2841 >= SQUOTE) && (LA2_2841 <= USCORE))) ) { s = 2013; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2841 == LSBRAQUET || LA2_2841 == RSBRAQUET) ) { s = 405; } SEEK(index2_2841); if ( s>=0 ) { return s; } } break; case 621: { ANTLR3_UINT32 LA2_3430; ANTLR3_MARKER index2_3430; LA2_3430 = LA(1); index2_3430 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3430 == SLASH) ) { s = 2830; } else if ( (LA2_3430 == QMARK) ) { s = 854; } else if ( (LA2_3430 == SP) ) { s = 204; } else if ( (LA2_3430 == SEMI) ) { s = 2011; } else if ( (LA2_3430 == COMMON_CHAR || LA2_3430 == HEX_CHAR) ) { s = 2844; } else if ( (LA2_3430 == DIGIT) ) { s = 2845; } else if ( (LA2_3430 == DOT) ) { s = 2846; } else if ( (LA2_3430 == PERCENT) ) { s = 2847; } else if ( (LA2_3430 == COLON) ) { s = 2835; } else if ( (LA2_3430 == AT) ) { s = 1123; } else if ( (LA2_3430 == AND) ) { s = 2836; } else if ( (LA2_3430 == EQUAL) ) { s = 1125; } else if ( (LA2_3430 == PLUS) ) { s = 2848; } else if ( (LA2_3430 == DOLLARD) ) { s = 2838; } else if ( (LA2_3430 == COMMA) ) { s = 1128; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3430 == CRLF) ) { s = 205; } else if ( (LA2_3430 == DASH || LA2_3430 == EMARK || LA2_3430 == LPAREN || LA2_3430 == RPAREN || ((LA2_3430 >= SQUOTE) && (LA2_3430 <= USCORE))) ) { s = 2849; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3430 == LSBRAQUET || LA2_3430 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3430); if ( s>=0 ) { return s; } } break; case 622: { ANTLR3_UINT32 LA2_3595; ANTLR3_MARKER index2_3595; LA2_3595 = LA(1); index2_3595 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3595 == DIGIT) ) { s = 3749; } else if ( (LA2_3595 == DASH) ) { s = 1777; } else if ( (LA2_3595 == COMMON_CHAR || LA2_3595 == HEX_CHAR) ) { s = 1775; } else if ( (LA2_3595 == DOT) ) { s = 1774; } else if ( (LA2_3595 == COLON) ) { s = 2276; } else if ( (LA2_3595 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3595 == CRLF) ) { s = 205; } else if ( (LA2_3595 == SEMI) ) { s = 1237; } else if ( (LA2_3595 == QMARK) ) { s = 854; } else if ( (LA2_3595 == SLASH) ) { s = 241; } else if ( (LA2_3595 == EMARK || LA2_3595 == LPAREN || LA2_3595 == RPAREN || ((LA2_3595 >= SQUOTE) && (LA2_3595 <= USCORE))) ) { s = 807; } else if ( (LA2_3595 == PERCENT) ) { s = 808; } else if ( (LA2_3595 == AT) ) { s = 810; } else if ( (LA2_3595 == AND) ) { s = 811; } else if ( (LA2_3595 == EQUAL) ) { s = 812; } else if ( (LA2_3595 == PLUS) ) { s = 813; } else if ( (LA2_3595 == DOLLARD) ) { s = 814; } else if ( (LA2_3595 == COMMA) ) { s = 815; } SEEK(index2_3595); if ( s>=0 ) { return s; } } break; case 623: { ANTLR3_UINT32 LA2_2013; ANTLR3_MARKER index2_2013; LA2_2013 = LA(1); index2_2013 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2013 == SLASH) ) { s = 2455; } else if ( (LA2_2013 == QMARK) ) { s = 854; } else if ( (LA2_2013 == SP) ) { s = 2456; } else if ( (LA2_2013 == SEMI) ) { s = 1583; } else if ( (LA2_2013 == COMMON_CHAR || LA2_2013 == HEX_CHAR) ) { s = 2001; } else if ( (LA2_2013 == DIGIT) ) { s = 2002; } else if ( (LA2_2013 == DOT) ) { s = 2003; } else if ( (LA2_2013 == PERCENT) ) { s = 2004; } else if ( (LA2_2013 == COLON) ) { s = 2005; } else if ( (LA2_2013 == AT) ) { s = 1123; } else if ( (LA2_2013 == AND) ) { s = 2006; } else if ( (LA2_2013 == EQUAL) ) { s = 2457; } else if ( (LA2_2013 == PLUS) ) { s = 2007; } else if ( (LA2_2013 == DOLLARD) ) { s = 2008; } else if ( (LA2_2013 == COMMA) ) { s = 1128; } else if ( (LA2_2013 == CRLF) ) { s = 2458; } else if ( (LA2_2013 == BQUOTE) ) { s = 1203; } else if ( (LA2_2013 == DASH || LA2_2013 == EMARK || LA2_2013 == LPAREN || LA2_2013 == RPAREN || ((LA2_2013 >= SQUOTE) && (LA2_2013 <= USCORE))) ) { s = 2013; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2013 == LSBRAQUET || LA2_2013 == RSBRAQUET) ) { s = 405; } SEEK(index2_2013); if ( s>=0 ) { return s; } } break; case 624: { ANTLR3_UINT32 LA2_2957; ANTLR3_MARKER index2_2957; LA2_2957 = LA(1); index2_2957 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2957 == SP) ) { s = 2456; } else if ( (LA2_2957 == CRLF) ) { s = 2458; } else if ( (LA2_2957 == EQUAL) ) { s = 3260; } else if ( (LA2_2957 == SLASH) ) { s = 3261; } else if ( (LA2_2957 == QMARK) ) { s = 854; } else if ( (LA2_2957 == SEMI) ) { s = 2587; } else if ( (LA2_2957 == COMMON_CHAR || LA2_2957 == HEX_CHAR) ) { s = 2949; } else if ( (LA2_2957 == DIGIT) ) { s = 2950; } else if ( (LA2_2957 == DOT) ) { s = 2951; } else if ( (LA2_2957 == PERCENT) ) { s = 2952; } else if ( (LA2_2957 == PLUS) ) { s = 2953; } else if ( (LA2_2957 == BQUOTE) ) { s = 1203; } else if ( (LA2_2957 == COLON) ) { s = 2954; } else if ( (LA2_2957 == AT) ) { s = 2111; } else if ( (LA2_2957 == AND) ) { s = 2955; } else if ( (LA2_2957 == DOLLARD) ) { s = 2956; } else if ( (LA2_2957 == COMMA) ) { s = 2116; } else if ( (LA2_2957 == DASH || LA2_2957 == EMARK || LA2_2957 == LPAREN || LA2_2957 == RPAREN || ((LA2_2957 >= SQUOTE) && (LA2_2957 <= USCORE))) ) { s = 2957; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2957 == LSBRAQUET || LA2_2957 == RSBRAQUET) ) { s = 405; } SEEK(index2_2957); if ( s>=0 ) { return s; } } break; case 625: { ANTLR3_UINT32 LA2_2070; ANTLR3_MARKER index2_2070; LA2_2070 = LA(1); index2_2070 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2070 == SP) ) { s = 2456; } else if ( (LA2_2070 == CRLF) ) { s = 2458; } else if ( (LA2_2070 == EQUAL) ) { s = 2552; } else if ( (LA2_2070 == SLASH) ) { s = 2553; } else if ( (LA2_2070 == QMARK) ) { s = 854; } else if ( (LA2_2070 == SEMI) ) { s = 1630; } else if ( (LA2_2070 == COMMON_CHAR || LA2_2070 == HEX_CHAR) ) { s = 2068; } else if ( (LA2_2070 == DIGIT) ) { s = 2069; } else if ( (LA2_2070 == DOT) ) { s = 2070; } else if ( (LA2_2070 == PERCENT) ) { s = 2071; } else if ( (LA2_2070 == PLUS) ) { s = 2072; } else if ( (LA2_2070 == BQUOTE) ) { s = 1203; } else if ( (LA2_2070 == DASH || LA2_2070 == EMARK || LA2_2070 == LPAREN || LA2_2070 == RPAREN || ((LA2_2070 >= SQUOTE) && (LA2_2070 <= USCORE))) ) { s = 2073; } else if ( (LA2_2070 == COLON) ) { s = 1727; } else if ( (LA2_2070 == AND) ) { s = 1730; } else if ( (LA2_2070 == AT) ) { s = 810; } else if ( (LA2_2070 == DOLLARD) ) { s = 1732; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2070 == LSBRAQUET || LA2_2070 == RSBRAQUET) ) { s = 405; } else if ( (LA2_2070 == COMMA) ) { s = 815; } SEEK(index2_2070); if ( s>=0 ) { return s; } } break; case 626: { ANTLR3_UINT32 LA2_3532; ANTLR3_MARKER index2_3532; LA2_3532 = LA(1); index2_3532 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3532 == SP) ) { s = 2456; } else if ( (LA2_3532 == CRLF) ) { s = 2458; } else if ( (LA2_3532 == EQUAL) ) { s = 3260; } else if ( (LA2_3532 == SLASH) ) { s = 3261; } else if ( (LA2_3532 == QMARK) ) { s = 854; } else if ( (LA2_3532 == SEMI) ) { s = 2587; } else if ( (LA2_3532 == COMMON_CHAR || LA2_3532 == HEX_CHAR) ) { s = 2949; } else if ( (LA2_3532 == DIGIT) ) { s = 2950; } else if ( (LA2_3532 == DOT) ) { s = 2951; } else if ( (LA2_3532 == PERCENT) ) { s = 2952; } else if ( (LA2_3532 == PLUS) ) { s = 2953; } else if ( (LA2_3532 == BQUOTE) ) { s = 1203; } else if ( (LA2_3532 == COLON) ) { s = 2954; } else if ( (LA2_3532 == AT) ) { s = 2111; } else if ( (LA2_3532 == AND) ) { s = 2955; } else if ( (LA2_3532 == DOLLARD) ) { s = 2956; } else if ( (LA2_3532 == COMMA) ) { s = 2116; } else if ( (LA2_3532 == DASH || LA2_3532 == EMARK || LA2_3532 == LPAREN || LA2_3532 == RPAREN || ((LA2_3532 >= SQUOTE) && (LA2_3532 <= USCORE))) ) { s = 2957; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3532 == LSBRAQUET || LA2_3532 == RSBRAQUET) ) { s = 405; } SEEK(index2_3532); if ( s>=0 ) { return s; } } break; case 627: { ANTLR3_UINT32 LA2_2868; ANTLR3_MARKER index2_2868; LA2_2868 = LA(1); index2_2868 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2868 == COMMON_CHAR || LA2_2868 == HEX_CHAR) ) { s = 3162; } else if ( (LA2_2868 == DIGIT) ) { s = 3179; } else if ( (LA2_2868 == DOT) ) { s = 3163; } else if ( (LA2_2868 == PERCENT) ) { s = 3164; } else if ( (LA2_2868 == COLON) ) { s = 3165; } else if ( (LA2_2868 == AT) ) { s = 1710; } else if ( (LA2_2868 == AND) ) { s = 3166; } else if ( (LA2_2868 == EQUAL) ) { s = 3167; } else if ( (LA2_2868 == PLUS) ) { s = 3168; } else if ( (LA2_2868 == DOLLARD) ) { s = 3169; } else if ( (LA2_2868 == COMMA) ) { s = 1715; } else if ( (LA2_2868 == SEMI) ) { s = 3170; } else if ( (LA2_2868 == SLASH) ) { s = 3171; } else if ( (LA2_2868 == QMARK) ) { s = 854; } else if ( (LA2_2868 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2868 == CRLF) ) { s = 205; } else if ( (LA2_2868 == DASH || LA2_2868 == EMARK || LA2_2868 == LPAREN || LA2_2868 == RPAREN || ((LA2_2868 >= SQUOTE) && (LA2_2868 <= USCORE))) ) { s = 3172; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2868 == LSBRAQUET || LA2_2868 == RSBRAQUET) ) { s = 405; } SEEK(index2_2868); if ( s>=0 ) { return s; } } break; case 628: { ANTLR3_UINT32 LA2_3632; ANTLR3_MARKER index2_3632; LA2_3632 = LA(1); index2_3632 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3632 == SEMI) ) { s = 3170; } else if ( (LA2_3632 == SLASH) ) { s = 3171; } else if ( (LA2_3632 == QMARK) ) { s = 854; } else if ( (LA2_3632 == SP) ) { s = 204; } else if ( (LA2_3632 == COMMON_CHAR || LA2_3632 == HEX_CHAR) ) { s = 3162; } else if ( (LA2_3632 == DIGIT) ) { s = 3179; } else if ( (LA2_3632 == DOT) ) { s = 3163; } else if ( (LA2_3632 == PERCENT) ) { s = 3164; } else if ( (LA2_3632 == COLON) ) { s = 3165; } else if ( (LA2_3632 == AT) ) { s = 1710; } else if ( (LA2_3632 == AND) ) { s = 3166; } else if ( (LA2_3632 == EQUAL) ) { s = 3167; } else if ( (LA2_3632 == PLUS) ) { s = 3168; } else if ( (LA2_3632 == DOLLARD) ) { s = 3169; } else if ( (LA2_3632 == COMMA) ) { s = 1715; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3632 == CRLF) ) { s = 205; } else if ( (LA2_3632 == DASH || LA2_3632 == EMARK || LA2_3632 == LPAREN || LA2_3632 == RPAREN || ((LA2_3632 >= SQUOTE) && (LA2_3632 <= USCORE))) ) { s = 3172; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3632 == LSBRAQUET || LA2_3632 == RSBRAQUET) ) { s = 405; } SEEK(index2_3632); if ( s>=0 ) { return s; } } break; case 629: { ANTLR3_UINT32 LA2_2222; ANTLR3_MARKER index2_2222; LA2_2222 = LA(1); index2_2222 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2222 == SP) ) { s = 2456; } else if ( (LA2_2222 == CRLF) ) { s = 2458; } else if ( (LA2_2222 == EQUAL) ) { s = 2663; } else if ( (LA2_2222 == SLASH) ) { s = 2664; } else if ( (LA2_2222 == QMARK) ) { s = 1751; } else if ( (LA2_2222 == SEMI) ) { s = 1749; } else if ( (LA2_2222 == COMMON_CHAR || LA2_2222 == HEX_CHAR) ) { s = 2218; } else if ( (LA2_2222 == DIGIT) ) { s = 2219; } else if ( (LA2_2222 == DOT) ) { s = 2220; } else if ( (LA2_2222 == PERCENT) ) { s = 2221; } else if ( (LA2_2222 == PLUS) ) { s = 2222; } else if ( (LA2_2222 == BQUOTE) ) { s = 1203; } else if ( (LA2_2222 == DASH || LA2_2222 == EMARK || LA2_2222 == LPAREN || LA2_2222 == RPAREN || ((LA2_2222 >= SQUOTE) && (LA2_2222 <= USCORE))) ) { s = 2223; } else if ( (LA2_2222 == AND || LA2_2222 == COLON || LA2_2222 == DOLLARD) ) { s = 1790; } else if ( (LA2_2222 == COMMA) ) { s = 506; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2222 == LSBRAQUET || LA2_2222 == RSBRAQUET) ) { s = 405; } else if ( (LA2_2222 == AT) ) { s = 508; } SEEK(index2_2222); if ( s>=0 ) { return s; } } break; case 630: { ANTLR3_UINT32 LA2_3175; ANTLR3_MARKER index2_3175; LA2_3175 = LA(1); index2_3175 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3175 == SLASH) ) { s = 3465; } else if ( (LA2_3175 == QMARK) ) { s = 854; } else if ( (LA2_3175 == SP) ) { s = 1585; } else if ( (LA2_3175 == CRLF) ) { s = 1588; } else if ( (LA2_3175 == SEMI) ) { s = 2028; } else if ( (LA2_3175 == COMMON_CHAR || LA2_3175 == HEX_CHAR) ) { s = 3173; } else if ( (LA2_3175 == DIGIT) ) { s = 3174; } else if ( (LA2_3175 == DOT) ) { s = 3175; } else if ( (LA2_3175 == PERCENT) ) { s = 3176; } else if ( (LA2_3175 == PLUS) ) { s = 3177; } else if ( (LA2_3175 == BQUOTE) ) { s = 2092; } else if ( (LA2_3175 == DASH || LA2_3175 == EMARK || LA2_3175 == LPAREN || LA2_3175 == RPAREN || ((LA2_3175 >= SQUOTE) && (LA2_3175 <= USCORE))) ) { s = 3178; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3175 == AND || LA2_3175 == COLON || LA2_3175 == DOLLARD || LA2_3175 == LSBRAQUET || LA2_3175 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3175); if ( s>=0 ) { return s; } } break; case 631: { ANTLR3_UINT32 LA2_1085; ANTLR3_MARKER index2_1085; LA2_1085 = LA(1); index2_1085 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1085 == COLON) ) { s = 1082; } else if ( (LA2_1085 == AT) ) { s = 89; } else if ( (LA2_1085 == COMMON_CHAR || LA2_1085 == HEX_CHAR) ) { s = 1083; } else if ( (LA2_1085 == DIGIT) ) { s = 1084; } else if ( (LA2_1085 == DOT) ) { s = 1085; } else if ( (LA2_1085 == PERCENT) ) { s = 1086; } else if ( (LA2_1085 == QMARK) ) { s = 206; } else if ( (LA2_1085 == SEMI) ) { s = 202; } else if ( (LA2_1085 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1085 == CRLF) ) { s = 205; } else if ( (LA2_1085 == AND || LA2_1085 == DOLLARD || LA2_1085 == PLUS || LA2_1085 == SLASH) ) { s = 1087; } else if ( (LA2_1085 == DASH || LA2_1085 == EMARK || LA2_1085 == LPAREN || LA2_1085 == RPAREN || ((LA2_1085 >= SQUOTE) && (LA2_1085 <= USCORE))) ) { s = 1088; } else if ( (LA2_1085 == COMMA) ) { s = 97; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1085 == LSBRAQUET || LA2_1085 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_1085 == EQUAL) ) { s = 99; } SEEK(index2_1085); if ( s>=0 ) { return s; } } break; case 632: { ANTLR3_UINT32 LA2_2530; ANTLR3_MARKER index2_2530; LA2_2530 = LA(1); index2_2530 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2530 == QMARK) ) { s = 854; } else if ( (LA2_2530 == SP) ) { s = 2456; } else if ( (LA2_2530 == SLASH) ) { s = 2455; } else if ( (LA2_2530 == SEMI) ) { s = 2051; } else if ( (LA2_2530 == COMMON_CHAR || LA2_2530 == HEX_CHAR) ) { s = 2530; } else if ( (LA2_2530 == DIGIT) ) { s = 2531; } else if ( (LA2_2530 == DOT) ) { s = 2532; } else if ( (LA2_2530 == PERCENT) ) { s = 2533; } else if ( (LA2_2530 == COLON) ) { s = 2534; } else if ( (LA2_2530 == AT) ) { s = 1576; } else if ( (LA2_2530 == AND) ) { s = 2535; } else if ( (LA2_2530 == EQUAL) ) { s = 2900; } else if ( (LA2_2530 == PLUS) ) { s = 2536; } else if ( (LA2_2530 == DOLLARD) ) { s = 2537; } else if ( (LA2_2530 == COMMA) ) { s = 1581; } else if ( (LA2_2530 == CRLF) ) { s = 2458; } else if ( (LA2_2530 == BQUOTE) ) { s = 1203; } else if ( (LA2_2530 == DASH || LA2_2530 == EMARK || LA2_2530 == LPAREN || LA2_2530 == RPAREN || ((LA2_2530 >= SQUOTE) && (LA2_2530 <= USCORE))) ) { s = 2538; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2530 == LSBRAQUET || LA2_2530 == RSBRAQUET) ) { s = 405; } SEEK(index2_2530); if ( s>=0 ) { return s; } } break; case 633: { ANTLR3_UINT32 LA2_17; ANTLR3_MARKER index2_17; LA2_17 = LA(1); index2_17 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_17 == COLON) ) { s = 15; } else if ( (LA2_17 == COMMON_CHAR || LA2_17 == HEX_CHAR) ) { s = 16; } else if ( (LA2_17 == DIGIT) ) { s = 17; } else if ( (LA2_17 == DASH) ) { s = 18; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_17 == PERCENT) ) { s = 11; } else if ( (LA2_17 == PLUS) ) { s = 19; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_17 == BQUOTE) ) { s = 13; } else if ( (LA2_17 == DOT) ) { s = 20; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_17 == EMARK || LA2_17 == LPAREN || LA2_17 == RPAREN || ((LA2_17 >= SQUOTE) && (LA2_17 <= USCORE))) ) { s = 10; } SEEK(index2_17); if ( s>=0 ) { return s; } } break; case 634: { ANTLR3_UINT32 LA2_3286; ANTLR3_MARKER index2_3286; LA2_3286 = LA(1); index2_3286 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3286 == SP) ) { s = 2456; } else if ( (LA2_3286 == CRLF) ) { s = 2458; } else if ( (LA2_3286 == EQUAL) ) { s = 3547; } else if ( (LA2_3286 == SLASH) ) { s = 3261; } else if ( (LA2_3286 == QMARK) ) { s = 854; } else if ( (LA2_3286 == SEMI) ) { s = 2986; } else if ( (LA2_3286 == COMMON_CHAR || LA2_3286 == HEX_CHAR) ) { s = 3286; } else if ( (LA2_3286 == DIGIT) ) { s = 3287; } else if ( (LA2_3286 == DOT) ) { s = 3288; } else if ( (LA2_3286 == PERCENT) ) { s = 3289; } else if ( (LA2_3286 == PLUS) ) { s = 3290; } else if ( (LA2_3286 == BQUOTE) ) { s = 1203; } else if ( (LA2_3286 == COLON) ) { s = 3291; } else if ( (LA2_3286 == AT) ) { s = 2578; } else if ( (LA2_3286 == AND) ) { s = 3292; } else if ( (LA2_3286 == DOLLARD) ) { s = 3293; } else if ( (LA2_3286 == COMMA) ) { s = 2583; } else if ( (LA2_3286 == DASH || LA2_3286 == EMARK || LA2_3286 == LPAREN || LA2_3286 == RPAREN || ((LA2_3286 >= SQUOTE) && (LA2_3286 <= USCORE))) ) { s = 3294; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3286 == LSBRAQUET || LA2_3286 == RSBRAQUET) ) { s = 405; } SEEK(index2_3286); if ( s>=0 ) { return s; } } break; case 635: { ANTLR3_UINT32 LA2_398; ANTLR3_MARKER index2_398; LA2_398 = LA(1); index2_398 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_398 == COLON) ) { s = 396; } else if ( (LA2_398 == AT) ) { s = 89; } else if ( (LA2_398 == COMMON_CHAR || LA2_398 == HEX_CHAR) ) { s = 397; } else if ( (LA2_398 == DIGIT) ) { s = 398; } else if ( (LA2_398 == DOT) ) { s = 399; } else if ( (LA2_398 == PERCENT) ) { s = 400; } else if ( (LA2_398 == QMARK) ) { s = 206; } else if ( (LA2_398 == SEMI) ) { s = 202; } else if ( (LA2_398 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_398 == CRLF) ) { s = 205; } else if ( (LA2_398 == AND || LA2_398 == DOLLARD || LA2_398 == PLUS || LA2_398 == SLASH) ) { s = 401; } else if ( (LA2_398 == DASH || LA2_398 == EMARK || LA2_398 == LPAREN || LA2_398 == RPAREN || ((LA2_398 >= SQUOTE) && (LA2_398 <= USCORE))) ) { s = 404; } else if ( (LA2_398 == EQUAL) ) { s = 709; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_398 == LSBRAQUET || LA2_398 == RSBRAQUET) ) { s = 405; } else if ( (LA2_398 == COMMA) ) { s = 97; } SEEK(index2_398); if ( s>=0 ) { return s; } } break; case 636: { ANTLR3_UINT32 LA2_2469; ANTLR3_MARKER index2_2469; LA2_2469 = LA(1); index2_2469 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2469 == SEMI) ) { s = 2477; } else if ( (LA2_2469 == QMARK) ) { s = 854; } else if ( (LA2_2469 == SP) ) { s = 204; } else if ( (LA2_2469 == SLASH) ) { s = 2009; } else if ( (LA2_2469 == COMMON_CHAR || LA2_2469 == HEX_CHAR) ) { s = 2468; } else if ( (LA2_2469 == DIGIT) ) { s = 2469; } else if ( (LA2_2469 == DOT) ) { s = 2470; } else if ( (LA2_2469 == PERCENT) ) { s = 2471; } else if ( (LA2_2469 == COLON) ) { s = 2472; } else if ( (LA2_2469 == AT) ) { s = 1134; } else if ( (LA2_2469 == AND) ) { s = 2473; } else if ( (LA2_2469 == EQUAL) ) { s = 2474; } else if ( (LA2_2469 == PLUS) ) { s = 2475; } else if ( (LA2_2469 == DOLLARD) ) { s = 2476; } else if ( (LA2_2469 == COMMA) ) { s = 1139; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2469 == CRLF) ) { s = 205; } else if ( (LA2_2469 == DASH || LA2_2469 == EMARK || LA2_2469 == LPAREN || LA2_2469 == RPAREN || ((LA2_2469 >= SQUOTE) && (LA2_2469 <= USCORE))) ) { s = 2478; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2469 == LSBRAQUET || LA2_2469 == RSBRAQUET) ) { s = 405; } SEEK(index2_2469); if ( s>=0 ) { return s; } } break; case 637: { ANTLR3_UINT32 LA2_2852; ANTLR3_MARKER index2_2852; LA2_2852 = LA(1); index2_2852 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2852 == SEMI) ) { s = 2477; } else if ( (LA2_2852 == QMARK) ) { s = 854; } else if ( (LA2_2852 == SP) ) { s = 204; } else if ( (LA2_2852 == SLASH) ) { s = 2830; } else if ( (LA2_2852 == COMMON_CHAR || LA2_2852 == HEX_CHAR) ) { s = 2851; } else if ( (LA2_2852 == DIGIT) ) { s = 2852; } else if ( (LA2_2852 == DOT) ) { s = 2853; } else if ( (LA2_2852 == PERCENT) ) { s = 2854; } else if ( (LA2_2852 == COLON) ) { s = 2855; } else if ( (LA2_2852 == AT) ) { s = 1134; } else if ( (LA2_2852 == AND) ) { s = 2856; } else if ( (LA2_2852 == EQUAL) ) { s = 1136; } else if ( (LA2_2852 == PLUS) ) { s = 2857; } else if ( (LA2_2852 == DOLLARD) ) { s = 2858; } else if ( (LA2_2852 == COMMA) ) { s = 1139; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2852 == CRLF) ) { s = 205; } else if ( (LA2_2852 == DASH || LA2_2852 == EMARK || LA2_2852 == LPAREN || LA2_2852 == RPAREN || ((LA2_2852 >= SQUOTE) && (LA2_2852 <= USCORE))) ) { s = 2859; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2852 == LSBRAQUET || LA2_2852 == RSBRAQUET) ) { s = 1080; } SEEK(index2_2852); if ( s>=0 ) { return s; } } break; case 638: { ANTLR3_UINT32 LA2_3170; ANTLR3_MARKER index2_3170; LA2_3170 = LA(1); index2_3170 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3170 == COMMON_CHAR || LA2_3170 == HEX_CHAR) ) { s = 3445; } else if ( (LA2_3170 == DIGIT) ) { s = 3446; } else if ( (LA2_3170 == DOT) ) { s = 3447; } else if ( (LA2_3170 == PERCENT) ) { s = 3448; } else if ( (LA2_3170 == COLON) ) { s = 3449; } else if ( (LA2_3170 == AT) ) { s = 2184; } else if ( (LA2_3170 == AND) ) { s = 3450; } else if ( (LA2_3170 == EQUAL) ) { s = 2186; } else if ( (LA2_3170 == PLUS) ) { s = 3451; } else if ( (LA2_3170 == DOLLARD) ) { s = 3452; } else if ( (LA2_3170 == COMMA) ) { s = 2189; } else if ( (LA2_3170 == SLASH) ) { s = 3171; } else if ( (LA2_3170 == QMARK) ) { s = 854; } else if ( (LA2_3170 == SP) ) { s = 402; } else if ( (LA2_3170 == SEMI) ) { s = 3170; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3170 == CRLF) ) { s = 403; } else if ( (LA2_3170 == DASH || LA2_3170 == EMARK || LA2_3170 == LPAREN || LA2_3170 == RPAREN || ((LA2_3170 >= SQUOTE) && (LA2_3170 <= USCORE))) ) { s = 3453; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3170 == LSBRAQUET || LA2_3170 == RSBRAQUET) ) { s = 405; } SEEK(index2_3170); if ( s>=0 ) { return s; } } break; case 639: { ANTLR3_UINT32 LA2_1084; ANTLR3_MARKER index2_1084; LA2_1084 = LA(1); index2_1084 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1084 == COLON) ) { s = 1082; } else if ( (LA2_1084 == AT) ) { s = 89; } else if ( (LA2_1084 == COMMON_CHAR || LA2_1084 == HEX_CHAR) ) { s = 1083; } else if ( (LA2_1084 == DIGIT) ) { s = 1084; } else if ( (LA2_1084 == DOT) ) { s = 1085; } else if ( (LA2_1084 == PERCENT) ) { s = 1086; } else if ( (LA2_1084 == QMARK) ) { s = 206; } else if ( (LA2_1084 == SEMI) ) { s = 202; } else if ( (LA2_1084 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1084 == CRLF) ) { s = 205; } else if ( (LA2_1084 == AND || LA2_1084 == DOLLARD || LA2_1084 == PLUS || LA2_1084 == SLASH) ) { s = 1087; } else if ( (LA2_1084 == DASH || LA2_1084 == EMARK || LA2_1084 == LPAREN || LA2_1084 == RPAREN || ((LA2_1084 >= SQUOTE) && (LA2_1084 <= USCORE))) ) { s = 1088; } else if ( (LA2_1084 == COMMA) ) { s = 97; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1084 == LSBRAQUET || LA2_1084 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_1084 == EQUAL) ) { s = 99; } SEEK(index2_1084); if ( s>=0 ) { return s; } } break; case 640: { ANTLR3_UINT32 LA2_3772; ANTLR3_MARKER index2_3772; LA2_3772 = LA(1); index2_3772 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3772 == SEMI) ) { s = 3170; } else if ( (LA2_3772 == SLASH) ) { s = 3435; } else if ( (LA2_3772 == QMARK) ) { s = 854; } else if ( (LA2_3772 == SP) ) { s = 204; } else if ( (LA2_3772 == COMMON_CHAR || LA2_3772 == HEX_CHAR) ) { s = 3436; } else if ( (LA2_3772 == DIGIT) ) { s = 3437; } else if ( (LA2_3772 == DOT) ) { s = 3438; } else if ( (LA2_3772 == PERCENT) ) { s = 3439; } else if ( (LA2_3772 == COLON) ) { s = 3440; } else if ( (LA2_3772 == AT) ) { s = 1710; } else if ( (LA2_3772 == AND) ) { s = 3441; } else if ( (LA2_3772 == EQUAL) ) { s = 1712; } else if ( (LA2_3772 == PLUS) ) { s = 3442; } else if ( (LA2_3772 == DOLLARD) ) { s = 3443; } else if ( (LA2_3772 == COMMA) ) { s = 1715; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3772 == CRLF) ) { s = 205; } else if ( (LA2_3772 == DASH || LA2_3772 == EMARK || LA2_3772 == LPAREN || LA2_3772 == RPAREN || ((LA2_3772 >= SQUOTE) && (LA2_3772 <= USCORE))) ) { s = 3444; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3772 == LSBRAQUET || LA2_3772 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3772); if ( s>=0 ) { return s; } } break; case 641: { ANTLR3_UINT32 LA2_2069; ANTLR3_MARKER index2_2069; LA2_2069 = LA(1); index2_2069 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2069 == SP) ) { s = 2456; } else if ( (LA2_2069 == CRLF) ) { s = 2458; } else if ( (LA2_2069 == EQUAL) ) { s = 2552; } else if ( (LA2_2069 == SLASH) ) { s = 2553; } else if ( (LA2_2069 == QMARK) ) { s = 854; } else if ( (LA2_2069 == SEMI) ) { s = 1630; } else if ( (LA2_2069 == COMMON_CHAR || LA2_2069 == HEX_CHAR) ) { s = 2068; } else if ( (LA2_2069 == DIGIT) ) { s = 2069; } else if ( (LA2_2069 == DOT) ) { s = 2070; } else if ( (LA2_2069 == PERCENT) ) { s = 2071; } else if ( (LA2_2069 == PLUS) ) { s = 2072; } else if ( (LA2_2069 == BQUOTE) ) { s = 1203; } else if ( (LA2_2069 == DASH || LA2_2069 == EMARK || LA2_2069 == LPAREN || LA2_2069 == RPAREN || ((LA2_2069 >= SQUOTE) && (LA2_2069 <= USCORE))) ) { s = 2073; } else if ( (LA2_2069 == COLON) ) { s = 1727; } else if ( (LA2_2069 == AND) ) { s = 1730; } else if ( (LA2_2069 == AT) ) { s = 810; } else if ( (LA2_2069 == DOLLARD) ) { s = 1732; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2069 == LSBRAQUET || LA2_2069 == RSBRAQUET) ) { s = 405; } else if ( (LA2_2069 == COMMA) ) { s = 815; } SEEK(index2_2069); if ( s>=0 ) { return s; } } break; case 642: { ANTLR3_UINT32 LA2_2953; ANTLR3_MARKER index2_2953; LA2_2953 = LA(1); index2_2953 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2953 == SP) ) { s = 2456; } else if ( (LA2_2953 == CRLF) ) { s = 2458; } else if ( (LA2_2953 == EQUAL) ) { s = 3260; } else if ( (LA2_2953 == SLASH) ) { s = 3261; } else if ( (LA2_2953 == QMARK) ) { s = 854; } else if ( (LA2_2953 == SEMI) ) { s = 2587; } else if ( (LA2_2953 == COMMON_CHAR || LA2_2953 == HEX_CHAR) ) { s = 2949; } else if ( (LA2_2953 == DIGIT) ) { s = 2950; } else if ( (LA2_2953 == DOT) ) { s = 2951; } else if ( (LA2_2953 == PERCENT) ) { s = 2952; } else if ( (LA2_2953 == PLUS) ) { s = 2953; } else if ( (LA2_2953 == BQUOTE) ) { s = 1203; } else if ( (LA2_2953 == COLON) ) { s = 2954; } else if ( (LA2_2953 == AT) ) { s = 2111; } else if ( (LA2_2953 == AND) ) { s = 2955; } else if ( (LA2_2953 == DOLLARD) ) { s = 2956; } else if ( (LA2_2953 == COMMA) ) { s = 2116; } else if ( (LA2_2953 == DASH || LA2_2953 == EMARK || LA2_2953 == LPAREN || LA2_2953 == RPAREN || ((LA2_2953 >= SQUOTE) && (LA2_2953 <= USCORE))) ) { s = 2957; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2953 == LSBRAQUET || LA2_2953 == RSBRAQUET) ) { s = 405; } SEEK(index2_2953); if ( s>=0 ) { return s; } } break; case 643: { ANTLR3_UINT32 LA2_2007; ANTLR3_MARKER index2_2007; LA2_2007 = LA(1); index2_2007 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2007 == SLASH) ) { s = 2455; } else if ( (LA2_2007 == QMARK) ) { s = 854; } else if ( (LA2_2007 == SP) ) { s = 2456; } else if ( (LA2_2007 == SEMI) ) { s = 1583; } else if ( (LA2_2007 == COMMON_CHAR || LA2_2007 == HEX_CHAR) ) { s = 2001; } else if ( (LA2_2007 == DIGIT) ) { s = 2002; } else if ( (LA2_2007 == DOT) ) { s = 2003; } else if ( (LA2_2007 == PERCENT) ) { s = 2004; } else if ( (LA2_2007 == COLON) ) { s = 2005; } else if ( (LA2_2007 == AT) ) { s = 1123; } else if ( (LA2_2007 == AND) ) { s = 2006; } else if ( (LA2_2007 == EQUAL) ) { s = 2457; } else if ( (LA2_2007 == PLUS) ) { s = 2007; } else if ( (LA2_2007 == DOLLARD) ) { s = 2008; } else if ( (LA2_2007 == COMMA) ) { s = 1128; } else if ( (LA2_2007 == CRLF) ) { s = 2458; } else if ( (LA2_2007 == BQUOTE) ) { s = 1203; } else if ( (LA2_2007 == DASH || LA2_2007 == EMARK || LA2_2007 == LPAREN || LA2_2007 == RPAREN || ((LA2_2007 >= SQUOTE) && (LA2_2007 <= USCORE))) ) { s = 2013; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2007 == LSBRAQUET || LA2_2007 == RSBRAQUET) ) { s = 405; } SEEK(index2_2007); if ( s>=0 ) { return s; } } break; case 644: { ANTLR3_UINT32 LA2_1056; ANTLR3_MARKER index2_1056; LA2_1056 = LA(1); index2_1056 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1056 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1056 == CRLF) ) { s = 205; } else if ( (LA2_1056 == SEMI) ) { s = 693; } else if ( (LA2_1056 == QMARK) ) { s = 694; } else if ( (LA2_1056 == DIGIT) ) { s = 1056; } else if ( (LA2_1056 == COMMA) ) { s = 106; } else if ( (((LA2_1056 >= AND) && (LA2_1056 <= AT)) || LA2_1056 == COLON || LA2_1056 == DOLLARD || LA2_1056 == EQUAL || LA2_1056 == PLUS || LA2_1056 == SLASH) ) { s = 108; } else if ( (LA2_1056 == COMMON_CHAR || LA2_1056 == HEX_CHAR) ) { s = 109; } else if ( (LA2_1056 == DASH || LA2_1056 == DOT || LA2_1056 == EMARK || LA2_1056 == LPAREN || LA2_1056 == RPAREN || ((LA2_1056 >= SQUOTE) && (LA2_1056 <= USCORE))) ) { s = 111; } else if ( (LA2_1056 == PERCENT) ) { s = 112; } SEEK(index2_1056); if ( s>=0 ) { return s; } } break; case 645: { ANTLR3_UINT32 LA2_3163; ANTLR3_MARKER index2_3163; LA2_3163 = LA(1); index2_3163 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3163 == SEMI) ) { s = 3170; } else if ( (LA2_3163 == SLASH) ) { s = 3171; } else if ( (LA2_3163 == QMARK) ) { s = 854; } else if ( (LA2_3163 == SP) ) { s = 204; } else if ( (LA2_3163 == COMMON_CHAR || LA2_3163 == HEX_CHAR) ) { s = 3162; } else if ( (LA2_3163 == DIGIT) ) { s = 3179; } else if ( (LA2_3163 == DOT) ) { s = 3163; } else if ( (LA2_3163 == PERCENT) ) { s = 3164; } else if ( (LA2_3163 == COLON) ) { s = 3165; } else if ( (LA2_3163 == AT) ) { s = 1710; } else if ( (LA2_3163 == AND) ) { s = 3166; } else if ( (LA2_3163 == EQUAL) ) { s = 3167; } else if ( (LA2_3163 == PLUS) ) { s = 3168; } else if ( (LA2_3163 == DOLLARD) ) { s = 3169; } else if ( (LA2_3163 == COMMA) ) { s = 1715; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3163 == CRLF) ) { s = 205; } else if ( (LA2_3163 == DASH || LA2_3163 == EMARK || LA2_3163 == LPAREN || LA2_3163 == RPAREN || ((LA2_3163 >= SQUOTE) && (LA2_3163 <= USCORE))) ) { s = 3172; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3163 == LSBRAQUET || LA2_3163 == RSBRAQUET) ) { s = 405; } SEEK(index2_3163); if ( s>=0 ) { return s; } } break; case 646: { ANTLR3_UINT32 LA2_3291; ANTLR3_MARKER index2_3291; LA2_3291 = LA(1); index2_3291 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3291 == QMARK) ) { s = 854; } else if ( (LA2_3291 == SP) ) { s = 204; } else if ( (LA2_3291 == SLASH) ) { s = 2928; } else if ( (LA2_3291 == SEMI) ) { s = 3251; } else if ( (LA2_3291 == COMMON_CHAR || LA2_3291 == HEX_CHAR) ) { s = 3503; } else if ( (LA2_3291 == DIGIT) ) { s = 3504; } else if ( (LA2_3291 == DOT) ) { s = 3505; } else if ( (LA2_3291 == PERCENT) ) { s = 3506; } else if ( (LA2_3291 == COLON) ) { s = 3291; } else if ( (LA2_3291 == AT) ) { s = 2578; } else if ( (LA2_3291 == AND) ) { s = 3292; } else if ( (LA2_3291 == EQUAL) ) { s = 3550; } else if ( (LA2_3291 == PLUS) ) { s = 3507; } else if ( (LA2_3291 == DOLLARD) ) { s = 3293; } else if ( (LA2_3291 == COMMA) ) { s = 2583; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3291 == CRLF) ) { s = 205; } else if ( (LA2_3291 == DASH || LA2_3291 == EMARK || LA2_3291 == LPAREN || LA2_3291 == RPAREN || ((LA2_3291 >= SQUOTE) && (LA2_3291 <= USCORE))) ) { s = 3508; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3291 == LSBRAQUET || LA2_3291 == RSBRAQUET) ) { s = 405; } SEEK(index2_3291); if ( s>=0 ) { return s; } } break; case 647: { ANTLR3_UINT32 LA2_3261; ANTLR3_MARKER index2_3261; LA2_3261 = LA(1); index2_3261 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3261 == COMMON_CHAR || LA2_3261 == HEX_CHAR) ) { s = 3521; } else if ( (LA2_3261 == DIGIT) ) { s = 3522; } else if ( (LA2_3261 == DOT) ) { s = 3523; } else if ( (LA2_3261 == PERCENT) ) { s = 3524; } else if ( (LA2_3261 == COLON) ) { s = 3525; } else if ( (LA2_3261 == AT) ) { s = 2963; } else if ( (LA2_3261 == AND) ) { s = 3526; } else if ( (LA2_3261 == EQUAL) ) { s = 3527; } else if ( (LA2_3261 == PLUS) ) { s = 3528; } else if ( (LA2_3261 == DOLLARD) ) { s = 3529; } else if ( (LA2_3261 == COMMA) ) { s = 2968; } else if ( (LA2_3261 == SEMI) ) { s = 3530; } else if ( (LA2_3261 == SLASH) ) { s = 2928; } else if ( (LA2_3261 == QMARK) ) { s = 854; } else if ( (LA2_3261 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3261 == CRLF) ) { s = 205; } else if ( (LA2_3261 == DASH || LA2_3261 == EMARK || LA2_3261 == LPAREN || LA2_3261 == RPAREN || ((LA2_3261 >= SQUOTE) && (LA2_3261 <= USCORE))) ) { s = 3531; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3261 == LSBRAQUET || LA2_3261 == RSBRAQUET) ) { s = 405; } SEEK(index2_3261); if ( s>=0 ) { return s; } } break; case 648: { ANTLR3_UINT32 LA2_3292; ANTLR3_MARKER index2_3292; LA2_3292 = LA(1); index2_3292 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3292 == QMARK) ) { s = 854; } else if ( (LA2_3292 == SP) ) { s = 204; } else if ( (LA2_3292 == SLASH) ) { s = 2928; } else if ( (LA2_3292 == SEMI) ) { s = 3251; } else if ( (LA2_3292 == COMMON_CHAR || LA2_3292 == HEX_CHAR) ) { s = 3503; } else if ( (LA2_3292 == DIGIT) ) { s = 3504; } else if ( (LA2_3292 == DOT) ) { s = 3505; } else if ( (LA2_3292 == PERCENT) ) { s = 3506; } else if ( (LA2_3292 == COLON) ) { s = 3291; } else if ( (LA2_3292 == AT) ) { s = 2578; } else if ( (LA2_3292 == AND) ) { s = 3292; } else if ( (LA2_3292 == EQUAL) ) { s = 3550; } else if ( (LA2_3292 == PLUS) ) { s = 3507; } else if ( (LA2_3292 == DOLLARD) ) { s = 3293; } else if ( (LA2_3292 == COMMA) ) { s = 2583; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3292 == CRLF) ) { s = 205; } else if ( (LA2_3292 == DASH || LA2_3292 == EMARK || LA2_3292 == LPAREN || LA2_3292 == RPAREN || ((LA2_3292 >= SQUOTE) && (LA2_3292 <= USCORE))) ) { s = 3508; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3292 == LSBRAQUET || LA2_3292 == RSBRAQUET) ) { s = 405; } SEEK(index2_3292); if ( s>=0 ) { return s; } } break; case 649: { ANTLR3_UINT32 LA2_3178; ANTLR3_MARKER index2_3178; LA2_3178 = LA(1); index2_3178 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3178 == SLASH) ) { s = 3465; } else if ( (LA2_3178 == QMARK) ) { s = 854; } else if ( (LA2_3178 == SP) ) { s = 1585; } else if ( (LA2_3178 == CRLF) ) { s = 1588; } else if ( (LA2_3178 == SEMI) ) { s = 2028; } else if ( (LA2_3178 == COMMON_CHAR || LA2_3178 == HEX_CHAR) ) { s = 3173; } else if ( (LA2_3178 == DIGIT) ) { s = 3174; } else if ( (LA2_3178 == DOT) ) { s = 3175; } else if ( (LA2_3178 == PERCENT) ) { s = 3176; } else if ( (LA2_3178 == PLUS) ) { s = 3177; } else if ( (LA2_3178 == BQUOTE) ) { s = 2092; } else if ( (LA2_3178 == DASH || LA2_3178 == EMARK || LA2_3178 == LPAREN || LA2_3178 == RPAREN || ((LA2_3178 >= SQUOTE) && (LA2_3178 <= USCORE))) ) { s = 3178; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3178 == AND || LA2_3178 == COLON || LA2_3178 == DOLLARD || LA2_3178 == LSBRAQUET || LA2_3178 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3178); if ( s>=0 ) { return s; } } break; case 650: { ANTLR3_UINT32 LA2_3293; ANTLR3_MARKER index2_3293; LA2_3293 = LA(1); index2_3293 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3293 == QMARK) ) { s = 854; } else if ( (LA2_3293 == SP) ) { s = 204; } else if ( (LA2_3293 == SLASH) ) { s = 2928; } else if ( (LA2_3293 == SEMI) ) { s = 3251; } else if ( (LA2_3293 == COMMON_CHAR || LA2_3293 == HEX_CHAR) ) { s = 3503; } else if ( (LA2_3293 == DIGIT) ) { s = 3504; } else if ( (LA2_3293 == DOT) ) { s = 3505; } else if ( (LA2_3293 == PERCENT) ) { s = 3506; } else if ( (LA2_3293 == COLON) ) { s = 3291; } else if ( (LA2_3293 == AT) ) { s = 2578; } else if ( (LA2_3293 == AND) ) { s = 3292; } else if ( (LA2_3293 == EQUAL) ) { s = 3550; } else if ( (LA2_3293 == PLUS) ) { s = 3507; } else if ( (LA2_3293 == DOLLARD) ) { s = 3293; } else if ( (LA2_3293 == COMMA) ) { s = 2583; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3293 == CRLF) ) { s = 205; } else if ( (LA2_3293 == DASH || LA2_3293 == EMARK || LA2_3293 == LPAREN || LA2_3293 == RPAREN || ((LA2_3293 >= SQUOTE) && (LA2_3293 <= USCORE))) ) { s = 3508; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3293 == LSBRAQUET || LA2_3293 == RSBRAQUET) ) { s = 405; } SEEK(index2_3293); if ( s>=0 ) { return s; } } break; case 651: { ANTLR3_UINT32 LA2_3507; ANTLR3_MARKER index2_3507; LA2_3507 = LA(1); index2_3507 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3507 == QMARK) ) { s = 854; } else if ( (LA2_3507 == SP) ) { s = 204; } else if ( (LA2_3507 == SLASH) ) { s = 2928; } else if ( (LA2_3507 == SEMI) ) { s = 3251; } else if ( (LA2_3507 == COMMON_CHAR || LA2_3507 == HEX_CHAR) ) { s = 3503; } else if ( (LA2_3507 == DIGIT) ) { s = 3504; } else if ( (LA2_3507 == DOT) ) { s = 3505; } else if ( (LA2_3507 == PERCENT) ) { s = 3506; } else if ( (LA2_3507 == COLON) ) { s = 3291; } else if ( (LA2_3507 == AT) ) { s = 2578; } else if ( (LA2_3507 == AND) ) { s = 3292; } else if ( (LA2_3507 == EQUAL) ) { s = 3550; } else if ( (LA2_3507 == PLUS) ) { s = 3507; } else if ( (LA2_3507 == DOLLARD) ) { s = 3293; } else if ( (LA2_3507 == COMMA) ) { s = 2583; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3507 == CRLF) ) { s = 205; } else if ( (LA2_3507 == DASH || LA2_3507 == EMARK || LA2_3507 == LPAREN || LA2_3507 == RPAREN || ((LA2_3507 >= SQUOTE) && (LA2_3507 <= USCORE))) ) { s = 3508; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3507 == LSBRAQUET || LA2_3507 == RSBRAQUET) ) { s = 405; } SEEK(index2_3507); if ( s>=0 ) { return s; } } break; case 652: { ANTLR3_UINT32 LA2_2924; ANTLR3_MARKER index2_2924; LA2_2924 = LA(1); index2_2924 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2924 == SEMI) ) { s = 1660; } else if ( (LA2_2924 == SLASH) ) { s = 3226; } else if ( (LA2_2924 == QMARK) ) { s = 242; } else if ( (LA2_2924 == SP) ) { s = 35; } else if ( (LA2_2924 == COMMON_CHAR || LA2_2924 == HEX_CHAR) ) { s = 3227; } else if ( (LA2_2924 == DIGIT) ) { s = 3228; } else if ( (LA2_2924 == DOT) ) { s = 3229; } else if ( (LA2_2924 == PERCENT) ) { s = 3230; } else if ( (LA2_2924 == COLON) ) { s = 3231; } else if ( (LA2_2924 == AT) ) { s = 1667; } else if ( (LA2_2924 == AND) ) { s = 3232; } else if ( (LA2_2924 == EQUAL) ) { s = 1669; } else if ( (LA2_2924 == PLUS) ) { s = 3233; } else if ( (LA2_2924 == DOLLARD) ) { s = 3234; } else if ( (LA2_2924 == COMMA) ) { s = 1672; } else if ( (LA2_2924 == DASH || LA2_2924 == EMARK || LA2_2924 == LPAREN || LA2_2924 == RPAREN || ((LA2_2924 >= SQUOTE) && (LA2_2924 <= USCORE))) ) { s = 3235; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2924 == LSBRAQUET || LA2_2924 == RSBRAQUET) ) { s = 1080; } SEEK(index2_2924); if ( s>=0 ) { return s; } } break; case 653: { ANTLR3_UINT32 LA2_1088; ANTLR3_MARKER index2_1088; LA2_1088 = LA(1); index2_1088 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1088 == COLON) ) { s = 1082; } else if ( (LA2_1088 == AT) ) { s = 89; } else if ( (LA2_1088 == COMMON_CHAR || LA2_1088 == HEX_CHAR) ) { s = 1083; } else if ( (LA2_1088 == DIGIT) ) { s = 1084; } else if ( (LA2_1088 == DOT) ) { s = 1085; } else if ( (LA2_1088 == PERCENT) ) { s = 1086; } else if ( (LA2_1088 == QMARK) ) { s = 206; } else if ( (LA2_1088 == SEMI) ) { s = 202; } else if ( (LA2_1088 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1088 == CRLF) ) { s = 205; } else if ( (LA2_1088 == AND || LA2_1088 == DOLLARD || LA2_1088 == PLUS || LA2_1088 == SLASH) ) { s = 1087; } else if ( (LA2_1088 == DASH || LA2_1088 == EMARK || LA2_1088 == LPAREN || LA2_1088 == RPAREN || ((LA2_1088 >= SQUOTE) && (LA2_1088 <= USCORE))) ) { s = 1088; } else if ( (LA2_1088 == COMMA) ) { s = 97; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1088 == LSBRAQUET || LA2_1088 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_1088 == EQUAL) ) { s = 99; } SEEK(index2_1088); if ( s>=0 ) { return s; } } break; case 654: { ANTLR3_UINT32 LA2_1105; ANTLR3_MARKER index2_1105; LA2_1105 = LA(1); index2_1105 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1105 == QMARK) ) { s = 1102; } else if ( (LA2_1105 == COMMON_CHAR || LA2_1105 == HEX_CHAR) ) { s = 1554; } else if ( (LA2_1105 == DIGIT) ) { s = 1555; } else if ( (LA2_1105 == DASH || LA2_1105 == DOT || LA2_1105 == EMARK || LA2_1105 == LPAREN || LA2_1105 == RPAREN || ((LA2_1105 >= SQUOTE) && (LA2_1105 <= USCORE))) ) { s = 1556; } else if ( (LA2_1105 == PERCENT) ) { s = 1557; } else if ( (LA2_1105 == AND) ) { s = 1553; } else if ( (LA2_1105 == SP) ) { s = 35; } else if ( (LA2_1105 == SEMI) ) { s = 105; } else if ( (LA2_1105 == COMMA) ) { s = 106; } else if ( (LA2_1105 == COLON || LA2_1105 == DOLLARD || LA2_1105 == PLUS || LA2_1105 == SLASH) ) { s = 1103; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1105 == LSBRAQUET || LA2_1105 == RSBRAQUET) ) { s = 1104; } else if ( (LA2_1105 == AT || LA2_1105 == EQUAL) ) { s = 108; } SEEK(index2_1105); if ( s>=0 ) { return s; } } break; case 655: { ANTLR3_UINT32 LA2_2463; ANTLR3_MARKER index2_2463; LA2_2463 = LA(1); index2_2463 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2463 == SLASH) ) { s = 2009; } else if ( (LA2_2463 == QMARK) ) { s = 854; } else if ( (LA2_2463 == SP) ) { s = 204; } else if ( (LA2_2463 == SEMI) ) { s = 2011; } else if ( (LA2_2463 == COMMON_CHAR || LA2_2463 == HEX_CHAR) ) { s = 2461; } else if ( (LA2_2463 == DIGIT) ) { s = 2462; } else if ( (LA2_2463 == DOT) ) { s = 2463; } else if ( (LA2_2463 == PERCENT) ) { s = 2464; } else if ( (LA2_2463 == COLON) ) { s = 2005; } else if ( (LA2_2463 == AT) ) { s = 1123; } else if ( (LA2_2463 == AND) ) { s = 2006; } else if ( (LA2_2463 == EQUAL) ) { s = 2465; } else if ( (LA2_2463 == PLUS) ) { s = 2466; } else if ( (LA2_2463 == DOLLARD) ) { s = 2008; } else if ( (LA2_2463 == COMMA) ) { s = 1128; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2463 == CRLF) ) { s = 205; } else if ( (LA2_2463 == DASH || LA2_2463 == EMARK || LA2_2463 == LPAREN || LA2_2463 == RPAREN || ((LA2_2463 >= SQUOTE) && (LA2_2463 <= USCORE))) ) { s = 2467; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2463 == LSBRAQUET || LA2_2463 == RSBRAQUET) ) { s = 405; } SEEK(index2_2463); if ( s>=0 ) { return s; } } break; case 656: { ANTLR3_UINT32 LA2_2268; ANTLR3_MARKER index2_2268; LA2_2268 = LA(1); index2_2268 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2268 == QMARK) ) { s = 2698; } else if ( (LA2_2268 == COMMON_CHAR || LA2_2268 == HEX_CHAR) ) { s = 2699; } else if ( (LA2_2268 == DIGIT) ) { s = 2700; } else if ( (LA2_2268 == DASH || LA2_2268 == DOT || LA2_2268 == EMARK || LA2_2268 == LPAREN || LA2_2268 == RPAREN || ((LA2_2268 >= SQUOTE) && (LA2_2268 <= USCORE))) ) { s = 2701; } else if ( (LA2_2268 == PERCENT) ) { s = 2702; } else if ( (LA2_2268 == SP) ) { s = 35; } else if ( (LA2_2268 == SEMI) ) { s = 505; } else if ( (LA2_2268 == COMMA) ) { s = 506; } else if ( (LA2_2268 == COLON || LA2_2268 == DOLLARD || LA2_2268 == PLUS || LA2_2268 == SLASH) ) { s = 2703; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2268 == LSBRAQUET || LA2_2268 == RSBRAQUET) ) { s = 1552; } else if ( (((LA2_2268 >= AND) && (LA2_2268 <= AT)) || LA2_2268 == EQUAL) ) { s = 508; } SEEK(index2_2268); if ( s>=0 ) { return s; } } break; case 657: { ANTLR3_UINT32 LA2_3819; ANTLR3_MARKER index2_3819; LA2_3819 = LA(1); index2_3819 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3819 == QMARK) ) { s = 1751; } else if ( (LA2_3819 == SP) ) { s = 204; } else if ( (LA2_3819 == SLASH) ) { s = 3323; } else if ( (LA2_3819 == SEMI) ) { s = 3351; } else if ( (LA2_3819 == COMMON_CHAR || LA2_3819 == HEX_CHAR) ) { s = 3819; } else if ( (LA2_3819 == DIGIT) ) { s = 3820; } else if ( (LA2_3819 == DOT) ) { s = 3821; } else if ( (LA2_3819 == PERCENT) ) { s = 3822; } else if ( (LA2_3819 == COLON) ) { s = 3823; } else if ( (LA2_3819 == AT) ) { s = 3043; } else if ( (LA2_3819 == AND) ) { s = 3824; } else if ( (LA2_3819 == EQUAL) ) { s = 3045; } else if ( (LA2_3819 == PLUS) ) { s = 3825; } else if ( (LA2_3819 == DOLLARD) ) { s = 3826; } else if ( (LA2_3819 == COMMA) ) { s = 3048; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3819 == CRLF) ) { s = 205; } else if ( (LA2_3819 == DASH || LA2_3819 == EMARK || LA2_3819 == LPAREN || LA2_3819 == RPAREN || ((LA2_3819 >= SQUOTE) && (LA2_3819 <= USCORE))) ) { s = 3827; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3819 == LSBRAQUET || LA2_3819 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3819); if ( s>=0 ) { return s; } } break; case 658: { ANTLR3_UINT32 LA2_2478; ANTLR3_MARKER index2_2478; LA2_2478 = LA(1); index2_2478 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2478 == SEMI) ) { s = 2477; } else if ( (LA2_2478 == QMARK) ) { s = 854; } else if ( (LA2_2478 == SP) ) { s = 204; } else if ( (LA2_2478 == SLASH) ) { s = 2009; } else if ( (LA2_2478 == COMMON_CHAR || LA2_2478 == HEX_CHAR) ) { s = 2468; } else if ( (LA2_2478 == DIGIT) ) { s = 2469; } else if ( (LA2_2478 == DOT) ) { s = 2470; } else if ( (LA2_2478 == PERCENT) ) { s = 2471; } else if ( (LA2_2478 == COLON) ) { s = 2472; } else if ( (LA2_2478 == AT) ) { s = 1134; } else if ( (LA2_2478 == AND) ) { s = 2473; } else if ( (LA2_2478 == EQUAL) ) { s = 2474; } else if ( (LA2_2478 == PLUS) ) { s = 2475; } else if ( (LA2_2478 == DOLLARD) ) { s = 2476; } else if ( (LA2_2478 == COMMA) ) { s = 1139; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2478 == CRLF) ) { s = 205; } else if ( (LA2_2478 == DASH || LA2_2478 == EMARK || LA2_2478 == LPAREN || LA2_2478 == RPAREN || ((LA2_2478 >= SQUOTE) && (LA2_2478 <= USCORE))) ) { s = 2478; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2478 == LSBRAQUET || LA2_2478 == RSBRAQUET) ) { s = 405; } SEEK(index2_2478); if ( s>=0 ) { return s; } } break; case 659: { ANTLR3_UINT32 LA2_3362; ANTLR3_MARKER index2_3362; LA2_3362 = LA(1); index2_3362 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3362 == SP) ) { s = 35; } else if ( (LA2_3362 == AND) ) { s = 2268; } else if ( (LA2_3362 == QMARK) ) { s = 3359; } else if ( (LA2_3362 == COMMON_CHAR || LA2_3362 == HEX_CHAR) ) { s = 3360; } else if ( (LA2_3362 == DIGIT) ) { s = 3361; } else if ( (LA2_3362 == DASH || LA2_3362 == DOT || LA2_3362 == EMARK || LA2_3362 == LPAREN || LA2_3362 == RPAREN || ((LA2_3362 >= SQUOTE) && (LA2_3362 <= USCORE))) ) { s = 3362; } else if ( (LA2_3362 == PERCENT) ) { s = 3363; } else if ( (LA2_3362 == SEMI) ) { s = 505; } else if ( (LA2_3362 == COMMA) ) { s = 506; } else if ( (LA2_3362 == COLON || LA2_3362 == DOLLARD || LA2_3362 == PLUS || LA2_3362 == SLASH) ) { s = 3364; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3362 == LSBRAQUET || LA2_3362 == RSBRAQUET) ) { s = 2437; } else if ( (LA2_3362 == AT || LA2_3362 == EQUAL) ) { s = 508; } SEEK(index2_3362); if ( s>=0 ) { return s; } } break; case 660: { ANTLR3_UINT32 LA2_1277; ANTLR3_MARKER index2_1277; LA2_1277 = LA(1); index2_1277 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1277 == EQUAL) ) { s = 1768; } else if ( (LA2_1277 == QMARK) ) { s = 1272; } else if ( (LA2_1277 == COMMON_CHAR || LA2_1277 == HEX_CHAR) ) { s = 1273; } else if ( (LA2_1277 == DIGIT) ) { s = 1274; } else if ( (LA2_1277 == DASH || LA2_1277 == DOT || LA2_1277 == EMARK || LA2_1277 == LPAREN || LA2_1277 == RPAREN || ((LA2_1277 >= SQUOTE) && (LA2_1277 <= USCORE))) ) { s = 1275; } else if ( (LA2_1277 == PERCENT) ) { s = 1276; } else if ( (LA2_1277 == SP) ) { s = 35; } else if ( (LA2_1277 == SEMI) ) { s = 505; } else if ( (LA2_1277 == COMMA) ) { s = 506; } else if ( (LA2_1277 == COLON || LA2_1277 == DOLLARD || LA2_1277 == PLUS || LA2_1277 == SLASH) ) { s = 1277; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1277 == LSBRAQUET || LA2_1277 == RSBRAQUET) ) { s = 414; } else if ( (((LA2_1277 >= AND) && (LA2_1277 <= AT))) ) { s = 508; } SEEK(index2_1277); if ( s>=0 ) { return s; } } break; case 661: { ANTLR3_UINT32 LA2_2703; ANTLR3_MARKER index2_2703; LA2_2703 = LA(1); index2_2703 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2703 == EQUAL) ) { s = 3054; } else if ( (LA2_2703 == QMARK) ) { s = 2698; } else if ( (LA2_2703 == COMMON_CHAR || LA2_2703 == HEX_CHAR) ) { s = 2699; } else if ( (LA2_2703 == DIGIT) ) { s = 2700; } else if ( (LA2_2703 == DASH || LA2_2703 == DOT || LA2_2703 == EMARK || LA2_2703 == LPAREN || LA2_2703 == RPAREN || ((LA2_2703 >= SQUOTE) && (LA2_2703 <= USCORE))) ) { s = 2701; } else if ( (LA2_2703 == PERCENT) ) { s = 2702; } else if ( (LA2_2703 == SP) ) { s = 35; } else if ( (LA2_2703 == SEMI) ) { s = 505; } else if ( (LA2_2703 == COMMA) ) { s = 506; } else if ( (LA2_2703 == COLON || LA2_2703 == DOLLARD || LA2_2703 == PLUS || LA2_2703 == SLASH) ) { s = 2703; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2703 == LSBRAQUET || LA2_2703 == RSBRAQUET) ) { s = 1552; } else if ( (((LA2_2703 >= AND) && (LA2_2703 <= AT))) ) { s = 508; } SEEK(index2_2703); if ( s>=0 ) { return s; } } break; case 662: { ANTLR3_UINT32 LA2_2255; ANTLR3_MARKER index2_2255; LA2_2255 = LA(1); index2_2255 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2255 == QMARK) ) { s = 854; } else if ( (LA2_2255 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2255 == CRLF) ) { s = 205; } else if ( (LA2_2255 == SEMI) ) { s = 1237; } else if ( (LA2_2255 == DOT) ) { s = 2254; } else if ( (LA2_2255 == COMMON_CHAR || LA2_2255 == HEX_CHAR) ) { s = 2255; } else if ( (LA2_2255 == DIGIT) ) { s = 2256; } else if ( (LA2_2255 == SLASH) ) { s = 2245; } else if ( (LA2_2255 == DASH || LA2_2255 == EMARK || LA2_2255 == LPAREN || LA2_2255 == RPAREN || ((LA2_2255 >= SQUOTE) && (LA2_2255 <= USCORE))) ) { s = 2257; } else if ( (LA2_2255 == PERCENT) ) { s = 2258; } else if ( (LA2_2255 == COLON) ) { s = 2259; } else if ( (LA2_2255 == AND) ) { s = 2260; } else if ( (LA2_2255 == AT) ) { s = 464; } else if ( (LA2_2255 == PLUS) ) { s = 2261; } else if ( (LA2_2255 == EQUAL) ) { s = 466; } else if ( (LA2_2255 == DOLLARD) ) { s = 2262; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2255 == LSBRAQUET || LA2_2255 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_2255 == COMMA) ) { s = 469; } SEEK(index2_2255); if ( s>=0 ) { return s; } } break; case 663: { ANTLR3_UINT32 LA2_2073; ANTLR3_MARKER index2_2073; LA2_2073 = LA(1); index2_2073 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2073 == SP) ) { s = 2456; } else if ( (LA2_2073 == CRLF) ) { s = 2458; } else if ( (LA2_2073 == EQUAL) ) { s = 2552; } else if ( (LA2_2073 == SLASH) ) { s = 2553; } else if ( (LA2_2073 == QMARK) ) { s = 854; } else if ( (LA2_2073 == SEMI) ) { s = 1630; } else if ( (LA2_2073 == COMMON_CHAR || LA2_2073 == HEX_CHAR) ) { s = 2068; } else if ( (LA2_2073 == DIGIT) ) { s = 2069; } else if ( (LA2_2073 == DOT) ) { s = 2070; } else if ( (LA2_2073 == PERCENT) ) { s = 2071; } else if ( (LA2_2073 == PLUS) ) { s = 2072; } else if ( (LA2_2073 == BQUOTE) ) { s = 1203; } else if ( (LA2_2073 == DASH || LA2_2073 == EMARK || LA2_2073 == LPAREN || LA2_2073 == RPAREN || ((LA2_2073 >= SQUOTE) && (LA2_2073 <= USCORE))) ) { s = 2073; } else if ( (LA2_2073 == COLON) ) { s = 1727; } else if ( (LA2_2073 == AND) ) { s = 1730; } else if ( (LA2_2073 == AT) ) { s = 810; } else if ( (LA2_2073 == DOLLARD) ) { s = 1732; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2073 == LSBRAQUET || LA2_2073 == RSBRAQUET) ) { s = 405; } else if ( (LA2_2073 == COMMA) ) { s = 815; } SEEK(index2_2073); if ( s>=0 ) { return s; } } break; case 664: { ANTLR3_UINT32 LA2_1114; ANTLR3_MARKER index2_1114; LA2_1114 = LA(1); index2_1114 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1114 == COLON) ) { s = 408; } else if ( (LA2_1114 == AT) ) { s = 89; } else if ( (LA2_1114 == COMMON_CHAR || LA2_1114 == HEX_CHAR) ) { s = 409; } else if ( (LA2_1114 == DIGIT) ) { s = 410; } else if ( (LA2_1114 == DASH || LA2_1114 == DOT || LA2_1114 == EMARK || LA2_1114 == LPAREN || LA2_1114 == RPAREN || ((LA2_1114 >= SQUOTE) && (LA2_1114 <= USCORE))) ) { s = 411; } else if ( (LA2_1114 == PERCENT) ) { s = 412; } else if ( (LA2_1114 == EQUAL) ) { s = 726; } else if ( (LA2_1114 == QMARK) ) { s = 413; } else if ( (LA2_1114 == SEMI) ) { s = 94; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1114 == LSBRAQUET || LA2_1114 == RSBRAQUET) ) { s = 414; } else if ( (LA2_1114 == SP) ) { s = 35; } else if ( (LA2_1114 == COMMA) ) { s = 97; } else if ( (LA2_1114 == AND) ) { s = 99; } else if ( (LA2_1114 == DOLLARD || LA2_1114 == PLUS || LA2_1114 == SLASH) ) { s = 415; } SEEK(index2_1114); if ( s>=0 ) { return s; } } break; case 665: { ANTLR3_UINT32 LA2_2452; ANTLR3_MARKER index2_2452; LA2_2452 = LA(1); index2_2452 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2452 == COLON) ) { s = 1559; } else if ( (LA2_2452 == AT) ) { s = 89; } else if ( (LA2_2452 == COMMON_CHAR || LA2_2452 == HEX_CHAR) ) { s = 1560; } else if ( (LA2_2452 == DIGIT) ) { s = 1561; } else if ( (LA2_2452 == DASH || LA2_2452 == DOT || LA2_2452 == EMARK || LA2_2452 == LPAREN || LA2_2452 == RPAREN || ((LA2_2452 >= SQUOTE) && (LA2_2452 <= USCORE))) ) { s = 1562; } else if ( (LA2_2452 == PERCENT) ) { s = 1563; } else if ( (LA2_2452 == EQUAL) ) { s = 1995; } else if ( (LA2_2452 == QMARK) ) { s = 1564; } else if ( (LA2_2452 == SEMI) ) { s = 94; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2452 == LSBRAQUET || LA2_2452 == RSBRAQUET) ) { s = 1552; } else if ( (LA2_2452 == SP) ) { s = 35; } else if ( (LA2_2452 == COMMA) ) { s = 97; } else if ( (LA2_2452 == AND) ) { s = 99; } else if ( (LA2_2452 == DOLLARD || LA2_2452 == PLUS || LA2_2452 == SLASH) ) { s = 1565; } SEEK(index2_2452); if ( s>=0 ) { return s; } } break; case 666: { ANTLR3_UINT32 LA2_3854; ANTLR3_MARKER index2_3854; LA2_3854 = LA(1); index2_3854 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3854 == SLASH) ) { s = 3226; } else if ( (LA2_3854 == QMARK) ) { s = 854; } else if ( (LA2_3854 == SP) ) { s = 204; } else if ( (LA2_3854 == SEMI) ) { s = 3530; } else if ( (LA2_3854 == COMMON_CHAR || LA2_3854 == HEX_CHAR) ) { s = 3852; } else if ( (LA2_3854 == DIGIT) ) { s = 3853; } else if ( (LA2_3854 == DOT) ) { s = 3854; } else if ( (LA2_3854 == PERCENT) ) { s = 3855; } else if ( (LA2_3854 == COLON) ) { s = 3856; } else if ( (LA2_3854 == AT) ) { s = 3271; } else if ( (LA2_3854 == AND) ) { s = 3857; } else if ( (LA2_3854 == EQUAL) ) { s = 3273; } else if ( (LA2_3854 == PLUS) ) { s = 3858; } else if ( (LA2_3854 == DOLLARD) ) { s = 3859; } else if ( (LA2_3854 == COMMA) ) { s = 3276; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3854 == CRLF) ) { s = 205; } else if ( (LA2_3854 == DASH || LA2_3854 == EMARK || LA2_3854 == LPAREN || LA2_3854 == RPAREN || ((LA2_3854 >= SQUOTE) && (LA2_3854 <= USCORE))) ) { s = 3860; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3854 == LSBRAQUET || LA2_3854 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3854); if ( s>=0 ) { return s; } } break; case 667: { ANTLR3_UINT32 LA2_1271; ANTLR3_MARKER index2_1271; LA2_1271 = LA(1); index2_1271 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1271 == QMARK) ) { s = 854; } else if ( (LA2_1271 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1271 == CRLF) ) { s = 205; } else if ( (LA2_1271 == SEMI) ) { s = 1237; } else if ( (LA2_1271 == DOT) ) { s = 1758; } else if ( (LA2_1271 == COMMON_CHAR || LA2_1271 == HEX_CHAR) ) { s = 1759; } else if ( (LA2_1271 == DIGIT) ) { s = 1760; } else if ( (LA2_1271 == COLON) ) { s = 1761; } else if ( (LA2_1271 == DASH || LA2_1271 == EMARK || LA2_1271 == LPAREN || LA2_1271 == RPAREN || ((LA2_1271 >= SQUOTE) && (LA2_1271 <= USCORE))) ) { s = 1762; } else if ( (LA2_1271 == PERCENT) ) { s = 1763; } else if ( (LA2_1271 == EQUAL) ) { s = 1764; } else if ( (LA2_1271 == AND) ) { s = 1765; } else if ( (LA2_1271 == AT) ) { s = 464; } else if ( (LA2_1271 == PLUS) ) { s = 1766; } else if ( (LA2_1271 == DOLLARD) ) { s = 1767; } else if ( (LA2_1271 == SLASH) ) { s = 1271; } else if ( (LA2_1271 == COMMA) ) { s = 469; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1271 == LSBRAQUET || LA2_1271 == RSBRAQUET) ) { s = 405; } SEEK(index2_1271); if ( s>=0 ) { return s; } } break; case 668: { ANTLR3_UINT32 LA2_3488; ANTLR3_MARKER index2_3488; LA2_3488 = LA(1); index2_3488 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3488 == SLASH) ) { s = 3222; } else if ( (LA2_3488 == QMARK) ) { s = 854; } else if ( (LA2_3488 == SP) ) { s = 1585; } else if ( (LA2_3488 == CRLF) ) { s = 1588; } else if ( (LA2_3488 == SEMI) ) { s = 1630; } else if ( (LA2_3488 == COMMON_CHAR || LA2_3488 == HEX_CHAR) ) { s = 2912; } else if ( (LA2_3488 == DIGIT) ) { s = 2913; } else if ( (LA2_3488 == DOT) ) { s = 2914; } else if ( (LA2_3488 == PERCENT) ) { s = 2915; } else if ( (LA2_3488 == PLUS) ) { s = 2916; } else if ( (LA2_3488 == BQUOTE) ) { s = 2092; } else if ( (LA2_3488 == DASH || LA2_3488 == EMARK || LA2_3488 == LPAREN || LA2_3488 == RPAREN || ((LA2_3488 >= SQUOTE) && (LA2_3488 <= USCORE))) ) { s = 2917; } else if ( (LA2_3488 == COLON) ) { s = 2653; } else if ( (LA2_3488 == AND) ) { s = 2654; } else if ( (LA2_3488 == AT) ) { s = 810; } else if ( (LA2_3488 == DOLLARD) ) { s = 2656; } else if ( (LA2_3488 == EQUAL) ) { s = 812; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3488 == LSBRAQUET || LA2_3488 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_3488 == COMMA) ) { s = 815; } SEEK(index2_3488); if ( s>=0 ) { return s; } } break; case 669: { ANTLR3_UINT32 LA2_3179; ANTLR3_MARKER index2_3179; LA2_3179 = LA(1); index2_3179 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3179 == SEMI) ) { s = 3170; } else if ( (LA2_3179 == SLASH) ) { s = 3171; } else if ( (LA2_3179 == QMARK) ) { s = 854; } else if ( (LA2_3179 == SP) ) { s = 204; } else if ( (LA2_3179 == COMMON_CHAR || LA2_3179 == HEX_CHAR) ) { s = 3162; } else if ( (LA2_3179 == DIGIT) ) { s = 3179; } else if ( (LA2_3179 == DOT) ) { s = 3163; } else if ( (LA2_3179 == PERCENT) ) { s = 3164; } else if ( (LA2_3179 == COLON) ) { s = 3165; } else if ( (LA2_3179 == AT) ) { s = 1710; } else if ( (LA2_3179 == AND) ) { s = 3166; } else if ( (LA2_3179 == EQUAL) ) { s = 3167; } else if ( (LA2_3179 == PLUS) ) { s = 3168; } else if ( (LA2_3179 == DOLLARD) ) { s = 3169; } else if ( (LA2_3179 == COMMA) ) { s = 1715; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3179 == CRLF) ) { s = 205; } else if ( (LA2_3179 == DASH || LA2_3179 == EMARK || LA2_3179 == LPAREN || LA2_3179 == RPAREN || ((LA2_3179 >= SQUOTE) && (LA2_3179 <= USCORE))) ) { s = 3172; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3179 == LSBRAQUET || LA2_3179 == RSBRAQUET) ) { s = 405; } SEEK(index2_3179); if ( s>=0 ) { return s; } } break; case 670: { ANTLR3_UINT32 LA2_3437; ANTLR3_MARKER index2_3437; LA2_3437 = LA(1); index2_3437 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3437 == SEMI) ) { s = 3170; } else if ( (LA2_3437 == SLASH) ) { s = 3435; } else if ( (LA2_3437 == QMARK) ) { s = 854; } else if ( (LA2_3437 == SP) ) { s = 204; } else if ( (LA2_3437 == COMMON_CHAR || LA2_3437 == HEX_CHAR) ) { s = 3436; } else if ( (LA2_3437 == DIGIT) ) { s = 3437; } else if ( (LA2_3437 == DOT) ) { s = 3438; } else if ( (LA2_3437 == PERCENT) ) { s = 3439; } else if ( (LA2_3437 == COLON) ) { s = 3440; } else if ( (LA2_3437 == AT) ) { s = 1710; } else if ( (LA2_3437 == AND) ) { s = 3441; } else if ( (LA2_3437 == EQUAL) ) { s = 1712; } else if ( (LA2_3437 == PLUS) ) { s = 3442; } else if ( (LA2_3437 == DOLLARD) ) { s = 3443; } else if ( (LA2_3437 == COMMA) ) { s = 1715; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3437 == CRLF) ) { s = 205; } else if ( (LA2_3437 == DASH || LA2_3437 == EMARK || LA2_3437 == LPAREN || LA2_3437 == RPAREN || ((LA2_3437 >= SQUOTE) && (LA2_3437 <= USCORE))) ) { s = 3444; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3437 == LSBRAQUET || LA2_3437 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3437); if ( s>=0 ) { return s; } } break; case 671: { ANTLR3_UINT32 LA2_3458; ANTLR3_MARKER index2_3458; LA2_3458 = LA(1); index2_3458 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3458 == SEMI) ) { s = 3463; } else if ( (LA2_3458 == QMARK) ) { s = 854; } else if ( (LA2_3458 == SP) ) { s = 204; } else if ( (LA2_3458 == SLASH) ) { s = 3171; } else if ( (LA2_3458 == COMMON_CHAR || LA2_3458 == HEX_CHAR) ) { s = 3454; } else if ( (LA2_3458 == DIGIT) ) { s = 3455; } else if ( (LA2_3458 == DOT) ) { s = 3456; } else if ( (LA2_3458 == PERCENT) ) { s = 3457; } else if ( (LA2_3458 == COLON) ) { s = 3458; } else if ( (LA2_3458 == AT) ) { s = 2195; } else if ( (LA2_3458 == AND) ) { s = 3459; } else if ( (LA2_3458 == EQUAL) ) { s = 3460; } else if ( (LA2_3458 == PLUS) ) { s = 3461; } else if ( (LA2_3458 == DOLLARD) ) { s = 3462; } else if ( (LA2_3458 == COMMA) ) { s = 2200; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3458 == CRLF) ) { s = 205; } else if ( (LA2_3458 == DASH || LA2_3458 == EMARK || LA2_3458 == LPAREN || LA2_3458 == RPAREN || ((LA2_3458 >= SQUOTE) && (LA2_3458 <= USCORE))) ) { s = 3464; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3458 == LSBRAQUET || LA2_3458 == RSBRAQUET) ) { s = 405; } SEEK(index2_3458); if ( s>=0 ) { return s; } } break; case 672: { ANTLR3_UINT32 LA2_2462; ANTLR3_MARKER index2_2462; LA2_2462 = LA(1); index2_2462 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2462 == SLASH) ) { s = 2009; } else if ( (LA2_2462 == QMARK) ) { s = 854; } else if ( (LA2_2462 == SP) ) { s = 204; } else if ( (LA2_2462 == SEMI) ) { s = 2011; } else if ( (LA2_2462 == COMMON_CHAR || LA2_2462 == HEX_CHAR) ) { s = 2461; } else if ( (LA2_2462 == DIGIT) ) { s = 2462; } else if ( (LA2_2462 == DOT) ) { s = 2463; } else if ( (LA2_2462 == PERCENT) ) { s = 2464; } else if ( (LA2_2462 == COLON) ) { s = 2005; } else if ( (LA2_2462 == AT) ) { s = 1123; } else if ( (LA2_2462 == AND) ) { s = 2006; } else if ( (LA2_2462 == EQUAL) ) { s = 2465; } else if ( (LA2_2462 == PLUS) ) { s = 2466; } else if ( (LA2_2462 == DOLLARD) ) { s = 2008; } else if ( (LA2_2462 == COMMA) ) { s = 1128; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2462 == CRLF) ) { s = 205; } else if ( (LA2_2462 == DASH || LA2_2462 == EMARK || LA2_2462 == LPAREN || LA2_2462 == RPAREN || ((LA2_2462 >= SQUOTE) && (LA2_2462 <= USCORE))) ) { s = 2467; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2462 == LSBRAQUET || LA2_2462 == RSBRAQUET) ) { s = 405; } SEEK(index2_2462); if ( s>=0 ) { return s; } } break; case 673: { ANTLR3_UINT32 LA2_2845; ANTLR3_MARKER index2_2845; LA2_2845 = LA(1); index2_2845 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2845 == SLASH) ) { s = 2830; } else if ( (LA2_2845 == QMARK) ) { s = 854; } else if ( (LA2_2845 == SP) ) { s = 204; } else if ( (LA2_2845 == SEMI) ) { s = 2011; } else if ( (LA2_2845 == COMMON_CHAR || LA2_2845 == HEX_CHAR) ) { s = 2844; } else if ( (LA2_2845 == DIGIT) ) { s = 2845; } else if ( (LA2_2845 == DOT) ) { s = 2846; } else if ( (LA2_2845 == PERCENT) ) { s = 2847; } else if ( (LA2_2845 == COLON) ) { s = 2835; } else if ( (LA2_2845 == AT) ) { s = 1123; } else if ( (LA2_2845 == AND) ) { s = 2836; } else if ( (LA2_2845 == EQUAL) ) { s = 1125; } else if ( (LA2_2845 == PLUS) ) { s = 2848; } else if ( (LA2_2845 == DOLLARD) ) { s = 2838; } else if ( (LA2_2845 == COMMA) ) { s = 1128; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2845 == CRLF) ) { s = 205; } else if ( (LA2_2845 == DASH || LA2_2845 == EMARK || LA2_2845 == LPAREN || LA2_2845 == RPAREN || ((LA2_2845 >= SQUOTE) && (LA2_2845 <= USCORE))) ) { s = 2849; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2845 == LSBRAQUET || LA2_2845 == RSBRAQUET) ) { s = 1080; } SEEK(index2_2845); if ( s>=0 ) { return s; } } break; case 674: { ANTLR3_UINT32 LA2_2435; ANTLR3_MARKER index2_2435; LA2_2435 = LA(1); index2_2435 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2435 == SP) ) { s = 35; } else if ( (LA2_2435 == AND) ) { s = 1553; } else if ( (LA2_2435 == QMARK) ) { s = 2435; } else if ( (LA2_2435 == COMMON_CHAR || LA2_2435 == HEX_CHAR) ) { s = 2439; } else if ( (LA2_2435 == DIGIT) ) { s = 2440; } else if ( (LA2_2435 == DASH || LA2_2435 == DOT || LA2_2435 == EMARK || LA2_2435 == LPAREN || LA2_2435 == RPAREN || ((LA2_2435 >= SQUOTE) && (LA2_2435 <= USCORE))) ) { s = 2441; } else if ( (LA2_2435 == PERCENT) ) { s = 2442; } else if ( (LA2_2435 == SEMI) ) { s = 105; } else if ( (LA2_2435 == COMMA) ) { s = 106; } else if ( (LA2_2435 == COLON || LA2_2435 == DOLLARD || LA2_2435 == PLUS || LA2_2435 == SLASH) ) { s = 2436; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2435 == LSBRAQUET || LA2_2435 == RSBRAQUET) ) { s = 2437; } else if ( (LA2_2435 == AT || LA2_2435 == EQUAL) ) { s = 108; } SEEK(index2_2435); if ( s>=0 ) { return s; } } break; case 675: { ANTLR3_UINT32 LA2_3461; ANTLR3_MARKER index2_3461; LA2_3461 = LA(1); index2_3461 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3461 == SEMI) ) { s = 3463; } else if ( (LA2_3461 == QMARK) ) { s = 854; } else if ( (LA2_3461 == SP) ) { s = 204; } else if ( (LA2_3461 == SLASH) ) { s = 3171; } else if ( (LA2_3461 == COMMON_CHAR || LA2_3461 == HEX_CHAR) ) { s = 3454; } else if ( (LA2_3461 == DIGIT) ) { s = 3455; } else if ( (LA2_3461 == DOT) ) { s = 3456; } else if ( (LA2_3461 == PERCENT) ) { s = 3457; } else if ( (LA2_3461 == COLON) ) { s = 3458; } else if ( (LA2_3461 == AT) ) { s = 2195; } else if ( (LA2_3461 == AND) ) { s = 3459; } else if ( (LA2_3461 == EQUAL) ) { s = 3460; } else if ( (LA2_3461 == PLUS) ) { s = 3461; } else if ( (LA2_3461 == DOLLARD) ) { s = 3462; } else if ( (LA2_3461 == COMMA) ) { s = 2200; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3461 == CRLF) ) { s = 205; } else if ( (LA2_3461 == DASH || LA2_3461 == EMARK || LA2_3461 == LPAREN || LA2_3461 == RPAREN || ((LA2_3461 >= SQUOTE) && (LA2_3461 <= USCORE))) ) { s = 3464; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3461 == LSBRAQUET || LA2_3461 == RSBRAQUET) ) { s = 405; } SEEK(index2_3461); if ( s>=0 ) { return s; } } break; case 676: { ANTLR3_UINT32 LA2_3459; ANTLR3_MARKER index2_3459; LA2_3459 = LA(1); index2_3459 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3459 == SEMI) ) { s = 3463; } else if ( (LA2_3459 == QMARK) ) { s = 854; } else if ( (LA2_3459 == SP) ) { s = 204; } else if ( (LA2_3459 == SLASH) ) { s = 3171; } else if ( (LA2_3459 == COMMON_CHAR || LA2_3459 == HEX_CHAR) ) { s = 3454; } else if ( (LA2_3459 == DIGIT) ) { s = 3455; } else if ( (LA2_3459 == DOT) ) { s = 3456; } else if ( (LA2_3459 == PERCENT) ) { s = 3457; } else if ( (LA2_3459 == COLON) ) { s = 3458; } else if ( (LA2_3459 == AT) ) { s = 2195; } else if ( (LA2_3459 == AND) ) { s = 3459; } else if ( (LA2_3459 == EQUAL) ) { s = 3460; } else if ( (LA2_3459 == PLUS) ) { s = 3461; } else if ( (LA2_3459 == DOLLARD) ) { s = 3462; } else if ( (LA2_3459 == COMMA) ) { s = 2200; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3459 == CRLF) ) { s = 205; } else if ( (LA2_3459 == DASH || LA2_3459 == EMARK || LA2_3459 == LPAREN || LA2_3459 == RPAREN || ((LA2_3459 >= SQUOTE) && (LA2_3459 <= USCORE))) ) { s = 3464; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3459 == LSBRAQUET || LA2_3459 == RSBRAQUET) ) { s = 405; } SEEK(index2_3459); if ( s>=0 ) { return s; } } break; case 677: { ANTLR3_UINT32 LA2_3462; ANTLR3_MARKER index2_3462; LA2_3462 = LA(1); index2_3462 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3462 == SEMI) ) { s = 3463; } else if ( (LA2_3462 == QMARK) ) { s = 854; } else if ( (LA2_3462 == SP) ) { s = 204; } else if ( (LA2_3462 == SLASH) ) { s = 3171; } else if ( (LA2_3462 == COMMON_CHAR || LA2_3462 == HEX_CHAR) ) { s = 3454; } else if ( (LA2_3462 == DIGIT) ) { s = 3455; } else if ( (LA2_3462 == DOT) ) { s = 3456; } else if ( (LA2_3462 == PERCENT) ) { s = 3457; } else if ( (LA2_3462 == COLON) ) { s = 3458; } else if ( (LA2_3462 == AT) ) { s = 2195; } else if ( (LA2_3462 == AND) ) { s = 3459; } else if ( (LA2_3462 == EQUAL) ) { s = 3460; } else if ( (LA2_3462 == PLUS) ) { s = 3461; } else if ( (LA2_3462 == DOLLARD) ) { s = 3462; } else if ( (LA2_3462 == COMMA) ) { s = 2200; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3462 == CRLF) ) { s = 205; } else if ( (LA2_3462 == DASH || LA2_3462 == EMARK || LA2_3462 == LPAREN || LA2_3462 == RPAREN || ((LA2_3462 >= SQUOTE) && (LA2_3462 <= USCORE))) ) { s = 3464; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3462 == LSBRAQUET || LA2_3462 == RSBRAQUET) ) { s = 405; } SEEK(index2_3462); if ( s>=0 ) { return s; } } break; case 678: { ANTLR3_UINT32 LA2_3635; ANTLR3_MARKER index2_3635; LA2_3635 = LA(1); index2_3635 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3635 == SEMI) ) { s = 3463; } else if ( (LA2_3635 == QMARK) ) { s = 854; } else if ( (LA2_3635 == SP) ) { s = 204; } else if ( (LA2_3635 == SLASH) ) { s = 3435; } else if ( (LA2_3635 == COMMON_CHAR || LA2_3635 == HEX_CHAR) ) { s = 3633; } else if ( (LA2_3635 == DIGIT) ) { s = 3634; } else if ( (LA2_3635 == DOT) ) { s = 3635; } else if ( (LA2_3635 == PERCENT) ) { s = 3636; } else if ( (LA2_3635 == COLON) ) { s = 3637; } else if ( (LA2_3635 == AT) ) { s = 2195; } else if ( (LA2_3635 == AND) ) { s = 3638; } else if ( (LA2_3635 == EQUAL) ) { s = 2197; } else if ( (LA2_3635 == PLUS) ) { s = 3639; } else if ( (LA2_3635 == DOLLARD) ) { s = 3640; } else if ( (LA2_3635 == COMMA) ) { s = 2200; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3635 == CRLF) ) { s = 205; } else if ( (LA2_3635 == DASH || LA2_3635 == EMARK || LA2_3635 == LPAREN || LA2_3635 == RPAREN || ((LA2_3635 >= SQUOTE) && (LA2_3635 <= USCORE))) ) { s = 3641; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3635 == LSBRAQUET || LA2_3635 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3635); if ( s>=0 ) { return s; } } break; case 679: { ANTLR3_UINT32 LA2_3798; ANTLR3_MARKER index2_3798; LA2_3798 = LA(1); index2_3798 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3798 == SEMI) ) { s = 3530; } else if ( (LA2_3798 == SLASH) ) { s = 2928; } else if ( (LA2_3798 == QMARK) ) { s = 854; } else if ( (LA2_3798 == SP) ) { s = 204; } else if ( (LA2_3798 == COMMON_CHAR || LA2_3798 == HEX_CHAR) ) { s = 3521; } else if ( (LA2_3798 == DIGIT) ) { s = 3522; } else if ( (LA2_3798 == DOT) ) { s = 3523; } else if ( (LA2_3798 == PERCENT) ) { s = 3524; } else if ( (LA2_3798 == COLON) ) { s = 3525; } else if ( (LA2_3798 == AT) ) { s = 2963; } else if ( (LA2_3798 == AND) ) { s = 3526; } else if ( (LA2_3798 == EQUAL) ) { s = 3527; } else if ( (LA2_3798 == PLUS) ) { s = 3528; } else if ( (LA2_3798 == DOLLARD) ) { s = 3529; } else if ( (LA2_3798 == COMMA) ) { s = 2968; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3798 == CRLF) ) { s = 205; } else if ( (LA2_3798 == DASH || LA2_3798 == EMARK || LA2_3798 == LPAREN || LA2_3798 == RPAREN || ((LA2_3798 >= SQUOTE) && (LA2_3798 <= USCORE))) ) { s = 3531; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3798 == LSBRAQUET || LA2_3798 == RSBRAQUET) ) { s = 405; } SEEK(index2_3798); if ( s>=0 ) { return s; } } break; case 680: { ANTLR3_UINT32 LA2_3837; ANTLR3_MARKER index2_3837; LA2_3837 = LA(1); index2_3837 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3837 == QMARK) ) { s = 854; } else if ( (LA2_3837 == SP) ) { s = 204; } else if ( (LA2_3837 == SLASH) ) { s = 3435; } else if ( (LA2_3837 == SEMI) ) { s = 3463; } else if ( (LA2_3837 == COMMON_CHAR || LA2_3837 == HEX_CHAR) ) { s = 3837; } else if ( (LA2_3837 == DIGIT) ) { s = 3838; } else if ( (LA2_3837 == DOT) ) { s = 3839; } else if ( (LA2_3837 == PERCENT) ) { s = 3840; } else if ( (LA2_3837 == COLON) ) { s = 3841; } else if ( (LA2_3837 == AT) ) { s = 2638; } else if ( (LA2_3837 == AND) ) { s = 3842; } else if ( (LA2_3837 == EQUAL) ) { s = 2640; } else if ( (LA2_3837 == PLUS) ) { s = 3843; } else if ( (LA2_3837 == DOLLARD) ) { s = 3844; } else if ( (LA2_3837 == COMMA) ) { s = 2643; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3837 == CRLF) ) { s = 205; } else if ( (LA2_3837 == DASH || LA2_3837 == EMARK || LA2_3837 == LPAREN || LA2_3837 == RPAREN || ((LA2_3837 >= SQUOTE) && (LA2_3837 <= USCORE))) ) { s = 3845; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3837 == LSBRAQUET || LA2_3837 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3837); if ( s>=0 ) { return s; } } break; case 681: { ANTLR3_UINT32 LA2_2714; ANTLR3_MARKER index2_2714; LA2_2714 = LA(1); index2_2714 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2714 == QMARK) ) { s = 1308; } else if ( (LA2_2714 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2714 == CRLF) ) { s = 205; } else if ( (LA2_2714 == SEMI) ) { s = 1307; } else if ( (LA2_2714 == DOT) ) { s = 2714; } else if ( (LA2_2714 == COMMON_CHAR || LA2_2714 == HEX_CHAR) ) { s = 2715; } else if ( (LA2_2714 == DIGIT) ) { s = 2716; } else if ( (LA2_2714 == AND || LA2_2714 == COLON || LA2_2714 == DOLLARD || LA2_2714 == PLUS || LA2_2714 == SLASH) ) { s = 2717; } else if ( (LA2_2714 == DASH || LA2_2714 == EMARK || LA2_2714 == LPAREN || LA2_2714 == RPAREN || ((LA2_2714 >= SQUOTE) && (LA2_2714 <= USCORE))) ) { s = 2718; } else if ( (LA2_2714 == PERCENT) ) { s = 2719; } else if ( (LA2_2714 == COMMA) ) { s = 506; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2714 == LSBRAQUET || LA2_2714 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_2714 == AT || LA2_2714 == EQUAL) ) { s = 508; } SEEK(index2_2714); if ( s>=0 ) { return s; } } break; case 682: { ANTLR3_UINT32 LA2_115; ANTLR3_MARKER index2_115; LA2_115 = LA(1); index2_115 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_115 == COMMON_CHAR || LA2_115 == HEX_CHAR) ) { s = 244; } else if ( (LA2_115 == DIGIT) ) { s = 245; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_115 == LSBRAQUET) ) { s = 200; } else if ( (LA2_115 == SEMI) ) { s = 240; } else if ( (LA2_115 == SLASH) ) { s = 241; } else if ( (LA2_115 == QMARK) ) { s = 242; } else if ( (LA2_115 == SP) ) { s = 35; } else if ( (LA2_115 == DASH || LA2_115 == DOT || LA2_115 == EMARK || LA2_115 == LPAREN || LA2_115 == RPAREN || ((LA2_115 >= SQUOTE) && (LA2_115 <= USCORE))) ) { s = 246; } else if ( (LA2_115 == PERCENT) ) { s = 247; } else if ( (LA2_115 == COLON) ) { s = 243; } else if ( (LA2_115 == AT) ) { s = 248; } else if ( (LA2_115 == AND) ) { s = 249; } else if ( (LA2_115 == EQUAL) ) { s = 250; } else if ( (LA2_115 == PLUS) ) { s = 251; } else if ( (LA2_115 == DOLLARD) ) { s = 252; } else if ( (LA2_115 == COMMA) ) { s = 253; } SEEK(index2_115); if ( s>=0 ) { return s; } } break; case 683: { ANTLR3_UINT32 LA2_3495; ANTLR3_MARKER index2_3495; LA2_3495 = LA(1); index2_3495 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3495 == SEMI) ) { s = 3251; } else if ( (LA2_3495 == QMARK) ) { s = 854; } else if ( (LA2_3495 == SP) ) { s = 204; } else if ( (LA2_3495 == SLASH) ) { s = 3226; } else if ( (LA2_3495 == COMMON_CHAR || LA2_3495 == HEX_CHAR) ) { s = 3491; } else if ( (LA2_3495 == DIGIT) ) { s = 3492; } else if ( (LA2_3495 == DOT) ) { s = 3493; } else if ( (LA2_3495 == PERCENT) ) { s = 3494; } else if ( (LA2_3495 == COLON) ) { s = 3495; } else if ( (LA2_3495 == AT) ) { s = 2122; } else if ( (LA2_3495 == AND) ) { s = 3496; } else if ( (LA2_3495 == EQUAL) ) { s = 2124; } else if ( (LA2_3495 == PLUS) ) { s = 3497; } else if ( (LA2_3495 == DOLLARD) ) { s = 3498; } else if ( (LA2_3495 == COMMA) ) { s = 2127; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3495 == CRLF) ) { s = 205; } else if ( (LA2_3495 == DASH || LA2_3495 == EMARK || LA2_3495 == LPAREN || LA2_3495 == RPAREN || ((LA2_3495 >= SQUOTE) && (LA2_3495 <= USCORE))) ) { s = 3499; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3495 == LSBRAQUET || LA2_3495 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3495); if ( s>=0 ) { return s; } } break; case 684: { ANTLR3_UINT32 LA2_2657; ANTLR3_MARKER index2_2657; LA2_2657 = LA(1); index2_2657 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2657 == QMARK) ) { s = 854; } else if ( (LA2_2657 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2657 == CRLF) ) { s = 205; } else if ( (LA2_2657 == SEMI) ) { s = 1237; } else if ( (LA2_2657 == DOT) ) { s = 1724; } else if ( (LA2_2657 == COMMON_CHAR || LA2_2657 == HEX_CHAR) ) { s = 1725; } else if ( (LA2_2657 == DIGIT) ) { s = 1726; } else if ( (LA2_2657 == SLASH) ) { s = 1271; } else if ( (LA2_2657 == DASH || LA2_2657 == EMARK || LA2_2657 == LPAREN || LA2_2657 == RPAREN || ((LA2_2657 >= SQUOTE) && (LA2_2657 <= USCORE))) ) { s = 1728; } else if ( (LA2_2657 == PERCENT) ) { s = 1729; } else if ( (LA2_2657 == EQUAL) ) { s = 2207; } else if ( (LA2_2657 == COLON) ) { s = 1727; } else if ( (LA2_2657 == AND) ) { s = 1730; } else if ( (LA2_2657 == AT) ) { s = 810; } else if ( (LA2_2657 == PLUS) ) { s = 1731; } else if ( (LA2_2657 == DOLLARD) ) { s = 1732; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2657 == LSBRAQUET || LA2_2657 == RSBRAQUET) ) { s = 405; } else if ( (LA2_2657 == COMMA) ) { s = 815; } SEEK(index2_2657); if ( s>=0 ) { return s; } } break; case 685: { ANTLR3_UINT32 LA2_3496; ANTLR3_MARKER index2_3496; LA2_3496 = LA(1); index2_3496 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3496 == SEMI) ) { s = 3251; } else if ( (LA2_3496 == QMARK) ) { s = 854; } else if ( (LA2_3496 == SP) ) { s = 204; } else if ( (LA2_3496 == SLASH) ) { s = 3226; } else if ( (LA2_3496 == COMMON_CHAR || LA2_3496 == HEX_CHAR) ) { s = 3491; } else if ( (LA2_3496 == DIGIT) ) { s = 3492; } else if ( (LA2_3496 == DOT) ) { s = 3493; } else if ( (LA2_3496 == PERCENT) ) { s = 3494; } else if ( (LA2_3496 == COLON) ) { s = 3495; } else if ( (LA2_3496 == AT) ) { s = 2122; } else if ( (LA2_3496 == AND) ) { s = 3496; } else if ( (LA2_3496 == EQUAL) ) { s = 2124; } else if ( (LA2_3496 == PLUS) ) { s = 3497; } else if ( (LA2_3496 == DOLLARD) ) { s = 3498; } else if ( (LA2_3496 == COMMA) ) { s = 2127; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3496 == CRLF) ) { s = 205; } else if ( (LA2_3496 == DASH || LA2_3496 == EMARK || LA2_3496 == LPAREN || LA2_3496 == RPAREN || ((LA2_3496 >= SQUOTE) && (LA2_3496 <= USCORE))) ) { s = 3499; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3496 == LSBRAQUET || LA2_3496 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3496); if ( s>=0 ) { return s; } } break; case 686: { ANTLR3_UINT32 LA2_2457; ANTLR3_MARKER index2_2457; LA2_2457 = LA(1); index2_2457 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2457 == SLASH) ) { s = 2830; } else if ( (LA2_2457 == QMARK) ) { s = 242; } else if ( (LA2_2457 == SP) ) { s = 2090; } else if ( (LA2_2457 == SEMI) ) { s = 732; } else if ( (LA2_2457 == COMMON_CHAR || LA2_2457 == HEX_CHAR) ) { s = 2831; } else if ( (LA2_2457 == DIGIT) ) { s = 2832; } else if ( (LA2_2457 == DOT) ) { s = 2833; } else if ( (LA2_2457 == PERCENT) ) { s = 2834; } else if ( (LA2_2457 == COLON) ) { s = 2835; } else if ( (LA2_2457 == AT) ) { s = 1123; } else if ( (LA2_2457 == AND) ) { s = 2836; } else if ( (LA2_2457 == EQUAL) ) { s = 1125; } else if ( (LA2_2457 == PLUS) ) { s = 2837; } else if ( (LA2_2457 == DOLLARD) ) { s = 2838; } else if ( (LA2_2457 == COMMA) ) { s = 1128; } else if ( (LA2_2457 == CRLF) ) { s = 2091; } else if ( (LA2_2457 == BQUOTE) ) { s = 2092; } else if ( (LA2_2457 == DQUOTE) ) { s = 2093; } else if ( (LA2_2457 == DASH || LA2_2457 == EMARK || LA2_2457 == LPAREN || LA2_2457 == RPAREN || ((LA2_2457 >= SQUOTE) && (LA2_2457 <= USCORE))) ) { s = 2839; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2457 == LSBRAQUET || LA2_2457 == RSBRAQUET) ) { s = 1080; } SEEK(index2_2457); if ( s>=0 ) { return s; } } break; case 687: { ANTLR3_UINT32 LA2_3498; ANTLR3_MARKER index2_3498; LA2_3498 = LA(1); index2_3498 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3498 == SEMI) ) { s = 3251; } else if ( (LA2_3498 == QMARK) ) { s = 854; } else if ( (LA2_3498 == SP) ) { s = 204; } else if ( (LA2_3498 == SLASH) ) { s = 3226; } else if ( (LA2_3498 == COMMON_CHAR || LA2_3498 == HEX_CHAR) ) { s = 3491; } else if ( (LA2_3498 == DIGIT) ) { s = 3492; } else if ( (LA2_3498 == DOT) ) { s = 3493; } else if ( (LA2_3498 == PERCENT) ) { s = 3494; } else if ( (LA2_3498 == COLON) ) { s = 3495; } else if ( (LA2_3498 == AT) ) { s = 2122; } else if ( (LA2_3498 == AND) ) { s = 3496; } else if ( (LA2_3498 == EQUAL) ) { s = 2124; } else if ( (LA2_3498 == PLUS) ) { s = 3497; } else if ( (LA2_3498 == DOLLARD) ) { s = 3498; } else if ( (LA2_3498 == COMMA) ) { s = 2127; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3498 == CRLF) ) { s = 205; } else if ( (LA2_3498 == DASH || LA2_3498 == EMARK || LA2_3498 == LPAREN || LA2_3498 == RPAREN || ((LA2_3498 >= SQUOTE) && (LA2_3498 <= USCORE))) ) { s = 3499; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3498 == LSBRAQUET || LA2_3498 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3498); if ( s>=0 ) { return s; } } break; case 688: { ANTLR3_UINT32 LA2_3172; ANTLR3_MARKER index2_3172; LA2_3172 = LA(1); index2_3172 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3172 == SEMI) ) { s = 3170; } else if ( (LA2_3172 == SLASH) ) { s = 3171; } else if ( (LA2_3172 == QMARK) ) { s = 854; } else if ( (LA2_3172 == SP) ) { s = 204; } else if ( (LA2_3172 == COMMON_CHAR || LA2_3172 == HEX_CHAR) ) { s = 3162; } else if ( (LA2_3172 == DIGIT) ) { s = 3179; } else if ( (LA2_3172 == DOT) ) { s = 3163; } else if ( (LA2_3172 == PERCENT) ) { s = 3164; } else if ( (LA2_3172 == COLON) ) { s = 3165; } else if ( (LA2_3172 == AT) ) { s = 1710; } else if ( (LA2_3172 == AND) ) { s = 3166; } else if ( (LA2_3172 == EQUAL) ) { s = 3167; } else if ( (LA2_3172 == PLUS) ) { s = 3168; } else if ( (LA2_3172 == DOLLARD) ) { s = 3169; } else if ( (LA2_3172 == COMMA) ) { s = 1715; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3172 == CRLF) ) { s = 205; } else if ( (LA2_3172 == DASH || LA2_3172 == EMARK || LA2_3172 == LPAREN || LA2_3172 == RPAREN || ((LA2_3172 >= SQUOTE) && (LA2_3172 <= USCORE))) ) { s = 3172; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3172 == LSBRAQUET || LA2_3172 == RSBRAQUET) ) { s = 405; } SEEK(index2_3172); if ( s>=0 ) { return s; } } break; case 689: { ANTLR3_UINT32 LA2_3185; ANTLR3_MARKER index2_3185; LA2_3185 = LA(1); index2_3185 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3185 == DIGIT) ) { s = 3469; } else if ( (LA2_3185 == COMMON_CHAR || LA2_3185 == HEX_CHAR) ) { s = 3162; } else if ( (LA2_3185 == DOT) ) { s = 3163; } else if ( (LA2_3185 == PERCENT) ) { s = 3164; } else if ( (LA2_3185 == COLON) ) { s = 3165; } else if ( (LA2_3185 == AT) ) { s = 1710; } else if ( (LA2_3185 == AND) ) { s = 3166; } else if ( (LA2_3185 == EQUAL) ) { s = 3167; } else if ( (LA2_3185 == PLUS) ) { s = 3168; } else if ( (LA2_3185 == DOLLARD) ) { s = 3169; } else if ( (LA2_3185 == COMMA) ) { s = 1715; } else if ( (LA2_3185 == SEMI) ) { s = 3170; } else if ( (LA2_3185 == SLASH) ) { s = 3171; } else if ( (LA2_3185 == QMARK) ) { s = 854; } else if ( (LA2_3185 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3185 == CRLF) ) { s = 205; } else if ( (LA2_3185 == DASH || LA2_3185 == EMARK || LA2_3185 == LPAREN || LA2_3185 == RPAREN || ((LA2_3185 >= SQUOTE) && (LA2_3185 <= USCORE))) ) { s = 3172; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3185 == LSBRAQUET || LA2_3185 == RSBRAQUET) ) { s = 405; } SEEK(index2_3185); if ( s>=0 ) { return s; } } break; case 690: { ANTLR3_UINT32 LA2_3497; ANTLR3_MARKER index2_3497; LA2_3497 = LA(1); index2_3497 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3497 == SEMI) ) { s = 3251; } else if ( (LA2_3497 == QMARK) ) { s = 854; } else if ( (LA2_3497 == SP) ) { s = 204; } else if ( (LA2_3497 == SLASH) ) { s = 3226; } else if ( (LA2_3497 == COMMON_CHAR || LA2_3497 == HEX_CHAR) ) { s = 3491; } else if ( (LA2_3497 == DIGIT) ) { s = 3492; } else if ( (LA2_3497 == DOT) ) { s = 3493; } else if ( (LA2_3497 == PERCENT) ) { s = 3494; } else if ( (LA2_3497 == COLON) ) { s = 3495; } else if ( (LA2_3497 == AT) ) { s = 2122; } else if ( (LA2_3497 == AND) ) { s = 3496; } else if ( (LA2_3497 == EQUAL) ) { s = 2124; } else if ( (LA2_3497 == PLUS) ) { s = 3497; } else if ( (LA2_3497 == DOLLARD) ) { s = 3498; } else if ( (LA2_3497 == COMMA) ) { s = 2127; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3497 == CRLF) ) { s = 205; } else if ( (LA2_3497 == DASH || LA2_3497 == EMARK || LA2_3497 == LPAREN || LA2_3497 == RPAREN || ((LA2_3497 >= SQUOTE) && (LA2_3497 <= USCORE))) ) { s = 3499; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3497 == LSBRAQUET || LA2_3497 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3497); if ( s>=0 ) { return s; } } break; case 691: { ANTLR3_UINT32 LA2_3691; ANTLR3_MARKER index2_3691; LA2_3691 = LA(1); index2_3691 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3691 == SLASH) ) { s = 2928; } else if ( (LA2_3691 == QMARK) ) { s = 854; } else if ( (LA2_3691 == SP) ) { s = 204; } else if ( (LA2_3691 == SEMI) ) { s = 3530; } else if ( (LA2_3691 == COMMON_CHAR || LA2_3691 == HEX_CHAR) ) { s = 3691; } else if ( (LA2_3691 == DIGIT) ) { s = 3692; } else if ( (LA2_3691 == DOT) ) { s = 3693; } else if ( (LA2_3691 == PERCENT) ) { s = 3694; } else if ( (LA2_3691 == COLON) ) { s = 3695; } else if ( (LA2_3691 == AT) ) { s = 3271; } else if ( (LA2_3691 == AND) ) { s = 3696; } else if ( (LA2_3691 == EQUAL) ) { s = 3800; } else if ( (LA2_3691 == PLUS) ) { s = 3697; } else if ( (LA2_3691 == DOLLARD) ) { s = 3698; } else if ( (LA2_3691 == COMMA) ) { s = 3276; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3691 == CRLF) ) { s = 205; } else if ( (LA2_3691 == DASH || LA2_3691 == EMARK || LA2_3691 == LPAREN || LA2_3691 == RPAREN || ((LA2_3691 >= SQUOTE) && (LA2_3691 <= USCORE))) ) { s = 3699; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3691 == LSBRAQUET || LA2_3691 == RSBRAQUET) ) { s = 405; } SEEK(index2_3691); if ( s>=0 ) { return s; } } break; case 692: { ANTLR3_UINT32 LA2_3491; ANTLR3_MARKER index2_3491; LA2_3491 = LA(1); index2_3491 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3491 == SEMI) ) { s = 3251; } else if ( (LA2_3491 == QMARK) ) { s = 854; } else if ( (LA2_3491 == SP) ) { s = 204; } else if ( (LA2_3491 == SLASH) ) { s = 3226; } else if ( (LA2_3491 == COMMON_CHAR || LA2_3491 == HEX_CHAR) ) { s = 3491; } else if ( (LA2_3491 == DIGIT) ) { s = 3492; } else if ( (LA2_3491 == DOT) ) { s = 3493; } else if ( (LA2_3491 == PERCENT) ) { s = 3494; } else if ( (LA2_3491 == COLON) ) { s = 3495; } else if ( (LA2_3491 == AT) ) { s = 2122; } else if ( (LA2_3491 == AND) ) { s = 3496; } else if ( (LA2_3491 == EQUAL) ) { s = 2124; } else if ( (LA2_3491 == PLUS) ) { s = 3497; } else if ( (LA2_3491 == DOLLARD) ) { s = 3498; } else if ( (LA2_3491 == COMMA) ) { s = 2127; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3491 == CRLF) ) { s = 205; } else if ( (LA2_3491 == DASH || LA2_3491 == EMARK || LA2_3491 == LPAREN || LA2_3491 == RPAREN || ((LA2_3491 >= SQUOTE) && (LA2_3491 <= USCORE))) ) { s = 3499; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3491 == LSBRAQUET || LA2_3491 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3491); if ( s>=0 ) { return s; } } break; case 693: { ANTLR3_UINT32 LA2_3213; ANTLR3_MARKER index2_3213; LA2_3213 = LA(1); index2_3213 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3213 == QMARK) ) { s = 854; } else if ( (LA2_3213 == SP) ) { s = 204; } else if ( (LA2_3213 == SLASH) ) { s = 2830; } else if ( (LA2_3213 == SEMI) ) { s = 2477; } else if ( (LA2_3213 == COMMON_CHAR || LA2_3213 == HEX_CHAR) ) { s = 3211; } else if ( (LA2_3213 == DIGIT) ) { s = 3212; } else if ( (LA2_3213 == DOT) ) { s = 3213; } else if ( (LA2_3213 == PERCENT) ) { s = 3214; } else if ( (LA2_3213 == COLON) ) { s = 3204; } else if ( (LA2_3213 == AT) ) { s = 1576; } else if ( (LA2_3213 == AND) ) { s = 3205; } else if ( (LA2_3213 == EQUAL) ) { s = 1578; } else if ( (LA2_3213 == PLUS) ) { s = 3215; } else if ( (LA2_3213 == DOLLARD) ) { s = 3207; } else if ( (LA2_3213 == COMMA) ) { s = 1581; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3213 == CRLF) ) { s = 205; } else if ( (LA2_3213 == DASH || LA2_3213 == EMARK || LA2_3213 == LPAREN || LA2_3213 == RPAREN || ((LA2_3213 >= SQUOTE) && (LA2_3213 <= USCORE))) ) { s = 3216; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3213 == LSBRAQUET || LA2_3213 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3213); if ( s>=0 ) { return s; } } break; case 694: { ANTLR3_UINT32 LA2_3851; ANTLR3_MARKER index2_3851; LA2_3851 = LA(1); index2_3851 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3851 == SEMI) ) { s = 3530; } else if ( (LA2_3851 == SLASH) ) { s = 3226; } else if ( (LA2_3851 == QMARK) ) { s = 854; } else if ( (LA2_3851 == SP) ) { s = 204; } else if ( (LA2_3851 == COMMON_CHAR || LA2_3851 == HEX_CHAR) ) { s = 3682; } else if ( (LA2_3851 == DIGIT) ) { s = 3683; } else if ( (LA2_3851 == DOT) ) { s = 3684; } else if ( (LA2_3851 == PERCENT) ) { s = 3685; } else if ( (LA2_3851 == COLON) ) { s = 3686; } else if ( (LA2_3851 == AT) ) { s = 2963; } else if ( (LA2_3851 == AND) ) { s = 3687; } else if ( (LA2_3851 == EQUAL) ) { s = 2965; } else if ( (LA2_3851 == PLUS) ) { s = 3688; } else if ( (LA2_3851 == DOLLARD) ) { s = 3689; } else if ( (LA2_3851 == COMMA) ) { s = 2968; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3851 == CRLF) ) { s = 205; } else if ( (LA2_3851 == DASH || LA2_3851 == EMARK || LA2_3851 == LPAREN || LA2_3851 == RPAREN || ((LA2_3851 >= SQUOTE) && (LA2_3851 <= USCORE))) ) { s = 3690; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3851 == LSBRAQUET || LA2_3851 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3851); if ( s>=0 ) { return s; } } break; case 695: { ANTLR3_UINT32 LA2_1985; ANTLR3_MARKER index2_1985; LA2_1985 = LA(1); index2_1985 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1985 == AT) ) { s = 89; } else if ( (LA2_1985 == COMMON_CHAR || LA2_1985 == HEX_CHAR) ) { s = 1095; } else if ( (LA2_1985 == DIGIT) ) { s = 1096; } else if ( (LA2_1985 == DASH || LA2_1985 == DOT || LA2_1985 == EMARK || LA2_1985 == LPAREN || LA2_1985 == RPAREN || ((LA2_1985 >= SQUOTE) && (LA2_1985 <= USCORE))) ) { s = 1097; } else if ( (LA2_1985 == PERCENT) ) { s = 1098; } else if ( (LA2_1985 == AND) ) { s = 1099; } else if ( (LA2_1985 == EQUAL) ) { s = 194; } else if ( (LA2_1985 == PLUS) ) { s = 1100; } else if ( (LA2_1985 == DOLLARD) ) { s = 1101; } else if ( (LA2_1985 == COMMA) ) { s = 197; } else if ( (LA2_1985 == SP) ) { s = 35; } else if ( (LA2_1985 == QMARK) ) { s = 1102; } else if ( (LA2_1985 == SEMI) ) { s = 105; } else if ( (LA2_1985 == COLON || LA2_1985 == SLASH) ) { s = 1103; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1985 == LSBRAQUET || LA2_1985 == RSBRAQUET) ) { s = 1104; } SEEK(index2_1985); if ( s>=0 ) { return s; } } break; case 696: { ANTLR3_UINT32 LA2_857; ANTLR3_MARKER index2_857; LA2_857 = LA(1); index2_857 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_857 == DIGIT) ) { s = 858; } else if ( (LA2_857 == COMMON_CHAR || LA2_857 == HEX_CHAR) ) { s = 244; } else if ( (LA2_857 == COLON) ) { s = 852; } else if ( (LA2_857 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_857 == CRLF) ) { s = 205; } else if ( (LA2_857 == SEMI) ) { s = 853; } else if ( (LA2_857 == QMARK) ) { s = 854; } else if ( (LA2_857 == SLASH) ) { s = 241; } else if ( (LA2_857 == DASH || LA2_857 == DOT || LA2_857 == EMARK || LA2_857 == LPAREN || LA2_857 == RPAREN || ((LA2_857 >= SQUOTE) && (LA2_857 <= USCORE))) ) { s = 246; } else if ( (LA2_857 == PERCENT) ) { s = 247; } else if ( (LA2_857 == AT) ) { s = 248; } else if ( (LA2_857 == AND) ) { s = 249; } else if ( (LA2_857 == EQUAL) ) { s = 250; } else if ( (LA2_857 == PLUS) ) { s = 251; } else if ( (LA2_857 == DOLLARD) ) { s = 252; } else if ( (LA2_857 == COMMA) ) { s = 253; } SEEK(index2_857); if ( s>=0 ) { return s; } } break; case 697: { ANTLR3_UINT32 LA2_1771; ANTLR3_MARKER index2_1771; LA2_1771 = LA(1); index2_1771 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1771 == DIGIT) ) { s = 1772; } else if ( (LA2_1771 == COLON) ) { s = 852; } else if ( (LA2_1771 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1771 == CRLF) ) { s = 205; } else if ( (LA2_1771 == SEMI) ) { s = 853; } else if ( (LA2_1771 == QMARK) ) { s = 854; } else if ( (LA2_1771 == COMMON_CHAR || LA2_1771 == HEX_CHAR) ) { s = 244; } else if ( (LA2_1771 == SLASH) ) { s = 241; } else if ( (LA2_1771 == DASH || LA2_1771 == DOT || LA2_1771 == EMARK || LA2_1771 == LPAREN || LA2_1771 == RPAREN || ((LA2_1771 >= SQUOTE) && (LA2_1771 <= USCORE))) ) { s = 246; } else if ( (LA2_1771 == PERCENT) ) { s = 247; } else if ( (LA2_1771 == AT) ) { s = 248; } else if ( (LA2_1771 == AND) ) { s = 249; } else if ( (LA2_1771 == EQUAL) ) { s = 250; } else if ( (LA2_1771 == PLUS) ) { s = 251; } else if ( (LA2_1771 == DOLLARD) ) { s = 252; } else if ( (LA2_1771 == COMMA) ) { s = 253; } SEEK(index2_1771); if ( s>=0 ) { return s; } } break; case 698: { ANTLR3_UINT32 LA2_268; ANTLR3_MARKER index2_268; LA2_268 = LA(1); index2_268 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_268 == COMMON_CHAR || LA2_268 == HEX_CHAR) ) { s = 554; } else if ( (LA2_268 == DIGIT) ) { s = 555; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_268 == LSBRAQUET) ) { s = 200; } else if ( (LA2_268 == SP) ) { s = 35; } else if ( (LA2_268 == SEMI) ) { s = 505; } else if ( (LA2_268 == COMMA) ) { s = 506; } else if ( (LA2_268 == QMARK) ) { s = 507; } else if ( (((LA2_268 >= AND) && (LA2_268 <= AT)) || LA2_268 == COLON || LA2_268 == DOLLARD || LA2_268 == EQUAL || LA2_268 == PLUS || LA2_268 == SLASH) ) { s = 508; } else if ( (LA2_268 == DASH || LA2_268 == DOT || LA2_268 == EMARK || LA2_268 == LPAREN || LA2_268 == RPAREN || ((LA2_268 >= SQUOTE) && (LA2_268 <= USCORE))) ) { s = 511; } else if ( (LA2_268 == PERCENT) ) { s = 512; } SEEK(index2_268); if ( s>=0 ) { return s; } } break; case 699: { ANTLR3_UINT32 LA2_3860; ANTLR3_MARKER index2_3860; LA2_3860 = LA(1); index2_3860 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3860 == SLASH) ) { s = 3226; } else if ( (LA2_3860 == QMARK) ) { s = 854; } else if ( (LA2_3860 == SP) ) { s = 204; } else if ( (LA2_3860 == SEMI) ) { s = 3530; } else if ( (LA2_3860 == COMMON_CHAR || LA2_3860 == HEX_CHAR) ) { s = 3852; } else if ( (LA2_3860 == DIGIT) ) { s = 3853; } else if ( (LA2_3860 == DOT) ) { s = 3854; } else if ( (LA2_3860 == PERCENT) ) { s = 3855; } else if ( (LA2_3860 == COLON) ) { s = 3856; } else if ( (LA2_3860 == AT) ) { s = 3271; } else if ( (LA2_3860 == AND) ) { s = 3857; } else if ( (LA2_3860 == EQUAL) ) { s = 3273; } else if ( (LA2_3860 == PLUS) ) { s = 3858; } else if ( (LA2_3860 == DOLLARD) ) { s = 3859; } else if ( (LA2_3860 == COMMA) ) { s = 3276; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3860 == CRLF) ) { s = 205; } else if ( (LA2_3860 == DASH || LA2_3860 == EMARK || LA2_3860 == LPAREN || LA2_3860 == RPAREN || ((LA2_3860 >= SQUOTE) && (LA2_3860 <= USCORE))) ) { s = 3860; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3860 == LSBRAQUET || LA2_3860 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3860); if ( s>=0 ) { return s; } } break; case 700: { ANTLR3_UINT32 LA2_2705; ANTLR3_MARKER index2_2705; LA2_2705 = LA(1); index2_2705 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2705 == DIGIT) ) { s = 2706; } else if ( (LA2_2705 == COLON) ) { s = 852; } else if ( (LA2_2705 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2705 == CRLF) ) { s = 205; } else if ( (LA2_2705 == SEMI) ) { s = 853; } else if ( (LA2_2705 == QMARK) ) { s = 854; } else if ( (LA2_2705 == COMMON_CHAR || LA2_2705 == HEX_CHAR) ) { s = 244; } else if ( (LA2_2705 == SLASH) ) { s = 241; } else if ( (LA2_2705 == DASH || LA2_2705 == DOT || LA2_2705 == EMARK || LA2_2705 == LPAREN || LA2_2705 == RPAREN || ((LA2_2705 >= SQUOTE) && (LA2_2705 <= USCORE))) ) { s = 246; } else if ( (LA2_2705 == PERCENT) ) { s = 247; } else if ( (LA2_2705 == AT) ) { s = 248; } else if ( (LA2_2705 == AND) ) { s = 249; } else if ( (LA2_2705 == EQUAL) ) { s = 250; } else if ( (LA2_2705 == PLUS) ) { s = 251; } else if ( (LA2_2705 == DOLLARD) ) { s = 252; } else if ( (LA2_2705 == COMMA) ) { s = 253; } SEEK(index2_2705); if ( s>=0 ) { return s; } } break; case 701: { ANTLR3_UINT32 LA2_3333; ANTLR3_MARKER index2_3333; LA2_3333 = LA(1); index2_3333 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3333 == SLASH) ) { s = 3031; } else if ( (LA2_3333 == QMARK) ) { s = 1751; } else if ( (LA2_3333 == SP) ) { s = 204; } else if ( (LA2_3333 == SEMI) ) { s = 3030; } else if ( (LA2_3333 == COMMON_CHAR || LA2_3333 == HEX_CHAR) ) { s = 3333; } else if ( (LA2_3333 == DIGIT) ) { s = 3334; } else if ( (LA2_3333 == DOT) ) { s = 3335; } else if ( (LA2_3333 == PERCENT) ) { s = 3336; } else if ( (LA2_3333 == COLON) ) { s = 3337; } else if ( (LA2_3333 == AT) ) { s = 2673; } else if ( (LA2_3333 == AND) ) { s = 3338; } else if ( (LA2_3333 == EQUAL) ) { s = 3578; } else if ( (LA2_3333 == PLUS) ) { s = 3339; } else if ( (LA2_3333 == DOLLARD) ) { s = 3340; } else if ( (LA2_3333 == COMMA) ) { s = 2678; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3333 == CRLF) ) { s = 205; } else if ( (LA2_3333 == DASH || LA2_3333 == EMARK || LA2_3333 == LPAREN || LA2_3333 == RPAREN || ((LA2_3333 >= SQUOTE) && (LA2_3333 <= USCORE))) ) { s = 3341; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3333 == LSBRAQUET || LA2_3333 == RSBRAQUET) ) { s = 405; } SEEK(index2_3333); if ( s>=0 ) { return s; } } break; case 702: { ANTLR3_UINT32 LA2_3314; ANTLR3_MARKER index2_3314; LA2_3314 = LA(1); index2_3314 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3314 == QMARK) ) { s = 854; } else if ( (LA2_3314 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3314 == CRLF) ) { s = 205; } else if ( (LA2_3314 == SEMI) ) { s = 1237; } else if ( (LA2_3314 == DOT) ) { s = 2648; } else if ( (LA2_3314 == COMMON_CHAR || LA2_3314 == HEX_CHAR) ) { s = 2649; } else if ( (LA2_3314 == DIGIT) ) { s = 2650; } else if ( (LA2_3314 == SLASH) ) { s = 2245; } else if ( (LA2_3314 == DASH || LA2_3314 == EMARK || LA2_3314 == LPAREN || LA2_3314 == RPAREN || ((LA2_3314 >= SQUOTE) && (LA2_3314 <= USCORE))) ) { s = 2651; } else if ( (LA2_3314 == PERCENT) ) { s = 2652; } else if ( (LA2_3314 == COLON) ) { s = 2653; } else if ( (LA2_3314 == AND) ) { s = 2654; } else if ( (LA2_3314 == AT) ) { s = 810; } else if ( (LA2_3314 == PLUS) ) { s = 2655; } else if ( (LA2_3314 == EQUAL) ) { s = 812; } else if ( (LA2_3314 == DOLLARD) ) { s = 2656; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3314 == LSBRAQUET || LA2_3314 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_3314 == COMMA) ) { s = 815; } SEEK(index2_3314); if ( s>=0 ) { return s; } } break; case 703: { ANTLR3_UINT32 LA2_851; ANTLR3_MARKER index2_851; LA2_851 = LA(1); index2_851 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_851 == COMMON_CHAR || LA2_851 == HEX_CHAR) ) { s = 244; } else if ( (LA2_851 == DIGIT) ) { s = 850; } else if ( (LA2_851 == COLON) ) { s = 852; } else if ( (LA2_851 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_851 == CRLF) ) { s = 205; } else if ( (LA2_851 == SEMI) ) { s = 853; } else if ( (LA2_851 == QMARK) ) { s = 854; } else if ( (LA2_851 == SLASH) ) { s = 241; } else if ( (LA2_851 == DASH || LA2_851 == DOT || LA2_851 == EMARK || LA2_851 == LPAREN || LA2_851 == RPAREN || ((LA2_851 >= SQUOTE) && (LA2_851 <= USCORE))) ) { s = 246; } else if ( (LA2_851 == PERCENT) ) { s = 247; } else if ( (LA2_851 == AT) ) { s = 248; } else if ( (LA2_851 == AND) ) { s = 249; } else if ( (LA2_851 == EQUAL) ) { s = 250; } else if ( (LA2_851 == PLUS) ) { s = 251; } else if ( (LA2_851 == DOLLARD) ) { s = 252; } else if ( (LA2_851 == COMMA) ) { s = 253; } SEEK(index2_851); if ( s>=0 ) { return s; } } break; case 704: { ANTLR3_UINT32 LA2_1268; ANTLR3_MARKER index2_1268; LA2_1268 = LA(1); index2_1268 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1268 == QMARK) ) { s = 854; } else if ( (LA2_1268 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1268 == CRLF) ) { s = 205; } else if ( (LA2_1268 == SEMI) ) { s = 853; } else if ( (LA2_1268 == DOT) ) { s = 1262; } else if ( (LA2_1268 == COMMON_CHAR || LA2_1268 == HEX_CHAR) ) { s = 1263; } else if ( (LA2_1268 == DIGIT) ) { s = 1264; } else if ( (LA2_1268 == SLASH) ) { s = 1271; } else if ( (LA2_1268 == DASH || LA2_1268 == EMARK || LA2_1268 == LPAREN || LA2_1268 == RPAREN || ((LA2_1268 >= SQUOTE) && (LA2_1268 <= USCORE))) ) { s = 1266; } else if ( (LA2_1268 == PERCENT) ) { s = 1267; } else if ( (LA2_1268 == EQUAL) ) { s = 1756; } else if ( (LA2_1268 == COLON) ) { s = 1265; } else if ( (LA2_1268 == AND) ) { s = 1268; } else if ( (LA2_1268 == AT) ) { s = 497; } else if ( (LA2_1268 == PLUS) ) { s = 1269; } else if ( (LA2_1268 == DOLLARD) ) { s = 1270; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1268 == LSBRAQUET || LA2_1268 == RSBRAQUET) ) { s = 405; } else if ( (LA2_1268 == COMMA) ) { s = 502; } SEEK(index2_1268); if ( s>=0 ) { return s; } } break; case 705: { ANTLR3_UINT32 LA2_2467; ANTLR3_MARKER index2_2467; LA2_2467 = LA(1); index2_2467 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2467 == SLASH) ) { s = 2009; } else if ( (LA2_2467 == QMARK) ) { s = 854; } else if ( (LA2_2467 == SP) ) { s = 204; } else if ( (LA2_2467 == SEMI) ) { s = 2011; } else if ( (LA2_2467 == COMMON_CHAR || LA2_2467 == HEX_CHAR) ) { s = 2461; } else if ( (LA2_2467 == DIGIT) ) { s = 2462; } else if ( (LA2_2467 == DOT) ) { s = 2463; } else if ( (LA2_2467 == PERCENT) ) { s = 2464; } else if ( (LA2_2467 == COLON) ) { s = 2005; } else if ( (LA2_2467 == AT) ) { s = 1123; } else if ( (LA2_2467 == AND) ) { s = 2006; } else if ( (LA2_2467 == EQUAL) ) { s = 2465; } else if ( (LA2_2467 == PLUS) ) { s = 2466; } else if ( (LA2_2467 == DOLLARD) ) { s = 2008; } else if ( (LA2_2467 == COMMA) ) { s = 1128; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2467 == CRLF) ) { s = 205; } else if ( (LA2_2467 == DASH || LA2_2467 == EMARK || LA2_2467 == LPAREN || LA2_2467 == RPAREN || ((LA2_2467 >= SQUOTE) && (LA2_2467 <= USCORE))) ) { s = 2467; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2467 == LSBRAQUET || LA2_2467 == RSBRAQUET) ) { s = 405; } SEEK(index2_2467); if ( s>=0 ) { return s; } } break; case 706: { ANTLR3_UINT32 LA2_3641; ANTLR3_MARKER index2_3641; LA2_3641 = LA(1); index2_3641 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3641 == SEMI) ) { s = 3463; } else if ( (LA2_3641 == QMARK) ) { s = 854; } else if ( (LA2_3641 == SP) ) { s = 204; } else if ( (LA2_3641 == SLASH) ) { s = 3435; } else if ( (LA2_3641 == COMMON_CHAR || LA2_3641 == HEX_CHAR) ) { s = 3633; } else if ( (LA2_3641 == DIGIT) ) { s = 3634; } else if ( (LA2_3641 == DOT) ) { s = 3635; } else if ( (LA2_3641 == PERCENT) ) { s = 3636; } else if ( (LA2_3641 == COLON) ) { s = 3637; } else if ( (LA2_3641 == AT) ) { s = 2195; } else if ( (LA2_3641 == AND) ) { s = 3638; } else if ( (LA2_3641 == EQUAL) ) { s = 2197; } else if ( (LA2_3641 == PLUS) ) { s = 3639; } else if ( (LA2_3641 == DOLLARD) ) { s = 3640; } else if ( (LA2_3641 == COMMA) ) { s = 2200; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3641 == CRLF) ) { s = 205; } else if ( (LA2_3641 == DASH || LA2_3641 == EMARK || LA2_3641 == LPAREN || LA2_3641 == RPAREN || ((LA2_3641 >= SQUOTE) && (LA2_3641 <= USCORE))) ) { s = 3641; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3641 == LSBRAQUET || LA2_3641 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3641); if ( s>=0 ) { return s; } } break; case 707: { ANTLR3_UINT32 LA2_1265; ANTLR3_MARKER index2_1265; LA2_1265 = LA(1); index2_1265 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1265 == QMARK) ) { s = 854; } else if ( (LA2_1265 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1265 == CRLF) ) { s = 205; } else if ( (LA2_1265 == SEMI) ) { s = 853; } else if ( (LA2_1265 == DOT) ) { s = 1262; } else if ( (LA2_1265 == COMMON_CHAR || LA2_1265 == HEX_CHAR) ) { s = 1263; } else if ( (LA2_1265 == DIGIT) ) { s = 1264; } else if ( (LA2_1265 == SLASH) ) { s = 1271; } else if ( (LA2_1265 == DASH || LA2_1265 == EMARK || LA2_1265 == LPAREN || LA2_1265 == RPAREN || ((LA2_1265 >= SQUOTE) && (LA2_1265 <= USCORE))) ) { s = 1266; } else if ( (LA2_1265 == PERCENT) ) { s = 1267; } else if ( (LA2_1265 == EQUAL) ) { s = 1756; } else if ( (LA2_1265 == COLON) ) { s = 1265; } else if ( (LA2_1265 == AND) ) { s = 1268; } else if ( (LA2_1265 == AT) ) { s = 497; } else if ( (LA2_1265 == PLUS) ) { s = 1269; } else if ( (LA2_1265 == DOLLARD) ) { s = 1270; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1265 == LSBRAQUET || LA2_1265 == RSBRAQUET) ) { s = 405; } else if ( (LA2_1265 == COMMA) ) { s = 502; } SEEK(index2_1265); if ( s>=0 ) { return s; } } break; case 708: { ANTLR3_UINT32 LA2_2930; ANTLR3_MARKER index2_2930; LA2_2930 = LA(1); index2_2930 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2930 == SP) ) { s = 2456; } else if ( (LA2_2930 == CRLF) ) { s = 2458; } else if ( (LA2_2930 == EQUAL) ) { s = 2552; } else if ( (LA2_2930 == SLASH) ) { s = 2553; } else if ( (LA2_2930 == QMARK) ) { s = 854; } else if ( (LA2_2930 == SEMI) ) { s = 1630; } else if ( (LA2_2930 == COMMON_CHAR || LA2_2930 == HEX_CHAR) ) { s = 2068; } else if ( (LA2_2930 == DIGIT) ) { s = 2069; } else if ( (LA2_2930 == DOT) ) { s = 2070; } else if ( (LA2_2930 == PERCENT) ) { s = 2071; } else if ( (LA2_2930 == PLUS) ) { s = 2072; } else if ( (LA2_2930 == BQUOTE) ) { s = 1203; } else if ( (LA2_2930 == DASH || LA2_2930 == EMARK || LA2_2930 == LPAREN || LA2_2930 == RPAREN || ((LA2_2930 >= SQUOTE) && (LA2_2930 <= USCORE))) ) { s = 2073; } else if ( (LA2_2930 == COLON) ) { s = 1727; } else if ( (LA2_2930 == AND) ) { s = 1730; } else if ( (LA2_2930 == AT) ) { s = 810; } else if ( (LA2_2930 == DOLLARD) ) { s = 1732; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2930 == LSBRAQUET || LA2_2930 == RSBRAQUET) ) { s = 405; } else if ( (LA2_2930 == COMMA) ) { s = 815; } SEEK(index2_2930); if ( s>=0 ) { return s; } } break; case 709: { ANTLR3_UINT32 LA2_1749; ANTLR3_MARKER index2_1749; LA2_1749 = LA(1); index2_1749 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1749 == SP) ) { s = 2010; } else if ( (LA2_1749 == CRLF) ) { s = 2012; } else if ( (LA2_1749 == COMMON_CHAR || LA2_1749 == HEX_CHAR) ) { s = 2218; } else if ( (LA2_1749 == DIGIT) ) { s = 2219; } else if ( (LA2_1749 == DOT) ) { s = 2220; } else if ( (LA2_1749 == PERCENT) ) { s = 2221; } else if ( (LA2_1749 == PLUS) ) { s = 2222; } else if ( (LA2_1749 == BQUOTE) ) { s = 1203; } else if ( (LA2_1749 == DASH || LA2_1749 == EMARK || LA2_1749 == LPAREN || LA2_1749 == RPAREN || ((LA2_1749 >= SQUOTE) && (LA2_1749 <= USCORE))) ) { s = 2223; } else if ( (LA2_1749 == AND || LA2_1749 == COLON || LA2_1749 == DOLLARD || LA2_1749 == SLASH) ) { s = 1790; } else if ( (LA2_1749 == QMARK) ) { s = 1308; } else if ( (LA2_1749 == SEMI) ) { s = 1307; } else if ( (LA2_1749 == COMMA) ) { s = 506; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1749 == LSBRAQUET || LA2_1749 == RSBRAQUET) ) { s = 405; } else if ( (LA2_1749 == AT || LA2_1749 == EQUAL) ) { s = 508; } SEEK(index2_1749); if ( s>=0 ) { return s; } } break; case 710: { ANTLR3_UINT32 LA2_1269; ANTLR3_MARKER index2_1269; LA2_1269 = LA(1); index2_1269 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1269 == QMARK) ) { s = 854; } else if ( (LA2_1269 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1269 == CRLF) ) { s = 205; } else if ( (LA2_1269 == SEMI) ) { s = 853; } else if ( (LA2_1269 == DOT) ) { s = 1262; } else if ( (LA2_1269 == COMMON_CHAR || LA2_1269 == HEX_CHAR) ) { s = 1263; } else if ( (LA2_1269 == DIGIT) ) { s = 1264; } else if ( (LA2_1269 == SLASH) ) { s = 1271; } else if ( (LA2_1269 == DASH || LA2_1269 == EMARK || LA2_1269 == LPAREN || LA2_1269 == RPAREN || ((LA2_1269 >= SQUOTE) && (LA2_1269 <= USCORE))) ) { s = 1266; } else if ( (LA2_1269 == PERCENT) ) { s = 1267; } else if ( (LA2_1269 == EQUAL) ) { s = 1756; } else if ( (LA2_1269 == COLON) ) { s = 1265; } else if ( (LA2_1269 == AND) ) { s = 1268; } else if ( (LA2_1269 == AT) ) { s = 497; } else if ( (LA2_1269 == PLUS) ) { s = 1269; } else if ( (LA2_1269 == DOLLARD) ) { s = 1270; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1269 == LSBRAQUET || LA2_1269 == RSBRAQUET) ) { s = 405; } else if ( (LA2_1269 == COMMA) ) { s = 502; } SEEK(index2_1269); if ( s>=0 ) { return s; } } break; case 711: { ANTLR3_UINT32 LA2_1270; ANTLR3_MARKER index2_1270; LA2_1270 = LA(1); index2_1270 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1270 == QMARK) ) { s = 854; } else if ( (LA2_1270 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1270 == CRLF) ) { s = 205; } else if ( (LA2_1270 == SEMI) ) { s = 853; } else if ( (LA2_1270 == DOT) ) { s = 1262; } else if ( (LA2_1270 == COMMON_CHAR || LA2_1270 == HEX_CHAR) ) { s = 1263; } else if ( (LA2_1270 == DIGIT) ) { s = 1264; } else if ( (LA2_1270 == SLASH) ) { s = 1271; } else if ( (LA2_1270 == DASH || LA2_1270 == EMARK || LA2_1270 == LPAREN || LA2_1270 == RPAREN || ((LA2_1270 >= SQUOTE) && (LA2_1270 <= USCORE))) ) { s = 1266; } else if ( (LA2_1270 == PERCENT) ) { s = 1267; } else if ( (LA2_1270 == EQUAL) ) { s = 1756; } else if ( (LA2_1270 == COLON) ) { s = 1265; } else if ( (LA2_1270 == AND) ) { s = 1268; } else if ( (LA2_1270 == AT) ) { s = 497; } else if ( (LA2_1270 == PLUS) ) { s = 1269; } else if ( (LA2_1270 == DOLLARD) ) { s = 1270; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1270 == LSBRAQUET || LA2_1270 == RSBRAQUET) ) { s = 405; } else if ( (LA2_1270 == COMMA) ) { s = 502; } SEEK(index2_1270); if ( s>=0 ) { return s; } } break; case 712: { ANTLR3_UINT32 LA2_1724; ANTLR3_MARKER index2_1724; LA2_1724 = LA(1); index2_1724 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1724 == QMARK) ) { s = 854; } else if ( (LA2_1724 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1724 == CRLF) ) { s = 205; } else if ( (LA2_1724 == SEMI) ) { s = 1237; } else if ( (LA2_1724 == DOT) ) { s = 1724; } else if ( (LA2_1724 == COMMON_CHAR || LA2_1724 == HEX_CHAR) ) { s = 1725; } else if ( (LA2_1724 == DIGIT) ) { s = 1726; } else if ( (LA2_1724 == SLASH) ) { s = 1271; } else if ( (LA2_1724 == DASH || LA2_1724 == EMARK || LA2_1724 == LPAREN || LA2_1724 == RPAREN || ((LA2_1724 >= SQUOTE) && (LA2_1724 <= USCORE))) ) { s = 1728; } else if ( (LA2_1724 == PERCENT) ) { s = 1729; } else if ( (LA2_1724 == EQUAL) ) { s = 2207; } else if ( (LA2_1724 == COLON) ) { s = 1727; } else if ( (LA2_1724 == AND) ) { s = 1730; } else if ( (LA2_1724 == AT) ) { s = 810; } else if ( (LA2_1724 == PLUS) ) { s = 1731; } else if ( (LA2_1724 == DOLLARD) ) { s = 1732; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1724 == LSBRAQUET || LA2_1724 == RSBRAQUET) ) { s = 405; } else if ( (LA2_1724 == COMMA) ) { s = 815; } SEEK(index2_1724); if ( s>=0 ) { return s; } } break; case 713: { ANTLR3_UINT32 LA2_3657; ANTLR3_MARKER index2_3657; LA2_3657 = LA(1); index2_3657 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3657 == DIGIT) ) { s = 3786; } else if ( (LA2_3657 == SEMI) ) { s = 3170; } else if ( (LA2_3657 == SLASH) ) { s = 3171; } else if ( (LA2_3657 == QMARK) ) { s = 854; } else if ( (LA2_3657 == SP) ) { s = 204; } else if ( (LA2_3657 == COMMON_CHAR || LA2_3657 == HEX_CHAR) ) { s = 3162; } else if ( (LA2_3657 == DOT) ) { s = 3163; } else if ( (LA2_3657 == PERCENT) ) { s = 3164; } else if ( (LA2_3657 == COLON) ) { s = 3165; } else if ( (LA2_3657 == AT) ) { s = 1710; } else if ( (LA2_3657 == AND) ) { s = 3166; } else if ( (LA2_3657 == EQUAL) ) { s = 3167; } else if ( (LA2_3657 == PLUS) ) { s = 3168; } else if ( (LA2_3657 == DOLLARD) ) { s = 3169; } else if ( (LA2_3657 == COMMA) ) { s = 1715; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3657 == CRLF) ) { s = 205; } else if ( (LA2_3657 == DASH || LA2_3657 == EMARK || LA2_3657 == LPAREN || LA2_3657 == RPAREN || ((LA2_3657 >= SQUOTE) && (LA2_3657 <= USCORE))) ) { s = 3172; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3657 == LSBRAQUET || LA2_3657 == RSBRAQUET) ) { s = 405; } SEEK(index2_3657); if ( s>=0 ) { return s; } } break; case 714: { ANTLR3_UINT32 LA2_2242; ANTLR3_MARKER index2_2242; LA2_2242 = LA(1); index2_2242 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2242 == QMARK) ) { s = 854; } else if ( (LA2_2242 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2242 == CRLF) ) { s = 205; } else if ( (LA2_2242 == SEMI) ) { s = 853; } else if ( (LA2_2242 == DOT) ) { s = 2242; } else if ( (LA2_2242 == COMMON_CHAR || LA2_2242 == HEX_CHAR) ) { s = 2243; } else if ( (LA2_2242 == DIGIT) ) { s = 2244; } else if ( (LA2_2242 == SLASH) ) { s = 2245; } else if ( (LA2_2242 == DASH || LA2_2242 == EMARK || LA2_2242 == LPAREN || LA2_2242 == RPAREN || ((LA2_2242 >= SQUOTE) && (LA2_2242 <= USCORE))) ) { s = 2246; } else if ( (LA2_2242 == PERCENT) ) { s = 2247; } else if ( (LA2_2242 == COLON) ) { s = 2248; } else if ( (LA2_2242 == AND) ) { s = 2249; } else if ( (LA2_2242 == AT) ) { s = 497; } else if ( (LA2_2242 == PLUS) ) { s = 2250; } else if ( (LA2_2242 == EQUAL) ) { s = 499; } else if ( (LA2_2242 == DOLLARD) ) { s = 2251; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2242 == LSBRAQUET || LA2_2242 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_2242 == COMMA) ) { s = 502; } SEEK(index2_2242); if ( s>=0 ) { return s; } } break; case 715: { ANTLR3_UINT32 LA2_2718; ANTLR3_MARKER index2_2718; LA2_2718 = LA(1); index2_2718 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2718 == QMARK) ) { s = 1308; } else if ( (LA2_2718 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2718 == CRLF) ) { s = 205; } else if ( (LA2_2718 == SEMI) ) { s = 1307; } else if ( (LA2_2718 == DOT) ) { s = 2714; } else if ( (LA2_2718 == COMMON_CHAR || LA2_2718 == HEX_CHAR) ) { s = 2715; } else if ( (LA2_2718 == DIGIT) ) { s = 2716; } else if ( (LA2_2718 == AND || LA2_2718 == COLON || LA2_2718 == DOLLARD || LA2_2718 == PLUS || LA2_2718 == SLASH) ) { s = 2717; } else if ( (LA2_2718 == DASH || LA2_2718 == EMARK || LA2_2718 == LPAREN || LA2_2718 == RPAREN || ((LA2_2718 >= SQUOTE) && (LA2_2718 <= USCORE))) ) { s = 2718; } else if ( (LA2_2718 == PERCENT) ) { s = 2719; } else if ( (LA2_2718 == COMMA) ) { s = 506; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2718 == LSBRAQUET || LA2_2718 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_2718 == AT || LA2_2718 == EQUAL) ) { s = 508; } SEEK(index2_2718); if ( s>=0 ) { return s; } } break; case 716: { ANTLR3_UINT32 LA2_3856; ANTLR3_MARKER index2_3856; LA2_3856 = LA(1); index2_3856 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3856 == SLASH) ) { s = 3226; } else if ( (LA2_3856 == QMARK) ) { s = 854; } else if ( (LA2_3856 == SP) ) { s = 204; } else if ( (LA2_3856 == SEMI) ) { s = 3530; } else if ( (LA2_3856 == COMMON_CHAR || LA2_3856 == HEX_CHAR) ) { s = 3852; } else if ( (LA2_3856 == DIGIT) ) { s = 3853; } else if ( (LA2_3856 == DOT) ) { s = 3854; } else if ( (LA2_3856 == PERCENT) ) { s = 3855; } else if ( (LA2_3856 == COLON) ) { s = 3856; } else if ( (LA2_3856 == AT) ) { s = 3271; } else if ( (LA2_3856 == AND) ) { s = 3857; } else if ( (LA2_3856 == EQUAL) ) { s = 3273; } else if ( (LA2_3856 == PLUS) ) { s = 3858; } else if ( (LA2_3856 == DOLLARD) ) { s = 3859; } else if ( (LA2_3856 == COMMA) ) { s = 3276; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3856 == CRLF) ) { s = 205; } else if ( (LA2_3856 == DASH || LA2_3856 == EMARK || LA2_3856 == LPAREN || LA2_3856 == RPAREN || ((LA2_3856 >= SQUOTE) && (LA2_3856 <= USCORE))) ) { s = 3860; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3856 == LSBRAQUET || LA2_3856 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3856); if ( s>=0 ) { return s; } } break; case 717: { ANTLR3_UINT32 LA2_1103; ANTLR3_MARKER index2_1103; LA2_1103 = LA(1); index2_1103 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1103 == AND) ) { s = 1553; } else if ( (LA2_1103 == SP) ) { s = 35; } else if ( (LA2_1103 == QMARK) ) { s = 1102; } else if ( (LA2_1103 == COMMON_CHAR || LA2_1103 == HEX_CHAR) ) { s = 1554; } else if ( (LA2_1103 == DIGIT) ) { s = 1555; } else if ( (LA2_1103 == DASH || LA2_1103 == DOT || LA2_1103 == EMARK || LA2_1103 == LPAREN || LA2_1103 == RPAREN || ((LA2_1103 >= SQUOTE) && (LA2_1103 <= USCORE))) ) { s = 1556; } else if ( (LA2_1103 == PERCENT) ) { s = 1557; } else if ( (LA2_1103 == SEMI) ) { s = 105; } else if ( (LA2_1103 == COMMA) ) { s = 106; } else if ( (LA2_1103 == COLON || LA2_1103 == DOLLARD || LA2_1103 == PLUS || LA2_1103 == SLASH) ) { s = 1103; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1103 == LSBRAQUET || LA2_1103 == RSBRAQUET) ) { s = 1104; } else if ( (LA2_1103 == AT || LA2_1103 == EQUAL) ) { s = 108; } SEEK(index2_1103); if ( s>=0 ) { return s; } } break; case 718: { ANTLR3_UINT32 LA2_3857; ANTLR3_MARKER index2_3857; LA2_3857 = LA(1); index2_3857 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3857 == SLASH) ) { s = 3226; } else if ( (LA2_3857 == QMARK) ) { s = 854; } else if ( (LA2_3857 == SP) ) { s = 204; } else if ( (LA2_3857 == SEMI) ) { s = 3530; } else if ( (LA2_3857 == COMMON_CHAR || LA2_3857 == HEX_CHAR) ) { s = 3852; } else if ( (LA2_3857 == DIGIT) ) { s = 3853; } else if ( (LA2_3857 == DOT) ) { s = 3854; } else if ( (LA2_3857 == PERCENT) ) { s = 3855; } else if ( (LA2_3857 == COLON) ) { s = 3856; } else if ( (LA2_3857 == AT) ) { s = 3271; } else if ( (LA2_3857 == AND) ) { s = 3857; } else if ( (LA2_3857 == EQUAL) ) { s = 3273; } else if ( (LA2_3857 == PLUS) ) { s = 3858; } else if ( (LA2_3857 == DOLLARD) ) { s = 3859; } else if ( (LA2_3857 == COMMA) ) { s = 3276; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3857 == CRLF) ) { s = 205; } else if ( (LA2_3857 == DASH || LA2_3857 == EMARK || LA2_3857 == LPAREN || LA2_3857 == RPAREN || ((LA2_3857 >= SQUOTE) && (LA2_3857 <= USCORE))) ) { s = 3860; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3857 == LSBRAQUET || LA2_3857 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3857); if ( s>=0 ) { return s; } } break; case 719: { ANTLR3_UINT32 LA2_3031; ANTLR3_MARKER index2_3031; LA2_3031 = LA(1); index2_3031 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3031 == COMMON_CHAR || LA2_3031 == HEX_CHAR) ) { s = 3342; } else if ( (LA2_3031 == DIGIT) ) { s = 3343; } else if ( (LA2_3031 == DOT) ) { s = 3344; } else if ( (LA2_3031 == PERCENT) ) { s = 3345; } else if ( (LA2_3031 == COLON) ) { s = 3346; } else if ( (LA2_3031 == AT) ) { s = 2684; } else if ( (LA2_3031 == AND) ) { s = 3347; } else if ( (LA2_3031 == EQUAL) ) { s = 3348; } else if ( (LA2_3031 == PLUS) ) { s = 3349; } else if ( (LA2_3031 == DOLLARD) ) { s = 3350; } else if ( (LA2_3031 == COMMA) ) { s = 2689; } else if ( (LA2_3031 == SEMI) ) { s = 3351; } else if ( (LA2_3031 == QMARK) ) { s = 1751; } else if ( (LA2_3031 == SP) ) { s = 204; } else if ( (LA2_3031 == SLASH) ) { s = 3031; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3031 == CRLF) ) { s = 205; } else if ( (LA2_3031 == DASH || LA2_3031 == EMARK || LA2_3031 == LPAREN || LA2_3031 == RPAREN || ((LA2_3031 >= SQUOTE) && (LA2_3031 <= USCORE))) ) { s = 3352; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3031 == LSBRAQUET || LA2_3031 == RSBRAQUET) ) { s = 405; } SEEK(index2_3031); if ( s>=0 ) { return s; } } break; case 720: { ANTLR3_UINT32 LA2_3859; ANTLR3_MARKER index2_3859; LA2_3859 = LA(1); index2_3859 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3859 == SLASH) ) { s = 3226; } else if ( (LA2_3859 == QMARK) ) { s = 854; } else if ( (LA2_3859 == SP) ) { s = 204; } else if ( (LA2_3859 == SEMI) ) { s = 3530; } else if ( (LA2_3859 == COMMON_CHAR || LA2_3859 == HEX_CHAR) ) { s = 3852; } else if ( (LA2_3859 == DIGIT) ) { s = 3853; } else if ( (LA2_3859 == DOT) ) { s = 3854; } else if ( (LA2_3859 == PERCENT) ) { s = 3855; } else if ( (LA2_3859 == COLON) ) { s = 3856; } else if ( (LA2_3859 == AT) ) { s = 3271; } else if ( (LA2_3859 == AND) ) { s = 3857; } else if ( (LA2_3859 == EQUAL) ) { s = 3273; } else if ( (LA2_3859 == PLUS) ) { s = 3858; } else if ( (LA2_3859 == DOLLARD) ) { s = 3859; } else if ( (LA2_3859 == COMMA) ) { s = 3276; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3859 == CRLF) ) { s = 205; } else if ( (LA2_3859 == DASH || LA2_3859 == EMARK || LA2_3859 == LPAREN || LA2_3859 == RPAREN || ((LA2_3859 >= SQUOTE) && (LA2_3859 <= USCORE))) ) { s = 3860; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3859 == LSBRAQUET || LA2_3859 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3859); if ( s>=0 ) { return s; } } break; case 721: { ANTLR3_UINT32 LA2_3858; ANTLR3_MARKER index2_3858; LA2_3858 = LA(1); index2_3858 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3858 == SLASH) ) { s = 3226; } else if ( (LA2_3858 == QMARK) ) { s = 854; } else if ( (LA2_3858 == SP) ) { s = 204; } else if ( (LA2_3858 == SEMI) ) { s = 3530; } else if ( (LA2_3858 == COMMON_CHAR || LA2_3858 == HEX_CHAR) ) { s = 3852; } else if ( (LA2_3858 == DIGIT) ) { s = 3853; } else if ( (LA2_3858 == DOT) ) { s = 3854; } else if ( (LA2_3858 == PERCENT) ) { s = 3855; } else if ( (LA2_3858 == COLON) ) { s = 3856; } else if ( (LA2_3858 == AT) ) { s = 3271; } else if ( (LA2_3858 == AND) ) { s = 3857; } else if ( (LA2_3858 == EQUAL) ) { s = 3273; } else if ( (LA2_3858 == PLUS) ) { s = 3858; } else if ( (LA2_3858 == DOLLARD) ) { s = 3859; } else if ( (LA2_3858 == COMMA) ) { s = 3276; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3858 == CRLF) ) { s = 205; } else if ( (LA2_3858 == DASH || LA2_3858 == EMARK || LA2_3858 == LPAREN || LA2_3858 == RPAREN || ((LA2_3858 >= SQUOTE) && (LA2_3858 <= USCORE))) ) { s = 3860; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3858 == LSBRAQUET || LA2_3858 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3858); if ( s>=0 ) { return s; } } break; case 722: { ANTLR3_UINT32 LA2_410; ANTLR3_MARKER index2_410; LA2_410 = LA(1); index2_410 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_410 == COLON) ) { s = 408; } else if ( (LA2_410 == AT) ) { s = 89; } else if ( (LA2_410 == COMMON_CHAR || LA2_410 == HEX_CHAR) ) { s = 409; } else if ( (LA2_410 == DIGIT) ) { s = 410; } else if ( (LA2_410 == DASH || LA2_410 == DOT || LA2_410 == EMARK || LA2_410 == LPAREN || LA2_410 == RPAREN || ((LA2_410 >= SQUOTE) && (LA2_410 <= USCORE))) ) { s = 411; } else if ( (LA2_410 == PERCENT) ) { s = 412; } else if ( (LA2_410 == EQUAL) ) { s = 726; } else if ( (LA2_410 == QMARK) ) { s = 413; } else if ( (LA2_410 == SEMI) ) { s = 94; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_410 == LSBRAQUET || LA2_410 == RSBRAQUET) ) { s = 414; } else if ( (LA2_410 == SP) ) { s = 35; } else if ( (LA2_410 == COMMA) ) { s = 97; } else if ( (LA2_410 == AND) ) { s = 99; } else if ( (LA2_410 == DOLLARD || LA2_410 == PLUS || LA2_410 == SLASH) ) { s = 415; } SEEK(index2_410); if ( s>=0 ) { return s; } } break; case 723: { ANTLR3_UINT32 LA2_1561; ANTLR3_MARKER index2_1561; LA2_1561 = LA(1); index2_1561 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1561 == COLON) ) { s = 1559; } else if ( (LA2_1561 == AT) ) { s = 89; } else if ( (LA2_1561 == COMMON_CHAR || LA2_1561 == HEX_CHAR) ) { s = 1560; } else if ( (LA2_1561 == DIGIT) ) { s = 1561; } else if ( (LA2_1561 == DASH || LA2_1561 == DOT || LA2_1561 == EMARK || LA2_1561 == LPAREN || LA2_1561 == RPAREN || ((LA2_1561 >= SQUOTE) && (LA2_1561 <= USCORE))) ) { s = 1562; } else if ( (LA2_1561 == PERCENT) ) { s = 1563; } else if ( (LA2_1561 == EQUAL) ) { s = 1995; } else if ( (LA2_1561 == QMARK) ) { s = 1564; } else if ( (LA2_1561 == SEMI) ) { s = 94; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1561 == LSBRAQUET || LA2_1561 == RSBRAQUET) ) { s = 1552; } else if ( (LA2_1561 == SP) ) { s = 35; } else if ( (LA2_1561 == COMMA) ) { s = 97; } else if ( (LA2_1561 == AND) ) { s = 99; } else if ( (LA2_1561 == DOLLARD || LA2_1561 == PLUS || LA2_1561 == SLASH) ) { s = 1565; } SEEK(index2_1561); if ( s>=0 ) { return s; } } break; case 724: { ANTLR3_UINT32 LA2_3711; ANTLR3_MARKER index2_3711; LA2_3711 = LA(1); index2_3711 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3711 == SLASH) ) { s = 3678; } else if ( (LA2_3711 == QMARK) ) { s = 854; } else if ( (LA2_3711 == SP) ) { s = 1585; } else if ( (LA2_3711 == CRLF) ) { s = 1588; } else if ( (LA2_3711 == SEMI) ) { s = 2986; } else if ( (LA2_3711 == COMMON_CHAR || LA2_3711 == HEX_CHAR) ) { s = 3707; } else if ( (LA2_3711 == DIGIT) ) { s = 3708; } else if ( (LA2_3711 == DOT) ) { s = 3709; } else if ( (LA2_3711 == PERCENT) ) { s = 3710; } else if ( (LA2_3711 == PLUS) ) { s = 3711; } else if ( (LA2_3711 == BQUOTE) ) { s = 2092; } else if ( (LA2_3711 == COLON) ) { s = 3712; } else if ( (LA2_3711 == AT) ) { s = 2578; } else if ( (LA2_3711 == AND) ) { s = 3713; } else if ( (LA2_3711 == EQUAL) ) { s = 2580; } else if ( (LA2_3711 == DOLLARD) ) { s = 3714; } else if ( (LA2_3711 == COMMA) ) { s = 2583; } else if ( (LA2_3711 == DASH || LA2_3711 == EMARK || LA2_3711 == LPAREN || LA2_3711 == RPAREN || ((LA2_3711 >= SQUOTE) && (LA2_3711 <= USCORE))) ) { s = 3715; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3711 == LSBRAQUET || LA2_3711 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3711); if ( s>=0 ) { return s; } } break; case 725: { ANTLR3_UINT32 LA2_818; ANTLR3_MARKER index2_818; LA2_818 = LA(1); index2_818 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_818 == COMMON_CHAR || LA2_818 == HEX_CHAR) ) { s = 817; } else if ( (LA2_818 == DIGIT) ) { s = 818; } else if ( (LA2_818 == DASH) ) { s = 819; } else if ( (LA2_818 == DOT) ) { s = 1235; } else if ( (LA2_818 == COLON) ) { s = 1236; } else if ( (LA2_818 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_818 == CRLF) ) { s = 205; } else if ( (LA2_818 == SEMI) ) { s = 1237; } else if ( (LA2_818 == QMARK) ) { s = 854; } else if ( (LA2_818 == SLASH) ) { s = 241; } else if ( (LA2_818 == EMARK || LA2_818 == LPAREN || LA2_818 == RPAREN || ((LA2_818 >= SQUOTE) && (LA2_818 <= USCORE))) ) { s = 462; } else if ( (LA2_818 == PERCENT) ) { s = 463; } else if ( (LA2_818 == AT) ) { s = 464; } else if ( (LA2_818 == AND) ) { s = 465; } else if ( (LA2_818 == EQUAL) ) { s = 466; } else if ( (LA2_818 == PLUS) ) { s = 467; } else if ( (LA2_818 == DOLLARD) ) { s = 468; } else if ( (LA2_818 == COMMA) ) { s = 469; } SEEK(index2_818); if ( s>=0 ) { return s; } } break; case 726: { ANTLR3_UINT32 LA2_3216; ANTLR3_MARKER index2_3216; LA2_3216 = LA(1); index2_3216 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3216 == QMARK) ) { s = 854; } else if ( (LA2_3216 == SP) ) { s = 204; } else if ( (LA2_3216 == SLASH) ) { s = 2830; } else if ( (LA2_3216 == SEMI) ) { s = 2477; } else if ( (LA2_3216 == COMMON_CHAR || LA2_3216 == HEX_CHAR) ) { s = 3211; } else if ( (LA2_3216 == DIGIT) ) { s = 3212; } else if ( (LA2_3216 == DOT) ) { s = 3213; } else if ( (LA2_3216 == PERCENT) ) { s = 3214; } else if ( (LA2_3216 == COLON) ) { s = 3204; } else if ( (LA2_3216 == AT) ) { s = 1576; } else if ( (LA2_3216 == AND) ) { s = 3205; } else if ( (LA2_3216 == EQUAL) ) { s = 1578; } else if ( (LA2_3216 == PLUS) ) { s = 3215; } else if ( (LA2_3216 == DOLLARD) ) { s = 3207; } else if ( (LA2_3216 == COMMA) ) { s = 1581; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3216 == CRLF) ) { s = 205; } else if ( (LA2_3216 == DASH || LA2_3216 == EMARK || LA2_3216 == LPAREN || LA2_3216 == RPAREN || ((LA2_3216 >= SQUOTE) && (LA2_3216 <= USCORE))) ) { s = 3216; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3216 == LSBRAQUET || LA2_3216 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3216); if ( s>=0 ) { return s; } } break; case 727: { ANTLR3_UINT32 LA2_3206; ANTLR3_MARKER index2_3206; LA2_3206 = LA(1); index2_3206 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3206 == QMARK) ) { s = 854; } else if ( (LA2_3206 == SP) ) { s = 1585; } else if ( (LA2_3206 == SLASH) ) { s = 3153; } else if ( (LA2_3206 == SEMI) ) { s = 2051; } else if ( (LA2_3206 == COMMON_CHAR || LA2_3206 == HEX_CHAR) ) { s = 3200; } else if ( (LA2_3206 == DIGIT) ) { s = 3201; } else if ( (LA2_3206 == DOT) ) { s = 3202; } else if ( (LA2_3206 == PERCENT) ) { s = 3203; } else if ( (LA2_3206 == COLON) ) { s = 3204; } else if ( (LA2_3206 == AT) ) { s = 1576; } else if ( (LA2_3206 == AND) ) { s = 3205; } else if ( (LA2_3206 == EQUAL) ) { s = 1578; } else if ( (LA2_3206 == PLUS) ) { s = 3206; } else if ( (LA2_3206 == DOLLARD) ) { s = 3207; } else if ( (LA2_3206 == COMMA) ) { s = 1581; } else if ( (LA2_3206 == CRLF) ) { s = 1588; } else if ( (LA2_3206 == BQUOTE) ) { s = 2092; } else if ( (LA2_3206 == DASH || LA2_3206 == EMARK || LA2_3206 == LPAREN || LA2_3206 == RPAREN || ((LA2_3206 >= SQUOTE) && (LA2_3206 <= USCORE))) ) { s = 3208; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3206 == LSBRAQUET || LA2_3206 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3206); if ( s>=0 ) { return s; } } break; case 728: { ANTLR3_UINT32 LA2_3445; ANTLR3_MARKER index2_3445; LA2_3445 = LA(1); index2_3445 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3445 == SLASH) ) { s = 3171; } else if ( (LA2_3445 == QMARK) ) { s = 854; } else if ( (LA2_3445 == SP) ) { s = 204; } else if ( (LA2_3445 == SEMI) ) { s = 3170; } else if ( (LA2_3445 == COMMON_CHAR || LA2_3445 == HEX_CHAR) ) { s = 3445; } else if ( (LA2_3445 == DIGIT) ) { s = 3446; } else if ( (LA2_3445 == DOT) ) { s = 3447; } else if ( (LA2_3445 == PERCENT) ) { s = 3448; } else if ( (LA2_3445 == COLON) ) { s = 3449; } else if ( (LA2_3445 == AT) ) { s = 2184; } else if ( (LA2_3445 == AND) ) { s = 3450; } else if ( (LA2_3445 == EQUAL) ) { s = 3643; } else if ( (LA2_3445 == PLUS) ) { s = 3451; } else if ( (LA2_3445 == DOLLARD) ) { s = 3452; } else if ( (LA2_3445 == COMMA) ) { s = 2189; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3445 == CRLF) ) { s = 205; } else if ( (LA2_3445 == DASH || LA2_3445 == EMARK || LA2_3445 == LPAREN || LA2_3445 == RPAREN || ((LA2_3445 >= SQUOTE) && (LA2_3445 <= USCORE))) ) { s = 3453; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3445 == LSBRAQUET || LA2_3445 == RSBRAQUET) ) { s = 405; } SEEK(index2_3445); if ( s>=0 ) { return s; } } break; case 729: { ANTLR3_UINT32 LA2_699; ANTLR3_MARKER index2_699; LA2_699 = LA(1); index2_699 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_699 == AT) ) { s = 89; } else if ( (LA2_699 == COMMON_CHAR || LA2_699 == HEX_CHAR) ) { s = 699; } else if ( (LA2_699 == DIGIT) ) { s = 700; } else if ( (LA2_699 == DOT) ) { s = 701; } else if ( (LA2_699 == PERCENT) ) { s = 702; } else if ( (LA2_699 == AND) ) { s = 703; } else if ( (LA2_699 == EQUAL) ) { s = 704; } else if ( (LA2_699 == PLUS) ) { s = 705; } else if ( (LA2_699 == DOLLARD) ) { s = 706; } else if ( (LA2_699 == COMMA) ) { s = 197; } else if ( (LA2_699 == QMARK) ) { s = 694; } else if ( (LA2_699 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_699 == CRLF) ) { s = 205; } else if ( (LA2_699 == SEMI) ) { s = 693; } else if ( (LA2_699 == DASH || LA2_699 == EMARK || LA2_699 == LPAREN || LA2_699 == RPAREN || ((LA2_699 >= SQUOTE) && (LA2_699 <= USCORE))) ) { s = 707; } else if ( (LA2_699 == COLON || LA2_699 == SLASH) ) { s = 708; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_699 == LSBRAQUET || LA2_699 == RSBRAQUET) ) { s = 405; } SEEK(index2_699); if ( s>=0 ) { return s; } } break; case 730: { ANTLR3_UINT32 LA2_2028; ANTLR3_MARKER index2_2028; LA2_2028 = LA(1); index2_2028 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2028 == SP) ) { s = 2511; } else if ( (LA2_2028 == CRLF) ) { s = 2012; } else if ( (LA2_2028 == COMMON_CHAR || LA2_2028 == HEX_CHAR) ) { s = 2512; } else if ( (LA2_2028 == DIGIT) ) { s = 2481; } else if ( (LA2_2028 == DOT) ) { s = 2482; } else if ( (LA2_2028 == PERCENT) ) { s = 2483; } else if ( (LA2_2028 == PLUS) ) { s = 2484; } else if ( (LA2_2028 == BQUOTE) ) { s = 1203; } else if ( (LA2_2028 == DASH || LA2_2028 == EMARK || LA2_2028 == LPAREN || LA2_2028 == RPAREN || ((LA2_2028 >= SQUOTE) && (LA2_2028 <= USCORE))) ) { s = 2485; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2028 == AND || LA2_2028 == COLON || LA2_2028 == DOLLARD || LA2_2028 == LSBRAQUET || LA2_2028 == RSBRAQUET || LA2_2028 == SLASH) ) { s = 405; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2028 == QMARK) ) { s = 1090; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2028 == SEMI) ) { s = 407; } SEEK(index2_2028); if ( s>=0 ) { return s; } } break; case 731: { ANTLR3_UINT32 LA2_3828; ANTLR3_MARKER index2_3828; LA2_3828 = LA(1); index2_3828 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3828 == QMARK) ) { s = 1751; } else if ( (LA2_3828 == SP) ) { s = 204; } else if ( (LA2_3828 == SLASH) ) { s = 3031; } else if ( (LA2_3828 == SEMI) ) { s = 3351; } else if ( (LA2_3828 == COMMON_CHAR || LA2_3828 == HEX_CHAR) ) { s = 3581; } else if ( (LA2_3828 == DIGIT) ) { s = 3582; } else if ( (LA2_3828 == DOT) ) { s = 3583; } else if ( (LA2_3828 == PERCENT) ) { s = 3584; } else if ( (LA2_3828 == COLON) ) { s = 3585; } else if ( (LA2_3828 == AT) ) { s = 3043; } else if ( (LA2_3828 == AND) ) { s = 3586; } else if ( (LA2_3828 == EQUAL) ) { s = 3745; } else if ( (LA2_3828 == PLUS) ) { s = 3587; } else if ( (LA2_3828 == DOLLARD) ) { s = 3588; } else if ( (LA2_3828 == COMMA) ) { s = 3048; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3828 == CRLF) ) { s = 205; } else if ( (LA2_3828 == DASH || LA2_3828 == EMARK || LA2_3828 == LPAREN || LA2_3828 == RPAREN || ((LA2_3828 >= SQUOTE) && (LA2_3828 <= USCORE))) ) { s = 3589; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3828 == LSBRAQUET || LA2_3828 == RSBRAQUET) ) { s = 405; } SEEK(index2_3828); if ( s>=0 ) { return s; } } break; case 732: { ANTLR3_UINT32 LA2_3525; ANTLR3_MARKER index2_3525; LA2_3525 = LA(1); index2_3525 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3525 == SEMI) ) { s = 3530; } else if ( (LA2_3525 == SLASH) ) { s = 2928; } else if ( (LA2_3525 == QMARK) ) { s = 854; } else if ( (LA2_3525 == SP) ) { s = 204; } else if ( (LA2_3525 == COMMON_CHAR || LA2_3525 == HEX_CHAR) ) { s = 3521; } else if ( (LA2_3525 == DIGIT) ) { s = 3522; } else if ( (LA2_3525 == DOT) ) { s = 3523; } else if ( (LA2_3525 == PERCENT) ) { s = 3524; } else if ( (LA2_3525 == COLON) ) { s = 3525; } else if ( (LA2_3525 == AT) ) { s = 2963; } else if ( (LA2_3525 == AND) ) { s = 3526; } else if ( (LA2_3525 == EQUAL) ) { s = 3527; } else if ( (LA2_3525 == PLUS) ) { s = 3528; } else if ( (LA2_3525 == DOLLARD) ) { s = 3529; } else if ( (LA2_3525 == COMMA) ) { s = 2968; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3525 == CRLF) ) { s = 205; } else if ( (LA2_3525 == DASH || LA2_3525 == EMARK || LA2_3525 == LPAREN || LA2_3525 == RPAREN || ((LA2_3525 >= SQUOTE) && (LA2_3525 <= USCORE))) ) { s = 3531; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3525 == LSBRAQUET || LA2_3525 == RSBRAQUET) ) { s = 405; } SEEK(index2_3525); if ( s>=0 ) { return s; } } break; case 733: { ANTLR3_UINT32 LA2_3526; ANTLR3_MARKER index2_3526; LA2_3526 = LA(1); index2_3526 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3526 == SEMI) ) { s = 3530; } else if ( (LA2_3526 == SLASH) ) { s = 2928; } else if ( (LA2_3526 == QMARK) ) { s = 854; } else if ( (LA2_3526 == SP) ) { s = 204; } else if ( (LA2_3526 == COMMON_CHAR || LA2_3526 == HEX_CHAR) ) { s = 3521; } else if ( (LA2_3526 == DIGIT) ) { s = 3522; } else if ( (LA2_3526 == DOT) ) { s = 3523; } else if ( (LA2_3526 == PERCENT) ) { s = 3524; } else if ( (LA2_3526 == COLON) ) { s = 3525; } else if ( (LA2_3526 == AT) ) { s = 2963; } else if ( (LA2_3526 == AND) ) { s = 3526; } else if ( (LA2_3526 == EQUAL) ) { s = 3527; } else if ( (LA2_3526 == PLUS) ) { s = 3528; } else if ( (LA2_3526 == DOLLARD) ) { s = 3529; } else if ( (LA2_3526 == COMMA) ) { s = 2968; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3526 == CRLF) ) { s = 205; } else if ( (LA2_3526 == DASH || LA2_3526 == EMARK || LA2_3526 == LPAREN || LA2_3526 == RPAREN || ((LA2_3526 >= SQUOTE) && (LA2_3526 <= USCORE))) ) { s = 3531; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3526 == LSBRAQUET || LA2_3526 == RSBRAQUET) ) { s = 405; } SEEK(index2_3526); if ( s>=0 ) { return s; } } break; case 734: { ANTLR3_UINT32 LA2_1988; ANTLR3_MARKER index2_1988; LA2_1988 = LA(1); index2_1988 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1988 == QMARK) ) { s = 2435; } else if ( (LA2_1988 == COMMON_CHAR || LA2_1988 == HEX_CHAR) ) { s = 2439; } else if ( (LA2_1988 == DIGIT) ) { s = 2440; } else if ( (LA2_1988 == DASH || LA2_1988 == DOT || LA2_1988 == EMARK || LA2_1988 == LPAREN || LA2_1988 == RPAREN || ((LA2_1988 >= SQUOTE) && (LA2_1988 <= USCORE))) ) { s = 2441; } else if ( (LA2_1988 == PERCENT) ) { s = 2442; } else if ( (LA2_1988 == SP) ) { s = 35; } else if ( (LA2_1988 == AND) ) { s = 1553; } else if ( (LA2_1988 == SEMI) ) { s = 105; } else if ( (LA2_1988 == COMMA) ) { s = 106; } else if ( (LA2_1988 == COLON || LA2_1988 == DOLLARD || LA2_1988 == PLUS || LA2_1988 == SLASH) ) { s = 2436; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1988 == LSBRAQUET || LA2_1988 == RSBRAQUET) ) { s = 2437; } else if ( (LA2_1988 == AT || LA2_1988 == EQUAL) ) { s = 108; } SEEK(index2_1988); if ( s>=0 ) { return s; } } break; case 735: { ANTLR3_UINT32 LA2_856; ANTLR3_MARKER index2_856; LA2_856 = LA(1); index2_856 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_856 == DOT) ) { s = 857; } else if ( (LA2_856 == COMMON_CHAR || LA2_856 == HEX_CHAR) ) { s = 516; } else if ( (LA2_856 == DIGIT) ) { s = 517; } else if ( (LA2_856 == DASH) ) { s = 518; } else if ( (LA2_856 == COLON) ) { s = 852; } else if ( (LA2_856 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_856 == CRLF) ) { s = 205; } else if ( (LA2_856 == SEMI) ) { s = 853; } else if ( (LA2_856 == QMARK) ) { s = 854; } else if ( (LA2_856 == SLASH) ) { s = 241; } else if ( (LA2_856 == EMARK || LA2_856 == LPAREN || LA2_856 == RPAREN || ((LA2_856 >= SQUOTE) && (LA2_856 <= USCORE))) ) { s = 246; } else if ( (LA2_856 == PERCENT) ) { s = 247; } else if ( (LA2_856 == AT) ) { s = 248; } else if ( (LA2_856 == AND) ) { s = 249; } else if ( (LA2_856 == EQUAL) ) { s = 250; } else if ( (LA2_856 == PLUS) ) { s = 251; } else if ( (LA2_856 == DOLLARD) ) { s = 252; } else if ( (LA2_856 == COMMA) ) { s = 253; } SEEK(index2_856); if ( s>=0 ) { return s; } } break; case 736: { ANTLR3_UINT32 LA2_1770; ANTLR3_MARKER index2_1770; LA2_1770 = LA(1); index2_1770 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1770 == DOT) ) { s = 1771; } else if ( (LA2_1770 == COLON) ) { s = 852; } else if ( (LA2_1770 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1770 == CRLF) ) { s = 205; } else if ( (LA2_1770 == SEMI) ) { s = 853; } else if ( (LA2_1770 == QMARK) ) { s = 854; } else if ( (LA2_1770 == DASH) ) { s = 518; } else if ( (LA2_1770 == COMMON_CHAR || LA2_1770 == HEX_CHAR) ) { s = 516; } else if ( (LA2_1770 == DIGIT) ) { s = 517; } else if ( (LA2_1770 == SLASH) ) { s = 241; } else if ( (LA2_1770 == EMARK || LA2_1770 == LPAREN || LA2_1770 == RPAREN || ((LA2_1770 >= SQUOTE) && (LA2_1770 <= USCORE))) ) { s = 246; } else if ( (LA2_1770 == PERCENT) ) { s = 247; } else if ( (LA2_1770 == AT) ) { s = 248; } else if ( (LA2_1770 == AND) ) { s = 249; } else if ( (LA2_1770 == EQUAL) ) { s = 250; } else if ( (LA2_1770 == PLUS) ) { s = 251; } else if ( (LA2_1770 == DOLLARD) ) { s = 252; } else if ( (LA2_1770 == COMMA) ) { s = 253; } SEEK(index2_1770); if ( s>=0 ) { return s; } } break; case 737: { ANTLR3_UINT32 LA2_2663; ANTLR3_MARKER index2_2663; LA2_2663 = LA(1); index2_2663 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2663 == SP) ) { s = 2090; } else if ( (LA2_2663 == CRLF) ) { s = 2091; } else if ( (LA2_2663 == COMMON_CHAR || LA2_2663 == HEX_CHAR) ) { s = 3015; } else if ( (LA2_2663 == DIGIT) ) { s = 3016; } else if ( (LA2_2663 == DOT) ) { s = 3017; } else if ( (LA2_2663 == PERCENT) ) { s = 3018; } else if ( (LA2_2663 == PLUS) ) { s = 3019; } else if ( (LA2_2663 == BQUOTE) ) { s = 2092; } else if ( (LA2_2663 == DQUOTE) ) { s = 2093; } else if ( (LA2_2663 == DASH || LA2_2663 == EMARK || LA2_2663 == LPAREN || LA2_2663 == RPAREN || ((LA2_2663 >= SQUOTE) && (LA2_2663 <= USCORE))) ) { s = 3020; } else if ( (LA2_2663 == AND || LA2_2663 == COLON || LA2_2663 == DOLLARD || LA2_2663 == SLASH) ) { s = 2717; } else if ( (LA2_2663 == SEMI) ) { s = 505; } else if ( (LA2_2663 == COMMA) ) { s = 506; } else if ( (LA2_2663 == QMARK) ) { s = 507; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2663 == LSBRAQUET || LA2_2663 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_2663 == AT || LA2_2663 == EQUAL) ) { s = 508; } SEEK(index2_2663); if ( s>=0 ) { return s; } } break; case 738: { ANTLR3_UINT32 LA2_3366; ANTLR3_MARKER index2_3366; LA2_3366 = LA(1); index2_3366 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3366 == COLON) ) { s = 852; } else if ( (LA2_3366 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3366 == CRLF) ) { s = 205; } else if ( (LA2_3366 == SEMI) ) { s = 853; } else if ( (LA2_3366 == QMARK) ) { s = 854; } else if ( (LA2_3366 == DOT) ) { s = 851; } else if ( (LA2_3366 == DASH) ) { s = 518; } else if ( (LA2_3366 == COMMON_CHAR || LA2_3366 == HEX_CHAR) ) { s = 516; } else if ( (LA2_3366 == DIGIT) ) { s = 517; } else if ( (LA2_3366 == SLASH) ) { s = 241; } else if ( (LA2_3366 == EMARK || LA2_3366 == LPAREN || LA2_3366 == RPAREN || ((LA2_3366 >= SQUOTE) && (LA2_3366 <= USCORE))) ) { s = 246; } else if ( (LA2_3366 == PERCENT) ) { s = 247; } else if ( (LA2_3366 == AT) ) { s = 248; } else if ( (LA2_3366 == AND) ) { s = 249; } else if ( (LA2_3366 == EQUAL) ) { s = 250; } else if ( (LA2_3366 == PLUS) ) { s = 251; } else if ( (LA2_3366 == DOLLARD) ) { s = 252; } else if ( (LA2_3366 == COMMA) ) { s = 253; } SEEK(index2_3366); if ( s>=0 ) { return s; } } break; case 739: { ANTLR3_UINT32 LA2_2704; ANTLR3_MARKER index2_2704; LA2_2704 = LA(1); index2_2704 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2704 == DOT) ) { s = 2705; } else if ( (LA2_2704 == COLON) ) { s = 852; } else if ( (LA2_2704 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2704 == CRLF) ) { s = 205; } else if ( (LA2_2704 == SEMI) ) { s = 853; } else if ( (LA2_2704 == QMARK) ) { s = 854; } else if ( (LA2_2704 == DASH) ) { s = 518; } else if ( (LA2_2704 == COMMON_CHAR || LA2_2704 == HEX_CHAR) ) { s = 516; } else if ( (LA2_2704 == DIGIT) ) { s = 517; } else if ( (LA2_2704 == SLASH) ) { s = 241; } else if ( (LA2_2704 == EMARK || LA2_2704 == LPAREN || LA2_2704 == RPAREN || ((LA2_2704 >= SQUOTE) && (LA2_2704 <= USCORE))) ) { s = 246; } else if ( (LA2_2704 == PERCENT) ) { s = 247; } else if ( (LA2_2704 == AT) ) { s = 248; } else if ( (LA2_2704 == AND) ) { s = 249; } else if ( (LA2_2704 == EQUAL) ) { s = 250; } else if ( (LA2_2704 == PLUS) ) { s = 251; } else if ( (LA2_2704 == DOLLARD) ) { s = 252; } else if ( (LA2_2704 == COMMA) ) { s = 253; } SEEK(index2_2704); if ( s>=0 ) { return s; } } break; case 740: { ANTLR3_UINT32 LA2_3528; ANTLR3_MARKER index2_3528; LA2_3528 = LA(1); index2_3528 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3528 == SEMI) ) { s = 3530; } else if ( (LA2_3528 == SLASH) ) { s = 2928; } else if ( (LA2_3528 == QMARK) ) { s = 854; } else if ( (LA2_3528 == SP) ) { s = 204; } else if ( (LA2_3528 == COMMON_CHAR || LA2_3528 == HEX_CHAR) ) { s = 3521; } else if ( (LA2_3528 == DIGIT) ) { s = 3522; } else if ( (LA2_3528 == DOT) ) { s = 3523; } else if ( (LA2_3528 == PERCENT) ) { s = 3524; } else if ( (LA2_3528 == COLON) ) { s = 3525; } else if ( (LA2_3528 == AT) ) { s = 2963; } else if ( (LA2_3528 == AND) ) { s = 3526; } else if ( (LA2_3528 == EQUAL) ) { s = 3527; } else if ( (LA2_3528 == PLUS) ) { s = 3528; } else if ( (LA2_3528 == DOLLARD) ) { s = 3529; } else if ( (LA2_3528 == COMMA) ) { s = 2968; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3528 == CRLF) ) { s = 205; } else if ( (LA2_3528 == DASH || LA2_3528 == EMARK || LA2_3528 == LPAREN || LA2_3528 == RPAREN || ((LA2_3528 >= SQUOTE) && (LA2_3528 <= USCORE))) ) { s = 3531; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3528 == LSBRAQUET || LA2_3528 == RSBRAQUET) ) { s = 405; } SEEK(index2_3528); if ( s>=0 ) { return s; } } break; case 741: { ANTLR3_UINT32 LA2_2918; ANTLR3_MARKER index2_2918; LA2_2918 = LA(1); index2_2918 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2918 == SEMI) ) { s = 2927; } else if ( (LA2_2918 == SLASH) ) { s = 2928; } else if ( (LA2_2918 == QMARK) ) { s = 854; } else if ( (LA2_2918 == SP) ) { s = 204; } else if ( (LA2_2918 == COMMON_CHAR || LA2_2918 == HEX_CHAR) ) { s = 2918; } else if ( (LA2_2918 == DIGIT) ) { s = 2919; } else if ( (LA2_2918 == DOT) ) { s = 2920; } else if ( (LA2_2918 == PERCENT) ) { s = 2921; } else if ( (LA2_2918 == COLON) ) { s = 2922; } else if ( (LA2_2918 == AT) ) { s = 1667; } else if ( (LA2_2918 == AND) ) { s = 2923; } else if ( (LA2_2918 == EQUAL) ) { s = 2924; } else if ( (LA2_2918 == PLUS) ) { s = 2925; } else if ( (LA2_2918 == DOLLARD) ) { s = 2926; } else if ( (LA2_2918 == COMMA) ) { s = 1672; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2918 == CRLF) ) { s = 205; } else if ( (LA2_2918 == DASH || LA2_2918 == EMARK || LA2_2918 == LPAREN || LA2_2918 == RPAREN || ((LA2_2918 >= SQUOTE) && (LA2_2918 <= USCORE))) ) { s = 2929; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2918 == LSBRAQUET || LA2_2918 == RSBRAQUET) ) { s = 405; } SEEK(index2_2918); if ( s>=0 ) { return s; } } break; case 742: { ANTLR3_UINT32 LA2_3517; ANTLR3_MARKER index2_3517; LA2_3517 = LA(1); index2_3517 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3517 == SLASH) ) { s = 3226; } else if ( (LA2_3517 == QMARK) ) { s = 854; } else if ( (LA2_3517 == SP) ) { s = 204; } else if ( (LA2_3517 == SEMI) ) { s = 2927; } else if ( (LA2_3517 == COMMON_CHAR || LA2_3517 == HEX_CHAR) ) { s = 3534; } else if ( (LA2_3517 == DIGIT) ) { s = 3535; } else if ( (LA2_3517 == DOT) ) { s = 3536; } else if ( (LA2_3517 == PERCENT) ) { s = 3537; } else if ( (LA2_3517 == COLON) ) { s = 3517; } else if ( (LA2_3517 == AT) ) { s = 2111; } else if ( (LA2_3517 == AND) ) { s = 3518; } else if ( (LA2_3517 == EQUAL) ) { s = 2113; } else if ( (LA2_3517 == PLUS) ) { s = 3538; } else if ( (LA2_3517 == DOLLARD) ) { s = 3519; } else if ( (LA2_3517 == COMMA) ) { s = 2116; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3517 == CRLF) ) { s = 205; } else if ( (LA2_3517 == DASH || LA2_3517 == EMARK || LA2_3517 == LPAREN || LA2_3517 == RPAREN || ((LA2_3517 >= SQUOTE) && (LA2_3517 <= USCORE))) ) { s = 3539; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3517 == LSBRAQUET || LA2_3517 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3517); if ( s>=0 ) { return s; } } break; case 743: { ANTLR3_UINT32 LA2_3529; ANTLR3_MARKER index2_3529; LA2_3529 = LA(1); index2_3529 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3529 == SEMI) ) { s = 3530; } else if ( (LA2_3529 == SLASH) ) { s = 2928; } else if ( (LA2_3529 == QMARK) ) { s = 854; } else if ( (LA2_3529 == SP) ) { s = 204; } else if ( (LA2_3529 == COMMON_CHAR || LA2_3529 == HEX_CHAR) ) { s = 3521; } else if ( (LA2_3529 == DIGIT) ) { s = 3522; } else if ( (LA2_3529 == DOT) ) { s = 3523; } else if ( (LA2_3529 == PERCENT) ) { s = 3524; } else if ( (LA2_3529 == COLON) ) { s = 3525; } else if ( (LA2_3529 == AT) ) { s = 2963; } else if ( (LA2_3529 == AND) ) { s = 3526; } else if ( (LA2_3529 == EQUAL) ) { s = 3527; } else if ( (LA2_3529 == PLUS) ) { s = 3528; } else if ( (LA2_3529 == DOLLARD) ) { s = 3529; } else if ( (LA2_3529 == COMMA) ) { s = 2968; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3529 == CRLF) ) { s = 205; } else if ( (LA2_3529 == DASH || LA2_3529 == EMARK || LA2_3529 == LPAREN || LA2_3529 == RPAREN || ((LA2_3529 >= SQUOTE) && (LA2_3529 <= USCORE))) ) { s = 3531; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3529 == LSBRAQUET || LA2_3529 == RSBRAQUET) ) { s = 405; } SEEK(index2_3529); if ( s>=0 ) { return s; } } break; case 744: { ANTLR3_UINT32 LA2_3550; ANTLR3_MARKER index2_3550; LA2_3550 = LA(1); index2_3550 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3550 == QMARK) ) { s = 242; } else if ( (LA2_3550 == SP) ) { s = 35; } else if ( (LA2_3550 == SLASH) ) { s = 3226; } else if ( (LA2_3550 == SEMI) ) { s = 2128; } else if ( (LA2_3550 == COMMON_CHAR || LA2_3550 == HEX_CHAR) ) { s = 3718; } else if ( (LA2_3550 == DIGIT) ) { s = 3719; } else if ( (LA2_3550 == DOT) ) { s = 3720; } else if ( (LA2_3550 == PERCENT) ) { s = 3721; } else if ( (LA2_3550 == COLON) ) { s = 3712; } else if ( (LA2_3550 == AT) ) { s = 2578; } else if ( (LA2_3550 == AND) ) { s = 3713; } else if ( (LA2_3550 == EQUAL) ) { s = 2580; } else if ( (LA2_3550 == PLUS) ) { s = 3722; } else if ( (LA2_3550 == DOLLARD) ) { s = 3714; } else if ( (LA2_3550 == COMMA) ) { s = 2583; } else if ( (LA2_3550 == DASH || LA2_3550 == EMARK || LA2_3550 == LPAREN || LA2_3550 == RPAREN || ((LA2_3550 >= SQUOTE) && (LA2_3550 <= USCORE))) ) { s = 3723; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3550 == LSBRAQUET || LA2_3550 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3550); if ( s>=0 ) { return s; } } break; case 745: { ANTLR3_UINT32 LA2_3518; ANTLR3_MARKER index2_3518; LA2_3518 = LA(1); index2_3518 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3518 == SLASH) ) { s = 3226; } else if ( (LA2_3518 == QMARK) ) { s = 854; } else if ( (LA2_3518 == SP) ) { s = 204; } else if ( (LA2_3518 == SEMI) ) { s = 2927; } else if ( (LA2_3518 == COMMON_CHAR || LA2_3518 == HEX_CHAR) ) { s = 3534; } else if ( (LA2_3518 == DIGIT) ) { s = 3535; } else if ( (LA2_3518 == DOT) ) { s = 3536; } else if ( (LA2_3518 == PERCENT) ) { s = 3537; } else if ( (LA2_3518 == COLON) ) { s = 3517; } else if ( (LA2_3518 == AT) ) { s = 2111; } else if ( (LA2_3518 == AND) ) { s = 3518; } else if ( (LA2_3518 == EQUAL) ) { s = 2113; } else if ( (LA2_3518 == PLUS) ) { s = 3538; } else if ( (LA2_3518 == DOLLARD) ) { s = 3519; } else if ( (LA2_3518 == COMMA) ) { s = 2116; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3518 == CRLF) ) { s = 205; } else if ( (LA2_3518 == DASH || LA2_3518 == EMARK || LA2_3518 == LPAREN || LA2_3518 == RPAREN || ((LA2_3518 >= SQUOTE) && (LA2_3518 <= USCORE))) ) { s = 3539; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3518 == LSBRAQUET || LA2_3518 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3518); if ( s>=0 ) { return s; } } break; case 746: { ANTLR3_UINT32 LA2_1530; ANTLR3_MARKER index2_1530; LA2_1530 = LA(1); index2_1530 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1530 == DIGIT) ) { s = 1531; } else if ( (LA2_1530 == COLON) ) { s = 692; } else if ( (LA2_1530 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1530 == CRLF) ) { s = 205; } else if ( (LA2_1530 == SEMI) ) { s = 693; } else if ( (LA2_1530 == QMARK) ) { s = 694; } else if ( (LA2_1530 == COMMON_CHAR || LA2_1530 == HEX_CHAR) ) { s = 198; } else if ( (LA2_1530 == COMMA) ) { s = 106; } else if ( (((LA2_1530 >= AND) && (LA2_1530 <= AT)) || LA2_1530 == DOLLARD || LA2_1530 == EQUAL || LA2_1530 == PLUS || LA2_1530 == SLASH) ) { s = 108; } else if ( (LA2_1530 == DASH || LA2_1530 == DOT || LA2_1530 == EMARK || LA2_1530 == LPAREN || LA2_1530 == RPAREN || ((LA2_1530 >= SQUOTE) && (LA2_1530 <= USCORE))) ) { s = 111; } else if ( (LA2_1530 == PERCENT) ) { s = 112; } SEEK(index2_1530); if ( s>=0 ) { return s; } } break; case 747: { ANTLR3_UINT32 LA2_3519; ANTLR3_MARKER index2_3519; LA2_3519 = LA(1); index2_3519 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3519 == SLASH) ) { s = 3226; } else if ( (LA2_3519 == QMARK) ) { s = 854; } else if ( (LA2_3519 == SP) ) { s = 204; } else if ( (LA2_3519 == SEMI) ) { s = 2927; } else if ( (LA2_3519 == COMMON_CHAR || LA2_3519 == HEX_CHAR) ) { s = 3534; } else if ( (LA2_3519 == DIGIT) ) { s = 3535; } else if ( (LA2_3519 == DOT) ) { s = 3536; } else if ( (LA2_3519 == PERCENT) ) { s = 3537; } else if ( (LA2_3519 == COLON) ) { s = 3517; } else if ( (LA2_3519 == AT) ) { s = 2111; } else if ( (LA2_3519 == AND) ) { s = 3518; } else if ( (LA2_3519 == EQUAL) ) { s = 2113; } else if ( (LA2_3519 == PLUS) ) { s = 3538; } else if ( (LA2_3519 == DOLLARD) ) { s = 3519; } else if ( (LA2_3519 == COMMA) ) { s = 2116; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3519 == CRLF) ) { s = 205; } else if ( (LA2_3519 == DASH || LA2_3519 == EMARK || LA2_3519 == LPAREN || LA2_3519 == RPAREN || ((LA2_3519 >= SQUOTE) && (LA2_3519 <= USCORE))) ) { s = 3539; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3519 == LSBRAQUET || LA2_3519 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3519); if ( s>=0 ) { return s; } } break; case 748: { ANTLR3_UINT32 LA2_2425; ANTLR3_MARKER index2_2425; LA2_2425 = LA(1); index2_2425 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2425 == DIGIT) ) { s = 2426; } else if ( (LA2_2425 == COLON) ) { s = 692; } else if ( (LA2_2425 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2425 == CRLF) ) { s = 205; } else if ( (LA2_2425 == SEMI) ) { s = 693; } else if ( (LA2_2425 == QMARK) ) { s = 694; } else if ( (LA2_2425 == COMMON_CHAR || LA2_2425 == HEX_CHAR) ) { s = 198; } else if ( (LA2_2425 == COMMA) ) { s = 106; } else if ( (((LA2_2425 >= AND) && (LA2_2425 <= AT)) || LA2_2425 == DOLLARD || LA2_2425 == EQUAL || LA2_2425 == PLUS || LA2_2425 == SLASH) ) { s = 108; } else if ( (LA2_2425 == DASH || LA2_2425 == DOT || LA2_2425 == EMARK || LA2_2425 == LPAREN || LA2_2425 == RPAREN || ((LA2_2425 >= SQUOTE) && (LA2_2425 <= USCORE))) ) { s = 111; } else if ( (LA2_2425 == PERCENT) ) { s = 112; } SEEK(index2_2425); if ( s>=0 ) { return s; } } break; case 749: { ANTLR3_UINT32 LA2_3538; ANTLR3_MARKER index2_3538; LA2_3538 = LA(1); index2_3538 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3538 == SLASH) ) { s = 3226; } else if ( (LA2_3538 == QMARK) ) { s = 854; } else if ( (LA2_3538 == SP) ) { s = 204; } else if ( (LA2_3538 == SEMI) ) { s = 2927; } else if ( (LA2_3538 == COMMON_CHAR || LA2_3538 == HEX_CHAR) ) { s = 3534; } else if ( (LA2_3538 == DIGIT) ) { s = 3535; } else if ( (LA2_3538 == DOT) ) { s = 3536; } else if ( (LA2_3538 == PERCENT) ) { s = 3537; } else if ( (LA2_3538 == COLON) ) { s = 3517; } else if ( (LA2_3538 == AT) ) { s = 2111; } else if ( (LA2_3538 == AND) ) { s = 3518; } else if ( (LA2_3538 == EQUAL) ) { s = 2113; } else if ( (LA2_3538 == PLUS) ) { s = 3538; } else if ( (LA2_3538 == DOLLARD) ) { s = 3519; } else if ( (LA2_3538 == COMMA) ) { s = 2116; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3538 == CRLF) ) { s = 205; } else if ( (LA2_3538 == DASH || LA2_3538 == EMARK || LA2_3538 == LPAREN || LA2_3538 == RPAREN || ((LA2_3538 >= SQUOTE) && (LA2_3538 <= USCORE))) ) { s = 3539; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3538 == LSBRAQUET || LA2_3538 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3538); if ( s>=0 ) { return s; } } break; case 750: { ANTLR3_UINT32 LA2_2246; ANTLR3_MARKER index2_2246; LA2_2246 = LA(1); index2_2246 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2246 == QMARK) ) { s = 854; } else if ( (LA2_2246 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2246 == CRLF) ) { s = 205; } else if ( (LA2_2246 == SEMI) ) { s = 853; } else if ( (LA2_2246 == DOT) ) { s = 2242; } else if ( (LA2_2246 == COMMON_CHAR || LA2_2246 == HEX_CHAR) ) { s = 2243; } else if ( (LA2_2246 == DIGIT) ) { s = 2244; } else if ( (LA2_2246 == SLASH) ) { s = 2245; } else if ( (LA2_2246 == DASH || LA2_2246 == EMARK || LA2_2246 == LPAREN || LA2_2246 == RPAREN || ((LA2_2246 >= SQUOTE) && (LA2_2246 <= USCORE))) ) { s = 2246; } else if ( (LA2_2246 == PERCENT) ) { s = 2247; } else if ( (LA2_2246 == COLON) ) { s = 2248; } else if ( (LA2_2246 == AND) ) { s = 2249; } else if ( (LA2_2246 == AT) ) { s = 497; } else if ( (LA2_2246 == PLUS) ) { s = 2250; } else if ( (LA2_2246 == EQUAL) ) { s = 499; } else if ( (LA2_2246 == DOLLARD) ) { s = 2251; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2246 == LSBRAQUET || LA2_2246 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_2246 == COMMA) ) { s = 502; } SEEK(index2_2246); if ( s>=0 ) { return s; } } break; case 751: { ANTLR3_UINT32 LA2_697; ANTLR3_MARKER index2_697; LA2_697 = LA(1); index2_697 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_697 == DIGIT) ) { s = 698; } else if ( (LA2_697 == COMMON_CHAR || LA2_697 == HEX_CHAR) ) { s = 198; } else if ( (LA2_697 == COLON) ) { s = 692; } else if ( (LA2_697 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_697 == CRLF) ) { s = 205; } else if ( (LA2_697 == SEMI) ) { s = 693; } else if ( (LA2_697 == QMARK) ) { s = 694; } else if ( (LA2_697 == COMMA) ) { s = 106; } else if ( (((LA2_697 >= AND) && (LA2_697 <= AT)) || LA2_697 == DOLLARD || LA2_697 == EQUAL || LA2_697 == PLUS || LA2_697 == SLASH) ) { s = 108; } else if ( (LA2_697 == DASH || LA2_697 == DOT || LA2_697 == EMARK || LA2_697 == LPAREN || LA2_697 == RPAREN || ((LA2_697 >= SQUOTE) && (LA2_697 <= USCORE))) ) { s = 111; } else if ( (LA2_697 == PERCENT) ) { s = 112; } SEEK(index2_697); if ( s>=0 ) { return s; } } break; case 752: { ANTLR3_UINT32 LA2_3534; ANTLR3_MARKER index2_3534; LA2_3534 = LA(1); index2_3534 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3534 == SLASH) ) { s = 3226; } else if ( (LA2_3534 == QMARK) ) { s = 854; } else if ( (LA2_3534 == SP) ) { s = 204; } else if ( (LA2_3534 == SEMI) ) { s = 2927; } else if ( (LA2_3534 == COMMON_CHAR || LA2_3534 == HEX_CHAR) ) { s = 3534; } else if ( (LA2_3534 == DIGIT) ) { s = 3535; } else if ( (LA2_3534 == DOT) ) { s = 3536; } else if ( (LA2_3534 == PERCENT) ) { s = 3537; } else if ( (LA2_3534 == COLON) ) { s = 3517; } else if ( (LA2_3534 == AT) ) { s = 2111; } else if ( (LA2_3534 == AND) ) { s = 3518; } else if ( (LA2_3534 == EQUAL) ) { s = 2113; } else if ( (LA2_3534 == PLUS) ) { s = 3538; } else if ( (LA2_3534 == DOLLARD) ) { s = 3519; } else if ( (LA2_3534 == COMMA) ) { s = 2116; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3534 == CRLF) ) { s = 205; } else if ( (LA2_3534 == DASH || LA2_3534 == EMARK || LA2_3534 == LPAREN || LA2_3534 == RPAREN || ((LA2_3534 >= SQUOTE) && (LA2_3534 <= USCORE))) ) { s = 3539; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3534 == LSBRAQUET || LA2_3534 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3534); if ( s>=0 ) { return s; } } break; case 753: { ANTLR3_UINT32 LA2_3883; ANTLR3_MARKER index2_3883; LA2_3883 = LA(1); index2_3883 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3883 == QMARK) ) { s = 1751; } else if ( (LA2_3883 == SP) ) { s = 204; } else if ( (LA2_3883 == SLASH) ) { s = 3323; } else if ( (LA2_3883 == SEMI) ) { s = 3351; } else if ( (LA2_3883 == COMMON_CHAR || LA2_3883 == HEX_CHAR) ) { s = 3819; } else if ( (LA2_3883 == DIGIT) ) { s = 3820; } else if ( (LA2_3883 == DOT) ) { s = 3821; } else if ( (LA2_3883 == PERCENT) ) { s = 3822; } else if ( (LA2_3883 == COLON) ) { s = 3823; } else if ( (LA2_3883 == AT) ) { s = 3043; } else if ( (LA2_3883 == AND) ) { s = 3824; } else if ( (LA2_3883 == EQUAL) ) { s = 3045; } else if ( (LA2_3883 == PLUS) ) { s = 3825; } else if ( (LA2_3883 == DOLLARD) ) { s = 3826; } else if ( (LA2_3883 == COMMA) ) { s = 3048; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3883 == CRLF) ) { s = 205; } else if ( (LA2_3883 == DASH || LA2_3883 == EMARK || LA2_3883 == LPAREN || LA2_3883 == RPAREN || ((LA2_3883 >= SQUOTE) && (LA2_3883 <= USCORE))) ) { s = 3827; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3883 == LSBRAQUET || LA2_3883 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3883); if ( s>=0 ) { return s; } } break; case 754: { ANTLR3_UINT32 LA2_411; ANTLR3_MARKER index2_411; LA2_411 = LA(1); index2_411 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_411 == COLON) ) { s = 408; } else if ( (LA2_411 == AT) ) { s = 89; } else if ( (LA2_411 == COMMON_CHAR || LA2_411 == HEX_CHAR) ) { s = 409; } else if ( (LA2_411 == DIGIT) ) { s = 410; } else if ( (LA2_411 == DASH || LA2_411 == DOT || LA2_411 == EMARK || LA2_411 == LPAREN || LA2_411 == RPAREN || ((LA2_411 >= SQUOTE) && (LA2_411 <= USCORE))) ) { s = 411; } else if ( (LA2_411 == PERCENT) ) { s = 412; } else if ( (LA2_411 == EQUAL) ) { s = 726; } else if ( (LA2_411 == QMARK) ) { s = 413; } else if ( (LA2_411 == SEMI) ) { s = 94; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_411 == LSBRAQUET || LA2_411 == RSBRAQUET) ) { s = 414; } else if ( (LA2_411 == SP) ) { s = 35; } else if ( (LA2_411 == COMMA) ) { s = 97; } else if ( (LA2_411 == AND) ) { s = 99; } else if ( (LA2_411 == DOLLARD || LA2_411 == PLUS || LA2_411 == SLASH) ) { s = 415; } SEEK(index2_411); if ( s>=0 ) { return s; } } break; case 755: { ANTLR3_UINT32 LA2_1562; ANTLR3_MARKER index2_1562; LA2_1562 = LA(1); index2_1562 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1562 == COLON) ) { s = 1559; } else if ( (LA2_1562 == AT) ) { s = 89; } else if ( (LA2_1562 == COMMON_CHAR || LA2_1562 == HEX_CHAR) ) { s = 1560; } else if ( (LA2_1562 == DIGIT) ) { s = 1561; } else if ( (LA2_1562 == DASH || LA2_1562 == DOT || LA2_1562 == EMARK || LA2_1562 == LPAREN || LA2_1562 == RPAREN || ((LA2_1562 >= SQUOTE) && (LA2_1562 <= USCORE))) ) { s = 1562; } else if ( (LA2_1562 == PERCENT) ) { s = 1563; } else if ( (LA2_1562 == EQUAL) ) { s = 1995; } else if ( (LA2_1562 == QMARK) ) { s = 1564; } else if ( (LA2_1562 == SEMI) ) { s = 94; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1562 == LSBRAQUET || LA2_1562 == RSBRAQUET) ) { s = 1552; } else if ( (LA2_1562 == SP) ) { s = 35; } else if ( (LA2_1562 == COMMA) ) { s = 97; } else if ( (LA2_1562 == AND) ) { s = 99; } else if ( (LA2_1562 == DOLLARD || LA2_1562 == PLUS || LA2_1562 == SLASH) ) { s = 1565; } SEEK(index2_1562); if ( s>=0 ) { return s; } } break; case 756: { ANTLR3_UINT32 LA2_401; ANTLR3_MARKER index2_401; LA2_401 = LA(1); index2_401 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_401 == COLON) ) { s = 396; } else if ( (LA2_401 == AT) ) { s = 89; } else if ( (LA2_401 == COMMON_CHAR || LA2_401 == HEX_CHAR) ) { s = 397; } else if ( (LA2_401 == DIGIT) ) { s = 398; } else if ( (LA2_401 == DOT) ) { s = 399; } else if ( (LA2_401 == PERCENT) ) { s = 400; } else if ( (LA2_401 == QMARK) ) { s = 206; } else if ( (LA2_401 == SEMI) ) { s = 202; } else if ( (LA2_401 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_401 == CRLF) ) { s = 205; } else if ( (LA2_401 == AND || LA2_401 == DOLLARD || LA2_401 == PLUS || LA2_401 == SLASH) ) { s = 401; } else if ( (LA2_401 == DASH || LA2_401 == EMARK || LA2_401 == LPAREN || LA2_401 == RPAREN || ((LA2_401 >= SQUOTE) && (LA2_401 <= USCORE))) ) { s = 404; } else if ( (LA2_401 == EQUAL) ) { s = 709; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_401 == LSBRAQUET || LA2_401 == RSBRAQUET) ) { s = 405; } else if ( (LA2_401 == COMMA) ) { s = 97; } SEEK(index2_401); if ( s>=0 ) { return s; } } break; case 757: { ANTLR3_UINT32 LA2_2650; ANTLR3_MARKER index2_2650; LA2_2650 = LA(1); index2_2650 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2650 == QMARK) ) { s = 854; } else if ( (LA2_2650 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2650 == CRLF) ) { s = 205; } else if ( (LA2_2650 == SEMI) ) { s = 1237; } else if ( (LA2_2650 == DOT) ) { s = 2648; } else if ( (LA2_2650 == COMMON_CHAR || LA2_2650 == HEX_CHAR) ) { s = 2649; } else if ( (LA2_2650 == DIGIT) ) { s = 2650; } else if ( (LA2_2650 == SLASH) ) { s = 2245; } else if ( (LA2_2650 == DASH || LA2_2650 == EMARK || LA2_2650 == LPAREN || LA2_2650 == RPAREN || ((LA2_2650 >= SQUOTE) && (LA2_2650 <= USCORE))) ) { s = 2651; } else if ( (LA2_2650 == PERCENT) ) { s = 2652; } else if ( (LA2_2650 == COLON) ) { s = 2653; } else if ( (LA2_2650 == AND) ) { s = 2654; } else if ( (LA2_2650 == AT) ) { s = 810; } else if ( (LA2_2650 == PLUS) ) { s = 2655; } else if ( (LA2_2650 == EQUAL) ) { s = 812; } else if ( (LA2_2650 == DOLLARD) ) { s = 2656; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2650 == LSBRAQUET || LA2_2650 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_2650 == COMMA) ) { s = 815; } SEEK(index2_2650); if ( s>=0 ) { return s; } } break; case 758: { ANTLR3_UINT32 LA2_3123; ANTLR3_MARKER index2_3123; LA2_3123 = LA(1); index2_3123 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3123 == COMMON_CHAR || LA2_3123 == HEX_CHAR) ) { s = 3406; } else if ( (LA2_3123 == DIGIT) ) { s = 3407; } else if ( (LA2_3123 == DOT) ) { s = 3408; } else if ( (LA2_3123 == PERCENT) ) { s = 3409; } else if ( (LA2_3123 == COLON) ) { s = 3410; } else if ( (LA2_3123 == AT) ) { s = 2504; } else if ( (LA2_3123 == AND) ) { s = 3411; } else if ( (LA2_3123 == EQUAL) ) { s = 2506; } else if ( (LA2_3123 == PLUS) ) { s = 3412; } else if ( (LA2_3123 == DOLLARD) ) { s = 3413; } else if ( (LA2_3123 == COMMA) ) { s = 2509; } else if ( (LA2_3123 == SEMI) ) { s = 3151; } else if ( (LA2_3123 == QMARK) ) { s = 854; } else if ( (LA2_3123 == SP) ) { s = 204; } else if ( (LA2_3123 == SLASH) ) { s = 3123; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3123 == CRLF) ) { s = 205; } else if ( (LA2_3123 == DASH || LA2_3123 == EMARK || LA2_3123 == LPAREN || LA2_3123 == RPAREN || ((LA2_3123 >= SQUOTE) && (LA2_3123 <= USCORE))) ) { s = 3414; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3123 == LSBRAQUET || LA2_3123 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3123); if ( s>=0 ) { return s; } } break; case 759: { ANTLR3_UINT32 LA2_1726; ANTLR3_MARKER index2_1726; LA2_1726 = LA(1); index2_1726 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1726 == QMARK) ) { s = 854; } else if ( (LA2_1726 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1726 == CRLF) ) { s = 205; } else if ( (LA2_1726 == SEMI) ) { s = 1237; } else if ( (LA2_1726 == DOT) ) { s = 1724; } else if ( (LA2_1726 == COMMON_CHAR || LA2_1726 == HEX_CHAR) ) { s = 1725; } else if ( (LA2_1726 == DIGIT) ) { s = 1726; } else if ( (LA2_1726 == SLASH) ) { s = 1271; } else if ( (LA2_1726 == DASH || LA2_1726 == EMARK || LA2_1726 == LPAREN || LA2_1726 == RPAREN || ((LA2_1726 >= SQUOTE) && (LA2_1726 <= USCORE))) ) { s = 1728; } else if ( (LA2_1726 == PERCENT) ) { s = 1729; } else if ( (LA2_1726 == EQUAL) ) { s = 2207; } else if ( (LA2_1726 == COLON) ) { s = 1727; } else if ( (LA2_1726 == AND) ) { s = 1730; } else if ( (LA2_1726 == AT) ) { s = 810; } else if ( (LA2_1726 == PLUS) ) { s = 1731; } else if ( (LA2_1726 == DOLLARD) ) { s = 1732; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1726 == LSBRAQUET || LA2_1726 == RSBRAQUET) ) { s = 405; } else if ( (LA2_1726 == COMMA) ) { s = 815; } SEEK(index2_1726); if ( s>=0 ) { return s; } } break; case 760: { ANTLR3_UINT32 LA2_1096; ANTLR3_MARKER index2_1096; LA2_1096 = LA(1); index2_1096 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1096 == AT) ) { s = 89; } else if ( (LA2_1096 == COMMON_CHAR || LA2_1096 == HEX_CHAR) ) { s = 1095; } else if ( (LA2_1096 == DIGIT) ) { s = 1096; } else if ( (LA2_1096 == DASH || LA2_1096 == DOT || LA2_1096 == EMARK || LA2_1096 == LPAREN || LA2_1096 == RPAREN || ((LA2_1096 >= SQUOTE) && (LA2_1096 <= USCORE))) ) { s = 1097; } else if ( (LA2_1096 == PERCENT) ) { s = 1098; } else if ( (LA2_1096 == AND) ) { s = 1099; } else if ( (LA2_1096 == EQUAL) ) { s = 194; } else if ( (LA2_1096 == PLUS) ) { s = 1100; } else if ( (LA2_1096 == DOLLARD) ) { s = 1101; } else if ( (LA2_1096 == COMMA) ) { s = 197; } else if ( (LA2_1096 == SP) ) { s = 35; } else if ( (LA2_1096 == QMARK) ) { s = 1102; } else if ( (LA2_1096 == SEMI) ) { s = 105; } else if ( (LA2_1096 == COLON || LA2_1096 == SLASH) ) { s = 1103; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1096 == LSBRAQUET || LA2_1096 == RSBRAQUET) ) { s = 1104; } SEEK(index2_1096); if ( s>=0 ) { return s; } } break; case 761: { ANTLR3_UINT32 LA2_691; ANTLR3_MARKER index2_691; LA2_691 = LA(1); index2_691 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_691 == COMMON_CHAR || LA2_691 == HEX_CHAR) ) { s = 198; } else if ( (LA2_691 == DIGIT) ) { s = 690; } else if ( (LA2_691 == COLON) ) { s = 692; } else if ( (LA2_691 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_691 == CRLF) ) { s = 205; } else if ( (LA2_691 == SEMI) ) { s = 693; } else if ( (LA2_691 == QMARK) ) { s = 694; } else if ( (LA2_691 == COMMA) ) { s = 106; } else if ( (((LA2_691 >= AND) && (LA2_691 <= AT)) || LA2_691 == DOLLARD || LA2_691 == EQUAL || LA2_691 == PLUS || LA2_691 == SLASH) ) { s = 108; } else if ( (LA2_691 == DASH || LA2_691 == DOT || LA2_691 == EMARK || LA2_691 == LPAREN || LA2_691 == RPAREN || ((LA2_691 >= SQUOTE) && (LA2_691 <= USCORE))) ) { s = 111; } else if ( (LA2_691 == PERCENT) ) { s = 112; } SEEK(index2_691); if ( s>=0 ) { return s; } } break; case 762: { ANTLR3_UINT32 LA2_3469; ANTLR3_MARKER index2_3469; LA2_3469 = LA(1); index2_3469 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3469 == DOT) ) { s = 3657; } else if ( (LA2_3469 == SEMI) ) { s = 3170; } else if ( (LA2_3469 == SLASH) ) { s = 3171; } else if ( (LA2_3469 == QMARK) ) { s = 854; } else if ( (LA2_3469 == SP) ) { s = 204; } else if ( (LA2_3469 == COMMON_CHAR || LA2_3469 == HEX_CHAR) ) { s = 3162; } else if ( (LA2_3469 == DIGIT) ) { s = 3179; } else if ( (LA2_3469 == DASH || LA2_3469 == EMARK || LA2_3469 == LPAREN || LA2_3469 == RPAREN || ((LA2_3469 >= SQUOTE) && (LA2_3469 <= USCORE))) ) { s = 3172; } else if ( (LA2_3469 == PERCENT) ) { s = 3164; } else if ( (LA2_3469 == COLON) ) { s = 3165; } else if ( (LA2_3469 == AT) ) { s = 1710; } else if ( (LA2_3469 == AND) ) { s = 3166; } else if ( (LA2_3469 == EQUAL) ) { s = 3167; } else if ( (LA2_3469 == PLUS) ) { s = 3168; } else if ( (LA2_3469 == DOLLARD) ) { s = 3169; } else if ( (LA2_3469 == COMMA) ) { s = 1715; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3469 == CRLF) ) { s = 205; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3469 == LSBRAQUET || LA2_3469 == RSBRAQUET) ) { s = 405; } SEEK(index2_3469); if ( s>=0 ) { return s; } } break; case 763: { ANTLR3_UINT32 LA2_820; ANTLR3_MARKER index2_820; LA2_820 = LA(1); index2_820 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_820 == DIGIT) ) { s = 1239; } else if ( (LA2_820 == DOT) ) { s = 1240; } else if ( (LA2_820 == COMMON_CHAR || LA2_820 == HEX_CHAR) ) { s = 817; } else if ( (LA2_820 == DASH) ) { s = 819; } else if ( (LA2_820 == COLON) ) { s = 1236; } else if ( (LA2_820 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_820 == CRLF) ) { s = 205; } else if ( (LA2_820 == SEMI) ) { s = 1237; } else if ( (LA2_820 == QMARK) ) { s = 854; } else if ( (LA2_820 == SLASH) ) { s = 241; } else if ( (LA2_820 == EMARK || LA2_820 == LPAREN || LA2_820 == RPAREN || ((LA2_820 >= SQUOTE) && (LA2_820 <= USCORE))) ) { s = 462; } else if ( (LA2_820 == PERCENT) ) { s = 463; } else if ( (LA2_820 == AT) ) { s = 464; } else if ( (LA2_820 == AND) ) { s = 465; } else if ( (LA2_820 == EQUAL) ) { s = 466; } else if ( (LA2_820 == PLUS) ) { s = 467; } else if ( (LA2_820 == DOLLARD) ) { s = 468; } else if ( (LA2_820 == COMMA) ) { s = 469; } SEEK(index2_820); if ( s>=0 ) { return s; } } break; case 764: { ANTLR3_UINT32 LA2_1735; ANTLR3_MARKER index2_1735; LA2_1735 = LA(1); index2_1735 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1735 == DIGIT) ) { s = 2209; } else if ( (LA2_1735 == DOT) ) { s = 2210; } else if ( (LA2_1735 == COLON) ) { s = 1236; } else if ( (LA2_1735 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1735 == CRLF) ) { s = 205; } else if ( (LA2_1735 == SEMI) ) { s = 1237; } else if ( (LA2_1735 == QMARK) ) { s = 854; } else if ( (LA2_1735 == DASH) ) { s = 819; } else if ( (LA2_1735 == COMMON_CHAR || LA2_1735 == HEX_CHAR) ) { s = 817; } else if ( (LA2_1735 == SLASH) ) { s = 241; } else if ( (LA2_1735 == EMARK || LA2_1735 == LPAREN || LA2_1735 == RPAREN || ((LA2_1735 >= SQUOTE) && (LA2_1735 <= USCORE))) ) { s = 462; } else if ( (LA2_1735 == PERCENT) ) { s = 463; } else if ( (LA2_1735 == AT) ) { s = 464; } else if ( (LA2_1735 == AND) ) { s = 465; } else if ( (LA2_1735 == EQUAL) ) { s = 466; } else if ( (LA2_1735 == PLUS) ) { s = 467; } else if ( (LA2_1735 == DOLLARD) ) { s = 468; } else if ( (LA2_1735 == COMMA) ) { s = 469; } SEEK(index2_1735); if ( s>=0 ) { return s; } } break; case 765: { ANTLR3_UINT32 LA2_3337; ANTLR3_MARKER index2_3337; LA2_3337 = LA(1); index2_3337 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3337 == SLASH) ) { s = 3031; } else if ( (LA2_3337 == QMARK) ) { s = 1751; } else if ( (LA2_3337 == SP) ) { s = 204; } else if ( (LA2_3337 == SEMI) ) { s = 3030; } else if ( (LA2_3337 == COMMON_CHAR || LA2_3337 == HEX_CHAR) ) { s = 3333; } else if ( (LA2_3337 == DIGIT) ) { s = 3334; } else if ( (LA2_3337 == DOT) ) { s = 3335; } else if ( (LA2_3337 == PERCENT) ) { s = 3336; } else if ( (LA2_3337 == COLON) ) { s = 3337; } else if ( (LA2_3337 == AT) ) { s = 2673; } else if ( (LA2_3337 == AND) ) { s = 3338; } else if ( (LA2_3337 == EQUAL) ) { s = 3578; } else if ( (LA2_3337 == PLUS) ) { s = 3339; } else if ( (LA2_3337 == DOLLARD) ) { s = 3340; } else if ( (LA2_3337 == COMMA) ) { s = 2678; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3337 == CRLF) ) { s = 205; } else if ( (LA2_3337 == DASH || LA2_3337 == EMARK || LA2_3337 == LPAREN || LA2_3337 == RPAREN || ((LA2_3337 >= SQUOTE) && (LA2_3337 <= USCORE))) ) { s = 3341; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3337 == LSBRAQUET || LA2_3337 == RSBRAQUET) ) { s = 405; } SEEK(index2_3337); if ( s>=0 ) { return s; } } break; case 766: { ANTLR3_UINT32 LA2_3315; ANTLR3_MARKER index2_3315; LA2_3315 = LA(1); index2_3315 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3315 == DIGIT) ) { s = 3563; } else if ( (LA2_3315 == COLON) ) { s = 1236; } else if ( (LA2_3315 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3315 == CRLF) ) { s = 205; } else if ( (LA2_3315 == SEMI) ) { s = 1237; } else if ( (LA2_3315 == QMARK) ) { s = 854; } else if ( (LA2_3315 == DOT) ) { s = 1235; } else if ( (LA2_3315 == DASH) ) { s = 819; } else if ( (LA2_3315 == COMMON_CHAR || LA2_3315 == HEX_CHAR) ) { s = 817; } else if ( (LA2_3315 == SLASH) ) { s = 241; } else if ( (LA2_3315 == EMARK || LA2_3315 == LPAREN || LA2_3315 == RPAREN || ((LA2_3315 >= SQUOTE) && (LA2_3315 <= USCORE))) ) { s = 462; } else if ( (LA2_3315 == PERCENT) ) { s = 463; } else if ( (LA2_3315 == AT) ) { s = 464; } else if ( (LA2_3315 == AND) ) { s = 465; } else if ( (LA2_3315 == EQUAL) ) { s = 466; } else if ( (LA2_3315 == PLUS) ) { s = 467; } else if ( (LA2_3315 == DOLLARD) ) { s = 468; } else if ( (LA2_3315 == COMMA) ) { s = 469; } SEEK(index2_3315); if ( s>=0 ) { return s; } } break; case 767: { ANTLR3_UINT32 LA2_2658; ANTLR3_MARKER index2_2658; LA2_2658 = LA(1); index2_2658 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2658 == DIGIT) ) { s = 3010; } else if ( (LA2_2658 == DOT) ) { s = 3011; } else if ( (LA2_2658 == COLON) ) { s = 1236; } else if ( (LA2_2658 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2658 == CRLF) ) { s = 205; } else if ( (LA2_2658 == SEMI) ) { s = 1237; } else if ( (LA2_2658 == QMARK) ) { s = 854; } else if ( (LA2_2658 == DASH) ) { s = 819; } else if ( (LA2_2658 == COMMON_CHAR || LA2_2658 == HEX_CHAR) ) { s = 817; } else if ( (LA2_2658 == SLASH) ) { s = 241; } else if ( (LA2_2658 == EMARK || LA2_2658 == LPAREN || LA2_2658 == RPAREN || ((LA2_2658 >= SQUOTE) && (LA2_2658 <= USCORE))) ) { s = 462; } else if ( (LA2_2658 == PERCENT) ) { s = 463; } else if ( (LA2_2658 == AT) ) { s = 464; } else if ( (LA2_2658 == AND) ) { s = 465; } else if ( (LA2_2658 == EQUAL) ) { s = 466; } else if ( (LA2_2658 == PLUS) ) { s = 467; } else if ( (LA2_2658 == DOLLARD) ) { s = 468; } else if ( (LA2_2658 == COMMA) ) { s = 469; } SEEK(index2_2658); if ( s>=0 ) { return s; } } break; case 768: { ANTLR3_UINT32 LA2_3339; ANTLR3_MARKER index2_3339; LA2_3339 = LA(1); index2_3339 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3339 == SLASH) ) { s = 3031; } else if ( (LA2_3339 == QMARK) ) { s = 1751; } else if ( (LA2_3339 == SP) ) { s = 204; } else if ( (LA2_3339 == SEMI) ) { s = 3030; } else if ( (LA2_3339 == COMMON_CHAR || LA2_3339 == HEX_CHAR) ) { s = 3333; } else if ( (LA2_3339 == DIGIT) ) { s = 3334; } else if ( (LA2_3339 == DOT) ) { s = 3335; } else if ( (LA2_3339 == PERCENT) ) { s = 3336; } else if ( (LA2_3339 == COLON) ) { s = 3337; } else if ( (LA2_3339 == AT) ) { s = 2673; } else if ( (LA2_3339 == AND) ) { s = 3338; } else if ( (LA2_3339 == EQUAL) ) { s = 3578; } else if ( (LA2_3339 == PLUS) ) { s = 3339; } else if ( (LA2_3339 == DOLLARD) ) { s = 3340; } else if ( (LA2_3339 == COMMA) ) { s = 2678; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3339 == CRLF) ) { s = 205; } else if ( (LA2_3339 == DASH || LA2_3339 == EMARK || LA2_3339 == LPAREN || LA2_3339 == RPAREN || ((LA2_3339 >= SQUOTE) && (LA2_3339 <= USCORE))) ) { s = 3341; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3339 == LSBRAQUET || LA2_3339 == RSBRAQUET) ) { s = 405; } SEEK(index2_3339); if ( s>=0 ) { return s; } } break; case 769: { ANTLR3_UINT32 LA2_1107; ANTLR3_MARKER index2_1107; LA2_1107 = LA(1); index2_1107 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1107 == COLON) ) { s = 1106; } else if ( (LA2_1107 == AT) ) { s = 89; } else if ( (LA2_1107 == COMMON_CHAR || LA2_1107 == HEX_CHAR) ) { s = 1107; } else if ( (LA2_1107 == DIGIT) ) { s = 1108; } else if ( (LA2_1107 == DASH || LA2_1107 == DOT || LA2_1107 == EMARK || LA2_1107 == LPAREN || LA2_1107 == RPAREN || ((LA2_1107 >= SQUOTE) && (LA2_1107 <= USCORE))) ) { s = 1109; } else if ( (LA2_1107 == PERCENT) ) { s = 1110; } else if ( (LA2_1107 == AND) ) { s = 1112; } else if ( (LA2_1107 == QMARK) ) { s = 1111; } else if ( (LA2_1107 == SP) ) { s = 35; } else if ( (LA2_1107 == SEMI) ) { s = 94; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1107 == LSBRAQUET || LA2_1107 == RSBRAQUET) ) { s = 1104; } else if ( (LA2_1107 == COMMA) ) { s = 97; } else if ( (LA2_1107 == EQUAL) ) { s = 99; } else if ( (LA2_1107 == DOLLARD || LA2_1107 == PLUS || LA2_1107 == SLASH) ) { s = 1113; } SEEK(index2_1107); if ( s>=0 ) { return s; } } break; case 770: { ANTLR3_UINT32 LA2_1058; ANTLR3_MARKER index2_1058; LA2_1058 = LA(1); index2_1058 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1058 == QMARK) ) { s = 694; } else if ( (LA2_1058 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1058 == CRLF) ) { s = 205; } else if ( (LA2_1058 == SEMI) ) { s = 693; } else if ( (LA2_1058 == DOT) ) { s = 1057; } else if ( (LA2_1058 == COMMON_CHAR || LA2_1058 == HEX_CHAR) ) { s = 1058; } else if ( (LA2_1058 == DIGIT) ) { s = 1059; } else if ( (LA2_1058 == AND || LA2_1058 == COLON || LA2_1058 == DOLLARD || LA2_1058 == PLUS || LA2_1058 == SLASH) ) { s = 708; } else if ( (LA2_1058 == DASH || LA2_1058 == EMARK || LA2_1058 == LPAREN || LA2_1058 == RPAREN || ((LA2_1058 >= SQUOTE) && (LA2_1058 <= USCORE))) ) { s = 1060; } else if ( (LA2_1058 == PERCENT) ) { s = 1061; } else if ( (LA2_1058 == EQUAL) ) { s = 1081; } else if ( (LA2_1058 == COMMA) ) { s = 106; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1058 == LSBRAQUET || LA2_1058 == RSBRAQUET) ) { s = 405; } else if ( (LA2_1058 == AT) ) { s = 108; } SEEK(index2_1058); if ( s>=0 ) { return s; } } break; case 771: { ANTLR3_UINT32 LA2_3338; ANTLR3_MARKER index2_3338; LA2_3338 = LA(1); index2_3338 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3338 == SLASH) ) { s = 3031; } else if ( (LA2_3338 == QMARK) ) { s = 1751; } else if ( (LA2_3338 == SP) ) { s = 204; } else if ( (LA2_3338 == SEMI) ) { s = 3030; } else if ( (LA2_3338 == COMMON_CHAR || LA2_3338 == HEX_CHAR) ) { s = 3333; } else if ( (LA2_3338 == DIGIT) ) { s = 3334; } else if ( (LA2_3338 == DOT) ) { s = 3335; } else if ( (LA2_3338 == PERCENT) ) { s = 3336; } else if ( (LA2_3338 == COLON) ) { s = 3337; } else if ( (LA2_3338 == AT) ) { s = 2673; } else if ( (LA2_3338 == AND) ) { s = 3338; } else if ( (LA2_3338 == EQUAL) ) { s = 3578; } else if ( (LA2_3338 == PLUS) ) { s = 3339; } else if ( (LA2_3338 == DOLLARD) ) { s = 3340; } else if ( (LA2_3338 == COMMA) ) { s = 2678; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3338 == CRLF) ) { s = 205; } else if ( (LA2_3338 == DASH || LA2_3338 == EMARK || LA2_3338 == LPAREN || LA2_3338 == RPAREN || ((LA2_3338 >= SQUOTE) && (LA2_3338 <= USCORE))) ) { s = 3341; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3338 == LSBRAQUET || LA2_3338 == RSBRAQUET) ) { s = 405; } SEEK(index2_3338); if ( s>=0 ) { return s; } } break; case 772: { ANTLR3_UINT32 LA2_3340; ANTLR3_MARKER index2_3340; LA2_3340 = LA(1); index2_3340 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3340 == SLASH) ) { s = 3031; } else if ( (LA2_3340 == QMARK) ) { s = 1751; } else if ( (LA2_3340 == SP) ) { s = 204; } else if ( (LA2_3340 == SEMI) ) { s = 3030; } else if ( (LA2_3340 == COMMON_CHAR || LA2_3340 == HEX_CHAR) ) { s = 3333; } else if ( (LA2_3340 == DIGIT) ) { s = 3334; } else if ( (LA2_3340 == DOT) ) { s = 3335; } else if ( (LA2_3340 == PERCENT) ) { s = 3336; } else if ( (LA2_3340 == COLON) ) { s = 3337; } else if ( (LA2_3340 == AT) ) { s = 2673; } else if ( (LA2_3340 == AND) ) { s = 3338; } else if ( (LA2_3340 == EQUAL) ) { s = 3578; } else if ( (LA2_3340 == PLUS) ) { s = 3339; } else if ( (LA2_3340 == DOLLARD) ) { s = 3340; } else if ( (LA2_3340 == COMMA) ) { s = 2678; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3340 == CRLF) ) { s = 205; } else if ( (LA2_3340 == DASH || LA2_3340 == EMARK || LA2_3340 == LPAREN || LA2_3340 == RPAREN || ((LA2_3340 >= SQUOTE) && (LA2_3340 <= USCORE))) ) { s = 3341; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3340 == LSBRAQUET || LA2_3340 == RSBRAQUET) ) { s = 405; } SEEK(index2_3340); if ( s>=0 ) { return s; } } break; case 773: { ANTLR3_UINT32 LA2_3770; ANTLR3_MARKER index2_3770; LA2_3770 = LA(1); index2_3770 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3770 == QMARK) ) { s = 854; } else if ( (LA2_3770 == SP) ) { s = 204; } else if ( (LA2_3770 == SLASH) ) { s = 2827; } else if ( (LA2_3770 == SEMI) ) { s = 3151; } else if ( (LA2_3770 == COMMON_CHAR || LA2_3770 == HEX_CHAR) ) { s = 3419; } else if ( (LA2_3770 == DIGIT) ) { s = 3420; } else if ( (LA2_3770 == DOT) ) { s = 3421; } else if ( (LA2_3770 == PERCENT) ) { s = 3422; } else if ( (LA2_3770 == COLON) ) { s = 3423; } else if ( (LA2_3770 == AT) ) { s = 2879; } else if ( (LA2_3770 == AND) ) { s = 3424; } else if ( (LA2_3770 == EQUAL) ) { s = 3629; } else if ( (LA2_3770 == PLUS) ) { s = 3425; } else if ( (LA2_3770 == DOLLARD) ) { s = 3426; } else if ( (LA2_3770 == COMMA) ) { s = 2884; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3770 == CRLF) ) { s = 205; } else if ( (LA2_3770 == DASH || LA2_3770 == EMARK || LA2_3770 == LPAREN || LA2_3770 == RPAREN || ((LA2_3770 >= SQUOTE) && (LA2_3770 <= USCORE))) ) { s = 3427; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3770 == LSBRAQUET || LA2_3770 == RSBRAQUET) ) { s = 405; } SEEK(index2_3770); if ( s>=0 ) { return s; } } break; case 774: { ANTLR3_UINT32 LA2_2264; ANTLR3_MARKER index2_2264; LA2_2264 = LA(1); index2_2264 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2264 == AND) ) { s = 2268; } else if ( (LA2_2264 == SP) ) { s = 35; } else if ( (LA2_2264 == QMARK) ) { s = 2263; } else if ( (LA2_2264 == COMMON_CHAR || LA2_2264 == HEX_CHAR) ) { s = 2264; } else if ( (LA2_2264 == DIGIT) ) { s = 2265; } else if ( (LA2_2264 == DASH || LA2_2264 == DOT || LA2_2264 == EMARK || LA2_2264 == LPAREN || LA2_2264 == RPAREN || ((LA2_2264 >= SQUOTE) && (LA2_2264 <= USCORE))) ) { s = 2266; } else if ( (LA2_2264 == PERCENT) ) { s = 2267; } else if ( (LA2_2264 == SEMI) ) { s = 505; } else if ( (LA2_2264 == COMMA) ) { s = 506; } else if ( (LA2_2264 == COLON || LA2_2264 == DOLLARD || LA2_2264 == PLUS || LA2_2264 == SLASH) ) { s = 2269; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2264 == LSBRAQUET || LA2_2264 == RSBRAQUET) ) { s = 1104; } else if ( (LA2_2264 == AT || LA2_2264 == EQUAL) ) { s = 508; } SEEK(index2_2264); if ( s>=0 ) { return s; } } break; case 775: { ANTLR3_UINT32 LA2_3682; ANTLR3_MARKER index2_3682; LA2_3682 = LA(1); index2_3682 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3682 == SEMI) ) { s = 3530; } else if ( (LA2_3682 == SLASH) ) { s = 3226; } else if ( (LA2_3682 == QMARK) ) { s = 854; } else if ( (LA2_3682 == SP) ) { s = 204; } else if ( (LA2_3682 == COMMON_CHAR || LA2_3682 == HEX_CHAR) ) { s = 3682; } else if ( (LA2_3682 == DIGIT) ) { s = 3683; } else if ( (LA2_3682 == DOT) ) { s = 3684; } else if ( (LA2_3682 == PERCENT) ) { s = 3685; } else if ( (LA2_3682 == COLON) ) { s = 3686; } else if ( (LA2_3682 == AT) ) { s = 2963; } else if ( (LA2_3682 == AND) ) { s = 3687; } else if ( (LA2_3682 == EQUAL) ) { s = 2965; } else if ( (LA2_3682 == PLUS) ) { s = 3688; } else if ( (LA2_3682 == DOLLARD) ) { s = 3689; } else if ( (LA2_3682 == COMMA) ) { s = 2968; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3682 == CRLF) ) { s = 205; } else if ( (LA2_3682 == DASH || LA2_3682 == EMARK || LA2_3682 == LPAREN || LA2_3682 == RPAREN || ((LA2_3682 >= SQUOTE) && (LA2_3682 <= USCORE))) ) { s = 3690; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3682 == LSBRAQUET || LA2_3682 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3682); if ( s>=0 ) { return s; } } break; case 776: { ANTLR3_UINT32 LA2_3675; ANTLR3_MARKER index2_3675; LA2_3675 = LA(1); index2_3675 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3675 == SEMI) ) { s = 3251; } else if ( (LA2_3675 == QMARK) ) { s = 854; } else if ( (LA2_3675 == SP) ) { s = 204; } else if ( (LA2_3675 == SLASH) ) { s = 2928; } else if ( (LA2_3675 == COMMON_CHAR || LA2_3675 == HEX_CHAR) ) { s = 3242; } else if ( (LA2_3675 == DIGIT) ) { s = 3243; } else if ( (LA2_3675 == DOT) ) { s = 3244; } else if ( (LA2_3675 == PERCENT) ) { s = 3245; } else if ( (LA2_3675 == COLON) ) { s = 3246; } else if ( (LA2_3675 == AT) ) { s = 2122; } else if ( (LA2_3675 == AND) ) { s = 3247; } else if ( (LA2_3675 == EQUAL) ) { s = 3248; } else if ( (LA2_3675 == PLUS) ) { s = 3249; } else if ( (LA2_3675 == DOLLARD) ) { s = 3250; } else if ( (LA2_3675 == COMMA) ) { s = 2127; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3675 == CRLF) ) { s = 205; } else if ( (LA2_3675 == DASH || LA2_3675 == EMARK || LA2_3675 == LPAREN || LA2_3675 == RPAREN || ((LA2_3675 >= SQUOTE) && (LA2_3675 <= USCORE))) ) { s = 3252; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3675 == LSBRAQUET || LA2_3675 == RSBRAQUET) ) { s = 405; } SEEK(index2_3675); if ( s>=0 ) { return s; } } break; case 777: { ANTLR3_UINT32 LA2_2866; ANTLR3_MARKER index2_2866; LA2_2866 = LA(1); index2_2866 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2866 == DIGIT) ) { s = 3161; } else if ( (LA2_2866 == COMMON_CHAR || LA2_2866 == HEX_CHAR) ) { s = 3162; } else if ( (LA2_2866 == DOT) ) { s = 3163; } else if ( (LA2_2866 == PERCENT) ) { s = 3164; } else if ( (LA2_2866 == COLON) ) { s = 3165; } else if ( (LA2_2866 == AT) ) { s = 1710; } else if ( (LA2_2866 == AND) ) { s = 3166; } else if ( (LA2_2866 == EQUAL) ) { s = 3167; } else if ( (LA2_2866 == PLUS) ) { s = 3168; } else if ( (LA2_2866 == DOLLARD) ) { s = 3169; } else if ( (LA2_2866 == COMMA) ) { s = 1715; } else if ( (LA2_2866 == SEMI) ) { s = 3170; } else if ( (LA2_2866 == SLASH) ) { s = 3171; } else if ( (LA2_2866 == QMARK) ) { s = 854; } else if ( (LA2_2866 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2866 == CRLF) ) { s = 205; } else if ( (LA2_2866 == DASH || LA2_2866 == EMARK || LA2_2866 == LPAREN || LA2_2866 == RPAREN || ((LA2_2866 >= SQUOTE) && (LA2_2866 <= USCORE))) ) { s = 3172; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2866 == LSBRAQUET || LA2_2866 == RSBRAQUET) ) { s = 405; } SEEK(index2_2866); if ( s>=0 ) { return s; } } break; case 778: { ANTLR3_UINT32 LA2_3440; ANTLR3_MARKER index2_3440; LA2_3440 = LA(1); index2_3440 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3440 == SEMI) ) { s = 3170; } else if ( (LA2_3440 == SLASH) ) { s = 3435; } else if ( (LA2_3440 == QMARK) ) { s = 854; } else if ( (LA2_3440 == SP) ) { s = 204; } else if ( (LA2_3440 == COMMON_CHAR || LA2_3440 == HEX_CHAR) ) { s = 3436; } else if ( (LA2_3440 == DIGIT) ) { s = 3437; } else if ( (LA2_3440 == DOT) ) { s = 3438; } else if ( (LA2_3440 == PERCENT) ) { s = 3439; } else if ( (LA2_3440 == COLON) ) { s = 3440; } else if ( (LA2_3440 == AT) ) { s = 1710; } else if ( (LA2_3440 == AND) ) { s = 3441; } else if ( (LA2_3440 == EQUAL) ) { s = 1712; } else if ( (LA2_3440 == PLUS) ) { s = 3442; } else if ( (LA2_3440 == DOLLARD) ) { s = 3443; } else if ( (LA2_3440 == COMMA) ) { s = 1715; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3440 == CRLF) ) { s = 205; } else if ( (LA2_3440 == DASH || LA2_3440 == EMARK || LA2_3440 == LPAREN || LA2_3440 == RPAREN || ((LA2_3440 >= SQUOTE) && (LA2_3440 <= USCORE))) ) { s = 3444; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3440 == LSBRAQUET || LA2_3440 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3440); if ( s>=0 ) { return s; } } break; case 779: { ANTLR3_UINT32 LA2_1728; ANTLR3_MARKER index2_1728; LA2_1728 = LA(1); index2_1728 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1728 == QMARK) ) { s = 854; } else if ( (LA2_1728 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1728 == CRLF) ) { s = 205; } else if ( (LA2_1728 == SEMI) ) { s = 1237; } else if ( (LA2_1728 == DOT) ) { s = 1724; } else if ( (LA2_1728 == COMMON_CHAR || LA2_1728 == HEX_CHAR) ) { s = 1725; } else if ( (LA2_1728 == DIGIT) ) { s = 1726; } else if ( (LA2_1728 == SLASH) ) { s = 1271; } else if ( (LA2_1728 == DASH || LA2_1728 == EMARK || LA2_1728 == LPAREN || LA2_1728 == RPAREN || ((LA2_1728 >= SQUOTE) && (LA2_1728 <= USCORE))) ) { s = 1728; } else if ( (LA2_1728 == PERCENT) ) { s = 1729; } else if ( (LA2_1728 == EQUAL) ) { s = 2207; } else if ( (LA2_1728 == COLON) ) { s = 1727; } else if ( (LA2_1728 == AND) ) { s = 1730; } else if ( (LA2_1728 == AT) ) { s = 810; } else if ( (LA2_1728 == PLUS) ) { s = 1731; } else if ( (LA2_1728 == DOLLARD) ) { s = 1732; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1728 == LSBRAQUET || LA2_1728 == RSBRAQUET) ) { s = 405; } else if ( (LA2_1728 == COMMA) ) { s = 815; } SEEK(index2_1728); if ( s>=0 ) { return s; } } break; case 780: { ANTLR3_UINT32 LA2_3442; ANTLR3_MARKER index2_3442; LA2_3442 = LA(1); index2_3442 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3442 == SEMI) ) { s = 3170; } else if ( (LA2_3442 == SLASH) ) { s = 3435; } else if ( (LA2_3442 == QMARK) ) { s = 854; } else if ( (LA2_3442 == SP) ) { s = 204; } else if ( (LA2_3442 == COMMON_CHAR || LA2_3442 == HEX_CHAR) ) { s = 3436; } else if ( (LA2_3442 == DIGIT) ) { s = 3437; } else if ( (LA2_3442 == DOT) ) { s = 3438; } else if ( (LA2_3442 == PERCENT) ) { s = 3439; } else if ( (LA2_3442 == COLON) ) { s = 3440; } else if ( (LA2_3442 == AT) ) { s = 1710; } else if ( (LA2_3442 == AND) ) { s = 3441; } else if ( (LA2_3442 == EQUAL) ) { s = 1712; } else if ( (LA2_3442 == PLUS) ) { s = 3442; } else if ( (LA2_3442 == DOLLARD) ) { s = 3443; } else if ( (LA2_3442 == COMMA) ) { s = 1715; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3442 == CRLF) ) { s = 205; } else if ( (LA2_3442 == DASH || LA2_3442 == EMARK || LA2_3442 == LPAREN || LA2_3442 == RPAREN || ((LA2_3442 >= SQUOTE) && (LA2_3442 <= USCORE))) ) { s = 3444; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3442 == LSBRAQUET || LA2_3442 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3442); if ( s>=0 ) { return s; } } break; case 781: { ANTLR3_UINT32 LA2_3460; ANTLR3_MARKER index2_3460; LA2_3460 = LA(1); index2_3460 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3460 == SEMI) ) { s = 2201; } else if ( (LA2_3460 == QMARK) ) { s = 242; } else if ( (LA2_3460 == SP) ) { s = 35; } else if ( (LA2_3460 == SLASH) ) { s = 3435; } else if ( (LA2_3460 == COMMON_CHAR || LA2_3460 == HEX_CHAR) ) { s = 3633; } else if ( (LA2_3460 == DIGIT) ) { s = 3634; } else if ( (LA2_3460 == DOT) ) { s = 3635; } else if ( (LA2_3460 == PERCENT) ) { s = 3636; } else if ( (LA2_3460 == COLON) ) { s = 3637; } else if ( (LA2_3460 == AT) ) { s = 2195; } else if ( (LA2_3460 == AND) ) { s = 3638; } else if ( (LA2_3460 == EQUAL) ) { s = 2197; } else if ( (LA2_3460 == PLUS) ) { s = 3639; } else if ( (LA2_3460 == DOLLARD) ) { s = 3640; } else if ( (LA2_3460 == COMMA) ) { s = 2200; } else if ( (LA2_3460 == DASH || LA2_3460 == EMARK || LA2_3460 == LPAREN || LA2_3460 == RPAREN || ((LA2_3460 >= SQUOTE) && (LA2_3460 <= USCORE))) ) { s = 3641; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3460 == LSBRAQUET || LA2_3460 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3460); if ( s>=0 ) { return s; } } break; case 782: { ANTLR3_UINT32 LA2_3441; ANTLR3_MARKER index2_3441; LA2_3441 = LA(1); index2_3441 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3441 == SEMI) ) { s = 3170; } else if ( (LA2_3441 == SLASH) ) { s = 3435; } else if ( (LA2_3441 == QMARK) ) { s = 854; } else if ( (LA2_3441 == SP) ) { s = 204; } else if ( (LA2_3441 == COMMON_CHAR || LA2_3441 == HEX_CHAR) ) { s = 3436; } else if ( (LA2_3441 == DIGIT) ) { s = 3437; } else if ( (LA2_3441 == DOT) ) { s = 3438; } else if ( (LA2_3441 == PERCENT) ) { s = 3439; } else if ( (LA2_3441 == COLON) ) { s = 3440; } else if ( (LA2_3441 == AT) ) { s = 1710; } else if ( (LA2_3441 == AND) ) { s = 3441; } else if ( (LA2_3441 == EQUAL) ) { s = 1712; } else if ( (LA2_3441 == PLUS) ) { s = 3442; } else if ( (LA2_3441 == DOLLARD) ) { s = 3443; } else if ( (LA2_3441 == COMMA) ) { s = 1715; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3441 == CRLF) ) { s = 205; } else if ( (LA2_3441 == DASH || LA2_3441 == EMARK || LA2_3441 == LPAREN || LA2_3441 == RPAREN || ((LA2_3441 >= SQUOTE) && (LA2_3441 <= USCORE))) ) { s = 3444; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3441 == LSBRAQUET || LA2_3441 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3441); if ( s>=0 ) { return s; } } break; case 783: { ANTLR3_UINT32 LA2_3119; ANTLR3_MARKER index2_3119; LA2_3119 = LA(1); index2_3119 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3119 == AT) ) { s = 89; } else if ( (LA2_3119 == COMMON_CHAR || LA2_3119 == HEX_CHAR) ) { s = 2429; } else if ( (LA2_3119 == DIGIT) ) { s = 2430; } else if ( (LA2_3119 == DASH || LA2_3119 == DOT || LA2_3119 == EMARK || LA2_3119 == LPAREN || LA2_3119 == RPAREN || ((LA2_3119 >= SQUOTE) && (LA2_3119 <= USCORE))) ) { s = 2431; } else if ( (LA2_3119 == PERCENT) ) { s = 2432; } else if ( (LA2_3119 == AND) ) { s = 1099; } else if ( (LA2_3119 == EQUAL) ) { s = 194; } else if ( (LA2_3119 == PLUS) ) { s = 2433; } else if ( (LA2_3119 == DOLLARD) ) { s = 2434; } else if ( (LA2_3119 == COMMA) ) { s = 197; } else if ( (LA2_3119 == SP) ) { s = 35; } else if ( (LA2_3119 == QMARK) ) { s = 2435; } else if ( (LA2_3119 == SEMI) ) { s = 105; } else if ( (LA2_3119 == COLON || LA2_3119 == SLASH) ) { s = 2436; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3119 == LSBRAQUET || LA2_3119 == RSBRAQUET) ) { s = 2437; } SEEK(index2_3119); if ( s>=0 ) { return s; } } break; case 784: { ANTLR3_UINT32 LA2_1097; ANTLR3_MARKER index2_1097; LA2_1097 = LA(1); index2_1097 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1097 == AT) ) { s = 89; } else if ( (LA2_1097 == COMMON_CHAR || LA2_1097 == HEX_CHAR) ) { s = 1095; } else if ( (LA2_1097 == DIGIT) ) { s = 1096; } else if ( (LA2_1097 == DASH || LA2_1097 == DOT || LA2_1097 == EMARK || LA2_1097 == LPAREN || LA2_1097 == RPAREN || ((LA2_1097 >= SQUOTE) && (LA2_1097 <= USCORE))) ) { s = 1097; } else if ( (LA2_1097 == PERCENT) ) { s = 1098; } else if ( (LA2_1097 == AND) ) { s = 1099; } else if ( (LA2_1097 == EQUAL) ) { s = 194; } else if ( (LA2_1097 == PLUS) ) { s = 1100; } else if ( (LA2_1097 == DOLLARD) ) { s = 1101; } else if ( (LA2_1097 == COMMA) ) { s = 197; } else if ( (LA2_1097 == SP) ) { s = 35; } else if ( (LA2_1097 == QMARK) ) { s = 1102; } else if ( (LA2_1097 == SEMI) ) { s = 105; } else if ( (LA2_1097 == COLON || LA2_1097 == SLASH) ) { s = 1103; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1097 == LSBRAQUET || LA2_1097 == RSBRAQUET) ) { s = 1104; } SEEK(index2_1097); if ( s>=0 ) { return s; } } break; case 785: { ANTLR3_UINT32 LA2_3443; ANTLR3_MARKER index2_3443; LA2_3443 = LA(1); index2_3443 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3443 == SEMI) ) { s = 3170; } else if ( (LA2_3443 == SLASH) ) { s = 3435; } else if ( (LA2_3443 == QMARK) ) { s = 854; } else if ( (LA2_3443 == SP) ) { s = 204; } else if ( (LA2_3443 == COMMON_CHAR || LA2_3443 == HEX_CHAR) ) { s = 3436; } else if ( (LA2_3443 == DIGIT) ) { s = 3437; } else if ( (LA2_3443 == DOT) ) { s = 3438; } else if ( (LA2_3443 == PERCENT) ) { s = 3439; } else if ( (LA2_3443 == COLON) ) { s = 3440; } else if ( (LA2_3443 == AT) ) { s = 1710; } else if ( (LA2_3443 == AND) ) { s = 3441; } else if ( (LA2_3443 == EQUAL) ) { s = 1712; } else if ( (LA2_3443 == PLUS) ) { s = 3442; } else if ( (LA2_3443 == DOLLARD) ) { s = 3443; } else if ( (LA2_3443 == COMMA) ) { s = 1715; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3443 == CRLF) ) { s = 205; } else if ( (LA2_3443 == DASH || LA2_3443 == EMARK || LA2_3443 == LPAREN || LA2_3443 == RPAREN || ((LA2_3443 >= SQUOTE) && (LA2_3443 <= USCORE))) ) { s = 3444; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3443 == LSBRAQUET || LA2_3443 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3443); if ( s>=0 ) { return s; } } break; case 786: { ANTLR3_UINT32 LA2_3874; ANTLR3_MARKER index2_3874; LA2_3874 = LA(1); index2_3874 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3874 == QMARK) ) { s = 854; } else if ( (LA2_3874 == SP) ) { s = 204; } else if ( (LA2_3874 == SLASH) ) { s = 3123; } else if ( (LA2_3874 == SEMI) ) { s = 3151; } else if ( (LA2_3874 == COMMON_CHAR || LA2_3874 == HEX_CHAR) ) { s = 3761; } else if ( (LA2_3874 == DIGIT) ) { s = 3762; } else if ( (LA2_3874 == DOT) ) { s = 3763; } else if ( (LA2_3874 == PERCENT) ) { s = 3764; } else if ( (LA2_3874 == COLON) ) { s = 3765; } else if ( (LA2_3874 == AT) ) { s = 2879; } else if ( (LA2_3874 == AND) ) { s = 3766; } else if ( (LA2_3874 == EQUAL) ) { s = 2881; } else if ( (LA2_3874 == PLUS) ) { s = 3767; } else if ( (LA2_3874 == DOLLARD) ) { s = 3768; } else if ( (LA2_3874 == COMMA) ) { s = 2884; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3874 == CRLF) ) { s = 205; } else if ( (LA2_3874 == DASH || LA2_3874 == EMARK || LA2_3874 == LPAREN || LA2_3874 == RPAREN || ((LA2_3874 >= SQUOTE) && (LA2_3874 <= USCORE))) ) { s = 3769; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3874 == LSBRAQUET || LA2_3874 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3874); if ( s>=0 ) { return s; } } break; case 787: { ANTLR3_UINT32 LA2_2051; ANTLR3_MARKER index2_2051; LA2_2051 = LA(1); index2_2051 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2051 == COMMON_CHAR || LA2_2051 == HEX_CHAR) ) { s = 2530; } else if ( (LA2_2051 == DIGIT) ) { s = 2531; } else if ( (LA2_2051 == DOT) ) { s = 2532; } else if ( (LA2_2051 == PERCENT) ) { s = 2533; } else if ( (LA2_2051 == COLON) ) { s = 2534; } else if ( (LA2_2051 == AT) ) { s = 1576; } else if ( (LA2_2051 == AND) ) { s = 2535; } else if ( (LA2_2051 == EQUAL) ) { s = 1578; } else if ( (LA2_2051 == PLUS) ) { s = 2536; } else if ( (LA2_2051 == DOLLARD) ) { s = 2537; } else if ( (LA2_2051 == COMMA) ) { s = 1581; } else if ( (LA2_2051 == QMARK) ) { s = 854; } else if ( (LA2_2051 == SP) ) { s = 2010; } else if ( (LA2_2051 == SLASH) ) { s = 2009; } else if ( (LA2_2051 == SEMI) ) { s = 2477; } else if ( (LA2_2051 == CRLF) ) { s = 2012; } else if ( (LA2_2051 == BQUOTE) ) { s = 1203; } else if ( (LA2_2051 == DASH || LA2_2051 == EMARK || LA2_2051 == LPAREN || LA2_2051 == RPAREN || ((LA2_2051 >= SQUOTE) && (LA2_2051 <= USCORE))) ) { s = 2538; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2051 == LSBRAQUET || LA2_2051 == RSBRAQUET) ) { s = 405; } SEEK(index2_2051); if ( s>=0 ) { return s; } } break; case 788: { ANTLR3_UINT32 LA2_3523; ANTLR3_MARKER index2_3523; LA2_3523 = LA(1); index2_3523 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3523 == SEMI) ) { s = 3530; } else if ( (LA2_3523 == SLASH) ) { s = 2928; } else if ( (LA2_3523 == QMARK) ) { s = 854; } else if ( (LA2_3523 == SP) ) { s = 204; } else if ( (LA2_3523 == COMMON_CHAR || LA2_3523 == HEX_CHAR) ) { s = 3521; } else if ( (LA2_3523 == DIGIT) ) { s = 3522; } else if ( (LA2_3523 == DOT) ) { s = 3523; } else if ( (LA2_3523 == PERCENT) ) { s = 3524; } else if ( (LA2_3523 == COLON) ) { s = 3525; } else if ( (LA2_3523 == AT) ) { s = 2963; } else if ( (LA2_3523 == AND) ) { s = 3526; } else if ( (LA2_3523 == EQUAL) ) { s = 3527; } else if ( (LA2_3523 == PLUS) ) { s = 3528; } else if ( (LA2_3523 == DOLLARD) ) { s = 3529; } else if ( (LA2_3523 == COMMA) ) { s = 2968; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3523 == CRLF) ) { s = 205; } else if ( (LA2_3523 == DASH || LA2_3523 == EMARK || LA2_3523 == LPAREN || LA2_3523 == RPAREN || ((LA2_3523 >= SQUOTE) && (LA2_3523 <= USCORE))) ) { s = 3531; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3523 == LSBRAQUET || LA2_3523 == RSBRAQUET) ) { s = 405; } SEEK(index2_3523); if ( s>=0 ) { return s; } } break; case 789: { ANTLR3_UINT32 LA2_1529; ANTLR3_MARKER index2_1529; LA2_1529 = LA(1); index2_1529 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1529 == DOT) ) { s = 1530; } else if ( (LA2_1529 == COLON) ) { s = 692; } else if ( (LA2_1529 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1529 == CRLF) ) { s = 205; } else if ( (LA2_1529 == SEMI) ) { s = 693; } else if ( (LA2_1529 == QMARK) ) { s = 694; } else if ( (LA2_1529 == DASH) ) { s = 392; } else if ( (LA2_1529 == COMMON_CHAR || LA2_1529 == HEX_CHAR) ) { s = 390; } else if ( (LA2_1529 == DIGIT) ) { s = 391; } else if ( (LA2_1529 == COMMA) ) { s = 106; } else if ( (((LA2_1529 >= AND) && (LA2_1529 <= AT)) || LA2_1529 == DOLLARD || LA2_1529 == EQUAL || LA2_1529 == PLUS || LA2_1529 == SLASH) ) { s = 108; } else if ( (LA2_1529 == EMARK || LA2_1529 == LPAREN || LA2_1529 == RPAREN || ((LA2_1529 >= SQUOTE) && (LA2_1529 <= USCORE))) ) { s = 111; } else if ( (LA2_1529 == PERCENT) ) { s = 112; } SEEK(index2_1529); if ( s>=0 ) { return s; } } break; case 790: { ANTLR3_UINT32 LA2_696; ANTLR3_MARKER index2_696; LA2_696 = LA(1); index2_696 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_696 == DOT) ) { s = 697; } else if ( (LA2_696 == COMMON_CHAR || LA2_696 == HEX_CHAR) ) { s = 390; } else if ( (LA2_696 == DIGIT) ) { s = 391; } else if ( (LA2_696 == DASH) ) { s = 392; } else if ( (LA2_696 == COLON) ) { s = 692; } else if ( (LA2_696 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_696 == CRLF) ) { s = 205; } else if ( (LA2_696 == SEMI) ) { s = 693; } else if ( (LA2_696 == QMARK) ) { s = 694; } else if ( (LA2_696 == COMMA) ) { s = 106; } else if ( (((LA2_696 >= AND) && (LA2_696 <= AT)) || LA2_696 == DOLLARD || LA2_696 == EQUAL || LA2_696 == PLUS || LA2_696 == SLASH) ) { s = 108; } else if ( (LA2_696 == EMARK || LA2_696 == LPAREN || LA2_696 == RPAREN || ((LA2_696 >= SQUOTE) && (LA2_696 <= USCORE))) ) { s = 111; } else if ( (LA2_696 == PERCENT) ) { s = 112; } SEEK(index2_696); if ( s>=0 ) { return s; } } break; case 791: { ANTLR3_UINT32 LA2_3118; ANTLR3_MARKER index2_3118; LA2_3118 = LA(1); index2_3118 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3118 == COLON) ) { s = 692; } else if ( (LA2_3118 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3118 == CRLF) ) { s = 205; } else if ( (LA2_3118 == SEMI) ) { s = 693; } else if ( (LA2_3118 == QMARK) ) { s = 694; } else if ( (LA2_3118 == DOT) ) { s = 691; } else if ( (LA2_3118 == DASH) ) { s = 392; } else if ( (LA2_3118 == COMMON_CHAR || LA2_3118 == HEX_CHAR) ) { s = 390; } else if ( (LA2_3118 == DIGIT) ) { s = 391; } else if ( (LA2_3118 == COMMA) ) { s = 106; } else if ( (((LA2_3118 >= AND) && (LA2_3118 <= AT)) || LA2_3118 == DOLLARD || LA2_3118 == EQUAL || LA2_3118 == PLUS || LA2_3118 == SLASH) ) { s = 108; } else if ( (LA2_3118 == EMARK || LA2_3118 == LPAREN || LA2_3118 == RPAREN || ((LA2_3118 >= SQUOTE) && (LA2_3118 <= USCORE))) ) { s = 111; } else if ( (LA2_3118 == PERCENT) ) { s = 112; } SEEK(index2_3118); if ( s>=0 ) { return s; } } break; case 792: { ANTLR3_UINT32 LA2_2424; ANTLR3_MARKER index2_2424; LA2_2424 = LA(1); index2_2424 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2424 == DOT) ) { s = 2425; } else if ( (LA2_2424 == COLON) ) { s = 692; } else if ( (LA2_2424 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2424 == CRLF) ) { s = 205; } else if ( (LA2_2424 == SEMI) ) { s = 693; } else if ( (LA2_2424 == QMARK) ) { s = 694; } else if ( (LA2_2424 == DASH) ) { s = 392; } else if ( (LA2_2424 == COMMON_CHAR || LA2_2424 == HEX_CHAR) ) { s = 390; } else if ( (LA2_2424 == DIGIT) ) { s = 391; } else if ( (LA2_2424 == COMMA) ) { s = 106; } else if ( (((LA2_2424 >= AND) && (LA2_2424 <= AT)) || LA2_2424 == DOLLARD || LA2_2424 == EQUAL || LA2_2424 == PLUS || LA2_2424 == SLASH) ) { s = 108; } else if ( (LA2_2424 == EMARK || LA2_2424 == LPAREN || LA2_2424 == RPAREN || ((LA2_2424 >= SQUOTE) && (LA2_2424 <= USCORE))) ) { s = 111; } else if ( (LA2_2424 == PERCENT) ) { s = 112; } SEEK(index2_2424); if ( s>=0 ) { return s; } } break; case 793: { ANTLR3_UINT32 LA2_3794; ANTLR3_MARKER index2_3794; LA2_3794 = LA(1); index2_3794 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3794 == SEMI) ) { s = 3251; } else if ( (LA2_3794 == QMARK) ) { s = 854; } else if ( (LA2_3794 == SP) ) { s = 204; } else if ( (LA2_3794 == SLASH) ) { s = 3226; } else if ( (LA2_3794 == COMMON_CHAR || LA2_3794 == HEX_CHAR) ) { s = 3491; } else if ( (LA2_3794 == DIGIT) ) { s = 3492; } else if ( (LA2_3794 == DOT) ) { s = 3493; } else if ( (LA2_3794 == PERCENT) ) { s = 3494; } else if ( (LA2_3794 == COLON) ) { s = 3495; } else if ( (LA2_3794 == AT) ) { s = 2122; } else if ( (LA2_3794 == AND) ) { s = 3496; } else if ( (LA2_3794 == EQUAL) ) { s = 2124; } else if ( (LA2_3794 == PLUS) ) { s = 3497; } else if ( (LA2_3794 == DOLLARD) ) { s = 3498; } else if ( (LA2_3794 == COMMA) ) { s = 2127; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3794 == CRLF) ) { s = 205; } else if ( (LA2_3794 == DASH || LA2_3794 == EMARK || LA2_3794 == LPAREN || LA2_3794 == RPAREN || ((LA2_3794 >= SQUOTE) && (LA2_3794 <= USCORE))) ) { s = 3499; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3794 == LSBRAQUET || LA2_3794 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3794); if ( s>=0 ) { return s; } } break; case 794: { ANTLR3_UINT32 LA2_90; ANTLR3_MARKER index2_90; LA2_90 = LA(1); index2_90 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_90 == COLON) ) { s = 201; } else if ( (LA2_90 == AT) ) { s = 89; } else if ( (LA2_90 == COMMON_CHAR || LA2_90 == HEX_CHAR) ) { s = 90; } else if ( (LA2_90 == DIGIT) ) { s = 91; } else if ( (LA2_90 == DASH) ) { s = 95; } else if ( (LA2_90 == PERCENT) ) { s = 93; } else if ( (LA2_90 == SEMI) ) { s = 202; } else if ( (LA2_90 == DOT) ) { s = 203; } else if ( (LA2_90 == EMARK || LA2_90 == LPAREN || LA2_90 == RPAREN || ((LA2_90 >= SQUOTE) && (LA2_90 <= USCORE))) ) { s = 96; } else if ( (LA2_90 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_90 == CRLF) ) { s = 205; } else if ( (LA2_90 == QMARK) ) { s = 206; } else if ( (LA2_90 == COMMA) ) { s = 97; } else if ( (LA2_90 == AND || LA2_90 == DOLLARD || LA2_90 == EQUAL || LA2_90 == PLUS || LA2_90 == SLASH) ) { s = 99; } SEEK(index2_90); if ( s>=0 ) { return s; } } break; case 795: { ANTLR3_UINT32 LA2_3683; ANTLR3_MARKER index2_3683; LA2_3683 = LA(1); index2_3683 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3683 == SEMI) ) { s = 3530; } else if ( (LA2_3683 == SLASH) ) { s = 3226; } else if ( (LA2_3683 == QMARK) ) { s = 854; } else if ( (LA2_3683 == SP) ) { s = 204; } else if ( (LA2_3683 == COMMON_CHAR || LA2_3683 == HEX_CHAR) ) { s = 3682; } else if ( (LA2_3683 == DIGIT) ) { s = 3683; } else if ( (LA2_3683 == DOT) ) { s = 3684; } else if ( (LA2_3683 == PERCENT) ) { s = 3685; } else if ( (LA2_3683 == COLON) ) { s = 3686; } else if ( (LA2_3683 == AT) ) { s = 2963; } else if ( (LA2_3683 == AND) ) { s = 3687; } else if ( (LA2_3683 == EQUAL) ) { s = 2965; } else if ( (LA2_3683 == PLUS) ) { s = 3688; } else if ( (LA2_3683 == DOLLARD) ) { s = 3689; } else if ( (LA2_3683 == COMMA) ) { s = 2968; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3683 == CRLF) ) { s = 205; } else if ( (LA2_3683 == DASH || LA2_3683 == EMARK || LA2_3683 == LPAREN || LA2_3683 == RPAREN || ((LA2_3683 >= SQUOTE) && (LA2_3683 <= USCORE))) ) { s = 3690; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3683 == LSBRAQUET || LA2_3683 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3683); if ( s>=0 ) { return s; } } break; case 796: { ANTLR3_UINT32 LA2_3736; ANTLR3_MARKER index2_3736; LA2_3736 = LA(1); index2_3736 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3736 == SLASH) ) { s = 3323; } else if ( (LA2_3736 == QMARK) ) { s = 1751; } else if ( (LA2_3736 == SP) ) { s = 204; } else if ( (LA2_3736 == SEMI) ) { s = 3030; } else if ( (LA2_3736 == COMMON_CHAR || LA2_3736 == HEX_CHAR) ) { s = 3734; } else if ( (LA2_3736 == DIGIT) ) { s = 3735; } else if ( (LA2_3736 == DOT) ) { s = 3736; } else if ( (LA2_3736 == PERCENT) ) { s = 3737; } else if ( (LA2_3736 == COLON) ) { s = 3738; } else if ( (LA2_3736 == AT) ) { s = 2673; } else if ( (LA2_3736 == AND) ) { s = 3739; } else if ( (LA2_3736 == EQUAL) ) { s = 2675; } else if ( (LA2_3736 == PLUS) ) { s = 3740; } else if ( (LA2_3736 == DOLLARD) ) { s = 3741; } else if ( (LA2_3736 == COMMA) ) { s = 2678; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3736 == CRLF) ) { s = 205; } else if ( (LA2_3736 == DASH || LA2_3736 == EMARK || LA2_3736 == LPAREN || LA2_3736 == RPAREN || ((LA2_3736 >= SQUOTE) && (LA2_3736 <= USCORE))) ) { s = 3742; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3736 == LSBRAQUET || LA2_3736 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3736); if ( s>=0 ) { return s; } } break; case 797: { ANTLR3_UINT32 LA2_2484; ANTLR3_MARKER index2_2484; LA2_2484 = LA(1); index2_2484 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2484 == SP) ) { s = 2456; } else if ( (LA2_2484 == CRLF) ) { s = 2458; } else if ( (LA2_2484 == EQUAL) ) { s = 2867; } else if ( (LA2_2484 == SLASH) ) { s = 2868; } else if ( (LA2_2484 == QMARK) ) { s = 854; } else if ( (LA2_2484 == SEMI) ) { s = 2028; } else if ( (LA2_2484 == COMMON_CHAR || LA2_2484 == HEX_CHAR) ) { s = 2512; } else if ( (LA2_2484 == DIGIT) ) { s = 2481; } else if ( (LA2_2484 == DOT) ) { s = 2482; } else if ( (LA2_2484 == PERCENT) ) { s = 2483; } else if ( (LA2_2484 == PLUS) ) { s = 2484; } else if ( (LA2_2484 == BQUOTE) ) { s = 1203; } else if ( (LA2_2484 == DASH || LA2_2484 == EMARK || LA2_2484 == LPAREN || LA2_2484 == RPAREN || ((LA2_2484 >= SQUOTE) && (LA2_2484 <= USCORE))) ) { s = 2485; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2484 == AND || LA2_2484 == COLON || LA2_2484 == DOLLARD || LA2_2484 == LSBRAQUET || LA2_2484 == RSBRAQUET) ) { s = 405; } SEEK(index2_2484); if ( s>=0 ) { return s; } } break; case 798: { ANTLR3_UINT32 LA2_3583; ANTLR3_MARKER index2_3583; LA2_3583 = LA(1); index2_3583 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3583 == QMARK) ) { s = 1751; } else if ( (LA2_3583 == SP) ) { s = 204; } else if ( (LA2_3583 == SLASH) ) { s = 3031; } else if ( (LA2_3583 == SEMI) ) { s = 3351; } else if ( (LA2_3583 == COMMON_CHAR || LA2_3583 == HEX_CHAR) ) { s = 3581; } else if ( (LA2_3583 == DIGIT) ) { s = 3582; } else if ( (LA2_3583 == DOT) ) { s = 3583; } else if ( (LA2_3583 == PERCENT) ) { s = 3584; } else if ( (LA2_3583 == COLON) ) { s = 3585; } else if ( (LA2_3583 == AT) ) { s = 3043; } else if ( (LA2_3583 == AND) ) { s = 3586; } else if ( (LA2_3583 == EQUAL) ) { s = 3745; } else if ( (LA2_3583 == PLUS) ) { s = 3587; } else if ( (LA2_3583 == DOLLARD) ) { s = 3588; } else if ( (LA2_3583 == COMMA) ) { s = 3048; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3583 == CRLF) ) { s = 205; } else if ( (LA2_3583 == DASH || LA2_3583 == EMARK || LA2_3583 == LPAREN || LA2_3583 == RPAREN || ((LA2_3583 >= SQUOTE) && (LA2_3583 <= USCORE))) ) { s = 3589; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3583 == LSBRAQUET || LA2_3583 == RSBRAQUET) ) { s = 405; } SEEK(index2_3583); if ( s>=0 ) { return s; } } break; case 799: { ANTLR3_UINT32 LA2_3433; ANTLR3_MARKER index2_3433; LA2_3433 = LA(1); index2_3433 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3433 == DIGIT) ) { s = 3631; } else if ( (LA2_3433 == SEMI) ) { s = 3170; } else if ( (LA2_3433 == SLASH) ) { s = 3171; } else if ( (LA2_3433 == QMARK) ) { s = 854; } else if ( (LA2_3433 == SP) ) { s = 204; } else if ( (LA2_3433 == COMMON_CHAR || LA2_3433 == HEX_CHAR) ) { s = 3162; } else if ( (LA2_3433 == DOT) ) { s = 3163; } else if ( (LA2_3433 == PERCENT) ) { s = 3164; } else if ( (LA2_3433 == COLON) ) { s = 3165; } else if ( (LA2_3433 == AT) ) { s = 1710; } else if ( (LA2_3433 == AND) ) { s = 3166; } else if ( (LA2_3433 == EQUAL) ) { s = 3167; } else if ( (LA2_3433 == PLUS) ) { s = 3168; } else if ( (LA2_3433 == DOLLARD) ) { s = 3169; } else if ( (LA2_3433 == COMMA) ) { s = 1715; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3433 == CRLF) ) { s = 205; } else if ( (LA2_3433 == DASH || LA2_3433 == EMARK || LA2_3433 == LPAREN || LA2_3433 == RPAREN || ((LA2_3433 >= SQUOTE) && (LA2_3433 <= USCORE))) ) { s = 3172; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3433 == LSBRAQUET || LA2_3433 == RSBRAQUET) ) { s = 405; } SEEK(index2_3433); if ( s>=0 ) { return s; } } break; case 800: { ANTLR3_UINT32 LA2_882; ANTLR3_MARKER index2_882; LA2_882 = LA(1); index2_882 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_882 == COMMON_CHAR || LA2_882 == HEX_CHAR) ) { s = 882; } else if ( (LA2_882 == DIGIT) ) { s = 883; } else if ( (LA2_882 == DASH) ) { s = 884; } else if ( (LA2_882 == DOT) ) { s = 1305; } else if ( (LA2_882 == COLON) ) { s = 1306; } else if ( (LA2_882 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_882 == CRLF) ) { s = 205; } else if ( (LA2_882 == SEMI) ) { s = 1307; } else if ( (LA2_882 == QMARK) ) { s = 1308; } else if ( (LA2_882 == COMMA) ) { s = 506; } else if ( (((LA2_882 >= AND) && (LA2_882 <= AT)) || LA2_882 == DOLLARD || LA2_882 == EQUAL || LA2_882 == PLUS || LA2_882 == SLASH) ) { s = 508; } else if ( (LA2_882 == EMARK || LA2_882 == LPAREN || LA2_882 == RPAREN || ((LA2_882 >= SQUOTE) && (LA2_882 <= USCORE))) ) { s = 511; } else if ( (LA2_882 == PERCENT) ) { s = 512; } SEEK(index2_882); if ( s>=0 ) { return s; } } break; case 801: { ANTLR3_UINT32 LA2_3522; ANTLR3_MARKER index2_3522; LA2_3522 = LA(1); index2_3522 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3522 == SEMI) ) { s = 3530; } else if ( (LA2_3522 == SLASH) ) { s = 2928; } else if ( (LA2_3522 == QMARK) ) { s = 854; } else if ( (LA2_3522 == SP) ) { s = 204; } else if ( (LA2_3522 == COMMON_CHAR || LA2_3522 == HEX_CHAR) ) { s = 3521; } else if ( (LA2_3522 == DIGIT) ) { s = 3522; } else if ( (LA2_3522 == DOT) ) { s = 3523; } else if ( (LA2_3522 == PERCENT) ) { s = 3524; } else if ( (LA2_3522 == COLON) ) { s = 3525; } else if ( (LA2_3522 == AT) ) { s = 2963; } else if ( (LA2_3522 == AND) ) { s = 3526; } else if ( (LA2_3522 == EQUAL) ) { s = 3527; } else if ( (LA2_3522 == PLUS) ) { s = 3528; } else if ( (LA2_3522 == DOLLARD) ) { s = 3529; } else if ( (LA2_3522 == COMMA) ) { s = 2968; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3522 == CRLF) ) { s = 205; } else if ( (LA2_3522 == DASH || LA2_3522 == EMARK || LA2_3522 == LPAREN || LA2_3522 == RPAREN || ((LA2_3522 >= SQUOTE) && (LA2_3522 <= USCORE))) ) { s = 3531; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3522 == LSBRAQUET || LA2_3522 == RSBRAQUET) ) { s = 405; } SEEK(index2_3522); if ( s>=0 ) { return s; } } break; case 802: { ANTLR3_UINT32 LA2_2436; ANTLR3_MARKER index2_2436; LA2_2436 = LA(1); index2_2436 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2436 == SP) ) { s = 35; } else if ( (LA2_2436 == AND) ) { s = 1553; } else if ( (LA2_2436 == QMARK) ) { s = 2435; } else if ( (LA2_2436 == COMMON_CHAR || LA2_2436 == HEX_CHAR) ) { s = 2439; } else if ( (LA2_2436 == DIGIT) ) { s = 2440; } else if ( (LA2_2436 == DASH || LA2_2436 == DOT || LA2_2436 == EMARK || LA2_2436 == LPAREN || LA2_2436 == RPAREN || ((LA2_2436 >= SQUOTE) && (LA2_2436 <= USCORE))) ) { s = 2441; } else if ( (LA2_2436 == PERCENT) ) { s = 2442; } else if ( (LA2_2436 == SEMI) ) { s = 105; } else if ( (LA2_2436 == COMMA) ) { s = 106; } else if ( (LA2_2436 == COLON || LA2_2436 == DOLLARD || LA2_2436 == PLUS || LA2_2436 == SLASH) ) { s = 2436; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2436 == LSBRAQUET || LA2_2436 == RSBRAQUET) ) { s = 2437; } else if ( (LA2_2436 == AT || LA2_2436 == EQUAL) ) { s = 108; } SEEK(index2_2436); if ( s>=0 ) { return s; } } break; case 803: { ANTLR3_UINT32 LA2_3015; ANTLR3_MARKER index2_3015; LA2_3015 = LA(1); index2_3015 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3015 == SLASH) ) { s = 3319; } else if ( (LA2_3015 == QMARK) ) { s = 1751; } else if ( (LA2_3015 == SP) ) { s = 1585; } else if ( (LA2_3015 == CRLF) ) { s = 1588; } else if ( (LA2_3015 == SEMI) ) { s = 1749; } else if ( (LA2_3015 == COMMON_CHAR || LA2_3015 == HEX_CHAR) ) { s = 3015; } else if ( (LA2_3015 == DIGIT) ) { s = 3016; } else if ( (LA2_3015 == DOT) ) { s = 3017; } else if ( (LA2_3015 == PERCENT) ) { s = 3018; } else if ( (LA2_3015 == PLUS) ) { s = 3019; } else if ( (LA2_3015 == BQUOTE) ) { s = 2092; } else if ( (LA2_3015 == DASH || LA2_3015 == EMARK || LA2_3015 == LPAREN || LA2_3015 == RPAREN || ((LA2_3015 >= SQUOTE) && (LA2_3015 <= USCORE))) ) { s = 3020; } else if ( (LA2_3015 == AND || LA2_3015 == COLON || LA2_3015 == DOLLARD) ) { s = 2717; } else if ( (LA2_3015 == COMMA) ) { s = 506; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3015 == LSBRAQUET || LA2_3015 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_3015 == AT || LA2_3015 == EQUAL) ) { s = 508; } SEEK(index2_3015); if ( s>=0 ) { return s; } } break; case 804: { ANTLR3_UINT32 LA2_2011; ANTLR3_MARKER index2_2011; LA2_2011 = LA(1); index2_2011 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2011 == COMMON_CHAR || LA2_2011 == HEX_CHAR) ) { s = 2461; } else if ( (LA2_2011 == DIGIT) ) { s = 2462; } else if ( (LA2_2011 == DOT) ) { s = 2463; } else if ( (LA2_2011 == PERCENT) ) { s = 2464; } else if ( (LA2_2011 == COLON) ) { s = 2005; } else if ( (LA2_2011 == AT) ) { s = 1123; } else if ( (LA2_2011 == AND) ) { s = 2006; } else if ( (LA2_2011 == EQUAL) ) { s = 1125; } else if ( (LA2_2011 == PLUS) ) { s = 2466; } else if ( (LA2_2011 == DOLLARD) ) { s = 2008; } else if ( (LA2_2011 == COMMA) ) { s = 1128; } else if ( (LA2_2011 == SLASH) ) { s = 2009; } else if ( (LA2_2011 == QMARK) ) { s = 854; } else if ( (LA2_2011 == SP) ) { s = 402; } else if ( (LA2_2011 == SEMI) ) { s = 2011; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2011 == CRLF) ) { s = 403; } else if ( (LA2_2011 == DASH || LA2_2011 == EMARK || LA2_2011 == LPAREN || LA2_2011 == RPAREN || ((LA2_2011 >= SQUOTE) && (LA2_2011 <= USCORE))) ) { s = 2467; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2011 == LSBRAQUET || LA2_2011 == RSBRAQUET) ) { s = 405; } SEEK(index2_2011); if ( s>=0 ) { return s; } } break; case 805: { ANTLR3_UINT32 LA2_1756; ANTLR3_MARKER index2_1756; LA2_1756 = LA(1); index2_1756 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1756 == DOT) ) { s = 2242; } else if ( (LA2_1756 == COMMON_CHAR || LA2_1756 == HEX_CHAR) ) { s = 2243; } else if ( (LA2_1756 == DIGIT) ) { s = 2244; } else if ( (LA2_1756 == SLASH) ) { s = 2245; } else if ( (LA2_1756 == DASH || LA2_1756 == EMARK || LA2_1756 == LPAREN || LA2_1756 == RPAREN || ((LA2_1756 >= SQUOTE) && (LA2_1756 <= USCORE))) ) { s = 2246; } else if ( (LA2_1756 == PERCENT) ) { s = 2247; } else if ( (LA2_1756 == COLON) ) { s = 2248; } else if ( (LA2_1756 == QMARK) ) { s = 242; } else if ( (LA2_1756 == SP) ) { s = 35; } else if ( (LA2_1756 == SEMI) ) { s = 240; } else if ( (LA2_1756 == AND) ) { s = 2249; } else if ( (LA2_1756 == AT) ) { s = 497; } else if ( (LA2_1756 == PLUS) ) { s = 2250; } else if ( (LA2_1756 == EQUAL) ) { s = 499; } else if ( (LA2_1756 == DOLLARD) ) { s = 2251; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1756 == LSBRAQUET || LA2_1756 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_1756 == COMMA) ) { s = 502; } SEEK(index2_1756); if ( s>=0 ) { return s; } } break; case 806: { ANTLR3_UINT32 LA2_2480; ANTLR3_MARKER index2_2480; LA2_2480 = LA(1); index2_2480 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2480 == CRLF) ) { s = 2012; } else if ( (LA2_2480 == SP) ) { s = 2480; } else if ( (LA2_2480 == COMMON_CHAR || LA2_2480 == HEX_CHAR) ) { s = 2512; } else if ( (LA2_2480 == DIGIT) ) { s = 2481; } else if ( (LA2_2480 == DOT) ) { s = 2482; } else if ( (LA2_2480 == PERCENT) ) { s = 2483; } else if ( (LA2_2480 == PLUS) ) { s = 2484; } else if ( (LA2_2480 == BQUOTE) ) { s = 1203; } else if ( (LA2_2480 == DASH || LA2_2480 == EMARK || LA2_2480 == LPAREN || LA2_2480 == RPAREN || ((LA2_2480 >= SQUOTE) && (LA2_2480 <= USCORE))) ) { s = 2485; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2480 == AND || LA2_2480 == COLON || LA2_2480 == DOLLARD || LA2_2480 == LSBRAQUET || LA2_2480 == RSBRAQUET || LA2_2480 == SLASH) ) { s = 405; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2480 == SEMI) ) { s = 407; } SEEK(index2_2480); if ( s>=0 ) { return s; } } break; case 807: { ANTLR3_UINT32 LA2_1275; ANTLR3_MARKER index2_1275; LA2_1275 = LA(1); index2_1275 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1275 == EQUAL) ) { s = 1768; } else if ( (LA2_1275 == QMARK) ) { s = 1272; } else if ( (LA2_1275 == COMMON_CHAR || LA2_1275 == HEX_CHAR) ) { s = 1273; } else if ( (LA2_1275 == DIGIT) ) { s = 1274; } else if ( (LA2_1275 == DASH || LA2_1275 == DOT || LA2_1275 == EMARK || LA2_1275 == LPAREN || LA2_1275 == RPAREN || ((LA2_1275 >= SQUOTE) && (LA2_1275 <= USCORE))) ) { s = 1275; } else if ( (LA2_1275 == PERCENT) ) { s = 1276; } else if ( (LA2_1275 == SP) ) { s = 35; } else if ( (LA2_1275 == SEMI) ) { s = 505; } else if ( (LA2_1275 == COMMA) ) { s = 506; } else if ( (LA2_1275 == COLON || LA2_1275 == DOLLARD || LA2_1275 == PLUS || LA2_1275 == SLASH) ) { s = 1277; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1275 == LSBRAQUET || LA2_1275 == RSBRAQUET) ) { s = 414; } else if ( (((LA2_1275 >= AND) && (LA2_1275 <= AT))) ) { s = 508; } SEEK(index2_1275); if ( s>=0 ) { return s; } } break; case 808: { ANTLR3_UINT32 LA2_2701; ANTLR3_MARKER index2_2701; LA2_2701 = LA(1); index2_2701 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2701 == EQUAL) ) { s = 3054; } else if ( (LA2_2701 == QMARK) ) { s = 2698; } else if ( (LA2_2701 == COMMON_CHAR || LA2_2701 == HEX_CHAR) ) { s = 2699; } else if ( (LA2_2701 == DIGIT) ) { s = 2700; } else if ( (LA2_2701 == DASH || LA2_2701 == DOT || LA2_2701 == EMARK || LA2_2701 == LPAREN || LA2_2701 == RPAREN || ((LA2_2701 >= SQUOTE) && (LA2_2701 <= USCORE))) ) { s = 2701; } else if ( (LA2_2701 == PERCENT) ) { s = 2702; } else if ( (LA2_2701 == SP) ) { s = 35; } else if ( (LA2_2701 == SEMI) ) { s = 505; } else if ( (LA2_2701 == COMMA) ) { s = 506; } else if ( (LA2_2701 == COLON || LA2_2701 == DOLLARD || LA2_2701 == PLUS || LA2_2701 == SLASH) ) { s = 2703; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2701 == LSBRAQUET || LA2_2701 == RSBRAQUET) ) { s = 1552; } else if ( (((LA2_2701 >= AND) && (LA2_2701 <= AT))) ) { s = 508; } SEEK(index2_2701); if ( s>=0 ) { return s; } } break; case 809: { ANTLR3_UINT32 LA2_3423; ANTLR3_MARKER index2_3423; LA2_3423 = LA(1); index2_3423 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3423 == QMARK) ) { s = 854; } else if ( (LA2_3423 == SP) ) { s = 204; } else if ( (LA2_3423 == SLASH) ) { s = 2827; } else if ( (LA2_3423 == SEMI) ) { s = 3151; } else if ( (LA2_3423 == COMMON_CHAR || LA2_3423 == HEX_CHAR) ) { s = 3419; } else if ( (LA2_3423 == DIGIT) ) { s = 3420; } else if ( (LA2_3423 == DOT) ) { s = 3421; } else if ( (LA2_3423 == PERCENT) ) { s = 3422; } else if ( (LA2_3423 == COLON) ) { s = 3423; } else if ( (LA2_3423 == AT) ) { s = 2879; } else if ( (LA2_3423 == AND) ) { s = 3424; } else if ( (LA2_3423 == EQUAL) ) { s = 3629; } else if ( (LA2_3423 == PLUS) ) { s = 3425; } else if ( (LA2_3423 == DOLLARD) ) { s = 3426; } else if ( (LA2_3423 == COMMA) ) { s = 2884; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3423 == CRLF) ) { s = 205; } else if ( (LA2_3423 == DASH || LA2_3423 == EMARK || LA2_3423 == LPAREN || LA2_3423 == RPAREN || ((LA2_3423 >= SQUOTE) && (LA2_3423 <= USCORE))) ) { s = 3427; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3423 == LSBRAQUET || LA2_3423 == RSBRAQUET) ) { s = 405; } SEEK(index2_3423); if ( s>=0 ) { return s; } } break; case 810: { ANTLR3_UINT32 LA2_3424; ANTLR3_MARKER index2_3424; LA2_3424 = LA(1); index2_3424 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3424 == QMARK) ) { s = 854; } else if ( (LA2_3424 == SP) ) { s = 204; } else if ( (LA2_3424 == SLASH) ) { s = 2827; } else if ( (LA2_3424 == SEMI) ) { s = 3151; } else if ( (LA2_3424 == COMMON_CHAR || LA2_3424 == HEX_CHAR) ) { s = 3419; } else if ( (LA2_3424 == DIGIT) ) { s = 3420; } else if ( (LA2_3424 == DOT) ) { s = 3421; } else if ( (LA2_3424 == PERCENT) ) { s = 3422; } else if ( (LA2_3424 == COLON) ) { s = 3423; } else if ( (LA2_3424 == AT) ) { s = 2879; } else if ( (LA2_3424 == AND) ) { s = 3424; } else if ( (LA2_3424 == EQUAL) ) { s = 3629; } else if ( (LA2_3424 == PLUS) ) { s = 3425; } else if ( (LA2_3424 == DOLLARD) ) { s = 3426; } else if ( (LA2_3424 == COMMA) ) { s = 2884; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3424 == CRLF) ) { s = 205; } else if ( (LA2_3424 == DASH || LA2_3424 == EMARK || LA2_3424 == LPAREN || LA2_3424 == RPAREN || ((LA2_3424 >= SQUOTE) && (LA2_3424 <= USCORE))) ) { s = 3427; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3424 == LSBRAQUET || LA2_3424 == RSBRAQUET) ) { s = 405; } SEEK(index2_3424); if ( s>=0 ) { return s; } } break; case 811: { ANTLR3_UINT32 LA2_3012; ANTLR3_MARKER index2_3012; LA2_3012 = LA(1); index2_3012 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3012 == DIGIT) ) { s = 3315; } else if ( (LA2_3012 == DASH) ) { s = 819; } else if ( (LA2_3012 == COMMON_CHAR || LA2_3012 == HEX_CHAR) ) { s = 817; } else if ( (LA2_3012 == DOT) ) { s = 816; } else if ( (LA2_3012 == COLON) ) { s = 1236; } else if ( (LA2_3012 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3012 == CRLF) ) { s = 205; } else if ( (LA2_3012 == SEMI) ) { s = 1237; } else if ( (LA2_3012 == QMARK) ) { s = 854; } else if ( (LA2_3012 == SLASH) ) { s = 241; } else if ( (LA2_3012 == EMARK || LA2_3012 == LPAREN || LA2_3012 == RPAREN || ((LA2_3012 >= SQUOTE) && (LA2_3012 <= USCORE))) ) { s = 462; } else if ( (LA2_3012 == PERCENT) ) { s = 463; } else if ( (LA2_3012 == AT) ) { s = 464; } else if ( (LA2_3012 == AND) ) { s = 465; } else if ( (LA2_3012 == EQUAL) ) { s = 466; } else if ( (LA2_3012 == PLUS) ) { s = 467; } else if ( (LA2_3012 == DOLLARD) ) { s = 468; } else if ( (LA2_3012 == COMMA) ) { s = 469; } SEEK(index2_3012); if ( s>=0 ) { return s; } } break; case 812: { ANTLR3_UINT32 LA2_1532; ANTLR3_MARKER index2_1532; LA2_1532 = LA(1); index2_1532 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1532 == AT) ) { s = 89; } else if ( (LA2_1532 == COMMON_CHAR || LA2_1532 == HEX_CHAR) ) { s = 699; } else if ( (LA2_1532 == DIGIT) ) { s = 700; } else if ( (LA2_1532 == DOT) ) { s = 701; } else if ( (LA2_1532 == PERCENT) ) { s = 702; } else if ( (LA2_1532 == AND) ) { s = 703; } else if ( (LA2_1532 == EQUAL) ) { s = 704; } else if ( (LA2_1532 == PLUS) ) { s = 705; } else if ( (LA2_1532 == DOLLARD) ) { s = 706; } else if ( (LA2_1532 == COMMA) ) { s = 197; } else if ( (LA2_1532 == QMARK) ) { s = 694; } else if ( (LA2_1532 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1532 == CRLF) ) { s = 205; } else if ( (LA2_1532 == SEMI) ) { s = 693; } else if ( (LA2_1532 == DASH || LA2_1532 == EMARK || LA2_1532 == LPAREN || LA2_1532 == RPAREN || ((LA2_1532 >= SQUOTE) && (LA2_1532 <= USCORE))) ) { s = 707; } else if ( (LA2_1532 == COLON || LA2_1532 == SLASH) ) { s = 708; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1532 == LSBRAQUET || LA2_1532 == RSBRAQUET) ) { s = 405; } SEEK(index2_1532); if ( s>=0 ) { return s; } } break; case 813: { ANTLR3_UINT32 LA2_3582; ANTLR3_MARKER index2_3582; LA2_3582 = LA(1); index2_3582 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3582 == QMARK) ) { s = 1751; } else if ( (LA2_3582 == SP) ) { s = 204; } else if ( (LA2_3582 == SLASH) ) { s = 3031; } else if ( (LA2_3582 == SEMI) ) { s = 3351; } else if ( (LA2_3582 == COMMON_CHAR || LA2_3582 == HEX_CHAR) ) { s = 3581; } else if ( (LA2_3582 == DIGIT) ) { s = 3582; } else if ( (LA2_3582 == DOT) ) { s = 3583; } else if ( (LA2_3582 == PERCENT) ) { s = 3584; } else if ( (LA2_3582 == COLON) ) { s = 3585; } else if ( (LA2_3582 == AT) ) { s = 3043; } else if ( (LA2_3582 == AND) ) { s = 3586; } else if ( (LA2_3582 == EQUAL) ) { s = 3745; } else if ( (LA2_3582 == PLUS) ) { s = 3587; } else if ( (LA2_3582 == DOLLARD) ) { s = 3588; } else if ( (LA2_3582 == COMMA) ) { s = 3048; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3582 == CRLF) ) { s = 205; } else if ( (LA2_3582 == DASH || LA2_3582 == EMARK || LA2_3582 == LPAREN || LA2_3582 == RPAREN || ((LA2_3582 >= SQUOTE) && (LA2_3582 <= USCORE))) ) { s = 3589; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3582 == LSBRAQUET || LA2_3582 == RSBRAQUET) ) { s = 405; } SEEK(index2_3582); if ( s>=0 ) { return s; } } break; case 814: { ANTLR3_UINT32 LA2_694; ANTLR3_MARKER index2_694; LA2_694 = LA(1); index2_694 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_694 == QMARK) ) { s = 724; } else if ( (LA2_694 == COMMON_CHAR || LA2_694 == HEX_CHAR) ) { s = 1062; } else if ( (LA2_694 == DIGIT) ) { s = 1063; } else if ( (LA2_694 == DASH || LA2_694 == DOT || LA2_694 == EMARK || LA2_694 == LPAREN || LA2_694 == RPAREN || ((LA2_694 >= SQUOTE) && (LA2_694 <= USCORE))) ) { s = 1064; } else if ( (LA2_694 == PERCENT) ) { s = 1065; } else if ( (LA2_694 == SP) ) { s = 35; } else if ( (LA2_694 == SEMI) ) { s = 105; } else if ( (LA2_694 == COMMA) ) { s = 106; } else if ( (LA2_694 == COLON || LA2_694 == DOLLARD || LA2_694 == PLUS || LA2_694 == SLASH) ) { s = 725; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_694 == LSBRAQUET || LA2_694 == RSBRAQUET) ) { s = 414; } else if ( (((LA2_694 >= AND) && (LA2_694 <= AT)) || LA2_694 == EQUAL) ) { s = 108; } SEEK(index2_694); if ( s>=0 ) { return s; } } break; case 815: { ANTLR3_UINT32 LA2_3820; ANTLR3_MARKER index2_3820; LA2_3820 = LA(1); index2_3820 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3820 == QMARK) ) { s = 1751; } else if ( (LA2_3820 == SP) ) { s = 204; } else if ( (LA2_3820 == SLASH) ) { s = 3323; } else if ( (LA2_3820 == SEMI) ) { s = 3351; } else if ( (LA2_3820 == COMMON_CHAR || LA2_3820 == HEX_CHAR) ) { s = 3819; } else if ( (LA2_3820 == DIGIT) ) { s = 3820; } else if ( (LA2_3820 == DOT) ) { s = 3821; } else if ( (LA2_3820 == PERCENT) ) { s = 3822; } else if ( (LA2_3820 == COLON) ) { s = 3823; } else if ( (LA2_3820 == AT) ) { s = 3043; } else if ( (LA2_3820 == AND) ) { s = 3824; } else if ( (LA2_3820 == EQUAL) ) { s = 3045; } else if ( (LA2_3820 == PLUS) ) { s = 3825; } else if ( (LA2_3820 == DOLLARD) ) { s = 3826; } else if ( (LA2_3820 == COMMA) ) { s = 3048; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3820 == CRLF) ) { s = 205; } else if ( (LA2_3820 == DASH || LA2_3820 == EMARK || LA2_3820 == LPAREN || LA2_3820 == RPAREN || ((LA2_3820 >= SQUOTE) && (LA2_3820 <= USCORE))) ) { s = 3827; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3820 == LSBRAQUET || LA2_3820 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3820); if ( s>=0 ) { return s; } } break; case 816: { ANTLR3_UINT32 LA2_3425; ANTLR3_MARKER index2_3425; LA2_3425 = LA(1); index2_3425 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3425 == QMARK) ) { s = 854; } else if ( (LA2_3425 == SP) ) { s = 204; } else if ( (LA2_3425 == SLASH) ) { s = 2827; } else if ( (LA2_3425 == SEMI) ) { s = 3151; } else if ( (LA2_3425 == COMMON_CHAR || LA2_3425 == HEX_CHAR) ) { s = 3419; } else if ( (LA2_3425 == DIGIT) ) { s = 3420; } else if ( (LA2_3425 == DOT) ) { s = 3421; } else if ( (LA2_3425 == PERCENT) ) { s = 3422; } else if ( (LA2_3425 == COLON) ) { s = 3423; } else if ( (LA2_3425 == AT) ) { s = 2879; } else if ( (LA2_3425 == AND) ) { s = 3424; } else if ( (LA2_3425 == EQUAL) ) { s = 3629; } else if ( (LA2_3425 == PLUS) ) { s = 3425; } else if ( (LA2_3425 == DOLLARD) ) { s = 3426; } else if ( (LA2_3425 == COMMA) ) { s = 2884; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3425 == CRLF) ) { s = 205; } else if ( (LA2_3425 == DASH || LA2_3425 == EMARK || LA2_3425 == LPAREN || LA2_3425 == RPAREN || ((LA2_3425 >= SQUOTE) && (LA2_3425 <= USCORE))) ) { s = 3427; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3425 == LSBRAQUET || LA2_3425 == RSBRAQUET) ) { s = 405; } SEEK(index2_3425); if ( s>=0 ) { return s; } } break; case 817: { ANTLR3_UINT32 LA2_3674; ANTLR3_MARKER index2_3674; LA2_3674 = LA(1); index2_3674 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3674 == SLASH) ) { s = 2928; } else if ( (LA2_3674 == QMARK) ) { s = 854; } else if ( (LA2_3674 == SP) ) { s = 204; } else if ( (LA2_3674 == SEMI) ) { s = 2927; } else if ( (LA2_3674 == COMMON_CHAR || LA2_3674 == HEX_CHAR) ) { s = 3236; } else if ( (LA2_3674 == DIGIT) ) { s = 3237; } else if ( (LA2_3674 == DOT) ) { s = 3238; } else if ( (LA2_3674 == PERCENT) ) { s = 3239; } else if ( (LA2_3674 == COLON) ) { s = 2954; } else if ( (LA2_3674 == AT) ) { s = 2111; } else if ( (LA2_3674 == AND) ) { s = 2955; } else if ( (LA2_3674 == EQUAL) ) { s = 3264; } else if ( (LA2_3674 == PLUS) ) { s = 3240; } else if ( (LA2_3674 == DOLLARD) ) { s = 2956; } else if ( (LA2_3674 == COMMA) ) { s = 2116; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3674 == CRLF) ) { s = 205; } else if ( (LA2_3674 == DASH || LA2_3674 == EMARK || LA2_3674 == LPAREN || LA2_3674 == RPAREN || ((LA2_3674 >= SQUOTE) && (LA2_3674 <= USCORE))) ) { s = 3241; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3674 == LSBRAQUET || LA2_3674 == RSBRAQUET) ) { s = 405; } SEEK(index2_3674); if ( s>=0 ) { return s; } } break; case 818: { ANTLR3_UINT32 LA2_3426; ANTLR3_MARKER index2_3426; LA2_3426 = LA(1); index2_3426 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3426 == QMARK) ) { s = 854; } else if ( (LA2_3426 == SP) ) { s = 204; } else if ( (LA2_3426 == SLASH) ) { s = 2827; } else if ( (LA2_3426 == SEMI) ) { s = 3151; } else if ( (LA2_3426 == COMMON_CHAR || LA2_3426 == HEX_CHAR) ) { s = 3419; } else if ( (LA2_3426 == DIGIT) ) { s = 3420; } else if ( (LA2_3426 == DOT) ) { s = 3421; } else if ( (LA2_3426 == PERCENT) ) { s = 3422; } else if ( (LA2_3426 == COLON) ) { s = 3423; } else if ( (LA2_3426 == AT) ) { s = 2879; } else if ( (LA2_3426 == AND) ) { s = 3424; } else if ( (LA2_3426 == EQUAL) ) { s = 3629; } else if ( (LA2_3426 == PLUS) ) { s = 3425; } else if ( (LA2_3426 == DOLLARD) ) { s = 3426; } else if ( (LA2_3426 == COMMA) ) { s = 2884; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3426 == CRLF) ) { s = 205; } else if ( (LA2_3426 == DASH || LA2_3426 == EMARK || LA2_3426 == LPAREN || LA2_3426 == RPAREN || ((LA2_3426 >= SQUOTE) && (LA2_3426 <= USCORE))) ) { s = 3427; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3426 == LSBRAQUET || LA2_3426 == RSBRAQUET) ) { s = 405; } SEEK(index2_3426); if ( s>=0 ) { return s; } } break; case 819: { ANTLR3_UINT32 LA2_3742; ANTLR3_MARKER index2_3742; LA2_3742 = LA(1); index2_3742 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3742 == SLASH) ) { s = 3323; } else if ( (LA2_3742 == QMARK) ) { s = 1751; } else if ( (LA2_3742 == SP) ) { s = 204; } else if ( (LA2_3742 == SEMI) ) { s = 3030; } else if ( (LA2_3742 == COMMON_CHAR || LA2_3742 == HEX_CHAR) ) { s = 3734; } else if ( (LA2_3742 == DIGIT) ) { s = 3735; } else if ( (LA2_3742 == DOT) ) { s = 3736; } else if ( (LA2_3742 == PERCENT) ) { s = 3737; } else if ( (LA2_3742 == COLON) ) { s = 3738; } else if ( (LA2_3742 == AT) ) { s = 2673; } else if ( (LA2_3742 == AND) ) { s = 3739; } else if ( (LA2_3742 == EQUAL) ) { s = 2675; } else if ( (LA2_3742 == PLUS) ) { s = 3740; } else if ( (LA2_3742 == DOLLARD) ) { s = 3741; } else if ( (LA2_3742 == COMMA) ) { s = 2678; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3742 == CRLF) ) { s = 205; } else if ( (LA2_3742 == DASH || LA2_3742 == EMARK || LA2_3742 == LPAREN || LA2_3742 == RPAREN || ((LA2_3742 >= SQUOTE) && (LA2_3742 <= USCORE))) ) { s = 3742; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3742 == LSBRAQUET || LA2_3742 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3742); if ( s>=0 ) { return s; } } break; case 820: { ANTLR3_UINT32 LA2_874; ANTLR3_MARKER index2_874; LA2_874 = LA(1); index2_874 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_874 == COMMON_CHAR || LA2_874 == HEX_CHAR) ) { s = 874; } else if ( (LA2_874 == DIGIT) ) { s = 875; } else if ( (LA2_874 == DASH) ) { s = 876; } else if ( (LA2_874 == DOT) ) { s = 1297; } else if ( (LA2_874 == COLON) ) { s = 1298; } else if ( (LA2_874 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_874 == CRLF) ) { s = 205; } else if ( (LA2_874 == SEMI) ) { s = 853; } else if ( (LA2_874 == QMARK) ) { s = 854; } else if ( (LA2_874 == SLASH) ) { s = 241; } else if ( (LA2_874 == EMARK || LA2_874 == LPAREN || LA2_874 == RPAREN || ((LA2_874 >= SQUOTE) && (LA2_874 <= USCORE))) ) { s = 494; } else if ( (LA2_874 == PERCENT) ) { s = 495; } else if ( (LA2_874 == AT) ) { s = 497; } else if ( (LA2_874 == AND) ) { s = 498; } else if ( (LA2_874 == EQUAL) ) { s = 499; } else if ( (LA2_874 == PLUS) ) { s = 500; } else if ( (LA2_874 == DOLLARD) ) { s = 501; } else if ( (LA2_874 == COMMA) ) { s = 502; } SEEK(index2_874); if ( s>=0 ) { return s; } } break; case 821: { ANTLR3_UINT32 LA2_724; ANTLR3_MARKER index2_724; LA2_724 = LA(1); index2_724 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_724 == EQUAL) ) { s = 1105; } else if ( (LA2_724 == QMARK) ) { s = 724; } else if ( (LA2_724 == COMMON_CHAR || LA2_724 == HEX_CHAR) ) { s = 1062; } else if ( (LA2_724 == DIGIT) ) { s = 1063; } else if ( (LA2_724 == DASH || LA2_724 == DOT || LA2_724 == EMARK || LA2_724 == LPAREN || LA2_724 == RPAREN || ((LA2_724 >= SQUOTE) && (LA2_724 <= USCORE))) ) { s = 1064; } else if ( (LA2_724 == PERCENT) ) { s = 1065; } else if ( (LA2_724 == SP) ) { s = 35; } else if ( (LA2_724 == SEMI) ) { s = 105; } else if ( (LA2_724 == COMMA) ) { s = 106; } else if ( (LA2_724 == COLON || LA2_724 == DOLLARD || LA2_724 == PLUS || LA2_724 == SLASH) ) { s = 725; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_724 == LSBRAQUET || LA2_724 == RSBRAQUET) ) { s = 414; } else if ( (((LA2_724 >= AND) && (LA2_724 <= AT))) ) { s = 108; } SEEK(index2_724); if ( s>=0 ) { return s; } } break; case 822: { ANTLR3_UINT32 LA2_1550; ANTLR3_MARKER index2_1550; LA2_1550 = LA(1); index2_1550 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1550 == EQUAL) ) { s = 1988; } else if ( (LA2_1550 == QMARK) ) { s = 1550; } else if ( (LA2_1550 == COMMON_CHAR || LA2_1550 == HEX_CHAR) ) { s = 1989; } else if ( (LA2_1550 == DIGIT) ) { s = 1990; } else if ( (LA2_1550 == DASH || LA2_1550 == DOT || LA2_1550 == EMARK || LA2_1550 == LPAREN || LA2_1550 == RPAREN || ((LA2_1550 >= SQUOTE) && (LA2_1550 <= USCORE))) ) { s = 1991; } else if ( (LA2_1550 == PERCENT) ) { s = 1992; } else if ( (LA2_1550 == SP) ) { s = 35; } else if ( (LA2_1550 == SEMI) ) { s = 105; } else if ( (LA2_1550 == COMMA) ) { s = 106; } else if ( (LA2_1550 == COLON || LA2_1550 == DOLLARD || LA2_1550 == PLUS || LA2_1550 == SLASH) ) { s = 1551; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1550 == LSBRAQUET || LA2_1550 == RSBRAQUET) ) { s = 1552; } else if ( (((LA2_1550 >= AND) && (LA2_1550 <= AT))) ) { s = 108; } SEEK(index2_1550); if ( s>=0 ) { return s; } } break; case 823: { ANTLR3_UINT32 LA2_3173; ANTLR3_MARKER index2_3173; LA2_3173 = LA(1); index2_3173 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3173 == SLASH) ) { s = 3465; } else if ( (LA2_3173 == QMARK) ) { s = 854; } else if ( (LA2_3173 == SP) ) { s = 1585; } else if ( (LA2_3173 == CRLF) ) { s = 1588; } else if ( (LA2_3173 == SEMI) ) { s = 2028; } else if ( (LA2_3173 == COMMON_CHAR || LA2_3173 == HEX_CHAR) ) { s = 3173; } else if ( (LA2_3173 == DIGIT) ) { s = 3174; } else if ( (LA2_3173 == DOT) ) { s = 3175; } else if ( (LA2_3173 == PERCENT) ) { s = 3176; } else if ( (LA2_3173 == PLUS) ) { s = 3177; } else if ( (LA2_3173 == BQUOTE) ) { s = 2092; } else if ( (LA2_3173 == DASH || LA2_3173 == EMARK || LA2_3173 == LPAREN || LA2_3173 == RPAREN || ((LA2_3173 >= SQUOTE) && (LA2_3173 <= USCORE))) ) { s = 3178; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3173 == AND || LA2_3173 == COLON || LA2_3173 == DOLLARD || LA2_3173 == LSBRAQUET || LA2_3173 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3173); if ( s>=0 ) { return s; } } break; case 824: { ANTLR3_UINT32 LA2_1981; ANTLR3_MARKER index2_1981; LA2_1981 = LA(1); index2_1981 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1981 == AT) ) { s = 89; } else if ( (LA2_1981 == COMMON_CHAR || LA2_1981 == HEX_CHAR) ) { s = 1071; } else if ( (LA2_1981 == DIGIT) ) { s = 1072; } else if ( (LA2_1981 == DOT) ) { s = 1073; } else if ( (LA2_1981 == PERCENT) ) { s = 1074; } else if ( (LA2_1981 == AND) ) { s = 1075; } else if ( (LA2_1981 == EQUAL) ) { s = 194; } else if ( (LA2_1981 == PLUS) ) { s = 1076; } else if ( (LA2_1981 == DOLLARD) ) { s = 1077; } else if ( (LA2_1981 == COMMA) ) { s = 197; } else if ( (LA2_1981 == QMARK) ) { s = 694; } else if ( (LA2_1981 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1981 == CRLF) ) { s = 205; } else if ( (LA2_1981 == SEMI) ) { s = 693; } else if ( (LA2_1981 == DASH || LA2_1981 == EMARK || LA2_1981 == LPAREN || LA2_1981 == RPAREN || ((LA2_1981 >= SQUOTE) && (LA2_1981 <= USCORE))) ) { s = 1078; } else if ( (LA2_1981 == COLON || LA2_1981 == SLASH) ) { s = 1079; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1981 == LSBRAQUET || LA2_1981 == RSBRAQUET) ) { s = 1080; } SEEK(index2_1981); if ( s>=0 ) { return s; } } break; case 825: { ANTLR3_UINT32 LA2_3161; ANTLR3_MARKER index2_3161; LA2_3161 = LA(1); index2_3161 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3161 == DOT) ) { s = 3433; } else if ( (LA2_3161 == SEMI) ) { s = 3170; } else if ( (LA2_3161 == SLASH) ) { s = 3171; } else if ( (LA2_3161 == QMARK) ) { s = 854; } else if ( (LA2_3161 == SP) ) { s = 204; } else if ( (LA2_3161 == COMMON_CHAR || LA2_3161 == HEX_CHAR) ) { s = 3162; } else if ( (LA2_3161 == DIGIT) ) { s = 3179; } else if ( (LA2_3161 == DASH || LA2_3161 == EMARK || LA2_3161 == LPAREN || LA2_3161 == RPAREN || ((LA2_3161 >= SQUOTE) && (LA2_3161 <= USCORE))) ) { s = 3172; } else if ( (LA2_3161 == PERCENT) ) { s = 3164; } else if ( (LA2_3161 == COLON) ) { s = 3165; } else if ( (LA2_3161 == AT) ) { s = 1710; } else if ( (LA2_3161 == AND) ) { s = 3166; } else if ( (LA2_3161 == EQUAL) ) { s = 3167; } else if ( (LA2_3161 == PLUS) ) { s = 3168; } else if ( (LA2_3161 == DOLLARD) ) { s = 3169; } else if ( (LA2_3161 == COMMA) ) { s = 1715; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3161 == CRLF) ) { s = 205; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3161 == LSBRAQUET || LA2_3161 == RSBRAQUET) ) { s = 405; } SEEK(index2_3161); if ( s>=0 ) { return s; } } break; case 826: { ANTLR3_UINT32 LA2_2472; ANTLR3_MARKER index2_2472; LA2_2472 = LA(1); index2_2472 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2472 == SEMI) ) { s = 2477; } else if ( (LA2_2472 == QMARK) ) { s = 854; } else if ( (LA2_2472 == SP) ) { s = 204; } else if ( (LA2_2472 == SLASH) ) { s = 2009; } else if ( (LA2_2472 == COMMON_CHAR || LA2_2472 == HEX_CHAR) ) { s = 2468; } else if ( (LA2_2472 == DIGIT) ) { s = 2469; } else if ( (LA2_2472 == DOT) ) { s = 2470; } else if ( (LA2_2472 == PERCENT) ) { s = 2471; } else if ( (LA2_2472 == COLON) ) { s = 2472; } else if ( (LA2_2472 == AT) ) { s = 1134; } else if ( (LA2_2472 == AND) ) { s = 2473; } else if ( (LA2_2472 == EQUAL) ) { s = 2474; } else if ( (LA2_2472 == PLUS) ) { s = 2475; } else if ( (LA2_2472 == DOLLARD) ) { s = 2476; } else if ( (LA2_2472 == COMMA) ) { s = 1139; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2472 == CRLF) ) { s = 205; } else if ( (LA2_2472 == DASH || LA2_2472 == EMARK || LA2_2472 == LPAREN || LA2_2472 == RPAREN || ((LA2_2472 >= SQUOTE) && (LA2_2472 <= USCORE))) ) { s = 2478; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2472 == LSBRAQUET || LA2_2472 == RSBRAQUET) ) { s = 405; } SEEK(index2_2472); if ( s>=0 ) { return s; } } break; case 827: { ANTLR3_UINT32 LA2_3229; ANTLR3_MARKER index2_3229; LA2_3229 = LA(1); index2_3229 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3229 == SEMI) ) { s = 2927; } else if ( (LA2_3229 == SLASH) ) { s = 3226; } else if ( (LA2_3229 == QMARK) ) { s = 854; } else if ( (LA2_3229 == SP) ) { s = 204; } else if ( (LA2_3229 == COMMON_CHAR || LA2_3229 == HEX_CHAR) ) { s = 3227; } else if ( (LA2_3229 == DIGIT) ) { s = 3228; } else if ( (LA2_3229 == DOT) ) { s = 3229; } else if ( (LA2_3229 == PERCENT) ) { s = 3230; } else if ( (LA2_3229 == COLON) ) { s = 3231; } else if ( (LA2_3229 == AT) ) { s = 1667; } else if ( (LA2_3229 == AND) ) { s = 3232; } else if ( (LA2_3229 == EQUAL) ) { s = 1669; } else if ( (LA2_3229 == PLUS) ) { s = 3233; } else if ( (LA2_3229 == DOLLARD) ) { s = 3234; } else if ( (LA2_3229 == COMMA) ) { s = 1672; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3229 == CRLF) ) { s = 205; } else if ( (LA2_3229 == DASH || LA2_3229 == EMARK || LA2_3229 == LPAREN || LA2_3229 == RPAREN || ((LA2_3229 >= SQUOTE) && (LA2_3229 <= USCORE))) ) { s = 3235; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3229 == LSBRAQUET || LA2_3229 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3229); if ( s>=0 ) { return s; } } break; case 828: { ANTLR3_UINT32 LA2_2473; ANTLR3_MARKER index2_2473; LA2_2473 = LA(1); index2_2473 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2473 == SEMI) ) { s = 2477; } else if ( (LA2_2473 == QMARK) ) { s = 854; } else if ( (LA2_2473 == SP) ) { s = 204; } else if ( (LA2_2473 == SLASH) ) { s = 2009; } else if ( (LA2_2473 == COMMON_CHAR || LA2_2473 == HEX_CHAR) ) { s = 2468; } else if ( (LA2_2473 == DIGIT) ) { s = 2469; } else if ( (LA2_2473 == DOT) ) { s = 2470; } else if ( (LA2_2473 == PERCENT) ) { s = 2471; } else if ( (LA2_2473 == COLON) ) { s = 2472; } else if ( (LA2_2473 == AT) ) { s = 1134; } else if ( (LA2_2473 == AND) ) { s = 2473; } else if ( (LA2_2473 == EQUAL) ) { s = 2474; } else if ( (LA2_2473 == PLUS) ) { s = 2475; } else if ( (LA2_2473 == DOLLARD) ) { s = 2476; } else if ( (LA2_2473 == COMMA) ) { s = 1139; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2473 == CRLF) ) { s = 205; } else if ( (LA2_2473 == DASH || LA2_2473 == EMARK || LA2_2473 == LPAREN || LA2_2473 == RPAREN || ((LA2_2473 >= SQUOTE) && (LA2_2473 <= USCORE))) ) { s = 2478; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2473 == LSBRAQUET || LA2_2473 == RSBRAQUET) ) { s = 405; } SEEK(index2_2473); if ( s>=0 ) { return s; } } break; case 829: { ANTLR3_UINT32 LA2_3244; ANTLR3_MARKER index2_3244; LA2_3244 = LA(1); index2_3244 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3244 == SEMI) ) { s = 3251; } else if ( (LA2_3244 == QMARK) ) { s = 854; } else if ( (LA2_3244 == SP) ) { s = 204; } else if ( (LA2_3244 == SLASH) ) { s = 2928; } else if ( (LA2_3244 == COMMON_CHAR || LA2_3244 == HEX_CHAR) ) { s = 3242; } else if ( (LA2_3244 == DIGIT) ) { s = 3243; } else if ( (LA2_3244 == DOT) ) { s = 3244; } else if ( (LA2_3244 == PERCENT) ) { s = 3245; } else if ( (LA2_3244 == COLON) ) { s = 3246; } else if ( (LA2_3244 == AT) ) { s = 2122; } else if ( (LA2_3244 == AND) ) { s = 3247; } else if ( (LA2_3244 == EQUAL) ) { s = 3248; } else if ( (LA2_3244 == PLUS) ) { s = 3249; } else if ( (LA2_3244 == DOLLARD) ) { s = 3250; } else if ( (LA2_3244 == COMMA) ) { s = 2127; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3244 == CRLF) ) { s = 205; } else if ( (LA2_3244 == DASH || LA2_3244 == EMARK || LA2_3244 == LPAREN || LA2_3244 == RPAREN || ((LA2_3244 >= SQUOTE) && (LA2_3244 <= USCORE))) ) { s = 3252; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3244 == LSBRAQUET || LA2_3244 == RSBRAQUET) ) { s = 405; } SEEK(index2_3244); if ( s>=0 ) { return s; } } break; case 830: { ANTLR3_UINT32 LA2_15; ANTLR3_MARKER index2_15; LA2_15 = LA(1); index2_15 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_15 == COMMON_CHAR || LA2_15 == HEX_CHAR) ) { s = 36; } else if ( (LA2_15 == DIGIT) ) { s = 37; } else if ( (LA2_15 == DASH || LA2_15 == DOT || LA2_15 == EMARK || LA2_15 == LPAREN || LA2_15 == RPAREN || ((LA2_15 >= SQUOTE) && (LA2_15 <= USCORE))) ) { s = 38; } else if ( (LA2_15 == PERCENT) ) { s = 39; } else if ( (LA2_15 == COMMA) ) { s = 40; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_15 == LSBRAQUET) ) { s = 41; } else if ( (LA2_15 == SEMI) ) { s = 42; } else if ( (LA2_15 == QMARK) ) { s = 43; } else if ( (LA2_15 == AND) ) { s = 44; } else if ( (LA2_15 == COLON) ) { s = 45; } else if ( (LA2_15 == AT) ) { s = 46; } else if ( (LA2_15 == EQUAL) ) { s = 47; } else if ( (LA2_15 == PLUS) ) { s = 48; } else if ( (LA2_15 == DOLLARD) ) { s = 49; } else if ( (LA2_15 == SLASH) ) { s = 50; } SEEK(index2_15); if ( s>=0 ) { return s; } } break; case 831: { ANTLR3_UINT32 LA2_2476; ANTLR3_MARKER index2_2476; LA2_2476 = LA(1); index2_2476 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2476 == SEMI) ) { s = 2477; } else if ( (LA2_2476 == QMARK) ) { s = 854; } else if ( (LA2_2476 == SP) ) { s = 204; } else if ( (LA2_2476 == SLASH) ) { s = 2009; } else if ( (LA2_2476 == COMMON_CHAR || LA2_2476 == HEX_CHAR) ) { s = 2468; } else if ( (LA2_2476 == DIGIT) ) { s = 2469; } else if ( (LA2_2476 == DOT) ) { s = 2470; } else if ( (LA2_2476 == PERCENT) ) { s = 2471; } else if ( (LA2_2476 == COLON) ) { s = 2472; } else if ( (LA2_2476 == AT) ) { s = 1134; } else if ( (LA2_2476 == AND) ) { s = 2473; } else if ( (LA2_2476 == EQUAL) ) { s = 2474; } else if ( (LA2_2476 == PLUS) ) { s = 2475; } else if ( (LA2_2476 == DOLLARD) ) { s = 2476; } else if ( (LA2_2476 == COMMA) ) { s = 1139; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2476 == CRLF) ) { s = 205; } else if ( (LA2_2476 == DASH || LA2_2476 == EMARK || LA2_2476 == LPAREN || LA2_2476 == RPAREN || ((LA2_2476 >= SQUOTE) && (LA2_2476 <= USCORE))) ) { s = 2478; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2476 == LSBRAQUET || LA2_2476 == RSBRAQUET) ) { s = 405; } SEEK(index2_2476); if ( s>=0 ) { return s; } } break; case 832: { ANTLR3_UINT32 LA2_3503; ANTLR3_MARKER index2_3503; LA2_3503 = LA(1); index2_3503 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3503 == QMARK) ) { s = 854; } else if ( (LA2_3503 == SP) ) { s = 204; } else if ( (LA2_3503 == SLASH) ) { s = 2928; } else if ( (LA2_3503 == SEMI) ) { s = 3251; } else if ( (LA2_3503 == COMMON_CHAR || LA2_3503 == HEX_CHAR) ) { s = 3503; } else if ( (LA2_3503 == DIGIT) ) { s = 3504; } else if ( (LA2_3503 == DOT) ) { s = 3505; } else if ( (LA2_3503 == PERCENT) ) { s = 3506; } else if ( (LA2_3503 == COLON) ) { s = 3291; } else if ( (LA2_3503 == AT) ) { s = 2578; } else if ( (LA2_3503 == AND) ) { s = 3292; } else if ( (LA2_3503 == EQUAL) ) { s = 3550; } else if ( (LA2_3503 == PLUS) ) { s = 3507; } else if ( (LA2_3503 == DOLLARD) ) { s = 3293; } else if ( (LA2_3503 == COMMA) ) { s = 2583; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3503 == CRLF) ) { s = 205; } else if ( (LA2_3503 == DASH || LA2_3503 == EMARK || LA2_3503 == LPAREN || LA2_3503 == RPAREN || ((LA2_3503 >= SQUOTE) && (LA2_3503 <= USCORE))) ) { s = 3508; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3503 == LSBRAQUET || LA2_3503 == RSBRAQUET) ) { s = 405; } SEEK(index2_3503); if ( s>=0 ) { return s; } } break; case 833: { ANTLR3_UINT32 LA2_2430; ANTLR3_MARKER index2_2430; LA2_2430 = LA(1); index2_2430 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2430 == AT) ) { s = 89; } else if ( (LA2_2430 == COMMON_CHAR || LA2_2430 == HEX_CHAR) ) { s = 2429; } else if ( (LA2_2430 == DIGIT) ) { s = 2430; } else if ( (LA2_2430 == DASH || LA2_2430 == DOT || LA2_2430 == EMARK || LA2_2430 == LPAREN || LA2_2430 == RPAREN || ((LA2_2430 >= SQUOTE) && (LA2_2430 <= USCORE))) ) { s = 2431; } else if ( (LA2_2430 == PERCENT) ) { s = 2432; } else if ( (LA2_2430 == AND) ) { s = 1099; } else if ( (LA2_2430 == EQUAL) ) { s = 194; } else if ( (LA2_2430 == PLUS) ) { s = 2433; } else if ( (LA2_2430 == DOLLARD) ) { s = 2434; } else if ( (LA2_2430 == COMMA) ) { s = 197; } else if ( (LA2_2430 == SP) ) { s = 35; } else if ( (LA2_2430 == QMARK) ) { s = 2435; } else if ( (LA2_2430 == SEMI) ) { s = 105; } else if ( (LA2_2430 == COLON || LA2_2430 == SLASH) ) { s = 2436; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2430 == LSBRAQUET || LA2_2430 == RSBRAQUET) ) { s = 2437; } SEEK(index2_2430); if ( s>=0 ) { return s; } } break; case 834: { ANTLR3_UINT32 LA2_2475; ANTLR3_MARKER index2_2475; LA2_2475 = LA(1); index2_2475 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2475 == SEMI) ) { s = 2477; } else if ( (LA2_2475 == QMARK) ) { s = 854; } else if ( (LA2_2475 == SP) ) { s = 204; } else if ( (LA2_2475 == SLASH) ) { s = 2009; } else if ( (LA2_2475 == COMMON_CHAR || LA2_2475 == HEX_CHAR) ) { s = 2468; } else if ( (LA2_2475 == DIGIT) ) { s = 2469; } else if ( (LA2_2475 == DOT) ) { s = 2470; } else if ( (LA2_2475 == PERCENT) ) { s = 2471; } else if ( (LA2_2475 == COLON) ) { s = 2472; } else if ( (LA2_2475 == AT) ) { s = 1134; } else if ( (LA2_2475 == AND) ) { s = 2473; } else if ( (LA2_2475 == EQUAL) ) { s = 2474; } else if ( (LA2_2475 == PLUS) ) { s = 2475; } else if ( (LA2_2475 == DOLLARD) ) { s = 2476; } else if ( (LA2_2475 == COMMA) ) { s = 1139; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2475 == CRLF) ) { s = 205; } else if ( (LA2_2475 == DASH || LA2_2475 == EMARK || LA2_2475 == LPAREN || LA2_2475 == RPAREN || ((LA2_2475 >= SQUOTE) && (LA2_2475 <= USCORE))) ) { s = 2478; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2475 == LSBRAQUET || LA2_2475 == RSBRAQUET) ) { s = 405; } SEEK(index2_2475); if ( s>=0 ) { return s; } } break; case 835: { ANTLR3_UINT32 LA2_3802; ANTLR3_MARKER index2_3802; LA2_3802 = LA(1); index2_3802 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3802 == SLASH) ) { s = 3226; } else if ( (LA2_3802 == QMARK) ) { s = 854; } else if ( (LA2_3802 == SP) ) { s = 204; } else if ( (LA2_3802 == SEMI) ) { s = 2927; } else if ( (LA2_3802 == COMMON_CHAR || LA2_3802 == HEX_CHAR) ) { s = 3534; } else if ( (LA2_3802 == DIGIT) ) { s = 3535; } else if ( (LA2_3802 == DOT) ) { s = 3536; } else if ( (LA2_3802 == PERCENT) ) { s = 3537; } else if ( (LA2_3802 == COLON) ) { s = 3517; } else if ( (LA2_3802 == AT) ) { s = 2111; } else if ( (LA2_3802 == AND) ) { s = 3518; } else if ( (LA2_3802 == EQUAL) ) { s = 2113; } else if ( (LA2_3802 == PLUS) ) { s = 3538; } else if ( (LA2_3802 == DOLLARD) ) { s = 3519; } else if ( (LA2_3802 == COMMA) ) { s = 2116; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3802 == CRLF) ) { s = 205; } else if ( (LA2_3802 == DASH || LA2_3802 == EMARK || LA2_3802 == LPAREN || LA2_3802 == RPAREN || ((LA2_3802 >= SQUOTE) && (LA2_3802 <= USCORE))) ) { s = 3539; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3802 == LSBRAQUET || LA2_3802 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3802); if ( s>=0 ) { return s; } } break; case 836: { ANTLR3_UINT32 LA2_3527; ANTLR3_MARKER index2_3527; LA2_3527 = LA(1); index2_3527 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3527 == SEMI) ) { s = 2969; } else if ( (LA2_3527 == SLASH) ) { s = 3226; } else if ( (LA2_3527 == QMARK) ) { s = 242; } else if ( (LA2_3527 == SP) ) { s = 35; } else if ( (LA2_3527 == COMMON_CHAR || LA2_3527 == HEX_CHAR) ) { s = 3682; } else if ( (LA2_3527 == DIGIT) ) { s = 3683; } else if ( (LA2_3527 == DOT) ) { s = 3684; } else if ( (LA2_3527 == PERCENT) ) { s = 3685; } else if ( (LA2_3527 == COLON) ) { s = 3686; } else if ( (LA2_3527 == AT) ) { s = 2963; } else if ( (LA2_3527 == AND) ) { s = 3687; } else if ( (LA2_3527 == EQUAL) ) { s = 2965; } else if ( (LA2_3527 == PLUS) ) { s = 3688; } else if ( (LA2_3527 == DOLLARD) ) { s = 3689; } else if ( (LA2_3527 == COMMA) ) { s = 2968; } else if ( (LA2_3527 == DASH || LA2_3527 == EMARK || LA2_3527 == LPAREN || LA2_3527 == RPAREN || ((LA2_3527 >= SQUOTE) && (LA2_3527 <= USCORE))) ) { s = 3690; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3527 == LSBRAQUET || LA2_3527 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3527); if ( s>=0 ) { return s; } } break; case 837: { ANTLR3_UINT32 LA2_3351; ANTLR3_MARKER index2_3351; LA2_3351 = LA(1); index2_3351 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3351 == COMMON_CHAR || LA2_3351 == HEX_CHAR) ) { s = 3581; } else if ( (LA2_3351 == DIGIT) ) { s = 3582; } else if ( (LA2_3351 == DOT) ) { s = 3583; } else if ( (LA2_3351 == PERCENT) ) { s = 3584; } else if ( (LA2_3351 == COLON) ) { s = 3585; } else if ( (LA2_3351 == AT) ) { s = 3043; } else if ( (LA2_3351 == AND) ) { s = 3586; } else if ( (LA2_3351 == EQUAL) ) { s = 3045; } else if ( (LA2_3351 == PLUS) ) { s = 3587; } else if ( (LA2_3351 == DOLLARD) ) { s = 3588; } else if ( (LA2_3351 == COMMA) ) { s = 3048; } else if ( (LA2_3351 == QMARK) ) { s = 1751; } else if ( (LA2_3351 == SP) ) { s = 402; } else if ( (LA2_3351 == SLASH) ) { s = 3031; } else if ( (LA2_3351 == SEMI) ) { s = 3351; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3351 == CRLF) ) { s = 403; } else if ( (LA2_3351 == DASH || LA2_3351 == EMARK || LA2_3351 == LPAREN || LA2_3351 == RPAREN || ((LA2_3351 >= SQUOTE) && (LA2_3351 <= USCORE))) ) { s = 3589; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3351 == LSBRAQUET || LA2_3351 == RSBRAQUET) ) { s = 405; } SEEK(index2_3351); if ( s>=0 ) { return s; } } break; case 838: { ANTLR3_UINT32 LA2_1079; ANTLR3_MARKER index2_1079; LA2_1079 = LA(1); index2_1079 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1079 == QMARK) ) { s = 694; } else if ( (LA2_1079 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1079 == CRLF) ) { s = 205; } else if ( (LA2_1079 == SEMI) ) { s = 693; } else if ( (LA2_1079 == DOT) ) { s = 1534; } else if ( (LA2_1079 == COMMON_CHAR || LA2_1079 == HEX_CHAR) ) { s = 1535; } else if ( (LA2_1079 == DIGIT) ) { s = 1536; } else if ( (LA2_1079 == AND || LA2_1079 == COLON || LA2_1079 == DOLLARD || LA2_1079 == PLUS || LA2_1079 == SLASH) ) { s = 1079; } else if ( (LA2_1079 == DASH || LA2_1079 == EMARK || LA2_1079 == LPAREN || LA2_1079 == RPAREN || ((LA2_1079 >= SQUOTE) && (LA2_1079 <= USCORE))) ) { s = 1537; } else if ( (LA2_1079 == PERCENT) ) { s = 1538; } else if ( (LA2_1079 == COMMA) ) { s = 106; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1079 == LSBRAQUET || LA2_1079 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_1079 == AT || LA2_1079 == EQUAL) ) { s = 108; } SEEK(index2_1079); if ( s>=0 ) { return s; } } break; case 839: { ANTLR3_UINT32 LA2_2455; ANTLR3_MARKER index2_2455; LA2_2455 = LA(1); index2_2455 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2455 == COMMON_CHAR || LA2_2455 == HEX_CHAR) ) { s = 2817; } else if ( (LA2_2455 == DIGIT) ) { s = 2818; } else if ( (LA2_2455 == DOT) ) { s = 2819; } else if ( (LA2_2455 == PERCENT) ) { s = 2820; } else if ( (LA2_2455 == COLON) ) { s = 2821; } else if ( (LA2_2455 == AT) ) { s = 2019; } else if ( (LA2_2455 == AND) ) { s = 2822; } else if ( (LA2_2455 == EQUAL) ) { s = 2823; } else if ( (LA2_2455 == PLUS) ) { s = 2824; } else if ( (LA2_2455 == DOLLARD) ) { s = 2825; } else if ( (LA2_2455 == COMMA) ) { s = 2024; } else if ( (LA2_2455 == SEMI) ) { s = 2826; } else if ( (LA2_2455 == QMARK) ) { s = 854; } else if ( (LA2_2455 == SP) ) { s = 204; } else if ( (LA2_2455 == SLASH) ) { s = 2827; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2455 == CRLF) ) { s = 205; } else if ( (LA2_2455 == DASH || LA2_2455 == EMARK || LA2_2455 == LPAREN || LA2_2455 == RPAREN || ((LA2_2455 >= SQUOTE) && (LA2_2455 <= USCORE))) ) { s = 2828; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2455 == LSBRAQUET || LA2_2455 == RSBRAQUET) ) { s = 405; } SEEK(index2_2455); if ( s>=0 ) { return s; } } break; case 840: { ANTLR3_UINT32 LA2_2446; ANTLR3_MARKER index2_2446; LA2_2446 = LA(1); index2_2446 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2446 == COLON) ) { s = 2445; } else if ( (LA2_2446 == AT) ) { s = 89; } else if ( (LA2_2446 == COMMON_CHAR || LA2_2446 == HEX_CHAR) ) { s = 2446; } else if ( (LA2_2446 == DIGIT) ) { s = 2447; } else if ( (LA2_2446 == DASH || LA2_2446 == DOT || LA2_2446 == EMARK || LA2_2446 == LPAREN || LA2_2446 == RPAREN || ((LA2_2446 >= SQUOTE) && (LA2_2446 <= USCORE))) ) { s = 2448; } else if ( (LA2_2446 == PERCENT) ) { s = 2449; } else if ( (LA2_2446 == AND) ) { s = 1112; } else if ( (LA2_2446 == SP) ) { s = 35; } else if ( (LA2_2446 == QMARK) ) { s = 2450; } else if ( (LA2_2446 == SEMI) ) { s = 94; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2446 == LSBRAQUET || LA2_2446 == RSBRAQUET) ) { s = 2437; } else if ( (LA2_2446 == COMMA) ) { s = 97; } else if ( (LA2_2446 == EQUAL) ) { s = 99; } else if ( (LA2_2446 == DOLLARD || LA2_2446 == PLUS || LA2_2446 == SLASH) ) { s = 2451; } SEEK(index2_2446); if ( s>=0 ) { return s; } } break; case 841: { ANTLR3_UINT32 LA2_3531; ANTLR3_MARKER index2_3531; LA2_3531 = LA(1); index2_3531 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3531 == SEMI) ) { s = 3530; } else if ( (LA2_3531 == SLASH) ) { s = 2928; } else if ( (LA2_3531 == QMARK) ) { s = 854; } else if ( (LA2_3531 == SP) ) { s = 204; } else if ( (LA2_3531 == COMMON_CHAR || LA2_3531 == HEX_CHAR) ) { s = 3521; } else if ( (LA2_3531 == DIGIT) ) { s = 3522; } else if ( (LA2_3531 == DOT) ) { s = 3523; } else if ( (LA2_3531 == PERCENT) ) { s = 3524; } else if ( (LA2_3531 == COLON) ) { s = 3525; } else if ( (LA2_3531 == AT) ) { s = 2963; } else if ( (LA2_3531 == AND) ) { s = 3526; } else if ( (LA2_3531 == EQUAL) ) { s = 3527; } else if ( (LA2_3531 == PLUS) ) { s = 3528; } else if ( (LA2_3531 == DOLLARD) ) { s = 3529; } else if ( (LA2_3531 == COMMA) ) { s = 2968; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3531 == CRLF) ) { s = 205; } else if ( (LA2_3531 == DASH || LA2_3531 == EMARK || LA2_3531 == LPAREN || LA2_3531 == RPAREN || ((LA2_3531 >= SQUOTE) && (LA2_3531 <= USCORE))) ) { s = 3531; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3531 == LSBRAQUET || LA2_3531 == RSBRAQUET) ) { s = 405; } SEEK(index2_3531); if ( s>=0 ) { return s; } } break; case 842: { ANTLR3_UINT32 LA2_3360; ANTLR3_MARKER index2_3360; LA2_3360 = LA(1); index2_3360 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3360 == SP) ) { s = 35; } else if ( (LA2_3360 == AND) ) { s = 2268; } else if ( (LA2_3360 == QMARK) ) { s = 3359; } else if ( (LA2_3360 == COMMON_CHAR || LA2_3360 == HEX_CHAR) ) { s = 3360; } else if ( (LA2_3360 == DIGIT) ) { s = 3361; } else if ( (LA2_3360 == DASH || LA2_3360 == DOT || LA2_3360 == EMARK || LA2_3360 == LPAREN || LA2_3360 == RPAREN || ((LA2_3360 >= SQUOTE) && (LA2_3360 <= USCORE))) ) { s = 3362; } else if ( (LA2_3360 == PERCENT) ) { s = 3363; } else if ( (LA2_3360 == SEMI) ) { s = 505; } else if ( (LA2_3360 == COMMA) ) { s = 506; } else if ( (LA2_3360 == COLON || LA2_3360 == DOLLARD || LA2_3360 == PLUS || LA2_3360 == SLASH) ) { s = 3364; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3360 == LSBRAQUET || LA2_3360 == RSBRAQUET) ) { s = 2437; } else if ( (LA2_3360 == AT || LA2_3360 == EQUAL) ) { s = 508; } SEEK(index2_3360); if ( s>=0 ) { return s; } } break; case 843: { ANTLR3_UINT32 LA2_3761; ANTLR3_MARKER index2_3761; LA2_3761 = LA(1); index2_3761 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3761 == QMARK) ) { s = 854; } else if ( (LA2_3761 == SP) ) { s = 204; } else if ( (LA2_3761 == SLASH) ) { s = 3123; } else if ( (LA2_3761 == SEMI) ) { s = 3151; } else if ( (LA2_3761 == COMMON_CHAR || LA2_3761 == HEX_CHAR) ) { s = 3761; } else if ( (LA2_3761 == DIGIT) ) { s = 3762; } else if ( (LA2_3761 == DOT) ) { s = 3763; } else if ( (LA2_3761 == PERCENT) ) { s = 3764; } else if ( (LA2_3761 == COLON) ) { s = 3765; } else if ( (LA2_3761 == AT) ) { s = 2879; } else if ( (LA2_3761 == AND) ) { s = 3766; } else if ( (LA2_3761 == EQUAL) ) { s = 2881; } else if ( (LA2_3761 == PLUS) ) { s = 3767; } else if ( (LA2_3761 == DOLLARD) ) { s = 3768; } else if ( (LA2_3761 == COMMA) ) { s = 2884; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3761 == CRLF) ) { s = 205; } else if ( (LA2_3761 == DASH || LA2_3761 == EMARK || LA2_3761 == LPAREN || LA2_3761 == RPAREN || ((LA2_3761 >= SQUOTE) && (LA2_3761 <= USCORE))) ) { s = 3769; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3761 == LSBRAQUET || LA2_3761 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3761); if ( s>=0 ) { return s; } } break; case 844: { ANTLR3_UINT32 LA2_709; ANTLR3_MARKER index2_709; LA2_709 = LA(1); index2_709 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_709 == COLON) ) { s = 1082; } else if ( (LA2_709 == AT) ) { s = 89; } else if ( (LA2_709 == COMMON_CHAR || LA2_709 == HEX_CHAR) ) { s = 1083; } else if ( (LA2_709 == DIGIT) ) { s = 1084; } else if ( (LA2_709 == DOT) ) { s = 1085; } else if ( (LA2_709 == PERCENT) ) { s = 1086; } else if ( (LA2_709 == AND || LA2_709 == DOLLARD || LA2_709 == PLUS || LA2_709 == SLASH) ) { s = 1087; } else if ( (LA2_709 == DASH || LA2_709 == EMARK || LA2_709 == LPAREN || LA2_709 == RPAREN || ((LA2_709 >= SQUOTE) && (LA2_709 <= USCORE))) ) { s = 1088; } else if ( (LA2_709 == SEMI) ) { s = 94; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_709 == LSBRAQUET || LA2_709 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_709 == SP) ) { s = 35; } else if ( (LA2_709 == COMMA) ) { s = 97; } else if ( (LA2_709 == QMARK) ) { s = 98; } else if ( (LA2_709 == EQUAL) ) { s = 99; } SEEK(index2_709); if ( s>=0 ) { return s; } } break; case 845: { ANTLR3_UINT32 LA2_3222; ANTLR3_MARKER index2_3222; LA2_3222 = LA(1); index2_3222 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3222 == COMMON_CHAR || LA2_3222 == HEX_CHAR) ) { s = 3227; } else if ( (LA2_3222 == DIGIT) ) { s = 3228; } else if ( (LA2_3222 == DOT) ) { s = 3229; } else if ( (LA2_3222 == PERCENT) ) { s = 3230; } else if ( (LA2_3222 == COLON) ) { s = 3231; } else if ( (LA2_3222 == AT) ) { s = 1667; } else if ( (LA2_3222 == AND) ) { s = 3232; } else if ( (LA2_3222 == EQUAL) ) { s = 1669; } else if ( (LA2_3222 == PLUS) ) { s = 3233; } else if ( (LA2_3222 == DOLLARD) ) { s = 3234; } else if ( (LA2_3222 == COMMA) ) { s = 1672; } else if ( (LA2_3222 == SEMI) ) { s = 2927; } else if ( (LA2_3222 == SLASH) ) { s = 3226; } else if ( (LA2_3222 == QMARK) ) { s = 854; } else if ( (LA2_3222 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3222 == CRLF) ) { s = 205; } else if ( (LA2_3222 == DASH || LA2_3222 == EMARK || LA2_3222 == LPAREN || LA2_3222 == RPAREN || ((LA2_3222 >= SQUOTE) && (LA2_3222 <= USCORE))) ) { s = 3235; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3222 == LSBRAQUET || LA2_3222 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3222); if ( s>=0 ) { return s; } } break; case 846: { ANTLR3_UINT32 LA2_3589; ANTLR3_MARKER index2_3589; LA2_3589 = LA(1); index2_3589 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3589 == QMARK) ) { s = 1751; } else if ( (LA2_3589 == SP) ) { s = 204; } else if ( (LA2_3589 == SLASH) ) { s = 3031; } else if ( (LA2_3589 == SEMI) ) { s = 3351; } else if ( (LA2_3589 == COMMON_CHAR || LA2_3589 == HEX_CHAR) ) { s = 3581; } else if ( (LA2_3589 == DIGIT) ) { s = 3582; } else if ( (LA2_3589 == DOT) ) { s = 3583; } else if ( (LA2_3589 == PERCENT) ) { s = 3584; } else if ( (LA2_3589 == COLON) ) { s = 3585; } else if ( (LA2_3589 == AT) ) { s = 3043; } else if ( (LA2_3589 == AND) ) { s = 3586; } else if ( (LA2_3589 == EQUAL) ) { s = 3745; } else if ( (LA2_3589 == PLUS) ) { s = 3587; } else if ( (LA2_3589 == DOLLARD) ) { s = 3588; } else if ( (LA2_3589 == COMMA) ) { s = 3048; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3589 == CRLF) ) { s = 205; } else if ( (LA2_3589 == DASH || LA2_3589 == EMARK || LA2_3589 == LPAREN || LA2_3589 == RPAREN || ((LA2_3589 >= SQUOTE) && (LA2_3589 <= USCORE))) ) { s = 3589; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3589 == LSBRAQUET || LA2_3589 == RSBRAQUET) ) { s = 405; } SEEK(index2_3589); if ( s>=0 ) { return s; } } break; case 847: { ANTLR3_UINT32 LA2_2654; ANTLR3_MARKER index2_2654; LA2_2654 = LA(1); index2_2654 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2654 == QMARK) ) { s = 854; } else if ( (LA2_2654 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2654 == CRLF) ) { s = 205; } else if ( (LA2_2654 == SEMI) ) { s = 1237; } else if ( (LA2_2654 == DOT) ) { s = 2648; } else if ( (LA2_2654 == COMMON_CHAR || LA2_2654 == HEX_CHAR) ) { s = 2649; } else if ( (LA2_2654 == DIGIT) ) { s = 2650; } else if ( (LA2_2654 == SLASH) ) { s = 2245; } else if ( (LA2_2654 == DASH || LA2_2654 == EMARK || LA2_2654 == LPAREN || LA2_2654 == RPAREN || ((LA2_2654 >= SQUOTE) && (LA2_2654 <= USCORE))) ) { s = 2651; } else if ( (LA2_2654 == PERCENT) ) { s = 2652; } else if ( (LA2_2654 == COLON) ) { s = 2653; } else if ( (LA2_2654 == AND) ) { s = 2654; } else if ( (LA2_2654 == AT) ) { s = 810; } else if ( (LA2_2654 == PLUS) ) { s = 2655; } else if ( (LA2_2654 == EQUAL) ) { s = 812; } else if ( (LA2_2654 == DOLLARD) ) { s = 2656; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2654 == LSBRAQUET || LA2_2654 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_2654 == COMMA) ) { s = 815; } SEEK(index2_2654); if ( s>=0 ) { return s; } } break; case 848: { ANTLR3_UINT32 LA2_2653; ANTLR3_MARKER index2_2653; LA2_2653 = LA(1); index2_2653 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2653 == QMARK) ) { s = 854; } else if ( (LA2_2653 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2653 == CRLF) ) { s = 205; } else if ( (LA2_2653 == SEMI) ) { s = 1237; } else if ( (LA2_2653 == DOT) ) { s = 2648; } else if ( (LA2_2653 == COMMON_CHAR || LA2_2653 == HEX_CHAR) ) { s = 2649; } else if ( (LA2_2653 == DIGIT) ) { s = 2650; } else if ( (LA2_2653 == SLASH) ) { s = 2245; } else if ( (LA2_2653 == DASH || LA2_2653 == EMARK || LA2_2653 == LPAREN || LA2_2653 == RPAREN || ((LA2_2653 >= SQUOTE) && (LA2_2653 <= USCORE))) ) { s = 2651; } else if ( (LA2_2653 == PERCENT) ) { s = 2652; } else if ( (LA2_2653 == COLON) ) { s = 2653; } else if ( (LA2_2653 == AND) ) { s = 2654; } else if ( (LA2_2653 == AT) ) { s = 810; } else if ( (LA2_2653 == PLUS) ) { s = 2655; } else if ( (LA2_2653 == EQUAL) ) { s = 812; } else if ( (LA2_2653 == DOLLARD) ) { s = 2656; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2653 == LSBRAQUET || LA2_2653 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_2653 == COMMA) ) { s = 815; } SEEK(index2_2653); if ( s>=0 ) { return s; } } break; case 849: { ANTLR3_UINT32 LA2_2655; ANTLR3_MARKER index2_2655; LA2_2655 = LA(1); index2_2655 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2655 == QMARK) ) { s = 854; } else if ( (LA2_2655 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2655 == CRLF) ) { s = 205; } else if ( (LA2_2655 == SEMI) ) { s = 1237; } else if ( (LA2_2655 == DOT) ) { s = 2648; } else if ( (LA2_2655 == COMMON_CHAR || LA2_2655 == HEX_CHAR) ) { s = 2649; } else if ( (LA2_2655 == DIGIT) ) { s = 2650; } else if ( (LA2_2655 == SLASH) ) { s = 2245; } else if ( (LA2_2655 == DASH || LA2_2655 == EMARK || LA2_2655 == LPAREN || LA2_2655 == RPAREN || ((LA2_2655 >= SQUOTE) && (LA2_2655 <= USCORE))) ) { s = 2651; } else if ( (LA2_2655 == PERCENT) ) { s = 2652; } else if ( (LA2_2655 == COLON) ) { s = 2653; } else if ( (LA2_2655 == AND) ) { s = 2654; } else if ( (LA2_2655 == AT) ) { s = 810; } else if ( (LA2_2655 == PLUS) ) { s = 2655; } else if ( (LA2_2655 == EQUAL) ) { s = 812; } else if ( (LA2_2655 == DOLLARD) ) { s = 2656; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2655 == LSBRAQUET || LA2_2655 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_2655 == COMMA) ) { s = 815; } SEEK(index2_2655); if ( s>=0 ) { return s; } } break; case 850: { ANTLR3_UINT32 LA2_2656; ANTLR3_MARKER index2_2656; LA2_2656 = LA(1); index2_2656 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2656 == QMARK) ) { s = 854; } else if ( (LA2_2656 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2656 == CRLF) ) { s = 205; } else if ( (LA2_2656 == SEMI) ) { s = 1237; } else if ( (LA2_2656 == DOT) ) { s = 2648; } else if ( (LA2_2656 == COMMON_CHAR || LA2_2656 == HEX_CHAR) ) { s = 2649; } else if ( (LA2_2656 == DIGIT) ) { s = 2650; } else if ( (LA2_2656 == SLASH) ) { s = 2245; } else if ( (LA2_2656 == DASH || LA2_2656 == EMARK || LA2_2656 == LPAREN || LA2_2656 == RPAREN || ((LA2_2656 >= SQUOTE) && (LA2_2656 <= USCORE))) ) { s = 2651; } else if ( (LA2_2656 == PERCENT) ) { s = 2652; } else if ( (LA2_2656 == COLON) ) { s = 2653; } else if ( (LA2_2656 == AND) ) { s = 2654; } else if ( (LA2_2656 == AT) ) { s = 810; } else if ( (LA2_2656 == PLUS) ) { s = 2655; } else if ( (LA2_2656 == EQUAL) ) { s = 812; } else if ( (LA2_2656 == DOLLARD) ) { s = 2656; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2656 == LSBRAQUET || LA2_2656 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_2656 == COMMA) ) { s = 815; } SEEK(index2_2656); if ( s>=0 ) { return s; } } break; case 851: { ANTLR3_UINT32 LA2_3243; ANTLR3_MARKER index2_3243; LA2_3243 = LA(1); index2_3243 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3243 == SEMI) ) { s = 3251; } else if ( (LA2_3243 == QMARK) ) { s = 854; } else if ( (LA2_3243 == SP) ) { s = 204; } else if ( (LA2_3243 == SLASH) ) { s = 2928; } else if ( (LA2_3243 == COMMON_CHAR || LA2_3243 == HEX_CHAR) ) { s = 3242; } else if ( (LA2_3243 == DIGIT) ) { s = 3243; } else if ( (LA2_3243 == DOT) ) { s = 3244; } else if ( (LA2_3243 == PERCENT) ) { s = 3245; } else if ( (LA2_3243 == COLON) ) { s = 3246; } else if ( (LA2_3243 == AT) ) { s = 2122; } else if ( (LA2_3243 == AND) ) { s = 3247; } else if ( (LA2_3243 == EQUAL) ) { s = 3248; } else if ( (LA2_3243 == PLUS) ) { s = 3249; } else if ( (LA2_3243 == DOLLARD) ) { s = 3250; } else if ( (LA2_3243 == COMMA) ) { s = 2127; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3243 == CRLF) ) { s = 205; } else if ( (LA2_3243 == DASH || LA2_3243 == EMARK || LA2_3243 == LPAREN || LA2_3243 == RPAREN || ((LA2_3243 >= SQUOTE) && (LA2_3243 <= USCORE))) ) { s = 3252; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3243 == LSBRAQUET || LA2_3243 == RSBRAQUET) ) { s = 405; } SEEK(index2_3243); if ( s>=0 ) { return s; } } break; case 852: { ANTLR3_UINT32 LA2_3578; ANTLR3_MARKER index2_3578; LA2_3578 = LA(1); index2_3578 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3578 == SLASH) ) { s = 3323; } else if ( (LA2_3578 == QMARK) ) { s = 2237; } else if ( (LA2_3578 == SP) ) { s = 35; } else if ( (LA2_3578 == SEMI) ) { s = 2235; } else if ( (LA2_3578 == COMMON_CHAR || LA2_3578 == HEX_CHAR) ) { s = 3734; } else if ( (LA2_3578 == DIGIT) ) { s = 3735; } else if ( (LA2_3578 == DOT) ) { s = 3736; } else if ( (LA2_3578 == PERCENT) ) { s = 3737; } else if ( (LA2_3578 == COLON) ) { s = 3738; } else if ( (LA2_3578 == AT) ) { s = 2673; } else if ( (LA2_3578 == AND) ) { s = 3739; } else if ( (LA2_3578 == EQUAL) ) { s = 2675; } else if ( (LA2_3578 == PLUS) ) { s = 3740; } else if ( (LA2_3578 == DOLLARD) ) { s = 3741; } else if ( (LA2_3578 == COMMA) ) { s = 2678; } else if ( (LA2_3578 == DASH || LA2_3578 == EMARK || LA2_3578 == LPAREN || LA2_3578 == RPAREN || ((LA2_3578 >= SQUOTE) && (LA2_3578 <= USCORE))) ) { s = 3742; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3578 == LSBRAQUET || LA2_3578 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3578); if ( s>=0 ) { return s; } } break; case 853: { ANTLR3_UINT32 LA2_3492; ANTLR3_MARKER index2_3492; LA2_3492 = LA(1); index2_3492 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3492 == SEMI) ) { s = 3251; } else if ( (LA2_3492 == QMARK) ) { s = 854; } else if ( (LA2_3492 == SP) ) { s = 204; } else if ( (LA2_3492 == SLASH) ) { s = 3226; } else if ( (LA2_3492 == COMMON_CHAR || LA2_3492 == HEX_CHAR) ) { s = 3491; } else if ( (LA2_3492 == DIGIT) ) { s = 3492; } else if ( (LA2_3492 == DOT) ) { s = 3493; } else if ( (LA2_3492 == PERCENT) ) { s = 3494; } else if ( (LA2_3492 == COLON) ) { s = 3495; } else if ( (LA2_3492 == AT) ) { s = 2122; } else if ( (LA2_3492 == AND) ) { s = 3496; } else if ( (LA2_3492 == EQUAL) ) { s = 2124; } else if ( (LA2_3492 == PLUS) ) { s = 3497; } else if ( (LA2_3492 == DOLLARD) ) { s = 3498; } else if ( (LA2_3492 == COMMA) ) { s = 2127; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3492 == CRLF) ) { s = 205; } else if ( (LA2_3492 == DASH || LA2_3492 == EMARK || LA2_3492 == LPAREN || LA2_3492 == RPAREN || ((LA2_3492 >= SQUOTE) && (LA2_3492 <= USCORE))) ) { s = 3499; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3492 == LSBRAQUET || LA2_3492 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3492); if ( s>=0 ) { return s; } } break; case 854: { ANTLR3_UINT32 LA2_2431; ANTLR3_MARKER index2_2431; LA2_2431 = LA(1); index2_2431 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2431 == AT) ) { s = 89; } else if ( (LA2_2431 == COMMON_CHAR || LA2_2431 == HEX_CHAR) ) { s = 2429; } else if ( (LA2_2431 == DIGIT) ) { s = 2430; } else if ( (LA2_2431 == DASH || LA2_2431 == DOT || LA2_2431 == EMARK || LA2_2431 == LPAREN || LA2_2431 == RPAREN || ((LA2_2431 >= SQUOTE) && (LA2_2431 <= USCORE))) ) { s = 2431; } else if ( (LA2_2431 == PERCENT) ) { s = 2432; } else if ( (LA2_2431 == AND) ) { s = 1099; } else if ( (LA2_2431 == EQUAL) ) { s = 194; } else if ( (LA2_2431 == PLUS) ) { s = 2433; } else if ( (LA2_2431 == DOLLARD) ) { s = 2434; } else if ( (LA2_2431 == COMMA) ) { s = 197; } else if ( (LA2_2431 == SP) ) { s = 35; } else if ( (LA2_2431 == QMARK) ) { s = 2435; } else if ( (LA2_2431 == SEMI) ) { s = 105; } else if ( (LA2_2431 == COLON || LA2_2431 == SLASH) ) { s = 2436; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2431 == LSBRAQUET || LA2_2431 == RSBRAQUET) ) { s = 2437; } SEEK(index2_2431); if ( s>=0 ) { return s; } } break; case 855: { ANTLR3_UINT32 LA2_3235; ANTLR3_MARKER index2_3235; LA2_3235 = LA(1); index2_3235 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3235 == SEMI) ) { s = 2927; } else if ( (LA2_3235 == SLASH) ) { s = 3226; } else if ( (LA2_3235 == QMARK) ) { s = 854; } else if ( (LA2_3235 == SP) ) { s = 204; } else if ( (LA2_3235 == COMMON_CHAR || LA2_3235 == HEX_CHAR) ) { s = 3227; } else if ( (LA2_3235 == DIGIT) ) { s = 3228; } else if ( (LA2_3235 == DOT) ) { s = 3229; } else if ( (LA2_3235 == PERCENT) ) { s = 3230; } else if ( (LA2_3235 == COLON) ) { s = 3231; } else if ( (LA2_3235 == AT) ) { s = 1667; } else if ( (LA2_3235 == AND) ) { s = 3232; } else if ( (LA2_3235 == EQUAL) ) { s = 1669; } else if ( (LA2_3235 == PLUS) ) { s = 3233; } else if ( (LA2_3235 == DOLLARD) ) { s = 3234; } else if ( (LA2_3235 == COMMA) ) { s = 1672; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3235 == CRLF) ) { s = 205; } else if ( (LA2_3235 == DASH || LA2_3235 == EMARK || LA2_3235 == LPAREN || LA2_3235 == RPAREN || ((LA2_3235 >= SQUOTE) && (LA2_3235 <= USCORE))) ) { s = 3235; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3235 == LSBRAQUET || LA2_3235 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3235); if ( s>=0 ) { return s; } } break; case 856: { ANTLR3_UINT32 LA2_3421; ANTLR3_MARKER index2_3421; LA2_3421 = LA(1); index2_3421 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3421 == QMARK) ) { s = 854; } else if ( (LA2_3421 == SP) ) { s = 204; } else if ( (LA2_3421 == SLASH) ) { s = 2827; } else if ( (LA2_3421 == SEMI) ) { s = 3151; } else if ( (LA2_3421 == COMMON_CHAR || LA2_3421 == HEX_CHAR) ) { s = 3419; } else if ( (LA2_3421 == DIGIT) ) { s = 3420; } else if ( (LA2_3421 == DOT) ) { s = 3421; } else if ( (LA2_3421 == PERCENT) ) { s = 3422; } else if ( (LA2_3421 == COLON) ) { s = 3423; } else if ( (LA2_3421 == AT) ) { s = 2879; } else if ( (LA2_3421 == AND) ) { s = 3424; } else if ( (LA2_3421 == EQUAL) ) { s = 3629; } else if ( (LA2_3421 == PLUS) ) { s = 3425; } else if ( (LA2_3421 == DOLLARD) ) { s = 3426; } else if ( (LA2_3421 == COMMA) ) { s = 2884; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3421 == CRLF) ) { s = 205; } else if ( (LA2_3421 == DASH || LA2_3421 == EMARK || LA2_3421 == LPAREN || LA2_3421 == RPAREN || ((LA2_3421 >= SQUOTE) && (LA2_3421 <= USCORE))) ) { s = 3427; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3421 == LSBRAQUET || LA2_3421 == RSBRAQUET) ) { s = 405; } SEEK(index2_3421); if ( s>=0 ) { return s; } } break; case 857: { ANTLR3_UINT32 LA2_3620; ANTLR3_MARKER index2_3620; LA2_3620 = LA(1); index2_3620 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3620 == QMARK) ) { s = 854; } else if ( (LA2_3620 == SP) ) { s = 204; } else if ( (LA2_3620 == SLASH) ) { s = 3123; } else if ( (LA2_3620 == SEMI) ) { s = 2826; } else if ( (LA2_3620 == COMMON_CHAR || LA2_3620 == HEX_CHAR) ) { s = 3618; } else if ( (LA2_3620 == DIGIT) ) { s = 3619; } else if ( (LA2_3620 == DOT) ) { s = 3620; } else if ( (LA2_3620 == PERCENT) ) { s = 3621; } else if ( (LA2_3620 == COLON) ) { s = 3622; } else if ( (LA2_3620 == AT) ) { s = 2493; } else if ( (LA2_3620 == AND) ) { s = 3623; } else if ( (LA2_3620 == EQUAL) ) { s = 2495; } else if ( (LA2_3620 == PLUS) ) { s = 3624; } else if ( (LA2_3620 == DOLLARD) ) { s = 3625; } else if ( (LA2_3620 == COMMA) ) { s = 2498; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3620 == CRLF) ) { s = 205; } else if ( (LA2_3620 == DASH || LA2_3620 == EMARK || LA2_3620 == LPAREN || LA2_3620 == RPAREN || ((LA2_3620 >= SQUOTE) && (LA2_3620 <= USCORE))) ) { s = 3626; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3620 == LSBRAQUET || LA2_3620 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3620); if ( s>=0 ) { return s; } } break; case 858: { ANTLR3_UINT32 LA2_3568; ANTLR3_MARKER index2_3568; LA2_3568 = LA(1); index2_3568 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3568 == SEMI) ) { s = 3351; } else if ( (LA2_3568 == QMARK) ) { s = 1751; } else if ( (LA2_3568 == SP) ) { s = 204; } else if ( (LA2_3568 == SLASH) ) { s = 3323; } else if ( (LA2_3568 == COMMON_CHAR || LA2_3568 == HEX_CHAR) ) { s = 3568; } else if ( (LA2_3568 == DIGIT) ) { s = 3569; } else if ( (LA2_3568 == DOT) ) { s = 3570; } else if ( (LA2_3568 == PERCENT) ) { s = 3571; } else if ( (LA2_3568 == COLON) ) { s = 3572; } else if ( (LA2_3568 == AT) ) { s = 2684; } else if ( (LA2_3568 == AND) ) { s = 3573; } else if ( (LA2_3568 == EQUAL) ) { s = 2686; } else if ( (LA2_3568 == PLUS) ) { s = 3574; } else if ( (LA2_3568 == DOLLARD) ) { s = 3575; } else if ( (LA2_3568 == COMMA) ) { s = 2689; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3568 == CRLF) ) { s = 205; } else if ( (LA2_3568 == DASH || LA2_3568 == EMARK || LA2_3568 == LPAREN || LA2_3568 == RPAREN || ((LA2_3568 >= SQUOTE) && (LA2_3568 <= USCORE))) ) { s = 3576; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3568 == LSBRAQUET || LA2_3568 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3568); if ( s>=0 ) { return s; } } break; case 859: { ANTLR3_UINT32 LA2_1556; ANTLR3_MARKER index2_1556; LA2_1556 = LA(1); index2_1556 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1556 == AND) ) { s = 1553; } else if ( (LA2_1556 == SP) ) { s = 35; } else if ( (LA2_1556 == QMARK) ) { s = 1102; } else if ( (LA2_1556 == COMMON_CHAR || LA2_1556 == HEX_CHAR) ) { s = 1554; } else if ( (LA2_1556 == DIGIT) ) { s = 1555; } else if ( (LA2_1556 == DASH || LA2_1556 == DOT || LA2_1556 == EMARK || LA2_1556 == LPAREN || LA2_1556 == RPAREN || ((LA2_1556 >= SQUOTE) && (LA2_1556 <= USCORE))) ) { s = 1556; } else if ( (LA2_1556 == PERCENT) ) { s = 1557; } else if ( (LA2_1556 == SEMI) ) { s = 105; } else if ( (LA2_1556 == COMMA) ) { s = 106; } else if ( (LA2_1556 == COLON || LA2_1556 == DOLLARD || LA2_1556 == PLUS || LA2_1556 == SLASH) ) { s = 1103; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1556 == LSBRAQUET || LA2_1556 == RSBRAQUET) ) { s = 1104; } else if ( (LA2_1556 == AT || LA2_1556 == EQUAL) ) { s = 108; } SEEK(index2_1556); if ( s>=0 ) { return s; } } break; case 860: { ANTLR3_UINT32 LA2_3762; ANTLR3_MARKER index2_3762; LA2_3762 = LA(1); index2_3762 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3762 == QMARK) ) { s = 854; } else if ( (LA2_3762 == SP) ) { s = 204; } else if ( (LA2_3762 == SLASH) ) { s = 3123; } else if ( (LA2_3762 == SEMI) ) { s = 3151; } else if ( (LA2_3762 == COMMON_CHAR || LA2_3762 == HEX_CHAR) ) { s = 3761; } else if ( (LA2_3762 == DIGIT) ) { s = 3762; } else if ( (LA2_3762 == DOT) ) { s = 3763; } else if ( (LA2_3762 == PERCENT) ) { s = 3764; } else if ( (LA2_3762 == COLON) ) { s = 3765; } else if ( (LA2_3762 == AT) ) { s = 2879; } else if ( (LA2_3762 == AND) ) { s = 3766; } else if ( (LA2_3762 == EQUAL) ) { s = 2881; } else if ( (LA2_3762 == PLUS) ) { s = 3767; } else if ( (LA2_3762 == DOLLARD) ) { s = 3768; } else if ( (LA2_3762 == COMMA) ) { s = 2884; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3762 == CRLF) ) { s = 205; } else if ( (LA2_3762 == DASH || LA2_3762 == EMARK || LA2_3762 == LPAREN || LA2_3762 == RPAREN || ((LA2_3762 >= SQUOTE) && (LA2_3762 <= USCORE))) ) { s = 3769; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3762 == LSBRAQUET || LA2_3762 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3762); if ( s>=0 ) { return s; } } break; case 861: { ANTLR3_UINT32 LA2_3405; ANTLR3_MARKER index2_3405; LA2_3405 = LA(1); index2_3405 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3405 == SEMI) ) { s = 2826; } else if ( (LA2_3405 == QMARK) ) { s = 854; } else if ( (LA2_3405 == SP) ) { s = 204; } else if ( (LA2_3405 == SLASH) ) { s = 2827; } else if ( (LA2_3405 == COMMON_CHAR || LA2_3405 == HEX_CHAR) ) { s = 2817; } else if ( (LA2_3405 == DIGIT) ) { s = 2818; } else if ( (LA2_3405 == DOT) ) { s = 2819; } else if ( (LA2_3405 == PERCENT) ) { s = 2820; } else if ( (LA2_3405 == COLON) ) { s = 2821; } else if ( (LA2_3405 == AT) ) { s = 2019; } else if ( (LA2_3405 == AND) ) { s = 2822; } else if ( (LA2_3405 == EQUAL) ) { s = 2823; } else if ( (LA2_3405 == PLUS) ) { s = 2824; } else if ( (LA2_3405 == DOLLARD) ) { s = 2825; } else if ( (LA2_3405 == COMMA) ) { s = 2024; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3405 == CRLF) ) { s = 205; } else if ( (LA2_3405 == DASH || LA2_3405 == EMARK || LA2_3405 == LPAREN || LA2_3405 == RPAREN || ((LA2_3405 >= SQUOTE) && (LA2_3405 <= USCORE))) ) { s = 2828; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3405 == LSBRAQUET || LA2_3405 == RSBRAQUET) ) { s = 405; } SEEK(index2_3405); if ( s>=0 ) { return s; } } break; case 862: { ANTLR3_UINT32 LA2_3420; ANTLR3_MARKER index2_3420; LA2_3420 = LA(1); index2_3420 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3420 == QMARK) ) { s = 854; } else if ( (LA2_3420 == SP) ) { s = 204; } else if ( (LA2_3420 == SLASH) ) { s = 2827; } else if ( (LA2_3420 == SEMI) ) { s = 3151; } else if ( (LA2_3420 == COMMON_CHAR || LA2_3420 == HEX_CHAR) ) { s = 3419; } else if ( (LA2_3420 == DIGIT) ) { s = 3420; } else if ( (LA2_3420 == DOT) ) { s = 3421; } else if ( (LA2_3420 == PERCENT) ) { s = 3422; } else if ( (LA2_3420 == COLON) ) { s = 3423; } else if ( (LA2_3420 == AT) ) { s = 2879; } else if ( (LA2_3420 == AND) ) { s = 3424; } else if ( (LA2_3420 == EQUAL) ) { s = 3629; } else if ( (LA2_3420 == PLUS) ) { s = 3425; } else if ( (LA2_3420 == DOLLARD) ) { s = 3426; } else if ( (LA2_3420 == COMMA) ) { s = 2884; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3420 == CRLF) ) { s = 205; } else if ( (LA2_3420 == DASH || LA2_3420 == EMARK || LA2_3420 == LPAREN || LA2_3420 == RPAREN || ((LA2_3420 >= SQUOTE) && (LA2_3420 <= USCORE))) ) { s = 3427; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3420 == LSBRAQUET || LA2_3420 == RSBRAQUET) ) { s = 405; } SEEK(index2_3420); if ( s>=0 ) { return s; } } break; case 863: { ANTLR3_UINT32 LA2_1073; ANTLR3_MARKER index2_1073; LA2_1073 = LA(1); index2_1073 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1073 == AT) ) { s = 89; } else if ( (LA2_1073 == COMMON_CHAR || LA2_1073 == HEX_CHAR) ) { s = 1071; } else if ( (LA2_1073 == DIGIT) ) { s = 1072; } else if ( (LA2_1073 == DOT) ) { s = 1073; } else if ( (LA2_1073 == PERCENT) ) { s = 1074; } else if ( (LA2_1073 == AND) ) { s = 1075; } else if ( (LA2_1073 == EQUAL) ) { s = 194; } else if ( (LA2_1073 == PLUS) ) { s = 1076; } else if ( (LA2_1073 == DOLLARD) ) { s = 1077; } else if ( (LA2_1073 == COMMA) ) { s = 197; } else if ( (LA2_1073 == QMARK) ) { s = 694; } else if ( (LA2_1073 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1073 == CRLF) ) { s = 205; } else if ( (LA2_1073 == SEMI) ) { s = 693; } else if ( (LA2_1073 == DASH || LA2_1073 == EMARK || LA2_1073 == LPAREN || LA2_1073 == RPAREN || ((LA2_1073 >= SQUOTE) && (LA2_1073 <= USCORE))) ) { s = 1078; } else if ( (LA2_1073 == COLON || LA2_1073 == SLASH) ) { s = 1079; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1073 == LSBRAQUET || LA2_1073 == RSBRAQUET) ) { s = 1080; } SEEK(index2_1073); if ( s>=0 ) { return s; } } break; case 864: { ANTLR3_UINT32 LA2_2005; ANTLR3_MARKER index2_2005; LA2_2005 = LA(1); index2_2005 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2005 == SLASH) ) { s = 2009; } else if ( (LA2_2005 == QMARK) ) { s = 854; } else if ( (LA2_2005 == SP) ) { s = 204; } else if ( (LA2_2005 == SEMI) ) { s = 2011; } else if ( (LA2_2005 == COMMON_CHAR || LA2_2005 == HEX_CHAR) ) { s = 2461; } else if ( (LA2_2005 == DIGIT) ) { s = 2462; } else if ( (LA2_2005 == DOT) ) { s = 2463; } else if ( (LA2_2005 == PERCENT) ) { s = 2464; } else if ( (LA2_2005 == COLON) ) { s = 2005; } else if ( (LA2_2005 == AT) ) { s = 1123; } else if ( (LA2_2005 == AND) ) { s = 2006; } else if ( (LA2_2005 == EQUAL) ) { s = 2465; } else if ( (LA2_2005 == PLUS) ) { s = 2466; } else if ( (LA2_2005 == DOLLARD) ) { s = 2008; } else if ( (LA2_2005 == COMMA) ) { s = 1128; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2005 == CRLF) ) { s = 205; } else if ( (LA2_2005 == DASH || LA2_2005 == EMARK || LA2_2005 == LPAREN || LA2_2005 == RPAREN || ((LA2_2005 >= SQUOTE) && (LA2_2005 <= USCORE))) ) { s = 2467; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2005 == LSBRAQUET || LA2_2005 == RSBRAQUET) ) { s = 405; } SEEK(index2_2005); if ( s>=0 ) { return s; } } break; case 865: { ANTLR3_UINT32 LA2_2006; ANTLR3_MARKER index2_2006; LA2_2006 = LA(1); index2_2006 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2006 == SLASH) ) { s = 2009; } else if ( (LA2_2006 == QMARK) ) { s = 854; } else if ( (LA2_2006 == SP) ) { s = 204; } else if ( (LA2_2006 == SEMI) ) { s = 2011; } else if ( (LA2_2006 == COMMON_CHAR || LA2_2006 == HEX_CHAR) ) { s = 2461; } else if ( (LA2_2006 == DIGIT) ) { s = 2462; } else if ( (LA2_2006 == DOT) ) { s = 2463; } else if ( (LA2_2006 == PERCENT) ) { s = 2464; } else if ( (LA2_2006 == COLON) ) { s = 2005; } else if ( (LA2_2006 == AT) ) { s = 1123; } else if ( (LA2_2006 == AND) ) { s = 2006; } else if ( (LA2_2006 == EQUAL) ) { s = 2465; } else if ( (LA2_2006 == PLUS) ) { s = 2466; } else if ( (LA2_2006 == DOLLARD) ) { s = 2008; } else if ( (LA2_2006 == COMMA) ) { s = 1128; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2006 == CRLF) ) { s = 205; } else if ( (LA2_2006 == DASH || LA2_2006 == EMARK || LA2_2006 == LPAREN || LA2_2006 == RPAREN || ((LA2_2006 >= SQUOTE) && (LA2_2006 <= USCORE))) ) { s = 2467; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2006 == LSBRAQUET || LA2_2006 == RSBRAQUET) ) { s = 405; } SEEK(index2_2006); if ( s>=0 ) { return s; } } break; case 866: { ANTLR3_UINT32 LA2_3238; ANTLR3_MARKER index2_3238; LA2_3238 = LA(1); index2_3238 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3238 == SLASH) ) { s = 2928; } else if ( (LA2_3238 == QMARK) ) { s = 854; } else if ( (LA2_3238 == SP) ) { s = 204; } else if ( (LA2_3238 == SEMI) ) { s = 2927; } else if ( (LA2_3238 == COMMON_CHAR || LA2_3238 == HEX_CHAR) ) { s = 3236; } else if ( (LA2_3238 == DIGIT) ) { s = 3237; } else if ( (LA2_3238 == DOT) ) { s = 3238; } else if ( (LA2_3238 == PERCENT) ) { s = 3239; } else if ( (LA2_3238 == COLON) ) { s = 2954; } else if ( (LA2_3238 == AT) ) { s = 2111; } else if ( (LA2_3238 == AND) ) { s = 2955; } else if ( (LA2_3238 == EQUAL) ) { s = 3264; } else if ( (LA2_3238 == PLUS) ) { s = 3240; } else if ( (LA2_3238 == DOLLARD) ) { s = 2956; } else if ( (LA2_3238 == COMMA) ) { s = 2116; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3238 == CRLF) ) { s = 205; } else if ( (LA2_3238 == DASH || LA2_3238 == EMARK || LA2_3238 == LPAREN || LA2_3238 == RPAREN || ((LA2_3238 >= SQUOTE) && (LA2_3238 <= USCORE))) ) { s = 3241; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3238 == LSBRAQUET || LA2_3238 == RSBRAQUET) ) { s = 405; } SEEK(index2_3238); if ( s>=0 ) { return s; } } break; case 867: { ANTLR3_UINT32 LA2_1072; ANTLR3_MARKER index2_1072; LA2_1072 = LA(1); index2_1072 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1072 == AT) ) { s = 89; } else if ( (LA2_1072 == COMMON_CHAR || LA2_1072 == HEX_CHAR) ) { s = 1071; } else if ( (LA2_1072 == DIGIT) ) { s = 1072; } else if ( (LA2_1072 == DOT) ) { s = 1073; } else if ( (LA2_1072 == PERCENT) ) { s = 1074; } else if ( (LA2_1072 == AND) ) { s = 1075; } else if ( (LA2_1072 == EQUAL) ) { s = 194; } else if ( (LA2_1072 == PLUS) ) { s = 1076; } else if ( (LA2_1072 == DOLLARD) ) { s = 1077; } else if ( (LA2_1072 == COMMA) ) { s = 197; } else if ( (LA2_1072 == QMARK) ) { s = 694; } else if ( (LA2_1072 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1072 == CRLF) ) { s = 205; } else if ( (LA2_1072 == SEMI) ) { s = 693; } else if ( (LA2_1072 == DASH || LA2_1072 == EMARK || LA2_1072 == LPAREN || LA2_1072 == RPAREN || ((LA2_1072 >= SQUOTE) && (LA2_1072 <= USCORE))) ) { s = 1078; } else if ( (LA2_1072 == COLON || LA2_1072 == SLASH) ) { s = 1079; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1072 == LSBRAQUET || LA2_1072 == RSBRAQUET) ) { s = 1080; } SEEK(index2_1072); if ( s>=0 ) { return s; } } break; case 868: { ANTLR3_UINT32 LA2_2008; ANTLR3_MARKER index2_2008; LA2_2008 = LA(1); index2_2008 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2008 == SLASH) ) { s = 2009; } else if ( (LA2_2008 == QMARK) ) { s = 854; } else if ( (LA2_2008 == SP) ) { s = 204; } else if ( (LA2_2008 == SEMI) ) { s = 2011; } else if ( (LA2_2008 == COMMON_CHAR || LA2_2008 == HEX_CHAR) ) { s = 2461; } else if ( (LA2_2008 == DIGIT) ) { s = 2462; } else if ( (LA2_2008 == DOT) ) { s = 2463; } else if ( (LA2_2008 == PERCENT) ) { s = 2464; } else if ( (LA2_2008 == COLON) ) { s = 2005; } else if ( (LA2_2008 == AT) ) { s = 1123; } else if ( (LA2_2008 == AND) ) { s = 2006; } else if ( (LA2_2008 == EQUAL) ) { s = 2465; } else if ( (LA2_2008 == PLUS) ) { s = 2466; } else if ( (LA2_2008 == DOLLARD) ) { s = 2008; } else if ( (LA2_2008 == COMMA) ) { s = 1128; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2008 == CRLF) ) { s = 205; } else if ( (LA2_2008 == DASH || LA2_2008 == EMARK || LA2_2008 == LPAREN || LA2_2008 == RPAREN || ((LA2_2008 >= SQUOTE) && (LA2_2008 <= USCORE))) ) { s = 2467; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2008 == LSBRAQUET || LA2_2008 == RSBRAQUET) ) { s = 405; } SEEK(index2_2008); if ( s>=0 ) { return s; } } break; case 869: { ANTLR3_UINT32 LA2_2466; ANTLR3_MARKER index2_2466; LA2_2466 = LA(1); index2_2466 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2466 == SLASH) ) { s = 2009; } else if ( (LA2_2466 == QMARK) ) { s = 854; } else if ( (LA2_2466 == SP) ) { s = 204; } else if ( (LA2_2466 == SEMI) ) { s = 2011; } else if ( (LA2_2466 == COMMON_CHAR || LA2_2466 == HEX_CHAR) ) { s = 2461; } else if ( (LA2_2466 == DIGIT) ) { s = 2462; } else if ( (LA2_2466 == DOT) ) { s = 2463; } else if ( (LA2_2466 == PERCENT) ) { s = 2464; } else if ( (LA2_2466 == COLON) ) { s = 2005; } else if ( (LA2_2466 == AT) ) { s = 1123; } else if ( (LA2_2466 == AND) ) { s = 2006; } else if ( (LA2_2466 == EQUAL) ) { s = 2465; } else if ( (LA2_2466 == PLUS) ) { s = 2466; } else if ( (LA2_2466 == DOLLARD) ) { s = 2008; } else if ( (LA2_2466 == COMMA) ) { s = 1128; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2466 == CRLF) ) { s = 205; } else if ( (LA2_2466 == DASH || LA2_2466 == EMARK || LA2_2466 == LPAREN || LA2_2466 == RPAREN || ((LA2_2466 >= SQUOTE) && (LA2_2466 <= USCORE))) ) { s = 2467; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2466 == LSBRAQUET || LA2_2466 == RSBRAQUET) ) { s = 405; } SEEK(index2_2466); if ( s>=0 ) { return s; } } break; case 870: { ANTLR3_UINT32 LA2_700; ANTLR3_MARKER index2_700; LA2_700 = LA(1); index2_700 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_700 == AT) ) { s = 89; } else if ( (LA2_700 == COMMON_CHAR || LA2_700 == HEX_CHAR) ) { s = 699; } else if ( (LA2_700 == DIGIT) ) { s = 700; } else if ( (LA2_700 == DOT) ) { s = 701; } else if ( (LA2_700 == PERCENT) ) { s = 702; } else if ( (LA2_700 == AND) ) { s = 703; } else if ( (LA2_700 == EQUAL) ) { s = 704; } else if ( (LA2_700 == PLUS) ) { s = 705; } else if ( (LA2_700 == DOLLARD) ) { s = 706; } else if ( (LA2_700 == COMMA) ) { s = 197; } else if ( (LA2_700 == QMARK) ) { s = 694; } else if ( (LA2_700 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_700 == CRLF) ) { s = 205; } else if ( (LA2_700 == SEMI) ) { s = 693; } else if ( (LA2_700 == DASH || LA2_700 == EMARK || LA2_700 == LPAREN || LA2_700 == RPAREN || ((LA2_700 >= SQUOTE) && (LA2_700 <= USCORE))) ) { s = 707; } else if ( (LA2_700 == COLON || LA2_700 == SLASH) ) { s = 708; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_700 == LSBRAQUET || LA2_700 == RSBRAQUET) ) { s = 405; } SEEK(index2_700); if ( s>=0 ) { return s; } } break; case 871: { ANTLR3_UINT32 LA2_3252; ANTLR3_MARKER index2_3252; LA2_3252 = LA(1); index2_3252 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3252 == SEMI) ) { s = 3251; } else if ( (LA2_3252 == QMARK) ) { s = 854; } else if ( (LA2_3252 == SP) ) { s = 204; } else if ( (LA2_3252 == SLASH) ) { s = 2928; } else if ( (LA2_3252 == COMMON_CHAR || LA2_3252 == HEX_CHAR) ) { s = 3242; } else if ( (LA2_3252 == DIGIT) ) { s = 3243; } else if ( (LA2_3252 == DOT) ) { s = 3244; } else if ( (LA2_3252 == PERCENT) ) { s = 3245; } else if ( (LA2_3252 == COLON) ) { s = 3246; } else if ( (LA2_3252 == AT) ) { s = 2122; } else if ( (LA2_3252 == AND) ) { s = 3247; } else if ( (LA2_3252 == EQUAL) ) { s = 3248; } else if ( (LA2_3252 == PLUS) ) { s = 3249; } else if ( (LA2_3252 == DOLLARD) ) { s = 3250; } else if ( (LA2_3252 == COMMA) ) { s = 2127; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3252 == CRLF) ) { s = 205; } else if ( (LA2_3252 == DASH || LA2_3252 == EMARK || LA2_3252 == LPAREN || LA2_3252 == RPAREN || ((LA2_3252 >= SQUOTE) && (LA2_3252 <= USCORE))) ) { s = 3252; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3252 == LSBRAQUET || LA2_3252 == RSBRAQUET) ) { s = 405; } SEEK(index2_3252); if ( s>=0 ) { return s; } } break; case 872: { ANTLR3_UINT32 LA2_1083; ANTLR3_MARKER index2_1083; LA2_1083 = LA(1); index2_1083 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1083 == COLON) ) { s = 1082; } else if ( (LA2_1083 == AT) ) { s = 89; } else if ( (LA2_1083 == COMMON_CHAR || LA2_1083 == HEX_CHAR) ) { s = 1083; } else if ( (LA2_1083 == DIGIT) ) { s = 1084; } else if ( (LA2_1083 == DOT) ) { s = 1085; } else if ( (LA2_1083 == PERCENT) ) { s = 1086; } else if ( (LA2_1083 == QMARK) ) { s = 206; } else if ( (LA2_1083 == SEMI) ) { s = 202; } else if ( (LA2_1083 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1083 == CRLF) ) { s = 205; } else if ( (LA2_1083 == AND || LA2_1083 == DOLLARD || LA2_1083 == PLUS || LA2_1083 == SLASH) ) { s = 1087; } else if ( (LA2_1083 == DASH || LA2_1083 == EMARK || LA2_1083 == LPAREN || LA2_1083 == RPAREN || ((LA2_1083 >= SQUOTE) && (LA2_1083 <= USCORE))) ) { s = 1088; } else if ( (LA2_1083 == COMMA) ) { s = 97; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1083 == LSBRAQUET || LA2_1083 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_1083 == EQUAL) ) { s = 99; } SEEK(index2_1083); if ( s>=0 ) { return s; } } break; case 873: { ANTLR3_UINT32 LA2_16; ANTLR3_MARKER index2_16; LA2_16 = LA(1); index2_16 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_16 == COLON) ) { s = 15; } else if ( (LA2_16 == COMMON_CHAR || LA2_16 == HEX_CHAR) ) { s = 16; } else if ( (LA2_16 == DIGIT) ) { s = 17; } else if ( (LA2_16 == DASH) ) { s = 18; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_16 == PERCENT) ) { s = 11; } else if ( (LA2_16 == PLUS) ) { s = 19; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_16 == BQUOTE) ) { s = 13; } else if ( (LA2_16 == DOT) ) { s = 20; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_16 == EMARK || LA2_16 == LPAREN || LA2_16 == RPAREN || ((LA2_16 >= SQUOTE) && (LA2_16 <= USCORE))) ) { s = 10; } SEEK(index2_16); if ( s>=0 ) { return s; } } break; case 874: { ANTLR3_UINT32 LA2_3633; ANTLR3_MARKER index2_3633; LA2_3633 = LA(1); index2_3633 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3633 == SEMI) ) { s = 3463; } else if ( (LA2_3633 == QMARK) ) { s = 854; } else if ( (LA2_3633 == SP) ) { s = 204; } else if ( (LA2_3633 == SLASH) ) { s = 3435; } else if ( (LA2_3633 == COMMON_CHAR || LA2_3633 == HEX_CHAR) ) { s = 3633; } else if ( (LA2_3633 == DIGIT) ) { s = 3634; } else if ( (LA2_3633 == DOT) ) { s = 3635; } else if ( (LA2_3633 == PERCENT) ) { s = 3636; } else if ( (LA2_3633 == COLON) ) { s = 3637; } else if ( (LA2_3633 == AT) ) { s = 2195; } else if ( (LA2_3633 == AND) ) { s = 3638; } else if ( (LA2_3633 == EQUAL) ) { s = 2197; } else if ( (LA2_3633 == PLUS) ) { s = 3639; } else if ( (LA2_3633 == DOLLARD) ) { s = 3640; } else if ( (LA2_3633 == COMMA) ) { s = 2200; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3633 == CRLF) ) { s = 205; } else if ( (LA2_3633 == DASH || LA2_3633 == EMARK || LA2_3633 == LPAREN || LA2_3633 == RPAREN || ((LA2_3633 >= SQUOTE) && (LA2_3633 <= USCORE))) ) { s = 3641; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3633 == LSBRAQUET || LA2_3633 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3633); if ( s>=0 ) { return s; } } break; case 875: { ANTLR3_UINT32 LA2_3133; ANTLR3_MARKER index2_3133; LA2_3133 = LA(1); index2_3133 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3133 == QMARK) ) { s = 854; } else if ( (LA2_3133 == SP) ) { s = 204; } else if ( (LA2_3133 == SLASH) ) { s = 2827; } else if ( (LA2_3133 == SEMI) ) { s = 2826; } else if ( (LA2_3133 == COMMON_CHAR || LA2_3133 == HEX_CHAR) ) { s = 3133; } else if ( (LA2_3133 == DIGIT) ) { s = 3134; } else if ( (LA2_3133 == DOT) ) { s = 3135; } else if ( (LA2_3133 == PERCENT) ) { s = 3136; } else if ( (LA2_3133 == COLON) ) { s = 3137; } else if ( (LA2_3133 == AT) ) { s = 2493; } else if ( (LA2_3133 == AND) ) { s = 3138; } else if ( (LA2_3133 == EQUAL) ) { s = 3416; } else if ( (LA2_3133 == PLUS) ) { s = 3139; } else if ( (LA2_3133 == DOLLARD) ) { s = 3140; } else if ( (LA2_3133 == COMMA) ) { s = 2498; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3133 == CRLF) ) { s = 205; } else if ( (LA2_3133 == DASH || LA2_3133 == EMARK || LA2_3133 == LPAREN || LA2_3133 == RPAREN || ((LA2_3133 >= SQUOTE) && (LA2_3133 <= USCORE))) ) { s = 3141; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3133 == LSBRAQUET || LA2_3133 == RSBRAQUET) ) { s = 405; } SEEK(index2_3133); if ( s>=0 ) { return s; } } break; case 876: { ANTLR3_UINT32 LA2_3617; ANTLR3_MARKER index2_3617; LA2_3617 = LA(1); index2_3617 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3617 == SEMI) ) { s = 2826; } else if ( (LA2_3617 == QMARK) ) { s = 854; } else if ( (LA2_3617 == SP) ) { s = 204; } else if ( (LA2_3617 == SLASH) ) { s = 3123; } else if ( (LA2_3617 == COMMON_CHAR || LA2_3617 == HEX_CHAR) ) { s = 3124; } else if ( (LA2_3617 == DIGIT) ) { s = 3125; } else if ( (LA2_3617 == DOT) ) { s = 3126; } else if ( (LA2_3617 == PERCENT) ) { s = 3127; } else if ( (LA2_3617 == COLON) ) { s = 3128; } else if ( (LA2_3617 == AT) ) { s = 2019; } else if ( (LA2_3617 == AND) ) { s = 3129; } else if ( (LA2_3617 == EQUAL) ) { s = 2021; } else if ( (LA2_3617 == PLUS) ) { s = 3130; } else if ( (LA2_3617 == DOLLARD) ) { s = 3131; } else if ( (LA2_3617 == COMMA) ) { s = 2024; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3617 == CRLF) ) { s = 205; } else if ( (LA2_3617 == DASH || LA2_3617 == EMARK || LA2_3617 == LPAREN || LA2_3617 == RPAREN || ((LA2_3617 >= SQUOTE) && (LA2_3617 <= USCORE))) ) { s = 3132; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3617 == LSBRAQUET || LA2_3617 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3617); if ( s>=0 ) { return s; } } break; case 877: { ANTLR3_UINT32 LA2_3626; ANTLR3_MARKER index2_3626; LA2_3626 = LA(1); index2_3626 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3626 == QMARK) ) { s = 854; } else if ( (LA2_3626 == SP) ) { s = 204; } else if ( (LA2_3626 == SLASH) ) { s = 3123; } else if ( (LA2_3626 == SEMI) ) { s = 2826; } else if ( (LA2_3626 == COMMON_CHAR || LA2_3626 == HEX_CHAR) ) { s = 3618; } else if ( (LA2_3626 == DIGIT) ) { s = 3619; } else if ( (LA2_3626 == DOT) ) { s = 3620; } else if ( (LA2_3626 == PERCENT) ) { s = 3621; } else if ( (LA2_3626 == COLON) ) { s = 3622; } else if ( (LA2_3626 == AT) ) { s = 2493; } else if ( (LA2_3626 == AND) ) { s = 3623; } else if ( (LA2_3626 == EQUAL) ) { s = 2495; } else if ( (LA2_3626 == PLUS) ) { s = 3624; } else if ( (LA2_3626 == DOLLARD) ) { s = 3625; } else if ( (LA2_3626 == COMMA) ) { s = 2498; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3626 == CRLF) ) { s = 205; } else if ( (LA2_3626 == DASH || LA2_3626 == EMARK || LA2_3626 == LPAREN || LA2_3626 == RPAREN || ((LA2_3626 >= SQUOTE) && (LA2_3626 <= USCORE))) ) { s = 3626; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3626 == LSBRAQUET || LA2_3626 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3626); if ( s>=0 ) { return s; } } break; case 878: { ANTLR3_UINT32 LA2_2707; ANTLR3_MARKER index2_2707; LA2_2707 = LA(1); index2_2707 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2707 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2707 == CRLF) ) { s = 205; } else if ( (LA2_2707 == SEMI) ) { s = 1237; } else if ( (LA2_2707 == QMARK) ) { s = 854; } else if ( (LA2_2707 == DIGIT) ) { s = 2707; } else if ( (LA2_2707 == SLASH) ) { s = 241; } else if ( (LA2_2707 == COMMON_CHAR || LA2_2707 == HEX_CHAR) ) { s = 805; } else if ( (LA2_2707 == DASH || LA2_2707 == DOT || LA2_2707 == EMARK || LA2_2707 == LPAREN || LA2_2707 == RPAREN || ((LA2_2707 >= SQUOTE) && (LA2_2707 <= USCORE))) ) { s = 807; } else if ( (LA2_2707 == PERCENT) ) { s = 808; } else if ( (LA2_2707 == COLON) ) { s = 809; } else if ( (LA2_2707 == AT) ) { s = 810; } else if ( (LA2_2707 == AND) ) { s = 811; } else if ( (LA2_2707 == EQUAL) ) { s = 812; } else if ( (LA2_2707 == PLUS) ) { s = 813; } else if ( (LA2_2707 == DOLLARD) ) { s = 814; } else if ( (LA2_2707 == COMMA) ) { s = 815; } SEEK(index2_2707); if ( s>=0 ) { return s; } } break; case 879: { ANTLR3_UINT32 LA2_3171; ANTLR3_MARKER index2_3171; LA2_3171 = LA(1); index2_3171 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3171 == COMMON_CHAR || LA2_3171 == HEX_CHAR) ) { s = 3454; } else if ( (LA2_3171 == DIGIT) ) { s = 3455; } else if ( (LA2_3171 == DOT) ) { s = 3456; } else if ( (LA2_3171 == PERCENT) ) { s = 3457; } else if ( (LA2_3171 == COLON) ) { s = 3458; } else if ( (LA2_3171 == AT) ) { s = 2195; } else if ( (LA2_3171 == AND) ) { s = 3459; } else if ( (LA2_3171 == EQUAL) ) { s = 3460; } else if ( (LA2_3171 == PLUS) ) { s = 3461; } else if ( (LA2_3171 == DOLLARD) ) { s = 3462; } else if ( (LA2_3171 == COMMA) ) { s = 2200; } else if ( (LA2_3171 == SEMI) ) { s = 3463; } else if ( (LA2_3171 == QMARK) ) { s = 854; } else if ( (LA2_3171 == SP) ) { s = 204; } else if ( (LA2_3171 == SLASH) ) { s = 3171; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3171 == CRLF) ) { s = 205; } else if ( (LA2_3171 == DASH || LA2_3171 == EMARK || LA2_3171 == LPAREN || LA2_3171 == RPAREN || ((LA2_3171 >= SQUOTE) && (LA2_3171 <= USCORE))) ) { s = 3464; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3171 == LSBRAQUET || LA2_3171 == RSBRAQUET) ) { s = 405; } SEEK(index2_3171); if ( s>=0 ) { return s; } } break; case 880: { ANTLR3_UINT32 LA2_3823; ANTLR3_MARKER index2_3823; LA2_3823 = LA(1); index2_3823 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3823 == QMARK) ) { s = 1751; } else if ( (LA2_3823 == SP) ) { s = 204; } else if ( (LA2_3823 == SLASH) ) { s = 3323; } else if ( (LA2_3823 == SEMI) ) { s = 3351; } else if ( (LA2_3823 == COMMON_CHAR || LA2_3823 == HEX_CHAR) ) { s = 3819; } else if ( (LA2_3823 == DIGIT) ) { s = 3820; } else if ( (LA2_3823 == DOT) ) { s = 3821; } else if ( (LA2_3823 == PERCENT) ) { s = 3822; } else if ( (LA2_3823 == COLON) ) { s = 3823; } else if ( (LA2_3823 == AT) ) { s = 3043; } else if ( (LA2_3823 == AND) ) { s = 3824; } else if ( (LA2_3823 == EQUAL) ) { s = 3045; } else if ( (LA2_3823 == PLUS) ) { s = 3825; } else if ( (LA2_3823 == DOLLARD) ) { s = 3826; } else if ( (LA2_3823 == COMMA) ) { s = 3048; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3823 == CRLF) ) { s = 205; } else if ( (LA2_3823 == DASH || LA2_3823 == EMARK || LA2_3823 == LPAREN || LA2_3823 == RPAREN || ((LA2_3823 >= SQUOTE) && (LA2_3823 <= USCORE))) ) { s = 3827; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3823 == LSBRAQUET || LA2_3823 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3823); if ( s>=0 ) { return s; } } break; case 881: { ANTLR3_UINT32 LA2_2715; ANTLR3_MARKER index2_2715; LA2_2715 = LA(1); index2_2715 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2715 == QMARK) ) { s = 1308; } else if ( (LA2_2715 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2715 == CRLF) ) { s = 205; } else if ( (LA2_2715 == SEMI) ) { s = 1307; } else if ( (LA2_2715 == DOT) ) { s = 2714; } else if ( (LA2_2715 == COMMON_CHAR || LA2_2715 == HEX_CHAR) ) { s = 2715; } else if ( (LA2_2715 == DIGIT) ) { s = 2716; } else if ( (LA2_2715 == AND || LA2_2715 == COLON || LA2_2715 == DOLLARD || LA2_2715 == PLUS || LA2_2715 == SLASH) ) { s = 2717; } else if ( (LA2_2715 == DASH || LA2_2715 == EMARK || LA2_2715 == LPAREN || LA2_2715 == RPAREN || ((LA2_2715 >= SQUOTE) && (LA2_2715 <= USCORE))) ) { s = 2718; } else if ( (LA2_2715 == PERCENT) ) { s = 2719; } else if ( (LA2_2715 == COMMA) ) { s = 506; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2715 == LSBRAQUET || LA2_2715 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_2715 == AT || LA2_2715 == EQUAL) ) { s = 508; } SEEK(index2_2715); if ( s>=0 ) { return s; } } break; case 882: { ANTLR3_UINT32 LA2_3825; ANTLR3_MARKER index2_3825; LA2_3825 = LA(1); index2_3825 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3825 == QMARK) ) { s = 1751; } else if ( (LA2_3825 == SP) ) { s = 204; } else if ( (LA2_3825 == SLASH) ) { s = 3323; } else if ( (LA2_3825 == SEMI) ) { s = 3351; } else if ( (LA2_3825 == COMMON_CHAR || LA2_3825 == HEX_CHAR) ) { s = 3819; } else if ( (LA2_3825 == DIGIT) ) { s = 3820; } else if ( (LA2_3825 == DOT) ) { s = 3821; } else if ( (LA2_3825 == PERCENT) ) { s = 3822; } else if ( (LA2_3825 == COLON) ) { s = 3823; } else if ( (LA2_3825 == AT) ) { s = 3043; } else if ( (LA2_3825 == AND) ) { s = 3824; } else if ( (LA2_3825 == EQUAL) ) { s = 3045; } else if ( (LA2_3825 == PLUS) ) { s = 3825; } else if ( (LA2_3825 == DOLLARD) ) { s = 3826; } else if ( (LA2_3825 == COMMA) ) { s = 3048; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3825 == CRLF) ) { s = 205; } else if ( (LA2_3825 == DASH || LA2_3825 == EMARK || LA2_3825 == LPAREN || LA2_3825 == RPAREN || ((LA2_3825 >= SQUOTE) && (LA2_3825 <= USCORE))) ) { s = 3827; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3825 == LSBRAQUET || LA2_3825 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3825); if ( s>=0 ) { return s; } } break; case 883: { ANTLR3_UINT32 LA2_3824; ANTLR3_MARKER index2_3824; LA2_3824 = LA(1); index2_3824 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3824 == QMARK) ) { s = 1751; } else if ( (LA2_3824 == SP) ) { s = 204; } else if ( (LA2_3824 == SLASH) ) { s = 3323; } else if ( (LA2_3824 == SEMI) ) { s = 3351; } else if ( (LA2_3824 == COMMON_CHAR || LA2_3824 == HEX_CHAR) ) { s = 3819; } else if ( (LA2_3824 == DIGIT) ) { s = 3820; } else if ( (LA2_3824 == DOT) ) { s = 3821; } else if ( (LA2_3824 == PERCENT) ) { s = 3822; } else if ( (LA2_3824 == COLON) ) { s = 3823; } else if ( (LA2_3824 == AT) ) { s = 3043; } else if ( (LA2_3824 == AND) ) { s = 3824; } else if ( (LA2_3824 == EQUAL) ) { s = 3045; } else if ( (LA2_3824 == PLUS) ) { s = 3825; } else if ( (LA2_3824 == DOLLARD) ) { s = 3826; } else if ( (LA2_3824 == COMMA) ) { s = 3048; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3824 == CRLF) ) { s = 205; } else if ( (LA2_3824 == DASH || LA2_3824 == EMARK || LA2_3824 == LPAREN || LA2_3824 == RPAREN || ((LA2_3824 >= SQUOTE) && (LA2_3824 <= USCORE))) ) { s = 3827; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3824 == LSBRAQUET || LA2_3824 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3824); if ( s>=0 ) { return s; } } break; case 884: { ANTLR3_UINT32 LA2_2830; ANTLR3_MARKER index2_2830; LA2_2830 = LA(1); index2_2830 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2830 == COMMON_CHAR || LA2_2830 == HEX_CHAR) ) { s = 2851; } else if ( (LA2_2830 == DIGIT) ) { s = 2852; } else if ( (LA2_2830 == DOT) ) { s = 2853; } else if ( (LA2_2830 == PERCENT) ) { s = 2854; } else if ( (LA2_2830 == COLON) ) { s = 2855; } else if ( (LA2_2830 == AT) ) { s = 1134; } else if ( (LA2_2830 == AND) ) { s = 2856; } else if ( (LA2_2830 == EQUAL) ) { s = 1136; } else if ( (LA2_2830 == PLUS) ) { s = 2857; } else if ( (LA2_2830 == DOLLARD) ) { s = 2858; } else if ( (LA2_2830 == COMMA) ) { s = 1139; } else if ( (LA2_2830 == SEMI) ) { s = 2477; } else if ( (LA2_2830 == QMARK) ) { s = 854; } else if ( (LA2_2830 == SP) ) { s = 204; } else if ( (LA2_2830 == SLASH) ) { s = 2830; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2830 == CRLF) ) { s = 205; } else if ( (LA2_2830 == DASH || LA2_2830 == EMARK || LA2_2830 == LPAREN || LA2_2830 == RPAREN || ((LA2_2830 >= SQUOTE) && (LA2_2830 <= USCORE))) ) { s = 2859; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2830 == LSBRAQUET || LA2_2830 == RSBRAQUET) ) { s = 1080; } SEEK(index2_2830); if ( s>=0 ) { return s; } } break; case 885: { ANTLR3_UINT32 LA2_3826; ANTLR3_MARKER index2_3826; LA2_3826 = LA(1); index2_3826 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3826 == QMARK) ) { s = 1751; } else if ( (LA2_3826 == SP) ) { s = 204; } else if ( (LA2_3826 == SLASH) ) { s = 3323; } else if ( (LA2_3826 == SEMI) ) { s = 3351; } else if ( (LA2_3826 == COMMON_CHAR || LA2_3826 == HEX_CHAR) ) { s = 3819; } else if ( (LA2_3826 == DIGIT) ) { s = 3820; } else if ( (LA2_3826 == DOT) ) { s = 3821; } else if ( (LA2_3826 == PERCENT) ) { s = 3822; } else if ( (LA2_3826 == COLON) ) { s = 3823; } else if ( (LA2_3826 == AT) ) { s = 3043; } else if ( (LA2_3826 == AND) ) { s = 3824; } else if ( (LA2_3826 == EQUAL) ) { s = 3045; } else if ( (LA2_3826 == PLUS) ) { s = 3825; } else if ( (LA2_3826 == DOLLARD) ) { s = 3826; } else if ( (LA2_3826 == COMMA) ) { s = 3048; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3826 == CRLF) ) { s = 205; } else if ( (LA2_3826 == DASH || LA2_3826 == EMARK || LA2_3826 == LPAREN || LA2_3826 == RPAREN || ((LA2_3826 >= SQUOTE) && (LA2_3826 <= USCORE))) ) { s = 3827; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3826 == LSBRAQUET || LA2_3826 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3826); if ( s>=0 ) { return s; } } break; case 886: { ANTLR3_UINT32 LA2_2695; ANTLR3_MARKER index2_2695; LA2_2695 = LA(1); index2_2695 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2695 == QMARK) ) { s = 854; } else if ( (LA2_2695 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2695 == CRLF) ) { s = 205; } else if ( (LA2_2695 == SEMI) ) { s = 1237; } else if ( (LA2_2695 == DOT) ) { s = 1758; } else if ( (LA2_2695 == COMMON_CHAR || LA2_2695 == HEX_CHAR) ) { s = 1759; } else if ( (LA2_2695 == DIGIT) ) { s = 1760; } else if ( (LA2_2695 == SLASH) ) { s = 1271; } else if ( (LA2_2695 == DASH || LA2_2695 == EMARK || LA2_2695 == LPAREN || LA2_2695 == RPAREN || ((LA2_2695 >= SQUOTE) && (LA2_2695 <= USCORE))) ) { s = 1762; } else if ( (LA2_2695 == PERCENT) ) { s = 1763; } else if ( (LA2_2695 == EQUAL) ) { s = 1764; } else if ( (LA2_2695 == COLON) ) { s = 1761; } else if ( (LA2_2695 == AND) ) { s = 1765; } else if ( (LA2_2695 == AT) ) { s = 464; } else if ( (LA2_2695 == PLUS) ) { s = 1766; } else if ( (LA2_2695 == DOLLARD) ) { s = 1767; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2695 == LSBRAQUET || LA2_2695 == RSBRAQUET) ) { s = 405; } else if ( (LA2_2695 == COMMA) ) { s = 469; } SEEK(index2_2695); if ( s>=0 ) { return s; } } break; case 887: { ANTLR3_UINT32 LA2_3237; ANTLR3_MARKER index2_3237; LA2_3237 = LA(1); index2_3237 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3237 == SLASH) ) { s = 2928; } else if ( (LA2_3237 == QMARK) ) { s = 854; } else if ( (LA2_3237 == SP) ) { s = 204; } else if ( (LA2_3237 == SEMI) ) { s = 2927; } else if ( (LA2_3237 == COMMON_CHAR || LA2_3237 == HEX_CHAR) ) { s = 3236; } else if ( (LA2_3237 == DIGIT) ) { s = 3237; } else if ( (LA2_3237 == DOT) ) { s = 3238; } else if ( (LA2_3237 == PERCENT) ) { s = 3239; } else if ( (LA2_3237 == COLON) ) { s = 2954; } else if ( (LA2_3237 == AT) ) { s = 2111; } else if ( (LA2_3237 == AND) ) { s = 2955; } else if ( (LA2_3237 == EQUAL) ) { s = 3264; } else if ( (LA2_3237 == PLUS) ) { s = 3240; } else if ( (LA2_3237 == DOLLARD) ) { s = 2956; } else if ( (LA2_3237 == COMMA) ) { s = 2116; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3237 == CRLF) ) { s = 205; } else if ( (LA2_3237 == DASH || LA2_3237 == EMARK || LA2_3237 == LPAREN || LA2_3237 == RPAREN || ((LA2_3237 >= SQUOTE) && (LA2_3237 <= USCORE))) ) { s = 3241; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3237 == LSBRAQUET || LA2_3237 == RSBRAQUET) ) { s = 405; } SEEK(index2_3237); if ( s>=0 ) { return s; } } break; case 888: { ANTLR3_UINT32 LA2_3535; ANTLR3_MARKER index2_3535; LA2_3535 = LA(1); index2_3535 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3535 == SLASH) ) { s = 3226; } else if ( (LA2_3535 == QMARK) ) { s = 854; } else if ( (LA2_3535 == SP) ) { s = 204; } else if ( (LA2_3535 == SEMI) ) { s = 2927; } else if ( (LA2_3535 == COMMON_CHAR || LA2_3535 == HEX_CHAR) ) { s = 3534; } else if ( (LA2_3535 == DIGIT) ) { s = 3535; } else if ( (LA2_3535 == DOT) ) { s = 3536; } else if ( (LA2_3535 == PERCENT) ) { s = 3537; } else if ( (LA2_3535 == COLON) ) { s = 3517; } else if ( (LA2_3535 == AT) ) { s = 2111; } else if ( (LA2_3535 == AND) ) { s = 3518; } else if ( (LA2_3535 == EQUAL) ) { s = 2113; } else if ( (LA2_3535 == PLUS) ) { s = 3538; } else if ( (LA2_3535 == DOLLARD) ) { s = 3519; } else if ( (LA2_3535 == COMMA) ) { s = 2116; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3535 == CRLF) ) { s = 205; } else if ( (LA2_3535 == DASH || LA2_3535 == EMARK || LA2_3535 == LPAREN || LA2_3535 == RPAREN || ((LA2_3535 >= SQUOTE) && (LA2_3535 <= USCORE))) ) { s = 3539; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3535 == LSBRAQUET || LA2_3535 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3535); if ( s>=0 ) { return s; } } break; case 889: { ANTLR3_UINT32 LA2_1078; ANTLR3_MARKER index2_1078; LA2_1078 = LA(1); index2_1078 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1078 == AT) ) { s = 89; } else if ( (LA2_1078 == COMMON_CHAR || LA2_1078 == HEX_CHAR) ) { s = 1071; } else if ( (LA2_1078 == DIGIT) ) { s = 1072; } else if ( (LA2_1078 == DOT) ) { s = 1073; } else if ( (LA2_1078 == PERCENT) ) { s = 1074; } else if ( (LA2_1078 == AND) ) { s = 1075; } else if ( (LA2_1078 == EQUAL) ) { s = 194; } else if ( (LA2_1078 == PLUS) ) { s = 1076; } else if ( (LA2_1078 == DOLLARD) ) { s = 1077; } else if ( (LA2_1078 == COMMA) ) { s = 197; } else if ( (LA2_1078 == QMARK) ) { s = 694; } else if ( (LA2_1078 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1078 == CRLF) ) { s = 205; } else if ( (LA2_1078 == SEMI) ) { s = 693; } else if ( (LA2_1078 == DASH || LA2_1078 == EMARK || LA2_1078 == LPAREN || LA2_1078 == RPAREN || ((LA2_1078 >= SQUOTE) && (LA2_1078 <= USCORE))) ) { s = 1078; } else if ( (LA2_1078 == COLON || LA2_1078 == SLASH) ) { s = 1079; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1078 == LSBRAQUET || LA2_1078 == RSBRAQUET) ) { s = 1080; } SEEK(index2_1078); if ( s>=0 ) { return s; } } break; case 890: { ANTLR3_UINT32 LA2_3021; ANTLR3_MARKER index2_3021; LA2_3021 = LA(1); index2_3021 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3021 == SEMI) ) { s = 3030; } else if ( (LA2_3021 == SLASH) ) { s = 3031; } else if ( (LA2_3021 == QMARK) ) { s = 1751; } else if ( (LA2_3021 == SP) ) { s = 204; } else if ( (LA2_3021 == COMMON_CHAR || LA2_3021 == HEX_CHAR) ) { s = 3021; } else if ( (LA2_3021 == DIGIT) ) { s = 3022; } else if ( (LA2_3021 == DOT) ) { s = 3023; } else if ( (LA2_3021 == PERCENT) ) { s = 3024; } else if ( (LA2_3021 == COLON) ) { s = 3025; } else if ( (LA2_3021 == AT) ) { s = 2229; } else if ( (LA2_3021 == AND) ) { s = 3026; } else if ( (LA2_3021 == EQUAL) ) { s = 3027; } else if ( (LA2_3021 == PLUS) ) { s = 3028; } else if ( (LA2_3021 == DOLLARD) ) { s = 3029; } else if ( (LA2_3021 == COMMA) ) { s = 2234; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3021 == CRLF) ) { s = 205; } else if ( (LA2_3021 == DASH || LA2_3021 == EMARK || LA2_3021 == LPAREN || LA2_3021 == RPAREN || ((LA2_3021 >= SQUOTE) && (LA2_3021 <= USCORE))) ) { s = 3032; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3021 == LSBRAQUET || LA2_3021 == RSBRAQUET) ) { s = 405; } SEEK(index2_3021); if ( s>=0 ) { return s; } } break; case 891: { ANTLR3_UINT32 LA2_3786; ANTLR3_MARKER index2_3786; LA2_3786 = LA(1); index2_3786 = INDEX(); REWINDLAST(); s = -1; if ( (synpred1_belle_sip_message(ctx)) && (LA2_3786 == CRLF) ) { s = 3847; } else if ( (LA2_3786 == SEMI) ) { s = 3170; } else if ( (LA2_3786 == SLASH) ) { s = 3171; } else if ( (LA2_3786 == QMARK) ) { s = 854; } else if ( (LA2_3786 == SP) ) { s = 204; } else if ( (LA2_3786 == COMMON_CHAR || LA2_3786 == HEX_CHAR) ) { s = 3162; } else if ( (LA2_3786 == DIGIT) ) { s = 3179; } else if ( (LA2_3786 == DOT) ) { s = 3163; } else if ( (LA2_3786 == PERCENT) ) { s = 3164; } else if ( (LA2_3786 == COLON) ) { s = 3165; } else if ( (LA2_3786 == AT) ) { s = 1710; } else if ( (LA2_3786 == AND) ) { s = 3166; } else if ( (LA2_3786 == EQUAL) ) { s = 3167; } else if ( (LA2_3786 == PLUS) ) { s = 3168; } else if ( (LA2_3786 == DOLLARD) ) { s = 3169; } else if ( (LA2_3786 == COMMA) ) { s = 1715; } else if ( (LA2_3786 == DASH || LA2_3786 == EMARK || LA2_3786 == LPAREN || LA2_3786 == RPAREN || ((LA2_3786 >= SQUOTE) && (LA2_3786 <= USCORE))) ) { s = 3172; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3786 == LSBRAQUET || LA2_3786 == RSBRAQUET) ) { s = 405; } SEEK(index2_3786); if ( s>=0 ) { return s; } } break; case 892: { ANTLR3_UINT32 LA2_3622; ANTLR3_MARKER index2_3622; LA2_3622 = LA(1); index2_3622 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3622 == QMARK) ) { s = 854; } else if ( (LA2_3622 == SP) ) { s = 204; } else if ( (LA2_3622 == SLASH) ) { s = 3123; } else if ( (LA2_3622 == SEMI) ) { s = 2826; } else if ( (LA2_3622 == COMMON_CHAR || LA2_3622 == HEX_CHAR) ) { s = 3618; } else if ( (LA2_3622 == DIGIT) ) { s = 3619; } else if ( (LA2_3622 == DOT) ) { s = 3620; } else if ( (LA2_3622 == PERCENT) ) { s = 3621; } else if ( (LA2_3622 == COLON) ) { s = 3622; } else if ( (LA2_3622 == AT) ) { s = 2493; } else if ( (LA2_3622 == AND) ) { s = 3623; } else if ( (LA2_3622 == EQUAL) ) { s = 2495; } else if ( (LA2_3622 == PLUS) ) { s = 3624; } else if ( (LA2_3622 == DOLLARD) ) { s = 3625; } else if ( (LA2_3622 == COMMA) ) { s = 2498; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3622 == CRLF) ) { s = 205; } else if ( (LA2_3622 == DASH || LA2_3622 == EMARK || LA2_3622 == LPAREN || LA2_3622 == RPAREN || ((LA2_3622 >= SQUOTE) && (LA2_3622 <= USCORE))) ) { s = 3626; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3622 == LSBRAQUET || LA2_3622 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3622); if ( s>=0 ) { return s; } } break; case 893: { ANTLR3_UINT32 LA2_3623; ANTLR3_MARKER index2_3623; LA2_3623 = LA(1); index2_3623 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3623 == QMARK) ) { s = 854; } else if ( (LA2_3623 == SP) ) { s = 204; } else if ( (LA2_3623 == SLASH) ) { s = 3123; } else if ( (LA2_3623 == SEMI) ) { s = 2826; } else if ( (LA2_3623 == COMMON_CHAR || LA2_3623 == HEX_CHAR) ) { s = 3618; } else if ( (LA2_3623 == DIGIT) ) { s = 3619; } else if ( (LA2_3623 == DOT) ) { s = 3620; } else if ( (LA2_3623 == PERCENT) ) { s = 3621; } else if ( (LA2_3623 == COLON) ) { s = 3622; } else if ( (LA2_3623 == AT) ) { s = 2493; } else if ( (LA2_3623 == AND) ) { s = 3623; } else if ( (LA2_3623 == EQUAL) ) { s = 2495; } else if ( (LA2_3623 == PLUS) ) { s = 3624; } else if ( (LA2_3623 == DOLLARD) ) { s = 3625; } else if ( (LA2_3623 == COMMA) ) { s = 2498; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3623 == CRLF) ) { s = 205; } else if ( (LA2_3623 == DASH || LA2_3623 == EMARK || LA2_3623 == LPAREN || LA2_3623 == RPAREN || ((LA2_3623 >= SQUOTE) && (LA2_3623 <= USCORE))) ) { s = 3626; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3623 == LSBRAQUET || LA2_3623 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3623); if ( s>=0 ) { return s; } } break; case 894: { ANTLR3_UINT32 LA2_721; ANTLR3_MARKER index2_721; LA2_721 = LA(1); index2_721 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_721 == AT) ) { s = 89; } else if ( (LA2_721 == COMMON_CHAR || LA2_721 == HEX_CHAR) ) { s = 1095; } else if ( (LA2_721 == DIGIT) ) { s = 1096; } else if ( (LA2_721 == DASH || LA2_721 == DOT || LA2_721 == EMARK || LA2_721 == LPAREN || LA2_721 == RPAREN || ((LA2_721 >= SQUOTE) && (LA2_721 <= USCORE))) ) { s = 1097; } else if ( (LA2_721 == PERCENT) ) { s = 1098; } else if ( (LA2_721 == AND) ) { s = 1099; } else if ( (LA2_721 == EQUAL) ) { s = 194; } else if ( (LA2_721 == PLUS) ) { s = 1100; } else if ( (LA2_721 == DOLLARD) ) { s = 1101; } else if ( (LA2_721 == COMMA) ) { s = 197; } else if ( (LA2_721 == QMARK) ) { s = 1102; } else if ( (LA2_721 == SP) ) { s = 35; } else if ( (LA2_721 == SEMI) ) { s = 105; } else if ( (LA2_721 == COLON || LA2_721 == SLASH) ) { s = 1103; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_721 == LSBRAQUET || LA2_721 == RSBRAQUET) ) { s = 1104; } SEEK(index2_721); if ( s>=0 ) { return s; } } break; case 895: { ANTLR3_UINT32 LA2_1237; ANTLR3_MARKER index2_1237; LA2_1237 = LA(1); index2_1237 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1237 == SP) ) { s = 402; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1237 == CRLF) ) { s = 403; } else if ( (LA2_1237 == DOT) ) { s = 1724; } else if ( (LA2_1237 == COMMON_CHAR || LA2_1237 == HEX_CHAR) ) { s = 1725; } else if ( (LA2_1237 == DIGIT) ) { s = 1726; } else if ( (LA2_1237 == COLON) ) { s = 1727; } else if ( (LA2_1237 == DASH || LA2_1237 == EMARK || LA2_1237 == LPAREN || LA2_1237 == RPAREN || ((LA2_1237 >= SQUOTE) && (LA2_1237 <= USCORE))) ) { s = 1728; } else if ( (LA2_1237 == PERCENT) ) { s = 1729; } else if ( (LA2_1237 == QMARK) ) { s = 854; } else if ( (LA2_1237 == SEMI) ) { s = 1237; } else if ( (LA2_1237 == AND) ) { s = 1730; } else if ( (LA2_1237 == AT) ) { s = 810; } else if ( (LA2_1237 == PLUS) ) { s = 1731; } else if ( (LA2_1237 == EQUAL) ) { s = 812; } else if ( (LA2_1237 == DOLLARD) ) { s = 1732; } else if ( (LA2_1237 == SLASH) ) { s = 1271; } else if ( (LA2_1237 == COMMA) ) { s = 815; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1237 == LSBRAQUET || LA2_1237 == RSBRAQUET) ) { s = 405; } SEEK(index2_1237); if ( s>=0 ) { return s; } } break; case 896: { ANTLR3_UINT32 LA2_3052; ANTLR3_MARKER index2_3052; LA2_3052 = LA(1); index2_3052 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3052 == QMARK) ) { s = 854; } else if ( (LA2_3052 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3052 == CRLF) ) { s = 205; } else if ( (LA2_3052 == SEMI) ) { s = 1237; } else if ( (LA2_3052 == DOT) ) { s = 2254; } else if ( (LA2_3052 == COMMON_CHAR || LA2_3052 == HEX_CHAR) ) { s = 2255; } else if ( (LA2_3052 == DIGIT) ) { s = 2256; } else if ( (LA2_3052 == SLASH) ) { s = 2245; } else if ( (LA2_3052 == DASH || LA2_3052 == EMARK || LA2_3052 == LPAREN || LA2_3052 == RPAREN || ((LA2_3052 >= SQUOTE) && (LA2_3052 <= USCORE))) ) { s = 2257; } else if ( (LA2_3052 == PERCENT) ) { s = 2258; } else if ( (LA2_3052 == COLON) ) { s = 2259; } else if ( (LA2_3052 == AND) ) { s = 2260; } else if ( (LA2_3052 == AT) ) { s = 464; } else if ( (LA2_3052 == PLUS) ) { s = 2261; } else if ( (LA2_3052 == EQUAL) ) { s = 466; } else if ( (LA2_3052 == DOLLARD) ) { s = 2262; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3052 == LSBRAQUET || LA2_3052 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_3052 == COMMA) ) { s = 469; } SEEK(index2_3052); if ( s>=0 ) { return s; } } break; case 897: { ANTLR3_UINT32 LA2_3629; ANTLR3_MARKER index2_3629; LA2_3629 = LA(1); index2_3629 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3629 == QMARK) ) { s = 242; } else if ( (LA2_3629 == SP) ) { s = 35; } else if ( (LA2_3629 == SLASH) ) { s = 3123; } else if ( (LA2_3629 == SEMI) ) { s = 2510; } else if ( (LA2_3629 == COMMON_CHAR || LA2_3629 == HEX_CHAR) ) { s = 3761; } else if ( (LA2_3629 == DIGIT) ) { s = 3762; } else if ( (LA2_3629 == DOT) ) { s = 3763; } else if ( (LA2_3629 == PERCENT) ) { s = 3764; } else if ( (LA2_3629 == COLON) ) { s = 3765; } else if ( (LA2_3629 == AT) ) { s = 2879; } else if ( (LA2_3629 == AND) ) { s = 3766; } else if ( (LA2_3629 == EQUAL) ) { s = 2881; } else if ( (LA2_3629 == PLUS) ) { s = 3767; } else if ( (LA2_3629 == DOLLARD) ) { s = 3768; } else if ( (LA2_3629 == COMMA) ) { s = 2884; } else if ( (LA2_3629 == DASH || LA2_3629 == EMARK || LA2_3629 == LPAREN || LA2_3629 == RPAREN || ((LA2_3629 >= SQUOTE) && (LA2_3629 <= USCORE))) ) { s = 3769; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3629 == LSBRAQUET || LA2_3629 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3629); if ( s>=0 ) { return s; } } break; case 898: { ANTLR3_UINT32 LA2_728; ANTLR3_MARKER index2_728; LA2_728 = LA(1); index2_728 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_728 == DOT) ) { s = 729; } else if ( (LA2_728 == COLON) ) { s = 201; } else if ( (LA2_728 == AT) ) { s = 89; } else if ( (LA2_728 == COMMON_CHAR || LA2_728 == HEX_CHAR) ) { s = 90; } else if ( (LA2_728 == DIGIT) ) { s = 91; } else if ( (LA2_728 == DASH) ) { s = 95; } else if ( (LA2_728 == PERCENT) ) { s = 93; } else if ( (LA2_728 == SEMI) ) { s = 202; } else if ( (LA2_728 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_728 == CRLF) ) { s = 205; } else if ( (LA2_728 == QMARK) ) { s = 206; } else if ( (LA2_728 == COMMA) ) { s = 97; } else if ( (LA2_728 == EMARK || LA2_728 == LPAREN || LA2_728 == RPAREN || ((LA2_728 >= SQUOTE) && (LA2_728 <= USCORE))) ) { s = 96; } else if ( (LA2_728 == AND || LA2_728 == DOLLARD || LA2_728 == EQUAL || LA2_728 == PLUS || LA2_728 == SLASH) ) { s = 99; } SEEK(index2_728); if ( s>=0 ) { return s; } } break; case 899: { ANTLR3_UINT32 LA2_211; ANTLR3_MARKER index2_211; LA2_211 = LA(1); index2_211 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_211 == DOT) ) { s = 212; } else if ( (LA2_211 == COLON) ) { s = 201; } else if ( (LA2_211 == AT) ) { s = 89; } else if ( (LA2_211 == COMMON_CHAR || LA2_211 == HEX_CHAR) ) { s = 90; } else if ( (LA2_211 == DIGIT) ) { s = 91; } else if ( (LA2_211 == DASH) ) { s = 95; } else if ( (LA2_211 == PERCENT) ) { s = 93; } else if ( (LA2_211 == SEMI) ) { s = 202; } else if ( (LA2_211 == EMARK || LA2_211 == LPAREN || LA2_211 == RPAREN || ((LA2_211 >= SQUOTE) && (LA2_211 <= USCORE))) ) { s = 96; } else if ( (LA2_211 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_211 == CRLF) ) { s = 205; } else if ( (LA2_211 == QMARK) ) { s = 206; } else if ( (LA2_211 == COMMA) ) { s = 97; } else if ( (LA2_211 == AND || LA2_211 == DOLLARD || LA2_211 == EQUAL || LA2_211 == PLUS || LA2_211 == SLASH) ) { s = 99; } SEEK(index2_211); if ( s>=0 ) { return s; } } break; case 900: { ANTLR3_UINT32 LA2_3624; ANTLR3_MARKER index2_3624; LA2_3624 = LA(1); index2_3624 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3624 == QMARK) ) { s = 854; } else if ( (LA2_3624 == SP) ) { s = 204; } else if ( (LA2_3624 == SLASH) ) { s = 3123; } else if ( (LA2_3624 == SEMI) ) { s = 2826; } else if ( (LA2_3624 == COMMON_CHAR || LA2_3624 == HEX_CHAR) ) { s = 3618; } else if ( (LA2_3624 == DIGIT) ) { s = 3619; } else if ( (LA2_3624 == DOT) ) { s = 3620; } else if ( (LA2_3624 == PERCENT) ) { s = 3621; } else if ( (LA2_3624 == COLON) ) { s = 3622; } else if ( (LA2_3624 == AT) ) { s = 2493; } else if ( (LA2_3624 == AND) ) { s = 3623; } else if ( (LA2_3624 == EQUAL) ) { s = 2495; } else if ( (LA2_3624 == PLUS) ) { s = 3624; } else if ( (LA2_3624 == DOLLARD) ) { s = 3625; } else if ( (LA2_3624 == COMMA) ) { s = 2498; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3624 == CRLF) ) { s = 205; } else if ( (LA2_3624 == DASH || LA2_3624 == EMARK || LA2_3624 == LPAREN || LA2_3624 == RPAREN || ((LA2_3624 >= SQUOTE) && (LA2_3624 <= USCORE))) ) { s = 3626; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3624 == LSBRAQUET || LA2_3624 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3624); if ( s>=0 ) { return s; } } break; case 901: { ANTLR3_UINT32 LA2_2453; ANTLR3_MARKER index2_2453; LA2_2453 = LA(1); index2_2453 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2453 == COLON) ) { s = 201; } else if ( (LA2_2453 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2453 == CRLF) ) { s = 205; } else if ( (LA2_2453 == SEMI) ) { s = 202; } else if ( (LA2_2453 == QMARK) ) { s = 206; } else if ( (LA2_2453 == AT) ) { s = 89; } else if ( (LA2_2453 == COMMON_CHAR || LA2_2453 == HEX_CHAR) ) { s = 90; } else if ( (LA2_2453 == DIGIT) ) { s = 91; } else if ( (LA2_2453 == DOT) ) { s = 203; } else if ( (LA2_2453 == PERCENT) ) { s = 93; } else if ( (LA2_2453 == COMMA) ) { s = 97; } else if ( (LA2_2453 == DASH) ) { s = 95; } else if ( (LA2_2453 == EMARK || LA2_2453 == LPAREN || LA2_2453 == RPAREN || ((LA2_2453 >= SQUOTE) && (LA2_2453 <= USCORE))) ) { s = 96; } else if ( (LA2_2453 == AND || LA2_2453 == DOLLARD || LA2_2453 == EQUAL || LA2_2453 == PLUS || LA2_2453 == SLASH) ) { s = 99; } SEEK(index2_2453); if ( s>=0 ) { return s; } } break; case 902: { ANTLR3_UINT32 LA2_3846; ANTLR3_MARKER index2_3846; LA2_3846 = LA(1); index2_3846 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3846 == QMARK) ) { s = 854; } else if ( (LA2_3846 == SP) ) { s = 204; } else if ( (LA2_3846 == SLASH) ) { s = 3171; } else if ( (LA2_3846 == SEMI) ) { s = 3463; } else if ( (LA2_3846 == COMMON_CHAR || LA2_3846 == HEX_CHAR) ) { s = 3646; } else if ( (LA2_3846 == DIGIT) ) { s = 3647; } else if ( (LA2_3846 == DOT) ) { s = 3648; } else if ( (LA2_3846 == PERCENT) ) { s = 3649; } else if ( (LA2_3846 == COLON) ) { s = 3650; } else if ( (LA2_3846 == AT) ) { s = 2638; } else if ( (LA2_3846 == AND) ) { s = 3651; } else if ( (LA2_3846 == EQUAL) ) { s = 3784; } else if ( (LA2_3846 == PLUS) ) { s = 3652; } else if ( (LA2_3846 == DOLLARD) ) { s = 3653; } else if ( (LA2_3846 == COMMA) ) { s = 2643; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3846 == CRLF) ) { s = 205; } else if ( (LA2_3846 == DASH || LA2_3846 == EMARK || LA2_3846 == LPAREN || LA2_3846 == RPAREN || ((LA2_3846 >= SQUOTE) && (LA2_3846 <= USCORE))) ) { s = 3654; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3846 == LSBRAQUET || LA2_3846 == RSBRAQUET) ) { s = 405; } SEEK(index2_3846); if ( s>=0 ) { return s; } } break; case 903: { ANTLR3_UINT32 LA2_1106; ANTLR3_MARKER index2_1106; LA2_1106 = LA(1); index2_1106 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1106 == COMMON_CHAR || LA2_1106 == HEX_CHAR) ) { s = 1095; } else if ( (LA2_1106 == DIGIT) ) { s = 1096; } else if ( (LA2_1106 == DASH || LA2_1106 == DOT || LA2_1106 == EMARK || LA2_1106 == LPAREN || LA2_1106 == RPAREN || ((LA2_1106 >= SQUOTE) && (LA2_1106 <= USCORE))) ) { s = 1097; } else if ( (LA2_1106 == PERCENT) ) { s = 1098; } else if ( (LA2_1106 == AND) ) { s = 1099; } else if ( (LA2_1106 == EQUAL) ) { s = 194; } else if ( (LA2_1106 == PLUS) ) { s = 1100; } else if ( (LA2_1106 == DOLLARD) ) { s = 1101; } else if ( (LA2_1106 == COMMA) ) { s = 197; } else if ( (LA2_1106 == AT) ) { s = 89; } else if ( (LA2_1106 == SP) ) { s = 35; } else if ( (LA2_1106 == QMARK) ) { s = 1102; } else if ( (LA2_1106 == SEMI) ) { s = 105; } else if ( (LA2_1106 == COLON || LA2_1106 == SLASH) ) { s = 1103; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1106 == LSBRAQUET || LA2_1106 == RSBRAQUET) ) { s = 1104; } SEEK(index2_1106); if ( s>=0 ) { return s; } } break; case 904: { ANTLR3_UINT32 LA2_3566; ANTLR3_MARKER index2_3566; LA2_3566 = LA(1); index2_3566 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3566 == SLASH) ) { s = 3319; } else if ( (LA2_3566 == QMARK) ) { s = 1751; } else if ( (LA2_3566 == SP) ) { s = 1585; } else if ( (LA2_3566 == CRLF) ) { s = 1588; } else if ( (LA2_3566 == SEMI) ) { s = 1749; } else if ( (LA2_3566 == COMMON_CHAR || LA2_3566 == HEX_CHAR) ) { s = 3015; } else if ( (LA2_3566 == DIGIT) ) { s = 3016; } else if ( (LA2_3566 == DOT) ) { s = 3017; } else if ( (LA2_3566 == PERCENT) ) { s = 3018; } else if ( (LA2_3566 == PLUS) ) { s = 3019; } else if ( (LA2_3566 == BQUOTE) ) { s = 2092; } else if ( (LA2_3566 == DASH || LA2_3566 == EMARK || LA2_3566 == LPAREN || LA2_3566 == RPAREN || ((LA2_3566 >= SQUOTE) && (LA2_3566 <= USCORE))) ) { s = 3020; } else if ( (LA2_3566 == AND || LA2_3566 == COLON || LA2_3566 == DOLLARD) ) { s = 2717; } else if ( (LA2_3566 == COMMA) ) { s = 506; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3566 == LSBRAQUET || LA2_3566 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_3566 == AT || LA2_3566 == EQUAL) ) { s = 508; } SEEK(index2_3566); if ( s>=0 ) { return s; } } break; case 905: { ANTLR3_UINT32 LA2_1566; ANTLR3_MARKER index2_1566; LA2_1566 = LA(1); index2_1566 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1566 == DOT) ) { s = 1567; } else if ( (LA2_1566 == COLON) ) { s = 201; } else if ( (LA2_1566 == AT) ) { s = 89; } else if ( (LA2_1566 == COMMON_CHAR || LA2_1566 == HEX_CHAR) ) { s = 90; } else if ( (LA2_1566 == DIGIT) ) { s = 91; } else if ( (LA2_1566 == DASH) ) { s = 95; } else if ( (LA2_1566 == PERCENT) ) { s = 93; } else if ( (LA2_1566 == SEMI) ) { s = 202; } else if ( (LA2_1566 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1566 == CRLF) ) { s = 205; } else if ( (LA2_1566 == QMARK) ) { s = 206; } else if ( (LA2_1566 == COMMA) ) { s = 97; } else if ( (LA2_1566 == EMARK || LA2_1566 == LPAREN || LA2_1566 == RPAREN || ((LA2_1566 >= SQUOTE) && (LA2_1566 <= USCORE))) ) { s = 96; } else if ( (LA2_1566 == AND || LA2_1566 == DOLLARD || LA2_1566 == EQUAL || LA2_1566 == PLUS || LA2_1566 == SLASH) ) { s = 99; } SEEK(index2_1566); if ( s>=0 ) { return s; } } break; case 906: { ANTLR3_UINT32 LA2_3625; ANTLR3_MARKER index2_3625; LA2_3625 = LA(1); index2_3625 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3625 == QMARK) ) { s = 854; } else if ( (LA2_3625 == SP) ) { s = 204; } else if ( (LA2_3625 == SLASH) ) { s = 3123; } else if ( (LA2_3625 == SEMI) ) { s = 2826; } else if ( (LA2_3625 == COMMON_CHAR || LA2_3625 == HEX_CHAR) ) { s = 3618; } else if ( (LA2_3625 == DIGIT) ) { s = 3619; } else if ( (LA2_3625 == DOT) ) { s = 3620; } else if ( (LA2_3625 == PERCENT) ) { s = 3621; } else if ( (LA2_3625 == COLON) ) { s = 3622; } else if ( (LA2_3625 == AT) ) { s = 2493; } else if ( (LA2_3625 == AND) ) { s = 3623; } else if ( (LA2_3625 == EQUAL) ) { s = 2495; } else if ( (LA2_3625 == PLUS) ) { s = 3624; } else if ( (LA2_3625 == DOLLARD) ) { s = 3625; } else if ( (LA2_3625 == COMMA) ) { s = 2498; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3625 == CRLF) ) { s = 205; } else if ( (LA2_3625 == DASH || LA2_3625 == EMARK || LA2_3625 == LPAREN || LA2_3625 == RPAREN || ((LA2_3625 >= SQUOTE) && (LA2_3625 <= USCORE))) ) { s = 3626; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3625 == LSBRAQUET || LA2_3625 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3625); if ( s>=0 ) { return s; } } break; case 907: { ANTLR3_UINT32 LA2_1758; ANTLR3_MARKER index2_1758; LA2_1758 = LA(1); index2_1758 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1758 == QMARK) ) { s = 854; } else if ( (LA2_1758 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1758 == CRLF) ) { s = 205; } else if ( (LA2_1758 == SEMI) ) { s = 1237; } else if ( (LA2_1758 == DOT) ) { s = 1758; } else if ( (LA2_1758 == COMMON_CHAR || LA2_1758 == HEX_CHAR) ) { s = 1759; } else if ( (LA2_1758 == DIGIT) ) { s = 1760; } else if ( (LA2_1758 == SLASH) ) { s = 1271; } else if ( (LA2_1758 == DASH || LA2_1758 == EMARK || LA2_1758 == LPAREN || LA2_1758 == RPAREN || ((LA2_1758 >= SQUOTE) && (LA2_1758 <= USCORE))) ) { s = 1762; } else if ( (LA2_1758 == PERCENT) ) { s = 1763; } else if ( (LA2_1758 == EQUAL) ) { s = 1764; } else if ( (LA2_1758 == COLON) ) { s = 1761; } else if ( (LA2_1758 == AND) ) { s = 1765; } else if ( (LA2_1758 == AT) ) { s = 464; } else if ( (LA2_1758 == PLUS) ) { s = 1766; } else if ( (LA2_1758 == DOLLARD) ) { s = 1767; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1758 == LSBRAQUET || LA2_1758 == RSBRAQUET) ) { s = 405; } else if ( (LA2_1758 == COMMA) ) { s = 469; } SEEK(index2_1758); if ( s>=0 ) { return s; } } break; case 908: { ANTLR3_UINT32 LA2_3260; ANTLR3_MARKER index2_3260; LA2_3260 = LA(1); index2_3260 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3260 == SP) ) { s = 2090; } else if ( (LA2_3260 == CRLF) ) { s = 2091; } else if ( (LA2_3260 == COMMON_CHAR || LA2_3260 == HEX_CHAR) ) { s = 3512; } else if ( (LA2_3260 == DIGIT) ) { s = 3513; } else if ( (LA2_3260 == DOT) ) { s = 3514; } else if ( (LA2_3260 == PERCENT) ) { s = 3515; } else if ( (LA2_3260 == PLUS) ) { s = 3516; } else if ( (LA2_3260 == BQUOTE) ) { s = 2092; } else if ( (LA2_3260 == DQUOTE) ) { s = 2093; } else if ( (LA2_3260 == SLASH) ) { s = 3226; } else if ( (LA2_3260 == QMARK) ) { s = 242; } else if ( (LA2_3260 == SEMI) ) { s = 1660; } else if ( (LA2_3260 == COLON) ) { s = 3517; } else if ( (LA2_3260 == AT) ) { s = 2111; } else if ( (LA2_3260 == AND) ) { s = 3518; } else if ( (LA2_3260 == EQUAL) ) { s = 2113; } else if ( (LA2_3260 == DOLLARD) ) { s = 3519; } else if ( (LA2_3260 == COMMA) ) { s = 2116; } else if ( (LA2_3260 == DASH || LA2_3260 == EMARK || LA2_3260 == LPAREN || LA2_3260 == RPAREN || ((LA2_3260 >= SQUOTE) && (LA2_3260 <= USCORE))) ) { s = 3520; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3260 == LSBRAQUET || LA2_3260 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3260); if ( s>=0 ) { return s; } } break; case 909: { ANTLR3_UINT32 LA2_3427; ANTLR3_MARKER index2_3427; LA2_3427 = LA(1); index2_3427 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3427 == QMARK) ) { s = 854; } else if ( (LA2_3427 == SP) ) { s = 204; } else if ( (LA2_3427 == SLASH) ) { s = 2827; } else if ( (LA2_3427 == SEMI) ) { s = 3151; } else if ( (LA2_3427 == COMMON_CHAR || LA2_3427 == HEX_CHAR) ) { s = 3419; } else if ( (LA2_3427 == DIGIT) ) { s = 3420; } else if ( (LA2_3427 == DOT) ) { s = 3421; } else if ( (LA2_3427 == PERCENT) ) { s = 3422; } else if ( (LA2_3427 == COLON) ) { s = 3423; } else if ( (LA2_3427 == AT) ) { s = 2879; } else if ( (LA2_3427 == AND) ) { s = 3424; } else if ( (LA2_3427 == EQUAL) ) { s = 3629; } else if ( (LA2_3427 == PLUS) ) { s = 3425; } else if ( (LA2_3427 == DOLLARD) ) { s = 3426; } else if ( (LA2_3427 == COMMA) ) { s = 2884; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3427 == CRLF) ) { s = 205; } else if ( (LA2_3427 == DASH || LA2_3427 == EMARK || LA2_3427 == LPAREN || LA2_3427 == RPAREN || ((LA2_3427 >= SQUOTE) && (LA2_3427 <= USCORE))) ) { s = 3427; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3427 == LSBRAQUET || LA2_3427 == RSBRAQUET) ) { s = 405; } SEEK(index2_3427); if ( s>=0 ) { return s; } } break; case 910: { ANTLR3_UINT32 LA2_3720; ANTLR3_MARKER index2_3720; LA2_3720 = LA(1); index2_3720 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3720 == QMARK) ) { s = 854; } else if ( (LA2_3720 == SP) ) { s = 204; } else if ( (LA2_3720 == SLASH) ) { s = 3226; } else if ( (LA2_3720 == SEMI) ) { s = 3251; } else if ( (LA2_3720 == COMMON_CHAR || LA2_3720 == HEX_CHAR) ) { s = 3718; } else if ( (LA2_3720 == DIGIT) ) { s = 3719; } else if ( (LA2_3720 == DOT) ) { s = 3720; } else if ( (LA2_3720 == PERCENT) ) { s = 3721; } else if ( (LA2_3720 == COLON) ) { s = 3712; } else if ( (LA2_3720 == AT) ) { s = 2578; } else if ( (LA2_3720 == AND) ) { s = 3713; } else if ( (LA2_3720 == EQUAL) ) { s = 2580; } else if ( (LA2_3720 == PLUS) ) { s = 3722; } else if ( (LA2_3720 == DOLLARD) ) { s = 3714; } else if ( (LA2_3720 == COMMA) ) { s = 2583; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3720 == CRLF) ) { s = 205; } else if ( (LA2_3720 == DASH || LA2_3720 == EMARK || LA2_3720 == LPAREN || LA2_3720 == RPAREN || ((LA2_3720 >= SQUOTE) && (LA2_3720 <= USCORE))) ) { s = 3723; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3720 == LSBRAQUET || LA2_3720 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3720); if ( s>=0 ) { return s; } } break; case 911: { ANTLR3_UINT32 LA2_2243; ANTLR3_MARKER index2_2243; LA2_2243 = LA(1); index2_2243 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2243 == QMARK) ) { s = 854; } else if ( (LA2_2243 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2243 == CRLF) ) { s = 205; } else if ( (LA2_2243 == SEMI) ) { s = 853; } else if ( (LA2_2243 == DOT) ) { s = 2242; } else if ( (LA2_2243 == COMMON_CHAR || LA2_2243 == HEX_CHAR) ) { s = 2243; } else if ( (LA2_2243 == DIGIT) ) { s = 2244; } else if ( (LA2_2243 == SLASH) ) { s = 2245; } else if ( (LA2_2243 == DASH || LA2_2243 == EMARK || LA2_2243 == LPAREN || LA2_2243 == RPAREN || ((LA2_2243 >= SQUOTE) && (LA2_2243 <= USCORE))) ) { s = 2246; } else if ( (LA2_2243 == PERCENT) ) { s = 2247; } else if ( (LA2_2243 == COLON) ) { s = 2248; } else if ( (LA2_2243 == AND) ) { s = 2249; } else if ( (LA2_2243 == AT) ) { s = 497; } else if ( (LA2_2243 == PLUS) ) { s = 2250; } else if ( (LA2_2243 == EQUAL) ) { s = 499; } else if ( (LA2_2243 == DOLLARD) ) { s = 2251; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2243 == LSBRAQUET || LA2_2243 == RSBRAQUET) ) { s = 1080; } else if ( (LA2_2243 == COMMA) ) { s = 502; } SEEK(index2_2243); if ( s>=0 ) { return s; } } break; case 912: { ANTLR3_UINT32 LA2_2821; ANTLR3_MARKER index2_2821; LA2_2821 = LA(1); index2_2821 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2821 == SEMI) ) { s = 2826; } else if ( (LA2_2821 == QMARK) ) { s = 854; } else if ( (LA2_2821 == SP) ) { s = 204; } else if ( (LA2_2821 == SLASH) ) { s = 2827; } else if ( (LA2_2821 == COMMON_CHAR || LA2_2821 == HEX_CHAR) ) { s = 2817; } else if ( (LA2_2821 == DIGIT) ) { s = 2818; } else if ( (LA2_2821 == DOT) ) { s = 2819; } else if ( (LA2_2821 == PERCENT) ) { s = 2820; } else if ( (LA2_2821 == COLON) ) { s = 2821; } else if ( (LA2_2821 == AT) ) { s = 2019; } else if ( (LA2_2821 == AND) ) { s = 2822; } else if ( (LA2_2821 == EQUAL) ) { s = 2823; } else if ( (LA2_2821 == PLUS) ) { s = 2824; } else if ( (LA2_2821 == DOLLARD) ) { s = 2825; } else if ( (LA2_2821 == COMMA) ) { s = 2024; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2821 == CRLF) ) { s = 205; } else if ( (LA2_2821 == DASH || LA2_2821 == EMARK || LA2_2821 == LPAREN || LA2_2821 == RPAREN || ((LA2_2821 >= SQUOTE) && (LA2_2821 <= USCORE))) ) { s = 2828; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2821 == LSBRAQUET || LA2_2821 == RSBRAQUET) ) { s = 405; } SEEK(index2_2821); if ( s>=0 ) { return s; } } break; case 913: { ANTLR3_UINT32 LA2_1542; ANTLR3_MARKER index2_1542; LA2_1542 = LA(1); index2_1542 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1542 == AT) ) { s = 89; } else if ( (LA2_1542 == COMMON_CHAR || LA2_1542 == HEX_CHAR) ) { s = 717; } else if ( (LA2_1542 == DIGIT) ) { s = 718; } else if ( (LA2_1542 == DASH || LA2_1542 == DOT || LA2_1542 == EMARK || LA2_1542 == LPAREN || LA2_1542 == RPAREN || ((LA2_1542 >= SQUOTE) && (LA2_1542 <= USCORE))) ) { s = 719; } else if ( (LA2_1542 == PERCENT) ) { s = 720; } else if ( (LA2_1542 == AND) ) { s = 193; } else if ( (LA2_1542 == EQUAL) ) { s = 721; } else if ( (LA2_1542 == PLUS) ) { s = 722; } else if ( (LA2_1542 == DOLLARD) ) { s = 723; } else if ( (LA2_1542 == COMMA) ) { s = 197; } else if ( (LA2_1542 == QMARK) ) { s = 724; } else if ( (LA2_1542 == SP) ) { s = 35; } else if ( (LA2_1542 == SEMI) ) { s = 105; } else if ( (LA2_1542 == COLON || LA2_1542 == SLASH) ) { s = 725; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1542 == LSBRAQUET || LA2_1542 == RSBRAQUET) ) { s = 414; } SEEK(index2_1542); if ( s>=0 ) { return s; } } break; case 914: { ANTLR3_UINT32 LA2_2438; ANTLR3_MARKER index2_2438; LA2_2438 = LA(1); index2_2438 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2438 == AT) ) { s = 89; } else if ( (LA2_2438 == COMMON_CHAR || LA2_2438 == HEX_CHAR) ) { s = 1544; } else if ( (LA2_2438 == DIGIT) ) { s = 1545; } else if ( (LA2_2438 == DASH || LA2_2438 == DOT || LA2_2438 == EMARK || LA2_2438 == LPAREN || LA2_2438 == RPAREN || ((LA2_2438 >= SQUOTE) && (LA2_2438 <= USCORE))) ) { s = 1546; } else if ( (LA2_2438 == PERCENT) ) { s = 1547; } else if ( (LA2_2438 == AND) ) { s = 193; } else if ( (LA2_2438 == EQUAL) ) { s = 1986; } else if ( (LA2_2438 == PLUS) ) { s = 1548; } else if ( (LA2_2438 == DOLLARD) ) { s = 1549; } else if ( (LA2_2438 == COMMA) ) { s = 197; } else if ( (LA2_2438 == QMARK) ) { s = 1550; } else if ( (LA2_2438 == SP) ) { s = 35; } else if ( (LA2_2438 == SEMI) ) { s = 105; } else if ( (LA2_2438 == COLON || LA2_2438 == SLASH) ) { s = 1551; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2438 == LSBRAQUET || LA2_2438 == RSBRAQUET) ) { s = 1552; } SEEK(index2_2438); if ( s>=0 ) { return s; } } break; case 915: { ANTLR3_UINT32 LA2_1790; ANTLR3_MARKER index2_1790; LA2_1790 = LA(1); index2_1790 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1790 == QMARK) ) { s = 1308; } else if ( (LA2_1790 == SP) ) { s = 204; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1790 == CRLF) ) { s = 205; } else if ( (LA2_1790 == SEMI) ) { s = 1307; } else if ( (LA2_1790 == DOT) ) { s = 1787; } else if ( (LA2_1790 == COMMON_CHAR || LA2_1790 == HEX_CHAR) ) { s = 1788; } else if ( (LA2_1790 == DIGIT) ) { s = 1789; } else if ( (LA2_1790 == AND || LA2_1790 == COLON || LA2_1790 == DOLLARD || LA2_1790 == PLUS || LA2_1790 == SLASH) ) { s = 1790; } else if ( (LA2_1790 == DASH || LA2_1790 == EMARK || LA2_1790 == LPAREN || LA2_1790 == RPAREN || ((LA2_1790 >= SQUOTE) && (LA2_1790 <= USCORE))) ) { s = 1791; } else if ( (LA2_1790 == PERCENT) ) { s = 1792; } else if ( (LA2_1790 == EQUAL) ) { s = 2284; } else if ( (LA2_1790 == COMMA) ) { s = 506; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1790 == LSBRAQUET || LA2_1790 == RSBRAQUET) ) { s = 405; } else if ( (LA2_1790 == AT) ) { s = 508; } SEEK(index2_1790); if ( s>=0 ) { return s; } } break; case 916: { ANTLR3_UINT32 LA2_2822; ANTLR3_MARKER index2_2822; LA2_2822 = LA(1); index2_2822 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2822 == SEMI) ) { s = 2826; } else if ( (LA2_2822 == QMARK) ) { s = 854; } else if ( (LA2_2822 == SP) ) { s = 204; } else if ( (LA2_2822 == SLASH) ) { s = 2827; } else if ( (LA2_2822 == COMMON_CHAR || LA2_2822 == HEX_CHAR) ) { s = 2817; } else if ( (LA2_2822 == DIGIT) ) { s = 2818; } else if ( (LA2_2822 == DOT) ) { s = 2819; } else if ( (LA2_2822 == PERCENT) ) { s = 2820; } else if ( (LA2_2822 == COLON) ) { s = 2821; } else if ( (LA2_2822 == AT) ) { s = 2019; } else if ( (LA2_2822 == AND) ) { s = 2822; } else if ( (LA2_2822 == EQUAL) ) { s = 2823; } else if ( (LA2_2822 == PLUS) ) { s = 2824; } else if ( (LA2_2822 == DOLLARD) ) { s = 2825; } else if ( (LA2_2822 == COMMA) ) { s = 2024; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2822 == CRLF) ) { s = 205; } else if ( (LA2_2822 == DASH || LA2_2822 == EMARK || LA2_2822 == LPAREN || LA2_2822 == RPAREN || ((LA2_2822 >= SQUOTE) && (LA2_2822 <= USCORE))) ) { s = 2828; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2822 == LSBRAQUET || LA2_2822 == RSBRAQUET) ) { s = 405; } SEEK(index2_2822); if ( s>=0 ) { return s; } } break; case 917: { ANTLR3_UINT32 LA2_2474; ANTLR3_MARKER index2_2474; LA2_2474 = LA(1); index2_2474 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2474 == SEMI) ) { s = 1140; } else if ( (LA2_2474 == QMARK) ) { s = 242; } else if ( (LA2_2474 == SP) ) { s = 35; } else if ( (LA2_2474 == SLASH) ) { s = 2830; } else if ( (LA2_2474 == COMMON_CHAR || LA2_2474 == HEX_CHAR) ) { s = 2851; } else if ( (LA2_2474 == DIGIT) ) { s = 2852; } else if ( (LA2_2474 == DOT) ) { s = 2853; } else if ( (LA2_2474 == PERCENT) ) { s = 2854; } else if ( (LA2_2474 == COLON) ) { s = 2855; } else if ( (LA2_2474 == AT) ) { s = 1134; } else if ( (LA2_2474 == AND) ) { s = 2856; } else if ( (LA2_2474 == EQUAL) ) { s = 1136; } else if ( (LA2_2474 == PLUS) ) { s = 2857; } else if ( (LA2_2474 == DOLLARD) ) { s = 2858; } else if ( (LA2_2474 == COMMA) ) { s = 1139; } else if ( (LA2_2474 == DASH || LA2_2474 == EMARK || LA2_2474 == LPAREN || LA2_2474 == RPAREN || ((LA2_2474 >= SQUOTE) && (LA2_2474 <= USCORE))) ) { s = 2859; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2474 == LSBRAQUET || LA2_2474 == RSBRAQUET) ) { s = 1080; } SEEK(index2_2474); if ( s>=0 ) { return s; } } break; case 918: { ANTLR3_UINT32 LA2_3884; ANTLR3_MARKER index2_3884; LA2_3884 = LA(1); index2_3884 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3884 == QMARK) ) { s = 854; } else if ( (LA2_3884 == SP) ) { s = 204; } else if ( (LA2_3884 == SLASH) ) { s = 3435; } else if ( (LA2_3884 == SEMI) ) { s = 3463; } else if ( (LA2_3884 == COMMON_CHAR || LA2_3884 == HEX_CHAR) ) { s = 3837; } else if ( (LA2_3884 == DIGIT) ) { s = 3838; } else if ( (LA2_3884 == DOT) ) { s = 3839; } else if ( (LA2_3884 == PERCENT) ) { s = 3840; } else if ( (LA2_3884 == COLON) ) { s = 3841; } else if ( (LA2_3884 == AT) ) { s = 2638; } else if ( (LA2_3884 == AND) ) { s = 3842; } else if ( (LA2_3884 == EQUAL) ) { s = 2640; } else if ( (LA2_3884 == PLUS) ) { s = 3843; } else if ( (LA2_3884 == DOLLARD) ) { s = 3844; } else if ( (LA2_3884 == COMMA) ) { s = 2643; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3884 == CRLF) ) { s = 205; } else if ( (LA2_3884 == DASH || LA2_3884 == EMARK || LA2_3884 == LPAREN || LA2_3884 == RPAREN || ((LA2_3884 >= SQUOTE) && (LA2_3884 <= USCORE))) ) { s = 3845; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3884 == LSBRAQUET || LA2_3884 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3884); if ( s>=0 ) { return s; } } break; case 919: { ANTLR3_UINT32 LA2_2825; ANTLR3_MARKER index2_2825; LA2_2825 = LA(1); index2_2825 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2825 == SEMI) ) { s = 2826; } else if ( (LA2_2825 == QMARK) ) { s = 854; } else if ( (LA2_2825 == SP) ) { s = 204; } else if ( (LA2_2825 == SLASH) ) { s = 2827; } else if ( (LA2_2825 == COMMON_CHAR || LA2_2825 == HEX_CHAR) ) { s = 2817; } else if ( (LA2_2825 == DIGIT) ) { s = 2818; } else if ( (LA2_2825 == DOT) ) { s = 2819; } else if ( (LA2_2825 == PERCENT) ) { s = 2820; } else if ( (LA2_2825 == COLON) ) { s = 2821; } else if ( (LA2_2825 == AT) ) { s = 2019; } else if ( (LA2_2825 == AND) ) { s = 2822; } else if ( (LA2_2825 == EQUAL) ) { s = 2823; } else if ( (LA2_2825 == PLUS) ) { s = 2824; } else if ( (LA2_2825 == DOLLARD) ) { s = 2825; } else if ( (LA2_2825 == COMMA) ) { s = 2024; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2825 == CRLF) ) { s = 205; } else if ( (LA2_2825 == DASH || LA2_2825 == EMARK || LA2_2825 == LPAREN || LA2_2825 == RPAREN || ((LA2_2825 >= SQUOTE) && (LA2_2825 <= USCORE))) ) { s = 2828; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2825 == LSBRAQUET || LA2_2825 == RSBRAQUET) ) { s = 405; } SEEK(index2_2825); if ( s>=0 ) { return s; } } break; case 920: { ANTLR3_UINT32 LA2_3450; ANTLR3_MARKER index2_3450; LA2_3450 = LA(1); index2_3450 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3450 == SLASH) ) { s = 3171; } else if ( (LA2_3450 == QMARK) ) { s = 854; } else if ( (LA2_3450 == SP) ) { s = 204; } else if ( (LA2_3450 == SEMI) ) { s = 3170; } else if ( (LA2_3450 == COMMON_CHAR || LA2_3450 == HEX_CHAR) ) { s = 3445; } else if ( (LA2_3450 == DIGIT) ) { s = 3446; } else if ( (LA2_3450 == DOT) ) { s = 3447; } else if ( (LA2_3450 == PERCENT) ) { s = 3448; } else if ( (LA2_3450 == COLON) ) { s = 3449; } else if ( (LA2_3450 == AT) ) { s = 2184; } else if ( (LA2_3450 == AND) ) { s = 3450; } else if ( (LA2_3450 == EQUAL) ) { s = 3643; } else if ( (LA2_3450 == PLUS) ) { s = 3451; } else if ( (LA2_3450 == DOLLARD) ) { s = 3452; } else if ( (LA2_3450 == COMMA) ) { s = 2189; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3450 == CRLF) ) { s = 205; } else if ( (LA2_3450 == DASH || LA2_3450 == EMARK || LA2_3450 == LPAREN || LA2_3450 == RPAREN || ((LA2_3450 >= SQUOTE) && (LA2_3450 <= USCORE))) ) { s = 3453; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3450 == LSBRAQUET || LA2_3450 == RSBRAQUET) ) { s = 405; } SEEK(index2_3450); if ( s>=0 ) { return s; } } break; case 921: { ANTLR3_UINT32 LA2_2824; ANTLR3_MARKER index2_2824; LA2_2824 = LA(1); index2_2824 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_2824 == SEMI) ) { s = 2826; } else if ( (LA2_2824 == QMARK) ) { s = 854; } else if ( (LA2_2824 == SP) ) { s = 204; } else if ( (LA2_2824 == SLASH) ) { s = 2827; } else if ( (LA2_2824 == COMMON_CHAR || LA2_2824 == HEX_CHAR) ) { s = 2817; } else if ( (LA2_2824 == DIGIT) ) { s = 2818; } else if ( (LA2_2824 == DOT) ) { s = 2819; } else if ( (LA2_2824 == PERCENT) ) { s = 2820; } else if ( (LA2_2824 == COLON) ) { s = 2821; } else if ( (LA2_2824 == AT) ) { s = 2019; } else if ( (LA2_2824 == AND) ) { s = 2822; } else if ( (LA2_2824 == EQUAL) ) { s = 2823; } else if ( (LA2_2824 == PLUS) ) { s = 2824; } else if ( (LA2_2824 == DOLLARD) ) { s = 2825; } else if ( (LA2_2824 == COMMA) ) { s = 2024; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2824 == CRLF) ) { s = 205; } else if ( (LA2_2824 == DASH || LA2_2824 == EMARK || LA2_2824 == LPAREN || LA2_2824 == RPAREN || ((LA2_2824 >= SQUOTE) && (LA2_2824 <= USCORE))) ) { s = 2828; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_2824 == LSBRAQUET || LA2_2824 == RSBRAQUET) ) { s = 405; } SEEK(index2_2824); if ( s>=0 ) { return s; } } break; case 922: { ANTLR3_UINT32 LA2_3449; ANTLR3_MARKER index2_3449; LA2_3449 = LA(1); index2_3449 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3449 == SLASH) ) { s = 3171; } else if ( (LA2_3449 == QMARK) ) { s = 854; } else if ( (LA2_3449 == SP) ) { s = 204; } else if ( (LA2_3449 == SEMI) ) { s = 3170; } else if ( (LA2_3449 == COMMON_CHAR || LA2_3449 == HEX_CHAR) ) { s = 3445; } else if ( (LA2_3449 == DIGIT) ) { s = 3446; } else if ( (LA2_3449 == DOT) ) { s = 3447; } else if ( (LA2_3449 == PERCENT) ) { s = 3448; } else if ( (LA2_3449 == COLON) ) { s = 3449; } else if ( (LA2_3449 == AT) ) { s = 2184; } else if ( (LA2_3449 == AND) ) { s = 3450; } else if ( (LA2_3449 == EQUAL) ) { s = 3643; } else if ( (LA2_3449 == PLUS) ) { s = 3451; } else if ( (LA2_3449 == DOLLARD) ) { s = 3452; } else if ( (LA2_3449 == COMMA) ) { s = 2189; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3449 == CRLF) ) { s = 205; } else if ( (LA2_3449 == DASH || LA2_3449 == EMARK || LA2_3449 == LPAREN || LA2_3449 == RPAREN || ((LA2_3449 >= SQUOTE) && (LA2_3449 <= USCORE))) ) { s = 3453; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3449 == LSBRAQUET || LA2_3449 == RSBRAQUET) ) { s = 405; } SEEK(index2_3449); if ( s>=0 ) { return s; } } break; case 923: { ANTLR3_UINT32 LA2_3162; ANTLR3_MARKER index2_3162; LA2_3162 = LA(1); index2_3162 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3162 == SEMI) ) { s = 3170; } else if ( (LA2_3162 == SLASH) ) { s = 3171; } else if ( (LA2_3162 == QMARK) ) { s = 854; } else if ( (LA2_3162 == SP) ) { s = 204; } else if ( (LA2_3162 == COMMON_CHAR || LA2_3162 == HEX_CHAR) ) { s = 3162; } else if ( (LA2_3162 == DIGIT) ) { s = 3179; } else if ( (LA2_3162 == DOT) ) { s = 3163; } else if ( (LA2_3162 == PERCENT) ) { s = 3164; } else if ( (LA2_3162 == COLON) ) { s = 3165; } else if ( (LA2_3162 == AT) ) { s = 1710; } else if ( (LA2_3162 == AND) ) { s = 3166; } else if ( (LA2_3162 == EQUAL) ) { s = 3167; } else if ( (LA2_3162 == PLUS) ) { s = 3168; } else if ( (LA2_3162 == DOLLARD) ) { s = 3169; } else if ( (LA2_3162 == COMMA) ) { s = 1715; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3162 == CRLF) ) { s = 205; } else if ( (LA2_3162 == DASH || LA2_3162 == EMARK || LA2_3162 == LPAREN || LA2_3162 == RPAREN || ((LA2_3162 >= SQUOTE) && (LA2_3162 <= USCORE))) ) { s = 3172; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3162 == LSBRAQUET || LA2_3162 == RSBRAQUET) ) { s = 405; } SEEK(index2_3162); if ( s>=0 ) { return s; } } break; case 924: { ANTLR3_UINT32 LA2_3451; ANTLR3_MARKER index2_3451; LA2_3451 = LA(1); index2_3451 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3451 == SLASH) ) { s = 3171; } else if ( (LA2_3451 == QMARK) ) { s = 854; } else if ( (LA2_3451 == SP) ) { s = 204; } else if ( (LA2_3451 == SEMI) ) { s = 3170; } else if ( (LA2_3451 == COMMON_CHAR || LA2_3451 == HEX_CHAR) ) { s = 3445; } else if ( (LA2_3451 == DIGIT) ) { s = 3446; } else if ( (LA2_3451 == DOT) ) { s = 3447; } else if ( (LA2_3451 == PERCENT) ) { s = 3448; } else if ( (LA2_3451 == COLON) ) { s = 3449; } else if ( (LA2_3451 == AT) ) { s = 2184; } else if ( (LA2_3451 == AND) ) { s = 3450; } else if ( (LA2_3451 == EQUAL) ) { s = 3643; } else if ( (LA2_3451 == PLUS) ) { s = 3451; } else if ( (LA2_3451 == DOLLARD) ) { s = 3452; } else if ( (LA2_3451 == COMMA) ) { s = 2189; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3451 == CRLF) ) { s = 205; } else if ( (LA2_3451 == DASH || LA2_3451 == EMARK || LA2_3451 == LPAREN || LA2_3451 == RPAREN || ((LA2_3451 >= SQUOTE) && (LA2_3451 <= USCORE))) ) { s = 3453; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3451 == LSBRAQUET || LA2_3451 == RSBRAQUET) ) { s = 405; } SEEK(index2_3451); if ( s>=0 ) { return s; } } break; case 925: { ANTLR3_UINT32 LA2_3452; ANTLR3_MARKER index2_3452; LA2_3452 = LA(1); index2_3452 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3452 == SLASH) ) { s = 3171; } else if ( (LA2_3452 == QMARK) ) { s = 854; } else if ( (LA2_3452 == SP) ) { s = 204; } else if ( (LA2_3452 == SEMI) ) { s = 3170; } else if ( (LA2_3452 == COMMON_CHAR || LA2_3452 == HEX_CHAR) ) { s = 3445; } else if ( (LA2_3452 == DIGIT) ) { s = 3446; } else if ( (LA2_3452 == DOT) ) { s = 3447; } else if ( (LA2_3452 == PERCENT) ) { s = 3448; } else if ( (LA2_3452 == COLON) ) { s = 3449; } else if ( (LA2_3452 == AT) ) { s = 2184; } else if ( (LA2_3452 == AND) ) { s = 3450; } else if ( (LA2_3452 == EQUAL) ) { s = 3643; } else if ( (LA2_3452 == PLUS) ) { s = 3451; } else if ( (LA2_3452 == DOLLARD) ) { s = 3452; } else if ( (LA2_3452 == COMMA) ) { s = 2189; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3452 == CRLF) ) { s = 205; } else if ( (LA2_3452 == DASH || LA2_3452 == EMARK || LA2_3452 == LPAREN || LA2_3452 == RPAREN || ((LA2_3452 >= SQUOTE) && (LA2_3452 <= USCORE))) ) { s = 3453; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3452 == LSBRAQUET || LA2_3452 == RSBRAQUET) ) { s = 405; } SEEK(index2_3452); if ( s>=0 ) { return s; } } break; case 926: { ANTLR3_UINT32 LA2_3241; ANTLR3_MARKER index2_3241; LA2_3241 = LA(1); index2_3241 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3241 == SLASH) ) { s = 2928; } else if ( (LA2_3241 == QMARK) ) { s = 854; } else if ( (LA2_3241 == SP) ) { s = 204; } else if ( (LA2_3241 == SEMI) ) { s = 2927; } else if ( (LA2_3241 == COMMON_CHAR || LA2_3241 == HEX_CHAR) ) { s = 3236; } else if ( (LA2_3241 == DIGIT) ) { s = 3237; } else if ( (LA2_3241 == DOT) ) { s = 3238; } else if ( (LA2_3241 == PERCENT) ) { s = 3239; } else if ( (LA2_3241 == COLON) ) { s = 2954; } else if ( (LA2_3241 == AT) ) { s = 2111; } else if ( (LA2_3241 == AND) ) { s = 2955; } else if ( (LA2_3241 == EQUAL) ) { s = 3264; } else if ( (LA2_3241 == PLUS) ) { s = 3240; } else if ( (LA2_3241 == DOLLARD) ) { s = 2956; } else if ( (LA2_3241 == COMMA) ) { s = 2116; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3241 == CRLF) ) { s = 205; } else if ( (LA2_3241 == DASH || LA2_3241 == EMARK || LA2_3241 == LPAREN || LA2_3241 == RPAREN || ((LA2_3241 >= SQUOTE) && (LA2_3241 <= USCORE))) ) { s = 3241; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3241 == LSBRAQUET || LA2_3241 == RSBRAQUET) ) { s = 405; } SEEK(index2_3241); if ( s>=0 ) { return s; } } break; case 927: { ANTLR3_UINT32 LA2_3775; ANTLR3_MARKER index2_3775; LA2_3775 = LA(1); index2_3775 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3775 == SLASH) ) { s = 3435; } else if ( (LA2_3775 == QMARK) ) { s = 854; } else if ( (LA2_3775 == SP) ) { s = 204; } else if ( (LA2_3775 == SEMI) ) { s = 3170; } else if ( (LA2_3775 == COMMON_CHAR || LA2_3775 == HEX_CHAR) ) { s = 3773; } else if ( (LA2_3775 == DIGIT) ) { s = 3774; } else if ( (LA2_3775 == DOT) ) { s = 3775; } else if ( (LA2_3775 == PERCENT) ) { s = 3776; } else if ( (LA2_3775 == COLON) ) { s = 3777; } else if ( (LA2_3775 == AT) ) { s = 2184; } else if ( (LA2_3775 == AND) ) { s = 3778; } else if ( (LA2_3775 == EQUAL) ) { s = 2186; } else if ( (LA2_3775 == PLUS) ) { s = 3779; } else if ( (LA2_3775 == DOLLARD) ) { s = 3780; } else if ( (LA2_3775 == COMMA) ) { s = 2189; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3775 == CRLF) ) { s = 205; } else if ( (LA2_3775 == DASH || LA2_3775 == EMARK || LA2_3775 == LPAREN || LA2_3775 == RPAREN || ((LA2_3775 >= SQUOTE) && (LA2_3775 <= USCORE))) ) { s = 3781; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3775 == LSBRAQUET || LA2_3775 == RSBRAQUET) ) { s = 1080; } SEEK(index2_3775); if ( s>=0 ) { return s; } } break; case 928: { ANTLR3_UINT32 LA2_1553; ANTLR3_MARKER index2_1553; LA2_1553 = LA(1); index2_1553 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_1553 == QMARK) ) { s = 1550; } else if ( (LA2_1553 == COMMON_CHAR || LA2_1553 == HEX_CHAR) ) { s = 1989; } else if ( (LA2_1553 == DIGIT) ) { s = 1990; } else if ( (LA2_1553 == DASH || LA2_1553 == DOT || LA2_1553 == EMARK || LA2_1553 == LPAREN || LA2_1553 == RPAREN || ((LA2_1553 >= SQUOTE) && (LA2_1553 <= USCORE))) ) { s = 1991; } else if ( (LA2_1553 == PERCENT) ) { s = 1992; } else if ( (LA2_1553 == SP) ) { s = 35; } else if ( (LA2_1553 == SEMI) ) { s = 105; } else if ( (LA2_1553 == COMMA) ) { s = 106; } else if ( (LA2_1553 == COLON || LA2_1553 == DOLLARD || LA2_1553 == PLUS || LA2_1553 == SLASH) ) { s = 1551; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_1553 == LSBRAQUET || LA2_1553 == RSBRAQUET) ) { s = 1552; } else if ( (((LA2_1553 >= AND) && (LA2_1553 <= AT)) || LA2_1553 == EQUAL) ) { s = 108; } SEEK(index2_1553); if ( s>=0 ) { return s; } } break; case 929: { ANTLR3_UINT32 LA2_3648; ANTLR3_MARKER index2_3648; LA2_3648 = LA(1); index2_3648 = INDEX(); REWINDLAST(); s = -1; if ( (LA2_3648 == QMARK) ) { s = 854; } else if ( (LA2_3648 == SP) ) { s = 204; } else if ( (LA2_3648 == SLASH) ) { s = 3171; } else if ( (LA2_3648 == SEMI) ) { s = 3463; } else if ( (LA2_3648 == COMMON_CHAR || LA2_3648 == HEX_CHAR) ) { s = 3646; } else if ( (LA2_3648 == DIGIT) ) { s = 3647; } else if ( (LA2_3648 == DOT) ) { s = 3648; } else if ( (LA2_3648 == PERCENT) ) { s = 3649; } else if ( (LA2_3648 == COLON) ) { s = 3650; } else if ( (LA2_3648 == AT) ) { s = 2638; } else if ( (LA2_3648 == AND) ) { s = 3651; } else if ( (LA2_3648 == EQUAL) ) { s = 3784; } else if ( (LA2_3648 == PLUS) ) { s = 3652; } else if ( (LA2_3648 == DOLLARD) ) { s = 3653; } else if ( (LA2_3648 == COMMA) ) { s = 2643; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3648 == CRLF) ) { s = 205; } else if ( (LA2_3648 == DASH || LA2_3648 == EMARK || LA2_3648 == LPAREN || LA2_3648 == RPAREN || ((LA2_3648 >= SQUOTE) && (LA2_3648 <= USCORE))) ) { s = 3654; } else if ( (synpred1_belle_sip_message(ctx)) && (LA2_3648 == LSBRAQUET || LA2_3648 == RSBRAQUET) ) { s = 405; } SEEK(index2_3648); if ( s>=0 ) { return s; } } break; } if (BACKTRACKING > 0) { FAILEDFLAG = ANTLR3_TRUE; return -1; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)"117:6: ( ( (~ ( CRLF ) )* sip_version CRLF )=> request_line | ( (~ ( CRLF ) )* http_version CRLF )=> http_request_line )"; EXCEPTION->decisionNum = 2; EXCEPTION->state = _s; return -1; } /* Declare tracking structure for Cyclic DFA 2 */ static ANTLR3_CYCLIC_DFA cdfa2 = { 2, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"117:6: ( ( (~ ( CRLF ) )* sip_version CRLF )=> request_line | ( (~ ( CRLF ) )* http_version CRLF )=> http_request_line )", (CDFA_SPECIAL_FUNC) dfa2_sst, antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa2_eot, /* EOT table */ dfa2_eof, /* EOF table */ dfa2_min, /* Minimum tokens for each state */ dfa2_max, /* Maximum tokens for each state */ dfa2_accept, /* Accept table */ dfa2_special, /* Special transition states */ dfa2_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 2 * --------------------- *//** Static dfa state tables for Cyclic dfa: * 126:6: ( uri | generic_uri ) */ static const ANTLR3_INT32 dfa4_eot[1049] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa4_eof[1049] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa4_min[1049] = { 6, 6, -1, -1, 4, 6, 6, 6, 6, 6, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 4, 13, 4, 4, 4, 4, 4, 4, 0, 0, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 0, 0, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 13, 4, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 4, 4, 4, 0, 0, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 13, 4, 0, 0, 4, 0, 4, 0, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 0, 0, 4, 4, 4, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 8, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 0, 0, 4, 0, 4, 0, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 0, 0, 4, 4, 13, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 13, 4, 0, 0, 4, 0, 4, 0, 4, 13, 4, 0, 0, 4, 0, 4, 0, 4, 0, 0, 4, 4, 0, 0, 4, 0, 0, 4, 4, 13, 0, 0, 4, 4, 0, 0, 4, 8, 8, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 0, 0, 4, 0, 4, 0, 4, 4, 4, 4, 6, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 4, 4, 13, 4, 0, 0, 4, 0, 4, 0, 4, 13, 4, 0, 0, 4, 0, 4, 0, 4, 0, 0, 4, 4, 0, 0, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 0, 0, 4, 4, 4, 4, 0, 0, 4, 4, 4, 0, 4, 4, 0, 0, 4, 4, 8, 0, 8, 4, 13, 0, 0, 4, 4, 0, 0, 4, 4, 13, 0, 0, 4, 4, 0, 0, 4, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 4, 4, 4, 6, 6, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 4, 4, 0, 0, 4, 4, 4, 0, 0, 4, 4, 4, 4, 0, 0, 4, 4, 4, 13, 4, 0, 0, 4, 0, 4, 0, 4, 0, 0, 4, 4, 0, 0, 4, 0, 0, 4, 4, 0, 0, 4, 0, 0, 4, 0, 0, 4, 4, 0, 0, 4, 8, 8, 8, 8, 13, 0, 8, 4, 4, 0, 0, 4, 4, 4, 4, 0, 0, 4, 4, 4, 13, 0, 0, 4, 4, 0, 0, 4, 0, 0, 4, 4, 0, 0, 4, 4, 4, 4, 6, 4, 4, 4, 13, 4, 0, 0, 4, 0, 4, 0, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 4, 4, 0, 0, 4, 0, 0, 4, 4, 0, 0, 4, 0, 0, 4, 4, 4, 0, 0, 4, 4, 4, 4, 0, 4, 8, 0, 8, 8, 0, 13, 0, 8, 13, 0, 13, 13, 0, 0, 0, 4, 4, 0, 0, 4, 0, 0, 4, 4, 0, 0, 4, 4, 4, 0, 0, 4, 4, 4, 6, 6, 4, 4, 0, 0, 4, 4, 13, 4, 0, 0, 4, 0, 4, 0, 4, 13, 4, 0, 0, 4, 0, 4, 0, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 0, 0, 4, 4, 4, 0, 0, 0, 4, 4, 0, 0, 4, 0, 0, 4, 0, 0, 4, 0, 0, 4, 8, 13, 0, 0, 8, 0, 13, 8, 0, 8, 8, 13, 13, 4, 4, 0, 0, 4, 4, 0, 0, 4, 0, 0, 4, 4, 4, 0, 0, 4, 4, 0, 0, 4, 4, 4, 0, 0, 4, 4, 4, 4, 0, 0, 4, 4, 13, 4, 0, 0, 4, 0, 4, 0, 4, 4, 0, 0, 0, 4, 0, 0, 4, 4, 0, 0, 0, 8, 0, 8, 8, 0, 13, 13, 0, 8, 0, 0, 13, 13, 15, 0, 0, 4, 0, 0, 4, 4, 0, 4, 0, 0, 4, 4, 0, 0, 4, 0, 0, 4, 4, 0, 0, 4, 4, 4, 0, 0, 4, 4, 4, 0, 0, 0, 0, 4, 0, 8, 0, 0, 15, 13, 8, 0, 15, 13, 0, 0, 0, 0, 4, 0, 0, 4, 4, 4, 0, 0, 4, 4, 0, 0, 4, 0, 8, 0, 13, 13, 0, 13, 13, 0, 0, 0, 0, 4, 0, 0, 4, 4, 0, 15, 13, 15, 13, 0, 0, 0, 0, 4, 13, 0, 13, 0, 0, 33, 0, 33, 0, 0, 0 }; static const ANTLR3_INT32 dfa4_max[1049] = { 40, 40, -1, -1, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 0, 0, 40, 19, 40, 40, 40, 40, 40, 40, 0, 0, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 0, 0, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 19, 40, 0, 0, 40, 0, 40, 0, 0, 0, 0, 0, 40, 40, 40, 0, 0, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 19, 40, 0, 0, 40, 0, 40, 0, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 0, 0, 40, 40, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 0, 0, 40, 0, 40, 0, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 0, 0, 40, 40, 19, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 19, 40, 0, 0, 40, 0, 40, 0, 40, 19, 40, 0, 0, 40, 0, 40, 0, 40, 0, 0, 40, 40, 0, 0, 40, 0, 0, 40, 40, 19, 0, 0, 40, 40, 0, 0, 40, 33, 8, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 0, 0, 40, 0, 40, 0, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 0, 0, 40, 40, 19, 40, 0, 0, 40, 0, 40, 0, 40, 19, 40, 0, 0, 40, 0, 40, 0, 40, 0, 0, 40, 40, 0, 0, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 0, 0, 40, 40, 40, 40, 0, 0, 40, 40, 40, 0, 40, 40, 0, 0, 40, 40, 19, 0, 33, 40, 19, 0, 0, 40, 40, 0, 0, 40, 40, 19, 0, 0, 40, 40, 0, 0, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 0, 0, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 0, 0, 40, 40, 0, 0, 40, 40, 40, 0, 0, 40, 40, 40, 40, 0, 0, 40, 40, 40, 19, 40, 0, 0, 40, 0, 40, 0, 40, 0, 0, 40, 40, 0, 0, 40, 0, 0, 40, 40, 0, 0, 40, 0, 0, 40, 0, 0, 40, 40, 0, 0, 40, 33, 33, 33, 33, 13, 0, 33, 40, 40, 0, 0, 40, 40, 40, 40, 0, 0, 40, 40, 40, 19, 0, 0, 40, 40, 0, 0, 40, 0, 0, 40, 40, 0, 0, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 0, 0, 40, 0, 40, 0, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 0, 0, 40, 40, 0, 0, 40, 0, 0, 40, 40, 0, 0, 40, 0, 0, 40, 40, 40, 0, 0, 40, 40, 40, 40, 0, 40, 33, 0, 33, 33, 0, 13, 0, 33, 19, 0, 13, 15, 0, 0, 0, 40, 40, 0, 0, 40, 0, 0, 40, 40, 0, 0, 40, 40, 40, 0, 0, 40, 40, 40, 40, 40, 40, 40, 0, 0, 40, 40, 19, 40, 0, 0, 40, 0, 40, 0, 40, 19, 40, 0, 0, 40, 0, 40, 0, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 0, 0, 40, 40, 40, 0, 0, 0, 40, 40, 0, 0, 40, 0, 0, 40, 0, 0, 40, 0, 0, 40, 33, 19, 0, 0, 33, 0, 15, 33, 0, 33, 33, 15, 15, 40, 40, 0, 0, 40, 40, 0, 0, 40, 0, 0, 40, 40, 40, 0, 0, 40, 40, 0, 0, 40, 40, 40, 0, 0, 40, 40, 40, 40, 0, 0, 40, 40, 19, 40, 0, 0, 40, 0, 40, 0, 40, 40, 0, 0, 0, 40, 0, 0, 40, 40, 0, 0, 0, 33, 0, 33, 33, 0, 15, 13, 0, 33, 0, 0, 15, 13, 15, 0, 0, 40, 0, 0, 40, 40, 0, 40, 0, 0, 40, 40, 0, 0, 40, 0, 0, 40, 40, 0, 0, 40, 40, 40, 0, 0, 40, 40, 40, 0, 0, 0, 0, 40, 0, 33, 0, 0, 15, 15, 33, 0, 15, 15, 0, 0, 0, 0, 40, 0, 0, 40, 40, 40, 0, 0, 40, 40, 0, 0, 40, 0, 33, 0, 15, 13, 0, 15, 13, 0, 0, 0, 0, 40, 0, 0, 40, 40, 0, 15, 33, 15, 33, 0, 0, 0, 0, 40, 33, 0, 33, 0, 0, 33, 0, 33, 0, 0, 0 }; static const ANTLR3_INT32 dfa4_accept[1049] = { -1, -1, 1, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa4_special[1049] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 213, 58, -1, -1, -1, -1, -1, -1, -1, -1, 91, 214, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 215, 59, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 29, 52, -1, 80, -1, 30, 216, 60, 217, 61, -1, -1, -1, 90, 218, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 14, 40, -1, 66, -1, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 31, 53, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 22, 49, -1, 75, -1, 23, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 16, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 111, 186, -1, 251, -1, 112, -1, -1, -1, 84, 167, -1, 242, -1, 85, -1, 32, 54, -1, -1, 82, 33, -1, 92, 219, -1, -1, -1, 105, 117, -1, -1, 256, 106, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6, 62, -1, 179, -1, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 24, 50, -1, -1, -1, -1, 99, 243, -1, 56, -1, 100, -1, -1, -1, 67, 180, -1, 3, -1, 68, -1, 17, 42, -1, -1, 65, 18, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 113, 187, -1, -1, -1, -1, 86, 168, -1, -1, -1, 21, -1, -1, 107, 118, -1, -1, -1, 132, -1, -1, -1, 189, 210, -1, -1, 28, 190, -1, -1, -1, 123, 164, -1, -1, 4, 124, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 8, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 25, 51, -1, -1, 77, 26, -1, -1, -1, 101, 244, -1, -1, -1, -1, 69, 181, -1, -1, -1, -1, -1, 170, 206, -1, 263, -1, 171, -1, 114, 188, -1, -1, 253, 115, -1, 87, 169, -1, -1, 247, 88, -1, 81, 34, -1, 108, 119, -1, -1, 255, 109, -1, -1, -1, -1, -1, -1, 131, -1, -1, -1, 191, 211, -1, -1, -1, -1, 125, 165, -1, -1, -1, -1, 227, 233, -1, -1, 43, 228, -1, 9, 64, -1, -1, 184, 10, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 93, 120, -1, 254, -1, 94, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 102, 245, -1, -1, 55, 103, -1, 70, 182, -1, -1, 11, 71, -1, 73, 19, -1, -1, -1, 172, 207, -1, -1, -1, -1, 257, -1, -1, 130, -1, -1, 143, -1, 144, -1, -1, 146, -1, -1, 157, 192, 212, -1, -1, 38, 193, -1, 126, 166, -1, -1, 0, 127, -1, -1, -1, 229, 234, -1, -1, -1, -1, -1, -1, -1, 95, 121, -1, -1, -1, -1, 195, 202, -1, 37, -1, 196, -1, -1, -1, 158, 176, -1, 1, -1, 160, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 78, 27, -1, -1, -1, 239, 173, 208, -1, -1, 261, 174, -1, 252, 116, -1, 246, 89, -1, 259, 110, -1, -1, -1, 129, 152, -1, 148, -1, -1, 133, -1, -1, -1, -1, -1, -1, 230, 235, -1, -1, 44, 231, -1, 183, 12, -1, -1, -1, 96, 122, -1, -1, 260, 97, -1, -1, -1, 197, 203, -1, -1, -1, -1, 161, 177, -1, -1, -1, -1, 220, 236, -1, 45, -1, 221, -1, -1, 250, 57, 104, -1, 5, 72, -1, -1, 79, 74, 185, -1, 141, -1, -1, 142, -1, -1, 151, -1, 137, 140, -1, -1, -1, 35, 194, -1, 13, 128, -1, -1, 76, -1, 198, 204, -1, -1, 39, 199, -1, 162, 178, -1, -1, 2, 163, -1, -1, -1, 222, 237, -1, -1, -1, 262, 226, 264, 175, -1, 155, -1, 156, 153, -1, -1, -1, 154, -1, -1, 240, 205, 47, 232, -1, 258, 98, -1, -1, -1, 223, 238, -1, -1, 48, 224, -1, 83, -1, 134, -1, -1, 138, -1, -1, 248, 201, 36, 200, -1, 20, 159, -1, -1, 135, -1, -1, -1, -1, 241, 209, 46, 225, -1, -1, 136, -1, 149, 249, -1, 139, -1, 147, 150, 145 }; /** Used when there is no transition table entry for a particular state */ #define dfa4_T_empty NULL static const ANTLR3_INT32 dfa4_T0[] = { 327, 187, -1, -1, 3, 331, 323, -1, 325, 324, 330, 325, -1, 325, 328, 323, -1, -1, -1, 325, -1, -1, -1, 326, 329, 3, -1, -1, 325, -1, 3, 3, 3, 325, 325, 325, 325 }; static const ANTLR3_INT32 dfa4_T1[] = { 3, 3, -1, -1, 3, 3, 320, -1, 3, 614, 3, 3, -1, 3, 3, 320, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T2[] = { -1 }; static const ANTLR3_INT32 dfa4_T3[] = { 3, 3, -1, -1, 3, 3, 1006, -1, 976, 1007, 3, 915, -1, 3, 3, 1006, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T4[] = { 397, 264, -1, -1, 3, 401, 393, -1, 395, 394, 400, 395, -1, 395, 398, 393, -1, -1, -1, 395, -1, -1, -1, 396, 399, 3, -1, -1, 395, -1, 3, 3, 3, 395, 395, 395, 395 }; static const ANTLR3_INT32 dfa4_T5[] = { 276, 275, -1, -1, 274, 280, 270, -1, 272, 271, 279, 272, -1, 272, 277, 270, -1, -1, -1, 272, -1, -1, -1, 273, 278, 86, -1, -1, 272, -1, 281, 151, 3, 272, 272, 272, 272 }; static const ANTLR3_INT32 dfa4_T6[] = { 3, 3, -1, -1, 3, 3, 1009, -1, 918, 1008, 3, 1010, -1, 3, 3, 1009, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T7[] = { 3, 3, -1, -1, 3, 3, 320, -1, 3, 849, 3, 3, -1, 3, 3, 320, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T8[] = { 33, 23, -1, -1, 22, 31, 37, -1, 30, 38, 33, 30, -1, 30, 33, 37, -1, -1, -1, 30, -1, -1, -1, 27, 33, 32, -1, -1, 30, -1, 28, 33, 3, 30, 30, 30, 30 }; static const ANTLR3_INT32 dfa4_T9[] = { 3, 3, -1, -1, 3, 3, 921, -1, 918, 919, 3, 920, -1, 3, 3, 921, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T10[] = { 3, 3, -1, -1, 3, 3, 1036, -1, 918, 1035, 3, 1037, -1, 3, 3, 1036, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T11[] = { 3, 3, -1, -1, 3, 3, 320, -1, 3, 979, 3, 3, -1, 3, 3, 320, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T12[] = { 722, 588, -1, -1, 3, 726, 718, -1, 720, 719, 725, 720, -1, 720, 723, 718, -1, -1, -1, 720, -1, -1, -1, 721, 724, 3, -1, -1, 720, -1, 3, 3, 3, 720, 720, 720, 720 }; static const ANTLR3_INT32 dfa4_T13[] = { 163, -1, -1, -1, -1, -1, 163 }; static const ANTLR3_INT32 dfa4_T14[] = { 322, -1, -1, -1, -1, -1, 322 }; static const ANTLR3_INT32 dfa4_T15[] = { 334, -1, -1, -1, -1, -1, 334 }; static const ANTLR3_INT32 dfa4_T16[] = { 427, -1, -1, -1, -1, -1, 427 }; static const ANTLR3_INT32 dfa4_T17[] = { 464, -1, -1, -1, -1, -1, 464 }; static const ANTLR3_INT32 dfa4_T18[] = { 473, -1, -1, -1, -1, -1, 473 }; static const ANTLR3_INT32 dfa4_T19[] = { 1043, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1044 }; static const ANTLR3_INT32 dfa4_T20[] = { 91, 42, -1, -1, 3, 95, 87, -1, 89, 88, 94, 89, -1, 89, 92, 87, -1, -1, -1, 89, -1, -1, -1, 90, 93, 3, -1, -1, 89, -1, 3, 3, 3, 89, 89, 89, 89 }; static const ANTLR3_INT32 dfa4_T21[] = { 3, 3, -1, -1, 3, 3, 484, -1, 339, 485, 3, 3, -1, 3, 3, 484, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T22[] = { 286, 153, -1, -1, 3, 290, 282, -1, 284, 283, 289, 284, -1, 284, 287, 282, -1, -1, -1, 284, -1, -1, -1, 285, 288, 3, -1, -1, 284, -1, 3, 3, 3, 284, 284, 284, 284 }; static const ANTLR3_INT32 dfa4_T23[] = { 3, 3, -1, -1, 3, 3, 967, -1, 912, 968, 3, 823, -1, 3, 3, 967, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T24[] = { 779, -1, -1, -1, -1, 661, -1, 781, -1, -1, -1, 661, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 942 }; static const ANTLR3_INT32 dfa4_T25[] = { 195, 187, -1, -1, 186, 193, 188, -1, 190, 189, 195, 190, -1, 190, 195, 188, -1, -1, -1, 190, -1, -1, -1, 191, 195, 194, -1, -1, 190, -1, 192, 195, 3, 190, 190, 190, 190 }; static const ANTLR3_INT32 dfa4_T26[] = { 3, 3, -1, -1, 3, 3, 553, -1, 3, 799, 3, 3, -1, 3, 3, 553, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T27[] = { 3, 3, -1, -1, 3, 3, 96, -1, 3, 97, 3, 3, -1, 3, 3, 96, -1, -1, -1, 3, 2, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T28[] = { 548, 421, -1, -1, 3, 552, 544, -1, 546, 545, 551, 546, -1, 546, 549, 544, -1, -1, -1, 546, -1, -1, -1, 547, 550, 3, -1, -1, 546, -1, 3, 3, 3, 546, 546, 546, 546 }; static const ANTLR3_INT32 dfa4_T29[] = { 3, 3, -1, -1, 3, 3, 604, -1, 462, 605, 3, 304, -1, 3, 3, 604, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T30[] = { 3, 3, -1, -1, 3, 3, 383, -1, 386, 384, 3, 385, -1, 3, 3, 383, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T31[] = { 447, 442, -1, -1, 441, 451, 443, -1, 445, 444, 450, 445, -1, 445, 448, 443, -1, -1, -1, 445, -1, -1, -1, 446, 449, 86, -1, -1, 445, -1, 452, 453, 3, 445, 445, 445, 445 }; static const ANTLR3_INT32 dfa4_T32[] = { 3, 3, -1, -1, 3, 3, 786, -1, 666, 787, 3, 3, -1, 3, 3, 786, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T33[] = { 3, 3, -1, -1, 3, 3, 631, -1, 357, 632, 3, 354, -1, 3, 3, 631, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T34[] = { 3, 3, -1, -1, 3, 3, 753, -1, 619, 754, 3, 3, -1, 3, 3, 753, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T35[] = { 3, 3, -1, -1, 3, 3, 466, -1, 468, 467, 3, 465, -1, 3, 3, 466, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T36[] = { 710, 577, -1, -1, 3, 714, 706, -1, 708, 707, 713, 708, -1, 708, 711, 706, -1, -1, -1, 708, -1, -1, -1, 709, 712, 3, -1, -1, 708, -1, 3, 3, 3, 708, 708, 708, 708 }; static const ANTLR3_INT32 dfa4_T37[] = { 3, 3, -1, -1, 3, 3, 685, -1, 559, 686, 3, 428, -1, 3, 3, 685, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T38[] = { 3, 3, -1, -1, 3, 3, 236, -1, 3, 237, 3, 3, -1, 3, 3, 236, -1, -1, -1, 3, 2, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T39[] = { 3, 3, -1, -1, 3, 3, 688, -1, 431, 687, 3, 689, -1, 3, 3, 688, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T40[] = { 3, 3, -1, -1, 3, 3, 434, -1, 431, 432, 3, 433, -1, 3, 3, 434, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T41[] = { 33, 23, -1, -1, 22, 31, 134, -1, 70, 135, 33, 26, -1, 30, 33, 134, -1, -1, -1, 30, -1, -1, -1, 27, 33, 32, -1, -1, 30, -1, 28, 33, 3, 30, 30, 30, 30 }; static const ANTLR3_INT32 dfa4_T42[] = { 145, 144, -1, -1, 143, 149, 139, -1, 141, 140, 148, 141, -1, 141, 146, 139, -1, -1, -1, 141, -1, -1, -1, 142, 147, 86, -1, -1, 141, -1, 150, 151, 3, 141, 141, 141, 141 }; static const ANTLR3_INT32 dfa4_T43[] = { 3, 3, -1, -1, 3, 3, 648, -1, 386, 649, 3, 385, -1, 3, 3, 648, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T44[] = { 582, 577, -1, -1, 576, 586, 578, -1, 580, 579, 585, 580, -1, 580, 583, 578, -1, -1, -1, 580, -1, -1, -1, 581, 584, 86, -1, -1, 580, -1, 452, 453, 3, 580, 580, 580, 580 }; static const ANTLR3_INT32 dfa4_T45[] = { 3, 3, -1, -1, 3, 3, 891, -1, 431, 890, 3, 892, -1, 3, 3, 891, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T46[] = { 168, 80, -1, -1, 3, 172, 164, -1, 166, 165, 171, 166, -1, 166, 169, 164, -1, -1, -1, 166, -1, -1, -1, 167, 170, 3, -1, -1, 166, -1, 3, 3, 3, 166, 166, 166, 166 }; static const ANTLR3_INT32 dfa4_T47[] = { 3, 3, -1, -1, 3, 3, 715, -1, 3, 716, 3, 3, -1, 3, 3, 715, -1, -1, -1, 3, 258, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T48[] = { 3, 3, -1, -1, 3, 3, 604, -1, 462, 605, 3, 3, -1, 3, 3, 604, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T49[] = { 659, -1, -1, -1, -1, 658, -1, -1, -1, -1, -1, 661, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 660 }; static const ANTLR3_INT32 dfa4_T50[] = { 33, 23, -1, -1, 22, 31, 68, -1, 70, 69, 33, 30, -1, 30, 33, 68, -1, -1, -1, 30, -1, -1, -1, 27, 33, 32, -1, -1, 30, -1, 28, 33, 3, 30, 30, 30, 30 }; static const ANTLR3_INT32 dfa4_T51[] = { 33, 23, -1, -1, 22, 31, 129, -1, 29, 130, 33, 26, -1, 30, 33, 129, -1, -1, -1, 30, -1, -1, -1, 27, 33, 32, -1, -1, 30, -1, 28, 33, 3, 30, 30, 30, 30 }; static const ANTLR3_INT32 dfa4_T52[] = { 1047 }; static const ANTLR3_INT32 dfa4_T53[] = { 593, 588, -1, -1, 587, 597, 589, -1, 591, 590, 596, 591, -1, 591, 594, 589, -1, -1, -1, 591, -1, -1, -1, 592, 595, 86, -1, -1, 591, -1, 598, 453, 3, 591, 591, 591, 591 }; static const ANTLR3_INT32 dfa4_T54[] = { 3, 3, -1, -1, 3, 3, 173, -1, 3, 174, 3, 3, -1, 3, 3, 173, -1, -1, -1, 3, 2, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T55[] = { 3, 3, -1, -1, 3, 3, 373, -1, 243, 374, 3, 122, -1, 3, 3, 373, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T56[] = { 3, 3, -1, -1, 3, 3, 885, -1, 802, 886, 3, 3, -1, 3, 3, 885, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T57[] = { 3, 3, -1, -1, 3, 3, 852, -1, 626, 853, 3, 623, -1, 3, 3, 852, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T58[] = { 47, 42, -1, -1, 41, 51, 43, -1, 45, 44, 50, 45, -1, 45, 48, 43, -1, -1, -1, 45, -1, -1, -1, 46, 49, 53, -1, -1, 45, -1, 52, 98, 3, 45, 45, 45, 45 }; static const ANTLR3_INT32 dfa4_T59[] = { 3, 3, -1, -1, 3, 3, 536, -1, 539, 537, 3, 538, -1, 3, 3, 536, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T60[] = { 568, 442, -1, -1, 3, 572, 564, -1, 566, 565, 571, 566, -1, 566, 569, 564, -1, -1, -1, 566, -1, -1, -1, 567, 570, 3, -1, -1, 566, -1, 3, 3, 3, 566, 566, 566, 566 }; static const ANTLR3_INT32 dfa4_T61[] = { 835, 731, -1, -1, 3, 839, 831, -1, 833, 832, 838, 833, -1, 833, 836, 831, -1, -1, -1, 833, -1, -1, -1, 834, 837, 3, -1, -1, 833, -1, 3, 3, 3, 833, 833, 833, 833 }; static const ANTLR3_INT32 dfa4_T62[] = { 2, -1, 4, -1, 5, -1, 7, 6, -1, 9, -1, 2, -1, 5, -1, -1, -1, 2, -1, -1, -1, 2, 8, -1, -1, -1, 2, -1, -1, -1, -1, 2, 2, 2, 2 }; static const ANTLR3_INT32 dfa4_T63[] = { 3, 3, -1, -1, 3, 3, 320, -1, 3, 610, 3, 3, -1, 3, 3, 320, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T64[] = { 869, -1, -1, -1, -1, 985, -1, 776, -1, -1, -1, 938, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 986 }; static const ANTLR3_INT32 dfa4_T65[] = { 302, -1, -1, -1, -1, -1, 302 }; static const ANTLR3_INT32 dfa4_T66[] = { 472, -1, -1, -1, -1, -1, 472 }; static const ANTLR3_INT32 dfa4_T67[] = { 481, -1, -1, -1, -1, -1, 481 }; static const ANTLR3_INT32 dfa4_T68[] = { 555, -1, -1, -1, -1, -1, 555 }; static const ANTLR3_INT32 dfa4_T69[] = { 609, -1, -1, -1, -1, -1, 609 }; static const ANTLR3_INT32 dfa4_T70[] = { 615, -1, -1, -1, -1, -1, 615 }; static const ANTLR3_INT32 dfa4_T71[] = { 58, 23, -1, -1, 3, 62, 54, -1, 56, 55, 61, 56, -1, 56, 59, 54, -1, -1, -1, 56, -1, -1, -1, 57, 60, 3, -1, -1, 56, -1, 3, 3, 3, 56, 56, 56, 56 }; static const ANTLR3_INT32 dfa4_T72[] = { 736, 731, -1, -1, 730, 740, 732, -1, 734, 733, 739, 734, -1, 734, 737, 732, -1, -1, -1, 734, -1, -1, -1, 735, 738, 86, -1, -1, 734, -1, 598, 453, 3, 734, 734, 734, 734 }; static const ANTLR3_INT32 dfa4_T73[] = { 231, 112, -1, -1, 3, 235, 227, -1, 229, 228, 234, 229, -1, 229, 232, 227, -1, -1, -1, 229, -1, -1, -1, 230, 233, 3, -1, -1, 229, -1, 3, 3, 3, 229, 229, 229, 229 }; static const ANTLR3_INT32 dfa4_T74[] = { 3, 3, -1, -1, 3, 3, 373, -1, 243, 374, 3, 3, -1, 3, 3, 373, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T75[] = { 3, 3, -1, -1, 3, 3, 791, -1, 539, 792, 3, 538, -1, 3, 3, 791, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T76[] = { 3, -1, -1, -1, 3, 3, 3, 806, -1, 3, -1, 3, -1, 805, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T77[] = { 522, -1, -1, -1, -1, 774, -1, 776, -1, -1, -1, 657, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 775 }; static const ANTLR3_INT32 dfa4_T78[] = { 78, 80, -1, -1, 79, 84, 74, -1, 76, 75, 83, 76, -1, 76, 81, 74, -1, -1, -1, 76, 3, -1, -1, 77, 82, 86, -1, -1, 76, -1, 85, 73, 3, 76, 76, 76, 76 }; static const ANTLR3_INT32 dfa4_T79[] = { 3, 3, -1, -1, 3, 3, 840, -1, 3, 841, 3, 3, -1, 3, 3, 840, -1, -1, -1, 3, 258, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T80[] = { 3, 3, -1, -1, 3, 3, 960, -1, 906, 961, 3, 814, -1, 3, 3, 960, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T81[] = { 522, -1, -1, -1, -1, 390, -1, -1, -1, -1, -1, 390, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 523 }; static const ANTLR3_INT32 dfa4_T82[] = { 779, -1, -1, -1, -1, 943, -1, 776, -1, -1, -1, 878, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 944 }; static const ANTLR3_INT32 dfa4_T83[] = { 208, 80, -1, -1, 79, 212, 204, -1, 206, 205, 211, 206, -1, 206, 209, 204, -1, -1, -1, 206, -1, -1, -1, 207, 210, 53, -1, -1, 206, -1, 213, 98, 3, 206, 206, 206, 206 }; static const ANTLR3_INT32 dfa4_T84[] = { 3, 3, -1, -1, 3, 3, 518, -1, 520, 519, 3, 3, -1, 3, 3, 518, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T85[] = { 265, 264, -1, -1, 263, 269, 259, -1, 261, 260, 268, 261, -1, 261, 266, 259, -1, -1, -1, 261, -1, -1, -1, 262, 267, 86, -1, -1, 261, -1, 150, 151, 3, 261, 261, 261, 261 }; static const ANTLR3_INT32 dfa4_T86[] = { 219, 101, -1, -1, 3, 223, 215, -1, 217, 216, 222, 217, -1, 217, 220, 215, -1, -1, -1, 217, -1, -1, -1, 218, 221, 3, -1, -1, 217, -1, 3, 3, 3, 217, 217, 217, 217 }; static const ANTLR3_INT32 dfa4_T87[] = { 3, 3, -1, -1, 3, 3, 746, -1, 613, 747, 3, 3, -1, 3, 3, 746, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T88[] = { 78, 153, -1, -1, 152, 84, 161, -1, 76, 162, 83, 76, -1, 76, 81, 161, -1, -1, -1, 76, -1, -1, -1, 77, 82, 86, -1, -1, 76, -1, 85, 158, 3, 76, 76, 76, 76 }; static const ANTLR3_INT32 dfa4_T89[] = { 3, 3, -1, -1, 3, 3, 369, -1, 366, 367, 3, 368, -1, 3, 3, 369, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T90[] = { 1040, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1041 }; static const ANTLR3_INT32 dfa4_T91[] = { 3, 3, -1, -1, 3, 3, 643, -1, 366, 642, 3, 644, -1, 3, 3, 643, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T92[] = { 3, 3, -1, -1, 3, 3, 863, -1, 366, 862, 3, 864, -1, 3, 3, 863, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T93[] = { 869, -1, -1, -1, -1, 1012, -1, 776, -1, -1, -1, 938, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1013 }; static const ANTLR3_INT32 dfa4_T94[] = { 78, 153, -1, -1, 152, 84, 454, -1, 298, 455, 83, 156, -1, 76, 81, 454, -1, -1, -1, 76, -1, -1, -1, 77, 82, 86, -1, -1, 76, -1, 85, 158, 3, 76, 76, 76, 76 }; static const ANTLR3_INT32 dfa4_T95[] = { 782 }; static const ANTLR3_INT32 dfa4_T96[] = { 181, 176, 3, -1, 175, 185, 690, 3, 692, 691, 184, 692, -1, 692, 182, 690, -1, -1, -1, 692, -1, -1, -1, 693, 694, 86, -1, -1, 692, -1, 294, 296, 3, 692, 692, 692, 692 }; static const ANTLR3_INT32 dfa4_T97[] = { 3, 3, -1, -1, 3, 3, 670, -1, 672, 671, 3, 3, -1, 3, 3, 670, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T98[] = { 422, 421, -1, -1, 420, 426, 416, -1, 418, 417, 425, 418, -1, 418, 423, 416, -1, -1, -1, 418, -1, -1, -1, 419, 424, 86, -1, -1, 418, -1, 281, 151, 3, 418, 418, 418, 418 }; static const ANTLR3_INT32 dfa4_T99[] = { 522, -1, -1, -1, -1, 872, -1, 776, -1, -1, -1, 657, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 873 }; static const ANTLR3_INT32 dfa4_T100[] = { 78, 153, -1, -1, 152, 84, 154, -1, 298, 155, 83, 76, -1, 76, 81, 154, -1, -1, -1, 76, -1, -1, -1, 77, 82, 86, -1, -1, 76, -1, 85, 158, 3, 76, 76, 76, 76 }; static const ANTLR3_INT32 dfa4_T101[] = { 494, 343, -1, -1, 3, 498, 490, -1, 492, 491, 497, 492, -1, 492, 495, 490, -1, -1, -1, 492, -1, -1, -1, 493, 496, 3, -1, -1, 492, -1, 3, 3, 3, 492, 492, 492, 492 }; static const ANTLR3_INT32 dfa4_T102[] = { 78, 153, -1, -1, 293, 84, 154, 3, 157, 155, 83, 295, -1, 76, 81, 154, -1, -1, -1, 76, -1, -1, -1, 77, 82, 86, -1, -1, 76, -1, 294, 296, 3, 76, 76, 76, 76 }; static const ANTLR3_INT32 dfa4_T103[] = { 3, 3, -1, -1, 3, 3, 527, -1, 530, 528, 3, 529, -1, 3, 3, 527, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T104[] = { 779, -1, -1, -1, -1, 990, -1, 776, -1, -1, -1, 878, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 991 }; static const ANTLR3_INT32 dfa4_T105[] = { 3, 3, -1, -1, 3, 3, 573, -1, 3, 812, 3, 3, -1, 3, 3, 573, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T106[] = { 251, 144, -1, -1, 3, 255, 247, -1, 249, 248, 254, 249, -1, 249, 252, 247, -1, -1, -1, 249, -1, -1, -1, 250, 253, 3, -1, -1, 249, -1, 3, 3, 3, 249, 249, 249, 249 }; static const ANTLR3_INT32 dfa4_T107[] = { 3, 3, -1, -1, 3, 3, 784, -1, 530, 785, 3, 529, -1, 3, 3, 784, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T108[] = { 17, 3, -1, -1, 3, 14, 10, -1, 12, 11, 20, 12, -1, 12, 18, 10, -1, -1, -1, 12, 2, -1, -1, 13, 19, 16, -1, -1, 12, -1, 15, 21, -1, 12, 12, 12, 12 }; static const ANTLR3_INT32 dfa4_T109[] = { 3, 3, -1, -1, 3, 3, 573, -1, 3, 957, 3, 3, -1, 3, 3, 573, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T110[] = { 877, -1, -1, -1, -1, -1, 878 }; static const ANTLR3_INT32 dfa4_T111[] = { 937, -1, -1, -1, -1, -1, 938 }; static const ANTLR3_INT32 dfa4_T112[] = { 3, -1, -1, -1, 3, 3, 3, 563, -1, 3, -1, 3, 3, 562, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T113[] = { 3, 3, -1, -1, 3, 3, 676, -1, 679, 677, 3, 678, -1, 3, 3, 676, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T114[] = { 3, 3, -1, -1, 3, 3, 360, -1, 357, 358, 3, 359, -1, 3, 3, 360, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T115[] = { 3, 3, -1, -1, 3, 3, 573, -1, 3, 1020, 3, 3, -1, 3, 3, 573, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T116[] = { 3, 3, -1, -1, 3, 3, 636, -1, 357, 635, 3, 637, -1, 3, 3, 636, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T117[] = { 3, 3, -1, -1, 3, 3, 860, -1, 357, 859, 3, 861, -1, 3, 3, 860, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T118[] = { 3, 3, -1, -1, 3, 3, 751, -1, 477, 752, 3, 474, -1, 3, 3, 751, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T119[] = { 869, -1, -1, -1, -1, 938, -1, 776, -1, -1, -1, 938, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1028 }; static const ANTLR3_INT32 dfa4_T120[] = { 1045, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1046 }; static const ANTLR3_INT32 dfa4_T121[] = { 33, 23, -1, -1, 22, 31, 134, -1, 70, 135, 33, 30, -1, 30, 33, 134, -1, -1, -1, 30, -1, -1, -1, 27, 33, 32, -1, -1, 30, -1, 28, 33, 3, 30, 30, 30, 30 }; static const ANTLR3_INT32 dfa4_T122[] = { 3, 3, -1, -1, 3, 3, 96, -1, 3, 340, 3, 3, -1, 3, 3, 96, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T123[] = { 106, 101, -1, -1, 100, 110, 102, -1, 104, 103, 109, 104, -1, 104, 107, 102, -1, -1, -1, 104, -1, -1, -1, 105, 108, 53, -1, -1, 104, -1, 52, 98, 3, 104, 104, 104, 104 }; static const ANTLR3_INT32 dfa4_T124[] = { 3, 3, -1, -1, 3, 3, 96, -1, 3, 621, 3, 3, -1, 3, 3, 96, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T125[] = { 522, -1, -1, -1, -1, 657, -1, 776, -1, -1, -1, 657, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 939 }; static const ANTLR3_INT32 dfa4_T126[] = { 3, 3, -1, -1, 3, 3, 96, -1, 3, 851, 3, 3, -1, 3, 3, 96, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T127[] = { 3, 3, -1, -1, 3, 3, 727, -1, 3, 913, 3, 3, -1, 3, 3, 727, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T128[] = { 315, 176, -1, -1, 3, 319, 311, -1, 313, 312, 318, 313, -1, 313, 316, 311, -1, -1, -1, 313, -1, -1, -1, 314, 317, 3, -1, -1, 313, -1, 3, 3, 3, 313, 313, 313, 313 }; static const ANTLR3_INT32 dfa4_T129[] = { 409, 275, -1, -1, 3, 413, 405, -1, 407, 406, 412, 407, -1, 407, 410, 405, -1, -1, -1, 407, -1, -1, -1, 408, 411, 3, -1, -1, 407, -1, 3, 3, 3, 407, 407, 407, 407 }; static const ANTLR3_INT32 dfa4_T130[] = { 3, 3, -1, -1, 3, 3, 883, -1, 679, 884, 3, 678, -1, 3, 3, 883, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T131[] = { 779, -1, -1, -1, -1, 878, -1, 776, -1, -1, -1, 878, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1016 }; static const ANTLR3_INT32 dfa4_T132[] = { 3, 3, -1, -1, 3, 3, 727, -1, 3, 1003, 3, 3, -1, 3, 3, 727, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T133[] = { 181, 176, 3, -1, 175, 185, 436, 3, 438, 437, 184, 438, -1, 438, 182, 436, -1, -1, -1, 438, -1, -1, -1, 439, 440, 86, -1, -1, 438, -1, 85, 158, 3, 438, 438, 438, 438 }; static const ANTLR3_INT32 dfa4_T134[] = { 3, 3, -1, -1, 3, 3, 629, -1, 626, 627, 3, 628, -1, 3, 3, 629, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T135[] = { 382, -1, -1, -1, -1, -1, 382 }; static const ANTLR3_INT32 dfa4_T136[] = { 246, -1, -1, -1, -1, -1, 246 }; static const ANTLR3_INT32 dfa4_T137[] = { 813, -1, -1, -1, -1, -1, 813 }; static const ANTLR3_INT32 dfa4_T138[] = { 717, -1, -1, -1, -1, -1, 717 }; static const ANTLR3_INT32 dfa4_T139[] = { 392, -1, -1, -1, -1, -1, 392 }; static const ANTLR3_INT32 dfa4_T140[] = { 404, -1, -1, -1, -1, -1, 404 }; static const ANTLR3_INT32 dfa4_T141[] = { 526, -1, -1, -1, -1, -1, 526 }; static const ANTLR3_INT32 dfa4_T142[] = { 535, -1, -1, -1, -1, -1, 535 }; static const ANTLR3_INT32 dfa4_T143[] = { 543, -1, -1, -1, -1, -1, 543 }; static const ANTLR3_INT32 dfa4_T144[] = { 697, -1, -1, -1, -1, -1, 697 }; static const ANTLR3_INT32 dfa4_T145[] = { 575, -1, -1, -1, -1, -1, 575 }; static const ANTLR3_INT32 dfa4_T146[] = { 842, -1, -1, -1, -1, -1, 842 }; static const ANTLR3_INT32 dfa4_T147[] = { 822, -1, -1, -1, -1, -1, 822 }; static const ANTLR3_INT32 dfa4_T148[] = { 914, -1, -1, -1, -1, -1, 914 }; static const ANTLR3_INT32 dfa4_T149[] = { 729, -1, -1, -1, -1, -1, 729 }; static const ANTLR3_INT32 dfa4_T150[] = { 675, -1, -1, -1, -1, -1, 675 }; static const ANTLR3_INT32 dfa4_T151[] = { 3, 3, -1, -1, 3, 3, 727, -1, 3, 1034, 3, 3, -1, 3, 3, 727, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T152[] = { 3, 3, -1, -1, 3, 3, 857, -1, 626, 856, 3, 858, -1, 3, 3, 857, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T153[] = { 880, -1, 776 }; static const ANTLR3_INT32 dfa4_T154[] = { 3, 3, -1, -1, 3, 3, 320, -1, 3, 321, 3, 3, -1, 3, 3, 320, -1, -1, -1, 3, 258, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T155[] = { 181, 176, 3, -1, 175, 185, 436, 3, 438, 437, 184, 438, -1, 438, 561, 436, -1, -1, -1, 438, -1, -1, -1, 439, 440, 86, -1, -1, 438, -1, 294, 296, 3, 438, 438, 438, 438 }; static const ANTLR3_INT32 dfa4_T156[] = { 3, 3, -1, -1, 3, 3, 982, -1, 626, 981, 3, 983, -1, 3, 3, 982, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T157[] = { 940, -1, 941 }; static const ANTLR3_INT32 dfa4_T158[] = { 946, -1, 947 }; static const ANTLR3_INT32 dfa4_T159[] = { 3, 3, -1, -1, 3, 3, 664, -1, 666, 665, 3, 3, -1, 3, 3, 664, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T160[] = { 3, 3, -1, -1, 3, 3, 173, -1, 3, 463, 3, 3, -1, 3, 3, 173, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T161[] = { 1014, -1, 1015 }; static const ANTLR3_INT32 dfa4_T162[] = { 1017, -1, 1018 }; static const ANTLR3_INT32 dfa4_T163[] = { 3, 3, -1, -1, 3, 3, 173, -1, 3, 743, 3, 3, -1, 3, 3, 173, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T164[] = { 1048 }; static const ANTLR3_INT32 dfa4_T165[] = { 3, 3, -1, -1, 3, 3, 617, -1, 619, 618, 3, 3, -1, 3, 3, 617, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T166[] = { 348, 343, -1, -1, 342, 352, 344, -1, 346, 345, 351, 346, -1, 346, 349, 344, -1, -1, -1, 346, -1, -1, -1, 347, 350, 53, -1, -1, 346, -1, 213, 98, 3, 346, 346, 346, 346 }; static const ANTLR3_INT32 dfa4_T167[] = { 3, 3, -1, -1, 3, 3, 173, -1, 3, 924, 3, 3, -1, 3, 3, 173, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T168[] = { 286, 153, -1, -1, 3, 290, 282, 3, 284, 435, 289, 284, -1, 284, 287, 282, -1, -1, -1, 284, -1, -1, -1, 285, 288, 3, -1, -1, 284, -1, 3, 3, 3, 284, 284, 284, 284 }; static const ANTLR3_INT32 dfa4_T169[] = { 33, 23, -1, -1, 22, 31, 35, -1, 29, 34, 33, 36, -1, 30, 33, 35, -1, -1, -1, 30, -1, -1, -1, 27, 33, 32, -1, -1, 30, -1, 28, 33, 3, 30, 30, 30, 30 }; static const ANTLR3_INT32 dfa4_T170[] = { 181, 176, 3, -1, 175, 185, 690, 3, 692, 691, 184, 692, 3, 692, 182, 690, -1, -1, -1, 692, -1, -1, -1, 693, 694, 86, -1, -1, 692, -1, 85, 158, 3, 692, 692, 692, 692 }; static const ANTLR3_INT32 dfa4_T171[] = { 78, 153, -1, -1, 152, 84, 154, -1, 157, 155, 83, 156, -1, 76, 81, 154, -1, -1, -1, 76, -1, -1, -1, 77, 82, 86, -1, -1, 76, -1, 85, 158, 3, 76, 76, 76, 76 }; static const ANTLR3_INT32 dfa4_T172[] = { 78, 153, -1, -1, 293, 84, 74, 3, 76, 301, 83, 76, -1, 76, 81, 74, -1, -1, -1, 76, -1, -1, -1, 77, 82, 86, -1, -1, 76, -1, 294, 296, 3, 76, 76, 76, 76 }; static const ANTLR3_INT32 dfa4_T173[] = { 3, 3, -1, -1, 3, 3, 96, -1, 3, 336, 3, 3, -1, 3, 3, 96, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T174[] = { 3, 3, -1, -1, 3, 3, 573, -1, 3, 808, 3, 3, -1, 3, 3, 573, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T175[] = { 78, 153, -1, -1, 293, 84, 74, 3, 76, 845, 83, 76, -1, 76, 81, 74, -1, -1, -1, 76, -1, -1, -1, 77, 82, 86, -1, -1, 76, -1, 294, 296, 3, 76, 76, 76, 76 }; static const ANTLR3_INT32 dfa4_T176[] = { 78, 153, -1, -1, 293, 84, 74, 3, 76, 601, 83, 76, -1, 76, 81, 74, -1, -1, -1, 76, -1, -1, -1, 77, 82, 86, -1, -1, 76, -1, 294, 296, 3, 76, 76, 76, 76 }; static const ANTLR3_INT32 dfa4_T177[] = { 3, 3, -1, -1, 3, 3, 63, -1, 3, 244, 3, 3, -1, 3, 3, 63, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T178[] = { 3, 3, -1, -1, 3, 3, 800, -1, 802, 801, 3, 3, -1, 3, 3, 800, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T179[] = { 3, 3, -1, -1, 3, 3, 744, -1, 468, 745, 3, 465, -1, 3, 3, 744, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T180[] = { 78, 153, -1, -1, 293, 84, 74, 3, 76, 297, 83, 76, -1, 76, 81, 74, -1, -1, -1, 76, -1, -1, -1, 77, 82, 86, -1, -1, 76, -1, 294, 296, 3, 76, 76, 76, 76 }; static const ANTLR3_INT32 dfa4_T181[] = { 3, 3, -1, -1, 3, 3, 484, -1, 339, 485, 3, 197, -1, 3, 3, 484, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T182[] = { 3, 3, -1, -1, 3, 3, 388, -1, 386, 387, 3, 389, -1, 3, 3, 388, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T183[] = { 3, 3, -1, -1, 3, 3, 63, -1, 3, 514, 3, 3, -1, 3, 3, 63, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T184[] = { 3, 3, -1, -1, 3, 3, 63, -1, 3, 769, 3, 3, -1, 3, 3, 63, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T185[] = { 3, 3, -1, -1, 3, 3, 650, -1, 520, 651, 3, 385, -1, 3, 3, 650, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T186[] = { 948, -1, 776 }; static const ANTLR3_INT32 dfa4_T187[] = { 3, 3, -1, -1, 3, 3, 653, -1, 386, 652, 3, 654, -1, 3, 3, 653, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T188[] = { 988, -1, 941 }; static const ANTLR3_INT32 dfa4_T189[] = { 992, -1, 947 }; static const ANTLR3_INT32 dfa4_T190[] = { 3, 3, -1, -1, 3, 3, 715, -1, 3, 907, 3, 3, -1, 3, 3, 715, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T191[] = { 3, 3, -1, -1, 3, 3, 198, -1, 200, 199, 3, 197, -1, 3, 3, 198, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T192[] = { 181, 176, -1, -1, 175, 185, 177, -1, 179, 178, 184, 179, -1, 179, 182, 177, -1, -1, -1, 179, -1, -1, -1, 180, 183, 86, -1, -1, 179, -1, 85, 158, 3, 179, 179, 179, 179 }; static const ANTLR3_INT32 dfa4_T193[] = { 3, 3, -1, -1, 3, 3, 510, -1, 512, 511, 3, 3, -1, 3, 3, 510, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T194[] = { 3, 3, -1, -1, 3, 3, 866, -1, 386, 865, 3, 867, -1, 3, 3, 866, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T195[] = { 3, 3, -1, -1, 3, 3, 727, -1, 3, 909, 3, 3, -1, 3, 3, 727, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T196[] = { 1029, -1, 1015 }; static const ANTLR3_INT32 dfa4_T197[] = { 1031, -1, 1018 }; static const ANTLR3_INT32 dfa4_T198[] = { 3, 3, -1, -1, 3, 3, 173, -1, 3, 459, 3, 3, -1, 3, 3, 173, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T199[] = { 3, 3, -1, -1, 3, 3, 715, -1, 3, 1002, 3, 3, -1, 3, 3, 715, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T200[] = { 286, 153, -1, -1, 3, 290, 282, -1, 284, 435, 289, 284, -1, 284, 287, 282, -1, -1, -1, 284, -1, -1, -1, 285, 288, 3, -1, -1, 284, -1, 3, 3, 3, 284, 284, 284, 284 }; static const ANTLR3_INT32 dfa4_T201[] = { 3, 3, -1, -1, 3, 3, 897, -1, 811, 898, 3, 3, -1, 3, 3, 897, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T202[] = { 3, 3, -1, -1, 3, 3, 715, -1, 3, 1033, 3, 3, -1, 3, 3, 715, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T203[] = { 78, 153, -1, -1, 152, 84, 74, -1, 76, 601, 83, 76, -1, 76, 81, 74, -1, -1, -1, 76, -1, -1, -1, 77, 82, 86, -1, -1, 76, -1, 85, 158, 3, 76, 76, 76, 76 }; static const ANTLR3_INT32 dfa4_T204[] = { 3, 3, -1, -1, 3, 3, 541, -1, 539, 540, 3, 542, -1, 3, 3, 541, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T205[] = { 3, 3, -1, -1, 3, 3, 793, -1, 672, 794, 3, 538, -1, 3, 3, 793, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T206[] = { 78, 153, -1, -1, 152, 84, 74, -1, 76, 301, 83, 76, -1, 76, 81, 74, -1, -1, -1, 76, -1, -1, -1, 77, 82, 86, -1, -1, 76, -1, 85, 158, 3, 76, 76, 76, 76 }; static const ANTLR3_INT32 dfa4_T207[] = { 3, 3, -1, -1, 3, 3, 953, -1, 539, 952, 3, 954, -1, 3, 3, 953, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T208[] = { 3, 3, -1, -1, 3, 3, 305, -1, 307, 306, 3, 304, -1, 3, 3, 305, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T209[] = { 3, 3, -1, -1, 3, 3, 611, -1, 613, 612, 3, 3, -1, 3, 3, 611, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T210[] = { 78, 153, -1, -1, 152, 84, 74, -1, 76, 845, 83, 76, -1, 76, 81, 74, -1, -1, -1, 76, -1, -1, -1, 77, 82, 86, -1, -1, 76, -1, 85, 158, 3, 76, 76, 76, 76 }; static const ANTLR3_INT32 dfa4_T211[] = { 3, 3, -1, -1, 3, 3, 796, -1, 539, 795, 3, 797, -1, 3, 3, 796, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T212[] = { 2, -1, -1, -1, 1, -1, 2, 2, -1, 2, -1, 2, -1, 1, -1, -1, -1, 2, -1, -1, -1, 2, 2, -1, -1, -1, 2, -1, -1, 3, -1, 2, 2, 2, 2 }; static const ANTLR3_INT32 dfa4_T213[] = { 3, 3, -1, -1, 3, 3, 63, -1, 3, 240, 3, 3, -1, 3, 3, 63, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T214[] = { 3, 3, -1, -1, 3, 3, 753, -1, 619, 754, 3, 474, -1, 3, 3, 753, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T215[] = { 3, 3, -1, -1, 3, 3, 967, -1, 912, 968, 3, 3, -1, 3, 3, 967, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T216[] = { 776 }; static const ANTLR3_INT32 dfa4_T217[] = { 3, 3, -1, -1, 3, 3, 840, -1, 3, 977, 3, 3, -1, 3, 3, 840, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T218[] = { 120, 112, -1, -1, 111, 118, 113, -1, 115, 114, 120, 115, -1, 115, 120, 113, -1, -1, -1, 115, -1, -1, -1, 116, 120, 119, -1, -1, 115, -1, 117, 120, 3, 115, 115, 115, 115 }; static const ANTLR3_INT32 dfa4_T219[] = { 78, 153, -1, -1, 293, 84, 154, 3, 157, 843, 83, 844, -1, 76, 81, 154, -1, -1, -1, 76, -1, -1, -1, 77, 82, 86, -1, -1, 76, -1, 294, 296, 3, 76, 76, 76, 76 }; static const ANTLR3_INT32 dfa4_T220[] = { 941 }; static const ANTLR3_INT32 dfa4_T221[] = { 947 }; static const ANTLR3_INT32 dfa4_T222[] = { 78, 153, -1, -1, 293, 84, 154, 3, 157, 599, 83, 600, -1, 76, 81, 154, -1, -1, -1, 76, -1, -1, -1, 77, 82, 86, -1, -1, 76, -1, 294, 296, 3, 76, 76, 76, 76 }; static const ANTLR3_INT32 dfa4_T223[] = { 78, 153, -1, -1, 293, 84, 154, 3, 157, 299, 83, 300, -1, 76, 81, 154, -1, -1, -1, 76, -1, -1, -1, 77, 82, 86, -1, -1, 76, -1, 294, 296, 3, 76, 76, 76, 76 }; static const ANTLR3_INT32 dfa4_T224[] = { 3, 3, -1, -1, 3, 3, 840, -1, 3, 1027, 3, 3, -1, 3, 3, 840, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T225[] = { 1015 }; static const ANTLR3_INT32 dfa4_T226[] = { 1018 }; static const ANTLR3_INT32 dfa4_T227[] = { 78, 153, -1, -1, 152, 84, 74, -1, 76, 297, 83, 76, -1, 76, 81, 74, -1, -1, -1, 76, -1, -1, -1, 77, 82, 86, -1, -1, 76, -1, 85, 158, 3, 76, 76, 76, 76 }; static const ANTLR3_INT32 dfa4_T228[] = { 3, 3, -1, -1, 3, 3, 504, -1, 506, 505, 3, 3, -1, 3, 3, 504, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T229[] = { 3, 3, -1, -1, 3, 3, 840, -1, 3, 1042, 3, 3, -1, 3, 3, 840, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T230[] = { 78, 153, -1, -1, 293, 84, 154, 3, 157, 978, 83, 295, -1, 76, 81, 154, -1, -1, -1, 76, -1, -1, -1, 77, 82, 86, -1, -1, 76, -1, 294, 296, 3, 76, 76, 76, 76 }; static const ANTLR3_INT32 dfa4_T231[] = { 195, 187, -1, -1, 186, 193, 188, -1, 190, 189, 195, 190, -1, 190, 195, 188, -1, -1, -1, 190, -1, -1, -1, 191, 195, 194, -1, -1, 190, -1, 192, 195, -1, 190, 190, 190, 190 }; static const ANTLR3_INT32 dfa4_T232[] = { 78, 153, -1, -1, 293, 84, 154, 3, 157, 155, 83, 600, -1, 76, 81, 154, -1, -1, -1, 76, -1, -1, -1, 77, 82, 86, -1, -1, 76, -1, 294, 296, 3, 76, 76, 76, 76 }; static const ANTLR3_INT32 dfa4_T233[] = { 78, 153, -1, -1, 293, 84, 154, 3, 157, 155, 83, 300, -1, 76, 81, 154, -1, -1, -1, 76, -1, -1, -1, 77, 82, 86, -1, -1, 76, -1, 294, 296, 3, 76, 76, 76, 76 }; static const ANTLR3_INT32 dfa4_T234[] = { 3, 3, -1, -1, 3, 3, 291, -1, 3, 560, 3, 3, -1, 3, 3, 291, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T235[] = { 78, 153, -1, -1, 293, 84, 154, 3, 157, 155, 83, 844, -1, 76, 81, 154, -1, -1, -1, 76, -1, -1, -1, 77, 82, 86, -1, -1, 76, -1, 294, 296, 3, 76, 76, 76, 76 }; static const ANTLR3_INT32 dfa4_T236[] = { 3, 3, -1, -1, 3, 3, 291, -1, 3, 804, 3, 3, -1, 3, 3, 291, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T237[] = { 3, 3, -1, -1, 3, 3, 291, -1, 3, 956, 3, 3, -1, 3, 3, 291, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T238[] = { 3, 3, -1, -1, 3, 3, 123, -1, 125, 124, 3, 122, -1, 3, 3, 123, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T239[] = { 3, 3, -1, -1, 3, 3, 256, -1, 3, 257, 3, 3, -1, 3, 3, 256, -1, -1, -1, 3, 258, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T240[] = { 3, 3, -1, -1, 3, 3, 715, -1, 3, 903, 3, 3, -1, 3, 3, 715, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T241[] = { 3, 3, -1, -1, 3, 3, 482, -1, 200, 483, 3, 197, -1, 3, 3, 482, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T242[] = { 3, 3, -1, -1, 3, 3, 763, -1, 765, 764, 3, 3, -1, 3, 3, 763, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T243[] = { 3, -1, -1, -1, 3, 3, 3, 894, -1, 3, -1, 3, -1, 893, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T244[] = { 33, 23, -1, -1, 22, 31, 65, -1, 30, 71, 33, 30, -1, 30, 33, 65, -1, -1, -1, 30, -1, -1, -1, 27, 33, 32, -1, -1, 30, -1, 28, 33, 3, 30, 30, 30, 30 }; static const ANTLR3_INT32 dfa4_T245[] = { 3, 3, -1, -1, 3, 3, 429, -1, 431, 430, 3, 428, -1, 3, 3, 429, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T246[] = { 33, 23, -1, -1, 22, 31, 65, -1, 30, 515, 33, 30, -1, 30, 33, 65, -1, -1, -1, 30, -1, -1, -1, 27, 33, 32, -1, -1, 30, -1, 28, 33, 3, 30, 30, 30, 30 }; static const ANTLR3_INT32 dfa4_T247[] = { 33, 23, -1, -1, 22, 31, 65, -1, 30, 245, 33, 30, -1, 30, 33, 65, -1, -1, -1, 30, -1, -1, -1, 27, 33, 32, -1, -1, 30, -1, 28, 33, 3, 30, 30, 30, 30 }; static const ANTLR3_INT32 dfa4_T248[] = { 3, 3, -1, -1, 3, 3, 532, -1, 530, 531, 3, 533, -1, 3, 3, 532, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T249[] = { 3, 3, -1, -1, 3, 3, 786, -1, 666, 787, 3, 529, -1, 3, 3, 786, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T250[] = { 3, 3, -1, -1, 3, 3, 840, -1, 3, 973, 3, 3, -1, 3, 3, 840, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T251[] = { 3, 3, -1, -1, 3, 3, 414, -1, 3, 415, 3, 3, -1, 3, 3, 414, -1, -1, -1, 3, 258, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T252[] = { 3, 3, -1, -1, 3, 3, 640, -1, 512, 641, 3, 363, -1, 3, 3, 640, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T253[] = { 3, 3, -1, -1, 3, 3, 789, -1, 530, 788, 3, 790, -1, 3, 3, 789, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T254[] = { 3, 3, -1, -1, 3, 3, 602, -1, 307, 603, 3, 304, -1, 3, 3, 602, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T255[] = { 47, 42, -1, -1, 41, 51, 43, -1, 45, 44, 50, 45, -1, 45, 48, 43, -1, -1, -1, 45, -1, -1, -1, 46, 49, 53, -1, -1, 45, -1, 52, 40, 3, 45, 45, 45, 45 }; static const ANTLR3_INT32 dfa4_T256[] = { 3, 3, -1, -1, 3, 3, 960, -1, 906, 961, 3, 3, -1, 3, 3, 960, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T257[] = { 3, 3, -1, -1, 3, 3, 699, -1, 701, 700, 3, 698, -1, 3, 3, 699, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T258[] = { 3, 3, -1, -1, 3, 3, 950, -1, 530, 949, 3, 951, -1, 3, 3, 950, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T259[] = { 3, 3, -1, -1, 3, 3, 480, -1, 477, 478, 3, 479, -1, 3, 3, 480, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T260[] = { 78, 153, -1, -1, 152, 84, 154, -1, 157, 741, 83, 742, -1, 76, 81, 154, -1, -1, -1, 76, -1, -1, -1, 77, 82, 86, -1, -1, 76, -1, 85, 158, 3, 76, 76, 76, 76 }; static const ANTLR3_INT32 dfa4_T261[] = { 78, 153, -1, -1, 152, 84, 154, -1, 157, 159, 83, 160, -1, 76, 81, 154, -1, -1, -1, 76, -1, -1, -1, 77, 82, 86, -1, -1, 76, -1, 85, 158, 3, 76, 76, 76, 76 }; static const ANTLR3_INT32 dfa4_T262[] = { 78, 153, -1, -1, 152, 84, 154, -1, 157, 456, 83, 457, -1, 76, 81, 154, -1, -1, -1, 76, -1, -1, -1, 77, 82, 86, -1, -1, 76, -1, 85, 158, 3, 76, 76, 76, 76 }; static const ANTLR3_INT32 dfa4_T263[] = { 3, 3, -1, -1, 3, 3, 746, -1, 613, 747, 3, 465, -1, 3, 3, 746, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T264[] = { 3, 3, -1, -1, 3, 3, 756, -1, 477, 755, 3, 757, -1, 3, 3, 756, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T265[] = { 3, 3, -1, -1, 3, 3, 291, -1, 3, 556, 3, 3, -1, 3, 3, 291, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T266[] = { 3, 3, -1, -1, 3, 3, 895, -1, 701, 896, 3, 698, -1, 3, 3, 895, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T267[] = { 3, 3, -1, -1, 3, 3, 929, -1, 477, 928, 3, 930, -1, 3, 3, 929, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T268[] = { 3, 3, -1, -1, 3, 3, 885, -1, 802, 886, 3, 678, -1, 3, 3, 885, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T269[] = { 3, 3, -1, -1, 3, 3, 640, -1, 512, 641, 3, 3, -1, 3, 3, 640, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T270[] = { 3, 3, -1, -1, 3, 3, 888, -1, 679, 887, 3, 889, -1, 3, 3, 888, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T271[] = { 3, 3, -1, -1, 3, 3, 681, -1, 679, 680, 3, 682, -1, 3, 3, 681, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T272[] = { 33, 23, -1, -1, 22, 31, 24, -1, 29, 25, 33, 26, -1, 30, 33, 24, -1, -1, -1, 30, -1, -1, -1, 27, 33, 32, -1, -1, 30, -1, 28, 33, 3, 30, 30, 30, 30 }; static const ANTLR3_INT32 dfa4_T273[] = { 3, 3, -1, -1, 3, 3, 997, -1, 679, 996, 3, 998, -1, 3, 3, 997, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T274[] = { 33, 23, -1, -1, 22, 31, 65, -1, 30, 66, 33, 30, -1, 30, 33, 65, -1, -1, -1, 30, -1, -1, -1, 27, 33, 32, -1, -1, 30, -1, 28, 33, 3, 30, 30, 30, 30 }; static const ANTLR3_INT32 dfa4_T275[] = { 3, 3, -1, -1, 3, 3, 824, -1, 826, 825, 3, 823, -1, 3, 3, 824, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T276[] = { 3, 3, -1, -1, 3, 3, 371, -1, 125, 372, 3, 122, -1, 3, 3, 371, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T277[] = { 3, 3, -1, -1, 3, 3, 1006, -1, 976, 1007, 3, 3, -1, 3, 3, 1006, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T278[] = { 3, 3, -1, -1, 3, 3, 633, -1, 506, 634, 3, 354, -1, 3, 3, 633, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T279[] = { 458, -1, -1, -1, -1, -1, 458 }; static const ANTLR3_INT32 dfa4_T280[] = { 72, -1, -1, -1, -1, -1, 72 }; static const ANTLR3_INT32 dfa4_T281[] = { 133, -1, -1, -1, -1, -1, 133 }; static const ANTLR3_INT32 dfa4_T282[] = { 214, -1, -1, -1, -1, -1, 214 }; static const ANTLR3_INT32 dfa4_T283[] = { 239, -1, -1, -1, -1, -1, 239 }; static const ANTLR3_INT32 dfa4_T284[] = { 335, -1, -1, -1, -1, -1, 335 }; static const ANTLR3_INT32 dfa4_T285[] = { 361, -1, -1, -1, -1, -1, 361 }; static const ANTLR3_INT32 dfa4_T286[] = { 761, -1, -1, -1, -1, -1, 761 }; static const ANTLR3_INT32 dfa4_T287[] = { 508, -1, -1, -1, -1, -1, 508 }; static const ANTLR3_INT32 dfa4_T288[] = { 370, -1, -1, -1, -1, -1, 370 }; static const ANTLR3_INT32 dfa4_T289[] = { 489, -1, -1, -1, -1, -1, 489 }; static const ANTLR3_INT32 dfa4_T290[] = { 502, -1, -1, -1, -1, -1, 502 }; static const ANTLR3_INT32 dfa4_T291[] = { 630, -1, -1, -1, -1, -1, 630 }; static const ANTLR3_INT32 dfa4_T292[] = { 3, -1, -1, -1, 3, 3, 3, 696, -1, 3, -1, 3, 3, 695, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T293[] = { 3, 3, -1, -1, 3, 3, 965, -1, 826, 966, 3, 823, -1, 3, 3, 965, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T294[] = { 3, 3, -1, -1, 3, 3, 685, -1, 559, 686, 3, 3, -1, 3, 3, 685, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T295[] = { 869, -1, -1, -1, -1, 773, -1, -1, -1, -1, -1, 773, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 871 }; static const ANTLR3_INT32 dfa4_T296[] = { 3, 3, -1, -1, 3, 3, 633, -1, 506, 634, 3, 3, -1, 3, 3, 633, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T297[] = { 3, 3, -1, -1, 3, 3, 224, -1, 3, 225, 3, 3, -1, 3, 3, 224, -1, -1, -1, 3, 2, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T298[] = { 3, 3, -1, -1, 3, 3, 402, -1, 3, 403, 3, 3, -1, 3, 3, 402, -1, -1, -1, 3, 258, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T299[] = { 3, 3, -1, -1, 3, 3, 809, -1, 811, 810, 3, 3, -1, 3, 3, 809, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T300[] = { 779, -1, -1, -1, -1, 661, -1, -1, -1, -1, -1, 661, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 783 }; static const ANTLR3_INT32 dfa4_T301[] = { 3, 3, -1, -1, 3, 3, 854, -1, 765, 855, 3, 623, -1, 3, 3, 854, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T302[] = { 3, 3, -1, -1, 3, 3, 471, -1, 468, 469, 3, 470, -1, 3, 3, 471, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T303[] = { 3, 3, -1, -1, 3, 3, 63, -1, 3, 64, 3, 3, -1, 3, 3, 63, -1, -1, -1, 3, 2, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T304[] = { 381, -1, -1, -1, -1, -1, 381 }; static const ANTLR3_INT32 dfa4_T305[] = { 830, -1, -1, -1, -1, -1, 830 }; static const ANTLR3_INT32 dfa4_T306[] = { 902, -1, -1, -1, -1, -1, 902 }; static const ANTLR3_INT32 dfa4_T307[] = { 516, -1, -1, -1, -1, -1, 516 }; static const ANTLR3_INT32 dfa4_T308[] = { 525, -1, -1, -1, -1, -1, 525 }; static const ANTLR3_INT32 dfa4_T309[] = { 908, -1, -1, -1, -1, -1, 908 }; static const ANTLR3_INT32 dfa4_T310[] = { 798, -1, -1, -1, -1, -1, 798 }; static const ANTLR3_INT32 dfa4_T311[] = { 534, -1, -1, -1, -1, -1, 534 }; static const ANTLR3_INT32 dfa4_T312[] = { 662, -1, -1, -1, -1, -1, 662 }; static const ANTLR3_INT32 dfa4_T313[] = { 807, -1, -1, -1, -1, -1, 807 }; static const ANTLR3_INT32 dfa4_T314[] = { 972, -1, -1, -1, -1, -1, 972 }; static const ANTLR3_INT32 dfa4_T315[] = { 668, -1, -1, -1, -1, -1, 668 }; static const ANTLR3_INT32 dfa4_T316[] = { 674, -1, -1, -1, -1, -1, 674 }; static const ANTLR3_INT32 dfa4_T317[] = { 705, -1, -1, -1, -1, -1, 705 }; static const ANTLR3_INT32 dfa4_T318[] = { 922, -1, -1, -1, -1, -1, 922 }; static const ANTLR3_INT32 dfa4_T319[] = { 821, -1, -1, -1, -1, -1, 821 }; static const ANTLR3_INT32 dfa4_T320[] = { 3, 3, -1, -1, 3, 3, 749, -1, 468, 748, 3, 750, -1, 3, 3, 749, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T321[] = { 3, 3, -1, -1, 3, 3, 854, -1, 765, 855, 3, 3, -1, 3, 3, 854, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T322[] = { 3, 3, -1, -1, 3, 3, 926, -1, 468, 925, 3, 927, -1, 3, 3, 926, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T323[] = { 3, 3, -1, -1, 3, 3, 203, -1, 200, 201, 3, 202, -1, 3, 3, 203, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T324[] = { 3, 3, -1, -1, 3, 3, 553, -1, 3, 554, 3, 3, -1, 3, 3, 553, -1, -1, -1, 3, 258, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T325[] = { 33, 23, -1, -1, 22, 31, 131, -1, 29, 132, 33, 26, -1, 30, 33, 131, -1, -1, -1, 30, -1, -1, -1, 27, 33, 32, -1, -1, 30, -1, 28, 33, 3, 30, 30, 30, 30 }; static const ANTLR3_INT32 dfa4_T326[] = { 3, 3, -1, -1, 3, 3, 499, -1, 3, 500, 3, 3, -1, 3, 3, 499, -1, -1, -1, 3, 2, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T327[] = { 3, 3, -1, -1, 3, 3, 487, -1, 200, 486, 3, 488, -1, 3, 3, 487, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T328[] = { 3, 3, -1, -1, 3, 3, 910, -1, 912, 911, 3, 3, -1, 3, 3, 910, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T329[] = { 3, 3, -1, -1, 3, 3, 815, -1, 817, 816, 3, 814, -1, 3, 3, 815, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T330[] = { 524 }; static const ANTLR3_INT32 dfa4_T331[] = { 3, 3, -1, -1, 3, 3, 759, -1, 200, 758, 3, 760, -1, 3, 3, 759, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T332[] = { 78, 153, -1, -1, 293, 84, 154, 3, 157, 923, 83, 156, -1, 76, 81, 154, -1, -1, -1, 76, -1, -1, -1, 77, 82, 86, -1, -1, 76, -1, 294, 296, 3, 76, 76, 76, 76 }; static const ANTLR3_INT32 dfa4_T333[] = { 3, 3, -1, -1, 3, 3, 332, -1, 3, 333, 3, 3, -1, 3, 3, 332, -1, -1, -1, 3, 258, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T334[] = { 3, 3, -1, -1, 3, 3, 958, -1, 817, 959, 3, 814, -1, 3, 3, 958, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T335[] = { 3, 3, -1, -1, 3, 3, 916, -1, 918, 917, 3, 915, -1, 3, 3, 916, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T336[] = { 3, 3, -1, -1, 3, 3, 310, -1, 307, 308, 3, 309, -1, 3, 3, 310, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T337[] = { 3, 3, -1, -1, 3, 3, 607, -1, 307, 606, 3, 608, -1, 3, 3, 607, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T338[] = { 3, 3, -1, -1, 3, 3, 847, -1, 307, 846, 3, 848, -1, 3, 3, 847, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T339[] = { 3, 3, -1, -1, 3, 3, 291, -1, 3, 292, 3, 3, -1, 3, 3, 291, -1, -1, -1, 3, 258, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T340[] = { 3, 3, -1, -1, 3, 3, 1004, -1, 918, 1005, 3, 915, -1, 3, 3, 1004, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T341[] = { 3, 3, -1, -1, 3, 3, 128, -1, 125, 126, 3, 127, -1, 3, 3, 128, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T342[] = { 3, 3, -1, -1, 3, 3, 256, -1, 3, 521, 3, 3, -1, 3, 3, 256, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T343[] = { 3, 3, -1, -1, 3, 3, 376, -1, 125, 375, 3, 377, -1, 3, 3, 376, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T344[] = { 3, 3, -1, -1, 3, 3, 646, -1, 125, 645, 3, 647, -1, 3, 3, 646, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T345[] = { 3, 3, -1, -1, 3, 3, 256, -1, 3, 770, 3, 3, -1, 3, 3, 256, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T346[] = { 3, 3, -1, -1, 3, 3, 236, -1, 3, 513, 3, 3, -1, 3, 3, 236, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T347[] = { 3, 3, -1, -1, 3, 3, 256, -1, 3, 934, 3, 3, -1, 3, 3, 256, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T348[] = { 3, 3, -1, -1, 3, 3, 904, -1, 906, 905, 3, 3, -1, 3, 3, 904, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T349[] = { 99, -1, -1, -1, -1, -1, 99 }; static const ANTLR3_INT32 dfa4_T350[] = { 39, -1, -1, -1, -1, -1, 39 }; static const ANTLR3_INT32 dfa4_T351[] = { 67, -1, -1, -1, -1, -1, 67 }; static const ANTLR3_INT32 dfa4_T352[] = { 501, -1, -1, -1, -1, -1, 501 }; static const ANTLR3_INT32 dfa4_T353[] = { 121, -1, -1, -1, -1, -1, 121 }; static const ANTLR3_INT32 dfa4_T354[] = { 196, -1, -1, -1, -1, -1, 196 }; static const ANTLR3_INT32 dfa4_T355[] = { 226, -1, -1, -1, -1, -1, 226 }; static const ANTLR3_INT32 dfa4_T356[] = { 362, -1, -1, -1, -1, -1, 362 }; static const ANTLR3_INT32 dfa4_T357[] = { 238, -1, -1, -1, -1, -1, 238 }; static const ANTLR3_INT32 dfa4_T358[] = { 622, -1, -1, -1, -1, -1, 622 }; static const ANTLR3_INT32 dfa4_T359[] = { 303, -1, -1, -1, -1, -1, 303 }; static const ANTLR3_INT32 dfa4_T360[] = { 341, -1, -1, -1, -1, -1, 341 }; static const ANTLR3_INT32 dfa4_T361[] = { 353, -1, -1, -1, -1, -1, 353 }; static const ANTLR3_INT32 dfa4_T362[] = { 3, 3, -1, -1, 3, 3, 236, -1, 3, 768, 3, 3, -1, 3, 3, 236, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T363[] = { 3, 3, -1, -1, 3, 3, 236, -1, 3, 933, 3, 3, -1, 3, 3, 236, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T364[] = { 78, 153, -1, -1, 152, 84, 454, -1, 298, 455, 83, 76, -1, 76, 81, 454, -1, -1, -1, 76, -1, -1, -1, 77, 82, 86, -1, -1, 76, -1, 85, 158, 3, 76, 76, 76, 76 }; static const ANTLR3_INT32 dfa4_T365[] = { 3, 3, -1, -1, 3, 3, 683, -1, 431, 684, 3, 428, -1, 3, 3, 683, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T366[] = { 3, 3, -1, -1, 3, 3, 414, -1, 3, 673, 3, 3, -1, 3, 3, 414, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T367[] = { 3, 3, -1, -1, 3, 3, 414, -1, 3, 882, 3, 3, -1, 3, 3, 414, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T368[] = { 3, 3, -1, -1, 3, 3, 974, -1, 976, 975, 3, 3, -1, 3, 3, 974, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T369[] = { 3, 3, -1, -1, 3, 3, 414, -1, 3, 995, 3, 3, -1, 3, 3, 414, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T370[] = { 3, 3, -1, -1, 3, 3, 704, -1, 701, 702, 3, 703, -1, 3, 3, 704, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T371[] = { 3, 3, -1, -1, 3, 3, 897, -1, 811, 898, 3, 698, -1, 3, 3, 897, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T372[] = { 3, 3, -1, -1, 3, 3, 224, -1, 3, 507, 3, 3, -1, 3, 3, 224, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T373[] = { 869, -1, -1, -1, -1, 938, -1, -1, -1, -1, -1, 938, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 987 }; static const ANTLR3_INT32 dfa4_T374[] = { 3, 3, -1, -1, 3, 3, 900, -1, 701, 899, 3, 901, -1, 3, 3, 900, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T375[] = { 3, 3, -1, -1, 3, 3, 236, -1, 3, 509, 3, 3, -1, 3, 3, 236, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T376[] = { 3, 3, -1, -1, 3, 3, 557, -1, 559, 558, 3, 3, -1, 3, 3, 557, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T377[] = { 3, 3, -1, -1, 3, 3, 224, -1, 3, 767, 3, 3, -1, 3, 3, 224, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T378[] = { 3, 3, -1, -1, 3, 3, 1000, -1, 701, 999, 3, 1001, -1, 3, 3, 1000, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T379[] = { 3, 3, -1, -1, 3, 3, 224, -1, 3, 932, 3, 3, -1, 3, 3, 224, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T380[] = { 522, -1, -1, -1, -1, 657, -1, -1, -1, -1, -1, 657, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 777 }; static const ANTLR3_INT32 dfa4_T381[] = { 120, 112, -1, -1, 111, 118, 113, -1, 115, 114, 120, 115, -1, 115, 120, 113, -1, -1, -1, 115, -1, -1, -1, 116, 120, 119, -1, -1, 115, -1, 117, 120, -1, 115, 115, 115, 115 }; static const ANTLR3_INT32 dfa4_T382[] = { 33, 23, -1, -1, 22, 31, 137, -1, 29, 136, 33, 138, -1, 30, 33, 137, -1, -1, -1, 30, -1, -1, -1, 27, 33, 32, -1, -1, 30, -1, 28, 33, 3, 30, 30, 30, 30 }; static const ANTLR3_INT32 dfa4_T383[] = { 33, 23, -1, -1, 22, 31, 379, -1, 29, 378, 33, 380, -1, 30, 33, 379, -1, -1, -1, 30, -1, -1, -1, 27, 33, 32, -1, -1, 30, -1, 28, 33, 3, 30, 30, 30, 30 }; static const ANTLR3_INT32 dfa4_T384[] = { 3, 3, -1, -1, 3, 3, 256, -1, 3, 517, 3, 3, -1, 3, 3, 256, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T385[] = { 779, -1, -1, -1, -1, 878, -1, -1, -1, -1, -1, 878, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 945 }; static const ANTLR3_INT32 dfa4_T386[] = { 3, 3, -1, -1, 3, 3, 337, -1, 339, 338, 3, 3, -1, 3, 3, 337, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T387[] = { 3, 3, -1, -1, 3, 3, 829, -1, 826, 827, 3, 828, -1, 3, 3, 829, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T388[] = { 3, 3, -1, -1, 3, 3, 499, -1, 3, 766, 3, 3, -1, 3, 3, 499, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T389[] = { 869, -1, -1, -1, -1, 868, -1, 781, -1, -1, -1, 773, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 870 }; static const ANTLR3_INT32 dfa4_T390[] = { 3, 3, -1, -1, 3, 3, 499, -1, 3, 931, 3, 3, -1, 3, 3, 499, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T391[] = { 3, 3, -1, -1, 3, 3, 364, -1, 366, 365, 3, 363, -1, 3, 3, 364, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T392[] = { 3, 3, -1, -1, 3, 3, 970, -1, 826, 969, 3, 971, -1, 3, 3, 970, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T393[] = { 3, 3, -1, -1, 3, 3, 499, -1, 3, 1011, 3, 3, -1, 3, 3, 499, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T394[] = { 3, 3, -1, -1, 3, 3, 1025, -1, 826, 1024, 3, 1026, -1, 3, 3, 1025, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T395[] = { 3, 3, -1, -1, 3, 3, 224, -1, 3, 503, 3, 3, -1, 3, 3, 224, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T396[] = { 3, 3, -1, -1, 3, 3, 402, -1, 3, 667, 3, 3, -1, 3, 3, 402, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T397[] = { 3, 3, -1, -1, 3, 3, 414, -1, 3, 669, 3, 3, -1, 3, 3, 414, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T398[] = { 779, -1, -1, -1, -1, 778, -1, 781, -1, -1, -1, 661, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 780 }; static const ANTLR3_INT32 dfa4_T399[] = { 3, 3, -1, -1, 3, 3, 402, -1, 3, 881, 3, 3, -1, 3, 3, 402, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T400[] = { 3, 3, -1, -1, 3, 3, 460, -1, 462, 461, 3, 3, -1, 3, 3, 460, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T401[] = { 3, 3, -1, -1, 3, 3, 650, -1, 520, 651, 3, 3, -1, 3, 3, 650, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T402[] = { 874 }; static const ANTLR3_INT32 dfa4_T403[] = { 879 }; static const ANTLR3_INT32 dfa4_T404[] = { 3, 3, -1, -1, 3, 3, 332, -1, 3, 620, 3, 3, -1, 3, 3, 332, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T405[] = { 989 }; static const ANTLR3_INT32 dfa4_T406[] = { 993 }; static const ANTLR3_INT32 dfa4_T407[] = { 3, 3, -1, -1, 3, 3, 332, -1, 3, 850, 3, 3, -1, 3, 3, 332, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T408[] = { 3, 3, -1, -1, 3, 3, 402, -1, 3, 994, 3, 3, -1, 3, 3, 402, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T409[] = { 1030 }; static const ANTLR3_INT32 dfa4_T410[] = { 1032 }; static const ANTLR3_INT32 dfa4_T411[] = { 3, 3, -1, -1, 3, 3, 332, -1, 3, 980, 3, 3, -1, 3, 3, 332, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T412[] = { 3, 3, -1, -1, 3, 3, 355, -1, 357, 356, 3, 354, -1, 3, 3, 355, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T413[] = { 3, 3, -1, -1, 3, 3, 573, -1, 3, 574, 3, 3, -1, 3, 3, 573, -1, -1, -1, 3, 258, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T414[] = { 3, 3, -1, -1, 3, 3, 499, -1, 3, 762, 3, 3, -1, 3, 3, 499, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T415[] = { 869, -1, -1, -1, -1, 935, -1, 781, -1, -1, -1, 773, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 936 }; static const ANTLR3_INT32 dfa4_T416[] = { 3, 3, -1, -1, 3, 3, 241, -1, 243, 242, 3, 3, -1, 3, 3, 241, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T417[] = { 655, -1, -1, -1, -1, 656, -1, -1, -1, -1, -1, 657 }; static const ANTLR3_INT32 dfa4_T418[] = { 3, 3, -1, -1, 3, 3, 793, -1, 672, 794, 3, 3, -1, 3, 3, 793, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T419[] = { 3, 3, -1, -1, 3, 3, 553, -1, 3, 803, 3, 3, -1, 3, 3, 553, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T420[] = { 3, 3, -1, -1, 3, 3, 553, -1, 3, 955, 3, 3, -1, 3, 3, 553, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T421[] = { 3, 3, -1, -1, 3, 3, 475, -1, 477, 476, 3, 474, -1, 3, 3, 475, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T422[] = { 1038, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1039 }; static const ANTLR3_INT32 dfa4_T423[] = { 3, 3, -1, -1, 3, 3, 553, -1, 3, 1019, 3, 3, -1, 3, 3, 553, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T424[] = { 391, -1, -1, -1, -1, 390, -1, -1, -1, -1, -1, 390 }; static const ANTLR3_INT32 dfa4_T425[] = { 3, 3, -1, -1, 3, 3, 820, -1, 817, 818, 3, 819, -1, 3, 3, 820, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T426[] = { 779, -1, -1, -1, -1, 875, -1, 781, -1, -1, -1, 661, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 876 }; static const ANTLR3_INT32 dfa4_T427[] = { 3, 3, -1, -1, 3, 3, 727, -1, 3, 728, 3, 3, -1, 3, 3, 727, -1, -1, -1, 3, 258, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T428[] = { 3, 3, -1, -1, 3, 3, 963, -1, 817, 962, 3, 964, -1, 3, 3, 963, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T429[] = { 3, 3, -1, -1, 3, 3, 624, -1, 626, 625, 3, 623, -1, 3, 3, 624, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T430[] = { 3, 3, -1, -1, 3, 3, 1022, -1, 817, 1021, 3, 1023, -1, 3, 3, 1022, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T431[] = { 3, 3, -1, -1, 3, 3, 638, -1, 366, 639, 3, 363, -1, 3, 3, 638, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T432[] = { 3, 3, -1, -1, 3, 3, 402, -1, 3, 663, 3, 3, -1, 3, 3, 402, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T433[] = { 869, -1, -1, -1, -1, 773, -1, 781, -1, -1, -1, 773, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 984 }; static const ANTLR3_INT32 dfa4_T434[] = { 3, 3, -1, -1, 3, 3, 332, -1, 3, 616, 3, 3, -1, 3, 3, 332, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa4_T435[] = { 659, -1, -1, -1, -1, 771, -1, -1, -1, -1, -1, 773, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 772 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa4_transitions[] = { dfa4_T212, dfa4_T62, NULL, NULL, dfa4_T108, dfa4_T62, dfa4_T62, dfa4_T62, dfa4_T62, dfa4_T62, dfa4_T272, dfa4_T169, dfa4_T8, dfa4_T350, dfa4_T8, dfa4_T8, dfa4_T8, dfa4_T8, dfa4_T8, dfa4_T8, dfa4_T8, dfa4_T255, dfa4_T71, dfa4_T303, dfa4_T2, dfa4_T2, dfa4_T274, dfa4_T351, dfa4_T8, dfa4_T50, dfa4_T8, dfa4_T8, dfa4_T8, dfa4_T8, dfa4_T2, dfa4_T2, dfa4_T244, dfa4_T8, dfa4_T8, dfa4_T280, dfa4_T78, dfa4_T20, dfa4_T27, dfa4_T58, dfa4_T58, dfa4_T58, dfa4_T349, dfa4_T58, dfa4_T58, dfa4_T58, dfa4_T58, dfa4_T58, dfa4_T123, dfa4_T381, dfa4_T71, dfa4_T71, dfa4_T71, dfa4_T353, dfa4_T71, dfa4_T71, dfa4_T71, dfa4_T71, dfa4_T71, dfa4_T238, dfa4_T341, dfa4_T51, dfa4_T325, dfa4_T281, dfa4_T2, dfa4_T2, dfa4_T121, dfa4_T382, dfa4_T8, dfa4_T42, dfa4_T171, dfa4_T261, dfa4_T88, dfa4_T13, dfa4_T88, dfa4_T46, dfa4_T54, dfa4_T88, dfa4_T88, dfa4_T88, dfa4_T88, dfa4_T192, dfa4_T231, dfa4_T20, dfa4_T20, dfa4_T20, dfa4_T354, dfa4_T20, dfa4_T20, dfa4_T20, dfa4_T20, dfa4_T20, dfa4_T191, dfa4_T323, dfa4_T83, dfa4_T282, dfa4_T86, dfa4_T297, dfa4_T123, dfa4_T123, dfa4_T123, dfa4_T355, dfa4_T123, dfa4_T123, dfa4_T123, dfa4_T123, dfa4_T123, dfa4_T73, dfa4_T38, dfa4_T218, dfa4_T218, dfa4_T218, dfa4_T357, dfa4_T218, dfa4_T218, dfa4_T218, dfa4_T218, dfa4_T283, dfa4_T213, dfa4_T2, dfa4_T2, dfa4_T416, dfa4_T2, dfa4_T177, dfa4_T2, dfa4_T2, dfa4_T2, dfa4_T2, dfa4_T2, dfa4_T8, dfa4_T41, dfa4_T41, dfa4_T2, dfa4_T2, dfa4_T247, dfa4_T42, dfa4_T42, dfa4_T42, dfa4_T136, dfa4_T106, dfa4_T239, dfa4_T42, dfa4_T42, dfa4_T42, dfa4_T42, dfa4_T42, dfa4_T85, dfa4_T5, dfa4_T22, dfa4_T339, dfa4_T102, dfa4_T102, dfa4_T227, dfa4_T100, dfa4_T88, dfa4_T223, dfa4_T206, dfa4_T88, dfa4_T88, dfa4_T65, dfa4_T46, dfa4_T46, dfa4_T46, dfa4_T359, dfa4_T46, dfa4_T46, dfa4_T46, dfa4_T46, dfa4_T46, dfa4_T208, dfa4_T336, dfa4_T128, dfa4_T154, dfa4_T192, dfa4_T192, dfa4_T192, dfa4_T14, dfa4_T192, dfa4_T192, dfa4_T192, dfa4_T192, dfa4_T192, dfa4_T0, dfa4_T333, dfa4_T25, dfa4_T25, dfa4_T25, dfa4_T15, dfa4_T25, dfa4_T25, dfa4_T25, dfa4_T25, dfa4_T284, dfa4_T173, dfa4_T2, dfa4_T2, dfa4_T386, dfa4_T2, dfa4_T122, dfa4_T2, dfa4_T83, dfa4_T83, dfa4_T83, dfa4_T360, dfa4_T83, dfa4_T83, dfa4_T83, dfa4_T83, dfa4_T83, dfa4_T166, dfa4_T58, dfa4_T86, dfa4_T86, dfa4_T86, dfa4_T361, dfa4_T86, dfa4_T86, dfa4_T86, dfa4_T86, dfa4_T86, dfa4_T412, dfa4_T114, dfa4_T285, dfa4_T73, dfa4_T73, dfa4_T73, dfa4_T356, dfa4_T73, dfa4_T73, dfa4_T73, dfa4_T73, dfa4_T73, dfa4_T391, dfa4_T89, dfa4_T288, dfa4_T71, dfa4_T276, dfa4_T2, dfa4_T2, dfa4_T74, dfa4_T343, dfa4_T383, dfa4_T304, dfa4_T106, dfa4_T106, dfa4_T106, dfa4_T135, dfa4_T106, dfa4_T106, dfa4_T106, dfa4_T106, dfa4_T106, dfa4_T30, dfa4_T182, dfa4_T424, dfa4_T85, dfa4_T85, dfa4_T85, dfa4_T139, dfa4_T4, dfa4_T298, dfa4_T85, dfa4_T85, dfa4_T85, dfa4_T85, dfa4_T85, dfa4_T5, dfa4_T5, dfa4_T5, dfa4_T140, dfa4_T129, dfa4_T251, dfa4_T5, dfa4_T5, dfa4_T5, dfa4_T5, dfa4_T5, dfa4_T98, dfa4_T22, dfa4_T22, dfa4_T22, dfa4_T16, dfa4_T22, dfa4_T22, dfa4_T22, dfa4_T22, dfa4_T22, dfa4_T245, dfa4_T40, dfa4_T200, dfa4_T133, dfa4_T180, dfa4_T31, dfa4_T171, dfa4_T364, dfa4_T233, dfa4_T172, dfa4_T262, dfa4_T88, dfa4_T279, dfa4_T198, dfa4_T2, dfa4_T2, dfa4_T400, dfa4_T2, dfa4_T160, dfa4_T2, dfa4_T128, dfa4_T128, dfa4_T128, dfa4_T17, dfa4_T128, dfa4_T128, dfa4_T128, dfa4_T128, dfa4_T128, dfa4_T35, dfa4_T302, dfa4_T66, dfa4_T0, dfa4_T0, dfa4_T0, dfa4_T18, dfa4_T0, dfa4_T0, dfa4_T0, dfa4_T0, dfa4_T0, dfa4_T421, dfa4_T259, dfa4_T67, dfa4_T20, dfa4_T241, dfa4_T2, dfa4_T2, dfa4_T21, dfa4_T327, dfa4_T289, dfa4_T101, dfa4_T326, dfa4_T166, dfa4_T166, dfa4_T166, dfa4_T352, dfa4_T166, dfa4_T166, dfa4_T166, dfa4_T166, dfa4_T166, dfa4_T290, dfa4_T395, dfa4_T2, dfa4_T2, dfa4_T228, dfa4_T2, dfa4_T372, dfa4_T2, dfa4_T123, dfa4_T287, dfa4_T375, dfa4_T2, dfa4_T2, dfa4_T193, dfa4_T2, dfa4_T346, dfa4_T2, dfa4_T218, dfa4_T2, dfa4_T2, dfa4_T55, dfa4_T55, dfa4_T2, dfa4_T2, dfa4_T183, dfa4_T2, dfa4_T2, dfa4_T246, dfa4_T42, dfa4_T307, dfa4_T2, dfa4_T2, dfa4_T384, dfa4_T84, dfa4_T2, dfa4_T2, dfa4_T342, dfa4_T81, dfa4_T330, dfa4_T308, dfa4_T4, dfa4_T4, dfa4_T4, dfa4_T141, dfa4_T4, dfa4_T4, dfa4_T4, dfa4_T4, dfa4_T4, dfa4_T103, dfa4_T248, dfa4_T311, dfa4_T129, dfa4_T129, dfa4_T129, dfa4_T142, dfa4_T129, dfa4_T129, dfa4_T129, dfa4_T129, dfa4_T129, dfa4_T59, dfa4_T204, dfa4_T98, dfa4_T98, dfa4_T98, dfa4_T143, dfa4_T28, dfa4_T324, dfa4_T98, dfa4_T98, dfa4_T98, dfa4_T98, dfa4_T98, dfa4_T68, dfa4_T265, dfa4_T2, dfa4_T2, dfa4_T376, dfa4_T2, dfa4_T234, dfa4_T2, dfa4_T168, dfa4_T155, dfa4_T155, dfa4_T155, dfa4_T112, dfa4_T155, dfa4_T60, dfa4_T413, dfa4_T31, dfa4_T31, dfa4_T31, dfa4_T145, dfa4_T31, dfa4_T31, dfa4_T31, dfa4_T31, dfa4_T31, dfa4_T44, dfa4_T53, dfa4_T94, dfa4_T94, dfa4_T222, dfa4_T203, dfa4_T46, dfa4_T254, dfa4_T2, dfa4_T2, dfa4_T48, dfa4_T337, dfa4_T69, dfa4_T63, dfa4_T2, dfa4_T2, dfa4_T209, dfa4_T2, dfa4_T1, dfa4_T2, dfa4_T192, dfa4_T70, dfa4_T434, dfa4_T2, dfa4_T2, dfa4_T165, dfa4_T2, dfa4_T404, dfa4_T2, dfa4_T25, dfa4_T2, dfa4_T2, dfa4_T181, dfa4_T181, dfa4_T2, dfa4_T2, dfa4_T124, dfa4_T83, dfa4_T101, dfa4_T101, dfa4_T101, dfa4_T358, dfa4_T101, dfa4_T101, dfa4_T101, dfa4_T101, dfa4_T101, dfa4_T429, dfa4_T134, dfa4_T291, dfa4_T86, dfa4_T33, dfa4_T2, dfa4_T2, dfa4_T296, dfa4_T116, dfa4_T73, dfa4_T431, dfa4_T2, dfa4_T2, dfa4_T269, dfa4_T91, dfa4_T344, dfa4_T2, dfa4_T106, dfa4_T43, dfa4_T2, dfa4_T2, dfa4_T401, dfa4_T187, dfa4_T417, dfa4_T2, dfa4_T49, dfa4_T85, dfa4_T312, dfa4_T2, dfa4_T2, dfa4_T432, dfa4_T159, dfa4_T2, dfa4_T2, dfa4_T396, dfa4_T5, dfa4_T315, dfa4_T2, dfa4_T2, dfa4_T397, dfa4_T97, dfa4_T2, dfa4_T2, dfa4_T366, dfa4_T316, dfa4_T28, dfa4_T28, dfa4_T28, dfa4_T150, dfa4_T28, dfa4_T28, dfa4_T28, dfa4_T28, dfa4_T28, dfa4_T113, dfa4_T271, dfa4_T22, dfa4_T365, dfa4_T2, dfa4_T2, dfa4_T294, dfa4_T39, dfa4_T170, dfa4_T292, dfa4_T292, dfa4_T60, dfa4_T60, dfa4_T60, dfa4_T144, dfa4_T60, dfa4_T60, dfa4_T60, dfa4_T60, dfa4_T60, dfa4_T257, dfa4_T370, dfa4_T317, dfa4_T36, dfa4_T47, dfa4_T44, dfa4_T44, dfa4_T44, dfa4_T138, dfa4_T44, dfa4_T44, dfa4_T44, dfa4_T44, dfa4_T44, dfa4_T12, dfa4_T427, dfa4_T53, dfa4_T53, dfa4_T53, dfa4_T149, dfa4_T53, dfa4_T53, dfa4_T53, dfa4_T53, dfa4_T53, dfa4_T72, dfa4_T232, dfa4_T176, dfa4_T260, dfa4_T2, dfa4_T2, dfa4_T29, dfa4_T29, dfa4_T2, dfa4_T2, dfa4_T163, dfa4_T128, dfa4_T179, dfa4_T2, dfa4_T2, dfa4_T87, dfa4_T320, dfa4_T0, dfa4_T118, dfa4_T2, dfa4_T2, dfa4_T34, dfa4_T264, dfa4_T331, dfa4_T286, dfa4_T414, dfa4_T2, dfa4_T2, dfa4_T242, dfa4_T2, dfa4_T388, dfa4_T2, dfa4_T166, dfa4_T2, dfa4_T2, dfa4_T278, dfa4_T278, dfa4_T2, dfa4_T2, dfa4_T377, dfa4_T2, dfa4_T2, dfa4_T252, dfa4_T252, dfa4_T2, dfa4_T2, dfa4_T362, dfa4_T2, dfa4_T2, dfa4_T184, dfa4_T2, dfa4_T2, dfa4_T185, dfa4_T185, dfa4_T2, dfa4_T2, dfa4_T345, dfa4_T435, dfa4_T77, dfa4_T380, dfa4_T398, dfa4_T95, dfa4_T2, dfa4_T300, dfa4_T4, dfa4_T107, dfa4_T2, dfa4_T2, dfa4_T32, dfa4_T253, dfa4_T129, dfa4_T75, dfa4_T2, dfa4_T2, dfa4_T418, dfa4_T211, dfa4_T98, dfa4_T310, dfa4_T2, dfa4_T2, dfa4_T26, dfa4_T178, dfa4_T2, dfa4_T2, dfa4_T419, dfa4_T2, dfa4_T2, dfa4_T37, dfa4_T37, dfa4_T2, dfa4_T2, dfa4_T236, dfa4_T96, dfa4_T96, dfa4_T96, dfa4_T76, dfa4_T96, dfa4_T155, dfa4_T155, dfa4_T313, dfa4_T174, dfa4_T2, dfa4_T2, dfa4_T299, dfa4_T2, dfa4_T105, dfa4_T2, dfa4_T31, dfa4_T36, dfa4_T36, dfa4_T36, dfa4_T137, dfa4_T36, dfa4_T36, dfa4_T36, dfa4_T36, dfa4_T36, dfa4_T329, dfa4_T425, dfa4_T319, dfa4_T12, dfa4_T12, dfa4_T12, dfa4_T147, dfa4_T12, dfa4_T12, dfa4_T12, dfa4_T12, dfa4_T12, dfa4_T275, dfa4_T387, dfa4_T305, dfa4_T61, dfa4_T79, dfa4_T72, dfa4_T72, dfa4_T72, dfa4_T146, dfa4_T72, dfa4_T72, dfa4_T72, dfa4_T72, dfa4_T72, dfa4_T219, dfa4_T210, dfa4_T338, dfa4_T2, dfa4_T2, dfa4_T263, dfa4_T263, dfa4_T2, dfa4_T2, dfa4_T7, dfa4_T2, dfa4_T2, dfa4_T214, dfa4_T214, dfa4_T2, dfa4_T2, dfa4_T407, dfa4_T2, dfa4_T2, dfa4_T126, dfa4_T101, dfa4_T57, dfa4_T2, dfa4_T2, dfa4_T321, dfa4_T152, dfa4_T117, dfa4_T92, dfa4_T2, dfa4_T194, dfa4_T389, dfa4_T2, dfa4_T295, dfa4_T99, dfa4_T2, dfa4_T402, dfa4_T2, dfa4_T426, dfa4_T110, dfa4_T2, dfa4_T403, dfa4_T153, dfa4_T2, dfa4_T2, dfa4_T2, dfa4_T249, dfa4_T249, dfa4_T2, dfa4_T2, dfa4_T399, dfa4_T2, dfa4_T2, dfa4_T205, dfa4_T205, dfa4_T2, dfa4_T2, dfa4_T367, dfa4_T28, dfa4_T130, dfa4_T2, dfa4_T2, dfa4_T56, dfa4_T270, dfa4_T45, dfa4_T243, dfa4_T243, dfa4_T60, dfa4_T266, dfa4_T2, dfa4_T2, dfa4_T201, dfa4_T374, dfa4_T306, dfa4_T240, dfa4_T2, dfa4_T2, dfa4_T348, dfa4_T2, dfa4_T190, dfa4_T2, dfa4_T44, dfa4_T309, dfa4_T195, dfa4_T2, dfa4_T2, dfa4_T328, dfa4_T2, dfa4_T127, dfa4_T2, dfa4_T53, dfa4_T61, dfa4_T61, dfa4_T61, dfa4_T148, dfa4_T61, dfa4_T61, dfa4_T61, dfa4_T61, dfa4_T61, dfa4_T335, dfa4_T9, dfa4_T318, dfa4_T235, dfa4_T175, dfa4_T332, dfa4_T2, dfa4_T2, dfa4_T167, dfa4_T322, dfa4_T267, dfa4_T2, dfa4_T2, dfa4_T2, dfa4_T301, dfa4_T301, dfa4_T2, dfa4_T2, dfa4_T390, dfa4_T2, dfa4_T2, dfa4_T379, dfa4_T2, dfa4_T2, dfa4_T363, dfa4_T2, dfa4_T2, dfa4_T347, dfa4_T415, dfa4_T111, dfa4_T2, dfa4_T2, dfa4_T125, dfa4_T2, dfa4_T157, dfa4_T24, dfa4_T2, dfa4_T82, dfa4_T385, dfa4_T158, dfa4_T186, dfa4_T258, dfa4_T207, dfa4_T2, dfa4_T2, dfa4_T268, dfa4_T268, dfa4_T2, dfa4_T2, dfa4_T420, dfa4_T2, dfa4_T2, dfa4_T237, dfa4_T96, dfa4_T96, dfa4_T2, dfa4_T2, dfa4_T371, dfa4_T371, dfa4_T2, dfa4_T2, dfa4_T109, dfa4_T36, dfa4_T334, dfa4_T2, dfa4_T2, dfa4_T256, dfa4_T428, dfa4_T12, dfa4_T293, dfa4_T2, dfa4_T2, dfa4_T215, dfa4_T392, dfa4_T314, dfa4_T250, dfa4_T2, dfa4_T2, dfa4_T368, dfa4_T2, dfa4_T217, dfa4_T2, dfa4_T72, dfa4_T230, dfa4_T2, dfa4_T2, dfa4_T2, dfa4_T11, dfa4_T2, dfa4_T2, dfa4_T411, dfa4_T156, dfa4_T2, dfa4_T2, dfa4_T2, dfa4_T433, dfa4_T2, dfa4_T64, dfa4_T373, dfa4_T2, dfa4_T188, dfa4_T405, dfa4_T2, dfa4_T104, dfa4_T2, dfa4_T2, dfa4_T189, dfa4_T406, dfa4_T216, dfa4_T2, dfa4_T2, dfa4_T408, dfa4_T2, dfa4_T2, dfa4_T369, dfa4_T273, dfa4_T2, dfa4_T378, dfa4_T2, dfa4_T2, dfa4_T80, dfa4_T80, dfa4_T2, dfa4_T2, dfa4_T199, dfa4_T2, dfa4_T2, dfa4_T23, dfa4_T23, dfa4_T2, dfa4_T2, dfa4_T132, dfa4_T61, dfa4_T340, dfa4_T2, dfa4_T2, dfa4_T277, dfa4_T6, dfa4_T102, dfa4_T2, dfa4_T2, dfa4_T2, dfa4_T2, dfa4_T393, dfa4_T2, dfa4_T93, dfa4_T2, dfa4_T2, dfa4_T220, dfa4_T161, dfa4_T131, dfa4_T2, dfa4_T221, dfa4_T162, dfa4_T2, dfa4_T2, dfa4_T2, dfa4_T2, dfa4_T423, dfa4_T2, dfa4_T2, dfa4_T115, dfa4_T430, dfa4_T394, dfa4_T2, dfa4_T2, dfa4_T3, dfa4_T3, dfa4_T2, dfa4_T2, dfa4_T224, dfa4_T2, dfa4_T119, dfa4_T2, dfa4_T196, dfa4_T409, dfa4_T2, dfa4_T197, dfa4_T410, dfa4_T2, dfa4_T2, dfa4_T2, dfa4_T2, dfa4_T202, dfa4_T2, dfa4_T2, dfa4_T151, dfa4_T10, dfa4_T2, dfa4_T225, dfa4_T422, dfa4_T226, dfa4_T90, dfa4_T2, dfa4_T2, dfa4_T2, dfa4_T2, dfa4_T229, dfa4_T19, dfa4_T2, dfa4_T120, dfa4_T2, dfa4_T2, dfa4_T52, dfa4_T2, dfa4_T164, dfa4_T2, dfa4_T2, dfa4_T2 }; static ANTLR3_INT32 dfa4_sst(pbelle_sip_messageParser ctx, pANTLR3_BASE_RECOGNIZER recognizer, pANTLR3_INT_STREAM is, pANTLR3_CYCLIC_DFA dfa, ANTLR3_INT32 s) { ANTLR3_INT32 _s; _s = s; switch (s) { case 0: { ANTLR3_UINT32 LA4_795; ANTLR3_MARKER index4_795; LA4_795 = LA(1); index4_795 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_795); if ( s>=0 ) { return s; } } break; case 1: { ANTLR3_UINT32 LA4_827; ANTLR3_MARKER index4_827; LA4_827 = LA(1); index4_827 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_827); if ( s>=0 ) { return s; } } break; case 2: { ANTLR3_UINT32 LA4_969; ANTLR3_MARKER index4_969; LA4_969 = LA(1); index4_969 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_969); if ( s>=0 ) { return s; } } break; case 3: { ANTLR3_UINT32 LA4_478; ANTLR3_MARKER index4_478; LA4_478 = LA(1); index4_478 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_478); if ( s>=0 ) { return s; } } break; case 4: { ANTLR3_UINT32 LA4_540; ANTLR3_MARKER index4_540; LA4_540 = LA(1); index4_540 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_540); if ( s>=0 ) { return s; } } break; case 5: { ANTLR3_UINT32 LA4_928; ANTLR3_MARKER index4_928; LA4_928 = LA(1); index4_928 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_928); if ( s>=0 ) { return s; } } break; case 6: { ANTLR3_UINT32 LA4_429; ANTLR3_MARKER index4_429; LA4_429 = LA(1); index4_429 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_429); if ( s>=0 ) { return s; } } break; case 7: { ANTLR3_UINT32 LA4_434; ANTLR3_MARKER index4_434; LA4_434 = LA(1); index4_434 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_434); if ( s>=0 ) { return s; } } break; case 8: { ANTLR3_UINT32 LA4_557; ANTLR3_MARKER index4_557; LA4_557 = LA(1); index4_557 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_557); if ( s>=0 ) { return s; } } break; case 9: { ANTLR3_UINT32 LA4_683; ANTLR3_MARKER index4_683; LA4_683 = LA(1); index4_683 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_683); if ( s>=0 ) { return s; } } break; case 10: { ANTLR3_UINT32 LA4_688; ANTLR3_MARKER index4_688; LA4_688 = LA(1); index4_688 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_688); if ( s>=0 ) { return s; } } break; case 11: { ANTLR3_UINT32 LA4_755; ANTLR3_MARKER index4_755; LA4_755 = LA(1); index4_755 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_755); if ( s>=0 ) { return s; } } break; case 12: { ANTLR3_UINT32 LA4_891; ANTLR3_MARKER index4_891; LA4_891 = LA(1); index4_891 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_891); if ( s>=0 ) { return s; } } break; case 13: { ANTLR3_UINT32 LA4_952; ANTLR3_MARKER index4_952; LA4_952 = LA(1); index4_952 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_952); if ( s>=0 ) { return s; } } break; case 14: { ANTLR3_UINT32 LA4_198; ANTLR3_MARKER index4_198; LA4_198 = LA(1); index4_198 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_198); if ( s>=0 ) { return s; } } break; case 15: { ANTLR3_UINT32 LA4_203; ANTLR3_MARKER index4_203; LA4_203 = LA(1); index4_203 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_203); if ( s>=0 ) { return s; } } break; case 16: { ANTLR3_UINT32 LA4_337; ANTLR3_MARKER index4_337; LA4_337 = LA(1); index4_337 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_337); if ( s>=0 ) { return s; } } break; case 17: { ANTLR3_UINT32 LA4_482; ANTLR3_MARKER index4_482; LA4_482 = LA(1); index4_482 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_482); if ( s>=0 ) { return s; } } break; case 18: { ANTLR3_UINT32 LA4_487; ANTLR3_MARKER index4_487; LA4_487 = LA(1); index4_487 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_487); if ( s>=0 ) { return s; } } break; case 19: { ANTLR3_UINT32 LA4_759; ANTLR3_MARKER index4_759; LA4_759 = LA(1); index4_759 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_759); if ( s>=0 ) { return s; } } break; case 20: { ANTLR3_UINT32 LA4_1024; ANTLR3_MARKER index4_1024; LA4_1024 = LA(1); index4_1024 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_1024); if ( s>=0 ) { return s; } } break; case 21: { ANTLR3_UINT32 LA4_515; ANTLR3_MARKER index4_515; LA4_515 = LA(1); index4_515 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_515); if ( s>=0 ) { return s; } } break; case 22: { ANTLR3_UINT32 LA4_305; ANTLR3_MARKER index4_305; LA4_305 = LA(1); index4_305 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_305); if ( s>=0 ) { return s; } } break; case 23: { ANTLR3_UINT32 LA4_310; ANTLR3_MARKER index4_310; LA4_310 = LA(1); index4_310 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_310); if ( s>=0 ) { return s; } } break; case 24: { ANTLR3_UINT32 LA4_460; ANTLR3_MARKER index4_460; LA4_460 = LA(1); index4_460 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_460); if ( s>=0 ) { return s; } } break; case 25: { ANTLR3_UINT32 LA4_602; ANTLR3_MARKER index4_602; LA4_602 = LA(1); index4_602 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_602); if ( s>=0 ) { return s; } } break; case 26: { ANTLR3_UINT32 LA4_607; ANTLR3_MARKER index4_607; LA4_607 = LA(1); index4_607 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_607); if ( s>=0 ) { return s; } } break; case 27: { ANTLR3_UINT32 LA4_847; ANTLR3_MARKER index4_847; LA4_847 = LA(1); index4_847 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_847); if ( s>=0 ) { return s; } } break; case 28: { ANTLR3_UINT32 LA4_531; ANTLR3_MARKER index4_531; LA4_531 = LA(1); index4_531 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_531); if ( s>=0 ) { return s; } } break; case 29: { ANTLR3_UINT32 LA4_123; ANTLR3_MARKER index4_123; LA4_123 = LA(1); index4_123 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_123); if ( s>=0 ) { return s; } } break; case 30: { ANTLR3_UINT32 LA4_128; ANTLR3_MARKER index4_128; LA4_128 = LA(1); index4_128 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_128); if ( s>=0 ) { return s; } } break; case 31: { ANTLR3_UINT32 LA4_241; ANTLR3_MARKER index4_241; LA4_241 = LA(1); index4_241 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_241); if ( s>=0 ) { return s; } } break; case 32: { ANTLR3_UINT32 LA4_371; ANTLR3_MARKER index4_371; LA4_371 = LA(1); index4_371 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_371); if ( s>=0 ) { return s; } } break; case 33: { ANTLR3_UINT32 LA4_376; ANTLR3_MARKER index4_376; LA4_376 = LA(1); index4_376 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_376); if ( s>=0 ) { return s; } } break; case 34: { ANTLR3_UINT32 LA4_646; ANTLR3_MARKER index4_646; LA4_646 = LA(1); index4_646 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_646); if ( s>=0 ) { return s; } } break; case 35: { ANTLR3_UINT32 LA4_949; ANTLR3_MARKER index4_949; LA4_949 = LA(1); index4_949 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_949); if ( s>=0 ) { return s; } } break; case 36: { ANTLR3_UINT32 LA4_1021; ANTLR3_MARKER index4_1021; LA4_1021 = LA(1); index4_1021 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_1021); if ( s>=0 ) { return s; } } break; case 37: { ANTLR3_UINT32 LA4_818; ANTLR3_MARKER index4_818; LA4_818 = LA(1); index4_818 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_818); if ( s>=0 ) { return s; } } break; case 38: { ANTLR3_UINT32 LA4_788; ANTLR3_MARKER index4_788; LA4_788 = LA(1); index4_788 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_788); if ( s>=0 ) { return s; } } break; case 39: { ANTLR3_UINT32 LA4_962; ANTLR3_MARKER index4_962; LA4_962 = LA(1); index4_962 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_962); if ( s>=0 ) { return s; } } break; case 40: { ANTLR3_UINT32 LA4_199; ANTLR3_MARKER index4_199; LA4_199 = LA(1); index4_199 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_199); if ( s>=0 ) { return s; } } break; case 41: { ANTLR3_UINT32 LA4_338; ANTLR3_MARKER index4_338; LA4_338 = LA(1); index4_338 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_338); if ( s>=0 ) { return s; } } break; case 42: { ANTLR3_UINT32 LA4_483; ANTLR3_MARKER index4_483; LA4_483 = LA(1); index4_483 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_483); if ( s>=0 ) { return s; } } break; case 43: { ANTLR3_UINT32 LA4_680; ANTLR3_MARKER index4_680; LA4_680 = LA(1); index4_680 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_680); if ( s>=0 ) { return s; } } break; case 44: { ANTLR3_UINT32 LA4_887; ANTLR3_MARKER index4_887; LA4_887 = LA(1); index4_887 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_887); if ( s>=0 ) { return s; } } break; case 45: { ANTLR3_UINT32 LA4_919; ANTLR3_MARKER index4_919; LA4_919 = LA(1); index4_919 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_919); if ( s>=0 ) { return s; } } break; case 46: { ANTLR3_UINT32 LA4_1035; ANTLR3_MARKER index4_1035; LA4_1035 = LA(1); index4_1035 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_1035); if ( s>=0 ) { return s; } } break; case 47: { ANTLR3_UINT32 LA4_996; ANTLR3_MARKER index4_996; LA4_996 = LA(1); index4_996 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_996); if ( s>=0 ) { return s; } } break; case 48: { ANTLR3_UINT32 LA4_1008; ANTLR3_MARKER index4_1008; LA4_1008 = LA(1); index4_1008 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_1008); if ( s>=0 ) { return s; } } break; case 49: { ANTLR3_UINT32 LA4_306; ANTLR3_MARKER index4_306; LA4_306 = LA(1); index4_306 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_306); if ( s>=0 ) { return s; } } break; case 50: { ANTLR3_UINT32 LA4_461; ANTLR3_MARKER index4_461; LA4_461 = LA(1); index4_461 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_461); if ( s>=0 ) { return s; } } break; case 51: { ANTLR3_UINT32 LA4_603; ANTLR3_MARKER index4_603; LA4_603 = LA(1); index4_603 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_603); if ( s>=0 ) { return s; } } break; case 52: { ANTLR3_UINT32 LA4_124; ANTLR3_MARKER index4_124; LA4_124 = LA(1); index4_124 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_124); if ( s>=0 ) { return s; } } break; case 53: { ANTLR3_UINT32 LA4_242; ANTLR3_MARKER index4_242; LA4_242 = LA(1); index4_242 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_242); if ( s>=0 ) { return s; } } break; case 54: { ANTLR3_UINT32 LA4_372; ANTLR3_MARKER index4_372; LA4_372 = LA(1); index4_372 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_372); if ( s>=0 ) { return s; } } break; case 55: { ANTLR3_UINT32 LA4_748; ANTLR3_MARKER index4_748; LA4_748 = LA(1); index4_748 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_748); if ( s>=0 ) { return s; } } break; case 56: { ANTLR3_UINT32 LA4_469; ANTLR3_MARKER index4_469; LA4_469 = LA(1); index4_469 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_469); if ( s>=0 ) { return s; } } break; case 57: { ANTLR3_UINT32 LA4_925; ANTLR3_MARKER index4_925; LA4_925 = LA(1); index4_925 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_925); if ( s>=0 ) { return s; } } break; case 58: { ANTLR3_UINT32 LA4_25; ANTLR3_MARKER index4_25; LA4_25 = LA(1); index4_25 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_25); if ( s>=0 ) { return s; } } break; case 59: { ANTLR3_UINT32 LA4_69; ANTLR3_MARKER index4_69; LA4_69 = LA(1); index4_69 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_69); if ( s>=0 ) { return s; } } break; case 60: { ANTLR3_UINT32 LA4_130; ANTLR3_MARKER index4_130; LA4_130 = LA(1); index4_130 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_130); if ( s>=0 ) { return s; } } break; case 61: { ANTLR3_UINT32 LA4_132; ANTLR3_MARKER index4_132; LA4_132 = LA(1); index4_132 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_132); if ( s>=0 ) { return s; } } break; case 62: { ANTLR3_UINT32 LA4_430; ANTLR3_MARKER index4_430; LA4_430 = LA(1); index4_430 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_430); if ( s>=0 ) { return s; } } break; case 63: { ANTLR3_UINT32 LA4_558; ANTLR3_MARKER index4_558; LA4_558 = LA(1); index4_558 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_558); if ( s>=0 ) { return s; } } break; case 64: { ANTLR3_UINT32 LA4_684; ANTLR3_MARKER index4_684; LA4_684 = LA(1); index4_684 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_684); if ( s>=0 ) { return s; } } break; case 65: { ANTLR3_UINT32 LA4_486; ANTLR3_MARKER index4_486; LA4_486 = LA(1); index4_486 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_486); if ( s>=0 ) { return s; } } break; case 66: { ANTLR3_UINT32 LA4_201; ANTLR3_MARKER index4_201; LA4_201 = LA(1); index4_201 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_201); if ( s>=0 ) { return s; } } break; case 67: { ANTLR3_UINT32 LA4_475; ANTLR3_MARKER index4_475; LA4_475 = LA(1); index4_475 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_475); if ( s>=0 ) { return s; } } break; case 68: { ANTLR3_UINT32 LA4_480; ANTLR3_MARKER index4_480; LA4_480 = LA(1); index4_480 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_480); if ( s>=0 ) { return s; } } break; case 69: { ANTLR3_UINT32 LA4_617; ANTLR3_MARKER index4_617; LA4_617 = LA(1); index4_617 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_617); if ( s>=0 ) { return s; } } break; case 70: { ANTLR3_UINT32 LA4_751; ANTLR3_MARKER index4_751; LA4_751 = LA(1); index4_751 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_751); if ( s>=0 ) { return s; } } break; case 71: { ANTLR3_UINT32 LA4_756; ANTLR3_MARKER index4_756; LA4_756 = LA(1); index4_756 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_756); if ( s>=0 ) { return s; } } break; case 72: { ANTLR3_UINT32 LA4_929; ANTLR3_MARKER index4_929; LA4_929 = LA(1); index4_929 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_929); if ( s>=0 ) { return s; } } break; case 73: { ANTLR3_UINT32 LA4_758; ANTLR3_MARKER index4_758; LA4_758 = LA(1); index4_758 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_758); if ( s>=0 ) { return s; } } break; case 74: { ANTLR3_UINT32 LA4_933; ANTLR3_MARKER index4_933; LA4_933 = LA(1); index4_933 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_933); if ( s>=0 ) { return s; } } break; case 75: { ANTLR3_UINT32 LA4_308; ANTLR3_MARKER index4_308; LA4_308 = LA(1); index4_308 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_308); if ( s>=0 ) { return s; } } break; case 76: { ANTLR3_UINT32 LA4_956; ANTLR3_MARKER index4_956; LA4_956 = LA(1); index4_956 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_956); if ( s>=0 ) { return s; } } break; case 77: { ANTLR3_UINT32 LA4_606; ANTLR3_MARKER index4_606; LA4_606 = LA(1); index4_606 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_606); if ( s>=0 ) { return s; } } break; case 78: { ANTLR3_UINT32 LA4_846; ANTLR3_MARKER index4_846; LA4_846 = LA(1); index4_846 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_846); if ( s>=0 ) { return s; } } break; case 79: { ANTLR3_UINT32 LA4_932; ANTLR3_MARKER index4_932; LA4_932 = LA(1); index4_932 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_932); if ( s>=0 ) { return s; } } break; case 80: { ANTLR3_UINT32 LA4_126; ANTLR3_MARKER index4_126; LA4_126 = LA(1); index4_126 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_126); if ( s>=0 ) { return s; } } break; case 81: { ANTLR3_UINT32 LA4_645; ANTLR3_MARKER index4_645; LA4_645 = LA(1); index4_645 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_645); if ( s>=0 ) { return s; } } break; case 82: { ANTLR3_UINT32 LA4_375; ANTLR3_MARKER index4_375; LA4_375 = LA(1); index4_375 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_375); if ( s>=0 ) { return s; } } break; case 83: { ANTLR3_UINT32 LA4_1011; ANTLR3_MARKER index4_1011; LA4_1011 = LA(1); index4_1011 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_1011); if ( s>=0 ) { return s; } } break; case 84: { ANTLR3_UINT32 LA4_364; ANTLR3_MARKER index4_364; LA4_364 = LA(1); index4_364 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_364); if ( s>=0 ) { return s; } } break; case 85: { ANTLR3_UINT32 LA4_369; ANTLR3_MARKER index4_369; LA4_369 = LA(1); index4_369 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_369); if ( s>=0 ) { return s; } } break; case 86: { ANTLR3_UINT32 LA4_510; ANTLR3_MARKER index4_510; LA4_510 = LA(1); index4_510 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_510); if ( s>=0 ) { return s; } } break; case 87: { ANTLR3_UINT32 LA4_638; ANTLR3_MARKER index4_638; LA4_638 = LA(1); index4_638 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_638); if ( s>=0 ) { return s; } } break; case 88: { ANTLR3_UINT32 LA4_643; ANTLR3_MARKER index4_643; LA4_643 = LA(1); index4_643 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_643); if ( s>=0 ) { return s; } } break; case 89: { ANTLR3_UINT32 LA4_863; ANTLR3_MARKER index4_863; LA4_863 = LA(1); index4_863 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_863); if ( s>=0 ) { return s; } } break; case 90: { ANTLR3_UINT32 LA4_136; ANTLR3_MARKER index4_136; LA4_136 = LA(1); index4_136 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_136); if ( s>=0 ) { return s; } } break; case 91: { ANTLR3_UINT32 LA4_34; ANTLR3_MARKER index4_34; LA4_34 = LA(1); index4_34 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_34); if ( s>=0 ) { return s; } } break; case 92: { ANTLR3_UINT32 LA4_378; ANTLR3_MARKER index4_378; LA4_378 = LA(1); index4_378 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_378); if ( s>=0 ) { return s; } } break; case 93: { ANTLR3_UINT32 LA4_699; ANTLR3_MARKER index4_699; LA4_699 = LA(1); index4_699 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_699); if ( s>=0 ) { return s; } } break; case 94: { ANTLR3_UINT32 LA4_704; ANTLR3_MARKER index4_704; LA4_704 = LA(1); index4_704 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_704); if ( s>=0 ) { return s; } } break; case 95: { ANTLR3_UINT32 LA4_809; ANTLR3_MARKER index4_809; LA4_809 = LA(1); index4_809 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_809); if ( s>=0 ) { return s; } } break; case 96: { ANTLR3_UINT32 LA4_895; ANTLR3_MARKER index4_895; LA4_895 = LA(1); index4_895 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_895); if ( s>=0 ) { return s; } } break; case 97: { ANTLR3_UINT32 LA4_900; ANTLR3_MARKER index4_900; LA4_900 = LA(1); index4_900 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_900); if ( s>=0 ) { return s; } } break; case 98: { ANTLR3_UINT32 LA4_1000; ANTLR3_MARKER index4_1000; LA4_1000 = LA(1); index4_1000 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_1000); if ( s>=0 ) { return s; } } break; case 99: { ANTLR3_UINT32 LA4_466; ANTLR3_MARKER index4_466; LA4_466 = LA(1); index4_466 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_466); if ( s>=0 ) { return s; } } break; case 100: { ANTLR3_UINT32 LA4_471; ANTLR3_MARKER index4_471; LA4_471 = LA(1); index4_471 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_471); if ( s>=0 ) { return s; } } break; case 101: { ANTLR3_UINT32 LA4_611; ANTLR3_MARKER index4_611; LA4_611 = LA(1); index4_611 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_611); if ( s>=0 ) { return s; } } break; case 102: { ANTLR3_UINT32 LA4_744; ANTLR3_MARKER index4_744; LA4_744 = LA(1); index4_744 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_744); if ( s>=0 ) { return s; } } break; case 103: { ANTLR3_UINT32 LA4_749; ANTLR3_MARKER index4_749; LA4_749 = LA(1); index4_749 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_749); if ( s>=0 ) { return s; } } break; case 104: { ANTLR3_UINT32 LA4_926; ANTLR3_MARKER index4_926; LA4_926 = LA(1); index4_926 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_926); if ( s>=0 ) { return s; } } break; case 105: { ANTLR3_UINT32 LA4_383; ANTLR3_MARKER index4_383; LA4_383 = LA(1); index4_383 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_383); if ( s>=0 ) { return s; } } break; case 106: { ANTLR3_UINT32 LA4_388; ANTLR3_MARKER index4_388; LA4_388 = LA(1); index4_388 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_388); if ( s>=0 ) { return s; } } break; case 107: { ANTLR3_UINT32 LA4_518; ANTLR3_MARKER index4_518; LA4_518 = LA(1); index4_518 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_518); if ( s>=0 ) { return s; } } break; case 108: { ANTLR3_UINT32 LA4_648; ANTLR3_MARKER index4_648; LA4_648 = LA(1); index4_648 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_648); if ( s>=0 ) { return s; } } break; case 109: { ANTLR3_UINT32 LA4_653; ANTLR3_MARKER index4_653; LA4_653 = LA(1); index4_653 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_653); if ( s>=0 ) { return s; } } break; case 110: { ANTLR3_UINT32 LA4_866; ANTLR3_MARKER index4_866; LA4_866 = LA(1); index4_866 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_866); if ( s>=0 ) { return s; } } break; case 111: { ANTLR3_UINT32 LA4_355; ANTLR3_MARKER index4_355; LA4_355 = LA(1); index4_355 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_355); if ( s>=0 ) { return s; } } break; case 112: { ANTLR3_UINT32 LA4_360; ANTLR3_MARKER index4_360; LA4_360 = LA(1); index4_360 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_360); if ( s>=0 ) { return s; } } break; case 113: { ANTLR3_UINT32 LA4_504; ANTLR3_MARKER index4_504; LA4_504 = LA(1); index4_504 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_504); if ( s>=0 ) { return s; } } break; case 114: { ANTLR3_UINT32 LA4_631; ANTLR3_MARKER index4_631; LA4_631 = LA(1); index4_631 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_631); if ( s>=0 ) { return s; } } break; case 115: { ANTLR3_UINT32 LA4_636; ANTLR3_MARKER index4_636; LA4_636 = LA(1); index4_636 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_636); if ( s>=0 ) { return s; } } break; case 116: { ANTLR3_UINT32 LA4_860; ANTLR3_MARKER index4_860; LA4_860 = LA(1); index4_860 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_860); if ( s>=0 ) { return s; } } break; case 117: { ANTLR3_UINT32 LA4_384; ANTLR3_MARKER index4_384; LA4_384 = LA(1); index4_384 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_384); if ( s>=0 ) { return s; } } break; case 118: { ANTLR3_UINT32 LA4_519; ANTLR3_MARKER index4_519; LA4_519 = LA(1); index4_519 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_519); if ( s>=0 ) { return s; } } break; case 119: { ANTLR3_UINT32 LA4_649; ANTLR3_MARKER index4_649; LA4_649 = LA(1); index4_649 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_649); if ( s>=0 ) { return s; } } break; case 120: { ANTLR3_UINT32 LA4_700; ANTLR3_MARKER index4_700; LA4_700 = LA(1); index4_700 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_700); if ( s>=0 ) { return s; } } break; case 121: { ANTLR3_UINT32 LA4_810; ANTLR3_MARKER index4_810; LA4_810 = LA(1); index4_810 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_810); if ( s>=0 ) { return s; } } break; case 122: { ANTLR3_UINT32 LA4_896; ANTLR3_MARKER index4_896; LA4_896 = LA(1); index4_896 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_896); if ( s>=0 ) { return s; } } break; case 123: { ANTLR3_UINT32 LA4_536; ANTLR3_MARKER index4_536; LA4_536 = LA(1); index4_536 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_536); if ( s>=0 ) { return s; } } break; case 124: { ANTLR3_UINT32 LA4_541; ANTLR3_MARKER index4_541; LA4_541 = LA(1); index4_541 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_541); if ( s>=0 ) { return s; } } break; case 125: { ANTLR3_UINT32 LA4_670; ANTLR3_MARKER index4_670; LA4_670 = LA(1); index4_670 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_670); if ( s>=0 ) { return s; } } break; case 126: { ANTLR3_UINT32 LA4_791; ANTLR3_MARKER index4_791; LA4_791 = LA(1); index4_791 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_791); if ( s>=0 ) { return s; } } break; case 127: { ANTLR3_UINT32 LA4_796; ANTLR3_MARKER index4_796; LA4_796 = LA(1); index4_796 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_796); if ( s>=0 ) { return s; } } break; case 128: { ANTLR3_UINT32 LA4_953; ANTLR3_MARKER index4_953; LA4_953 = LA(1); index4_953 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_953); if ( s>=0 ) { return s; } } break; case 129: { ANTLR3_UINT32 LA4_870; ANTLR3_MARKER index4_870; LA4_870 = LA(1); index4_870 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_870); if ( s>=0 ) { return s; } } break; case 130: { ANTLR3_UINT32 LA4_772; ANTLR3_MARKER index4_772; LA4_772 = LA(1); index4_772 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_772); if ( s>=0 ) { return s; } } break; case 131: { ANTLR3_UINT32 LA4_660; ANTLR3_MARKER index4_660; LA4_660 = LA(1); index4_660 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_660); if ( s>=0 ) { return s; } } break; case 132: { ANTLR3_UINT32 LA4_523; ANTLR3_MARKER index4_523; LA4_523 = LA(1); index4_523 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_523); if ( s>=0 ) { return s; } } break; case 133: { ANTLR3_UINT32 LA4_876; ANTLR3_MARKER index4_876; LA4_876 = LA(1); index4_876 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_876); if ( s>=0 ) { return s; } } break; case 134: { ANTLR3_UINT32 LA4_1013; ANTLR3_MARKER index4_1013; LA4_1013 = LA(1); index4_1013 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_1013); if ( s>=0 ) { return s; } } break; case 135: { ANTLR3_UINT32 LA4_1028; ANTLR3_MARKER index4_1028; LA4_1028 = LA(1); index4_1028 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_1028); if ( s>=0 ) { return s; } } break; case 136: { ANTLR3_UINT32 LA4_1039; ANTLR3_MARKER index4_1039; LA4_1039 = LA(1); index4_1039 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_1039); if ( s>=0 ) { return s; } } break; case 137: { ANTLR3_UINT32 LA4_944; ANTLR3_MARKER index4_944; LA4_944 = LA(1); index4_944 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_944); if ( s>=0 ) { return s; } } break; case 138: { ANTLR3_UINT32 LA4_1016; ANTLR3_MARKER index4_1016; LA4_1016 = LA(1); index4_1016 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_1016); if ( s>=0 ) { return s; } } break; case 139: { ANTLR3_UINT32 LA4_1044; ANTLR3_MARKER index4_1044; LA4_1044 = LA(1); index4_1044 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_1044); if ( s>=0 ) { return s; } } break; case 140: { ANTLR3_UINT32 LA4_945; ANTLR3_MARKER index4_945; LA4_945 = LA(1); index4_945 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_945); if ( s>=0 ) { return s; } } break; case 141: { ANTLR3_UINT32 LA4_936; ANTLR3_MARKER index4_936; LA4_936 = LA(1); index4_936 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_936); if ( s>=0 ) { return s; } } break; case 142: { ANTLR3_UINT32 LA4_939; ANTLR3_MARKER index4_939; LA4_939 = LA(1); index4_939 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_939); if ( s>=0 ) { return s; } } break; case 143: { ANTLR3_UINT32 LA4_775; ANTLR3_MARKER index4_775; LA4_775 = LA(1); index4_775 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_775); if ( s>=0 ) { return s; } } break; case 144: { ANTLR3_UINT32 LA4_777; ANTLR3_MARKER index4_777; LA4_777 = LA(1); index4_777 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_777); if ( s>=0 ) { return s; } } break; case 145: { ANTLR3_UINT32 LA4_1048; ANTLR3_MARKER index4_1048; LA4_1048 = LA(1); index4_1048 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_1048); if ( s>=0 ) { return s; } } break; case 146: { ANTLR3_UINT32 LA4_780; ANTLR3_MARKER index4_780; LA4_780 = LA(1); index4_780 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_780); if ( s>=0 ) { return s; } } break; case 147: { ANTLR3_UINT32 LA4_1046; ANTLR3_MARKER index4_1046; LA4_1046 = LA(1); index4_1046 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_1046); if ( s>=0 ) { return s; } } break; case 148: { ANTLR3_UINT32 LA4_873; ANTLR3_MARKER index4_873; LA4_873 = LA(1); index4_873 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_873); if ( s>=0 ) { return s; } } break; case 149: { ANTLR3_UINT32 LA4_1041; ANTLR3_MARKER index4_1041; LA4_1041 = LA(1); index4_1041 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_1041); if ( s>=0 ) { return s; } } break; case 150: { ANTLR3_UINT32 LA4_1047; ANTLR3_MARKER index4_1047; LA4_1047 = LA(1); index4_1047 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_1047); if ( s>=0 ) { return s; } } break; case 151: { ANTLR3_UINT32 LA4_942; ANTLR3_MARKER index4_942; LA4_942 = LA(1); index4_942 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_942); if ( s>=0 ) { return s; } } break; case 152: { ANTLR3_UINT32 LA4_871; ANTLR3_MARKER index4_871; LA4_871 = LA(1); index4_871 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_871); if ( s>=0 ) { return s; } } break; case 153: { ANTLR3_UINT32 LA4_987; ANTLR3_MARKER index4_987; LA4_987 = LA(1); index4_987 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_987); if ( s>=0 ) { return s; } } break; case 154: { ANTLR3_UINT32 LA4_991; ANTLR3_MARKER index4_991; LA4_991 = LA(1); index4_991 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_991); if ( s>=0 ) { return s; } } break; case 155: { ANTLR3_UINT32 LA4_984; ANTLR3_MARKER index4_984; LA4_984 = LA(1); index4_984 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_984); if ( s>=0 ) { return s; } } break; case 156: { ANTLR3_UINT32 LA4_986; ANTLR3_MARKER index4_986; LA4_986 = LA(1); index4_986 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_986); if ( s>=0 ) { return s; } } break; case 157: { ANTLR3_UINT32 LA4_783; ANTLR3_MARKER index4_783; LA4_783 = LA(1); index4_783 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_783); if ( s>=0 ) { return s; } } break; case 158: { ANTLR3_UINT32 LA4_824; ANTLR3_MARKER index4_824; LA4_824 = LA(1); index4_824 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_824); if ( s>=0 ) { return s; } } break; case 159: { ANTLR3_UINT32 LA4_1025; ANTLR3_MARKER index4_1025; LA4_1025 = LA(1); index4_1025 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_1025); if ( s>=0 ) { return s; } } break; case 160: { ANTLR3_UINT32 LA4_829; ANTLR3_MARKER index4_829; LA4_829 = LA(1); index4_829 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_829); if ( s>=0 ) { return s; } } break; case 161: { ANTLR3_UINT32 LA4_910; ANTLR3_MARKER index4_910; LA4_910 = LA(1); index4_910 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_910); if ( s>=0 ) { return s; } } break; case 162: { ANTLR3_UINT32 LA4_965; ANTLR3_MARKER index4_965; LA4_965 = LA(1); index4_965 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_965); if ( s>=0 ) { return s; } } break; case 163: { ANTLR3_UINT32 LA4_970; ANTLR3_MARKER index4_970; LA4_970 = LA(1); index4_970 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_970); if ( s>=0 ) { return s; } } break; case 164: { ANTLR3_UINT32 LA4_537; ANTLR3_MARKER index4_537; LA4_537 = LA(1); index4_537 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_537); if ( s>=0 ) { return s; } } break; case 165: { ANTLR3_UINT32 LA4_671; ANTLR3_MARKER index4_671; LA4_671 = LA(1); index4_671 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_671); if ( s>=0 ) { return s; } } break; case 166: { ANTLR3_UINT32 LA4_792; ANTLR3_MARKER index4_792; LA4_792 = LA(1); index4_792 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_792); if ( s>=0 ) { return s; } } break; case 167: { ANTLR3_UINT32 LA4_365; ANTLR3_MARKER index4_365; LA4_365 = LA(1); index4_365 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_365); if ( s>=0 ) { return s; } } break; case 168: { ANTLR3_UINT32 LA4_511; ANTLR3_MARKER index4_511; LA4_511 = LA(1); index4_511 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_511); if ( s>=0 ) { return s; } } break; case 169: { ANTLR3_UINT32 LA4_639; ANTLR3_MARKER index4_639; LA4_639 = LA(1); index4_639 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_639); if ( s>=0 ) { return s; } } break; case 170: { ANTLR3_UINT32 LA4_624; ANTLR3_MARKER index4_624; LA4_624 = LA(1); index4_624 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_624); if ( s>=0 ) { return s; } } break; case 171: { ANTLR3_UINT32 LA4_629; ANTLR3_MARKER index4_629; LA4_629 = LA(1); index4_629 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_629); if ( s>=0 ) { return s; } } break; case 172: { ANTLR3_UINT32 LA4_763; ANTLR3_MARKER index4_763; LA4_763 = LA(1); index4_763 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_763); if ( s>=0 ) { return s; } } break; case 173: { ANTLR3_UINT32 LA4_852; ANTLR3_MARKER index4_852; LA4_852 = LA(1); index4_852 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_852); if ( s>=0 ) { return s; } } break; case 174: { ANTLR3_UINT32 LA4_857; ANTLR3_MARKER index4_857; LA4_857 = LA(1); index4_857 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_857); if ( s>=0 ) { return s; } } break; case 175: { ANTLR3_UINT32 LA4_982; ANTLR3_MARKER index4_982; LA4_982 = LA(1); index4_982 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_982); if ( s>=0 ) { return s; } } break; case 176: { ANTLR3_UINT32 LA4_825; ANTLR3_MARKER index4_825; LA4_825 = LA(1); index4_825 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_825); if ( s>=0 ) { return s; } } break; case 177: { ANTLR3_UINT32 LA4_911; ANTLR3_MARKER index4_911; LA4_911 = LA(1); index4_911 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_911); if ( s>=0 ) { return s; } } break; case 178: { ANTLR3_UINT32 LA4_966; ANTLR3_MARKER index4_966; LA4_966 = LA(1); index4_966 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_966); if ( s>=0 ) { return s; } } break; case 179: { ANTLR3_UINT32 LA4_432; ANTLR3_MARKER index4_432; LA4_432 = LA(1); index4_432 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_432); if ( s>=0 ) { return s; } } break; case 180: { ANTLR3_UINT32 LA4_476; ANTLR3_MARKER index4_476; LA4_476 = LA(1); index4_476 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_476); if ( s>=0 ) { return s; } } break; case 181: { ANTLR3_UINT32 LA4_618; ANTLR3_MARKER index4_618; LA4_618 = LA(1); index4_618 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_618); if ( s>=0 ) { return s; } } break; case 182: { ANTLR3_UINT32 LA4_752; ANTLR3_MARKER index4_752; LA4_752 = LA(1); index4_752 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_752); if ( s>=0 ) { return s; } } break; case 183: { ANTLR3_UINT32 LA4_890; ANTLR3_MARKER index4_890; LA4_890 = LA(1); index4_890 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_890); if ( s>=0 ) { return s; } } break; case 184: { ANTLR3_UINT32 LA4_687; ANTLR3_MARKER index4_687; LA4_687 = LA(1); index4_687 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_687); if ( s>=0 ) { return s; } } break; case 185: { ANTLR3_UINT32 LA4_934; ANTLR3_MARKER index4_934; LA4_934 = LA(1); index4_934 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_934); if ( s>=0 ) { return s; } } break; case 186: { ANTLR3_UINT32 LA4_356; ANTLR3_MARKER index4_356; LA4_356 = LA(1); index4_356 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_356); if ( s>=0 ) { return s; } } break; case 187: { ANTLR3_UINT32 LA4_505; ANTLR3_MARKER index4_505; LA4_505 = LA(1); index4_505 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_505); if ( s>=0 ) { return s; } } break; case 188: { ANTLR3_UINT32 LA4_632; ANTLR3_MARKER index4_632; LA4_632 = LA(1); index4_632 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_632); if ( s>=0 ) { return s; } } break; case 189: { ANTLR3_UINT32 LA4_527; ANTLR3_MARKER index4_527; LA4_527 = LA(1); index4_527 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_527); if ( s>=0 ) { return s; } } break; case 190: { ANTLR3_UINT32 LA4_532; ANTLR3_MARKER index4_532; LA4_532 = LA(1); index4_532 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_532); if ( s>=0 ) { return s; } } break; case 191: { ANTLR3_UINT32 LA4_664; ANTLR3_MARKER index4_664; LA4_664 = LA(1); index4_664 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_664); if ( s>=0 ) { return s; } } break; case 192: { ANTLR3_UINT32 LA4_784; ANTLR3_MARKER index4_784; LA4_784 = LA(1); index4_784 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_784); if ( s>=0 ) { return s; } } break; case 193: { ANTLR3_UINT32 LA4_789; ANTLR3_MARKER index4_789; LA4_789 = LA(1); index4_789 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_789); if ( s>=0 ) { return s; } } break; case 194: { ANTLR3_UINT32 LA4_950; ANTLR3_MARKER index4_950; LA4_950 = LA(1); index4_950 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_950); if ( s>=0 ) { return s; } } break; case 195: { ANTLR3_UINT32 LA4_815; ANTLR3_MARKER index4_815; LA4_815 = LA(1); index4_815 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_815); if ( s>=0 ) { return s; } } break; case 196: { ANTLR3_UINT32 LA4_820; ANTLR3_MARKER index4_820; LA4_820 = LA(1); index4_820 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_820); if ( s>=0 ) { return s; } } break; case 197: { ANTLR3_UINT32 LA4_904; ANTLR3_MARKER index4_904; LA4_904 = LA(1); index4_904 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_904); if ( s>=0 ) { return s; } } break; case 198: { ANTLR3_UINT32 LA4_958; ANTLR3_MARKER index4_958; LA4_958 = LA(1); index4_958 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_958); if ( s>=0 ) { return s; } } break; case 199: { ANTLR3_UINT32 LA4_963; ANTLR3_MARKER index4_963; LA4_963 = LA(1); index4_963 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_963); if ( s>=0 ) { return s; } } break; case 200: { ANTLR3_UINT32 LA4_1022; ANTLR3_MARKER index4_1022; LA4_1022 = LA(1); index4_1022 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_1022); if ( s>=0 ) { return s; } } break; case 201: { ANTLR3_UINT32 LA4_1020; ANTLR3_MARKER index4_1020; LA4_1020 = LA(1); index4_1020 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_1020); if ( s>=0 ) { return s; } } break; case 202: { ANTLR3_UINT32 LA4_816; ANTLR3_MARKER index4_816; LA4_816 = LA(1); index4_816 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_816); if ( s>=0 ) { return s; } } break; case 203: { ANTLR3_UINT32 LA4_905; ANTLR3_MARKER index4_905; LA4_905 = LA(1); index4_905 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_905); if ( s>=0 ) { return s; } } break; case 204: { ANTLR3_UINT32 LA4_959; ANTLR3_MARKER index4_959; LA4_959 = LA(1); index4_959 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_959); if ( s>=0 ) { return s; } } break; case 205: { ANTLR3_UINT32 LA4_995; ANTLR3_MARKER index4_995; LA4_995 = LA(1); index4_995 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_995); if ( s>=0 ) { return s; } } break; case 206: { ANTLR3_UINT32 LA4_625; ANTLR3_MARKER index4_625; LA4_625 = LA(1); index4_625 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_625); if ( s>=0 ) { return s; } } break; case 207: { ANTLR3_UINT32 LA4_764; ANTLR3_MARKER index4_764; LA4_764 = LA(1); index4_764 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_764); if ( s>=0 ) { return s; } } break; case 208: { ANTLR3_UINT32 LA4_853; ANTLR3_MARKER index4_853; LA4_853 = LA(1); index4_853 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_853); if ( s>=0 ) { return s; } } break; case 209: { ANTLR3_UINT32 LA4_1034; ANTLR3_MARKER index4_1034; LA4_1034 = LA(1); index4_1034 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_1034); if ( s>=0 ) { return s; } } break; case 210: { ANTLR3_UINT32 LA4_528; ANTLR3_MARKER index4_528; LA4_528 = LA(1); index4_528 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_528); if ( s>=0 ) { return s; } } break; case 211: { ANTLR3_UINT32 LA4_665; ANTLR3_MARKER index4_665; LA4_665 = LA(1); index4_665 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_665); if ( s>=0 ) { return s; } } break; case 212: { ANTLR3_UINT32 LA4_785; ANTLR3_MARKER index4_785; LA4_785 = LA(1); index4_785 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_785); if ( s>=0 ) { return s; } } break; case 213: { ANTLR3_UINT32 LA4_24; ANTLR3_MARKER index4_24; LA4_24 = LA(1); index4_24 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_24); if ( s>=0 ) { return s; } } break; case 214: { ANTLR3_UINT32 LA4_35; ANTLR3_MARKER index4_35; LA4_35 = LA(1); index4_35 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_35); if ( s>=0 ) { return s; } } break; case 215: { ANTLR3_UINT32 LA4_68; ANTLR3_MARKER index4_68; LA4_68 = LA(1); index4_68 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_68); if ( s>=0 ) { return s; } } break; case 216: { ANTLR3_UINT32 LA4_129; ANTLR3_MARKER index4_129; LA4_129 = LA(1); index4_129 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_129); if ( s>=0 ) { return s; } } break; case 217: { ANTLR3_UINT32 LA4_131; ANTLR3_MARKER index4_131; LA4_131 = LA(1); index4_131 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_131); if ( s>=0 ) { return s; } } break; case 218: { ANTLR3_UINT32 LA4_137; ANTLR3_MARKER index4_137; LA4_137 = LA(1); index4_137 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_137); if ( s>=0 ) { return s; } } break; case 219: { ANTLR3_UINT32 LA4_379; ANTLR3_MARKER index4_379; LA4_379 = LA(1); index4_379 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_379); if ( s>=0 ) { return s; } } break; case 220: { ANTLR3_UINT32 LA4_916; ANTLR3_MARKER index4_916; LA4_916 = LA(1); index4_916 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_916); if ( s>=0 ) { return s; } } break; case 221: { ANTLR3_UINT32 LA4_921; ANTLR3_MARKER index4_921; LA4_921 = LA(1); index4_921 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_921); if ( s>=0 ) { return s; } } break; case 222: { ANTLR3_UINT32 LA4_974; ANTLR3_MARKER index4_974; LA4_974 = LA(1); index4_974 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_974); if ( s>=0 ) { return s; } } break; case 223: { ANTLR3_UINT32 LA4_1004; ANTLR3_MARKER index4_1004; LA4_1004 = LA(1); index4_1004 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_1004); if ( s>=0 ) { return s; } } break; case 224: { ANTLR3_UINT32 LA4_1009; ANTLR3_MARKER index4_1009; LA4_1009 = LA(1); index4_1009 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_1009); if ( s>=0 ) { return s; } } break; case 225: { ANTLR3_UINT32 LA4_1036; ANTLR3_MARKER index4_1036; LA4_1036 = LA(1); index4_1036 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_1036); if ( s>=0 ) { return s; } } break; case 226: { ANTLR3_UINT32 LA4_980; ANTLR3_MARKER index4_980; LA4_980 = LA(1); index4_980 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_980); if ( s>=0 ) { return s; } } break; case 227: { ANTLR3_UINT32 LA4_676; ANTLR3_MARKER index4_676; LA4_676 = LA(1); index4_676 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_676); if ( s>=0 ) { return s; } } break; case 228: { ANTLR3_UINT32 LA4_681; ANTLR3_MARKER index4_681; LA4_681 = LA(1); index4_681 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_681); if ( s>=0 ) { return s; } } break; case 229: { ANTLR3_UINT32 LA4_800; ANTLR3_MARKER index4_800; LA4_800 = LA(1); index4_800 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_800); if ( s>=0 ) { return s; } } break; case 230: { ANTLR3_UINT32 LA4_883; ANTLR3_MARKER index4_883; LA4_883 = LA(1); index4_883 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_883); if ( s>=0 ) { return s; } } break; case 231: { ANTLR3_UINT32 LA4_888; ANTLR3_MARKER index4_888; LA4_888 = LA(1); index4_888 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_888); if ( s>=0 ) { return s; } } break; case 232: { ANTLR3_UINT32 LA4_997; ANTLR3_MARKER index4_997; LA4_997 = LA(1); index4_997 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_997); if ( s>=0 ) { return s; } } break; case 233: { ANTLR3_UINT32 LA4_677; ANTLR3_MARKER index4_677; LA4_677 = LA(1); index4_677 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_677); if ( s>=0 ) { return s; } } break; case 234: { ANTLR3_UINT32 LA4_801; ANTLR3_MARKER index4_801; LA4_801 = LA(1); index4_801 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_801); if ( s>=0 ) { return s; } } break; case 235: { ANTLR3_UINT32 LA4_884; ANTLR3_MARKER index4_884; LA4_884 = LA(1); index4_884 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_884); if ( s>=0 ) { return s; } } break; case 236: { ANTLR3_UINT32 LA4_917; ANTLR3_MARKER index4_917; LA4_917 = LA(1); index4_917 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_917); if ( s>=0 ) { return s; } } break; case 237: { ANTLR3_UINT32 LA4_975; ANTLR3_MARKER index4_975; LA4_975 = LA(1); index4_975 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_975); if ( s>=0 ) { return s; } } break; case 238: { ANTLR3_UINT32 LA4_1005; ANTLR3_MARKER index4_1005; LA4_1005 = LA(1); index4_1005 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_1005); if ( s>=0 ) { return s; } } break; case 239: { ANTLR3_UINT32 LA4_851; ANTLR3_MARKER index4_851; LA4_851 = LA(1); index4_851 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_851); if ( s>=0 ) { return s; } } break; case 240: { ANTLR3_UINT32 LA4_994; ANTLR3_MARKER index4_994; LA4_994 = LA(1); index4_994 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_994); if ( s>=0 ) { return s; } } break; case 241: { ANTLR3_UINT32 LA4_1033; ANTLR3_MARKER index4_1033; LA4_1033 = LA(1); index4_1033 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_1033); if ( s>=0 ) { return s; } } break; case 242: { ANTLR3_UINT32 LA4_367; ANTLR3_MARKER index4_367; LA4_367 = LA(1); index4_367 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_367); if ( s>=0 ) { return s; } } break; case 243: { ANTLR3_UINT32 LA4_467; ANTLR3_MARKER index4_467; LA4_467 = LA(1); index4_467 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_467); if ( s>=0 ) { return s; } } break; case 244: { ANTLR3_UINT32 LA4_612; ANTLR3_MARKER index4_612; LA4_612 = LA(1); index4_612 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_612); if ( s>=0 ) { return s; } } break; case 245: { ANTLR3_UINT32 LA4_745; ANTLR3_MARKER index4_745; LA4_745 = LA(1); index4_745 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_745); if ( s>=0 ) { return s; } } break; case 246: { ANTLR3_UINT32 LA4_862; ANTLR3_MARKER index4_862; LA4_862 = LA(1); index4_862 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_862); if ( s>=0 ) { return s; } } break; case 247: { ANTLR3_UINT32 LA4_642; ANTLR3_MARKER index4_642; LA4_642 = LA(1); index4_642 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_642); if ( s>=0 ) { return s; } } break; case 248: { ANTLR3_UINT32 LA4_1019; ANTLR3_MARKER index4_1019; LA4_1019 = LA(1); index4_1019 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_1019); if ( s>=0 ) { return s; } } break; case 249: { ANTLR3_UINT32 LA4_1042; ANTLR3_MARKER index4_1042; LA4_1042 = LA(1); index4_1042 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_1042); if ( s>=0 ) { return s; } } break; case 250: { ANTLR3_UINT32 LA4_924; ANTLR3_MARKER index4_924; LA4_924 = LA(1); index4_924 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_924); if ( s>=0 ) { return s; } } break; case 251: { ANTLR3_UINT32 LA4_358; ANTLR3_MARKER index4_358; LA4_358 = LA(1); index4_358 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_358); if ( s>=0 ) { return s; } } break; case 252: { ANTLR3_UINT32 LA4_859; ANTLR3_MARKER index4_859; LA4_859 = LA(1); index4_859 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_859); if ( s>=0 ) { return s; } } break; case 253: { ANTLR3_UINT32 LA4_635; ANTLR3_MARKER index4_635; LA4_635 = LA(1); index4_635 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_635); if ( s>=0 ) { return s; } } break; case 254: { ANTLR3_UINT32 LA4_702; ANTLR3_MARKER index4_702; LA4_702 = LA(1); index4_702 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_702); if ( s>=0 ) { return s; } } break; case 255: { ANTLR3_UINT32 LA4_652; ANTLR3_MARKER index4_652; LA4_652 = LA(1); index4_652 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_652); if ( s>=0 ) { return s; } } break; case 256: { ANTLR3_UINT32 LA4_387; ANTLR3_MARKER index4_387; LA4_387 = LA(1); index4_387 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_387); if ( s>=0 ) { return s; } } break; case 257: { ANTLR3_UINT32 LA4_769; ANTLR3_MARKER index4_769; LA4_769 = LA(1); index4_769 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_769); if ( s>=0 ) { return s; } } break; case 258: { ANTLR3_UINT32 LA4_999; ANTLR3_MARKER index4_999; LA4_999 = LA(1); index4_999 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_999); if ( s>=0 ) { return s; } } break; case 259: { ANTLR3_UINT32 LA4_865; ANTLR3_MARKER index4_865; LA4_865 = LA(1); index4_865 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_865); if ( s>=0 ) { return s; } } break; case 260: { ANTLR3_UINT32 LA4_899; ANTLR3_MARKER index4_899; LA4_899 = LA(1); index4_899 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_899); if ( s>=0 ) { return s; } } break; case 261: { ANTLR3_UINT32 LA4_856; ANTLR3_MARKER index4_856; LA4_856 = LA(1); index4_856 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_856); if ( s>=0 ) { return s; } } break; case 262: { ANTLR3_UINT32 LA4_979; ANTLR3_MARKER index4_979; LA4_979 = LA(1); index4_979 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_979); if ( s>=0 ) { return s; } } break; case 263: { ANTLR3_UINT32 LA4_627; ANTLR3_MARKER index4_627; LA4_627 = LA(1); index4_627 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_627); if ( s>=0 ) { return s; } } break; case 264: { ANTLR3_UINT32 LA4_981; ANTLR3_MARKER index4_981; LA4_981 = LA(1); index4_981 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index4_981); if ( s>=0 ) { return s; } } break; } if (BACKTRACKING > 0) { FAILEDFLAG = ANTLR3_TRUE; return -1; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)"126:6: ( uri | generic_uri )"; EXCEPTION->decisionNum = 4; EXCEPTION->state = _s; return -1; } /* Declare tracking structure for Cyclic DFA 4 */ static ANTLR3_CYCLIC_DFA cdfa4 = { 4, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"126:6: ( uri | generic_uri )", (CDFA_SPECIAL_FUNC) dfa4_sst, antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa4_eot, /* EOT table */ dfa4_eof, /* EOF table */ dfa4_min, /* Minimum tokens for each state */ dfa4_max, /* Maximum tokens for each state */ dfa4_accept, /* Accept table */ dfa4_special, /* Special transition states */ dfa4_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 4 * --------------------- *//** Static dfa state tables for Cyclic dfa: * 222:7: ( ( sip_version (~ ( CRLF ) )* CRLF )=> status_line | ( http_version (~ ( CRLF ) )* CRLF )=> http_status_line ) */ static const ANTLR3_INT32 dfa6_eot[15] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa6_eof[15] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa6_min[15] = { 10, 10, 13, 15, 13, 36, 13, 13, 13, 36, 4, 4, 0, -1, -1 }; static const ANTLR3_INT32 dfa6_max[15] = { 19, 35, 13, 15, 13, 36, 13, 13, 13, 36, 40, 40, 0, -1, -1 }; static const ANTLR3_INT32 dfa6_accept[15] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 2 }; static const ANTLR3_INT32 dfa6_special[15] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1 }; /** Used when there is no transition table entry for a particular state */ #define dfa6_T_empty NULL static const ANTLR3_INT32 dfa6_T0[] = { 1, -1, -1, -1, -1, -1, -1, -1, -1, 1 }; static const ANTLR3_INT32 dfa6_T1[] = { 10 }; static const ANTLR3_INT32 dfa6_T2[] = { 11, 11, 11, 11, 11, 11, 11, 12, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11 }; static const ANTLR3_INT32 dfa6_T3[] = { -1 }; static const ANTLR3_INT32 dfa6_T4[] = { 8 }; static const ANTLR3_INT32 dfa6_T5[] = { 3 }; static const ANTLR3_INT32 dfa6_T6[] = { 1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2 }; static const ANTLR3_INT32 dfa6_T7[] = { 9 }; static const ANTLR3_INT32 dfa6_T8[] = { 4 }; static const ANTLR3_INT32 dfa6_T9[] = { 5 }; static const ANTLR3_INT32 dfa6_T10[] = { 7 }; static const ANTLR3_INT32 dfa6_T11[] = { 6 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa6_transitions[] = { dfa6_T0, dfa6_T6, dfa6_T5, dfa6_T8, dfa6_T9, dfa6_T11, dfa6_T10, dfa6_T4, dfa6_T7, dfa6_T1, dfa6_T2, dfa6_T2, dfa6_T3, NULL, NULL }; static ANTLR3_INT32 dfa6_sst(pbelle_sip_messageParser ctx, pANTLR3_BASE_RECOGNIZER recognizer, pANTLR3_INT_STREAM is, pANTLR3_CYCLIC_DFA dfa, ANTLR3_INT32 s) { ANTLR3_INT32 _s; _s = s; switch (s) { case 0: { ANTLR3_UINT32 LA6_12; ANTLR3_MARKER index6_12; LA6_12 = LA(1); index6_12 = INDEX(); REWINDLAST(); s = -1; if ( (( (( ((IS_TOKEN(SIP/))) && ((IS_TOKEN(SIP/))) )) && (synpred3_belle_sip_message(ctx)) )) ) { s = 13; } else if ( (( (( ((IS_TOKEN(HTTP/))) && ((IS_TOKEN(HTTP/))) )) && (synpred4_belle_sip_message(ctx)) )) ) { s = 14; } SEEK(index6_12); if ( s>=0 ) { return s; } } break; } if (BACKTRACKING > 0) { FAILEDFLAG = ANTLR3_TRUE; return -1; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)"222:7: ( ( sip_version (~ ( CRLF ) )* CRLF )=> status_line | ( http_version (~ ( CRLF ) )* CRLF )=> http_status_line )"; EXCEPTION->decisionNum = 6; EXCEPTION->state = _s; return -1; } /* Declare tracking structure for Cyclic DFA 6 */ static ANTLR3_CYCLIC_DFA cdfa6 = { 6, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"222:7: ( ( sip_version (~ ( CRLF ) )* CRLF )=> status_line | ( http_version (~ ( CRLF ) )* CRLF )=> http_status_line )", (CDFA_SPECIAL_FUNC) dfa6_sst, antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa6_eot, /* EOT table */ dfa6_eof, /* EOF table */ dfa6_min, /* Minimum tokens for each state */ dfa6_max, /* Maximum tokens for each state */ dfa6_accept, /* Accept table */ dfa6_special, /* Special transition states */ dfa6_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 6 * --------------------- *//** Static dfa state tables for Cyclic dfa: * 346:5: ( ( SLASH SLASH path_segments[NULL] )=> ( SLASH SLASH path_segments[uri] ) | ( SLASH SLASH authority[NULL] ( path_segments[NULL] )? )=> ( SLASH SLASH authority[uri] ( path_segments[uri] )? ) | ( path_segments[uri] ) ) */ static const ANTLR3_INT32 dfa18_eot[192] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa18_eof[192] = { -1, 3, 3, -1, -1, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, 3, -1, -1, 3, 3, 3, -1, -1, 3, 3, 3, -1, 3, 3, 3, 3, 3, -1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, -1, 3, 3, 3, 3, 3, 3, 3, -1, 3, 3, 3, 3, 3, 3, 3, 3, -1, -1, 3, 3, 3, 3, 3, 3, -1, 3, 3, 3, 3, 3, 3, 3, -1, 3, 3, 3, -1, 3, 3, 3, 3, 3, 3, 3, -1, -1, 3, -1, -1, 3, -1, 3, -1, -1, -1, 3, 3, -1, -1, 3, -1, 3, -1, -1, 3, -1, 3, -1, 3, -1, 3, -1, -1, 3, -1, 3, -1, 3, 3, 3, -1, -1, 3, 3, 3, 3, 3, -1, -1, 3, 3, 3, 3, -1, -1, 3, 3, -1, -1, 3, 3, -1, -1, 3, -1, -1, 3, -1, -1, 3, 3, -1, -1, 3, -1, -1, 3, 3, -1, -1, 3, 3, -1, 3, 3, -1, -1, 3, -1, -1, 3, -1, -1, 3, -1, -1, -1 }; static const ANTLR3_INT32 dfa18_min[192] = { 35, 4, 4, -1, 4, 4, 4, 4, 13, 4, -1, 4, 4, 4, 4, 4, 4, -1, -1, -1, -1, -1, -1, -1, -1, 4, 4, 0, 0, 4, 4, 4, 0, 0, 4, 4, 4, 13, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 13, 4, 0, 0, 4, 0, 4, 0, 0, 0, 4, 4, 0, 0, 4, 13, 4, 0, 0, 4, 0, 4, 0, 4, 13, 4, 0, 0, 4, 0, 4, 0, 4, 4, 4, 0, 0, 4, 4, 4, 4, 4, 0, 0, 4, 4, 4, 4, 0, 0, 4, 4, 0, 0, 4, 4, 0, 0, 4, 0, 0, 4, 0, 0, 4, 4, 0, 0, 4, 0, 0, 4, 4, 0, 0, 4, 4, 0, 4, 4, 0, 0, 4, 0, 0, 4, 0, 0, 4, 0, 0, 0 }; static const ANTLR3_INT32 dfa18_max[192] = { 35, 40, 40, -1, 40, 40, 40, 40, 19, 40, -1, 40, 40, 40, 40, 40, 40, -1, -1, -1, -1, -1, -1, -1, -1, 40, 40, 0, 0, 40, 40, 40, 0, 0, 40, 40, 40, 19, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 0, 0, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 19, 40, 0, 0, 40, 0, 40, 0, 0, 0, 40, 40, 0, 0, 40, 19, 40, 0, 0, 40, 0, 40, 0, 40, 19, 40, 0, 0, 40, 0, 40, 0, 40, 40, 40, 0, 0, 40, 40, 40, 40, 40, 0, 0, 40, 40, 40, 40, 0, 0, 40, 40, 0, 0, 40, 40, 0, 0, 40, 0, 0, 40, 0, 0, 40, 40, 0, 0, 40, 0, 0, 40, 40, 0, 0, 40, 40, 0, 40, 40, 0, 0, 40, 0, 0, 40, 0, 0, 40, 0, 0, 0 }; static const ANTLR3_INT32 dfa18_accept[192] = { -1, -1, -1, 3, -1, -1, -1, -1, -1, -1, 2, -1, -1, -1, -1, -1, -1, 2, 2, 2, 2, 2, 2, 2, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa18_special[192] = { -1, -1, 5, -1, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, 40, 14, -1, -1, -1, 48, 41, -1, -1, -1, -1, -1, 13, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 50, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 42, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 28, 10, -1, 38, -1, 29, 43, 16, -1, -1, 47, 44, -1, -1, -1, 51, 25, -1, 1, -1, 52, -1, -1, -1, 17, 7, -1, 23, -1, 18, -1, -1, -1, 30, 11, -1, -1, -1, -1, -1, 53, 26, -1, -1, -1, -1, 19, 8, -1, -1, 31, 12, -1, -1, 37, 32, -1, 46, 45, -1, 54, 27, -1, -1, 0, 55, -1, 20, 9, -1, -1, 35, 21, -1, -1, 49, -1, -1, 36, 33, -1, 6, 56, -1, 34, 22, -1, 39, 2, 24 }; /** Used when there is no transition table entry for a particular state */ #define dfa18_T_empty NULL static const ANTLR3_INT32 dfa18_T0[] = { 3, 3, -1, -1, 3, 3, 174, 3, 128, 173, 3, 175, -1, 3, 3, 174, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa18_T1[] = { 3, 3, -1, -1, 3, 3, 187, 3, 128, 186, 3, 188, -1, 3, 3, 187, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa18_T2[] = { 9, 26, -1, -1, 25, 14, 35, 3, 7, 36, 13, 7, -1, 7, 11, 35, -1, -1, -1, 7, -1, -1, -1, 8, 12, 16, 3, -1, 7, -1, 15, 31, 3, 7, 7, 7, 7 }; static const ANTLR3_INT32 dfa18_T3[] = { 3, 3, -1, -1, 3, 3, 131, 3, 128, 129, 3, 130, -1, 3, 3, 131, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa18_T4[] = { 80, 39, -1, -1, 3, 84, 76, 3, 78, 77, 83, 78, -1, 78, 81, 76, -1, -1, -1, 78, -1, -1, -1, 79, 82, 3, 3, -1, 78, -1, 3, 3, 3, 78, 78, 78, 78 }; static const ANTLR3_INT32 dfa18_T5[] = { 92, 50, -1, -1, 3, 96, 88, 3, 90, 89, 95, 90, -1, 90, 93, 88, -1, -1, -1, 90, -1, -1, -1, 91, 94, 3, 3, -1, 90, -1, 3, 3, 3, 90, 90, 90, 90 }; static const ANTLR3_INT32 dfa18_T6[] = { 37, -1, -1, -1, -1, -1, 37 }; static const ANTLR3_INT32 dfa18_T7[] = { 87, -1, -1, -1, -1, -1, 87 }; static const ANTLR3_INT32 dfa18_T8[] = { 99, -1, -1, -1, -1, -1, 99 }; static const ANTLR3_INT32 dfa18_T9[] = { 100, -1, -1, -1, -1, -1, 100 }; static const ANTLR3_INT32 dfa18_T10[] = { 115, -1, -1, -1, -1, -1, 115 }; static const ANTLR3_INT32 dfa18_T11[] = { 124, -1, -1, -1, -1, -1, 124 }; static const ANTLR3_INT32 dfa18_T12[] = { 3, 3, -1, -1, 3, 3, 154, 3, 137, 155, 3, 101, -1, 3, 3, 154, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa18_T13[] = { 44, 39, -1, -1, 38, 48, 40, 3, 42, 41, 47, 42, -1, 42, 45, 40, -1, -1, -1, 42, -1, -1, -1, 43, 46, 16, 3, -1, 42, -1, 15, 31, 3, 42, 42, 42, 42 }; static const ANTLR3_INT32 dfa18_T14[] = { 9, 26, -1, -1, 25, 14, 110, 3, 73, 111, 13, 7, -1, 7, 11, 110, -1, -1, -1, 7, -1, -1, -1, 8, 12, 16, 3, -1, 7, -1, 15, 31, 3, 7, 7, 7, 7 }; static const ANTLR3_INT32 dfa18_T15[] = { 3, 3, -1, -1, 3, 3, 162, 3, 119, 163, 3, 116, -1, 3, 3, 162, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa18_T16[] = { -1 }; static const ANTLR3_INT32 dfa18_T17[] = { 3, 3, -1, -1, 3, 3, 164, 3, 144, 165, 3, 116, -1, 3, 3, 164, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa18_T18[] = { 3, 3, -1, -1, 3, 3, 68, 3, 3, 69, 3, 3, -1, 3, 3, 68, -1, -1, -1, 3, 10, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa18_T19[] = { 23, 22, -1, -1, 21, 23, 17, -1, 19, 18, 23, 19, -1, 19, 23, 17, -1, -1, -1, 19, -1, -1, -1, 20, 23, 23, -1, -1, 19, -1, 23, 23, -1, 19, 19, 19, 19 }; static const ANTLR3_INT32 dfa18_T20[] = { 63, 26, -1, -1, 3, 67, 59, 3, 61, 60, 66, 61, -1, 61, 64, 59, -1, -1, -1, 61, -1, -1, -1, 62, 65, 3, 3, -1, 61, -1, 3, 3, 3, 61, 61, 61, 61 }; static const ANTLR3_INT32 dfa18_T21[] = { 9, 3, -1, -1, 3, 14, 5, 3, 7, 6, 13, 7, -1, 7, 11, 5, -1, -1, -1, 7, 10, -1, -1, 8, 12, 16, 3, -1, 7, -1, 15, 4, 3, 7, 7, 7, 7 }; static const ANTLR3_INT32 dfa18_T22[] = { 3, 3, -1, -1, 3, 3, 102, 3, 104, 103, 3, 101, -1, 3, 3, 102, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa18_T23[] = { 3, 3, -1, -1, 3, 3, 164, 3, 144, 165, 3, 3, -1, 3, 3, 164, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa18_T24[] = { 3, 3, -1, -1, 3, 3, 157, 3, 104, 156, 3, 158, -1, 3, 3, 157, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa18_T25[] = { 3, 3, -1, -1, 3, 3, 107, 3, 104, 105, 3, 106, -1, 3, 3, 107, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa18_T26[] = { 3, 3, -1, -1, 3, 3, 181, 3, 104, 180, 3, 182, -1, 3, 3, 181, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa18_T27[] = { 58, 50, -1, -1, 49, 56, 51, 3, 53, 52, 58, 53, -1, 53, 58, 51, -1, -1, -1, 53, -1, -1, -1, 54, 58, 57, 3, -1, 53, -1, 55, 58, 3, 53, 53, 53, 53 }; static const ANTLR3_INT32 dfa18_T28[] = { 3, 3, -1, -1, 3, 3, 97, 3, 3, 151, 3, 3, -1, 3, 3, 97, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa18_T29[] = { 9, 26, -1, -1, 25, 14, 110, 3, 73, 111, 13, 29, -1, 7, 11, 110, -1, -1, -1, 7, -1, -1, -1, 8, 12, 16, 3, -1, 7, -1, 15, 31, 3, 7, 7, 7, 7 }; static const ANTLR3_INT32 dfa18_T30[] = { 75, -1, -1, -1, -1, -1, 75 }; static const ANTLR3_INT32 dfa18_T31[] = { 123, -1, -1, -1, -1, -1, 123 }; static const ANTLR3_INT32 dfa18_T32[] = { 132, -1, -1, -1, -1, -1, 132 }; static const ANTLR3_INT32 dfa18_T33[] = { 133, -1, -1, -1, -1, -1, 133 }; static const ANTLR3_INT32 dfa18_T34[] = { 140, -1, -1, -1, -1, -1, 140 }; static const ANTLR3_INT32 dfa18_T35[] = { 146, -1, -1, -1, -1, -1, 146 }; static const ANTLR3_INT32 dfa18_T36[] = { 3, 3, -1, -1, 3, 3, 97, 3, 3, 179, 3, 3, -1, 3, 3, 97, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa18_T37[] = { 9, 26, -1, -1, 25, 14, 33, 3, 30, 32, 13, 34, -1, 7, 11, 33, -1, -1, -1, 7, -1, -1, -1, 8, 12, 16, 3, -1, 7, -1, 15, 31, 3, 7, 7, 7, 7 }; static const ANTLR3_INT32 dfa18_T38[] = { 9, 26, -1, -1, 25, 14, 113, 3, 30, 112, 13, 114, -1, 7, 11, 113, -1, -1, -1, 7, -1, -1, -1, 8, 12, 16, 3, -1, 7, -1, 15, 31, 3, 7, 7, 7, 7 }; static const ANTLR3_INT32 dfa18_T39[] = { 3, 3, -1, -1, 3, 3, 97, 3, 3, 191, 3, 3, -1, 3, 3, 97, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa18_T40[] = { 9, 26, -1, -1, 25, 14, 160, 3, 30, 159, 13, 161, -1, 7, 11, 160, -1, -1, -1, 7, -1, -1, -1, 8, 12, 16, 3, -1, 7, -1, 15, 31, 3, 7, 7, 7, 7 }; static const ANTLR3_INT32 dfa18_T41[] = { 9, 26, -1, -1, 25, 14, 27, 3, 30, 28, 13, 29, -1, 7, 11, 27, -1, -1, -1, 7, -1, -1, -1, 8, 12, 16, 3, -1, 7, -1, 15, 31, 3, 7, 7, 7, 7 }; static const ANTLR3_INT32 dfa18_T42[] = { 3, 3, -1, -1, 3, 3, 97, 3, 3, 147, 3, 3, -1, 3, 3, 97, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa18_T43[] = { 3, 3, -1, -1, 3, 3, 85, 3, 3, 86, 3, 3, -1, 3, 3, 85, -1, -1, -1, 3, 10, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa18_T44[] = { 3, 3, -1, -1, 3, 3, 68, 3, 3, 176, 3, 3, -1, 3, 3, 68, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa18_T45[] = { 3, 3, -1, -1, 3, 3, 68, 3, 3, 138, 3, 3, -1, 3, 3, 68, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa18_T46[] = { 3, 3, -1, -1, 3, 3, 68, 3, 3, 189, 3, 3, -1, 3, 3, 68, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa18_T47[] = { 3, 3, -1, -1, 3, 3, 148, 3, 150, 149, 3, 3, -1, 3, 3, 148, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa18_T48[] = { 3, 3, -1, -1, 3, 3, 117, 3, 119, 118, 3, 116, -1, 3, 3, 117, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa18_T49[] = { 3, 3, -1, -1, 3, 3, 122, 3, 119, 120, 3, 121, -1, 3, 3, 122, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa18_T50[] = { 3, 3, -1, -1, 3, 3, 167, 3, 119, 166, 3, 168, -1, 3, 3, 167, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa18_T51[] = { 3, 3, -1, -1, 3, 3, 184, 3, 119, 183, 3, 185, -1, 3, 3, 184, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa18_T52[] = { 3, 3, -1, -1, 3, 3, 68, 3, 3, 134, 3, 3, -1, 3, 3, 68, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa18_T53[] = { 3, 3, -1, -1, 3, 3, 135, 3, 137, 136, 3, 3, -1, 3, 3, 135, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa18_T54[] = { 9, 26, -1, -1, 25, 14, 5, 3, 7, 74, 13, 7, -1, 7, 11, 5, -1, -1, -1, 7, -1, -1, -1, 8, 12, 16, 3, -1, 7, -1, 15, 31, 3, 7, 7, 7, 7 }; static const ANTLR3_INT32 dfa18_T55[] = { 9, 26, -1, -1, 25, 14, 5, 3, 7, 139, 13, 7, -1, 7, 11, 5, -1, -1, -1, 7, -1, -1, -1, 8, 12, 16, 3, -1, 7, -1, 15, 31, 3, 7, 7, 7, 7 }; static const ANTLR3_INT32 dfa18_T56[] = { 9, 26, -1, -1, 25, 14, 5, 3, 7, 177, 13, 7, -1, 7, 11, 5, -1, -1, -1, 7, -1, -1, -1, 8, 12, 16, 3, -1, 7, -1, 15, 31, 3, 7, 7, 7, 7 }; static const ANTLR3_INT32 dfa18_T57[] = { 3, 3, -1, -1, 3, 3, 169, 3, 128, 170, 3, 125, -1, 3, 3, 169, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa18_T58[] = { 3, 3, -1, -1, 3, 3, 171, 3, 150, 172, 3, 125, -1, 3, 3, 171, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa18_T59[] = { 3, 3, -1, -1, 3, 3, 85, 3, 3, 178, 3, 3, -1, 3, 3, 85, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa18_T60[] = { 3, 3, -1, -1, 3, 3, 85, 3, 3, 145, 3, 3, -1, 3, 3, 85, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa18_T61[] = { 3, 3, -1, -1, 3, 3, 3, 3, 3, 3, 3, 3, -1, 3, 3, 3, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 2, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa18_T62[] = { 3, 3, -1, -1, 3, 3, 85, 3, 3, 190, 3, 3, -1, 3, 3, 85, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa18_T63[] = { 9, 26, -1, -1, 25, 14, 5, 3, 7, 70, 13, 7, -1, 7, 11, 5, -1, -1, -1, 7, -1, -1, -1, 8, 12, 16, 3, -1, 7, -1, 15, 31, 3, 7, 7, 7, 7 }; static const ANTLR3_INT32 dfa18_T64[] = { 3, 3, -1, -1, 3, 3, 171, 3, 150, 172, 3, 3, -1, 3, 3, 171, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa18_T65[] = { 1 }; static const ANTLR3_INT32 dfa18_T66[] = { 9, 26, -1, -1, 25, 14, 71, 3, 73, 72, 13, 7, -1, 7, 11, 71, -1, -1, -1, 7, -1, -1, -1, 8, 12, 16, 3, -1, 7, -1, 15, 31, 3, 7, 7, 7, 7 }; static const ANTLR3_INT32 dfa18_T67[] = { 3, 3, -1, -1, 3, 3, 152, 3, 104, 153, 3, 101, -1, 3, 3, 152, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa18_T68[] = { 3, 3, -1, -1, 3, 3, 85, 3, 3, 141, 3, 3, -1, 3, 3, 85, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa18_T69[] = { 3, 3, -1, -1, 3, 3, 142, 3, 144, 143, 3, 3, -1, 3, 3, 142, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa18_T70[] = { 58, 50, -1, -1, 49, 56, 51, -1, 53, 52, 58, 53, -1, 53, 58, 51, -1, -1, -1, 53, -1, -1, -1, 54, 58, 57, -1, -1, 53, -1, 55, 58, -1, 53, 53, 53, 53 }; static const ANTLR3_INT32 dfa18_T71[] = { 9, 26, -1, -1, 25, 14, 108, 3, 30, 109, 13, 29, -1, 7, 11, 108, -1, -1, -1, 7, -1, -1, -1, 8, 12, 16, 3, -1, 7, -1, 15, 31, 3, 7, 7, 7, 7 }; static const ANTLR3_INT32 dfa18_T72[] = { 3, 3, -1, -1, 3, 3, 154, 3, 137, 155, 3, 3, -1, 3, 3, 154, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa18_T73[] = { 3, 3, -1, -1, 3, 3, 97, 3, 3, 98, 3, 3, -1, 3, 3, 97, -1, -1, -1, 3, 10, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa18_T74[] = { 3, 3, -1, -1, 3, 3, 126, 3, 128, 127, 3, 125, -1, 3, 3, 126, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa18_transitions[] = { dfa18_T65, dfa18_T61, dfa18_T21, NULL, dfa18_T19, dfa18_T41, dfa18_T37, dfa18_T2, dfa18_T6, dfa18_T2, NULL, dfa18_T2, dfa18_T2, dfa18_T2, dfa18_T2, dfa18_T13, dfa18_T70, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, dfa18_T20, dfa18_T18, dfa18_T16, dfa18_T16, dfa18_T63, dfa18_T66, dfa18_T2, dfa18_T16, dfa18_T16, dfa18_T54, dfa18_T2, dfa18_T2, dfa18_T30, dfa18_T4, dfa18_T43, dfa18_T13, dfa18_T13, dfa18_T13, dfa18_T7, dfa18_T13, dfa18_T13, dfa18_T13, dfa18_T13, dfa18_T13, dfa18_T5, dfa18_T73, dfa18_T27, dfa18_T27, dfa18_T27, dfa18_T8, dfa18_T27, dfa18_T27, dfa18_T27, dfa18_T27, dfa18_T20, dfa18_T20, dfa18_T20, dfa18_T9, dfa18_T20, dfa18_T20, dfa18_T20, dfa18_T20, dfa18_T20, dfa18_T22, dfa18_T25, dfa18_T71, dfa18_T16, dfa18_T16, dfa18_T14, dfa18_T38, dfa18_T2, dfa18_T4, dfa18_T4, dfa18_T4, dfa18_T10, dfa18_T4, dfa18_T4, dfa18_T4, dfa18_T4, dfa18_T4, dfa18_T48, dfa18_T49, dfa18_T31, dfa18_T5, dfa18_T5, dfa18_T5, dfa18_T11, dfa18_T5, dfa18_T5, dfa18_T5, dfa18_T5, dfa18_T5, dfa18_T74, dfa18_T3, dfa18_T32, dfa18_T33, dfa18_T52, dfa18_T16, dfa18_T16, dfa18_T53, dfa18_T16, dfa18_T45, dfa18_T16, dfa18_T16, dfa18_T16, dfa18_T29, dfa18_T29, dfa18_T16, dfa18_T16, dfa18_T55, dfa18_T34, dfa18_T68, dfa18_T16, dfa18_T16, dfa18_T69, dfa18_T16, dfa18_T60, dfa18_T16, dfa18_T13, dfa18_T35, dfa18_T42, dfa18_T16, dfa18_T16, dfa18_T47, dfa18_T16, dfa18_T28, dfa18_T16, dfa18_T27, dfa18_T20, dfa18_T67, dfa18_T16, dfa18_T16, dfa18_T72, dfa18_T24, dfa18_T40, dfa18_T4, dfa18_T15, dfa18_T16, dfa18_T16, dfa18_T23, dfa18_T50, dfa18_T5, dfa18_T57, dfa18_T16, dfa18_T16, dfa18_T64, dfa18_T0, dfa18_T16, dfa18_T16, dfa18_T12, dfa18_T12, dfa18_T16, dfa18_T16, dfa18_T44, dfa18_T16, dfa18_T16, dfa18_T56, dfa18_T16, dfa18_T16, dfa18_T17, dfa18_T17, dfa18_T16, dfa18_T16, dfa18_T59, dfa18_T16, dfa18_T16, dfa18_T58, dfa18_T58, dfa18_T16, dfa18_T16, dfa18_T36, dfa18_T26, dfa18_T16, dfa18_T51, dfa18_T1, dfa18_T16, dfa18_T16, dfa18_T46, dfa18_T16, dfa18_T16, dfa18_T62, dfa18_T16, dfa18_T16, dfa18_T39, dfa18_T16, dfa18_T16, dfa18_T16 }; static ANTLR3_INT32 dfa18_sst(pbelle_sip_messageParser ctx, pANTLR3_BASE_RECOGNIZER recognizer, pANTLR3_INT_STREAM is, pANTLR3_CYCLIC_DFA dfa, ANTLR3_INT32 s) { ANTLR3_INT32 _s; _s = s; switch (s) { case 0: { ANTLR3_UINT32 LA18_166; ANTLR3_MARKER index18_166; LA18_166 = LA(1); index18_166 = INDEX(); REWINDLAST(); s = -1; if ( (synpred7_belle_sip_message(ctx)) ) { s = 23; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index18_166); if ( s>=0 ) { return s; } } break; case 1: { ANTLR3_UINT32 LA18_120; ANTLR3_MARKER index18_120; LA18_120 = LA(1); index18_120 = INDEX(); REWINDLAST(); s = -1; if ( (synpred7_belle_sip_message(ctx)) ) { s = 23; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index18_120); if ( s>=0 ) { return s; } } break; case 2: { ANTLR3_UINT32 LA18_190; ANTLR3_MARKER index18_190; LA18_190 = LA(1); index18_190 = INDEX(); REWINDLAST(); s = -1; if ( (synpred7_belle_sip_message(ctx)) ) { s = 23; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index18_190); if ( s>=0 ) { return s; } } break; case 3: { ANTLR3_UINT32 LA18_26; ANTLR3_MARKER index18_26; LA18_26 = LA(1); index18_26 = INDEX(); REWINDLAST(); s = -1; if ( (LA18_26 == COMMON_CHAR || LA18_26 == HEX_CHAR) ) { s = 68; } else if ( (LA18_26 == DIGIT) ) { s = 69; } else if ( (synpred7_belle_sip_message(ctx)) && (LA18_26 == LSBRAQUET) ) { s = 10; } else if ( (LA18_26 == EOF || ((LA18_26 >= AND) && (LA18_26 <= AT)) || ((LA18_26 >= COLON) && (LA18_26 <= COMMA)) || ((LA18_26 >= CRLF) && (LA18_26 <= DASH)) || ((LA18_26 >= DOLLARD) && (LA18_26 <= DOT)) || ((LA18_26 >= EMARK) && (LA18_26 <= EQUAL)) || LA18_26 == LPAREN || ((LA18_26 >= PERCENT) && (LA18_26 <= RAQUOT)) || LA18_26 == RPAREN || ((LA18_26 >= SEMI) && (LA18_26 <= USCORE))) ) { s = 3; } SEEK(index18_26); if ( s>=0 ) { return s; } } break; case 4: { ANTLR3_UINT32 LA18_4; ANTLR3_MARKER index18_4; LA18_4 = LA(1); index18_4 = INDEX(); REWINDLAST(); s = -1; if ( (synpred7_belle_sip_message(ctx)) && (LA18_4 == COMMON_CHAR || LA18_4 == HEX_CHAR) ) { s = 17; } else if ( (synpred7_belle_sip_message(ctx)) && (LA18_4 == DIGIT) ) { s = 18; } else if ( (synpred7_belle_sip_message(ctx)) && (LA18_4 == DASH || LA18_4 == DOT || LA18_4 == EMARK || LA18_4 == LPAREN || LA18_4 == RPAREN || ((LA18_4 >= SQUOTE) && (LA18_4 <= USCORE))) ) { s = 19; } else if ( (synpred7_belle_sip_message(ctx)) && (LA18_4 == PERCENT) ) { s = 20; } else if ( (synpred7_belle_sip_message(ctx)) && (LA18_4 == COLON) ) { s = 21; } else if ( (synpred7_belle_sip_message(ctx)) && (LA18_4 == AT) ) { s = 22; } else if ( (synpred7_belle_sip_message(ctx)) && (LA18_4 == AND || LA18_4 == COMMA || LA18_4 == DOLLARD || LA18_4 == EQUAL || ((LA18_4 >= PLUS) && (LA18_4 <= QMARK)) || ((LA18_4 >= SEMI) && (LA18_4 <= SLASH))) ) { s = 23; } else if ( (synpred6_belle_sip_message(ctx)) ) { s = 24; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index18_4); if ( s>=0 ) { return s; } } break; case 5: { ANTLR3_UINT32 LA18_2; ANTLR3_MARKER index18_2; LA18_2 = LA(1); index18_2 = INDEX(); REWINDLAST(); s = -1; if ( (LA18_2 == SLASH) ) { s = 4; } else if ( (LA18_2 == COMMON_CHAR || LA18_2 == HEX_CHAR) ) { s = 5; } else if ( (LA18_2 == DIGIT) ) { s = 6; } else if ( (LA18_2 == DASH || LA18_2 == DOT || LA18_2 == EMARK || LA18_2 == LPAREN || LA18_2 == RPAREN || ((LA18_2 >= SQUOTE) && (LA18_2 <= USCORE))) ) { s = 7; } else if ( (LA18_2 == PERCENT) ) { s = 8; } else if ( (LA18_2 == AND) ) { s = 9; } else if ( (synpred7_belle_sip_message(ctx)) && (LA18_2 == LSBRAQUET) ) { s = 10; } else if ( (LA18_2 == EOF || LA18_2 == AT || LA18_2 == COLON || LA18_2 == CRLF || LA18_2 == RAQUOT || LA18_2 == SP) ) { s = 3; } else if ( (LA18_2 == EQUAL) ) { s = 11; } else if ( (LA18_2 == PLUS) ) { s = 12; } else if ( (LA18_2 == DOLLARD) ) { s = 13; } else if ( (LA18_2 == COMMA) ) { s = 14; } else if ( (LA18_2 == SEMI) ) { s = 15; } else if ( (LA18_2 == QMARK) ) { s = 16; } SEEK(index18_2); if ( s>=0 ) { return s; } } break; case 6: { ANTLR3_UINT32 LA18_183; ANTLR3_MARKER index18_183; LA18_183 = LA(1); index18_183 = INDEX(); REWINDLAST(); s = -1; if ( (synpred7_belle_sip_message(ctx)) ) { s = 23; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index18_183); if ( s>=0 ) { return s; } } break; case 7: { ANTLR3_UINT32 LA18_127; ANTLR3_MARKER index18_127; LA18_127 = LA(1); index18_127 = INDEX(); REWINDLAST(); s = -1; if ( (synpred7_belle_sip_message(ctx)) ) { s = 23; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index18_127); if ( s>=0 ) { return s; } } break; case 8: { ANTLR3_UINT32 LA18_149; ANTLR3_MARKER index18_149; LA18_149 = LA(1); index18_149 = INDEX(); REWINDLAST(); s = -1; if ( (synpred7_belle_sip_message(ctx)) ) { s = 23; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index18_149); if ( s>=0 ) { return s; } } break; case 9: { ANTLR3_UINT32 LA18_170; ANTLR3_MARKER index18_170; LA18_170 = LA(1); index18_170 = INDEX(); REWINDLAST(); s = -1; if ( (synpred7_belle_sip_message(ctx)) ) { s = 23; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index18_170); if ( s>=0 ) { return s; } } break; case 10: { ANTLR3_UINT32 LA18_103; ANTLR3_MARKER index18_103; LA18_103 = LA(1); index18_103 = INDEX(); REWINDLAST(); s = -1; if ( (synpred7_belle_sip_message(ctx)) ) { s = 23; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index18_103); if ( s>=0 ) { return s; } } break; case 11: { ANTLR3_UINT32 LA18_136; ANTLR3_MARKER index18_136; LA18_136 = LA(1); index18_136 = INDEX(); REWINDLAST(); s = -1; if ( (synpred7_belle_sip_message(ctx)) ) { s = 23; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index18_136); if ( s>=0 ) { return s; } } break; case 12: { ANTLR3_UINT32 LA18_153; ANTLR3_MARKER index18_153; LA18_153 = LA(1); index18_153 = INDEX(); REWINDLAST(); s = -1; if ( (synpred7_belle_sip_message(ctx)) ) { s = 23; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index18_153); if ( s>=0 ) { return s; } } break; case 13: { ANTLR3_UINT32 LA18_39; ANTLR3_MARKER index18_39; LA18_39 = LA(1); index18_39 = INDEX(); REWINDLAST(); s = -1; if ( (LA18_39 == COMMON_CHAR || LA18_39 == HEX_CHAR) ) { s = 85; } else if ( (LA18_39 == DIGIT) ) { s = 86; } else if ( (synpred7_belle_sip_message(ctx)) && (LA18_39 == LSBRAQUET) ) { s = 10; } else if ( (LA18_39 == EOF || ((LA18_39 >= AND) && (LA18_39 <= AT)) || ((LA18_39 >= COLON) && (LA18_39 <= COMMA)) || ((LA18_39 >= CRLF) && (LA18_39 <= DASH)) || ((LA18_39 >= DOLLARD) && (LA18_39 <= DOT)) || ((LA18_39 >= EMARK) && (LA18_39 <= EQUAL)) || LA18_39 == LPAREN || ((LA18_39 >= PERCENT) && (LA18_39 <= RAQUOT)) || LA18_39 == RPAREN || ((LA18_39 >= SEMI) && (LA18_39 <= USCORE))) ) { s = 3; } SEEK(index18_39); if ( s>=0 ) { return s; } } break; case 14: { ANTLR3_UINT32 LA18_28; ANTLR3_MARKER index18_28; LA18_28 = LA(1); index18_28 = INDEX(); REWINDLAST(); s = -1; if ( (synpred7_belle_sip_message(ctx)) ) { s = 23; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index18_28); if ( s>=0 ) { return s; } } break; case 15: { ANTLR3_UINT32 LA18_72; ANTLR3_MARKER index18_72; LA18_72 = LA(1); index18_72 = INDEX(); REWINDLAST(); s = -1; if ( (synpred7_belle_sip_message(ctx)) ) { s = 23; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index18_72); if ( s>=0 ) { return s; } } break; case 16: { ANTLR3_UINT32 LA18_109; ANTLR3_MARKER index18_109; LA18_109 = LA(1); index18_109 = INDEX(); REWINDLAST(); s = -1; if ( (synpred7_belle_sip_message(ctx)) ) { s = 23; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index18_109); if ( s>=0 ) { return s; } } break; case 17: { ANTLR3_UINT32 LA18_126; ANTLR3_MARKER index18_126; LA18_126 = LA(1); index18_126 = INDEX(); REWINDLAST(); s = -1; if ( (synpred7_belle_sip_message(ctx)) ) { s = 23; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index18_126); if ( s>=0 ) { return s; } } break; case 18: { ANTLR3_UINT32 LA18_131; ANTLR3_MARKER index18_131; LA18_131 = LA(1); index18_131 = INDEX(); REWINDLAST(); s = -1; if ( (synpred7_belle_sip_message(ctx)) ) { s = 23; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index18_131); if ( s>=0 ) { return s; } } break; case 19: { ANTLR3_UINT32 LA18_148; ANTLR3_MARKER index18_148; LA18_148 = LA(1); index18_148 = INDEX(); REWINDLAST(); s = -1; if ( (synpred7_belle_sip_message(ctx)) ) { s = 23; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index18_148); if ( s>=0 ) { return s; } } break; case 20: { ANTLR3_UINT32 LA18_169; ANTLR3_MARKER index18_169; LA18_169 = LA(1); index18_169 = INDEX(); REWINDLAST(); s = -1; if ( (synpred7_belle_sip_message(ctx)) ) { s = 23; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index18_169); if ( s>=0 ) { return s; } } break; case 21: { ANTLR3_UINT32 LA18_174; ANTLR3_MARKER index18_174; LA18_174 = LA(1); index18_174 = INDEX(); REWINDLAST(); s = -1; if ( (synpred7_belle_sip_message(ctx)) ) { s = 23; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index18_174); if ( s>=0 ) { return s; } } break; case 22: { ANTLR3_UINT32 LA18_187; ANTLR3_MARKER index18_187; LA18_187 = LA(1); index18_187 = INDEX(); REWINDLAST(); s = -1; if ( (synpred7_belle_sip_message(ctx)) ) { s = 23; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index18_187); if ( s>=0 ) { return s; } } break; case 23: { ANTLR3_UINT32 LA18_129; ANTLR3_MARKER index18_129; LA18_129 = LA(1); index18_129 = INDEX(); REWINDLAST(); s = -1; if ( (synpred7_belle_sip_message(ctx)) ) { s = 23; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index18_129); if ( s>=0 ) { return s; } } break; case 24: { ANTLR3_UINT32 LA18_191; ANTLR3_MARKER index18_191; LA18_191 = LA(1); index18_191 = INDEX(); REWINDLAST(); s = -1; if ( (synpred7_belle_sip_message(ctx)) ) { s = 23; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index18_191); if ( s>=0 ) { return s; } } break; case 25: { ANTLR3_UINT32 LA18_118; ANTLR3_MARKER index18_118; LA18_118 = LA(1); index18_118 = INDEX(); REWINDLAST(); s = -1; if ( (synpred7_belle_sip_message(ctx)) ) { s = 23; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index18_118); if ( s>=0 ) { return s; } } break; case 26: { ANTLR3_UINT32 LA18_143; ANTLR3_MARKER index18_143; LA18_143 = LA(1); index18_143 = INDEX(); REWINDLAST(); s = -1; if ( (synpred7_belle_sip_message(ctx)) ) { s = 23; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index18_143); if ( s>=0 ) { return s; } } break; case 27: { ANTLR3_UINT32 LA18_163; ANTLR3_MARKER index18_163; LA18_163 = LA(1); index18_163 = INDEX(); REWINDLAST(); s = -1; if ( (synpred7_belle_sip_message(ctx)) ) { s = 23; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index18_163); if ( s>=0 ) { return s; } } break; case 28: { ANTLR3_UINT32 LA18_102; ANTLR3_MARKER index18_102; LA18_102 = LA(1); index18_102 = INDEX(); REWINDLAST(); s = -1; if ( (synpred7_belle_sip_message(ctx)) ) { s = 23; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index18_102); if ( s>=0 ) { return s; } } break; case 29: { ANTLR3_UINT32 LA18_107; ANTLR3_MARKER index18_107; LA18_107 = LA(1); index18_107 = INDEX(); REWINDLAST(); s = -1; if ( (synpred7_belle_sip_message(ctx)) ) { s = 23; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index18_107); if ( s>=0 ) { return s; } } break; case 30: { ANTLR3_UINT32 LA18_135; ANTLR3_MARKER index18_135; LA18_135 = LA(1); index18_135 = INDEX(); REWINDLAST(); s = -1; if ( (synpred7_belle_sip_message(ctx)) ) { s = 23; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index18_135); if ( s>=0 ) { return s; } } break; case 31: { ANTLR3_UINT32 LA18_152; ANTLR3_MARKER index18_152; LA18_152 = LA(1); index18_152 = INDEX(); REWINDLAST(); s = -1; if ( (synpred7_belle_sip_message(ctx)) ) { s = 23; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index18_152); if ( s>=0 ) { return s; } } break; case 32: { ANTLR3_UINT32 LA18_157; ANTLR3_MARKER index18_157; LA18_157 = LA(1); index18_157 = INDEX(); REWINDLAST(); s = -1; if ( (synpred7_belle_sip_message(ctx)) ) { s = 23; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index18_157); if ( s>=0 ) { return s; } } break; case 33: { ANTLR3_UINT32 LA18_181; ANTLR3_MARKER index18_181; LA18_181 = LA(1); index18_181 = INDEX(); REWINDLAST(); s = -1; if ( (synpred7_belle_sip_message(ctx)) ) { s = 23; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index18_181); if ( s>=0 ) { return s; } } break; case 34: { ANTLR3_UINT32 LA18_186; ANTLR3_MARKER index18_186; LA18_186 = LA(1); index18_186 = INDEX(); REWINDLAST(); s = -1; if ( (synpred7_belle_sip_message(ctx)) ) { s = 23; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index18_186); if ( s>=0 ) { return s; } } break; case 35: { ANTLR3_UINT32 LA18_173; ANTLR3_MARKER index18_173; LA18_173 = LA(1); index18_173 = INDEX(); REWINDLAST(); s = -1; if ( (synpred7_belle_sip_message(ctx)) ) { s = 23; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index18_173); if ( s>=0 ) { return s; } } break; case 36: { ANTLR3_UINT32 LA18_180; ANTLR3_MARKER index18_180; LA18_180 = LA(1); index18_180 = INDEX(); REWINDLAST(); s = -1; if ( (synpred7_belle_sip_message(ctx)) ) { s = 23; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index18_180); if ( s>=0 ) { return s; } } break; case 37: { ANTLR3_UINT32 LA18_156; ANTLR3_MARKER index18_156; LA18_156 = LA(1); index18_156 = INDEX(); REWINDLAST(); s = -1; if ( (synpred7_belle_sip_message(ctx)) ) { s = 23; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index18_156); if ( s>=0 ) { return s; } } break; case 38: { ANTLR3_UINT32 LA18_105; ANTLR3_MARKER index18_105; LA18_105 = LA(1); index18_105 = INDEX(); REWINDLAST(); s = -1; if ( (synpred7_belle_sip_message(ctx)) ) { s = 23; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index18_105); if ( s>=0 ) { return s; } } break; case 39: { ANTLR3_UINT32 LA18_189; ANTLR3_MARKER index18_189; LA18_189 = LA(1); index18_189 = INDEX(); REWINDLAST(); s = -1; if ( (synpred7_belle_sip_message(ctx)) ) { s = 23; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index18_189); if ( s>=0 ) { return s; } } break; case 40: { ANTLR3_UINT32 LA18_27; ANTLR3_MARKER index18_27; LA18_27 = LA(1); index18_27 = INDEX(); REWINDLAST(); s = -1; if ( (synpred7_belle_sip_message(ctx)) ) { s = 23; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index18_27); if ( s>=0 ) { return s; } } break; case 41: { ANTLR3_UINT32 LA18_33; ANTLR3_MARKER index18_33; LA18_33 = LA(1); index18_33 = INDEX(); REWINDLAST(); s = -1; if ( (synpred7_belle_sip_message(ctx)) ) { s = 23; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index18_33); if ( s>=0 ) { return s; } } break; case 42: { ANTLR3_UINT32 LA18_71; ANTLR3_MARKER index18_71; LA18_71 = LA(1); index18_71 = INDEX(); REWINDLAST(); s = -1; if ( (synpred7_belle_sip_message(ctx)) ) { s = 23; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index18_71); if ( s>=0 ) { return s; } } break; case 43: { ANTLR3_UINT32 LA18_108; ANTLR3_MARKER index18_108; LA18_108 = LA(1); index18_108 = INDEX(); REWINDLAST(); s = -1; if ( (synpred7_belle_sip_message(ctx)) ) { s = 23; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index18_108); if ( s>=0 ) { return s; } } break; case 44: { ANTLR3_UINT32 LA18_113; ANTLR3_MARKER index18_113; LA18_113 = LA(1); index18_113 = INDEX(); REWINDLAST(); s = -1; if ( (synpred7_belle_sip_message(ctx)) ) { s = 23; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index18_113); if ( s>=0 ) { return s; } } break; case 45: { ANTLR3_UINT32 LA18_160; ANTLR3_MARKER index18_160; LA18_160 = LA(1); index18_160 = INDEX(); REWINDLAST(); s = -1; if ( (synpred7_belle_sip_message(ctx)) ) { s = 23; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index18_160); if ( s>=0 ) { return s; } } break; case 46: { ANTLR3_UINT32 LA18_159; ANTLR3_MARKER index18_159; LA18_159 = LA(1); index18_159 = INDEX(); REWINDLAST(); s = -1; if ( (synpred7_belle_sip_message(ctx)) ) { s = 23; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index18_159); if ( s>=0 ) { return s; } } break; case 47: { ANTLR3_UINT32 LA18_112; ANTLR3_MARKER index18_112; LA18_112 = LA(1); index18_112 = INDEX(); REWINDLAST(); s = -1; if ( (synpred7_belle_sip_message(ctx)) ) { s = 23; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index18_112); if ( s>=0 ) { return s; } } break; case 48: { ANTLR3_UINT32 LA18_32; ANTLR3_MARKER index18_32; LA18_32 = LA(1); index18_32 = INDEX(); REWINDLAST(); s = -1; if ( (synpred7_belle_sip_message(ctx)) ) { s = 23; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index18_32); if ( s>=0 ) { return s; } } break; case 49: { ANTLR3_UINT32 LA18_177; ANTLR3_MARKER index18_177; LA18_177 = LA(1); index18_177 = INDEX(); REWINDLAST(); s = -1; if ( (synpred7_belle_sip_message(ctx)) ) { s = 23; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index18_177); if ( s>=0 ) { return s; } } break; case 50: { ANTLR3_UINT32 LA18_50; ANTLR3_MARKER index18_50; LA18_50 = LA(1); index18_50 = INDEX(); REWINDLAST(); s = -1; if ( (LA18_50 == COMMON_CHAR || LA18_50 == HEX_CHAR) ) { s = 97; } else if ( (LA18_50 == DIGIT) ) { s = 98; } else if ( (synpred7_belle_sip_message(ctx)) && (LA18_50 == LSBRAQUET) ) { s = 10; } else if ( (LA18_50 == EOF || ((LA18_50 >= AND) && (LA18_50 <= AT)) || ((LA18_50 >= COLON) && (LA18_50 <= COMMA)) || ((LA18_50 >= CRLF) && (LA18_50 <= DASH)) || ((LA18_50 >= DOLLARD) && (LA18_50 <= DOT)) || ((LA18_50 >= EMARK) && (LA18_50 <= EQUAL)) || LA18_50 == LPAREN || ((LA18_50 >= PERCENT) && (LA18_50 <= RAQUOT)) || LA18_50 == RPAREN || ((LA18_50 >= SEMI) && (LA18_50 <= USCORE))) ) { s = 3; } SEEK(index18_50); if ( s>=0 ) { return s; } } break; case 51: { ANTLR3_UINT32 LA18_117; ANTLR3_MARKER index18_117; LA18_117 = LA(1); index18_117 = INDEX(); REWINDLAST(); s = -1; if ( (synpred7_belle_sip_message(ctx)) ) { s = 23; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index18_117); if ( s>=0 ) { return s; } } break; case 52: { ANTLR3_UINT32 LA18_122; ANTLR3_MARKER index18_122; LA18_122 = LA(1); index18_122 = INDEX(); REWINDLAST(); s = -1; if ( (synpred7_belle_sip_message(ctx)) ) { s = 23; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index18_122); if ( s>=0 ) { return s; } } break; case 53: { ANTLR3_UINT32 LA18_142; ANTLR3_MARKER index18_142; LA18_142 = LA(1); index18_142 = INDEX(); REWINDLAST(); s = -1; if ( (synpred7_belle_sip_message(ctx)) ) { s = 23; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index18_142); if ( s>=0 ) { return s; } } break; case 54: { ANTLR3_UINT32 LA18_162; ANTLR3_MARKER index18_162; LA18_162 = LA(1); index18_162 = INDEX(); REWINDLAST(); s = -1; if ( (synpred7_belle_sip_message(ctx)) ) { s = 23; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index18_162); if ( s>=0 ) { return s; } } break; case 55: { ANTLR3_UINT32 LA18_167; ANTLR3_MARKER index18_167; LA18_167 = LA(1); index18_167 = INDEX(); REWINDLAST(); s = -1; if ( (synpred7_belle_sip_message(ctx)) ) { s = 23; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index18_167); if ( s>=0 ) { return s; } } break; case 56: { ANTLR3_UINT32 LA18_184; ANTLR3_MARKER index18_184; LA18_184 = LA(1); index18_184 = INDEX(); REWINDLAST(); s = -1; if ( (synpred7_belle_sip_message(ctx)) ) { s = 23; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index18_184); if ( s>=0 ) { return s; } } break; } if (BACKTRACKING > 0) { FAILEDFLAG = ANTLR3_TRUE; return -1; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)"346:5: ( ( SLASH SLASH path_segments[NULL] )=> ( SLASH SLASH path_segments[uri] ) | ( SLASH SLASH authority[NULL] ( path_segments[NULL] )? )=> ( SLASH SLASH authority[uri] ( path_segments[uri] )? ) | ( path_segments[uri] ) )"; EXCEPTION->decisionNum = 18; EXCEPTION->state = _s; return -1; } /* Declare tracking structure for Cyclic DFA 18 */ static ANTLR3_CYCLIC_DFA cdfa18 = { 18, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"346:5: ( ( SLASH SLASH path_segments[NULL] )=> ( SLASH SLASH path_segments[uri] ) | ( SLASH SLASH authority[NULL] ( path_segments[NULL] )? )=> ( SLASH SLASH authority[uri] ( path_segments[uri] )? ) | ( path_segments[uri] ) )", (CDFA_SPECIAL_FUNC) dfa18_sst, antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa18_eot, /* EOT table */ dfa18_eof, /* EOF table */ dfa18_min, /* Minimum tokens for each state */ dfa18_max, /* Maximum tokens for each state */ dfa18_accept, /* Accept table */ dfa18_special, /* Special transition states */ dfa18_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 18 * --------------------- *//** Static dfa state tables for Cyclic dfa: * 379:3: ( ( authority_userinfo[NULL] )=> authority_userinfo[uri] )? */ static const ANTLR3_INT32 dfa28_eot[320] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa28_eof[320] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, 6, 6, -1, -1, 6, -1, -1, -1, 6, 6, -1, -1, -1, 6, 6, -1, -1, 6, -1, -1, -1, -1, -1, -1, -1, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, -1, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, -1, 6, 6, 6, 6, -1, -1, 6, -1, -1, 6, 6, 6, 6, 6, -1, 6, 6, 6, 6, 6, 6, 6, -1, -1, 6, 6, 6, 6, 6, -1, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, -1, 6, 6, 6, 6, 6, 6, 6, 6, 6, -1, 6, 6, 6, 6, 6, 6, 6, -1, 6, 6, -1, 6, 6, 6, 6, 6, 6, 6, -1, 6, -1, -1, 6, -1, 6, -1, 6, 6, 6, 6, -1, 6, 6, 6, 6, 6, 6, 6, -1, 6, 6, 6, -1, 6, 6, 6, 6, 6, 6, 6, -1, 6, 6, 6, 6, 6, -1, 6, 6, 6, 6, 6, -1, 6, -1, -1, 6, -1, 6, -1, 6, 6, -1, 6, 6, 6, 6, -1, -1, 6, 6, -1, 6, -1, -1, 6, -1, 6, -1, 6, -1, 6, -1, -1, 6, -1, 6, -1, 6, 6, 6, 6, -1, 6, 6, 6, 6, 6, 6, 6, -1, 6, 6, -1, -1, 6, 6, 6, 6, 6, 6, 6, -1, -1, 6, 6, -1, -1, 6, 6, 6, -1, -1, 6, 6, 6, 6, -1, -1, 6, 6, -1, 6, -1, -1, 6, -1, 6, -1, 6, -1, -1, 6, 6, -1, -1, 6, 6, 6, -1, -1, 6, 6, -1, -1, 6, -1, -1, 6, 6, -1, -1, 6, 6, 6, -1, -1, 6, 6, 6, 6, -1, -1, 6, 6, 6, -1, -1, 6, 6, -1, -1, 6, -1, -1, 6, -1, -1, -1, 6, -1, -1, 6, 6, -1, -1, -1, -1, -1, 6, -1 }; static const ANTLR3_INT32 dfa28_min[320] = { 4, 4, 4, -1, -1, -1, -1, -1, -1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, -1, 4, -1, -1, -1, -1, -1, -1, -1, 4, 4, 4, 6, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 6, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, -1, 13, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 6, 4, 4, 4, 13, 4, 0, 0, 4, 0, 4, 0, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 13, 4, 0, 0, 4, 0, 4, 0, 4, 4, 4, 6, 6, 4, 4, 0, 0, 4, 4, 13, 4, 0, 0, 4, 0, 4, 0, 4, 13, 4, 0, 0, 4, 0, 4, 0, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 0, 0, 4, 4, 4, 4, 4, 4, 4, 0, 0, 4, 4, 0, 0, 4, 4, 4, 0, 0, 4, 4, 4, 4, 0, 0, 4, 4, 13, 4, 0, 0, 4, 0, 4, 0, 4, 0, 0, 4, 4, 0, 0, 4, 4, 4, 0, 0, 4, 4, 0, 0, 4, 0, 0, 4, 4, 0, 0, 4, 4, 4, 0, 0, 4, 4, 4, 4, 0, 0, 4, 4, 4, 0, 0, 4, 4, 0, 0, 4, 0, 0, 4, 0, 0, 0, 4, 0, 0, 4, 4, 0, 0, 0, 0, 0, 4, 0 }; static const ANTLR3_INT32 dfa28_max[320] = { 40, 40, 40, -1, -1, -1, -1, -1, -1, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, -1, 40, -1, -1, -1, -1, -1, -1, -1, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, -1, 19, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 0, 0, 40, 0, 40, 0, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 19, 40, 0, 0, 40, 0, 40, 0, 40, 40, 40, 40, 40, 40, 40, 0, 0, 40, 40, 19, 40, 0, 0, 40, 0, 40, 0, 40, 19, 40, 0, 0, 40, 0, 40, 0, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 0, 0, 40, 40, 40, 40, 40, 40, 40, 0, 0, 40, 40, 0, 0, 40, 40, 40, 0, 0, 40, 40, 40, 40, 0, 0, 40, 40, 19, 40, 0, 0, 40, 0, 40, 0, 40, 0, 0, 40, 40, 0, 0, 40, 40, 40, 0, 0, 40, 40, 0, 0, 40, 0, 0, 40, 40, 0, 0, 40, 40, 40, 0, 0, 40, 40, 40, 40, 0, 0, 40, 40, 40, 0, 0, 40, 40, 0, 0, 40, 0, 0, 40, 0, 0, 0, 40, 0, 0, 40, 40, 0, 0, 0, 0, 0, 40, 0 }; static const ANTLR3_INT32 dfa28_accept[320] = { -1, -1, -1, 1, 1, 1, 2, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, 1, 1, 1, 1, 1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa28_special[320] = { 73, 31, 36, -1, -1, -1, -1, -1, -1, 58, 20, 82, 91, 78, 72, 86, 101, 19, -1, -1, 5, 17, 83, 1, 37, -1, 89, -1, -1, -1, -1, -1, -1, -1, 104, 87, 0, -1, 105, -1, 85, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 54, -1, -1, -1, -1, -1, -1, -1, -1, 22, 7, 80, 71, 103, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 29, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 16, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 84, 8, 38, 59, 35, 64, -1, 55, 75, 67, -1, -1, 108, 60, -1, 6, -1, 109, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 79, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 39, 10, -1, 57, -1, 40, -1, 76, 74, -1, -1, -1, -1, 110, 61, -1, -1, -1, -1, 48, 13, -1, 63, -1, 49, -1, -1, -1, 23, 92, -1, 34, -1, 24, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 41, 11, -1, -1, 90, 9, 77, 21, 18, 111, 62, -1, -1, 4, 112, -1, -1, -1, 50, 14, -1, -1, -1, -1, 25, 93, -1, -1, -1, -1, 95, 45, -1, 113, -1, 96, -1, 42, 12, -1, -1, 56, 43, -1, 81, -1, 51, 15, -1, -1, 70, 52, -1, 26, 94, -1, -1, 33, 27, -1, -1, -1, 97, 46, -1, -1, -1, 88, 2, 114, -1, -1, -1, 98, 47, -1, -1, 106, 99, -1, 65, 44, -1, 3, 68, 53, -1, 30, 28, -1, -1, 66, 69, 32, 102, 100, -1, 107 }; /** Used when there is no transition table entry for a particular state */ #define dfa28_T_empty NULL static const ANTLR3_INT32 dfa28_T0[] = { 6, 6, -1, -1, 6, 6, 317, 6, 254, 316, 6, 318, -1, 6, 6, 317, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T1[] = { 166, 161, -1, -1, 160, 170, 162, 6, 164, 163, 169, 164, -1, 164, 167, 162, -1, -1, -1, 164, -1, -1, -1, 165, 168, 19, 6, -1, 164, -1, 104, 51, 6, 164, 164, 164, 164 }; static const ANTLR3_INT32 dfa28_T2[] = { 5, 8, 6, -1, 7, 5, 34, 6, 36, 35, 5, 36, -1, 36, 66, 34, -1, -1, -1, 36, -1, -1, -1, 37, 38, 19, 6, -1, 36, -1, 16, 18, 6, 36, 36, 36, 36 }; static const ANTLR3_INT32 dfa28_T3[] = { 6, -1, -1, -1, 6, 6, 6, 126, -1, 6, -1, 6, 6, 125, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T4[] = { 88, 83, -1, -1, 82, 92, 84, 6, 86, 85, 91, 86, -1, 86, 89, 84, -1, -1, -1, 86, -1, -1, -1, 87, 90, 19, 6, -1, 86, -1, 50, 51, 6, 86, 86, 86, 86 }; static const ANTLR3_INT32 dfa28_T5[] = { 6, 6, -1, -1, 6, 6, 257, 6, 254, 255, 6, 256, -1, 6, 6, 257, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T6[] = { 99, 94, -1, -1, 93, 103, 95, 6, 97, 96, 102, 97, -1, 97, 100, 95, -1, -1, -1, 97, -1, -1, -1, 98, 101, 19, 6, -1, 97, -1, 104, 51, 6, 97, 97, 97, 97 }; static const ANTLR3_INT32 dfa28_T7[] = { 45, 40, -1, -1, 39, 49, 41, 6, 43, 42, 48, 43, -1, 43, 46, 41, -1, -1, -1, 43, -1, -1, -1, 44, 47, 19, 6, -1, 43, -1, 50, 51, 6, 43, 43, 43, 43 }; static const ANTLR3_INT32 dfa28_T8[] = { 6, 6, -1, -1, 6, 6, 297, 6, 286, 298, 6, 251, -1, 6, 6, 297, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T9[] = { 6, 6, -1, -1, 6, 6, 300, 6, 254, 299, 6, 301, -1, 6, 6, 300, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T10[] = { 5, 8, -1, -1, 15, 5, 1, 6, 3, 24, 5, 3, -1, 3, 5, 1, -1, -1, -1, 3, -1, -1, -1, 4, 5, 19, 6, -1, 3, -1, 16, 18, 6, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa28_T11[] = { 109, 53, -1, -1, 6, 113, 105, 6, 107, 106, 112, 107, -1, 107, 110, 105, -1, -1, -1, 107, -1, -1, -1, 108, 111, 6, 6, -1, 107, -1, 6, 6, 6, 107, 107, 107, 107 }; static const ANTLR3_INT32 dfa28_T12[] = { 116, -1, -1, -1, -1, -1, 116 }; static const ANTLR3_INT32 dfa28_T13[] = { 171, -1, -1, -1, -1, -1, 171 }; static const ANTLR3_INT32 dfa28_T14[] = { -1 }; static const ANTLR3_INT32 dfa28_T15[] = { 6, 6, -1, -1, 6, 6, 134, 6, 131, 132, 6, 133, -1, 6, 6, 134, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T16[] = { 6, 6, -1, -1, 6, 6, 252, 6, 254, 253, 6, 251, -1, 6, 6, 252, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T17[] = { 6, 6, -1, -1, 6, 6, 222, 6, 224, 223, 6, 6, -1, 6, 6, 222, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T18[] = { 5, 8, -1, -1, 7, 5, 9, -1, 12, 10, 5, 11, -1, 3, 5, 9, -1, -1, -1, 3, -1, -1, -1, 4, 5, 5, -1, -1, 3, -1, 5, 5, -1, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa28_T19[] = { 6, 6, -1, -1, 6, 6, 275, 6, 203, 276, 6, 200, -1, 6, 6, 275, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T20[] = { 5, 8, -1, -1, 7, 5, 62, -1, 21, 63, 5, 11, -1, 3, 5, 62, -1, -1, -1, 3, -1, -1, -1, 4, 5, 5, -1, -1, 3, -1, 5, 5, -1, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa28_T21[] = { 127, -1, -1, -1, -1, -1, 127 }; static const ANTLR3_INT32 dfa28_T22[] = { 81, -1, -1, -1, -1, -1, 81 }; static const ANTLR3_INT32 dfa28_T23[] = { 147, -1, -1, -1, -1, -1, 147 }; static const ANTLR3_INT32 dfa28_T24[] = { 159, -1, -1, -1, -1, -1, 159 }; static const ANTLR3_INT32 dfa28_T25[] = { 190, -1, -1, -1, -1, -1, 190 }; static const ANTLR3_INT32 dfa28_T26[] = { 199, -1, -1, -1, -1, -1, 199 }; static const ANTLR3_INT32 dfa28_T27[] = { 250, -1, -1, -1, -1, -1, 250 }; static const ANTLR3_INT32 dfa28_T28[] = { 219, -1, -1, -1, -1, -1, 219 }; static const ANTLR3_INT32 dfa28_T29[] = { 152, 94, -1, -1, 6, 156, 148, 6, 150, 149, 155, 150, -1, 150, 153, 148, -1, -1, -1, 150, -1, -1, -1, 151, 154, 6, 6, -1, 150, -1, 6, 6, 6, 150, 150, 150, 150 }; static const ANTLR3_INT32 dfa28_T30[] = { 140, 83, -1, -1, 6, 144, 136, 6, 138, 137, 143, 138, -1, 138, 141, 136, -1, -1, -1, 138, -1, -1, -1, 139, 142, 6, 6, -1, 138, -1, 6, 6, 6, 138, 138, 138, 138 }; static const ANTLR3_INT32 dfa28_T31[] = { 6, 6, -1, -1, 6, 6, 233, 6, 188, 234, 6, 128, -1, 6, 6, 233, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T32[] = { 5, 8, -1, -1, 15, 5, 1, 6, 3, 119, 5, 3, -1, 3, 5, 1, -1, -1, -1, 3, -1, -1, -1, 4, 5, 19, 6, -1, 3, -1, 16, 18, 6, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa28_T33[] = { 6, 6, -1, -1, 6, 6, 236, 6, 131, 235, 6, 237, -1, 6, 6, 236, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T34[] = { 5, 8, -1, -1, 15, 5, 1, 6, 3, 228, 5, 3, -1, 3, 5, 1, -1, -1, -1, 3, -1, -1, -1, 4, 5, 19, 6, -1, 3, -1, 16, 18, 6, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa28_T35[] = { 6, 6, -1, -1, 6, 6, 291, 6, 131, 290, 6, 292, -1, 6, 6, 291, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T36[] = { 6, 6, -1, -1, 6, 6, 145, 6, 6, 239, 6, 6, -1, 6, 6, 145, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T37[] = { 6, 6, -1, -1, 6, 6, 129, 6, 131, 130, 6, 128, -1, 6, 6, 129, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T38[] = { 6, 6, -1, -1, 6, 6, 277, 6, 248, 278, 6, 200, -1, 6, 6, 277, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T39[] = { 6, 6, -1, -1, 6, 6, 157, 6, 6, 158, 6, 6, -1, 6, 6, 157, -1, -1, -1, 6, 80, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T40[] = { 5, 8, -1, -1, 7, 5, 62, -1, 21, 63, 5, 3, -1, 3, 5, 62, -1, -1, -1, 3, -1, -1, -1, 4, 5, 5, -1, -1, 3, -1, 5, 5, -1, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa28_T41[] = { 6, 6, -1, -1, 6, 6, 240, 6, 242, 241, 6, 6, -1, 6, 6, 240, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T42[] = { 5, 8, 6, -1, 7, 5, 120, 6, 122, 121, 5, 122, -1, 122, 5, 120, -1, -1, -1, 122, -1, -1, -1, 123, 124, 19, 6, -1, 122, -1, 16, 18, 6, 122, 122, 122, 122 }; static const ANTLR3_INT32 dfa28_T43[] = { 5, 8, -1, -1, 15, 5, 1, 6, 3, 20, 5, 3, -1, 3, 5, 1, -1, -1, -1, 3, -1, -1, -1, 4, 5, 19, 6, -1, 3, -1, 16, 18, 6, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa28_T44[] = { 179, -1, -1, -1, -1, -1, 179 }; static const ANTLR3_INT32 dfa28_T45[] = { 220, -1, -1, -1, -1, -1, 220 }; static const ANTLR3_INT32 dfa28_T46[] = { 5, 8, -1, -1, 15, 5, 9, 6, 12, 10, 5, 17, -1, 3, 5, 9, -1, -1, -1, 3, -1, -1, -1, 4, 5, 19, 6, -1, 3, -1, 16, 18, 6, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa28_T47[] = { 6, 6, -1, -1, 6, 6, 259, 6, 175, 260, 6, 172, -1, 6, 6, 259, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T48[] = { 6, 6, -1, -1, 6, 6, 268, 6, 194, 269, 6, 191, -1, 6, 6, 268, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T49[] = { 6, 6, -1, -1, 6, 6, 277, 6, 248, 278, 6, 6, -1, 6, 6, 277, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T50[] = { 6, 6, -1, -1, 6, 6, 261, 6, 224, 262, 6, 172, -1, 6, 6, 261, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T51[] = { 61, 53, -1, -1, 52, 59, 54, 6, 56, 55, 61, 56, -1, 56, 61, 54, -1, -1, -1, 56, -1, -1, -1, 57, 61, 60, 6, -1, 56, -1, 58, 61, 6, 56, 56, 56, 56 }; static const ANTLR3_INT32 dfa28_T52[] = { 6, -1, -1, -1, 6, 6, 6, 183, -1, 6, -1, 6, -1, 182, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T53[] = { 6, 6, -1, -1, 6, 6, 217, 6, 6, 287, 6, 6, -1, 6, 6, 217, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T54[] = { 135, -1, -1, -1, -1, -1, 135 }; static const ANTLR3_INT32 dfa28_T55[] = { 184, -1, -1, -1, -1, -1, 184 }; static const ANTLR3_INT32 dfa28_T56[] = { 198, -1, -1, -1, -1, -1, 198 }; static const ANTLR3_INT32 dfa28_T57[] = { 207, -1, -1, -1, -1, -1, 207 }; static const ANTLR3_INT32 dfa28_T58[] = { 238, -1, -1, -1, -1, -1, 238 }; static const ANTLR3_INT32 dfa28_T59[] = { 244, -1, -1, -1, -1, -1, 244 }; static const ANTLR3_INT32 dfa28_T60[] = { 258, -1, -1, -1, -1, -1, 258 }; static const ANTLR3_INT32 dfa28_T61[] = { 282, -1, -1, -1, -1, -1, 282 }; static const ANTLR3_INT32 dfa28_T62[] = { 6, 6, -1, -1, 6, 6, 217, 6, 6, 312, 6, 6, -1, 6, 6, 217, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T63[] = { 6, 6, -1, -1, 6, 6, 270, 6, 242, 271, 6, 191, -1, 6, 6, 270, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T64[] = { 6, 6, -1, -1, 6, 6, 145, 6, 6, 146, 6, 6, -1, 6, 6, 145, -1, -1, -1, 6, 80, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T65[] = { 6, 6, -1, -1, 6, 6, 217, 6, 6, 319, 6, 6, -1, 6, 6, 217, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T66[] = { 6, 6, -1, -1, 6, 6, 78, 6, 6, 267, 6, 6, -1, 6, 6, 78, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T67[] = { 6, 6, -1, -1, 6, 6, 261, 6, 224, 262, 6, 6, -1, 6, 6, 261, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T68[] = { 6, 6, -1, -1, 6, 6, 78, 6, 6, 189, 6, 6, -1, 6, 6, 78, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T69[] = { 212, 161, -1, -1, 6, 216, 208, 6, 210, 209, 215, 210, -1, 210, 213, 208, -1, -1, -1, 210, -1, -1, -1, 211, 214, 6, 6, -1, 210, -1, 6, 6, 6, 210, 210, 210, 210 }; static const ANTLR3_INT32 dfa28_T70[] = { 6, 6, -1, -1, 6, 6, 280, 6, 203, 279, 6, 281, -1, 6, 6, 280, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T71[] = { 6, 6, -1, -1, 6, 6, 310, 6, 203, 309, 6, 311, -1, 6, 6, 310, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T72[] = { 6, 6, -1, -1, 6, 6, 78, 6, 6, 305, 6, 6, -1, 6, 6, 78, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T73[] = { 5, 8, -1, -1, 7, 5, 9, -1, 12, 13, 5, 14, -1, 3, 5, 9, -1, -1, -1, 3, -1, -1, -1, 4, 5, 5, -1, -1, 3, -1, 5, 5, -1, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa28_T74[] = { 6, 6, -1, -1, 6, 6, 206, 6, 203, 204, 6, 205, -1, 6, 6, 206, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T75[] = { 5, 8, -1, -1, 7, 5, 9, -1, 12, 64, 5, 65, -1, 3, 5, 9, -1, -1, -1, 3, -1, -1, -1, 4, 5, 5, -1, -1, 3, -1, 5, 5, -1, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa28_T76[] = { 5, 8, -1, -1, 7, 5, 9, -1, 12, 180, 5, 181, -1, 3, 5, 9, -1, -1, -1, 3, -1, -1, -1, 4, 5, 5, -1, -1, 3, -1, 5, 5, -1, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa28_T77[] = { 6, 6, -1, -1, 6, 6, 201, 6, 203, 202, 6, 200, -1, 6, 6, 201, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T78[] = { 73, 40, -1, -1, 6, 77, 69, 6, 71, 70, 76, 71, -1, 71, 74, 69, -1, -1, -1, 71, -1, -1, -1, 72, 75, 6, 6, -1, 71, -1, 6, 6, 6, 71, 71, 71, 71 }; static const ANTLR3_INT32 dfa28_T79[] = { 6, -1, -1, -1, 6, 6, 6, 230, -1, 6, -1, 6, -1, 229, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T80[] = { 6, 6, -1, -1, 6, 6, 217, 6, 6, 283, 6, 6, -1, 6, 6, 217, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T81[] = { 6, 6, -1, -1, 6, 6, 78, 6, 6, 185, 6, 6, -1, 6, 6, 78, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T82[] = { 6, 6, -1, -1, 6, 6, 270, 6, 242, 271, 6, 6, -1, 6, 6, 270, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T83[] = { 6, 6, -1, -1, 6, 6, 114, 6, 6, 115, 6, 6, -1, 6, 6, 114, -1, -1, -1, 6, 80, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T84[] = { 6, 6, -1, -1, 6, 6, 284, 6, 286, 285, 6, 6, -1, 6, 6, 284, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T85[] = { 6, 6, -1, -1, 6, 6, 173, 6, 175, 174, 6, 172, -1, 6, 6, 173, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T86[] = { 6, 6, -1, -1, 6, 6, 178, 6, 175, 176, 6, 177, -1, 6, 6, 178, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T87[] = { 6, 6, -1, -1, 6, 6, 264, 6, 175, 263, 6, 265, -1, 6, 6, 264, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T88[] = { 6, 6, -1, -1, 6, 6, 186, 6, 188, 187, 6, 6, -1, 6, 6, 186, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T89[] = { 6, 6, -1, -1, 6, 6, 197, 6, 194, 195, 6, 196, -1, 6, 6, 197, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T90[] = { 6, 6, -1, -1, 6, 6, 273, 6, 194, 272, 6, 274, -1, 6, 6, 273, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T91[] = { 6, 6, -1, -1, 6, 6, 303, 6, 175, 302, 6, 304, -1, 6, 6, 303, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T92[] = { 6, 6, -1, -1, 6, 6, 295, 6, 254, 296, 6, 251, -1, 6, 6, 295, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T93[] = { 5, 8, -1, -1, 7, 5, 1, -1, 3, 119, 5, 3, -1, 3, 5, 1, -1, -1, -1, 3, -1, -1, -1, 4, 5, 5, -1, -1, 3, -1, 5, 5, -1, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa28_T94[] = { 6, 6, -1, -1, 6, 6, 192, 6, 194, 193, 6, 191, -1, 6, 6, 192, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T95[] = { 5, 8, -1, -1, 7, 5, 1, -1, 3, 24, 5, 3, -1, 3, 5, 1, -1, -1, -1, 3, -1, -1, -1, 4, 5, 5, -1, -1, 3, -1, 5, 5, -1, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa28_T96[] = { 5, -1, -1, -1, -1, 5, 1, -1, 3, 2, 5, 3, -1, 3, 5, 1, -1, -1, -1, 3, 6, -1, -1, 4, 5, 5, -1, -1, 3, -1, 5, 5, -1, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa28_T97[] = { 5, 8, -1, -1, 7, 5, 1, -1, 3, 228, 5, 3, -1, 3, 5, 1, -1, -1, -1, 3, -1, -1, -1, 4, 5, 5, -1, -1, 3, -1, 5, 5, -1, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa28_T98[] = { 6, 6, -1, -1, 6, 6, 307, 6, 194, 306, 6, 308, -1, 6, 6, 307, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T99[] = { 6, 6, -1, -1, 6, 6, 231, 6, 131, 232, 6, 128, -1, 6, 6, 231, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T100[] = { 61, 53, -1, -1, 52, 59, 54, -1, 56, 55, 61, 56, -1, 56, 61, 54, -1, -1, -1, 56, -1, -1, -1, 57, 61, 60, -1, -1, 56, -1, 58, 61, -1, 56, 56, 56, 56 }; static const ANTLR3_INT32 dfa28_T101[] = { 6, -1, -1, -1, 6, 6, 6, 68, -1, 6, -1, 6, 6, 67, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T102[] = { 5, 8, -1, -1, 15, 5, 9, 6, 12, 226, 5, 227, -1, 3, 5, 9, -1, -1, -1, 3, -1, -1, -1, 4, 5, 19, 6, -1, 3, -1, 16, 18, 6, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa28_T103[] = { 6, 6, -1, -1, 6, 6, 157, 6, 6, 249, 6, 6, -1, 6, 6, 157, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T104[] = { 5, 8, -1, -1, 15, 5, 9, 6, 12, 266, 5, 11, -1, 3, 5, 9, -1, -1, -1, 3, -1, -1, -1, 4, 5, 19, 6, -1, 3, -1, 16, 18, 6, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa28_T105[] = { 5, 8, -1, -1, 15, 5, 9, 6, 12, 22, 5, 23, -1, 3, 5, 9, -1, -1, -1, 3, -1, -1, -1, 4, 5, 19, 6, -1, 3, -1, 16, 18, 6, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa28_T106[] = { 6, 6, -1, -1, 6, 6, 217, 6, 6, 218, 6, 6, -1, 6, 6, 217, -1, -1, -1, 6, 80, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T107[] = { 5, 8, -1, -1, 15, 5, 9, 6, 12, 117, 5, 118, -1, 3, 5, 9, -1, -1, -1, 3, -1, -1, -1, 4, 5, 19, 6, -1, 3, -1, 16, 18, 6, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa28_T108[] = { 6, 6, -1, -1, 6, 6, 157, 6, 6, 294, 6, 6, -1, 6, 6, 157, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T109[] = { 5, 8, -1, -1, 15, 5, 9, 6, 12, 289, 5, 17, -1, 3, 5, 9, -1, -1, -1, 3, -1, -1, -1, 4, 5, 19, 6, -1, 3, -1, 16, 18, 6, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa28_T110[] = { 6, 6, -1, -1, 6, 6, 157, 6, 6, 315, 6, 6, -1, 6, 6, 157, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T111[] = { 5, 8, -1, -1, 7, 5, 1, -1, 3, 20, 5, 3, -1, 3, 5, 1, -1, -1, -1, 3, -1, -1, -1, 4, 5, 5, -1, -1, 3, -1, 5, 5, -1, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa28_T112[] = { 5, 8, -1, -1, 15, 5, 9, 6, 12, 10, 5, 23, -1, 3, 5, 9, -1, -1, -1, 3, -1, -1, -1, 4, 5, 19, 6, -1, 3, -1, 16, 18, 6, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa28_T113[] = { 5, 8, -1, -1, 15, 5, 9, 6, 12, 10, 5, 118, -1, 3, 5, 9, -1, -1, -1, 3, -1, -1, -1, 4, 5, 19, 6, -1, 3, -1, 16, 18, 6, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa28_T114[] = { 6, 6, -1, -1, 6, 6, 78, 6, 6, 79, 6, 6, -1, 6, 6, 78, -1, -1, -1, 6, 80, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T115[] = { 29, 8, -1, -1, -1, 33, 25, -1, 27, 26, 32, 27, -1, 27, 30, 25, -1, -1, -1, 27, -1, -1, -1, 28, 31, -1, -1, -1, 27, -1, -1, -1, -1, 27, 27, 27, 27 }; static const ANTLR3_INT32 dfa28_T116[] = { 29, 8, -1, -1, -1, 33, 25, 6, 27, 26, 32, 27, -1, 27, 30, 25, -1, -1, -1, 27, -1, -1, -1, 28, 31, 6, 6, -1, 27, -1, 6, 6, 6, 27, 27, 27, 27 }; static const ANTLR3_INT32 dfa28_T117[] = { 5, 8, -1, -1, 15, 5, 9, 6, 12, 10, 5, 227, -1, 3, 5, 9, -1, -1, -1, 3, -1, -1, -1, 4, 5, 19, 6, -1, 3, -1, 16, 18, 6, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa28_T118[] = { 5, 8, -1, -1, 7, 5, 9, -1, 21, 10, 5, 3, -1, 3, 5, 9, -1, -1, -1, 3, -1, -1, -1, 4, 5, 5, -1, -1, 3, -1, 5, 5, -1, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa28_T119[] = { 6, 6, -1, -1, 6, 6, 114, 6, 6, 288, 6, 6, -1, 6, 6, 114, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T120[] = { 6, 6, -1, -1, 6, 6, 114, 6, 6, 225, 6, 6, -1, 6, 6, 114, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T121[] = { 6, 6, -1, -1, 6, 6, 114, 6, 6, 313, 6, 6, -1, 6, 6, 114, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T122[] = { 6, 6, -1, -1, 6, 6, 297, 6, 286, 298, 6, 6, -1, 6, 6, 297, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T123[] = { 6, 6, -1, -1, 6, 6, 157, 6, 6, 245, 6, 6, -1, 6, 6, 157, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T124[] = { 6, 6, -1, -1, 6, 6, 246, 6, 248, 247, 6, 6, -1, 6, 6, 246, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T125[] = { 6, 6, -1, -1, 6, 6, 233, 6, 188, 234, 6, 6, -1, 6, 6, 233, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T126[] = { 5, 8, 6, -1, 7, 5, 34, 6, 36, 35, 5, 36, -1, 36, 5, 34, -1, -1, -1, 36, -1, -1, -1, 37, 38, 5, -1, -1, 36, -1, 5, 5, 6, 36, 36, 36, 36 }; static const ANTLR3_INT32 dfa28_T127[] = { 6, 6, -1, -1, 6, 6, 145, 6, 6, 293, 6, 6, -1, 6, 6, 145, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T128[] = { 6, 6, -1, -1, 6, 6, 145, 6, 6, 314, 6, 6, -1, 6, 6, 145, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T129[] = { 5, 8, 6, -1, 7, 5, 120, 6, 122, 121, 5, 122, 6, 122, 5, 120, -1, -1, -1, 122, -1, -1, -1, 123, 124, 5, -1, -1, 122, -1, 5, 5, 6, 122, 122, 122, 122 }; static const ANTLR3_INT32 dfa28_T130[] = { 6, 6, -1, -1, 6, 6, 145, 6, 6, 243, 6, 6, -1, 6, 6, 145, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa28_T131[] = { 6, 6, -1, -1, 6, 6, 114, 6, 6, 221, 6, 6, -1, 6, 6, 114, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, -1, 6, -1, 6, 6, 6, 6, 6, 6, 6 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa28_transitions[] = { dfa28_T96, dfa28_T18, dfa28_T73, NULL, NULL, NULL, NULL, NULL, NULL, dfa28_T46, dfa28_T46, dfa28_T111, dfa28_T118, dfa28_T105, dfa28_T95, dfa28_T115, dfa28_T126, dfa28_T43, dfa28_T7, dfa28_T100, dfa28_T18, dfa28_T40, dfa28_T112, dfa28_T10, dfa28_T75, NULL, dfa28_T116, NULL, NULL, NULL, NULL, NULL, NULL, NULL, dfa28_T2, dfa28_T2, dfa28_T2, dfa28_T101, dfa28_T2, dfa28_T78, dfa28_T114, dfa28_T7, dfa28_T7, dfa28_T7, dfa28_T22, dfa28_T7, dfa28_T7, dfa28_T7, dfa28_T7, dfa28_T7, dfa28_T4, dfa28_T6, dfa28_T11, dfa28_T83, dfa28_T51, dfa28_T51, dfa28_T51, dfa28_T12, dfa28_T51, dfa28_T51, dfa28_T51, dfa28_T51, dfa28_T20, dfa28_T20, dfa28_T107, dfa28_T93, dfa28_T129, dfa28_T3, dfa28_T3, dfa28_T78, dfa28_T78, dfa28_T78, dfa28_T21, dfa28_T78, dfa28_T78, dfa28_T78, dfa28_T78, dfa28_T78, dfa28_T37, dfa28_T15, NULL, dfa28_T54, dfa28_T30, dfa28_T64, dfa28_T4, dfa28_T4, dfa28_T4, dfa28_T23, dfa28_T4, dfa28_T4, dfa28_T4, dfa28_T4, dfa28_T4, dfa28_T29, dfa28_T39, dfa28_T6, dfa28_T6, dfa28_T6, dfa28_T24, dfa28_T6, dfa28_T6, dfa28_T6, dfa28_T6, dfa28_T6, dfa28_T1, dfa28_T11, dfa28_T11, dfa28_T11, dfa28_T13, dfa28_T11, dfa28_T11, dfa28_T11, dfa28_T11, dfa28_T11, dfa28_T85, dfa28_T86, dfa28_T44, dfa28_T113, dfa28_T32, dfa28_T76, dfa28_T42, dfa28_T42, dfa28_T42, dfa28_T52, dfa28_T42, dfa28_T2, dfa28_T2, dfa28_T55, dfa28_T81, dfa28_T14, dfa28_T14, dfa28_T88, dfa28_T14, dfa28_T68, dfa28_T14, dfa28_T7, dfa28_T30, dfa28_T30, dfa28_T30, dfa28_T25, dfa28_T30, dfa28_T30, dfa28_T30, dfa28_T30, dfa28_T30, dfa28_T94, dfa28_T89, dfa28_T56, dfa28_T29, dfa28_T29, dfa28_T29, dfa28_T26, dfa28_T29, dfa28_T29, dfa28_T29, dfa28_T29, dfa28_T29, dfa28_T77, dfa28_T74, dfa28_T57, dfa28_T69, dfa28_T106, dfa28_T1, dfa28_T1, dfa28_T1, dfa28_T28, dfa28_T1, dfa28_T1, dfa28_T1, dfa28_T1, dfa28_T1, dfa28_T45, dfa28_T131, dfa28_T14, dfa28_T14, dfa28_T17, dfa28_T14, dfa28_T120, dfa28_T14, dfa28_T51, dfa28_T102, dfa28_T97, dfa28_T79, dfa28_T79, dfa28_T78, dfa28_T99, dfa28_T14, dfa28_T14, dfa28_T125, dfa28_T33, dfa28_T58, dfa28_T36, dfa28_T14, dfa28_T14, dfa28_T41, dfa28_T14, dfa28_T130, dfa28_T14, dfa28_T4, dfa28_T59, dfa28_T123, dfa28_T14, dfa28_T14, dfa28_T124, dfa28_T14, dfa28_T103, dfa28_T14, dfa28_T6, dfa28_T69, dfa28_T69, dfa28_T69, dfa28_T27, dfa28_T69, dfa28_T69, dfa28_T69, dfa28_T69, dfa28_T69, dfa28_T16, dfa28_T5, dfa28_T60, dfa28_T11, dfa28_T47, dfa28_T14, dfa28_T14, dfa28_T67, dfa28_T87, dfa28_T117, dfa28_T34, dfa28_T104, dfa28_T42, dfa28_T42, dfa28_T14, dfa28_T14, dfa28_T31, dfa28_T31, dfa28_T14, dfa28_T14, dfa28_T66, dfa28_T30, dfa28_T48, dfa28_T14, dfa28_T14, dfa28_T82, dfa28_T90, dfa28_T29, dfa28_T19, dfa28_T14, dfa28_T14, dfa28_T49, dfa28_T70, dfa28_T61, dfa28_T80, dfa28_T14, dfa28_T14, dfa28_T84, dfa28_T14, dfa28_T53, dfa28_T14, dfa28_T1, dfa28_T14, dfa28_T14, dfa28_T50, dfa28_T50, dfa28_T14, dfa28_T14, dfa28_T119, dfa28_T109, dfa28_T35, dfa28_T14, dfa28_T14, dfa28_T63, dfa28_T63, dfa28_T14, dfa28_T14, dfa28_T127, dfa28_T14, dfa28_T14, dfa28_T38, dfa28_T38, dfa28_T14, dfa28_T14, dfa28_T108, dfa28_T69, dfa28_T92, dfa28_T14, dfa28_T14, dfa28_T122, dfa28_T9, dfa28_T91, dfa28_T46, dfa28_T14, dfa28_T14, dfa28_T72, dfa28_T98, dfa28_T71, dfa28_T14, dfa28_T14, dfa28_T8, dfa28_T8, dfa28_T14, dfa28_T14, dfa28_T62, dfa28_T14, dfa28_T14, dfa28_T121, dfa28_T14, dfa28_T14, dfa28_T14, dfa28_T128, dfa28_T14, dfa28_T14, dfa28_T110, dfa28_T0, dfa28_T14, dfa28_T14, dfa28_T14, dfa28_T14, dfa28_T14, dfa28_T65, dfa28_T14 }; static ANTLR3_INT32 dfa28_sst(pbelle_sip_messageParser ctx, pANTLR3_BASE_RECOGNIZER recognizer, pANTLR3_INT_STREAM is, pANTLR3_CYCLIC_DFA dfa, ANTLR3_INT32 s) { ANTLR3_INT32 _s; _s = s; switch (s) { case 0: { ANTLR3_UINT32 LA28_36; ANTLR3_MARKER index28_36; LA28_36 = LA(1); index28_36 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) && (LA28_36 == COLON) ) { s = 7; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_36 == AT) ) { s = 8; } else if ( (LA28_36 == COMMON_CHAR || LA28_36 == HEX_CHAR) ) { s = 34; } else if ( (LA28_36 == DIGIT) ) { s = 35; } else if ( (LA28_36 == DASH || LA28_36 == DOT || LA28_36 == EMARK || LA28_36 == LPAREN || LA28_36 == RPAREN || ((LA28_36 >= SQUOTE) && (LA28_36 <= USCORE))) ) { s = 36; } else if ( (LA28_36 == PERCENT) ) { s = 37; } else if ( (LA28_36 == EQUAL) ) { s = 66; } else if ( (LA28_36 == EOF || LA28_36 == BQUOTE || LA28_36 == CRLF || LA28_36 == RAQUOT || LA28_36 == SP) ) { s = 6; } else if ( (LA28_36 == SLASH) ) { s = 18; } else if ( (LA28_36 == QMARK) ) { s = 19; } else if ( (LA28_36 == SEMI) ) { s = 16; } else if ( (LA28_36 == PLUS) ) { s = 38; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_36 == AND || LA28_36 == COMMA || LA28_36 == DOLLARD) ) { s = 5; } SEEK(index28_36); if ( s>=0 ) { return s; } } break; case 1: { ANTLR3_UINT32 LA28_23; ANTLR3_MARKER index28_23; LA28_23 = LA(1); index28_23 = INDEX(); REWINDLAST(); s = -1; if ( (LA28_23 == DIGIT) ) { s = 24; } else if ( (LA28_23 == COLON) ) { s = 15; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_23 == AT) ) { s = 8; } else if ( (LA28_23 == COMMON_CHAR || LA28_23 == HEX_CHAR) ) { s = 1; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_23 == DASH || LA28_23 == DOT || LA28_23 == EMARK || LA28_23 == LPAREN || LA28_23 == RPAREN || ((LA28_23 >= SQUOTE) && (LA28_23 <= USCORE))) ) { s = 3; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_23 == PERCENT) ) { s = 4; } else if ( (LA28_23 == SEMI) ) { s = 16; } else if ( (LA28_23 == EOF || LA28_23 == CRLF || LA28_23 == RAQUOT || LA28_23 == SP) ) { s = 6; } else if ( (LA28_23 == SLASH) ) { s = 18; } else if ( (LA28_23 == QMARK) ) { s = 19; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_23 == AND || LA28_23 == COMMA || LA28_23 == DOLLARD || LA28_23 == EQUAL || LA28_23 == PLUS) ) { s = 5; } SEEK(index28_23); if ( s>=0 ) { return s; } } break; case 2: { ANTLR3_UINT32 LA28_290; ANTLR3_MARKER index28_290; LA28_290 = LA(1); index28_290 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) ) { s = 80; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index28_290); if ( s>=0 ) { return s; } } break; case 3: { ANTLR3_UINT32 LA28_305; ANTLR3_MARKER index28_305; LA28_305 = LA(1); index28_305 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) ) { s = 80; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index28_305); if ( s>=0 ) { return s; } } break; case 4: { ANTLR3_UINT32 LA28_235; ANTLR3_MARKER index28_235; LA28_235 = LA(1); index28_235 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) ) { s = 80; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index28_235); if ( s>=0 ) { return s; } } break; case 5: { ANTLR3_UINT32 LA28_20; ANTLR3_MARKER index28_20; LA28_20 = LA(1); index28_20 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) && (LA28_20 == COLON) ) { s = 7; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_20 == AT) ) { s = 8; } else if ( (LA28_20 == COMMON_CHAR || LA28_20 == HEX_CHAR) ) { s = 9; } else if ( (LA28_20 == DIGIT) ) { s = 10; } else if ( (LA28_20 == DASH) ) { s = 12; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_20 == PERCENT) ) { s = 4; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_20 == AND || LA28_20 == COMMA || LA28_20 == DOLLARD || LA28_20 == EQUAL || ((LA28_20 >= PLUS) && (LA28_20 <= QMARK)) || ((LA28_20 >= SEMI) && (LA28_20 <= SLASH))) ) { s = 5; } else if ( (LA28_20 == DOT) ) { s = 11; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_20 == EMARK || LA28_20 == LPAREN || LA28_20 == RPAREN || ((LA28_20 >= SQUOTE) && (LA28_20 <= USCORE))) ) { s = 3; } SEEK(index28_20); if ( s>=0 ) { return s; } } break; case 6: { ANTLR3_UINT32 LA28_132; ANTLR3_MARKER index28_132; LA28_132 = LA(1); index28_132 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) ) { s = 80; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index28_132); if ( s>=0 ) { return s; } } break; case 7: { ANTLR3_UINT32 LA28_63; ANTLR3_MARKER index28_63; LA28_63 = LA(1); index28_63 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) && (LA28_63 == COLON) ) { s = 7; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_63 == AT) ) { s = 8; } else if ( (LA28_63 == COMMON_CHAR || LA28_63 == HEX_CHAR) ) { s = 62; } else if ( (LA28_63 == DIGIT) ) { s = 63; } else if ( (LA28_63 == DOT) ) { s = 11; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_63 == PERCENT) ) { s = 4; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_63 == AND || LA28_63 == COMMA || LA28_63 == DOLLARD || LA28_63 == EQUAL || ((LA28_63 >= PLUS) && (LA28_63 <= QMARK)) || ((LA28_63 >= SEMI) && (LA28_63 <= SLASH))) ) { s = 5; } else if ( (LA28_63 == DASH) ) { s = 21; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_63 == EMARK || LA28_63 == LPAREN || LA28_63 == RPAREN || ((LA28_63 >= SQUOTE) && (LA28_63 <= USCORE))) ) { s = 3; } SEEK(index28_63); if ( s>=0 ) { return s; } } break; case 8: { ANTLR3_UINT32 LA28_118; ANTLR3_MARKER index28_118; LA28_118 = LA(1); index28_118 = INDEX(); REWINDLAST(); s = -1; if ( (LA28_118 == DIGIT) ) { s = 119; } else if ( (LA28_118 == COLON) ) { s = 15; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_118 == AT) ) { s = 8; } else if ( (LA28_118 == COMMON_CHAR || LA28_118 == HEX_CHAR) ) { s = 1; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_118 == DASH || LA28_118 == DOT || LA28_118 == EMARK || LA28_118 == LPAREN || LA28_118 == RPAREN || ((LA28_118 >= SQUOTE) && (LA28_118 <= USCORE))) ) { s = 3; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_118 == PERCENT) ) { s = 4; } else if ( (LA28_118 == SEMI) ) { s = 16; } else if ( (LA28_118 == EOF || LA28_118 == CRLF || LA28_118 == RAQUOT || LA28_118 == SP) ) { s = 6; } else if ( (LA28_118 == SLASH) ) { s = 18; } else if ( (LA28_118 == QMARK) ) { s = 19; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_118 == AND || LA28_118 == COMMA || LA28_118 == DOLLARD || LA28_118 == EQUAL || LA28_118 == PLUS) ) { s = 5; } SEEK(index28_118); if ( s>=0 ) { return s; } } break; case 9: { ANTLR3_UINT32 LA28_227; ANTLR3_MARKER index28_227; LA28_227 = LA(1); index28_227 = INDEX(); REWINDLAST(); s = -1; if ( (LA28_227 == DIGIT) ) { s = 228; } else if ( (LA28_227 == COLON) ) { s = 15; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_227 == AT) ) { s = 8; } else if ( (LA28_227 == COMMON_CHAR || LA28_227 == HEX_CHAR) ) { s = 1; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_227 == DASH || LA28_227 == DOT || LA28_227 == EMARK || LA28_227 == LPAREN || LA28_227 == RPAREN || ((LA28_227 >= SQUOTE) && (LA28_227 <= USCORE))) ) { s = 3; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_227 == PERCENT) ) { s = 4; } else if ( (LA28_227 == SEMI) ) { s = 16; } else if ( (LA28_227 == EOF || LA28_227 == CRLF || LA28_227 == RAQUOT || LA28_227 == SP) ) { s = 6; } else if ( (LA28_227 == SLASH) ) { s = 18; } else if ( (LA28_227 == QMARK) ) { s = 19; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_227 == AND || LA28_227 == COMMA || LA28_227 == DOLLARD || LA28_227 == EQUAL || LA28_227 == PLUS) ) { s = 5; } SEEK(index28_227); if ( s>=0 ) { return s; } } break; case 10: { ANTLR3_UINT32 LA28_174; ANTLR3_MARKER index28_174; LA28_174 = LA(1); index28_174 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) ) { s = 80; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index28_174); if ( s>=0 ) { return s; } } break; case 11: { ANTLR3_UINT32 LA28_223; ANTLR3_MARKER index28_223; LA28_223 = LA(1); index28_223 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) ) { s = 80; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index28_223); if ( s>=0 ) { return s; } } break; case 12: { ANTLR3_UINT32 LA28_260; ANTLR3_MARKER index28_260; LA28_260 = LA(1); index28_260 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) ) { s = 80; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index28_260); if ( s>=0 ) { return s; } } break; case 13: { ANTLR3_UINT32 LA28_193; ANTLR3_MARKER index28_193; LA28_193 = LA(1); index28_193 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) ) { s = 80; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index28_193); if ( s>=0 ) { return s; } } break; case 14: { ANTLR3_UINT32 LA28_241; ANTLR3_MARKER index28_241; LA28_241 = LA(1); index28_241 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) ) { s = 80; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index28_241); if ( s>=0 ) { return s; } } break; case 15: { ANTLR3_UINT32 LA28_269; ANTLR3_MARKER index28_269; LA28_269 = LA(1); index28_269 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) ) { s = 80; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index28_269); if ( s>=0 ) { return s; } } break; case 16: { ANTLR3_UINT32 LA28_94; ANTLR3_MARKER index28_94; LA28_94 = LA(1); index28_94 = INDEX(); REWINDLAST(); s = -1; if ( (LA28_94 == COMMON_CHAR || LA28_94 == HEX_CHAR) ) { s = 157; } else if ( (LA28_94 == DIGIT) ) { s = 158; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_94 == LSBRAQUET) ) { s = 80; } else if ( (LA28_94 == EOF || ((LA28_94 >= AND) && (LA28_94 <= AT)) || ((LA28_94 >= COLON) && (LA28_94 <= COMMA)) || ((LA28_94 >= CRLF) && (LA28_94 <= DASH)) || ((LA28_94 >= DOLLARD) && (LA28_94 <= DOT)) || ((LA28_94 >= EMARK) && (LA28_94 <= EQUAL)) || LA28_94 == LPAREN || ((LA28_94 >= PERCENT) && (LA28_94 <= RAQUOT)) || LA28_94 == RPAREN || ((LA28_94 >= SEMI) && (LA28_94 <= USCORE))) ) { s = 6; } SEEK(index28_94); if ( s>=0 ) { return s; } } break; case 17: { ANTLR3_UINT32 LA28_21; ANTLR3_MARKER index28_21; LA28_21 = LA(1); index28_21 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) && (LA28_21 == COLON) ) { s = 7; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_21 == AT) ) { s = 8; } else if ( (LA28_21 == COMMON_CHAR || LA28_21 == HEX_CHAR) ) { s = 62; } else if ( (LA28_21 == DIGIT) ) { s = 63; } else if ( (LA28_21 == DASH) ) { s = 21; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_21 == PERCENT) ) { s = 4; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_21 == AND || LA28_21 == COMMA || LA28_21 == DOLLARD || LA28_21 == EQUAL || ((LA28_21 >= PLUS) && (LA28_21 <= QMARK)) || ((LA28_21 >= SEMI) && (LA28_21 <= SLASH))) ) { s = 5; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_21 == DOT || LA28_21 == EMARK || LA28_21 == LPAREN || LA28_21 == RPAREN || ((LA28_21 >= SQUOTE) && (LA28_21 <= USCORE))) ) { s = 3; } SEEK(index28_21); if ( s>=0 ) { return s; } } break; case 18: { ANTLR3_UINT32 LA28_230; ANTLR3_MARKER index28_230; LA28_230 = LA(1); index28_230 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) && (LA28_230 == COLON) ) { s = 7; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_230 == AT) ) { s = 8; } else if ( (LA28_230 == COMMON_CHAR || LA28_230 == HEX_CHAR) ) { s = 120; } else if ( (LA28_230 == DIGIT) ) { s = 121; } else if ( (LA28_230 == DASH || LA28_230 == DOT || LA28_230 == EMARK || LA28_230 == LPAREN || LA28_230 == RPAREN || ((LA28_230 >= SQUOTE) && (LA28_230 <= USCORE))) ) { s = 122; } else if ( (LA28_230 == PERCENT) ) { s = 123; } else if ( (LA28_230 == SLASH) ) { s = 18; } else if ( (LA28_230 == QMARK) ) { s = 19; } else if ( (LA28_230 == SEMI) ) { s = 16; } else if ( (LA28_230 == EOF || LA28_230 == BQUOTE || LA28_230 == CRLF || LA28_230 == RAQUOT || LA28_230 == SP) ) { s = 6; } else if ( (LA28_230 == PLUS) ) { s = 124; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_230 == AND || LA28_230 == COMMA || LA28_230 == DOLLARD || LA28_230 == EQUAL) ) { s = 5; } SEEK(index28_230); if ( s>=0 ) { return s; } } break; case 19: { ANTLR3_UINT32 LA28_17; ANTLR3_MARKER index28_17; LA28_17 = LA(1); index28_17 = INDEX(); REWINDLAST(); s = -1; if ( (LA28_17 == COLON) ) { s = 15; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_17 == AT) ) { s = 8; } else if ( (LA28_17 == COMMON_CHAR || LA28_17 == HEX_CHAR) ) { s = 1; } else if ( (LA28_17 == DIGIT) ) { s = 20; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_17 == DASH || LA28_17 == DOT || LA28_17 == EMARK || LA28_17 == LPAREN || LA28_17 == RPAREN || ((LA28_17 >= SQUOTE) && (LA28_17 <= USCORE))) ) { s = 3; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_17 == PERCENT) ) { s = 4; } else if ( (LA28_17 == SEMI) ) { s = 16; } else if ( (LA28_17 == EOF || LA28_17 == CRLF || LA28_17 == RAQUOT || LA28_17 == SP) ) { s = 6; } else if ( (LA28_17 == SLASH) ) { s = 18; } else if ( (LA28_17 == QMARK) ) { s = 19; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_17 == AND || LA28_17 == COMMA || LA28_17 == DOLLARD || LA28_17 == EQUAL || LA28_17 == PLUS) ) { s = 5; } SEEK(index28_17); if ( s>=0 ) { return s; } } break; case 20: { ANTLR3_UINT32 LA28_10; ANTLR3_MARKER index28_10; LA28_10 = LA(1); index28_10 = INDEX(); REWINDLAST(); s = -1; if ( (LA28_10 == COLON) ) { s = 15; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_10 == AT) ) { s = 8; } else if ( (LA28_10 == COMMON_CHAR || LA28_10 == HEX_CHAR) ) { s = 9; } else if ( (LA28_10 == DIGIT) ) { s = 10; } else if ( (LA28_10 == DASH) ) { s = 12; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_10 == PERCENT) ) { s = 4; } else if ( (LA28_10 == SEMI) ) { s = 16; } else if ( (LA28_10 == DOT) ) { s = 17; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_10 == EMARK || LA28_10 == LPAREN || LA28_10 == RPAREN || ((LA28_10 >= SQUOTE) && (LA28_10 <= USCORE))) ) { s = 3; } else if ( (LA28_10 == EOF || LA28_10 == CRLF || LA28_10 == RAQUOT || LA28_10 == SP) ) { s = 6; } else if ( (LA28_10 == SLASH) ) { s = 18; } else if ( (LA28_10 == QMARK) ) { s = 19; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_10 == AND || LA28_10 == COMMA || LA28_10 == DOLLARD || LA28_10 == EQUAL || LA28_10 == PLUS) ) { s = 5; } SEEK(index28_10); if ( s>=0 ) { return s; } } break; case 21: { ANTLR3_UINT32 LA28_229; ANTLR3_MARKER index28_229; LA28_229 = LA(1); index28_229 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) && (LA28_229 == COLON) ) { s = 7; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_229 == AT) ) { s = 8; } else if ( (LA28_229 == COMMON_CHAR || LA28_229 == HEX_CHAR) ) { s = 120; } else if ( (LA28_229 == DIGIT) ) { s = 121; } else if ( (LA28_229 == DASH || LA28_229 == DOT || LA28_229 == EMARK || LA28_229 == LPAREN || LA28_229 == RPAREN || ((LA28_229 >= SQUOTE) && (LA28_229 <= USCORE))) ) { s = 122; } else if ( (LA28_229 == PERCENT) ) { s = 123; } else if ( (LA28_229 == SLASH) ) { s = 18; } else if ( (LA28_229 == QMARK) ) { s = 19; } else if ( (LA28_229 == SEMI) ) { s = 16; } else if ( (LA28_229 == EOF || LA28_229 == BQUOTE || LA28_229 == CRLF || LA28_229 == RAQUOT || LA28_229 == SP) ) { s = 6; } else if ( (LA28_229 == PLUS) ) { s = 124; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_229 == AND || LA28_229 == COMMA || LA28_229 == DOLLARD || LA28_229 == EQUAL) ) { s = 5; } SEEK(index28_229); if ( s>=0 ) { return s; } } break; case 22: { ANTLR3_UINT32 LA28_62; ANTLR3_MARKER index28_62; LA28_62 = LA(1); index28_62 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) && (LA28_62 == COLON) ) { s = 7; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_62 == AT) ) { s = 8; } else if ( (LA28_62 == COMMON_CHAR || LA28_62 == HEX_CHAR) ) { s = 62; } else if ( (LA28_62 == DIGIT) ) { s = 63; } else if ( (LA28_62 == DOT) ) { s = 11; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_62 == PERCENT) ) { s = 4; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_62 == AND || LA28_62 == COMMA || LA28_62 == DOLLARD || LA28_62 == EQUAL || ((LA28_62 >= PLUS) && (LA28_62 <= QMARK)) || ((LA28_62 >= SEMI) && (LA28_62 <= SLASH))) ) { s = 5; } else if ( (LA28_62 == DASH) ) { s = 21; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_62 == EMARK || LA28_62 == LPAREN || LA28_62 == RPAREN || ((LA28_62 >= SQUOTE) && (LA28_62 <= USCORE))) ) { s = 3; } SEEK(index28_62); if ( s>=0 ) { return s; } } break; case 23: { ANTLR3_UINT32 LA28_201; ANTLR3_MARKER index28_201; LA28_201 = LA(1); index28_201 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) ) { s = 80; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index28_201); if ( s>=0 ) { return s; } } break; case 24: { ANTLR3_UINT32 LA28_206; ANTLR3_MARKER index28_206; LA28_206 = LA(1); index28_206 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) ) { s = 80; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index28_206); if ( s>=0 ) { return s; } } break; case 25: { ANTLR3_UINT32 LA28_246; ANTLR3_MARKER index28_246; LA28_246 = LA(1); index28_246 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) ) { s = 80; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index28_246); if ( s>=0 ) { return s; } } break; case 26: { ANTLR3_UINT32 LA28_275; ANTLR3_MARKER index28_275; LA28_275 = LA(1); index28_275 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) ) { s = 80; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index28_275); if ( s>=0 ) { return s; } } break; case 27: { ANTLR3_UINT32 LA28_280; ANTLR3_MARKER index28_280; LA28_280 = LA(1); index28_280 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) ) { s = 80; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index28_280); if ( s>=0 ) { return s; } } break; case 28: { ANTLR3_UINT32 LA28_310; ANTLR3_MARKER index28_310; LA28_310 = LA(1); index28_310 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) ) { s = 80; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index28_310); if ( s>=0 ) { return s; } } break; case 29: { ANTLR3_UINT32 LA28_83; ANTLR3_MARKER index28_83; LA28_83 = LA(1); index28_83 = INDEX(); REWINDLAST(); s = -1; if ( (LA28_83 == COMMON_CHAR || LA28_83 == HEX_CHAR) ) { s = 145; } else if ( (LA28_83 == DIGIT) ) { s = 146; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_83 == LSBRAQUET) ) { s = 80; } else if ( (LA28_83 == EOF || ((LA28_83 >= AND) && (LA28_83 <= AT)) || ((LA28_83 >= COLON) && (LA28_83 <= COMMA)) || ((LA28_83 >= CRLF) && (LA28_83 <= DASH)) || ((LA28_83 >= DOLLARD) && (LA28_83 <= DOT)) || ((LA28_83 >= EMARK) && (LA28_83 <= EQUAL)) || LA28_83 == LPAREN || ((LA28_83 >= PERCENT) && (LA28_83 <= RAQUOT)) || LA28_83 == RPAREN || ((LA28_83 >= SEMI) && (LA28_83 <= USCORE))) ) { s = 6; } SEEK(index28_83); if ( s>=0 ) { return s; } } break; case 30: { ANTLR3_UINT32 LA28_309; ANTLR3_MARKER index28_309; LA28_309 = LA(1); index28_309 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) ) { s = 80; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index28_309); if ( s>=0 ) { return s; } } break; case 31: { ANTLR3_UINT32 LA28_1; ANTLR3_MARKER index28_1; LA28_1 = LA(1); index28_1 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) && (LA28_1 == COLON) ) { s = 7; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_1 == AT) ) { s = 8; } else if ( (LA28_1 == COMMON_CHAR || LA28_1 == HEX_CHAR) ) { s = 9; } else if ( (LA28_1 == DIGIT) ) { s = 10; } else if ( (LA28_1 == DOT) ) { s = 11; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_1 == PERCENT) ) { s = 4; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_1 == AND || LA28_1 == COMMA || LA28_1 == DOLLARD || LA28_1 == EQUAL || ((LA28_1 >= PLUS) && (LA28_1 <= QMARK)) || ((LA28_1 >= SEMI) && (LA28_1 <= SLASH))) ) { s = 5; } else if ( (LA28_1 == DASH) ) { s = 12; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_1 == EMARK || LA28_1 == LPAREN || LA28_1 == RPAREN || ((LA28_1 >= SQUOTE) && (LA28_1 <= USCORE))) ) { s = 3; } SEEK(index28_1); if ( s>=0 ) { return s; } } break; case 32: { ANTLR3_UINT32 LA28_315; ANTLR3_MARKER index28_315; LA28_315 = LA(1); index28_315 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) ) { s = 80; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index28_315); if ( s>=0 ) { return s; } } break; case 33: { ANTLR3_UINT32 LA28_279; ANTLR3_MARKER index28_279; LA28_279 = LA(1); index28_279 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) ) { s = 80; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index28_279); if ( s>=0 ) { return s; } } break; case 34: { ANTLR3_UINT32 LA28_204; ANTLR3_MARKER index28_204; LA28_204 = LA(1); index28_204 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) ) { s = 80; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index28_204); if ( s>=0 ) { return s; } } break; case 35: { ANTLR3_UINT32 LA28_121; ANTLR3_MARKER index28_121; LA28_121 = LA(1); index28_121 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) && (LA28_121 == COLON) ) { s = 7; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_121 == AT) ) { s = 8; } else if ( (LA28_121 == COMMON_CHAR || LA28_121 == HEX_CHAR) ) { s = 120; } else if ( (LA28_121 == DIGIT) ) { s = 121; } else if ( (LA28_121 == DASH || LA28_121 == DOT || LA28_121 == EMARK || LA28_121 == LPAREN || LA28_121 == RPAREN || ((LA28_121 >= SQUOTE) && (LA28_121 <= USCORE))) ) { s = 122; } else if ( (LA28_121 == PERCENT) ) { s = 123; } else if ( (LA28_121 == SLASH) ) { s = 18; } else if ( (LA28_121 == QMARK) ) { s = 19; } else if ( (LA28_121 == SEMI) ) { s = 16; } else if ( (LA28_121 == EOF || LA28_121 == BQUOTE || LA28_121 == CRLF || LA28_121 == RAQUOT || LA28_121 == SP) ) { s = 6; } else if ( (LA28_121 == PLUS) ) { s = 124; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_121 == AND || LA28_121 == COMMA || LA28_121 == DOLLARD || LA28_121 == EQUAL) ) { s = 5; } SEEK(index28_121); if ( s>=0 ) { return s; } } break; case 36: { ANTLR3_UINT32 LA28_2; ANTLR3_MARKER index28_2; LA28_2 = LA(1); index28_2 = INDEX(); REWINDLAST(); s = -1; if ( (LA28_2 == DIGIT) ) { s = 13; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_2 == COLON) ) { s = 7; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_2 == AT) ) { s = 8; } else if ( (LA28_2 == COMMON_CHAR || LA28_2 == HEX_CHAR) ) { s = 9; } else if ( (LA28_2 == DOT) ) { s = 14; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_2 == PERCENT) ) { s = 4; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_2 == AND || LA28_2 == COMMA || LA28_2 == DOLLARD || LA28_2 == EQUAL || ((LA28_2 >= PLUS) && (LA28_2 <= QMARK)) || ((LA28_2 >= SEMI) && (LA28_2 <= SLASH))) ) { s = 5; } else if ( (LA28_2 == DASH) ) { s = 12; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_2 == EMARK || LA28_2 == LPAREN || LA28_2 == RPAREN || ((LA28_2 >= SQUOTE) && (LA28_2 <= USCORE))) ) { s = 3; } SEEK(index28_2); if ( s>=0 ) { return s; } } break; case 37: { ANTLR3_UINT32 LA28_24; ANTLR3_MARKER index28_24; LA28_24 = LA(1); index28_24 = INDEX(); REWINDLAST(); s = -1; if ( (LA28_24 == DIGIT) ) { s = 64; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_24 == COLON) ) { s = 7; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_24 == AT) ) { s = 8; } else if ( (LA28_24 == COMMON_CHAR || LA28_24 == HEX_CHAR) ) { s = 9; } else if ( (LA28_24 == DASH) ) { s = 12; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_24 == PERCENT) ) { s = 4; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_24 == AND || LA28_24 == COMMA || LA28_24 == DOLLARD || LA28_24 == EQUAL || ((LA28_24 >= PLUS) && (LA28_24 <= QMARK)) || ((LA28_24 >= SEMI) && (LA28_24 <= SLASH))) ) { s = 5; } else if ( (LA28_24 == DOT) ) { s = 65; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_24 == EMARK || LA28_24 == LPAREN || LA28_24 == RPAREN || ((LA28_24 >= SQUOTE) && (LA28_24 <= USCORE))) ) { s = 3; } SEEK(index28_24); if ( s>=0 ) { return s; } } break; case 38: { ANTLR3_UINT32 LA28_119; ANTLR3_MARKER index28_119; LA28_119 = LA(1); index28_119 = INDEX(); REWINDLAST(); s = -1; if ( (LA28_119 == DIGIT) ) { s = 180; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_119 == COLON) ) { s = 7; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_119 == AT) ) { s = 8; } else if ( (LA28_119 == COMMON_CHAR || LA28_119 == HEX_CHAR) ) { s = 9; } else if ( (LA28_119 == DASH) ) { s = 12; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_119 == PERCENT) ) { s = 4; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_119 == AND || LA28_119 == COMMA || LA28_119 == DOLLARD || LA28_119 == EQUAL || ((LA28_119 >= PLUS) && (LA28_119 <= QMARK)) || ((LA28_119 >= SEMI) && (LA28_119 <= SLASH))) ) { s = 5; } else if ( (LA28_119 == DOT) ) { s = 181; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_119 == EMARK || LA28_119 == LPAREN || LA28_119 == RPAREN || ((LA28_119 >= SQUOTE) && (LA28_119 <= USCORE))) ) { s = 3; } SEEK(index28_119); if ( s>=0 ) { return s; } } break; case 39: { ANTLR3_UINT32 LA28_173; ANTLR3_MARKER index28_173; LA28_173 = LA(1); index28_173 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) ) { s = 80; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index28_173); if ( s>=0 ) { return s; } } break; case 40: { ANTLR3_UINT32 LA28_178; ANTLR3_MARKER index28_178; LA28_178 = LA(1); index28_178 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) ) { s = 80; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index28_178); if ( s>=0 ) { return s; } } break; case 41: { ANTLR3_UINT32 LA28_222; ANTLR3_MARKER index28_222; LA28_222 = LA(1); index28_222 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) ) { s = 80; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index28_222); if ( s>=0 ) { return s; } } break; case 42: { ANTLR3_UINT32 LA28_259; ANTLR3_MARKER index28_259; LA28_259 = LA(1); index28_259 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) ) { s = 80; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index28_259); if ( s>=0 ) { return s; } } break; case 43: { ANTLR3_UINT32 LA28_264; ANTLR3_MARKER index28_264; LA28_264 = LA(1); index28_264 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) ) { s = 80; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index28_264); if ( s>=0 ) { return s; } } break; case 44: { ANTLR3_UINT32 LA28_303; ANTLR3_MARKER index28_303; LA28_303 = LA(1); index28_303 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) ) { s = 80; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index28_303); if ( s>=0 ) { return s; } } break; case 45: { ANTLR3_UINT32 LA28_253; ANTLR3_MARKER index28_253; LA28_253 = LA(1); index28_253 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) ) { s = 80; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index28_253); if ( s>=0 ) { return s; } } break; case 46: { ANTLR3_UINT32 LA28_285; ANTLR3_MARKER index28_285; LA28_285 = LA(1); index28_285 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) ) { s = 80; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index28_285); if ( s>=0 ) { return s; } } break; case 47: { ANTLR3_UINT32 LA28_296; ANTLR3_MARKER index28_296; LA28_296 = LA(1); index28_296 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) ) { s = 80; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index28_296); if ( s>=0 ) { return s; } } break; case 48: { ANTLR3_UINT32 LA28_192; ANTLR3_MARKER index28_192; LA28_192 = LA(1); index28_192 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) ) { s = 80; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index28_192); if ( s>=0 ) { return s; } } break; case 49: { ANTLR3_UINT32 LA28_197; ANTLR3_MARKER index28_197; LA28_197 = LA(1); index28_197 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) ) { s = 80; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index28_197); if ( s>=0 ) { return s; } } break; case 50: { ANTLR3_UINT32 LA28_240; ANTLR3_MARKER index28_240; LA28_240 = LA(1); index28_240 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) ) { s = 80; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index28_240); if ( s>=0 ) { return s; } } break; case 51: { ANTLR3_UINT32 LA28_268; ANTLR3_MARKER index28_268; LA28_268 = LA(1); index28_268 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) ) { s = 80; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index28_268); if ( s>=0 ) { return s; } } break; case 52: { ANTLR3_UINT32 LA28_273; ANTLR3_MARKER index28_273; LA28_273 = LA(1); index28_273 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) ) { s = 80; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index28_273); if ( s>=0 ) { return s; } } break; case 53: { ANTLR3_UINT32 LA28_307; ANTLR3_MARKER index28_307; LA28_307 = LA(1); index28_307 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) ) { s = 80; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index28_307); if ( s>=0 ) { return s; } } break; case 54: { ANTLR3_UINT32 LA28_53; ANTLR3_MARKER index28_53; LA28_53 = LA(1); index28_53 = INDEX(); REWINDLAST(); s = -1; if ( (LA28_53 == COMMON_CHAR || LA28_53 == HEX_CHAR) ) { s = 114; } else if ( (LA28_53 == DIGIT) ) { s = 115; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_53 == LSBRAQUET) ) { s = 80; } else if ( (LA28_53 == EOF || ((LA28_53 >= AND) && (LA28_53 <= AT)) || ((LA28_53 >= COLON) && (LA28_53 <= COMMA)) || ((LA28_53 >= CRLF) && (LA28_53 <= DASH)) || ((LA28_53 >= DOLLARD) && (LA28_53 <= DOT)) || ((LA28_53 >= EMARK) && (LA28_53 <= EQUAL)) || LA28_53 == LPAREN || ((LA28_53 >= PERCENT) && (LA28_53 <= RAQUOT)) || LA28_53 == RPAREN || ((LA28_53 >= SEMI) && (LA28_53 <= USCORE))) ) { s = 6; } SEEK(index28_53); if ( s>=0 ) { return s; } } break; case 55: { ANTLR3_UINT32 LA28_124; ANTLR3_MARKER index28_124; LA28_124 = LA(1); index28_124 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) && (LA28_124 == COLON) ) { s = 7; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_124 == AT) ) { s = 8; } else if ( (LA28_124 == COMMON_CHAR || LA28_124 == HEX_CHAR) ) { s = 120; } else if ( (LA28_124 == DIGIT) ) { s = 121; } else if ( (LA28_124 == DASH || LA28_124 == DOT || LA28_124 == EMARK || LA28_124 == LPAREN || LA28_124 == RPAREN || ((LA28_124 >= SQUOTE) && (LA28_124 <= USCORE))) ) { s = 122; } else if ( (LA28_124 == PERCENT) ) { s = 123; } else if ( (LA28_124 == SLASH) ) { s = 18; } else if ( (LA28_124 == QMARK) ) { s = 19; } else if ( (LA28_124 == SEMI) ) { s = 16; } else if ( (LA28_124 == EOF || LA28_124 == BQUOTE || LA28_124 == CRLF || LA28_124 == RAQUOT || LA28_124 == SP) ) { s = 6; } else if ( (LA28_124 == PLUS) ) { s = 124; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_124 == AND || LA28_124 == COMMA || LA28_124 == DOLLARD || LA28_124 == EQUAL) ) { s = 5; } SEEK(index28_124); if ( s>=0 ) { return s; } } break; case 56: { ANTLR3_UINT32 LA28_263; ANTLR3_MARKER index28_263; LA28_263 = LA(1); index28_263 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) ) { s = 80; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index28_263); if ( s>=0 ) { return s; } } break; case 57: { ANTLR3_UINT32 LA28_176; ANTLR3_MARKER index28_176; LA28_176 = LA(1); index28_176 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) ) { s = 80; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index28_176); if ( s>=0 ) { return s; } } break; case 58: { ANTLR3_UINT32 LA28_9; ANTLR3_MARKER index28_9; LA28_9 = LA(1); index28_9 = INDEX(); REWINDLAST(); s = -1; if ( (LA28_9 == COLON) ) { s = 15; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_9 == AT) ) { s = 8; } else if ( (LA28_9 == COMMON_CHAR || LA28_9 == HEX_CHAR) ) { s = 9; } else if ( (LA28_9 == DIGIT) ) { s = 10; } else if ( (LA28_9 == DASH) ) { s = 12; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_9 == PERCENT) ) { s = 4; } else if ( (LA28_9 == SEMI) ) { s = 16; } else if ( (LA28_9 == DOT) ) { s = 17; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_9 == EMARK || LA28_9 == LPAREN || LA28_9 == RPAREN || ((LA28_9 >= SQUOTE) && (LA28_9 <= USCORE))) ) { s = 3; } else if ( (LA28_9 == EOF || LA28_9 == CRLF || LA28_9 == RAQUOT || LA28_9 == SP) ) { s = 6; } else if ( (LA28_9 == SLASH) ) { s = 18; } else if ( (LA28_9 == QMARK) ) { s = 19; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_9 == AND || LA28_9 == COMMA || LA28_9 == DOLLARD || LA28_9 == EQUAL || LA28_9 == PLUS) ) { s = 5; } SEEK(index28_9); if ( s>=0 ) { return s; } } break; case 59: { ANTLR3_UINT32 LA28_120; ANTLR3_MARKER index28_120; LA28_120 = LA(1); index28_120 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) && (LA28_120 == COLON) ) { s = 7; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_120 == AT) ) { s = 8; } else if ( (LA28_120 == COMMON_CHAR || LA28_120 == HEX_CHAR) ) { s = 120; } else if ( (LA28_120 == DIGIT) ) { s = 121; } else if ( (LA28_120 == DASH || LA28_120 == DOT || LA28_120 == EMARK || LA28_120 == LPAREN || LA28_120 == RPAREN || ((LA28_120 >= SQUOTE) && (LA28_120 <= USCORE))) ) { s = 122; } else if ( (LA28_120 == PERCENT) ) { s = 123; } else if ( (LA28_120 == SLASH) ) { s = 18; } else if ( (LA28_120 == QMARK) ) { s = 19; } else if ( (LA28_120 == SEMI) ) { s = 16; } else if ( (LA28_120 == EOF || LA28_120 == BQUOTE || LA28_120 == CRLF || LA28_120 == RAQUOT || LA28_120 == SP) ) { s = 6; } else if ( (LA28_120 == PLUS) ) { s = 124; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_120 == AND || LA28_120 == COMMA || LA28_120 == DOLLARD || LA28_120 == EQUAL) ) { s = 5; } SEEK(index28_120); if ( s>=0 ) { return s; } } break; case 60: { ANTLR3_UINT32 LA28_130; ANTLR3_MARKER index28_130; LA28_130 = LA(1); index28_130 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) ) { s = 80; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index28_130); if ( s>=0 ) { return s; } } break; case 61: { ANTLR3_UINT32 LA28_187; ANTLR3_MARKER index28_187; LA28_187 = LA(1); index28_187 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) ) { s = 80; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index28_187); if ( s>=0 ) { return s; } } break; case 62: { ANTLR3_UINT32 LA28_232; ANTLR3_MARKER index28_232; LA28_232 = LA(1); index28_232 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) ) { s = 80; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index28_232); if ( s>=0 ) { return s; } } break; case 63: { ANTLR3_UINT32 LA28_195; ANTLR3_MARKER index28_195; LA28_195 = LA(1); index28_195 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) ) { s = 80; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index28_195); if ( s>=0 ) { return s; } } break; case 64: { ANTLR3_UINT32 LA28_122; ANTLR3_MARKER index28_122; LA28_122 = LA(1); index28_122 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) && (LA28_122 == COLON) ) { s = 7; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_122 == AT) ) { s = 8; } else if ( (LA28_122 == COMMON_CHAR || LA28_122 == HEX_CHAR) ) { s = 120; } else if ( (LA28_122 == DIGIT) ) { s = 121; } else if ( (LA28_122 == DASH || LA28_122 == DOT || LA28_122 == EMARK || LA28_122 == LPAREN || LA28_122 == RPAREN || ((LA28_122 >= SQUOTE) && (LA28_122 <= USCORE))) ) { s = 122; } else if ( (LA28_122 == PERCENT) ) { s = 123; } else if ( (LA28_122 == SLASH) ) { s = 18; } else if ( (LA28_122 == QMARK) ) { s = 19; } else if ( (LA28_122 == SEMI) ) { s = 16; } else if ( (LA28_122 == EOF || LA28_122 == BQUOTE || LA28_122 == CRLF || LA28_122 == RAQUOT || LA28_122 == SP) ) { s = 6; } else if ( (LA28_122 == PLUS) ) { s = 124; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_122 == AND || LA28_122 == COMMA || LA28_122 == DOLLARD || LA28_122 == EQUAL) ) { s = 5; } SEEK(index28_122); if ( s>=0 ) { return s; } } break; case 65: { ANTLR3_UINT32 LA28_302; ANTLR3_MARKER index28_302; LA28_302 = LA(1); index28_302 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) ) { s = 80; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index28_302); if ( s>=0 ) { return s; } } break; case 66: { ANTLR3_UINT32 LA28_313; ANTLR3_MARKER index28_313; LA28_313 = LA(1); index28_313 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) ) { s = 80; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index28_313); if ( s>=0 ) { return s; } } break; case 67: { ANTLR3_UINT32 LA28_126; ANTLR3_MARKER index28_126; LA28_126 = LA(1); index28_126 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) && (LA28_126 == COLON) ) { s = 7; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_126 == AT) ) { s = 8; } else if ( (LA28_126 == COMMON_CHAR || LA28_126 == HEX_CHAR) ) { s = 34; } else if ( (LA28_126 == DIGIT) ) { s = 35; } else if ( (LA28_126 == DASH || LA28_126 == DOT || LA28_126 == EMARK || LA28_126 == LPAREN || LA28_126 == RPAREN || ((LA28_126 >= SQUOTE) && (LA28_126 <= USCORE))) ) { s = 36; } else if ( (LA28_126 == PERCENT) ) { s = 37; } else if ( (LA28_126 == EQUAL) ) { s = 66; } else if ( (LA28_126 == EOF || LA28_126 == BQUOTE || LA28_126 == CRLF || LA28_126 == RAQUOT || LA28_126 == SP) ) { s = 6; } else if ( (LA28_126 == SLASH) ) { s = 18; } else if ( (LA28_126 == QMARK) ) { s = 19; } else if ( (LA28_126 == SEMI) ) { s = 16; } else if ( (LA28_126 == PLUS) ) { s = 38; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_126 == AND || LA28_126 == COMMA || LA28_126 == DOLLARD) ) { s = 5; } SEEK(index28_126); if ( s>=0 ) { return s; } } break; case 68: { ANTLR3_UINT32 LA28_306; ANTLR3_MARKER index28_306; LA28_306 = LA(1); index28_306 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) ) { s = 80; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index28_306); if ( s>=0 ) { return s; } } break; case 69: { ANTLR3_UINT32 LA28_314; ANTLR3_MARKER index28_314; LA28_314 = LA(1); index28_314 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) ) { s = 80; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index28_314); if ( s>=0 ) { return s; } } break; case 70: { ANTLR3_UINT32 LA28_272; ANTLR3_MARKER index28_272; LA28_272 = LA(1); index28_272 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) ) { s = 80; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index28_272); if ( s>=0 ) { return s; } } break; case 71: { ANTLR3_UINT32 LA28_65; ANTLR3_MARKER index28_65; LA28_65 = LA(1); index28_65 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) && (LA28_65 == COLON) ) { s = 7; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_65 == AT) ) { s = 8; } else if ( (LA28_65 == COMMON_CHAR || LA28_65 == HEX_CHAR) ) { s = 1; } else if ( (LA28_65 == DIGIT) ) { s = 119; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_65 == DASH || LA28_65 == DOT || LA28_65 == EMARK || LA28_65 == LPAREN || LA28_65 == RPAREN || ((LA28_65 >= SQUOTE) && (LA28_65 <= USCORE))) ) { s = 3; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_65 == PERCENT) ) { s = 4; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_65 == AND || LA28_65 == COMMA || LA28_65 == DOLLARD || LA28_65 == EQUAL || ((LA28_65 >= PLUS) && (LA28_65 <= QMARK)) || ((LA28_65 >= SEMI) && (LA28_65 <= SLASH))) ) { s = 5; } SEEK(index28_65); if ( s>=0 ) { return s; } } break; case 72: { ANTLR3_UINT32 LA28_14; ANTLR3_MARKER index28_14; LA28_14 = LA(1); index28_14 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) && (LA28_14 == COLON) ) { s = 7; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_14 == AT) ) { s = 8; } else if ( (LA28_14 == COMMON_CHAR || LA28_14 == HEX_CHAR) ) { s = 1; } else if ( (LA28_14 == DIGIT) ) { s = 24; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_14 == DASH || LA28_14 == DOT || LA28_14 == EMARK || LA28_14 == LPAREN || LA28_14 == RPAREN || ((LA28_14 >= SQUOTE) && (LA28_14 <= USCORE))) ) { s = 3; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_14 == PERCENT) ) { s = 4; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_14 == AND || LA28_14 == COMMA || LA28_14 == DOLLARD || LA28_14 == EQUAL || ((LA28_14 >= PLUS) && (LA28_14 <= QMARK)) || ((LA28_14 >= SEMI) && (LA28_14 <= SLASH))) ) { s = 5; } SEEK(index28_14); if ( s>=0 ) { return s; } } break; case 73: { ANTLR3_UINT32 LA28_0; ANTLR3_MARKER index28_0; LA28_0 = LA(1); index28_0 = INDEX(); REWINDLAST(); s = -1; if ( (LA28_0 == COMMON_CHAR || LA28_0 == HEX_CHAR) ) { s = 1; } else if ( (LA28_0 == DIGIT) ) { s = 2; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_0 == DASH || LA28_0 == DOT || LA28_0 == EMARK || LA28_0 == LPAREN || LA28_0 == RPAREN || ((LA28_0 >= SQUOTE) && (LA28_0 <= USCORE))) ) { s = 3; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_0 == PERCENT) ) { s = 4; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_0 == AND || LA28_0 == COMMA || LA28_0 == DOLLARD || LA28_0 == EQUAL || ((LA28_0 >= PLUS) && (LA28_0 <= QMARK)) || ((LA28_0 >= SEMI) && (LA28_0 <= SLASH))) ) { s = 5; } else if ( (LA28_0 == LSBRAQUET) ) { s = 6; } SEEK(index28_0); if ( s>=0 ) { return s; } } break; case 74: { ANTLR3_UINT32 LA28_181; ANTLR3_MARKER index28_181; LA28_181 = LA(1); index28_181 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) && (LA28_181 == COLON) ) { s = 7; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_181 == AT) ) { s = 8; } else if ( (LA28_181 == COMMON_CHAR || LA28_181 == HEX_CHAR) ) { s = 1; } else if ( (LA28_181 == DIGIT) ) { s = 228; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_181 == DASH || LA28_181 == DOT || LA28_181 == EMARK || LA28_181 == LPAREN || LA28_181 == RPAREN || ((LA28_181 >= SQUOTE) && (LA28_181 <= USCORE))) ) { s = 3; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_181 == PERCENT) ) { s = 4; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_181 == AND || LA28_181 == COMMA || LA28_181 == DOLLARD || LA28_181 == EQUAL || ((LA28_181 >= PLUS) && (LA28_181 <= QMARK)) || ((LA28_181 >= SEMI) && (LA28_181 <= SLASH))) ) { s = 5; } SEEK(index28_181); if ( s>=0 ) { return s; } } break; case 75: { ANTLR3_UINT32 LA28_125; ANTLR3_MARKER index28_125; LA28_125 = LA(1); index28_125 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) && (LA28_125 == COLON) ) { s = 7; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_125 == AT) ) { s = 8; } else if ( (LA28_125 == COMMON_CHAR || LA28_125 == HEX_CHAR) ) { s = 34; } else if ( (LA28_125 == DIGIT) ) { s = 35; } else if ( (LA28_125 == DASH || LA28_125 == DOT || LA28_125 == EMARK || LA28_125 == LPAREN || LA28_125 == RPAREN || ((LA28_125 >= SQUOTE) && (LA28_125 <= USCORE))) ) { s = 36; } else if ( (LA28_125 == PERCENT) ) { s = 37; } else if ( (LA28_125 == EQUAL) ) { s = 66; } else if ( (LA28_125 == EOF || LA28_125 == BQUOTE || LA28_125 == CRLF || LA28_125 == RAQUOT || LA28_125 == SP) ) { s = 6; } else if ( (LA28_125 == SLASH) ) { s = 18; } else if ( (LA28_125 == QMARK) ) { s = 19; } else if ( (LA28_125 == SEMI) ) { s = 16; } else if ( (LA28_125 == PLUS) ) { s = 38; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_125 == AND || LA28_125 == COMMA || LA28_125 == DOLLARD) ) { s = 5; } SEEK(index28_125); if ( s>=0 ) { return s; } } break; case 76: { ANTLR3_UINT32 LA28_180; ANTLR3_MARKER index28_180; LA28_180 = LA(1); index28_180 = INDEX(); REWINDLAST(); s = -1; if ( (LA28_180 == DIGIT) ) { s = 226; } else if ( (LA28_180 == DOT) ) { s = 227; } else if ( (LA28_180 == COLON) ) { s = 15; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_180 == AT) ) { s = 8; } else if ( (LA28_180 == COMMON_CHAR || LA28_180 == HEX_CHAR) ) { s = 9; } else if ( (LA28_180 == DASH) ) { s = 12; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_180 == PERCENT) ) { s = 4; } else if ( (LA28_180 == SEMI) ) { s = 16; } else if ( (LA28_180 == EOF || LA28_180 == CRLF || LA28_180 == RAQUOT || LA28_180 == SP) ) { s = 6; } else if ( (LA28_180 == SLASH) ) { s = 18; } else if ( (LA28_180 == QMARK) ) { s = 19; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_180 == AND || LA28_180 == COMMA || LA28_180 == DOLLARD || LA28_180 == EQUAL || LA28_180 == PLUS) ) { s = 5; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_180 == EMARK || LA28_180 == LPAREN || LA28_180 == RPAREN || ((LA28_180 >= SQUOTE) && (LA28_180 <= USCORE))) ) { s = 3; } SEEK(index28_180); if ( s>=0 ) { return s; } } break; case 77: { ANTLR3_UINT32 LA28_228; ANTLR3_MARKER index28_228; LA28_228 = LA(1); index28_228 = INDEX(); REWINDLAST(); s = -1; if ( (LA28_228 == DIGIT) ) { s = 266; } else if ( (LA28_228 == COLON) ) { s = 15; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_228 == AT) ) { s = 8; } else if ( (LA28_228 == COMMON_CHAR || LA28_228 == HEX_CHAR) ) { s = 9; } else if ( (LA28_228 == DASH) ) { s = 12; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_228 == PERCENT) ) { s = 4; } else if ( (LA28_228 == SEMI) ) { s = 16; } else if ( (LA28_228 == DOT) ) { s = 11; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_228 == EMARK || LA28_228 == LPAREN || LA28_228 == RPAREN || ((LA28_228 >= SQUOTE) && (LA28_228 <= USCORE))) ) { s = 3; } else if ( (LA28_228 == EOF || LA28_228 == CRLF || LA28_228 == RAQUOT || LA28_228 == SP) ) { s = 6; } else if ( (LA28_228 == SLASH) ) { s = 18; } else if ( (LA28_228 == QMARK) ) { s = 19; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_228 == AND || LA28_228 == COMMA || LA28_228 == DOLLARD || LA28_228 == EQUAL || LA28_228 == PLUS) ) { s = 5; } SEEK(index28_228); if ( s>=0 ) { return s; } } break; case 78: { ANTLR3_UINT32 LA28_13; ANTLR3_MARKER index28_13; LA28_13 = LA(1); index28_13 = INDEX(); REWINDLAST(); s = -1; if ( (LA28_13 == DIGIT) ) { s = 22; } else if ( (LA28_13 == DOT) ) { s = 23; } else if ( (LA28_13 == COLON) ) { s = 15; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_13 == AT) ) { s = 8; } else if ( (LA28_13 == COMMON_CHAR || LA28_13 == HEX_CHAR) ) { s = 9; } else if ( (LA28_13 == DASH) ) { s = 12; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_13 == PERCENT) ) { s = 4; } else if ( (LA28_13 == SEMI) ) { s = 16; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_13 == EMARK || LA28_13 == LPAREN || LA28_13 == RPAREN || ((LA28_13 >= SQUOTE) && (LA28_13 <= USCORE))) ) { s = 3; } else if ( (LA28_13 == EOF || LA28_13 == CRLF || LA28_13 == RAQUOT || LA28_13 == SP) ) { s = 6; } else if ( (LA28_13 == SLASH) ) { s = 18; } else if ( (LA28_13 == QMARK) ) { s = 19; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_13 == AND || LA28_13 == COMMA || LA28_13 == DOLLARD || LA28_13 == EQUAL || LA28_13 == PLUS) ) { s = 5; } SEEK(index28_13); if ( s>=0 ) { return s; } } break; case 79: { ANTLR3_UINT32 LA28_161; ANTLR3_MARKER index28_161; LA28_161 = LA(1); index28_161 = INDEX(); REWINDLAST(); s = -1; if ( (LA28_161 == COMMON_CHAR || LA28_161 == HEX_CHAR) ) { s = 217; } else if ( (LA28_161 == DIGIT) ) { s = 218; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_161 == LSBRAQUET) ) { s = 80; } else if ( (LA28_161 == EOF || ((LA28_161 >= AND) && (LA28_161 <= AT)) || ((LA28_161 >= COLON) && (LA28_161 <= COMMA)) || ((LA28_161 >= CRLF) && (LA28_161 <= DASH)) || ((LA28_161 >= DOLLARD) && (LA28_161 <= DOT)) || ((LA28_161 >= EMARK) && (LA28_161 <= EQUAL)) || LA28_161 == LPAREN || ((LA28_161 >= PERCENT) && (LA28_161 <= RAQUOT)) || LA28_161 == RPAREN || ((LA28_161 >= SEMI) && (LA28_161 <= USCORE))) ) { s = 6; } SEEK(index28_161); if ( s>=0 ) { return s; } } break; case 80: { ANTLR3_UINT32 LA28_64; ANTLR3_MARKER index28_64; LA28_64 = LA(1); index28_64 = INDEX(); REWINDLAST(); s = -1; if ( (LA28_64 == DIGIT) ) { s = 117; } else if ( (LA28_64 == DOT) ) { s = 118; } else if ( (LA28_64 == COLON) ) { s = 15; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_64 == AT) ) { s = 8; } else if ( (LA28_64 == COMMON_CHAR || LA28_64 == HEX_CHAR) ) { s = 9; } else if ( (LA28_64 == DASH) ) { s = 12; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_64 == PERCENT) ) { s = 4; } else if ( (LA28_64 == SEMI) ) { s = 16; } else if ( (LA28_64 == EOF || LA28_64 == CRLF || LA28_64 == RAQUOT || LA28_64 == SP) ) { s = 6; } else if ( (LA28_64 == SLASH) ) { s = 18; } else if ( (LA28_64 == QMARK) ) { s = 19; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_64 == AND || LA28_64 == COMMA || LA28_64 == DOLLARD || LA28_64 == EQUAL || LA28_64 == PLUS) ) { s = 5; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_64 == EMARK || LA28_64 == LPAREN || LA28_64 == RPAREN || ((LA28_64 >= SQUOTE) && (LA28_64 <= USCORE))) ) { s = 3; } SEEK(index28_64); if ( s>=0 ) { return s; } } break; case 81: { ANTLR3_UINT32 LA28_266; ANTLR3_MARKER index28_266; LA28_266 = LA(1); index28_266 = INDEX(); REWINDLAST(); s = -1; if ( (LA28_266 == DIGIT) ) { s = 289; } else if ( (LA28_266 == COLON) ) { s = 15; } else if ( (LA28_266 == EOF || LA28_266 == CRLF || LA28_266 == RAQUOT || LA28_266 == SP) ) { s = 6; } else if ( (LA28_266 == SEMI) ) { s = 16; } else if ( (LA28_266 == SLASH) ) { s = 18; } else if ( (LA28_266 == QMARK) ) { s = 19; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_266 == AT) ) { s = 8; } else if ( (LA28_266 == COMMON_CHAR || LA28_266 == HEX_CHAR) ) { s = 9; } else if ( (LA28_266 == DOT) ) { s = 17; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_266 == PERCENT) ) { s = 4; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_266 == AND || LA28_266 == COMMA || LA28_266 == DOLLARD || LA28_266 == EQUAL || LA28_266 == PLUS) ) { s = 5; } else if ( (LA28_266 == DASH) ) { s = 12; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_266 == EMARK || LA28_266 == LPAREN || LA28_266 == RPAREN || ((LA28_266 >= SQUOTE) && (LA28_266 <= USCORE))) ) { s = 3; } SEEK(index28_266); if ( s>=0 ) { return s; } } break; case 82: { ANTLR3_UINT32 LA28_11; ANTLR3_MARKER index28_11; LA28_11 = LA(1); index28_11 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) && (LA28_11 == COLON) ) { s = 7; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_11 == AT) ) { s = 8; } else if ( (LA28_11 == COMMON_CHAR || LA28_11 == HEX_CHAR) ) { s = 1; } else if ( (LA28_11 == DIGIT) ) { s = 20; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_11 == DASH || LA28_11 == DOT || LA28_11 == EMARK || LA28_11 == LPAREN || LA28_11 == RPAREN || ((LA28_11 >= SQUOTE) && (LA28_11 <= USCORE))) ) { s = 3; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_11 == PERCENT) ) { s = 4; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_11 == AND || LA28_11 == COMMA || LA28_11 == DOLLARD || LA28_11 == EQUAL || ((LA28_11 >= PLUS) && (LA28_11 <= QMARK)) || ((LA28_11 >= SEMI) && (LA28_11 <= SLASH))) ) { s = 5; } SEEK(index28_11); if ( s>=0 ) { return s; } } break; case 83: { ANTLR3_UINT32 LA28_22; ANTLR3_MARKER index28_22; LA28_22 = LA(1); index28_22 = INDEX(); REWINDLAST(); s = -1; if ( (LA28_22 == DOT) ) { s = 23; } else if ( (LA28_22 == COLON) ) { s = 15; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_22 == AT) ) { s = 8; } else if ( (LA28_22 == COMMON_CHAR || LA28_22 == HEX_CHAR) ) { s = 9; } else if ( (LA28_22 == DIGIT) ) { s = 10; } else if ( (LA28_22 == DASH) ) { s = 12; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_22 == PERCENT) ) { s = 4; } else if ( (LA28_22 == SEMI) ) { s = 16; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_22 == EMARK || LA28_22 == LPAREN || LA28_22 == RPAREN || ((LA28_22 >= SQUOTE) && (LA28_22 <= USCORE))) ) { s = 3; } else if ( (LA28_22 == EOF || LA28_22 == CRLF || LA28_22 == RAQUOT || LA28_22 == SP) ) { s = 6; } else if ( (LA28_22 == SLASH) ) { s = 18; } else if ( (LA28_22 == QMARK) ) { s = 19; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_22 == AND || LA28_22 == COMMA || LA28_22 == DOLLARD || LA28_22 == EQUAL || LA28_22 == PLUS) ) { s = 5; } SEEK(index28_22); if ( s>=0 ) { return s; } } break; case 84: { ANTLR3_UINT32 LA28_117; ANTLR3_MARKER index28_117; LA28_117 = LA(1); index28_117 = INDEX(); REWINDLAST(); s = -1; if ( (LA28_117 == DOT) ) { s = 118; } else if ( (LA28_117 == COLON) ) { s = 15; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_117 == AT) ) { s = 8; } else if ( (LA28_117 == COMMON_CHAR || LA28_117 == HEX_CHAR) ) { s = 9; } else if ( (LA28_117 == DIGIT) ) { s = 10; } else if ( (LA28_117 == DASH) ) { s = 12; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_117 == PERCENT) ) { s = 4; } else if ( (LA28_117 == SEMI) ) { s = 16; } else if ( (LA28_117 == EOF || LA28_117 == CRLF || LA28_117 == RAQUOT || LA28_117 == SP) ) { s = 6; } else if ( (LA28_117 == SLASH) ) { s = 18; } else if ( (LA28_117 == QMARK) ) { s = 19; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_117 == AND || LA28_117 == COMMA || LA28_117 == DOLLARD || LA28_117 == EQUAL || LA28_117 == PLUS) ) { s = 5; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_117 == EMARK || LA28_117 == LPAREN || LA28_117 == RPAREN || ((LA28_117 >= SQUOTE) && (LA28_117 <= USCORE))) ) { s = 3; } SEEK(index28_117); if ( s>=0 ) { return s; } } break; case 85: { ANTLR3_UINT32 LA28_40; ANTLR3_MARKER index28_40; LA28_40 = LA(1); index28_40 = INDEX(); REWINDLAST(); s = -1; if ( (LA28_40 == COMMON_CHAR || LA28_40 == HEX_CHAR) ) { s = 78; } else if ( (LA28_40 == DIGIT) ) { s = 79; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_40 == LSBRAQUET) ) { s = 80; } else if ( (LA28_40 == EOF || ((LA28_40 >= AND) && (LA28_40 <= AT)) || ((LA28_40 >= COLON) && (LA28_40 <= COMMA)) || ((LA28_40 >= CRLF) && (LA28_40 <= DASH)) || ((LA28_40 >= DOLLARD) && (LA28_40 <= DOT)) || ((LA28_40 >= EMARK) && (LA28_40 <= EQUAL)) || LA28_40 == LPAREN || ((LA28_40 >= PERCENT) && (LA28_40 <= RAQUOT)) || LA28_40 == RPAREN || ((LA28_40 >= SEMI) && (LA28_40 <= USCORE))) ) { s = 6; } SEEK(index28_40); if ( s>=0 ) { return s; } } break; case 86: { ANTLR3_UINT32 LA28_15; ANTLR3_MARKER index28_15; LA28_15 = LA(1); index28_15 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) && (LA28_15 == COMMON_CHAR || LA28_15 == HEX_CHAR) ) { s = 25; } else if ( (LA28_15 == DIGIT) ) { s = 26; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_15 == DASH || LA28_15 == DOT || LA28_15 == EMARK || LA28_15 == LPAREN || LA28_15 == RPAREN || ((LA28_15 >= SQUOTE) && (LA28_15 <= USCORE))) ) { s = 27; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_15 == PERCENT) ) { s = 28; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_15 == AND) ) { s = 29; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_15 == EQUAL) ) { s = 30; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_15 == PLUS) ) { s = 31; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_15 == DOLLARD) ) { s = 32; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_15 == COMMA) ) { s = 33; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_15 == AT) ) { s = 8; } SEEK(index28_15); if ( s>=0 ) { return s; } } break; case 87: { ANTLR3_UINT32 LA28_35; ANTLR3_MARKER index28_35; LA28_35 = LA(1); index28_35 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) && (LA28_35 == COLON) ) { s = 7; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_35 == AT) ) { s = 8; } else if ( (LA28_35 == COMMON_CHAR || LA28_35 == HEX_CHAR) ) { s = 34; } else if ( (LA28_35 == DIGIT) ) { s = 35; } else if ( (LA28_35 == DASH || LA28_35 == DOT || LA28_35 == EMARK || LA28_35 == LPAREN || LA28_35 == RPAREN || ((LA28_35 >= SQUOTE) && (LA28_35 <= USCORE))) ) { s = 36; } else if ( (LA28_35 == PERCENT) ) { s = 37; } else if ( (LA28_35 == EQUAL) ) { s = 66; } else if ( (LA28_35 == EOF || LA28_35 == BQUOTE || LA28_35 == CRLF || LA28_35 == RAQUOT || LA28_35 == SP) ) { s = 6; } else if ( (LA28_35 == SLASH) ) { s = 18; } else if ( (LA28_35 == QMARK) ) { s = 19; } else if ( (LA28_35 == SEMI) ) { s = 16; } else if ( (LA28_35 == PLUS) ) { s = 38; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_35 == AND || LA28_35 == COMMA || LA28_35 == DOLLARD) ) { s = 5; } SEEK(index28_35); if ( s>=0 ) { return s; } } break; case 88: { ANTLR3_UINT32 LA28_289; ANTLR3_MARKER index28_289; LA28_289 = LA(1); index28_289 = INDEX(); REWINDLAST(); s = -1; if ( (LA28_289 == COLON) ) { s = 15; } else if ( (LA28_289 == EOF || LA28_289 == CRLF || LA28_289 == RAQUOT || LA28_289 == SP) ) { s = 6; } else if ( (LA28_289 == SEMI) ) { s = 16; } else if ( (LA28_289 == SLASH) ) { s = 18; } else if ( (LA28_289 == QMARK) ) { s = 19; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_289 == AT) ) { s = 8; } else if ( (LA28_289 == COMMON_CHAR || LA28_289 == HEX_CHAR) ) { s = 9; } else if ( (LA28_289 == DIGIT) ) { s = 10; } else if ( (LA28_289 == DOT) ) { s = 17; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_289 == PERCENT) ) { s = 4; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_289 == AND || LA28_289 == COMMA || LA28_289 == DOLLARD || LA28_289 == EQUAL || LA28_289 == PLUS) ) { s = 5; } else if ( (LA28_289 == DASH) ) { s = 12; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_289 == EMARK || LA28_289 == LPAREN || LA28_289 == RPAREN || ((LA28_289 >= SQUOTE) && (LA28_289 <= USCORE))) ) { s = 3; } SEEK(index28_289); if ( s>=0 ) { return s; } } break; case 89: { ANTLR3_UINT32 LA28_26; ANTLR3_MARKER index28_26; LA28_26 = LA(1); index28_26 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) && (LA28_26 == AT) ) { s = 8; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_26 == COMMON_CHAR || LA28_26 == HEX_CHAR) ) { s = 25; } else if ( (LA28_26 == DIGIT) ) { s = 26; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_26 == DASH || LA28_26 == DOT || LA28_26 == EMARK || LA28_26 == LPAREN || LA28_26 == RPAREN || ((LA28_26 >= SQUOTE) && (LA28_26 <= USCORE))) ) { s = 27; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_26 == PERCENT) ) { s = 28; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_26 == AND) ) { s = 29; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_26 == EQUAL) ) { s = 30; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_26 == PLUS) ) { s = 31; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_26 == DOLLARD) ) { s = 32; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_26 == COMMA) ) { s = 33; } else if ( (LA28_26 == EOF || LA28_26 == CRLF || ((LA28_26 >= QMARK) && (LA28_26 <= RAQUOT)) || ((LA28_26 >= SEMI) && (LA28_26 <= SP))) ) { s = 6; } SEEK(index28_26); if ( s>=0 ) { return s; } } break; case 90: { ANTLR3_UINT32 LA28_226; ANTLR3_MARKER index28_226; LA28_226 = LA(1); index28_226 = INDEX(); REWINDLAST(); s = -1; if ( (LA28_226 == DOT) ) { s = 227; } else if ( (LA28_226 == COLON) ) { s = 15; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_226 == AT) ) { s = 8; } else if ( (LA28_226 == COMMON_CHAR || LA28_226 == HEX_CHAR) ) { s = 9; } else if ( (LA28_226 == DIGIT) ) { s = 10; } else if ( (LA28_226 == DASH) ) { s = 12; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_226 == PERCENT) ) { s = 4; } else if ( (LA28_226 == SEMI) ) { s = 16; } else if ( (LA28_226 == EOF || LA28_226 == CRLF || LA28_226 == RAQUOT || LA28_226 == SP) ) { s = 6; } else if ( (LA28_226 == SLASH) ) { s = 18; } else if ( (LA28_226 == QMARK) ) { s = 19; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_226 == AND || LA28_226 == COMMA || LA28_226 == DOLLARD || LA28_226 == EQUAL || LA28_226 == PLUS) ) { s = 5; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_226 == EMARK || LA28_226 == LPAREN || LA28_226 == RPAREN || ((LA28_226 >= SQUOTE) && (LA28_226 <= USCORE))) ) { s = 3; } SEEK(index28_226); if ( s>=0 ) { return s; } } break; case 91: { ANTLR3_UINT32 LA28_12; ANTLR3_MARKER index28_12; LA28_12 = LA(1); index28_12 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) && (LA28_12 == COLON) ) { s = 7; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_12 == AT) ) { s = 8; } else if ( (LA28_12 == COMMON_CHAR || LA28_12 == HEX_CHAR) ) { s = 9; } else if ( (LA28_12 == DIGIT) ) { s = 10; } else if ( (LA28_12 == DASH) ) { s = 21; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_12 == PERCENT) ) { s = 4; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_12 == AND || LA28_12 == COMMA || LA28_12 == DOLLARD || LA28_12 == EQUAL || ((LA28_12 >= PLUS) && (LA28_12 <= QMARK)) || ((LA28_12 >= SEMI) && (LA28_12 <= SLASH))) ) { s = 5; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_12 == DOT || LA28_12 == EMARK || LA28_12 == LPAREN || LA28_12 == RPAREN || ((LA28_12 >= SQUOTE) && (LA28_12 <= USCORE))) ) { s = 3; } SEEK(index28_12); if ( s>=0 ) { return s; } } break; case 92: { ANTLR3_UINT32 LA28_202; ANTLR3_MARKER index28_202; LA28_202 = LA(1); index28_202 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) ) { s = 80; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index28_202); if ( s>=0 ) { return s; } } break; case 93: { ANTLR3_UINT32 LA28_247; ANTLR3_MARKER index28_247; LA28_247 = LA(1); index28_247 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) ) { s = 80; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index28_247); if ( s>=0 ) { return s; } } break; case 94: { ANTLR3_UINT32 LA28_276; ANTLR3_MARKER index28_276; LA28_276 = LA(1); index28_276 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) ) { s = 80; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index28_276); if ( s>=0 ) { return s; } } break; case 95: { ANTLR3_UINT32 LA28_252; ANTLR3_MARKER index28_252; LA28_252 = LA(1); index28_252 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) ) { s = 80; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index28_252); if ( s>=0 ) { return s; } } break; case 96: { ANTLR3_UINT32 LA28_257; ANTLR3_MARKER index28_257; LA28_257 = LA(1); index28_257 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) ) { s = 80; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index28_257); if ( s>=0 ) { return s; } } break; case 97: { ANTLR3_UINT32 LA28_284; ANTLR3_MARKER index28_284; LA28_284 = LA(1); index28_284 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) ) { s = 80; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index28_284); if ( s>=0 ) { return s; } } break; case 98: { ANTLR3_UINT32 LA28_295; ANTLR3_MARKER index28_295; LA28_295 = LA(1); index28_295 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) ) { s = 80; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index28_295); if ( s>=0 ) { return s; } } break; case 99: { ANTLR3_UINT32 LA28_300; ANTLR3_MARKER index28_300; LA28_300 = LA(1); index28_300 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) ) { s = 80; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index28_300); if ( s>=0 ) { return s; } } break; case 100: { ANTLR3_UINT32 LA28_317; ANTLR3_MARKER index28_317; LA28_317 = LA(1); index28_317 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) ) { s = 80; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index28_317); if ( s>=0 ) { return s; } } break; case 101: { ANTLR3_UINT32 LA28_16; ANTLR3_MARKER index28_16; LA28_16 = LA(1); index28_16 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) && (LA28_16 == COLON) ) { s = 7; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_16 == AT) ) { s = 8; } else if ( (LA28_16 == COMMON_CHAR || LA28_16 == HEX_CHAR) ) { s = 34; } else if ( (LA28_16 == DIGIT) ) { s = 35; } else if ( (LA28_16 == DASH || LA28_16 == DOT || LA28_16 == EMARK || LA28_16 == LPAREN || LA28_16 == RPAREN || ((LA28_16 >= SQUOTE) && (LA28_16 <= USCORE))) ) { s = 36; } else if ( (LA28_16 == PERCENT) ) { s = 37; } else if ( (LA28_16 == PLUS) ) { s = 38; } else if ( (LA28_16 == BQUOTE || LA28_16 == CRLF || LA28_16 == SP) ) { s = 6; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_16 == AND || LA28_16 == COMMA || LA28_16 == DOLLARD || LA28_16 == EQUAL || LA28_16 == QMARK || ((LA28_16 >= SEMI) && (LA28_16 <= SLASH))) ) { s = 5; } SEEK(index28_16); if ( s>=0 ) { return s; } } break; case 102: { ANTLR3_UINT32 LA28_316; ANTLR3_MARKER index28_316; LA28_316 = LA(1); index28_316 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) ) { s = 80; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index28_316); if ( s>=0 ) { return s; } } break; case 103: { ANTLR3_UINT32 LA28_66; ANTLR3_MARKER index28_66; LA28_66 = LA(1); index28_66 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) && (LA28_66 == COLON) ) { s = 7; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_66 == AT) ) { s = 8; } else if ( (LA28_66 == COMMON_CHAR || LA28_66 == HEX_CHAR) ) { s = 120; } else if ( (LA28_66 == DIGIT) ) { s = 121; } else if ( (LA28_66 == DASH || LA28_66 == DOT || LA28_66 == EMARK || LA28_66 == LPAREN || LA28_66 == RPAREN || ((LA28_66 >= SQUOTE) && (LA28_66 <= USCORE))) ) { s = 122; } else if ( (LA28_66 == PERCENT) ) { s = 123; } else if ( (LA28_66 == PLUS) ) { s = 124; } else if ( (LA28_66 == BQUOTE || LA28_66 == CRLF || LA28_66 == DQUOTE || LA28_66 == SP) ) { s = 6; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_66 == AND || LA28_66 == COMMA || LA28_66 == DOLLARD || LA28_66 == EQUAL || LA28_66 == QMARK || ((LA28_66 >= SEMI) && (LA28_66 <= SLASH))) ) { s = 5; } SEEK(index28_66); if ( s>=0 ) { return s; } } break; case 104: { ANTLR3_UINT32 LA28_34; ANTLR3_MARKER index28_34; LA28_34 = LA(1); index28_34 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) && (LA28_34 == COLON) ) { s = 7; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_34 == AT) ) { s = 8; } else if ( (LA28_34 == COMMON_CHAR || LA28_34 == HEX_CHAR) ) { s = 34; } else if ( (LA28_34 == DIGIT) ) { s = 35; } else if ( (LA28_34 == DASH || LA28_34 == DOT || LA28_34 == EMARK || LA28_34 == LPAREN || LA28_34 == RPAREN || ((LA28_34 >= SQUOTE) && (LA28_34 <= USCORE))) ) { s = 36; } else if ( (LA28_34 == PERCENT) ) { s = 37; } else if ( (LA28_34 == EQUAL) ) { s = 66; } else if ( (LA28_34 == EOF || LA28_34 == BQUOTE || LA28_34 == CRLF || LA28_34 == RAQUOT || LA28_34 == SP) ) { s = 6; } else if ( (LA28_34 == SLASH) ) { s = 18; } else if ( (LA28_34 == QMARK) ) { s = 19; } else if ( (LA28_34 == SEMI) ) { s = 16; } else if ( (LA28_34 == PLUS) ) { s = 38; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_34 == AND || LA28_34 == COMMA || LA28_34 == DOLLARD) ) { s = 5; } SEEK(index28_34); if ( s>=0 ) { return s; } } break; case 105: { ANTLR3_UINT32 LA28_38; ANTLR3_MARKER index28_38; LA28_38 = LA(1); index28_38 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) && (LA28_38 == COLON) ) { s = 7; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_38 == AT) ) { s = 8; } else if ( (LA28_38 == COMMON_CHAR || LA28_38 == HEX_CHAR) ) { s = 34; } else if ( (LA28_38 == DIGIT) ) { s = 35; } else if ( (LA28_38 == DASH || LA28_38 == DOT || LA28_38 == EMARK || LA28_38 == LPAREN || LA28_38 == RPAREN || ((LA28_38 >= SQUOTE) && (LA28_38 <= USCORE))) ) { s = 36; } else if ( (LA28_38 == PERCENT) ) { s = 37; } else if ( (LA28_38 == EQUAL) ) { s = 66; } else if ( (LA28_38 == EOF || LA28_38 == BQUOTE || LA28_38 == CRLF || LA28_38 == RAQUOT || LA28_38 == SP) ) { s = 6; } else if ( (LA28_38 == SLASH) ) { s = 18; } else if ( (LA28_38 == QMARK) ) { s = 19; } else if ( (LA28_38 == SEMI) ) { s = 16; } else if ( (LA28_38 == PLUS) ) { s = 38; } else if ( (synpred8_belle_sip_message(ctx)) && (LA28_38 == AND || LA28_38 == COMMA || LA28_38 == DOLLARD) ) { s = 5; } SEEK(index28_38); if ( s>=0 ) { return s; } } break; case 106: { ANTLR3_UINT32 LA28_299; ANTLR3_MARKER index28_299; LA28_299 = LA(1); index28_299 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) ) { s = 80; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index28_299); if ( s>=0 ) { return s; } } break; case 107: { ANTLR3_UINT32 LA28_319; ANTLR3_MARKER index28_319; LA28_319 = LA(1); index28_319 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) ) { s = 80; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index28_319); if ( s>=0 ) { return s; } } break; case 108: { ANTLR3_UINT32 LA28_129; ANTLR3_MARKER index28_129; LA28_129 = LA(1); index28_129 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) ) { s = 80; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index28_129); if ( s>=0 ) { return s; } } break; case 109: { ANTLR3_UINT32 LA28_134; ANTLR3_MARKER index28_134; LA28_134 = LA(1); index28_134 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) ) { s = 80; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index28_134); if ( s>=0 ) { return s; } } break; case 110: { ANTLR3_UINT32 LA28_186; ANTLR3_MARKER index28_186; LA28_186 = LA(1); index28_186 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) ) { s = 80; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index28_186); if ( s>=0 ) { return s; } } break; case 111: { ANTLR3_UINT32 LA28_231; ANTLR3_MARKER index28_231; LA28_231 = LA(1); index28_231 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) ) { s = 80; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index28_231); if ( s>=0 ) { return s; } } break; case 112: { ANTLR3_UINT32 LA28_236; ANTLR3_MARKER index28_236; LA28_236 = LA(1); index28_236 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) ) { s = 80; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index28_236); if ( s>=0 ) { return s; } } break; case 113: { ANTLR3_UINT32 LA28_255; ANTLR3_MARKER index28_255; LA28_255 = LA(1); index28_255 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) ) { s = 80; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index28_255); if ( s>=0 ) { return s; } } break; case 114: { ANTLR3_UINT32 LA28_291; ANTLR3_MARKER index28_291; LA28_291 = LA(1); index28_291 = INDEX(); REWINDLAST(); s = -1; if ( (synpred8_belle_sip_message(ctx)) ) { s = 80; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index28_291); if ( s>=0 ) { return s; } } break; } if (BACKTRACKING > 0) { FAILEDFLAG = ANTLR3_TRUE; return -1; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)"379:3: ( ( authority_userinfo[NULL] )=> authority_userinfo[uri] )?"; EXCEPTION->decisionNum = 28; EXCEPTION->state = _s; return -1; } /* Declare tracking structure for Cyclic DFA 28 */ static ANTLR3_CYCLIC_DFA cdfa28 = { 28, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"379:3: ( ( authority_userinfo[NULL] )=> authority_userinfo[uri] )?", (CDFA_SPECIAL_FUNC) dfa28_sst, antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa28_eot, /* EOT table */ dfa28_eof, /* EOF table */ dfa28_min, /* Minimum tokens for each state */ dfa28_max, /* Maximum tokens for each state */ dfa28_accept, /* Accept table */ dfa28_special, /* Special transition states */ dfa28_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 28 * --------------------- *//** Static dfa state tables for Cyclic dfa: * ()* loopback of 411:3: ( semi generic_param[BELLE_SIP_PARAMETERS($authority_hostport::current)] )* */ static const ANTLR3_INT32 dfa33_eot[7] = { -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa33_eof[7] = { 1, -1, 1, -1, -1, 1, 1 }; static const ANTLR3_INT32 dfa33_min[7] = { 11, -1, 10, 36, -1, 11, 30 }; static const ANTLR3_INT32 dfa33_max[7] = { 36, -1, 36, 36, -1, 36, 36 }; static const ANTLR3_INT32 dfa33_accept[7] = { -1, 2, -1, -1, 1, -1, -1 }; static const ANTLR3_INT32 dfa33_special[7] = { -1, -1, -1, -1, -1, -1, -1 }; /** Used when there is no transition table entry for a particular state */ #define dfa33_T_empty NULL static const ANTLR3_INT32 dfa33_T0[] = { 6 }; static const ANTLR3_INT32 dfa33_T1[] = { 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, 4, -1, 5 }; static const ANTLR3_INT32 dfa33_T2[] = { 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 1, -1, -1, -1, 4, 1, 2 }; static const ANTLR3_INT32 dfa33_T3[] = { 1, 3, -1, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, 4, -1, 5 }; static const ANTLR3_INT32 dfa33_T4[] = { 1, -1, -1, -1, 4, -1, 6 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa33_transitions[] = { dfa33_T2, NULL, dfa33_T3, dfa33_T0, NULL, dfa33_T1, dfa33_T4 }; /* Declare tracking structure for Cyclic DFA 33 */ static ANTLR3_CYCLIC_DFA cdfa33 = { 33, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"()* loopback of 411:3: ( semi generic_param[BELLE_SIP_PARAMETERS($authority_hostport::current)] )*", (CDFA_SPECIAL_FUNC) antlr3dfaspecialStateTransition, /* Default special state transition function */ antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa33_eot, /* EOT table */ dfa33_eof, /* EOF table */ dfa33_min, /* Minimum tokens for each state */ dfa33_max, /* Maximum tokens for each state */ dfa33_accept, /* Accept table */ dfa33_special, /* Special transition states */ dfa33_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 33 * --------------------- *//** Static dfa state tables for Cyclic dfa: * 421:14: ( equal gen_value )? */ static const ANTLR3_INT32 dfa34_eot[7] = { -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa34_eof[7] = { 4, 4, -1, -1, -1, 4, 4 }; static const ANTLR3_INT32 dfa34_min[7] = { 9, 9, 36, -1, -1, 9, 9 }; static const ANTLR3_INT32 dfa34_max[7] = { 36, 36, 36, -1, -1, 36, 36 }; static const ANTLR3_INT32 dfa34_accept[7] = { -1, -1, -1, 1, 2, -1, -1 }; static const ANTLR3_INT32 dfa34_special[7] = { -1, -1, -1, -1, -1, -1, -1 }; /** Used when there is no transition table entry for a particular state */ #define dfa34_T_empty NULL static const ANTLR3_INT32 dfa34_T0[] = { 6 }; static const ANTLR3_INT32 dfa34_T1[] = { 4, 4, 2, -1, -1, -1, -1, -1, -1, 3, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, -1, -1, -1, 4, -1, 5 }; static const ANTLR3_INT32 dfa34_T2[] = { 4, -1, 2, -1, -1, -1, -1, -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, 4, -1, -1, -1, 4, 4, 1 }; static const ANTLR3_INT32 dfa34_T3[] = { 4, -1, -1, -1, -1, -1, -1, -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, -1, -1, -1, 4, -1, 6 }; static const ANTLR3_INT32 dfa34_T4[] = { 4, -1, 2, -1, -1, -1, -1, -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, -1, -1, -1, 4, -1, 5 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa34_transitions[] = { dfa34_T2, dfa34_T1, dfa34_T0, NULL, NULL, dfa34_T4, dfa34_T3 }; /* Declare tracking structure for Cyclic DFA 34 */ static ANTLR3_CYCLIC_DFA cdfa34 = { 34, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"421:14: ( equal gen_value )?", (CDFA_SPECIAL_FUNC) antlr3dfaspecialStateTransition, /* Default special state transition function */ antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa34_eot, /* EOT table */ dfa34_eof, /* EOF table */ dfa34_min, /* Minimum tokens for each state */ dfa34_max, /* Maximum tokens for each state */ dfa34_accept, /* Accept table */ dfa34_special, /* Special transition states */ dfa34_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 34 * --------------------- *//** Static dfa state tables for Cyclic dfa: * 492:1: credentials[belle_sip_header_authorization_t* header_authorization_base] : ( ( digest_token lws digest_response[header_authorization_base] ) | other_response[header_authorization_base] ); */ static const ANTLR3_INT32 dfa38_eot[795] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa38_eof[795] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa38_min[795] = { 6, 6, 6, 6, 6, 6, 6, 6, 36, 6, 6, 6, 6, 6, 6, 6, 11, 36, 6, 18, 6, 36, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 4, 4, 0, 4, 4, 4, 4, 4, 4, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 0, 0, 4, 4, 4, 4, 4, 4, 4, 0, 4, 0, 4, 4, 0, 4, 0, 0, 4, 4, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 4, 4, 4, 0, 4, 4, 4, 4, 4, 4, 0, 0, 4, 0, 4, 4, 4, 0, 0, 4, 0, 0, 0, 4, 0, 4, 4, 4, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 0, 4, 0, 4, 4, 0, 4, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 4, 0, 0, 4, 0, 4, 4, 4, 4, 4, 4, 4, 0, 0, 4, 4, 0, 0, 4, 0, 4, 0, 4, 0, 4, 4, 0, 4, 4, 4, 4, 4, 0, 0, 4, 0, 4, 0, 4, 4, 0, 0, 4, 4, 4, 0, 0, 4, 0, 4, 4, 4, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 4, 0, 0, 0, 4, 0, 0, 4, 4, 4, 4, 4, 0, 4, 0, 4, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 0, 4, 0, 0, 0, 4, 0, 0, 4, 4, 4, 4, 4, 0, 0, 4, 4, 0, 0, 4, 4, 4, 0, 4, 0, 4, 0, 0, 4, 0, 4, 4, 4, 0, 4, 0, 0, 0, 0, 0, 0, 4, 0, 4, 4, 0, 0, 4, 0, 4, 4, 0, 4, 4, 0, 4, 4, 4, 0, 0, 0, 0, 0, 4, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 0, 4, 0, 0, 0, 0, 0, 4, 0, 0, 4, 4, 4, 4, 4, 0, 0, 0, 0, 4, 0, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 0, 4, 0, 4, 4, 4, 4, 4, 0, 0, 0, 0, 4, 0, 0, 4, 0, 4, 4, 4, 0, 0, 4, 0, 0, 4, 0, 4, 0, 4, 4, 0, 4, 0, 4, 0, 0, 0, 0, 4, 4, 0, 0, 4, 4, 4, 0, 4, 0, 4, 0, 4, 4, 4, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 4, 0, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0, 0, 4, 0, 4, 4, 4, 4, 0, 4, 4, 4, 0, 0, 4, 4, 0, 4, 4, 0, 0, 4, 0, 4, 0, 4, 0, 0, 4, 4, 0, 4, 0, 0, 0, 4, 0, 4, 4, 4, 0, 0, 4, 0, 0, 4, 4, 0, 4, 4, 0, 4, 0, 4, 0, 0, 0, 4, 0, 4, 0, 0, 4, 0, 0, 4, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 4, 0, 0, 4, 0, 0, 0, 4, 0, 0, 4, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 4, 0, 0, 4, 0, 0, 4, 4, 0, 4, 0, 4, 0, 0, 4, 4, 0, 0, 4, 4, 0, 4, 4, 0, 0, 4, 0, 4, 0, 4, 0, 0, 4, 4, 0, 4, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 0, 4, 0, 4, 4, 4, 4, 0, 0, 4, 4, 4, 4, 4, 4, 0, 4, 0, 0, 4, 4, 0, 4, 0, 0, 4, 0, 4, 0, 0, 4, 4, 0, 0, 0, 4, 0, 0, 4, 0, 0, 4, 0, 0, 4, 4, 0, 4, 0, 4, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 4, 0, 0, 4, 4, 0, 4, 0, 4, 0, 4, 0, 0, 4, 0, 4, 0, 0, 4, 4, 0, 0, 4, 0, 4, 0, 4, 0, 4, 0, 0, 4, 0, 0, 0, 4, 0, 0, 4, 4, 0, 4, 0, 0, 0, 0, 4, 0, 4, 0, 0, 4, 0, 0, 4, 0, 0, 0, 4, 0, 4, 0, 0, 0 }; static const ANTLR3_INT32 dfa38_max[795] = { 40, 40, 40, 40, 40, 40, 40, 40, 36, 40, 40, 40, 40, 40, 40, 40, 36, 36, 40, 36, 40, 36, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 40, 40, 0, 40, 40, 40, 40, 40, 40, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 40, 40, 0, 0, 0, 0, 0, 0, 0, 40, 40, 40, 40, 40, 40, 0, 0, 40, 40, 40, 40, 40, 40, 40, 0, 40, 0, 40, 40, 0, 40, 0, 0, 40, 40, 0, 40, 40, 40, 40, 40, 40, 40, 40, 40, 0, 40, 40, 40, 0, 40, 40, 40, 40, 40, 40, 0, 0, 40, 0, 40, 40, 40, 0, 0, 40, 0, 0, 0, 40, 0, 40, 40, 40, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 40, 40, 40, 40, 40, 0, 40, 0, 40, 40, 0, 40, 0, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 0, 40, 0, 0, 40, 0, 40, 40, 40, 40, 40, 40, 40, 0, 0, 40, 40, 0, 0, 40, 0, 40, 0, 40, 0, 40, 40, 0, 40, 40, 40, 40, 40, 0, 0, 40, 0, 40, 0, 40, 40, 0, 0, 40, 40, 40, 0, 0, 40, 0, 40, 40, 40, 0, 0, 0, 40, 40, 40, 40, 40, 40, 40, 40, 40, 0, 40, 0, 0, 0, 40, 0, 0, 40, 40, 40, 40, 40, 0, 40, 0, 40, 0, 0, 0, 0, 40, 40, 40, 40, 40, 40, 40, 0, 40, 0, 0, 0, 40, 0, 0, 40, 40, 40, 40, 40, 0, 0, 40, 40, 0, 0, 40, 40, 40, 0, 40, 0, 40, 0, 0, 40, 0, 40, 40, 40, 0, 40, 0, 0, 0, 0, 0, 0, 40, 0, 40, 40, 0, 0, 40, 0, 40, 40, 0, 40, 40, 0, 40, 40, 40, 0, 0, 0, 0, 0, 40, 0, 0, 40, 40, 40, 40, 40, 40, 40, 40, 40, 0, 0, 0, 0, 40, 40, 40, 40, 40, 40, 40, 0, 40, 0, 0, 0, 0, 0, 40, 0, 0, 40, 40, 40, 40, 40, 0, 0, 0, 0, 40, 0, 40, 40, 40, 40, 40, 40, 40, 40, 0, 0, 0, 40, 40, 40, 40, 40, 40, 40, 0, 40, 0, 40, 40, 40, 40, 40, 0, 0, 0, 0, 40, 0, 0, 40, 0, 40, 40, 40, 0, 0, 40, 0, 0, 40, 0, 40, 0, 40, 40, 0, 40, 0, 40, 0, 0, 0, 0, 40, 40, 0, 0, 40, 40, 40, 0, 40, 0, 40, 0, 40, 40, 40, 0, 40, 0, 0, 0, 40, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 40, 0, 40, 0, 0, 0, 0, 40, 0, 40, 40, 40, 40, 40, 40, 40, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 40, 40, 40, 40, 40, 40, 0, 0, 0, 0, 0, 40, 0, 40, 40, 40, 40, 0, 40, 40, 40, 0, 0, 40, 40, 0, 40, 40, 0, 0, 40, 0, 40, 0, 40, 0, 0, 40, 40, 0, 40, 0, 0, 0, 40, 0, 40, 40, 40, 0, 0, 40, 0, 0, 40, 40, 0, 40, 40, 0, 40, 0, 40, 0, 0, 0, 40, 0, 40, 0, 0, 40, 0, 0, 40, 0, 40, 0, 0, 0, 40, 0, 0, 0, 40, 0, 40, 0, 0, 40, 0, 0, 0, 40, 0, 0, 40, 0, 0, 0, 0, 40, 0, 0, 0, 40, 0, 0, 40, 0, 0, 40, 0, 0, 40, 40, 0, 40, 0, 40, 0, 0, 40, 40, 0, 0, 40, 40, 0, 40, 40, 0, 0, 40, 0, 40, 0, 40, 0, 0, 40, 40, 0, 40, 0, 0, 0, 0, 0, 0, 40, 40, 40, 40, 40, 40, 40, 0, 40, 0, 40, 40, 40, 40, 0, 0, 40, 40, 40, 40, 40, 40, 0, 40, 0, 0, 40, 40, 0, 40, 0, 0, 40, 0, 40, 0, 0, 40, 40, 0, 0, 0, 40, 0, 0, 40, 0, 0, 40, 0, 0, 40, 40, 0, 40, 0, 40, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 40, 0, 0, 40, 40, 0, 40, 0, 40, 0, 40, 0, 0, 40, 0, 40, 0, 0, 40, 40, 0, 0, 40, 0, 40, 0, 40, 0, 40, 0, 0, 40, 0, 0, 0, 40, 0, 0, 40, 40, 0, 40, 0, 0, 0, 0, 40, 0, 40, 0, 0, 40, 0, 0, 40, 0, 0, 0, 40, 0, 40, 0, 0, 0 }; static const ANTLR3_INT32 dfa38_accept[795] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa38_special[795] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 12, 6, 18, 4, 0, 7, 15, 13, 8, 19, 5, 1, 9, 16, -1, -1, -1, 25, -1, -1, -1, -1, -1, -1, -1, -1, 14, 10, 20, 3, 2, 11, 17, 50, -1, -1, 91, 251, 252, 67, 130, 165, 166, -1, -1, -1, -1, -1, -1, 101, 263, -1, -1, -1, -1, -1, -1, -1, 24, -1, 103, -1, -1, 23, -1, 129, 222, -1, -1, 68, -1, -1, -1, -1, -1, -1, -1, -1, -1, 54, -1, -1, -1, 278, -1, -1, -1, -1, -1, -1, 279, 202, -1, 142, -1, -1, -1, 277, 169, -1, 26, 51, 39, -1, 264, -1, -1, -1, 81, 108, 82, 27, 104, -1, 33, 184, 117, 260, 210, 46, -1, -1, -1, -1, -1, 268, -1, 242, -1, -1, 73, -1, 299, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 253, -1, 339, 118, -1, 40, -1, -1, -1, -1, -1, -1, -1, 164, 80, -1, -1, 340, 345, -1, 22, -1, 28, -1, 114, -1, -1, 331, -1, -1, -1, -1, -1, 69, 249, -1, 206, -1, 293, -1, -1, 378, 106, -1, -1, -1, 332, 98, -1, 147, -1, -1, -1, 163, 295, 341, -1, -1, -1, -1, -1, -1, -1, -1, -1, 276, -1, 381, 291, 124, -1, 394, 128, -1, -1, -1, -1, -1, 201, -1, 351, -1, 352, 379, 137, 160, -1, -1, -1, -1, -1, -1, -1, 148, -1, 188, 121, 189, -1, 258, 225, -1, -1, -1, -1, -1, 100, 219, -1, -1, 367, 126, -1, -1, -1, 198, -1, 226, -1, 207, 275, -1, 204, -1, -1, -1, 116, -1, 236, 155, 159, 138, 292, 270, -1, 156, -1, -1, 380, 283, -1, 175, -1, -1, 48, -1, -1, 310, -1, -1, -1, 241, 300, 319, 296, 254, -1, 377, 47, -1, -1, -1, -1, -1, -1, -1, -1, -1, 358, 294, 342, 176, -1, -1, -1, -1, -1, -1, -1, 44, -1, 349, 330, 370, 343, 71, -1, 200, 271, -1, -1, -1, -1, -1, 203, 115, 75, 125, -1, 390, -1, -1, -1, -1, -1, -1, -1, -1, 259, 246, 350, -1, -1, -1, -1, -1, -1, -1, 220, -1, 393, -1, -1, -1, -1, -1, 150, 208, 229, 238, -1, 324, 290, -1, 209, -1, -1, -1, 182, 53, -1, 185, 237, -1, 281, -1, 217, -1, -1, 139, -1, 162, -1, 123, 353, 94, 90, -1, -1, 388, 194, -1, -1, -1, 149, -1, 172, -1, 230, -1, -1, -1, 223, -1, 151, 247, 269, -1, 389, 287, 376, 186, -1, 335, 357, 320, 289, 301, 328, 280, 363, 288, 177, -1, 385, 325, 354, 111, -1, 302, 306, 326, 355, 197, -1, 99, -1, 364, 313, 314, 221, -1, 233, -1, -1, -1, -1, -1, -1, -1, 316, 362, 359, 392, 344, 338, 321, 157, -1, 284, 191, -1, -1, -1, -1, -1, -1, 239, 387, 303, 286, 183, -1, 154, -1, -1, -1, -1, 261, -1, -1, -1, 372, 133, -1, -1, 192, -1, -1, 195, 227, -1, 21, -1, 92, -1, 84, 240, -1, -1, 136, -1, 62, 371, 337, -1, 173, -1, -1, -1, 120, 244, -1, 127, 131, -1, -1, 41, -1, -1, 88, -1, 66, -1, 113, 329, 78, -1, 145, -1, 285, 56, -1, 262, 171, -1, 77, -1, 256, 178, 231, -1, 199, 245, 274, -1, 55, -1, 265, 119, -1, 95, 187, 170, -1, 64, 31, -1, 181, 110, 267, 29, -1, 272, 318, 347, -1, 317, 112, -1, 205, 132, -1, 42, 146, -1, -1, 32, -1, 45, -1, 37, 59, -1, -1, 336, 85, -1, -1, 43, -1, -1, 248, 60, -1, 134, -1, 144, -1, 52, 143, -1, -1, 218, -1, 174, 356, 309, 307, 304, 374, -1, -1, -1, -1, -1, -1, -1, 93, -1, 369, -1, -1, -1, -1, 361, 365, -1, -1, -1, -1, -1, -1, 180, -1, 334, 86, -1, -1, 375, -1, 65, 152, -1, 140, -1, 87, 257, -1, -1, 214, 315, 384, -1, 373, 211, -1, 38, 212, -1, 96, 232, -1, -1, 122, -1, 234, -1, 179, 107, 327, 308, 322, 36, -1, 311, 305, 391, 74, 382, 312, 323, 89, -1, 368, 348, 346, 360, 97, -1, 383, 105, 141, 282, 196, -1, 70, 215, -1, -1, 243, -1, 216, -1, 333, -1, 228, 255, -1, 63, -1, 235, 76, -1, -1, 190, 135, -1, 273, -1, 57, -1, 193, -1, 61, 49, -1, 34, 297, 266, -1, 58, 158, -1, -1, 153, -1, 167, 366, 386, 298, -1, 30, -1, 102, 161, -1, 168, 224, -1, 213, 250, 109, -1, 83, -1, 72, 79, 35 }; /** Used when there is no transition table entry for a particular state */ #define dfa38_T_empty NULL static const ANTLR3_INT32 dfa38_T0[] = { 391, 46, 46, 39, 653, 46, 657, 46, 659, 658, 653, 659, 656, 659, 46, 657, 46, 46, 46, 659, 653, 46, 46, 660, 653, 653, 46, 46, 659, 653, 46, 653, 46, 659, 659, 659, 659 }; static const ANTLR3_INT32 dfa38_T1[] = { 226, 75, 46, 39, 164, 101, 222, 111, 230, 223, 229, 224, 334, 230, 227, 222, 46, 46, 46, 230, 164, 46, 46, 225, 228, 195, 46, 46, 230, 164, 167, 164, 109, 230, 230, 230, 230 }; static const ANTLR3_INT32 dfa38_T2[] = { 46, 46, 46, 39, 197, 46, 46, 46, 46, 279, 46, 46, 281, 46, 46, 280, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 129, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T3[] = { 46, 46, 46, 39, 315, 46, 46, 46, 46, 428, 46, 46, 430, 46, 46, 429, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 217, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T4[] = { 46, 46, 46, 39, 46, 46, 144, 46, 146, 147, 46, 149, 148, 46, 46, 144, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T5[] = { 226, 75, 46, 39, 164, 101, 222, 111, 230, 223, 229, 224, 335, 230, 227, 222, 46, 46, 46, 230, 164, 46, 46, 225, 228, 195, 46, 46, 230, 164, 167, 164, 109, 230, 230, 230, 230 }; static const ANTLR3_INT32 dfa38_T6[] = { 46, 46, 46, 39, 46, 46, 144, 46, 146, 306, 46, 308, 307, 46, 46, 144, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T7[] = { 226, 75, 46, 39, 164, 101, 222, 111, 230, 223, 229, 224, 323, 230, 227, 222, 46, 46, 46, 230, 164, 46, 46, 225, 228, 195, 46, 46, 230, 164, 167, 164, 109, 230, 230, 230, 230 }; static const ANTLR3_INT32 dfa38_T8[] = { 46, 46, 46, 39, 46, 46, 144, 46, 146, 541, 46, 543, 542, 46, 46, 144, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T9[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 46, 46, 46, 250, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 167, 46, 170, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T10[] = { 343, 75, 46, 39, 338, 70, 339, 111, 344, 340, 343, 341, 455, 344, 70, 339, 46, 46, 46, 344, 332, 46, 46, 342, 343, 112, 46, 46, 344, 332, 108, 343, 109, 344, 344, 344, 344 }; static const ANTLR3_INT32 dfa38_T11[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 777, 46, 46, 778, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 129, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T12[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 789, 46, 46, 790, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 217, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T13[] = { 46, 46, 46, 39, 197, 46, 46, 46, 46, 196, 46, 46, 199, 46, 46, 198, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 129, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T14[] = { 46, 46, 46, 39, 315, 46, 46, 46, 46, 314, 46, 46, 317, 46, 46, 316, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 217, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T15[] = { 70, 75, 46, 39, 74, 70, 181, 46, 117, 182, 70, 78, 272, 68, 70, 181, 46, 46, 46, 68, 46, 46, 46, 69, 70, 70, 46, 46, 68, 46, 70, 70, 46, 68, 68, 68, 68 }; static const ANTLR3_INT32 dfa38_T16[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 46, 46, 46, 787, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 129, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T17[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 46, 46, 46, 793, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 217, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T18[] = { 370, 75, 46, 39, 373, 101, 366, 46, 368, 367, 372, 368, 475, 368, 98, 366, 46, 46, 46, 368, 373, 46, 46, 369, 371, 373, 46, 46, 368, 373, 46, 373, 46, 368, 368, 368, 368 }; static const ANTLR3_INT32 dfa38_T19[] = { 383, 75, 46, 39, 377, 70, 378, 46, 380, 379, 382, 380, 495, 380, 70, 378, 46, 46, 46, 380, 373, 46, 46, 381, 382, 382, 46, 46, 380, 373, 70, 382, 46, 380, 380, 380, 380 }; static const ANTLR3_INT32 dfa38_T20[] = { 14, -1, -1, -1, 9, 17, 11, 10, -1, 11, -1, 11, 18, 9, -1, -1, -1, 11, -1, -1, -1, 12, 13, -1, -1, -1, 11, -1, -1, -1, 16, 11, 11, 11, 11 }; static const ANTLR3_INT32 dfa38_T21[] = { 161, 75, 46, 39, 156, 70, 157, 111, 165, 158, 161, 159, 237, 165, 232, 157, 46, 46, 46, 165, 164, 46, 46, 160, 161, 112, 46, 46, 165, 164, 108, 161, 109, 165, 165, 165, 165 }; static const ANTLR3_INT32 dfa38_T22[] = { 370, 75, 46, 39, 653, 101, 647, 46, 649, 648, 652, 649, 646, 649, 98, 647, 46, 46, 46, 649, 653, 46, 46, 650, 651, 653, 46, 46, 649, 653, 46, 653, 46, 649, 649, 649, 649 }; static const ANTLR3_INT32 dfa38_T23[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 762, 46, 46, 763, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 129, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T24[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 785, 46, 46, 786, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 217, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T25[] = { 329, 75, 46, 39, 332, 101, 325, 111, 333, 326, 331, 327, 444, 333, 98, 325, 46, 46, 46, 333, 332, 46, 46, 328, 330, 195, 46, 46, 333, 332, 167, 332, 109, 333, 333, 333, 333 }; static const ANTLR3_INT32 dfa38_T26[] = { 14, -1, -1, -1, 9, 8, 11, 10, -1, 11, -1, 11, -1, 9, -1, -1, -1, 11, -1, -1, -1, 12, 13, -1, -1, -1, 11, -1, -1, -1, 7, 11, 11, 11, 11 }; static const ANTLR3_INT32 dfa38_T27[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 413, 46, 46, 415, 46, 46, 414, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T28[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 523, 46, 46, 525, 46, 46, 524, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T29[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 554, 46, 46, 556, 46, 46, 555, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T30[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 626, 46, 46, 628, 46, 46, 627, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T31[] = { 370, 75, 46, 39, 653, 101, 647, 46, 649, 648, 652, 649, 720, 649, 98, 647, 46, 46, 46, 649, 653, 46, 46, 650, 651, 653, 46, 46, 649, 653, 46, 653, 46, 649, 649, 649, 649 }; static const ANTLR3_INT32 dfa38_T32[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 779, 46, 46, 780, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 129, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T33[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 791, 46, 46, 792, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 217, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T34[] = { 46, 46, 46, 39, 206, 46, 144, 111, 146, 423, 46, 424, 425, 46, 46, 144, 46, 46, 46, 46, 46, 46, 46, 46, 46, 195, 46, 46, 46, 46, 167, 46, 109, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T35[] = { 46, 46, 46, 39, 206, 46, 144, 111, 146, 210, 46, 211, 212, 46, 46, 144, 46, 46, 46, 46, 46, 46, 46, 46, 46, 195, 46, 46, 46, 46, 167, 46, 109, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T36[] = { 46, 46, 46, 39, 206, 46, 144, 111, 146, 619, 46, 620, 621, 46, 46, 144, 46, 46, 46, 46, 46, 46, 46, 46, 46, 195, 46, 46, 46, 46, 167, 46, 109, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T37[] = { 46, 46, 46, 39, 206, 46, 144, 111, 146, 739, 46, 205, 740, 46, 46, 144, 46, 46, 46, 46, 46, 46, 46, 46, 46, 195, 46, 46, 46, 46, 167, 46, 109, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T38[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 46, 46, 46, 788, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 129, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T39[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 46, 46, 46, 794, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 217, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T40[] = { 46, 46, 46, 39, 206, 46, 144, 111, 146, 145, 46, 424, 539, 46, 46, 144, 46, 46, 46, 46, 46, 46, 46, 46, 46, 195, 46, 46, 46, 46, 167, 46, 109, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T41[] = { 383, 75, 46, 39, 663, 70, 664, 46, 666, 665, 668, 666, 662, 666, 70, 664, 46, 46, 46, 666, 653, 46, 46, 667, 668, 668, 46, 46, 666, 653, 70, 668, 46, 666, 666, 666, 666 }; static const ANTLR3_INT32 dfa38_T42[] = { 46, 46, 46, 39, 206, 46, 144, 111, 146, 145, 46, 211, 304, 46, 46, 144, 46, 46, 46, 46, 46, 46, 46, 46, 46, 195, 46, 46, 46, 46, 167, 46, 109, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T43[] = { 46, 46, 46, 39, 206, 46, 144, 111, 146, 145, 46, 620, 687, 46, 46, 144, 46, 46, 46, 46, 46, 46, 46, 46, 46, 195, 46, 46, 46, 46, 167, 46, 109, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T44[] = { 97, 75, 46, 39, 46, 101, 93, 111, 95, 154, 100, 95, 220, 95, 98, 93, 46, 46, 46, 95, 46, 46, 46, 96, 99, 195, 46, 46, 95, 46, 167, 46, 109, 95, 95, 95, 95 }; static const ANTLR3_INT32 dfa38_T45[] = { 46, 46, 46, 39, 206, 46, 144, 111, 146, 145, 46, 205, 764, 46, 46, 144, 46, 46, 46, 46, 46, 46, 46, 46, 46, 195, 46, 46, 46, 46, 167, 46, 109, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T46[] = { 383, 75, 46, 39, 663, 70, 664, 46, 666, 665, 668, 666, 776, 666, 70, 664, 46, 46, 46, 666, 653, 46, 46, 667, 668, 668, 46, 46, 666, 653, 70, 668, 46, 666, 666, 666, 666 }; static const ANTLR3_INT32 dfa38_T47[] = { -1 }; static const ANTLR3_INT32 dfa38_T48[] = { 70, 75, 46, 39, 74, 70, 76, 46, 117, 77, 70, 68, 116, 68, 70, 76, 46, 46, 46, 68, 46, 46, 46, 69, 70, 70, 46, 46, 68, 46, 70, 70, 46, 68, 68, 68, 68 }; static const ANTLR3_INT32 dfa38_T49[] = { 70, 75, 46, 39, 74, 70, 84, 46, 68, 85, 70, 68, 188, 68, 70, 84, 46, 46, 46, 68, 46, 46, 46, 69, 70, 70, 46, 46, 68, 46, 70, 70, 46, 68, 68, 68, 68 }; static const ANTLR3_INT32 dfa38_T50[] = { 164, 46, 46, 39, 164, 46, 240, 163, 242, 241, 164, 239, 238, 242, 46, 240, 46, 46, 46, 242, 164, 46, 46, 243, 164, 46, 46, 46, 242, 164, 167, 164, 162, 242, 242, 242, 242 }; static const ANTLR3_INT32 dfa38_T51[] = { 46, 46, 46, 39, 46, 46, 302, 46, 209, 303, 46, 46, 301, 46, 46, 302, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T52[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 352, 46, 46, 351, 46, 46, 352, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T53[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 364, 46, 46, 363, 46, 46, 364, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T54[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 264, 46, 46, 263, 46, 46, 264, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T55[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 448, 46, 46, 447, 46, 46, 448, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T56[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 459, 46, 46, 458, 46, 46, 459, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T57[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 477, 46, 46, 476, 46, 46, 477, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T58[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 494, 46, 46, 493, 46, 46, 494, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T59[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 577, 46, 46, 576, 46, 46, 577, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T60[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 590, 46, 46, 589, 46, 46, 590, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T61[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 710, 46, 46, 709, 46, 46, 710, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T62[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 725, 46, 46, 724, 46, 46, 725, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T63[] = { 6, -1, -1, -1, 1, 8, 3, 2, -1, 3, -1, 3, -1, 1, -1, -1, -1, 3, -1, -1, -1, 4, 5, -1, -1, -1, 3, -1, -1, -1, 7, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa38_T64[] = { 332, 46, 46, 39, 332, 46, 356, 111, 358, 357, 332, 355, 466, 358, 46, 356, 46, 46, 46, 358, 332, 46, 46, 359, 332, 195, 46, 46, 358, 332, 167, 332, 109, 358, 358, 358, 358 }; static const ANTLR3_INT32 dfa38_T65[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 126, 46, 46, 125, 46, 46, 126, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T66[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 201, 46, 46, 200, 46, 46, 201, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T67[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 515, 46, 46, 514, 46, 46, 515, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T68[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 568, 46, 46, 567, 46, 46, 568, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T69[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 593, 46, 46, 592, 46, 46, 593, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T70[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 673, 46, 46, 672, 46, 46, 673, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T71[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 755, 46, 46, 754, 46, 46, 755, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T72[] = { 46, 46, 46, 39, 403, 46, 46, 46, 46, 280, 46, 46, 405, 46, 46, 280, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 129, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T73[] = { 46, 46, 46, 39, 545, 46, 46, 46, 46, 429, 46, 46, 547, 46, 46, 429, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 217, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T74[] = { 370, 75, 46, 39, 653, 101, 647, 46, 649, 648, 652, 649, 774, 649, 98, 647, 46, 46, 46, 649, 653, 46, 46, 650, 651, 653, 46, 46, 649, 653, 46, 653, 46, 649, 649, 649, 649 }; static const ANTLR3_INT32 dfa38_T75[] = { 46, 46, 46, 39, 290, 46, 46, 46, 46, 198, 46, 46, 295, 46, 46, 198, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 129, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T76[] = { 46, 46, 46, 39, 436, 46, 46, 46, 46, 316, 46, 46, 441, 46, 46, 316, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 217, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T77[] = { 46, 46, 46, 39, 46, 46, 302, 46, 209, 303, 46, 143, 421, 46, 46, 302, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T78[] = { 70, 75, 46, 39, 74, 70, 84, 46, 68, 85, 70, 68, 124, 68, 70, 84, 46, 46, 46, 68, 46, 46, 46, 69, 70, 70, 46, 46, 68, 46, 70, 70, 46, 68, 68, 68, 68 }; static const ANTLR3_INT32 dfa38_T79[] = { 70, 75, 46, 39, 74, 70, 181, 46, 117, 182, 70, 78, 273, 68, 70, 181, 46, 46, 46, 68, 46, 46, 46, 69, 70, 70, 46, 46, 68, 46, 70, 70, 46, 68, 68, 68, 68 }; static const ANTLR3_INT32 dfa38_T80[] = { 46, 46, 46, 39, 178, 46, 268, 46, 270, 269, 178, 270, 599, 270, 267, 268, 46, 46, 46, 270, 178, 46, 46, 271, 178, 178, 46, 46, 270, 178, 46, 178, 46, 270, 270, 270, 270 }; static const ANTLR3_INT32 dfa38_T81[] = { 46, 46, 46, 39, 485, 46, 510, 46, 512, 511, 485, 512, 728, 512, 581, 510, 46, 46, 46, 512, 485, 46, 46, 513, 485, 485, 46, 46, 512, 485, 46, 485, 46, 512, 512, 512, 512 }; static const ANTLR3_INT32 dfa38_T82[] = { 97, 75, 46, 39, 46, 101, 93, 46, 95, 94, 100, 95, 296, 95, 98, 93, 46, 46, 46, 95, 46, 46, 46, 96, 99, 46, 46, 46, 95, 46, 46, 46, 46, 95, 95, 95, 95 }; static const ANTLR3_INT32 dfa38_T83[] = { 14, -1, -1, -1, 9, -1, 11, 10, -1, 11, -1, 11, -1, 9, -1, -1, -1, 11, -1, -1, -1, 12, 13, -1, -1, -1, 11, -1, -1, -1, 15, 11, 11, 11, 11 }; static const ANTLR3_INT32 dfa38_T84[] = { 70, 75, 46, 39, 74, 70, 84, 46, 68, 85, 70, 68, 83, 68, 70, 84, 46, 46, 46, 68, 46, 46, 46, 69, 70, 70, 46, 46, 68, 46, 70, 70, 46, 68, 68, 68, 68 }; static const ANTLR3_INT32 dfa38_T85[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 346, 46, 46, 345, 46, 46, 346, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T86[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 443, 46, 46, 442, 46, 46, 443, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T87[] = { 329, 75, 46, 39, 332, 101, 325, 111, 333, 326, 331, 327, 454, 333, 98, 325, 46, 46, 46, 333, 332, 46, 46, 328, 330, 195, 46, 46, 333, 332, 167, 332, 109, 333, 333, 333, 333 }; static const ANTLR3_INT32 dfa38_T88[] = { 383, 75, 46, 39, 663, 70, 664, 46, 666, 665, 668, 666, 722, 666, 70, 664, 46, 46, 46, 666, 653, 46, 46, 667, 668, 668, 46, 46, 666, 653, 70, 668, 46, 666, 666, 666, 666 }; static const ANTLR3_INT32 dfa38_T89[] = { 391, 46, 46, 39, 653, 46, 657, 46, 659, 658, 653, 659, 713, 659, 46, 657, 46, 46, 46, 659, 653, 46, 46, 660, 653, 653, 46, 46, 659, 653, 46, 653, 46, 659, 659, 659, 659 }; static const ANTLR3_INT32 dfa38_T90[] = { 46, 46, 46, 39, 403, 46, 46, 46, 46, 524, 46, 46, 607, 46, 46, 524, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 129, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T91[] = { 46, 46, 46, 39, 545, 46, 46, 46, 46, 627, 46, 46, 694, 46, 46, 627, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 217, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T92[] = { 97, 75, 46, 39, 46, 101, 93, 46, 95, 94, 100, 95, 133, 95, 98, 93, 46, 46, 46, 95, 46, 46, 46, 96, 99, 46, 46, 46, 95, 46, 46, 46, 46, 95, 95, 95, 95 }; static const ANTLR3_INT32 dfa38_T93[] = { 46, 46, 46, 39, 178, 46, 268, 46, 270, 269, 178, 270, 393, 270, 267, 268, 46, 46, 46, 270, 178, 46, 46, 271, 178, 178, 46, 46, 270, 178, 46, 178, 46, 270, 270, 270, 270 }; static const ANTLR3_INT32 dfa38_T94[] = { 46, 46, 46, 39, 485, 46, 510, 46, 512, 511, 485, 512, 595, 512, 581, 510, 46, 46, 46, 512, 485, 46, 46, 513, 485, 485, 46, 46, 512, 485, 46, 485, 46, 512, 512, 512, 512 }; static const ANTLR3_INT32 dfa38_T95[] = { 161, 75, 46, 39, 156, 70, 157, 111, 165, 158, 161, 159, 231, 165, 232, 157, 46, 46, 46, 165, 164, 46, 46, 160, 161, 112, 46, 46, 165, 164, 108, 161, 109, 165, 165, 165, 165 }; static const ANTLR3_INT32 dfa38_T96[] = { 46, 46, 46, 39, 290, 46, 46, 46, 46, 414, 46, 46, 533, 46, 46, 414, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 129, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T97[] = { 46, 46, 46, 39, 436, 46, 46, 46, 46, 555, 46, 46, 636, 46, 46, 555, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 217, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T98[] = { 46, 46, 46, 39, 403, 46, 46, 46, 46, 402, 46, 291, 404, 46, 46, 280, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 129, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T99[] = { 46, 46, 46, 39, 545, 46, 46, 46, 46, 544, 46, 437, 546, 46, 46, 429, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 217, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T100[] = { 332, 46, 46, 39, 332, 46, 356, 46, 358, 357, 332, 355, 354, 358, 46, 356, 46, 46, 46, 358, 332, 46, 46, 359, 332, 46, 46, 46, 358, 332, 46, 332, 46, 358, 358, 358, 358 }; static const ANTLR3_INT32 dfa38_T101[] = { 161, 75, 46, 39, 156, 70, 157, 111, 165, 158, 161, 159, 462, 165, 232, 157, 46, 46, 46, 165, 164, 46, 46, 160, 161, 112, 46, 46, 165, 164, 108, 161, 109, 165, 165, 165, 165 }; static const ANTLR3_INT32 dfa38_T102[] = { 161, 75, 46, 39, 156, 70, 157, 111, 165, 158, 161, 159, 234, 165, 232, 157, 46, 46, 46, 165, 164, 46, 46, 160, 161, 112, 46, 46, 165, 164, 108, 161, 109, 165, 165, 165, 165 }; static const ANTLR3_INT32 dfa38_T103[] = { 46, 46, 46, 39, 290, 46, 46, 46, 46, 289, 46, 291, 292, 46, 46, 198, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 129, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T104[] = { 46, 46, 46, 39, 436, 46, 46, 46, 46, 435, 46, 437, 438, 46, 46, 316, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 217, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T105[] = { 46, 46, 46, 39, 178, 46, 268, 46, 270, 269, 178, 270, 394, 270, 267, 268, 46, 46, 46, 270, 178, 46, 46, 271, 178, 178, 46, 46, 270, 178, 46, 178, 46, 270, 270, 270, 270 }; static const ANTLR3_INT32 dfa38_T106[] = { 46, 46, 46, 39, 485, 46, 510, 46, 512, 511, 485, 512, 596, 512, 581, 510, 46, 46, 46, 512, 485, 46, 46, 513, 485, 485, 46, 46, 512, 485, 46, 485, 46, 512, 512, 512, 512 }; static const ANTLR3_INT32 dfa38_T107[] = { 97, 75, 46, 39, 46, 101, 93, 46, 95, 94, 100, 95, 134, 95, 98, 93, 46, 46, 46, 95, 46, 46, 46, 96, 99, 46, 46, 46, 95, 46, 46, 46, 46, 95, 95, 95, 95 }; static const ANTLR3_INT32 dfa38_T108[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 46, 46, 46, 169, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 170, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T109[] = { 383, 75, 46, 39, 663, 70, 664, 46, 666, 665, 668, 666, 723, 666, 70, 664, 46, 46, 46, 666, 653, 46, 46, 667, 668, 668, 46, 46, 666, 653, 70, 668, 46, 666, 666, 666, 666 }; static const ANTLR3_INT32 dfa38_T110[] = { 46, 46, 46, 39, 403, 46, 46, 46, 46, 521, 46, 291, 522, 46, 46, 280, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 129, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T111[] = { 46, 46, 46, 39, 545, 46, 46, 46, 46, 624, 46, 437, 625, 46, 46, 429, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 217, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T112[] = { 370, 75, 46, 39, 653, 101, 647, 46, 649, 648, 652, 649, 707, 649, 98, 647, 46, 46, 46, 649, 653, 46, 46, 650, 651, 653, 46, 46, 649, 653, 46, 653, 46, 649, 649, 649, 649 }; static const ANTLR3_INT32 dfa38_T113[] = { 370, 75, 46, 39, 653, 101, 647, 46, 649, 648, 652, 649, 711, 649, 98, 647, 46, 46, 46, 649, 653, 46, 46, 650, 651, 653, 46, 46, 649, 653, 46, 653, 46, 649, 649, 649, 649 }; static const ANTLR3_INT32 dfa38_T114[] = { 46, 46, 45, 39, 57, 46, 38, 46, 42, 41, 46, 42, 59, 42, 46, 38, 46, 46, 46, 42, 46, 46, 46, 43, 44, 46, 46, 46, 42, 46, 46, 46, 46, 42, 42, 42, 42 }; static const ANTLR3_INT32 dfa38_T115[] = { 370, 75, 46, 39, 653, 101, 647, 46, 649, 648, 652, 649, 712, 649, 98, 647, 46, 46, 46, 649, 653, 46, 46, 650, 651, 653, 46, 46, 649, 653, 46, 653, 46, 649, 649, 649, 649 }; static const ANTLR3_INT32 dfa38_T116[] = { 46, 46, 46, 39, 290, 46, 46, 46, 46, 411, 46, 291, 412, 46, 46, 198, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 129, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T117[] = { 46, 46, 46, 39, 436, 46, 46, 46, 46, 552, 46, 437, 553, 46, 46, 316, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 217, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T118[] = { 391, 46, 46, 39, 373, 46, 387, 46, 389, 388, 373, 389, 671, 389, 46, 387, 46, 46, 46, 389, 373, 46, 46, 390, 373, 373, 46, 46, 389, 373, 46, 373, 46, 389, 389, 389, 389 }; static const ANTLR3_INT32 dfa38_T119[] = { 46, 46, 46, 39, 403, 46, 46, 46, 46, 280, 46, 291, 604, 46, 46, 280, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 129, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T120[] = { 46, 46, 46, 39, 545, 46, 46, 46, 46, 429, 46, 437, 691, 46, 46, 429, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 217, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T121[] = { 226, 75, 46, 39, 164, 101, 222, 111, 230, 223, 229, 224, 318, 230, 227, 222, 46, 46, 46, 230, 164, 46, 46, 225, 228, 195, 46, 46, 230, 164, 167, 164, 109, 230, 230, 230, 230 }; static const ANTLR3_INT32 dfa38_T122[] = { 6, -1, -1, -1, 1, -1, 3, 2, -1, 3, -1, 3, -1, 1, -1, -1, -1, 3, -1, -1, -1, 4, 5, -1, -1, -1, 3, -1, -1, -1, -1, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa38_T123[] = { 46, 46, 46, 39, 206, 46, 144, 111, 146, 689, 46, 143, 690, 46, 46, 144, 46, 46, 46, 46, 46, 46, 46, 46, 46, 195, 46, 46, 46, 46, 167, 46, 109, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T124[] = { 46, 46, 46, 39, 290, 46, 46, 46, 46, 198, 46, 291, 530, 46, 46, 198, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 129, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T125[] = { 46, 46, 46, 39, 436, 46, 46, 46, 46, 316, 46, 437, 633, 46, 46, 316, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 217, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T126[] = { 226, 75, 46, 39, 164, 101, 222, 111, 230, 223, 229, 224, 561, 230, 227, 222, 46, 46, 46, 230, 164, 46, 46, 225, 228, 195, 46, 46, 230, 164, 167, 164, 109, 230, 230, 230, 230 }; static const ANTLR3_INT32 dfa38_T127[] = { 329, 75, 46, 39, 332, 101, 325, 46, 333, 326, 331, 327, 324, 333, 98, 325, 46, 46, 46, 333, 332, 46, 46, 328, 330, 46, 46, 46, 333, 332, 46, 332, 46, 333, 333, 333, 333 }; static const ANTLR3_INT32 dfa38_T128[] = { 343, 75, 46, 39, 338, 70, 339, 111, 344, 340, 343, 341, 643, 344, 70, 339, 46, 46, 46, 344, 332, 46, 46, 342, 343, 112, 46, 46, 344, 332, 108, 343, 109, 344, 344, 344, 344 }; static const ANTLR3_INT32 dfa38_T129[] = { 70, 75, 46, 39, 74, 70, 66, 46, 68, 278, 70, 68, 277, 68, 70, 66, 46, 46, 46, 68, 46, 46, 46, 69, 70, 70, 46, 46, 68, 46, 70, 70, 46, 68, 68, 68, 68 }; static const ANTLR3_INT32 dfa38_T130[] = { 70, 75, 46, 39, 74, 70, 66, 46, 68, 122, 70, 68, 121, 68, 70, 66, 46, 46, 46, 68, 46, 46, 46, 69, 70, 70, 46, 46, 68, 46, 70, 70, 46, 68, 68, 68, 68 }; static const ANTLR3_INT32 dfa38_T131[] = { 70, 75, 46, 39, 172, 70, 173, 46, 175, 174, 177, 175, 259, 175, 260, 173, 46, 46, 46, 175, 178, 46, 46, 176, 177, 177, 46, 46, 175, 178, 70, 177, 46, 175, 175, 175, 175 }; static const ANTLR3_INT32 dfa38_T132[] = { 70, 75, 46, 39, 497, 70, 498, 46, 500, 499, 502, 500, 585, 500, 586, 498, 46, 46, 46, 500, 485, 46, 46, 501, 502, 502, 46, 46, 500, 485, 70, 502, 46, 500, 500, 500, 500 }; static const ANTLR3_INT32 dfa38_T133[] = { 226, 75, 46, 39, 164, 101, 222, 111, 230, 223, 229, 224, 320, 230, 227, 222, 46, 46, 46, 230, 164, 46, 46, 225, 228, 195, 46, 46, 230, 164, 167, 164, 109, 230, 230, 230, 230 }; static const ANTLR3_INT32 dfa38_T134[] = { 70, 75, 46, 39, 74, 70, 66, 46, 68, 520, 70, 68, 519, 68, 70, 66, 46, 46, 46, 68, 46, 46, 46, 69, 70, 70, 46, 46, 68, 46, 70, 70, 46, 68, 68, 68, 68 }; static const ANTLR3_INT32 dfa38_T135[] = { 46, 46, 45, 39, 57, 46, 38, 46, 42, 41, 46, 42, 60, 42, 46, 38, 46, 46, 46, 42, 46, 46, 46, 43, 44, 46, 46, 46, 42, 46, 46, 46, 46, 42, 42, 42, 42 }; static const ANTLR3_INT32 dfa38_T136[] = { 370, 75, 46, 39, 653, 101, 647, 46, 649, 648, 652, 649, 708, 649, 98, 647, 46, 46, 46, 649, 653, 46, 46, 650, 651, 653, 46, 46, 649, 653, 46, 653, 46, 649, 649, 649, 649 }; static const ANTLR3_INT32 dfa38_T137[] = { 46, 46, 46, 39, 128, 46, 46, 46, 46, 90, 46, 46, 127, 46, 46, 90, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 129, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T138[] = { 46, 46, 46, 39, 216, 46, 46, 46, 46, 151, 46, 46, 215, 46, 46, 151, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 217, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T139[] = { 46, 46, 46, 39, 403, 46, 46, 46, 46, 605, 46, 284, 606, 46, 46, 524, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 129, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T140[] = { 46, 46, 46, 39, 545, 46, 46, 46, 46, 692, 46, 433, 693, 46, 46, 627, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 217, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T141[] = { 383, 75, 46, 39, 663, 70, 664, 46, 666, 665, 668, 666, 726, 666, 70, 664, 46, 46, 46, 666, 653, 46, 46, 667, 668, 668, 46, 46, 666, 653, 70, 668, 46, 666, 666, 666, 666 }; static const ANTLR3_INT32 dfa38_T142[] = { 46, 46, 46, 39, 290, 46, 46, 46, 46, 531, 46, 284, 532, 46, 46, 414, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 129, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T143[] = { 46, 46, 46, 39, 436, 46, 46, 46, 46, 634, 46, 433, 635, 46, 46, 555, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 217, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T144[] = { 391, 46, 46, 39, 373, 46, 387, 46, 389, 388, 373, 389, 505, 389, 46, 387, 46, 46, 46, 389, 373, 46, 46, 390, 373, 373, 46, 46, 389, 373, 46, 373, 46, 389, 389, 389, 389 }; static const ANTLR3_INT32 dfa38_T145[] = { 70, 75, 46, 39, 74, 70, 66, 46, 68, 115, 70, 68, 114, 68, 70, 66, 46, 46, 46, 68, 46, 46, 46, 69, 70, 70, 46, 46, 68, 46, 70, 70, 46, 68, 68, 68, 68 }; static const ANTLR3_INT32 dfa38_T146[] = { 343, 75, 46, 39, 338, 70, 339, 111, 344, 340, 343, 341, 457, 344, 70, 339, 46, 46, 46, 344, 332, 46, 46, 342, 343, 112, 46, 46, 344, 332, 108, 343, 109, 344, 344, 344, 344 }; static const ANTLR3_INT32 dfa38_T147[] = { 46, 46, 46, 39, 403, 46, 46, 46, 46, 676, 46, 284, 677, 46, 46, 524, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 129, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T148[] = { 46, 46, 46, 39, 545, 46, 46, 46, 46, 741, 46, 433, 742, 46, 46, 627, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 217, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T149[] = { 97, 75, 46, 39, 46, 101, 93, 46, 95, 154, 100, 95, 153, 95, 98, 93, 46, 46, 46, 95, 46, 46, 46, 96, 99, 46, 46, 46, 95, 46, 46, 46, 46, 95, 95, 95, 95 }; static const ANTLR3_INT32 dfa38_T150[] = { 46, 46, 46, 39, 290, 46, 46, 46, 46, 612, 46, 284, 613, 46, 46, 414, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 129, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T151[] = { 46, 46, 46, 39, 436, 46, 46, 46, 46, 699, 46, 433, 700, 46, 46, 555, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 217, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T152[] = { 343, 75, 46, 39, 338, 70, 339, 46, 344, 340, 343, 341, 337, 344, 70, 339, 46, 46, 46, 344, 332, 46, 46, 342, 343, 70, 46, 46, 344, 332, 70, 343, 46, 344, 344, 344, 344 }; static const ANTLR3_INT32 dfa38_T153[] = { 329, 75, 46, 39, 332, 101, 325, 111, 333, 326, 331, 327, 642, 333, 98, 325, 46, 46, 46, 333, 332, 46, 46, 328, 330, 195, 46, 46, 333, 332, 167, 332, 109, 333, 333, 333, 333 }; static const ANTLR3_INT32 dfa38_T154[] = { 391, 46, 46, 39, 373, 46, 387, 46, 389, 388, 373, 389, 506, 389, 46, 387, 46, 46, 46, 389, 373, 46, 46, 390, 373, 373, 46, 46, 389, 373, 46, 373, 46, 389, 389, 389, 389 }; static const ANTLR3_INT32 dfa38_T155[] = { 46, 46, 46, 39, 403, 46, 46, 46, 46, 524, 46, 284, 730, 46, 46, 524, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 129, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T156[] = { 46, 46, 46, 39, 545, 46, 46, 46, 46, 627, 46, 433, 765, 46, 46, 627, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 217, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T157[] = { 97, 75, 46, 39, 178, 101, 252, 46, 254, 253, 258, 254, 360, 254, 256, 252, 46, 46, 46, 254, 178, 46, 46, 255, 257, 178, 46, 46, 254, 178, 46, 178, 46, 254, 254, 254, 254 }; static const ANTLR3_INT32 dfa38_T158[] = { 97, 75, 46, 39, 485, 101, 479, 46, 481, 480, 484, 481, 572, 481, 573, 479, 46, 46, 46, 481, 485, 46, 46, 482, 483, 485, 46, 46, 481, 485, 46, 485, 46, 481, 481, 481, 481 }; static const ANTLR3_INT32 dfa38_T159[] = { 46, 46, 46, 39, 290, 46, 46, 46, 46, 414, 46, 284, 682, 46, 46, 414, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 129, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T160[] = { 46, 46, 46, 39, 436, 46, 46, 46, 46, 555, 46, 433, 747, 46, 46, 555, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 217, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T161[] = { 332, 46, 46, 39, 332, 46, 356, 111, 358, 357, 332, 355, 452, 358, 46, 356, 46, 46, 46, 358, 332, 46, 46, 359, 332, 195, 46, 46, 358, 332, 167, 332, 109, 358, 358, 358, 358 }; static const ANTLR3_INT32 dfa38_T162[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 236, 46, 46, 235, 46, 46, 236, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T163[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 322, 46, 46, 321, 46, 46, 322, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T164[] = { 329, 75, 46, 39, 332, 101, 325, 111, 333, 326, 331, 327, 446, 333, 98, 325, 46, 46, 46, 333, 332, 46, 46, 328, 330, 195, 46, 46, 333, 332, 167, 332, 109, 333, 333, 333, 333 }; static const ANTLR3_INT32 dfa38_T165[] = { 70, 75, 46, 39, 74, 70, 76, 46, 79, 77, 70, 78, 179, 68, 70, 76, 46, 46, 46, 68, 46, 46, 46, 69, 70, 70, 46, 46, 68, 46, 70, 70, 46, 68, 68, 68, 68 }; static const ANTLR3_INT32 dfa38_T166[] = { 164, 46, 46, 39, 164, 46, 240, 111, 242, 241, 164, 239, 348, 242, 247, 240, 46, 46, 46, 242, 164, 46, 46, 243, 164, 195, 46, 46, 242, 164, 167, 164, 109, 242, 242, 242, 242 }; static const ANTLR3_INT32 dfa38_T167[] = { 383, 75, 46, 39, 377, 70, 378, 46, 380, 379, 382, 380, 490, 380, 70, 378, 46, 46, 46, 380, 373, 46, 46, 381, 382, 382, 46, 46, 380, 373, 70, 382, 46, 380, 380, 380, 380 }; static const ANTLR3_INT32 dfa38_T168[] = { 343, 75, 46, 39, 338, 70, 339, 111, 344, 340, 343, 341, 456, 344, 70, 339, 46, 46, 46, 344, 332, 46, 46, 342, 343, 112, 46, 46, 344, 332, 108, 343, 109, 344, 344, 344, 344 }; static const ANTLR3_INT32 dfa38_T169[] = { 161, 75, 46, 39, 156, 70, 157, 111, 165, 158, 161, 159, 233, 165, 232, 157, 46, 46, 46, 165, 164, 46, 46, 160, 161, 112, 46, 46, 165, 164, 108, 161, 109, 165, 165, 165, 165 }; static const ANTLR3_INT32 dfa38_T170[] = { 70, 75, 46, 39, 107, 70, 66, 111, 68, 278, 70, 68, 398, 68, 70, 66, 46, 46, 46, 68, 46, 46, 46, 69, 70, 112, 46, 46, 68, 46, 108, 70, 109, 68, 68, 68, 68 }; static const ANTLR3_INT32 dfa38_T171[] = { 70, 75, 46, 39, 107, 70, 66, 111, 68, 520, 70, 68, 601, 68, 70, 66, 46, 46, 46, 68, 46, 46, 46, 69, 70, 112, 46, 46, 68, 46, 108, 70, 109, 68, 68, 68, 68 }; static const ANTLR3_INT32 dfa38_T172[] = { 70, 75, 46, 39, 107, 70, 66, 111, 68, 122, 70, 68, 184, 68, 70, 66, 46, 46, 46, 68, 46, 46, 46, 69, 70, 112, 46, 46, 68, 46, 108, 70, 109, 68, 68, 68, 68 }; static const ANTLR3_INT32 dfa38_T173[] = { 329, 75, 46, 39, 332, 101, 325, 111, 333, 326, 331, 327, 449, 333, 98, 325, 46, 46, 46, 333, 332, 46, 46, 328, 330, 195, 46, 46, 333, 332, 167, 332, 109, 333, 333, 333, 333 }; static const ANTLR3_INT32 dfa38_T174[] = { 70, 75, 46, 39, 74, 70, 84, 46, 68, 85, 70, 68, 123, 68, 70, 84, 46, 46, 46, 68, 46, 46, 46, 69, 70, 70, 46, 46, 68, 46, 70, 70, 46, 68, 68, 68, 68 }; static const ANTLR3_INT32 dfa38_T175[] = { 329, 75, 46, 39, 332, 101, 325, 111, 333, 326, 331, 327, 450, 333, 98, 325, 46, 46, 46, 333, 332, 46, 46, 328, 330, 195, 46, 46, 333, 332, 167, 332, 109, 333, 333, 333, 333 }; static const ANTLR3_INT32 dfa38_T176[] = { 329, 75, 46, 39, 332, 101, 325, 111, 333, 326, 331, 327, 451, 333, 98, 325, 46, 46, 46, 333, 332, 46, 46, 328, 330, 195, 46, 46, 333, 332, 167, 332, 109, 333, 333, 333, 333 }; static const ANTLR3_INT32 dfa38_T177[] = { 97, 75, 46, 39, 46, 101, 93, 46, 95, 94, 100, 95, 92, 95, 98, 93, 46, 46, 46, 95, 46, 46, 46, 96, 99, 46, 46, 46, 95, 46, 46, 46, 46, 95, 95, 95, 95 }; static const ANTLR3_INT32 dfa38_T178[] = { 70, 75, 46, 39, 107, 70, 66, 111, 68, 115, 70, 68, 168, 68, 70, 66, 46, 46, 46, 68, 46, 46, 46, 69, 70, 112, 46, 46, 68, 46, 108, 70, 109, 68, 68, 68, 68 }; static const ANTLR3_INT32 dfa38_T179[] = { 46, 46, 46, 39, 46, 46, 46, 111, 46, 300, 46, 46, 420, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 195, 46, 46, 46, 46, 167, 46, 109, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T180[] = { 46, 46, 46, 39, 46, 46, 46, 111, 46, 287, 46, 46, 410, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 195, 46, 46, 46, 46, 167, 46, 109, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T181[] = { 70, 75, 46, 39, 107, 70, 76, 111, 79, 77, 70, 110, 113, 68, 70, 76, 46, 46, 46, 68, 46, 46, 46, 69, 70, 112, 46, 46, 68, 46, 108, 70, 109, 68, 68, 68, 68 }; static const ANTLR3_INT32 dfa38_T182[] = { 343, 75, 46, 39, 338, 70, 339, 111, 344, 340, 343, 341, 461, 344, 70, 339, 46, 46, 46, 344, 332, 46, 46, 342, 343, 112, 46, 46, 344, 332, 108, 343, 109, 344, 344, 344, 344 }; static const ANTLR3_INT32 dfa38_T183[] = { 226, 75, 46, 39, 164, 101, 222, 111, 230, 223, 229, 224, 319, 230, 227, 222, 46, 46, 46, 230, 164, 46, 46, 225, 228, 195, 46, 46, 230, 164, 167, 164, 109, 230, 230, 230, 230 }; static const ANTLR3_INT32 dfa38_T184[] = { 370, 75, 46, 39, 373, 101, 366, 46, 368, 367, 372, 368, 473, 368, 98, 366, 46, 46, 46, 368, 373, 46, 46, 369, 371, 373, 46, 46, 368, 373, 46, 373, 46, 368, 368, 368, 368 }; static const ANTLR3_INT32 dfa38_T185[] = { 329, 75, 46, 39, 332, 101, 325, 111, 333, 326, 331, 327, 445, 333, 98, 325, 46, 46, 46, 333, 332, 46, 46, 328, 330, 195, 46, 46, 333, 332, 167, 332, 109, 333, 333, 333, 333 }; static const ANTLR3_INT32 dfa38_T186[] = { 70, 75, 46, 39, 74, 70, 76, 46, 79, 77, 70, 78, 73, 68, 70, 76, 46, 46, 46, 68, 46, 46, 46, 69, 70, 70, 46, 46, 68, 46, 70, 70, 46, 68, 68, 68, 68 }; static const ANTLR3_INT32 dfa38_T187[] = { 161, 75, 46, 39, 156, 70, 157, 111, 165, 158, 161, 159, 248, 165, 232, 157, 46, 46, 46, 165, 164, 46, 46, 160, 161, 112, 46, 46, 165, 164, 108, 161, 109, 165, 165, 165, 165 }; static const ANTLR3_INT32 dfa38_T188[] = { 343, 75, 46, 39, 338, 70, 339, 111, 344, 340, 343, 341, 460, 344, 70, 339, 46, 46, 46, 344, 332, 46, 46, 342, 343, 112, 46, 46, 344, 332, 108, 343, 109, 344, 344, 344, 344 }; static const ANTLR3_INT32 dfa38_T189[] = { 70, 75, 46, 39, 74, 70, 76, 46, 79, 80, 70, 82, 81, 68, 70, 76, 46, 46, 46, 68, 46, 46, 46, 69, 70, 70, 46, 46, 68, 46, 70, 70, 46, 68, 68, 68, 68 }; static const ANTLR3_INT32 dfa38_T190[] = { 46, 46, 46, 39, 178, 46, 268, 46, 270, 269, 178, 270, 392, 270, 267, 268, 46, 46, 46, 270, 178, 46, 46, 271, 178, 178, 46, 46, 270, 178, 46, 178, 46, 270, 270, 270, 270 }; static const ANTLR3_INT32 dfa38_T191[] = { 46, 46, 46, 39, 485, 46, 510, 46, 512, 511, 485, 512, 594, 512, 581, 510, 46, 46, 46, 512, 485, 46, 46, 513, 485, 485, 46, 46, 512, 485, 46, 485, 46, 512, 512, 512, 512 }; static const ANTLR3_INT32 dfa38_T192[] = { 97, 75, 46, 39, 46, 101, 93, 46, 95, 94, 100, 95, 132, 95, 98, 93, 46, 46, 46, 95, 46, 46, 46, 96, 99, 46, 46, 46, 95, 46, 46, 46, 46, 95, 95, 95, 95 }; static const ANTLR3_INT32 dfa38_T193[] = { 70, 75, 46, 39, 74, 70, 76, 46, 79, 399, 70, 401, 400, 68, 70, 76, 46, 46, 46, 68, 46, 46, 46, 69, 70, 70, 46, 46, 68, 46, 70, 70, 46, 68, 68, 68, 68 }; static const ANTLR3_INT32 dfa38_T194[] = { 70, 75, 46, 39, 74, 70, 76, 46, 79, 185, 70, 187, 186, 68, 70, 76, 46, 46, 46, 68, 46, 46, 46, 69, 70, 70, 46, 46, 68, 46, 70, 70, 46, 68, 68, 68, 68 }; static const ANTLR3_INT32 dfa38_T195[] = { 46, 46, 46, 39, 130, 46, 46, 46, 46, 46, 46, 46, 131, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T196[] = { 46, 46, 46, 39, 218, 46, 46, 46, 46, 46, 46, 46, 219, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T197[] = { 329, 75, 46, 39, 332, 101, 325, 111, 333, 326, 331, 327, 453, 333, 98, 325, 46, 46, 46, 333, 332, 46, 46, 328, 330, 195, 46, 46, 333, 332, 167, 332, 109, 333, 333, 333, 333 }; static const ANTLR3_INT32 dfa38_T198[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 287, 46, 46, 286, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T199[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 300, 46, 46, 299, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T200[] = { 46, 46, 46, 39, 46, 46, 144, 46, 209, 145, 46, 46, 208, 46, 46, 144, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T201[] = { 70, 75, 46, 39, 107, 70, 76, 111, 79, 77, 70, 110, 106, 68, 70, 76, 46, 46, 46, 68, 46, 46, 46, 69, 70, 112, 46, 46, 68, 46, 108, 70, 109, 68, 68, 68, 68 }; static const ANTLR3_INT32 dfa38_T202[] = { 226, 75, 46, 39, 164, 101, 222, 111, 230, 223, 229, 224, 336, 230, 227, 222, 46, 46, 46, 230, 164, 46, 46, 225, 228, 195, 46, 46, 230, 164, 167, 164, 109, 230, 230, 230, 230 }; static const ANTLR3_INT32 dfa38_T203[] = { 46, 46, 46, 39, 128, 46, 46, 46, 46, 192, 46, 46, 285, 46, 46, 192, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 129, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T204[] = { 46, 46, 46, 39, 216, 46, 46, 46, 46, 312, 46, 46, 434, 46, 46, 312, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 217, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T205[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 46, 46, 46, 244, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 245, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T206[] = { 15 }; static const ANTLR3_INT32 dfa38_T207[] = { 70, 75, 46, 39, 107, 70, 76, 111, 79, 118, 70, 119, 120, 68, 70, 76, 46, 46, 46, 68, 46, 46, 46, 69, 70, 112, 46, 46, 68, 46, 108, 70, 109, 68, 68, 68, 68 }; static const ANTLR3_INT32 dfa38_T208[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 409, 46, 46, 408, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T209[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 416, 46, 46, 417, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T210[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 551, 46, 46, 550, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T211[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 557, 46, 46, 558, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T212[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 611, 46, 46, 610, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T213[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 616, 46, 46, 617, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T214[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 698, 46, 46, 697, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T215[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 703, 46, 46, 704, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T216[] = { 97, 75, 46, 39, 178, 101, 252, 46, 254, 253, 258, 254, 251, 254, 256, 252, 46, 46, 46, 254, 178, 46, 46, 255, 257, 178, 46, 46, 254, 178, 46, 178, 46, 254, 254, 254, 254 }; static const ANTLR3_INT32 dfa38_T217[] = { 97, 75, 46, 39, 485, 101, 479, 46, 481, 480, 484, 481, 584, 481, 573, 479, 46, 46, 46, 481, 485, 46, 46, 482, 483, 485, 46, 46, 481, 485, 46, 485, 46, 481, 481, 481, 481 }; static const ANTLR3_INT32 dfa38_T218[] = { 70, 75, 46, 39, 107, 70, 76, 111, 79, 274, 70, 275, 276, 68, 70, 76, 46, 46, 46, 68, 46, 46, 46, 69, 70, 112, 46, 46, 68, 46, 108, 70, 109, 68, 68, 68, 68 }; static const ANTLR3_INT32 dfa38_T219[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 734, 46, 46, 733, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T220[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 737, 46, 46, 738, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T221[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 769, 46, 46, 768, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T222[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 772, 46, 46, 773, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T223[] = { 70, 75, 46, 39, 107, 70, 76, 111, 79, 516, 70, 517, 518, 68, 70, 76, 46, 46, 46, 68, 46, 46, 46, 69, 70, 112, 46, 46, 68, 46, 108, 70, 109, 68, 68, 68, 68 }; static const ANTLR3_INT32 dfa38_T224[] = { 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58 }; static const ANTLR3_INT32 dfa38_T225[] = { 46, 46, 46, 39, 189, 46, 46, 46, 46, 191, 46, 46, 190, 46, 46, 192, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T226[] = { 46, 46, 46, 39, 309, 46, 46, 46, 46, 311, 46, 46, 310, 46, 46, 312, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T227[] = { 70, 75, 46, 39, 107, 70, 76, 111, 79, 674, 70, 110, 675, 68, 70, 76, 46, 46, 46, 68, 46, 46, 46, 69, 70, 112, 46, 46, 68, 46, 108, 70, 109, 68, 68, 68, 68 }; static const ANTLR3_INT32 dfa38_T228[] = { 391, 46, 46, 39, 373, 46, 387, 46, 389, 388, 373, 389, 504, 389, 46, 387, 46, 46, 46, 389, 373, 46, 46, 390, 373, 373, 46, 46, 389, 373, 46, 373, 46, 389, 389, 389, 389 }; static const ANTLR3_INT32 dfa38_T229[] = { 391, 46, 46, 39, 653, 46, 657, 46, 659, 658, 653, 659, 775, 659, 46, 657, 46, 46, 46, 659, 653, 46, 46, 660, 653, 653, 46, 46, 659, 653, 46, 653, 46, 659, 659, 659, 659 }; static const ANTLR3_INT32 dfa38_T230[] = { 70, 75, 46, 39, 107, 70, 76, 111, 79, 77, 70, 275, 397, 68, 70, 76, 46, 46, 46, 68, 46, 46, 46, 69, 70, 112, 46, 46, 68, 46, 108, 70, 109, 68, 68, 68, 68 }; static const ANTLR3_INT32 dfa38_T231[] = { 70, 75, 46, 39, 107, 70, 76, 111, 79, 77, 70, 517, 600, 68, 70, 76, 46, 46, 46, 68, 46, 46, 46, 69, 70, 112, 46, 46, 68, 46, 108, 70, 109, 68, 68, 68, 68 }; static const ANTLR3_INT32 dfa38_T232[] = { 70, 75, 46, 39, 107, 70, 76, 111, 79, 77, 70, 119, 183, 68, 70, 76, 46, 46, 46, 68, 46, 46, 46, 69, 70, 112, 46, 46, 68, 46, 108, 70, 109, 68, 68, 68, 68 }; static const ANTLR3_INT32 dfa38_T233[] = { 70, 75, 46, 39, 107, 70, 76, 111, 79, 77, 70, 110, 729, 68, 70, 76, 46, 46, 46, 68, 46, 46, 46, 69, 70, 112, 46, 46, 68, 46, 108, 70, 109, 68, 68, 68, 68 }; static const ANTLR3_INT32 dfa38_T234[] = { 391, 46, 46, 39, 373, 46, 387, 46, 389, 388, 373, 389, 386, 389, 46, 387, 46, 46, 46, 389, 373, 46, 46, 390, 373, 373, 46, 46, 389, 373, 46, 373, 46, 389, 389, 389, 389 }; static const ANTLR3_INT32 dfa38_T235[] = { 46, 46, 46, 39, 46, 46, 302, 46, 209, 303, 46, 143, 422, 46, 46, 302, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T236[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 46, 46, 46, 64, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T237[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 46, 46, 46, 72, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T238[] = { 46, 46, 46, 39, 128, 46, 46, 46, 46, 282, 46, 284, 283, 46, 46, 192, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 129, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T239[] = { 46, 46, 46, 39, 216, 46, 46, 46, 46, 431, 46, 433, 432, 46, 46, 312, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 217, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T240[] = { 70, 75, 46, 39, 172, 70, 173, 46, 175, 174, 177, 175, 503, 175, 260, 173, 46, 46, 46, 175, 178, 46, 46, 176, 177, 177, 46, 46, 175, 178, 70, 177, 46, 175, 175, 175, 175 }; static const ANTLR3_INT32 dfa38_T241[] = { 70, 75, 46, 39, 497, 70, 498, 46, 500, 499, 502, 500, 727, 500, 586, 498, 46, 46, 46, 500, 485, 46, 46, 501, 502, 502, 46, 46, 500, 485, 70, 502, 46, 500, 500, 500, 500 }; static const ANTLR3_INT32 dfa38_T242[] = { 46, 46, 45, 39, 46, 46, 38, 46, 42, 41, 46, 42, 40, 42, 46, 38, 46, 46, 46, 42, 46, 46, 46, 43, 44, 46, 46, 46, 42, 46, 46, 46, 46, 42, 42, 42, 42 }; static const ANTLR3_INT32 dfa38_T243[] = { 391, 46, 46, 39, 653, 46, 657, 46, 659, 658, 653, 659, 716, 659, 46, 657, 46, 46, 46, 659, 653, 46, 46, 660, 653, 653, 46, 46, 659, 653, 46, 653, 46, 659, 659, 659, 659 }; static const ANTLR3_INT32 dfa38_T244[] = { 46, 46, 46, 39, 46, 46, 144, 46, 146, 145, 46, 143, 142, 46, 46, 144, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T245[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 753, 46, 46, 752, 46, 46, 753, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T246[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 563, 46, 46, 562, 46, 46, 563, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T247[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 464, 46, 46, 463, 46, 46, 464, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T248[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 385, 46, 46, 384, 46, 46, 385, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T249[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 472, 46, 46, 471, 46, 46, 472, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T250[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 757, 46, 46, 756, 46, 46, 757, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T251[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 670, 46, 46, 669, 46, 46, 670, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T252[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 565, 46, 46, 564, 46, 46, 565, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T253[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 571, 46, 46, 570, 46, 46, 571, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T254[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 583, 46, 46, 582, 46, 46, 583, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T255[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 655, 46, 46, 654, 46, 46, 655, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T256[] = { 46, 46, 46, 39, 128, 46, 46, 46, 46, 406, 46, 284, 407, 46, 46, 192, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 129, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T257[] = { 46, 46, 46, 39, 216, 46, 46, 46, 46, 548, 46, 433, 549, 46, 46, 312, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 217, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T258[] = { 164, 46, 46, 39, 164, 46, 240, 111, 242, 241, 164, 239, 347, 242, 247, 240, 46, 46, 46, 242, 164, 46, 46, 243, 164, 195, 46, 46, 242, 164, 167, 164, 109, 242, 242, 242, 242 }; static const ANTLR3_INT32 dfa38_T259[] = { 370, 75, 46, 39, 373, 101, 366, 46, 368, 367, 372, 368, 365, 368, 98, 366, 46, 46, 46, 368, 373, 46, 46, 369, 371, 373, 46, 46, 368, 373, 46, 373, 46, 368, 368, 368, 368 }; static const ANTLR3_INT32 dfa38_T260[] = { 97, 75, 46, 39, 46, 101, 93, 46, 95, 94, 100, 95, 137, 95, 98, 93, 46, 46, 46, 95, 46, 46, 46, 96, 99, 46, 46, 46, 95, 46, 46, 46, 46, 95, 95, 95, 95 }; static const ANTLR3_INT32 dfa38_T261[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 293, 46, 46, 294, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T262[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 439, 46, 46, 440, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T263[] = { 164, 46, 46, 39, 164, 46, 240, 163, 242, 241, 164, 239, 249, 242, 46, 240, 46, 46, 46, 242, 164, 46, 46, 243, 164, 195, 46, 46, 242, 164, 167, 164, 162, 242, 242, 242, 242 }; static const ANTLR3_INT32 dfa38_T264[] = { 97, 75, 46, 39, 46, 101, 93, 46, 95, 94, 100, 95, 139, 95, 98, 93, 46, 46, 46, 95, 46, 46, 46, 96, 99, 46, 46, 46, 95, 46, 46, 46, 46, 95, 95, 95, 95 }; static const ANTLR3_INT32 dfa38_T265[] = { 97, 75, 46, 39, 46, 101, 93, 46, 95, 94, 100, 95, 138, 95, 98, 93, 46, 46, 46, 95, 46, 46, 46, 96, 99, 46, 46, 46, 95, 46, 46, 46, 46, 95, 95, 95, 95 }; static const ANTLR3_INT32 dfa38_T266[] = { 97, 75, 46, 39, 46, 101, 93, 46, 95, 94, 100, 95, 141, 95, 98, 93, 46, 46, 46, 95, 46, 46, 46, 96, 99, 46, 46, 46, 95, 46, 46, 46, 46, 95, 95, 95, 95 }; static const ANTLR3_INT32 dfa38_T267[] = { 97, 75, 46, 39, 46, 101, 93, 46, 95, 94, 100, 95, 140, 95, 98, 93, 46, 46, 46, 95, 46, 46, 46, 96, 99, 46, 46, 46, 95, 46, 46, 46, 46, 95, 95, 95, 95 }; static const ANTLR3_INT32 dfa38_T268[] = { 391, 46, 46, 39, 653, 46, 657, 46, 659, 658, 653, 659, 717, 659, 46, 657, 46, 46, 46, 659, 653, 46, 46, 660, 653, 653, 46, 46, 659, 653, 46, 653, 46, 659, 659, 659, 659 }; static const ANTLR3_INT32 dfa38_T269[] = { 46, 46, 46, 39, 128, 46, 46, 46, 46, 192, 46, 284, 526, 46, 46, 192, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 129, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T270[] = { 46, 46, 46, 39, 216, 46, 46, 46, 46, 312, 46, 433, 629, 46, 46, 312, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 217, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T271[] = { 70, 75, 46, 39, 74, 70, 181, 46, 117, 182, 70, 68, 180, 68, 70, 181, 46, 46, 46, 68, 46, 46, 46, 69, 70, 70, 46, 46, 68, 46, 70, 70, 46, 68, 68, 68, 68 }; static const ANTLR3_INT32 dfa38_T272[] = { 370, 75, 46, 39, 373, 101, 366, 46, 368, 367, 372, 368, 489, 368, 98, 366, 46, 46, 46, 368, 373, 46, 46, 369, 371, 373, 46, 46, 368, 373, 46, 373, 46, 368, 368, 368, 368 }; static const ANTLR3_INT32 dfa38_T273[] = { 28, -1, -1, -1, 29, 21, 25, 24, -1, 25, 22, 25, -1, 23, -1, -1, -1, 25, -1, -1, -1, 26, 27, -1, -1, -1, 25, -1, -1, -1, 20, 25, 25, 25, 25 }; static const ANTLR3_INT32 dfa38_T274[] = { 18, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 19 }; static const ANTLR3_INT32 dfa38_T275[] = { 46, 46, 45, 39, 57, 46, 38, 46, 42, 41, 46, 42, 61, 42, 46, 38, 46, 46, 46, 42, 46, 46, 46, 43, 44, 46, 46, 46, 42, 46, 46, 46, 46, 42, 42, 42, 42 }; static const ANTLR3_INT32 dfa38_T276[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 418, 46, 284, 419, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T277[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 559, 46, 433, 560, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T278[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 527, 46, 529, 528, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T279[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 534, 46, 535, 536, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T280[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 630, 46, 632, 631, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T281[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 637, 46, 638, 639, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T282[] = { 46, 46, 45, 39, 57, 46, 38, 46, 42, 41, 46, 42, 63, 42, 46, 38, 46, 46, 46, 42, 46, 46, 46, 43, 44, 46, 46, 46, 42, 46, 46, 46, 46, 42, 42, 42, 42 }; static const ANTLR3_INT32 dfa38_T283[] = { 226, 75, 46, 39, 164, 101, 222, 111, 230, 223, 229, 224, 221, 230, 227, 222, 46, 46, 46, 230, 164, 46, 46, 225, 228, 195, 46, 46, 230, 164, 167, 164, 109, 230, 230, 230, 230 }; static const ANTLR3_INT32 dfa38_T284[] = { 97, 75, 46, 39, 178, 101, 252, 46, 254, 253, 258, 254, 569, 254, 256, 252, 46, 46, 46, 254, 178, 46, 46, 255, 257, 178, 46, 46, 254, 178, 46, 178, 46, 254, 254, 254, 254 }; static const ANTLR3_INT32 dfa38_T285[] = { 97, 75, 46, 39, 485, 101, 479, 46, 481, 480, 484, 481, 714, 481, 573, 479, 46, 46, 46, 481, 485, 46, 46, 482, 483, 485, 46, 46, 481, 485, 46, 485, 46, 481, 481, 481, 481 }; static const ANTLR3_INT32 dfa38_T286[] = { 46, 46, 45, 39, 57, 46, 38, 46, 42, 41, 46, 42, 62, 42, 46, 38, 46, 46, 46, 42, 46, 46, 46, 43, 44, 46, 46, 46, 42, 46, 46, 46, 46, 42, 42, 42, 42 }; static const ANTLR3_INT32 dfa38_T287[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 679, 46, 681, 680, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T288[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 684, 46, 685, 686, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T289[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 744, 46, 746, 745, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T290[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 749, 46, 750, 751, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T291[] = { 383, 75, 46, 39, 377, 70, 378, 46, 380, 379, 382, 380, 376, 380, 70, 378, 46, 46, 46, 380, 373, 46, 46, 381, 382, 382, 46, 46, 380, 373, 70, 382, 46, 380, 380, 380, 380 }; static const ANTLR3_INT32 dfa38_T292[] = { 46, 46, 46, 39, 206, 46, 144, 111, 146, 145, 46, 205, 204, 46, 46, 144, 46, 46, 46, 46, 46, 46, 46, 46, 46, 195, 46, 46, 46, 46, 167, 46, 109, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T293[] = { 70, 75, 46, 39, 74, 70, 84, 46, 68, 85, 70, 68, 88, 68, 70, 84, 46, 46, 46, 68, 46, 46, 46, 69, 70, 70, 46, 46, 68, 46, 70, 70, 46, 68, 68, 68, 68 }; static const ANTLR3_INT32 dfa38_T294[] = { 46, 46, 46, 39, 46, 46, 103, 46, 46, 214, 46, 46, 213, 46, 46, 103, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T295[] = { 46, 46, 46, 39, 46, 46, 103, 46, 46, 427, 46, 46, 426, 46, 46, 103, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T296[] = { 46, 46, 46, 39, 178, 46, 268, 46, 270, 269, 178, 270, 288, 270, 46, 268, 46, 46, 46, 270, 178, 46, 46, 271, 178, 178, 46, 46, 270, 178, 46, 178, 46, 270, 270, 270, 270 }; static const ANTLR3_INT32 dfa38_T297[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 537, 46, 284, 538, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T298[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 640, 46, 433, 641, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T299[] = { 46, 46, 46, 39, 46, 46, 103, 46, 46, 623, 46, 46, 622, 46, 46, 103, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T300[] = { 46, 46, 46, 39, 485, 46, 510, 46, 512, 511, 485, 512, 509, 512, 46, 510, 46, 46, 46, 512, 485, 46, 46, 513, 485, 485, 46, 46, 512, 485, 46, 485, 46, 512, 512, 512, 512 }; static const ANTLR3_INT32 dfa38_T301[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 608, 46, 529, 609, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T302[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 614, 46, 535, 615, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T303[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 695, 46, 632, 696, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T304[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 701, 46, 638, 702, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T305[] = { 19 }; static const ANTLR3_INT32 dfa38_T306[] = { 37 }; static const ANTLR3_INT32 dfa38_T307[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 731, 46, 681, 732, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T308[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 735, 46, 685, 736, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T309[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 766, 46, 746, 767, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T310[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 770, 46, 750, 771, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T311[] = { 383, 75, 46, 39, 663, 70, 664, 46, 666, 665, 668, 666, 721, 666, 70, 664, 46, 46, 46, 666, 653, 46, 46, 667, 668, 668, 46, 46, 666, 653, 70, 668, 46, 666, 666, 666, 666 }; static const ANTLR3_INT32 dfa38_T312[] = { 164, 46, 46, 39, 164, 46, 240, 111, 242, 241, 164, 239, 566, 242, 247, 240, 46, 46, 46, 242, 164, 46, 46, 243, 164, 195, 46, 46, 242, 164, 167, 164, 109, 242, 242, 242, 242 }; static const ANTLR3_INT32 dfa38_T313[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 46, 46, 284, 618, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T314[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 46, 46, 433, 705, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T315[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 46, 46, 529, 678, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T316[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 46, 46, 535, 683, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T317[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 46, 46, 632, 743, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T318[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 46, 46, 638, 748, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T319[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 46, 46, 681, 758, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T320[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 46, 46, 685, 761, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T321[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 46, 46, 746, 781, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T322[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 46, 46, 750, 784, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T323[] = { 383, 75, 46, 39, 377, 70, 378, 46, 380, 379, 382, 380, 661, 380, 70, 378, 46, 46, 46, 380, 373, 46, 46, 381, 382, 382, 46, 46, 380, 373, 70, 382, 46, 380, 380, 380, 380 }; static const ANTLR3_INT32 dfa38_T324[] = { 17, -1, -1, -1, -1, -1, -1, 18, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 16 }; static const ANTLR3_INT32 dfa38_T325[] = { 46, 46, 46, 39, 178, 46, 268, 46, 270, 269, 178, 270, 266, 270, 267, 268, 46, 46, 46, 270, 178, 46, 46, 271, 178, 178, 46, 46, 270, 178, 46, 178, 46, 270, 270, 270, 270 }; static const ANTLR3_INT32 dfa38_T326[] = { 46, 46, 46, 39, 485, 46, 510, 46, 512, 511, 485, 512, 580, 512, 581, 510, 46, 46, 46, 512, 485, 46, 46, 513, 485, 485, 46, 46, 512, 485, 46, 485, 46, 512, 512, 512, 512 }; static const ANTLR3_INT32 dfa38_T327[] = { 46, 46, 46, 39, 46, 46, 103, 46, 46, 203, 46, 46, 202, 46, 46, 103, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T328[] = { 70, 75, 46, 39, 172, 70, 173, 46, 175, 174, 177, 175, 261, 175, 260, 173, 46, 46, 46, 175, 178, 46, 46, 176, 177, 177, 46, 46, 175, 178, 70, 177, 46, 175, 175, 175, 175 }; static const ANTLR3_INT32 dfa38_T329[] = { 70, 75, 46, 39, 497, 70, 498, 46, 500, 499, 502, 500, 587, 500, 586, 498, 46, 46, 46, 500, 485, 46, 46, 501, 502, 502, 46, 46, 500, 485, 70, 502, 46, 500, 500, 500, 500 }; static const ANTLR3_INT32 dfa38_T330[] = { 332, 46, 46, 39, 332, 46, 356, 111, 358, 357, 332, 355, 465, 358, 46, 356, 46, 46, 46, 358, 332, 46, 46, 359, 332, 195, 46, 46, 358, 332, 167, 332, 109, 358, 358, 358, 358 }; static const ANTLR3_INT32 dfa38_T331[] = { 54, -1, -1, -1, 55, -1, 51, 50, -1, 51, 22, 51, -1, 49, -1, -1, -1, 51, -1, -1, -1, 52, 53, -1, -1, -1, 51, -1, -1, -1, 37, 51, 51, 51, 51 }; static const ANTLR3_INT32 dfa38_T332[] = { 97, 75, 46, 39, 485, 101, 479, 46, 481, 480, 484, 481, 478, 481, 98, 479, 46, 46, 46, 481, 485, 46, 46, 482, 483, 485, 46, 46, 481, 485, 46, 485, 46, 481, 481, 481, 481 }; static const ANTLR3_INT32 dfa38_T333[] = { 46, 46, 46, 39, 46, 46, 46, 111, 46, 46, 46, 46, 166, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 167, 46, 109, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T334[] = { 161, 75, 46, 39, 156, 70, 157, 163, 165, 158, 161, 159, 155, 165, 70, 157, 46, 46, 46, 165, 164, 46, 46, 160, 161, 112, 46, 46, 165, 164, 108, 161, 162, 165, 165, 165, 165 }; static const ANTLR3_INT32 dfa38_T335[] = { 46, 46, 45, 39, 57, 46, 38, 46, 42, 41, 46, 42, 56, 42, 46, 38, 46, 46, 46, 42, 46, 46, 46, 43, 44, 46, 46, 46, 42, 46, 46, 46, 46, 42, 42, 42, 42 }; static const ANTLR3_INT32 dfa38_T336[] = { 370, 75, 46, 39, 653, 101, 647, 46, 649, 648, 652, 649, 706, 649, 98, 647, 46, 46, 46, 649, 653, 46, 46, 650, 651, 653, 46, 46, 649, 653, 46, 653, 46, 649, 649, 649, 649 }; static const ANTLR3_INT32 dfa38_T337[] = { 332, 46, 46, 39, 332, 46, 356, 111, 358, 357, 332, 355, 644, 358, 46, 356, 46, 46, 46, 358, 332, 46, 46, 359, 332, 195, 46, 46, 358, 332, 167, 332, 109, 358, 358, 358, 358 }; static const ANTLR3_INT32 dfa38_T338[] = { 46, 46, 46, 39, 194, 46, 46, 111, 46, 46, 46, 46, 193, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 195, 46, 46, 46, 46, 167, 46, 109, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T339[] = { 70, 75, 46, 39, 172, 70, 173, 46, 175, 174, 177, 175, 262, 175, 260, 173, 46, 46, 46, 175, 178, 46, 46, 176, 177, 177, 46, 46, 175, 178, 70, 177, 46, 175, 175, 175, 175 }; static const ANTLR3_INT32 dfa38_T340[] = { 70, 75, 46, 39, 497, 70, 498, 46, 500, 499, 502, 500, 588, 500, 586, 498, 46, 46, 46, 500, 485, 46, 46, 501, 502, 502, 46, 46, 500, 485, 70, 502, 46, 500, 500, 500, 500 }; static const ANTLR3_INT32 dfa38_T341[] = { 370, 75, 46, 39, 373, 101, 366, 46, 368, 367, 372, 368, 645, 368, 98, 366, 46, 46, 46, 368, 373, 46, 46, 369, 371, 373, 46, 46, 368, 373, 46, 373, 46, 368, 368, 368, 368 }; static const ANTLR3_INT32 dfa38_T342[] = { 46, 46, 46, 39, 206, 46, 46, 111, 46, 46, 46, 46, 313, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 195, 46, 46, 46, 46, 167, 46, 109, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T343[] = { 97, 75, 46, 39, 178, 101, 252, 46, 254, 253, 258, 254, 374, 254, 256, 252, 46, 46, 46, 254, 178, 46, 46, 255, 257, 178, 46, 46, 254, 178, 46, 178, 46, 254, 254, 254, 254 }; static const ANTLR3_INT32 dfa38_T344[] = { 97, 75, 46, 39, 485, 101, 479, 46, 481, 480, 484, 481, 578, 481, 573, 479, 46, 46, 46, 481, 485, 46, 46, 482, 483, 485, 46, 46, 481, 485, 46, 485, 46, 481, 481, 481, 481 }; static const ANTLR3_INT32 dfa38_T345[] = { 97, 75, 46, 39, 178, 101, 252, 46, 254, 253, 258, 254, 361, 254, 256, 252, 46, 46, 46, 254, 178, 46, 46, 255, 257, 178, 46, 46, 254, 178, 46, 178, 46, 254, 254, 254, 254 }; static const ANTLR3_INT32 dfa38_T346[] = { 97, 75, 46, 39, 485, 101, 479, 46, 481, 480, 484, 481, 574, 481, 573, 479, 46, 46, 46, 481, 485, 46, 46, 482, 483, 485, 46, 46, 481, 485, 46, 485, 46, 481, 481, 481, 481 }; static const ANTLR3_INT32 dfa38_T347[] = { 97, 75, 46, 39, 178, 101, 252, 46, 254, 253, 258, 254, 375, 254, 256, 252, 46, 46, 46, 254, 178, 46, 46, 255, 257, 178, 46, 46, 254, 178, 46, 178, 46, 254, 254, 254, 254 }; static const ANTLR3_INT32 dfa38_T348[] = { 97, 75, 46, 39, 485, 101, 479, 46, 481, 480, 484, 481, 579, 481, 573, 479, 46, 46, 46, 481, 485, 46, 46, 482, 483, 485, 46, 46, 481, 485, 46, 485, 46, 481, 481, 481, 481 }; static const ANTLR3_INT32 dfa38_T349[] = { 35, -1, -1, -1, 36, 21, 32, 31, -1, 32, 22, 32, -1, 30, -1, -1, -1, 32, -1, -1, -1, 33, 34, -1, -1, -1, 32, -1, -1, -1, 20, 32, 32, 32, 32 }; static const ANTLR3_INT32 dfa38_T350[] = { 70, 75, 46, 39, 107, 70, 76, 111, 79, 602, 70, 78, 603, 68, 70, 76, 46, 46, 46, 68, 46, 46, 46, 69, 70, 112, 46, 46, 68, 46, 108, 70, 109, 68, 68, 68, 68 }; static const ANTLR3_INT32 dfa38_T351[] = { 70, 75, 46, 39, 172, 70, 173, 46, 175, 174, 177, 175, 171, 175, 70, 173, 46, 46, 46, 175, 178, 46, 46, 176, 177, 177, 46, 46, 175, 178, 70, 177, 46, 175, 175, 175, 175 }; static const ANTLR3_INT32 dfa38_T352[] = { 46, 46, 46, 39, 206, 46, 103, 111, 46, 427, 46, 46, 540, 46, 46, 103, 46, 46, 46, 46, 46, 46, 46, 46, 46, 195, 46, 46, 46, 46, 167, 46, 109, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T353[] = { 164, 46, 46, 39, 164, 46, 240, 46, 242, 241, 164, 239, 353, 242, 46, 240, 46, 46, 46, 242, 164, 46, 46, 243, 164, 46, 46, 46, 242, 164, 167, 164, 245, 242, 242, 242, 242 }; static const ANTLR3_INT32 dfa38_T354[] = { 46, 46, 46, 39, 206, 46, 103, 111, 46, 214, 46, 46, 305, 46, 46, 103, 46, 46, 46, 46, 46, 46, 46, 46, 46, 195, 46, 46, 46, 46, 167, 46, 109, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T355[] = { 70, 75, 46, 39, 497, 70, 498, 46, 500, 499, 502, 500, 496, 500, 70, 498, 46, 46, 46, 500, 485, 46, 46, 501, 502, 502, 46, 46, 500, 485, 70, 502, 46, 500, 500, 500, 500 }; static const ANTLR3_INT32 dfa38_T356[] = { 46, 46, 46, 39, 46, 46, 144, 46, 146, 145, 46, 143, 297, 46, 46, 144, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T357[] = { 46, 46, 46, 39, 206, 46, 103, 111, 46, 623, 46, 46, 688, 46, 46, 103, 46, 46, 46, 46, 46, 46, 46, 46, 46, 195, 46, 46, 46, 46, 167, 46, 109, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T358[] = { 164, 46, 46, 39, 164, 46, 240, 111, 242, 241, 164, 239, 349, 242, 247, 240, 46, 46, 46, 242, 164, 46, 46, 243, 164, 195, 46, 46, 242, 164, 167, 164, 109, 242, 242, 242, 242 }; static const ANTLR3_INT32 dfa38_T359[] = { 332, 46, 46, 39, 332, 46, 356, 111, 358, 357, 332, 355, 467, 358, 46, 356, 46, 46, 46, 358, 332, 46, 46, 359, 332, 195, 46, 46, 358, 332, 167, 332, 109, 358, 358, 358, 358 }; static const ANTLR3_INT32 dfa38_T360[] = { 391, 46, 46, 39, 373, 46, 387, 46, 389, 388, 373, 389, 488, 389, 46, 387, 46, 46, 46, 389, 373, 46, 46, 390, 373, 373, 46, 46, 389, 373, 46, 373, 46, 389, 389, 389, 389 }; static const ANTLR3_INT32 dfa38_T361[] = { 97, 75, 46, 39, 178, 101, 252, 46, 254, 253, 258, 254, 362, 254, 256, 252, 46, 46, 46, 254, 178, 46, 46, 255, 257, 178, 46, 46, 254, 178, 46, 178, 46, 254, 254, 254, 254 }; static const ANTLR3_INT32 dfa38_T362[] = { 97, 75, 46, 39, 485, 101, 479, 46, 481, 480, 484, 481, 575, 481, 573, 479, 46, 46, 46, 481, 485, 46, 46, 482, 483, 485, 46, 46, 481, 485, 46, 485, 46, 481, 481, 481, 481 }; static const ANTLR3_INT32 dfa38_T363[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 87, 46, 46, 86, 46, 46, 87, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T364[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 136, 46, 46, 135, 46, 46, 136, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T365[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 396, 46, 46, 395, 46, 46, 396, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T366[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 470, 46, 46, 469, 46, 46, 470, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T367[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 508, 46, 46, 507, 46, 46, 508, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T368[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 598, 46, 46, 597, 46, 46, 598, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T369[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 719, 46, 46, 718, 46, 46, 719, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T370[] = { 383, 75, 46, 39, 377, 70, 378, 46, 380, 379, 382, 380, 491, 380, 70, 378, 46, 46, 46, 380, 373, 46, 46, 381, 382, 382, 46, 46, 380, 373, 70, 382, 46, 380, 380, 380, 380 }; static const ANTLR3_INT32 dfa38_T371[] = { 46, 46, 46, 39, 206, 46, 103, 111, 46, 203, 46, 46, 298, 46, 46, 103, 46, 46, 46, 46, 46, 46, 46, 46, 46, 195, 46, 46, 46, 46, 167, 46, 109, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T372[] = { 70, 75, 46, 39, 172, 70, 173, 46, 175, 174, 177, 175, 265, 175, 260, 173, 46, 46, 46, 175, 178, 46, 46, 176, 177, 177, 46, 46, 175, 178, 70, 177, 46, 175, 175, 175, 175 }; static const ANTLR3_INT32 dfa38_T373[] = { 70, 75, 46, 39, 497, 70, 498, 46, 500, 499, 502, 500, 591, 500, 586, 498, 46, 46, 46, 500, 485, 46, 46, 501, 502, 502, 46, 46, 500, 485, 70, 502, 46, 500, 500, 500, 500 }; static const ANTLR3_INT32 dfa38_T374[] = { 164, 46, 46, 39, 164, 46, 240, 111, 242, 241, 164, 239, 246, 242, 247, 240, 46, 46, 46, 242, 164, 46, 46, 243, 164, 195, 46, 46, 242, 164, 167, 164, 109, 242, 242, 242, 242 }; static const ANTLR3_INT32 dfa38_T375[] = { 332, 46, 46, 39, 332, 46, 356, 111, 358, 357, 332, 355, 468, 358, 46, 356, 46, 46, 46, 358, 332, 46, 46, 359, 332, 195, 46, 46, 358, 332, 167, 332, 109, 358, 358, 358, 358 }; static const ANTLR3_INT32 dfa38_T376[] = { 70, 46, 46, 39, 46, 70, 66, 46, 68, 67, 70, 68, 65, 68, 70, 66, 46, 46, 46, 68, 71, 46, 46, 69, 70, 70, 46, 46, 68, 46, 70, 70, 46, 68, 68, 68, 68 }; static const ANTLR3_INT32 dfa38_T377[] = { 46, 46, 46, 39, 46, 46, 103, 46, 46, 104, 46, 46, 102, 46, 46, 103, 46, 46, 46, 46, 105, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T378[] = { 164, 46, 46, 39, 164, 46, 240, 111, 242, 241, 164, 239, 350, 242, 247, 240, 46, 46, 46, 242, 164, 46, 46, 243, 164, 195, 46, 46, 242, 164, 167, 164, 109, 242, 242, 242, 242 }; static const ANTLR3_INT32 dfa38_T379[] = { 46, 46, 46, 39, 206, 46, 144, 111, 146, 145, 46, 205, 207, 46, 46, 144, 46, 46, 46, 46, 46, 46, 46, 46, 46, 195, 46, 46, 46, 46, 167, 46, 109, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T380[] = { 383, 75, 46, 39, 377, 70, 378, 46, 380, 379, 382, 380, 492, 380, 70, 378, 46, 46, 46, 380, 373, 46, 46, 381, 382, 382, 46, 46, 380, 373, 70, 382, 46, 380, 380, 380, 380 }; static const ANTLR3_INT32 dfa38_T381[] = { 391, 46, 46, 39, 653, 46, 657, 46, 659, 658, 653, 659, 715, 659, 46, 657, 46, 46, 46, 659, 653, 46, 46, 660, 653, 653, 46, 46, 659, 653, 46, 653, 46, 659, 659, 659, 659 }; static const ANTLR3_INT32 dfa38_T382[] = { 370, 75, 46, 39, 373, 101, 366, 46, 368, 367, 372, 368, 487, 368, 98, 366, 46, 46, 46, 368, 373, 46, 46, 369, 371, 373, 46, 46, 368, 373, 46, 373, 46, 368, 368, 368, 368 }; static const ANTLR3_INT32 dfa38_T383[] = { 46, 46, 46, 39, 91, 46, 46, 46, 46, 90, 46, 46, 89, 46, 46, 90, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T384[] = { 46, 46, 46, 39, 152, 46, 46, 46, 46, 151, 46, 46, 150, 46, 46, 151, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T385[] = { 370, 75, 46, 39, 373, 101, 366, 46, 368, 367, 372, 368, 474, 368, 98, 366, 46, 46, 46, 368, 373, 46, 46, 369, 371, 373, 46, 46, 368, 373, 46, 373, 46, 368, 368, 368, 368 }; static const ANTLR3_INT32 dfa38_T386[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 759, 46, 46, 760, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 129, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T387[] = { 46, 46, 46, 39, 46, 46, 46, 46, 46, 782, 46, 46, 783, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 217, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa38_T388[] = { 370, 75, 46, 39, 373, 101, 366, 46, 368, 367, 372, 368, 486, 368, 98, 366, 46, 46, 46, 368, 373, 46, 46, 369, 371, 373, 46, 46, 368, 373, 46, 373, 46, 368, 368, 368, 368 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa38_transitions[] = { dfa38_T122, dfa38_T63, dfa38_T63, dfa38_T63, dfa38_T63, dfa38_T63, dfa38_T63, dfa38_T26, dfa38_T206, dfa38_T20, dfa38_T20, dfa38_T20, dfa38_T20, dfa38_T20, dfa38_T20, dfa38_T83, dfa38_T324, dfa38_T305, dfa38_T273, dfa38_T274, dfa38_T349, dfa38_T306, dfa38_T242, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T331, dfa38_T335, dfa38_T224, dfa38_T47, dfa38_T114, dfa38_T135, dfa38_T275, dfa38_T286, dfa38_T282, dfa38_T236, NULL, NULL, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T376, dfa38_T237, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T186, dfa38_T189, dfa38_T84, dfa38_T363, dfa38_T293, dfa38_T383, dfa38_T47, dfa38_T47, dfa38_T177, dfa38_T377, dfa38_T201, dfa38_T181, dfa38_T145, dfa38_T48, dfa38_T207, dfa38_T47, dfa38_T130, dfa38_T47, dfa38_T174, dfa38_T78, dfa38_T47, dfa38_T65, dfa38_T47, dfa38_T47, dfa38_T137, dfa38_T195, dfa38_T47, dfa38_T192, dfa38_T92, dfa38_T107, dfa38_T364, dfa38_T260, dfa38_T265, dfa38_T264, dfa38_T267, dfa38_T266, dfa38_T47, dfa38_T244, dfa38_T4, dfa38_T384, dfa38_T47, dfa38_T149, dfa38_T334, dfa38_T333, dfa38_T178, dfa38_T108, dfa38_T351, dfa38_T47, dfa38_T47, dfa38_T165, dfa38_T47, dfa38_T271, dfa38_T232, dfa38_T172, dfa38_T47, dfa38_T47, dfa38_T194, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T49, dfa38_T47, dfa38_T225, dfa38_T338, dfa38_T13, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T66, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T327, dfa38_T292, dfa38_T379, dfa38_T200, dfa38_T35, dfa38_T47, dfa38_T294, dfa38_T47, dfa38_T138, dfa38_T196, dfa38_T47, dfa38_T44, dfa38_T47, dfa38_T283, dfa38_T95, dfa38_T169, dfa38_T102, dfa38_T162, dfa38_T21, dfa38_T50, dfa38_T205, dfa38_T374, dfa38_T187, dfa38_T47, dfa38_T263, dfa38_T47, dfa38_T47, dfa38_T9, dfa38_T47, dfa38_T216, dfa38_T131, dfa38_T328, dfa38_T339, dfa38_T54, dfa38_T372, dfa38_T325, dfa38_T47, dfa38_T47, dfa38_T15, dfa38_T79, dfa38_T47, dfa38_T47, dfa38_T218, dfa38_T47, dfa38_T129, dfa38_T47, dfa38_T2, dfa38_T47, dfa38_T238, dfa38_T203, dfa38_T47, dfa38_T198, dfa38_T296, dfa38_T103, dfa38_T261, dfa38_T75, dfa38_T47, dfa38_T47, dfa38_T82, dfa38_T47, dfa38_T356, dfa38_T47, dfa38_T371, dfa38_T199, dfa38_T47, dfa38_T47, dfa38_T51, dfa38_T42, dfa38_T354, dfa38_T47, dfa38_T47, dfa38_T6, dfa38_T47, dfa38_T226, dfa38_T342, dfa38_T14, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T121, dfa38_T183, dfa38_T133, dfa38_T163, dfa38_T7, dfa38_T127, dfa38_T1, dfa38_T5, dfa38_T202, dfa38_T47, dfa38_T152, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T85, dfa38_T47, dfa38_T47, dfa38_T258, dfa38_T166, dfa38_T358, dfa38_T378, dfa38_T52, dfa38_T47, dfa38_T353, dfa38_T47, dfa38_T100, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T157, dfa38_T345, dfa38_T361, dfa38_T53, dfa38_T259, dfa38_T343, dfa38_T347, dfa38_T47, dfa38_T291, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T248, dfa38_T47, dfa38_T47, dfa38_T234, dfa38_T190, dfa38_T93, dfa38_T105, dfa38_T365, dfa38_T47, dfa38_T47, dfa38_T230, dfa38_T170, dfa38_T47, dfa38_T47, dfa38_T193, dfa38_T98, dfa38_T72, dfa38_T47, dfa38_T256, dfa38_T47, dfa38_T208, dfa38_T47, dfa38_T47, dfa38_T180, dfa38_T47, dfa38_T116, dfa38_T27, dfa38_T209, dfa38_T47, dfa38_T276, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T179, dfa38_T47, dfa38_T77, dfa38_T235, dfa38_T47, dfa38_T47, dfa38_T34, dfa38_T47, dfa38_T295, dfa38_T3, dfa38_T47, dfa38_T239, dfa38_T204, dfa38_T47, dfa38_T104, dfa38_T262, dfa38_T76, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T86, dfa38_T47, dfa38_T47, dfa38_T25, dfa38_T185, dfa38_T164, dfa38_T55, dfa38_T173, dfa38_T175, dfa38_T176, dfa38_T161, dfa38_T197, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T87, dfa38_T10, dfa38_T168, dfa38_T146, dfa38_T56, dfa38_T188, dfa38_T182, dfa38_T47, dfa38_T101, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T247, dfa38_T47, dfa38_T47, dfa38_T330, dfa38_T64, dfa38_T359, dfa38_T375, dfa38_T366, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T249, dfa38_T47, dfa38_T184, dfa38_T385, dfa38_T18, dfa38_T57, dfa38_T332, dfa38_T388, dfa38_T382, dfa38_T360, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T272, dfa38_T167, dfa38_T370, dfa38_T380, dfa38_T58, dfa38_T19, dfa38_T355, dfa38_T47, dfa38_T240, dfa38_T47, dfa38_T228, dfa38_T144, dfa38_T154, dfa38_T367, dfa38_T300, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T67, dfa38_T47, dfa38_T47, dfa38_T223, dfa38_T47, dfa38_T134, dfa38_T110, dfa38_T28, dfa38_T47, dfa38_T47, dfa38_T269, dfa38_T47, dfa38_T47, dfa38_T278, dfa38_T47, dfa38_T124, dfa38_T47, dfa38_T142, dfa38_T96, dfa38_T47, dfa38_T279, dfa38_T47, dfa38_T297, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T40, dfa38_T352, dfa38_T47, dfa38_T47, dfa38_T8, dfa38_T99, dfa38_T73, dfa38_T47, dfa38_T257, dfa38_T47, dfa38_T210, dfa38_T47, dfa38_T117, dfa38_T29, dfa38_T211, dfa38_T47, dfa38_T277, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T126, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T246, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T252, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T312, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T68, dfa38_T47, dfa38_T284, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T253, dfa38_T47, dfa38_T158, dfa38_T346, dfa38_T362, dfa38_T59, dfa38_T344, dfa38_T348, dfa38_T326, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T254, dfa38_T47, dfa38_T47, dfa38_T217, dfa38_T132, dfa38_T329, dfa38_T340, dfa38_T60, dfa38_T373, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T69, dfa38_T47, dfa38_T191, dfa38_T94, dfa38_T106, dfa38_T368, dfa38_T47, dfa38_T80, dfa38_T231, dfa38_T171, dfa38_T47, dfa38_T47, dfa38_T350, dfa38_T119, dfa38_T47, dfa38_T139, dfa38_T90, dfa38_T47, dfa38_T47, dfa38_T301, dfa38_T47, dfa38_T212, dfa38_T47, dfa38_T150, dfa38_T47, dfa38_T47, dfa38_T302, dfa38_T213, dfa38_T47, dfa38_T313, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T36, dfa38_T47, dfa38_T299, dfa38_T111, dfa38_T30, dfa38_T47, dfa38_T47, dfa38_T270, dfa38_T47, dfa38_T47, dfa38_T280, dfa38_T125, dfa38_T47, dfa38_T143, dfa38_T97, dfa38_T47, dfa38_T281, dfa38_T47, dfa38_T298, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T153, dfa38_T47, dfa38_T128, dfa38_T47, dfa38_T47, dfa38_T337, dfa38_T47, dfa38_T47, dfa38_T341, dfa38_T47, dfa38_T22, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T255, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T0, dfa38_T47, dfa38_T323, dfa38_T47, dfa38_T47, dfa38_T41, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T251, dfa38_T47, dfa38_T47, dfa38_T118, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T70, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T227, dfa38_T47, dfa38_T47, dfa38_T147, dfa38_T47, dfa38_T47, dfa38_T315, dfa38_T47, dfa38_T47, dfa38_T287, dfa38_T159, dfa38_T47, dfa38_T316, dfa38_T47, dfa38_T288, dfa38_T47, dfa38_T47, dfa38_T43, dfa38_T357, dfa38_T47, dfa38_T47, dfa38_T123, dfa38_T120, dfa38_T47, dfa38_T140, dfa38_T91, dfa38_T47, dfa38_T47, dfa38_T303, dfa38_T47, dfa38_T214, dfa38_T47, dfa38_T151, dfa38_T47, dfa38_T47, dfa38_T304, dfa38_T215, dfa38_T47, dfa38_T314, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T336, dfa38_T112, dfa38_T136, dfa38_T61, dfa38_T113, dfa38_T115, dfa38_T89, dfa38_T47, dfa38_T285, dfa38_T47, dfa38_T381, dfa38_T243, dfa38_T268, dfa38_T369, dfa38_T47, dfa38_T47, dfa38_T31, dfa38_T311, dfa38_T88, dfa38_T109, dfa38_T62, dfa38_T141, dfa38_T47, dfa38_T241, dfa38_T47, dfa38_T47, dfa38_T81, dfa38_T233, dfa38_T47, dfa38_T155, dfa38_T47, dfa38_T47, dfa38_T307, dfa38_T47, dfa38_T219, dfa38_T47, dfa38_T47, dfa38_T308, dfa38_T220, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T37, dfa38_T47, dfa38_T47, dfa38_T148, dfa38_T47, dfa38_T47, dfa38_T317, dfa38_T47, dfa38_T47, dfa38_T289, dfa38_T160, dfa38_T47, dfa38_T318, dfa38_T47, dfa38_T290, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T245, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T71, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T250, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T319, dfa38_T47, dfa38_T47, dfa38_T386, dfa38_T320, dfa38_T47, dfa38_T23, dfa38_T47, dfa38_T45, dfa38_T47, dfa38_T156, dfa38_T47, dfa38_T47, dfa38_T309, dfa38_T47, dfa38_T221, dfa38_T47, dfa38_T47, dfa38_T310, dfa38_T222, dfa38_T47, dfa38_T47, dfa38_T74, dfa38_T47, dfa38_T229, dfa38_T47, dfa38_T46, dfa38_T47, dfa38_T11, dfa38_T47, dfa38_T47, dfa38_T32, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T321, dfa38_T47, dfa38_T47, dfa38_T387, dfa38_T322, dfa38_T47, dfa38_T24, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T16, dfa38_T47, dfa38_T38, dfa38_T47, dfa38_T47, dfa38_T12, dfa38_T47, dfa38_T47, dfa38_T33, dfa38_T47, dfa38_T47, dfa38_T47, dfa38_T17, dfa38_T47, dfa38_T39, dfa38_T47, dfa38_T47, dfa38_T47 }; static ANTLR3_INT32 dfa38_sst(pbelle_sip_messageParser ctx, pANTLR3_BASE_RECOGNIZER recognizer, pANTLR3_INT_STREAM is, pANTLR3_CYCLIC_DFA dfa, ANTLR3_INT32 s) { ANTLR3_INT32 _s; _s = s; switch (s) { case 0: { ANTLR3_UINT32 LA38_27; ANTLR3_MARKER index38_27; LA38_27 = LA(1); index38_27 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_27); if ( s>=0 ) { return s; } } break; case 1: { ANTLR3_UINT32 LA38_34; ANTLR3_MARKER index38_34; LA38_34 = LA(1); index38_34 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_34); if ( s>=0 ) { return s; } } break; case 2: { ANTLR3_UINT32 LA38_53; ANTLR3_MARKER index38_53; LA38_53 = LA(1); index38_53 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_53); if ( s>=0 ) { return s; } } break; case 3: { ANTLR3_UINT32 LA38_52; ANTLR3_MARKER index38_52; LA38_52 = LA(1); index38_52 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_52); if ( s>=0 ) { return s; } } break; case 4: { ANTLR3_UINT32 LA38_26; ANTLR3_MARKER index38_26; LA38_26 = LA(1); index38_26 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_26); if ( s>=0 ) { return s; } } break; case 5: { ANTLR3_UINT32 LA38_33; ANTLR3_MARKER index38_33; LA38_33 = LA(1); index38_33 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_33); if ( s>=0 ) { return s; } } break; case 6: { ANTLR3_UINT32 LA38_24; ANTLR3_MARKER index38_24; LA38_24 = LA(1); index38_24 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_24); if ( s>=0 ) { return s; } } break; case 7: { ANTLR3_UINT32 LA38_28; ANTLR3_MARKER index38_28; LA38_28 = LA(1); index38_28 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_28); if ( s>=0 ) { return s; } } break; case 8: { ANTLR3_UINT32 LA38_31; ANTLR3_MARKER index38_31; LA38_31 = LA(1); index38_31 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_31); if ( s>=0 ) { return s; } } break; case 9: { ANTLR3_UINT32 LA38_35; ANTLR3_MARKER index38_35; LA38_35 = LA(1); index38_35 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_35); if ( s>=0 ) { return s; } } break; case 10: { ANTLR3_UINT32 LA38_50; ANTLR3_MARKER index38_50; LA38_50 = LA(1); index38_50 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_50); if ( s>=0 ) { return s; } } break; case 11: { ANTLR3_UINT32 LA38_54; ANTLR3_MARKER index38_54; LA38_54 = LA(1); index38_54 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_54); if ( s>=0 ) { return s; } } break; case 12: { ANTLR3_UINT32 LA38_23; ANTLR3_MARKER index38_23; LA38_23 = LA(1); index38_23 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_23); if ( s>=0 ) { return s; } } break; case 13: { ANTLR3_UINT32 LA38_30; ANTLR3_MARKER index38_30; LA38_30 = LA(1); index38_30 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_30); if ( s>=0 ) { return s; } } break; case 14: { ANTLR3_UINT32 LA38_49; ANTLR3_MARKER index38_49; LA38_49 = LA(1); index38_49 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_49); if ( s>=0 ) { return s; } } break; case 15: { ANTLR3_UINT32 LA38_29; ANTLR3_MARKER index38_29; LA38_29 = LA(1); index38_29 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_29); if ( s>=0 ) { return s; } } break; case 16: { ANTLR3_UINT32 LA38_36; ANTLR3_MARKER index38_36; LA38_36 = LA(1); index38_36 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_36); if ( s>=0 ) { return s; } } break; case 17: { ANTLR3_UINT32 LA38_55; ANTLR3_MARKER index38_55; LA38_55 = LA(1); index38_55 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_55); if ( s>=0 ) { return s; } } break; case 18: { ANTLR3_UINT32 LA38_25; ANTLR3_MARKER index38_25; LA38_25 = LA(1); index38_25 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_25); if ( s>=0 ) { return s; } } break; case 19: { ANTLR3_UINT32 LA38_32; ANTLR3_MARKER index38_32; LA38_32 = LA(1); index38_32 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_32); if ( s>=0 ) { return s; } } break; case 20: { ANTLR3_UINT32 LA38_51; ANTLR3_MARKER index38_51; LA38_51 = LA(1); index38_51 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_51); if ( s>=0 ) { return s; } } break; case 21: { ANTLR3_UINT32 LA38_528; ANTLR3_MARKER index38_528; LA38_528 = LA(1); index38_528 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_528); if ( s>=0 ) { return s; } } break; case 22: { ANTLR3_UINT32 LA38_186; ANTLR3_MARKER index38_186; LA38_186 = LA(1); index38_186 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_186); if ( s>=0 ) { return s; } } break; case 23: { ANTLR3_UINT32 LA38_86; ANTLR3_MARKER index38_86; LA38_86 = LA(1); index38_86 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_86); if ( s>=0 ) { return s; } } break; case 24: { ANTLR3_UINT32 LA38_81; ANTLR3_MARKER index38_81; LA38_81 = LA(1); index38_81 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_81); if ( s>=0 ) { return s; } } break; case 25: { ANTLR3_UINT32 LA38_40; ANTLR3_MARKER index38_40; LA38_40 = LA(1); index38_40 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_40); if ( s>=0 ) { return s; } } break; case 26: { ANTLR3_UINT32 LA38_123; ANTLR3_MARKER index38_123; LA38_123 = LA(1); index38_123 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_123); if ( s>=0 ) { return s; } } break; case 27: { ANTLR3_UINT32 LA38_134; ANTLR3_MARKER index38_134; LA38_134 = LA(1); index38_134 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_134); if ( s>=0 ) { return s; } } break; case 28: { ANTLR3_UINT32 LA38_188; ANTLR3_MARKER index38_188; LA38_188 = LA(1); index38_188 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_188); if ( s>=0 ) { return s; } } break; case 29: { ANTLR3_UINT32 LA38_597; ANTLR3_MARKER index38_597; LA38_597 = LA(1); index38_597 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_597); if ( s>=0 ) { return s; } } break; case 30: { ANTLR3_UINT32 LA38_778; ANTLR3_MARKER index38_778; LA38_778 = LA(1); index38_778 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_778); if ( s>=0 ) { return s; } } break; case 31: { ANTLR3_UINT32 LA38_592; ANTLR3_MARKER index38_592; LA38_592 = LA(1); index38_592 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_592); if ( s>=0 ) { return s; } } break; case 32: { ANTLR3_UINT32 LA38_613; ANTLR3_MARKER index38_613; LA38_613 = LA(1); index38_613 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_613); if ( s>=0 ) { return s; } } break; case 33: { ANTLR3_UINT32 LA38_137; ANTLR3_MARKER index38_137; LA38_137 = LA(1); index38_137 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_137); if ( s>=0 ) { return s; } } break; case 34: { ANTLR3_UINT32 LA38_763; ANTLR3_MARKER index38_763; LA38_763 = LA(1); index38_763 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_763); if ( s>=0 ) { return s; } } break; case 35: { ANTLR3_UINT32 LA38_794; ANTLR3_MARKER index38_794; LA38_794 = LA(1); index38_794 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_794); if ( s>=0 ) { return s; } } break; case 36: { ANTLR3_UINT32 LA38_709; ANTLR3_MARKER index38_709; LA38_709 = LA(1); index38_709 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_709); if ( s>=0 ) { return s; } } break; case 37: { ANTLR3_UINT32 LA38_617; ANTLR3_MARKER index38_617; LA38_617 = LA(1); index38_617 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_617); if ( s>=0 ) { return s; } } break; case 38: { ANTLR3_UINT32 LA38_693; ANTLR3_MARKER index38_693; LA38_693 = LA(1); index38_693 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_693); if ( s>=0 ) { return s; } } break; case 39: { ANTLR3_UINT32 LA38_125; ANTLR3_MARKER index38_125; LA38_125 = LA(1); index38_125 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_125); if ( s>=0 ) { return s; } } break; case 40: { ANTLR3_UINT32 LA38_171; ANTLR3_MARKER index38_171; LA38_171 = LA(1); index38_171 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_171); if ( s>=0 ) { return s; } } break; case 41: { ANTLR3_UINT32 LA38_553; ANTLR3_MARKER index38_553; LA38_553 = LA(1); index38_553 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_553); if ( s>=0 ) { return s; } } break; case 42: { ANTLR3_UINT32 LA38_609; ANTLR3_MARKER index38_609; LA38_609 = LA(1); index38_609 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_609); if ( s>=0 ) { return s; } } break; case 43: { ANTLR3_UINT32 LA38_625; ANTLR3_MARKER index38_625; LA38_625 = LA(1); index38_625 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_625); if ( s>=0 ) { return s; } } break; case 44: { ANTLR3_UINT32 LA38_345; ANTLR3_MARKER index38_345; LA38_345 = LA(1); index38_345 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_345); if ( s>=0 ) { return s; } } break; case 45: { ANTLR3_UINT32 LA38_615; ANTLR3_MARKER index38_615; LA38_615 = LA(1); index38_615 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_615); if ( s>=0 ) { return s; } } break; case 46: { ANTLR3_UINT32 LA38_142; ANTLR3_MARKER index38_142; LA38_142 = LA(1); index38_142 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_142); if ( s>=0 ) { return s; } } break; case 47: { ANTLR3_UINT32 LA38_324; ANTLR3_MARKER index38_324; LA38_324 = LA(1); index38_324 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_324); if ( s>=0 ) { return s; } } break; case 48: { ANTLR3_UINT32 LA38_310; ANTLR3_MARKER index38_310; LA38_310 = LA(1); index38_310 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_310); if ( s>=0 ) { return s; } } break; case 49: { ANTLR3_UINT32 LA38_761; ANTLR3_MARKER index38_761; LA38_761 = LA(1); index38_761 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_761); if ( s>=0 ) { return s; } } break; case 50: { ANTLR3_UINT32 LA38_56; ANTLR3_MARKER index38_56; LA38_56 = LA(1); index38_56 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_56); if ( s>=0 ) { return s; } } break; case 51: { ANTLR3_UINT32 LA38_124; ANTLR3_MARKER index38_124; LA38_124 = LA(1); index38_124 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_124); if ( s>=0 ) { return s; } } break; case 52: { ANTLR3_UINT32 LA38_635; ANTLR3_MARKER index38_635; LA38_635 = LA(1); index38_635 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_635); if ( s>=0 ) { return s; } } break; case 53: { ANTLR3_UINT32 LA38_405; ANTLR3_MARKER index38_405; LA38_405 = LA(1); index38_405 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_405); if ( s>=0 ) { return s; } } break; case 54: { ANTLR3_UINT32 LA38_102; ANTLR3_MARKER index38_102; LA38_102 = LA(1); index38_102 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_102); if ( s>=0 ) { return s; } } break; case 55: { ANTLR3_UINT32 LA38_582; ANTLR3_MARKER index38_582; LA38_582 = LA(1); index38_582 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_582); if ( s>=0 ) { return s; } } break; case 56: { ANTLR3_UINT32 LA38_567; ANTLR3_MARKER index38_567; LA38_567 = LA(1); index38_567 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_567); if ( s>=0 ) { return s; } } break; case 57: { ANTLR3_UINT32 LA38_756; ANTLR3_MARKER index38_756; LA38_756 = LA(1); index38_756 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_756); if ( s>=0 ) { return s; } } break; case 58: { ANTLR3_UINT32 LA38_767; ANTLR3_MARKER index38_767; LA38_767 = LA(1); index38_767 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_767); if ( s>=0 ) { return s; } } break; case 59: { ANTLR3_UINT32 LA38_618; ANTLR3_MARKER index38_618; LA38_618 = LA(1); index38_618 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_618); if ( s>=0 ) { return s; } } break; case 60: { ANTLR3_UINT32 LA38_629; ANTLR3_MARKER index38_629; LA38_629 = LA(1); index38_629 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_629); if ( s>=0 ) { return s; } } break; case 61: { ANTLR3_UINT32 LA38_760; ANTLR3_MARKER index38_760; LA38_760 = LA(1); index38_760 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_760); if ( s>=0 ) { return s; } } break; case 62: { ANTLR3_UINT32 LA38_538; ANTLR3_MARKER index38_538; LA38_538 = LA(1); index38_538 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_538); if ( s>=0 ) { return s; } } break; case 63: { ANTLR3_UINT32 LA38_745; ANTLR3_MARKER index38_745; LA38_745 = LA(1); index38_745 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_745); if ( s>=0 ) { return s; } } break; case 64: { ANTLR3_UINT32 LA38_591; ANTLR3_MARKER index38_591; LA38_591 = LA(1); index38_591 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_591); if ( s>=0 ) { return s; } } break; case 65: { ANTLR3_UINT32 LA38_677; ANTLR3_MARKER index38_677; LA38_677 = LA(1); index38_677 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_677); if ( s>=0 ) { return s; } } break; case 66: { ANTLR3_UINT32 LA38_558; ANTLR3_MARKER index38_558; LA38_558 = LA(1); index38_558 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_558); if ( s>=0 ) { return s; } } break; case 67: { ANTLR3_UINT32 LA38_62; ANTLR3_MARKER index38_62; LA38_62 = LA(1); index38_62 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_62); if ( s>=0 ) { return s; } } break; case 68: { ANTLR3_UINT32 LA38_92; ANTLR3_MARKER index38_92; LA38_92 = LA(1); index38_92 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_92); if ( s>=0 ) { return s; } } break; case 69: { ANTLR3_UINT32 LA38_199; ANTLR3_MARKER index38_199; LA38_199 = LA(1); index38_199 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_199); if ( s>=0 ) { return s; } } break; case 70: { ANTLR3_UINT32 LA38_732; ANTLR3_MARKER index38_732; LA38_732 = LA(1); index38_732 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_732); if ( s>=0 ) { return s; } } break; case 71: { ANTLR3_UINT32 LA38_351; ANTLR3_MARKER index38_351; LA38_351 = LA(1); index38_351 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_351); if ( s>=0 ) { return s; } } break; case 72: { ANTLR3_UINT32 LA38_792; ANTLR3_MARKER index38_792; LA38_792 = LA(1); index38_792 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_792); if ( s>=0 ) { return s; } } break; case 73: { ANTLR3_UINT32 LA38_153; ANTLR3_MARKER index38_153; LA38_153 = LA(1); index38_153 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_153); if ( s>=0 ) { return s; } } break; case 74: { ANTLR3_UINT32 LA38_714; ANTLR3_MARKER index38_714; LA38_714 = LA(1); index38_714 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_714); if ( s>=0 ) { return s; } } break; case 75: { ANTLR3_UINT32 LA38_362; ANTLR3_MARKER index38_362; LA38_362 = LA(1); index38_362 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_362); if ( s>=0 ) { return s; } } break; case 76: { ANTLR3_UINT32 LA38_748; ANTLR3_MARKER index38_748; LA38_748 = LA(1); index38_748 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_748); if ( s>=0 ) { return s; } } break; case 77: { ANTLR3_UINT32 LA38_572; ANTLR3_MARKER index38_572; LA38_572 = LA(1); index38_572 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_572); if ( s>=0 ) { return s; } } break; case 78: { ANTLR3_UINT32 LA38_562; ANTLR3_MARKER index38_562; LA38_562 = LA(1); index38_562 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_562); if ( s>=0 ) { return s; } } break; case 79: { ANTLR3_UINT32 LA38_793; ANTLR3_MARKER index38_793; LA38_793 = LA(1); index38_793 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_793); if ( s>=0 ) { return s; } } break; case 80: { ANTLR3_UINT32 LA38_180; ANTLR3_MARKER index38_180; LA38_180 = LA(1); index38_180 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_180); if ( s>=0 ) { return s; } } break; case 81: { ANTLR3_UINT32 LA38_131; ANTLR3_MARKER index38_131; LA38_131 = LA(1); index38_131 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_131); if ( s>=0 ) { return s; } } break; case 82: { ANTLR3_UINT32 LA38_133; ANTLR3_MARKER index38_133; LA38_133 = LA(1); index38_133 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_133); if ( s>=0 ) { return s; } } break; case 83: { ANTLR3_UINT32 LA38_790; ANTLR3_MARKER index38_790; LA38_790 = LA(1); index38_790 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_790); if ( s>=0 ) { return s; } } break; case 84: { ANTLR3_UINT32 LA38_532; ANTLR3_MARKER index38_532; LA38_532 = LA(1); index38_532 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_532); if ( s>=0 ) { return s; } } break; case 85: { ANTLR3_UINT32 LA38_622; ANTLR3_MARKER index38_622; LA38_622 = LA(1); index38_622 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_622); if ( s>=0 ) { return s; } } break; case 86: { ANTLR3_UINT32 LA38_672; ANTLR3_MARKER index38_672; LA38_672 = LA(1); index38_672 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_672); if ( s>=0 ) { return s; } } break; case 87: { ANTLR3_UINT32 LA38_682; ANTLR3_MARKER index38_682; LA38_682 = LA(1); index38_682 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_682); if ( s>=0 ) { return s; } } break; case 88: { ANTLR3_UINT32 LA38_556; ANTLR3_MARKER index38_556; LA38_556 = LA(1); index38_556 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_556); if ( s>=0 ) { return s; } } break; case 89: { ANTLR3_UINT32 LA38_718; ANTLR3_MARKER index38_718; LA38_718 = LA(1); index38_718 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_718); if ( s>=0 ) { return s; } } break; case 90: { ANTLR3_UINT32 LA38_422; ANTLR3_MARKER index38_422; LA38_422 = LA(1); index38_422 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_422); if ( s>=0 ) { return s; } } break; case 91: { ANTLR3_UINT32 LA38_59; ANTLR3_MARKER index38_59; LA38_59 = LA(1); index38_59 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_59); if ( s>=0 ) { return s; } } break; case 92: { ANTLR3_UINT32 LA38_530; ANTLR3_MARKER index38_530; LA38_530 = LA(1); index38_530 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_530); if ( s>=0 ) { return s; } } break; case 93: { ANTLR3_UINT32 LA38_654; ANTLR3_MARKER index38_654; LA38_654 = LA(1); index38_654 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_654); if ( s>=0 ) { return s; } } break; case 94: { ANTLR3_UINT32 LA38_421; ANTLR3_MARKER index38_421; LA38_421 = LA(1); index38_421 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_421); if ( s>=0 ) { return s; } } break; case 95: { ANTLR3_UINT32 LA38_587; ANTLR3_MARKER index38_587; LA38_587 = LA(1); index38_587 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_587); if ( s>=0 ) { return s; } } break; case 96: { ANTLR3_UINT32 LA38_696; ANTLR3_MARKER index38_696; LA38_696 = LA(1); index38_696 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_696); if ( s>=0 ) { return s; } } break; case 97: { ANTLR3_UINT32 LA38_724; ANTLR3_MARKER index38_724; LA38_724 = LA(1); index38_724 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_724); if ( s>=0 ) { return s; } } break; case 98: { ANTLR3_UINT32 LA38_213; ANTLR3_MARKER index38_213; LA38_213 = LA(1); index38_213 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_213); if ( s>=0 ) { return s; } } break; case 99: { ANTLR3_UINT32 LA38_471; ANTLR3_MARKER index38_471; LA38_471 = LA(1); index38_471 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_471); if ( s>=0 ) { return s; } } break; case 100: { ANTLR3_UINT32 LA38_272; ANTLR3_MARKER index38_272; LA38_272 = LA(1); index38_272 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_272); if ( s>=0 ) { return s; } } break; case 101: { ANTLR3_UINT32 LA38_72; ANTLR3_MARKER index38_72; LA38_72 = LA(1); index38_72 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_72); if ( s>=0 ) { return s; } } break; case 102: { ANTLR3_UINT32 LA38_780; ANTLR3_MARKER index38_780; LA38_780 = LA(1); index38_780 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_780); if ( s>=0 ) { return s; } } break; case 103: { ANTLR3_UINT32 LA38_83; ANTLR3_MARKER index38_83; LA38_83 = LA(1); index38_83 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_83); if ( s>=0 ) { return s; } } break; case 104: { ANTLR3_UINT32 LA38_135; ANTLR3_MARKER index38_135; LA38_135 = LA(1); index38_135 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_135); if ( s>=0 ) { return s; } } break; case 105: { ANTLR3_UINT32 LA38_727; ANTLR3_MARKER index38_727; LA38_727 = LA(1); index38_727 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_727); if ( s>=0 ) { return s; } } break; case 106: { ANTLR3_UINT32 LA38_208; ANTLR3_MARKER index38_208; LA38_208 = LA(1); index38_208 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_208); if ( s>=0 ) { return s; } } break; case 107: { ANTLR3_UINT32 LA38_705; ANTLR3_MARKER index38_705; LA38_705 = LA(1); index38_705 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_705); if ( s>=0 ) { return s; } } break; case 108: { ANTLR3_UINT32 LA38_132; ANTLR3_MARKER index38_132; LA38_132 = LA(1); index38_132 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_132); if ( s>=0 ) { return s; } } break; case 109: { ANTLR3_UINT32 LA38_788; ANTLR3_MARKER index38_788; LA38_788 = LA(1); index38_788 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_788); if ( s>=0 ) { return s; } } break; case 110: { ANTLR3_UINT32 LA38_595; ANTLR3_MARKER index38_595; LA38_595 = LA(1); index38_595 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_595); if ( s>=0 ) { return s; } } break; case 111: { ANTLR3_UINT32 LA38_463; ANTLR3_MARKER index38_463; LA38_463 = LA(1); index38_463 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_463); if ( s>=0 ) { return s; } } break; case 112: { ANTLR3_UINT32 LA38_604; ANTLR3_MARKER index38_604; LA38_604 = LA(1); index38_604 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_604); if ( s>=0 ) { return s; } } break; case 113: { ANTLR3_UINT32 LA38_560; ANTLR3_MARKER index38_560; LA38_560 = LA(1); index38_560 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_560); if ( s>=0 ) { return s; } } break; case 114: { ANTLR3_UINT32 LA38_190; ANTLR3_MARKER index38_190; LA38_190 = LA(1); index38_190 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_190); if ( s>=0 ) { return s; } } break; case 115: { ANTLR3_UINT32 LA38_361; ANTLR3_MARKER index38_361; LA38_361 = LA(1); index38_361 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_361); if ( s>=0 ) { return s; } } break; case 116: { ANTLR3_UINT32 LA38_292; ANTLR3_MARKER index38_292; LA38_292 = LA(1); index38_292 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_292); if ( s>=0 ) { return s; } } break; case 117: { ANTLR3_UINT32 LA38_139; ANTLR3_MARKER index38_139; LA38_139 = LA(1); index38_139 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_139); if ( s>=0 ) { return s; } } break; case 118: { ANTLR3_UINT32 LA38_169; ANTLR3_MARKER index38_169; LA38_169 = LA(1); index38_169 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_169); if ( s>=0 ) { return s; } } break; case 119: { ANTLR3_UINT32 LA38_585; ANTLR3_MARKER index38_585; LA38_585 = LA(1); index38_585 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_585); if ( s>=0 ) { return s; } } break; case 120: { ANTLR3_UINT32 LA38_546; ANTLR3_MARKER index38_546; LA38_546 = LA(1); index38_546 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_546); if ( s>=0 ) { return s; } } break; case 121: { ANTLR3_UINT32 LA38_262; ANTLR3_MARKER index38_262; LA38_262 = LA(1); index38_262 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_262); if ( s>=0 ) { return s; } } break; case 122: { ANTLR3_UINT32 LA38_700; ANTLR3_MARKER index38_700; LA38_700 = LA(1); index38_700 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_700); if ( s>=0 ) { return s; } } break; case 123: { ANTLR3_UINT32 LA38_419; ANTLR3_MARKER index38_419; LA38_419 = LA(1); index38_419 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_419); if ( s>=0 ) { return s; } } break; case 124: { ANTLR3_UINT32 LA38_235; ANTLR3_MARKER index38_235; LA38_235 = LA(1); index38_235 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_235); if ( s>=0 ) { return s; } } break; case 125: { ANTLR3_UINT32 LA38_363; ANTLR3_MARKER index38_363; LA38_363 = LA(1); index38_363 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_363); if ( s>=0 ) { return s; } } break; case 126: { ANTLR3_UINT32 LA38_277; ANTLR3_MARKER index38_277; LA38_277 = LA(1); index38_277 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_277); if ( s>=0 ) { return s; } } break; case 127: { ANTLR3_UINT32 LA38_549; ANTLR3_MARKER index38_549; LA38_549 = LA(1); index38_549 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_549); if ( s>=0 ) { return s; } } break; case 128: { ANTLR3_UINT32 LA38_238; ANTLR3_MARKER index38_238; LA38_238 = LA(1); index38_238 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_238); if ( s>=0 ) { return s; } } break; case 129: { ANTLR3_UINT32 LA38_88; ANTLR3_MARKER index38_88; LA38_88 = LA(1); index38_88 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_88); if ( s>=0 ) { return s; } } break; case 130: { ANTLR3_UINT32 LA38_63; ANTLR3_MARKER index38_63; LA38_63 = LA(1); index38_63 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_63); if ( s>=0 ) { return s; } } break; case 131: { ANTLR3_UINT32 LA38_550; ANTLR3_MARKER index38_550; LA38_550 = LA(1); index38_550 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_550); if ( s>=0 ) { return s; } } break; case 132: { ANTLR3_UINT32 LA38_607; ANTLR3_MARKER index38_607; LA38_607 = LA(1); index38_607 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_607); if ( s>=0 ) { return s; } } break; case 133: { ANTLR3_UINT32 LA38_519; ANTLR3_MARKER index38_519; LA38_519 = LA(1); index38_519 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_519); if ( s>=0 ) { return s; } } break; case 134: { ANTLR3_UINT32 LA38_631; ANTLR3_MARKER index38_631; LA38_631 = LA(1); index38_631 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_631); if ( s>=0 ) { return s; } } break; case 135: { ANTLR3_UINT32 LA38_752; ANTLR3_MARKER index38_752; LA38_752 = LA(1); index38_752 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_752); if ( s>=0 ) { return s; } } break; case 136: { ANTLR3_UINT32 LA38_536; ANTLR3_MARKER index38_536; LA38_536 = LA(1); index38_536 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_536); if ( s>=0 ) { return s; } } break; case 137: { ANTLR3_UINT32 LA38_250; ANTLR3_MARKER index38_250; LA38_250 = LA(1); index38_250 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_250); if ( s>=0 ) { return s; } } break; case 138: { ANTLR3_UINT32 LA38_297; ANTLR3_MARKER index38_297; LA38_297 = LA(1); index38_297 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_297); if ( s>=0 ) { return s; } } break; case 139: { ANTLR3_UINT32 LA38_415; ANTLR3_MARKER index38_415; LA38_415 = LA(1); index38_415 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_415); if ( s>=0 ) { return s; } } break; case 140: { ANTLR3_UINT32 LA38_680; ANTLR3_MARKER index38_680; LA38_680 = LA(1); index38_680 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_680); if ( s>=0 ) { return s; } } break; case 141: { ANTLR3_UINT32 LA38_728; ANTLR3_MARKER index38_728; LA38_728 = LA(1); index38_728 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_728); if ( s>=0 ) { return s; } } break; case 142: { ANTLR3_UINT32 LA38_116; ANTLR3_MARKER index38_116; LA38_116 = LA(1); index38_116 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_116); if ( s>=0 ) { return s; } } break; case 143: { ANTLR3_UINT32 LA38_636; ANTLR3_MARKER index38_636; LA38_636 = LA(1); index38_636 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_636); if ( s>=0 ) { return s; } } break; case 144: { ANTLR3_UINT32 LA38_633; ANTLR3_MARKER index38_633; LA38_633 = LA(1); index38_633 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_633); if ( s>=0 ) { return s; } } break; case 145: { ANTLR3_UINT32 LA38_564; ANTLR3_MARKER index38_564; LA38_564 = LA(1); index38_564 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_564); if ( s>=0 ) { return s; } } break; case 146: { ANTLR3_UINT32 LA38_610; ANTLR3_MARKER index38_610; LA38_610 = LA(1); index38_610 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_610); if ( s>=0 ) { return s; } } break; case 147: { ANTLR3_UINT32 LA38_215; ANTLR3_MARKER index38_215; LA38_215 = LA(1); index38_215 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_215); if ( s>=0 ) { return s; } } break; case 148: { ANTLR3_UINT32 LA38_259; ANTLR3_MARKER index38_259; LA38_259 = LA(1); index38_259 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_259); if ( s>=0 ) { return s; } } break; case 149: { ANTLR3_UINT32 LA38_430; ANTLR3_MARKER index38_430; LA38_430 = LA(1); index38_430 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_430); if ( s>=0 ) { return s; } } break; case 150: { ANTLR3_UINT32 LA38_392; ANTLR3_MARKER index38_392; LA38_392 = LA(1); index38_392 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_392); if ( s>=0 ) { return s; } } break; case 151: { ANTLR3_UINT32 LA38_440; ANTLR3_MARKER index38_440; LA38_440 = LA(1); index38_440 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_440); if ( s>=0 ) { return s; } } break; case 152: { ANTLR3_UINT32 LA38_678; ANTLR3_MARKER index38_678; LA38_678 = LA(1); index38_678 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_678); if ( s>=0 ) { return s; } } break; case 153: { ANTLR3_UINT32 LA38_771; ANTLR3_MARKER index38_771; LA38_771 = LA(1); index38_771 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_771); if ( s>=0 ) { return s; } } break; case 154: { ANTLR3_UINT32 LA38_509; ANTLR3_MARKER index38_509; LA38_509 = LA(1); index38_509 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_509); if ( s>=0 ) { return s; } } break; case 155: { ANTLR3_UINT32 LA38_295; ANTLR3_MARKER index38_295; LA38_295 = LA(1); index38_295 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_295); if ( s>=0 ) { return s; } } break; case 156: { ANTLR3_UINT32 LA38_301; ANTLR3_MARKER index38_301; LA38_301 = LA(1); index38_301 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_301); if ( s>=0 ) { return s; } } break; case 157: { ANTLR3_UINT32 LA38_493; ANTLR3_MARKER index38_493; LA38_493 = LA(1); index38_493 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_493); if ( s>=0 ) { return s; } } break; case 158: { ANTLR3_UINT32 LA38_768; ANTLR3_MARKER index38_768; LA38_768 = LA(1); index38_768 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_768); if ( s>=0 ) { return s; } } break; case 159: { ANTLR3_UINT32 LA38_296; ANTLR3_MARKER index38_296; LA38_296 = LA(1); index38_296 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_296); if ( s>=0 ) { return s; } } break; case 160: { ANTLR3_UINT32 LA38_251; ANTLR3_MARKER index38_251; LA38_251 = LA(1); index38_251 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_251); if ( s>=0 ) { return s; } } break; case 161: { ANTLR3_UINT32 LA38_781; ANTLR3_MARKER index38_781; LA38_781 = LA(1); index38_781 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_781); if ( s>=0 ) { return s; } } break; case 162: { ANTLR3_UINT32 LA38_417; ANTLR3_MARKER index38_417; LA38_417 = LA(1); index38_417 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_417); if ( s>=0 ) { return s; } } break; case 163: { ANTLR3_UINT32 LA38_219; ANTLR3_MARKER index38_219; LA38_219 = LA(1); index38_219 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_219); if ( s>=0 ) { return s; } } break; case 164: { ANTLR3_UINT32 LA38_179; ANTLR3_MARKER index38_179; LA38_179 = LA(1); index38_179 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_179); if ( s>=0 ) { return s; } } break; case 165: { ANTLR3_UINT32 LA38_64; ANTLR3_MARKER index38_64; LA38_64 = LA(1); index38_64 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_64); if ( s>=0 ) { return s; } } break; case 166: { ANTLR3_UINT32 LA38_65; ANTLR3_MARKER index38_65; LA38_65 = LA(1); index38_65 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_65); if ( s>=0 ) { return s; } } break; case 167: { ANTLR3_UINT32 LA38_773; ANTLR3_MARKER index38_773; LA38_773 = LA(1); index38_773 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_773); if ( s>=0 ) { return s; } } break; case 168: { ANTLR3_UINT32 LA38_783; ANTLR3_MARKER index38_783; LA38_783 = LA(1); index38_783 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_783); if ( s>=0 ) { return s; } } break; case 169: { ANTLR3_UINT32 LA38_121; ANTLR3_MARKER index38_121; LA38_121 = LA(1); index38_121 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_121); if ( s>=0 ) { return s; } } break; case 170: { ANTLR3_UINT32 LA38_589; ANTLR3_MARKER index38_589; LA38_589 = LA(1); index38_589 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_589); if ( s>=0 ) { return s; } } break; case 171: { ANTLR3_UINT32 LA38_570; ANTLR3_MARKER index38_570; LA38_570 = LA(1); index38_570 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_570); if ( s>=0 ) { return s; } } break; case 172: { ANTLR3_UINT32 LA38_432; ANTLR3_MARKER index38_432; LA38_432 = LA(1); index38_432 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_432); if ( s>=0 ) { return s; } } break; case 173: { ANTLR3_UINT32 LA38_542; ANTLR3_MARKER index38_542; LA38_542 = LA(1); index38_542 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_542); if ( s>=0 ) { return s; } } break; case 174: { ANTLR3_UINT32 LA38_641; ANTLR3_MARKER index38_641; LA38_641 = LA(1); index38_641 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_641); if ( s>=0 ) { return s; } } break; case 175: { ANTLR3_UINT32 LA38_307; ANTLR3_MARKER index38_307; LA38_307 = LA(1); index38_307 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_307); if ( s>=0 ) { return s; } } break; case 176: { ANTLR3_UINT32 LA38_337; ANTLR3_MARKER index38_337; LA38_337 = LA(1); index38_337 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_337); if ( s>=0 ) { return s; } } break; case 177: { ANTLR3_UINT32 LA38_458; ANTLR3_MARKER index38_458; LA38_458 = LA(1); index38_458 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_458); if ( s>=0 ) { return s; } } break; case 178: { ANTLR3_UINT32 LA38_575; ANTLR3_MARKER index38_575; LA38_575 = LA(1); index38_575 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_575); if ( s>=0 ) { return s; } } break; case 179: { ANTLR3_UINT32 LA38_704; ANTLR3_MARKER index38_704; LA38_704 = LA(1); index38_704 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_704); if ( s>=0 ) { return s; } } break; case 180: { ANTLR3_UINT32 LA38_669; ANTLR3_MARKER index38_669; LA38_669 = LA(1); index38_669 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_669); if ( s>=0 ) { return s; } } break; case 181: { ANTLR3_UINT32 LA38_594; ANTLR3_MARKER index38_594; LA38_594 = LA(1); index38_594 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_594); if ( s>=0 ) { return s; } } break; case 182: { ANTLR3_UINT32 LA38_404; ANTLR3_MARKER index38_404; LA38_404 = LA(1); index38_404 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_404); if ( s>=0 ) { return s; } } break; case 183: { ANTLR3_UINT32 LA38_507; ANTLR3_MARKER index38_507; LA38_507 = LA(1); index38_507 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_507); if ( s>=0 ) { return s; } } break; case 184: { ANTLR3_UINT32 LA38_138; ANTLR3_MARKER index38_138; LA38_138 = LA(1); index38_138 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_138); if ( s>=0 ) { return s; } } break; case 185: { ANTLR3_UINT32 LA38_407; ANTLR3_MARKER index38_407; LA38_407 = LA(1); index38_407 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_407); if ( s>=0 ) { return s; } } break; case 186: { ANTLR3_UINT32 LA38_447; ANTLR3_MARKER index38_447; LA38_447 = LA(1); index38_447 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_447); if ( s>=0 ) { return s; } } break; case 187: { ANTLR3_UINT32 LA38_588; ANTLR3_MARKER index38_588; LA38_588 = LA(1); index38_588 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_588); if ( s>=0 ) { return s; } } break; case 188: { ANTLR3_UINT32 LA38_261; ANTLR3_MARKER index38_261; LA38_261 = LA(1); index38_261 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_261); if ( s>=0 ) { return s; } } break; case 189: { ANTLR3_UINT32 LA38_263; ANTLR3_MARKER index38_263; LA38_263 = LA(1); index38_263 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_263); if ( s>=0 ) { return s; } } break; case 190: { ANTLR3_UINT32 LA38_751; ANTLR3_MARKER index38_751; LA38_751 = LA(1); index38_751 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_751); if ( s>=0 ) { return s; } } break; case 191: { ANTLR3_UINT32 LA38_496; ANTLR3_MARKER index38_496; LA38_496 = LA(1); index38_496 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_496); if ( s>=0 ) { return s; } } break; case 192: { ANTLR3_UINT32 LA38_522; ANTLR3_MARKER index38_522; LA38_522 = LA(1); index38_522 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_522); if ( s>=0 ) { return s; } } break; case 193: { ANTLR3_UINT32 LA38_758; ANTLR3_MARKER index38_758; LA38_758 = LA(1); index38_758 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_758); if ( s>=0 ) { return s; } } break; case 194: { ANTLR3_UINT32 LA38_426; ANTLR3_MARKER index38_426; LA38_426 = LA(1); index38_426 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_426); if ( s>=0 ) { return s; } } break; case 195: { ANTLR3_UINT32 LA38_525; ANTLR3_MARKER index38_525; LA38_525 = LA(1); index38_525 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_525); if ( s>=0 ) { return s; } } break; case 196: { ANTLR3_UINT32 LA38_730; ANTLR3_MARKER index38_730; LA38_730 = LA(1); index38_730 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_730); if ( s>=0 ) { return s; } } break; case 197: { ANTLR3_UINT32 LA38_469; ANTLR3_MARKER index38_469; LA38_469 = LA(1); index38_469 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_469); if ( s>=0 ) { return s; } } break; case 198: { ANTLR3_UINT32 LA38_281; ANTLR3_MARKER index38_281; LA38_281 = LA(1); index38_281 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_281); if ( s>=0 ) { return s; } } break; case 199: { ANTLR3_UINT32 LA38_578; ANTLR3_MARKER index38_578; LA38_578 = LA(1); index38_578 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_578); if ( s>=0 ) { return s; } } break; case 200: { ANTLR3_UINT32 LA38_353; ANTLR3_MARKER index38_353; LA38_353 = LA(1); index38_353 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_353); if ( s>=0 ) { return s; } } break; case 201: { ANTLR3_UINT32 LA38_244; ANTLR3_MARKER index38_244; LA38_244 = LA(1); index38_244 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_244); if ( s>=0 ) { return s; } } break; case 202: { ANTLR3_UINT32 LA38_114; ANTLR3_MARKER index38_114; LA38_114 = LA(1); index38_114 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_114); if ( s>=0 ) { return s; } } break; case 203: { ANTLR3_UINT32 LA38_360; ANTLR3_MARKER index38_360; LA38_360 = LA(1); index38_360 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_360); if ( s>=0 ) { return s; } } break; case 204: { ANTLR3_UINT32 LA38_288; ANTLR3_MARKER index38_288; LA38_288 = LA(1); index38_288 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_288); if ( s>=0 ) { return s; } } break; case 205: { ANTLR3_UINT32 LA38_606; ANTLR3_MARKER index38_606; LA38_606 = LA(1); index38_606 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_606); if ( s>=0 ) { return s; } } break; case 206: { ANTLR3_UINT32 LA38_202; ANTLR3_MARKER index38_202; LA38_202 = LA(1); index38_202 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_202); if ( s>=0 ) { return s; } } break; case 207: { ANTLR3_UINT32 LA38_285; ANTLR3_MARKER index38_285; LA38_285 = LA(1); index38_285 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_285); if ( s>=0 ) { return s; } } break; case 208: { ANTLR3_UINT32 LA38_393; ANTLR3_MARKER index38_393; LA38_393 = LA(1); index38_393 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_393); if ( s>=0 ) { return s; } } break; case 209: { ANTLR3_UINT32 LA38_400; ANTLR3_MARKER index38_400; LA38_400 = LA(1); index38_400 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_400); if ( s>=0 ) { return s; } } break; case 210: { ANTLR3_UINT32 LA38_141; ANTLR3_MARKER index38_141; LA38_141 = LA(1); index38_141 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_141); if ( s>=0 ) { return s; } } break; case 211: { ANTLR3_UINT32 LA38_691; ANTLR3_MARKER index38_691; LA38_691 = LA(1); index38_691 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_691); if ( s>=0 ) { return s; } } break; case 212: { ANTLR3_UINT32 LA38_694; ANTLR3_MARKER index38_694; LA38_694 = LA(1); index38_694 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_694); if ( s>=0 ) { return s; } } break; case 213: { ANTLR3_UINT32 LA38_786; ANTLR3_MARKER index38_786; LA38_786 = LA(1); index38_786 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_786); if ( s>=0 ) { return s; } } break; case 214: { ANTLR3_UINT32 LA38_686; ANTLR3_MARKER index38_686; LA38_686 = LA(1); index38_686 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_686); if ( s>=0 ) { return s; } } break; case 215: { ANTLR3_UINT32 LA38_733; ANTLR3_MARKER index38_733; LA38_733 = LA(1); index38_733 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_733); if ( s>=0 ) { return s; } } break; case 216: { ANTLR3_UINT32 LA38_738; ANTLR3_MARKER index38_738; LA38_738 = LA(1); index38_738 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_738); if ( s>=0 ) { return s; } } break; case 217: { ANTLR3_UINT32 LA38_412; ANTLR3_MARKER index38_412; LA38_412 = LA(1); index38_412 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_412); if ( s>=0 ) { return s; } } break; case 218: { ANTLR3_UINT32 LA38_639; ANTLR3_MARKER index38_639; LA38_639 = LA(1); index38_639 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_639); if ( s>=0 ) { return s; } } break; case 219: { ANTLR3_UINT32 LA38_273; ANTLR3_MARKER index38_273; LA38_273 = LA(1); index38_273 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_273); if ( s>=0 ) { return s; } } break; case 220: { ANTLR3_UINT32 LA38_384; ANTLR3_MARKER index38_384; LA38_384 = LA(1); index38_384 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_384); if ( s>=0 ) { return s; } } break; case 221: { ANTLR3_UINT32 LA38_476; ANTLR3_MARKER index38_476; LA38_476 = LA(1); index38_476 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_476); if ( s>=0 ) { return s; } } break; case 222: { ANTLR3_UINT32 LA38_89; ANTLR3_MARKER index38_89; LA38_89 = LA(1); index38_89 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_89); if ( s>=0 ) { return s; } } break; case 223: { ANTLR3_UINT32 LA38_438; ANTLR3_MARKER index38_438; LA38_438 = LA(1); index38_438 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_438); if ( s>=0 ) { return s; } } break; case 224: { ANTLR3_UINT32 LA38_784; ANTLR3_MARKER index38_784; LA38_784 = LA(1); index38_784 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_784); if ( s>=0 ) { return s; } } break; case 225: { ANTLR3_UINT32 LA38_266; ANTLR3_MARKER index38_266; LA38_266 = LA(1); index38_266 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_266); if ( s>=0 ) { return s; } } break; case 226: { ANTLR3_UINT32 LA38_283; ANTLR3_MARKER index38_283; LA38_283 = LA(1); index38_283 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_283); if ( s>=0 ) { return s; } } break; case 227: { ANTLR3_UINT32 LA38_526; ANTLR3_MARKER index38_526; LA38_526 = LA(1); index38_526 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_526); if ( s>=0 ) { return s; } } break; case 228: { ANTLR3_UINT32 LA38_742; ANTLR3_MARKER index38_742; LA38_742 = LA(1); index38_742 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_742); if ( s>=0 ) { return s; } } break; case 229: { ANTLR3_UINT32 LA38_394; ANTLR3_MARKER index38_394; LA38_394 = LA(1); index38_394 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_394); if ( s>=0 ) { return s; } } break; case 230: { ANTLR3_UINT32 LA38_434; ANTLR3_MARKER index38_434; LA38_434 = LA(1); index38_434 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_434); if ( s>=0 ) { return s; } } break; case 231: { ANTLR3_UINT32 LA38_576; ANTLR3_MARKER index38_576; LA38_576 = LA(1); index38_576 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_576); if ( s>=0 ) { return s; } } break; case 232: { ANTLR3_UINT32 LA38_697; ANTLR3_MARKER index38_697; LA38_697 = LA(1); index38_697 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_697); if ( s>=0 ) { return s; } } break; case 233: { ANTLR3_UINT32 LA38_478; ANTLR3_MARKER index38_478; LA38_478 = LA(1); index38_478 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_478); if ( s>=0 ) { return s; } } break; case 234: { ANTLR3_UINT32 LA38_702; ANTLR3_MARKER index38_702; LA38_702 = LA(1); index38_702 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_702); if ( s>=0 ) { return s; } } break; case 235: { ANTLR3_UINT32 LA38_747; ANTLR3_MARKER index38_747; LA38_747 = LA(1); index38_747 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_747); if ( s>=0 ) { return s; } } break; case 236: { ANTLR3_UINT32 LA38_294; ANTLR3_MARKER index38_294; LA38_294 = LA(1); index38_294 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_294); if ( s>=0 ) { return s; } } break; case 237: { ANTLR3_UINT32 LA38_408; ANTLR3_MARKER index38_408; LA38_408 = LA(1); index38_408 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_408); if ( s>=0 ) { return s; } } break; case 238: { ANTLR3_UINT32 LA38_395; ANTLR3_MARKER index38_395; LA38_395 = LA(1); index38_395 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_395); if ( s>=0 ) { return s; } } break; case 239: { ANTLR3_UINT32 LA38_503; ANTLR3_MARKER index38_503; LA38_503 = LA(1); index38_503 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_503); if ( s>=0 ) { return s; } } break; case 240: { ANTLR3_UINT32 LA38_533; ANTLR3_MARKER index38_533; LA38_533 = LA(1); index38_533 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_533); if ( s>=0 ) { return s; } } break; case 241: { ANTLR3_UINT32 LA38_317; ANTLR3_MARKER index38_317; LA38_317 = LA(1); index38_317 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_317); if ( s>=0 ) { return s; } } break; case 242: { ANTLR3_UINT32 LA38_150; ANTLR3_MARKER index38_150; LA38_150 = LA(1); index38_150 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_150); if ( s>=0 ) { return s; } } break; case 243: { ANTLR3_UINT32 LA38_736; ANTLR3_MARKER index38_736; LA38_736 = LA(1); index38_736 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_736); if ( s>=0 ) { return s; } } break; case 244: { ANTLR3_UINT32 LA38_547; ANTLR3_MARKER index38_547; LA38_547 = LA(1); index38_547 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_547); if ( s>=0 ) { return s; } } break; case 245: { ANTLR3_UINT32 LA38_579; ANTLR3_MARKER index38_579; LA38_579 = LA(1); index38_579 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_579); if ( s>=0 ) { return s; } } break; case 246: { ANTLR3_UINT32 LA38_375; ANTLR3_MARKER index38_375; LA38_375 = LA(1); index38_375 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_375); if ( s>=0 ) { return s; } } break; case 247: { ANTLR3_UINT32 LA38_441; ANTLR3_MARKER index38_441; LA38_441 = LA(1); index38_441 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_441); if ( s>=0 ) { return s; } } break; case 248: { ANTLR3_UINT32 LA38_628; ANTLR3_MARKER index38_628; LA38_628 = LA(1); index38_628 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_628); if ( s>=0 ) { return s; } } break; case 249: { ANTLR3_UINT32 LA38_200; ANTLR3_MARKER index38_200; LA38_200 = LA(1); index38_200 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_200); if ( s>=0 ) { return s; } } break; case 250: { ANTLR3_UINT32 LA38_787; ANTLR3_MARKER index38_787; LA38_787 = LA(1); index38_787 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_787); if ( s>=0 ) { return s; } } break; case 251: { ANTLR3_UINT32 LA38_60; ANTLR3_MARKER index38_60; LA38_60 = LA(1); index38_60 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_60); if ( s>=0 ) { return s; } } break; case 252: { ANTLR3_UINT32 LA38_61; ANTLR3_MARKER index38_61; LA38_61 = LA(1); index38_61 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_61); if ( s>=0 ) { return s; } } break; case 253: { ANTLR3_UINT32 LA38_166; ANTLR3_MARKER index38_166; LA38_166 = LA(1); index38_166 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_166); if ( s>=0 ) { return s; } } break; case 254: { ANTLR3_UINT32 LA38_321; ANTLR3_MARKER index38_321; LA38_321 = LA(1); index38_321 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_321); if ( s>=0 ) { return s; } } break; case 255: { ANTLR3_UINT32 LA38_743; ANTLR3_MARKER index38_743; LA38_743 = LA(1); index38_743 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_743); if ( s>=0 ) { return s; } } break; case 256: { ANTLR3_UINT32 LA38_574; ANTLR3_MARKER index38_574; LA38_574 = LA(1); index38_574 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_574); if ( s>=0 ) { return s; } } break; case 257: { ANTLR3_UINT32 LA38_683; ANTLR3_MARKER index38_683; LA38_683 = LA(1); index38_683 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_683); if ( s>=0 ) { return s; } } break; case 258: { ANTLR3_UINT32 LA38_265; ANTLR3_MARKER index38_265; LA38_265 = LA(1); index38_265 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_265); if ( s>=0 ) { return s; } } break; case 259: { ANTLR3_UINT32 LA38_374; ANTLR3_MARKER index38_374; LA38_374 = LA(1); index38_374 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_374); if ( s>=0 ) { return s; } } break; case 260: { ANTLR3_UINT32 LA38_140; ANTLR3_MARKER index38_140; LA38_140 = LA(1); index38_140 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_140); if ( s>=0 ) { return s; } } break; case 261: { ANTLR3_UINT32 LA38_514; ANTLR3_MARKER index38_514; LA38_514 = LA(1); index38_514 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_514); if ( s>=0 ) { return s; } } break; case 262: { ANTLR3_UINT32 LA38_569; ANTLR3_MARKER index38_569; LA38_569 = LA(1); index38_569 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_569); if ( s>=0 ) { return s; } } break; case 263: { ANTLR3_UINT32 LA38_73; ANTLR3_MARKER index38_73; LA38_73 = LA(1); index38_73 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_73); if ( s>=0 ) { return s; } } break; case 264: { ANTLR3_UINT32 LA38_127; ANTLR3_MARKER index38_127; LA38_127 = LA(1); index38_127 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_127); if ( s>=0 ) { return s; } } break; case 265: { ANTLR3_UINT32 LA38_584; ANTLR3_MARKER index38_584; LA38_584 = LA(1); index38_584 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_584); if ( s>=0 ) { return s; } } break; case 266: { ANTLR3_UINT32 LA38_765; ANTLR3_MARKER index38_765; LA38_765 = LA(1); index38_765 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_765); if ( s>=0 ) { return s; } } break; case 267: { ANTLR3_UINT32 LA38_596; ANTLR3_MARKER index38_596; LA38_596 = LA(1); index38_596 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_596); if ( s>=0 ) { return s; } } break; case 268: { ANTLR3_UINT32 LA38_148; ANTLR3_MARKER index38_148; LA38_148 = LA(1); index38_148 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_148); if ( s>=0 ) { return s; } } break; case 269: { ANTLR3_UINT32 LA38_442; ANTLR3_MARKER index38_442; LA38_442 = LA(1); index38_442 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_442); if ( s>=0 ) { return s; } } break; case 270: { ANTLR3_UINT32 LA38_299; ANTLR3_MARKER index38_299; LA38_299 = LA(1); index38_299 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_299); if ( s>=0 ) { return s; } } break; case 271: { ANTLR3_UINT32 LA38_354; ANTLR3_MARKER index38_354; LA38_354 = LA(1); index38_354 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_354); if ( s>=0 ) { return s; } } break; case 272: { ANTLR3_UINT32 LA38_599; ANTLR3_MARKER index38_599; LA38_599 = LA(1); index38_599 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_599); if ( s>=0 ) { return s; } } break; case 273: { ANTLR3_UINT32 LA38_754; ANTLR3_MARKER index38_754; LA38_754 = LA(1); index38_754 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_754); if ( s>=0 ) { return s; } } break; case 274: { ANTLR3_UINT32 LA38_580; ANTLR3_MARKER index38_580; LA38_580 = LA(1); index38_580 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_580); if ( s>=0 ) { return s; } } break; case 275: { ANTLR3_UINT32 LA38_286; ANTLR3_MARKER index38_286; LA38_286 = LA(1); index38_286 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_286); if ( s>=0 ) { return s; } } break; case 276: { ANTLR3_UINT32 LA38_231; ANTLR3_MARKER index38_231; LA38_231 = LA(1); index38_231 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_231); if ( s>=0 ) { return s; } } break; case 277: { ANTLR3_UINT32 LA38_120; ANTLR3_MARKER index38_120; LA38_120 = LA(1); index38_120 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_120); if ( s>=0 ) { return s; } } break; case 278: { ANTLR3_UINT32 LA38_106; ANTLR3_MARKER index38_106; LA38_106 = LA(1); index38_106 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_106); if ( s>=0 ) { return s; } } break; case 279: { ANTLR3_UINT32 LA38_113; ANTLR3_MARKER index38_113; LA38_113 = LA(1); index38_113 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_113); if ( s>=0 ) { return s; } } break; case 280: { ANTLR3_UINT32 LA38_455; ANTLR3_MARKER index38_455; LA38_455 = LA(1); index38_455 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_455); if ( s>=0 ) { return s; } } break; case 281: { ANTLR3_UINT32 LA38_410; ANTLR3_MARKER index38_410; LA38_410 = LA(1); index38_410 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_410); if ( s>=0 ) { return s; } } break; case 282: { ANTLR3_UINT32 LA38_729; ANTLR3_MARKER index38_729; LA38_729 = LA(1); index38_729 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_729); if ( s>=0 ) { return s; } } break; case 283: { ANTLR3_UINT32 LA38_305; ANTLR3_MARKER index38_305; LA38_305 = LA(1); index38_305 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_305); if ( s>=0 ) { return s; } } break; case 284: { ANTLR3_UINT32 LA38_495; ANTLR3_MARKER index38_495; LA38_495 = LA(1); index38_495 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_495); if ( s>=0 ) { return s; } } break; case 285: { ANTLR3_UINT32 LA38_566; ANTLR3_MARKER index38_566; LA38_566 = LA(1); index38_566 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_566); if ( s>=0 ) { return s; } } break; case 286: { ANTLR3_UINT32 LA38_506; ANTLR3_MARKER index38_506; LA38_506 = LA(1); index38_506 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_506); if ( s>=0 ) { return s; } } break; case 287: { ANTLR3_UINT32 LA38_445; ANTLR3_MARKER index38_445; LA38_445 = LA(1); index38_445 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_445); if ( s>=0 ) { return s; } } break; case 288: { ANTLR3_UINT32 LA38_457; ANTLR3_MARKER index38_457; LA38_457 = LA(1); index38_457 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_457); if ( s>=0 ) { return s; } } break; case 289: { ANTLR3_UINT32 LA38_452; ANTLR3_MARKER index38_452; LA38_452 = LA(1); index38_452 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_452); if ( s>=0 ) { return s; } } break; case 290: { ANTLR3_UINT32 LA38_398; ANTLR3_MARKER index38_398; LA38_398 = LA(1); index38_398 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_398); if ( s>=0 ) { return s; } } break; case 291: { ANTLR3_UINT32 LA38_234; ANTLR3_MARKER index38_234; LA38_234 = LA(1); index38_234 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_234); if ( s>=0 ) { return s; } } break; case 292: { ANTLR3_UINT32 LA38_298; ANTLR3_MARKER index38_298; LA38_298 = LA(1); index38_298 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_298); if ( s>=0 ) { return s; } } break; case 293: { ANTLR3_UINT32 LA38_204; ANTLR3_MARKER index38_204; LA38_204 = LA(1); index38_204 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_204); if ( s>=0 ) { return s; } } break; case 294: { ANTLR3_UINT32 LA38_335; ANTLR3_MARKER index38_335; LA38_335 = LA(1); index38_335 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_335); if ( s>=0 ) { return s; } } break; case 295: { ANTLR3_UINT32 LA38_220; ANTLR3_MARKER index38_220; LA38_220 = LA(1); index38_220 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_220); if ( s>=0 ) { return s; } } break; case 296: { ANTLR3_UINT32 LA38_320; ANTLR3_MARKER index38_320; LA38_320 = LA(1); index38_320 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_320); if ( s>=0 ) { return s; } } break; case 297: { ANTLR3_UINT32 LA38_764; ANTLR3_MARKER index38_764; LA38_764 = LA(1); index38_764 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_764); if ( s>=0 ) { return s; } } break; case 298: { ANTLR3_UINT32 LA38_776; ANTLR3_MARKER index38_776; LA38_776 = LA(1); index38_776 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_776); if ( s>=0 ) { return s; } } break; case 299: { ANTLR3_UINT32 LA38_155; ANTLR3_MARKER index38_155; LA38_155 = LA(1); index38_155 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_155); if ( s>=0 ) { return s; } } break; case 300: { ANTLR3_UINT32 LA38_318; ANTLR3_MARKER index38_318; LA38_318 = LA(1); index38_318 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_318); if ( s>=0 ) { return s; } } break; case 301: { ANTLR3_UINT32 LA38_453; ANTLR3_MARKER index38_453; LA38_453 = LA(1); index38_453 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_453); if ( s>=0 ) { return s; } } break; case 302: { ANTLR3_UINT32 LA38_465; ANTLR3_MARKER index38_465; LA38_465 = LA(1); index38_465 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_465); if ( s>=0 ) { return s; } } break; case 303: { ANTLR3_UINT32 LA38_505; ANTLR3_MARKER index38_505; LA38_505 = LA(1); index38_505 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_505); if ( s>=0 ) { return s; } } break; case 304: { ANTLR3_UINT32 LA38_645; ANTLR3_MARKER index38_645; LA38_645 = LA(1); index38_645 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_645); if ( s>=0 ) { return s; } } break; case 305: { ANTLR3_UINT32 LA38_712; ANTLR3_MARKER index38_712; LA38_712 = LA(1); index38_712 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_712); if ( s>=0 ) { return s; } } break; case 306: { ANTLR3_UINT32 LA38_466; ANTLR3_MARKER index38_466; LA38_466 = LA(1); index38_466 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_466); if ( s>=0 ) { return s; } } break; case 307: { ANTLR3_UINT32 LA38_644; ANTLR3_MARKER index38_644; LA38_644 = LA(1); index38_644 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_644); if ( s>=0 ) { return s; } } break; case 308: { ANTLR3_UINT32 LA38_707; ANTLR3_MARKER index38_707; LA38_707 = LA(1); index38_707 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_707); if ( s>=0 ) { return s; } } break; case 309: { ANTLR3_UINT32 LA38_643; ANTLR3_MARKER index38_643; LA38_643 = LA(1); index38_643 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_643); if ( s>=0 ) { return s; } } break; case 310: { ANTLR3_UINT32 LA38_313; ANTLR3_MARKER index38_313; LA38_313 = LA(1); index38_313 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_313); if ( s>=0 ) { return s; } } break; case 311: { ANTLR3_UINT32 LA38_711; ANTLR3_MARKER index38_711; LA38_711 = LA(1); index38_711 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_711); if ( s>=0 ) { return s; } } break; case 312: { ANTLR3_UINT32 LA38_716; ANTLR3_MARKER index38_716; LA38_716 = LA(1); index38_716 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_716); if ( s>=0 ) { return s; } } break; case 313: { ANTLR3_UINT32 LA38_474; ANTLR3_MARKER index38_474; LA38_474 = LA(1); index38_474 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_474); if ( s>=0 ) { return s; } } break; case 314: { ANTLR3_UINT32 LA38_475; ANTLR3_MARKER index38_475; LA38_475 = LA(1); index38_475 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_475); if ( s>=0 ) { return s; } } break; case 315: { ANTLR3_UINT32 LA38_687; ANTLR3_MARKER index38_687; LA38_687 = LA(1); index38_687 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_687); if ( s>=0 ) { return s; } } break; case 316: { ANTLR3_UINT32 LA38_486; ANTLR3_MARKER index38_486; LA38_486 = LA(1); index38_486 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_486); if ( s>=0 ) { return s; } } break; case 317: { ANTLR3_UINT32 LA38_603; ANTLR3_MARKER index38_603; LA38_603 = LA(1); index38_603 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_603); if ( s>=0 ) { return s; } } break; case 318: { ANTLR3_UINT32 LA38_600; ANTLR3_MARKER index38_600; LA38_600 = LA(1); index38_600 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_600); if ( s>=0 ) { return s; } } break; case 319: { ANTLR3_UINT32 LA38_319; ANTLR3_MARKER index38_319; LA38_319 = LA(1); index38_319 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_319); if ( s>=0 ) { return s; } } break; case 320: { ANTLR3_UINT32 LA38_451; ANTLR3_MARKER index38_451; LA38_451 = LA(1); index38_451 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_451); if ( s>=0 ) { return s; } } break; case 321: { ANTLR3_UINT32 LA38_492; ANTLR3_MARKER index38_492; LA38_492 = LA(1); index38_492 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_492); if ( s>=0 ) { return s; } } break; case 322: { ANTLR3_UINT32 LA38_708; ANTLR3_MARKER index38_708; LA38_708 = LA(1); index38_708 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_708); if ( s>=0 ) { return s; } } break; case 323: { ANTLR3_UINT32 LA38_717; ANTLR3_MARKER index38_717; LA38_717 = LA(1); index38_717 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_717); if ( s>=0 ) { return s; } } break; case 324: { ANTLR3_UINT32 LA38_397; ANTLR3_MARKER index38_397; LA38_397 = LA(1); index38_397 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_397); if ( s>=0 ) { return s; } } break; case 325: { ANTLR3_UINT32 LA38_461; ANTLR3_MARKER index38_461; LA38_461 = LA(1); index38_461 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_461); if ( s>=0 ) { return s; } } break; case 326: { ANTLR3_UINT32 LA38_467; ANTLR3_MARKER index38_467; LA38_467 = LA(1); index38_467 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_467); if ( s>=0 ) { return s; } } break; case 327: { ANTLR3_UINT32 LA38_706; ANTLR3_MARKER index38_706; LA38_706 = LA(1); index38_706 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_706); if ( s>=0 ) { return s; } } break; case 328: { ANTLR3_UINT32 LA38_454; ANTLR3_MARKER index38_454; LA38_454 = LA(1); index38_454 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_454); if ( s>=0 ) { return s; } } break; case 329: { ANTLR3_UINT32 LA38_561; ANTLR3_MARKER index38_561; LA38_561 = LA(1); index38_561 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_561); if ( s>=0 ) { return s; } } break; case 330: { ANTLR3_UINT32 LA38_348; ANTLR3_MARKER index38_348; LA38_348 = LA(1); index38_348 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_348); if ( s>=0 ) { return s; } } break; case 331: { ANTLR3_UINT32 LA38_193; ANTLR3_MARKER index38_193; LA38_193 = LA(1); index38_193 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_193); if ( s>=0 ) { return s; } } break; case 332: { ANTLR3_UINT32 LA38_212; ANTLR3_MARKER index38_212; LA38_212 = LA(1); index38_212 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_212); if ( s>=0 ) { return s; } } break; case 333: { ANTLR3_UINT32 LA38_740; ANTLR3_MARKER index38_740; LA38_740 = LA(1); index38_740 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_740); if ( s>=0 ) { return s; } } break; case 334: { ANTLR3_UINT32 LA38_671; ANTLR3_MARKER index38_671; LA38_671 = LA(1); index38_671 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_671); if ( s>=0 ) { return s; } } break; case 335: { ANTLR3_UINT32 LA38_449; ANTLR3_MARKER index38_449; LA38_449 = LA(1); index38_449 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_449); if ( s>=0 ) { return s; } } break; case 336: { ANTLR3_UINT32 LA38_621; ANTLR3_MARKER index38_621; LA38_621 = LA(1); index38_621 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_621); if ( s>=0 ) { return s; } } break; case 337: { ANTLR3_UINT32 LA38_540; ANTLR3_MARKER index38_540; LA38_540 = LA(1); index38_540 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_540); if ( s>=0 ) { return s; } } break; case 338: { ANTLR3_UINT32 LA38_491; ANTLR3_MARKER index38_491; LA38_491 = LA(1); index38_491 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_491); if ( s>=0 ) { return s; } } break; case 339: { ANTLR3_UINT32 LA38_168; ANTLR3_MARKER index38_168; LA38_168 = LA(1); index38_168 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_168); if ( s>=0 ) { return s; } } break; case 340: { ANTLR3_UINT32 LA38_183; ANTLR3_MARKER index38_183; LA38_183 = LA(1); index38_183 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_183); if ( s>=0 ) { return s; } } break; case 341: { ANTLR3_UINT32 LA38_221; ANTLR3_MARKER index38_221; LA38_221 = LA(1); index38_221 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_221); if ( s>=0 ) { return s; } } break; case 342: { ANTLR3_UINT32 LA38_336; ANTLR3_MARKER index38_336; LA38_336 = LA(1); index38_336 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_336); if ( s>=0 ) { return s; } } break; case 343: { ANTLR3_UINT32 LA38_350; ANTLR3_MARKER index38_350; LA38_350 = LA(1); index38_350 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_350); if ( s>=0 ) { return s; } } break; case 344: { ANTLR3_UINT32 LA38_490; ANTLR3_MARKER index38_490; LA38_490 = LA(1); index38_490 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_490); if ( s>=0 ) { return s; } } break; case 345: { ANTLR3_UINT32 LA38_184; ANTLR3_MARKER index38_184; LA38_184 = LA(1); index38_184 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_184); if ( s>=0 ) { return s; } } break; case 346: { ANTLR3_UINT32 LA38_722; ANTLR3_MARKER index38_722; LA38_722 = LA(1); index38_722 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_722); if ( s>=0 ) { return s; } } break; case 347: { ANTLR3_UINT32 LA38_601; ANTLR3_MARKER index38_601; LA38_601 = LA(1); index38_601 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_601); if ( s>=0 ) { return s; } } break; case 348: { ANTLR3_UINT32 LA38_721; ANTLR3_MARKER index38_721; LA38_721 = LA(1); index38_721 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_721); if ( s>=0 ) { return s; } } break; case 349: { ANTLR3_UINT32 LA38_347; ANTLR3_MARKER index38_347; LA38_347 = LA(1); index38_347 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_347); if ( s>=0 ) { return s; } } break; case 350: { ANTLR3_UINT32 LA38_376; ANTLR3_MARKER index38_376; LA38_376 = LA(1); index38_376 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_376); if ( s>=0 ) { return s; } } break; case 351: { ANTLR3_UINT32 LA38_246; ANTLR3_MARKER index38_246; LA38_246 = LA(1); index38_246 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_246); if ( s>=0 ) { return s; } } break; case 352: { ANTLR3_UINT32 LA38_248; ANTLR3_MARKER index38_248; LA38_248 = LA(1); index38_248 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_248); if ( s>=0 ) { return s; } } break; case 353: { ANTLR3_UINT32 LA38_420; ANTLR3_MARKER index38_420; LA38_420 = LA(1); index38_420 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_420); if ( s>=0 ) { return s; } } break; case 354: { ANTLR3_UINT32 LA38_462; ANTLR3_MARKER index38_462; LA38_462 = LA(1); index38_462 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_462); if ( s>=0 ) { return s; } } break; case 355: { ANTLR3_UINT32 LA38_468; ANTLR3_MARKER index38_468; LA38_468 = LA(1); index38_468 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_468); if ( s>=0 ) { return s; } } break; case 356: { ANTLR3_UINT32 LA38_642; ANTLR3_MARKER index38_642; LA38_642 = LA(1); index38_642 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_642); if ( s>=0 ) { return s; } } break; case 357: { ANTLR3_UINT32 LA38_450; ANTLR3_MARKER index38_450; LA38_450 = LA(1); index38_450 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_450); if ( s>=0 ) { return s; } } break; case 358: { ANTLR3_UINT32 LA38_334; ANTLR3_MARKER index38_334; LA38_334 = LA(1); index38_334 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_334); if ( s>=0 ) { return s; } } break; case 359: { ANTLR3_UINT32 LA38_488; ANTLR3_MARKER index38_488; LA38_488 = LA(1); index38_488 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_488); if ( s>=0 ) { return s; } } break; case 360: { ANTLR3_UINT32 LA38_723; ANTLR3_MARKER index38_723; LA38_723 = LA(1); index38_723 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_723); if ( s>=0 ) { return s; } } break; case 361: { ANTLR3_UINT32 LA38_661; ANTLR3_MARKER index38_661; LA38_661 = LA(1); index38_661 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_661); if ( s>=0 ) { return s; } } break; case 362: { ANTLR3_UINT32 LA38_487; ANTLR3_MARKER index38_487; LA38_487 = LA(1); index38_487 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_487); if ( s>=0 ) { return s; } } break; case 363: { ANTLR3_UINT32 LA38_456; ANTLR3_MARKER index38_456; LA38_456 = LA(1); index38_456 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_456); if ( s>=0 ) { return s; } } break; case 364: { ANTLR3_UINT32 LA38_473; ANTLR3_MARKER index38_473; LA38_473 = LA(1); index38_473 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_473); if ( s>=0 ) { return s; } } break; case 365: { ANTLR3_UINT32 LA38_662; ANTLR3_MARKER index38_662; LA38_662 = LA(1); index38_662 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_662); if ( s>=0 ) { return s; } } break; case 366: { ANTLR3_UINT32 LA38_774; ANTLR3_MARKER index38_774; LA38_774 = LA(1); index38_774 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_774); if ( s>=0 ) { return s; } } break; case 367: { ANTLR3_UINT32 LA38_276; ANTLR3_MARKER index38_276; LA38_276 = LA(1); index38_276 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_276); if ( s>=0 ) { return s; } } break; case 368: { ANTLR3_UINT32 LA38_720; ANTLR3_MARKER index38_720; LA38_720 = LA(1); index38_720 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_720); if ( s>=0 ) { return s; } } break; case 369: { ANTLR3_UINT32 LA38_656; ANTLR3_MARKER index38_656; LA38_656 = LA(1); index38_656 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_656); if ( s>=0 ) { return s; } } break; case 370: { ANTLR3_UINT32 LA38_349; ANTLR3_MARKER index38_349; LA38_349 = LA(1); index38_349 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_349); if ( s>=0 ) { return s; } } break; case 371: { ANTLR3_UINT32 LA38_539; ANTLR3_MARKER index38_539; LA38_539 = LA(1); index38_539 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_539); if ( s>=0 ) { return s; } } break; case 372: { ANTLR3_UINT32 LA38_518; ANTLR3_MARKER index38_518; LA38_518 = LA(1); index38_518 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_518); if ( s>=0 ) { return s; } } break; case 373: { ANTLR3_UINT32 LA38_690; ANTLR3_MARKER index38_690; LA38_690 = LA(1); index38_690 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_690); if ( s>=0 ) { return s; } } break; case 374: { ANTLR3_UINT32 LA38_646; ANTLR3_MARKER index38_646; LA38_646 = LA(1); index38_646 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_646); if ( s>=0 ) { return s; } } break; case 375: { ANTLR3_UINT32 LA38_675; ANTLR3_MARKER index38_675; LA38_675 = LA(1); index38_675 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_675); if ( s>=0 ) { return s; } } break; case 376: { ANTLR3_UINT32 LA38_446; ANTLR3_MARKER index38_446; LA38_446 = LA(1); index38_446 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_446); if ( s>=0 ) { return s; } } break; case 377: { ANTLR3_UINT32 LA38_323; ANTLR3_MARKER index38_323; LA38_323 = LA(1); index38_323 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_323); if ( s>=0 ) { return s; } } break; case 378: { ANTLR3_UINT32 LA38_207; ANTLR3_MARKER index38_207; LA38_207 = LA(1); index38_207 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_207); if ( s>=0 ) { return s; } } break; case 379: { ANTLR3_UINT32 LA38_249; ANTLR3_MARKER index38_249; LA38_249 = LA(1); index38_249 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_249); if ( s>=0 ) { return s; } } break; case 380: { ANTLR3_UINT32 LA38_304; ANTLR3_MARKER index38_304; LA38_304 = LA(1); index38_304 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_304); if ( s>=0 ) { return s; } } break; case 381: { ANTLR3_UINT32 LA38_233; ANTLR3_MARKER index38_233; LA38_233 = LA(1); index38_233 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_233); if ( s>=0 ) { return s; } } break; case 382: { ANTLR3_UINT32 LA38_715; ANTLR3_MARKER index38_715; LA38_715 = LA(1); index38_715 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_715); if ( s>=0 ) { return s; } } break; case 383: { ANTLR3_UINT32 LA38_726; ANTLR3_MARKER index38_726; LA38_726 = LA(1); index38_726 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_726); if ( s>=0 ) { return s; } } break; case 384: { ANTLR3_UINT32 LA38_688; ANTLR3_MARKER index38_688; LA38_688 = LA(1); index38_688 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_688); if ( s>=0 ) { return s; } } break; case 385: { ANTLR3_UINT32 LA38_460; ANTLR3_MARKER index38_460; LA38_460 = LA(1); index38_460 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_460); if ( s>=0 ) { return s; } } break; case 386: { ANTLR3_UINT32 LA38_775; ANTLR3_MARKER index38_775; LA38_775 = LA(1); index38_775 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_775); if ( s>=0 ) { return s; } } break; case 387: { ANTLR3_UINT32 LA38_504; ANTLR3_MARKER index38_504; LA38_504 = LA(1); index38_504 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_504); if ( s>=0 ) { return s; } } break; case 388: { ANTLR3_UINT32 LA38_425; ANTLR3_MARKER index38_425; LA38_425 = LA(1); index38_425 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_425); if ( s>=0 ) { return s; } } break; case 389: { ANTLR3_UINT32 LA38_444; ANTLR3_MARKER index38_444; LA38_444 = LA(1); index38_444 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_444); if ( s>=0 ) { return s; } } break; case 390: { ANTLR3_UINT32 LA38_365; ANTLR3_MARKER index38_365; LA38_365 = LA(1); index38_365 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_365); if ( s>=0 ) { return s; } } break; case 391: { ANTLR3_UINT32 LA38_713; ANTLR3_MARKER index38_713; LA38_713 = LA(1); index38_713 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_713); if ( s>=0 ) { return s; } } break; case 392: { ANTLR3_UINT32 LA38_489; ANTLR3_MARKER index38_489; LA38_489 = LA(1); index38_489 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_489); if ( s>=0 ) { return s; } } break; case 393: { ANTLR3_UINT32 LA38_386; ANTLR3_MARKER index38_386; LA38_386 = LA(1); index38_386 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_386); if ( s>=0 ) { return s; } } break; case 394: { ANTLR3_UINT32 LA38_237; ANTLR3_MARKER index38_237; LA38_237 = LA(1); index38_237 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index38_237); if ( s>=0 ) { return s; } } break; } if (BACKTRACKING > 0) { FAILEDFLAG = ANTLR3_TRUE; return -1; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)"492:1: credentials[belle_sip_header_authorization_t* header_authorization_base] : ( ( digest_token lws digest_response[header_authorization_base] ) | other_response[header_authorization_base] );"; EXCEPTION->decisionNum = 38; EXCEPTION->state = _s; return -1; } /* Declare tracking structure for Cyclic DFA 38 */ static ANTLR3_CYCLIC_DFA cdfa38 = { 38, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"492:1: credentials[belle_sip_header_authorization_t* header_authorization_base] : ( ( digest_token lws digest_response[header_authorization_base] ) | other_response[header_authorization_base] );", (CDFA_SPECIAL_FUNC) dfa38_sst, antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa38_eot, /* EOT table */ dfa38_eof, /* EOF table */ dfa38_min, /* Minimum tokens for each state */ dfa38_max, /* Maximum tokens for each state */ dfa38_accept, /* Accept table */ dfa38_special, /* Special transition states */ dfa38_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 38 * --------------------- *//** Static dfa state tables for Cyclic dfa: * 498:1: dig_resp[belle_sip_header_authorization_t* header_authorization_base] : ( username | realm | nonce | digest_uri[header_authorization_base] | dresponse | algorithm | cnonce | opaque | message_qop | nonce_count | auth_param[header_authorization_base] ); */ static const ANTLR3_INT32 dfa40_eot[795] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa40_eof[795] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa40_min[795] = { 6, 6, 6, 6, 6, 6, 6, 11, 36, 6, 18, 6, 36, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 4, 4, 0, 4, 4, 4, 4, 4, 4, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 4, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 0, 0, 4, 4, 4, 4, 4, 4, 4, 0, 4, 0, 4, 4, 0, 4, 0, 0, 4, 4, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 4, 4, 4, 0, 4, 4, 4, 4, 4, 4, 0, 0, 4, 0, 4, 4, 4, 0, 0, 4, 0, 0, 0, 4, 0, 4, 4, 4, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 0, 4, 0, 4, 4, -1, 0, 4, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 4, 0, 0, 4, 0, 4, 4, 4, 4, 4, 4, 4, 0, 0, 4, 4, 0, 0, 4, 0, 4, 0, 4, 0, 4, 4, 0, 4, 4, 4, 4, 4, 0, 0, 4, 0, 4, 0, 4, 4, 0, 0, 4, 4, 4, 0, 0, 4, 0, 4, 4, 4, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 4, 0, 0, 0, 4, 0, 0, 4, 4, 4, 4, 4, 0, 4, 0, 4, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 0, 4, 0, 0, 0, 4, 0, 0, 4, 4, 4, 4, 4, 0, 0, 4, 4, 0, 0, 4, 4, 4, 0, 4, 0, 4, 0, 0, 4, 0, 4, 4, 4, 0, 4, 0, 0, 0, 0, 0, 0, 4, 0, 4, 4, 0, 0, 4, 0, 4, 4, 0, 4, 4, 0, 4, 4, 4, 0, 0, 0, 0, 0, 4, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 0, 4, 0, 0, 0, 0, 0, 4, 0, 0, 4, 4, 4, 4, 4, 0, 0, 0, 0, 4, 0, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 0, 4, 0, 4, 4, 4, 4, 4, 0, 0, 0, 0, 4, 0, 0, 4, 0, 4, 4, 4, 0, 0, 4, 0, 0, 4, 0, 4, 0, 4, 4, 0, 4, 0, 4, 0, 0, 0, 0, 4, 4, 0, 0, 4, 4, 4, 0, 4, 0, 4, 0, 4, 4, 4, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 4, 0, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0, 0, 4, 0, 4, 4, 4, 4, 0, 4, 4, 4, 0, 0, 4, 4, 0, 4, 4, 0, 0, 4, 0, 4, 0, 4, 0, 0, 4, 4, 0, 4, 0, 0, 0, 4, 0, 4, 4, 4, 0, 0, 4, 0, 0, 4, 4, 0, 4, 4, 0, 4, 0, 4, 0, 0, 0, 4, 0, 4, 0, 0, 4, 0, 0, 4, 0, 4, 0, 0, 0, 4, 0, 0, 0, 4, 0, 4, 0, 0, 4, 0, 0, 0, 4, 0, 0, 4, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 4, 0, 0, 4, 0, 0, 4, 4, 0, 4, 0, 4, 0, 0, 4, 4, 0, 0, 4, 4, 0, 4, 4, 0, 0, 4, 0, 4, 0, 4, 0, 0, 4, 4, 0, 4, 0, 0, 0, 0, 0, 0, 4, 4, 4, 4, 4, 4, 4, 0, 4, 0, 4, 4, 4, 4, 0, 0, 4, 4, 4, 4, 4, 4, 0, 4, 0, 0, 4, 4, 0, 4, 0, 0, 4, 0, 4, 0, 0, 4, 4, 0, 0, 0, 4, 0, 0, 4, 0, 0, 4, 0, 0, 4, 4, 0, 4, 0, 4, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 4, 0, 0, 4, 4, 0, 4, 0, 4, 0, 4, 0, 0, 4, 0, 4, 0, 0, 4, 4, 0, 0, 4, 0, 4, 0, 4, 0, 4, 0, 0, 4, 0, 0, 0, 4, 0, 0, 4, 4, 0, 4, 0, 0, 0, 0, 4, 0, 4, 0, 0, 4, 0, 0, 4, 0, 0, 0, 4, 0, 4, 0, 0, 0 }; static const ANTLR3_INT32 dfa40_max[795] = { 40, 40, 40, 40, 40, 40, 40, 36, 36, 40, 36, 40, 36, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 40, 40, 0, 40, 40, 40, 40, 40, 40, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 40, 40, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 40, 40, 40, 40, 40, 40, 0, 0, 40, 40, 40, 40, 40, 40, 40, 0, 40, 0, 40, 40, 0, 40, 0, 0, 40, 40, 0, 40, 40, 40, 40, 40, 40, 40, 40, 40, 0, 40, 40, 40, 0, 40, 40, 40, 40, 40, 40, 0, 0, 40, 0, 40, 40, 40, 0, 0, 40, 0, 0, 0, 40, 0, 40, 40, 40, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 40, 40, 40, 40, 40, 0, 40, 0, 40, 40, -1, 0, 40, 0, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 0, 40, 0, 0, 40, 0, 40, 40, 40, 40, 40, 40, 40, 0, 0, 40, 40, 0, 0, 40, 0, 40, 0, 40, 0, 40, 40, 0, 40, 40, 40, 40, 40, 0, 0, 40, 0, 40, 0, 40, 40, 0, 0, 40, 40, 40, 0, 0, 40, 0, 40, 40, 40, 0, 0, 0, 40, 40, 40, 40, 40, 40, 40, 40, 40, 0, 40, 0, 0, 0, 40, 0, 0, 40, 40, 40, 40, 40, 0, 40, 0, 40, 0, 0, 0, 0, 40, 40, 40, 40, 40, 40, 40, 0, 40, 0, 0, 0, 40, 0, 0, 40, 40, 40, 40, 40, 0, 0, 40, 40, 0, 0, 40, 40, 40, 0, 40, 0, 40, 0, 0, 40, 0, 40, 40, 40, 0, 40, 0, 0, 0, 0, 0, 0, 40, 0, 40, 40, 0, 0, 40, 0, 40, 40, 0, 40, 40, 0, 40, 40, 40, 0, 0, 0, 0, 0, 40, 0, 0, 40, 40, 40, 40, 40, 40, 40, 40, 40, 0, 0, 0, 0, 40, 40, 40, 40, 40, 40, 40, 0, 40, 0, 0, 0, 0, 0, 40, 0, 0, 40, 40, 40, 40, 40, 0, 0, 0, 0, 40, 0, 40, 40, 40, 40, 40, 40, 40, 40, 0, 0, 0, 40, 40, 40, 40, 40, 40, 40, 0, 40, 0, 40, 40, 40, 40, 40, 0, 0, 0, 0, 40, 0, 0, 40, 0, 40, 40, 40, 0, 0, 40, 0, 0, 40, 0, 40, 0, 40, 40, 0, 40, 0, 40, 0, 0, 0, 0, 40, 40, 0, 0, 40, 40, 40, 0, 40, 0, 40, 0, 40, 40, 40, 0, 40, 0, 0, 0, 40, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 40, 0, 40, 0, 0, 0, 0, 40, 0, 40, 40, 40, 40, 40, 40, 40, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 40, 40, 40, 40, 40, 40, 0, 0, 0, 0, 0, 40, 0, 40, 40, 40, 40, 0, 40, 40, 40, 0, 0, 40, 40, 0, 40, 40, 0, 0, 40, 0, 40, 0, 40, 0, 0, 40, 40, 0, 40, 0, 0, 0, 40, 0, 40, 40, 40, 0, 0, 40, 0, 0, 40, 40, 0, 40, 40, 0, 40, 0, 40, 0, 0, 0, 40, 0, 40, 0, 0, 40, 0, 0, 40, 0, 40, 0, 0, 0, 40, 0, 0, 0, 40, 0, 40, 0, 0, 40, 0, 0, 0, 40, 0, 0, 40, 0, 0, 0, 0, 40, 0, 0, 0, 40, 0, 0, 40, 0, 0, 40, 0, 0, 40, 40, 0, 40, 0, 40, 0, 0, 40, 40, 0, 0, 40, 40, 0, 40, 40, 0, 0, 40, 0, 40, 0, 40, 0, 0, 40, 40, 0, 40, 0, 0, 0, 0, 0, 0, 40, 40, 40, 40, 40, 40, 40, 0, 40, 0, 40, 40, 40, 40, 0, 0, 40, 40, 40, 40, 40, 40, 0, 40, 0, 0, 40, 40, 0, 40, 0, 0, 40, 0, 40, 0, 0, 40, 40, 0, 0, 0, 40, 0, 0, 40, 0, 0, 40, 0, 0, 40, 40, 0, 40, 0, 40, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 40, 0, 0, 40, 40, 0, 40, 0, 40, 0, 40, 0, 0, 40, 0, 40, 0, 0, 40, 40, 0, 0, 40, 0, 40, 0, 40, 0, 40, 0, 0, 40, 0, 0, 0, 40, 0, 0, 40, 40, 0, 40, 0, 0, 0, 0, 40, 0, 40, 0, 0, 40, 0, 0, 40, 0, 0, 0, 40, 0, 40, 0, 0, 0 }; static const ANTLR3_INT32 dfa40_accept[795] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6, 9, 10, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 2, 3, 5, 7, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa40_special[795] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 134, 392, 122, 131, 125, 128, 119, 135, 393, 123, 132, 126, 129, 120, -1, -1, -1, 137, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 136, 394, 124, 133, 127, 130, 121, 139, -1, -1, -1, -1, -1, -1, -1, -1, 164, 223, 280, 333, 334, 371, 138, -1, -1, -1, -1, -1, -1, 224, 180, -1, -1, -1, -1, -1, -1, -1, 258, -1, 332, -1, -1, 351, -1, 181, 300, -1, -1, 370, -1, -1, -1, -1, -1, -1, -1, -1, -1, 347, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, 2, 331, -1, 212, -1, -1, -1, 19, 144, -1, 289, 314, 290, -1, 335, -1, -1, -1, 315, 310, 182, 259, 140, -1, 159, 323, 313, 303, 360, 352, -1, -1, -1, -1, -1, 353, -1, 172, -1, -1, -1, 145, -1, 46, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 248, -1, 47, 257, -1, 368, -1, -1, -1, -1, -1, -1, -1, 382, 173, -1, -1, 57, 62, -1, 272, -1, 372, -1, 293, -1, -1, 0, -1, -1, -1, -1, -1, 324, 155, -1, 143, -1, 101, -1, -1, 69, 319, -1, -1, -1, 118, 146, -1, 311, -1, -1, -1, 237, 63, 74, -1, -1, -1, -1, -1, -1, -1, -1, -1, 48, -1, 54, 100, 190, -1, 30, 215, -1, -1, -1, -1, -1, 225, -1, 4, -1, 113, 45, 361, 279, -1, -1, -1, -1, -1, -1, -1, 232, -1, 349, 211, 253, -1, 176, 265, -1, -1, -1, -1, -1, 208, 389, -1, -1, 55, 222, -1, -1, -1, 150, -1, 243, -1, 377, 337, -1, 154, -1, -1, -1, 383, -1, 364, 247, 381, 210, 23, 299, -1, 147, -1, -1, 38, 98, -1, 390, -1, -1, 298, -1, -1, 117, -1, -1, -1, 359, 3, 71, 105, 151, -1, 24, 204, -1, -1, -1, -1, -1, -1, -1, -1, -1, 75, 67, 39, 284, -1, -1, -1, -1, -1, -1, -1, 387, -1, 7, 26, 91, 8, 256, -1, 191, 246, -1, -1, -1, -1, -1, 312, 309, 260, 170, -1, 18, -1, -1, -1, -1, -1, -1, -1, -1, 218, 294, 9, -1, -1, -1, -1, -1, -1, -1, 165, -1, 76, -1, -1, -1, -1, -1, 277, 179, 205, 273, -1, 11, 94, -1, 380, -1, -1, -1, 185, 175, -1, 199, 369, -1, 83, -1, 269, -1, -1, 192, -1, 167, -1, 207, 21, 388, 160, -1, -1, 60, 295, -1, -1, -1, 161, -1, 336, -1, 365, -1, -1, -1, 354, -1, 261, 252, 262, -1, 70, 106, 5, 148, -1, 58, 10, 15, 90, 43, 88, 40, 34, 81, 152, -1, 6, 89, 77, 219, -1, 59, 17, 82, 35, 385, -1, 244, -1, 22, 41, 72, 200, -1, 306, -1, -1, -1, -1, -1, -1, -1, 52, 78, 16, 13, 33, 85, 61, 320, -1, 37, 304, -1, -1, -1, -1, -1, -1, 226, 42, 92, 103, 178, -1, 329, -1, -1, -1, -1, 166, -1, -1, -1, 99, 285, -1, -1, 350, -1, -1, 362, 342, -1, 330, -1, 168, -1, 201, 355, -1, -1, 228, -1, 234, 29, 86, -1, 356, -1, -1, -1, 292, 249, -1, 375, 231, -1, -1, 233, -1, -1, 283, -1, 250, -1, 275, 95, 186, -1, 157, -1, 14, 286, -1, 239, 206, -1, 358, -1, 338, 158, 276, -1, 271, 345, 297, -1, 357, -1, 340, 177, -1, 341, 220, 184, -1, 363, 291, -1, 174, 230, 254, 343, -1, 242, 31, 109, -1, 44, 325, -1, 241, 197, -1, 281, 384, -1, -1, 227, -1, 245, -1, 214, 213, -1, -1, 93, 305, -1, -1, 328, -1, -1, 216, 235, -1, 348, -1, 339, -1, 373, 301, -1, -1, 240, -1, 198, 107, 87, 73, 84, 49, -1, -1, -1, -1, -1, -1, -1, 367, -1, 114, -1, -1, -1, -1, 112, 12, -1, -1, -1, -1, -1, -1, 376, -1, 102, 346, -1, -1, 108, -1, 251, 282, -1, 317, -1, 322, 378, -1, -1, 195, 80, 115, -1, 68, 209, -1, 203, 189, -1, 287, 321, -1, -1, 307, -1, 193, -1, 264, 221, 25, 32, 36, 302, -1, 50, 65, 116, 187, 51, 110, 56, 268, -1, 111, 27, 64, 97, 162, -1, 96, 202, 266, 20, 171, -1, 196, 153, -1, -1, 288, -1, 326, -1, 66, -1, 327, 278, -1, 366, -1, 267, 236, -1, -1, 149, 263, -1, 217, -1, 274, -1, 188, -1, 379, 169, -1, 163, 104, 386, -1, 141, 255, -1, -1, 318, -1, 391, 79, 28, 53, -1, 308, -1, 316, 183, -1, 194, 142, -1, 238, 229, 374, -1, 156, -1, 270, 296, 344 }; /** Used when there is no transition table entry for a particular state */ #define dfa40_T_empty NULL static const ANTLR3_INT32 dfa40_T0[] = { 332, 37, 37, 30, 332, 37, 356, 110, 358, 357, 332, 355, 465, 358, 37, 356, 37, 37, 37, 358, 332, 37, 37, 359, 332, 195, 37, 37, 358, 332, 167, 332, 108, 358, 358, 358, 358 }; static const ANTLR3_INT32 dfa40_T1[] = { 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 10 }; static const ANTLR3_INT32 dfa40_T2[] = { 37, 37, 37, 30, 206, 37, 143, 110, 145, 144, 37, 205, 204, 37, 37, 143, 37, 37, 37, 37, 37, 37, 37, 37, 37, 195, 37, 37, 37, 37, 167, 37, 108, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T3[] = { 37, 37, 37, 30, 194, 37, 37, 110, 37, 37, 37, 37, 193, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 195, 37, 37, 37, 37, 167, 37, 108, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T4[] = { 37, 37, 37, 30, 37, 37, 143, 37, 145, 144, 37, 142, 297, 37, 37, 143, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T5[] = { 69, 74, 37, 30, 172, 69, 173, 37, 175, 174, 177, 175, 262, 175, 260, 173, 37, 37, 37, 175, 178, 37, 37, 176, 177, 177, 37, 37, 175, 178, 69, 177, 37, 175, 175, 175, 175 }; static const ANTLR3_INT32 dfa40_T6[] = { 69, 74, 37, 30, 497, 69, 498, 37, 500, 499, 502, 500, 588, 500, 586, 498, 37, 37, 37, 500, 485, 37, 37, 501, 502, 502, 37, 37, 500, 485, 69, 502, 37, 500, 500, 500, 500 }; static const ANTLR3_INT32 dfa40_T7[] = { 96, 74, 37, 30, 178, 100, 252, 37, 254, 253, 258, 254, 374, 254, 256, 252, 37, 37, 37, 254, 178, 37, 37, 255, 257, 178, 37, 37, 254, 178, 37, 178, 37, 254, 254, 254, 254 }; static const ANTLR3_INT32 dfa40_T8[] = { 96, 74, 37, 30, 485, 100, 479, 37, 481, 480, 484, 481, 578, 481, 573, 479, 37, 37, 37, 481, 485, 37, 37, 482, 483, 485, 37, 37, 481, 485, 37, 485, 37, 481, 481, 481, 481 }; static const ANTLR3_INT32 dfa40_T9[] = { 96, 74, 37, 30, 178, 100, 252, 37, 254, 253, 258, 254, 375, 254, 256, 252, 37, 37, 37, 254, 178, 37, 37, 255, 257, 178, 37, 37, 254, 178, 37, 178, 37, 254, 254, 254, 254 }; static const ANTLR3_INT32 dfa40_T10[] = { 96, 74, 37, 30, 485, 100, 479, 37, 481, 480, 484, 481, 579, 481, 573, 479, 37, 37, 37, 481, 485, 37, 37, 482, 483, 485, 37, 37, 481, 485, 37, 485, 37, 481, 481, 481, 481 }; static const ANTLR3_INT32 dfa40_T11[] = { 391, 37, 37, 30, 373, 37, 387, 37, 389, 388, 373, 389, 488, 389, 37, 387, 37, 37, 37, 389, 373, 37, 37, 390, 373, 373, 37, 37, 389, 373, 37, 373, 37, 389, 389, 389, 389 }; static const ANTLR3_INT32 dfa40_T12[] = { 96, 74, 37, 30, 178, 100, 252, 37, 254, 253, 258, 254, 361, 254, 256, 252, 37, 37, 37, 254, 178, 37, 37, 255, 257, 178, 37, 37, 254, 178, 37, 178, 37, 254, 254, 254, 254 }; static const ANTLR3_INT32 dfa40_T13[] = { 96, 74, 37, 30, 485, 100, 479, 37, 481, 480, 484, 481, 574, 481, 573, 479, 37, 37, 37, 481, 485, 37, 37, 482, 483, 485, 37, 37, 481, 485, 37, 485, 37, 481, 481, 481, 481 }; static const ANTLR3_INT32 dfa40_T14[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 759, 37, 37, 760, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 128, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T15[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 782, 37, 37, 783, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 217, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T16[] = { 370, 74, 37, 30, 653, 100, 647, 37, 649, 648, 652, 649, 706, 649, 97, 647, 37, 37, 37, 649, 653, 37, 37, 650, 651, 653, 37, 37, 649, 653, 37, 653, 37, 649, 649, 649, 649 }; static const ANTLR3_INT32 dfa40_T17[] = { 69, 74, 37, 30, 172, 69, 173, 37, 175, 174, 177, 175, 171, 175, 69, 173, 37, 37, 37, 175, 178, 37, 37, 176, 177, 177, 37, 37, 175, 178, 69, 177, 37, 175, 175, 175, 175 }; static const ANTLR3_INT32 dfa40_T18[] = { 370, 74, 37, 30, 373, 100, 366, 37, 368, 367, 372, 368, 645, 368, 97, 366, 37, 37, 37, 368, 373, 37, 37, 369, 371, 373, 37, 37, 368, 373, 37, 373, 37, 368, 368, 368, 368 }; static const ANTLR3_INT32 dfa40_T19[] = { 332, 37, 37, 30, 332, 37, 356, 110, 358, 357, 332, 355, 644, 358, 37, 356, 37, 37, 37, 358, 332, 37, 37, 359, 332, 195, 37, 37, 358, 332, 167, 332, 108, 358, 358, 358, 358 }; static const ANTLR3_INT32 dfa40_T20[] = { 69, 74, 37, 30, 497, 69, 498, 37, 500, 499, 502, 500, 496, 500, 69, 498, 37, 37, 37, 500, 485, 37, 37, 501, 502, 502, 37, 37, 500, 485, 69, 502, 37, 500, 500, 500, 500 }; static const ANTLR3_INT32 dfa40_T21[] = { 164, 37, 37, 30, 164, 37, 240, 110, 242, 241, 164, 239, 566, 242, 247, 240, 37, 37, 37, 242, 164, 37, 37, 243, 164, 195, 37, 37, 242, 164, 167, 164, 108, 242, 242, 242, 242 }; static const ANTLR3_INT32 dfa40_T22[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 777, 37, 37, 778, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 128, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T23[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 789, 37, 37, 790, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 217, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T24[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 37, 37, 37, 250, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 167, 37, 170, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T25[] = { 226, 74, 37, 30, 164, 100, 222, 110, 230, 223, 229, 224, 221, 230, 227, 222, 37, 37, 37, 230, 164, 37, 37, 225, 228, 195, 37, 37, 230, 164, 167, 164, 108, 230, 230, 230, 230 }; static const ANTLR3_INT32 dfa40_T26[] = { 69, 74, 37, 30, 172, 69, 173, 37, 175, 174, 177, 175, 265, 175, 260, 173, 37, 37, 37, 175, 178, 37, 37, 176, 177, 177, 37, 37, 175, 178, 69, 177, 37, 175, 175, 175, 175 }; static const ANTLR3_INT32 dfa40_T27[] = { 69, 74, 37, 30, 497, 69, 498, 37, 500, 499, 502, 500, 591, 500, 586, 498, 37, 37, 37, 500, 485, 37, 37, 501, 502, 502, 37, 37, 500, 485, 69, 502, 37, 500, 500, 500, 500 }; static const ANTLR3_INT32 dfa40_T28[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 37, 37, 37, 787, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 128, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T29[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 37, 37, 37, 793, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 217, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T30[] = { 26, -1, -1, -1, 27, 12, 23, 22, -1, 23, 13, 23, -1, 21, -1, -1, -1, 23, -1, -1, -1, 24, 25, -1, -1, -1, 23, -1, -1, -1, 11, 23, 23, 23, 23 }; static const ANTLR3_INT32 dfa40_T31[] = { 96, 74, 37, 30, 178, 100, 252, 37, 254, 253, 258, 254, 362, 254, 256, 252, 37, 37, 37, 254, 178, 37, 37, 255, 257, 178, 37, 37, 254, 178, 37, 178, 37, 254, 254, 254, 254 }; static const ANTLR3_INT32 dfa40_T32[] = { 96, 74, 37, 30, 485, 100, 479, 37, 481, 480, 484, 481, 575, 481, 573, 479, 37, 37, 37, 481, 485, 37, 37, 482, 483, 485, 37, 37, 481, 485, 37, 485, 37, 481, 481, 481, 481 }; static const ANTLR3_INT32 dfa40_T33[] = { 164, 37, 37, 30, 164, 37, 240, 37, 242, 241, 164, 239, 353, 242, 37, 240, 37, 37, 37, 242, 164, 37, 37, 243, 164, 37, 37, 37, 242, 164, 167, 164, 245, 242, 242, 242, 242 }; static const ANTLR3_INT32 dfa40_T34[] = { 37, 37, 37, 30, 90, 37, 37, 37, 37, 89, 37, 37, 88, 37, 37, 89, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T35[] = { 37, 37, 37, 30, 151, 37, 37, 37, 37, 150, 37, 37, 149, 37, 37, 150, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T36[] = { 37, 37, 37, 30, 197, 37, 37, 37, 37, 279, 37, 37, 281, 37, 37, 280, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 128, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T37[] = { 37, 37, 37, 30, 315, 37, 37, 37, 37, 428, 37, 37, 430, 37, 37, 429, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 217, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T38[] = { 391, 37, 37, 30, 653, 37, 657, 37, 659, 658, 653, 659, 715, 659, 37, 657, 37, 37, 37, 659, 653, 37, 37, 660, 653, 653, 37, 37, 659, 653, 37, 653, 37, 659, 659, 659, 659 }; static const ANTLR3_INT32 dfa40_T39[] = { 391, 37, 37, 30, 653, 37, 657, 37, 659, 658, 653, 659, 656, 659, 37, 657, 37, 37, 37, 659, 653, 37, 37, 660, 653, 653, 37, 37, 659, 653, 37, 653, 37, 659, 659, 659, 659 }; static const ANTLR3_INT32 dfa40_T40[] = { 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51 }; static const ANTLR3_INT32 dfa40_T41[] = { 37, 37, 37, 30, 37, 37, 102, 37, 37, 103, 37, 37, 101, 37, 37, 102, 37, 37, 37, 37, 104, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T42[] = { 332, 37, 37, 30, 332, 37, 356, 110, 358, 357, 332, 355, 467, 358, 37, 356, 37, 37, 37, 358, 332, 37, 37, 359, 332, 195, 37, 37, 358, 332, 167, 332, 108, 358, 358, 358, 358 }; static const ANTLR3_INT32 dfa40_T43[] = { 383, 74, 37, 30, 377, 69, 378, 37, 380, 379, 382, 380, 491, 380, 69, 378, 37, 37, 37, 380, 373, 37, 37, 381, 382, 382, 37, 37, 380, 373, 69, 382, 37, 380, 380, 380, 380 }; static const ANTLR3_INT32 dfa40_T44[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 762, 37, 37, 763, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 128, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T45[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 785, 37, 37, 786, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 217, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T46[] = { 37, 37, 37, 30, 37, 37, 143, 37, 145, 146, 37, 148, 147, 37, 37, 143, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T47[] = { 37, 37, 37, 30, 197, 37, 37, 37, 37, 196, 37, 37, 199, 37, 37, 198, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 128, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T48[] = { 37, 37, 37, 30, 206, 37, 102, 110, 37, 214, 37, 37, 305, 37, 37, 102, 37, 37, 37, 37, 37, 37, 37, 37, 37, 195, 37, 37, 37, 37, 167, 37, 108, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T49[] = { 37, 37, 37, 30, 315, 37, 37, 37, 37, 314, 37, 37, 317, 37, 37, 316, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 217, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T50[] = { 37, 37, 37, 30, 37, 37, 143, 37, 145, 306, 37, 308, 307, 37, 37, 143, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T51[] = { 37, 37, 37, 30, 206, 37, 102, 110, 37, 623, 37, 37, 688, 37, 37, 102, 37, 37, 37, 37, 37, 37, 37, 37, 37, 195, 37, 37, 37, 37, 167, 37, 108, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T52[] = { 37, 37, 37, 30, 206, 37, 102, 110, 37, 427, 37, 37, 540, 37, 37, 102, 37, 37, 37, 37, 37, 37, 37, 37, 37, 195, 37, 37, 37, 37, 167, 37, 108, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T53[] = { 37, 37, 37, 30, 37, 37, 143, 37, 145, 541, 37, 543, 542, 37, 37, 143, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T54[] = { 332, 37, 37, 30, 332, 37, 356, 110, 358, 357, 332, 355, 468, 358, 37, 356, 37, 37, 37, 358, 332, 37, 37, 359, 332, 195, 37, 37, 358, 332, 167, 332, 108, 358, 358, 358, 358 }; static const ANTLR3_INT32 dfa40_T55[] = { -1 }; static const ANTLR3_INT32 dfa40_T56[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 779, 37, 37, 780, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 128, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T57[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 791, 37, 37, 792, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 217, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T58[] = { 37, 37, 37, 30, 206, 37, 102, 110, 37, 203, 37, 37, 298, 37, 37, 102, 37, 37, 37, 37, 37, 37, 37, 37, 37, 195, 37, 37, 37, 37, 167, 37, 108, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T59[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 413, 37, 37, 415, 37, 37, 414, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T60[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 523, 37, 37, 525, 37, 37, 524, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T61[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 554, 37, 37, 556, 37, 37, 555, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T62[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 626, 37, 37, 628, 37, 37, 627, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T63[] = { 383, 74, 37, 30, 377, 69, 378, 37, 380, 379, 382, 380, 492, 380, 69, 378, 37, 37, 37, 380, 373, 37, 37, 381, 382, 382, 37, 37, 380, 373, 69, 382, 37, 380, 380, 380, 380 }; static const ANTLR3_INT32 dfa40_T64[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 37, 37, 37, 788, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 128, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T65[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 37, 37, 37, 794, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 217, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T66[] = { 69, 37, 37, 30, 37, 69, 65, 37, 67, 66, 69, 67, 64, 67, 69, 65, 37, 37, 37, 67, 70, 37, 37, 68, 69, 69, 37, 37, 67, 37, 69, 69, 37, 67, 67, 67, 67 }; static const ANTLR3_INT32 dfa40_T67[] = { 370, 74, 37, 30, 373, 100, 366, 37, 368, 367, 372, 368, 486, 368, 97, 366, 37, 37, 37, 368, 373, 37, 37, 369, 371, 373, 37, 37, 368, 373, 37, 373, 37, 368, 368, 368, 368 }; static const ANTLR3_INT32 dfa40_T68[] = { 370, 74, 37, 30, 373, 100, 366, 37, 368, 367, 372, 368, 487, 368, 97, 366, 37, 37, 37, 368, 373, 37, 37, 369, 371, 373, 37, 37, 368, 373, 37, 373, 37, 368, 368, 368, 368 }; static const ANTLR3_INT32 dfa40_T69[] = { 161, 74, 37, 30, 156, 69, 157, 163, 165, 158, 161, 159, 155, 165, 69, 157, 37, 37, 37, 165, 164, 37, 37, 160, 161, 111, 37, 37, 165, 164, 107, 161, 162, 165, 165, 165, 165 }; static const ANTLR3_INT32 dfa40_T70[] = { 370, 74, 37, 30, 373, 100, 366, 37, 368, 367, 372, 368, 474, 368, 97, 366, 37, 37, 37, 368, 373, 37, 37, 369, 371, 373, 37, 37, 368, 373, 37, 373, 37, 368, 368, 368, 368 }; static const ANTLR3_INT32 dfa40_T71[] = { 164, 37, 37, 30, 164, 37, 240, 110, 242, 241, 164, 239, 246, 242, 247, 240, 37, 37, 37, 242, 164, 37, 37, 243, 164, 195, 37, 37, 242, 164, 167, 164, 108, 242, 242, 242, 242 }; static const ANTLR3_INT32 dfa40_T72[] = { 69, 74, 37, 30, 106, 69, 75, 110, 78, 602, 69, 77, 603, 67, 69, 75, 37, 37, 37, 67, 37, 37, 37, 68, 69, 111, 37, 37, 67, 37, 107, 69, 108, 67, 67, 67, 67 }; static const ANTLR3_INT32 dfa40_T73[] = { 164, 37, 37, 30, 164, 37, 240, 110, 242, 241, 164, 239, 349, 242, 247, 240, 37, 37, 37, 242, 164, 37, 37, 243, 164, 195, 37, 37, 242, 164, 167, 164, 108, 242, 242, 242, 242 }; static const ANTLR3_INT32 dfa40_T74[] = { 69, 74, 37, 30, 73, 69, 181, 37, 116, 182, 69, 77, 272, 67, 69, 181, 37, 37, 37, 67, 37, 37, 37, 68, 69, 69, 37, 37, 67, 37, 69, 69, 37, 67, 67, 67, 67 }; static const ANTLR3_INT32 dfa40_T75[] = { 37, 37, 37, 30, 206, 37, 143, 110, 145, 144, 37, 205, 207, 37, 37, 143, 37, 37, 37, 37, 37, 37, 37, 37, 37, 195, 37, 37, 37, 37, 167, 37, 108, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T76[] = { 383, 74, 37, 30, 377, 69, 378, 37, 380, 379, 382, 380, 495, 380, 69, 378, 37, 37, 37, 380, 373, 37, 37, 381, 382, 382, 37, 37, 380, 373, 69, 382, 37, 380, 380, 380, 380 }; static const ANTLR3_INT32 dfa40_T77[] = { 370, 74, 37, 30, 373, 100, 366, 37, 368, 367, 372, 368, 475, 368, 97, 366, 37, 37, 37, 368, 373, 37, 37, 369, 371, 373, 37, 37, 368, 373, 37, 373, 37, 368, 368, 368, 368 }; static const ANTLR3_INT32 dfa40_T78[] = { 370, 74, 37, 30, 653, 100, 647, 37, 649, 648, 652, 649, 646, 649, 97, 647, 37, 37, 37, 649, 653, 37, 37, 650, 651, 653, 37, 37, 649, 653, 37, 653, 37, 649, 649, 649, 649 }; static const ANTLR3_INT32 dfa40_T79[] = { 164, 37, 37, 30, 164, 37, 240, 110, 242, 241, 164, 239, 350, 242, 247, 240, 37, 37, 37, 242, 164, 37, 37, 243, 164, 195, 37, 37, 242, 164, 167, 164, 108, 242, 242, 242, 242 }; static const ANTLR3_INT32 dfa40_T80[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 364, 37, 37, 363, 37, 37, 364, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T81[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 264, 37, 37, 263, 37, 37, 264, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T82[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 352, 37, 37, 351, 37, 37, 352, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T83[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 448, 37, 37, 447, 37, 37, 448, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T84[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 459, 37, 37, 458, 37, 37, 459, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T85[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 477, 37, 37, 476, 37, 37, 477, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T86[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 494, 37, 37, 493, 37, 37, 494, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T87[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 725, 37, 37, 724, 37, 37, 725, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T88[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 577, 37, 37, 576, 37, 37, 577, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T89[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 710, 37, 37, 709, 37, 37, 710, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T90[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 590, 37, 37, 589, 37, 37, 590, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T91[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 125, 37, 37, 124, 37, 37, 125, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T92[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 201, 37, 37, 200, 37, 37, 201, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T93[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 515, 37, 37, 514, 37, 37, 515, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T94[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 568, 37, 37, 567, 37, 37, 568, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T95[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 593, 37, 37, 592, 37, 37, 593, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T96[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 673, 37, 37, 672, 37, 37, 673, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T97[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 755, 37, 37, 754, 37, 37, 755, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T98[] = { 37, 37, 37, 30, 37, 37, 302, 37, 209, 303, 37, 37, 301, 37, 37, 302, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T99[] = { 370, 74, 37, 30, 653, 100, 647, 37, 649, 648, 652, 649, 720, 649, 97, 647, 37, 37, 37, 649, 653, 37, 37, 650, 651, 653, 37, 37, 649, 653, 37, 653, 37, 649, 649, 649, 649 }; static const ANTLR3_INT32 dfa40_T100[] = { 69, 74, 37, 30, 73, 69, 83, 37, 67, 84, 69, 67, 188, 67, 69, 83, 37, 37, 37, 67, 37, 37, 37, 68, 69, 69, 37, 37, 67, 37, 69, 69, 37, 67, 67, 67, 67 }; static const ANTLR3_INT32 dfa40_T101[] = { 343, 74, 37, 30, 338, 69, 339, 110, 344, 340, 343, 341, 455, 344, 69, 339, 37, 37, 37, 344, 332, 37, 37, 342, 343, 111, 37, 37, 344, 332, 107, 343, 108, 344, 344, 344, 344 }; static const ANTLR3_INT32 dfa40_T102[] = { 37, 37, 36, 30, 37, 37, 29, 37, 33, 32, 37, 33, 31, 33, 37, 29, 37, 37, 37, 33, 37, 37, 37, 34, 35, 37, 37, 37, 33, 37, 37, 37, 37, 33, 33, 33, 33 }; static const ANTLR3_INT32 dfa40_T103[] = { 383, 74, 37, 30, 663, 69, 664, 37, 666, 665, 668, 666, 662, 666, 69, 664, 37, 37, 37, 666, 653, 37, 37, 667, 668, 668, 37, 37, 666, 653, 69, 668, 37, 666, 666, 666, 666 }; static const ANTLR3_INT32 dfa40_T104[] = { 37, 37, 37, 30, 403, 37, 37, 37, 37, 280, 37, 37, 405, 37, 37, 280, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 128, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T105[] = { 37, 37, 37, 30, 545, 37, 37, 37, 37, 429, 37, 37, 547, 37, 37, 429, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 217, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T106[] = { 37, 37, 37, 30, 290, 37, 37, 37, 37, 198, 37, 37, 295, 37, 37, 198, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 128, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T107[] = { 37, 37, 37, 30, 436, 37, 37, 37, 37, 316, 37, 37, 441, 37, 37, 316, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 217, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T108[] = { 226, 74, 37, 30, 164, 100, 222, 110, 230, 223, 229, 224, 335, 230, 227, 222, 37, 37, 37, 230, 164, 37, 37, 225, 228, 195, 37, 37, 230, 164, 167, 164, 108, 230, 230, 230, 230 }; static const ANTLR3_INT32 dfa40_T109[] = { 37, 37, 37, 30, 37, 37, 302, 37, 209, 303, 37, 142, 421, 37, 37, 302, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T110[] = { 69, 74, 37, 30, 73, 69, 75, 37, 116, 76, 69, 67, 115, 67, 69, 75, 37, 37, 37, 67, 37, 37, 37, 68, 69, 69, 37, 37, 67, 37, 69, 69, 37, 67, 67, 67, 67 }; static const ANTLR3_INT32 dfa40_T111[] = { 226, 74, 37, 30, 164, 100, 222, 110, 230, 223, 229, 224, 323, 230, 227, 222, 37, 37, 37, 230, 164, 37, 37, 225, 228, 195, 37, 37, 230, 164, 167, 164, 108, 230, 230, 230, 230 }; static const ANTLR3_INT32 dfa40_T112[] = { 226, 74, 37, 30, 164, 100, 222, 110, 230, 223, 229, 224, 334, 230, 227, 222, 37, 37, 37, 230, 164, 37, 37, 225, 228, 195, 37, 37, 230, 164, 167, 164, 108, 230, 230, 230, 230 }; static const ANTLR3_INT32 dfa40_T113[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 346, 37, 37, 345, 37, 37, 346, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T114[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 443, 37, 37, 442, 37, 37, 443, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T115[] = { 37, 37, 37, 30, 178, 37, 268, 37, 270, 269, 178, 270, 599, 270, 267, 268, 37, 37, 37, 270, 178, 37, 37, 271, 178, 178, 37, 37, 270, 178, 37, 178, 37, 270, 270, 270, 270 }; static const ANTLR3_INT32 dfa40_T116[] = { 37, 37, 37, 30, 485, 37, 510, 37, 512, 511, 485, 512, 728, 512, 581, 510, 37, 37, 37, 512, 485, 37, 37, 513, 485, 485, 37, 37, 512, 485, 37, 485, 37, 512, 512, 512, 512 }; static const ANTLR3_INT32 dfa40_T117[] = { 37, 37, 37, 30, 206, 37, 143, 110, 145, 423, 37, 424, 425, 37, 37, 143, 37, 37, 37, 37, 37, 37, 37, 37, 37, 195, 37, 37, 37, 37, 167, 37, 108, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T118[] = { 69, 74, 37, 30, 73, 69, 83, 37, 67, 84, 69, 67, 123, 67, 69, 83, 37, 37, 37, 67, 37, 37, 37, 68, 69, 69, 37, 37, 67, 37, 69, 69, 37, 67, 67, 67, 67 }; static const ANTLR3_INT32 dfa40_T119[] = { 37, 37, 37, 30, 206, 37, 143, 110, 145, 210, 37, 211, 212, 37, 37, 143, 37, 37, 37, 37, 37, 37, 37, 37, 37, 195, 37, 37, 37, 37, 167, 37, 108, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T120[] = { 383, 74, 37, 30, 663, 69, 664, 37, 666, 665, 668, 666, 776, 666, 69, 664, 37, 37, 37, 666, 653, 37, 37, 667, 668, 668, 37, 37, 666, 653, 69, 668, 37, 666, 666, 666, 666 }; static const ANTLR3_INT32 dfa40_T121[] = { 96, 74, 37, 30, 37, 100, 92, 37, 94, 93, 99, 94, 296, 94, 97, 92, 37, 37, 37, 94, 37, 37, 37, 95, 98, 37, 37, 37, 94, 37, 37, 37, 37, 94, 94, 94, 94 }; static const ANTLR3_INT32 dfa40_T122[] = { 37, 37, 37, 30, 206, 37, 143, 110, 145, 619, 37, 620, 621, 37, 37, 143, 37, 37, 37, 37, 37, 37, 37, 37, 37, 195, 37, 37, 37, 37, 167, 37, 108, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T123[] = { 96, 74, 37, 30, 37, 100, 92, 110, 94, 154, 99, 94, 220, 94, 97, 92, 37, 37, 37, 94, 37, 37, 37, 95, 98, 195, 37, 37, 94, 37, 167, 37, 108, 94, 94, 94, 94 }; static const ANTLR3_INT32 dfa40_T124[] = { 37, 37, 37, 30, 206, 37, 143, 110, 145, 739, 37, 205, 740, 37, 37, 143, 37, 37, 37, 37, 37, 37, 37, 37, 37, 195, 37, 37, 37, 37, 167, 37, 108, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T125[] = { 329, 74, 37, 30, 332, 100, 325, 110, 333, 326, 331, 327, 444, 333, 97, 325, 37, 37, 37, 333, 332, 37, 37, 328, 330, 195, 37, 37, 333, 332, 167, 332, 108, 333, 333, 333, 333 }; static const ANTLR3_INT32 dfa40_T126[] = { 37, 37, 37, 30, 206, 37, 143, 110, 145, 144, 37, 424, 539, 37, 37, 143, 37, 37, 37, 37, 37, 37, 37, 37, 37, 195, 37, 37, 37, 37, 167, 37, 108, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T127[] = { 47, -1, -1, -1, 48, -1, 44, 43, -1, 44, 13, 44, -1, 42, -1, -1, -1, 44, -1, -1, -1, 45, 46, -1, -1, -1, 44, -1, -1, -1, 28, 44, 44, 44, 44 }; static const ANTLR3_INT32 dfa40_T128[] = { 37, 37, 37, 30, 206, 37, 143, 110, 145, 144, 37, 211, 304, 37, 37, 143, 37, 37, 37, 37, 37, 37, 37, 37, 37, 195, 37, 37, 37, 37, 167, 37, 108, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T129[] = { 37, 37, 37, 30, 206, 37, 143, 110, 145, 144, 37, 620, 687, 37, 37, 143, 37, 37, 37, 37, 37, 37, 37, 37, 37, 195, 37, 37, 37, 37, 167, 37, 108, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T130[] = { 69, 74, 37, 30, 73, 69, 83, 37, 67, 84, 69, 67, 82, 67, 69, 83, 37, 37, 37, 67, 37, 37, 37, 68, 69, 69, 37, 37, 67, 37, 69, 69, 37, 67, 67, 67, 67 }; static const ANTLR3_INT32 dfa40_T131[] = { 37, 37, 37, 30, 206, 37, 143, 110, 145, 144, 37, 205, 764, 37, 37, 143, 37, 37, 37, 37, 37, 37, 37, 37, 37, 195, 37, 37, 37, 37, 167, 37, 108, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T132[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 37, 37, 37, 169, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 170, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T133[] = { 37, 37, 37, 30, 403, 37, 37, 37, 37, 524, 37, 37, 607, 37, 37, 524, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 128, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T134[] = { 37, 37, 37, 30, 545, 37, 37, 37, 37, 627, 37, 37, 694, 37, 37, 627, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 217, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T135[] = { 161, 74, 37, 30, 156, 69, 157, 110, 165, 158, 161, 159, 237, 165, 232, 157, 37, 37, 37, 165, 164, 37, 37, 160, 161, 111, 37, 37, 165, 164, 107, 161, 108, 165, 165, 165, 165 }; static const ANTLR3_INT32 dfa40_T136[] = { 37, 37, 37, 30, 290, 37, 37, 37, 37, 414, 37, 37, 533, 37, 37, 414, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 128, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T137[] = { 37, 37, 37, 30, 436, 37, 37, 37, 37, 555, 37, 37, 636, 37, 37, 555, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 217, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T138[] = { 69, 74, 37, 30, 73, 69, 181, 37, 116, 182, 69, 77, 273, 67, 69, 181, 37, 37, 37, 67, 37, 37, 37, 68, 69, 69, 37, 37, 67, 37, 69, 69, 37, 67, 67, 67, 67 }; static const ANTLR3_INT32 dfa40_T139[] = { 391, 37, 37, 30, 653, 37, 657, 37, 659, 658, 653, 659, 713, 659, 37, 657, 37, 37, 37, 659, 653, 37, 37, 660, 653, 653, 37, 37, 659, 653, 37, 653, 37, 659, 659, 659, 659 }; static const ANTLR3_INT32 dfa40_T140[] = { 37, 37, 37, 30, 178, 37, 268, 37, 270, 269, 178, 270, 393, 270, 267, 268, 37, 37, 37, 270, 178, 37, 37, 271, 178, 178, 37, 37, 270, 178, 37, 178, 37, 270, 270, 270, 270 }; static const ANTLR3_INT32 dfa40_T141[] = { 37, 37, 37, 30, 485, 37, 510, 37, 512, 511, 485, 512, 595, 512, 581, 510, 37, 37, 37, 512, 485, 37, 37, 513, 485, 485, 37, 37, 512, 485, 37, 485, 37, 512, 512, 512, 512 }; static const ANTLR3_INT32 dfa40_T142[] = { 370, 74, 37, 30, 653, 100, 647, 37, 649, 648, 652, 649, 774, 649, 97, 647, 37, 37, 37, 649, 653, 37, 37, 650, 651, 653, 37, 37, 649, 653, 37, 653, 37, 649, 649, 649, 649 }; static const ANTLR3_INT32 dfa40_T143[] = { 37, 37, 37, 30, 403, 37, 37, 37, 37, 402, 37, 291, 404, 37, 37, 280, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 128, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T144[] = { 37, 37, 37, 30, 545, 37, 37, 37, 37, 544, 37, 437, 546, 37, 37, 429, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 217, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T145[] = { 164, 37, 37, 30, 164, 37, 240, 163, 242, 241, 164, 239, 238, 242, 37, 240, 37, 37, 37, 242, 164, 37, 37, 243, 164, 37, 37, 37, 242, 164, 167, 164, 162, 242, 242, 242, 242 }; static const ANTLR3_INT32 dfa40_T146[] = { 332, 37, 37, 30, 332, 37, 356, 37, 358, 357, 332, 355, 354, 358, 37, 356, 37, 37, 37, 358, 332, 37, 37, 359, 332, 37, 37, 37, 358, 332, 37, 332, 37, 358, 358, 358, 358 }; static const ANTLR3_INT32 dfa40_T147[] = { 332, 37, 37, 30, 332, 37, 356, 110, 358, 357, 332, 355, 466, 358, 37, 356, 37, 37, 37, 358, 332, 37, 37, 359, 332, 195, 37, 37, 358, 332, 167, 332, 108, 358, 358, 358, 358 }; static const ANTLR3_INT32 dfa40_T148[] = { 96, 74, 37, 30, 37, 100, 92, 37, 94, 93, 99, 94, 132, 94, 97, 92, 37, 37, 37, 94, 37, 37, 37, 95, 98, 37, 37, 37, 94, 37, 37, 37, 37, 94, 94, 94, 94 }; static const ANTLR3_INT32 dfa40_T149[] = { 37, 37, 37, 30, 290, 37, 37, 37, 37, 289, 37, 291, 292, 37, 37, 198, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 128, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T150[] = { 37, 37, 37, 30, 436, 37, 37, 37, 37, 435, 37, 437, 438, 37, 37, 316, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 217, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T151[] = { 37, 37, 37, 30, 178, 37, 268, 37, 270, 269, 178, 270, 394, 270, 267, 268, 37, 37, 37, 270, 178, 37, 37, 271, 178, 178, 37, 37, 270, 178, 37, 178, 37, 270, 270, 270, 270 }; static const ANTLR3_INT32 dfa40_T152[] = { 37, 37, 37, 30, 485, 37, 510, 37, 512, 511, 485, 512, 596, 512, 581, 510, 37, 37, 37, 512, 485, 37, 37, 513, 485, 485, 37, 37, 512, 485, 37, 485, 37, 512, 512, 512, 512 }; static const ANTLR3_INT32 dfa40_T153[] = { 37, 37, 37, 30, 403, 37, 37, 37, 37, 521, 37, 291, 522, 37, 37, 280, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 128, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T154[] = { 37, 37, 37, 30, 545, 37, 37, 37, 37, 624, 37, 437, 625, 37, 37, 429, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 217, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T155[] = { 96, 74, 37, 30, 37, 100, 92, 37, 94, 93, 99, 94, 133, 94, 97, 92, 37, 37, 37, 94, 37, 37, 37, 95, 98, 37, 37, 37, 94, 37, 37, 37, 37, 94, 94, 94, 94 }; static const ANTLR3_INT32 dfa40_T156[] = { 37, 37, 37, 30, 290, 37, 37, 37, 37, 411, 37, 291, 412, 37, 37, 198, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 128, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T157[] = { 37, 37, 37, 30, 436, 37, 37, 37, 37, 552, 37, 437, 553, 37, 37, 316, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 217, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T158[] = { 37, 37, 37, 30, 403, 37, 37, 37, 37, 280, 37, 291, 604, 37, 37, 280, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 128, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T159[] = { 37, 37, 37, 30, 545, 37, 37, 37, 37, 429, 37, 437, 691, 37, 37, 429, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 217, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T160[] = { 37, 37, 37, 30, 290, 37, 37, 37, 37, 198, 37, 291, 530, 37, 37, 198, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 128, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T161[] = { 37, 37, 37, 30, 436, 37, 37, 37, 37, 316, 37, 437, 633, 37, 37, 316, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 217, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T162[] = { 383, 74, 37, 30, 663, 69, 664, 37, 666, 665, 668, 666, 722, 666, 69, 664, 37, 37, 37, 666, 653, 37, 37, 667, 668, 668, 37, 37, 666, 653, 69, 668, 37, 666, 666, 666, 666 }; static const ANTLR3_INT32 dfa40_T163[] = { 391, 37, 37, 30, 373, 37, 387, 37, 389, 388, 373, 389, 671, 389, 37, 387, 37, 37, 37, 389, 373, 37, 37, 390, 373, 373, 37, 37, 389, 373, 37, 373, 37, 389, 389, 389, 389 }; static const ANTLR3_INT32 dfa40_T164[] = { 37, 37, 36, 30, 50, 37, 29, 37, 33, 32, 37, 33, 58, 33, 37, 29, 37, 37, 37, 33, 37, 37, 37, 34, 35, 37, 37, 37, 33, 37, 37, 37, 37, 33, 33, 33, 33 }; static const ANTLR3_INT32 dfa40_T165[] = { 37, 37, 37, 30, 403, 37, 37, 37, 37, 605, 37, 284, 606, 37, 37, 524, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 128, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T166[] = { 37, 37, 37, 30, 545, 37, 37, 37, 37, 692, 37, 433, 693, 37, 37, 627, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 217, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T167[] = { 37, 37, 37, 30, 290, 37, 37, 37, 37, 531, 37, 284, 532, 37, 37, 414, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 128, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T168[] = { 37, 37, 37, 30, 436, 37, 37, 37, 37, 634, 37, 433, 635, 37, 37, 555, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 217, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T169[] = { 37, 37, 37, 30, 403, 37, 37, 37, 37, 676, 37, 284, 677, 37, 37, 524, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 128, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T170[] = { 37, 37, 37, 30, 545, 37, 37, 37, 37, 741, 37, 433, 742, 37, 37, 627, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 217, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T171[] = { 383, 74, 37, 30, 663, 69, 664, 37, 666, 665, 668, 666, 723, 666, 69, 664, 37, 37, 37, 666, 653, 37, 37, 667, 668, 668, 37, 37, 666, 653, 69, 668, 37, 666, 666, 666, 666 }; static const ANTLR3_INT32 dfa40_T172[] = { 37, 37, 37, 30, 290, 37, 37, 37, 37, 612, 37, 284, 613, 37, 37, 414, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 128, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T173[] = { 37, 37, 37, 30, 436, 37, 37, 37, 37, 699, 37, 433, 700, 37, 37, 555, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 217, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T174[] = { 370, 74, 37, 30, 653, 100, 647, 37, 649, 648, 652, 649, 711, 649, 97, 647, 37, 37, 37, 649, 653, 37, 37, 650, 651, 653, 37, 37, 649, 653, 37, 653, 37, 649, 649, 649, 649 }; static const ANTLR3_INT32 dfa40_T175[] = { 370, 74, 37, 30, 653, 100, 647, 37, 649, 648, 652, 649, 712, 649, 97, 647, 37, 37, 37, 649, 653, 37, 37, 650, 651, 653, 37, 37, 649, 653, 37, 653, 37, 649, 649, 649, 649 }; static const ANTLR3_INT32 dfa40_T176[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 236, 37, 37, 235, 37, 37, 236, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T177[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 322, 37, 37, 321, 37, 37, 322, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T178[] = { 37, 37, 36, 30, 50, 37, 29, 37, 33, 32, 37, 33, 59, 33, 37, 29, 37, 37, 37, 33, 37, 37, 37, 34, 35, 37, 37, 37, 33, 37, 37, 37, 37, 33, 33, 33, 33 }; static const ANTLR3_INT32 dfa40_T179[] = { 37, 37, 37, 30, 403, 37, 37, 37, 37, 524, 37, 284, 730, 37, 37, 524, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 128, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T180[] = { 37, 37, 37, 30, 545, 37, 37, 37, 37, 627, 37, 433, 765, 37, 37, 627, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 217, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T181[] = { 370, 74, 37, 30, 653, 100, 647, 37, 649, 648, 652, 649, 707, 649, 97, 647, 37, 37, 37, 649, 653, 37, 37, 650, 651, 653, 37, 37, 649, 653, 37, 653, 37, 649, 649, 649, 649 }; static const ANTLR3_INT32 dfa40_T182[] = { 391, 37, 37, 30, 373, 37, 387, 37, 389, 388, 373, 389, 505, 389, 37, 387, 37, 37, 37, 389, 373, 37, 37, 390, 373, 373, 37, 37, 389, 373, 37, 373, 37, 389, 389, 389, 389 }; static const ANTLR3_INT32 dfa40_T183[] = { 37, 37, 37, 30, 127, 37, 37, 37, 37, 89, 37, 37, 126, 37, 37, 89, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 128, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T184[] = { 37, 37, 37, 30, 216, 37, 37, 37, 37, 150, 37, 37, 215, 37, 37, 150, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 217, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T185[] = { 329, 74, 37, 30, 332, 100, 325, 110, 333, 326, 331, 327, 454, 333, 97, 325, 37, 37, 37, 333, 332, 37, 37, 328, 330, 195, 37, 37, 333, 332, 167, 332, 108, 333, 333, 333, 333 }; static const ANTLR3_INT32 dfa40_T186[] = { 96, 74, 37, 30, 37, 100, 92, 37, 94, 154, 99, 94, 153, 94, 97, 92, 37, 37, 37, 94, 37, 37, 37, 95, 98, 37, 37, 37, 94, 37, 37, 37, 37, 94, 94, 94, 94 }; static const ANTLR3_INT32 dfa40_T187[] = { 329, 74, 37, 30, 332, 100, 325, 37, 333, 326, 331, 327, 324, 333, 97, 325, 37, 37, 37, 333, 332, 37, 37, 328, 330, 37, 37, 37, 333, 332, 37, 332, 37, 333, 333, 333, 333 }; static const ANTLR3_INT32 dfa40_T188[] = { 37, 37, 37, 30, 290, 37, 37, 37, 37, 414, 37, 284, 682, 37, 37, 414, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 128, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T189[] = { 37, 37, 37, 30, 436, 37, 37, 37, 37, 555, 37, 433, 747, 37, 37, 555, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 217, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T190[] = { 6, -1, -1, -1, 1, 8, 3, 2, -1, 3, -1, 3, 9, 1, -1, -1, -1, 3, -1, -1, -1, 4, 5, -1, -1, -1, 3, -1, -1, -1, 7, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa40_T191[] = { 391, 37, 37, 30, 373, 37, 387, 37, 389, 388, 373, 389, 506, 389, 37, 387, 37, 37, 37, 389, 373, 37, 37, 390, 373, 373, 37, 37, 389, 373, 37, 373, 37, 389, 389, 389, 389 }; static const ANTLR3_INT32 dfa40_T192[] = { 69, 74, 37, 30, 73, 69, 65, 37, 67, 121, 69, 67, 120, 67, 69, 65, 37, 37, 37, 67, 37, 37, 37, 68, 69, 69, 37, 37, 67, 37, 69, 69, 37, 67, 67, 67, 67 }; static const ANTLR3_INT32 dfa40_T193[] = { 69, 74, 37, 30, 172, 69, 173, 37, 175, 174, 177, 175, 259, 175, 260, 173, 37, 37, 37, 175, 178, 37, 37, 176, 177, 177, 37, 37, 175, 178, 69, 177, 37, 175, 175, 175, 175 }; static const ANTLR3_INT32 dfa40_T194[] = { 69, 74, 37, 30, 497, 69, 498, 37, 500, 499, 502, 500, 585, 500, 586, 498, 37, 37, 37, 500, 485, 37, 37, 501, 502, 502, 37, 37, 500, 485, 69, 502, 37, 500, 500, 500, 500 }; static const ANTLR3_INT32 dfa40_T195[] = { 69, 74, 37, 30, 73, 69, 65, 37, 67, 520, 69, 67, 519, 67, 69, 65, 37, 37, 37, 67, 37, 37, 37, 68, 69, 69, 37, 37, 67, 37, 69, 69, 37, 67, 67, 67, 67 }; static const ANTLR3_INT32 dfa40_T196[] = { 69, 74, 37, 30, 73, 69, 65, 37, 67, 278, 69, 67, 277, 67, 69, 65, 37, 37, 37, 67, 37, 37, 37, 68, 69, 69, 37, 37, 67, 37, 69, 69, 37, 67, 67, 67, 67 }; static const ANTLR3_INT32 dfa40_T197[] = { 383, 74, 37, 30, 663, 69, 664, 37, 666, 665, 668, 666, 726, 666, 69, 664, 37, 37, 37, 666, 653, 37, 37, 667, 668, 668, 37, 37, 666, 653, 69, 668, 37, 666, 666, 666, 666 }; static const ANTLR3_INT32 dfa40_T198[] = { 69, 74, 37, 30, 73, 69, 65, 37, 67, 114, 69, 67, 113, 67, 69, 65, 37, 37, 37, 67, 37, 37, 37, 68, 69, 69, 37, 37, 67, 37, 69, 69, 37, 67, 67, 67, 67 }; static const ANTLR3_INT32 dfa40_T199[] = { 370, 74, 37, 30, 653, 100, 647, 37, 649, 648, 652, 649, 708, 649, 97, 647, 37, 37, 37, 649, 653, 37, 37, 650, 651, 653, 37, 37, 649, 653, 37, 653, 37, 649, 649, 649, 649 }; static const ANTLR3_INT32 dfa40_T200[] = { 343, 74, 37, 30, 338, 69, 339, 37, 344, 340, 343, 341, 337, 344, 69, 339, 37, 37, 37, 344, 332, 37, 37, 342, 343, 69, 37, 37, 344, 332, 69, 343, 37, 344, 344, 344, 344 }; static const ANTLR3_INT32 dfa40_T201[] = { 6, -1, -1, -1, 1, -1, 3, 2, -1, 3, -1, 3, -1, 1, -1, -1, -1, 3, -1, -1, -1, 4, 5, -1, -1, -1, 3, -1, -1, -1, -1, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa40_T202[] = { 37, 37, 37, 30, 206, 37, 143, 110, 145, 689, 37, 142, 690, 37, 37, 143, 37, 37, 37, 37, 37, 37, 37, 37, 37, 195, 37, 37, 37, 37, 167, 37, 108, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T203[] = { 10 }; static const ANTLR3_INT32 dfa40_T204[] = { 28 }; static const ANTLR3_INT32 dfa40_T205[] = { 96, 74, 37, 30, 178, 100, 252, 37, 254, 253, 258, 254, 360, 254, 256, 252, 37, 37, 37, 254, 178, 37, 37, 255, 257, 178, 37, 37, 254, 178, 37, 178, 37, 254, 254, 254, 254 }; static const ANTLR3_INT32 dfa40_T206[] = { 96, 74, 37, 30, 485, 100, 479, 37, 481, 480, 484, 481, 572, 481, 573, 479, 37, 37, 37, 481, 485, 37, 37, 482, 483, 485, 37, 37, 481, 485, 37, 485, 37, 481, 481, 481, 481 }; static const ANTLR3_INT32 dfa40_T207[] = { 69, 74, 37, 30, 73, 69, 83, 37, 67, 84, 69, 67, 122, 67, 69, 83, 37, 37, 37, 67, 37, 37, 37, 68, 69, 69, 37, 37, 67, 37, 69, 69, 37, 67, 67, 67, 67 }; static const ANTLR3_INT32 dfa40_T208[] = { 19, -1, -1, -1, 20, 12, 16, 15, -1, 16, 13, 16, -1, 14, -1, -1, -1, 16, -1, -1, -1, 17, 18, -1, -1, -1, 16, -1, -1, -1, 11, 16, 16, 16, 16 }; static const ANTLR3_INT32 dfa40_T209[] = { 96, 74, 37, 30, 37, 100, 92, 37, 94, 93, 99, 94, 91, 94, 97, 92, 37, 37, 37, 94, 37, 37, 37, 95, 98, 37, 37, 37, 94, 37, 37, 37, 37, 94, 94, 94, 94 }; static const ANTLR3_INT32 dfa40_T210[] = { 37, 37, 37, 30, 129, 37, 37, 37, 37, 37, 37, 37, 130, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T211[] = { 37, 37, 37, 30, 218, 37, 37, 37, 37, 37, 37, 37, 219, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T212[] = { 343, 74, 37, 30, 338, 69, 339, 110, 344, 340, 343, 341, 643, 344, 69, 339, 37, 37, 37, 344, 332, 37, 37, 342, 343, 111, 37, 37, 344, 332, 107, 343, 108, 344, 344, 344, 344 }; static const ANTLR3_INT32 dfa40_T213[] = { 161, 74, 37, 30, 156, 69, 157, 110, 165, 158, 161, 159, 462, 165, 232, 157, 37, 37, 37, 165, 164, 37, 37, 160, 161, 111, 37, 37, 165, 164, 107, 161, 108, 165, 165, 165, 165 }; static const ANTLR3_INT32 dfa40_T214[] = { 161, 74, 37, 30, 156, 69, 157, 110, 165, 158, 161, 159, 231, 165, 232, 157, 37, 37, 37, 165, 164, 37, 37, 160, 161, 111, 37, 37, 165, 164, 107, 161, 108, 165, 165, 165, 165 }; static const ANTLR3_INT32 dfa40_T215[] = { 332, 37, 37, 30, 332, 37, 356, 110, 358, 357, 332, 355, 452, 358, 37, 356, 37, 37, 37, 358, 332, 37, 37, 359, 332, 195, 37, 37, 358, 332, 167, 332, 108, 358, 358, 358, 358 }; static const ANTLR3_INT32 dfa40_T216[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 287, 37, 37, 286, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T217[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 300, 37, 37, 299, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T218[] = { 161, 74, 37, 30, 156, 69, 157, 110, 165, 158, 161, 159, 234, 165, 232, 157, 37, 37, 37, 165, 164, 37, 37, 160, 161, 111, 37, 37, 165, 164, 107, 161, 108, 165, 165, 165, 165 }; static const ANTLR3_INT32 dfa40_T219[] = { 69, 74, 37, 30, 73, 69, 75, 37, 78, 76, 69, 77, 179, 67, 69, 75, 37, 37, 37, 67, 37, 37, 37, 68, 69, 69, 37, 37, 67, 37, 69, 69, 37, 67, 67, 67, 67 }; static const ANTLR3_INT32 dfa40_T220[] = { 37, 37, 37, 30, 178, 37, 268, 37, 270, 269, 178, 270, 392, 270, 267, 268, 37, 37, 37, 270, 178, 37, 37, 271, 178, 178, 37, 37, 270, 178, 37, 178, 37, 270, 270, 270, 270 }; static const ANTLR3_INT32 dfa40_T221[] = { 37, 37, 37, 30, 485, 37, 510, 37, 512, 511, 485, 512, 594, 512, 581, 510, 37, 37, 37, 512, 485, 37, 37, 513, 485, 485, 37, 37, 512, 485, 37, 485, 37, 512, 512, 512, 512 }; static const ANTLR3_INT32 dfa40_T222[] = { 343, 74, 37, 30, 338, 69, 339, 110, 344, 340, 343, 341, 457, 344, 69, 339, 37, 37, 37, 344, 332, 37, 37, 342, 343, 111, 37, 37, 344, 332, 107, 343, 108, 344, 344, 344, 344 }; static const ANTLR3_INT32 dfa40_T223[] = { 37, 37, 37, 30, 37, 37, 37, 110, 37, 300, 37, 37, 420, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 195, 37, 37, 37, 37, 167, 37, 108, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T224[] = { 37, 37, 37, 30, 37, 37, 37, 110, 37, 287, 37, 37, 410, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 195, 37, 37, 37, 37, 167, 37, 108, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T225[] = { 96, 74, 37, 30, 37, 100, 92, 37, 94, 93, 99, 94, 131, 94, 97, 92, 37, 37, 37, 94, 37, 37, 37, 95, 98, 37, 37, 37, 94, 37, 37, 37, 37, 94, 94, 94, 94 }; static const ANTLR3_INT32 dfa40_T226[] = { 383, 74, 37, 30, 377, 69, 378, 37, 380, 379, 382, 380, 490, 380, 69, 378, 37, 37, 37, 380, 373, 37, 37, 381, 382, 382, 37, 37, 380, 373, 69, 382, 37, 380, 380, 380, 380 }; static const ANTLR3_INT32 dfa40_T227[] = { 329, 74, 37, 30, 332, 100, 325, 110, 333, 326, 331, 327, 642, 333, 97, 325, 37, 37, 37, 333, 332, 37, 37, 328, 330, 195, 37, 37, 333, 332, 167, 332, 108, 333, 333, 333, 333 }; static const ANTLR3_INT32 dfa40_T228[] = { 37, 37, 37, 30, 37, 37, 143, 37, 209, 144, 37, 37, 208, 37, 37, 143, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T229[] = { 226, 74, 37, 30, 164, 100, 222, 110, 230, 223, 229, 224, 561, 230, 227, 222, 37, 37, 37, 230, 164, 37, 37, 225, 228, 195, 37, 37, 230, 164, 167, 164, 108, 230, 230, 230, 230 }; static const ANTLR3_INT32 dfa40_T230[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 37, 37, 37, 244, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 245, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T231[] = { 226, 74, 37, 30, 164, 100, 222, 110, 230, 223, 229, 224, 318, 230, 227, 222, 37, 37, 37, 230, 164, 37, 37, 225, 228, 195, 37, 37, 230, 164, 167, 164, 108, 230, 230, 230, 230 }; static const ANTLR3_INT32 dfa40_T232[] = { 226, 74, 37, 30, 164, 100, 222, 110, 230, 223, 229, 224, 320, 230, 227, 222, 37, 37, 37, 230, 164, 37, 37, 225, 228, 195, 37, 37, 230, 164, 167, 164, 108, 230, 230, 230, 230 }; static const ANTLR3_INT32 dfa40_T233[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 409, 37, 37, 408, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T234[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 416, 37, 37, 417, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T235[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 551, 37, 37, 550, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T236[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 557, 37, 37, 558, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T237[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 611, 37, 37, 610, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T238[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 616, 37, 37, 617, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T239[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 698, 37, 37, 697, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T240[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 703, 37, 37, 704, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T241[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 734, 37, 37, 733, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T242[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 737, 37, 37, 738, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T243[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 769, 37, 37, 768, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T244[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 772, 37, 37, 773, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T245[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 37, 37, 37, 63, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T246[] = { 329, 74, 37, 30, 332, 100, 325, 110, 333, 326, 331, 327, 446, 333, 97, 325, 37, 37, 37, 333, 332, 37, 37, 328, 330, 195, 37, 37, 333, 332, 167, 332, 108, 333, 333, 333, 333 }; static const ANTLR3_INT32 dfa40_T247[] = { 343, 74, 37, 30, 338, 69, 339, 110, 344, 340, 343, 341, 456, 344, 69, 339, 37, 37, 37, 344, 332, 37, 37, 342, 343, 111, 37, 37, 344, 332, 107, 343, 108, 344, 344, 344, 344 }; static const ANTLR3_INT32 dfa40_T248[] = { 370, 74, 37, 30, 373, 100, 366, 37, 368, 367, 372, 368, 473, 368, 97, 366, 37, 37, 37, 368, 373, 37, 37, 369, 371, 373, 37, 37, 368, 373, 37, 373, 37, 368, 368, 368, 368 }; static const ANTLR3_INT32 dfa40_T249[] = { 69, 74, 37, 30, 73, 69, 75, 37, 78, 76, 69, 77, 72, 67, 69, 75, 37, 37, 37, 67, 37, 37, 37, 68, 69, 69, 37, 37, 67, 37, 69, 69, 37, 67, 67, 67, 67 }; static const ANTLR3_INT32 dfa40_T250[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 37, 37, 37, 71, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T251[] = { 329, 74, 37, 30, 332, 100, 325, 110, 333, 326, 331, 327, 449, 333, 97, 325, 37, 37, 37, 333, 332, 37, 37, 328, 330, 195, 37, 37, 333, 332, 167, 332, 108, 333, 333, 333, 333 }; static const ANTLR3_INT32 dfa40_T252[] = { 164, 37, 37, 30, 164, 37, 240, 110, 242, 241, 164, 239, 348, 242, 247, 240, 37, 37, 37, 242, 164, 37, 37, 243, 164, 195, 37, 37, 242, 164, 167, 164, 108, 242, 242, 242, 242 }; static const ANTLR3_INT32 dfa40_T253[] = { 329, 74, 37, 30, 332, 100, 325, 110, 333, 326, 331, 327, 451, 333, 97, 325, 37, 37, 37, 333, 332, 37, 37, 328, 330, 195, 37, 37, 333, 332, 167, 332, 108, 333, 333, 333, 333 }; static const ANTLR3_INT32 dfa40_T254[] = { 69, 74, 37, 30, 73, 69, 75, 37, 78, 185, 69, 187, 186, 67, 69, 75, 37, 37, 37, 67, 37, 37, 37, 68, 69, 69, 37, 37, 67, 37, 69, 69, 37, 67, 67, 67, 67 }; static const ANTLR3_INT32 dfa40_T255[] = { 329, 74, 37, 30, 332, 100, 325, 110, 333, 326, 331, 327, 450, 333, 97, 325, 37, 37, 37, 333, 332, 37, 37, 328, 330, 195, 37, 37, 333, 332, 167, 332, 108, 333, 333, 333, 333 }; static const ANTLR3_INT32 dfa40_T256[] = { 37, 37, 37, 30, 127, 37, 37, 37, 37, 192, 37, 37, 285, 37, 37, 192, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 128, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T257[] = { 37, 37, 37, 30, 216, 37, 37, 37, 37, 312, 37, 37, 434, 37, 37, 312, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 217, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T258[] = { 69, 74, 37, 30, 73, 69, 75, 37, 78, 79, 69, 81, 80, 67, 69, 75, 37, 37, 37, 67, 37, 37, 37, 68, 69, 69, 37, 37, 67, 37, 69, 69, 37, 67, 67, 67, 67 }; static const ANTLR3_INT32 dfa40_T259[] = { 69, 74, 37, 30, 73, 69, 75, 37, 78, 399, 69, 401, 400, 67, 69, 75, 37, 37, 37, 67, 37, 37, 37, 68, 69, 69, 37, 37, 67, 37, 69, 69, 37, 67, 67, 67, 67 }; static const ANTLR3_INT32 dfa40_T260[] = { 37, 37, 37, 30, 189, 37, 37, 37, 37, 191, 37, 37, 190, 37, 37, 192, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T261[] = { 37, 37, 37, 30, 309, 37, 37, 37, 37, 311, 37, 37, 310, 37, 37, 312, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T262[] = { 37, 37, 37, 30, 37, 37, 302, 37, 209, 303, 37, 142, 422, 37, 37, 302, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T263[] = { 69, 74, 37, 30, 106, 69, 65, 110, 67, 520, 69, 67, 601, 67, 69, 65, 37, 37, 37, 67, 37, 37, 37, 68, 69, 111, 37, 37, 67, 37, 107, 69, 108, 67, 67, 67, 67 }; static const ANTLR3_INT32 dfa40_T264[] = { 8, -1, -1, -1, -1, -1, -1, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7 }; static const ANTLR3_INT32 dfa40_T265[] = { 69, 74, 37, 30, 106, 69, 65, 110, 67, 121, 69, 67, 184, 67, 69, 65, 37, 37, 37, 67, 37, 37, 37, 68, 69, 111, 37, 37, 67, 37, 107, 69, 108, 67, 67, 67, 67 }; static const ANTLR3_INT32 dfa40_T266[] = { 69, 74, 37, 30, 106, 69, 65, 110, 67, 278, 69, 67, 398, 67, 69, 65, 37, 37, 37, 67, 37, 37, 37, 68, 69, 111, 37, 37, 67, 37, 107, 69, 108, 67, 67, 67, 67 }; static const ANTLR3_INT32 dfa40_T267[] = { 391, 37, 37, 30, 653, 37, 657, 37, 659, 658, 653, 659, 775, 659, 37, 657, 37, 37, 37, 659, 653, 37, 37, 660, 653, 653, 37, 37, 659, 653, 37, 653, 37, 659, 659, 659, 659 }; static const ANTLR3_INT32 dfa40_T268[] = { 343, 74, 37, 30, 338, 69, 339, 110, 344, 340, 343, 341, 461, 344, 69, 339, 37, 37, 37, 344, 332, 37, 37, 342, 343, 111, 37, 37, 344, 332, 107, 343, 108, 344, 344, 344, 344 }; static const ANTLR3_INT32 dfa40_T269[] = { 391, 37, 37, 30, 373, 37, 387, 37, 389, 388, 373, 389, 504, 389, 37, 387, 37, 37, 37, 389, 373, 37, 37, 390, 373, 373, 37, 37, 389, 373, 37, 373, 37, 389, 389, 389, 389 }; static const ANTLR3_INT32 dfa40_T270[] = { 69, 74, 37, 30, 106, 69, 65, 110, 67, 114, 69, 67, 168, 67, 69, 65, 37, 37, 37, 67, 37, 37, 37, 68, 69, 111, 37, 37, 67, 37, 107, 69, 108, 67, 67, 67, 67 }; static const ANTLR3_INT32 dfa40_T271[] = { 391, 37, 37, 30, 373, 37, 387, 37, 389, 388, 373, 389, 386, 389, 37, 387, 37, 37, 37, 389, 373, 37, 37, 390, 373, 373, 37, 37, 389, 373, 37, 373, 37, 389, 389, 389, 389 }; static const ANTLR3_INT32 dfa40_T272[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 655, 37, 37, 654, 37, 37, 655, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T273[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 472, 37, 37, 471, 37, 37, 472, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T274[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 385, 37, 37, 384, 37, 37, 385, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T275[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 464, 37, 37, 463, 37, 37, 464, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T276[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 753, 37, 37, 752, 37, 37, 753, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T277[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 563, 37, 37, 562, 37, 37, 563, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T278[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 565, 37, 37, 564, 37, 37, 565, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T279[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 571, 37, 37, 570, 37, 37, 571, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T280[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 583, 37, 37, 582, 37, 37, 583, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T281[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 670, 37, 37, 669, 37, 37, 670, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T282[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 757, 37, 37, 756, 37, 37, 757, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T283[] = { 343, 74, 37, 30, 338, 69, 339, 110, 344, 340, 343, 341, 460, 344, 69, 339, 37, 37, 37, 344, 332, 37, 37, 342, 343, 111, 37, 37, 344, 332, 107, 343, 108, 344, 344, 344, 344 }; static const ANTLR3_INT32 dfa40_T284[] = { 329, 74, 37, 30, 332, 100, 325, 110, 333, 326, 331, 327, 445, 333, 97, 325, 37, 37, 37, 333, 332, 37, 37, 328, 330, 195, 37, 37, 333, 332, 167, 332, 108, 333, 333, 333, 333 }; static const ANTLR3_INT32 dfa40_T285[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 293, 37, 37, 294, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T286[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 439, 37, 37, 440, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T287[] = { 161, 74, 37, 30, 156, 69, 157, 110, 165, 158, 161, 159, 233, 165, 232, 157, 37, 37, 37, 165, 164, 37, 37, 160, 161, 111, 37, 37, 165, 164, 107, 161, 108, 165, 165, 165, 165 }; static const ANTLR3_INT32 dfa40_T288[] = { 96, 74, 37, 30, 178, 100, 252, 37, 254, 253, 258, 254, 251, 254, 256, 252, 37, 37, 37, 254, 178, 37, 37, 255, 257, 178, 37, 37, 254, 178, 37, 178, 37, 254, 254, 254, 254 }; static const ANTLR3_INT32 dfa40_T289[] = { 96, 74, 37, 30, 485, 100, 479, 37, 481, 480, 484, 481, 584, 481, 573, 479, 37, 37, 37, 481, 485, 37, 37, 482, 483, 485, 37, 37, 481, 485, 37, 485, 37, 481, 481, 481, 481 }; static const ANTLR3_INT32 dfa40_T290[] = { 69, 74, 37, 30, 106, 69, 75, 110, 78, 76, 69, 109, 112, 67, 69, 75, 37, 37, 37, 67, 37, 37, 37, 68, 69, 111, 37, 37, 67, 37, 107, 69, 108, 67, 67, 67, 67 }; static const ANTLR3_INT32 dfa40_T291[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 418, 37, 284, 419, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T292[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 559, 37, 433, 560, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T293[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 527, 37, 529, 528, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T294[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 534, 37, 535, 536, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T295[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 630, 37, 632, 631, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T296[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 637, 37, 638, 639, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T297[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 679, 37, 681, 680, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T298[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 684, 37, 685, 686, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T299[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 744, 37, 746, 745, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T300[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 749, 37, 750, 751, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T301[] = { 391, 37, 37, 30, 653, 37, 657, 37, 659, 658, 653, 659, 716, 659, 37, 657, 37, 37, 37, 659, 653, 37, 37, 660, 653, 653, 37, 37, 659, 653, 37, 653, 37, 659, 659, 659, 659 }; static const ANTLR3_INT32 dfa40_T302[] = { 96, 74, 37, 30, 37, 100, 92, 37, 94, 93, 99, 94, 137, 94, 97, 92, 37, 37, 37, 94, 37, 37, 37, 95, 98, 37, 37, 37, 94, 37, 37, 37, 37, 94, 94, 94, 94 }; static const ANTLR3_INT32 dfa40_T303[] = { 96, 74, 37, 30, 37, 100, 92, 37, 94, 93, 99, 94, 136, 94, 97, 92, 37, 37, 37, 94, 37, 37, 37, 95, 98, 37, 37, 37, 94, 37, 37, 37, 37, 94, 94, 94, 94 }; static const ANTLR3_INT32 dfa40_T304[] = { 329, 74, 37, 30, 332, 100, 325, 110, 333, 326, 331, 327, 453, 333, 97, 325, 37, 37, 37, 333, 332, 37, 37, 328, 330, 195, 37, 37, 333, 332, 167, 332, 108, 333, 333, 333, 333 }; static const ANTLR3_INT32 dfa40_T305[] = { 96, 74, 37, 30, 37, 100, 92, 37, 94, 93, 99, 94, 139, 94, 97, 92, 37, 37, 37, 94, 37, 37, 37, 95, 98, 37, 37, 37, 94, 37, 37, 37, 37, 94, 94, 94, 94 }; static const ANTLR3_INT32 dfa40_T306[] = { 96, 74, 37, 30, 37, 100, 92, 37, 94, 93, 99, 94, 138, 94, 97, 92, 37, 37, 37, 94, 37, 37, 37, 95, 98, 37, 37, 37, 94, 37, 37, 37, 37, 94, 94, 94, 94 }; static const ANTLR3_INT32 dfa40_T307[] = { 37, 37, 37, 30, 127, 37, 37, 37, 37, 282, 37, 284, 283, 37, 37, 192, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 128, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T308[] = { 37, 37, 37, 30, 216, 37, 37, 37, 37, 431, 37, 433, 432, 37, 37, 312, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 217, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T309[] = { 96, 74, 37, 30, 37, 100, 92, 37, 94, 93, 99, 94, 140, 94, 97, 92, 37, 37, 37, 94, 37, 37, 37, 95, 98, 37, 37, 37, 94, 37, 37, 37, 37, 94, 94, 94, 94 }; static const ANTLR3_INT32 dfa40_T310[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 537, 37, 284, 538, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T311[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 640, 37, 433, 641, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T312[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 608, 37, 529, 609, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T313[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 614, 37, 535, 615, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T314[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 695, 37, 632, 696, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T315[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 701, 37, 638, 702, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T316[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 731, 37, 681, 732, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T317[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 735, 37, 685, 736, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T318[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 766, 37, 746, 767, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T319[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 770, 37, 750, 771, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T320[] = { 37, 37, 37, 30, 37, 37, 143, 37, 145, 144, 37, 142, 141, 37, 37, 143, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T321[] = { 391, 37, 37, 30, 653, 37, 657, 37, 659, 658, 653, 659, 717, 659, 37, 657, 37, 37, 37, 659, 653, 37, 37, 660, 653, 653, 37, 37, 659, 653, 37, 653, 37, 659, 659, 659, 659 }; static const ANTLR3_INT32 dfa40_T322[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 37, 37, 284, 618, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T323[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 37, 37, 433, 705, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T324[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 37, 37, 529, 678, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T325[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 37, 37, 535, 683, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T326[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 37, 37, 632, 743, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T327[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 37, 37, 638, 748, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T328[] = { 226, 74, 37, 30, 164, 100, 222, 110, 230, 223, 229, 224, 319, 230, 227, 222, 37, 37, 37, 230, 164, 37, 37, 225, 228, 195, 37, 37, 230, 164, 167, 164, 108, 230, 230, 230, 230 }; static const ANTLR3_INT32 dfa40_T329[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 37, 37, 681, 758, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T330[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 37, 37, 685, 761, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T331[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 37, 37, 746, 781, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T332[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 37, 37, 750, 784, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T333[] = { 37, 37, 37, 30, 127, 37, 37, 37, 37, 406, 37, 284, 407, 37, 37, 192, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 128, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T334[] = { 37, 37, 37, 30, 216, 37, 37, 37, 37, 548, 37, 433, 549, 37, 37, 312, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 217, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T335[] = { 69, 74, 37, 30, 172, 69, 173, 37, 175, 174, 177, 175, 503, 175, 260, 173, 37, 37, 37, 175, 178, 37, 37, 176, 177, 177, 37, 37, 175, 178, 69, 177, 37, 175, 175, 175, 175 }; static const ANTLR3_INT32 dfa40_T336[] = { 69, 74, 37, 30, 497, 69, 498, 37, 500, 499, 502, 500, 727, 500, 586, 498, 37, 37, 37, 500, 485, 37, 37, 501, 502, 502, 37, 37, 500, 485, 69, 502, 37, 500, 500, 500, 500 }; static const ANTLR3_INT32 dfa40_T337[] = { 161, 74, 37, 30, 156, 69, 157, 110, 165, 158, 161, 159, 248, 165, 232, 157, 37, 37, 37, 165, 164, 37, 37, 160, 161, 111, 37, 37, 165, 164, 107, 161, 108, 165, 165, 165, 165 }; static const ANTLR3_INT32 dfa40_T338[] = { 69, 74, 37, 30, 73, 69, 181, 37, 116, 182, 69, 67, 180, 67, 69, 181, 37, 37, 37, 67, 37, 37, 37, 68, 69, 69, 37, 37, 67, 37, 69, 69, 37, 67, 67, 67, 67 }; static const ANTLR3_INT32 dfa40_T339[] = { 37, 37, 37, 30, 178, 37, 268, 37, 270, 269, 178, 270, 288, 270, 37, 268, 37, 37, 37, 270, 178, 37, 37, 271, 178, 178, 37, 37, 270, 178, 37, 178, 37, 270, 270, 270, 270 }; static const ANTLR3_INT32 dfa40_T340[] = { 37, 37, 37, 30, 127, 37, 37, 37, 37, 192, 37, 284, 526, 37, 37, 192, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 128, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T341[] = { 37, 37, 37, 30, 216, 37, 37, 37, 37, 312, 37, 433, 629, 37, 37, 312, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 217, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T342[] = { 37, 37, 37, 30, 485, 37, 510, 37, 512, 511, 485, 512, 509, 512, 37, 510, 37, 37, 37, 512, 485, 37, 37, 513, 485, 485, 37, 37, 512, 485, 37, 485, 37, 512, 512, 512, 512 }; static const ANTLR3_INT32 dfa40_T343[] = { 69, 74, 37, 30, 73, 69, 83, 37, 67, 84, 69, 67, 87, 67, 69, 83, 37, 37, 37, 67, 37, 37, 37, 68, 69, 69, 37, 37, 67, 37, 69, 69, 37, 67, 67, 67, 67 }; static const ANTLR3_INT32 dfa40_T344[] = { 37, 37, 36, 30, 50, 37, 29, 37, 33, 32, 37, 33, 60, 33, 37, 29, 37, 37, 37, 33, 37, 37, 37, 34, 35, 37, 37, 37, 33, 37, 37, 37, 37, 33, 33, 33, 33 }; static const ANTLR3_INT32 dfa40_T345[] = { 37, 37, 36, 30, 50, 37, 29, 37, 33, 32, 37, 33, 61, 33, 37, 29, 37, 37, 37, 33, 37, 37, 37, 34, 35, 37, 37, 37, 33, 37, 37, 37, 37, 33, 33, 33, 33 }; static const ANTLR3_INT32 dfa40_T346[] = { 37, 37, 36, 30, 50, 37, 29, 37, 33, 32, 37, 33, 62, 33, 37, 29, 37, 37, 37, 33, 37, 37, 37, 34, 35, 37, 37, 37, 33, 37, 37, 37, 37, 33, 33, 33, 33 }; static const ANTLR3_INT32 dfa40_T347[] = { 370, 74, 37, 30, 373, 100, 366, 37, 368, 367, 372, 368, 365, 368, 97, 366, 37, 37, 37, 368, 373, 37, 37, 369, 371, 373, 37, 37, 368, 373, 37, 373, 37, 368, 368, 368, 368 }; static const ANTLR3_INT32 dfa40_T348[] = { 37, 37, 37, 30, 37, 37, 102, 37, 37, 214, 37, 37, 213, 37, 37, 102, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T349[] = { 69, 74, 37, 30, 106, 69, 75, 110, 78, 76, 69, 109, 105, 67, 69, 75, 37, 37, 37, 67, 37, 37, 37, 68, 69, 111, 37, 37, 67, 37, 107, 69, 108, 67, 67, 67, 67 }; static const ANTLR3_INT32 dfa40_T350[] = { 37, 37, 37, 30, 37, 37, 102, 37, 37, 427, 37, 37, 426, 37, 37, 102, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T351[] = { 37, 37, 37, 30, 37, 37, 102, 37, 37, 623, 37, 37, 622, 37, 37, 102, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T352[] = { 37, 37, 37, 30, 178, 37, 268, 37, 270, 269, 178, 270, 266, 270, 267, 268, 37, 37, 37, 270, 178, 37, 37, 271, 178, 178, 37, 37, 270, 178, 37, 178, 37, 270, 270, 270, 270 }; static const ANTLR3_INT32 dfa40_T353[] = { 37, 37, 37, 30, 485, 37, 510, 37, 512, 511, 485, 512, 580, 512, 581, 510, 37, 37, 37, 512, 485, 37, 37, 513, 485, 485, 37, 37, 512, 485, 37, 485, 37, 512, 512, 512, 512 }; static const ANTLR3_INT32 dfa40_T354[] = { 37, 37, 37, 30, 37, 37, 102, 37, 37, 203, 37, 37, 202, 37, 37, 102, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T355[] = { 226, 74, 37, 30, 164, 100, 222, 110, 230, 223, 229, 224, 336, 230, 227, 222, 37, 37, 37, 230, 164, 37, 37, 225, 228, 195, 37, 37, 230, 164, 167, 164, 108, 230, 230, 230, 230 }; static const ANTLR3_INT32 dfa40_T356[] = { 370, 74, 37, 30, 373, 100, 366, 37, 368, 367, 372, 368, 489, 368, 97, 366, 37, 37, 37, 368, 373, 37, 37, 369, 371, 373, 37, 37, 368, 373, 37, 373, 37, 368, 368, 368, 368 }; static const ANTLR3_INT32 dfa40_T357[] = { 96, 74, 37, 30, 178, 100, 252, 37, 254, 253, 258, 254, 569, 254, 256, 252, 37, 37, 37, 254, 178, 37, 37, 255, 257, 178, 37, 37, 254, 178, 37, 178, 37, 254, 254, 254, 254 }; static const ANTLR3_INT32 dfa40_T358[] = { 96, 74, 37, 30, 485, 100, 479, 37, 481, 480, 484, 481, 714, 481, 573, 479, 37, 37, 37, 481, 485, 37, 37, 482, 483, 485, 37, 37, 481, 485, 37, 485, 37, 481, 481, 481, 481 }; static const ANTLR3_INT32 dfa40_T359[] = { 37, 37, 37, 30, 37, 37, 37, 110, 37, 37, 37, 37, 166, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 167, 37, 108, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T360[] = { 69, 74, 37, 30, 106, 69, 75, 110, 78, 117, 69, 118, 119, 67, 69, 75, 37, 37, 37, 67, 37, 37, 37, 68, 69, 111, 37, 37, 67, 37, 107, 69, 108, 67, 67, 67, 67 }; static const ANTLR3_INT32 dfa40_T361[] = { 69, 74, 37, 30, 106, 69, 75, 110, 78, 274, 69, 275, 276, 67, 69, 75, 37, 37, 37, 67, 37, 37, 37, 68, 69, 111, 37, 37, 67, 37, 107, 69, 108, 67, 67, 67, 67 }; static const ANTLR3_INT32 dfa40_T362[] = { 69, 74, 37, 30, 106, 69, 75, 110, 78, 516, 69, 517, 518, 67, 69, 75, 37, 37, 37, 67, 37, 37, 37, 68, 69, 111, 37, 37, 67, 37, 107, 69, 108, 67, 67, 67, 67 }; static const ANTLR3_INT32 dfa40_T363[] = { 69, 74, 37, 30, 106, 69, 75, 110, 78, 674, 69, 109, 675, 67, 69, 75, 37, 37, 37, 67, 37, 37, 37, 68, 69, 111, 37, 37, 67, 37, 107, 69, 108, 67, 67, 67, 67 }; static const ANTLR3_INT32 dfa40_T364[] = { 383, 74, 37, 30, 377, 69, 378, 37, 380, 379, 382, 380, 376, 380, 69, 378, 37, 37, 37, 380, 373, 37, 37, 381, 382, 382, 37, 37, 380, 373, 69, 382, 37, 380, 380, 380, 380 }; static const ANTLR3_INT32 dfa40_T365[] = { 69, 74, 37, 30, 106, 69, 75, 110, 78, 76, 69, 517, 600, 67, 69, 75, 37, 37, 37, 67, 37, 37, 37, 68, 69, 111, 37, 37, 67, 37, 107, 69, 108, 67, 67, 67, 67 }; static const ANTLR3_INT32 dfa40_T366[] = { 69, 74, 37, 30, 106, 69, 75, 110, 78, 76, 69, 118, 183, 67, 69, 75, 37, 37, 37, 67, 37, 37, 37, 68, 69, 111, 37, 37, 67, 37, 107, 69, 108, 67, 67, 67, 67 }; static const ANTLR3_INT32 dfa40_T367[] = { 69, 74, 37, 30, 106, 69, 75, 110, 78, 76, 69, 275, 397, 67, 69, 75, 37, 37, 37, 67, 37, 37, 37, 68, 69, 111, 37, 37, 67, 37, 107, 69, 108, 67, 67, 67, 67 }; static const ANTLR3_INT32 dfa40_T368[] = { 69, 74, 37, 30, 106, 69, 75, 110, 78, 76, 69, 109, 729, 67, 69, 75, 37, 37, 37, 67, 37, 37, 37, 68, 69, 111, 37, 37, 67, 37, 107, 69, 108, 67, 67, 67, 67 }; static const ANTLR3_INT32 dfa40_T369[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 86, 37, 37, 85, 37, 37, 86, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T370[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 135, 37, 37, 134, 37, 37, 135, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T371[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 396, 37, 37, 395, 37, 37, 396, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T372[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 470, 37, 37, 469, 37, 37, 470, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T373[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 508, 37, 37, 507, 37, 37, 508, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T374[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 598, 37, 37, 597, 37, 37, 598, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T375[] = { 37, 37, 37, 30, 37, 37, 37, 37, 37, 719, 37, 37, 718, 37, 37, 719, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa40_T376[] = { 383, 74, 37, 30, 663, 69, 664, 37, 666, 665, 668, 666, 721, 666, 69, 664, 37, 37, 37, 666, 653, 37, 37, 667, 668, 668, 37, 37, 666, 653, 69, 668, 37, 666, 666, 666, 666 }; static const ANTLR3_INT32 dfa40_T377[] = { 69, 74, 37, 30, 172, 69, 173, 37, 175, 174, 177, 175, 261, 175, 260, 173, 37, 37, 37, 175, 178, 37, 37, 176, 177, 177, 37, 37, 175, 178, 69, 177, 37, 175, 175, 175, 175 }; static const ANTLR3_INT32 dfa40_T378[] = { 69, 74, 37, 30, 497, 69, 498, 37, 500, 499, 502, 500, 587, 500, 586, 498, 37, 37, 37, 500, 485, 37, 37, 501, 502, 502, 37, 37, 500, 485, 69, 502, 37, 500, 500, 500, 500 }; static const ANTLR3_INT32 dfa40_T379[] = { 164, 37, 37, 30, 164, 37, 240, 163, 242, 241, 164, 239, 249, 242, 37, 240, 37, 37, 37, 242, 164, 37, 37, 243, 164, 195, 37, 37, 242, 164, 167, 164, 162, 242, 242, 242, 242 }; static const ANTLR3_INT32 dfa40_T380[] = { 383, 74, 37, 30, 377, 69, 378, 37, 380, 379, 382, 380, 661, 380, 69, 378, 37, 37, 37, 380, 373, 37, 37, 381, 382, 382, 37, 37, 380, 373, 69, 382, 37, 380, 380, 380, 380 }; static const ANTLR3_INT32 dfa40_T381[] = { 37, 37, 36, 30, 50, 37, 29, 37, 33, 32, 37, 33, 49, 33, 37, 29, 37, 37, 37, 33, 37, 37, 37, 34, 35, 37, 37, 37, 33, 37, 37, 37, 37, 33, 33, 33, 33 }; static const ANTLR3_INT32 dfa40_T382[] = { 164, 37, 37, 30, 164, 37, 240, 110, 242, 241, 164, 239, 347, 242, 247, 240, 37, 37, 37, 242, 164, 37, 37, 243, 164, 195, 37, 37, 242, 164, 167, 164, 108, 242, 242, 242, 242 }; static const ANTLR3_INT32 dfa40_T383[] = { 96, 74, 37, 30, 485, 100, 479, 37, 481, 480, 484, 481, 478, 481, 97, 479, 37, 37, 37, 481, 485, 37, 37, 482, 483, 485, 37, 37, 481, 485, 37, 485, 37, 481, 481, 481, 481 }; static const ANTLR3_INT32 dfa40_T384[] = { 37, 37, 37, 30, 206, 37, 37, 110, 37, 37, 37, 37, 313, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 195, 37, 37, 37, 37, 167, 37, 108, 37, 37, 37, 37 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa40_transitions[] = { dfa40_T201, dfa40_T190, dfa40_T190, dfa40_T190, dfa40_T190, dfa40_T190, dfa40_T190, dfa40_T264, dfa40_T203, dfa40_T208, dfa40_T1, dfa40_T30, dfa40_T204, dfa40_T102, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T127, dfa40_T381, dfa40_T40, dfa40_T55, dfa40_T164, dfa40_T178, dfa40_T344, dfa40_T345, dfa40_T346, dfa40_T245, NULL, NULL, NULL, NULL, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T66, dfa40_T250, NULL, NULL, NULL, NULL, NULL, NULL, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T249, dfa40_T258, dfa40_T130, dfa40_T369, dfa40_T343, dfa40_T34, dfa40_T55, dfa40_T55, dfa40_T209, dfa40_T41, dfa40_T349, dfa40_T290, dfa40_T198, dfa40_T110, dfa40_T360, dfa40_T55, dfa40_T192, dfa40_T55, dfa40_T207, dfa40_T118, dfa40_T55, dfa40_T91, dfa40_T55, dfa40_T55, dfa40_T183, dfa40_T210, dfa40_T55, dfa40_T225, dfa40_T148, dfa40_T155, dfa40_T370, dfa40_T303, dfa40_T302, dfa40_T306, dfa40_T305, dfa40_T309, dfa40_T55, dfa40_T320, dfa40_T46, dfa40_T35, dfa40_T55, dfa40_T186, dfa40_T69, dfa40_T359, dfa40_T270, dfa40_T132, dfa40_T17, dfa40_T55, dfa40_T55, dfa40_T219, dfa40_T55, dfa40_T338, dfa40_T366, dfa40_T265, dfa40_T55, dfa40_T55, dfa40_T254, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T100, dfa40_T55, dfa40_T260, dfa40_T3, dfa40_T47, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T92, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T354, dfa40_T2, dfa40_T75, dfa40_T228, dfa40_T119, dfa40_T55, dfa40_T348, dfa40_T55, dfa40_T184, dfa40_T211, NULL, dfa40_T55, dfa40_T123, dfa40_T55, dfa40_T25, dfa40_T214, dfa40_T287, dfa40_T218, dfa40_T176, dfa40_T135, dfa40_T145, dfa40_T230, dfa40_T71, dfa40_T337, dfa40_T55, dfa40_T379, dfa40_T55, dfa40_T55, dfa40_T24, dfa40_T55, dfa40_T288, dfa40_T193, dfa40_T377, dfa40_T5, dfa40_T81, dfa40_T26, dfa40_T352, dfa40_T55, dfa40_T55, dfa40_T74, dfa40_T138, dfa40_T55, dfa40_T55, dfa40_T361, dfa40_T55, dfa40_T196, dfa40_T55, dfa40_T36, dfa40_T55, dfa40_T307, dfa40_T256, dfa40_T55, dfa40_T216, dfa40_T339, dfa40_T149, dfa40_T285, dfa40_T106, dfa40_T55, dfa40_T55, dfa40_T121, dfa40_T55, dfa40_T4, dfa40_T55, dfa40_T58, dfa40_T217, dfa40_T55, dfa40_T55, dfa40_T98, dfa40_T128, dfa40_T48, dfa40_T55, dfa40_T55, dfa40_T50, dfa40_T55, dfa40_T261, dfa40_T384, dfa40_T49, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T231, dfa40_T328, dfa40_T232, dfa40_T177, dfa40_T111, dfa40_T187, dfa40_T112, dfa40_T108, dfa40_T355, dfa40_T55, dfa40_T200, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T113, dfa40_T55, dfa40_T55, dfa40_T382, dfa40_T252, dfa40_T73, dfa40_T79, dfa40_T82, dfa40_T55, dfa40_T33, dfa40_T55, dfa40_T146, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T205, dfa40_T12, dfa40_T31, dfa40_T80, dfa40_T347, dfa40_T7, dfa40_T9, dfa40_T55, dfa40_T364, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T274, dfa40_T55, dfa40_T55, dfa40_T271, dfa40_T220, dfa40_T140, dfa40_T151, dfa40_T371, dfa40_T55, dfa40_T55, dfa40_T367, dfa40_T266, dfa40_T55, dfa40_T55, dfa40_T259, dfa40_T143, dfa40_T104, dfa40_T55, dfa40_T333, dfa40_T55, dfa40_T233, dfa40_T55, dfa40_T55, dfa40_T224, dfa40_T55, dfa40_T156, dfa40_T59, dfa40_T234, dfa40_T55, dfa40_T291, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T223, dfa40_T55, dfa40_T109, dfa40_T262, dfa40_T55, dfa40_T55, dfa40_T117, dfa40_T55, dfa40_T350, dfa40_T37, dfa40_T55, dfa40_T308, dfa40_T257, dfa40_T55, dfa40_T150, dfa40_T286, dfa40_T107, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T114, dfa40_T55, dfa40_T55, dfa40_T125, dfa40_T284, dfa40_T246, dfa40_T83, dfa40_T251, dfa40_T255, dfa40_T253, dfa40_T215, dfa40_T304, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T185, dfa40_T101, dfa40_T247, dfa40_T222, dfa40_T84, dfa40_T283, dfa40_T268, dfa40_T55, dfa40_T213, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T275, dfa40_T55, dfa40_T55, dfa40_T0, dfa40_T147, dfa40_T42, dfa40_T54, dfa40_T372, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T273, dfa40_T55, dfa40_T248, dfa40_T70, dfa40_T77, dfa40_T85, dfa40_T383, dfa40_T67, dfa40_T68, dfa40_T11, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T356, dfa40_T226, dfa40_T43, dfa40_T63, dfa40_T86, dfa40_T76, dfa40_T20, dfa40_T55, dfa40_T335, dfa40_T55, dfa40_T269, dfa40_T182, dfa40_T191, dfa40_T373, dfa40_T342, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T93, dfa40_T55, dfa40_T55, dfa40_T362, dfa40_T55, dfa40_T195, dfa40_T153, dfa40_T60, dfa40_T55, dfa40_T55, dfa40_T340, dfa40_T55, dfa40_T55, dfa40_T293, dfa40_T55, dfa40_T160, dfa40_T55, dfa40_T167, dfa40_T136, dfa40_T55, dfa40_T294, dfa40_T55, dfa40_T310, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T126, dfa40_T52, dfa40_T55, dfa40_T55, dfa40_T53, dfa40_T144, dfa40_T105, dfa40_T55, dfa40_T334, dfa40_T55, dfa40_T235, dfa40_T55, dfa40_T157, dfa40_T61, dfa40_T236, dfa40_T55, dfa40_T292, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T229, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T277, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T278, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T21, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T94, dfa40_T55, dfa40_T357, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T279, dfa40_T55, dfa40_T206, dfa40_T13, dfa40_T32, dfa40_T88, dfa40_T8, dfa40_T10, dfa40_T353, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T280, dfa40_T55, dfa40_T55, dfa40_T289, dfa40_T194, dfa40_T378, dfa40_T6, dfa40_T90, dfa40_T27, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T95, dfa40_T55, dfa40_T221, dfa40_T141, dfa40_T152, dfa40_T374, dfa40_T55, dfa40_T115, dfa40_T365, dfa40_T263, dfa40_T55, dfa40_T55, dfa40_T72, dfa40_T158, dfa40_T55, dfa40_T165, dfa40_T133, dfa40_T55, dfa40_T55, dfa40_T312, dfa40_T55, dfa40_T237, dfa40_T55, dfa40_T172, dfa40_T55, dfa40_T55, dfa40_T313, dfa40_T238, dfa40_T55, dfa40_T322, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T122, dfa40_T55, dfa40_T351, dfa40_T154, dfa40_T62, dfa40_T55, dfa40_T55, dfa40_T341, dfa40_T55, dfa40_T55, dfa40_T295, dfa40_T161, dfa40_T55, dfa40_T168, dfa40_T137, dfa40_T55, dfa40_T296, dfa40_T55, dfa40_T311, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T227, dfa40_T55, dfa40_T212, dfa40_T55, dfa40_T55, dfa40_T19, dfa40_T55, dfa40_T55, dfa40_T18, dfa40_T55, dfa40_T78, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T272, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T39, dfa40_T55, dfa40_T380, dfa40_T55, dfa40_T55, dfa40_T103, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T281, dfa40_T55, dfa40_T55, dfa40_T163, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T96, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T363, dfa40_T55, dfa40_T55, dfa40_T169, dfa40_T55, dfa40_T55, dfa40_T324, dfa40_T55, dfa40_T55, dfa40_T297, dfa40_T188, dfa40_T55, dfa40_T325, dfa40_T55, dfa40_T298, dfa40_T55, dfa40_T55, dfa40_T129, dfa40_T51, dfa40_T55, dfa40_T55, dfa40_T202, dfa40_T159, dfa40_T55, dfa40_T166, dfa40_T134, dfa40_T55, dfa40_T55, dfa40_T314, dfa40_T55, dfa40_T239, dfa40_T55, dfa40_T173, dfa40_T55, dfa40_T55, dfa40_T315, dfa40_T240, dfa40_T55, dfa40_T323, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T16, dfa40_T181, dfa40_T199, dfa40_T89, dfa40_T174, dfa40_T175, dfa40_T139, dfa40_T55, dfa40_T358, dfa40_T55, dfa40_T38, dfa40_T301, dfa40_T321, dfa40_T375, dfa40_T55, dfa40_T55, dfa40_T99, dfa40_T376, dfa40_T162, dfa40_T171, dfa40_T87, dfa40_T197, dfa40_T55, dfa40_T336, dfa40_T55, dfa40_T55, dfa40_T116, dfa40_T368, dfa40_T55, dfa40_T179, dfa40_T55, dfa40_T55, dfa40_T316, dfa40_T55, dfa40_T241, dfa40_T55, dfa40_T55, dfa40_T317, dfa40_T242, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T124, dfa40_T55, dfa40_T55, dfa40_T170, dfa40_T55, dfa40_T55, dfa40_T326, dfa40_T55, dfa40_T55, dfa40_T299, dfa40_T189, dfa40_T55, dfa40_T327, dfa40_T55, dfa40_T300, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T276, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T97, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T282, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T329, dfa40_T55, dfa40_T55, dfa40_T14, dfa40_T330, dfa40_T55, dfa40_T44, dfa40_T55, dfa40_T131, dfa40_T55, dfa40_T180, dfa40_T55, dfa40_T55, dfa40_T318, dfa40_T55, dfa40_T243, dfa40_T55, dfa40_T55, dfa40_T319, dfa40_T244, dfa40_T55, dfa40_T55, dfa40_T142, dfa40_T55, dfa40_T267, dfa40_T55, dfa40_T120, dfa40_T55, dfa40_T22, dfa40_T55, dfa40_T55, dfa40_T56, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T331, dfa40_T55, dfa40_T55, dfa40_T15, dfa40_T332, dfa40_T55, dfa40_T45, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T28, dfa40_T55, dfa40_T64, dfa40_T55, dfa40_T55, dfa40_T23, dfa40_T55, dfa40_T55, dfa40_T57, dfa40_T55, dfa40_T55, dfa40_T55, dfa40_T29, dfa40_T55, dfa40_T65, dfa40_T55, dfa40_T55, dfa40_T55 }; static ANTLR3_INT32 dfa40_sst(pbelle_sip_messageParser ctx, pANTLR3_BASE_RECOGNIZER recognizer, pANTLR3_INT_STREAM is, pANTLR3_CYCLIC_DFA dfa, ANTLR3_INT32 s) { ANTLR3_INT32 _s; _s = s; switch (s) { case 0: { ANTLR3_UINT32 LA40_193; ANTLR3_MARKER index40_193; LA40_193 = LA(1); index40_193 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_193); if ( s>=0 ) { return s; } } break; case 1: { ANTLR3_UINT32 LA40_105; ANTLR3_MARKER index40_105; LA40_105 = LA(1); index40_105 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_105); if ( s>=0 ) { return s; } } break; case 2: { ANTLR3_UINT32 LA40_112; ANTLR3_MARKER index40_112; LA40_112 = LA(1); index40_112 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_112); if ( s>=0 ) { return s; } } break; case 3: { ANTLR3_UINT32 LA40_318; ANTLR3_MARKER index40_318; LA40_318 = LA(1); index40_318 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_318); if ( s>=0 ) { return s; } } break; case 4: { ANTLR3_UINT32 LA40_246; ANTLR3_MARKER index40_246; LA40_246 = LA(1); index40_246 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_246); if ( s>=0 ) { return s; } } break; case 5: { ANTLR3_UINT32 LA40_446; ANTLR3_MARKER index40_446; LA40_446 = LA(1); index40_446 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_446); if ( s>=0 ) { return s; } } break; case 6: { ANTLR3_UINT32 LA40_460; ANTLR3_MARKER index40_460; LA40_460 = LA(1); index40_460 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_460); if ( s>=0 ) { return s; } } break; case 7: { ANTLR3_UINT32 LA40_347; ANTLR3_MARKER index40_347; LA40_347 = LA(1); index40_347 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_347); if ( s>=0 ) { return s; } } break; case 8: { ANTLR3_UINT32 LA40_350; ANTLR3_MARKER index40_350; LA40_350 = LA(1); index40_350 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_350); if ( s>=0 ) { return s; } } break; case 9: { ANTLR3_UINT32 LA40_376; ANTLR3_MARKER index40_376; LA40_376 = LA(1); index40_376 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_376); if ( s>=0 ) { return s; } } break; case 10: { ANTLR3_UINT32 LA40_450; ANTLR3_MARKER index40_450; LA40_450 = LA(1); index40_450 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_450); if ( s>=0 ) { return s; } } break; case 11: { ANTLR3_UINT32 LA40_397; ANTLR3_MARKER index40_397; LA40_397 = LA(1); index40_397 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_397); if ( s>=0 ) { return s; } } break; case 12: { ANTLR3_UINT32 LA40_662; ANTLR3_MARKER index40_662; LA40_662 = LA(1); index40_662 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_662); if ( s>=0 ) { return s; } } break; case 13: { ANTLR3_UINT32 LA40_489; ANTLR3_MARKER index40_489; LA40_489 = LA(1); index40_489 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_489); if ( s>=0 ) { return s; } } break; case 14: { ANTLR3_UINT32 LA40_566; ANTLR3_MARKER index40_566; LA40_566 = LA(1); index40_566 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_566); if ( s>=0 ) { return s; } } break; case 15: { ANTLR3_UINT32 LA40_451; ANTLR3_MARKER index40_451; LA40_451 = LA(1); index40_451 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_451); if ( s>=0 ) { return s; } } break; case 16: { ANTLR3_UINT32 LA40_488; ANTLR3_MARKER index40_488; LA40_488 = LA(1); index40_488 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_488); if ( s>=0 ) { return s; } } break; case 17: { ANTLR3_UINT32 LA40_466; ANTLR3_MARKER index40_466; LA40_466 = LA(1); index40_466 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_466); if ( s>=0 ) { return s; } } break; case 18: { ANTLR3_UINT32 LA40_365; ANTLR3_MARKER index40_365; LA40_365 = LA(1); index40_365 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_365); if ( s>=0 ) { return s; } } break; case 19: { ANTLR3_UINT32 LA40_119; ANTLR3_MARKER index40_119; LA40_119 = LA(1); index40_119 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_119); if ( s>=0 ) { return s; } } break; case 20: { ANTLR3_UINT32 LA40_729; ANTLR3_MARKER index40_729; LA40_729 = LA(1); index40_729 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_729); if ( s>=0 ) { return s; } } break; case 21: { ANTLR3_UINT32 LA40_420; ANTLR3_MARKER index40_420; LA40_420 = LA(1); index40_420 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_420); if ( s>=0 ) { return s; } } break; case 22: { ANTLR3_UINT32 LA40_473; ANTLR3_MARKER index40_473; LA40_473 = LA(1); index40_473 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_473); if ( s>=0 ) { return s; } } break; case 23: { ANTLR3_UINT32 LA40_298; ANTLR3_MARKER index40_298; LA40_298 = LA(1); index40_298 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_298); if ( s>=0 ) { return s; } } break; case 24: { ANTLR3_UINT32 LA40_323; ANTLR3_MARKER index40_323; LA40_323 = LA(1); index40_323 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_323); if ( s>=0 ) { return s; } } break; case 25: { ANTLR3_UINT32 LA40_706; ANTLR3_MARKER index40_706; LA40_706 = LA(1); index40_706 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_706); if ( s>=0 ) { return s; } } break; case 26: { ANTLR3_UINT32 LA40_348; ANTLR3_MARKER index40_348; LA40_348 = LA(1); index40_348 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_348); if ( s>=0 ) { return s; } } break; case 27: { ANTLR3_UINT32 LA40_721; ANTLR3_MARKER index40_721; LA40_721 = LA(1); index40_721 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_721); if ( s>=0 ) { return s; } } break; case 28: { ANTLR3_UINT32 LA40_775; ANTLR3_MARKER index40_775; LA40_775 = LA(1); index40_775 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_775); if ( s>=0 ) { return s; } } break; case 29: { ANTLR3_UINT32 LA40_539; ANTLR3_MARKER index40_539; LA40_539 = LA(1); index40_539 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_539); if ( s>=0 ) { return s; } } break; case 30: { ANTLR3_UINT32 LA40_237; ANTLR3_MARKER index40_237; LA40_237 = LA(1); index40_237 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_237); if ( s>=0 ) { return s; } } break; case 31: { ANTLR3_UINT32 LA40_600; ANTLR3_MARKER index40_600; LA40_600 = LA(1); index40_600 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_600); if ( s>=0 ) { return s; } } break; case 32: { ANTLR3_UINT32 LA40_707; ANTLR3_MARKER index40_707; LA40_707 = LA(1); index40_707 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_707); if ( s>=0 ) { return s; } } break; case 33: { ANTLR3_UINT32 LA40_490; ANTLR3_MARKER index40_490; LA40_490 = LA(1); index40_490 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_490); if ( s>=0 ) { return s; } } break; case 34: { ANTLR3_UINT32 LA40_456; ANTLR3_MARKER index40_456; LA40_456 = LA(1); index40_456 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_456); if ( s>=0 ) { return s; } } break; case 35: { ANTLR3_UINT32 LA40_468; ANTLR3_MARKER index40_468; LA40_468 = LA(1); index40_468 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_468); if ( s>=0 ) { return s; } } break; case 36: { ANTLR3_UINT32 LA40_708; ANTLR3_MARKER index40_708; LA40_708 = LA(1); index40_708 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_708); if ( s>=0 ) { return s; } } break; case 37: { ANTLR3_UINT32 LA40_495; ANTLR3_MARKER index40_495; LA40_495 = LA(1); index40_495 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_495); if ( s>=0 ) { return s; } } break; case 38: { ANTLR3_UINT32 LA40_304; ANTLR3_MARKER index40_304; LA40_304 = LA(1); index40_304 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_304); if ( s>=0 ) { return s; } } break; case 39: { ANTLR3_UINT32 LA40_336; ANTLR3_MARKER index40_336; LA40_336 = LA(1); index40_336 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_336); if ( s>=0 ) { return s; } } break; case 40: { ANTLR3_UINT32 LA40_455; ANTLR3_MARKER index40_455; LA40_455 = LA(1); index40_455 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_455); if ( s>=0 ) { return s; } } break; case 41: { ANTLR3_UINT32 LA40_474; ANTLR3_MARKER index40_474; LA40_474 = LA(1); index40_474 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_474); if ( s>=0 ) { return s; } } break; case 42: { ANTLR3_UINT32 LA40_504; ANTLR3_MARKER index40_504; LA40_504 = LA(1); index40_504 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_504); if ( s>=0 ) { return s; } } break; case 43: { ANTLR3_UINT32 LA40_453; ANTLR3_MARKER index40_453; LA40_453 = LA(1); index40_453 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_453); if ( s>=0 ) { return s; } } break; case 44: { ANTLR3_UINT32 LA40_603; ANTLR3_MARKER index40_603; LA40_603 = LA(1); index40_603 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_603); if ( s>=0 ) { return s; } } break; case 45: { ANTLR3_UINT32 LA40_249; ANTLR3_MARKER index40_249; LA40_249 = LA(1); index40_249 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_249); if ( s>=0 ) { return s; } } break; case 46: { ANTLR3_UINT32 LA40_155; ANTLR3_MARKER index40_155; LA40_155 = LA(1); index40_155 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_155); if ( s>=0 ) { return s; } } break; case 47: { ANTLR3_UINT32 LA40_168; ANTLR3_MARKER index40_168; LA40_168 = LA(1); index40_168 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_168); if ( s>=0 ) { return s; } } break; case 48: { ANTLR3_UINT32 LA40_231; ANTLR3_MARKER index40_231; LA40_231 = LA(1); index40_231 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_231); if ( s>=0 ) { return s; } } break; case 49: { ANTLR3_UINT32 LA40_646; ANTLR3_MARKER index40_646; LA40_646 = LA(1); index40_646 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_646); if ( s>=0 ) { return s; } } break; case 50: { ANTLR3_UINT32 LA40_711; ANTLR3_MARKER index40_711; LA40_711 = LA(1); index40_711 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_711); if ( s>=0 ) { return s; } } break; case 51: { ANTLR3_UINT32 LA40_715; ANTLR3_MARKER index40_715; LA40_715 = LA(1); index40_715 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_715); if ( s>=0 ) { return s; } } break; case 52: { ANTLR3_UINT32 LA40_486; ANTLR3_MARKER index40_486; LA40_486 = LA(1); index40_486 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_486); if ( s>=0 ) { return s; } } break; case 53: { ANTLR3_UINT32 LA40_776; ANTLR3_MARKER index40_776; LA40_776 = LA(1); index40_776 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_776); if ( s>=0 ) { return s; } } break; case 54: { ANTLR3_UINT32 LA40_233; ANTLR3_MARKER index40_233; LA40_233 = LA(1); index40_233 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_233); if ( s>=0 ) { return s; } } break; case 55: { ANTLR3_UINT32 LA40_276; ANTLR3_MARKER index40_276; LA40_276 = LA(1); index40_276 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_276); if ( s>=0 ) { return s; } } break; case 56: { ANTLR3_UINT32 LA40_717; ANTLR3_MARKER index40_717; LA40_717 = LA(1); index40_717 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_717); if ( s>=0 ) { return s; } } break; case 57: { ANTLR3_UINT32 LA40_183; ANTLR3_MARKER index40_183; LA40_183 = LA(1); index40_183 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_183); if ( s>=0 ) { return s; } } break; case 58: { ANTLR3_UINT32 LA40_449; ANTLR3_MARKER index40_449; LA40_449 = LA(1); index40_449 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_449); if ( s>=0 ) { return s; } } break; case 59: { ANTLR3_UINT32 LA40_465; ANTLR3_MARKER index40_465; LA40_465 = LA(1); index40_465 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_465); if ( s>=0 ) { return s; } } break; case 60: { ANTLR3_UINT32 LA40_425; ANTLR3_MARKER index40_425; LA40_425 = LA(1); index40_425 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_425); if ( s>=0 ) { return s; } } break; case 61: { ANTLR3_UINT32 LA40_492; ANTLR3_MARKER index40_492; LA40_492 = LA(1); index40_492 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_492); if ( s>=0 ) { return s; } } break; case 62: { ANTLR3_UINT32 LA40_184; ANTLR3_MARKER index40_184; LA40_184 = LA(1); index40_184 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_184); if ( s>=0 ) { return s; } } break; case 63: { ANTLR3_UINT32 LA40_220; ANTLR3_MARKER index40_220; LA40_220 = LA(1); index40_220 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_220); if ( s>=0 ) { return s; } } break; case 64: { ANTLR3_UINT32 LA40_722; ANTLR3_MARKER index40_722; LA40_722 = LA(1); index40_722 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_722); if ( s>=0 ) { return s; } } break; case 65: { ANTLR3_UINT32 LA40_712; ANTLR3_MARKER index40_712; LA40_712 = LA(1); index40_712 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_712); if ( s>=0 ) { return s; } } break; case 66: { ANTLR3_UINT32 LA40_740; ANTLR3_MARKER index40_740; LA40_740 = LA(1); index40_740 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_740); if ( s>=0 ) { return s; } } break; case 67: { ANTLR3_UINT32 LA40_335; ANTLR3_MARKER index40_335; LA40_335 = LA(1); index40_335 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_335); if ( s>=0 ) { return s; } } break; case 68: { ANTLR3_UINT32 LA40_690; ANTLR3_MARKER index40_690; LA40_690 = LA(1); index40_690 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_690); if ( s>=0 ) { return s; } } break; case 69: { ANTLR3_UINT32 LA40_207; ANTLR3_MARKER index40_207; LA40_207 = LA(1); index40_207 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_207); if ( s>=0 ) { return s; } } break; case 70: { ANTLR3_UINT32 LA40_444; ANTLR3_MARKER index40_444; LA40_444 = LA(1); index40_444 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_444); if ( s>=0 ) { return s; } } break; case 71: { ANTLR3_UINT32 LA40_319; ANTLR3_MARKER index40_319; LA40_319 = LA(1); index40_319 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_319); if ( s>=0 ) { return s; } } break; case 72: { ANTLR3_UINT32 LA40_475; ANTLR3_MARKER index40_475; LA40_475 = LA(1); index40_475 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_475); if ( s>=0 ) { return s; } } break; case 73: { ANTLR3_UINT32 LA40_644; ANTLR3_MARKER index40_644; LA40_644 = LA(1); index40_644 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_644); if ( s>=0 ) { return s; } } break; case 74: { ANTLR3_UINT32 LA40_221; ANTLR3_MARKER index40_221; LA40_221 = LA(1); index40_221 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_221); if ( s>=0 ) { return s; } } break; case 75: { ANTLR3_UINT32 LA40_334; ANTLR3_MARKER index40_334; LA40_334 = LA(1); index40_334 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_334); if ( s>=0 ) { return s; } } break; case 76: { ANTLR3_UINT32 LA40_386; ANTLR3_MARKER index40_386; LA40_386 = LA(1); index40_386 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_386); if ( s>=0 ) { return s; } } break; case 77: { ANTLR3_UINT32 LA40_462; ANTLR3_MARKER index40_462; LA40_462 = LA(1); index40_462 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_462); if ( s>=0 ) { return s; } } break; case 78: { ANTLR3_UINT32 LA40_487; ANTLR3_MARKER index40_487; LA40_487 = LA(1); index40_487 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_487); if ( s>=0 ) { return s; } } break; case 79: { ANTLR3_UINT32 LA40_774; ANTLR3_MARKER index40_774; LA40_774 = LA(1); index40_774 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_774); if ( s>=0 ) { return s; } } break; case 80: { ANTLR3_UINT32 LA40_687; ANTLR3_MARKER index40_687; LA40_687 = LA(1); index40_687 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_687); if ( s>=0 ) { return s; } } break; case 81: { ANTLR3_UINT32 LA40_457; ANTLR3_MARKER index40_457; LA40_457 = LA(1); index40_457 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_457); if ( s>=0 ) { return s; } } break; case 82: { ANTLR3_UINT32 LA40_467; ANTLR3_MARKER index40_467; LA40_467 = LA(1); index40_467 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_467); if ( s>=0 ) { return s; } } break; case 83: { ANTLR3_UINT32 LA40_410; ANTLR3_MARKER index40_410; LA40_410 = LA(1); index40_410 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_410); if ( s>=0 ) { return s; } } break; case 84: { ANTLR3_UINT32 LA40_645; ANTLR3_MARKER index40_645; LA40_645 = LA(1); index40_645 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_645); if ( s>=0 ) { return s; } } break; case 85: { ANTLR3_UINT32 LA40_491; ANTLR3_MARKER index40_491; LA40_491 = LA(1); index40_491 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_491); if ( s>=0 ) { return s; } } break; case 86: { ANTLR3_UINT32 LA40_540; ANTLR3_MARKER index40_540; LA40_540 = LA(1); index40_540 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_540); if ( s>=0 ) { return s; } } break; case 87: { ANTLR3_UINT32 LA40_643; ANTLR3_MARKER index40_643; LA40_643 = LA(1); index40_643 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_643); if ( s>=0 ) { return s; } } break; case 88: { ANTLR3_UINT32 LA40_454; ANTLR3_MARKER index40_454; LA40_454 = LA(1); index40_454 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_454); if ( s>=0 ) { return s; } } break; case 89: { ANTLR3_UINT32 LA40_461; ANTLR3_MARKER index40_461; LA40_461 = LA(1); index40_461 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_461); if ( s>=0 ) { return s; } } break; case 90: { ANTLR3_UINT32 LA40_452; ANTLR3_MARKER index40_452; LA40_452 = LA(1); index40_452 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_452); if ( s>=0 ) { return s; } } break; case 91: { ANTLR3_UINT32 LA40_349; ANTLR3_MARKER index40_349; LA40_349 = LA(1); index40_349 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_349); if ( s>=0 ) { return s; } } break; case 92: { ANTLR3_UINT32 LA40_505; ANTLR3_MARKER index40_505; LA40_505 = LA(1); index40_505 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_505); if ( s>=0 ) { return s; } } break; case 93: { ANTLR3_UINT32 LA40_621; ANTLR3_MARKER index40_621; LA40_621 = LA(1); index40_621 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_621); if ( s>=0 ) { return s; } } break; case 94: { ANTLR3_UINT32 LA40_398; ANTLR3_MARKER index40_398; LA40_398 = LA(1); index40_398 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_398); if ( s>=0 ) { return s; } } break; case 95: { ANTLR3_UINT32 LA40_561; ANTLR3_MARKER index40_561; LA40_561 = LA(1); index40_561 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_561); if ( s>=0 ) { return s; } } break; case 96: { ANTLR3_UINT32 LA40_726; ANTLR3_MARKER index40_726; LA40_726 = LA(1); index40_726 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_726); if ( s>=0 ) { return s; } } break; case 97: { ANTLR3_UINT32 LA40_723; ANTLR3_MARKER index40_723; LA40_723 = LA(1); index40_723 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_723); if ( s>=0 ) { return s; } } break; case 98: { ANTLR3_UINT32 LA40_305; ANTLR3_MARKER index40_305; LA40_305 = LA(1); index40_305 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_305); if ( s>=0 ) { return s; } } break; case 99: { ANTLR3_UINT32 LA40_518; ANTLR3_MARKER index40_518; LA40_518 = LA(1); index40_518 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_518); if ( s>=0 ) { return s; } } break; case 100: { ANTLR3_UINT32 LA40_234; ANTLR3_MARKER index40_234; LA40_234 = LA(1); index40_234 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_234); if ( s>=0 ) { return s; } } break; case 101: { ANTLR3_UINT32 LA40_204; ANTLR3_MARKER index40_204; LA40_204 = LA(1); index40_204 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_204); if ( s>=0 ) { return s; } } break; case 102: { ANTLR3_UINT32 LA40_671; ANTLR3_MARKER index40_671; LA40_671 = LA(1); index40_671 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_671); if ( s>=0 ) { return s; } } break; case 103: { ANTLR3_UINT32 LA40_506; ANTLR3_MARKER index40_506; LA40_506 = LA(1); index40_506 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_506); if ( s>=0 ) { return s; } } break; case 104: { ANTLR3_UINT32 LA40_764; ANTLR3_MARKER index40_764; LA40_764 = LA(1); index40_764 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_764); if ( s>=0 ) { return s; } } break; case 105: { ANTLR3_UINT32 LA40_320; ANTLR3_MARKER index40_320; LA40_320 = LA(1); index40_320 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_320); if ( s>=0 ) { return s; } } break; case 106: { ANTLR3_UINT32 LA40_445; ANTLR3_MARKER index40_445; LA40_445 = LA(1); index40_445 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_445); if ( s>=0 ) { return s; } } break; case 107: { ANTLR3_UINT32 LA40_642; ANTLR3_MARKER index40_642; LA40_642 = LA(1); index40_642 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_642); if ( s>=0 ) { return s; } } break; case 108: { ANTLR3_UINT32 LA40_675; ANTLR3_MARKER index40_675; LA40_675 = LA(1); index40_675 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_675); if ( s>=0 ) { return s; } } break; case 109: { ANTLR3_UINT32 LA40_601; ANTLR3_MARKER index40_601; LA40_601 = LA(1); index40_601 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_601); if ( s>=0 ) { return s; } } break; case 110: { ANTLR3_UINT32 LA40_716; ANTLR3_MARKER index40_716; LA40_716 = LA(1); index40_716 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_716); if ( s>=0 ) { return s; } } break; case 111: { ANTLR3_UINT32 LA40_720; ANTLR3_MARKER index40_720; LA40_720 = LA(1); index40_720 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_720); if ( s>=0 ) { return s; } } break; case 112: { ANTLR3_UINT32 LA40_661; ANTLR3_MARKER index40_661; LA40_661 = LA(1); index40_661 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_661); if ( s>=0 ) { return s; } } break; case 113: { ANTLR3_UINT32 LA40_248; ANTLR3_MARKER index40_248; LA40_248 = LA(1); index40_248 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_248); if ( s>=0 ) { return s; } } break; case 114: { ANTLR3_UINT32 LA40_656; ANTLR3_MARKER index40_656; LA40_656 = LA(1); index40_656 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_656); if ( s>=0 ) { return s; } } break; case 115: { ANTLR3_UINT32 LA40_688; ANTLR3_MARKER index40_688; LA40_688 = LA(1); index40_688 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_688); if ( s>=0 ) { return s; } } break; case 116: { ANTLR3_UINT32 LA40_713; ANTLR3_MARKER index40_713; LA40_713 = LA(1); index40_713 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_713); if ( s>=0 ) { return s; } } break; case 117: { ANTLR3_UINT32 LA40_313; ANTLR3_MARKER index40_313; LA40_313 = LA(1); index40_313 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_313); if ( s>=0 ) { return s; } } break; case 118: { ANTLR3_UINT32 LA40_212; ANTLR3_MARKER index40_212; LA40_212 = LA(1); index40_212 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(uri))) ) { s = 152; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_212); if ( s>=0 ) { return s; } } break; case 119: { ANTLR3_UINT32 LA40_20; ANTLR3_MARKER index40_20; LA40_20 = LA(1); index40_20 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(algorithm))) ) { s = 38; } else if ( ((IS_TOKEN(qop))) ) { s = 39; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_20); if ( s>=0 ) { return s; } } break; case 120: { ANTLR3_UINT32 LA40_27; ANTLR3_MARKER index40_27; LA40_27 = LA(1); index40_27 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(algorithm))) ) { s = 38; } else if ( ((IS_TOKEN(qop))) ) { s = 39; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_27); if ( s>=0 ) { return s; } } break; case 121: { ANTLR3_UINT32 LA40_48; ANTLR3_MARKER index40_48; LA40_48 = LA(1); index40_48 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(algorithm))) ) { s = 38; } else if ( ((IS_TOKEN(qop))) ) { s = 39; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_48); if ( s>=0 ) { return s; } } break; case 122: { ANTLR3_UINT32 LA40_16; ANTLR3_MARKER index40_16; LA40_16 = LA(1); index40_16 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(algorithm))) ) { s = 38; } else if ( ((IS_TOKEN(qop))) ) { s = 39; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_16); if ( s>=0 ) { return s; } } break; case 123: { ANTLR3_UINT32 LA40_23; ANTLR3_MARKER index40_23; LA40_23 = LA(1); index40_23 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(algorithm))) ) { s = 38; } else if ( ((IS_TOKEN(qop))) ) { s = 39; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_23); if ( s>=0 ) { return s; } } break; case 124: { ANTLR3_UINT32 LA40_44; ANTLR3_MARKER index40_44; LA40_44 = LA(1); index40_44 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(algorithm))) ) { s = 38; } else if ( ((IS_TOKEN(qop))) ) { s = 39; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_44); if ( s>=0 ) { return s; } } break; case 125: { ANTLR3_UINT32 LA40_18; ANTLR3_MARKER index40_18; LA40_18 = LA(1); index40_18 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(algorithm))) ) { s = 38; } else if ( ((IS_TOKEN(qop))) ) { s = 39; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_18); if ( s>=0 ) { return s; } } break; case 126: { ANTLR3_UINT32 LA40_25; ANTLR3_MARKER index40_25; LA40_25 = LA(1); index40_25 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(algorithm))) ) { s = 38; } else if ( ((IS_TOKEN(qop))) ) { s = 39; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_25); if ( s>=0 ) { return s; } } break; case 127: { ANTLR3_UINT32 LA40_46; ANTLR3_MARKER index40_46; LA40_46 = LA(1); index40_46 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(algorithm))) ) { s = 38; } else if ( ((IS_TOKEN(qop))) ) { s = 39; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_46); if ( s>=0 ) { return s; } } break; case 128: { ANTLR3_UINT32 LA40_19; ANTLR3_MARKER index40_19; LA40_19 = LA(1); index40_19 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(algorithm))) ) { s = 38; } else if ( ((IS_TOKEN(qop))) ) { s = 39; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_19); if ( s>=0 ) { return s; } } break; case 129: { ANTLR3_UINT32 LA40_26; ANTLR3_MARKER index40_26; LA40_26 = LA(1); index40_26 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(algorithm))) ) { s = 38; } else if ( ((IS_TOKEN(qop))) ) { s = 39; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_26); if ( s>=0 ) { return s; } } break; case 130: { ANTLR3_UINT32 LA40_47; ANTLR3_MARKER index40_47; LA40_47 = LA(1); index40_47 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(algorithm))) ) { s = 38; } else if ( ((IS_TOKEN(qop))) ) { s = 39; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_47); if ( s>=0 ) { return s; } } break; case 131: { ANTLR3_UINT32 LA40_17; ANTLR3_MARKER index40_17; LA40_17 = LA(1); index40_17 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(algorithm))) ) { s = 38; } else if ( ((IS_TOKEN(qop))) ) { s = 39; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_17); if ( s>=0 ) { return s; } } break; case 132: { ANTLR3_UINT32 LA40_24; ANTLR3_MARKER index40_24; LA40_24 = LA(1); index40_24 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(algorithm))) ) { s = 38; } else if ( ((IS_TOKEN(qop))) ) { s = 39; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_24); if ( s>=0 ) { return s; } } break; case 133: { ANTLR3_UINT32 LA40_45; ANTLR3_MARKER index40_45; LA40_45 = LA(1); index40_45 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(algorithm))) ) { s = 38; } else if ( ((IS_TOKEN(qop))) ) { s = 39; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_45); if ( s>=0 ) { return s; } } break; case 134: { ANTLR3_UINT32 LA40_14; ANTLR3_MARKER index40_14; LA40_14 = LA(1); index40_14 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(algorithm))) ) { s = 38; } else if ( ((IS_TOKEN(qop))) ) { s = 39; } else if ( ((IS_TOKEN(nc))) ) { s = 40; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_14); if ( s>=0 ) { return s; } } break; case 135: { ANTLR3_UINT32 LA40_21; ANTLR3_MARKER index40_21; LA40_21 = LA(1); index40_21 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(algorithm))) ) { s = 38; } else if ( ((IS_TOKEN(qop))) ) { s = 39; } else if ( ((IS_TOKEN(nc))) ) { s = 40; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_21); if ( s>=0 ) { return s; } } break; case 136: { ANTLR3_UINT32 LA40_42; ANTLR3_MARKER index40_42; LA40_42 = LA(1); index40_42 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(algorithm))) ) { s = 38; } else if ( ((IS_TOKEN(qop))) ) { s = 39; } else if ( ((IS_TOKEN(nc))) ) { s = 40; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_42); if ( s>=0 ) { return s; } } break; case 137: { ANTLR3_UINT32 LA40_31; ANTLR3_MARKER index40_31; LA40_31 = LA(1); index40_31 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_31); if ( s>=0 ) { return s; } } break; case 138: { ANTLR3_UINT32 LA40_64; ANTLR3_MARKER index40_64; LA40_64 = LA(1); index40_64 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_64); if ( s>=0 ) { return s; } } break; case 139: { ANTLR3_UINT32 LA40_49; ANTLR3_MARKER index40_49; LA40_49 = LA(1); index40_49 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_49); if ( s>=0 ) { return s; } } break; case 140: { ANTLR3_UINT32 LA40_134; ANTLR3_MARKER index40_134; LA40_134 = LA(1); index40_134 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_134); if ( s>=0 ) { return s; } } break; case 141: { ANTLR3_UINT32 LA40_767; ANTLR3_MARKER index40_767; LA40_767 = LA(1); index40_767 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_767); if ( s>=0 ) { return s; } } break; case 142: { ANTLR3_UINT32 LA40_784; ANTLR3_MARKER index40_784; LA40_784 = LA(1); index40_784 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_784); if ( s>=0 ) { return s; } } break; case 143: { ANTLR3_UINT32 LA40_202; ANTLR3_MARKER index40_202; LA40_202 = LA(1); index40_202 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_202); if ( s>=0 ) { return s; } } break; case 144: { ANTLR3_UINT32 LA40_120; ANTLR3_MARKER index40_120; LA40_120 = LA(1); index40_120 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_120); if ( s>=0 ) { return s; } } break; case 145: { ANTLR3_UINT32 LA40_153; ANTLR3_MARKER index40_153; LA40_153 = LA(1); index40_153 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_153); if ( s>=0 ) { return s; } } break; case 146: { ANTLR3_UINT32 LA40_213; ANTLR3_MARKER index40_213; LA40_213 = LA(1); index40_213 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_213); if ( s>=0 ) { return s; } } break; case 147: { ANTLR3_UINT32 LA40_301; ANTLR3_MARKER index40_301; LA40_301 = LA(1); index40_301 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_301); if ( s>=0 ) { return s; } } break; case 148: { ANTLR3_UINT32 LA40_447; ANTLR3_MARKER index40_447; LA40_447 = LA(1); index40_447 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_447); if ( s>=0 ) { return s; } } break; case 149: { ANTLR3_UINT32 LA40_751; ANTLR3_MARKER index40_751; LA40_751 = LA(1); index40_751 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_751); if ( s>=0 ) { return s; } } break; case 150: { ANTLR3_UINT32 LA40_281; ANTLR3_MARKER index40_281; LA40_281 = LA(1); index40_281 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_281); if ( s>=0 ) { return s; } } break; case 151: { ANTLR3_UINT32 LA40_321; ANTLR3_MARKER index40_321; LA40_321 = LA(1); index40_321 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_321); if ( s>=0 ) { return s; } } break; case 152: { ANTLR3_UINT32 LA40_458; ANTLR3_MARKER index40_458; LA40_458 = LA(1); index40_458 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_458); if ( s>=0 ) { return s; } } break; case 153: { ANTLR3_UINT32 LA40_733; ANTLR3_MARKER index40_733; LA40_733 = LA(1); index40_733 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_733); if ( s>=0 ) { return s; } } break; case 154: { ANTLR3_UINT32 LA40_288; ANTLR3_MARKER index40_288; LA40_288 = LA(1); index40_288 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_288); if ( s>=0 ) { return s; } } break; case 155: { ANTLR3_UINT32 LA40_200; ANTLR3_MARKER index40_200; LA40_200 = LA(1); index40_200 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_200); if ( s>=0 ) { return s; } } break; case 156: { ANTLR3_UINT32 LA40_790; ANTLR3_MARKER index40_790; LA40_790 = LA(1); index40_790 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_790); if ( s>=0 ) { return s; } } break; case 157: { ANTLR3_UINT32 LA40_564; ANTLR3_MARKER index40_564; LA40_564 = LA(1); index40_564 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_564); if ( s>=0 ) { return s; } } break; case 158: { ANTLR3_UINT32 LA40_575; ANTLR3_MARKER index40_575; LA40_575 = LA(1); index40_575 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_575); if ( s>=0 ) { return s; } } break; case 159: { ANTLR3_UINT32 LA40_136; ANTLR3_MARKER index40_136; LA40_136 = LA(1); index40_136 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_136); if ( s>=0 ) { return s; } } break; case 160: { ANTLR3_UINT32 LA40_422; ANTLR3_MARKER index40_422; LA40_422 = LA(1); index40_422 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_422); if ( s>=0 ) { return s; } } break; case 161: { ANTLR3_UINT32 LA40_430; ANTLR3_MARKER index40_430; LA40_430 = LA(1); index40_430 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_430); if ( s>=0 ) { return s; } } break; case 162: { ANTLR3_UINT32 LA40_724; ANTLR3_MARKER index40_724; LA40_724 = LA(1); index40_724 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_724); if ( s>=0 ) { return s; } } break; case 163: { ANTLR3_UINT32 LA40_763; ANTLR3_MARKER index40_763; LA40_763 = LA(1); index40_763 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_763); if ( s>=0 ) { return s; } } break; case 164: { ANTLR3_UINT32 LA40_58; ANTLR3_MARKER index40_58; LA40_58 = LA(1); index40_58 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_58); if ( s>=0 ) { return s; } } break; case 165: { ANTLR3_UINT32 LA40_384; ANTLR3_MARKER index40_384; LA40_384 = LA(1); index40_384 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_384); if ( s>=0 ) { return s; } } break; case 166: { ANTLR3_UINT32 LA40_514; ANTLR3_MARKER index40_514; LA40_514 = LA(1); index40_514 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_514); if ( s>=0 ) { return s; } } break; case 167: { ANTLR3_UINT32 LA40_417; ANTLR3_MARKER index40_417; LA40_417 = LA(1); index40_417 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_417); if ( s>=0 ) { return s; } } break; case 168: { ANTLR3_UINT32 LA40_530; ANTLR3_MARKER index40_530; LA40_530 = LA(1); index40_530 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_530); if ( s>=0 ) { return s; } } break; case 169: { ANTLR3_UINT32 LA40_761; ANTLR3_MARKER index40_761; LA40_761 = LA(1); index40_761 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_761); if ( s>=0 ) { return s; } } break; case 170: { ANTLR3_UINT32 LA40_363; ANTLR3_MARKER index40_363; LA40_363 = LA(1); index40_363 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_363); if ( s>=0 ) { return s; } } break; case 171: { ANTLR3_UINT32 LA40_730; ANTLR3_MARKER index40_730; LA40_730 = LA(1); index40_730 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_730); if ( s>=0 ) { return s; } } break; case 172: { ANTLR3_UINT32 LA40_149; ANTLR3_MARKER index40_149; LA40_149 = LA(1); index40_149 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_149); if ( s>=0 ) { return s; } } break; case 173: { ANTLR3_UINT32 LA40_180; ANTLR3_MARKER index40_180; LA40_180 = LA(1); index40_180 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_180); if ( s>=0 ) { return s; } } break; case 174: { ANTLR3_UINT32 LA40_594; ANTLR3_MARKER index40_594; LA40_594 = LA(1); index40_594 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_594); if ( s>=0 ) { return s; } } break; case 175: { ANTLR3_UINT32 LA40_405; ANTLR3_MARKER index40_405; LA40_405 = LA(1); index40_405 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_405); if ( s>=0 ) { return s; } } break; case 176: { ANTLR3_UINT32 LA40_265; ANTLR3_MARKER index40_265; LA40_265 = LA(1); index40_265 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_265); if ( s>=0 ) { return s; } } break; case 177: { ANTLR3_UINT32 LA40_585; ANTLR3_MARKER index40_585; LA40_585 = LA(1); index40_585 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_585); if ( s>=0 ) { return s; } } break; case 178: { ANTLR3_UINT32 LA40_507; ANTLR3_MARKER index40_507; LA40_507 = LA(1); index40_507 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_507); if ( s>=0 ) { return s; } } break; case 179: { ANTLR3_UINT32 LA40_393; ANTLR3_MARKER index40_393; LA40_393 = LA(1); index40_393 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_393); if ( s>=0 ) { return s; } } break; case 180: { ANTLR3_UINT32 LA40_72; ANTLR3_MARKER index40_72; LA40_72 = LA(1); index40_72 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_72); if ( s>=0 ) { return s; } } break; case 181: { ANTLR3_UINT32 LA40_87; ANTLR3_MARKER index40_87; LA40_87 = LA(1); index40_87 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_87); if ( s>=0 ) { return s; } } break; case 182: { ANTLR3_UINT32 LA40_132; ANTLR3_MARKER index40_132; LA40_132 = LA(1); index40_132 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_132); if ( s>=0 ) { return s; } } break; case 183: { ANTLR3_UINT32 LA40_781; ANTLR3_MARKER index40_781; LA40_781 = LA(1); index40_781 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_781); if ( s>=0 ) { return s; } } break; case 184: { ANTLR3_UINT32 LA40_589; ANTLR3_MARKER index40_589; LA40_589 = LA(1); index40_589 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_589); if ( s>=0 ) { return s; } } break; case 185: { ANTLR3_UINT32 LA40_404; ANTLR3_MARKER index40_404; LA40_404 = LA(1); index40_404 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_404); if ( s>=0 ) { return s; } } break; case 186: { ANTLR3_UINT32 LA40_562; ANTLR3_MARKER index40_562; LA40_562 = LA(1); index40_562 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_562); if ( s>=0 ) { return s; } } break; case 187: { ANTLR3_UINT32 LA40_714; ANTLR3_MARKER index40_714; LA40_714 = LA(1); index40_714 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_714); if ( s>=0 ) { return s; } } break; case 188: { ANTLR3_UINT32 LA40_758; ANTLR3_MARKER index40_758; LA40_758 = LA(1); index40_758 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_758); if ( s>=0 ) { return s; } } break; case 189: { ANTLR3_UINT32 LA40_694; ANTLR3_MARKER index40_694; LA40_694 = LA(1); index40_694 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_694); if ( s>=0 ) { return s; } } break; case 190: { ANTLR3_UINT32 LA40_235; ANTLR3_MARKER index40_235; LA40_235 = LA(1); index40_235 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_235); if ( s>=0 ) { return s; } } break; case 191: { ANTLR3_UINT32 LA40_353; ANTLR3_MARKER index40_353; LA40_353 = LA(1); index40_353 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_353); if ( s>=0 ) { return s; } } break; case 192: { ANTLR3_UINT32 LA40_415; ANTLR3_MARKER index40_415; LA40_415 = LA(1); index40_415 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_415); if ( s>=0 ) { return s; } } break; case 193: { ANTLR3_UINT32 LA40_702; ANTLR3_MARKER index40_702; LA40_702 = LA(1); index40_702 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_702); if ( s>=0 ) { return s; } } break; case 194: { ANTLR3_UINT32 LA40_783; ANTLR3_MARKER index40_783; LA40_783 = LA(1); index40_783 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_783); if ( s>=0 ) { return s; } } break; case 195: { ANTLR3_UINT32 LA40_686; ANTLR3_MARKER index40_686; LA40_686 = LA(1); index40_686 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_686); if ( s>=0 ) { return s; } } break; case 196: { ANTLR3_UINT32 LA40_732; ANTLR3_MARKER index40_732; LA40_732 = LA(1); index40_732 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_732); if ( s>=0 ) { return s; } } break; case 197: { ANTLR3_UINT32 LA40_607; ANTLR3_MARKER index40_607; LA40_607 = LA(1); index40_607 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_607); if ( s>=0 ) { return s; } } break; case 198: { ANTLR3_UINT32 LA40_641; ANTLR3_MARKER index40_641; LA40_641 = LA(1); index40_641 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_641); if ( s>=0 ) { return s; } } break; case 199: { ANTLR3_UINT32 LA40_407; ANTLR3_MARKER index40_407; LA40_407 = LA(1); index40_407 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_407); if ( s>=0 ) { return s; } } break; case 200: { ANTLR3_UINT32 LA40_476; ANTLR3_MARKER index40_476; LA40_476 = LA(1); index40_476 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_476); if ( s>=0 ) { return s; } } break; case 201: { ANTLR3_UINT32 LA40_532; ANTLR3_MARKER index40_532; LA40_532 = LA(1); index40_532 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_532); if ( s>=0 ) { return s; } } break; case 202: { ANTLR3_UINT32 LA40_727; ANTLR3_MARKER index40_727; LA40_727 = LA(1); index40_727 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_727); if ( s>=0 ) { return s; } } break; case 203: { ANTLR3_UINT32 LA40_693; ANTLR3_MARKER index40_693; LA40_693 = LA(1); index40_693 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_693); if ( s>=0 ) { return s; } } break; case 204: { ANTLR3_UINT32 LA40_324; ANTLR3_MARKER index40_324; LA40_324 = LA(1); index40_324 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_324); if ( s>=0 ) { return s; } } break; case 205: { ANTLR3_UINT32 LA40_394; ANTLR3_MARKER index40_394; LA40_394 = LA(1); index40_394 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_394); if ( s>=0 ) { return s; } } break; case 206: { ANTLR3_UINT32 LA40_570; ANTLR3_MARKER index40_570; LA40_570 = LA(1); index40_570 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_570); if ( s>=0 ) { return s; } } break; case 207: { ANTLR3_UINT32 LA40_419; ANTLR3_MARKER index40_419; LA40_419 = LA(1); index40_419 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_419); if ( s>=0 ) { return s; } } break; case 208: { ANTLR3_UINT32 LA40_272; ANTLR3_MARKER index40_272; LA40_272 = LA(1); index40_272 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_272); if ( s>=0 ) { return s; } } break; case 209: { ANTLR3_UINT32 LA40_691; ANTLR3_MARKER index40_691; LA40_691 = LA(1); index40_691 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_691); if ( s>=0 ) { return s; } } break; case 210: { ANTLR3_UINT32 LA40_297; ANTLR3_MARKER index40_297; LA40_297 = LA(1); index40_297 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_297); if ( s>=0 ) { return s; } } break; case 211: { ANTLR3_UINT32 LA40_262; ANTLR3_MARKER index40_262; LA40_262 = LA(1); index40_262 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_262); if ( s>=0 ) { return s; } } break; case 212: { ANTLR3_UINT32 LA40_115; ANTLR3_MARKER index40_115; LA40_115 = LA(1); index40_115 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_115); if ( s>=0 ) { return s; } } break; case 213: { ANTLR3_UINT32 LA40_618; ANTLR3_MARKER index40_618; LA40_618 = LA(1); index40_618 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_618); if ( s>=0 ) { return s; } } break; case 214: { ANTLR3_UINT32 LA40_617; ANTLR3_MARKER index40_617; LA40_617 = LA(1); index40_617 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_617); if ( s>=0 ) { return s; } } break; case 215: { ANTLR3_UINT32 LA40_238; ANTLR3_MARKER index40_238; LA40_238 = LA(1); index40_238 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_238); if ( s>=0 ) { return s; } } break; case 216: { ANTLR3_UINT32 LA40_628; ANTLR3_MARKER index40_628; LA40_628 = LA(1); index40_628 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_628); if ( s>=0 ) { return s; } } break; case 217: { ANTLR3_UINT32 LA40_754; ANTLR3_MARKER index40_754; LA40_754 = LA(1); index40_754 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_754); if ( s>=0 ) { return s; } } break; case 218: { ANTLR3_UINT32 LA40_374; ANTLR3_MARKER index40_374; LA40_374 = LA(1); index40_374 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_374); if ( s>=0 ) { return s; } } break; case 219: { ANTLR3_UINT32 LA40_463; ANTLR3_MARKER index40_463; LA40_463 = LA(1); index40_463 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_463); if ( s>=0 ) { return s; } } break; case 220: { ANTLR3_UINT32 LA40_588; ANTLR3_MARKER index40_588; LA40_588 = LA(1); index40_588 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_588); if ( s>=0 ) { return s; } } break; case 221: { ANTLR3_UINT32 LA40_705; ANTLR3_MARKER index40_705; LA40_705 = LA(1); index40_705 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_705); if ( s>=0 ) { return s; } } break; case 222: { ANTLR3_UINT32 LA40_277; ANTLR3_MARKER index40_277; LA40_277 = LA(1); index40_277 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_277); if ( s>=0 ) { return s; } } break; case 223: { ANTLR3_UINT32 LA40_59; ANTLR3_MARKER index40_59; LA40_59 = LA(1); index40_59 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_59); if ( s>=0 ) { return s; } } break; case 224: { ANTLR3_UINT32 LA40_71; ANTLR3_MARKER index40_71; LA40_71 = LA(1); index40_71 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_71); if ( s>=0 ) { return s; } } break; case 225: { ANTLR3_UINT32 LA40_244; ANTLR3_MARKER index40_244; LA40_244 = LA(1); index40_244 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_244); if ( s>=0 ) { return s; } } break; case 226: { ANTLR3_UINT32 LA40_503; ANTLR3_MARKER index40_503; LA40_503 = LA(1); index40_503 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_503); if ( s>=0 ) { return s; } } break; case 227: { ANTLR3_UINT32 LA40_613; ANTLR3_MARKER index40_613; LA40_613 = LA(1); index40_613 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_613); if ( s>=0 ) { return s; } } break; case 228: { ANTLR3_UINT32 LA40_536; ANTLR3_MARKER index40_536; LA40_536 = LA(1); index40_536 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_536); if ( s>=0 ) { return s; } } break; case 229: { ANTLR3_UINT32 LA40_787; ANTLR3_MARKER index40_787; LA40_787 = LA(1); index40_787 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_787); if ( s>=0 ) { return s; } } break; case 230: { ANTLR3_UINT32 LA40_595; ANTLR3_MARKER index40_595; LA40_595 = LA(1); index40_595 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_595); if ( s>=0 ) { return s; } } break; case 231: { ANTLR3_UINT32 LA40_550; ANTLR3_MARKER index40_550; LA40_550 = LA(1); index40_550 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_550); if ( s>=0 ) { return s; } } break; case 232: { ANTLR3_UINT32 LA40_259; ANTLR3_MARKER index40_259; LA40_259 = LA(1); index40_259 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_259); if ( s>=0 ) { return s; } } break; case 233: { ANTLR3_UINT32 LA40_553; ANTLR3_MARKER index40_553; LA40_553 = LA(1); index40_553 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_553); if ( s>=0 ) { return s; } } break; case 234: { ANTLR3_UINT32 LA40_538; ANTLR3_MARKER index40_538; LA40_538 = LA(1); index40_538 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_538); if ( s>=0 ) { return s; } } break; case 235: { ANTLR3_UINT32 LA40_629; ANTLR3_MARKER index40_629; LA40_629 = LA(1); index40_629 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_629); if ( s>=0 ) { return s; } } break; case 236: { ANTLR3_UINT32 LA40_748; ANTLR3_MARKER index40_748; LA40_748 = LA(1); index40_748 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_748); if ( s>=0 ) { return s; } } break; case 237: { ANTLR3_UINT32 LA40_219; ANTLR3_MARKER index40_219; LA40_219 = LA(1); index40_219 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_219); if ( s>=0 ) { return s; } } break; case 238: { ANTLR3_UINT32 LA40_786; ANTLR3_MARKER index40_786; LA40_786 = LA(1); index40_786 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_786); if ( s>=0 ) { return s; } } break; case 239: { ANTLR3_UINT32 LA40_569; ANTLR3_MARKER index40_569; LA40_569 = LA(1); index40_569 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_569); if ( s>=0 ) { return s; } } break; case 240: { ANTLR3_UINT32 LA40_639; ANTLR3_MARKER index40_639; LA40_639 = LA(1); index40_639 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_639); if ( s>=0 ) { return s; } } break; case 241: { ANTLR3_UINT32 LA40_606; ANTLR3_MARKER index40_606; LA40_606 = LA(1); index40_606 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_606); if ( s>=0 ) { return s; } } break; case 242: { ANTLR3_UINT32 LA40_599; ANTLR3_MARKER index40_599; LA40_599 = LA(1); index40_599 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_599); if ( s>=0 ) { return s; } } break; case 243: { ANTLR3_UINT32 LA40_283; ANTLR3_MARKER index40_283; LA40_283 = LA(1); index40_283 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_283); if ( s>=0 ) { return s; } } break; case 244: { ANTLR3_UINT32 LA40_471; ANTLR3_MARKER index40_471; LA40_471 = LA(1); index40_471 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_471); if ( s>=0 ) { return s; } } break; case 245: { ANTLR3_UINT32 LA40_615; ANTLR3_MARKER index40_615; LA40_615 = LA(1); index40_615 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_615); if ( s>=0 ) { return s; } } break; case 246: { ANTLR3_UINT32 LA40_354; ANTLR3_MARKER index40_354; LA40_354 = LA(1); index40_354 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_354); if ( s>=0 ) { return s; } } break; case 247: { ANTLR3_UINT32 LA40_295; ANTLR3_MARKER index40_295; LA40_295 = LA(1); index40_295 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_295); if ( s>=0 ) { return s; } } break; case 248: { ANTLR3_UINT32 LA40_166; ANTLR3_MARKER index40_166; LA40_166 = LA(1); index40_166 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_166); if ( s>=0 ) { return s; } } break; case 249: { ANTLR3_UINT32 LA40_547; ANTLR3_MARKER index40_547; LA40_547 = LA(1); index40_547 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_547); if ( s>=0 ) { return s; } } break; case 250: { ANTLR3_UINT32 LA40_558; ANTLR3_MARKER index40_558; LA40_558 = LA(1); index40_558 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_558); if ( s>=0 ) { return s; } } break; case 251: { ANTLR3_UINT32 LA40_677; ANTLR3_MARKER index40_677; LA40_677 = LA(1); index40_677 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_677); if ( s>=0 ) { return s; } } break; case 252: { ANTLR3_UINT32 LA40_441; ANTLR3_MARKER index40_441; LA40_441 = LA(1); index40_441 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_441); if ( s>=0 ) { return s; } } break; case 253: { ANTLR3_UINT32 LA40_263; ANTLR3_MARKER index40_263; LA40_263 = LA(1); index40_263 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_263); if ( s>=0 ) { return s; } } break; case 254: { ANTLR3_UINT32 LA40_596; ANTLR3_MARKER index40_596; LA40_596 = LA(1); index40_596 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_596); if ( s>=0 ) { return s; } } break; case 255: { ANTLR3_UINT32 LA40_768; ANTLR3_MARKER index40_768; LA40_768 = LA(1); index40_768 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_768); if ( s>=0 ) { return s; } } break; case 256: { ANTLR3_UINT32 LA40_351; ANTLR3_MARKER index40_351; LA40_351 = LA(1); index40_351 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_351); if ( s>=0 ) { return s; } } break; case 257: { ANTLR3_UINT32 LA40_169; ANTLR3_MARKER index40_169; LA40_169 = LA(1); index40_169 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_169); if ( s>=0 ) { return s; } } break; case 258: { ANTLR3_UINT32 LA40_80; ANTLR3_MARKER index40_80; LA40_80 = LA(1); index40_80 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_80); if ( s>=0 ) { return s; } } break; case 259: { ANTLR3_UINT32 LA40_133; ANTLR3_MARKER index40_133; LA40_133 = LA(1); index40_133 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_133); if ( s>=0 ) { return s; } } break; case 260: { ANTLR3_UINT32 LA40_362; ANTLR3_MARKER index40_362; LA40_362 = LA(1); index40_362 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_362); if ( s>=0 ) { return s; } } break; case 261: { ANTLR3_UINT32 LA40_440; ANTLR3_MARKER index40_440; LA40_440 = LA(1); index40_440 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_440); if ( s>=0 ) { return s; } } break; case 262: { ANTLR3_UINT32 LA40_442; ANTLR3_MARKER index40_442; LA40_442 = LA(1); index40_442 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_442); if ( s>=0 ) { return s; } } break; case 263: { ANTLR3_UINT32 LA40_752; ANTLR3_MARKER index40_752; LA40_752 = LA(1); index40_752 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_752); if ( s>=0 ) { return s; } } break; case 264: { ANTLR3_UINT32 LA40_704; ANTLR3_MARKER index40_704; LA40_704 = LA(1); index40_704 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_704); if ( s>=0 ) { return s; } } break; case 265: { ANTLR3_UINT32 LA40_266; ANTLR3_MARKER index40_266; LA40_266 = LA(1); index40_266 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_266); if ( s>=0 ) { return s; } } break; case 266: { ANTLR3_UINT32 LA40_728; ANTLR3_MARKER index40_728; LA40_728 = LA(1); index40_728 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_728); if ( s>=0 ) { return s; } } break; case 267: { ANTLR3_UINT32 LA40_747; ANTLR3_MARKER index40_747; LA40_747 = LA(1); index40_747 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_747); if ( s>=0 ) { return s; } } break; case 268: { ANTLR3_UINT32 LA40_718; ANTLR3_MARKER index40_718; LA40_718 = LA(1); index40_718 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_718); if ( s>=0 ) { return s; } } break; case 269: { ANTLR3_UINT32 LA40_412; ANTLR3_MARKER index40_412; LA40_412 = LA(1); index40_412 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_412); if ( s>=0 ) { return s; } } break; case 270: { ANTLR3_UINT32 LA40_792; ANTLR3_MARKER index40_792; LA40_792 = LA(1); index40_792 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_792); if ( s>=0 ) { return s; } } break; case 271: { ANTLR3_UINT32 LA40_578; ANTLR3_MARKER index40_578; LA40_578 = LA(1); index40_578 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_578); if ( s>=0 ) { return s; } } break; case 272: { ANTLR3_UINT32 LA40_186; ANTLR3_MARKER index40_186; LA40_186 = LA(1); index40_186 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_186); if ( s>=0 ) { return s; } } break; case 273: { ANTLR3_UINT32 LA40_395; ANTLR3_MARKER index40_395; LA40_395 = LA(1); index40_395 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_395); if ( s>=0 ) { return s; } } break; case 274: { ANTLR3_UINT32 LA40_756; ANTLR3_MARKER index40_756; LA40_756 = LA(1); index40_756 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_756); if ( s>=0 ) { return s; } } break; case 275: { ANTLR3_UINT32 LA40_560; ANTLR3_MARKER index40_560; LA40_560 = LA(1); index40_560 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_560); if ( s>=0 ) { return s; } } break; case 276: { ANTLR3_UINT32 LA40_576; ANTLR3_MARKER index40_576; LA40_576 = LA(1); index40_576 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_576); if ( s>=0 ) { return s; } } break; case 277: { ANTLR3_UINT32 LA40_392; ANTLR3_MARKER index40_392; LA40_392 = LA(1); index40_392 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_392); if ( s>=0 ) { return s; } } break; case 278: { ANTLR3_UINT32 LA40_743; ANTLR3_MARKER index40_743; LA40_743 = LA(1); index40_743 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_743); if ( s>=0 ) { return s; } } break; case 279: { ANTLR3_UINT32 LA40_251; ANTLR3_MARKER index40_251; LA40_251 = LA(1); index40_251 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_251); if ( s>=0 ) { return s; } } break; case 280: { ANTLR3_UINT32 LA40_60; ANTLR3_MARKER index40_60; LA40_60 = LA(1); index40_60 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_60); if ( s>=0 ) { return s; } } break; case 281: { ANTLR3_UINT32 LA40_609; ANTLR3_MARKER index40_609; LA40_609 = LA(1); index40_609 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_609); if ( s>=0 ) { return s; } } break; case 282: { ANTLR3_UINT32 LA40_678; ANTLR3_MARKER index40_678; LA40_678 = LA(1); index40_678 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_678); if ( s>=0 ) { return s; } } break; case 283: { ANTLR3_UINT32 LA40_556; ANTLR3_MARKER index40_556; LA40_556 = LA(1); index40_556 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_556); if ( s>=0 ) { return s; } } break; case 284: { ANTLR3_UINT32 LA40_337; ANTLR3_MARKER index40_337; LA40_337 = LA(1); index40_337 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_337); if ( s>=0 ) { return s; } } break; case 285: { ANTLR3_UINT32 LA40_519; ANTLR3_MARKER index40_519; LA40_519 = LA(1); index40_519 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_519); if ( s>=0 ) { return s; } } break; case 286: { ANTLR3_UINT32 LA40_567; ANTLR3_MARKER index40_567; LA40_567 = LA(1); index40_567 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_567); if ( s>=0 ) { return s; } } break; case 287: { ANTLR3_UINT32 LA40_696; ANTLR3_MARKER index40_696; LA40_696 = LA(1); index40_696 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_696); if ( s>=0 ) { return s; } } break; case 288: { ANTLR3_UINT32 LA40_736; ANTLR3_MARKER index40_736; LA40_736 = LA(1); index40_736 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_736); if ( s>=0 ) { return s; } } break; case 289: { ANTLR3_UINT32 LA40_122; ANTLR3_MARKER index40_122; LA40_122 = LA(1); index40_122 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_122); if ( s>=0 ) { return s; } } break; case 290: { ANTLR3_UINT32 LA40_124; ANTLR3_MARKER index40_124; LA40_124 = LA(1); index40_124 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_124); if ( s>=0 ) { return s; } } break; case 291: { ANTLR3_UINT32 LA40_592; ANTLR3_MARKER index40_592; LA40_592 = LA(1); index40_592 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_592); if ( s>=0 ) { return s; } } break; case 292: { ANTLR3_UINT32 LA40_546; ANTLR3_MARKER index40_546; LA40_546 = LA(1); index40_546 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_546); if ( s>=0 ) { return s; } } break; case 293: { ANTLR3_UINT32 LA40_190; ANTLR3_MARKER index40_190; LA40_190 = LA(1); index40_190 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_190); if ( s>=0 ) { return s; } } break; case 294: { ANTLR3_UINT32 LA40_375; ANTLR3_MARKER index40_375; LA40_375 = LA(1); index40_375 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_375); if ( s>=0 ) { return s; } } break; case 295: { ANTLR3_UINT32 LA40_426; ANTLR3_MARKER index40_426; LA40_426 = LA(1); index40_426 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_426); if ( s>=0 ) { return s; } } break; case 296: { ANTLR3_UINT32 LA40_793; ANTLR3_MARKER index40_793; LA40_793 = LA(1); index40_793 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_793); if ( s>=0 ) { return s; } } break; case 297: { ANTLR3_UINT32 LA40_580; ANTLR3_MARKER index40_580; LA40_580 = LA(1); index40_580 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_580); if ( s>=0 ) { return s; } } break; case 298: { ANTLR3_UINT32 LA40_310; ANTLR3_MARKER index40_310; LA40_310 = LA(1); index40_310 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_310); if ( s>=0 ) { return s; } } break; case 299: { ANTLR3_UINT32 LA40_299; ANTLR3_MARKER index40_299; LA40_299 = LA(1); index40_299 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_299); if ( s>=0 ) { return s; } } break; case 300: { ANTLR3_UINT32 LA40_88; ANTLR3_MARKER index40_88; LA40_88 = LA(1); index40_88 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_88); if ( s>=0 ) { return s; } } break; case 301: { ANTLR3_UINT32 LA40_636; ANTLR3_MARKER index40_636; LA40_636 = LA(1); index40_636 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_636); if ( s>=0 ) { return s; } } break; case 302: { ANTLR3_UINT32 LA40_709; ANTLR3_MARKER index40_709; LA40_709 = LA(1); index40_709 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_709); if ( s>=0 ) { return s; } } break; case 303: { ANTLR3_UINT32 LA40_139; ANTLR3_MARKER index40_139; LA40_139 = LA(1); index40_139 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_139); if ( s>=0 ) { return s; } } break; case 304: { ANTLR3_UINT32 LA40_496; ANTLR3_MARKER index40_496; LA40_496 = LA(1); index40_496 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_496); if ( s>=0 ) { return s; } } break; case 305: { ANTLR3_UINT32 LA40_622; ANTLR3_MARKER index40_622; LA40_622 = LA(1); index40_622 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_622); if ( s>=0 ) { return s; } } break; case 306: { ANTLR3_UINT32 LA40_478; ANTLR3_MARKER index40_478; LA40_478 = LA(1); index40_478 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_478); if ( s>=0 ) { return s; } } break; case 307: { ANTLR3_UINT32 LA40_700; ANTLR3_MARKER index40_700; LA40_700 = LA(1); index40_700 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_700); if ( s>=0 ) { return s; } } break; case 308: { ANTLR3_UINT32 LA40_778; ANTLR3_MARKER index40_778; LA40_778 = LA(1); index40_778 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_778); if ( s>=0 ) { return s; } } break; case 309: { ANTLR3_UINT32 LA40_361; ANTLR3_MARKER index40_361; LA40_361 = LA(1); index40_361 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_361); if ( s>=0 ) { return s; } } break; case 310: { ANTLR3_UINT32 LA40_131; ANTLR3_MARKER index40_131; LA40_131 = LA(1); index40_131 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_131); if ( s>=0 ) { return s; } } break; case 311: { ANTLR3_UINT32 LA40_215; ANTLR3_MARKER index40_215; LA40_215 = LA(1); index40_215 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_215); if ( s>=0 ) { return s; } } break; case 312: { ANTLR3_UINT32 LA40_360; ANTLR3_MARKER index40_360; LA40_360 = LA(1); index40_360 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_360); if ( s>=0 ) { return s; } } break; case 313: { ANTLR3_UINT32 LA40_138; ANTLR3_MARKER index40_138; LA40_138 = LA(1); index40_138 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_138); if ( s>=0 ) { return s; } } break; case 314: { ANTLR3_UINT32 LA40_123; ANTLR3_MARKER index40_123; LA40_123 = LA(1); index40_123 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_123); if ( s>=0 ) { return s; } } break; case 315: { ANTLR3_UINT32 LA40_130; ANTLR3_MARKER index40_130; LA40_130 = LA(1); index40_130 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_130); if ( s>=0 ) { return s; } } break; case 316: { ANTLR3_UINT32 LA40_780; ANTLR3_MARKER index40_780; LA40_780 = LA(1); index40_780 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_780); if ( s>=0 ) { return s; } } break; case 317: { ANTLR3_UINT32 LA40_680; ANTLR3_MARKER index40_680; LA40_680 = LA(1); index40_680 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_680); if ( s>=0 ) { return s; } } break; case 318: { ANTLR3_UINT32 LA40_771; ANTLR3_MARKER index40_771; LA40_771 = LA(1); index40_771 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_771); if ( s>=0 ) { return s; } } break; case 319: { ANTLR3_UINT32 LA40_208; ANTLR3_MARKER index40_208; LA40_208 = LA(1); index40_208 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_208); if ( s>=0 ) { return s; } } break; case 320: { ANTLR3_UINT32 LA40_493; ANTLR3_MARKER index40_493; LA40_493 = LA(1); index40_493 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_493); if ( s>=0 ) { return s; } } break; case 321: { ANTLR3_UINT32 LA40_697; ANTLR3_MARKER index40_697; LA40_697 = LA(1); index40_697 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_697); if ( s>=0 ) { return s; } } break; case 322: { ANTLR3_UINT32 LA40_682; ANTLR3_MARKER index40_682; LA40_682 = LA(1); index40_682 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_682); if ( s>=0 ) { return s; } } break; case 323: { ANTLR3_UINT32 LA40_137; ANTLR3_MARKER index40_137; LA40_137 = LA(1); index40_137 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_137); if ( s>=0 ) { return s; } } break; case 324: { ANTLR3_UINT32 LA40_199; ANTLR3_MARKER index40_199; LA40_199 = LA(1); index40_199 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_199); if ( s>=0 ) { return s; } } break; case 325: { ANTLR3_UINT32 LA40_604; ANTLR3_MARKER index40_604; LA40_604 = LA(1); index40_604 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_604); if ( s>=0 ) { return s; } } break; case 326: { ANTLR3_UINT32 LA40_738; ANTLR3_MARKER index40_738; LA40_738 = LA(1); index40_738 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_738); if ( s>=0 ) { return s; } } break; case 327: { ANTLR3_UINT32 LA40_742; ANTLR3_MARKER index40_742; LA40_742 = LA(1); index40_742 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_742); if ( s>=0 ) { return s; } } break; case 328: { ANTLR3_UINT32 LA40_625; ANTLR3_MARKER index40_625; LA40_625 = LA(1); index40_625 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_625); if ( s>=0 ) { return s; } } break; case 329: { ANTLR3_UINT32 LA40_509; ANTLR3_MARKER index40_509; LA40_509 = LA(1); index40_509 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_509); if ( s>=0 ) { return s; } } break; case 330: { ANTLR3_UINT32 LA40_528; ANTLR3_MARKER index40_528; LA40_528 = LA(1); index40_528 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_528); if ( s>=0 ) { return s; } } break; case 331: { ANTLR3_UINT32 LA40_113; ANTLR3_MARKER index40_113; LA40_113 = LA(1); index40_113 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_113); if ( s>=0 ) { return s; } } break; case 332: { ANTLR3_UINT32 LA40_82; ANTLR3_MARKER index40_82; LA40_82 = LA(1); index40_82 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_82); if ( s>=0 ) { return s; } } break; case 333: { ANTLR3_UINT32 LA40_61; ANTLR3_MARKER index40_61; LA40_61 = LA(1); index40_61 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_61); if ( s>=0 ) { return s; } } break; case 334: { ANTLR3_UINT32 LA40_62; ANTLR3_MARKER index40_62; LA40_62 = LA(1); index40_62 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_62); if ( s>=0 ) { return s; } } break; case 335: { ANTLR3_UINT32 LA40_126; ANTLR3_MARKER index40_126; LA40_126 = LA(1); index40_126 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_126); if ( s>=0 ) { return s; } } break; case 336: { ANTLR3_UINT32 LA40_432; ANTLR3_MARKER index40_432; LA40_432 = LA(1); index40_432 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_432); if ( s>=0 ) { return s; } } break; case 337: { ANTLR3_UINT32 LA40_286; ANTLR3_MARKER index40_286; LA40_286 = LA(1); index40_286 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_286); if ( s>=0 ) { return s; } } break; case 338: { ANTLR3_UINT32 LA40_574; ANTLR3_MARKER index40_574; LA40_574 = LA(1); index40_574 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_574); if ( s>=0 ) { return s; } } break; case 339: { ANTLR3_UINT32 LA40_633; ANTLR3_MARKER index40_633; LA40_633 = LA(1); index40_633 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_633); if ( s>=0 ) { return s; } } break; case 340: { ANTLR3_UINT32 LA40_584; ANTLR3_MARKER index40_584; LA40_584 = LA(1); index40_584 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_584); if ( s>=0 ) { return s; } } break; case 341: { ANTLR3_UINT32 LA40_587; ANTLR3_MARKER index40_587; LA40_587 = LA(1); index40_587 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_587); if ( s>=0 ) { return s; } } break; case 342: { ANTLR3_UINT32 LA40_526; ANTLR3_MARKER index40_526; LA40_526 = LA(1); index40_526 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_526); if ( s>=0 ) { return s; } } break; case 343: { ANTLR3_UINT32 LA40_597; ANTLR3_MARKER index40_597; LA40_597 = LA(1); index40_597 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_597); if ( s>=0 ) { return s; } } break; case 344: { ANTLR3_UINT32 LA40_794; ANTLR3_MARKER index40_794; LA40_794 = LA(1); index40_794 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_794); if ( s>=0 ) { return s; } } break; case 345: { ANTLR3_UINT32 LA40_579; ANTLR3_MARKER index40_579; LA40_579 = LA(1); index40_579 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_579); if ( s>=0 ) { return s; } } break; case 346: { ANTLR3_UINT32 LA40_672; ANTLR3_MARKER index40_672; LA40_672 = LA(1); index40_672 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_672); if ( s>=0 ) { return s; } } break; case 347: { ANTLR3_UINT32 LA40_101; ANTLR3_MARKER index40_101; LA40_101 = LA(1); index40_101 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_101); if ( s>=0 ) { return s; } } break; case 348: { ANTLR3_UINT32 LA40_631; ANTLR3_MARKER index40_631; LA40_631 = LA(1); index40_631 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_631); if ( s>=0 ) { return s; } } break; case 349: { ANTLR3_UINT32 LA40_261; ANTLR3_MARKER index40_261; LA40_261 = LA(1); index40_261 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_261); if ( s>=0 ) { return s; } } break; case 350: { ANTLR3_UINT32 LA40_522; ANTLR3_MARKER index40_522; LA40_522 = LA(1); index40_522 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_522); if ( s>=0 ) { return s; } } break; case 351: { ANTLR3_UINT32 LA40_85; ANTLR3_MARKER index40_85; LA40_85 = LA(1); index40_85 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_85); if ( s>=0 ) { return s; } } break; case 352: { ANTLR3_UINT32 LA40_141; ANTLR3_MARKER index40_141; LA40_141 = LA(1); index40_141 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_141); if ( s>=0 ) { return s; } } break; case 353: { ANTLR3_UINT32 LA40_147; ANTLR3_MARKER index40_147; LA40_147 = LA(1); index40_147 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_147); if ( s>=0 ) { return s; } } break; case 354: { ANTLR3_UINT32 LA40_438; ANTLR3_MARKER index40_438; LA40_438 = LA(1); index40_438 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_438); if ( s>=0 ) { return s; } } break; case 355: { ANTLR3_UINT32 LA40_533; ANTLR3_MARKER index40_533; LA40_533 = LA(1); index40_533 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_533); if ( s>=0 ) { return s; } } break; case 356: { ANTLR3_UINT32 LA40_542; ANTLR3_MARKER index40_542; LA40_542 = LA(1); index40_542 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_542); if ( s>=0 ) { return s; } } break; case 357: { ANTLR3_UINT32 LA40_582; ANTLR3_MARKER index40_582; LA40_582 = LA(1); index40_582 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_582); if ( s>=0 ) { return s; } } break; case 358: { ANTLR3_UINT32 LA40_572; ANTLR3_MARKER index40_572; LA40_572 = LA(1); index40_572 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_572); if ( s>=0 ) { return s; } } break; case 359: { ANTLR3_UINT32 LA40_317; ANTLR3_MARKER index40_317; LA40_317 = LA(1); index40_317 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_317); if ( s>=0 ) { return s; } } break; case 360: { ANTLR3_UINT32 LA40_140; ANTLR3_MARKER index40_140; LA40_140 = LA(1); index40_140 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_140); if ( s>=0 ) { return s; } } break; case 361: { ANTLR3_UINT32 LA40_250; ANTLR3_MARKER index40_250; LA40_250 = LA(1); index40_250 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_250); if ( s>=0 ) { return s; } } break; case 362: { ANTLR3_UINT32 LA40_525; ANTLR3_MARKER index40_525; LA40_525 = LA(1); index40_525 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_525); if ( s>=0 ) { return s; } } break; case 363: { ANTLR3_UINT32 LA40_591; ANTLR3_MARKER index40_591; LA40_591 = LA(1); index40_591 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_591); if ( s>=0 ) { return s; } } break; case 364: { ANTLR3_UINT32 LA40_294; ANTLR3_MARKER index40_294; LA40_294 = LA(1); index40_294 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_294); if ( s>=0 ) { return s; } } break; case 365: { ANTLR3_UINT32 LA40_434; ANTLR3_MARKER index40_434; LA40_434 = LA(1); index40_434 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_434); if ( s>=0 ) { return s; } } break; case 366: { ANTLR3_UINT32 LA40_745; ANTLR3_MARKER index40_745; LA40_745 = LA(1); index40_745 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_745); if ( s>=0 ) { return s; } } break; case 367: { ANTLR3_UINT32 LA40_654; ANTLR3_MARKER index40_654; LA40_654 = LA(1); index40_654 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_654); if ( s>=0 ) { return s; } } break; case 368: { ANTLR3_UINT32 LA40_171; ANTLR3_MARKER index40_171; LA40_171 = LA(1); index40_171 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_171); if ( s>=0 ) { return s; } } break; case 369: { ANTLR3_UINT32 LA40_408; ANTLR3_MARKER index40_408; LA40_408 = LA(1); index40_408 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_408); if ( s>=0 ) { return s; } } break; case 370: { ANTLR3_UINT32 LA40_91; ANTLR3_MARKER index40_91; LA40_91 = LA(1); index40_91 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_91); if ( s>=0 ) { return s; } } break; case 371: { ANTLR3_UINT32 LA40_63; ANTLR3_MARKER index40_63; LA40_63 = LA(1); index40_63 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_63); if ( s>=0 ) { return s; } } break; case 372: { ANTLR3_UINT32 LA40_188; ANTLR3_MARKER index40_188; LA40_188 = LA(1); index40_188 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_188); if ( s>=0 ) { return s; } } break; case 373: { ANTLR3_UINT32 LA40_635; ANTLR3_MARKER index40_635; LA40_635 = LA(1); index40_635 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_635); if ( s>=0 ) { return s; } } break; case 374: { ANTLR3_UINT32 LA40_788; ANTLR3_MARKER index40_788; LA40_788 = LA(1); index40_788 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_788); if ( s>=0 ) { return s; } } break; case 375: { ANTLR3_UINT32 LA40_549; ANTLR3_MARKER index40_549; LA40_549 = LA(1); index40_549 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_549); if ( s>=0 ) { return s; } } break; case 376: { ANTLR3_UINT32 LA40_669; ANTLR3_MARKER index40_669; LA40_669 = LA(1); index40_669 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_669); if ( s>=0 ) { return s; } } break; case 377: { ANTLR3_UINT32 LA40_285; ANTLR3_MARKER index40_285; LA40_285 = LA(1); index40_285 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_285); if ( s>=0 ) { return s; } } break; case 378: { ANTLR3_UINT32 LA40_683; ANTLR3_MARKER index40_683; LA40_683 = LA(1); index40_683 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_683); if ( s>=0 ) { return s; } } break; case 379: { ANTLR3_UINT32 LA40_760; ANTLR3_MARKER index40_760; LA40_760 = LA(1); index40_760 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_760); if ( s>=0 ) { return s; } } break; case 380: { ANTLR3_UINT32 LA40_400; ANTLR3_MARKER index40_400; LA40_400 = LA(1); index40_400 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_400); if ( s>=0 ) { return s; } } break; case 381: { ANTLR3_UINT32 LA40_296; ANTLR3_MARKER index40_296; LA40_296 = LA(1); index40_296 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_296); if ( s>=0 ) { return s; } } break; case 382: { ANTLR3_UINT32 LA40_179; ANTLR3_MARKER index40_179; LA40_179 = LA(1); index40_179 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_179); if ( s>=0 ) { return s; } } break; case 383: { ANTLR3_UINT32 LA40_292; ANTLR3_MARKER index40_292; LA40_292 = LA(1); index40_292 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_292); if ( s>=0 ) { return s; } } break; case 384: { ANTLR3_UINT32 LA40_610; ANTLR3_MARKER index40_610; LA40_610 = LA(1); index40_610 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_610); if ( s>=0 ) { return s; } } break; case 385: { ANTLR3_UINT32 LA40_469; ANTLR3_MARKER index40_469; LA40_469 = LA(1); index40_469 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_469); if ( s>=0 ) { return s; } } break; case 386: { ANTLR3_UINT32 LA40_765; ANTLR3_MARKER index40_765; LA40_765 = LA(1); index40_765 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_765); if ( s>=0 ) { return s; } } break; case 387: { ANTLR3_UINT32 LA40_345; ANTLR3_MARKER index40_345; LA40_345 = LA(1); index40_345 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_345); if ( s>=0 ) { return s; } } break; case 388: { ANTLR3_UINT32 LA40_421; ANTLR3_MARKER index40_421; LA40_421 = LA(1); index40_421 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_421); if ( s>=0 ) { return s; } } break; case 389: { ANTLR3_UINT32 LA40_273; ANTLR3_MARKER index40_273; LA40_273 = LA(1); index40_273 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_273); if ( s>=0 ) { return s; } } break; case 390: { ANTLR3_UINT32 LA40_307; ANTLR3_MARKER index40_307; LA40_307 = LA(1); index40_307 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_307); if ( s>=0 ) { return s; } } break; case 391: { ANTLR3_UINT32 LA40_773; ANTLR3_MARKER index40_773; LA40_773 = LA(1); index40_773 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(username))) ) { s = 52; } else if ( ((IS_TOKEN(realm))) ) { s = 53; } else if ( ((IS_TOKEN(nonce))) ) { s = 54; } else if ( ((IS_TOKEN(response))) ) { s = 55; } else if ( ((IS_TOKEN(cnonce))) ) { s = 56; } else if ( ((IS_TOKEN(opaque))) ) { s = 57; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_773); if ( s>=0 ) { return s; } } break; case 392: { ANTLR3_UINT32 LA40_15; ANTLR3_MARKER index40_15; LA40_15 = LA(1); index40_15 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(algorithm))) ) { s = 38; } else if ( ((IS_TOKEN(qop))) ) { s = 39; } else if ( ((IS_TOKEN(nc))) ) { s = 40; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_15); if ( s>=0 ) { return s; } } break; case 393: { ANTLR3_UINT32 LA40_22; ANTLR3_MARKER index40_22; LA40_22 = LA(1); index40_22 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(algorithm))) ) { s = 38; } else if ( ((IS_TOKEN(qop))) ) { s = 39; } else if ( ((IS_TOKEN(nc))) ) { s = 40; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_22); if ( s>=0 ) { return s; } } break; case 394: { ANTLR3_UINT32 LA40_43; ANTLR3_MARKER index40_43; LA40_43 = LA(1); index40_43 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(algorithm))) ) { s = 38; } else if ( ((IS_TOKEN(qop))) ) { s = 39; } else if ( ((IS_TOKEN(nc))) ) { s = 40; } else if ( (ANTLR3_TRUE) ) { s = 41; } SEEK(index40_43); if ( s>=0 ) { return s; } } break; } if (BACKTRACKING > 0) { FAILEDFLAG = ANTLR3_TRUE; return -1; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)"498:1: dig_resp[belle_sip_header_authorization_t* header_authorization_base] : ( username | realm | nonce | digest_uri[header_authorization_base] | dresponse | algorithm | cnonce | opaque | message_qop | nonce_count | auth_param[header_authorization_base] );"; EXCEPTION->decisionNum = 40; EXCEPTION->state = _s; return -1; } /* Declare tracking structure for Cyclic DFA 40 */ static ANTLR3_CYCLIC_DFA cdfa40 = { 40, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"498:1: dig_resp[belle_sip_header_authorization_t* header_authorization_base] : ( username | realm | nonce | digest_uri[header_authorization_base] | dresponse | algorithm | cnonce | opaque | message_qop | nonce_count | auth_param[header_authorization_base] );", (CDFA_SPECIAL_FUNC) dfa40_sst, antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa40_eot, /* EOT table */ dfa40_eof, /* EOF table */ dfa40_min, /* Minimum tokens for each state */ dfa40_max, /* Maximum tokens for each state */ dfa40_accept, /* Accept table */ dfa40_special, /* Special transition states */ dfa40_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 40 * --------------------- *//** Static dfa state tables for Cyclic dfa: * 656:19: ( ( ( lws )? STAR ) | ( contact_param ( COMMA contact_param )* ) ) */ static const ANTLR3_INT32 dfa48_eot[8] = { -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa48_eof[8] = { -1, -1, -1, 7, -1, 7, -1, -1 }; static const ANTLR3_INT32 dfa48_min[8] = { 6, 6, 36, 6, -1, 6, 6, -1 }; static const ANTLR3_INT32 dfa48_max[8] = { 40, 40, 36, 40, -1, 40, 40, -1 }; static const ANTLR3_INT32 dfa48_accept[8] = { -1, -1, -1, -1, 2, -1, -1, 1 }; static const ANTLR3_INT32 dfa48_special[8] = { -1, -1, -1, -1, -1, -1, -1, -1 }; /** Used when there is no transition table entry for a particular state */ #define dfa48_T_empty NULL static const ANTLR3_INT32 dfa48_T0[] = { 4, -1, -1, -1, 4, -1, 4, 4, -1, 4, 4, 4, -1, 4, -1, 4, -1, 4, -1, -1, -1, 4, 4, -1, -1, -1, 4, -1, -1, -1, 6, 4, 5, 4, 4 }; static const ANTLR3_INT32 dfa48_T1[] = { 4, -1, 4, -1, 4, 4, 4, 4, -1, 4, -1, 4, -1, 4, -1, 4, -1, 4, -1, -1, -1, 4, 4, -1, -1, -1, 4, -1, -1, -1, 4, 4, 4, 4, 4 }; static const ANTLR3_INT32 dfa48_T2[] = { 4, -1, -1, -1, 4, 2, 4, 4, -1, 4, 4, 4, -1, 4, -1, 4, -1, 4, -1, -1, -1, 4, 4, -1, -1, -1, 4, -1, -1, -1, 1, 4, 5, 4, 4 }; static const ANTLR3_INT32 dfa48_T3[] = { 4, -1, -1, -1, 4, 2, 4, 4, -1, 4, 4, 4, -1, 4, -1, 4, -1, 4, -1, -1, -1, 4, 4, -1, -1, -1, 4, -1, -1, -1, 1, 4, 3, 4, 4 }; static const ANTLR3_INT32 dfa48_T4[] = { 6 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa48_transitions[] = { dfa48_T3, dfa48_T2, dfa48_T4, dfa48_T1, NULL, dfa48_T1, dfa48_T0, NULL }; /* Declare tracking structure for Cyclic DFA 48 */ static ANTLR3_CYCLIC_DFA cdfa48 = { 48, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"656:19: ( ( ( lws )? STAR ) | ( contact_param ( COMMA contact_param )* ) )", (CDFA_SPECIAL_FUNC) antlr3dfaspecialStateTransition, /* Default special state transition function */ antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa48_eot, /* EOT table */ dfa48_eof, /* EOF table */ dfa48_min, /* Minimum tokens for each state */ dfa48_max, /* Maximum tokens for each state */ dfa48_accept, /* Accept table */ dfa48_special, /* Special transition states */ dfa48_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 48 * --------------------- *//** Static dfa state tables for Cyclic dfa: * 679:7: ( name_addr[BELLE_SIP_HEADER_ADDRESS($header_contact::current)] | paramless_addr_spec[BELLE_SIP_HEADER_ADDRESS($header_contact::current)] ) */ static const ANTLR3_INT32 dfa49_eot[18] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa49_eof[18] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa49_min[18] = { 6, 6, 36, 6, 6, 6, 6, 6, 6, -1, 6, 6, 6, 6, 6, 6, 6, -1 }; static const ANTLR3_INT32 dfa49_max[18] = { 40, 40, 36, 40, 40, 40, 40, 40, 40, -1, 40, 40, 40, 40, 40, 40, 40, -1 }; static const ANTLR3_INT32 dfa49_accept[18] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, 2 }; static const ANTLR3_INT32 dfa49_special[18] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; /** Used when there is no transition table entry for a particular state */ #define dfa49_T_empty NULL static const ANTLR3_INT32 dfa49_T0[] = { 15, -1, 17, -1, 10, 9, 12, 11, -1, 12, -1, 12, -1, 10, -1, 9, -1, 12, -1, -1, -1, 13, 14, -1, -1, -1, 12, -1, -1, -1, 9, 12, 12, 12, 12 }; static const ANTLR3_INT32 dfa49_T1[] = { 8, -1, 17, -1, 3, 9, 5, 4, -1, 5, -1, 5, -1, 3, -1, 9, -1, 5, -1, -1, -1, 6, 7, -1, -1, -1, 5, -1, -1, -1, 9, 5, 5, 5, 5 }; static const ANTLR3_INT32 dfa49_T2[] = { 15, -1, -1, -1, 10, 2, 12, 11, -1, 12, 9, 12, -1, 10, -1, 9, -1, 12, -1, -1, -1, 13, 14, -1, -1, -1, 12, -1, -1, -1, 1, 12, 12, 12, 12 }; static const ANTLR3_INT32 dfa49_T3[] = { 8, -1, -1, -1, 3, 2, 5, 4, -1, 5, 9, 5, -1, 3, -1, 9, -1, 5, -1, -1, -1, 6, 7, -1, -1, -1, 5, -1, -1, -1, 1, 5, 5, 5, 5 }; static const ANTLR3_INT32 dfa49_T4[] = { 15, -1, -1, -1, 10, -1, 12, 11, -1, 12, 9, 12, -1, 10, -1, 9, -1, 12, -1, -1, -1, 13, 14, -1, -1, -1, 12, -1, -1, -1, 16, 12, 12, 12, 12 }; static const ANTLR3_INT32 dfa49_T5[] = { 16 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa49_transitions[] = { dfa49_T3, dfa49_T2, dfa49_T5, dfa49_T1, dfa49_T1, dfa49_T1, dfa49_T1, dfa49_T1, dfa49_T1, NULL, dfa49_T0, dfa49_T0, dfa49_T0, dfa49_T0, dfa49_T0, dfa49_T0, dfa49_T4, NULL }; /* Declare tracking structure for Cyclic DFA 49 */ static ANTLR3_CYCLIC_DFA cdfa49 = { 49, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"679:7: ( name_addr[BELLE_SIP_HEADER_ADDRESS($header_contact::current)] | paramless_addr_spec[BELLE_SIP_HEADER_ADDRESS($header_contact::current)] )", (CDFA_SPECIAL_FUNC) antlr3dfaspecialStateTransition, /* Default special state transition function */ antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa49_eot, /* EOT table */ dfa49_eof, /* EOF table */ dfa49_min, /* Minimum tokens for each state */ dfa49_max, /* Maximum tokens for each state */ dfa49_accept, /* Accept table */ dfa49_special, /* Special transition states */ dfa49_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 49 * --------------------- *//** Static dfa state tables for Cyclic dfa: * 685:5: ( ( name_addr_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)] ( SEMI ( lws )? generic_param[BELLE_SIP_PARAMETERS($ret)] ( lws )? )* ) | addr_spec_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)] ) */ static const ANTLR3_INT32 dfa56_eot[30] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa56_eof[30] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa56_min[30] = { 6, 6, 36, 6, 6, 6, 6, 6, 6, -1, -1, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa56_max[30] = { 40, 40, 36, 40, 40, 40, 40, 40, 40, -1, -1, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40 }; static const ANTLR3_INT32 dfa56_accept[30] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa56_special[30] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; /** Used when there is no transition table entry for a particular state */ #define dfa56_T_empty NULL static const ANTLR3_INT32 dfa56_T0[] = { 16, -1, 10, -1, 29, 9, 13, 12, -1, 13, -1, 13, -1, 29, -1, 9, -1, 13, -1, -1, -1, 14, 15, -1, -1, -1, 13, -1, -1, -1, 9, 13, 13, 13, 13 }; static const ANTLR3_INT32 dfa56_T1[] = { 8, -1, 10, -1, 23, 9, 5, 4, -1, 5, -1, 5, -1, 23, -1, 9, -1, 5, -1, -1, -1, 6, 7, -1, -1, -1, 5, -1, -1, -1, 9, 5, 5, 5, 5 }; static const ANTLR3_INT32 dfa56_T2[] = { 16, -1, 10, -1, 24, 9, 26, 25, -1, 28, -1, 13, -1, 24, -1, 9, -1, 13, -1, -1, -1, 14, 27, -1, -1, -1, 13, -1, -1, -1, 9, 13, 13, 13, 13 }; static const ANTLR3_INT32 dfa56_T3[] = { 8, -1, 10, -1, 18, 9, 20, 19, -1, 22, -1, 5, -1, 18, -1, 9, -1, 5, -1, -1, -1, 6, 21, -1, -1, -1, 5, -1, -1, -1, 9, 5, 5, 5, 5 }; static const ANTLR3_INT32 dfa56_T4[] = { 16, -1, -1, -1, 11, 2, 13, 12, -1, 13, 9, 13, -1, 11, -1, 9, -1, 13, -1, -1, -1, 14, 15, -1, -1, -1, 13, -1, -1, 10, 1, 13, 13, 13, 13 }; static const ANTLR3_INT32 dfa56_T5[] = { 17 }; static const ANTLR3_INT32 dfa56_T6[] = { 16, -1, -1, -1, 11, -1, 13, 12, -1, 13, 9, 13, -1, 11, -1, 9, -1, 13, -1, -1, -1, 14, 15, -1, -1, -1, 13, -1, -1, 10, 17, 13, 13, 13, 13 }; static const ANTLR3_INT32 dfa56_T7[] = { 8, -1, -1, -1, 3, 2, 5, 4, -1, 5, 9, 5, -1, 3, -1, 9, -1, 5, -1, -1, -1, 6, 7, -1, -1, -1, 5, -1, -1, 10, 1, 5, 5, 5, 5 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa56_transitions[] = { dfa56_T7, dfa56_T4, dfa56_T5, dfa56_T3, dfa56_T1, dfa56_T1, dfa56_T1, dfa56_T1, dfa56_T1, NULL, NULL, dfa56_T2, dfa56_T0, dfa56_T0, dfa56_T0, dfa56_T0, dfa56_T0, dfa56_T6, dfa56_T3, dfa56_T3, dfa56_T3, dfa56_T3, dfa56_T3, dfa56_T1, dfa56_T2, dfa56_T2, dfa56_T2, dfa56_T2, dfa56_T2, dfa56_T0 }; /* Declare tracking structure for Cyclic DFA 56 */ static ANTLR3_CYCLIC_DFA cdfa56 = { 56, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"685:5: ( ( name_addr_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)] ( SEMI ( lws )? generic_param[BELLE_SIP_PARAMETERS($ret)] ( lws )? )* ) | addr_spec_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)] )", (CDFA_SPECIAL_FUNC) antlr3dfaspecialStateTransition, /* Default special state transition function */ antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa56_eot, /* EOT table */ dfa56_eof, /* EOF table */ dfa56_min, /* Minimum tokens for each state */ dfa56_max, /* Maximum tokens for each state */ dfa56_accept, /* Accept table */ dfa56_special, /* Special transition states */ dfa56_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 56 * --------------------- *//** Static dfa state tables for Cyclic dfa: * 707:9: ( name_addr_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)] | addr_spec_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)] ) */ static const ANTLR3_INT32 dfa57_eot[30] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa57_eof[30] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa57_min[30] = { 6, 6, 36, 6, 6, 6, 6, 6, 6, -1, -1, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa57_max[30] = { 40, 40, 36, 40, 40, 40, 40, 40, 40, -1, -1, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40 }; static const ANTLR3_INT32 dfa57_accept[30] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa57_special[30] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; /** Used when there is no transition table entry for a particular state */ #define dfa57_T_empty NULL static const ANTLR3_INT32 dfa57_T0[] = { 16, -1, 10, -1, 29, 9, 13, 12, -1, 13, -1, 13, -1, 29, -1, 9, -1, 13, -1, -1, -1, 14, 15, -1, -1, -1, 13, -1, -1, -1, 9, 13, 13, 13, 13 }; static const ANTLR3_INT32 dfa57_T1[] = { 8, -1, 10, -1, 23, 9, 5, 4, -1, 5, -1, 5, -1, 23, -1, 9, -1, 5, -1, -1, -1, 6, 7, -1, -1, -1, 5, -1, -1, -1, 9, 5, 5, 5, 5 }; static const ANTLR3_INT32 dfa57_T2[] = { 16, -1, 10, -1, 24, 9, 26, 25, -1, 28, -1, 13, -1, 24, -1, 9, -1, 13, -1, -1, -1, 14, 27, -1, -1, -1, 13, -1, -1, -1, 9, 13, 13, 13, 13 }; static const ANTLR3_INT32 dfa57_T3[] = { 8, -1, 10, -1, 18, 9, 20, 19, -1, 22, -1, 5, -1, 18, -1, 9, -1, 5, -1, -1, -1, 6, 21, -1, -1, -1, 5, -1, -1, -1, 9, 5, 5, 5, 5 }; static const ANTLR3_INT32 dfa57_T4[] = { 8, -1, -1, -1, 3, 2, 5, 4, -1, 5, 9, 5, -1, 3, -1, 9, -1, 5, -1, -1, -1, 6, 7, -1, -1, -1, 5, -1, -1, 10, 1, 5, 5, 5, 5 }; static const ANTLR3_INT32 dfa57_T5[] = { 16, -1, -1, -1, 11, 2, 13, 12, -1, 13, 9, 13, -1, 11, -1, 9, -1, 13, -1, -1, -1, 14, 15, -1, -1, -1, 13, -1, -1, 10, 1, 13, 13, 13, 13 }; static const ANTLR3_INT32 dfa57_T6[] = { 17 }; static const ANTLR3_INT32 dfa57_T7[] = { 16, -1, -1, -1, 11, -1, 13, 12, -1, 13, 9, 13, -1, 11, -1, 9, -1, 13, -1, -1, -1, 14, 15, -1, -1, -1, 13, -1, -1, 10, 17, 13, 13, 13, 13 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa57_transitions[] = { dfa57_T4, dfa57_T5, dfa57_T6, dfa57_T3, dfa57_T1, dfa57_T1, dfa57_T1, dfa57_T1, dfa57_T1, NULL, NULL, dfa57_T2, dfa57_T0, dfa57_T0, dfa57_T0, dfa57_T0, dfa57_T0, dfa57_T7, dfa57_T3, dfa57_T3, dfa57_T3, dfa57_T3, dfa57_T3, dfa57_T1, dfa57_T2, dfa57_T2, dfa57_T2, dfa57_T2, dfa57_T2, dfa57_T0 }; /* Declare tracking structure for Cyclic DFA 57 */ static ANTLR3_CYCLIC_DFA cdfa57 = { 57, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"707:9: ( name_addr_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)] | addr_spec_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)] )", (CDFA_SPECIAL_FUNC) antlr3dfaspecialStateTransition, /* Default special state transition function */ antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa57_eot, /* EOT table */ dfa57_eof, /* EOF table */ dfa57_min, /* Minimum tokens for each state */ dfa57_max, /* Maximum tokens for each state */ dfa57_accept, /* Accept table */ dfa57_special, /* Special transition states */ dfa57_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 57 * --------------------- *//** Static dfa state tables for Cyclic dfa: * 722:9: ( ( fast_name_addr_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)] ( SEMI ( lws )? generic_param[BELLE_SIP_PARAMETERS($ret)] ( lws )? )* ) | fast_addr_spec_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)] ) */ static const ANTLR3_INT32 dfa61_eot[30] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa61_eof[30] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa61_min[30] = { 6, 6, 36, 6, 6, 6, 6, 6, 6, -1, -1, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa61_max[30] = { 40, 40, 36, 40, 40, 40, 40, 40, 40, -1, -1, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40 }; static const ANTLR3_INT32 dfa61_accept[30] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa61_special[30] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; /** Used when there is no transition table entry for a particular state */ #define dfa61_T_empty NULL static const ANTLR3_INT32 dfa61_T0[] = { 16, -1, 10, -1, 29, 9, 13, 12, -1, 13, -1, 13, -1, 29, -1, 9, -1, 13, -1, -1, -1, 14, 15, -1, -1, -1, 13, -1, -1, -1, 9, 13, 13, 13, 13 }; static const ANTLR3_INT32 dfa61_T1[] = { 8, -1, 10, -1, 23, 9, 5, 4, -1, 5, -1, 5, -1, 23, -1, 9, -1, 5, -1, -1, -1, 6, 7, -1, -1, -1, 5, -1, -1, -1, 9, 5, 5, 5, 5 }; static const ANTLR3_INT32 dfa61_T2[] = { 16, -1, 10, -1, 24, 9, 26, 25, -1, 28, -1, 13, -1, 24, -1, 9, -1, 13, -1, -1, -1, 14, 27, -1, -1, -1, 13, -1, -1, -1, 9, 13, 13, 13, 13 }; static const ANTLR3_INT32 dfa61_T3[] = { 8, -1, 10, -1, 18, 9, 20, 19, -1, 22, -1, 5, -1, 18, -1, 9, -1, 5, -1, -1, -1, 6, 21, -1, -1, -1, 5, -1, -1, -1, 9, 5, 5, 5, 5 }; static const ANTLR3_INT32 dfa61_T4[] = { 17 }; static const ANTLR3_INT32 dfa61_T5[] = { 16, -1, -1, -1, 11, 2, 13, 12, -1, 13, 9, 13, -1, 11, -1, 9, -1, 13, -1, -1, -1, 14, 15, -1, -1, -1, 13, -1, -1, 10, 1, 13, 13, 13, 13 }; static const ANTLR3_INT32 dfa61_T6[] = { 16, -1, -1, -1, 11, -1, 13, 12, -1, 13, 9, 13, -1, 11, -1, 9, -1, 13, -1, -1, -1, 14, 15, -1, -1, -1, 13, -1, -1, 10, 17, 13, 13, 13, 13 }; static const ANTLR3_INT32 dfa61_T7[] = { 8, -1, -1, -1, 3, 2, 5, 4, -1, 5, 9, 5, -1, 3, -1, 9, -1, 5, -1, -1, -1, 6, 7, -1, -1, -1, 5, -1, -1, 10, 1, 5, 5, 5, 5 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa61_transitions[] = { dfa61_T7, dfa61_T5, dfa61_T4, dfa61_T3, dfa61_T1, dfa61_T1, dfa61_T1, dfa61_T1, dfa61_T1, NULL, NULL, dfa61_T2, dfa61_T0, dfa61_T0, dfa61_T0, dfa61_T0, dfa61_T0, dfa61_T6, dfa61_T3, dfa61_T3, dfa61_T3, dfa61_T3, dfa61_T3, dfa61_T1, dfa61_T2, dfa61_T2, dfa61_T2, dfa61_T2, dfa61_T2, dfa61_T0 }; /* Declare tracking structure for Cyclic DFA 61 */ static ANTLR3_CYCLIC_DFA cdfa61 = { 61, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"722:9: ( ( fast_name_addr_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)] ( SEMI ( lws )? generic_param[BELLE_SIP_PARAMETERS($ret)] ( lws )? )* ) | fast_addr_spec_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)] )", (CDFA_SPECIAL_FUNC) antlr3dfaspecialStateTransition, /* Default special state transition function */ antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa61_eot, /* EOT table */ dfa61_eof, /* EOF table */ dfa61_min, /* Minimum tokens for each state */ dfa61_max, /* Maximum tokens for each state */ dfa61_accept, /* Accept table */ dfa61_special, /* Special transition states */ dfa61_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 61 * --------------------- *//** Static dfa state tables for Cyclic dfa: * 737:9: ( fast_name_addr_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)] | fast_addr_spec_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)] ) */ static const ANTLR3_INT32 dfa62_eot[30] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa62_eof[30] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa62_min[30] = { 6, 6, 36, 6, 6, 6, 6, 6, 6, -1, -1, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa62_max[30] = { 40, 40, 36, 40, 40, 40, 40, 40, 40, -1, -1, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40 }; static const ANTLR3_INT32 dfa62_accept[30] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa62_special[30] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; /** Used when there is no transition table entry for a particular state */ #define dfa62_T_empty NULL static const ANTLR3_INT32 dfa62_T0[] = { 8, -1, -1, -1, 3, 2, 5, 4, -1, 5, 9, 5, -1, 3, -1, 9, -1, 5, -1, -1, -1, 6, 7, -1, -1, -1, 5, -1, -1, 10, 1, 5, 5, 5, 5 }; static const ANTLR3_INT32 dfa62_T1[] = { 16, -1, 10, -1, 29, 9, 13, 12, -1, 13, -1, 13, -1, 29, -1, 9, -1, 13, -1, -1, -1, 14, 15, -1, -1, -1, 13, -1, -1, -1, 9, 13, 13, 13, 13 }; static const ANTLR3_INT32 dfa62_T2[] = { 8, -1, 10, -1, 23, 9, 5, 4, -1, 5, -1, 5, -1, 23, -1, 9, -1, 5, -1, -1, -1, 6, 7, -1, -1, -1, 5, -1, -1, -1, 9, 5, 5, 5, 5 }; static const ANTLR3_INT32 dfa62_T3[] = { 16, -1, 10, -1, 24, 9, 26, 25, -1, 28, -1, 13, -1, 24, -1, 9, -1, 13, -1, -1, -1, 14, 27, -1, -1, -1, 13, -1, -1, -1, 9, 13, 13, 13, 13 }; static const ANTLR3_INT32 dfa62_T4[] = { 8, -1, 10, -1, 18, 9, 20, 19, -1, 22, -1, 5, -1, 18, -1, 9, -1, 5, -1, -1, -1, 6, 21, -1, -1, -1, 5, -1, -1, -1, 9, 5, 5, 5, 5 }; static const ANTLR3_INT32 dfa62_T5[] = { 17 }; static const ANTLR3_INT32 dfa62_T6[] = { 16, -1, -1, -1, 11, 2, 13, 12, -1, 13, 9, 13, -1, 11, -1, 9, -1, 13, -1, -1, -1, 14, 15, -1, -1, -1, 13, -1, -1, 10, 1, 13, 13, 13, 13 }; static const ANTLR3_INT32 dfa62_T7[] = { 16, -1, -1, -1, 11, -1, 13, 12, -1, 13, 9, 13, -1, 11, -1, 9, -1, 13, -1, -1, -1, 14, 15, -1, -1, -1, 13, -1, -1, 10, 17, 13, 13, 13, 13 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa62_transitions[] = { dfa62_T0, dfa62_T6, dfa62_T5, dfa62_T4, dfa62_T2, dfa62_T2, dfa62_T2, dfa62_T2, dfa62_T2, NULL, NULL, dfa62_T3, dfa62_T1, dfa62_T1, dfa62_T1, dfa62_T1, dfa62_T1, dfa62_T7, dfa62_T4, dfa62_T4, dfa62_T4, dfa62_T4, dfa62_T4, dfa62_T2, dfa62_T3, dfa62_T3, dfa62_T3, dfa62_T3, dfa62_T3, dfa62_T1 }; /* Declare tracking structure for Cyclic DFA 62 */ static ANTLR3_CYCLIC_DFA cdfa62 = { 62, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"737:9: ( fast_name_addr_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)] | fast_addr_spec_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)] )", (CDFA_SPECIAL_FUNC) antlr3dfaspecialStateTransition, /* Default special state transition function */ antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa62_eot, /* EOT table */ dfa62_eof, /* EOF table */ dfa62_min, /* Minimum tokens for each state */ dfa62_max, /* Maximum tokens for each state */ dfa62_accept, /* Accept table */ dfa62_special, /* Special transition states */ dfa62_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 62 * --------------------- *//** Static dfa state tables for Cyclic dfa: * 751:10: ( ( lws )? display_name[object] )? */ static const ANTLR3_INT32 dfa64_eot[6] = { -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa64_eof[6] = { -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa64_min[6] = { 6, 6, 36, -1, -1, 6 }; static const ANTLR3_INT32 dfa64_max[6] = { 40, 40, 36, -1, -1, 40 }; static const ANTLR3_INT32 dfa64_accept[6] = { -1, -1, -1, 1, 2, -1 }; static const ANTLR3_INT32 dfa64_special[6] = { -1, -1, -1, -1, -1, -1 }; /** Used when there is no transition table entry for a particular state */ #define dfa64_T_empty NULL static const ANTLR3_INT32 dfa64_T0[] = { 5 }; static const ANTLR3_INT32 dfa64_T1[] = { 3, -1, -1, -1, 3, -1, 3, 3, -1, 3, 3, 3, -1, 3, -1, 4, -1, 3, -1, -1, -1, 3, 3, -1, -1, -1, 3, -1, -1, -1, 5, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa64_T2[] = { 3, -1, -1, -1, 3, 2, 3, 3, -1, 3, 3, 3, -1, 3, -1, 4, -1, 3, -1, -1, -1, 3, 3, -1, -1, -1, 3, -1, -1, -1, 1, 3, 3, 3, 3 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa64_transitions[] = { dfa64_T2, dfa64_T2, dfa64_T0, NULL, NULL, dfa64_T1 }; /* Declare tracking structure for Cyclic DFA 64 */ static ANTLR3_CYCLIC_DFA cdfa64 = { 64, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"751:10: ( ( lws )? display_name[object] )?", (CDFA_SPECIAL_FUNC) antlr3dfaspecialStateTransition, /* Default special state transition function */ antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa64_eot, /* EOT table */ dfa64_eof, /* EOF table */ dfa64_min, /* Minimum tokens for each state */ dfa64_max, /* Maximum tokens for each state */ dfa64_accept, /* Accept table */ dfa64_special, /* Special transition states */ dfa64_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 64 * --------------------- *//** Static dfa state tables for Cyclic dfa: * 754:10: ( ( lws )? display_name[object] )? */ static const ANTLR3_INT32 dfa66_eot[6] = { -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa66_eof[6] = { -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa66_min[6] = { 6, 6, 36, -1, -1, 6 }; static const ANTLR3_INT32 dfa66_max[6] = { 40, 40, 36, -1, -1, 40 }; static const ANTLR3_INT32 dfa66_accept[6] = { -1, -1, -1, 1, 2, -1 }; static const ANTLR3_INT32 dfa66_special[6] = { -1, -1, -1, -1, -1, -1 }; /** Used when there is no transition table entry for a particular state */ #define dfa66_T_empty NULL static const ANTLR3_INT32 dfa66_T0[] = { 3, -1, -1, -1, 3, 2, 3, 3, -1, 3, 3, 3, -1, 3, -1, 4, -1, 3, -1, -1, -1, 3, 3, -1, -1, -1, 3, -1, -1, -1, 1, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa66_T1[] = { 5 }; static const ANTLR3_INT32 dfa66_T2[] = { 3, -1, -1, -1, 3, -1, 3, 3, -1, 3, 3, 3, -1, 3, -1, 4, -1, 3, -1, -1, -1, 3, 3, -1, -1, -1, 3, -1, -1, -1, 5, 3, 3, 3, 3 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa66_transitions[] = { dfa66_T0, dfa66_T0, dfa66_T1, NULL, NULL, dfa66_T2 }; /* Declare tracking structure for Cyclic DFA 66 */ static ANTLR3_CYCLIC_DFA cdfa66 = { 66, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"754:10: ( ( lws )? display_name[object] )?", (CDFA_SPECIAL_FUNC) antlr3dfaspecialStateTransition, /* Default special state transition function */ antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa66_eot, /* EOT table */ dfa66_eof, /* EOF table */ dfa66_min, /* Minimum tokens for each state */ dfa66_max, /* Maximum tokens for each state */ dfa66_accept, /* Accept table */ dfa66_special, /* Special transition states */ dfa66_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 66 * --------------------- *//** Static dfa state tables for Cyclic dfa: * 757:10: ( ( lws )? display_name[object] )? */ static const ANTLR3_INT32 dfa68_eot[6] = { -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa68_eof[6] = { -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa68_min[6] = { 6, 6, 36, -1, -1, 6 }; static const ANTLR3_INT32 dfa68_max[6] = { 40, 40, 36, -1, -1, 40 }; static const ANTLR3_INT32 dfa68_accept[6] = { -1, -1, -1, 1, 2, -1 }; static const ANTLR3_INT32 dfa68_special[6] = { -1, -1, -1, -1, -1, -1 }; /** Used when there is no transition table entry for a particular state */ #define dfa68_T_empty NULL static const ANTLR3_INT32 dfa68_T0[] = { 3, -1, -1, -1, 3, 2, 3, 3, -1, 3, 3, 3, -1, 3, -1, 4, -1, 3, -1, -1, -1, 3, 3, -1, -1, -1, 3, -1, -1, -1, 1, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa68_T1[] = { 5 }; static const ANTLR3_INT32 dfa68_T2[] = { 3, -1, -1, -1, 3, -1, 3, 3, -1, 3, 3, 3, -1, 3, -1, 4, -1, 3, -1, -1, -1, 3, 3, -1, -1, -1, 3, -1, -1, -1, 5, 3, 3, 3, 3 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa68_transitions[] = { dfa68_T0, dfa68_T0, dfa68_T1, NULL, NULL, dfa68_T2 }; /* Declare tracking structure for Cyclic DFA 68 */ static ANTLR3_CYCLIC_DFA cdfa68 = { 68, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"757:10: ( ( lws )? display_name[object] )?", (CDFA_SPECIAL_FUNC) antlr3dfaspecialStateTransition, /* Default special state transition function */ antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa68_eot, /* EOT table */ dfa68_eof, /* EOF table */ dfa68_min, /* Minimum tokens for each state */ dfa68_max, /* Maximum tokens for each state */ dfa68_accept, /* Accept table */ dfa68_special, /* Special transition states */ dfa68_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 68 * --------------------- *//** Static dfa state tables for Cyclic dfa: * 765:11: ( uri | generic_uri ) */ static const ANTLR3_INT32 dfa72_eot[1049] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa72_eof[1049] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, 3, 3, -1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, -1, -1, 3, 3, 3, -1, 3, 3, 3, 3, 3, 3, -1, 3, 3, 3, 3, 3, 3, -1, 3, 3, 3, -1, 3, 3, 3, 3, 3, 3, 3, 3, 3, -1, -1, -1, 3, 3, 3, 3, 3, 3, 3, -1, 3, 3, 3, 3, 3, 3, 3, 3, -1, 3, 3, 3, -1, 3, 3, 3, 3, 3, 3, 3, 3, -1, 3, 3, 3, 3, 3, -1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, -1, 3, 3, 3, 3, -1, 3, -1, -1, 3, -1, 3, -1, -1, -1, -1, -1, 3, 3, 3, -1, -1, 3, 3, 3, 3, -1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, -1, 3, 3, 3, -1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, -1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, -1, 3, 3, 3, 3, -1, 3, -1, -1, 3, -1, 3, -1, 3, 3, 3, -1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, -1, 3, 3, 3, 3, 3, 3, 3, -1, 3, 3, 3, -1, 3, 3, 3, 3, 3, 3, 3, -1, 3, 3, -1, -1, 3, 3, 3, -1, 3, 3, 3, -1, 3, 3, 3, 3, 3, 3, 3, -1, 3, 3, 3, -1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, -1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, -1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, -1, 3, -1, -1, 3, -1, 3, -1, 3, 3, 3, -1, 3, 3, 3, 3, 3, 3, 3, -1, 3, 3, 3, -1, 3, 3, 3, 3, 3, 3, 3, -1, 3, 3, -1, -1, 3, 3, -1, 3, 3, 3, 3, 3, -1, 3, 3, 3, 3, 3, -1, 3, -1, -1, 3, -1, 3, -1, 3, -1, 3, -1, -1, 3, -1, 3, -1, 3, -1, -1, 3, 3, -1, -1, 3, -1, -1, 3, 3, -1, -1, -1, 3, 3, -1, -1, 3, -1, -1, -1, 3, 3, 3, -1, 3, 3, 3, 3, 3, 3, 3, -1, 3, 3, 3, -1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, -1, 3, 3, 3, 3, 3, 3, 3, -1, 3, -1, -1, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, -1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, -1, -1, 3, 3, -1, 3, -1, -1, 3, -1, 3, -1, 3, -1, 3, -1, -1, 3, -1, 3, -1, 3, -1, -1, 3, 3, -1, -1, 3, 3, 3, 3, 3, -1, 3, 3, 3, 3, 3, 3, 3, -1, 3, 3, -1, -1, 3, 3, 3, 3, -1, -1, 3, 3, 3, -1, 3, 3, -1, -1, 3, 3, -1, -1, -1, 3, -1, -1, -1, 3, 3, -1, -1, 3, 3, -1, -1, -1, 3, 3, -1, -1, 3, -1, 3, 3, 3, -1, 3, 3, 3, 3, 3, 3, 3, 3, 3, -1, -1, 3, 3, 3, 3, 3, 3, 3, 3, -1, 3, 3, 3, 3, 3, 3, 3, -1, 3, 3, 3, 3, 3, -1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, -1, 3, 3, 3, 3, 3, 3, 3, 3, 3, -1, -1, 3, 3, -1, -1, 3, 3, 3, -1, -1, 3, 3, 3, 3, -1, -1, 3, 3, 3, -1, 3, -1, -1, 3, -1, 3, -1, 3, -1, -1, 3, 3, -1, -1, 3, -1, -1, 3, 3, -1, -1, 3, -1, -1, 3, -1, -1, 3, 3, -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, 3, 3, -1, -1, 3, 3, 3, 3, -1, -1, 3, 3, 3, -1, -1, -1, 3, 3, -1, -1, 3, -1, -1, 3, 3, -1, -1, 3, 3, 3, 3, 3, 3, 3, 3, -1, 3, -1, -1, 3, -1, 3, -1, 3, 3, 3, 3, -1, 3, 3, 3, 3, 3, 3, 3, -1, 3, 3, 3, -1, 3, 3, 3, 3, 3, 3, 3, -1, 3, 3, 3, 3, 3, -1, 3, 3, 3, 3, 3, 3, 3, 3, -1, -1, 3, 3, -1, -1, 3, -1, -1, 3, 3, -1, -1, 3, -1, -1, 3, 3, 3, -1, -1, 3, 3, 3, 3, -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, 3, -1, -1, 3, -1, -1, 3, 3, -1, -1, 3, 3, 3, -1, -1, 3, 3, 3, 3, 3, 3, 3, -1, -1, 3, 3, -1, 3, -1, -1, 3, -1, 3, -1, 3, -1, 3, -1, -1, 3, -1, 3, -1, 3, 3, 3, 3, -1, 3, 3, 3, 3, 3, 3, 3, -1, 3, 3, 3, -1, -1, 3, 3, 3, -1, -1, -1, 3, 3, -1, -1, 3, -1, -1, 3, -1, -1, 3, -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, 3, -1, -1, 3, 3, -1, -1, 3, -1, -1, 3, 3, 3, -1, -1, 3, 3, -1, -1, 3, 3, 3, -1, -1, 3, 3, 3, 3, -1, -1, 3, 3, -1, 3, -1, -1, 3, -1, 3, -1, 3, 3, -1, -1, -1, 3, -1, -1, 3, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, -1, -1, 3, 3, -1, 3, -1, -1, 3, 3, -1, -1, 3, -1, -1, 3, 3, -1, -1, 3, 3, 3, -1, -1, 3, 3, 3, -1, -1, -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, -1, -1, 3, 3, 3, -1, -1, 3, 3, -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, -1, -1, 3, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa72_min[1049] = { 6, 6, -1, -1, 4, 6, 6, 6, 6, 6, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 4, 13, 4, 4, 4, 4, 4, 4, 0, 0, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 0, 0, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 13, 4, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 4, 4, 4, 0, 0, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 13, 4, 0, 0, 4, 0, 4, 0, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 0, 0, 4, 4, 4, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 8, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 0, 0, 4, 0, 4, 0, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 0, 0, 4, 4, 13, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 13, 4, 0, 0, 4, 0, 4, 0, 4, 13, 4, 0, 0, 4, 0, 4, 0, 4, 0, 0, 4, 4, 0, 0, 4, 0, 0, 4, 4, 13, 0, 0, 4, 4, 0, 0, 4, 8, 8, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 0, 0, 4, 0, 4, 0, 4, 4, 4, 4, 6, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 4, 4, 13, 4, 0, 0, 4, 0, 4, 0, 4, 13, 4, 0, 0, 4, 0, 4, 0, 4, 0, 0, 4, 4, 0, 0, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 0, 0, 4, 4, 4, 4, 0, 0, 4, 4, 4, 0, 4, 4, 0, 0, 4, 4, 8, 0, 8, 4, 13, 0, 0, 4, 4, 0, 0, 4, 4, 13, 0, 0, 4, 4, 0, 0, 4, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 4, 4, 4, 6, 6, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 4, 4, 0, 0, 4, 4, 4, 0, 0, 4, 4, 4, 4, 0, 0, 4, 4, 4, 13, 4, 0, 0, 4, 0, 4, 0, 4, 0, 0, 4, 4, 0, 0, 4, 0, 0, 4, 4, 0, 0, 4, 0, 0, 4, 0, 0, 4, 4, 0, 0, 4, 8, 8, 8, 8, 13, 0, 8, 4, 4, 0, 0, 4, 4, 4, 4, 0, 0, 4, 4, 4, 13, 0, 0, 4, 4, 0, 0, 4, 0, 0, 4, 4, 0, 0, 4, 4, 4, 4, 6, 4, 4, 4, 13, 4, 0, 0, 4, 0, 4, 0, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 4, 4, 0, 0, 4, 0, 0, 4, 4, 0, 0, 4, 0, 0, 4, 4, 4, 0, 0, 4, 4, 4, 4, 0, 4, 8, 0, 8, 8, 0, 13, 0, 8, 13, 0, 13, 13, 0, 0, 0, 4, 4, 0, 0, 4, 0, 0, 4, 4, 0, 0, 4, 4, 4, 0, 0, 4, 4, 4, 6, 6, 4, 4, 0, 0, 4, 4, 13, 4, 0, 0, 4, 0, 4, 0, 4, 13, 4, 0, 0, 4, 0, 4, 0, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 0, 0, 4, 4, 4, 0, 0, 0, 4, 4, 0, 0, 4, 0, 0, 4, 0, 0, 4, 0, 0, 4, 8, 13, 0, 0, 8, 0, 13, 8, 0, 8, 8, 13, 13, 4, 4, 0, 0, 4, 4, 0, 0, 4, 0, 0, 4, 4, 4, 0, 0, 4, 4, 0, 0, 4, 4, 4, 0, 0, 4, 4, 4, 4, 0, 0, 4, 4, 13, 4, 0, 0, 4, 0, 4, 0, 4, 4, 0, 0, 0, 4, 0, 0, 4, 4, 0, 0, 0, 8, 0, 8, 8, 0, 13, 13, 0, 8, 0, 0, 13, 13, 15, 0, 0, 4, 0, 0, 4, 4, 0, 4, 0, 0, 4, 4, 0, 0, 4, 0, 0, 4, 4, 0, 0, 4, 4, 4, 0, 0, 4, 4, 4, 0, 0, 0, 0, 4, 0, 8, 0, 0, 15, 13, 8, 0, 15, 13, 0, 0, 0, 0, 4, 0, 0, 4, 4, 4, 0, 0, 4, 4, 0, 0, 4, 0, 8, 0, 13, 13, 0, 13, 13, 0, 0, 0, 0, 4, 0, 0, 4, 4, 0, 15, 13, 15, 13, 0, 0, 0, 0, 4, 13, 0, 13, 0, 0, 33, 0, 33, 0, 0, 0 }; static const ANTLR3_INT32 dfa72_max[1049] = { 40, 40, -1, -1, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 0, 0, 40, 19, 40, 40, 40, 40, 40, 40, 0, 0, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 0, 0, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 19, 40, 0, 0, 40, 0, 40, 0, 0, 0, 0, 0, 40, 40, 40, 0, 0, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 19, 40, 0, 0, 40, 0, 40, 0, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 0, 0, 40, 40, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 0, 0, 40, 0, 40, 0, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 0, 0, 40, 40, 19, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 19, 40, 0, 0, 40, 0, 40, 0, 40, 19, 40, 0, 0, 40, 0, 40, 0, 40, 0, 0, 40, 40, 0, 0, 40, 0, 0, 40, 40, 19, 0, 0, 40, 40, 0, 0, 40, 33, 8, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 0, 0, 40, 0, 40, 0, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 0, 0, 40, 40, 19, 40, 0, 0, 40, 0, 40, 0, 40, 19, 40, 0, 0, 40, 0, 40, 0, 40, 0, 0, 40, 40, 0, 0, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 0, 0, 40, 40, 40, 40, 0, 0, 40, 40, 40, 0, 40, 40, 0, 0, 40, 40, 19, 0, 33, 40, 19, 0, 0, 40, 40, 0, 0, 40, 40, 19, 0, 0, 40, 40, 0, 0, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 0, 0, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 0, 0, 40, 40, 0, 0, 40, 40, 40, 0, 0, 40, 40, 40, 40, 0, 0, 40, 40, 40, 19, 40, 0, 0, 40, 0, 40, 0, 40, 0, 0, 40, 40, 0, 0, 40, 0, 0, 40, 40, 0, 0, 40, 0, 0, 40, 0, 0, 40, 40, 0, 0, 40, 33, 33, 33, 33, 13, 0, 33, 40, 40, 0, 0, 40, 40, 40, 40, 0, 0, 40, 40, 40, 19, 0, 0, 40, 40, 0, 0, 40, 0, 0, 40, 40, 0, 0, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 0, 0, 40, 0, 40, 0, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 0, 0, 40, 40, 0, 0, 40, 0, 0, 40, 40, 0, 0, 40, 0, 0, 40, 40, 40, 0, 0, 40, 40, 40, 40, 0, 40, 33, 0, 33, 33, 0, 13, 0, 33, 19, 0, 13, 15, 0, 0, 0, 40, 40, 0, 0, 40, 0, 0, 40, 40, 0, 0, 40, 40, 40, 0, 0, 40, 40, 40, 40, 40, 40, 40, 0, 0, 40, 40, 19, 40, 0, 0, 40, 0, 40, 0, 40, 19, 40, 0, 0, 40, 0, 40, 0, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 0, 0, 40, 40, 40, 0, 0, 0, 40, 40, 0, 0, 40, 0, 0, 40, 0, 0, 40, 0, 0, 40, 33, 19, 0, 0, 33, 0, 15, 33, 0, 33, 33, 15, 15, 40, 40, 0, 0, 40, 40, 0, 0, 40, 0, 0, 40, 40, 40, 0, 0, 40, 40, 0, 0, 40, 40, 40, 0, 0, 40, 40, 40, 40, 0, 0, 40, 40, 19, 40, 0, 0, 40, 0, 40, 0, 40, 40, 0, 0, 0, 40, 0, 0, 40, 40, 0, 0, 0, 33, 0, 33, 33, 0, 15, 13, 0, 33, 0, 0, 15, 13, 15, 0, 0, 40, 0, 0, 40, 40, 0, 40, 0, 0, 40, 40, 0, 0, 40, 0, 0, 40, 40, 0, 0, 40, 40, 40, 0, 0, 40, 40, 40, 0, 0, 0, 0, 40, 0, 33, 0, 0, 15, 15, 33, 0, 15, 15, 0, 0, 0, 0, 40, 0, 0, 40, 40, 40, 0, 0, 40, 40, 0, 0, 40, 0, 33, 0, 15, 13, 0, 15, 13, 0, 0, 0, 0, 40, 0, 0, 40, 40, 0, 15, 33, 15, 33, 0, 0, 0, 0, 40, 33, 0, 33, 0, 0, 33, 0, 33, 0, 0, 0 }; static const ANTLR3_INT32 dfa72_accept[1049] = { -1, -1, 1, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa72_special[1049] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 8, 121, -1, -1, -1, -1, -1, -1, -1, -1, 154, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 10, 122, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 95, 115, -1, 145, -1, 96, 11, 123, 12, 124, -1, -1, -1, 153, 13, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 68, 103, -1, 128, -1, 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 97, 116, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 85, 112, -1, 138, -1, 86, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 69, 104, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 177, 249, -1, 51, -1, 178, -1, -1, -1, 147, 236, -1, 45, -1, 148, -1, 98, 117, -1, -1, 143, 99, -1, 155, 14, -1, -1, -1, 168, 174, -1, -1, 55, 169, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 78, 125, -1, 239, -1, 79, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 87, 113, -1, -1, -1, -1, 156, 40, -1, 119, -1, 157, -1, -1, -1, 130, 240, -1, 63, -1, 131, -1, 71, 105, -1, -1, 129, 72, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 250, -1, -1, -1, -1, 149, 237, -1, -1, -1, 84, -1, -1, 170, 175, -1, -1, -1, 193, -1, -1, -1, 258, 15, -1, -1, 91, 259, -1, -1, -1, 221, 227, -1, -1, 67, 222, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 80, 126, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 88, 114, -1, -1, 139, 89, -1, -1, -1, 158, 41, -1, -1, -1, -1, 132, 241, -1, -1, -1, -1, -1, 230, 5, -1, 61, -1, 231, -1, 180, 251, -1, -1, 49, 181, -1, 150, 238, -1, -1, 43, 151, -1, 144, 100, -1, 171, 176, -1, -1, 53, 172, -1, -1, -1, -1, -1, -1, 198, -1, -1, -1, 260, 16, -1, -1, -1, -1, 223, 228, -1, -1, -1, -1, 24, 34, -1, -1, 107, 25, -1, 81, 127, -1, -1, 247, 82, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 162, 183, -1, 52, -1, 163, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 159, 42, -1, -1, 118, 160, -1, 133, 242, -1, -1, 77, 134, -1, 137, 73, -1, -1, -1, 232, 6, -1, -1, -1, -1, 54, -1, -1, 192, -1, -1, 199, -1, 200, -1, -1, 201, -1, -1, 204, 261, 17, -1, -1, 102, 262, -1, 224, 229, -1, -1, 66, 225, -1, -1, -1, 26, 35, -1, -1, -1, -1, -1, -1, -1, 164, 184, -1, -1, -1, -1, 252, 1, -1, 101, -1, 253, -1, -1, -1, 186, 243, -1, 65, -1, 187, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 140, 90, -1, -1, -1, 37, 233, 7, -1, -1, 62, 234, -1, 50, 182, -1, 44, 152, -1, 57, 173, -1, -1, -1, 206, 217, -1, 216, -1, -1, 196, -1, -1, -1, -1, -1, -1, 27, 36, -1, -1, 111, 28, -1, 246, 83, -1, -1, -1, 165, 185, -1, -1, 58, 166, -1, -1, -1, 254, 2, -1, -1, -1, -1, 188, 244, -1, -1, -1, -1, 18, 31, -1, 106, -1, 19, -1, -1, 47, 120, 161, -1, 74, 135, -1, -1, 142, 136, 248, -1, 207, -1, -1, 215, -1, -1, 202, -1, 219, 203, -1, -1, -1, 94, 263, -1, 76, 226, -1, -1, 141, -1, 255, 3, -1, -1, 93, 256, -1, 189, 245, -1, -1, 64, 190, -1, -1, -1, 20, 32, -1, -1, -1, 60, 30, 59, 235, -1, 197, -1, 218, 194, -1, -1, -1, 209, -1, -1, 39, 4, 110, 29, -1, 56, 167, -1, -1, -1, 21, 33, -1, -1, 109, 22, -1, 146, -1, 210, -1, -1, 213, -1, -1, 46, 264, 92, 257, -1, 75, 191, -1, -1, 205, -1, -1, -1, -1, 38, 0, 108, 23, -1, -1, 208, -1, 220, 48, -1, 214, -1, 211, 195, 212 }; /** Used when there is no transition table entry for a particular state */ #define dfa72_T_empty NULL static const ANTLR3_INT32 dfa72_T0[] = { 3, 3, -1, -1, 3, 3, 402, 3, 3, 994, 3, 3, -1, 3, 3, 402, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T1[] = { -1 }; static const ANTLR3_INT32 dfa72_T2[] = { 47, 42, -1, -1, 41, 51, 43, 3, 45, 44, 50, 45, -1, 45, 48, 43, -1, -1, -1, 45, -1, -1, -1, 46, 49, 53, 3, -1, 45, -1, 52, 98, 3, 45, 45, 45, 45 }; static const ANTLR3_INT32 dfa72_T3[] = { 568, 442, -1, -1, 3, 572, 564, 3, 566, 565, 571, 566, -1, 566, 569, 564, -1, -1, -1, 566, -1, -1, -1, 567, 570, 3, 3, -1, 566, -1, 3, 3, 3, 566, 566, 566, 566 }; static const ANTLR3_INT32 dfa72_T4[] = { 3, 3, -1, -1, 3, 3, 332, 3, 3, 850, 3, 3, -1, 3, 3, 332, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T5[] = { 3, 3, -1, -1, 3, 3, 332, 3, 3, 980, 3, 3, -1, 3, 3, 332, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T6[] = { 397, 264, -1, -1, 3, 401, 393, 3, 395, 394, 400, 395, -1, 395, 398, 393, -1, -1, -1, 395, -1, -1, -1, 396, 399, 3, 3, -1, 395, -1, 3, 3, 3, 395, 395, 395, 395 }; static const ANTLR3_INT32 dfa72_T7[] = { 3, 3, -1, -1, 3, 3, 633, 3, 506, 634, 3, 354, -1, 3, 3, 633, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T8[] = { 322, -1, -1, -1, -1, -1, 322 }; static const ANTLR3_INT32 dfa72_T9[] = { 163, -1, -1, -1, -1, -1, 163 }; static const ANTLR3_INT32 dfa72_T10[] = { 334, -1, -1, -1, -1, -1, 334 }; static const ANTLR3_INT32 dfa72_T11[] = { 427, -1, -1, -1, -1, -1, 427 }; static const ANTLR3_INT32 dfa72_T12[] = { 464, -1, -1, -1, -1, -1, 464 }; static const ANTLR3_INT32 dfa72_T13[] = { 473, -1, -1, -1, -1, -1, 473 }; static const ANTLR3_INT32 dfa72_T14[] = { 1043, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1044 }; static const ANTLR3_INT32 dfa72_T15[] = { 447, 442, -1, -1, 441, 451, 443, 3, 445, 444, 450, 445, -1, 445, 448, 443, -1, -1, -1, 445, -1, -1, -1, 446, 449, 86, 3, -1, 445, -1, 452, 453, 3, 445, 445, 445, 445 }; static const ANTLR3_INT32 dfa72_T16[] = { 58, 23, -1, -1, 3, 62, 54, 3, 56, 55, 61, 56, -1, 56, 59, 54, -1, -1, -1, 56, -1, -1, -1, 57, 60, 3, 3, -1, 56, -1, 3, 3, 3, 56, 56, 56, 56 }; static const ANTLR3_INT32 dfa72_T17[] = { 78, 153, -1, -1, 152, 84, 161, 3, 76, 162, 83, 76, -1, 76, 81, 161, -1, -1, -1, 76, -1, -1, -1, 77, 82, 86, 3, -1, 76, -1, 85, 158, 3, 76, 76, 76, 76 }; static const ANTLR3_INT32 dfa72_T18[] = { 3, 3, -1, -1, 3, 3, 573, 3, 3, 574, 3, 3, -1, 3, 3, 573, -1, -1, -1, 3, 258, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T19[] = { 779, -1, -1, -1, -1, 661, -1, 781, -1, -1, -1, 661, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 942 }; static const ANTLR3_INT32 dfa72_T20[] = { 3, 3, -1, -1, 3, 3, 499, 3, 3, 762, 3, 3, -1, 3, 3, 499, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T21[] = { 3, 3, -1, -1, 3, 3, 553, 3, 3, 803, 3, 3, -1, 3, 3, 553, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T22[] = { 3, 3, -1, -1, 3, 3, 355, 3, 357, 356, 3, 354, -1, 3, 3, 355, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T23[] = { 3, 3, -1, -1, 3, 3, 685, 3, 559, 686, 3, 428, -1, 3, 3, 685, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T24[] = { 3, 3, -1, -1, 3, 3, 241, 3, 243, 242, 3, 3, -1, 3, 3, 241, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T25[] = { 3, 3, -1, -1, 3, 3, 553, 3, 3, 955, 3, 3, -1, 3, 3, 553, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T26[] = { 3, 3, -1, -1, 3, 3, 793, 3, 672, 794, 3, 3, -1, 3, 3, 793, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T27[] = { 3, 3, -1, -1, 3, 3, 475, 3, 477, 476, 3, 474, -1, 3, 3, 475, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T28[] = { 208, 80, -1, -1, 79, 212, 204, 3, 206, 205, 211, 206, -1, 206, 209, 204, -1, -1, -1, 206, -1, -1, -1, 207, 210, 53, 3, -1, 206, -1, 213, 98, 3, 206, 206, 206, 206 }; static const ANTLR3_INT32 dfa72_T29[] = { 3, 3, -1, -1, 3, 3, 553, 3, 3, 1019, 3, 3, -1, 3, 3, 553, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T30[] = { 722, 588, -1, -1, 3, 726, 718, 3, 720, 719, 725, 720, -1, 720, 723, 718, -1, -1, -1, 720, -1, -1, -1, 721, 724, 3, 3, -1, 720, -1, 3, 3, 3, 720, 720, 720, 720 }; static const ANTLR3_INT32 dfa72_T31[] = { 265, 264, -1, -1, 263, 269, 259, 3, 261, 260, 268, 261, -1, 261, 266, 259, -1, -1, -1, 261, -1, -1, -1, 262, 267, 86, 3, -1, 261, -1, 150, 151, 3, 261, 261, 261, 261 }; static const ANTLR3_INT32 dfa72_T32[] = { 3, 3, -1, -1, 3, 3, 820, 3, 817, 818, 3, 819, -1, 3, 3, 820, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T33[] = { 3, 3, -1, -1, 3, 3, 960, 3, 906, 961, 3, 814, -1, 3, 3, 960, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T34[] = { 3, 3, -1, -1, 3, 3, 854, 3, 765, 855, 3, 623, -1, 3, 3, 854, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T35[] = { 3, 3, -1, -1, 3, 3, 963, 3, 817, 962, 3, 964, -1, 3, 3, 963, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T36[] = { 548, 421, -1, -1, 3, 552, 544, 3, 546, 545, 551, 546, -1, 546, 549, 544, -1, -1, -1, 546, -1, -1, -1, 547, 550, 3, 3, -1, 546, -1, 3, 3, 3, 546, 546, 546, 546 }; static const ANTLR3_INT32 dfa72_T37[] = { 593, 588, -1, -1, 587, 597, 589, 3, 591, 590, 596, 591, -1, 591, 594, 589, -1, -1, -1, 591, -1, -1, -1, 592, 595, 86, 3, -1, 591, -1, 598, 453, 3, 591, 591, 591, 591 }; static const ANTLR3_INT32 dfa72_T38[] = { 3, 3, -1, -1, 3, 3, 624, 3, 626, 625, 3, 623, -1, 3, 3, 624, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T39[] = { 286, 153, -1, -1, 3, 290, 282, 3, 284, 283, 289, 284, -1, 284, 287, 282, -1, -1, -1, 284, -1, -1, -1, 285, 288, 3, 3, -1, 284, -1, 3, 3, 3, 284, 284, 284, 284 }; static const ANTLR3_INT32 dfa72_T40[] = { 3, 3, -1, -1, 3, 3, 897, 3, 811, 898, 3, 698, -1, 3, 3, 897, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T41[] = { 3, 3, -1, -1, 3, 3, 638, 3, 366, 639, 3, 363, -1, 3, 3, 638, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T42[] = { 659, -1, -1, -1, -1, 658, -1, -1, -1, -1, -1, 661, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 660 }; static const ANTLR3_INT32 dfa72_T43[] = { 3, 3, -1, -1, 3, 3, 1022, 3, 817, 1021, 3, 1023, -1, 3, 3, 1022, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T44[] = { 3, 3, -1, -1, 3, 3, 727, 3, 3, 728, 3, 3, -1, 3, 3, 727, -1, -1, -1, 3, 258, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T45[] = { 1047 }; static const ANTLR3_INT32 dfa72_T46[] = { 3, 3, -1, -1, 3, 3, 484, 3, 339, 485, 3, 197, -1, 3, 3, 484, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T47[] = { 33, 23, -1, -1, 22, 31, 37, 3, 30, 38, 33, 30, -1, 30, 33, 37, -1, -1, -1, 30, -1, -1, -1, 27, 33, 32, 3, -1, 30, -1, 28, 33, 3, 30, 30, 30, 30 }; static const ANTLR3_INT32 dfa72_T48[] = { 3, 3, -1, -1, 3, 3, 402, 3, 3, 663, 3, 3, -1, 3, 3, 402, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T49[] = { 276, 275, -1, -1, 274, 280, 270, 3, 272, 271, 279, 272, -1, 272, 277, 270, -1, -1, -1, 272, -1, -1, -1, 273, 278, 86, 3, -1, 272, -1, 281, 151, 3, 272, 272, 272, 272 }; static const ANTLR3_INT32 dfa72_T50[] = { 327, 187, -1, -1, 3, 331, 323, 3, 325, 324, 330, 325, -1, 325, 328, 323, -1, -1, -1, 325, -1, -1, -1, 326, 329, 3, 3, -1, 325, -1, 3, 3, 3, 325, 325, 325, 325 }; static const ANTLR3_INT32 dfa72_T51[] = { 3, 3, -1, -1, 3, 3, 332, 3, 3, 616, 3, 3, -1, 3, 3, 332, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T52[] = { 422, 421, -1, -1, 420, 426, 416, 3, 418, 417, 425, 418, -1, 418, 423, 416, -1, -1, -1, 418, -1, -1, -1, 419, 424, 86, 3, -1, 418, -1, 281, 151, 3, 418, 418, 418, 418 }; static const ANTLR3_INT32 dfa72_T53[] = { 2, -1, 4, -1, 5, -1, 7, 6, -1, 9, -1, 2, -1, 5, -1, -1, -1, 2, -1, -1, -1, 2, 8, -1, -1, -1, 2, -1, -1, -1, -1, 2, 2, 2, 2 }; static const ANTLR3_INT32 dfa72_T54[] = { 869, -1, -1, -1, -1, 985, -1, 776, -1, -1, -1, 938, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 986 }; static const ANTLR3_INT32 dfa72_T55[] = { 302, -1, -1, -1, -1, -1, 302 }; static const ANTLR3_INT32 dfa72_T56[] = { 472, -1, -1, -1, -1, -1, 472 }; static const ANTLR3_INT32 dfa72_T57[] = { 481, -1, -1, -1, -1, -1, 481 }; static const ANTLR3_INT32 dfa72_T58[] = { 555, -1, -1, -1, -1, -1, 555 }; static const ANTLR3_INT32 dfa72_T59[] = { 609, -1, -1, -1, -1, -1, 609 }; static const ANTLR3_INT32 dfa72_T60[] = { 615, -1, -1, -1, -1, -1, 615 }; static const ANTLR3_INT32 dfa72_T61[] = { 3, 3, -1, -1, 3, 3, 320, 3, 3, 614, 3, 3, -1, 3, 3, 320, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T62[] = { 3, 3, -1, -1, 3, 3, 1006, 3, 976, 1007, 3, 915, -1, 3, 3, 1006, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T63[] = { 3, 3, -1, -1, 3, 3, 921, 3, 918, 919, 3, 920, -1, 3, 3, 921, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T64[] = { 91, 42, -1, -1, 3, 95, 87, 3, 89, 88, 94, 89, -1, 89, 92, 87, -1, -1, -1, 89, -1, -1, -1, 90, 93, 3, 3, -1, 89, -1, 3, 3, 3, 89, 89, 89, 89 }; static const ANTLR3_INT32 dfa72_T65[] = { 3, 3, -1, -1, 3, 3, 320, 3, 3, 849, 3, 3, -1, 3, 3, 320, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T66[] = { 3, 3, -1, -1, 3, 3, 1009, 3, 918, 1008, 3, 1010, -1, 3, 3, 1009, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T67[] = { 522, -1, -1, -1, -1, 774, -1, 776, -1, -1, -1, 657, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 775 }; static const ANTLR3_INT32 dfa72_T68[] = { 3, 3, -1, -1, 3, 3, 320, 3, 3, 979, 3, 3, -1, 3, 3, 320, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T69[] = { 3, 3, -1, -1, 3, 3, 967, 3, 912, 968, 3, 823, -1, 3, 3, 967, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T70[] = { 3, 3, -1, -1, 3, 3, 484, 3, 339, 485, 3, 3, -1, 3, 3, 484, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T71[] = { 3, 3, -1, -1, 3, 3, 1036, 3, 918, 1035, 3, 1037, -1, 3, 3, 1036, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T72[] = { 3, 3, -1, -1, 3, 3, 96, 3, 3, 97, 3, 3, -1, 3, 3, 96, -1, -1, -1, 3, 2, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T73[] = { 195, 187, -1, -1, 186, 193, 188, 3, 190, 189, 195, 190, -1, 190, 195, 188, -1, -1, -1, 190, -1, -1, -1, 191, 195, 194, 3, -1, 190, -1, 192, 195, 3, 190, 190, 190, 190 }; static const ANTLR3_INT32 dfa72_T74[] = { 522, -1, -1, -1, -1, 390, -1, -1, -1, -1, -1, 390, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 523 }; static const ANTLR3_INT32 dfa72_T75[] = { 3, 3, -1, -1, 3, 3, 383, 3, 386, 384, 3, 385, -1, 3, 3, 383, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T76[] = { 3, 3, -1, -1, 3, 3, 631, 3, 357, 632, 3, 354, -1, 3, 3, 631, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T77[] = { 779, -1, -1, -1, -1, 943, -1, 776, -1, -1, -1, 878, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 944 }; static const ANTLR3_INT32 dfa72_T78[] = { 3, 3, -1, -1, 3, 3, 553, 3, 3, 799, 3, 3, -1, 3, 3, 553, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T79[] = { 3, 3, -1, -1, 3, 3, 604, 3, 462, 605, 3, 304, -1, 3, 3, 604, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T80[] = { 3, 3, -1, -1, 3, 3, 236, 3, 3, 237, 3, 3, -1, 3, 3, 236, -1, -1, -1, 3, 2, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T81[] = { 3, 3, -1, -1, 3, 3, 786, 3, 666, 787, 3, 3, -1, 3, 3, 786, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T82[] = { 3, 3, -1, -1, 3, 3, 753, 3, 619, 754, 3, 3, -1, 3, 3, 753, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T83[] = { 3, 3, -1, -1, 3, 3, 434, 3, 431, 432, 3, 433, -1, 3, 3, 434, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T84[] = { 710, 577, -1, -1, 3, 714, 706, 3, 708, 707, 713, 708, -1, 708, 711, 706, -1, -1, -1, 708, -1, -1, -1, 709, 712, 3, 3, -1, 708, -1, 3, 3, 3, 708, 708, 708, 708 }; static const ANTLR3_INT32 dfa72_T85[] = { 3, 3, -1, -1, 3, 3, 466, 3, 468, 467, 3, 465, -1, 3, 3, 466, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T86[] = { 168, 80, -1, -1, 3, 172, 164, 3, 166, 165, 171, 166, -1, 166, 169, 164, -1, -1, -1, 166, -1, -1, -1, 167, 170, 3, 3, -1, 166, -1, 3, 3, 3, 166, 166, 166, 166 }; static const ANTLR3_INT32 dfa72_T87[] = { 145, 144, -1, -1, 143, 149, 139, 3, 141, 140, 148, 141, -1, 141, 146, 139, -1, -1, -1, 141, -1, -1, -1, 142, 147, 86, 3, -1, 141, -1, 150, 151, 3, 141, 141, 141, 141 }; static const ANTLR3_INT32 dfa72_T88[] = { 3, 3, -1, -1, 3, 3, 648, 3, 386, 649, 3, 385, -1, 3, 3, 648, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T89[] = { 3, 3, -1, -1, 3, 3, 688, 3, 431, 687, 3, 689, -1, 3, 3, 688, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T90[] = { 3, 3, -1, -1, 3, 3, 604, 3, 462, 605, 3, 3, -1, 3, 3, 604, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T91[] = { 3, 3, -1, -1, 3, 3, 891, 3, 431, 890, 3, 892, -1, 3, 3, 891, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T92[] = { 1040, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1041 }; static const ANTLR3_INT32 dfa72_T93[] = { 582, 577, -1, -1, 576, 586, 578, 3, 580, 579, 585, 580, -1, 580, 583, 578, -1, -1, -1, 580, -1, -1, -1, 581, 584, 86, 3, -1, 580, -1, 452, 453, 3, 580, 580, 580, 580 }; static const ANTLR3_INT32 dfa72_T94[] = { 33, 23, -1, -1, 22, 31, 134, 3, 70, 135, 33, 26, -1, 30, 33, 134, -1, -1, -1, 30, -1, -1, -1, 27, 33, 32, 3, -1, 30, -1, 28, 33, 3, 30, 30, 30, 30 }; static const ANTLR3_INT32 dfa72_T95[] = { 33, 23, -1, -1, 22, 31, 129, 3, 29, 130, 33, 26, -1, 30, 33, 129, -1, -1, -1, 30, -1, -1, -1, 27, 33, 32, 3, -1, 30, -1, 28, 33, 3, 30, 30, 30, 30 }; static const ANTLR3_INT32 dfa72_T96[] = { 3, 3, -1, -1, 3, 3, 173, 3, 3, 174, 3, 3, -1, 3, 3, 173, -1, -1, -1, 3, 2, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T97[] = { 3, 3, -1, -1, 3, 3, 715, 3, 3, 716, 3, 3, -1, 3, 3, 715, -1, -1, -1, 3, 258, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T98[] = { 869, -1, -1, -1, -1, 1012, -1, 776, -1, -1, -1, 938, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1013 }; static const ANTLR3_INT32 dfa72_T99[] = { 3, 3, -1, -1, 3, 3, 852, 3, 626, 853, 3, 623, -1, 3, 3, 852, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T100[] = { 3, 3, -1, -1, 3, 3, 373, 3, 243, 374, 3, 122, -1, 3, 3, 373, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T101[] = { 3, 3, -1, -1, 3, 3, 885, 3, 802, 886, 3, 3, -1, 3, 3, 885, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T102[] = { 33, 23, -1, -1, 22, 31, 68, 3, 70, 69, 33, 30, -1, 30, 33, 68, -1, -1, -1, 30, -1, -1, -1, 27, 33, 32, 3, -1, 30, -1, 28, 33, 3, 30, 30, 30, 30 }; static const ANTLR3_INT32 dfa72_T103[] = { 782 }; static const ANTLR3_INT32 dfa72_T104[] = { 3, 3, -1, -1, 3, 3, 536, 3, 539, 537, 3, 538, -1, 3, 3, 536, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T105[] = { 522, -1, -1, -1, -1, 872, -1, 776, -1, -1, -1, 657, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 873 }; static const ANTLR3_INT32 dfa72_T106[] = { 835, 731, -1, -1, 3, 839, 831, 3, 833, 832, 838, 833, -1, 833, 836, 831, -1, -1, -1, 833, -1, -1, -1, 834, 837, 3, 3, -1, 833, -1, 3, 3, 3, 833, 833, 833, 833 }; static const ANTLR3_INT32 dfa72_T107[] = { 3, 3, -1, -1, 3, 3, 320, 3, 3, 610, 3, 3, -1, 3, 3, 320, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T108[] = { 779, -1, -1, -1, -1, 990, -1, 776, -1, -1, -1, 878, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 991 }; static const ANTLR3_INT32 dfa72_T109[] = { 736, 731, -1, -1, 730, 740, 732, 3, 734, 733, 739, 734, -1, 734, 737, 732, -1, -1, -1, 734, -1, -1, -1, 735, 738, 86, 3, -1, 734, -1, 598, 453, 3, 734, 734, 734, 734 }; static const ANTLR3_INT32 dfa72_T110[] = { 3, 3, -1, -1, 3, 3, 791, 3, 539, 792, 3, 538, -1, 3, 3, 791, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T111[] = { 3, 3, -1, -1, 3, 3, 840, 3, 3, 841, 3, 3, -1, 3, 3, 840, -1, -1, -1, 3, 258, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T112[] = { 231, 112, -1, -1, 3, 235, 227, 3, 229, 228, 234, 229, -1, 229, 232, 227, -1, -1, -1, 229, -1, -1, -1, 230, 233, 3, 3, -1, 229, -1, 3, 3, 3, 229, 229, 229, 229 }; static const ANTLR3_INT32 dfa72_T113[] = { 3, 3, -1, -1, 3, 3, 373, 3, 243, 374, 3, 3, -1, 3, 3, 373, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T114[] = { 3, -1, -1, -1, 3, 3, 3, 806, -1, 3, -1, 3, -1, 805, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T115[] = { 17, 3, -1, -1, 3, 14, 10, -1, 12, 11, 20, 12, -1, 12, 18, 10, -1, -1, -1, 12, 2, -1, -1, 13, 19, 16, -1, -1, 12, -1, 15, 21, -1, 12, 12, 12, 12 }; static const ANTLR3_INT32 dfa72_T116[] = { 877, -1, -1, -1, -1, -1, 878 }; static const ANTLR3_INT32 dfa72_T117[] = { 937, -1, -1, -1, -1, -1, 938 }; static const ANTLR3_INT32 dfa72_T118[] = { 78, 80, -1, -1, 79, 84, 74, 3, 76, 75, 83, 76, -1, 76, 81, 74, -1, -1, -1, 76, 3, -1, -1, 77, 82, 86, 3, -1, 76, -1, 85, 73, 3, 76, 76, 76, 76 }; static const ANTLR3_INT32 dfa72_T119[] = { 869, -1, -1, -1, -1, 938, -1, 776, -1, -1, -1, 938, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1028 }; static const ANTLR3_INT32 dfa72_T120[] = { 1045, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1046 }; static const ANTLR3_INT32 dfa72_T121[] = { 219, 101, -1, -1, 3, 223, 215, 3, 217, 216, 222, 217, -1, 217, 220, 215, -1, -1, -1, 217, -1, -1, -1, 218, 221, 3, 3, -1, 217, -1, 3, 3, 3, 217, 217, 217, 217 }; static const ANTLR3_INT32 dfa72_T122[] = { 3, 3, -1, -1, 3, 3, 518, 3, 520, 519, 3, 3, -1, 3, 3, 518, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T123[] = { 3, 3, -1, -1, 3, 3, 746, 3, 613, 747, 3, 3, -1, 3, 3, 746, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T124[] = { 522, -1, -1, -1, -1, 657, -1, 776, -1, -1, -1, 657, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 939 }; static const ANTLR3_INT32 dfa72_T125[] = { 3, 3, -1, -1, 3, 3, 369, 3, 366, 367, 3, 368, -1, 3, 3, 369, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T126[] = { 779, -1, -1, -1, -1, 878, -1, 776, -1, -1, -1, 878, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1016 }; static const ANTLR3_INT32 dfa72_T127[] = { 3, 3, -1, -1, 3, 3, 863, 3, 366, 862, 3, 864, -1, 3, 3, 863, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T128[] = { 78, 153, -1, -1, 152, 84, 454, 3, 298, 455, 83, 156, -1, 76, 81, 454, -1, -1, -1, 76, -1, -1, -1, 77, 82, 86, 3, -1, 76, -1, 85, 158, 3, 76, 76, 76, 76 }; static const ANTLR3_INT32 dfa72_T129[] = { 3, 3, -1, -1, 3, 3, 643, 3, 366, 642, 3, 644, -1, 3, 3, 643, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T130[] = { 246, -1, -1, -1, -1, -1, 246 }; static const ANTLR3_INT32 dfa72_T131[] = { 382, -1, -1, -1, -1, -1, 382 }; static const ANTLR3_INT32 dfa72_T132[] = { 813, -1, -1, -1, -1, -1, 813 }; static const ANTLR3_INT32 dfa72_T133[] = { 822, -1, -1, -1, -1, -1, 822 }; static const ANTLR3_INT32 dfa72_T134[] = { 675, -1, -1, -1, -1, -1, 675 }; static const ANTLR3_INT32 dfa72_T135[] = { 842, -1, -1, -1, -1, -1, 842 }; static const ANTLR3_INT32 dfa72_T136[] = { 717, -1, -1, -1, -1, -1, 717 }; static const ANTLR3_INT32 dfa72_T137[] = { 392, -1, -1, -1, -1, -1, 392 }; static const ANTLR3_INT32 dfa72_T138[] = { 404, -1, -1, -1, -1, -1, 404 }; static const ANTLR3_INT32 dfa72_T139[] = { 729, -1, -1, -1, -1, -1, 729 }; static const ANTLR3_INT32 dfa72_T140[] = { 526, -1, -1, -1, -1, -1, 526 }; static const ANTLR3_INT32 dfa72_T141[] = { 914, -1, -1, -1, -1, -1, 914 }; static const ANTLR3_INT32 dfa72_T142[] = { 535, -1, -1, -1, -1, -1, 535 }; static const ANTLR3_INT32 dfa72_T143[] = { 697, -1, -1, -1, -1, -1, 697 }; static const ANTLR3_INT32 dfa72_T144[] = { 543, -1, -1, -1, -1, -1, 543 }; static const ANTLR3_INT32 dfa72_T145[] = { 575, -1, -1, -1, -1, -1, 575 }; static const ANTLR3_INT32 dfa72_T146[] = { 181, 176, 3, -1, 175, 185, 690, 3, 692, 691, 184, 692, -1, 692, 182, 690, -1, -1, -1, 692, -1, -1, -1, 693, 694, 86, 3, -1, 692, -1, 294, 296, 3, 692, 692, 692, 692 }; static const ANTLR3_INT32 dfa72_T147[] = { 880, -1, 776 }; static const ANTLR3_INT32 dfa72_T148[] = { 78, 153, -1, -1, 293, 84, 154, 3, 157, 155, 83, 295, -1, 76, 81, 154, -1, -1, -1, 76, -1, -1, -1, 77, 82, 86, 3, -1, 76, -1, 294, 296, 3, 76, 76, 76, 76 }; static const ANTLR3_INT32 dfa72_T149[] = { 3, 3, -1, -1, 3, 3, 670, 3, 672, 671, 3, 3, -1, 3, 3, 670, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T150[] = { 3, 3, -1, -1, 3, 3, 527, 3, 530, 528, 3, 529, -1, 3, 3, 527, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T151[] = { 940, -1, 941 }; static const ANTLR3_INT32 dfa72_T152[] = { 946, -1, 947 }; static const ANTLR3_INT32 dfa72_T153[] = { 78, 153, -1, -1, 152, 84, 154, 3, 298, 155, 83, 76, -1, 76, 81, 154, -1, -1, -1, 76, -1, -1, -1, 77, 82, 86, 3, -1, 76, -1, 85, 158, 3, 76, 76, 76, 76 }; static const ANTLR3_INT32 dfa72_T154[] = { 494, 343, -1, -1, 3, 498, 490, 3, 492, 491, 497, 492, -1, 492, 495, 490, -1, -1, -1, 492, -1, -1, -1, 493, 496, 3, 3, -1, 492, -1, 3, 3, 3, 492, 492, 492, 492 }; static const ANTLR3_INT32 dfa72_T155[] = { 1014, -1, 1015 }; static const ANTLR3_INT32 dfa72_T156[] = { 1017, -1, 1018 }; static const ANTLR3_INT32 dfa72_T157[] = { 1048 }; static const ANTLR3_INT32 dfa72_T158[] = { 251, 144, -1, -1, 3, 255, 247, 3, 249, 248, 254, 249, -1, 249, 252, 247, -1, -1, -1, 249, -1, -1, -1, 250, 253, 3, 3, -1, 249, -1, 3, 3, 3, 249, 249, 249, 249 }; static const ANTLR3_INT32 dfa72_T159[] = { 3, 3, -1, -1, 3, 3, 784, 3, 530, 785, 3, 529, -1, 3, 3, 784, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T160[] = { 3, 3, -1, -1, 3, 3, 573, 3, 3, 812, 3, 3, -1, 3, 3, 573, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T161[] = { 3, 3, -1, -1, 3, 3, 360, 3, 357, 358, 3, 359, -1, 3, 3, 360, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T162[] = { 3, -1, -1, -1, 3, 3, 3, 563, -1, 3, -1, 3, 3, 562, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T163[] = { 3, 3, -1, -1, 3, 3, 573, 3, 3, 957, 3, 3, -1, 3, 3, 573, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T164[] = { 3, 3, -1, -1, 3, 3, 860, 3, 357, 859, 3, 861, -1, 3, 3, 860, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T165[] = { 3, 3, -1, -1, 3, 3, 636, 3, 357, 635, 3, 637, -1, 3, 3, 636, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T166[] = { 3, 3, -1, -1, 3, 3, 676, 3, 679, 677, 3, 678, -1, 3, 3, 676, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T167[] = { 3, 3, -1, -1, 3, 3, 573, 3, 3, 1020, 3, 3, -1, 3, 3, 573, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T168[] = { 3, 3, -1, -1, 3, 3, 751, 3, 477, 752, 3, 474, -1, 3, 3, 751, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T169[] = { 3, 3, -1, -1, 3, 3, 96, 3, 3, 340, 3, 3, -1, 3, 3, 96, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T170[] = { 106, 101, -1, -1, 100, 110, 102, 3, 104, 103, 109, 104, -1, 104, 107, 102, -1, -1, -1, 104, -1, -1, -1, 105, 108, 53, 3, -1, 104, -1, 52, 98, 3, 104, 104, 104, 104 }; static const ANTLR3_INT32 dfa72_T171[] = { 948, -1, 776 }; static const ANTLR3_INT32 dfa72_T172[] = { 3, 3, -1, -1, 3, 3, 96, 3, 3, 851, 3, 3, -1, 3, 3, 96, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T173[] = { 3, 3, -1, -1, 3, 3, 727, 3, 3, 913, 3, 3, -1, 3, 3, 727, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T174[] = { 3, 3, -1, -1, 3, 3, 96, 3, 3, 621, 3, 3, -1, 3, 3, 96, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T175[] = { 33, 23, -1, -1, 22, 31, 134, 3, 70, 135, 33, 30, -1, 30, 33, 134, -1, -1, -1, 30, -1, -1, -1, 27, 33, 32, 3, -1, 30, -1, 28, 33, 3, 30, 30, 30, 30 }; static const ANTLR3_INT32 dfa72_T176[] = { 3, 3, -1, -1, 3, 3, 883, 3, 679, 884, 3, 678, -1, 3, 3, 883, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T177[] = { 409, 275, -1, -1, 3, 413, 405, 3, 407, 406, 412, 407, -1, 407, 410, 405, -1, -1, -1, 407, -1, -1, -1, 408, 411, 3, 3, -1, 407, -1, 3, 3, 3, 407, 407, 407, 407 }; static const ANTLR3_INT32 dfa72_T178[] = { 988, -1, 941 }; static const ANTLR3_INT32 dfa72_T179[] = { 992, -1, 947 }; static const ANTLR3_INT32 dfa72_T180[] = { 3, 3, -1, -1, 3, 3, 727, 3, 3, 1003, 3, 3, -1, 3, 3, 727, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T181[] = { 315, 176, -1, -1, 3, 319, 311, 3, 313, 312, 318, 313, -1, 313, 316, 311, -1, -1, -1, 313, -1, -1, -1, 314, 317, 3, 3, -1, 313, -1, 3, 3, 3, 313, 313, 313, 313 }; static const ANTLR3_INT32 dfa72_T182[] = { 1029, -1, 1015 }; static const ANTLR3_INT32 dfa72_T183[] = { 1031, -1, 1018 }; static const ANTLR3_INT32 dfa72_T184[] = { 3, 3, -1, -1, 3, 3, 727, 3, 3, 1034, 3, 3, -1, 3, 3, 727, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T185[] = { 181, 176, 3, -1, 175, 185, 436, 3, 438, 437, 184, 438, -1, 438, 182, 436, -1, -1, -1, 438, -1, -1, -1, 439, 440, 86, 3, -1, 438, -1, 85, 158, 3, 438, 438, 438, 438 }; static const ANTLR3_INT32 dfa72_T186[] = { 3, 3, -1, -1, 3, 3, 857, 3, 626, 856, 3, 858, -1, 3, 3, 857, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T187[] = { 3, 3, -1, -1, 3, 3, 629, 3, 626, 627, 3, 628, -1, 3, 3, 629, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T188[] = { 3, 3, -1, -1, 3, 3, 982, 3, 626, 981, 3, 983, -1, 3, 3, 982, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T189[] = { 3, 3, -1, -1, 3, 3, 664, 3, 666, 665, 3, 3, -1, 3, 3, 664, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T190[] = { 181, 176, 3, -1, 175, 185, 436, 3, 438, 437, 184, 438, -1, 438, 561, 436, -1, -1, -1, 438, -1, -1, -1, 439, 440, 86, 3, -1, 438, -1, 294, 296, 3, 438, 438, 438, 438 }; static const ANTLR3_INT32 dfa72_T191[] = { 3, 3, -1, -1, 3, 3, 320, 3, 3, 321, 3, 3, -1, 3, 3, 320, -1, -1, -1, 3, 258, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T192[] = { 3, 3, -1, -1, 3, 3, 617, 3, 619, 618, 3, 3, -1, 3, 3, 617, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T193[] = { 3, 3, -1, -1, 3, 3, 173, 3, 3, 743, 3, 3, -1, 3, 3, 173, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T194[] = { 348, 343, -1, -1, 342, 352, 344, 3, 346, 345, 351, 346, -1, 346, 349, 344, -1, -1, -1, 346, -1, -1, -1, 347, 350, 53, 3, -1, 346, -1, 213, 98, 3, 346, 346, 346, 346 }; static const ANTLR3_INT32 dfa72_T195[] = { 3, 3, -1, -1, 3, 3, 173, 3, 3, 463, 3, 3, -1, 3, 3, 173, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T196[] = { 286, 153, -1, -1, 3, 290, 282, 3, 284, 435, 289, 284, -1, 284, 287, 282, -1, -1, -1, 284, -1, -1, -1, 285, 288, 3, 3, -1, 284, -1, 3, 3, 3, 284, 284, 284, 284 }; static const ANTLR3_INT32 dfa72_T197[] = { 33, 23, -1, -1, 22, 31, 35, 3, 29, 34, 33, 36, -1, 30, 33, 35, -1, -1, -1, 30, -1, -1, -1, 27, 33, 32, 3, -1, 30, -1, 28, 33, 3, 30, 30, 30, 30 }; static const ANTLR3_INT32 dfa72_T198[] = { 3, 3, -1, -1, 3, 3, 173, 3, 3, 924, 3, 3, -1, 3, 3, 173, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T199[] = { 78, 153, -1, -1, 152, 84, 154, 3, 157, 155, 83, 156, -1, 76, 81, 154, -1, -1, -1, 76, -1, -1, -1, 77, 82, 86, 3, -1, 76, -1, 85, 158, 3, 76, 76, 76, 76 }; static const ANTLR3_INT32 dfa72_T200[] = { 181, 176, 3, -1, 175, 185, 690, 3, 692, 691, 184, 692, 3, 692, 182, 690, -1, -1, -1, 692, -1, -1, -1, 693, 694, 86, 3, -1, 692, -1, 85, 158, 3, 692, 692, 692, 692 }; static const ANTLR3_INT32 dfa72_T201[] = { 3, 3, -1, -1, 3, 3, 573, 3, 3, 808, 3, 3, -1, 3, 3, 573, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T202[] = { 776 }; static const ANTLR3_INT32 dfa72_T203[] = { 3, 3, -1, -1, 3, 3, 96, 3, 3, 336, 3, 3, -1, 3, 3, 96, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T204[] = { 78, 153, -1, -1, 293, 84, 74, 3, 76, 845, 83, 76, -1, 76, 81, 74, -1, -1, -1, 76, -1, -1, -1, 77, 82, 86, 3, -1, 76, -1, 294, 296, 3, 76, 76, 76, 76 }; static const ANTLR3_INT32 dfa72_T205[] = { 78, 153, -1, -1, 293, 84, 74, 3, 76, 601, 83, 76, -1, 76, 81, 74, -1, -1, -1, 76, -1, -1, -1, 77, 82, 86, 3, -1, 76, -1, 294, 296, 3, 76, 76, 76, 76 }; static const ANTLR3_INT32 dfa72_T206[] = { 78, 153, -1, -1, 293, 84, 74, 3, 76, 301, 83, 76, -1, 76, 81, 74, -1, -1, -1, 76, -1, -1, -1, 77, 82, 86, 3, -1, 76, -1, 294, 296, 3, 76, 76, 76, 76 }; static const ANTLR3_INT32 dfa72_T207[] = { 941 }; static const ANTLR3_INT32 dfa72_T208[] = { 947 }; static const ANTLR3_INT32 dfa72_T209[] = { 1015 }; static const ANTLR3_INT32 dfa72_T210[] = { 1018 }; static const ANTLR3_INT32 dfa72_T211[] = { 195, 187, -1, -1, 186, 193, 188, -1, 190, 189, 195, 190, -1, 190, 195, 188, -1, -1, -1, 190, -1, -1, -1, 191, 195, 194, -1, -1, 190, -1, 192, 195, -1, 190, 190, 190, 190 }; static const ANTLR3_INT32 dfa72_T212[] = { 3, 3, -1, -1, 3, 3, 800, 3, 802, 801, 3, 3, -1, 3, 3, 800, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T213[] = { 3, 3, -1, -1, 3, 3, 63, 3, 3, 244, 3, 3, -1, 3, 3, 63, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T214[] = { 3, 3, -1, -1, 3, 3, 650, 3, 520, 651, 3, 385, -1, 3, 3, 650, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T215[] = { 3, 3, -1, -1, 3, 3, 388, 3, 386, 387, 3, 389, -1, 3, 3, 388, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T216[] = { 78, 153, -1, -1, 293, 84, 74, 3, 76, 297, 83, 76, -1, 76, 81, 74, -1, -1, -1, 76, -1, -1, -1, 77, 82, 86, 3, -1, 76, -1, 294, 296, 3, 76, 76, 76, 76 }; static const ANTLR3_INT32 dfa72_T217[] = { 3, 3, -1, -1, 3, 3, 744, 3, 468, 745, 3, 465, -1, 3, 3, 744, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T218[] = { 3, 3, -1, -1, 3, 3, 63, 3, 3, 514, 3, 3, -1, 3, 3, 63, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T219[] = { 3, 3, -1, -1, 3, 3, 653, 3, 386, 652, 3, 654, -1, 3, 3, 653, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T220[] = { 3, 3, -1, -1, 3, 3, 63, 3, 3, 769, 3, 3, -1, 3, 3, 63, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T221[] = { 3, 3, -1, -1, 3, 3, 198, 3, 200, 199, 3, 197, -1, 3, 3, 198, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T222[] = { 3, 3, -1, -1, 3, 3, 866, 3, 386, 865, 3, 867, -1, 3, 3, 866, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T223[] = { 3, 3, -1, -1, 3, 3, 727, 3, 3, 909, 3, 3, -1, 3, 3, 727, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T224[] = { 181, 176, -1, -1, 175, 185, 177, 3, 179, 178, 184, 179, -1, 179, 182, 177, -1, -1, -1, 179, -1, -1, -1, 180, 183, 86, 3, -1, 179, -1, 85, 158, 3, 179, 179, 179, 179 }; static const ANTLR3_INT32 dfa72_T225[] = { 3, 3, -1, -1, 3, 3, 715, 3, 3, 1002, 3, 3, -1, 3, 3, 715, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T226[] = { 3, 3, -1, -1, 3, 3, 510, 3, 512, 511, 3, 3, -1, 3, 3, 510, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T227[] = { 3, 3, -1, -1, 3, 3, 173, 3, 3, 459, 3, 3, -1, 3, 3, 173, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T228[] = { 3, 3, -1, -1, 3, 3, 715, 3, 3, 907, 3, 3, -1, 3, 3, 715, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T229[] = { 3, 3, -1, -1, 3, 3, 897, 3, 811, 898, 3, 3, -1, 3, 3, 897, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T230[] = { 3, 3, -1, -1, 3, 3, 715, 3, 3, 1033, 3, 3, -1, 3, 3, 715, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T231[] = { 78, 153, -1, -1, 152, 84, 74, 3, 76, 301, 83, 76, -1, 76, 81, 74, -1, -1, -1, 76, -1, -1, -1, 77, 82, 86, 3, -1, 76, -1, 85, 158, 3, 76, 76, 76, 76 }; static const ANTLR3_INT32 dfa72_T232[] = { 3, 3, -1, -1, 3, 3, 541, 3, 539, 540, 3, 542, -1, 3, 3, 541, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T233[] = { 3, 3, -1, -1, 3, 3, 793, 3, 672, 794, 3, 538, -1, 3, 3, 793, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T234[] = { 78, 153, -1, -1, 152, 84, 74, 3, 76, 601, 83, 76, -1, 76, 81, 74, -1, -1, -1, 76, -1, -1, -1, 77, 82, 86, 3, -1, 76, -1, 85, 158, 3, 76, 76, 76, 76 }; static const ANTLR3_INT32 dfa72_T235[] = { 3, 3, -1, -1, 3, 3, 796, 3, 539, 795, 3, 797, -1, 3, 3, 796, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T236[] = { 78, 153, -1, -1, 152, 84, 74, 3, 76, 845, 83, 76, -1, 76, 81, 74, -1, -1, -1, 76, -1, -1, -1, 77, 82, 86, 3, -1, 76, -1, 85, 158, 3, 76, 76, 76, 76 }; static const ANTLR3_INT32 dfa72_T237[] = { 3, 3, -1, -1, 3, 3, 840, 3, 3, 977, 3, 3, -1, 3, 3, 840, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T238[] = { 3, 3, -1, -1, 3, 3, 953, 3, 539, 952, 3, 954, -1, 3, 3, 953, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T239[] = { 3, 3, -1, -1, 3, 3, 611, 3, 613, 612, 3, 3, -1, 3, 3, 611, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T240[] = { 3, 3, -1, -1, 3, 3, 305, 3, 307, 306, 3, 304, -1, 3, 3, 305, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T241[] = { 3, 3, -1, -1, 3, 3, 63, 3, 3, 240, 3, 3, -1, 3, 3, 63, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T242[] = { 78, 153, -1, -1, 293, 84, 154, 3, 157, 599, 83, 600, -1, 76, 81, 154, -1, -1, -1, 76, -1, -1, -1, 77, 82, 86, 3, -1, 76, -1, 294, 296, 3, 76, 76, 76, 76 }; static const ANTLR3_INT32 dfa72_T243[] = { 3, 3, -1, -1, 3, 3, 840, 3, 3, 1027, 3, 3, -1, 3, 3, 840, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T244[] = { 78, 153, -1, -1, 293, 84, 154, 3, 157, 299, 83, 300, -1, 76, 81, 154, -1, -1, -1, 76, -1, -1, -1, 77, 82, 86, 3, -1, 76, -1, 294, 296, 3, 76, 76, 76, 76 }; static const ANTLR3_INT32 dfa72_T245[] = { 3, 3, -1, -1, 3, 3, 967, 3, 912, 968, 3, 3, -1, 3, 3, 967, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T246[] = { 3, 3, -1, -1, 3, 3, 753, 3, 619, 754, 3, 474, -1, 3, 3, 753, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T247[] = { 120, 112, -1, -1, 111, 118, 113, 3, 115, 114, 120, 115, -1, 115, 120, 113, -1, -1, -1, 115, -1, -1, -1, 116, 120, 119, 3, -1, 115, -1, 117, 120, 3, 115, 115, 115, 115 }; static const ANTLR3_INT32 dfa72_T248[] = { 78, 153, -1, -1, 293, 84, 154, 3, 157, 978, 83, 295, -1, 76, 81, 154, -1, -1, -1, 76, -1, -1, -1, 77, 82, 86, 3, -1, 76, -1, 294, 296, 3, 76, 76, 76, 76 }; static const ANTLR3_INT32 dfa72_T249[] = { 3, 3, -1, -1, 3, 3, 840, 3, 3, 1042, 3, 3, -1, 3, 3, 840, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T250[] = { 78, 153, -1, -1, 152, 84, 74, 3, 76, 297, 83, 76, -1, 76, 81, 74, -1, -1, -1, 76, -1, -1, -1, 77, 82, 86, 3, -1, 76, -1, 85, 158, 3, 76, 76, 76, 76 }; static const ANTLR3_INT32 dfa72_T251[] = { 78, 153, -1, -1, 293, 84, 154, 3, 157, 843, 83, 844, -1, 76, 81, 154, -1, -1, -1, 76, -1, -1, -1, 77, 82, 86, 3, -1, 76, -1, 294, 296, 3, 76, 76, 76, 76 }; static const ANTLR3_INT32 dfa72_T252[] = { 78, 153, -1, -1, 293, 84, 154, 3, 157, 155, 83, 300, -1, 76, 81, 154, -1, -1, -1, 76, -1, -1, -1, 77, 82, 86, 3, -1, 76, -1, 294, 296, 3, 76, 76, 76, 76 }; static const ANTLR3_INT32 dfa72_T253[] = { 3, 3, -1, -1, 3, 3, 504, 3, 506, 505, 3, 3, -1, 3, 3, 504, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T254[] = { 3, 3, -1, -1, 3, 3, 291, 3, 3, 560, 3, 3, -1, 3, 3, 291, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T255[] = { 78, 153, -1, -1, 293, 84, 154, 3, 157, 155, 83, 844, -1, 76, 81, 154, -1, -1, -1, 76, -1, -1, -1, 77, 82, 86, 3, -1, 76, -1, 294, 296, 3, 76, 76, 76, 76 }; static const ANTLR3_INT32 dfa72_T256[] = { 3, 3, -1, -1, 3, 3, 291, 3, 3, 804, 3, 3, -1, 3, 3, 291, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T257[] = { 78, 153, -1, -1, 293, 84, 154, 3, 157, 155, 83, 600, -1, 76, 81, 154, -1, -1, -1, 76, -1, -1, -1, 77, 82, 86, 3, -1, 76, -1, 294, 296, 3, 76, 76, 76, 76 }; static const ANTLR3_INT32 dfa72_T258[] = { 3, 3, -1, -1, 3, 3, 291, 3, 3, 956, 3, 3, -1, 3, 3, 291, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T259[] = { 2, -1, -1, -1, 1, -1, 2, 2, -1, 2, -1, 2, -1, 1, -1, -1, -1, 2, -1, -1, -1, 2, 2, -1, -1, -1, 2, -1, -1, 3, -1, 2, 2, 2, 2 }; static const ANTLR3_INT32 dfa72_T260[] = { 3, 3, -1, -1, 3, 3, 123, 3, 125, 124, 3, 122, -1, 3, 3, 123, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T261[] = { 3, 3, -1, -1, 3, 3, 715, 3, 3, 903, 3, 3, -1, 3, 3, 715, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T262[] = { 3, 3, -1, -1, 3, 3, 256, 3, 3, 257, 3, 3, -1, 3, 3, 256, -1, -1, -1, 3, 258, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T263[] = { 3, 3, -1, -1, 3, 3, 482, 3, 200, 483, 3, 197, -1, 3, 3, 482, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T264[] = { 3, 3, -1, -1, 3, 3, 763, 3, 765, 764, 3, 3, -1, 3, 3, 763, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T265[] = { 33, 23, -1, -1, 22, 31, 65, 3, 30, 71, 33, 30, -1, 30, 33, 65, -1, -1, -1, 30, -1, -1, -1, 27, 33, 32, 3, -1, 30, -1, 28, 33, 3, 30, 30, 30, 30 }; static const ANTLR3_INT32 dfa72_T266[] = { 3, 3, -1, -1, 3, 3, 429, 3, 431, 430, 3, 428, -1, 3, 3, 429, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T267[] = { 239, -1, -1, -1, -1, -1, 239 }; static const ANTLR3_INT32 dfa72_T268[] = { 214, -1, -1, -1, -1, -1, 214 }; static const ANTLR3_INT32 dfa72_T269[] = { 761, -1, -1, -1, -1, -1, 761 }; static const ANTLR3_INT32 dfa72_T270[] = { 72, -1, -1, -1, -1, -1, 72 }; static const ANTLR3_INT32 dfa72_T271[] = { 502, -1, -1, -1, -1, -1, 502 }; static const ANTLR3_INT32 dfa72_T272[] = { 133, -1, -1, -1, -1, -1, 133 }; static const ANTLR3_INT32 dfa72_T273[] = { 630, -1, -1, -1, -1, -1, 630 }; static const ANTLR3_INT32 dfa72_T274[] = { 335, -1, -1, -1, -1, -1, 335 }; static const ANTLR3_INT32 dfa72_T275[] = { 508, -1, -1, -1, -1, -1, 508 }; static const ANTLR3_INT32 dfa72_T276[] = { 361, -1, -1, -1, -1, -1, 361 }; static const ANTLR3_INT32 dfa72_T277[] = { 370, -1, -1, -1, -1, -1, 370 }; static const ANTLR3_INT32 dfa72_T278[] = { 458, -1, -1, -1, -1, -1, 458 }; static const ANTLR3_INT32 dfa72_T279[] = { 489, -1, -1, -1, -1, -1, 489 }; static const ANTLR3_INT32 dfa72_T280[] = { 3, -1, -1, -1, 3, 3, 3, 894, -1, 3, -1, 3, -1, 893, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T281[] = { 33, 23, -1, -1, 22, 31, 65, 3, 30, 245, 33, 30, -1, 30, 33, 65, -1, -1, -1, 30, -1, -1, -1, 27, 33, 32, 3, -1, 30, -1, 28, 33, 3, 30, 30, 30, 30 }; static const ANTLR3_INT32 dfa72_T282[] = { 869, -1, -1, -1, -1, 773, -1, -1, -1, -1, -1, 773, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 871 }; static const ANTLR3_INT32 dfa72_T283[] = { 3, 3, -1, -1, 3, 3, 532, 3, 530, 531, 3, 533, -1, 3, 3, 532, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T284[] = { 33, 23, -1, -1, 22, 31, 65, 3, 30, 515, 33, 30, -1, 30, 33, 65, -1, -1, -1, 30, -1, -1, -1, 27, 33, 32, 3, -1, 30, -1, 28, 33, 3, 30, 30, 30, 30 }; static const ANTLR3_INT32 dfa72_T285[] = { 3, 3, -1, -1, 3, 3, 786, 3, 666, 787, 3, 529, -1, 3, 3, 786, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T286[] = { 3, 3, -1, -1, 3, 3, 789, 3, 530, 788, 3, 790, -1, 3, 3, 789, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T287[] = { 3, 3, -1, -1, 3, 3, 699, 3, 701, 700, 3, 698, -1, 3, 3, 699, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T288[] = { 3, 3, -1, -1, 3, 3, 640, 3, 512, 641, 3, 363, -1, 3, 3, 640, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T289[] = { 3, 3, -1, -1, 3, 3, 840, 3, 3, 973, 3, 3, -1, 3, 3, 840, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T290[] = { 3, 3, -1, -1, 3, 3, 950, 3, 530, 949, 3, 951, -1, 3, 3, 950, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T291[] = { 3, 3, -1, -1, 3, 3, 414, 3, 3, 415, 3, 3, -1, 3, 3, 414, -1, -1, -1, 3, 258, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T292[] = { 78, 153, -1, -1, 152, 84, 154, 3, 157, 456, 83, 457, -1, 76, 81, 154, -1, -1, -1, 76, -1, -1, -1, 77, 82, 86, 3, -1, 76, -1, 85, 158, 3, 76, 76, 76, 76 }; static const ANTLR3_INT32 dfa72_T293[] = { 47, 42, -1, -1, 41, 51, 43, 3, 45, 44, 50, 45, -1, 45, 48, 43, -1, -1, -1, 45, -1, -1, -1, 46, 49, 53, 3, -1, 45, -1, 52, 40, 3, 45, 45, 45, 45 }; static const ANTLR3_INT32 dfa72_T294[] = { 78, 153, -1, -1, 152, 84, 154, 3, 157, 159, 83, 160, -1, 76, 81, 154, -1, -1, -1, 76, -1, -1, -1, 77, 82, 86, 3, -1, 76, -1, 85, 158, 3, 76, 76, 76, 76 }; static const ANTLR3_INT32 dfa72_T295[] = { 779, -1, -1, -1, -1, 661, -1, -1, -1, -1, -1, 661, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 783 }; static const ANTLR3_INT32 dfa72_T296[] = { 3, 3, -1, -1, 3, 3, 960, 3, 906, 961, 3, 3, -1, 3, 3, 960, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T297[] = { 3, 3, -1, -1, 3, 3, 602, 3, 307, 603, 3, 304, -1, 3, 3, 602, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T298[] = { 3, 3, -1, -1, 3, 3, 480, 3, 477, 478, 3, 479, -1, 3, 3, 480, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T299[] = { 3, 3, -1, -1, 3, 3, 746, 3, 613, 747, 3, 465, -1, 3, 3, 746, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T300[] = { 78, 153, -1, -1, 152, 84, 154, 3, 157, 741, 83, 742, -1, 76, 81, 154, -1, -1, -1, 76, -1, -1, -1, 77, 82, 86, 3, -1, 76, -1, 85, 158, 3, 76, 76, 76, 76 }; static const ANTLR3_INT32 dfa72_T301[] = { 3, 3, -1, -1, 3, 3, 929, 3, 477, 928, 3, 930, -1, 3, 3, 929, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T302[] = { 3, 3, -1, -1, 3, 3, 756, 3, 477, 755, 3, 757, -1, 3, 3, 756, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T303[] = { 525, -1, -1, -1, -1, -1, 525 }; static const ANTLR3_INT32 dfa72_T304[] = { 381, -1, -1, -1, -1, -1, 381 }; static const ANTLR3_INT32 dfa72_T305[] = { 922, -1, -1, -1, -1, -1, 922 }; static const ANTLR3_INT32 dfa72_T306[] = { 972, -1, -1, -1, -1, -1, 972 }; static const ANTLR3_INT32 dfa72_T307[] = { 516, -1, -1, -1, -1, -1, 516 }; static const ANTLR3_INT32 dfa72_T308[] = { 534, -1, -1, -1, -1, -1, 534 }; static const ANTLR3_INT32 dfa72_T309[] = { 3, 3, -1, -1, 3, 3, 291, 3, 3, 556, 3, 3, -1, 3, 3, 291, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T310[] = { 830, -1, -1, -1, -1, -1, 830 }; static const ANTLR3_INT32 dfa72_T311[] = { 662, -1, -1, -1, -1, -1, 662 }; static const ANTLR3_INT32 dfa72_T312[] = { 668, -1, -1, -1, -1, -1, 668 }; static const ANTLR3_INT32 dfa72_T313[] = { 908, -1, -1, -1, -1, -1, 908 }; static const ANTLR3_INT32 dfa72_T314[] = { 798, -1, -1, -1, -1, -1, 798 }; static const ANTLR3_INT32 dfa72_T315[] = { 674, -1, -1, -1, -1, -1, 674 }; static const ANTLR3_INT32 dfa72_T316[] = { 821, -1, -1, -1, -1, -1, 821 }; static const ANTLR3_INT32 dfa72_T317[] = { 902, -1, -1, -1, -1, -1, 902 }; static const ANTLR3_INT32 dfa72_T318[] = { 807, -1, -1, -1, -1, -1, 807 }; static const ANTLR3_INT32 dfa72_T319[] = { 705, -1, -1, -1, -1, -1, 705 }; static const ANTLR3_INT32 dfa72_T320[] = { 3, 3, -1, -1, 3, 3, 640, 3, 512, 641, 3, 3, -1, 3, 3, 640, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T321[] = { 3, 3, -1, -1, 3, 3, 885, 3, 802, 886, 3, 678, -1, 3, 3, 885, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T322[] = { 3, 3, -1, -1, 3, 3, 681, 3, 679, 680, 3, 682, -1, 3, 3, 681, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T323[] = { 3, 3, -1, -1, 3, 3, 895, 3, 701, 896, 3, 698, -1, 3, 3, 895, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T324[] = { 33, 23, -1, -1, 22, 31, 65, 3, 30, 66, 33, 30, -1, 30, 33, 65, -1, -1, -1, 30, -1, -1, -1, 27, 33, 32, 3, -1, 30, -1, 28, 33, 3, 30, 30, 30, 30 }; static const ANTLR3_INT32 dfa72_T325[] = { 33, 23, -1, -1, 22, 31, 24, 3, 29, 25, 33, 26, -1, 30, 33, 24, -1, -1, -1, 30, -1, -1, -1, 27, 33, 32, 3, -1, 30, -1, 28, 33, 3, 30, 30, 30, 30 }; static const ANTLR3_INT32 dfa72_T326[] = { 3, 3, -1, -1, 3, 3, 888, 3, 679, 887, 3, 889, -1, 3, 3, 888, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T327[] = { 3, 3, -1, -1, 3, 3, 824, 3, 826, 825, 3, 823, -1, 3, 3, 824, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T328[] = { 3, 3, -1, -1, 3, 3, 371, 3, 125, 372, 3, 122, -1, 3, 3, 371, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T329[] = { 3, 3, -1, -1, 3, 3, 1006, 3, 976, 1007, 3, 3, -1, 3, 3, 1006, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T330[] = { 3, 3, -1, -1, 3, 3, 997, 3, 679, 996, 3, 998, -1, 3, 3, 997, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T331[] = { 524 }; static const ANTLR3_INT32 dfa72_T332[] = { 3, 3, -1, -1, 3, 3, 965, 3, 826, 966, 3, 823, -1, 3, 3, 965, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T333[] = { 3, -1, -1, -1, 3, 3, 3, 696, -1, 3, -1, 3, 3, 695, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T334[] = { 3, 3, -1, -1, 3, 3, 685, 3, 559, 686, 3, 3, -1, 3, 3, 685, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T335[] = { 3, 3, -1, -1, 3, 3, 633, 3, 506, 634, 3, 3, -1, 3, 3, 633, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T336[] = { 3, 3, -1, -1, 3, 3, 224, 3, 3, 225, 3, 3, -1, 3, 3, 224, -1, -1, -1, 3, 2, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T337[] = { 3, 3, -1, -1, 3, 3, 402, 3, 3, 403, 3, 3, -1, 3, 3, 402, -1, -1, -1, 3, 258, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T338[] = { 3, 3, -1, -1, 3, 3, 809, 3, 811, 810, 3, 3, -1, 3, 3, 809, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T339[] = { 3, 3, -1, -1, 3, 3, 63, 3, 3, 64, 3, 3, -1, 3, 3, 63, -1, -1, -1, 3, 2, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T340[] = { 3, 3, -1, -1, 3, 3, 471, 3, 468, 469, 3, 470, -1, 3, 3, 471, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T341[] = { 3, 3, -1, -1, 3, 3, 749, 3, 468, 748, 3, 750, -1, 3, 3, 749, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T342[] = { 3, 3, -1, -1, 3, 3, 926, 3, 468, 925, 3, 927, -1, 3, 3, 926, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T343[] = { 3, 3, -1, -1, 3, 3, 854, 3, 765, 855, 3, 3, -1, 3, 3, 854, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T344[] = { 33, 23, -1, -1, 22, 31, 131, 3, 29, 132, 33, 26, -1, 30, 33, 131, -1, -1, -1, 30, -1, -1, -1, 27, 33, 32, 3, -1, 30, -1, 28, 33, 3, 30, 30, 30, 30 }; static const ANTLR3_INT32 dfa72_T345[] = { 3, 3, -1, -1, 3, 3, 553, 3, 3, 554, 3, 3, -1, 3, 3, 553, -1, -1, -1, 3, 258, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T346[] = { 3, 3, -1, -1, 3, 3, 499, 3, 3, 500, 3, 3, -1, 3, 3, 499, -1, -1, -1, 3, 2, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T347[] = { 3, 3, -1, -1, 3, 3, 487, 3, 200, 486, 3, 488, -1, 3, 3, 487, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T348[] = { 3, 3, -1, -1, 3, 3, 815, 3, 817, 816, 3, 814, -1, 3, 3, 815, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T349[] = { 3, 3, -1, -1, 3, 3, 910, 3, 912, 911, 3, 3, -1, 3, 3, 910, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T350[] = { 3, 3, -1, -1, 3, 3, 203, 3, 200, 201, 3, 202, -1, 3, 3, 203, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T351[] = { 78, 153, -1, -1, 293, 84, 154, 3, 157, 923, 83, 156, -1, 76, 81, 154, -1, -1, -1, 76, -1, -1, -1, 77, 82, 86, 3, -1, 76, -1, 294, 296, 3, 76, 76, 76, 76 }; static const ANTLR3_INT32 dfa72_T352[] = { 3, 3, -1, -1, 3, 3, 759, 3, 200, 758, 3, 760, -1, 3, 3, 759, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T353[] = { 196, -1, -1, -1, -1, -1, 196 }; static const ANTLR3_INT32 dfa72_T354[] = { 39, -1, -1, -1, -1, -1, 39 }; static const ANTLR3_INT32 dfa72_T355[] = { 67, -1, -1, -1, -1, -1, 67 }; static const ANTLR3_INT32 dfa72_T356[] = { 99, -1, -1, -1, -1, -1, 99 }; static const ANTLR3_INT32 dfa72_T357[] = { 121, -1, -1, -1, -1, -1, 121 }; static const ANTLR3_INT32 dfa72_T358[] = { 622, -1, -1, -1, -1, -1, 622 }; static const ANTLR3_INT32 dfa72_T359[] = { 226, -1, -1, -1, -1, -1, 226 }; static const ANTLR3_INT32 dfa72_T360[] = { 501, -1, -1, -1, -1, -1, 501 }; static const ANTLR3_INT32 dfa72_T361[] = { 238, -1, -1, -1, -1, -1, 238 }; static const ANTLR3_INT32 dfa72_T362[] = { 303, -1, -1, -1, -1, -1, 303 }; static const ANTLR3_INT32 dfa72_T363[] = { 362, -1, -1, -1, -1, -1, 362 }; static const ANTLR3_INT32 dfa72_T364[] = { 341, -1, -1, -1, -1, -1, 341 }; static const ANTLR3_INT32 dfa72_T365[] = { 353, -1, -1, -1, -1, -1, 353 }; static const ANTLR3_INT32 dfa72_T366[] = { 3, 3, -1, -1, 3, 3, 958, 3, 817, 959, 3, 814, -1, 3, 3, 958, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T367[] = { 3, 3, -1, -1, 3, 3, 332, 3, 3, 333, 3, 3, -1, 3, 3, 332, -1, -1, -1, 3, 258, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T368[] = { 3, 3, -1, -1, 3, 3, 607, 3, 307, 606, 3, 608, -1, 3, 3, 607, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T369[] = { 3, 3, -1, -1, 3, 3, 310, 3, 307, 308, 3, 309, -1, 3, 3, 310, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T370[] = { 3, 3, -1, -1, 3, 3, 916, 3, 918, 917, 3, 915, -1, 3, 3, 916, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T371[] = { 3, 3, -1, -1, 3, 3, 291, 3, 3, 292, 3, 3, -1, 3, 3, 291, -1, -1, -1, 3, 258, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T372[] = { 3, 3, -1, -1, 3, 3, 847, 3, 307, 846, 3, 848, -1, 3, 3, 847, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T373[] = { 869, -1, -1, -1, -1, 938, -1, -1, -1, -1, -1, 938, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 987 }; static const ANTLR3_INT32 dfa72_T374[] = { 3, 3, -1, -1, 3, 3, 1004, 3, 918, 1005, 3, 915, -1, 3, 3, 1004, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T375[] = { 3, 3, -1, -1, 3, 3, 128, 3, 125, 126, 3, 127, -1, 3, 3, 128, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T376[] = { 522, -1, -1, -1, -1, 657, -1, -1, -1, -1, -1, 657, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 777 }; static const ANTLR3_INT32 dfa72_T377[] = { 120, 112, -1, -1, 111, 118, 113, -1, 115, 114, 120, 115, -1, 115, 120, 113, -1, -1, -1, 115, -1, -1, -1, 116, 120, 119, -1, -1, 115, -1, 117, 120, -1, 115, 115, 115, 115 }; static const ANTLR3_INT32 dfa72_T378[] = { 3, 3, -1, -1, 3, 3, 646, 3, 125, 645, 3, 647, -1, 3, 3, 646, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T379[] = { 3, 3, -1, -1, 3, 3, 376, 3, 125, 375, 3, 377, -1, 3, 3, 376, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T380[] = { 3, 3, -1, -1, 3, 3, 256, 3, 3, 521, 3, 3, -1, 3, 3, 256, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T381[] = { 779, -1, -1, -1, -1, 878, -1, -1, -1, -1, -1, 878, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 945 }; static const ANTLR3_INT32 dfa72_T382[] = { 3, 3, -1, -1, 3, 3, 236, 3, 3, 513, 3, 3, -1, 3, 3, 236, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T383[] = { 3, 3, -1, -1, 3, 3, 256, 3, 3, 770, 3, 3, -1, 3, 3, 256, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T384[] = { 78, 153, -1, -1, 152, 84, 454, 3, 298, 455, 83, 76, -1, 76, 81, 454, -1, -1, -1, 76, -1, -1, -1, 77, 82, 86, 3, -1, 76, -1, 85, 158, 3, 76, 76, 76, 76 }; static const ANTLR3_INT32 dfa72_T385[] = { 3, 3, -1, -1, 3, 3, 904, 3, 906, 905, 3, 3, -1, 3, 3, 904, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T386[] = { 3, 3, -1, -1, 3, 3, 256, 3, 3, 934, 3, 3, -1, 3, 3, 256, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T387[] = { 3, 3, -1, -1, 3, 3, 236, 3, 3, 768, 3, 3, -1, 3, 3, 236, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T388[] = { 3, 3, -1, -1, 3, 3, 683, 3, 431, 684, 3, 428, -1, 3, 3, 683, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T389[] = { 869, -1, -1, -1, -1, 868, -1, 781, -1, -1, -1, 773, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 870 }; static const ANTLR3_INT32 dfa72_T390[] = { 3, 3, -1, -1, 3, 3, 236, 3, 3, 933, 3, 3, -1, 3, 3, 236, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T391[] = { 3, 3, -1, -1, 3, 3, 414, 3, 3, 673, 3, 3, -1, 3, 3, 414, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T392[] = { 3, 3, -1, -1, 3, 3, 414, 3, 3, 882, 3, 3, -1, 3, 3, 414, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T393[] = { 779, -1, -1, -1, -1, 778, -1, 781, -1, -1, -1, 661, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 780 }; static const ANTLR3_INT32 dfa72_T394[] = { 3, 3, -1, -1, 3, 3, 414, 3, 3, 995, 3, 3, -1, 3, 3, 414, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T395[] = { 3, 3, -1, -1, 3, 3, 974, 3, 976, 975, 3, 3, -1, 3, 3, 974, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T396[] = { 874 }; static const ANTLR3_INT32 dfa72_T397[] = { 879 }; static const ANTLR3_INT32 dfa72_T398[] = { 989 }; static const ANTLR3_INT32 dfa72_T399[] = { 993 }; static const ANTLR3_INT32 dfa72_T400[] = { 3, 3, -1, -1, 3, 3, 900, 3, 701, 899, 3, 901, -1, 3, 3, 900, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T401[] = { 1030 }; static const ANTLR3_INT32 dfa72_T402[] = { 1032 }; static const ANTLR3_INT32 dfa72_T403[] = { 3, 3, -1, -1, 3, 3, 224, 3, 3, 507, 3, 3, -1, 3, 3, 224, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T404[] = { 3, 3, -1, -1, 3, 3, 704, 3, 701, 702, 3, 703, -1, 3, 3, 704, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T405[] = { 3, 3, -1, -1, 3, 3, 557, 3, 559, 558, 3, 3, -1, 3, 3, 557, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T406[] = { 3, 3, -1, -1, 3, 3, 1000, 3, 701, 999, 3, 1001, -1, 3, 3, 1000, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T407[] = { 3, 3, -1, -1, 3, 3, 236, 3, 3, 509, 3, 3, -1, 3, 3, 236, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T408[] = { 3, 3, -1, -1, 3, 3, 224, 3, 3, 767, 3, 3, -1, 3, 3, 224, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T409[] = { 3, 3, -1, -1, 3, 3, 224, 3, 3, 932, 3, 3, -1, 3, 3, 224, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T410[] = { 3, 3, -1, -1, 3, 3, 256, 3, 3, 517, 3, 3, -1, 3, 3, 256, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T411[] = { 33, 23, -1, -1, 22, 31, 379, 3, 29, 378, 33, 380, -1, 30, 33, 379, -1, -1, -1, 30, -1, -1, -1, 27, 33, 32, 3, -1, 30, -1, 28, 33, 3, 30, 30, 30, 30 }; static const ANTLR3_INT32 dfa72_T412[] = { 869, -1, -1, -1, -1, 935, -1, 781, -1, -1, -1, 773, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 936 }; static const ANTLR3_INT32 dfa72_T413[] = { 655, -1, -1, -1, -1, 656, -1, -1, -1, -1, -1, 657 }; static const ANTLR3_INT32 dfa72_T414[] = { 33, 23, -1, -1, 22, 31, 137, 3, 29, 136, 33, 138, -1, 30, 33, 137, -1, -1, -1, 30, -1, -1, -1, 27, 33, 32, 3, -1, 30, -1, 28, 33, 3, 30, 30, 30, 30 }; static const ANTLR3_INT32 dfa72_T415[] = { 1038, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1039 }; static const ANTLR3_INT32 dfa72_T416[] = { 3, 3, -1, -1, 3, 3, 337, 3, 339, 338, 3, 3, -1, 3, 3, 337, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T417[] = { 3, 3, -1, -1, 3, 3, 829, 3, 826, 827, 3, 828, -1, 3, 3, 829, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T418[] = { 3, 3, -1, -1, 3, 3, 499, 3, 3, 766, 3, 3, -1, 3, 3, 499, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T419[] = { 391, -1, -1, -1, -1, 390, -1, -1, -1, -1, -1, 390 }; static const ANTLR3_INT32 dfa72_T420[] = { 3, 3, -1, -1, 3, 3, 970, 3, 826, 969, 3, 971, -1, 3, 3, 970, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T421[] = { 779, -1, -1, -1, -1, 875, -1, 781, -1, -1, -1, 661, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 876 }; static const ANTLR3_INT32 dfa72_T422[] = { 3, 3, -1, -1, 3, 3, 499, 3, 3, 1011, 3, 3, -1, 3, 3, 499, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T423[] = { 3, 3, -1, -1, 3, 3, 364, 3, 366, 365, 3, 363, -1, 3, 3, 364, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T424[] = { 3, 3, -1, -1, 3, 3, 499, 3, 3, 931, 3, 3, -1, 3, 3, 499, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T425[] = { 3, 3, -1, -1, 3, 3, 1025, 3, 826, 1024, 3, 1026, -1, 3, 3, 1025, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T426[] = { 3, 3, -1, -1, 3, 3, 402, 3, 3, 667, 3, 3, -1, 3, 3, 402, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T427[] = { 3, 3, -1, -1, 3, 3, 414, 3, 3, 669, 3, 3, -1, 3, 3, 414, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T428[] = { 3, 3, -1, -1, 3, 3, 224, 3, 3, 503, 3, 3, -1, 3, 3, 224, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T429[] = { 3, 3, -1, -1, 3, 3, 402, 3, 3, 881, 3, 3, -1, 3, 3, 402, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T430[] = { 3, 3, -1, -1, 3, 3, 332, 3, 3, 620, 3, 3, -1, 3, 3, 332, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T431[] = { 869, -1, -1, -1, -1, 773, -1, 781, -1, -1, -1, 773, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 984 }; static const ANTLR3_INT32 dfa72_T432[] = { 659, -1, -1, -1, -1, 771, -1, -1, -1, -1, -1, 773, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 772 }; static const ANTLR3_INT32 dfa72_T433[] = { 3, 3, -1, -1, 3, 3, 460, 3, 462, 461, 3, 3, -1, 3, 3, 460, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa72_T434[] = { 3, 3, -1, -1, 3, 3, 650, 3, 520, 651, 3, 3, -1, 3, 3, 650, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa72_transitions[] = { dfa72_T259, dfa72_T53, NULL, NULL, dfa72_T115, dfa72_T53, dfa72_T53, dfa72_T53, dfa72_T53, dfa72_T53, dfa72_T325, dfa72_T197, dfa72_T47, dfa72_T354, dfa72_T47, dfa72_T47, dfa72_T47, dfa72_T47, dfa72_T47, dfa72_T47, dfa72_T47, dfa72_T293, dfa72_T16, dfa72_T339, dfa72_T1, dfa72_T1, dfa72_T324, dfa72_T355, dfa72_T47, dfa72_T102, dfa72_T47, dfa72_T47, dfa72_T47, dfa72_T47, dfa72_T1, dfa72_T1, dfa72_T265, dfa72_T47, dfa72_T47, dfa72_T270, dfa72_T118, dfa72_T64, dfa72_T72, dfa72_T2, dfa72_T2, dfa72_T2, dfa72_T356, dfa72_T2, dfa72_T2, dfa72_T2, dfa72_T2, dfa72_T2, dfa72_T170, dfa72_T377, dfa72_T16, dfa72_T16, dfa72_T16, dfa72_T357, dfa72_T16, dfa72_T16, dfa72_T16, dfa72_T16, dfa72_T16, dfa72_T260, dfa72_T375, dfa72_T95, dfa72_T344, dfa72_T272, dfa72_T1, dfa72_T1, dfa72_T175, dfa72_T414, dfa72_T47, dfa72_T87, dfa72_T199, dfa72_T294, dfa72_T17, dfa72_T9, dfa72_T17, dfa72_T86, dfa72_T96, dfa72_T17, dfa72_T17, dfa72_T17, dfa72_T17, dfa72_T224, dfa72_T211, dfa72_T64, dfa72_T64, dfa72_T64, dfa72_T353, dfa72_T64, dfa72_T64, dfa72_T64, dfa72_T64, dfa72_T64, dfa72_T221, dfa72_T350, dfa72_T28, dfa72_T268, dfa72_T121, dfa72_T336, dfa72_T170, dfa72_T170, dfa72_T170, dfa72_T359, dfa72_T170, dfa72_T170, dfa72_T170, dfa72_T170, dfa72_T170, dfa72_T112, dfa72_T80, dfa72_T247, dfa72_T247, dfa72_T247, dfa72_T361, dfa72_T247, dfa72_T247, dfa72_T247, dfa72_T247, dfa72_T267, dfa72_T241, dfa72_T1, dfa72_T1, dfa72_T24, dfa72_T1, dfa72_T213, dfa72_T1, dfa72_T1, dfa72_T1, dfa72_T1, dfa72_T1, dfa72_T47, dfa72_T94, dfa72_T94, dfa72_T1, dfa72_T1, dfa72_T281, dfa72_T87, dfa72_T87, dfa72_T87, dfa72_T130, dfa72_T158, dfa72_T262, dfa72_T87, dfa72_T87, dfa72_T87, dfa72_T87, dfa72_T87, dfa72_T31, dfa72_T49, dfa72_T39, dfa72_T371, dfa72_T148, dfa72_T148, dfa72_T250, dfa72_T153, dfa72_T17, dfa72_T244, dfa72_T231, dfa72_T17, dfa72_T17, dfa72_T55, dfa72_T86, dfa72_T86, dfa72_T86, dfa72_T362, dfa72_T86, dfa72_T86, dfa72_T86, dfa72_T86, dfa72_T86, dfa72_T240, dfa72_T369, dfa72_T181, dfa72_T191, dfa72_T224, dfa72_T224, dfa72_T224, dfa72_T8, dfa72_T224, dfa72_T224, dfa72_T224, dfa72_T224, dfa72_T224, dfa72_T50, dfa72_T367, dfa72_T73, dfa72_T73, dfa72_T73, dfa72_T10, dfa72_T73, dfa72_T73, dfa72_T73, dfa72_T73, dfa72_T274, dfa72_T203, dfa72_T1, dfa72_T1, dfa72_T416, dfa72_T1, dfa72_T169, dfa72_T1, dfa72_T28, dfa72_T28, dfa72_T28, dfa72_T364, dfa72_T28, dfa72_T28, dfa72_T28, dfa72_T28, dfa72_T28, dfa72_T194, dfa72_T2, dfa72_T121, dfa72_T121, dfa72_T121, dfa72_T365, dfa72_T121, dfa72_T121, dfa72_T121, dfa72_T121, dfa72_T121, dfa72_T22, dfa72_T161, dfa72_T276, dfa72_T112, dfa72_T112, dfa72_T112, dfa72_T363, dfa72_T112, dfa72_T112, dfa72_T112, dfa72_T112, dfa72_T112, dfa72_T423, dfa72_T125, dfa72_T277, dfa72_T16, dfa72_T328, dfa72_T1, dfa72_T1, dfa72_T113, dfa72_T379, dfa72_T411, dfa72_T304, dfa72_T158, dfa72_T158, dfa72_T158, dfa72_T131, dfa72_T158, dfa72_T158, dfa72_T158, dfa72_T158, dfa72_T158, dfa72_T75, dfa72_T215, dfa72_T419, dfa72_T31, dfa72_T31, dfa72_T31, dfa72_T137, dfa72_T6, dfa72_T337, dfa72_T31, dfa72_T31, dfa72_T31, dfa72_T31, dfa72_T31, dfa72_T49, dfa72_T49, dfa72_T49, dfa72_T138, dfa72_T177, dfa72_T291, dfa72_T49, dfa72_T49, dfa72_T49, dfa72_T49, dfa72_T49, dfa72_T52, dfa72_T39, dfa72_T39, dfa72_T39, dfa72_T11, dfa72_T39, dfa72_T39, dfa72_T39, dfa72_T39, dfa72_T39, dfa72_T266, dfa72_T83, dfa72_T196, dfa72_T185, dfa72_T216, dfa72_T15, dfa72_T199, dfa72_T384, dfa72_T252, dfa72_T206, dfa72_T292, dfa72_T17, dfa72_T278, dfa72_T227, dfa72_T1, dfa72_T1, dfa72_T433, dfa72_T1, dfa72_T195, dfa72_T1, dfa72_T181, dfa72_T181, dfa72_T181, dfa72_T12, dfa72_T181, dfa72_T181, dfa72_T181, dfa72_T181, dfa72_T181, dfa72_T85, dfa72_T340, dfa72_T56, dfa72_T50, dfa72_T50, dfa72_T50, dfa72_T13, dfa72_T50, dfa72_T50, dfa72_T50, dfa72_T50, dfa72_T50, dfa72_T27, dfa72_T298, dfa72_T57, dfa72_T64, dfa72_T263, dfa72_T1, dfa72_T1, dfa72_T70, dfa72_T347, dfa72_T279, dfa72_T154, dfa72_T346, dfa72_T194, dfa72_T194, dfa72_T194, dfa72_T360, dfa72_T194, dfa72_T194, dfa72_T194, dfa72_T194, dfa72_T194, dfa72_T271, dfa72_T428, dfa72_T1, dfa72_T1, dfa72_T253, dfa72_T1, dfa72_T403, dfa72_T1, dfa72_T170, dfa72_T275, dfa72_T407, dfa72_T1, dfa72_T1, dfa72_T226, dfa72_T1, dfa72_T382, dfa72_T1, dfa72_T247, dfa72_T1, dfa72_T1, dfa72_T100, dfa72_T100, dfa72_T1, dfa72_T1, dfa72_T218, dfa72_T1, dfa72_T1, dfa72_T284, dfa72_T87, dfa72_T307, dfa72_T1, dfa72_T1, dfa72_T410, dfa72_T122, dfa72_T1, dfa72_T1, dfa72_T380, dfa72_T74, dfa72_T331, dfa72_T303, dfa72_T6, dfa72_T6, dfa72_T6, dfa72_T140, dfa72_T6, dfa72_T6, dfa72_T6, dfa72_T6, dfa72_T6, dfa72_T150, dfa72_T283, dfa72_T308, dfa72_T177, dfa72_T177, dfa72_T177, dfa72_T142, dfa72_T177, dfa72_T177, dfa72_T177, dfa72_T177, dfa72_T177, dfa72_T104, dfa72_T232, dfa72_T52, dfa72_T52, dfa72_T52, dfa72_T144, dfa72_T36, dfa72_T345, dfa72_T52, dfa72_T52, dfa72_T52, dfa72_T52, dfa72_T52, dfa72_T58, dfa72_T309, dfa72_T1, dfa72_T1, dfa72_T405, dfa72_T1, dfa72_T254, dfa72_T1, dfa72_T196, dfa72_T190, dfa72_T190, dfa72_T190, dfa72_T162, dfa72_T190, dfa72_T3, dfa72_T18, dfa72_T15, dfa72_T15, dfa72_T15, dfa72_T145, dfa72_T15, dfa72_T15, dfa72_T15, dfa72_T15, dfa72_T15, dfa72_T93, dfa72_T37, dfa72_T128, dfa72_T128, dfa72_T242, dfa72_T234, dfa72_T86, dfa72_T297, dfa72_T1, dfa72_T1, dfa72_T90, dfa72_T368, dfa72_T59, dfa72_T107, dfa72_T1, dfa72_T1, dfa72_T239, dfa72_T1, dfa72_T61, dfa72_T1, dfa72_T224, dfa72_T60, dfa72_T51, dfa72_T1, dfa72_T1, dfa72_T192, dfa72_T1, dfa72_T430, dfa72_T1, dfa72_T73, dfa72_T1, dfa72_T1, dfa72_T46, dfa72_T46, dfa72_T1, dfa72_T1, dfa72_T174, dfa72_T28, dfa72_T154, dfa72_T154, dfa72_T154, dfa72_T358, dfa72_T154, dfa72_T154, dfa72_T154, dfa72_T154, dfa72_T154, dfa72_T38, dfa72_T187, dfa72_T273, dfa72_T121, dfa72_T76, dfa72_T1, dfa72_T1, dfa72_T335, dfa72_T165, dfa72_T112, dfa72_T41, dfa72_T1, dfa72_T1, dfa72_T320, dfa72_T129, dfa72_T378, dfa72_T1, dfa72_T158, dfa72_T88, dfa72_T1, dfa72_T1, dfa72_T434, dfa72_T219, dfa72_T413, dfa72_T1, dfa72_T42, dfa72_T31, dfa72_T311, dfa72_T1, dfa72_T1, dfa72_T48, dfa72_T189, dfa72_T1, dfa72_T1, dfa72_T426, dfa72_T49, dfa72_T312, dfa72_T1, dfa72_T1, dfa72_T427, dfa72_T149, dfa72_T1, dfa72_T1, dfa72_T391, dfa72_T315, dfa72_T36, dfa72_T36, dfa72_T36, dfa72_T134, dfa72_T36, dfa72_T36, dfa72_T36, dfa72_T36, dfa72_T36, dfa72_T166, dfa72_T322, dfa72_T39, dfa72_T388, dfa72_T1, dfa72_T1, dfa72_T334, dfa72_T89, dfa72_T200, dfa72_T333, dfa72_T333, dfa72_T3, dfa72_T3, dfa72_T3, dfa72_T143, dfa72_T3, dfa72_T3, dfa72_T3, dfa72_T3, dfa72_T3, dfa72_T287, dfa72_T404, dfa72_T319, dfa72_T84, dfa72_T97, dfa72_T93, dfa72_T93, dfa72_T93, dfa72_T136, dfa72_T93, dfa72_T93, dfa72_T93, dfa72_T93, dfa72_T93, dfa72_T30, dfa72_T44, dfa72_T37, dfa72_T37, dfa72_T37, dfa72_T139, dfa72_T37, dfa72_T37, dfa72_T37, dfa72_T37, dfa72_T37, dfa72_T109, dfa72_T257, dfa72_T205, dfa72_T300, dfa72_T1, dfa72_T1, dfa72_T79, dfa72_T79, dfa72_T1, dfa72_T1, dfa72_T193, dfa72_T181, dfa72_T217, dfa72_T1, dfa72_T1, dfa72_T123, dfa72_T341, dfa72_T50, dfa72_T168, dfa72_T1, dfa72_T1, dfa72_T82, dfa72_T302, dfa72_T352, dfa72_T269, dfa72_T20, dfa72_T1, dfa72_T1, dfa72_T264, dfa72_T1, dfa72_T418, dfa72_T1, dfa72_T194, dfa72_T1, dfa72_T1, dfa72_T7, dfa72_T7, dfa72_T1, dfa72_T1, dfa72_T408, dfa72_T1, dfa72_T1, dfa72_T288, dfa72_T288, dfa72_T1, dfa72_T1, dfa72_T387, dfa72_T1, dfa72_T1, dfa72_T220, dfa72_T1, dfa72_T1, dfa72_T214, dfa72_T214, dfa72_T1, dfa72_T1, dfa72_T383, dfa72_T432, dfa72_T67, dfa72_T376, dfa72_T393, dfa72_T103, dfa72_T1, dfa72_T295, dfa72_T6, dfa72_T159, dfa72_T1, dfa72_T1, dfa72_T81, dfa72_T286, dfa72_T177, dfa72_T110, dfa72_T1, dfa72_T1, dfa72_T26, dfa72_T235, dfa72_T52, dfa72_T314, dfa72_T1, dfa72_T1, dfa72_T78, dfa72_T212, dfa72_T1, dfa72_T1, dfa72_T21, dfa72_T1, dfa72_T1, dfa72_T23, dfa72_T23, dfa72_T1, dfa72_T1, dfa72_T256, dfa72_T146, dfa72_T146, dfa72_T146, dfa72_T114, dfa72_T146, dfa72_T190, dfa72_T190, dfa72_T318, dfa72_T201, dfa72_T1, dfa72_T1, dfa72_T338, dfa72_T1, dfa72_T160, dfa72_T1, dfa72_T15, dfa72_T84, dfa72_T84, dfa72_T84, dfa72_T132, dfa72_T84, dfa72_T84, dfa72_T84, dfa72_T84, dfa72_T84, dfa72_T348, dfa72_T32, dfa72_T316, dfa72_T30, dfa72_T30, dfa72_T30, dfa72_T133, dfa72_T30, dfa72_T30, dfa72_T30, dfa72_T30, dfa72_T30, dfa72_T327, dfa72_T417, dfa72_T310, dfa72_T106, dfa72_T111, dfa72_T109, dfa72_T109, dfa72_T109, dfa72_T135, dfa72_T109, dfa72_T109, dfa72_T109, dfa72_T109, dfa72_T109, dfa72_T251, dfa72_T236, dfa72_T372, dfa72_T1, dfa72_T1, dfa72_T299, dfa72_T299, dfa72_T1, dfa72_T1, dfa72_T65, dfa72_T1, dfa72_T1, dfa72_T246, dfa72_T246, dfa72_T1, dfa72_T1, dfa72_T4, dfa72_T1, dfa72_T1, dfa72_T172, dfa72_T154, dfa72_T99, dfa72_T1, dfa72_T1, dfa72_T343, dfa72_T186, dfa72_T164, dfa72_T127, dfa72_T1, dfa72_T222, dfa72_T389, dfa72_T1, dfa72_T282, dfa72_T105, dfa72_T1, dfa72_T396, dfa72_T1, dfa72_T421, dfa72_T116, dfa72_T1, dfa72_T397, dfa72_T147, dfa72_T1, dfa72_T1, dfa72_T1, dfa72_T285, dfa72_T285, dfa72_T1, dfa72_T1, dfa72_T429, dfa72_T1, dfa72_T1, dfa72_T233, dfa72_T233, dfa72_T1, dfa72_T1, dfa72_T392, dfa72_T36, dfa72_T176, dfa72_T1, dfa72_T1, dfa72_T101, dfa72_T326, dfa72_T91, dfa72_T280, dfa72_T280, dfa72_T3, dfa72_T323, dfa72_T1, dfa72_T1, dfa72_T229, dfa72_T400, dfa72_T317, dfa72_T261, dfa72_T1, dfa72_T1, dfa72_T385, dfa72_T1, dfa72_T228, dfa72_T1, dfa72_T93, dfa72_T313, dfa72_T223, dfa72_T1, dfa72_T1, dfa72_T349, dfa72_T1, dfa72_T173, dfa72_T1, dfa72_T37, dfa72_T106, dfa72_T106, dfa72_T106, dfa72_T141, dfa72_T106, dfa72_T106, dfa72_T106, dfa72_T106, dfa72_T106, dfa72_T370, dfa72_T63, dfa72_T305, dfa72_T255, dfa72_T204, dfa72_T351, dfa72_T1, dfa72_T1, dfa72_T198, dfa72_T342, dfa72_T301, dfa72_T1, dfa72_T1, dfa72_T1, dfa72_T34, dfa72_T34, dfa72_T1, dfa72_T1, dfa72_T424, dfa72_T1, dfa72_T1, dfa72_T409, dfa72_T1, dfa72_T1, dfa72_T390, dfa72_T1, dfa72_T1, dfa72_T386, dfa72_T412, dfa72_T117, dfa72_T1, dfa72_T1, dfa72_T124, dfa72_T1, dfa72_T151, dfa72_T19, dfa72_T1, dfa72_T77, dfa72_T381, dfa72_T152, dfa72_T171, dfa72_T290, dfa72_T238, dfa72_T1, dfa72_T1, dfa72_T321, dfa72_T321, dfa72_T1, dfa72_T1, dfa72_T25, dfa72_T1, dfa72_T1, dfa72_T258, dfa72_T146, dfa72_T146, dfa72_T1, dfa72_T1, dfa72_T40, dfa72_T40, dfa72_T1, dfa72_T1, dfa72_T163, dfa72_T84, dfa72_T366, dfa72_T1, dfa72_T1, dfa72_T296, dfa72_T35, dfa72_T30, dfa72_T332, dfa72_T1, dfa72_T1, dfa72_T245, dfa72_T420, dfa72_T306, dfa72_T289, dfa72_T1, dfa72_T1, dfa72_T395, dfa72_T1, dfa72_T237, dfa72_T1, dfa72_T109, dfa72_T248, dfa72_T1, dfa72_T1, dfa72_T1, dfa72_T68, dfa72_T1, dfa72_T1, dfa72_T5, dfa72_T188, dfa72_T1, dfa72_T1, dfa72_T1, dfa72_T431, dfa72_T1, dfa72_T54, dfa72_T373, dfa72_T1, dfa72_T178, dfa72_T398, dfa72_T1, dfa72_T108, dfa72_T1, dfa72_T1, dfa72_T179, dfa72_T399, dfa72_T202, dfa72_T1, dfa72_T1, dfa72_T0, dfa72_T1, dfa72_T1, dfa72_T394, dfa72_T330, dfa72_T1, dfa72_T406, dfa72_T1, dfa72_T1, dfa72_T33, dfa72_T33, dfa72_T1, dfa72_T1, dfa72_T225, dfa72_T1, dfa72_T1, dfa72_T69, dfa72_T69, dfa72_T1, dfa72_T1, dfa72_T180, dfa72_T106, dfa72_T374, dfa72_T1, dfa72_T1, dfa72_T329, dfa72_T66, dfa72_T148, dfa72_T1, dfa72_T1, dfa72_T1, dfa72_T1, dfa72_T422, dfa72_T1, dfa72_T98, dfa72_T1, dfa72_T1, dfa72_T207, dfa72_T155, dfa72_T126, dfa72_T1, dfa72_T208, dfa72_T156, dfa72_T1, dfa72_T1, dfa72_T1, dfa72_T1, dfa72_T29, dfa72_T1, dfa72_T1, dfa72_T167, dfa72_T43, dfa72_T425, dfa72_T1, dfa72_T1, dfa72_T62, dfa72_T62, dfa72_T1, dfa72_T1, dfa72_T243, dfa72_T1, dfa72_T119, dfa72_T1, dfa72_T182, dfa72_T401, dfa72_T1, dfa72_T183, dfa72_T402, dfa72_T1, dfa72_T1, dfa72_T1, dfa72_T1, dfa72_T230, dfa72_T1, dfa72_T1, dfa72_T184, dfa72_T71, dfa72_T1, dfa72_T209, dfa72_T415, dfa72_T210, dfa72_T92, dfa72_T1, dfa72_T1, dfa72_T1, dfa72_T1, dfa72_T249, dfa72_T14, dfa72_T1, dfa72_T120, dfa72_T1, dfa72_T1, dfa72_T45, dfa72_T1, dfa72_T157, dfa72_T1, dfa72_T1, dfa72_T1 }; static ANTLR3_INT32 dfa72_sst(pbelle_sip_messageParser ctx, pANTLR3_BASE_RECOGNIZER recognizer, pANTLR3_INT_STREAM is, pANTLR3_CYCLIC_DFA dfa, ANTLR3_INT32 s) { ANTLR3_INT32 _s; _s = s; switch (s) { case 0: { ANTLR3_UINT32 LA72_1034; ANTLR3_MARKER index72_1034; LA72_1034 = LA(1); index72_1034 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_1034); if ( s>=0 ) { return s; } } break; case 1: { ANTLR3_UINT32 LA72_816; ANTLR3_MARKER index72_816; LA72_816 = LA(1); index72_816 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_816); if ( s>=0 ) { return s; } } break; case 2: { ANTLR3_UINT32 LA72_905; ANTLR3_MARKER index72_905; LA72_905 = LA(1); index72_905 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_905); if ( s>=0 ) { return s; } } break; case 3: { ANTLR3_UINT32 LA72_959; ANTLR3_MARKER index72_959; LA72_959 = LA(1); index72_959 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_959); if ( s>=0 ) { return s; } } break; case 4: { ANTLR3_UINT32 LA72_995; ANTLR3_MARKER index72_995; LA72_995 = LA(1); index72_995 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_995); if ( s>=0 ) { return s; } } break; case 5: { ANTLR3_UINT32 LA72_625; ANTLR3_MARKER index72_625; LA72_625 = LA(1); index72_625 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_625); if ( s>=0 ) { return s; } } break; case 6: { ANTLR3_UINT32 LA72_764; ANTLR3_MARKER index72_764; LA72_764 = LA(1); index72_764 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_764); if ( s>=0 ) { return s; } } break; case 7: { ANTLR3_UINT32 LA72_853; ANTLR3_MARKER index72_853; LA72_853 = LA(1); index72_853 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_853); if ( s>=0 ) { return s; } } break; case 8: { ANTLR3_UINT32 LA72_24; ANTLR3_MARKER index72_24; LA72_24 = LA(1); index72_24 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_24); if ( s>=0 ) { return s; } } break; case 9: { ANTLR3_UINT32 LA72_35; ANTLR3_MARKER index72_35; LA72_35 = LA(1); index72_35 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_35); if ( s>=0 ) { return s; } } break; case 10: { ANTLR3_UINT32 LA72_68; ANTLR3_MARKER index72_68; LA72_68 = LA(1); index72_68 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_68); if ( s>=0 ) { return s; } } break; case 11: { ANTLR3_UINT32 LA72_129; ANTLR3_MARKER index72_129; LA72_129 = LA(1); index72_129 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_129); if ( s>=0 ) { return s; } } break; case 12: { ANTLR3_UINT32 LA72_131; ANTLR3_MARKER index72_131; LA72_131 = LA(1); index72_131 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_131); if ( s>=0 ) { return s; } } break; case 13: { ANTLR3_UINT32 LA72_137; ANTLR3_MARKER index72_137; LA72_137 = LA(1); index72_137 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_137); if ( s>=0 ) { return s; } } break; case 14: { ANTLR3_UINT32 LA72_379; ANTLR3_MARKER index72_379; LA72_379 = LA(1); index72_379 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_379); if ( s>=0 ) { return s; } } break; case 15: { ANTLR3_UINT32 LA72_528; ANTLR3_MARKER index72_528; LA72_528 = LA(1); index72_528 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_528); if ( s>=0 ) { return s; } } break; case 16: { ANTLR3_UINT32 LA72_665; ANTLR3_MARKER index72_665; LA72_665 = LA(1); index72_665 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_665); if ( s>=0 ) { return s; } } break; case 17: { ANTLR3_UINT32 LA72_785; ANTLR3_MARKER index72_785; LA72_785 = LA(1); index72_785 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_785); if ( s>=0 ) { return s; } } break; case 18: { ANTLR3_UINT32 LA72_916; ANTLR3_MARKER index72_916; LA72_916 = LA(1); index72_916 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_916); if ( s>=0 ) { return s; } } break; case 19: { ANTLR3_UINT32 LA72_921; ANTLR3_MARKER index72_921; LA72_921 = LA(1); index72_921 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_921); if ( s>=0 ) { return s; } } break; case 20: { ANTLR3_UINT32 LA72_974; ANTLR3_MARKER index72_974; LA72_974 = LA(1); index72_974 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_974); if ( s>=0 ) { return s; } } break; case 21: { ANTLR3_UINT32 LA72_1004; ANTLR3_MARKER index72_1004; LA72_1004 = LA(1); index72_1004 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_1004); if ( s>=0 ) { return s; } } break; case 22: { ANTLR3_UINT32 LA72_1009; ANTLR3_MARKER index72_1009; LA72_1009 = LA(1); index72_1009 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_1009); if ( s>=0 ) { return s; } } break; case 23: { ANTLR3_UINT32 LA72_1036; ANTLR3_MARKER index72_1036; LA72_1036 = LA(1); index72_1036 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_1036); if ( s>=0 ) { return s; } } break; case 24: { ANTLR3_UINT32 LA72_676; ANTLR3_MARKER index72_676; LA72_676 = LA(1); index72_676 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_676); if ( s>=0 ) { return s; } } break; case 25: { ANTLR3_UINT32 LA72_681; ANTLR3_MARKER index72_681; LA72_681 = LA(1); index72_681 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_681); if ( s>=0 ) { return s; } } break; case 26: { ANTLR3_UINT32 LA72_800; ANTLR3_MARKER index72_800; LA72_800 = LA(1); index72_800 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_800); if ( s>=0 ) { return s; } } break; case 27: { ANTLR3_UINT32 LA72_883; ANTLR3_MARKER index72_883; LA72_883 = LA(1); index72_883 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_883); if ( s>=0 ) { return s; } } break; case 28: { ANTLR3_UINT32 LA72_888; ANTLR3_MARKER index72_888; LA72_888 = LA(1); index72_888 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_888); if ( s>=0 ) { return s; } } break; case 29: { ANTLR3_UINT32 LA72_997; ANTLR3_MARKER index72_997; LA72_997 = LA(1); index72_997 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_997); if ( s>=0 ) { return s; } } break; case 30: { ANTLR3_UINT32 LA72_980; ANTLR3_MARKER index72_980; LA72_980 = LA(1); index72_980 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_980); if ( s>=0 ) { return s; } } break; case 31: { ANTLR3_UINT32 LA72_917; ANTLR3_MARKER index72_917; LA72_917 = LA(1); index72_917 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_917); if ( s>=0 ) { return s; } } break; case 32: { ANTLR3_UINT32 LA72_975; ANTLR3_MARKER index72_975; LA72_975 = LA(1); index72_975 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_975); if ( s>=0 ) { return s; } } break; case 33: { ANTLR3_UINT32 LA72_1005; ANTLR3_MARKER index72_1005; LA72_1005 = LA(1); index72_1005 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_1005); if ( s>=0 ) { return s; } } break; case 34: { ANTLR3_UINT32 LA72_677; ANTLR3_MARKER index72_677; LA72_677 = LA(1); index72_677 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_677); if ( s>=0 ) { return s; } } break; case 35: { ANTLR3_UINT32 LA72_801; ANTLR3_MARKER index72_801; LA72_801 = LA(1); index72_801 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_801); if ( s>=0 ) { return s; } } break; case 36: { ANTLR3_UINT32 LA72_884; ANTLR3_MARKER index72_884; LA72_884 = LA(1); index72_884 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_884); if ( s>=0 ) { return s; } } break; case 37: { ANTLR3_UINT32 LA72_851; ANTLR3_MARKER index72_851; LA72_851 = LA(1); index72_851 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_851); if ( s>=0 ) { return s; } } break; case 38: { ANTLR3_UINT32 LA72_1033; ANTLR3_MARKER index72_1033; LA72_1033 = LA(1); index72_1033 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_1033); if ( s>=0 ) { return s; } } break; case 39: { ANTLR3_UINT32 LA72_994; ANTLR3_MARKER index72_994; LA72_994 = LA(1); index72_994 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_994); if ( s>=0 ) { return s; } } break; case 40: { ANTLR3_UINT32 LA72_467; ANTLR3_MARKER index72_467; LA72_467 = LA(1); index72_467 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_467); if ( s>=0 ) { return s; } } break; case 41: { ANTLR3_UINT32 LA72_612; ANTLR3_MARKER index72_612; LA72_612 = LA(1); index72_612 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_612); if ( s>=0 ) { return s; } } break; case 42: { ANTLR3_UINT32 LA72_745; ANTLR3_MARKER index72_745; LA72_745 = LA(1); index72_745 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_745); if ( s>=0 ) { return s; } } break; case 43: { ANTLR3_UINT32 LA72_642; ANTLR3_MARKER index72_642; LA72_642 = LA(1); index72_642 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_642); if ( s>=0 ) { return s; } } break; case 44: { ANTLR3_UINT32 LA72_862; ANTLR3_MARKER index72_862; LA72_862 = LA(1); index72_862 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_862); if ( s>=0 ) { return s; } } break; case 45: { ANTLR3_UINT32 LA72_367; ANTLR3_MARKER index72_367; LA72_367 = LA(1); index72_367 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_367); if ( s>=0 ) { return s; } } break; case 46: { ANTLR3_UINT32 LA72_1019; ANTLR3_MARKER index72_1019; LA72_1019 = LA(1); index72_1019 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_1019); if ( s>=0 ) { return s; } } break; case 47: { ANTLR3_UINT32 LA72_924; ANTLR3_MARKER index72_924; LA72_924 = LA(1); index72_924 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_924); if ( s>=0 ) { return s; } } break; case 48: { ANTLR3_UINT32 LA72_1042; ANTLR3_MARKER index72_1042; LA72_1042 = LA(1); index72_1042 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_1042); if ( s>=0 ) { return s; } } break; case 49: { ANTLR3_UINT32 LA72_635; ANTLR3_MARKER index72_635; LA72_635 = LA(1); index72_635 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_635); if ( s>=0 ) { return s; } } break; case 50: { ANTLR3_UINT32 LA72_859; ANTLR3_MARKER index72_859; LA72_859 = LA(1); index72_859 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_859); if ( s>=0 ) { return s; } } break; case 51: { ANTLR3_UINT32 LA72_358; ANTLR3_MARKER index72_358; LA72_358 = LA(1); index72_358 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_358); if ( s>=0 ) { return s; } } break; case 52: { ANTLR3_UINT32 LA72_702; ANTLR3_MARKER index72_702; LA72_702 = LA(1); index72_702 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_702); if ( s>=0 ) { return s; } } break; case 53: { ANTLR3_UINT32 LA72_652; ANTLR3_MARKER index72_652; LA72_652 = LA(1); index72_652 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_652); if ( s>=0 ) { return s; } } break; case 54: { ANTLR3_UINT32 LA72_769; ANTLR3_MARKER index72_769; LA72_769 = LA(1); index72_769 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_769); if ( s>=0 ) { return s; } } break; case 55: { ANTLR3_UINT32 LA72_387; ANTLR3_MARKER index72_387; LA72_387 = LA(1); index72_387 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_387); if ( s>=0 ) { return s; } } break; case 56: { ANTLR3_UINT32 LA72_999; ANTLR3_MARKER index72_999; LA72_999 = LA(1); index72_999 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_999); if ( s>=0 ) { return s; } } break; case 57: { ANTLR3_UINT32 LA72_865; ANTLR3_MARKER index72_865; LA72_865 = LA(1); index72_865 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_865); if ( s>=0 ) { return s; } } break; case 58: { ANTLR3_UINT32 LA72_899; ANTLR3_MARKER index72_899; LA72_899 = LA(1); index72_899 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_899); if ( s>=0 ) { return s; } } break; case 59: { ANTLR3_UINT32 LA72_981; ANTLR3_MARKER index72_981; LA72_981 = LA(1); index72_981 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_981); if ( s>=0 ) { return s; } } break; case 60: { ANTLR3_UINT32 LA72_979; ANTLR3_MARKER index72_979; LA72_979 = LA(1); index72_979 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_979); if ( s>=0 ) { return s; } } break; case 61: { ANTLR3_UINT32 LA72_627; ANTLR3_MARKER index72_627; LA72_627 = LA(1); index72_627 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_627); if ( s>=0 ) { return s; } } break; case 62: { ANTLR3_UINT32 LA72_856; ANTLR3_MARKER index72_856; LA72_856 = LA(1); index72_856 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_856); if ( s>=0 ) { return s; } } break; case 63: { ANTLR3_UINT32 LA72_478; ANTLR3_MARKER index72_478; LA72_478 = LA(1); index72_478 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_478); if ( s>=0 ) { return s; } } break; case 64: { ANTLR3_UINT32 LA72_969; ANTLR3_MARKER index72_969; LA72_969 = LA(1); index72_969 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_969); if ( s>=0 ) { return s; } } break; case 65: { ANTLR3_UINT32 LA72_827; ANTLR3_MARKER index72_827; LA72_827 = LA(1); index72_827 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_827); if ( s>=0 ) { return s; } } break; case 66: { ANTLR3_UINT32 LA72_795; ANTLR3_MARKER index72_795; LA72_795 = LA(1); index72_795 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_795); if ( s>=0 ) { return s; } } break; case 67: { ANTLR3_UINT32 LA72_540; ANTLR3_MARKER index72_540; LA72_540 = LA(1); index72_540 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_540); if ( s>=0 ) { return s; } } break; case 68: { ANTLR3_UINT32 LA72_198; ANTLR3_MARKER index72_198; LA72_198 = LA(1); index72_198 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_198); if ( s>=0 ) { return s; } } break; case 69: { ANTLR3_UINT32 LA72_337; ANTLR3_MARKER index72_337; LA72_337 = LA(1); index72_337 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_337); if ( s>=0 ) { return s; } } break; case 70: { ANTLR3_UINT32 LA72_203; ANTLR3_MARKER index72_203; LA72_203 = LA(1); index72_203 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_203); if ( s>=0 ) { return s; } } break; case 71: { ANTLR3_UINT32 LA72_482; ANTLR3_MARKER index72_482; LA72_482 = LA(1); index72_482 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_482); if ( s>=0 ) { return s; } } break; case 72: { ANTLR3_UINT32 LA72_487; ANTLR3_MARKER index72_487; LA72_487 = LA(1); index72_487 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_487); if ( s>=0 ) { return s; } } break; case 73: { ANTLR3_UINT32 LA72_759; ANTLR3_MARKER index72_759; LA72_759 = LA(1); index72_759 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_759); if ( s>=0 ) { return s; } } break; case 74: { ANTLR3_UINT32 LA72_928; ANTLR3_MARKER index72_928; LA72_928 = LA(1); index72_928 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_928); if ( s>=0 ) { return s; } } break; case 75: { ANTLR3_UINT32 LA72_1024; ANTLR3_MARKER index72_1024; LA72_1024 = LA(1); index72_1024 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_1024); if ( s>=0 ) { return s; } } break; case 76: { ANTLR3_UINT32 LA72_952; ANTLR3_MARKER index72_952; LA72_952 = LA(1); index72_952 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_952); if ( s>=0 ) { return s; } } break; case 77: { ANTLR3_UINT32 LA72_755; ANTLR3_MARKER index72_755; LA72_755 = LA(1); index72_755 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_755); if ( s>=0 ) { return s; } } break; case 78: { ANTLR3_UINT32 LA72_429; ANTLR3_MARKER index72_429; LA72_429 = LA(1); index72_429 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_429); if ( s>=0 ) { return s; } } break; case 79: { ANTLR3_UINT32 LA72_434; ANTLR3_MARKER index72_434; LA72_434 = LA(1); index72_434 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_434); if ( s>=0 ) { return s; } } break; case 80: { ANTLR3_UINT32 LA72_557; ANTLR3_MARKER index72_557; LA72_557 = LA(1); index72_557 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_557); if ( s>=0 ) { return s; } } break; case 81: { ANTLR3_UINT32 LA72_683; ANTLR3_MARKER index72_683; LA72_683 = LA(1); index72_683 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_683); if ( s>=0 ) { return s; } } break; case 82: { ANTLR3_UINT32 LA72_688; ANTLR3_MARKER index72_688; LA72_688 = LA(1); index72_688 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_688); if ( s>=0 ) { return s; } } break; case 83: { ANTLR3_UINT32 LA72_891; ANTLR3_MARKER index72_891; LA72_891 = LA(1); index72_891 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_891); if ( s>=0 ) { return s; } } break; case 84: { ANTLR3_UINT32 LA72_515; ANTLR3_MARKER index72_515; LA72_515 = LA(1); index72_515 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_515); if ( s>=0 ) { return s; } } break; case 85: { ANTLR3_UINT32 LA72_305; ANTLR3_MARKER index72_305; LA72_305 = LA(1); index72_305 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_305); if ( s>=0 ) { return s; } } break; case 86: { ANTLR3_UINT32 LA72_310; ANTLR3_MARKER index72_310; LA72_310 = LA(1); index72_310 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_310); if ( s>=0 ) { return s; } } break; case 87: { ANTLR3_UINT32 LA72_460; ANTLR3_MARKER index72_460; LA72_460 = LA(1); index72_460 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_460); if ( s>=0 ) { return s; } } break; case 88: { ANTLR3_UINT32 LA72_602; ANTLR3_MARKER index72_602; LA72_602 = LA(1); index72_602 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_602); if ( s>=0 ) { return s; } } break; case 89: { ANTLR3_UINT32 LA72_607; ANTLR3_MARKER index72_607; LA72_607 = LA(1); index72_607 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_607); if ( s>=0 ) { return s; } } break; case 90: { ANTLR3_UINT32 LA72_847; ANTLR3_MARKER index72_847; LA72_847 = LA(1); index72_847 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_847); if ( s>=0 ) { return s; } } break; case 91: { ANTLR3_UINT32 LA72_531; ANTLR3_MARKER index72_531; LA72_531 = LA(1); index72_531 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_531); if ( s>=0 ) { return s; } } break; case 92: { ANTLR3_UINT32 LA72_1021; ANTLR3_MARKER index72_1021; LA72_1021 = LA(1); index72_1021 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_1021); if ( s>=0 ) { return s; } } break; case 93: { ANTLR3_UINT32 LA72_962; ANTLR3_MARKER index72_962; LA72_962 = LA(1); index72_962 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_962); if ( s>=0 ) { return s; } } break; case 94: { ANTLR3_UINT32 LA72_949; ANTLR3_MARKER index72_949; LA72_949 = LA(1); index72_949 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_949); if ( s>=0 ) { return s; } } break; case 95: { ANTLR3_UINT32 LA72_123; ANTLR3_MARKER index72_123; LA72_123 = LA(1); index72_123 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_123); if ( s>=0 ) { return s; } } break; case 96: { ANTLR3_UINT32 LA72_128; ANTLR3_MARKER index72_128; LA72_128 = LA(1); index72_128 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_128); if ( s>=0 ) { return s; } } break; case 97: { ANTLR3_UINT32 LA72_241; ANTLR3_MARKER index72_241; LA72_241 = LA(1); index72_241 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_241); if ( s>=0 ) { return s; } } break; case 98: { ANTLR3_UINT32 LA72_371; ANTLR3_MARKER index72_371; LA72_371 = LA(1); index72_371 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_371); if ( s>=0 ) { return s; } } break; case 99: { ANTLR3_UINT32 LA72_376; ANTLR3_MARKER index72_376; LA72_376 = LA(1); index72_376 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_376); if ( s>=0 ) { return s; } } break; case 100: { ANTLR3_UINT32 LA72_646; ANTLR3_MARKER index72_646; LA72_646 = LA(1); index72_646 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_646); if ( s>=0 ) { return s; } } break; case 101: { ANTLR3_UINT32 LA72_818; ANTLR3_MARKER index72_818; LA72_818 = LA(1); index72_818 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_818); if ( s>=0 ) { return s; } } break; case 102: { ANTLR3_UINT32 LA72_788; ANTLR3_MARKER index72_788; LA72_788 = LA(1); index72_788 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_788); if ( s>=0 ) { return s; } } break; case 103: { ANTLR3_UINT32 LA72_199; ANTLR3_MARKER index72_199; LA72_199 = LA(1); index72_199 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_199); if ( s>=0 ) { return s; } } break; case 104: { ANTLR3_UINT32 LA72_338; ANTLR3_MARKER index72_338; LA72_338 = LA(1); index72_338 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_338); if ( s>=0 ) { return s; } } break; case 105: { ANTLR3_UINT32 LA72_483; ANTLR3_MARKER index72_483; LA72_483 = LA(1); index72_483 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_483); if ( s>=0 ) { return s; } } break; case 106: { ANTLR3_UINT32 LA72_919; ANTLR3_MARKER index72_919; LA72_919 = LA(1); index72_919 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_919); if ( s>=0 ) { return s; } } break; case 107: { ANTLR3_UINT32 LA72_680; ANTLR3_MARKER index72_680; LA72_680 = LA(1); index72_680 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_680); if ( s>=0 ) { return s; } } break; case 108: { ANTLR3_UINT32 LA72_1035; ANTLR3_MARKER index72_1035; LA72_1035 = LA(1); index72_1035 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_1035); if ( s>=0 ) { return s; } } break; case 109: { ANTLR3_UINT32 LA72_1008; ANTLR3_MARKER index72_1008; LA72_1008 = LA(1); index72_1008 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_1008); if ( s>=0 ) { return s; } } break; case 110: { ANTLR3_UINT32 LA72_996; ANTLR3_MARKER index72_996; LA72_996 = LA(1); index72_996 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_996); if ( s>=0 ) { return s; } } break; case 111: { ANTLR3_UINT32 LA72_887; ANTLR3_MARKER index72_887; LA72_887 = LA(1); index72_887 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_887); if ( s>=0 ) { return s; } } break; case 112: { ANTLR3_UINT32 LA72_306; ANTLR3_MARKER index72_306; LA72_306 = LA(1); index72_306 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_306); if ( s>=0 ) { return s; } } break; case 113: { ANTLR3_UINT32 LA72_461; ANTLR3_MARKER index72_461; LA72_461 = LA(1); index72_461 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_461); if ( s>=0 ) { return s; } } break; case 114: { ANTLR3_UINT32 LA72_603; ANTLR3_MARKER index72_603; LA72_603 = LA(1); index72_603 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_603); if ( s>=0 ) { return s; } } break; case 115: { ANTLR3_UINT32 LA72_124; ANTLR3_MARKER index72_124; LA72_124 = LA(1); index72_124 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_124); if ( s>=0 ) { return s; } } break; case 116: { ANTLR3_UINT32 LA72_242; ANTLR3_MARKER index72_242; LA72_242 = LA(1); index72_242 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_242); if ( s>=0 ) { return s; } } break; case 117: { ANTLR3_UINT32 LA72_372; ANTLR3_MARKER index72_372; LA72_372 = LA(1); index72_372 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_372); if ( s>=0 ) { return s; } } break; case 118: { ANTLR3_UINT32 LA72_748; ANTLR3_MARKER index72_748; LA72_748 = LA(1); index72_748 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_748); if ( s>=0 ) { return s; } } break; case 119: { ANTLR3_UINT32 LA72_469; ANTLR3_MARKER index72_469; LA72_469 = LA(1); index72_469 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_469); if ( s>=0 ) { return s; } } break; case 120: { ANTLR3_UINT32 LA72_925; ANTLR3_MARKER index72_925; LA72_925 = LA(1); index72_925 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_925); if ( s>=0 ) { return s; } } break; case 121: { ANTLR3_UINT32 LA72_25; ANTLR3_MARKER index72_25; LA72_25 = LA(1); index72_25 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_25); if ( s>=0 ) { return s; } } break; case 122: { ANTLR3_UINT32 LA72_69; ANTLR3_MARKER index72_69; LA72_69 = LA(1); index72_69 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_69); if ( s>=0 ) { return s; } } break; case 123: { ANTLR3_UINT32 LA72_130; ANTLR3_MARKER index72_130; LA72_130 = LA(1); index72_130 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_130); if ( s>=0 ) { return s; } } break; case 124: { ANTLR3_UINT32 LA72_132; ANTLR3_MARKER index72_132; LA72_132 = LA(1); index72_132 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_132); if ( s>=0 ) { return s; } } break; case 125: { ANTLR3_UINT32 LA72_430; ANTLR3_MARKER index72_430; LA72_430 = LA(1); index72_430 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_430); if ( s>=0 ) { return s; } } break; case 126: { ANTLR3_UINT32 LA72_558; ANTLR3_MARKER index72_558; LA72_558 = LA(1); index72_558 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_558); if ( s>=0 ) { return s; } } break; case 127: { ANTLR3_UINT32 LA72_684; ANTLR3_MARKER index72_684; LA72_684 = LA(1); index72_684 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_684); if ( s>=0 ) { return s; } } break; case 128: { ANTLR3_UINT32 LA72_201; ANTLR3_MARKER index72_201; LA72_201 = LA(1); index72_201 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_201); if ( s>=0 ) { return s; } } break; case 129: { ANTLR3_UINT32 LA72_486; ANTLR3_MARKER index72_486; LA72_486 = LA(1); index72_486 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_486); if ( s>=0 ) { return s; } } break; case 130: { ANTLR3_UINT32 LA72_475; ANTLR3_MARKER index72_475; LA72_475 = LA(1); index72_475 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_475); if ( s>=0 ) { return s; } } break; case 131: { ANTLR3_UINT32 LA72_480; ANTLR3_MARKER index72_480; LA72_480 = LA(1); index72_480 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_480); if ( s>=0 ) { return s; } } break; case 132: { ANTLR3_UINT32 LA72_617; ANTLR3_MARKER index72_617; LA72_617 = LA(1); index72_617 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_617); if ( s>=0 ) { return s; } } break; case 133: { ANTLR3_UINT32 LA72_751; ANTLR3_MARKER index72_751; LA72_751 = LA(1); index72_751 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_751); if ( s>=0 ) { return s; } } break; case 134: { ANTLR3_UINT32 LA72_756; ANTLR3_MARKER index72_756; LA72_756 = LA(1); index72_756 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_756); if ( s>=0 ) { return s; } } break; case 135: { ANTLR3_UINT32 LA72_929; ANTLR3_MARKER index72_929; LA72_929 = LA(1); index72_929 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_929); if ( s>=0 ) { return s; } } break; case 136: { ANTLR3_UINT32 LA72_933; ANTLR3_MARKER index72_933; LA72_933 = LA(1); index72_933 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_933); if ( s>=0 ) { return s; } } break; case 137: { ANTLR3_UINT32 LA72_758; ANTLR3_MARKER index72_758; LA72_758 = LA(1); index72_758 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_758); if ( s>=0 ) { return s; } } break; case 138: { ANTLR3_UINT32 LA72_308; ANTLR3_MARKER index72_308; LA72_308 = LA(1); index72_308 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_308); if ( s>=0 ) { return s; } } break; case 139: { ANTLR3_UINT32 LA72_606; ANTLR3_MARKER index72_606; LA72_606 = LA(1); index72_606 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_606); if ( s>=0 ) { return s; } } break; case 140: { ANTLR3_UINT32 LA72_846; ANTLR3_MARKER index72_846; LA72_846 = LA(1); index72_846 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_846); if ( s>=0 ) { return s; } } break; case 141: { ANTLR3_UINT32 LA72_956; ANTLR3_MARKER index72_956; LA72_956 = LA(1); index72_956 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_956); if ( s>=0 ) { return s; } } break; case 142: { ANTLR3_UINT32 LA72_932; ANTLR3_MARKER index72_932; LA72_932 = LA(1); index72_932 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_932); if ( s>=0 ) { return s; } } break; case 143: { ANTLR3_UINT32 LA72_375; ANTLR3_MARKER index72_375; LA72_375 = LA(1); index72_375 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_375); if ( s>=0 ) { return s; } } break; case 144: { ANTLR3_UINT32 LA72_645; ANTLR3_MARKER index72_645; LA72_645 = LA(1); index72_645 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_645); if ( s>=0 ) { return s; } } break; case 145: { ANTLR3_UINT32 LA72_126; ANTLR3_MARKER index72_126; LA72_126 = LA(1); index72_126 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_126); if ( s>=0 ) { return s; } } break; case 146: { ANTLR3_UINT32 LA72_1011; ANTLR3_MARKER index72_1011; LA72_1011 = LA(1); index72_1011 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_1011); if ( s>=0 ) { return s; } } break; case 147: { ANTLR3_UINT32 LA72_364; ANTLR3_MARKER index72_364; LA72_364 = LA(1); index72_364 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_364); if ( s>=0 ) { return s; } } break; case 148: { ANTLR3_UINT32 LA72_369; ANTLR3_MARKER index72_369; LA72_369 = LA(1); index72_369 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_369); if ( s>=0 ) { return s; } } break; case 149: { ANTLR3_UINT32 LA72_510; ANTLR3_MARKER index72_510; LA72_510 = LA(1); index72_510 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_510); if ( s>=0 ) { return s; } } break; case 150: { ANTLR3_UINT32 LA72_638; ANTLR3_MARKER index72_638; LA72_638 = LA(1); index72_638 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_638); if ( s>=0 ) { return s; } } break; case 151: { ANTLR3_UINT32 LA72_643; ANTLR3_MARKER index72_643; LA72_643 = LA(1); index72_643 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_643); if ( s>=0 ) { return s; } } break; case 152: { ANTLR3_UINT32 LA72_863; ANTLR3_MARKER index72_863; LA72_863 = LA(1); index72_863 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_863); if ( s>=0 ) { return s; } } break; case 153: { ANTLR3_UINT32 LA72_136; ANTLR3_MARKER index72_136; LA72_136 = LA(1); index72_136 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_136); if ( s>=0 ) { return s; } } break; case 154: { ANTLR3_UINT32 LA72_34; ANTLR3_MARKER index72_34; LA72_34 = LA(1); index72_34 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_34); if ( s>=0 ) { return s; } } break; case 155: { ANTLR3_UINT32 LA72_378; ANTLR3_MARKER index72_378; LA72_378 = LA(1); index72_378 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_378); if ( s>=0 ) { return s; } } break; case 156: { ANTLR3_UINT32 LA72_466; ANTLR3_MARKER index72_466; LA72_466 = LA(1); index72_466 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_466); if ( s>=0 ) { return s; } } break; case 157: { ANTLR3_UINT32 LA72_471; ANTLR3_MARKER index72_471; LA72_471 = LA(1); index72_471 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_471); if ( s>=0 ) { return s; } } break; case 158: { ANTLR3_UINT32 LA72_611; ANTLR3_MARKER index72_611; LA72_611 = LA(1); index72_611 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_611); if ( s>=0 ) { return s; } } break; case 159: { ANTLR3_UINT32 LA72_744; ANTLR3_MARKER index72_744; LA72_744 = LA(1); index72_744 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_744); if ( s>=0 ) { return s; } } break; case 160: { ANTLR3_UINT32 LA72_749; ANTLR3_MARKER index72_749; LA72_749 = LA(1); index72_749 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_749); if ( s>=0 ) { return s; } } break; case 161: { ANTLR3_UINT32 LA72_926; ANTLR3_MARKER index72_926; LA72_926 = LA(1); index72_926 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_926); if ( s>=0 ) { return s; } } break; case 162: { ANTLR3_UINT32 LA72_699; ANTLR3_MARKER index72_699; LA72_699 = LA(1); index72_699 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_699); if ( s>=0 ) { return s; } } break; case 163: { ANTLR3_UINT32 LA72_704; ANTLR3_MARKER index72_704; LA72_704 = LA(1); index72_704 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_704); if ( s>=0 ) { return s; } } break; case 164: { ANTLR3_UINT32 LA72_809; ANTLR3_MARKER index72_809; LA72_809 = LA(1); index72_809 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_809); if ( s>=0 ) { return s; } } break; case 165: { ANTLR3_UINT32 LA72_895; ANTLR3_MARKER index72_895; LA72_895 = LA(1); index72_895 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_895); if ( s>=0 ) { return s; } } break; case 166: { ANTLR3_UINT32 LA72_900; ANTLR3_MARKER index72_900; LA72_900 = LA(1); index72_900 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_900); if ( s>=0 ) { return s; } } break; case 167: { ANTLR3_UINT32 LA72_1000; ANTLR3_MARKER index72_1000; LA72_1000 = LA(1); index72_1000 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_1000); if ( s>=0 ) { return s; } } break; case 168: { ANTLR3_UINT32 LA72_383; ANTLR3_MARKER index72_383; LA72_383 = LA(1); index72_383 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_383); if ( s>=0 ) { return s; } } break; case 169: { ANTLR3_UINT32 LA72_388; ANTLR3_MARKER index72_388; LA72_388 = LA(1); index72_388 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_388); if ( s>=0 ) { return s; } } break; case 170: { ANTLR3_UINT32 LA72_518; ANTLR3_MARKER index72_518; LA72_518 = LA(1); index72_518 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_518); if ( s>=0 ) { return s; } } break; case 171: { ANTLR3_UINT32 LA72_648; ANTLR3_MARKER index72_648; LA72_648 = LA(1); index72_648 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_648); if ( s>=0 ) { return s; } } break; case 172: { ANTLR3_UINT32 LA72_653; ANTLR3_MARKER index72_653; LA72_653 = LA(1); index72_653 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_653); if ( s>=0 ) { return s; } } break; case 173: { ANTLR3_UINT32 LA72_866; ANTLR3_MARKER index72_866; LA72_866 = LA(1); index72_866 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_866); if ( s>=0 ) { return s; } } break; case 174: { ANTLR3_UINT32 LA72_384; ANTLR3_MARKER index72_384; LA72_384 = LA(1); index72_384 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_384); if ( s>=0 ) { return s; } } break; case 175: { ANTLR3_UINT32 LA72_519; ANTLR3_MARKER index72_519; LA72_519 = LA(1); index72_519 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_519); if ( s>=0 ) { return s; } } break; case 176: { ANTLR3_UINT32 LA72_649; ANTLR3_MARKER index72_649; LA72_649 = LA(1); index72_649 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_649); if ( s>=0 ) { return s; } } break; case 177: { ANTLR3_UINT32 LA72_355; ANTLR3_MARKER index72_355; LA72_355 = LA(1); index72_355 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_355); if ( s>=0 ) { return s; } } break; case 178: { ANTLR3_UINT32 LA72_360; ANTLR3_MARKER index72_360; LA72_360 = LA(1); index72_360 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_360); if ( s>=0 ) { return s; } } break; case 179: { ANTLR3_UINT32 LA72_504; ANTLR3_MARKER index72_504; LA72_504 = LA(1); index72_504 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_504); if ( s>=0 ) { return s; } } break; case 180: { ANTLR3_UINT32 LA72_631; ANTLR3_MARKER index72_631; LA72_631 = LA(1); index72_631 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_631); if ( s>=0 ) { return s; } } break; case 181: { ANTLR3_UINT32 LA72_636; ANTLR3_MARKER index72_636; LA72_636 = LA(1); index72_636 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_636); if ( s>=0 ) { return s; } } break; case 182: { ANTLR3_UINT32 LA72_860; ANTLR3_MARKER index72_860; LA72_860 = LA(1); index72_860 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_860); if ( s>=0 ) { return s; } } break; case 183: { ANTLR3_UINT32 LA72_700; ANTLR3_MARKER index72_700; LA72_700 = LA(1); index72_700 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_700); if ( s>=0 ) { return s; } } break; case 184: { ANTLR3_UINT32 LA72_810; ANTLR3_MARKER index72_810; LA72_810 = LA(1); index72_810 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_810); if ( s>=0 ) { return s; } } break; case 185: { ANTLR3_UINT32 LA72_896; ANTLR3_MARKER index72_896; LA72_896 = LA(1); index72_896 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_896); if ( s>=0 ) { return s; } } break; case 186: { ANTLR3_UINT32 LA72_824; ANTLR3_MARKER index72_824; LA72_824 = LA(1); index72_824 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_824); if ( s>=0 ) { return s; } } break; case 187: { ANTLR3_UINT32 LA72_829; ANTLR3_MARKER index72_829; LA72_829 = LA(1); index72_829 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_829); if ( s>=0 ) { return s; } } break; case 188: { ANTLR3_UINT32 LA72_910; ANTLR3_MARKER index72_910; LA72_910 = LA(1); index72_910 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_910); if ( s>=0 ) { return s; } } break; case 189: { ANTLR3_UINT32 LA72_965; ANTLR3_MARKER index72_965; LA72_965 = LA(1); index72_965 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_965); if ( s>=0 ) { return s; } } break; case 190: { ANTLR3_UINT32 LA72_970; ANTLR3_MARKER index72_970; LA72_970 = LA(1); index72_970 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_970); if ( s>=0 ) { return s; } } break; case 191: { ANTLR3_UINT32 LA72_1025; ANTLR3_MARKER index72_1025; LA72_1025 = LA(1); index72_1025 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_1025); if ( s>=0 ) { return s; } } break; case 192: { ANTLR3_UINT32 LA72_772; ANTLR3_MARKER index72_772; LA72_772 = LA(1); index72_772 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_772); if ( s>=0 ) { return s; } } break; case 193: { ANTLR3_UINT32 LA72_523; ANTLR3_MARKER index72_523; LA72_523 = LA(1); index72_523 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_523); if ( s>=0 ) { return s; } } break; case 194: { ANTLR3_UINT32 LA72_987; ANTLR3_MARKER index72_987; LA72_987 = LA(1); index72_987 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_987); if ( s>=0 ) { return s; } } break; case 195: { ANTLR3_UINT32 LA72_1047; ANTLR3_MARKER index72_1047; LA72_1047 = LA(1); index72_1047 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_1047); if ( s>=0 ) { return s; } } break; case 196: { ANTLR3_UINT32 LA72_876; ANTLR3_MARKER index72_876; LA72_876 = LA(1); index72_876 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_876); if ( s>=0 ) { return s; } } break; case 197: { ANTLR3_UINT32 LA72_984; ANTLR3_MARKER index72_984; LA72_984 = LA(1); index72_984 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_984); if ( s>=0 ) { return s; } } break; case 198: { ANTLR3_UINT32 LA72_660; ANTLR3_MARKER index72_660; LA72_660 = LA(1); index72_660 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_660); if ( s>=0 ) { return s; } } break; case 199: { ANTLR3_UINT32 LA72_775; ANTLR3_MARKER index72_775; LA72_775 = LA(1); index72_775 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_775); if ( s>=0 ) { return s; } } break; case 200: { ANTLR3_UINT32 LA72_777; ANTLR3_MARKER index72_777; LA72_777 = LA(1); index72_777 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_777); if ( s>=0 ) { return s; } } break; case 201: { ANTLR3_UINT32 LA72_780; ANTLR3_MARKER index72_780; LA72_780 = LA(1); index72_780 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_780); if ( s>=0 ) { return s; } } break; case 202: { ANTLR3_UINT32 LA72_942; ANTLR3_MARKER index72_942; LA72_942 = LA(1); index72_942 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_942); if ( s>=0 ) { return s; } } break; case 203: { ANTLR3_UINT32 LA72_945; ANTLR3_MARKER index72_945; LA72_945 = LA(1); index72_945 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_945); if ( s>=0 ) { return s; } } break; case 204: { ANTLR3_UINT32 LA72_783; ANTLR3_MARKER index72_783; LA72_783 = LA(1); index72_783 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_783); if ( s>=0 ) { return s; } } break; case 205: { ANTLR3_UINT32 LA72_1028; ANTLR3_MARKER index72_1028; LA72_1028 = LA(1); index72_1028 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_1028); if ( s>=0 ) { return s; } } break; case 206: { ANTLR3_UINT32 LA72_870; ANTLR3_MARKER index72_870; LA72_870 = LA(1); index72_870 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_870); if ( s>=0 ) { return s; } } break; case 207: { ANTLR3_UINT32 LA72_936; ANTLR3_MARKER index72_936; LA72_936 = LA(1); index72_936 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_936); if ( s>=0 ) { return s; } } break; case 208: { ANTLR3_UINT32 LA72_1039; ANTLR3_MARKER index72_1039; LA72_1039 = LA(1); index72_1039 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_1039); if ( s>=0 ) { return s; } } break; case 209: { ANTLR3_UINT32 LA72_991; ANTLR3_MARKER index72_991; LA72_991 = LA(1); index72_991 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_991); if ( s>=0 ) { return s; } } break; case 210: { ANTLR3_UINT32 LA72_1013; ANTLR3_MARKER index72_1013; LA72_1013 = LA(1); index72_1013 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_1013); if ( s>=0 ) { return s; } } break; case 211: { ANTLR3_UINT32 LA72_1046; ANTLR3_MARKER index72_1046; LA72_1046 = LA(1); index72_1046 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_1046); if ( s>=0 ) { return s; } } break; case 212: { ANTLR3_UINT32 LA72_1048; ANTLR3_MARKER index72_1048; LA72_1048 = LA(1); index72_1048 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_1048); if ( s>=0 ) { return s; } } break; case 213: { ANTLR3_UINT32 LA72_1016; ANTLR3_MARKER index72_1016; LA72_1016 = LA(1); index72_1016 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_1016); if ( s>=0 ) { return s; } } break; case 214: { ANTLR3_UINT32 LA72_1044; ANTLR3_MARKER index72_1044; LA72_1044 = LA(1); index72_1044 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_1044); if ( s>=0 ) { return s; } } break; case 215: { ANTLR3_UINT32 LA72_939; ANTLR3_MARKER index72_939; LA72_939 = LA(1); index72_939 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_939); if ( s>=0 ) { return s; } } break; case 216: { ANTLR3_UINT32 LA72_873; ANTLR3_MARKER index72_873; LA72_873 = LA(1); index72_873 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_873); if ( s>=0 ) { return s; } } break; case 217: { ANTLR3_UINT32 LA72_871; ANTLR3_MARKER index72_871; LA72_871 = LA(1); index72_871 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_871); if ( s>=0 ) { return s; } } break; case 218: { ANTLR3_UINT32 LA72_986; ANTLR3_MARKER index72_986; LA72_986 = LA(1); index72_986 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_986); if ( s>=0 ) { return s; } } break; case 219: { ANTLR3_UINT32 LA72_944; ANTLR3_MARKER index72_944; LA72_944 = LA(1); index72_944 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_944); if ( s>=0 ) { return s; } } break; case 220: { ANTLR3_UINT32 LA72_1041; ANTLR3_MARKER index72_1041; LA72_1041 = LA(1); index72_1041 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_1041); if ( s>=0 ) { return s; } } break; case 221: { ANTLR3_UINT32 LA72_536; ANTLR3_MARKER index72_536; LA72_536 = LA(1); index72_536 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_536); if ( s>=0 ) { return s; } } break; case 222: { ANTLR3_UINT32 LA72_541; ANTLR3_MARKER index72_541; LA72_541 = LA(1); index72_541 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_541); if ( s>=0 ) { return s; } } break; case 223: { ANTLR3_UINT32 LA72_670; ANTLR3_MARKER index72_670; LA72_670 = LA(1); index72_670 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_670); if ( s>=0 ) { return s; } } break; case 224: { ANTLR3_UINT32 LA72_791; ANTLR3_MARKER index72_791; LA72_791 = LA(1); index72_791 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_791); if ( s>=0 ) { return s; } } break; case 225: { ANTLR3_UINT32 LA72_796; ANTLR3_MARKER index72_796; LA72_796 = LA(1); index72_796 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_796); if ( s>=0 ) { return s; } } break; case 226: { ANTLR3_UINT32 LA72_953; ANTLR3_MARKER index72_953; LA72_953 = LA(1); index72_953 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_953); if ( s>=0 ) { return s; } } break; case 227: { ANTLR3_UINT32 LA72_537; ANTLR3_MARKER index72_537; LA72_537 = LA(1); index72_537 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_537); if ( s>=0 ) { return s; } } break; case 228: { ANTLR3_UINT32 LA72_671; ANTLR3_MARKER index72_671; LA72_671 = LA(1); index72_671 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_671); if ( s>=0 ) { return s; } } break; case 229: { ANTLR3_UINT32 LA72_792; ANTLR3_MARKER index72_792; LA72_792 = LA(1); index72_792 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_792); if ( s>=0 ) { return s; } } break; case 230: { ANTLR3_UINT32 LA72_624; ANTLR3_MARKER index72_624; LA72_624 = LA(1); index72_624 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_624); if ( s>=0 ) { return s; } } break; case 231: { ANTLR3_UINT32 LA72_629; ANTLR3_MARKER index72_629; LA72_629 = LA(1); index72_629 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_629); if ( s>=0 ) { return s; } } break; case 232: { ANTLR3_UINT32 LA72_763; ANTLR3_MARKER index72_763; LA72_763 = LA(1); index72_763 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_763); if ( s>=0 ) { return s; } } break; case 233: { ANTLR3_UINT32 LA72_852; ANTLR3_MARKER index72_852; LA72_852 = LA(1); index72_852 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_852); if ( s>=0 ) { return s; } } break; case 234: { ANTLR3_UINT32 LA72_857; ANTLR3_MARKER index72_857; LA72_857 = LA(1); index72_857 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_857); if ( s>=0 ) { return s; } } break; case 235: { ANTLR3_UINT32 LA72_982; ANTLR3_MARKER index72_982; LA72_982 = LA(1); index72_982 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_982); if ( s>=0 ) { return s; } } break; case 236: { ANTLR3_UINT32 LA72_365; ANTLR3_MARKER index72_365; LA72_365 = LA(1); index72_365 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_365); if ( s>=0 ) { return s; } } break; case 237: { ANTLR3_UINT32 LA72_511; ANTLR3_MARKER index72_511; LA72_511 = LA(1); index72_511 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_511); if ( s>=0 ) { return s; } } break; case 238: { ANTLR3_UINT32 LA72_639; ANTLR3_MARKER index72_639; LA72_639 = LA(1); index72_639 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_639); if ( s>=0 ) { return s; } } break; case 239: { ANTLR3_UINT32 LA72_432; ANTLR3_MARKER index72_432; LA72_432 = LA(1); index72_432 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_432); if ( s>=0 ) { return s; } } break; case 240: { ANTLR3_UINT32 LA72_476; ANTLR3_MARKER index72_476; LA72_476 = LA(1); index72_476 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_476); if ( s>=0 ) { return s; } } break; case 241: { ANTLR3_UINT32 LA72_618; ANTLR3_MARKER index72_618; LA72_618 = LA(1); index72_618 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_618); if ( s>=0 ) { return s; } } break; case 242: { ANTLR3_UINT32 LA72_752; ANTLR3_MARKER index72_752; LA72_752 = LA(1); index72_752 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_752); if ( s>=0 ) { return s; } } break; case 243: { ANTLR3_UINT32 LA72_825; ANTLR3_MARKER index72_825; LA72_825 = LA(1); index72_825 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_825); if ( s>=0 ) { return s; } } break; case 244: { ANTLR3_UINT32 LA72_911; ANTLR3_MARKER index72_911; LA72_911 = LA(1); index72_911 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_911); if ( s>=0 ) { return s; } } break; case 245: { ANTLR3_UINT32 LA72_966; ANTLR3_MARKER index72_966; LA72_966 = LA(1); index72_966 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_966); if ( s>=0 ) { return s; } } break; case 246: { ANTLR3_UINT32 LA72_890; ANTLR3_MARKER index72_890; LA72_890 = LA(1); index72_890 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_890); if ( s>=0 ) { return s; } } break; case 247: { ANTLR3_UINT32 LA72_687; ANTLR3_MARKER index72_687; LA72_687 = LA(1); index72_687 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_687); if ( s>=0 ) { return s; } } break; case 248: { ANTLR3_UINT32 LA72_934; ANTLR3_MARKER index72_934; LA72_934 = LA(1); index72_934 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_934); if ( s>=0 ) { return s; } } break; case 249: { ANTLR3_UINT32 LA72_356; ANTLR3_MARKER index72_356; LA72_356 = LA(1); index72_356 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_356); if ( s>=0 ) { return s; } } break; case 250: { ANTLR3_UINT32 LA72_505; ANTLR3_MARKER index72_505; LA72_505 = LA(1); index72_505 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_505); if ( s>=0 ) { return s; } } break; case 251: { ANTLR3_UINT32 LA72_632; ANTLR3_MARKER index72_632; LA72_632 = LA(1); index72_632 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_632); if ( s>=0 ) { return s; } } break; case 252: { ANTLR3_UINT32 LA72_815; ANTLR3_MARKER index72_815; LA72_815 = LA(1); index72_815 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_815); if ( s>=0 ) { return s; } } break; case 253: { ANTLR3_UINT32 LA72_820; ANTLR3_MARKER index72_820; LA72_820 = LA(1); index72_820 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_820); if ( s>=0 ) { return s; } } break; case 254: { ANTLR3_UINT32 LA72_904; ANTLR3_MARKER index72_904; LA72_904 = LA(1); index72_904 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_904); if ( s>=0 ) { return s; } } break; case 255: { ANTLR3_UINT32 LA72_958; ANTLR3_MARKER index72_958; LA72_958 = LA(1); index72_958 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_958); if ( s>=0 ) { return s; } } break; case 256: { ANTLR3_UINT32 LA72_963; ANTLR3_MARKER index72_963; LA72_963 = LA(1); index72_963 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_963); if ( s>=0 ) { return s; } } break; case 257: { ANTLR3_UINT32 LA72_1022; ANTLR3_MARKER index72_1022; LA72_1022 = LA(1); index72_1022 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_1022); if ( s>=0 ) { return s; } } break; case 258: { ANTLR3_UINT32 LA72_527; ANTLR3_MARKER index72_527; LA72_527 = LA(1); index72_527 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_527); if ( s>=0 ) { return s; } } break; case 259: { ANTLR3_UINT32 LA72_532; ANTLR3_MARKER index72_532; LA72_532 = LA(1); index72_532 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_532); if ( s>=0 ) { return s; } } break; case 260: { ANTLR3_UINT32 LA72_664; ANTLR3_MARKER index72_664; LA72_664 = LA(1); index72_664 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_664); if ( s>=0 ) { return s; } } break; case 261: { ANTLR3_UINT32 LA72_784; ANTLR3_MARKER index72_784; LA72_784 = LA(1); index72_784 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_784); if ( s>=0 ) { return s; } } break; case 262: { ANTLR3_UINT32 LA72_789; ANTLR3_MARKER index72_789; LA72_789 = LA(1); index72_789 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_789); if ( s>=0 ) { return s; } } break; case 263: { ANTLR3_UINT32 LA72_950; ANTLR3_MARKER index72_950; LA72_950 = LA(1); index72_950 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_950); if ( s>=0 ) { return s; } } break; case 264: { ANTLR3_UINT32 LA72_1020; ANTLR3_MARKER index72_1020; LA72_1020 = LA(1); index72_1020 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index72_1020); if ( s>=0 ) { return s; } } break; } if (BACKTRACKING > 0) { FAILEDFLAG = ANTLR3_TRUE; return -1; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)"765:11: ( uri | generic_uri )"; EXCEPTION->decisionNum = 72; EXCEPTION->state = _s; return -1; } /* Declare tracking structure for Cyclic DFA 72 */ static ANTLR3_CYCLIC_DFA cdfa72 = { 72, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"765:11: ( uri | generic_uri )", (CDFA_SPECIAL_FUNC) dfa72_sst, antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa72_eot, /* EOT table */ dfa72_eof, /* EOF table */ dfa72_min, /* Minimum tokens for each state */ dfa72_max, /* Maximum tokens for each state */ dfa72_accept, /* Accept table */ dfa72_special, /* Special transition states */ dfa72_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 72 * --------------------- *//** Static dfa state tables for Cyclic dfa: * 779:11: ( fast_uri | generic_uri ) */ static const ANTLR3_INT32 dfa75_eot[614] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa75_eof[614] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, -1, 3, 3, 3, 3, -1, 3, 3, 3, 3, 3, 3, -1, 3, 3, 3, 3, 3, 3, -1, 3, 3, 3, -1, 3, 3, 3, 3, 3, -1, -1, -1, 3, 3, 3, 3, 3, -1, 3, 3, 3, 3, 3, 3, 3, 3, -1, 3, 3, 3, -1, 3, 3, 3, 3, 3, -1, -1, 3, -1, 3, 3, 3, 3, 3, -1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, -1, 3, 3, 3, 3, -1, 3, 3, 3, 3, -1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, -1, 3, 3, 3, -1, 3, 3, 3, 3, 3, -1, -1, 3, 3, 3, 3, 3, -1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, -1, 3, 3, 3, 3, -1, 3, 3, 3, -1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, -1, 3, 3, 3, 3, 3, -1, -1, -1, 3, 3, 3, -1, 3, 3, 3, 3, 3, -1, -1, -1, 3, -1, 3, 3, 3, -1, 3, 3, 3, 3, 3, -1, -1, -1, 3, 3, 3, -1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, -1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, -1, 3, 3, 3, 3, 3, -1, -1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, -1, 3, 3, 3, -1, 3, 3, 3, 3, 3, -1, -1, -1, 3, 3, 3, -1, 3, 3, 3, 3, 3, -1, -1, -1, 3, -1, 3, 3, 3, 3, 3, -1, 3, 3, 3, 3, 3, -1, 3, -1, 3, 3, -1, -1, -1, -1, 3, 3, 3, -1, 3, 3, 3, 3, 3, -1, -1, -1, 3, 3, 3, -1, 3, 3, 3, 3, 3, -1, -1, 3, 3, 3, -1, 3, 3, 3, 3, 3, 3, 3, -1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, -1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, -1, 3, 3, 3, 3, 3, -1, -1, -1, 3, 3, 3, -1, -1, -1, 3, -1, 3, -1, -1, 3, 3, 3, -1, 3, 3, 3, 3, 3, -1, -1, 3, 3, 3, 3, 3, 3, 3, -1, 3, 3, 3, 3, 3, -1, -1, -1, 3, 3, 3, 3, 3, -1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, -1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, -1, 3, -1, -1, -1, -1, -1, -1, -1, 3, 3, 3, -1, 3, 3, 3, 3, 3, 3, 3, -1, 3, 3, 3, 3, -1, 3, 3, 3, 3, 3, -1, -1, -1, 3, 3, 3, -1, 3, 3, 3, 3, 3, -1, -1, -1, 3, 3, 3, 3, 3, -1, 3, 3, 3, 3, 3, 3, 3, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, -1, 3, 3, 3, 3, 3, -1, -1, -1, 3, 3, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, 3, 3, 3, -1, 3, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa75_min[614] = { 6, 6, -1, -1, 4, 6, 6, 6, 6, 6, 0, 0, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 0, 0, 13, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 0, 0, 4, 13, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 13, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 0, 0, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 0, 0, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 0, 0, 13, 4, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 0, 0, 8, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 0, 0, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 0, 0, 13, 4, 13, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 13, 4, 13, 4, 4, 13, 8, 8, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 0, 0, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 0, 0, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 6, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 13, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 0, 0, 13, 4, 4, 4, 8, 0, 8, 4, 13, 4, 13, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 0, 0, 4, 4, 6, 6, 4, 4, 4, 13, 4, 4, 4, 4, 4, 0, 0, 13, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 8, 8, 8, 8, 13, 0, 8, 4, 4, 4, 13, 4, 4, 4, 6, 4, 4, 4, 13, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 0, 0, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 0, 0, 13, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 8, 0, 8, 8, 0, 13, 0, 8, 13, 0, 13, 13, 0, 4, 6, 6, 4, 13, 4, 13, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 0, 0, 13, 4, 4, 4, 8, 13, 0, 0, 8, 0, 13, 8, 0, 8, 8, 13, 13, 4, 4, 4, 4, 13, 4, 4, 8, 0, 8, 8, 0, 13, 13, 0, 8, 0, 0, 13, 13, 15, 4, 4, 0, 8, 0, 0, 15, 13, 8, 0, 15, 13, 8, 0, 13, 13, 0, 13, 13, 0, 15, 13, 15, 13, 13, 0, 13, 0, 33, 0, 33, 0, 0, 0 }; static const ANTLR3_INT32 dfa75_max[614] = { 40, 40, -1, -1, 40, 40, 40, 40, 40, 40, 0, 0, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 0, 0, 19, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 0, 0, 40, 19, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 19, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 0, 0, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 0, 0, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 0, 0, 19, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 0, 0, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 0, 0, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 0, 0, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 0, 0, 19, 40, 19, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 19, 40, 19, 40, 40, 19, 33, 8, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 0, 0, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 0, 0, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 19, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 0, 0, 19, 40, 40, 40, 19, 0, 33, 40, 19, 40, 19, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 0, 0, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 0, 0, 19, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 33, 33, 33, 33, 13, 0, 33, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 0, 0, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 0, 0, 19, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 33, 0, 33, 33, 0, 13, 0, 33, 19, 0, 13, 15, 0, 40, 40, 40, 40, 19, 40, 19, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 0, 0, 19, 40, 40, 40, 33, 19, 0, 0, 33, 0, 15, 33, 0, 33, 33, 15, 15, 40, 40, 40, 40, 19, 40, 40, 33, 0, 33, 33, 0, 15, 13, 0, 33, 0, 0, 15, 13, 15, 40, 40, 0, 33, 0, 0, 15, 15, 33, 0, 15, 15, 33, 0, 15, 13, 0, 15, 13, 0, 15, 33, 15, 33, 33, 0, 33, 0, 33, 0, 33, 0, 0, 0 }; static const ANTLR3_INT32 dfa75_accept[614] = { -1, -1, 1, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa75_special[614] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7, 18, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 64, 13, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 53, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 59, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 61, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 54, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, 20, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 8, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, 58, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 16, 57, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 10, 52, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 15, -1, -1, -1, -1, -1, 24, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 21, 60, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2, 17, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 23, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 14, 55, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5, 22, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 25, -1, -1, 32, -1, 33, -1, -1, 36, -1, -1, 39, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 19, 56, -1, -1, -1, -1, -1, -1, 41, 47, -1, 51, -1, -1, 37, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 27, -1, -1, 40, -1, -1, 34, -1, 48, 31, -1, -1, -1, -1, -1, 49, -1, 45, 29, -1, -1, -1, 38, -1, -1, -1, 46, -1, -1, 50, -1, -1, 44, -1, -1, -1, -1, -1, 30, -1, 28, -1, 42, -1, 26, 35, 43 }; /** Used when there is no transition table entry for a particular state */ #define dfa75_T_empty NULL static const ANTLR3_INT32 dfa75_T0[] = { 78, 35, -1, -1, 3, 82, 74, 3, 76, 75, 81, 76, -1, 76, 79, 74, -1, -1, -1, 76, -1, -1, -1, 77, 80, 3, 3, -1, 76, -1, 3, 3, 3, 76, 76, 76, 76 }; static const ANTLR3_INT32 dfa75_T1[] = { 65, 124, -1, -1, 123, 71, 125, 3, 128, 364, 70, 365, -1, 63, 68, 125, -1, -1, -1, 63, -1, -1, -1, 64, 69, 73, 3, -1, 63, -1, 72, 129, 3, 63, 63, 63, 63 }; static const ANTLR3_INT32 dfa75_T2[] = { 40, 35, -1, -1, 34, 44, 36, 3, 38, 37, 43, 38, -1, 38, 41, 36, -1, -1, -1, 38, -1, -1, -1, 39, 42, 46, 3, -1, 38, -1, 45, 33, 3, 38, 38, 38, 38 }; static const ANTLR3_INT32 dfa75_T3[] = { 65, 124, -1, -1, 123, 71, 125, 3, 128, 507, 70, 508, -1, 63, 68, 125, -1, -1, -1, 63, -1, -1, -1, 64, 69, 73, 3, -1, 63, -1, 72, 129, 3, 63, 63, 63, 63 }; static const ANTLR3_INT32 dfa75_T4[] = { 31, 23, -1, -1, 22, 29, 24, 3, 26, 25, 31, 26, -1, 26, 31, 24, -1, -1, -1, 26, -1, -1, -1, 27, 31, 30, 3, -1, 26, -1, 28, 31, 3, 26, 26, 26, 26 }; static const ANTLR3_INT32 dfa75_T5[] = { -1 }; static const ANTLR3_INT32 dfa75_T6[] = { 488, 434, -1, -1, 3, 492, 484, 3, 486, 485, 491, 486, -1, 486, 489, 484, -1, -1, -1, 486, -1, -1, -1, 487, 490, 3, 3, -1, 486, -1, 3, 3, 3, 486, 486, 486, 486 }; static const ANTLR3_INT32 dfa75_T7[] = { 294, 289, -1, -1, 288, 298, 290, 3, 292, 291, 297, 292, -1, 292, 295, 290, -1, -1, -1, 292, -1, -1, -1, 293, 296, 46, 3, -1, 292, -1, 177, 85, 3, 292, 292, 292, 292 }; static const ANTLR3_INT32 dfa75_T8[] = { 535, 497, -1, -1, 3, 539, 531, 3, 533, 532, 538, 533, -1, 533, 536, 531, -1, -1, -1, 533, -1, -1, -1, 534, 537, 3, 3, -1, 533, -1, 3, 3, 3, 533, 533, 533, 533 }; static const ANTLR3_INT32 dfa75_T9[] = { 65, 124, -1, -1, 123, 71, 125, 3, 128, 130, 70, 131, -1, 63, 68, 125, -1, -1, -1, 63, -1, -1, -1, 64, 69, 73, 3, -1, 63, -1, 72, 129, 3, 63, 63, 63, 63 }; static const ANTLR3_INT32 dfa75_T10[] = { 152, 147, 3, -1, 146, 156, 344, 3, 346, 345, 155, 346, -1, 346, 407, 344, -1, -1, -1, 346, -1, -1, -1, 347, 348, 73, 3, -1, 346, -1, 252, 254, 3, 346, 346, 346, 346 }; static const ANTLR3_INT32 dfa75_T11[] = { 195, 99, -1, -1, 3, 199, 191, 3, 193, 192, 198, 193, -1, 193, 196, 191, -1, -1, -1, 193, -1, -1, -1, 194, 197, 3, 3, -1, 193, -1, 3, 3, 3, 193, 193, 193, 193 }; static const ANTLR3_INT32 dfa75_T12[] = { 244, 124, -1, -1, 3, 248, 240, 3, 242, 241, 247, 242, -1, 242, 245, 240, -1, -1, -1, 242, -1, -1, -1, 243, 246, 3, 3, -1, 242, -1, 3, 3, 3, 242, 242, 242, 242 }; static const ANTLR3_INT32 dfa75_T13[] = { 152, 147, 3, -1, 146, 156, 463, 3, 465, 464, 155, 465, -1, 465, 153, 463, -1, -1, -1, 465, -1, -1, -1, 466, 467, 73, 3, -1, 465, -1, 252, 254, 3, 465, 465, 465, 465 }; static const ANTLR3_INT32 dfa75_T14[] = { 166, 158, -1, -1, 157, 164, 159, 3, 161, 160, 166, 161, -1, 161, 166, 159, -1, -1, -1, 161, -1, -1, -1, 162, 166, 165, 3, -1, 161, -1, 163, 166, 3, 161, 161, 161, 161 }; static const ANTLR3_INT32 dfa75_T15[] = { 355, 350, -1, -1, 349, 359, 351, 3, 353, 352, 358, 353, -1, 353, 356, 351, -1, -1, -1, 353, -1, -1, -1, 354, 357, 73, 3, -1, 353, -1, 360, 361, 3, 353, 353, 353, 353 }; static const ANTLR3_INT32 dfa75_T16[] = { 134, -1, -1, -1, -1, -1, 134 }; static const ANTLR3_INT32 dfa75_T17[] = { 273, -1, -1, -1, -1, -1, 273 }; static const ANTLR3_INT32 dfa75_T18[] = { 285, -1, -1, -1, -1, -1, 285 }; static const ANTLR3_INT32 dfa75_T19[] = { 342, -1, -1, -1, -1, -1, 342 }; static const ANTLR3_INT32 dfa75_T20[] = { 367, -1, -1, -1, -1, -1, 367 }; static const ANTLR3_INT32 dfa75_T21[] = { 369, -1, -1, -1, -1, -1, 369 }; static const ANTLR3_INT32 dfa75_T22[] = { 608, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 609 }; static const ANTLR3_INT32 dfa75_T23[] = { 399, 336, -1, -1, 3, 403, 395, 3, 397, 396, 402, 397, -1, 397, 400, 395, -1, -1, -1, 397, -1, -1, -1, 398, 401, 3, 3, -1, 397, -1, 3, 3, 3, 397, 397, 397, 397 }; static const ANTLR3_INT32 dfa75_T24[] = { 3, 3, -1, -1, 3, 3, 283, 3, 3, 284, 3, 3, -1, 3, 3, 283, -1, -1, -1, 3, 216, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa75_T25[] = { 518, -1, -1, -1, -1, 458, -1, 520, -1, -1, -1, 458, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 573 }; static const ANTLR3_INT32 dfa75_T26[] = { 476, 423, -1, -1, 3, 480, 472, 3, 474, 473, 479, 474, -1, 474, 477, 472, -1, -1, -1, 474, -1, -1, -1, 475, 478, 3, 3, -1, 474, -1, 3, 3, 3, 474, 474, 474, 474 }; static const ANTLR3_INT32 dfa75_T27[] = { 266, 147, -1, -1, 3, 270, 262, 3, 264, 263, 269, 264, -1, 264, 267, 262, -1, -1, -1, 264, -1, -1, -1, 265, 268, 3, 3, -1, 264, -1, 3, 3, 3, 264, 264, 264, 264 }; static const ANTLR3_INT32 dfa75_T28[] = { 324, 233, -1, -1, 3, 328, 320, 3, 322, 321, 327, 322, -1, 322, 325, 320, -1, -1, -1, 322, -1, -1, -1, 323, 326, 3, 3, -1, 322, -1, 3, 3, 3, 322, 322, 322, 322 }; static const ANTLR3_INT32 dfa75_T29[] = { 116, 115, -1, -1, 114, 120, 110, 3, 112, 111, 119, 112, -1, 112, 117, 110, -1, -1, -1, 112, -1, -1, -1, 113, 118, 73, 3, -1, 112, -1, 121, 122, 3, 112, 112, 112, 112 }; static const ANTLR3_INT32 dfa75_T30[] = { 139, 67, -1, -1, 3, 143, 135, 3, 137, 136, 142, 137, -1, 137, 140, 135, -1, -1, -1, 137, -1, -1, -1, 138, 141, 3, 3, -1, 137, -1, 3, 3, 3, 137, 137, 137, 137 }; static const ANTLR3_INT32 dfa75_T31[] = { 428, 423, -1, -1, 422, 432, 424, 3, 426, 425, 431, 426, -1, 426, 429, 424, -1, -1, -1, 426, -1, -1, -1, 427, 430, 73, 3, -1, 426, -1, 360, 361, 3, 426, 426, 426, 426 }; static const ANTLR3_INT32 dfa75_T32[] = { 3, 3, -1, -1, 3, 3, 249, 3, 3, 250, 3, 3, -1, 3, 3, 249, -1, -1, -1, 3, 216, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa75_T33[] = { 439, 434, -1, -1, 433, 443, 435, 3, 437, 436, 442, 437, -1, 437, 440, 435, -1, -1, -1, 437, -1, -1, -1, 438, 441, 73, 3, -1, 437, -1, 444, 361, 3, 437, 437, 437, 437 }; static const ANTLR3_INT32 dfa75_T34[] = { 312, 222, -1, -1, 3, 316, 308, 3, 310, 309, 315, 310, -1, 310, 313, 308, -1, -1, -1, 310, -1, -1, -1, 311, 314, 3, 3, -1, 310, -1, 3, 3, 3, 310, 310, 310, 310 }; static const ANTLR3_INT32 dfa75_T35[] = { 3, -1, -1, -1, 3, 3, 3, 469, -1, 3, -1, 3, 3, 468, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa75_T36[] = { 414, 350, -1, -1, 3, 418, 410, 3, 412, 411, 417, 412, -1, 412, 415, 410, -1, -1, -1, 412, -1, -1, -1, 413, 416, 3, 3, -1, 412, -1, 3, 3, 3, 412, 412, 412, 412 }; static const ANTLR3_INT32 dfa75_T37[] = { 456, -1, -1, -1, -1, 455, -1, -1, -1, -1, -1, 458, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 457 }; static const ANTLR3_INT32 dfa75_T38[] = { 183, 88, -1, -1, 3, 187, 179, 3, 181, 180, 186, 181, -1, 181, 184, 179, -1, -1, -1, 181, -1, -1, -1, 182, 185, 3, 3, -1, 181, -1, 3, 3, 3, 181, 181, 181, 181 }; static const ANTLR3_INT32 dfa75_T39[] = { 40, 35, -1, -1, 34, 44, 36, 3, 38, 37, 43, 38, -1, 38, 41, 36, -1, -1, -1, 38, -1, -1, -1, 39, 42, 46, 3, -1, 38, -1, 45, 85, 3, 38, 38, 38, 38 }; static const ANTLR3_INT32 dfa75_T40[] = { 109, -1, -1, -1, -1, -1, 109 }; static const ANTLR3_INT32 dfa75_T41[] = { 59, -1, -1, -1, -1, -1, 59 }; static const ANTLR3_INT32 dfa75_T42[] = { 509, -1, -1, -1, -1, -1, 509 }; static const ANTLR3_INT32 dfa75_T43[] = { 178, -1, -1, -1, -1, -1, 178 }; static const ANTLR3_INT32 dfa75_T44[] = { 203, -1, -1, -1, -1, -1, 203 }; static const ANTLR3_INT32 dfa75_T45[] = { 286, -1, -1, -1, -1, -1, 286 }; static const ANTLR3_INT32 dfa75_T46[] = { 300, -1, -1, -1, -1, -1, 300 }; static const ANTLR3_INT32 dfa75_T47[] = { 302, -1, -1, -1, -1, -1, 302 }; static const ANTLR3_INT32 dfa75_T48[] = { 384, -1, -1, -1, -1, -1, 384 }; static const ANTLR3_INT32 dfa75_T49[] = { 366, -1, -1, -1, -1, -1, 366 }; static const ANTLR3_INT32 dfa75_T50[] = { 385, -1, -1, -1, -1, -1, 385 }; static const ANTLR3_INT32 dfa75_T51[] = { 451, -1, -1, -1, -1, -1, 451 }; static const ANTLR3_INT32 dfa75_T52[] = { 371, -1, -1, -1, -1, -1, 371 }; static const ANTLR3_INT32 dfa75_T53[] = { 612 }; static const ANTLR3_INT32 dfa75_T54[] = { 223, 222, -1, -1, 221, 227, 217, 3, 219, 218, 226, 219, -1, 219, 224, 217, -1, -1, -1, 219, -1, -1, -1, 220, 225, 73, 3, -1, 219, -1, 121, 122, 3, 219, 219, 219, 219 }; static const ANTLR3_INT32 dfa75_T55[] = { 107, 99, -1, -1, 98, 105, 100, 3, 102, 101, 107, 102, -1, 102, 107, 100, -1, -1, -1, 102, -1, -1, -1, 103, 107, 106, 3, -1, 102, -1, 104, 107, 3, 102, 102, 102, 102 }; static const ANTLR3_INT32 dfa75_T56[] = { 547, -1, -1, -1, -1, 512, -1, -1, -1, -1, -1, 512, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 549 }; static const ANTLR3_INT32 dfa75_T57[] = { 51, 23, -1, -1, 3, 55, 47, 3, 49, 48, 54, 49, -1, 49, 52, 47, -1, -1, -1, 49, -1, -1, -1, 50, 53, 3, 3, -1, 49, -1, 3, 3, 3, 49, 49, 49, 49 }; static const ANTLR3_INT32 dfa75_T58[] = { 234, 233, -1, -1, 232, 238, 228, 3, 230, 229, 237, 230, -1, 230, 235, 228, -1, -1, -1, 230, -1, -1, -1, 231, 236, 73, 3, -1, 230, -1, 239, 122, 3, 230, 230, 230, 230 }; static const ANTLR3_INT32 dfa75_T59[] = { 502, 497, -1, -1, 496, 506, 498, 3, 500, 499, 505, 500, -1, 500, 503, 498, -1, -1, -1, 500, -1, -1, -1, 501, 504, 73, 3, -1, 500, -1, 444, 361, 3, 500, 500, 500, 500 }; static const ANTLR3_INT32 dfa75_T60[] = { 2, -1, -1, -1, 1, -1, 2, 2, -1, 2, -1, 2, -1, 1, -1, -1, -1, 2, -1, -1, -1, 2, 2, -1, -1, -1, 2, -1, -1, 3, -1, 2, 2, 2, 2 }; static const ANTLR3_INT32 dfa75_T61[] = { 3, -1, -1, -1, 3, 3, 3, 525, -1, 3, -1, 3, -1, 524, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa75_T62[] = { 2, -1, 4, -1, 5, -1, 7, 6, -1, 9, -1, 2, -1, 5, -1, -1, -1, 2, -1, -1, -1, 2, 8, -1, -1, -1, 2, -1, -1, -1, -1, 2, 2, 2, 2 }; static const ANTLR3_INT32 dfa75_T63[] = { 547, -1, -1, -1, -1, 583, -1, 515, -1, -1, -1, 569, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 584 }; static const ANTLR3_INT32 dfa75_T64[] = { 260, -1, -1, -1, -1, -1, 260 }; static const ANTLR3_INT32 dfa75_T65[] = { 368, -1, -1, -1, -1, -1, 368 }; static const ANTLR3_INT32 dfa75_T66[] = { 370, -1, -1, -1, -1, -1, 370 }; static const ANTLR3_INT32 dfa75_T67[] = { 406, -1, -1, -1, -1, -1, 406 }; static const ANTLR3_INT32 dfa75_T68[] = { 448, -1, -1, -1, -1, -1, 448 }; static const ANTLR3_INT32 dfa75_T69[] = { 449, -1, -1, -1, -1, -1, 449 }; static const ANTLR3_INT32 dfa75_T70[] = { 209, 115, -1, -1, 3, 213, 205, 3, 207, 206, 212, 207, -1, 207, 210, 205, -1, -1, -1, 207, -1, -1, -1, 208, 211, 3, 3, -1, 207, -1, 3, 3, 3, 207, 207, 207, 207 }; static const ANTLR3_INT32 dfa75_T71[] = { 518, -1, -1, -1, -1, 458, -1, -1, -1, -1, -1, 458, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 522 }; static const ANTLR3_INT32 dfa75_T72[] = { 65, 67, -1, -1, 66, 71, 61, 3, 63, 62, 70, 63, -1, 63, 68, 61, -1, -1, -1, 63, 3, -1, -1, 64, 69, 73, 3, -1, 63, -1, 72, 60, 3, 63, 63, 63, 63 }; static const ANTLR3_INT32 dfa75_T73[] = { 387, -1, -1, -1, -1, 513, -1, 515, -1, -1, -1, 454, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 514 }; static const ANTLR3_INT32 dfa75_T74[] = { 376, 289, -1, -1, 3, 380, 372, 3, 374, 373, 379, 374, -1, 374, 377, 372, -1, -1, -1, 374, -1, -1, -1, 375, 378, 3, 3, -1, 374, -1, 3, 3, 3, 374, 374, 374, 374 }; static const ANTLR3_INT32 dfa75_T75[] = { 172, 67, -1, -1, 66, 176, 168, 3, 170, 169, 175, 170, -1, 170, 173, 168, -1, -1, -1, 170, -1, -1, -1, 171, 174, 46, 3, -1, 170, -1, 177, 85, 3, 170, 170, 170, 170 }; static const ANTLR3_INT32 dfa75_T76[] = { 337, 336, -1, -1, 335, 341, 331, 3, 333, 332, 340, 333, -1, 333, 338, 331, -1, -1, -1, 333, -1, -1, -1, 334, 339, 73, 3, -1, 333, -1, 239, 122, 3, 333, 333, 333, 333 }; static const ANTLR3_INT32 dfa75_T77[] = { 392, -1, -1, -1, -1, -1, 392 }; static const ANTLR3_INT32 dfa75_T78[] = { 303, -1, -1, -1, -1, -1, 303 }; static const ANTLR3_INT32 dfa75_T79[] = { 386, -1, -1, -1, -1, -1, 386 }; static const ANTLR3_INT32 dfa75_T80[] = { 390, -1, -1, -1, -1, -1, 390 }; static const ANTLR3_INT32 dfa75_T81[] = { 526, -1, -1, -1, -1, -1, 526 }; static const ANTLR3_INT32 dfa75_T82[] = { 562, -1, -1, -1, -1, -1, 562 }; static const ANTLR3_INT32 dfa75_T83[] = { 459, -1, -1, -1, -1, -1, 459 }; static const ANTLR3_INT32 dfa75_T84[] = { 460, -1, -1, -1, -1, -1, 460 }; static const ANTLR3_INT32 dfa75_T85[] = { 528, -1, -1, -1, -1, -1, 528 }; static const ANTLR3_INT32 dfa75_T86[] = { 530, -1, -1, -1, -1, -1, 530 }; static const ANTLR3_INT32 dfa75_T87[] = { 580, -1, -1, -1, -1, -1, 580 }; static const ANTLR3_INT32 dfa75_T88[] = { 461, -1, -1, -1, -1, -1, 461 }; static const ANTLR3_INT32 dfa75_T89[] = { 561, -1, -1, -1, -1, -1, 561 }; static const ANTLR3_INT32 dfa75_T90[] = { 564, -1, -1, -1, -1, -1, 564 }; static const ANTLR3_INT32 dfa75_T91[] = { 471, -1, -1, -1, -1, -1, 471 }; static const ANTLR3_INT32 dfa75_T92[] = { 523, -1, -1, -1, -1, -1, 523 }; static const ANTLR3_INT32 dfa75_T93[] = { 387, -1, -1, -1, -1, 305, -1, -1, -1, -1, -1, 305, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 388 }; static const ANTLR3_INT32 dfa75_T94[] = { 518, -1, -1, -1, -1, 574, -1, 515, -1, -1, -1, 556, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 575 }; static const ANTLR3_INT32 dfa75_T95[] = { 3, 3, -1, -1, 3, 3, 271, 3, 3, 272, 3, 3, -1, 3, 3, 271, -1, -1, -1, 3, 216, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa75_T96[] = { 65, 124, -1, -1, 123, 71, 132, 3, 63, 133, 70, 63, -1, 63, 68, 132, -1, -1, -1, 63, -1, -1, -1, 64, 69, 73, 3, -1, 63, -1, 72, 129, 3, 63, 63, 63, 63 }; static const ANTLR3_INT32 dfa75_T97[] = { 278, 158, -1, -1, 3, 282, 274, 3, 276, 275, 281, 276, -1, 276, 279, 274, -1, -1, -1, 276, -1, -1, -1, 277, 280, 3, 3, -1, 276, -1, 3, 3, 3, 276, 276, 276, 276 }; static const ANTLR3_INT32 dfa75_T98[] = { 93, 88, -1, -1, 87, 97, 89, 3, 91, 90, 96, 91, -1, 91, 94, 89, -1, -1, -1, 91, -1, -1, -1, 92, 95, 46, 3, -1, 91, -1, 45, 85, 3, 91, 91, 91, 91 }; static const ANTLR3_INT32 dfa75_T99[] = { 65, 124, -1, -1, 251, 71, 125, 3, 128, 565, 70, 127, -1, 63, 68, 125, -1, -1, -1, 63, -1, -1, -1, 64, 69, 73, 3, -1, 63, -1, 252, 254, 3, 63, 63, 63, 63 }; static const ANTLR3_INT32 dfa75_T100[] = { 65, 124, -1, -1, 123, 71, 362, 3, 256, 363, 70, 127, -1, 63, 68, 362, -1, -1, -1, 63, -1, -1, -1, 64, 69, 73, 3, -1, 63, -1, 72, 129, 3, 63, 63, 63, 63 }; static const ANTLR3_INT32 dfa75_T101[] = { 389 }; static const ANTLR3_INT32 dfa75_T102[] = { 606, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 607 }; static const ANTLR3_INT32 dfa75_T103[] = { 65, 124, -1, -1, 123, 71, 125, 3, 256, 126, 70, 63, -1, 63, 68, 125, -1, -1, -1, 63, -1, -1, -1, 64, 69, 73, 3, -1, 63, -1, 72, 129, 3, 63, 63, 63, 63 }; static const ANTLR3_INT32 dfa75_T104[] = { 65, 124, -1, -1, 251, 71, 125, 3, 128, 126, 70, 253, -1, 63, 68, 125, -1, -1, -1, 63, -1, -1, -1, 64, 69, 73, 3, -1, 63, -1, 252, 254, 3, 63, 63, 63, 63 }; static const ANTLR3_INT32 dfa75_T105[] = { 547, -1, -1, -1, -1, 592, -1, 515, -1, -1, -1, 569, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 593 }; static const ANTLR3_INT32 dfa75_T106[] = { 521 }; static const ANTLR3_INT32 dfa75_T107[] = { 387, -1, -1, -1, -1, 550, -1, 515, -1, -1, -1, 454, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 551 }; static const ANTLR3_INT32 dfa75_T108[] = { 518, -1, -1, -1, -1, 588, -1, 515, -1, -1, -1, 556, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 589 }; static const ANTLR3_INT32 dfa75_T109[] = { 3, -1, -1, -1, 3, 3, 3, 409, -1, 3, -1, 3, 3, 408, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa75_T110[] = { 555, -1, -1, -1, -1, -1, 556 }; static const ANTLR3_INT32 dfa75_T111[] = { 568, -1, -1, -1, -1, -1, 569 }; static const ANTLR3_INT32 dfa75_T112[] = { 152, 147, -1, -1, 146, 156, 148, 3, 150, 149, 155, 150, -1, 150, 153, 148, -1, -1, -1, 150, -1, -1, -1, 151, 154, 73, 3, -1, 150, -1, 72, 129, 3, 150, 150, 150, 150 }; static const ANTLR3_INT32 dfa75_T113[] = { 3, -1, -1, -1, 3, 3, 3, 560, -1, 3, -1, 3, -1, 559, -1, -1, -1, 3, -1, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa75_T114[] = { 547, -1, -1, -1, -1, 569, -1, 515, -1, -1, -1, 569, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 599 }; static const ANTLR3_INT32 dfa75_T115[] = { 610, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 611 }; static const ANTLR3_INT32 dfa75_T116[] = { 17, 3, -1, -1, 3, 14, 10, -1, 12, 11, 20, 12, -1, 12, 18, 10, -1, -1, -1, 12, 2, -1, -1, 13, 19, 16, -1, -1, 12, -1, 15, 21, -1, 12, 12, 12, 12 }; static const ANTLR3_INT32 dfa75_T117[] = { 65, 124, -1, -1, 123, 71, 362, 3, 256, 363, 70, 63, -1, 63, 68, 362, -1, -1, -1, 63, -1, -1, -1, 64, 69, 73, 3, -1, 63, -1, 72, 129, 3, 63, 63, 63, 63 }; static const ANTLR3_INT32 dfa75_T118[] = { 387, -1, -1, -1, -1, 454, -1, 515, -1, -1, -1, 454, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 570 }; static const ANTLR3_INT32 dfa75_T119[] = { 152, 147, 3, -1, 146, 156, 344, 3, 346, 345, 155, 346, -1, 346, 153, 344, -1, -1, -1, 346, -1, -1, -1, 347, 348, 73, 3, -1, 346, -1, 72, 129, 3, 346, 346, 346, 346 }; static const ANTLR3_INT32 dfa75_T120[] = { 518, -1, -1, -1, -1, 556, -1, 515, -1, -1, -1, 556, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 596 }; static const ANTLR3_INT32 dfa75_T121[] = { 86, -1, -1, -1, -1, -1, 86 }; static const ANTLR3_INT32 dfa75_T122[] = { 32, -1, -1, -1, -1, -1, 32 }; static const ANTLR3_INT32 dfa75_T123[] = { 58, -1, -1, -1, -1, -1, 58 }; static const ANTLR3_INT32 dfa75_T124[] = { 299, -1, -1, -1, -1, -1, 299 }; static const ANTLR3_INT32 dfa75_T125[] = { 108, -1, -1, -1, -1, -1, 108 }; static const ANTLR3_INT32 dfa75_T126[] = { 301, -1, -1, -1, -1, -1, 301 }; static const ANTLR3_INT32 dfa75_T127[] = { 167, -1, -1, -1, -1, -1, 167 }; static const ANTLR3_INT32 dfa75_T128[] = { 190, -1, -1, -1, -1, -1, 190 }; static const ANTLR3_INT32 dfa75_T129[] = { 202, -1, -1, -1, -1, -1, 202 }; static const ANTLR3_INT32 dfa75_T130[] = { 450, -1, -1, -1, -1, -1, 450 }; static const ANTLR3_INT32 dfa75_T131[] = { 383, -1, -1, -1, -1, -1, 383 }; static const ANTLR3_INT32 dfa75_T132[] = { 261, -1, -1, -1, -1, -1, 261 }; static const ANTLR3_INT32 dfa75_T133[] = { 287, -1, -1, -1, -1, -1, 287 }; static const ANTLR3_INT32 dfa75_T134[] = { 391, -1, -1, -1, -1, -1, 391 }; static const ANTLR3_INT32 dfa75_T135[] = { 204, -1, -1, -1, -1, -1, 204 }; static const ANTLR3_INT32 dfa75_T136[] = { 304, -1, -1, -1, -1, -1, 304 }; static const ANTLR3_INT32 dfa75_T137[] = { 470, -1, -1, -1, -1, -1, 470 }; static const ANTLR3_INT32 dfa75_T138[] = { 307, -1, -1, -1, -1, -1, 307 }; static const ANTLR3_INT32 dfa75_T139[] = { 319, -1, -1, -1, -1, -1, 319 }; static const ANTLR3_INT32 dfa75_T140[] = { 393, -1, -1, -1, -1, -1, 393 }; static const ANTLR3_INT32 dfa75_T141[] = { 529, -1, -1, -1, -1, -1, 529 }; static const ANTLR3_INT32 dfa75_T142[] = { 495, -1, -1, -1, -1, -1, 495 }; static const ANTLR3_INT32 dfa75_T143[] = { 527, -1, -1, -1, -1, -1, 527 }; static const ANTLR3_INT32 dfa75_T144[] = { 394, -1, -1, -1, -1, -1, 394 }; static const ANTLR3_INT32 dfa75_T145[] = { 542, -1, -1, -1, -1, -1, 542 }; static const ANTLR3_INT32 dfa75_T146[] = { 421, -1, -1, -1, -1, -1, 421 }; static const ANTLR3_INT32 dfa75_T147[] = { 483, -1, -1, -1, -1, -1, 483 }; static const ANTLR3_INT32 dfa75_T148[] = { 462, -1, -1, -1, -1, -1, 462 }; static const ANTLR3_INT32 dfa75_T149[] = { 563, -1, -1, -1, -1, -1, 563 }; static const ANTLR3_INT32 dfa75_T150[] = { 3, 3, -1, -1, 3, 3, 419, 3, 3, 420, 3, 3, -1, 3, 3, 419, -1, -1, -1, 3, 216, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa75_T151[] = { 558, -1, 515 }; static const ANTLR3_INT32 dfa75_T152[] = { 571, -1, 572 }; static const ANTLR3_INT32 dfa75_T153[] = { 577, -1, 578 }; static const ANTLR3_INT32 dfa75_T154[] = { 244, 124, -1, -1, 3, 248, 240, 3, 242, 343, 247, 242, -1, 242, 245, 240, -1, -1, -1, 242, -1, -1, -1, 243, 246, 3, 3, -1, 242, -1, 3, 3, 3, 242, 242, 242, 242 }; static const ANTLR3_INT32 dfa75_T155[] = { 594, -1, 595 }; static const ANTLR3_INT32 dfa75_T156[] = { 597, -1, 598 }; static const ANTLR3_INT32 dfa75_T157[] = { 152, 147, 3, -1, 146, 156, 463, 3, 465, 464, 155, 465, 3, 465, 153, 463, -1, -1, -1, 465, -1, -1, -1, 466, 467, 73, 3, -1, 465, -1, 72, 129, 3, 465, 465, 465, 465 }; static const ANTLR3_INT32 dfa75_T158[] = { 613 }; static const ANTLR3_INT32 dfa75_T159[] = { 65, 124, -1, -1, 123, 71, 125, 3, 128, 126, 70, 127, -1, 63, 68, 125, -1, -1, -1, 63, -1, -1, -1, 64, 69, 73, 3, -1, 63, -1, 72, 129, 3, 63, 63, 63, 63 }; static const ANTLR3_INT32 dfa75_T160[] = { 65, 124, -1, -1, 251, 71, 61, 3, 63, 545, 70, 63, -1, 63, 68, 61, -1, -1, -1, 63, -1, -1, -1, 64, 69, 73, 3, -1, 63, -1, 252, 254, 3, 63, 63, 63, 63 }; static const ANTLR3_INT32 dfa75_T161[] = { 65, 124, -1, -1, 251, 71, 61, 3, 63, 447, 70, 63, -1, 63, 68, 61, -1, -1, -1, 63, -1, -1, -1, 64, 69, 73, 3, -1, 63, -1, 252, 254, 3, 63, 63, 63, 63 }; static const ANTLR3_INT32 dfa75_T162[] = { 65, 124, -1, -1, 251, 71, 61, 3, 63, 259, 70, 63, -1, 63, 68, 61, -1, -1, -1, 63, -1, -1, -1, 64, 69, 73, 3, -1, 63, -1, 252, 254, 3, 63, 63, 63, 63 }; static const ANTLR3_INT32 dfa75_T163[] = { 3, 3, -1, -1, 3, 3, 214, 3, 3, 215, 3, 3, -1, 3, 3, 214, -1, -1, -1, 3, 216, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa75_T164[] = { 547, -1, -1, -1, -1, 569, -1, -1, -1, -1, -1, 569, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 585 }; static const ANTLR3_INT32 dfa75_T165[] = { 3, 3, -1, -1, 3, 3, 493, 3, 3, 494, 3, 3, -1, 3, 3, 493, -1, -1, -1, 3, 216, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa75_T166[] = { 65, 124, -1, -1, 251, 71, 61, 3, 63, 255, 70, 63, -1, 63, 68, 61, -1, -1, -1, 63, -1, -1, -1, 64, 69, 73, 3, -1, 63, -1, 252, 254, 3, 63, 63, 63, 63 }; static const ANTLR3_INT32 dfa75_T167[] = { 387, -1, -1, -1, -1, 454, -1, -1, -1, -1, -1, 454, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 516 }; static const ANTLR3_INT32 dfa75_T168[] = { 107, 99, -1, -1, 98, 105, 100, -1, 102, 101, 107, 102, -1, 102, 107, 100, -1, -1, -1, 102, -1, -1, -1, 103, 107, 106, -1, -1, 102, -1, 104, 107, -1, 102, 102, 102, 102 }; static const ANTLR3_INT32 dfa75_T169[] = { 3, 3, -1, -1, 3, 3, 329, 3, 3, 330, 3, 3, -1, 3, 3, 329, -1, -1, -1, 3, 216, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa75_T170[] = { 518, -1, -1, -1, -1, 556, -1, -1, -1, -1, -1, 556, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 576 }; static const ANTLR3_INT32 dfa75_T171[] = { 579, -1, 515 }; static const ANTLR3_INT32 dfa75_T172[] = { 586, -1, 572 }; static const ANTLR3_INT32 dfa75_T173[] = { 590, -1, 578 }; static const ANTLR3_INT32 dfa75_T174[] = { 600, -1, 595 }; static const ANTLR3_INT32 dfa75_T175[] = { 602, -1, 598 }; static const ANTLR3_INT32 dfa75_T176[] = { 547, -1, -1, -1, -1, 546, -1, 520, -1, -1, -1, 512, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 548 }; static const ANTLR3_INT32 dfa75_T177[] = { 65, 124, -1, -1, 123, 71, 61, 3, 63, 259, 70, 63, -1, 63, 68, 61, -1, -1, -1, 63, -1, -1, -1, 64, 69, 73, 3, -1, 63, -1, 72, 129, 3, 63, 63, 63, 63 }; static const ANTLR3_INT32 dfa75_T178[] = { 65, 124, -1, -1, 123, 71, 61, 3, 63, 447, 70, 63, -1, 63, 68, 61, -1, -1, -1, 63, -1, -1, -1, 64, 69, 73, 3, -1, 63, -1, 72, 129, 3, 63, 63, 63, 63 }; static const ANTLR3_INT32 dfa75_T179[] = { 3, 3, -1, -1, 3, 3, 83, 3, 3, 84, 3, 3, -1, 3, 3, 83, -1, -1, -1, 3, 2, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa75_T180[] = { 65, 124, -1, -1, 123, 71, 61, 3, 63, 545, 70, 63, -1, 63, 68, 61, -1, -1, -1, 63, -1, -1, -1, 64, 69, 73, 3, -1, 63, -1, 72, 129, 3, 63, 63, 63, 63 }; static const ANTLR3_INT32 dfa75_T181[] = { 518, -1, -1, -1, -1, 517, -1, 520, -1, -1, -1, 458, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 519 }; static const ANTLR3_INT32 dfa75_T182[] = { 3, 3, -1, -1, 3, 3, 200, 3, 3, 201, 3, 3, -1, 3, 3, 200, -1, -1, -1, 3, 2, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa75_T183[] = { 65, 124, -1, -1, 251, 71, 125, 3, 128, 543, 70, 544, -1, 63, 68, 125, -1, -1, -1, 63, -1, -1, -1, 64, 69, 73, 3, -1, 63, -1, 252, 254, 3, 63, 63, 63, 63 }; static const ANTLR3_INT32 dfa75_T184[] = { 552 }; static const ANTLR3_INT32 dfa75_T185[] = { 557 }; static const ANTLR3_INT32 dfa75_T186[] = { 65, 124, -1, -1, 251, 71, 125, 3, 128, 445, 70, 446, -1, 63, 68, 125, -1, -1, -1, 63, -1, -1, -1, 64, 69, 73, 3, -1, 63, -1, 252, 254, 3, 63, 63, 63, 63 }; static const ANTLR3_INT32 dfa75_T187[] = { 65, 124, -1, -1, 251, 71, 125, 3, 128, 257, 70, 258, -1, 63, 68, 125, -1, -1, -1, 63, -1, -1, -1, 64, 69, 73, 3, -1, 63, -1, 252, 254, 3, 63, 63, 63, 63 }; static const ANTLR3_INT32 dfa75_T188[] = { 65, 124, -1, -1, 251, 71, 125, 3, 128, 581, 70, 253, -1, 63, 68, 125, -1, -1, -1, 63, -1, -1, -1, 64, 69, 73, 3, -1, 63, -1, 252, 254, 3, 63, 63, 63, 63 }; static const ANTLR3_INT32 dfa75_T189[] = { 587 }; static const ANTLR3_INT32 dfa75_T190[] = { 591 }; static const ANTLR3_INT32 dfa75_T191[] = { 65, 124, -1, -1, 123, 71, 61, 3, 63, 255, 70, 63, -1, 63, 68, 61, -1, -1, -1, 63, -1, -1, -1, 64, 69, 73, 3, -1, 63, -1, 72, 129, 3, 63, 63, 63, 63 }; static const ANTLR3_INT32 dfa75_T192[] = { 515 }; static const ANTLR3_INT32 dfa75_T193[] = { 65, 124, -1, -1, 251, 71, 125, 3, 128, 126, 70, 446, -1, 63, 68, 125, -1, -1, -1, 63, -1, -1, -1, 64, 69, 73, 3, -1, 63, -1, 252, 254, 3, 63, 63, 63, 63 }; static const ANTLR3_INT32 dfa75_T194[] = { 601 }; static const ANTLR3_INT32 dfa75_T195[] = { 603 }; static const ANTLR3_INT32 dfa75_T196[] = { 65, 124, -1, -1, 251, 71, 125, 3, 128, 126, 70, 258, -1, 63, 68, 125, -1, -1, -1, 63, -1, -1, -1, 64, 69, 73, 3, -1, 63, -1, 252, 254, 3, 63, 63, 63, 63 }; static const ANTLR3_INT32 dfa75_T197[] = { 572 }; static const ANTLR3_INT32 dfa75_T198[] = { 578 }; static const ANTLR3_INT32 dfa75_T199[] = { 3, 3, -1, -1, 3, 3, 144, 3, 3, 145, 3, 3, -1, 3, 3, 144, -1, -1, -1, 3, 2, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa75_T200[] = { 595 }; static const ANTLR3_INT32 dfa75_T201[] = { 598 }; static const ANTLR3_INT32 dfa75_T202[] = { 3, 3, -1, -1, 3, 3, 481, 3, 3, 482, 3, 3, -1, 3, 3, 481, -1, -1, -1, 3, 216, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa75_T203[] = { 166, 158, -1, -1, 157, 164, 159, -1, 161, 160, 166, 161, -1, 161, 166, 159, -1, -1, -1, 161, -1, -1, -1, 162, 166, 165, -1, -1, 161, -1, 163, 166, -1, 161, 161, 161, 161 }; static const ANTLR3_INT32 dfa75_T204[] = { 65, 124, -1, -1, 251, 71, 125, 3, 128, 126, 70, 544, -1, 63, 68, 125, -1, -1, -1, 63, -1, -1, -1, 64, 69, 73, 3, -1, 63, -1, 252, 254, 3, 63, 63, 63, 63 }; static const ANTLR3_INT32 dfa75_T205[] = { 547, -1, -1, -1, -1, 566, -1, 520, -1, -1, -1, 512, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 567 }; static const ANTLR3_INT32 dfa75_T206[] = { 452, -1, -1, -1, -1, 453, -1, -1, -1, -1, -1, 454 }; static const ANTLR3_INT32 dfa75_T207[] = { 604, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 605 }; static const ANTLR3_INT32 dfa75_T208[] = { 3, 3, -1, -1, 3, 3, 188, 3, 3, 189, 3, 3, -1, 3, 3, 188, -1, -1, -1, 3, 2, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa75_T209[] = { 3, 3, -1, -1, 3, 3, 317, 3, 3, 318, 3, 3, -1, 3, 3, 317, -1, -1, -1, 3, 216, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa75_T210[] = { 306, -1, -1, -1, -1, 305, -1, -1, -1, -1, -1, 305 }; static const ANTLR3_INT32 dfa75_T211[] = { 3, 3, -1, -1, 3, 3, 540, 3, 3, 541, 3, 3, -1, 3, 3, 540, -1, -1, -1, 3, 216, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa75_T212[] = { 518, -1, -1, -1, -1, 553, -1, 520, -1, -1, -1, 458, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 554 }; static const ANTLR3_INT32 dfa75_T213[] = { 3, 3, -1, -1, 3, 3, 56, 3, 3, 57, 3, 3, -1, 3, 3, 56, -1, -1, -1, 3, 2, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa75_T214[] = { 3, 3, -1, -1, 3, 3, 404, 3, 3, 405, 3, 3, -1, 3, 3, 404, -1, -1, -1, 3, 216, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa75_T215[] = { 547, -1, -1, -1, -1, 512, -1, 520, -1, -1, -1, 512, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 582 }; static const ANTLR3_INT32 dfa75_T216[] = { 456, -1, -1, -1, -1, 510, -1, -1, -1, -1, -1, 512, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 511 }; static const ANTLR3_INT32 dfa75_T217[] = { 3, 3, -1, -1, 3, 3, 381, 3, 3, 382, 3, 3, -1, 3, 3, 381, -1, -1, -1, 3, 2, -1, -1, 3, 3, 3, 3, -1, 3, -1, 3, 3, 3, 3, 3, 3, 3 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa75_transitions[] = { dfa75_T60, dfa75_T62, NULL, NULL, dfa75_T116, dfa75_T62, dfa75_T62, dfa75_T62, dfa75_T62, dfa75_T62, dfa75_T5, dfa75_T5, dfa75_T4, dfa75_T122, dfa75_T4, dfa75_T4, dfa75_T4, dfa75_T4, dfa75_T4, dfa75_T4, dfa75_T4, dfa75_T2, dfa75_T57, dfa75_T213, dfa75_T4, dfa75_T4, dfa75_T4, dfa75_T123, dfa75_T4, dfa75_T4, dfa75_T4, dfa75_T4, dfa75_T41, dfa75_T72, dfa75_T0, dfa75_T179, dfa75_T39, dfa75_T39, dfa75_T39, dfa75_T121, dfa75_T39, dfa75_T39, dfa75_T39, dfa75_T39, dfa75_T39, dfa75_T98, dfa75_T168, dfa75_T57, dfa75_T57, dfa75_T57, dfa75_T125, dfa75_T57, dfa75_T57, dfa75_T57, dfa75_T57, dfa75_T57, dfa75_T5, dfa75_T5, dfa75_T40, dfa75_T4, dfa75_T29, dfa75_T159, dfa75_T9, dfa75_T96, dfa75_T16, dfa75_T96, dfa75_T30, dfa75_T199, dfa75_T96, dfa75_T96, dfa75_T96, dfa75_T96, dfa75_T112, dfa75_T203, dfa75_T0, dfa75_T0, dfa75_T0, dfa75_T127, dfa75_T0, dfa75_T0, dfa75_T0, dfa75_T0, dfa75_T0, dfa75_T5, dfa75_T5, dfa75_T75, dfa75_T43, dfa75_T38, dfa75_T208, dfa75_T98, dfa75_T98, dfa75_T98, dfa75_T128, dfa75_T98, dfa75_T98, dfa75_T98, dfa75_T98, dfa75_T98, dfa75_T11, dfa75_T182, dfa75_T55, dfa75_T55, dfa75_T55, dfa75_T129, dfa75_T55, dfa75_T55, dfa75_T55, dfa75_T55, dfa75_T44, dfa75_T4, dfa75_T29, dfa75_T29, dfa75_T29, dfa75_T135, dfa75_T70, dfa75_T163, dfa75_T29, dfa75_T29, dfa75_T29, dfa75_T29, dfa75_T29, dfa75_T54, dfa75_T58, dfa75_T12, dfa75_T32, dfa75_T104, dfa75_T104, dfa75_T191, dfa75_T103, dfa75_T96, dfa75_T187, dfa75_T177, dfa75_T96, dfa75_T96, dfa75_T64, dfa75_T30, dfa75_T30, dfa75_T30, dfa75_T132, dfa75_T30, dfa75_T30, dfa75_T30, dfa75_T30, dfa75_T30, dfa75_T5, dfa75_T5, dfa75_T27, dfa75_T95, dfa75_T112, dfa75_T112, dfa75_T112, dfa75_T17, dfa75_T112, dfa75_T112, dfa75_T112, dfa75_T112, dfa75_T112, dfa75_T97, dfa75_T24, dfa75_T14, dfa75_T14, dfa75_T14, dfa75_T18, dfa75_T14, dfa75_T14, dfa75_T14, dfa75_T14, dfa75_T45, dfa75_T75, dfa75_T75, dfa75_T75, dfa75_T133, dfa75_T75, dfa75_T75, dfa75_T75, dfa75_T75, dfa75_T75, dfa75_T7, dfa75_T39, dfa75_T38, dfa75_T38, dfa75_T38, dfa75_T124, dfa75_T38, dfa75_T38, dfa75_T38, dfa75_T38, dfa75_T38, dfa75_T5, dfa75_T5, dfa75_T46, dfa75_T11, dfa75_T11, dfa75_T11, dfa75_T126, dfa75_T11, dfa75_T11, dfa75_T11, dfa75_T11, dfa75_T11, dfa75_T5, dfa75_T5, dfa75_T47, dfa75_T57, dfa75_T78, dfa75_T70, dfa75_T70, dfa75_T70, dfa75_T136, dfa75_T70, dfa75_T70, dfa75_T70, dfa75_T70, dfa75_T70, dfa75_T5, dfa75_T5, dfa75_T210, dfa75_T54, dfa75_T54, dfa75_T54, dfa75_T138, dfa75_T34, dfa75_T209, dfa75_T54, dfa75_T54, dfa75_T54, dfa75_T54, dfa75_T54, dfa75_T58, dfa75_T58, dfa75_T58, dfa75_T139, dfa75_T28, dfa75_T169, dfa75_T58, dfa75_T58, dfa75_T58, dfa75_T58, dfa75_T58, dfa75_T76, dfa75_T12, dfa75_T12, dfa75_T12, dfa75_T19, dfa75_T12, dfa75_T12, dfa75_T12, dfa75_T12, dfa75_T12, dfa75_T5, dfa75_T5, dfa75_T154, dfa75_T119, dfa75_T166, dfa75_T15, dfa75_T159, dfa75_T117, dfa75_T196, dfa75_T162, dfa75_T1, dfa75_T96, dfa75_T49, dfa75_T27, dfa75_T27, dfa75_T27, dfa75_T20, dfa75_T27, dfa75_T27, dfa75_T27, dfa75_T27, dfa75_T27, dfa75_T5, dfa75_T5, dfa75_T65, dfa75_T97, dfa75_T97, dfa75_T97, dfa75_T21, dfa75_T97, dfa75_T97, dfa75_T97, dfa75_T97, dfa75_T97, dfa75_T5, dfa75_T5, dfa75_T66, dfa75_T0, dfa75_T52, dfa75_T74, dfa75_T217, dfa75_T7, dfa75_T7, dfa75_T7, dfa75_T131, dfa75_T7, dfa75_T7, dfa75_T7, dfa75_T7, dfa75_T7, dfa75_T48, dfa75_T98, dfa75_T50, dfa75_T55, dfa75_T29, dfa75_T79, dfa75_T93, dfa75_T101, dfa75_T80, dfa75_T34, dfa75_T34, dfa75_T34, dfa75_T134, dfa75_T34, dfa75_T34, dfa75_T34, dfa75_T34, dfa75_T34, dfa75_T5, dfa75_T5, dfa75_T77, dfa75_T28, dfa75_T28, dfa75_T28, dfa75_T140, dfa75_T28, dfa75_T28, dfa75_T28, dfa75_T28, dfa75_T28, dfa75_T5, dfa75_T5, dfa75_T76, dfa75_T76, dfa75_T76, dfa75_T144, dfa75_T23, dfa75_T214, dfa75_T76, dfa75_T76, dfa75_T76, dfa75_T76, dfa75_T76, dfa75_T67, dfa75_T154, dfa75_T10, dfa75_T10, dfa75_T10, dfa75_T109, dfa75_T10, dfa75_T36, dfa75_T150, dfa75_T15, dfa75_T15, dfa75_T15, dfa75_T146, dfa75_T15, dfa75_T15, dfa75_T15, dfa75_T15, dfa75_T15, dfa75_T31, dfa75_T33, dfa75_T100, dfa75_T100, dfa75_T186, dfa75_T178, dfa75_T30, dfa75_T68, dfa75_T112, dfa75_T69, dfa75_T14, dfa75_T75, dfa75_T74, dfa75_T74, dfa75_T74, dfa75_T130, dfa75_T74, dfa75_T74, dfa75_T74, dfa75_T74, dfa75_T74, dfa75_T5, dfa75_T5, dfa75_T51, dfa75_T38, dfa75_T11, dfa75_T70, dfa75_T206, dfa75_T5, dfa75_T37, dfa75_T54, dfa75_T83, dfa75_T58, dfa75_T84, dfa75_T88, dfa75_T23, dfa75_T23, dfa75_T23, dfa75_T148, dfa75_T23, dfa75_T23, dfa75_T23, dfa75_T23, dfa75_T23, dfa75_T5, dfa75_T5, dfa75_T12, dfa75_T157, dfa75_T35, dfa75_T35, dfa75_T36, dfa75_T36, dfa75_T36, dfa75_T137, dfa75_T36, dfa75_T36, dfa75_T36, dfa75_T36, dfa75_T36, dfa75_T5, dfa75_T5, dfa75_T91, dfa75_T26, dfa75_T202, dfa75_T31, dfa75_T31, dfa75_T31, dfa75_T147, dfa75_T31, dfa75_T31, dfa75_T31, dfa75_T31, dfa75_T31, dfa75_T6, dfa75_T165, dfa75_T33, dfa75_T33, dfa75_T33, dfa75_T142, dfa75_T33, dfa75_T33, dfa75_T33, dfa75_T33, dfa75_T33, dfa75_T59, dfa75_T193, dfa75_T161, dfa75_T3, dfa75_T27, dfa75_T97, dfa75_T42, dfa75_T7, dfa75_T216, dfa75_T73, dfa75_T167, dfa75_T181, dfa75_T106, dfa75_T5, dfa75_T71, dfa75_T34, dfa75_T28, dfa75_T76, dfa75_T92, dfa75_T13, dfa75_T13, dfa75_T13, dfa75_T61, dfa75_T13, dfa75_T10, dfa75_T10, dfa75_T81, dfa75_T15, dfa75_T26, dfa75_T26, dfa75_T26, dfa75_T143, dfa75_T26, dfa75_T26, dfa75_T26, dfa75_T26, dfa75_T26, dfa75_T5, dfa75_T5, dfa75_T85, dfa75_T6, dfa75_T6, dfa75_T6, dfa75_T141, dfa75_T6, dfa75_T6, dfa75_T6, dfa75_T6, dfa75_T6, dfa75_T5, dfa75_T5, dfa75_T86, dfa75_T8, dfa75_T211, dfa75_T59, dfa75_T59, dfa75_T59, dfa75_T145, dfa75_T59, dfa75_T59, dfa75_T59, dfa75_T59, dfa75_T59, dfa75_T183, dfa75_T180, dfa75_T74, dfa75_T176, dfa75_T5, dfa75_T56, dfa75_T107, dfa75_T5, dfa75_T184, dfa75_T5, dfa75_T212, dfa75_T110, dfa75_T5, dfa75_T185, dfa75_T151, dfa75_T5, dfa75_T23, dfa75_T113, dfa75_T113, dfa75_T36, dfa75_T89, dfa75_T31, dfa75_T82, dfa75_T33, dfa75_T8, dfa75_T8, dfa75_T8, dfa75_T149, dfa75_T8, dfa75_T8, dfa75_T8, dfa75_T8, dfa75_T8, dfa75_T5, dfa75_T5, dfa75_T90, dfa75_T204, dfa75_T160, dfa75_T99, dfa75_T205, dfa75_T111, dfa75_T5, dfa75_T5, dfa75_T118, dfa75_T5, dfa75_T152, dfa75_T25, dfa75_T5, dfa75_T94, dfa75_T170, dfa75_T153, dfa75_T171, dfa75_T13, dfa75_T13, dfa75_T26, dfa75_T6, dfa75_T87, dfa75_T59, dfa75_T188, dfa75_T215, dfa75_T5, dfa75_T63, dfa75_T164, dfa75_T5, dfa75_T172, dfa75_T189, dfa75_T5, dfa75_T108, dfa75_T5, dfa75_T5, dfa75_T173, dfa75_T190, dfa75_T192, dfa75_T8, dfa75_T104, dfa75_T5, dfa75_T105, dfa75_T5, dfa75_T5, dfa75_T197, dfa75_T155, dfa75_T120, dfa75_T5, dfa75_T198, dfa75_T156, dfa75_T114, dfa75_T5, dfa75_T174, dfa75_T194, dfa75_T5, dfa75_T175, dfa75_T195, dfa75_T5, dfa75_T200, dfa75_T207, dfa75_T201, dfa75_T102, dfa75_T22, dfa75_T5, dfa75_T115, dfa75_T5, dfa75_T53, dfa75_T5, dfa75_T158, dfa75_T5, dfa75_T5, dfa75_T5 }; static ANTLR3_INT32 dfa75_sst(pbelle_sip_messageParser ctx, pANTLR3_BASE_RECOGNIZER recognizer, pANTLR3_INT_STREAM is, pANTLR3_CYCLIC_DFA dfa, ANTLR3_INT32 s) { ANTLR3_INT32 _s; _s = s; switch (s) { case 0: { ANTLR3_UINT32 LA75_249; ANTLR3_MARKER index75_249; LA75_249 = LA(1); index75_249 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index75_249); if ( s>=0 ) { return s; } } break; case 1: { ANTLR3_UINT32 LA75_381; ANTLR3_MARKER index75_381; LA75_381 = LA(1); index75_381 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index75_381); if ( s>=0 ) { return s; } } break; case 2: { ANTLR3_UINT32 LA75_419; ANTLR3_MARKER index75_419; LA75_419 = LA(1); index75_419 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index75_419); if ( s>=0 ) { return s; } } break; case 3: { ANTLR3_UINT32 LA75_272; ANTLR3_MARKER index75_272; LA75_272 = LA(1); index75_272 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index75_272); if ( s>=0 ) { return s; } } break; case 4: { ANTLR3_UINT32 LA75_214; ANTLR3_MARKER index75_214; LA75_214 = LA(1); index75_214 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index75_214); if ( s>=0 ) { return s; } } break; case 5: { ANTLR3_UINT32 LA75_493; ANTLR3_MARKER index75_493; LA75_493 = LA(1); index75_493 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index75_493); if ( s>=0 ) { return s; } } break; case 6: { ANTLR3_UINT32 LA75_84; ANTLR3_MARKER index75_84; LA75_84 = LA(1); index75_84 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index75_84); if ( s>=0 ) { return s; } } break; case 7: { ANTLR3_UINT32 LA75_10; ANTLR3_MARKER index75_10; LA75_10 = LA(1); index75_10 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index75_10); if ( s>=0 ) { return s; } } break; case 8: { ANTLR3_UINT32 LA75_271; ANTLR3_MARKER index75_271; LA75_271 = LA(1); index75_271 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index75_271); if ( s>=0 ) { return s; } } break; case 9: { ANTLR3_UINT32 LA75_201; ANTLR3_MARKER index75_201; LA75_201 = LA(1); index75_201 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index75_201); if ( s>=0 ) { return s; } } break; case 10: { ANTLR3_UINT32 LA75_329; ANTLR3_MARKER index75_329; LA75_329 = LA(1); index75_329 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index75_329); if ( s>=0 ) { return s; } } break; case 11: { ANTLR3_UINT32 LA75_145; ANTLR3_MARKER index75_145; LA75_145 = LA(1); index75_145 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index75_145); if ( s>=0 ) { return s; } } break; case 12: { ANTLR3_UINT32 LA75_189; ANTLR3_MARKER index75_189; LA75_189 = LA(1); index75_189 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index75_189); if ( s>=0 ) { return s; } } break; case 13: { ANTLR3_UINT32 LA75_57; ANTLR3_MARKER index75_57; LA75_57 = LA(1); index75_57 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index75_57); if ( s>=0 ) { return s; } } break; case 14: { ANTLR3_UINT32 LA75_481; ANTLR3_MARKER index75_481; LA75_481 = LA(1); index75_481 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index75_481); if ( s>=0 ) { return s; } } break; case 15: { ANTLR3_UINT32 LA75_382; ANTLR3_MARKER index75_382; LA75_382 = LA(1); index75_382 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index75_382); if ( s>=0 ) { return s; } } break; case 16: { ANTLR3_UINT32 LA75_317; ANTLR3_MARKER index75_317; LA75_317 = LA(1); index75_317 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index75_317); if ( s>=0 ) { return s; } } break; case 17: { ANTLR3_UINT32 LA75_420; ANTLR3_MARKER index75_420; LA75_420 = LA(1); index75_420 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index75_420); if ( s>=0 ) { return s; } } break; case 18: { ANTLR3_UINT32 LA75_11; ANTLR3_MARKER index75_11; LA75_11 = LA(1); index75_11 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index75_11); if ( s>=0 ) { return s; } } break; case 19: { ANTLR3_UINT32 LA75_540; ANTLR3_MARKER index75_540; LA75_540 = LA(1); index75_540 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index75_540); if ( s>=0 ) { return s; } } break; case 20: { ANTLR3_UINT32 LA75_215; ANTLR3_MARKER index75_215; LA75_215 = LA(1); index75_215 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index75_215); if ( s>=0 ) { return s; } } break; case 21: { ANTLR3_UINT32 LA75_404; ANTLR3_MARKER index75_404; LA75_404 = LA(1); index75_404 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index75_404); if ( s>=0 ) { return s; } } break; case 22: { ANTLR3_UINT32 LA75_494; ANTLR3_MARKER index75_494; LA75_494 = LA(1); index75_494 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index75_494); if ( s>=0 ) { return s; } } break; case 23: { ANTLR3_UINT32 LA75_457; ANTLR3_MARKER index75_457; LA75_457 = LA(1); index75_457 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index75_457); if ( s>=0 ) { return s; } } break; case 24: { ANTLR3_UINT32 LA75_388; ANTLR3_MARKER index75_388; LA75_388 = LA(1); index75_388 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index75_388); if ( s>=0 ) { return s; } } break; case 25: { ANTLR3_UINT32 LA75_511; ANTLR3_MARKER index75_511; LA75_511 = LA(1); index75_511 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index75_511); if ( s>=0 ) { return s; } } break; case 26: { ANTLR3_UINT32 LA75_611; ANTLR3_MARKER index75_611; LA75_611 = LA(1); index75_611 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index75_611); if ( s>=0 ) { return s; } } break; case 27: { ANTLR3_UINT32 LA75_567; ANTLR3_MARKER index75_567; LA75_567 = LA(1); index75_567 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index75_567); if ( s>=0 ) { return s; } } break; case 28: { ANTLR3_UINT32 LA75_607; ANTLR3_MARKER index75_607; LA75_607 = LA(1); index75_607 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index75_607); if ( s>=0 ) { return s; } } break; case 29: { ANTLR3_UINT32 LA75_585; ANTLR3_MARKER index75_585; LA75_585 = LA(1); index75_585 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index75_585); if ( s>=0 ) { return s; } } break; case 30: { ANTLR3_UINT32 LA75_605; ANTLR3_MARKER index75_605; LA75_605 = LA(1); index75_605 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index75_605); if ( s>=0 ) { return s; } } break; case 31: { ANTLR3_UINT32 LA75_576; ANTLR3_MARKER index75_576; LA75_576 = LA(1); index75_576 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index75_576); if ( s>=0 ) { return s; } } break; case 32: { ANTLR3_UINT32 LA75_514; ANTLR3_MARKER index75_514; LA75_514 = LA(1); index75_514 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index75_514); if ( s>=0 ) { return s; } } break; case 33: { ANTLR3_UINT32 LA75_516; ANTLR3_MARKER index75_516; LA75_516 = LA(1); index75_516 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index75_516); if ( s>=0 ) { return s; } } break; case 34: { ANTLR3_UINT32 LA75_573; ANTLR3_MARKER index75_573; LA75_573 = LA(1); index75_573 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index75_573); if ( s>=0 ) { return s; } } break; case 35: { ANTLR3_UINT32 LA75_612; ANTLR3_MARKER index75_612; LA75_612 = LA(1); index75_612 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index75_612); if ( s>=0 ) { return s; } } break; case 36: { ANTLR3_UINT32 LA75_519; ANTLR3_MARKER index75_519; LA75_519 = LA(1); index75_519 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index75_519); if ( s>=0 ) { return s; } } break; case 37: { ANTLR3_UINT32 LA75_554; ANTLR3_MARKER index75_554; LA75_554 = LA(1); index75_554 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index75_554); if ( s>=0 ) { return s; } } break; case 38: { ANTLR3_UINT32 LA75_589; ANTLR3_MARKER index75_589; LA75_589 = LA(1); index75_589 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index75_589); if ( s>=0 ) { return s; } } break; case 39: { ANTLR3_UINT32 LA75_522; ANTLR3_MARKER index75_522; LA75_522 = LA(1); index75_522 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index75_522); if ( s>=0 ) { return s; } } break; case 40: { ANTLR3_UINT32 LA75_570; ANTLR3_MARKER index75_570; LA75_570 = LA(1); index75_570 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index75_570); if ( s>=0 ) { return s; } } break; case 41: { ANTLR3_UINT32 LA75_548; ANTLR3_MARKER index75_548; LA75_548 = LA(1); index75_548 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index75_548); if ( s>=0 ) { return s; } } break; case 42: { ANTLR3_UINT32 LA75_609; ANTLR3_MARKER index75_609; LA75_609 = LA(1); index75_609 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index75_609); if ( s>=0 ) { return s; } } break; case 43: { ANTLR3_UINT32 LA75_613; ANTLR3_MARKER index75_613; LA75_613 = LA(1); index75_613 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index75_613); if ( s>=0 ) { return s; } } break; case 44: { ANTLR3_UINT32 LA75_599; ANTLR3_MARKER index75_599; LA75_599 = LA(1); index75_599 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index75_599); if ( s>=0 ) { return s; } } break; case 45: { ANTLR3_UINT32 LA75_584; ANTLR3_MARKER index75_584; LA75_584 = LA(1); index75_584 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index75_584); if ( s>=0 ) { return s; } } break; case 46: { ANTLR3_UINT32 LA75_593; ANTLR3_MARKER index75_593; LA75_593 = LA(1); index75_593 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index75_593); if ( s>=0 ) { return s; } } break; case 47: { ANTLR3_UINT32 LA75_549; ANTLR3_MARKER index75_549; LA75_549 = LA(1); index75_549 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index75_549); if ( s>=0 ) { return s; } } break; case 48: { ANTLR3_UINT32 LA75_575; ANTLR3_MARKER index75_575; LA75_575 = LA(1); index75_575 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index75_575); if ( s>=0 ) { return s; } } break; case 49: { ANTLR3_UINT32 LA75_582; ANTLR3_MARKER index75_582; LA75_582 = LA(1); index75_582 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index75_582); if ( s>=0 ) { return s; } } break; case 50: { ANTLR3_UINT32 LA75_596; ANTLR3_MARKER index75_596; LA75_596 = LA(1); index75_596 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index75_596); if ( s>=0 ) { return s; } } break; case 51: { ANTLR3_UINT32 LA75_551; ANTLR3_MARKER index75_551; LA75_551 = LA(1); index75_551 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index75_551); if ( s>=0 ) { return s; } } break; case 52: { ANTLR3_UINT32 LA75_330; ANTLR3_MARKER index75_330; LA75_330 = LA(1); index75_330 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index75_330); if ( s>=0 ) { return s; } } break; case 53: { ANTLR3_UINT32 LA75_83; ANTLR3_MARKER index75_83; LA75_83 = LA(1); index75_83 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index75_83); if ( s>=0 ) { return s; } } break; case 54: { ANTLR3_UINT32 LA75_200; ANTLR3_MARKER index75_200; LA75_200 = LA(1); index75_200 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index75_200); if ( s>=0 ) { return s; } } break; case 55: { ANTLR3_UINT32 LA75_482; ANTLR3_MARKER index75_482; LA75_482 = LA(1); index75_482 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index75_482); if ( s>=0 ) { return s; } } break; case 56: { ANTLR3_UINT32 LA75_541; ANTLR3_MARKER index75_541; LA75_541 = LA(1); index75_541 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index75_541); if ( s>=0 ) { return s; } } break; case 57: { ANTLR3_UINT32 LA75_318; ANTLR3_MARKER index75_318; LA75_318 = LA(1); index75_318 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index75_318); if ( s>=0 ) { return s; } } break; case 58: { ANTLR3_UINT32 LA75_284; ANTLR3_MARKER index75_284; LA75_284 = LA(1); index75_284 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index75_284); if ( s>=0 ) { return s; } } break; case 59: { ANTLR3_UINT32 LA75_144; ANTLR3_MARKER index75_144; LA75_144 = LA(1); index75_144 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index75_144); if ( s>=0 ) { return s; } } break; case 60: { ANTLR3_UINT32 LA75_405; ANTLR3_MARKER index75_405; LA75_405 = LA(1); index75_405 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index75_405); if ( s>=0 ) { return s; } } break; case 61: { ANTLR3_UINT32 LA75_188; ANTLR3_MARKER index75_188; LA75_188 = LA(1); index75_188 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index75_188); if ( s>=0 ) { return s; } } break; case 62: { ANTLR3_UINT32 LA75_283; ANTLR3_MARKER index75_283; LA75_283 = LA(1); index75_283 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index75_283); if ( s>=0 ) { return s; } } break; case 63: { ANTLR3_UINT32 LA75_250; ANTLR3_MARKER index75_250; LA75_250 = LA(1); index75_250 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index75_250); if ( s>=0 ) { return s; } } break; case 64: { ANTLR3_UINT32 LA75_56; ANTLR3_MARKER index75_56; LA75_56 = LA(1); index75_56 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 3; } SEEK(index75_56); if ( s>=0 ) { return s; } } break; } if (BACKTRACKING > 0) { FAILEDFLAG = ANTLR3_TRUE; return -1; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)"779:11: ( fast_uri | generic_uri )"; EXCEPTION->decisionNum = 75; EXCEPTION->state = _s; return -1; } /* Declare tracking structure for Cyclic DFA 75 */ static ANTLR3_CYCLIC_DFA cdfa75 = { 75, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"779:11: ( fast_uri | generic_uri )", (CDFA_SPECIAL_FUNC) dfa75_sst, antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa75_eot, /* EOT table */ dfa75_eof, /* EOF table */ dfa75_min, /* Minimum tokens for each state */ dfa75_max, /* Maximum tokens for each state */ dfa75_accept, /* Accept table */ dfa75_special, /* Special transition states */ dfa75_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 75 * --------------------- *//** Static dfa state tables for Cyclic dfa: * 796:11: ( paramless_uri | generic_uri_for_from_to_contact_addr_spec ) */ static const ANTLR3_INT32 dfa80_eot[112] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa80_eof[112] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, 14, 14, 14, -1, 14, -1, 14, 14, 14, 14, 14, -1, -1, 14, -1, 14, 14, 14, -1, -1, -1, 14, 14, 14, -1, 14, 14, 14, -1, 14, 14, 14, 14, 14, 14, 14, 14, -1, -1, -1, 14, 14, 14, 14, 14, 14, 14, 14, -1, 14, -1, -1, 14, -1, 14, -1, -1, -1, -1, -1, 14, 14, 14, -1, 14, 14, -1, -1, 14, 14, 14, -1, -1, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, -1, -1, 14, 14, -1, -1, 14, 14, 14, -1, -1, 14, 14, 14, 14, -1, -1, -1, 14, -1 }; static const ANTLR3_INT32 dfa80_min[112] = { 6, 6, -1, 4, 6, 6, 6, 6, 6, 4, 4, 4, 13, 4, -1, 4, 4, 4, 4, 4, 0, 0, 4, 13, 4, 4, 4, 4, 0, 0, 4, 4, 4, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 13, 0, 0, 4, 4, 4, 4, 6, 4, 4, 4, 13, 4, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 4, 4, 4, 4, 6, 6, 0, 0, 4, 4, 4, 0, 0, 4, 4, 4, 4, 4, 6, 4, 4, 4, 4, 0, 0, 4, 4, 0, 0, 4, 6, 6, 0, 0, 4, 4, 4, 4, 0, 0, 0, 4, 0 }; static const ANTLR3_INT32 dfa80_max[112] = { 40, 40, -1, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, -1, 40, 40, 40, 40, 40, 0, 0, 40, 19, 40, 40, 40, 40, 0, 0, 40, 40, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 19, 0, 0, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 0, 0, 40, 0, 40, 0, 0, 0, 0, 0, 40, 40, 40, 40, 40, 40, 0, 0, 40, 40, 40, 0, 0, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 0, 0, 40, 40, 0, 0, 40, 40, 40, 0, 0, 40, 40, 40, 40, 0, 0, 0, 40, 0 }; static const ANTLR3_INT32 dfa80_accept[112] = { -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa80_special[112] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 21, 1, -1, -1, -1, -1, -1, -1, 0, 22, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 23, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 15, 12, -1, 8, -1, 16, 24, 3, 25, 4, -1, -1, -1, -1, -1, -1, 6, 26, -1, -1, -1, 17, 13, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, 14, -1, -1, 9, 19, -1, -1, -1, 7, 27, -1, -1, -1, -1, 5, 11, 20, -1, 10 }; /** Used when there is no transition table entry for a particular state */ #define dfa80_T_empty NULL static const ANTLR3_INT32 dfa80_T0[] = { 24, 19, -1, -1, 18, 2, 31, 14, 26, 32, 24, 26, -1, 26, 24, 31, -1, -1, -1, 26, -1, -1, -1, 23, 24, 2, -1, -1, 26, -1, 27, 24, 14, 26, 26, 26, 26 }; static const ANTLR3_INT32 dfa80_T1[] = { 2, 2, 14, -1, 2, 2, 84, 14, 86, 85, 2, 86, 14, 86, 2, 84, -1, -1, -1, 86, -1, -1, -1, 87, 88, 2, -1, -1, 86, -1, 2, 2, 14, 86, 86, 86, 86 }; static const ANTLR3_INT32 dfa80_T2[] = { 2, 2, 14, -1, 2, 2, 50, 14, 52, 51, 2, 52, -1, 52, 72, 50, -1, -1, -1, 52, -1, -1, -1, 53, 54, 2, -1, -1, 52, -1, 27, 2, 14, 52, 52, 52, 52 }; static const ANTLR3_INT32 dfa80_T3[] = { 24, 19, -1, -1, 18, 2, 67, 14, 25, 68, 24, 22, -1, 26, 24, 67, -1, -1, -1, 26, -1, -1, -1, 23, 24, 2, -1, -1, 26, -1, 27, 24, 14, 26, 26, 26, 26 }; static const ANTLR3_INT32 dfa80_T4[] = { 2, -1, 3, -1, 4, -1, 6, 5, -1, 8, -1, 2, -1, 4, -1, -1, -1, 2, -1, -1, -1, 2, 7, -1, -1, -1, 2, -1, -1, -1, -1, 2, 2, 2, 2 }; static const ANTLR3_INT32 dfa80_T5[] = { 2, 2, 14, -1, 2, 2, 84, 14, 86, 85, 2, 86, -1, 86, 2, 84, -1, -1, -1, 86, -1, -1, -1, 87, 88, 2, -1, -1, 86, -1, 27, 2, 14, 86, 86, 86, 86 }; static const ANTLR3_INT32 dfa80_T6[] = { 33, -1, -1, -1, -1, -1, 33 }; static const ANTLR3_INT32 dfa80_T7[] = { 46, -1, -1, -1, -1, -1, 46 }; static const ANTLR3_INT32 dfa80_T8[] = { 57, -1, -1, -1, -1, -1, 57 }; static const ANTLR3_INT32 dfa80_T9[] = { 14, -1, -1, -1, 14, 14, 14, 90, -1, 14, -1, 14, 14, 89, -1, -1, -1, 14, -1, -1, -1, 14, 14, -1, -1, -1, 14, -1, 14, -1, 14, 14, 14, 14, 14 }; static const ANTLR3_INT32 dfa80_T10[] = { 24, 19, -1, -1, 18, 2, 20, 14, 25, 21, 24, 22, -1, 26, 24, 20, -1, -1, -1, 26, -1, -1, -1, 23, 24, 2, -1, -1, 26, -1, 27, 24, 14, 26, 26, 26, 26 }; static const ANTLR3_INT32 dfa80_T11[] = { 38, 19, -1, -1, 14, 2, 34, 14, 36, 35, 41, 36, -1, 36, 39, 34, -1, -1, -1, 36, -1, -1, -1, 37, 40, -1, -1, -1, 36, -1, 14, 14, 14, 36, 36, 36, 36 }; static const ANTLR3_INT32 dfa80_T12[] = { 14, -1, -1, -1, 14, 14, 14, 106, -1, 14, -1, 14, -1, 105, -1, -1, -1, 14, -1, -1, -1, 14, 14, -1, -1, -1, 14, -1, 14, -1, 14, 14, 14, 14, 14 }; static const ANTLR3_INT32 dfa80_T13[] = { 14, 14, -1, -1, 14, -1, 42, 14, 14, 79, 14, 14, -1, 14, 14, 42, -1, -1, -1, 14, -1, -1, -1, 14, 14, -1, -1, -1, 14, -1, 14, 14, 14, 14, 14, 14, 14 }; static const ANTLR3_INT32 dfa80_T14[] = { 14, -1, -1, -1, 14, 14, 14, 100, -1, 14, -1, 14, -1, 99, -1, -1, -1, 14, -1, -1, -1, 14, 14, -1, -1, -1, 14, -1, 14, -1, 14, 14, 14, 14, 14 }; static const ANTLR3_INT32 dfa80_T15[] = { 13, 14, -1, -1, 14, 2, 9, -1, 11, 10, 17, 11, -1, 11, 15, 9, -1, -1, -1, 11, 2, -1, -1, 12, 16, 2, -1, -1, 11, -1, 2, 2, -1, 11, 11, 11, 11 }; static const ANTLR3_INT32 dfa80_T16[] = { 24, 19, -1, -1, 18, 2, 29, 14, 25, 28, 24, 30, -1, 26, 24, 29, -1, -1, -1, 26, -1, -1, -1, 23, 24, 2, -1, -1, 26, -1, 27, 24, 14, 26, 26, 26, 26 }; static const ANTLR3_INT32 dfa80_T17[] = { 24, 19, -1, -1, 18, 2, 44, 14, 26, 45, 24, 26, -1, 26, 24, 44, -1, -1, -1, 26, -1, -1, -1, 23, 24, 2, -1, -1, 26, -1, 27, 24, 14, 26, 26, 26, 26 }; static const ANTLR3_INT32 dfa80_T18[] = { -1 }; static const ANTLR3_INT32 dfa80_T19[] = { 24, 19, -1, -1, 18, 2, 70, 14, 49, 71, 24, 22, -1, 26, 24, 70, -1, -1, -1, 26, -1, -1, -1, 23, 24, 2, -1, -1, 26, -1, 27, 24, 14, 26, 26, 26, 26 }; static const ANTLR3_INT32 dfa80_T20[] = { 14, 14, -1, -1, 14, -1, 94, 14, 82, 95, 14, 58, -1, 14, 14, 94, -1, -1, -1, 14, -1, -1, -1, 14, 14, -1, -1, -1, 14, -1, 14, 14, 14, 14, 14, 14, 14 }; static const ANTLR3_INT32 dfa80_T21[] = { 14, 14, -1, -1, 14, -1, 92, 14, 61, 93, 14, 58, -1, 14, 14, 92, -1, -1, -1, 14, -1, -1, -1, 14, 14, -1, -1, -1, 14, -1, 14, 14, 14, 14, 14, 14, 14 }; static const ANTLR3_INT32 dfa80_T22[] = { 14, 14, -1, -1, 14, -1, 80, 14, 82, 81, 14, 14, -1, 14, 14, 80, -1, -1, -1, 14, -1, -1, -1, 14, 14, -1, -1, -1, 14, -1, 14, 14, 14, 14, 14, 14, 14 }; static const ANTLR3_INT32 dfa80_T23[] = { 14, 14, -1, -1, 14, -1, 59, 14, 61, 60, 14, 58, -1, 14, 14, 59, -1, -1, -1, 14, -1, -1, -1, 14, 14, -1, -1, -1, 14, -1, 14, 14, 14, 14, 14, 14, 14 }; static const ANTLR3_INT32 dfa80_T24[] = { 2, -1, -1, -1, 1, -1, 2, 2, -1, 2, -1, 2, -1, 1, -1, -1, -1, 2, -1, -1, -1, 2, 2, -1, -1, -1, 2, -1, -1, -1, -1, 2, 2, 2, 2 }; static const ANTLR3_INT32 dfa80_T25[] = { 14, 14, -1, -1, 14, -1, 42, 14, 14, 83, 14, 14, -1, 14, 14, 42, -1, -1, -1, 14, -1, -1, -1, 14, 14, -1, -1, -1, 14, -1, 14, 14, 14, 14, 14, 14, 14 }; static const ANTLR3_INT32 dfa80_T26[] = { 56, -1, -1, -1, -1, -1, 56 }; static const ANTLR3_INT32 dfa80_T27[] = { 24, 19, -1, -1, 18, 2, 65, 14, 25, 66, 24, 22, -1, 26, 24, 65, -1, -1, -1, 26, -1, -1, -1, 23, 24, 2, -1, -1, 26, -1, 27, 24, 14, 26, 26, 26, 26 }; static const ANTLR3_INT32 dfa80_T28[] = { 69, -1, -1, -1, -1, -1, 69 }; static const ANTLR3_INT32 dfa80_T29[] = { 78, -1, -1, -1, -1, -1, 78 }; static const ANTLR3_INT32 dfa80_T30[] = { 24, 19, -1, -1, 18, 2, 47, 14, 49, 48, 24, 26, -1, 26, 24, 47, -1, -1, -1, 26, -1, -1, -1, 23, 24, 2, -1, -1, 26, -1, 27, 24, 14, 26, 26, 26, 26 }; static const ANTLR3_INT32 dfa80_T31[] = { 14, 14, -1, -1, 14, -1, 42, 14, 14, 104, 14, 14, -1, 14, 14, 42, -1, -1, -1, 14, -1, -1, -1, 14, 14, -1, -1, -1, 14, -1, 14, 14, 14, 14, 14, 14, 14 }; static const ANTLR3_INT32 dfa80_T32[] = { 24, 19, -1, -1, 18, 2, 102, 14, 25, 101, 24, 103, -1, 26, 24, 102, -1, -1, -1, 26, -1, -1, -1, 23, 24, 2, -1, -1, 26, -1, 27, 24, 14, 26, 26, 26, 26 }; static const ANTLR3_INT32 dfa80_T33[] = { 14, -1, -1, -1, 14, 14, 14, 74, -1, 14, -1, 14, 14, 73, -1, -1, -1, 14, -1, -1, -1, 14, 14, -1, -1, -1, 14, -1, 14, -1, 14, 14, 14, 14, 14 }; static const ANTLR3_INT32 dfa80_T34[] = { 14, 14, -1, -1, 14, -1, 42, 14, 14, 43, 14, 14, -1, 14, 14, 42, -1, -1, -1, 14, 2, -1, -1, 14, 14, -1, -1, -1, 14, -1, 14, 14, 14, 14, 14, 14, 14 }; static const ANTLR3_INT32 dfa80_T35[] = { 24, 19, -1, -1, 18, 2, 76, 14, 25, 75, 24, 77, -1, 26, 24, 76, -1, -1, -1, 26, -1, -1, -1, 23, 24, 2, -1, -1, 26, -1, 27, 24, 14, 26, 26, 26, 26 }; static const ANTLR3_INT32 dfa80_T36[] = { 24, 19, -1, -1, 18, 2, 44, 14, 26, 55, 24, 26, -1, 26, 24, 44, -1, -1, -1, 26, -1, -1, -1, 23, 24, 2, -1, -1, 26, -1, 27, 24, 14, 26, 26, 26, 26 }; static const ANTLR3_INT32 dfa80_T37[] = { 14, 14, -1, -1, 14, -1, 42, 14, 14, 111, 14, 14, -1, 14, 14, 42, -1, -1, -1, 14, -1, -1, -1, 14, 14, -1, -1, -1, 14, -1, 14, 14, 14, 14, 14, 14, 14 }; static const ANTLR3_INT32 dfa80_T38[] = { 24, 19, -1, -1, 18, 2, 44, 14, 26, 91, 24, 26, -1, 26, 24, 44, -1, -1, -1, 26, -1, -1, -1, 23, 24, 2, -1, -1, 26, -1, 27, 24, 14, 26, 26, 26, 26 }; static const ANTLR3_INT32 dfa80_T39[] = { 14, 14, -1, -1, 14, -1, 64, 14, 61, 62, 14, 63, -1, 14, 14, 64, -1, -1, -1, 14, -1, -1, -1, 14, 14, -1, -1, -1, 14, -1, 14, 14, 14, 14, 14, 14, 14 }; static const ANTLR3_INT32 dfa80_T40[] = { 14, 14, -1, -1, 14, -1, 94, 14, 82, 95, 14, 14, -1, 14, 14, 94, -1, -1, -1, 14, -1, -1, -1, 14, 14, -1, -1, -1, 14, -1, 14, 14, 14, 14, 14, 14, 14 }; static const ANTLR3_INT32 dfa80_T41[] = { 2, 2, 14, -1, 2, 2, 50, 14, 52, 51, 2, 52, -1, 52, 2, 50, -1, -1, -1, 52, -1, -1, -1, 53, 54, 2, -1, -1, 52, -1, 2, 2, 14, 52, 52, 52, 52 }; static const ANTLR3_INT32 dfa80_T42[] = { 24, 19, -1, -1, 18, 2, 44, 14, 26, 107, 24, 26, -1, 26, 24, 44, -1, -1, -1, 26, -1, -1, -1, 23, 24, 2, -1, -1, 26, -1, 27, 24, 14, 26, 26, 26, 26 }; static const ANTLR3_INT32 dfa80_T43[] = { 14, 14, -1, -1, 14, -1, 109, 14, 61, 108, 14, 110, -1, 14, 14, 109, -1, -1, -1, 14, -1, -1, -1, 14, 14, -1, -1, -1, 14, -1, 14, 14, 14, 14, 14, 14, 14 }; static const ANTLR3_INT32 dfa80_T44[] = { 14, 14, -1, -1, 14, -1, 97, 14, 61, 96, 14, 98, -1, 14, 14, 97, -1, -1, -1, 14, -1, -1, -1, 14, 14, -1, -1, -1, 14, -1, 14, 14, 14, 14, 14, 14, 14 }; static const ANTLR3_INT32 dfa80_T45[] = { 24, 19, -1, -1, 18, 2, 70, 14, 49, 71, 24, 26, -1, 26, 24, 70, -1, -1, -1, 26, -1, -1, -1, 23, 24, 2, -1, -1, 26, -1, 27, 24, 14, 26, 26, 26, 26 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa80_transitions[] = { dfa80_T24, dfa80_T4, NULL, dfa80_T15, dfa80_T4, dfa80_T4, dfa80_T4, dfa80_T4, dfa80_T4, dfa80_T10, dfa80_T16, dfa80_T0, dfa80_T6, dfa80_T0, NULL, dfa80_T0, dfa80_T0, dfa80_T0, dfa80_T11, dfa80_T34, dfa80_T18, dfa80_T18, dfa80_T17, dfa80_T7, dfa80_T0, dfa80_T30, dfa80_T0, dfa80_T41, dfa80_T18, dfa80_T18, dfa80_T36, dfa80_T0, dfa80_T0, dfa80_T26, dfa80_T11, dfa80_T11, dfa80_T11, dfa80_T8, dfa80_T11, dfa80_T11, dfa80_T11, dfa80_T11, dfa80_T23, dfa80_T39, dfa80_T27, dfa80_T3, dfa80_T28, dfa80_T18, dfa80_T18, dfa80_T45, dfa80_T2, dfa80_T2, dfa80_T2, dfa80_T33, dfa80_T2, dfa80_T35, dfa80_T0, dfa80_T29, dfa80_T13, dfa80_T18, dfa80_T18, dfa80_T22, dfa80_T18, dfa80_T25, dfa80_T18, dfa80_T18, dfa80_T18, dfa80_T18, dfa80_T18, dfa80_T0, dfa80_T19, dfa80_T19, dfa80_T1, dfa80_T9, dfa80_T9, dfa80_T18, dfa80_T18, dfa80_T38, dfa80_T11, dfa80_T21, dfa80_T18, dfa80_T18, dfa80_T40, dfa80_T44, dfa80_T5, dfa80_T5, dfa80_T5, dfa80_T14, dfa80_T5, dfa80_T2, dfa80_T2, dfa80_T32, dfa80_T18, dfa80_T18, dfa80_T20, dfa80_T20, dfa80_T18, dfa80_T18, dfa80_T31, dfa80_T12, dfa80_T12, dfa80_T18, dfa80_T18, dfa80_T42, dfa80_T43, dfa80_T5, dfa80_T5, dfa80_T18, dfa80_T18, dfa80_T18, dfa80_T37, dfa80_T18 }; static ANTLR3_INT32 dfa80_sst(pbelle_sip_messageParser ctx, pANTLR3_BASE_RECOGNIZER recognizer, pANTLR3_INT_STREAM is, pANTLR3_CYCLIC_DFA dfa, ANTLR3_INT32 s) { ANTLR3_INT32 _s; _s = s; switch (s) { case 0: { ANTLR3_UINT32 LA80_28; ANTLR3_MARKER index80_28; LA80_28 = LA(1); index80_28 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 14; } SEEK(index80_28); if ( s>=0 ) { return s; } } break; case 1: { ANTLR3_UINT32 LA80_21; ANTLR3_MARKER index80_21; LA80_21 = LA(1); index80_21 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 14; } SEEK(index80_21); if ( s>=0 ) { return s; } } break; case 2: { ANTLR3_UINT32 LA80_48; ANTLR3_MARKER index80_48; LA80_48 = LA(1); index80_48 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 14; } SEEK(index80_48); if ( s>=0 ) { return s; } } break; case 3: { ANTLR3_UINT32 LA80_66; ANTLR3_MARKER index80_66; LA80_66 = LA(1); index80_66 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 14; } SEEK(index80_66); if ( s>=0 ) { return s; } } break; case 4: { ANTLR3_UINT32 LA80_68; ANTLR3_MARKER index80_68; LA80_68 = LA(1); index80_68 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 14; } SEEK(index80_68); if ( s>=0 ) { return s; } } break; case 5: { ANTLR3_UINT32 LA80_107; ANTLR3_MARKER index80_107; LA80_107 = LA(1); index80_107 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 14; } SEEK(index80_107); if ( s>=0 ) { return s; } } break; case 6: { ANTLR3_UINT32 LA80_75; ANTLR3_MARKER index80_75; LA80_75 = LA(1); index80_75 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 14; } SEEK(index80_75); if ( s>=0 ) { return s; } } break; case 7: { ANTLR3_UINT32 LA80_101; ANTLR3_MARKER index80_101; LA80_101 = LA(1); index80_101 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 14; } SEEK(index80_101); if ( s>=0 ) { return s; } } break; case 8: { ANTLR3_UINT32 LA80_62; ANTLR3_MARKER index80_62; LA80_62 = LA(1); index80_62 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 14; } SEEK(index80_62); if ( s>=0 ) { return s; } } break; case 9: { ANTLR3_UINT32 LA80_96; ANTLR3_MARKER index80_96; LA80_96 = LA(1); index80_96 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 14; } SEEK(index80_96); if ( s>=0 ) { return s; } } break; case 10: { ANTLR3_UINT32 LA80_111; ANTLR3_MARKER index80_111; LA80_111 = LA(1); index80_111 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 14; } SEEK(index80_111); if ( s>=0 ) { return s; } } break; case 11: { ANTLR3_UINT32 LA80_108; ANTLR3_MARKER index80_108; LA80_108 = LA(1); index80_108 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 14; } SEEK(index80_108); if ( s>=0 ) { return s; } } break; case 12: { ANTLR3_UINT32 LA80_60; ANTLR3_MARKER index80_60; LA80_60 = LA(1); index80_60 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 14; } SEEK(index80_60); if ( s>=0 ) { return s; } } break; case 13: { ANTLR3_UINT32 LA80_81; ANTLR3_MARKER index80_81; LA80_81 = LA(1); index80_81 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 14; } SEEK(index80_81); if ( s>=0 ) { return s; } } break; case 14: { ANTLR3_UINT32 LA80_93; ANTLR3_MARKER index80_93; LA80_93 = LA(1); index80_93 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 14; } SEEK(index80_93); if ( s>=0 ) { return s; } } break; case 15: { ANTLR3_UINT32 LA80_59; ANTLR3_MARKER index80_59; LA80_59 = LA(1); index80_59 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 14; } SEEK(index80_59); if ( s>=0 ) { return s; } } break; case 16: { ANTLR3_UINT32 LA80_64; ANTLR3_MARKER index80_64; LA80_64 = LA(1); index80_64 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 14; } SEEK(index80_64); if ( s>=0 ) { return s; } } break; case 17: { ANTLR3_UINT32 LA80_80; ANTLR3_MARKER index80_80; LA80_80 = LA(1); index80_80 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 14; } SEEK(index80_80); if ( s>=0 ) { return s; } } break; case 18: { ANTLR3_UINT32 LA80_92; ANTLR3_MARKER index80_92; LA80_92 = LA(1); index80_92 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 14; } SEEK(index80_92); if ( s>=0 ) { return s; } } break; case 19: { ANTLR3_UINT32 LA80_97; ANTLR3_MARKER index80_97; LA80_97 = LA(1); index80_97 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 14; } SEEK(index80_97); if ( s>=0 ) { return s; } } break; case 20: { ANTLR3_UINT32 LA80_109; ANTLR3_MARKER index80_109; LA80_109 = LA(1); index80_109 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 14; } SEEK(index80_109); if ( s>=0 ) { return s; } } break; case 21: { ANTLR3_UINT32 LA80_20; ANTLR3_MARKER index80_20; LA80_20 = LA(1); index80_20 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 14; } SEEK(index80_20); if ( s>=0 ) { return s; } } break; case 22: { ANTLR3_UINT32 LA80_29; ANTLR3_MARKER index80_29; LA80_29 = LA(1); index80_29 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 14; } SEEK(index80_29); if ( s>=0 ) { return s; } } break; case 23: { ANTLR3_UINT32 LA80_47; ANTLR3_MARKER index80_47; LA80_47 = LA(1); index80_47 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 14; } SEEK(index80_47); if ( s>=0 ) { return s; } } break; case 24: { ANTLR3_UINT32 LA80_65; ANTLR3_MARKER index80_65; LA80_65 = LA(1); index80_65 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 14; } SEEK(index80_65); if ( s>=0 ) { return s; } } break; case 25: { ANTLR3_UINT32 LA80_67; ANTLR3_MARKER index80_67; LA80_67 = LA(1); index80_67 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 14; } SEEK(index80_67); if ( s>=0 ) { return s; } } break; case 26: { ANTLR3_UINT32 LA80_76; ANTLR3_MARKER index80_76; LA80_76 = LA(1); index80_76 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 14; } SEEK(index80_76); if ( s>=0 ) { return s; } } break; case 27: { ANTLR3_UINT32 LA80_102; ANTLR3_MARKER index80_102; LA80_102 = LA(1); index80_102 = INDEX(); REWINDLAST(); s = -1; if ( ((((IS_TOKEN(sip)))||((IS_TOKEN(sips))))) ) { s = 2; } else if ( (ANTLR3_TRUE) ) { s = 14; } SEEK(index80_102); if ( s>=0 ) { return s; } } break; } if (BACKTRACKING > 0) { FAILEDFLAG = ANTLR3_TRUE; return -1; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)"796:11: ( paramless_uri | generic_uri_for_from_to_contact_addr_spec )"; EXCEPTION->decisionNum = 80; EXCEPTION->state = _s; return -1; } /* Declare tracking structure for Cyclic DFA 80 */ static ANTLR3_CYCLIC_DFA cdfa80 = { 80, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"796:11: ( paramless_uri | generic_uri_for_from_to_contact_addr_spec )", (CDFA_SPECIAL_FUNC) dfa80_sst, antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa80_eot, /* EOT table */ dfa80_eof, /* EOF table */ dfa80_min, /* Minimum tokens for each state */ dfa80_max, /* Maximum tokens for each state */ dfa80_accept, /* Accept table */ dfa80_special, /* Special transition states */ dfa80_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 80 * --------------------- *//** Static dfa state tables for Cyclic dfa: * ()* loopback of 802:9: ( lws token )* */ static const ANTLR3_INT32 dfa82_eot[6] = { -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa82_eof[6] = { -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa82_min[6] = { 11, 6, 36, -1, -1, 6 }; static const ANTLR3_INT32 dfa82_max[6] = { 36, 40, 36, -1, -1, 40 }; static const ANTLR3_INT32 dfa82_accept[6] = { -1, -1, -1, 2, 1, -1 }; static const ANTLR3_INT32 dfa82_special[6] = { -1, -1, -1, -1, -1, -1 }; /** Used when there is no transition table entry for a particular state */ #define dfa82_T_empty NULL static const ANTLR3_INT32 dfa82_T0[] = { 4, -1, -1, -1, 4, 2, 4, 4, -1, 4, -1, 4, -1, 4, -1, 3, -1, 4, -1, -1, -1, 4, 4, -1, -1, -1, 4, -1, -1, -1, 1, 4, 4, 4, 4 }; static const ANTLR3_INT32 dfa82_T1[] = { 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1 }; static const ANTLR3_INT32 dfa82_T2[] = { 4, -1, -1, -1, 4, -1, 4, 4, -1, 4, -1, 4, -1, 4, -1, 3, -1, 4, -1, -1, -1, 4, 4, -1, -1, -1, 4, -1, -1, -1, 5, 4, 4, 4, 4 }; static const ANTLR3_INT32 dfa82_T3[] = { 5 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa82_transitions[] = { dfa82_T1, dfa82_T0, dfa82_T3, NULL, NULL, dfa82_T2 }; /* Declare tracking structure for Cyclic DFA 82 */ static ANTLR3_CYCLIC_DFA cdfa82 = { 82, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"()* loopback of 802:9: ( lws token )*", (CDFA_SPECIAL_FUNC) antlr3dfaspecialStateTransition, /* Default special state transition function */ antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa82_eot, /* EOT table */ dfa82_eof, /* EOF table */ dfa82_min, /* Minimum tokens for each state */ dfa82_max, /* Maximum tokens for each state */ dfa82_accept, /* Accept table */ dfa82_special, /* Special transition states */ dfa82_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 82 * --------------------- *//** Static dfa state tables for Cyclic dfa: * 893:6: ( semi type_param )? */ static const ANTLR3_INT32 dfa86_eot[32] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa86_eof[32] = { 4, -1, -1, -1, -1, -1, -1, -1, 4, 4, 4, 4, 4, 4, -1, -1, -1, -1, -1, -1, -1, 4, 4, 4, 4, 4, 4, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa86_min[32] = { 11, 11, 36, 6, -1, 34, 6, 36, 6, 6, 6, 6, 6, 6, 6, 11, 36, 6, 18, 6, 36, 6, 6, 6, 6, 6, 6, 6, 11, 36, -1, 34 }; static const ANTLR3_INT32 dfa86_max[32] = { 36, 36, 36, 40, -1, 36, 40, 36, 40, 40, 40, 40, 40, 40, 40, 36, 36, 40, 36, 40, 36, 40, 40, 40, 40, 40, 40, 40, 36, 36, -1, 36 }; static const ANTLR3_INT32 dfa86_accept[32] = { -1, -1, -1, -1, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1 }; static const ANTLR3_INT32 dfa86_special[32] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; /** Used when there is no transition table entry for a particular state */ #define dfa86_T_empty NULL static const ANTLR3_INT32 dfa86_T0[] = { 13, -1, -1, -1, 8, 16, 10, 9, -1, 10, -1, 10, 17, 8, -1, -1, -1, 10, -1, -1, -1, 11, 12, -1, -1, -1, 10, -1, 4, -1, 15, 10, 10, 10, 10 }; static const ANTLR3_INT32 dfa86_T1[] = { 26, -1, -1, -1, 21, 29, 23, 22, -1, 23, -1, 23, -1, 21, -1, -1, -1, 23, -1, -1, -1, 24, 25, -1, -1, -1, 23, -1, 4, 30, 28, 23, 23, 23, 23 }; static const ANTLR3_INT32 dfa86_T2[] = { 5 }; static const ANTLR3_INT32 dfa86_T3[] = { 14 }; static const ANTLR3_INT32 dfa86_T4[] = { 27 }; static const ANTLR3_INT32 dfa86_T5[] = { 31 }; static const ANTLR3_INT32 dfa86_T6[] = { 26, -1, -1, -1, 21, -1, 23, 22, -1, 23, 4, 23, -1, 21, -1, -1, -1, 23, -1, -1, -1, 24, 25, -1, -1, -1, 23, -1, -1, -1, 27, 23, 23, 23, 23 }; static const ANTLR3_INT32 dfa86_T7[] = { 26, -1, -1, -1, 21, 20, 23, 22, -1, 23, 4, 23, -1, 21, -1, -1, -1, 23, -1, -1, -1, 24, 25, -1, -1, -1, 23, -1, -1, -1, 19, 23, 23, 23, 23 }; static const ANTLR3_INT32 dfa86_T8[] = { 13, -1, -1, -1, 8, -1, 10, 9, -1, 10, -1, 10, -1, 8, -1, -1, -1, 10, -1, -1, -1, 11, 12, -1, -1, -1, 10, -1, -1, -1, 14, 10, 10, 10, 10 }; static const ANTLR3_INT32 dfa86_T9[] = { 18 }; static const ANTLR3_INT32 dfa86_T10[] = { 13, -1, -1, -1, 8, 7, 10, 9, -1, 10, -1, 10, -1, 8, -1, -1, -1, 10, -1, -1, -1, 11, 12, -1, -1, -1, 10, -1, -1, -1, 6, 10, 10, 10, 10 }; static const ANTLR3_INT32 dfa86_T11[] = { 16, -1, -1, -1, -1, -1, -1, 17, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, -1, 15 }; static const ANTLR3_INT32 dfa86_T12[] = { 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, -1, 1 }; static const ANTLR3_INT32 dfa86_T13[] = { 4, 30, 31 }; static const ANTLR3_INT32 dfa86_T14[] = { 3, -1, 5 }; static const ANTLR3_INT32 dfa86_T15[] = { 17, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, -1, 18 }; static const ANTLR3_INT32 dfa86_T16[] = { 29, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, 30, 28 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa86_transitions[] = { dfa86_T12, dfa86_T12, dfa86_T2, dfa86_T10, NULL, dfa86_T14, dfa86_T10, dfa86_T3, dfa86_T0, dfa86_T0, dfa86_T0, dfa86_T0, dfa86_T0, dfa86_T0, dfa86_T8, dfa86_T11, dfa86_T9, dfa86_T7, dfa86_T15, dfa86_T7, dfa86_T4, dfa86_T1, dfa86_T1, dfa86_T1, dfa86_T1, dfa86_T1, dfa86_T1, dfa86_T6, dfa86_T16, dfa86_T5, NULL, dfa86_T13 }; /* Declare tracking structure for Cyclic DFA 86 */ static ANTLR3_CYCLIC_DFA cdfa86 = { 86, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"893:6: ( semi type_param )?", (CDFA_SPECIAL_FUNC) antlr3dfaspecialStateTransition, /* Default special state transition function */ antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa86_eot, /* EOT table */ dfa86_eof, /* EOF table */ dfa86_min, /* Minimum tokens for each state */ dfa86_max, /* Maximum tokens for each state */ dfa86_accept, /* Accept table */ dfa86_special, /* Special transition states */ dfa86_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 86 * --------------------- *//** Static dfa state tables for Cyclic dfa: * 1016:7: ( name_addr_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($header_from::current)] | paramless_addr_spec_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($header_from::current)] ) */ static const ANTLR3_INT32 dfa89_eot[30] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa89_eof[30] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa89_min[30] = { 6, 6, 36, 6, 6, 6, 6, 6, 6, -1, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, -1, 6, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa89_max[30] = { 40, 40, 36, 40, 40, 40, 40, 40, 40, -1, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, -1, 40, 40, 40, 40, 40, 40, 40, 40 }; static const ANTLR3_INT32 dfa89_accept[30] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa89_special[30] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; /** Used when there is no transition table entry for a particular state */ #define dfa89_T_empty NULL static const ANTLR3_INT32 dfa89_T0[] = { 15, -1, 21, -1, 29, 9, 12, 11, -1, 12, -1, 12, -1, 29, -1, 9, -1, 12, -1, -1, -1, 13, 14, -1, -1, -1, 12, -1, -1, -1, 9, 12, 12, 12, 12 }; static const ANTLR3_INT32 dfa89_T1[] = { 8, -1, 21, -1, 23, 9, 5, 4, -1, 5, -1, 5, -1, 23, -1, 9, -1, 5, -1, -1, -1, 6, 7, -1, -1, -1, 5, -1, -1, -1, 9, 5, 5, 5, 5 }; static const ANTLR3_INT32 dfa89_T2[] = { 8, -1, 21, -1, 17, 9, 19, 18, -1, 22, -1, 5, -1, 17, -1, 9, -1, 5, -1, -1, -1, 6, 20, -1, -1, -1, 5, -1, -1, -1, 9, 5, 5, 5, 5 }; static const ANTLR3_INT32 dfa89_T3[] = { 15, -1, 21, -1, 24, 9, 26, 25, -1, 28, -1, 12, -1, 24, -1, 9, -1, 12, -1, -1, -1, 13, 27, -1, -1, -1, 12, -1, -1, -1, 9, 12, 12, 12, 12 }; static const ANTLR3_INT32 dfa89_T4[] = { 15, -1, -1, -1, 10, 2, 12, 11, -1, 12, 9, 12, -1, 10, -1, 9, -1, 12, -1, -1, -1, 13, 14, -1, -1, -1, 12, -1, -1, -1, 1, 12, 12, 12, 12 }; static const ANTLR3_INT32 dfa89_T5[] = { 16 }; static const ANTLR3_INT32 dfa89_T6[] = { 8, -1, -1, -1, 3, 2, 5, 4, -1, 5, 9, 5, -1, 3, -1, 9, -1, 5, -1, -1, -1, 6, 7, -1, -1, -1, 5, -1, -1, -1, 1, 5, 5, 5, 5 }; static const ANTLR3_INT32 dfa89_T7[] = { 15, -1, -1, -1, 10, -1, 12, 11, -1, 12, 9, 12, -1, 10, -1, 9, -1, 12, -1, -1, -1, 13, 14, -1, -1, -1, 12, -1, -1, -1, 16, 12, 12, 12, 12 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa89_transitions[] = { dfa89_T6, dfa89_T4, dfa89_T5, dfa89_T2, dfa89_T1, dfa89_T1, dfa89_T1, dfa89_T1, dfa89_T1, NULL, dfa89_T3, dfa89_T0, dfa89_T0, dfa89_T0, dfa89_T0, dfa89_T0, dfa89_T7, dfa89_T2, dfa89_T2, dfa89_T2, dfa89_T2, NULL, dfa89_T2, dfa89_T1, dfa89_T3, dfa89_T3, dfa89_T3, dfa89_T3, dfa89_T3, dfa89_T0 }; /* Declare tracking structure for Cyclic DFA 89 */ static ANTLR3_CYCLIC_DFA cdfa89 = { 89, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"1016:7: ( name_addr_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($header_from::current)] | paramless_addr_spec_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($header_from::current)] )", (CDFA_SPECIAL_FUNC) antlr3dfaspecialStateTransition, /* Default special state transition function */ antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa89_eot, /* EOT table */ dfa89_eof, /* EOF table */ dfa89_min, /* Minimum tokens for each state */ dfa89_max, /* Maximum tokens for each state */ dfa89_accept, /* Accept table */ dfa89_special, /* Special transition states */ dfa89_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 89 * --------------------- *//** Static dfa state tables for Cyclic dfa: * 1078:1: challenge[belle_sip_header_www_authenticate_t* www_authenticate] : ( ({...}? token lws digest_cln[www_authenticate] ( comma digest_cln[www_authenticate] )* ) | other_challenge[www_authenticate] ); */ static const ANTLR3_INT32 dfa96_eot[100] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa96_eof[100] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa96_min[100] = { 6, 6, 6, 6, 6, 6, 6, 6, 36, 6, 6, 6, 6, 6, 6, 6, 11, 36, 6, 18, 6, 36, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 4, 4, 0, 4, 4, 4, 4, 4, 4, 4, 4, -1, -1, 0, 0, 0, 0, 0, 0, 0, 4, 0, 4, 0, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 4, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0 }; static const ANTLR3_INT32 dfa96_max[100] = { 40, 40, 40, 40, 40, 40, 40, 40, 36, 40, 40, 40, 40, 40, 40, 40, 36, 36, 40, 36, 40, 36, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 40, 40, 0, 40, 40, 40, 40, 40, 40, 40, 40, -1, -1, 0, 0, 0, 0, 0, 0, 0, 40, 0, 40, 0, 40, 40, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0, 40, 40, 40, 40, 40, 40, 40, 40, 0, 0, 0, 40, 0, 40, 40, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0 }; static const ANTLR3_INT32 dfa96_accept[100] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa96_special[100] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 22, 3, 28, 25, 32, 1, 23, 4, 29, 26, 31, -1, -1, -1, 36, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2, 24, 5, 30, 27, 33, 35, -1, 34, -1, 11, -1, -1, -1, 6, 12, 14, 18, 7, 38, 40, 41, 9, 43, -1, 45, -1, -1, -1, -1, -1, -1, -1, -1, 15, 42, 44, -1, 10, -1, -1, 13, 8, 19, 17, 16, 39, 20, 37, -1, 21 }; /** Used when there is no transition table entry for a particular state */ #define dfa96_T_empty NULL static const ANTLR3_INT32 dfa96_T0[] = { 46, 46, 46, 37, 46, 62, 46, 61, 46, 46, 46, 46, 71, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 60, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa96_T1[] = { 17, -1, -1, -1, -1, -1, -1, 18, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 16 }; static const ANTLR3_INT32 dfa96_T2[] = { 28, -1, -1, -1, 23, 21, 25, 24, -1, 25, 22, 25, -1, 23, -1, -1, -1, 25, -1, -1, -1, 26, 27, -1, -1, -1, 25, -1, -1, -1, 20, 25, 25, 25, 25 }; static const ANTLR3_INT32 dfa96_T3[] = { 46, 46, 82, 37, 46, 46, 77, 76, 79, 78, 46, 79, 74, 79, 46, 77, 46, 46, 46, 79, 46, 46, 46, 80, 81, 46, 46, 46, 79, 46, 46, 46, 75, 79, 79, 79, 79 }; static const ANTLR3_INT32 dfa96_T4[] = { 14, -1, -1, -1, 9, 17, 11, 10, -1, 11, -1, 11, 18, 9, -1, -1, -1, 11, -1, -1, -1, 12, 13, -1, -1, -1, 11, -1, -1, -1, 16, 11, 11, 11, 11 }; static const ANTLR3_INT32 dfa96_T5[] = { 15 }; static const ANTLR3_INT32 dfa96_T6[] = { 46, 46, 45, 37, 46, 46, 40, 39, 42, 41, 46, 42, 38, 42, 46, 40, 46, 46, 46, 42, 46, 46, 46, 43, 44, 46, 46, 46, 42, 46, 46, 46, 36, 42, 42, 42, 42 }; static const ANTLR3_INT32 dfa96_T7[] = { 6, -1, -1, -1, 1, 8, 3, 2, -1, 3, -1, 3, -1, 1, -1, -1, -1, 3, -1, -1, -1, 4, 5, -1, -1, -1, 3, -1, -1, -1, 7, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa96_T8[] = { 46, 46, 46, 37, 46, 46, 46, 46, 46, 46, 46, 46, 68, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa96_T9[] = { -1 }; static const ANTLR3_INT32 dfa96_T10[] = { 46, 46, 46, 37, 46, 46, 46, 46, 46, 46, 46, 46, 69, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa96_T11[] = { 6, -1, -1, -1, 1, -1, 3, 2, -1, 3, -1, 3, -1, 1, -1, -1, -1, 3, -1, -1, -1, 4, 5, -1, -1, -1, 3, -1, -1, -1, -1, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa96_T12[] = { 46, 46, 82, 37, 46, 62, 77, 89, 79, 78, 46, 79, 93, 79, 46, 77, 46, 46, 46, 79, 46, 46, 46, 80, 81, 46, 46, 46, 79, 46, 46, 46, 88, 79, 79, 79, 79 }; static const ANTLR3_INT32 dfa96_T13[] = { 46, 46, 82, 37, 46, 62, 77, 89, 79, 78, 46, 79, 92, 79, 46, 77, 46, 46, 46, 79, 46, 46, 46, 80, 81, 46, 46, 46, 79, 46, 46, 46, 88, 79, 79, 79, 79 }; static const ANTLR3_INT32 dfa96_T14[] = { 46, 46, 82, 37, 46, 62, 77, 89, 79, 78, 46, 79, 94, 79, 46, 77, 46, 46, 46, 79, 46, 46, 46, 80, 81, 46, 46, 46, 79, 46, 46, 46, 88, 79, 79, 79, 79 }; static const ANTLR3_INT32 dfa96_T15[] = { 14, -1, -1, -1, 9, 8, 11, 10, -1, 11, -1, 11, -1, 9, -1, -1, -1, 11, -1, -1, -1, 12, 13, -1, -1, -1, 11, -1, -1, -1, 7, 11, 11, 11, 11 }; static const ANTLR3_INT32 dfa96_T16[] = { 46, 46, 45, 37, 46, 62, 40, 61, 42, 41, 46, 42, 65, 42, 46, 40, 46, 46, 46, 42, 46, 46, 46, 43, 44, 46, 46, 46, 42, 46, 46, 46, 60, 42, 42, 42, 42 }; static const ANTLR3_INT32 dfa96_T17[] = { 46, 46, 45, 37, 46, 62, 40, 61, 42, 41, 46, 42, 67, 42, 46, 40, 46, 46, 46, 42, 46, 46, 46, 43, 44, 46, 46, 46, 42, 46, 46, 46, 60, 42, 42, 42, 42 }; static const ANTLR3_INT32 dfa96_T18[] = { 46, 46, 45, 37, 46, 62, 40, 61, 42, 41, 46, 42, 66, 42, 46, 40, 46, 46, 46, 42, 46, 46, 46, 43, 44, 46, 46, 46, 42, 46, 46, 46, 60, 42, 42, 42, 42 }; static const ANTLR3_INT32 dfa96_T19[] = { 54, -1, -1, -1, 49, -1, 51, 50, -1, 51, 22, 51, -1, 49, -1, -1, -1, 51, -1, -1, -1, 52, 53, -1, -1, -1, 51, -1, -1, -1, 35, 51, 51, 51, 51 }; static const ANTLR3_INT32 dfa96_T20[] = { 14, -1, -1, -1, 9, -1, 11, 10, -1, 11, -1, 11, -1, 9, -1, -1, -1, 11, -1, -1, -1, 12, 13, -1, -1, -1, 11, -1, -1, -1, 15, 11, 11, 11, 11 }; static const ANTLR3_INT32 dfa96_T21[] = { 46, 46, 82, 37, 46, 62, 77, 89, 79, 78, 46, 79, 90, 79, 46, 77, 46, 46, 46, 79, 46, 46, 46, 80, 81, 46, 46, 46, 79, 46, 46, 46, 88, 79, 79, 79, 79 }; static const ANTLR3_INT32 dfa96_T22[] = { 46, 46, 45, 37, 46, 62, 40, 61, 42, 41, 46, 42, 63, 42, 46, 40, 46, 46, 46, 42, 46, 46, 46, 43, 44, 46, 46, 46, 42, 46, 46, 46, 60, 42, 42, 42, 42 }; static const ANTLR3_INT32 dfa96_T23[] = { 46, 46, 45, 37, 46, 46, 40, 46, 42, 41, 46, 42, 70, 42, 46, 40, 46, 46, 46, 42, 46, 46, 46, 43, 44, 46, 46, 46, 42, 46, 46, 46, 58, 42, 42, 42, 42 }; static const ANTLR3_INT32 dfa96_T24[] = { 46, 46, 82, 37, 46, 46, 77, 46, 79, 78, 46, 79, 95, 79, 46, 77, 46, 46, 46, 79, 46, 46, 46, 80, 81, 46, 46, 46, 79, 46, 46, 46, 86, 79, 79, 79, 79 }; static const ANTLR3_INT32 dfa96_T25[] = { 46, 46, 46, 37, 46, 62, 46, 46, 46, 46, 46, 46, 99, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 98, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa96_T26[] = { 46, 46, 82, 37, 46, 62, 77, 89, 79, 78, 46, 79, 87, 79, 46, 77, 46, 46, 46, 79, 46, 46, 46, 80, 81, 46, 46, 46, 79, 46, 46, 46, 88, 79, 79, 79, 79 }; static const ANTLR3_INT32 dfa96_T27[] = { 46, 46, 46, 37, 46, 62, 46, 46, 46, 46, 46, 46, 83, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 73, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa96_T28[] = { 18, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 19 }; static const ANTLR3_INT32 dfa96_T29[] = { 46, 46, 46, 37, 46, 46, 46, 46, 46, 46, 46, 46, 57, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 58, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa96_T30[] = { 46, 46, 46, 37, 46, 46, 46, 46, 46, 46, 46, 46, 72, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 73, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa96_T31[] = { 46, 46, 46, 37, 46, 46, 46, 46, 46, 46, 46, 46, 85, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 86, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa96_T32[] = { 46, 46, 82, 37, 46, 62, 77, 89, 79, 78, 46, 79, 91, 79, 46, 77, 46, 46, 46, 79, 46, 46, 46, 80, 81, 46, 46, 46, 79, 46, 46, 46, 88, 79, 79, 79, 79 }; static const ANTLR3_INT32 dfa96_T33[] = { 46, 46, 46, 37, 46, 46, 46, 46, 46, 46, 46, 46, 97, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 98, 46, 46, 46, 46 }; static const ANTLR3_INT32 dfa96_T34[] = { 46, 46, 45, 37, 46, 62, 40, 61, 42, 41, 46, 42, 59, 42, 46, 40, 46, 46, 46, 42, 46, 46, 46, 43, 44, 46, 46, 46, 42, 46, 46, 46, 60, 42, 42, 42, 42 }; static const ANTLR3_INT32 dfa96_T35[] = { 46, 46, 45, 37, 46, 62, 40, 61, 42, 41, 46, 42, 64, 42, 46, 40, 46, 46, 46, 42, 46, 46, 46, 43, 44, 46, 46, 46, 42, 46, 46, 46, 60, 42, 42, 42, 42 }; static const ANTLR3_INT32 dfa96_T36[] = { 34, -1, -1, -1, 29, 21, 31, 30, -1, 31, 22, 31, -1, 29, -1, -1, -1, 31, -1, -1, -1, 32, 33, -1, -1, -1, 31, -1, -1, -1, 20, 31, 31, 31, 31 }; static const ANTLR3_INT32 dfa96_T37[] = { 19 }; static const ANTLR3_INT32 dfa96_T38[] = { 35 }; static const ANTLR3_INT32 dfa96_T39[] = { 46, 46, 45, 37, 46, 46, 40, 39, 42, 41, 46, 42, 55, 42, 46, 40, 46, 46, 46, 42, 46, 46, 46, 43, 44, 46, 46, 46, 42, 46, 46, 46, 36, 42, 42, 42, 42 }; static const ANTLR3_INT32 dfa96_T40[] = { 46, 46, 82, 37, 46, 46, 77, 76, 79, 78, 46, 79, 84, 79, 46, 77, 46, 46, 46, 79, 46, 46, 46, 80, 81, 46, 46, 46, 79, 46, 46, 46, 75, 79, 79, 79, 79 }; static const ANTLR3_INT32 dfa96_T41[] = { 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56 }; static const ANTLR3_INT32 dfa96_T42[] = { 46, 46, 46, 37, 46, 62, 46, 89, 46, 46, 46, 46, 96, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 88, 46, 46, 46, 46 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa96_transitions[] = { dfa96_T11, dfa96_T7, dfa96_T7, dfa96_T7, dfa96_T7, dfa96_T7, dfa96_T7, dfa96_T15, dfa96_T5, dfa96_T4, dfa96_T4, dfa96_T4, dfa96_T4, dfa96_T4, dfa96_T4, dfa96_T20, dfa96_T1, dfa96_T37, dfa96_T2, dfa96_T28, dfa96_T36, dfa96_T38, dfa96_T6, dfa96_T9, dfa96_T9, dfa96_T9, dfa96_T9, dfa96_T9, dfa96_T9, dfa96_T9, dfa96_T9, dfa96_T9, dfa96_T9, dfa96_T9, dfa96_T9, dfa96_T19, dfa96_T39, dfa96_T41, dfa96_T9, dfa96_T29, dfa96_T34, dfa96_T22, dfa96_T35, dfa96_T16, dfa96_T18, dfa96_T17, dfa96_T8, NULL, NULL, dfa96_T9, dfa96_T9, dfa96_T9, dfa96_T9, dfa96_T9, dfa96_T9, dfa96_T9, dfa96_T10, dfa96_T9, dfa96_T23, dfa96_T9, dfa96_T0, dfa96_T30, dfa96_T3, dfa96_T9, dfa96_T9, dfa96_T9, dfa96_T9, dfa96_T9, dfa96_T9, dfa96_T9, dfa96_T9, dfa96_T9, dfa96_T9, dfa96_T27, dfa96_T9, dfa96_T40, dfa96_T31, dfa96_T26, dfa96_T21, dfa96_T32, dfa96_T13, dfa96_T12, dfa96_T14, dfa96_T9, dfa96_T9, dfa96_T9, dfa96_T24, dfa96_T9, dfa96_T42, dfa96_T33, dfa96_T9, dfa96_T9, dfa96_T9, dfa96_T9, dfa96_T9, dfa96_T9, dfa96_T9, dfa96_T9, dfa96_T25, dfa96_T9 }; static ANTLR3_INT32 dfa96_sst(pbelle_sip_messageParser ctx, pANTLR3_BASE_RECOGNIZER recognizer, pANTLR3_INT_STREAM is, pANTLR3_CYCLIC_DFA dfa, ANTLR3_INT32 s) { ANTLR3_INT32 _s; _s = s; switch (s) { case 0: { ANTLR3_UINT32 LA96_23; ANTLR3_MARKER index96_23; LA96_23 = LA(1); index96_23 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index96_23); if ( s>=0 ) { return s; } } break; case 1: { ANTLR3_UINT32 LA96_29; ANTLR3_MARKER index96_29; LA96_29 = LA(1); index96_29 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index96_29); if ( s>=0 ) { return s; } } break; case 2: { ANTLR3_UINT32 LA96_49; ANTLR3_MARKER index96_49; LA96_49 = LA(1); index96_49 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index96_49); if ( s>=0 ) { return s; } } break; case 3: { ANTLR3_UINT32 LA96_25; ANTLR3_MARKER index96_25; LA96_25 = LA(1); index96_25 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index96_25); if ( s>=0 ) { return s; } } break; case 4: { ANTLR3_UINT32 LA96_31; ANTLR3_MARKER index96_31; LA96_31 = LA(1); index96_31 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index96_31); if ( s>=0 ) { return s; } } break; case 5: { ANTLR3_UINT32 LA96_51; ANTLR3_MARKER index96_51; LA96_51 = LA(1); index96_51 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index96_51); if ( s>=0 ) { return s; } } break; case 6: { ANTLR3_UINT32 LA96_63; ANTLR3_MARKER index96_63; LA96_63 = LA(1); index96_63 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index96_63); if ( s>=0 ) { return s; } } break; case 7: { ANTLR3_UINT32 LA96_67; ANTLR3_MARKER index96_67; LA96_67 = LA(1); index96_67 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index96_67); if ( s>=0 ) { return s; } } break; case 8: { ANTLR3_UINT32 LA96_91; ANTLR3_MARKER index96_91; LA96_91 = LA(1); index96_91 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index96_91); if ( s>=0 ) { return s; } } break; case 9: { ANTLR3_UINT32 LA96_71; ANTLR3_MARKER index96_71; LA96_71 = LA(1); index96_71 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index96_71); if ( s>=0 ) { return s; } } break; case 10: { ANTLR3_UINT32 LA96_87; ANTLR3_MARKER index96_87; LA96_87 = LA(1); index96_87 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index96_87); if ( s>=0 ) { return s; } } break; case 11: { ANTLR3_UINT32 LA96_59; ANTLR3_MARKER index96_59; LA96_59 = LA(1); index96_59 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index96_59); if ( s>=0 ) { return s; } } break; case 12: { ANTLR3_UINT32 LA96_64; ANTLR3_MARKER index96_64; LA96_64 = LA(1); index96_64 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index96_64); if ( s>=0 ) { return s; } } break; case 13: { ANTLR3_UINT32 LA96_90; ANTLR3_MARKER index96_90; LA96_90 = LA(1); index96_90 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index96_90); if ( s>=0 ) { return s; } } break; case 14: { ANTLR3_UINT32 LA96_65; ANTLR3_MARKER index96_65; LA96_65 = LA(1); index96_65 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index96_65); if ( s>=0 ) { return s; } } break; case 15: { ANTLR3_UINT32 LA96_83; ANTLR3_MARKER index96_83; LA96_83 = LA(1); index96_83 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index96_83); if ( s>=0 ) { return s; } } break; case 16: { ANTLR3_UINT32 LA96_94; ANTLR3_MARKER index96_94; LA96_94 = LA(1); index96_94 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index96_94); if ( s>=0 ) { return s; } } break; case 17: { ANTLR3_UINT32 LA96_93; ANTLR3_MARKER index96_93; LA96_93 = LA(1); index96_93 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index96_93); if ( s>=0 ) { return s; } } break; case 18: { ANTLR3_UINT32 LA96_66; ANTLR3_MARKER index96_66; LA96_66 = LA(1); index96_66 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index96_66); if ( s>=0 ) { return s; } } break; case 19: { ANTLR3_UINT32 LA96_92; ANTLR3_MARKER index96_92; LA96_92 = LA(1); index96_92 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index96_92); if ( s>=0 ) { return s; } } break; case 20: { ANTLR3_UINT32 LA96_96; ANTLR3_MARKER index96_96; LA96_96 = LA(1); index96_96 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index96_96); if ( s>=0 ) { return s; } } break; case 21: { ANTLR3_UINT32 LA96_99; ANTLR3_MARKER index96_99; LA96_99 = LA(1); index96_99 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index96_99); if ( s>=0 ) { return s; } } break; case 22: { ANTLR3_UINT32 LA96_24; ANTLR3_MARKER index96_24; LA96_24 = LA(1); index96_24 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index96_24); if ( s>=0 ) { return s; } } break; case 23: { ANTLR3_UINT32 LA96_30; ANTLR3_MARKER index96_30; LA96_30 = LA(1); index96_30 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index96_30); if ( s>=0 ) { return s; } } break; case 24: { ANTLR3_UINT32 LA96_50; ANTLR3_MARKER index96_50; LA96_50 = LA(1); index96_50 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index96_50); if ( s>=0 ) { return s; } } break; case 25: { ANTLR3_UINT32 LA96_27; ANTLR3_MARKER index96_27; LA96_27 = LA(1); index96_27 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index96_27); if ( s>=0 ) { return s; } } break; case 26: { ANTLR3_UINT32 LA96_33; ANTLR3_MARKER index96_33; LA96_33 = LA(1); index96_33 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index96_33); if ( s>=0 ) { return s; } } break; case 27: { ANTLR3_UINT32 LA96_53; ANTLR3_MARKER index96_53; LA96_53 = LA(1); index96_53 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index96_53); if ( s>=0 ) { return s; } } break; case 28: { ANTLR3_UINT32 LA96_26; ANTLR3_MARKER index96_26; LA96_26 = LA(1); index96_26 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index96_26); if ( s>=0 ) { return s; } } break; case 29: { ANTLR3_UINT32 LA96_32; ANTLR3_MARKER index96_32; LA96_32 = LA(1); index96_32 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index96_32); if ( s>=0 ) { return s; } } break; case 30: { ANTLR3_UINT32 LA96_52; ANTLR3_MARKER index96_52; LA96_52 = LA(1); index96_52 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index96_52); if ( s>=0 ) { return s; } } break; case 31: { ANTLR3_UINT32 LA96_34; ANTLR3_MARKER index96_34; LA96_34 = LA(1); index96_34 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index96_34); if ( s>=0 ) { return s; } } break; case 32: { ANTLR3_UINT32 LA96_28; ANTLR3_MARKER index96_28; LA96_28 = LA(1); index96_28 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index96_28); if ( s>=0 ) { return s; } } break; case 33: { ANTLR3_UINT32 LA96_54; ANTLR3_MARKER index96_54; LA96_54 = LA(1); index96_54 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index96_54); if ( s>=0 ) { return s; } } break; case 34: { ANTLR3_UINT32 LA96_57; ANTLR3_MARKER index96_57; LA96_57 = LA(1); index96_57 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index96_57); if ( s>=0 ) { return s; } } break; case 35: { ANTLR3_UINT32 LA96_55; ANTLR3_MARKER index96_55; LA96_55 = LA(1); index96_55 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index96_55); if ( s>=0 ) { return s; } } break; case 36: { ANTLR3_UINT32 LA96_38; ANTLR3_MARKER index96_38; LA96_38 = LA(1); index96_38 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index96_38); if ( s>=0 ) { return s; } } break; case 37: { ANTLR3_UINT32 LA96_97; ANTLR3_MARKER index96_97; LA96_97 = LA(1); index96_97 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index96_97); if ( s>=0 ) { return s; } } break; case 38: { ANTLR3_UINT32 LA96_68; ANTLR3_MARKER index96_68; LA96_68 = LA(1); index96_68 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index96_68); if ( s>=0 ) { return s; } } break; case 39: { ANTLR3_UINT32 LA96_95; ANTLR3_MARKER index96_95; LA96_95 = LA(1); index96_95 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index96_95); if ( s>=0 ) { return s; } } break; case 40: { ANTLR3_UINT32 LA96_69; ANTLR3_MARKER index96_69; LA96_69 = LA(1); index96_69 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index96_69); if ( s>=0 ) { return s; } } break; case 41: { ANTLR3_UINT32 LA96_70; ANTLR3_MARKER index96_70; LA96_70 = LA(1); index96_70 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index96_70); if ( s>=0 ) { return s; } } break; case 42: { ANTLR3_UINT32 LA96_84; ANTLR3_MARKER index96_84; LA96_84 = LA(1); index96_84 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index96_84); if ( s>=0 ) { return s; } } break; case 43: { ANTLR3_UINT32 LA96_72; ANTLR3_MARKER index96_72; LA96_72 = LA(1); index96_72 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index96_72); if ( s>=0 ) { return s; } } break; case 44: { ANTLR3_UINT32 LA96_85; ANTLR3_MARKER index96_85; LA96_85 = LA(1); index96_85 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index96_85); if ( s>=0 ) { return s; } } break; case 45: { ANTLR3_UINT32 LA96_74; ANTLR3_MARKER index96_74; LA96_74 = LA(1); index96_74 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(Digest))) ) { s = 47; } else if ( (ANTLR3_TRUE) ) { s = 48; } SEEK(index96_74); if ( s>=0 ) { return s; } } break; } if (BACKTRACKING > 0) { FAILEDFLAG = ANTLR3_TRUE; return -1; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)"1078:1: challenge[belle_sip_header_www_authenticate_t* www_authenticate] : ( ({...}? token lws digest_cln[www_authenticate] ( comma digest_cln[www_authenticate] )* ) | other_challenge[www_authenticate] );"; EXCEPTION->decisionNum = 96; EXCEPTION->state = _s; return -1; } /* Declare tracking structure for Cyclic DFA 96 */ static ANTLR3_CYCLIC_DFA cdfa96 = { 96, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"1078:1: challenge[belle_sip_header_www_authenticate_t* www_authenticate] : ( ({...}? token lws digest_cln[www_authenticate] ( comma digest_cln[www_authenticate] )* ) | other_challenge[www_authenticate] );", (CDFA_SPECIAL_FUNC) dfa96_sst, antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa96_eot, /* EOT table */ dfa96_eof, /* EOF table */ dfa96_min, /* Minimum tokens for each state */ dfa96_max, /* Maximum tokens for each state */ dfa96_accept, /* Accept table */ dfa96_special, /* Special transition states */ dfa96_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 96 * --------------------- *//** Static dfa state tables for Cyclic dfa: * ()* loopback of 1080:39: ( comma digest_cln[www_authenticate] )* */ static const ANTLR3_INT32 dfa95_eot[19] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa95_eof[19] = { 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa95_min[19] = { 9, 9, 36, 6, -1, 9, 6, 36, 6, 6, 6, 6, 6, 6, 6, 6, 36, -1, 6 }; static const ANTLR3_INT32 dfa95_max[19] = { 36, 36, 36, 40, -1, 36, 40, 36, 40, 40, 40, 40, 40, 40, 40, 40, 36, -1, 40 }; static const ANTLR3_INT32 dfa95_accept[19] = { -1, -1, -1, -1, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1 }; static const ANTLR3_INT32 dfa95_special[19] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; /** Used when there is no transition table entry for a particular state */ #define dfa95_T_empty NULL static const ANTLR3_INT32 dfa95_T0[] = { 5 }; static const ANTLR3_INT32 dfa95_T1[] = { 14 }; static const ANTLR3_INT32 dfa95_T2[] = { 4, -1, -1, -1, 4, 16, 4, 4, -1, 4, -1, 4, 17, 4, -1, -1, -1, 4, -1, -1, -1, 4, 4, -1, -1, -1, 4, -1, -1, -1, 15, 4, 4, 4, 4 }; static const ANTLR3_INT32 dfa95_T3[] = { 13, -1, -1, -1, 8, 16, 10, 9, -1, 10, -1, 10, 17, 8, -1, -1, -1, 10, -1, -1, -1, 11, 12, -1, -1, -1, 10, -1, -1, -1, 15, 10, 10, 10, 10 }; static const ANTLR3_INT32 dfa95_T4[] = { 3, -1, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1 }; static const ANTLR3_INT32 dfa95_T5[] = { 13, -1, -1, -1, 8, -1, 10, 9, -1, 10, -1, 10, -1, 8, -1, -1, -1, 10, -1, -1, -1, 11, 12, -1, -1, -1, 10, -1, -1, -1, 14, 10, 10, 10, 10 }; static const ANTLR3_INT32 dfa95_T6[] = { 4, -1, -1, -1, 4, -1, 4, 4, -1, 4, -1, 4, 17, 4, -1, -1, -1, 4, -1, -1, -1, 4, 4, -1, -1, -1, 4, -1, -1, -1, 18, 4, 4, 4, 4 }; static const ANTLR3_INT32 dfa95_T7[] = { 13, -1, -1, -1, 8, 7, 10, 9, -1, 10, -1, 10, -1, 8, -1, -1, -1, 10, -1, -1, -1, 11, 12, -1, -1, -1, 10, -1, -1, -1, 6, 10, 10, 10, 10 }; static const ANTLR3_INT32 dfa95_T8[] = { 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5 }; static const ANTLR3_INT32 dfa95_T9[] = { 18 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa95_transitions[] = { dfa95_T4, dfa95_T4, dfa95_T0, dfa95_T7, NULL, dfa95_T8, dfa95_T7, dfa95_T1, dfa95_T3, dfa95_T3, dfa95_T3, dfa95_T3, dfa95_T3, dfa95_T3, dfa95_T5, dfa95_T2, dfa95_T9, NULL, dfa95_T6 }; /* Declare tracking structure for Cyclic DFA 95 */ static ANTLR3_CYCLIC_DFA cdfa95 = { 95, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"()* loopback of 1080:39: ( comma digest_cln[www_authenticate] )*", (CDFA_SPECIAL_FUNC) antlr3dfaspecialStateTransition, /* Default special state transition function */ antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa95_eot, /* EOT table */ dfa95_eof, /* EOF table */ dfa95_min, /* Minimum tokens for each state */ dfa95_max, /* Maximum tokens for each state */ dfa95_accept, /* Accept table */ dfa95_special, /* Special transition states */ dfa95_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 95 * --------------------- *//** Static dfa state tables for Cyclic dfa: * ()* loopback of 1085:24: ( comma auth_param[(belle_sip_header_authorization_t*)www_authenticate] )* */ static const ANTLR3_INT32 dfa97_eot[19] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa97_eof[19] = { 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa97_min[19] = { 9, 9, 36, 6, -1, 9, 6, 36, 6, 6, 6, 6, 6, 6, 6, 6, 36, -1, 6 }; static const ANTLR3_INT32 dfa97_max[19] = { 36, 36, 36, 40, -1, 36, 40, 36, 40, 40, 40, 40, 40, 40, 40, 40, 36, -1, 40 }; static const ANTLR3_INT32 dfa97_accept[19] = { -1, -1, -1, -1, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1 }; static const ANTLR3_INT32 dfa97_special[19] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; /** Used when there is no transition table entry for a particular state */ #define dfa97_T_empty NULL static const ANTLR3_INT32 dfa97_T0[] = { 5 }; static const ANTLR3_INT32 dfa97_T1[] = { 14 }; static const ANTLR3_INT32 dfa97_T2[] = { 13, -1, -1, -1, 8, -1, 10, 9, -1, 10, -1, 10, -1, 8, -1, -1, -1, 10, -1, -1, -1, 11, 12, -1, -1, -1, 10, -1, -1, -1, 14, 10, 10, 10, 10 }; static const ANTLR3_INT32 dfa97_T3[] = { 4, -1, -1, -1, 4, 16, 4, 4, -1, 4, -1, 4, 17, 4, -1, -1, -1, 4, -1, -1, -1, 4, 4, -1, -1, -1, 4, -1, -1, -1, 15, 4, 4, 4, 4 }; static const ANTLR3_INT32 dfa97_T4[] = { 13, -1, -1, -1, 8, 16, 10, 9, -1, 10, -1, 10, 17, 8, -1, -1, -1, 10, -1, -1, -1, 11, 12, -1, -1, -1, 10, -1, -1, -1, 15, 10, 10, 10, 10 }; static const ANTLR3_INT32 dfa97_T5[] = { 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5 }; static const ANTLR3_INT32 dfa97_T6[] = { 4, -1, -1, -1, 4, -1, 4, 4, -1, 4, -1, 4, 17, 4, -1, -1, -1, 4, -1, -1, -1, 4, 4, -1, -1, -1, 4, -1, -1, -1, 18, 4, 4, 4, 4 }; static const ANTLR3_INT32 dfa97_T7[] = { 3, -1, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1 }; static const ANTLR3_INT32 dfa97_T8[] = { 18 }; static const ANTLR3_INT32 dfa97_T9[] = { 13, -1, -1, -1, 8, 7, 10, 9, -1, 10, -1, 10, -1, 8, -1, -1, -1, 10, -1, -1, -1, 11, 12, -1, -1, -1, 10, -1, -1, -1, 6, 10, 10, 10, 10 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa97_transitions[] = { dfa97_T7, dfa97_T7, dfa97_T0, dfa97_T9, NULL, dfa97_T5, dfa97_T9, dfa97_T1, dfa97_T4, dfa97_T4, dfa97_T4, dfa97_T4, dfa97_T4, dfa97_T4, dfa97_T2, dfa97_T3, dfa97_T8, NULL, dfa97_T6 }; /* Declare tracking structure for Cyclic DFA 97 */ static ANTLR3_CYCLIC_DFA cdfa97 = { 97, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"()* loopback of 1085:24: ( comma auth_param[(belle_sip_header_authorization_t*)www_authenticate] )*", (CDFA_SPECIAL_FUNC) antlr3dfaspecialStateTransition, /* Default special state transition function */ antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa97_eot, /* EOT table */ dfa97_eof, /* EOF table */ dfa97_min, /* Minimum tokens for each state */ dfa97_max, /* Maximum tokens for each state */ dfa97_accept, /* Accept table */ dfa97_special, /* Special transition states */ dfa97_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 97 * --------------------- *//** Static dfa state tables for Cyclic dfa: * 1086:1: digest_cln[belle_sip_header_www_authenticate_t* www_authenticate] : ( realm | nonce | algorithm | opaque | qop_opts | domain | stale | auth_param[(belle_sip_header_authorization_t*)www_authenticate] ); */ static const ANTLR3_INT32 dfa98_eot[97] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa98_eof[97] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa98_min[97] = { 6, 6, 6, 6, 6, 6, 6, 11, 36, 6, 18, 6, 36, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 4, 4, 0, 4, 4, 4, 4, 4, 4, 4, 4, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 4, -1, -1, -1, -1, 0, 4, 0, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 4, 0, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 4, 0, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0 }; static const ANTLR3_INT32 dfa98_max[97] = { 40, 40, 40, 40, 40, 40, 40, 36, 36, 40, 36, 40, 36, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 40, 40, 0, 40, 40, 40, 40, 40, 40, 40, 40, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 40, -1, -1, -1, -1, 0, 40, 0, 40, 40, 40, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 40, 0, 40, 40, 40, 40, 40, 40, 40, 40, 0, 0, 0, 40, 0, 40, 40, 0, 0, 0, 0, 0, 0, 0, 0, 40, 0 }; static const ANTLR3_INT32 dfa98_accept[97] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, 7, 8, -1, -1, -1, -1, -1, -1, -1, -1, 1, 2, 4, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa98_special[97] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 40, 16, 43, 19, 22, 25, 41, 17, 44, 20, 23, 26, -1, -1, -1, 30, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 42, 18, 45, 21, 24, 27, 31, -1, -1, -1, -1, -1, 29, -1, 0, -1, -1, -1, 1, 2, 5, 6, 10, 33, 34, 35, -1, 12, 36, -1, 38, -1, -1, -1, -1, -1, -1, -1, -1, 14, 39, 32, -1, 15, -1, -1, 7, 13, 3, 9, 8, 28, 4, 37, -1, 11 }; /** Used when there is no transition table entry for a particular state */ #define dfa98_T_empty NULL static const ANTLR3_INT32 dfa98_T0[] = { 25, -1, -1, -1, 20, 12, 22, 21, -1, 22, 13, 22, -1, 20, -1, -1, -1, 22, -1, -1, -1, 23, 24, -1, -1, -1, 22, -1, -1, -1, 11, 22, 22, 22, 22 }; static const ANTLR3_INT32 dfa98_T1[] = { 37, 37, 37, 28, 37, 58, 37, 57, 37, 37, 37, 37, 68, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 56, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa98_T2[] = { 8, -1, -1, -1, -1, -1, -1, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7 }; static const ANTLR3_INT32 dfa98_T3[] = { 37, 37, 36, 28, 37, 58, 31, 57, 33, 32, 37, 33, 59, 33, 37, 31, 37, 37, 37, 33, 37, 37, 37, 34, 35, 37, 37, 37, 33, 37, 37, 37, 56, 33, 33, 33, 33 }; static const ANTLR3_INT32 dfa98_T4[] = { 6, -1, -1, -1, 1, 8, 3, 2, -1, 3, -1, 3, 9, 1, -1, -1, -1, 3, -1, -1, -1, 4, 5, -1, -1, -1, 3, -1, -1, -1, 7, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa98_T5[] = { 37, 37, 79, 28, 37, 58, 74, 86, 76, 75, 37, 76, 88, 76, 37, 74, 37, 37, 37, 76, 37, 37, 37, 77, 78, 37, 37, 37, 76, 37, 37, 37, 85, 76, 76, 76, 76 }; static const ANTLR3_INT32 dfa98_T6[] = { 37, 37, 79, 28, 37, 58, 74, 86, 76, 75, 37, 76, 84, 76, 37, 74, 37, 37, 37, 76, 37, 37, 37, 77, 78, 37, 37, 37, 76, 37, 37, 37, 85, 76, 76, 76, 76 }; static const ANTLR3_INT32 dfa98_T7[] = { -1 }; static const ANTLR3_INT32 dfa98_T8[] = { 37, 37, 36, 28, 37, 37, 31, 30, 33, 32, 37, 33, 47, 33, 37, 31, 37, 37, 37, 33, 37, 37, 37, 34, 35, 37, 37, 37, 33, 37, 37, 37, 27, 33, 33, 33, 33 }; static const ANTLR3_INT32 dfa98_T9[] = { 37, 37, 79, 28, 37, 37, 74, 73, 76, 75, 37, 76, 81, 76, 37, 74, 37, 37, 37, 76, 37, 37, 37, 77, 78, 37, 37, 37, 76, 37, 37, 37, 72, 76, 76, 76, 76 }; static const ANTLR3_INT32 dfa98_T10[] = { 37, 37, 36, 28, 37, 58, 31, 57, 33, 32, 37, 33, 60, 33, 37, 31, 37, 37, 37, 33, 37, 37, 37, 34, 35, 37, 37, 37, 33, 37, 37, 37, 56, 33, 33, 33, 33 }; static const ANTLR3_INT32 dfa98_T11[] = { 37, 37, 36, 28, 37, 58, 31, 57, 33, 32, 37, 33, 55, 33, 37, 31, 37, 37, 37, 33, 37, 37, 37, 34, 35, 37, 37, 37, 33, 37, 37, 37, 56, 33, 33, 33, 33 }; static const ANTLR3_INT32 dfa98_T12[] = { 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48 }; static const ANTLR3_INT32 dfa98_T13[] = { 37, 37, 79, 28, 37, 37, 74, 73, 76, 75, 37, 76, 71, 76, 37, 74, 37, 37, 37, 76, 37, 37, 37, 77, 78, 37, 37, 37, 76, 37, 37, 37, 72, 76, 76, 76, 76 }; static const ANTLR3_INT32 dfa98_T14[] = { 37, 37, 37, 28, 37, 37, 37, 37, 37, 37, 37, 37, 53, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 54, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa98_T15[] = { 37, 37, 37, 28, 37, 37, 37, 37, 37, 37, 37, 37, 69, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 70, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa98_T16[] = { 37, 37, 37, 28, 37, 37, 37, 37, 37, 37, 37, 37, 82, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 83, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa98_T17[] = { 37, 37, 37, 28, 37, 37, 37, 37, 37, 37, 37, 37, 94, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 95, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa98_T18[] = { 37, 37, 37, 28, 37, 58, 37, 37, 37, 37, 37, 37, 96, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 95, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa98_T19[] = { 46, -1, -1, -1, 41, -1, 43, 42, -1, 43, 13, 43, -1, 41, -1, -1, -1, 43, -1, -1, -1, 44, 45, -1, -1, -1, 43, -1, -1, -1, 26, 43, 43, 43, 43 }; static const ANTLR3_INT32 dfa98_T20[] = { 10 }; static const ANTLR3_INT32 dfa98_T21[] = { 26 }; static const ANTLR3_INT32 dfa98_T22[] = { 37, 37, 37, 28, 37, 58, 37, 37, 37, 37, 37, 37, 80, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 70, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa98_T23[] = { 6, -1, -1, -1, 1, -1, 3, 2, -1, 3, -1, 3, -1, 1, -1, -1, -1, 3, -1, -1, -1, 4, 5, -1, -1, -1, 3, -1, -1, -1, -1, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa98_T24[] = { 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 10 }; static const ANTLR3_INT32 dfa98_T25[] = { 37, 37, 79, 28, 37, 58, 74, 86, 76, 75, 37, 76, 89, 76, 37, 74, 37, 37, 37, 76, 37, 37, 37, 77, 78, 37, 37, 37, 76, 37, 37, 37, 85, 76, 76, 76, 76 }; static const ANTLR3_INT32 dfa98_T26[] = { 37, 37, 79, 28, 37, 58, 74, 86, 76, 75, 37, 76, 91, 76, 37, 74, 37, 37, 37, 76, 37, 37, 37, 77, 78, 37, 37, 37, 76, 37, 37, 37, 85, 76, 76, 76, 76 }; static const ANTLR3_INT32 dfa98_T27[] = { 37, 37, 79, 28, 37, 58, 74, 86, 76, 75, 37, 76, 90, 76, 37, 74, 37, 37, 37, 76, 37, 37, 37, 77, 78, 37, 37, 37, 76, 37, 37, 37, 85, 76, 76, 76, 76 }; static const ANTLR3_INT32 dfa98_T28[] = { 37, 37, 36, 28, 37, 37, 31, 37, 33, 32, 37, 33, 66, 33, 37, 31, 37, 37, 37, 33, 37, 37, 37, 34, 35, 37, 37, 37, 33, 37, 37, 37, 54, 33, 33, 33, 33 }; static const ANTLR3_INT32 dfa98_T29[] = { 37, 37, 79, 28, 37, 37, 74, 37, 76, 75, 37, 76, 92, 76, 37, 74, 37, 37, 37, 76, 37, 37, 37, 77, 78, 37, 37, 37, 76, 37, 37, 37, 83, 76, 76, 76, 76 }; static const ANTLR3_INT32 dfa98_T30[] = { 37, 37, 36, 28, 37, 58, 31, 57, 33, 32, 37, 33, 61, 33, 37, 31, 37, 37, 37, 33, 37, 37, 37, 34, 35, 37, 37, 37, 33, 37, 37, 37, 56, 33, 33, 33, 33 }; static const ANTLR3_INT32 dfa98_T31[] = { 37, 37, 36, 28, 37, 58, 31, 57, 33, 32, 37, 33, 63, 33, 37, 31, 37, 37, 37, 33, 37, 37, 37, 34, 35, 37, 37, 37, 33, 37, 37, 37, 56, 33, 33, 33, 33 }; static const ANTLR3_INT32 dfa98_T32[] = { 37, 37, 37, 28, 37, 37, 37, 37, 37, 37, 37, 37, 64, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa98_T33[] = { 37, 37, 36, 28, 37, 58, 31, 57, 33, 32, 37, 33, 62, 33, 37, 31, 37, 37, 37, 33, 37, 37, 37, 34, 35, 37, 37, 37, 33, 37, 37, 37, 56, 33, 33, 33, 33 }; static const ANTLR3_INT32 dfa98_T34[] = { 37, 37, 36, 28, 37, 37, 31, 30, 33, 32, 37, 33, 29, 33, 37, 31, 37, 37, 37, 33, 37, 37, 37, 34, 35, 37, 37, 37, 33, 37, 37, 37, 27, 33, 33, 33, 33 }; static const ANTLR3_INT32 dfa98_T35[] = { 37, 37, 37, 28, 37, 37, 37, 37, 37, 37, 37, 37, 65, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa98_T36[] = { 37, 37, 37, 28, 37, 58, 37, 86, 37, 37, 37, 37, 93, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 85, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa98_T37[] = { 19, -1, -1, -1, 14, 12, 16, 15, -1, 16, 13, 16, -1, 14, -1, -1, -1, 16, -1, -1, -1, 17, 18, -1, -1, -1, 16, -1, -1, -1, 11, 16, 16, 16, 16 }; static const ANTLR3_INT32 dfa98_T38[] = { 37, 37, 79, 28, 37, 58, 74, 86, 76, 75, 37, 76, 87, 76, 37, 74, 37, 37, 37, 76, 37, 37, 37, 77, 78, 37, 37, 37, 76, 37, 37, 37, 85, 76, 76, 76, 76 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa98_transitions[] = { dfa98_T23, dfa98_T4, dfa98_T4, dfa98_T4, dfa98_T4, dfa98_T4, dfa98_T4, dfa98_T2, dfa98_T20, dfa98_T37, dfa98_T24, dfa98_T0, dfa98_T21, dfa98_T34, dfa98_T7, dfa98_T7, dfa98_T7, dfa98_T7, dfa98_T7, dfa98_T7, dfa98_T7, dfa98_T7, dfa98_T7, dfa98_T7, dfa98_T7, dfa98_T7, dfa98_T19, dfa98_T8, dfa98_T12, dfa98_T7, dfa98_T14, dfa98_T11, dfa98_T3, dfa98_T10, dfa98_T30, dfa98_T33, dfa98_T31, dfa98_T32, NULL, NULL, NULL, dfa98_T7, dfa98_T7, dfa98_T7, dfa98_T7, dfa98_T7, dfa98_T7, dfa98_T7, dfa98_T35, NULL, NULL, NULL, NULL, dfa98_T7, dfa98_T28, dfa98_T7, dfa98_T1, dfa98_T15, dfa98_T13, dfa98_T7, dfa98_T7, dfa98_T7, dfa98_T7, dfa98_T7, dfa98_T7, dfa98_T7, dfa98_T7, NULL, dfa98_T7, dfa98_T7, dfa98_T22, dfa98_T7, dfa98_T9, dfa98_T16, dfa98_T6, dfa98_T38, dfa98_T5, dfa98_T25, dfa98_T27, dfa98_T26, dfa98_T7, dfa98_T7, dfa98_T7, dfa98_T29, dfa98_T7, dfa98_T36, dfa98_T17, dfa98_T7, dfa98_T7, dfa98_T7, dfa98_T7, dfa98_T7, dfa98_T7, dfa98_T7, dfa98_T7, dfa98_T18, dfa98_T7 }; static ANTLR3_INT32 dfa98_sst(pbelle_sip_messageParser ctx, pANTLR3_BASE_RECOGNIZER recognizer, pANTLR3_INT_STREAM is, pANTLR3_CYCLIC_DFA dfa, ANTLR3_INT32 s) { ANTLR3_INT32 _s; _s = s; switch (s) { case 0: { ANTLR3_UINT32 LA98_55; ANTLR3_MARKER index98_55; LA98_55 = LA(1); index98_55 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(realm))) ) { s = 49; } else if ( ((IS_TOKEN(nonce))) ) { s = 50; } else if ( ((IS_TOKEN(opaque))) ) { s = 51; } else if ( ((IS_TOKEN(qop))) ) { s = 67; } else if ( ((IS_TOKEN(domain))) ) { s = 52; } else if ( (ANTLR3_TRUE) ) { s = 40; } SEEK(index98_55); if ( s>=0 ) { return s; } } break; case 1: { ANTLR3_UINT32 LA98_59; ANTLR3_MARKER index98_59; LA98_59 = LA(1); index98_59 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(realm))) ) { s = 49; } else if ( ((IS_TOKEN(nonce))) ) { s = 50; } else if ( ((IS_TOKEN(opaque))) ) { s = 51; } else if ( ((IS_TOKEN(qop))) ) { s = 67; } else if ( ((IS_TOKEN(domain))) ) { s = 52; } else if ( (ANTLR3_TRUE) ) { s = 40; } SEEK(index98_59); if ( s>=0 ) { return s; } } break; case 2: { ANTLR3_UINT32 LA98_60; ANTLR3_MARKER index98_60; LA98_60 = LA(1); index98_60 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(realm))) ) { s = 49; } else if ( ((IS_TOKEN(nonce))) ) { s = 50; } else if ( ((IS_TOKEN(opaque))) ) { s = 51; } else if ( ((IS_TOKEN(qop))) ) { s = 67; } else if ( ((IS_TOKEN(domain))) ) { s = 52; } else if ( (ANTLR3_TRUE) ) { s = 40; } SEEK(index98_60); if ( s>=0 ) { return s; } } break; case 3: { ANTLR3_UINT32 LA98_89; ANTLR3_MARKER index98_89; LA98_89 = LA(1); index98_89 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(realm))) ) { s = 49; } else if ( ((IS_TOKEN(nonce))) ) { s = 50; } else if ( ((IS_TOKEN(opaque))) ) { s = 51; } else if ( ((IS_TOKEN(qop))) ) { s = 67; } else if ( ((IS_TOKEN(domain))) ) { s = 52; } else if ( (ANTLR3_TRUE) ) { s = 40; } SEEK(index98_89); if ( s>=0 ) { return s; } } break; case 4: { ANTLR3_UINT32 LA98_93; ANTLR3_MARKER index98_93; LA98_93 = LA(1); index98_93 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(realm))) ) { s = 49; } else if ( ((IS_TOKEN(nonce))) ) { s = 50; } else if ( ((IS_TOKEN(opaque))) ) { s = 51; } else if ( ((IS_TOKEN(qop))) ) { s = 67; } else if ( ((IS_TOKEN(domain))) ) { s = 52; } else if ( (ANTLR3_TRUE) ) { s = 40; } SEEK(index98_93); if ( s>=0 ) { return s; } } break; case 5: { ANTLR3_UINT32 LA98_61; ANTLR3_MARKER index98_61; LA98_61 = LA(1); index98_61 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(realm))) ) { s = 49; } else if ( ((IS_TOKEN(nonce))) ) { s = 50; } else if ( ((IS_TOKEN(opaque))) ) { s = 51; } else if ( ((IS_TOKEN(qop))) ) { s = 67; } else if ( ((IS_TOKEN(domain))) ) { s = 52; } else if ( (ANTLR3_TRUE) ) { s = 40; } SEEK(index98_61); if ( s>=0 ) { return s; } } break; case 6: { ANTLR3_UINT32 LA98_62; ANTLR3_MARKER index98_62; LA98_62 = LA(1); index98_62 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(realm))) ) { s = 49; } else if ( ((IS_TOKEN(nonce))) ) { s = 50; } else if ( ((IS_TOKEN(opaque))) ) { s = 51; } else if ( ((IS_TOKEN(qop))) ) { s = 67; } else if ( ((IS_TOKEN(domain))) ) { s = 52; } else if ( (ANTLR3_TRUE) ) { s = 40; } SEEK(index98_62); if ( s>=0 ) { return s; } } break; case 7: { ANTLR3_UINT32 LA98_87; ANTLR3_MARKER index98_87; LA98_87 = LA(1); index98_87 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(realm))) ) { s = 49; } else if ( ((IS_TOKEN(nonce))) ) { s = 50; } else if ( ((IS_TOKEN(opaque))) ) { s = 51; } else if ( ((IS_TOKEN(qop))) ) { s = 67; } else if ( ((IS_TOKEN(domain))) ) { s = 52; } else if ( (ANTLR3_TRUE) ) { s = 40; } SEEK(index98_87); if ( s>=0 ) { return s; } } break; case 8: { ANTLR3_UINT32 LA98_91; ANTLR3_MARKER index98_91; LA98_91 = LA(1); index98_91 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(realm))) ) { s = 49; } else if ( ((IS_TOKEN(nonce))) ) { s = 50; } else if ( ((IS_TOKEN(opaque))) ) { s = 51; } else if ( ((IS_TOKEN(qop))) ) { s = 67; } else if ( ((IS_TOKEN(domain))) ) { s = 52; } else if ( (ANTLR3_TRUE) ) { s = 40; } SEEK(index98_91); if ( s>=0 ) { return s; } } break; case 9: { ANTLR3_UINT32 LA98_90; ANTLR3_MARKER index98_90; LA98_90 = LA(1); index98_90 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(realm))) ) { s = 49; } else if ( ((IS_TOKEN(nonce))) ) { s = 50; } else if ( ((IS_TOKEN(opaque))) ) { s = 51; } else if ( ((IS_TOKEN(qop))) ) { s = 67; } else if ( ((IS_TOKEN(domain))) ) { s = 52; } else if ( (ANTLR3_TRUE) ) { s = 40; } SEEK(index98_90); if ( s>=0 ) { return s; } } break; case 10: { ANTLR3_UINT32 LA98_63; ANTLR3_MARKER index98_63; LA98_63 = LA(1); index98_63 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(realm))) ) { s = 49; } else if ( ((IS_TOKEN(nonce))) ) { s = 50; } else if ( ((IS_TOKEN(opaque))) ) { s = 51; } else if ( ((IS_TOKEN(qop))) ) { s = 67; } else if ( ((IS_TOKEN(domain))) ) { s = 52; } else if ( (ANTLR3_TRUE) ) { s = 40; } SEEK(index98_63); if ( s>=0 ) { return s; } } break; case 11: { ANTLR3_UINT32 LA98_96; ANTLR3_MARKER index98_96; LA98_96 = LA(1); index98_96 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(realm))) ) { s = 49; } else if ( ((IS_TOKEN(nonce))) ) { s = 50; } else if ( ((IS_TOKEN(opaque))) ) { s = 51; } else if ( ((IS_TOKEN(qop))) ) { s = 67; } else if ( ((IS_TOKEN(domain))) ) { s = 52; } else if ( (ANTLR3_TRUE) ) { s = 40; } SEEK(index98_96); if ( s>=0 ) { return s; } } break; case 12: { ANTLR3_UINT32 LA98_68; ANTLR3_MARKER index98_68; LA98_68 = LA(1); index98_68 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(realm))) ) { s = 49; } else if ( ((IS_TOKEN(nonce))) ) { s = 50; } else if ( ((IS_TOKEN(opaque))) ) { s = 51; } else if ( ((IS_TOKEN(qop))) ) { s = 67; } else if ( ((IS_TOKEN(domain))) ) { s = 52; } else if ( (ANTLR3_TRUE) ) { s = 40; } SEEK(index98_68); if ( s>=0 ) { return s; } } break; case 13: { ANTLR3_UINT32 LA98_88; ANTLR3_MARKER index98_88; LA98_88 = LA(1); index98_88 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(realm))) ) { s = 49; } else if ( ((IS_TOKEN(nonce))) ) { s = 50; } else if ( ((IS_TOKEN(opaque))) ) { s = 51; } else if ( ((IS_TOKEN(qop))) ) { s = 67; } else if ( ((IS_TOKEN(domain))) ) { s = 52; } else if ( (ANTLR3_TRUE) ) { s = 40; } SEEK(index98_88); if ( s>=0 ) { return s; } } break; case 14: { ANTLR3_UINT32 LA98_80; ANTLR3_MARKER index98_80; LA98_80 = LA(1); index98_80 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(realm))) ) { s = 49; } else if ( ((IS_TOKEN(nonce))) ) { s = 50; } else if ( ((IS_TOKEN(opaque))) ) { s = 51; } else if ( ((IS_TOKEN(qop))) ) { s = 67; } else if ( ((IS_TOKEN(domain))) ) { s = 52; } else if ( (ANTLR3_TRUE) ) { s = 40; } SEEK(index98_80); if ( s>=0 ) { return s; } } break; case 15: { ANTLR3_UINT32 LA98_84; ANTLR3_MARKER index98_84; LA98_84 = LA(1); index98_84 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(realm))) ) { s = 49; } else if ( ((IS_TOKEN(nonce))) ) { s = 50; } else if ( ((IS_TOKEN(opaque))) ) { s = 51; } else if ( ((IS_TOKEN(qop))) ) { s = 67; } else if ( ((IS_TOKEN(domain))) ) { s = 52; } else if ( (ANTLR3_TRUE) ) { s = 40; } SEEK(index98_84); if ( s>=0 ) { return s; } } break; case 16: { ANTLR3_UINT32 LA98_15; ANTLR3_MARKER index98_15; LA98_15 = LA(1); index98_15 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(algorithm))) ) { s = 38; } else if ( ((IS_TOKEN(stale))) ) { s = 39; } else if ( (ANTLR3_TRUE) ) { s = 40; } SEEK(index98_15); if ( s>=0 ) { return s; } } break; case 17: { ANTLR3_UINT32 LA98_21; ANTLR3_MARKER index98_21; LA98_21 = LA(1); index98_21 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(algorithm))) ) { s = 38; } else if ( ((IS_TOKEN(stale))) ) { s = 39; } else if ( (ANTLR3_TRUE) ) { s = 40; } SEEK(index98_21); if ( s>=0 ) { return s; } } break; case 18: { ANTLR3_UINT32 LA98_42; ANTLR3_MARKER index98_42; LA98_42 = LA(1); index98_42 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(algorithm))) ) { s = 38; } else if ( ((IS_TOKEN(stale))) ) { s = 39; } else if ( (ANTLR3_TRUE) ) { s = 40; } SEEK(index98_42); if ( s>=0 ) { return s; } } break; case 19: { ANTLR3_UINT32 LA98_17; ANTLR3_MARKER index98_17; LA98_17 = LA(1); index98_17 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(algorithm))) ) { s = 38; } else if ( ((IS_TOKEN(stale))) ) { s = 39; } else if ( (ANTLR3_TRUE) ) { s = 40; } SEEK(index98_17); if ( s>=0 ) { return s; } } break; case 20: { ANTLR3_UINT32 LA98_23; ANTLR3_MARKER index98_23; LA98_23 = LA(1); index98_23 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(algorithm))) ) { s = 38; } else if ( ((IS_TOKEN(stale))) ) { s = 39; } else if ( (ANTLR3_TRUE) ) { s = 40; } SEEK(index98_23); if ( s>=0 ) { return s; } } break; case 21: { ANTLR3_UINT32 LA98_44; ANTLR3_MARKER index98_44; LA98_44 = LA(1); index98_44 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(algorithm))) ) { s = 38; } else if ( ((IS_TOKEN(stale))) ) { s = 39; } else if ( (ANTLR3_TRUE) ) { s = 40; } SEEK(index98_44); if ( s>=0 ) { return s; } } break; case 22: { ANTLR3_UINT32 LA98_18; ANTLR3_MARKER index98_18; LA98_18 = LA(1); index98_18 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(algorithm))) ) { s = 38; } else if ( ((IS_TOKEN(stale))) ) { s = 39; } else if ( (ANTLR3_TRUE) ) { s = 40; } SEEK(index98_18); if ( s>=0 ) { return s; } } break; case 23: { ANTLR3_UINT32 LA98_24; ANTLR3_MARKER index98_24; LA98_24 = LA(1); index98_24 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(algorithm))) ) { s = 38; } else if ( ((IS_TOKEN(stale))) ) { s = 39; } else if ( (ANTLR3_TRUE) ) { s = 40; } SEEK(index98_24); if ( s>=0 ) { return s; } } break; case 24: { ANTLR3_UINT32 LA98_45; ANTLR3_MARKER index98_45; LA98_45 = LA(1); index98_45 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(algorithm))) ) { s = 38; } else if ( ((IS_TOKEN(stale))) ) { s = 39; } else if ( (ANTLR3_TRUE) ) { s = 40; } SEEK(index98_45); if ( s>=0 ) { return s; } } break; case 25: { ANTLR3_UINT32 LA98_19; ANTLR3_MARKER index98_19; LA98_19 = LA(1); index98_19 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(algorithm))) ) { s = 38; } else if ( ((IS_TOKEN(stale))) ) { s = 39; } else if ( (ANTLR3_TRUE) ) { s = 40; } SEEK(index98_19); if ( s>=0 ) { return s; } } break; case 26: { ANTLR3_UINT32 LA98_25; ANTLR3_MARKER index98_25; LA98_25 = LA(1); index98_25 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(algorithm))) ) { s = 38; } else if ( ((IS_TOKEN(stale))) ) { s = 39; } else if ( (ANTLR3_TRUE) ) { s = 40; } SEEK(index98_25); if ( s>=0 ) { return s; } } break; case 27: { ANTLR3_UINT32 LA98_46; ANTLR3_MARKER index98_46; LA98_46 = LA(1); index98_46 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(algorithm))) ) { s = 38; } else if ( ((IS_TOKEN(stale))) ) { s = 39; } else if ( (ANTLR3_TRUE) ) { s = 40; } SEEK(index98_46); if ( s>=0 ) { return s; } } break; case 28: { ANTLR3_UINT32 LA98_92; ANTLR3_MARKER index98_92; LA98_92 = LA(1); index98_92 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(realm))) ) { s = 49; } else if ( ((IS_TOKEN(nonce))) ) { s = 50; } else if ( ((IS_TOKEN(opaque))) ) { s = 51; } else if ( ((IS_TOKEN(domain))) ) { s = 52; } else if ( (ANTLR3_TRUE) ) { s = 40; } SEEK(index98_92); if ( s>=0 ) { return s; } } break; case 29: { ANTLR3_UINT32 LA98_53; ANTLR3_MARKER index98_53; LA98_53 = LA(1); index98_53 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(realm))) ) { s = 49; } else if ( ((IS_TOKEN(nonce))) ) { s = 50; } else if ( ((IS_TOKEN(opaque))) ) { s = 51; } else if ( ((IS_TOKEN(domain))) ) { s = 52; } else if ( (ANTLR3_TRUE) ) { s = 40; } SEEK(index98_53); if ( s>=0 ) { return s; } } break; case 30: { ANTLR3_UINT32 LA98_29; ANTLR3_MARKER index98_29; LA98_29 = LA(1); index98_29 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(realm))) ) { s = 49; } else if ( ((IS_TOKEN(nonce))) ) { s = 50; } else if ( ((IS_TOKEN(opaque))) ) { s = 51; } else if ( ((IS_TOKEN(domain))) ) { s = 52; } else if ( (ANTLR3_TRUE) ) { s = 40; } SEEK(index98_29); if ( s>=0 ) { return s; } } break; case 31: { ANTLR3_UINT32 LA98_47; ANTLR3_MARKER index98_47; LA98_47 = LA(1); index98_47 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(realm))) ) { s = 49; } else if ( ((IS_TOKEN(nonce))) ) { s = 50; } else if ( ((IS_TOKEN(opaque))) ) { s = 51; } else if ( ((IS_TOKEN(domain))) ) { s = 52; } else if ( (ANTLR3_TRUE) ) { s = 40; } SEEK(index98_47); if ( s>=0 ) { return s; } } break; case 32: { ANTLR3_UINT32 LA98_82; ANTLR3_MARKER index98_82; LA98_82 = LA(1); index98_82 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(realm))) ) { s = 49; } else if ( ((IS_TOKEN(nonce))) ) { s = 50; } else if ( ((IS_TOKEN(opaque))) ) { s = 51; } else if ( ((IS_TOKEN(domain))) ) { s = 52; } else if ( (ANTLR3_TRUE) ) { s = 40; } SEEK(index98_82); if ( s>=0 ) { return s; } } break; case 33: { ANTLR3_UINT32 LA98_64; ANTLR3_MARKER index98_64; LA98_64 = LA(1); index98_64 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(realm))) ) { s = 49; } else if ( ((IS_TOKEN(nonce))) ) { s = 50; } else if ( ((IS_TOKEN(opaque))) ) { s = 51; } else if ( ((IS_TOKEN(domain))) ) { s = 52; } else if ( (ANTLR3_TRUE) ) { s = 40; } SEEK(index98_64); if ( s>=0 ) { return s; } } break; case 34: { ANTLR3_UINT32 LA98_65; ANTLR3_MARKER index98_65; LA98_65 = LA(1); index98_65 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(realm))) ) { s = 49; } else if ( ((IS_TOKEN(nonce))) ) { s = 50; } else if ( ((IS_TOKEN(opaque))) ) { s = 51; } else if ( ((IS_TOKEN(domain))) ) { s = 52; } else if ( (ANTLR3_TRUE) ) { s = 40; } SEEK(index98_65); if ( s>=0 ) { return s; } } break; case 35: { ANTLR3_UINT32 LA98_66; ANTLR3_MARKER index98_66; LA98_66 = LA(1); index98_66 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(realm))) ) { s = 49; } else if ( ((IS_TOKEN(nonce))) ) { s = 50; } else if ( ((IS_TOKEN(opaque))) ) { s = 51; } else if ( ((IS_TOKEN(domain))) ) { s = 52; } else if ( (ANTLR3_TRUE) ) { s = 40; } SEEK(index98_66); if ( s>=0 ) { return s; } } break; case 36: { ANTLR3_UINT32 LA98_69; ANTLR3_MARKER index98_69; LA98_69 = LA(1); index98_69 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(realm))) ) { s = 49; } else if ( ((IS_TOKEN(nonce))) ) { s = 50; } else if ( ((IS_TOKEN(opaque))) ) { s = 51; } else if ( ((IS_TOKEN(domain))) ) { s = 52; } else if ( (ANTLR3_TRUE) ) { s = 40; } SEEK(index98_69); if ( s>=0 ) { return s; } } break; case 37: { ANTLR3_UINT32 LA98_94; ANTLR3_MARKER index98_94; LA98_94 = LA(1); index98_94 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(realm))) ) { s = 49; } else if ( ((IS_TOKEN(nonce))) ) { s = 50; } else if ( ((IS_TOKEN(opaque))) ) { s = 51; } else if ( ((IS_TOKEN(domain))) ) { s = 52; } else if ( (ANTLR3_TRUE) ) { s = 40; } SEEK(index98_94); if ( s>=0 ) { return s; } } break; case 38: { ANTLR3_UINT32 LA98_71; ANTLR3_MARKER index98_71; LA98_71 = LA(1); index98_71 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(realm))) ) { s = 49; } else if ( ((IS_TOKEN(nonce))) ) { s = 50; } else if ( ((IS_TOKEN(opaque))) ) { s = 51; } else if ( ((IS_TOKEN(domain))) ) { s = 52; } else if ( (ANTLR3_TRUE) ) { s = 40; } SEEK(index98_71); if ( s>=0 ) { return s; } } break; case 39: { ANTLR3_UINT32 LA98_81; ANTLR3_MARKER index98_81; LA98_81 = LA(1); index98_81 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(realm))) ) { s = 49; } else if ( ((IS_TOKEN(nonce))) ) { s = 50; } else if ( ((IS_TOKEN(opaque))) ) { s = 51; } else if ( ((IS_TOKEN(domain))) ) { s = 52; } else if ( (ANTLR3_TRUE) ) { s = 40; } SEEK(index98_81); if ( s>=0 ) { return s; } } break; case 40: { ANTLR3_UINT32 LA98_14; ANTLR3_MARKER index98_14; LA98_14 = LA(1); index98_14 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(algorithm))) ) { s = 38; } else if ( ((IS_TOKEN(stale))) ) { s = 39; } else if ( (ANTLR3_TRUE) ) { s = 40; } SEEK(index98_14); if ( s>=0 ) { return s; } } break; case 41: { ANTLR3_UINT32 LA98_20; ANTLR3_MARKER index98_20; LA98_20 = LA(1); index98_20 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(algorithm))) ) { s = 38; } else if ( ((IS_TOKEN(stale))) ) { s = 39; } else if ( (ANTLR3_TRUE) ) { s = 40; } SEEK(index98_20); if ( s>=0 ) { return s; } } break; case 42: { ANTLR3_UINT32 LA98_41; ANTLR3_MARKER index98_41; LA98_41 = LA(1); index98_41 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(algorithm))) ) { s = 38; } else if ( ((IS_TOKEN(stale))) ) { s = 39; } else if ( (ANTLR3_TRUE) ) { s = 40; } SEEK(index98_41); if ( s>=0 ) { return s; } } break; case 43: { ANTLR3_UINT32 LA98_16; ANTLR3_MARKER index98_16; LA98_16 = LA(1); index98_16 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(algorithm))) ) { s = 38; } else if ( ((IS_TOKEN(stale))) ) { s = 39; } else if ( (ANTLR3_TRUE) ) { s = 40; } SEEK(index98_16); if ( s>=0 ) { return s; } } break; case 44: { ANTLR3_UINT32 LA98_22; ANTLR3_MARKER index98_22; LA98_22 = LA(1); index98_22 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(algorithm))) ) { s = 38; } else if ( ((IS_TOKEN(stale))) ) { s = 39; } else if ( (ANTLR3_TRUE) ) { s = 40; } SEEK(index98_22); if ( s>=0 ) { return s; } } break; case 45: { ANTLR3_UINT32 LA98_43; ANTLR3_MARKER index98_43; LA98_43 = LA(1); index98_43 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(algorithm))) ) { s = 38; } else if ( ((IS_TOKEN(stale))) ) { s = 39; } else if ( (ANTLR3_TRUE) ) { s = 40; } SEEK(index98_43); if ( s>=0 ) { return s; } } break; } if (BACKTRACKING > 0) { FAILEDFLAG = ANTLR3_TRUE; return -1; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)"1086:1: digest_cln[belle_sip_header_www_authenticate_t* www_authenticate] : ( realm | nonce | algorithm | opaque | qop_opts | domain | stale | auth_param[(belle_sip_header_authorization_t*)www_authenticate] );"; EXCEPTION->decisionNum = 98; EXCEPTION->state = _s; return -1; } /* Declare tracking structure for Cyclic DFA 98 */ static ANTLR3_CYCLIC_DFA cdfa98 = { 98, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"1086:1: digest_cln[belle_sip_header_www_authenticate_t* www_authenticate] : ( realm | nonce | algorithm | opaque | qop_opts | domain | stale | auth_param[(belle_sip_header_authorization_t*)www_authenticate] );", (CDFA_SPECIAL_FUNC) dfa98_sst, antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa98_eot, /* EOT table */ dfa98_eof, /* EOF table */ dfa98_min, /* Minimum tokens for each state */ dfa98_max, /* Maximum tokens for each state */ dfa98_accept, /* Accept table */ dfa98_special, /* Special transition states */ dfa98_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 98 * --------------------- *//** Static dfa state tables for Cyclic dfa: * 1312:7: ( name_addr_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($header_to::current)] | paramless_addr_spec_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($header_to::current)] ) */ static const ANTLR3_INT32 dfa114_eot[30] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa114_eof[30] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa114_min[30] = { 6, 6, 36, 6, 6, 6, 6, 6, 6, -1, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, -1, 6, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa114_max[30] = { 40, 40, 36, 40, 40, 40, 40, 40, 40, -1, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, -1, 40, 40, 40, 40, 40, 40, 40, 40 }; static const ANTLR3_INT32 dfa114_accept[30] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa114_special[30] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; /** Used when there is no transition table entry for a particular state */ #define dfa114_T_empty NULL static const ANTLR3_INT32 dfa114_T0[] = { 15, -1, 21, -1, 29, 9, 12, 11, -1, 12, -1, 12, -1, 29, -1, 9, -1, 12, -1, -1, -1, 13, 14, -1, -1, -1, 12, -1, -1, -1, 9, 12, 12, 12, 12 }; static const ANTLR3_INT32 dfa114_T1[] = { 8, -1, 21, -1, 23, 9, 5, 4, -1, 5, -1, 5, -1, 23, -1, 9, -1, 5, -1, -1, -1, 6, 7, -1, -1, -1, 5, -1, -1, -1, 9, 5, 5, 5, 5 }; static const ANTLR3_INT32 dfa114_T2[] = { 8, -1, 21, -1, 17, 9, 19, 18, -1, 22, -1, 5, -1, 17, -1, 9, -1, 5, -1, -1, -1, 6, 20, -1, -1, -1, 5, -1, -1, -1, 9, 5, 5, 5, 5 }; static const ANTLR3_INT32 dfa114_T3[] = { 15, -1, 21, -1, 24, 9, 26, 25, -1, 28, -1, 12, -1, 24, -1, 9, -1, 12, -1, -1, -1, 13, 27, -1, -1, -1, 12, -1, -1, -1, 9, 12, 12, 12, 12 }; static const ANTLR3_INT32 dfa114_T4[] = { 15, -1, -1, -1, 10, 2, 12, 11, -1, 12, 9, 12, -1, 10, -1, 9, -1, 12, -1, -1, -1, 13, 14, -1, -1, -1, 12, -1, -1, -1, 1, 12, 12, 12, 12 }; static const ANTLR3_INT32 dfa114_T5[] = { 8, -1, -1, -1, 3, 2, 5, 4, -1, 5, 9, 5, -1, 3, -1, 9, -1, 5, -1, -1, -1, 6, 7, -1, -1, -1, 5, -1, -1, -1, 1, 5, 5, 5, 5 }; static const ANTLR3_INT32 dfa114_T6[] = { 16 }; static const ANTLR3_INT32 dfa114_T7[] = { 15, -1, -1, -1, 10, -1, 12, 11, -1, 12, 9, 12, -1, 10, -1, 9, -1, 12, -1, -1, -1, 13, 14, -1, -1, -1, 12, -1, -1, -1, 16, 12, 12, 12, 12 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa114_transitions[] = { dfa114_T5, dfa114_T4, dfa114_T6, dfa114_T2, dfa114_T1, dfa114_T1, dfa114_T1, dfa114_T1, dfa114_T1, NULL, dfa114_T3, dfa114_T0, dfa114_T0, dfa114_T0, dfa114_T0, dfa114_T0, dfa114_T7, dfa114_T2, dfa114_T2, dfa114_T2, dfa114_T2, NULL, dfa114_T2, dfa114_T1, dfa114_T3, dfa114_T3, dfa114_T3, dfa114_T3, dfa114_T3, dfa114_T0 }; /* Declare tracking structure for Cyclic DFA 114 */ static ANTLR3_CYCLIC_DFA cdfa114 = { 114, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"1312:7: ( name_addr_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($header_to::current)] | paramless_addr_spec_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($header_to::current)] )", (CDFA_SPECIAL_FUNC) antlr3dfaspecialStateTransition, /* Default special state transition function */ antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa114_eot, /* EOT table */ dfa114_eof, /* EOF table */ dfa114_min, /* Minimum tokens for each state */ dfa114_max, /* Maximum tokens for each state */ dfa114_accept, /* Accept table */ dfa114_special, /* Special transition states */ dfa114_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 114 * --------------------- *//** Static dfa state tables for Cyclic dfa: * 1330:7: ( name_addr_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($header_diversion::current)] | paramless_addr_spec_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($header_diversion::current)] ) */ static const ANTLR3_INT32 dfa118_eot[30] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa118_eof[30] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa118_min[30] = { 6, 6, 36, 6, 6, 6, 6, 6, 6, -1, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, -1, 6, 6, 6, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa118_max[30] = { 40, 40, 36, 40, 40, 40, 40, 40, 40, -1, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, -1, 40, 40, 40, 40, 40, 40, 40, 40 }; static const ANTLR3_INT32 dfa118_accept[30] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa118_special[30] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; /** Used when there is no transition table entry for a particular state */ #define dfa118_T_empty NULL static const ANTLR3_INT32 dfa118_T0[] = { 15, -1, 21, -1, 29, 9, 12, 11, -1, 12, -1, 12, -1, 29, -1, 9, -1, 12, -1, -1, -1, 13, 14, -1, -1, -1, 12, -1, -1, -1, 9, 12, 12, 12, 12 }; static const ANTLR3_INT32 dfa118_T1[] = { 8, -1, 21, -1, 23, 9, 5, 4, -1, 5, -1, 5, -1, 23, -1, 9, -1, 5, -1, -1, -1, 6, 7, -1, -1, -1, 5, -1, -1, -1, 9, 5, 5, 5, 5 }; static const ANTLR3_INT32 dfa118_T2[] = { 8, -1, 21, -1, 17, 9, 19, 18, -1, 22, -1, 5, -1, 17, -1, 9, -1, 5, -1, -1, -1, 6, 20, -1, -1, -1, 5, -1, -1, -1, 9, 5, 5, 5, 5 }; static const ANTLR3_INT32 dfa118_T3[] = { 15, -1, 21, -1, 24, 9, 26, 25, -1, 28, -1, 12, -1, 24, -1, 9, -1, 12, -1, -1, -1, 13, 27, -1, -1, -1, 12, -1, -1, -1, 9, 12, 12, 12, 12 }; static const ANTLR3_INT32 dfa118_T4[] = { 15, -1, -1, -1, 10, 2, 12, 11, -1, 12, 9, 12, -1, 10, -1, 9, -1, 12, -1, -1, -1, 13, 14, -1, -1, -1, 12, -1, -1, -1, 1, 12, 12, 12, 12 }; static const ANTLR3_INT32 dfa118_T5[] = { 16 }; static const ANTLR3_INT32 dfa118_T6[] = { 8, -1, -1, -1, 3, 2, 5, 4, -1, 5, 9, 5, -1, 3, -1, 9, -1, 5, -1, -1, -1, 6, 7, -1, -1, -1, 5, -1, -1, -1, 1, 5, 5, 5, 5 }; static const ANTLR3_INT32 dfa118_T7[] = { 15, -1, -1, -1, 10, -1, 12, 11, -1, 12, 9, 12, -1, 10, -1, 9, -1, 12, -1, -1, -1, 13, 14, -1, -1, -1, 12, -1, -1, -1, 16, 12, 12, 12, 12 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa118_transitions[] = { dfa118_T6, dfa118_T4, dfa118_T5, dfa118_T2, dfa118_T1, dfa118_T1, dfa118_T1, dfa118_T1, dfa118_T1, NULL, dfa118_T3, dfa118_T0, dfa118_T0, dfa118_T0, dfa118_T0, dfa118_T0, dfa118_T7, dfa118_T2, dfa118_T2, dfa118_T2, dfa118_T2, NULL, dfa118_T2, dfa118_T1, dfa118_T3, dfa118_T3, dfa118_T3, dfa118_T3, dfa118_T3, dfa118_T0 }; /* Declare tracking structure for Cyclic DFA 118 */ static ANTLR3_CYCLIC_DFA cdfa118 = { 118, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"1330:7: ( name_addr_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($header_diversion::current)] | paramless_addr_spec_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($header_diversion::current)] )", (CDFA_SPECIAL_FUNC) antlr3dfaspecialStateTransition, /* Default special state transition function */ antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa118_eot, /* EOT table */ dfa118_eof, /* EOF table */ dfa118_min, /* Minimum tokens for each state */ dfa118_max, /* Maximum tokens for each state */ dfa118_accept, /* Accept table */ dfa118_special, /* Special transition states */ dfa118_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 118 * --------------------- *//** Static dfa state tables for Cyclic dfa: * 1349:8: ( name_addr[address] | paramless_addr_spec[address] ) */ static const ANTLR3_INT32 dfa122_eot[18] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa122_eof[18] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa122_min[18] = { 6, 6, 36, 6, 6, 6, 6, 6, 6, -1, 6, 6, 6, 6, 6, 6, 6, -1 }; static const ANTLR3_INT32 dfa122_max[18] = { 40, 40, 36, 40, 40, 40, 40, 40, 40, -1, 40, 40, 40, 40, 40, 40, 40, -1 }; static const ANTLR3_INT32 dfa122_accept[18] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, 2 }; static const ANTLR3_INT32 dfa122_special[18] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; /** Used when there is no transition table entry for a particular state */ #define dfa122_T_empty NULL static const ANTLR3_INT32 dfa122_T0[] = { 15, -1, 17, -1, 10, 9, 12, 11, -1, 12, -1, 12, -1, 10, -1, 9, -1, 12, -1, -1, -1, 13, 14, -1, -1, -1, 12, -1, -1, -1, 9, 12, 12, 12, 12 }; static const ANTLR3_INT32 dfa122_T1[] = { 8, -1, 17, -1, 3, 9, 5, 4, -1, 5, -1, 5, -1, 3, -1, 9, -1, 5, -1, -1, -1, 6, 7, -1, -1, -1, 5, -1, -1, -1, 9, 5, 5, 5, 5 }; static const ANTLR3_INT32 dfa122_T2[] = { 15, -1, -1, -1, 10, 2, 12, 11, -1, 12, 9, 12, -1, 10, -1, 9, -1, 12, -1, -1, -1, 13, 14, -1, -1, -1, 12, -1, -1, -1, 1, 12, 12, 12, 12 }; static const ANTLR3_INT32 dfa122_T3[] = { 8, -1, -1, -1, 3, 2, 5, 4, -1, 5, 9, 5, -1, 3, -1, 9, -1, 5, -1, -1, -1, 6, 7, -1, -1, -1, 5, -1, -1, -1, 1, 5, 5, 5, 5 }; static const ANTLR3_INT32 dfa122_T4[] = { 15, -1, -1, -1, 10, -1, 12, 11, -1, 12, 9, 12, -1, 10, -1, 9, -1, 12, -1, -1, -1, 13, 14, -1, -1, -1, 12, -1, -1, -1, 16, 12, 12, 12, 12 }; static const ANTLR3_INT32 dfa122_T5[] = { 16 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa122_transitions[] = { dfa122_T3, dfa122_T2, dfa122_T5, dfa122_T1, dfa122_T1, dfa122_T1, dfa122_T1, dfa122_T1, dfa122_T1, NULL, dfa122_T0, dfa122_T0, dfa122_T0, dfa122_T0, dfa122_T0, dfa122_T0, dfa122_T4, NULL }; /* Declare tracking structure for Cyclic DFA 122 */ static ANTLR3_CYCLIC_DFA cdfa122 = { 122, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"1349:8: ( name_addr[address] | paramless_addr_spec[address] )", (CDFA_SPECIAL_FUNC) antlr3dfaspecialStateTransition, /* Default special state transition function */ antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa122_eot, /* EOT table */ dfa122_eof, /* EOF table */ dfa122_min, /* Minimum tokens for each state */ dfa122_max, /* Maximum tokens for each state */ dfa122_accept, /* Accept table */ dfa122_special, /* Special transition states */ dfa122_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 122 * --------------------- *//** Static dfa state tables for Cyclic dfa: * ()* loopback of 1406:34: ( semi via_params )* */ static const ANTLR3_INT32 dfa128_eot[6] = { -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa128_eof[6] = { 3, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa128_min[6] = { 9, 9, 36, -1, -1, 9 }; static const ANTLR3_INT32 dfa128_max[6] = { 36, 36, 36, -1, -1, 36 }; static const ANTLR3_INT32 dfa128_accept[6] = { -1, -1, -1, 2, 1, -1 }; static const ANTLR3_INT32 dfa128_special[6] = { -1, -1, -1, -1, -1, -1 }; /** Used when there is no transition table entry for a particular state */ #define dfa128_T_empty NULL static const ANTLR3_INT32 dfa128_T0[] = { 5 }; static const ANTLR3_INT32 dfa128_T1[] = { 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, -1, 5 }; static const ANTLR3_INT32 dfa128_T2[] = { 3, -1, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, -1, 1 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa128_transitions[] = { dfa128_T2, dfa128_T2, dfa128_T0, NULL, NULL, dfa128_T1 }; /* Declare tracking structure for Cyclic DFA 128 */ static ANTLR3_CYCLIC_DFA cdfa128 = { 128, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"()* loopback of 1406:34: ( semi via_params )*", (CDFA_SPECIAL_FUNC) antlr3dfaspecialStateTransition, /* Default special state transition function */ antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa128_eot, /* EOT table */ dfa128_eof, /* EOF table */ dfa128_min, /* Minimum tokens for each state */ dfa128_max, /* Maximum tokens for each state */ dfa128_accept, /* Accept table */ dfa128_special, /* Special transition states */ dfa128_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 128 * --------------------- *//** Static dfa state tables for Cyclic dfa: * 1408:1: via_params : ( via_received[$header_via::current] | generic_param[BELLE_SIP_PARAMETERS($header_via::current)] ); */ static const ANTLR3_INT32 dfa129_eot[12] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa129_eof[12] = { -1, 8, 8, 8, 8, 8, 8, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa129_min[12] = { 6, 6, 6, 6, 6, 6, 6, 6, -1, 0, 0, -1 }; static const ANTLR3_INT32 dfa129_max[12] = { 40, 40, 40, 40, 40, 40, 40, 40, -1, 0, 0, -1 }; static const ANTLR3_INT32 dfa129_accept[12] = { -1, -1, -1, -1, -1, -1, -1, -1, 2, -1, -1, 1 }; static const ANTLR3_INT32 dfa129_special[12] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 1, -1 }; /** Used when there is no transition table entry for a particular state */ #define dfa129_T_empty NULL static const ANTLR3_INT32 dfa129_T0[] = { 8, -1, 11, -1, 8, 8, 8, 9, -1, 8, 8, 8, -1, 10, -1, -1, -1, 8, 11, -1, -1, 8, 8, -1, -1, -1, 8, -1, -1, -1, 8, 8, 8, 8, 8 }; static const ANTLR3_INT32 dfa129_T1[] = { -1 }; static const ANTLR3_INT32 dfa129_T2[] = { 6, -1, -1, 8, 1, 8, 3, 2, -1, 3, -1, 3, 7, 1, -1, -1, -1, 3, -1, -1, -1, 4, 5, -1, -1, -1, 3, -1, 8, -1, 8, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa129_T3[] = { 6, -1, -1, -1, 1, -1, 3, 2, -1, 3, -1, 3, -1, 1, -1, -1, -1, 3, -1, -1, -1, 4, 5, -1, -1, -1, 3, -1, -1, -1, -1, 3, 3, 3, 3 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa129_transitions[] = { dfa129_T3, dfa129_T2, dfa129_T2, dfa129_T2, dfa129_T2, dfa129_T2, dfa129_T2, dfa129_T0, NULL, dfa129_T1, dfa129_T1, NULL }; static ANTLR3_INT32 dfa129_sst(pbelle_sip_messageParser ctx, pANTLR3_BASE_RECOGNIZER recognizer, pANTLR3_INT_STREAM is, pANTLR3_CYCLIC_DFA dfa, ANTLR3_INT32 s) { ANTLR3_INT32 _s; _s = s; switch (s) { case 0: { ANTLR3_UINT32 LA129_9; ANTLR3_MARKER index129_9; LA129_9 = LA(1); index129_9 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(received))) ) { s = 11; } else if ( (ANTLR3_TRUE) ) { s = 8; } SEEK(index129_9); if ( s>=0 ) { return s; } } break; case 1: { ANTLR3_UINT32 LA129_10; ANTLR3_MARKER index129_10; LA129_10 = LA(1); index129_10 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(received))) ) { s = 11; } else if ( (ANTLR3_TRUE) ) { s = 8; } SEEK(index129_10); if ( s>=0 ) { return s; } } break; } if (BACKTRACKING > 0) { FAILEDFLAG = ANTLR3_TRUE; return -1; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)"1408:1: via_params : ( via_received[$header_via::current] | generic_param[BELLE_SIP_PARAMETERS($header_via::current)] );"; EXCEPTION->decisionNum = 129; EXCEPTION->state = _s; return -1; } /* Declare tracking structure for Cyclic DFA 129 */ static ANTLR3_CYCLIC_DFA cdfa129 = { 129, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"1408:1: via_params : ( via_received[$header_via::current] | generic_param[BELLE_SIP_PARAMETERS($header_via::current)] );", (CDFA_SPECIAL_FUNC) dfa129_sst, antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa129_eot, /* EOT table */ dfa129_eof, /* EOF table */ dfa129_min, /* Minimum tokens for each state */ dfa129_max, /* Maximum tokens for each state */ dfa129_accept, /* Accept table */ dfa129_special, /* Special transition states */ dfa129_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 129 * --------------------- *//** Static dfa state tables for Cyclic dfa: * ()* loopback of 1642:2: ( semi generic_param[BELLE_SIP_PARAMETERS($header_accept::current)] )* */ static const ANTLR3_INT32 dfa142_eot[6] = { -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa142_eof[6] = { 3, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa142_min[6] = { 9, 9, 36, -1, -1, 9 }; static const ANTLR3_INT32 dfa142_max[6] = { 36, 36, 36, -1, -1, 36 }; static const ANTLR3_INT32 dfa142_accept[6] = { -1, -1, -1, 2, 1, -1 }; static const ANTLR3_INT32 dfa142_special[6] = { -1, -1, -1, -1, -1, -1 }; /** Used when there is no transition table entry for a particular state */ #define dfa142_T_empty NULL static const ANTLR3_INT32 dfa142_T0[] = { 5 }; static const ANTLR3_INT32 dfa142_T1[] = { 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, -1, 5 }; static const ANTLR3_INT32 dfa142_T2[] = { 3, -1, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, -1, 1 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa142_transitions[] = { dfa142_T2, dfa142_T2, dfa142_T0, NULL, NULL, dfa142_T1 }; /* Declare tracking structure for Cyclic DFA 142 */ static ANTLR3_CYCLIC_DFA cdfa142 = { 142, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"()* loopback of 1642:2: ( semi generic_param[BELLE_SIP_PARAMETERS($header_accept::current)] )*", (CDFA_SPECIAL_FUNC) antlr3dfaspecialStateTransition, /* Default special state transition function */ antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa142_eot, /* EOT table */ dfa142_eof, /* EOF table */ dfa142_min, /* Minimum tokens for each state */ dfa142_max, /* Maximum tokens for each state */ dfa142_accept, /* Accept table */ dfa142_special, /* Special transition states */ dfa142_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 142 * --------------------- *//** Static dfa state tables for Cyclic dfa: * ()* loopback of 1683:2: ( semi generic_param[BELLE_SIP_PARAMETERS($header_reason::current)] )* */ static const ANTLR3_INT32 dfa144_eot[6] = { -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa144_eof[6] = { 3, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa144_min[6] = { 9, 9, 36, -1, -1, 9 }; static const ANTLR3_INT32 dfa144_max[6] = { 36, 36, 36, -1, -1, 36 }; static const ANTLR3_INT32 dfa144_accept[6] = { -1, -1, -1, 2, 1, -1 }; static const ANTLR3_INT32 dfa144_special[6] = { -1, -1, -1, -1, -1, -1 }; /** Used when there is no transition table entry for a particular state */ #define dfa144_T_empty NULL static const ANTLR3_INT32 dfa144_T0[] = { 3, -1, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, -1, 1 }; static const ANTLR3_INT32 dfa144_T1[] = { 5 }; static const ANTLR3_INT32 dfa144_T2[] = { 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, -1, 5 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa144_transitions[] = { dfa144_T0, dfa144_T0, dfa144_T1, NULL, NULL, dfa144_T2 }; /* Declare tracking structure for Cyclic DFA 144 */ static ANTLR3_CYCLIC_DFA cdfa144 = { 144, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"()* loopback of 1683:2: ( semi generic_param[BELLE_SIP_PARAMETERS($header_reason::current)] )*", (CDFA_SPECIAL_FUNC) antlr3dfaspecialStateTransition, /* Default special state transition function */ antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa144_eot, /* EOT table */ dfa144_eof, /* EOF table */ dfa144_min, /* Minimum tokens for each state */ dfa144_max, /* Maximum tokens for each state */ dfa144_accept, /* Accept table */ dfa144_special, /* Special transition states */ dfa144_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 144 * --------------------- *//** Static dfa state tables for Cyclic dfa: * 1710:3: ( next_nonce | cnonce | authentication_info_message_qop | nonce_count | rspauth ) */ static const ANTLR3_INT32 dfa146_eot[26] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa146_eof[26] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa146_min[26] = { 6, 6, 6, 6, 6, 6, 6, 11, 36, 6, 18, 6, 36, 4, 0, 0, -1, 6, 4, 4, 0, -1, 4, -1, -1, -1 }; static const ANTLR3_INT32 dfa146_max[26] = { 40, 40, 40, 40, 40, 40, 40, 36, 36, 40, 36, 40, 36, 40, 0, 0, -1, 40, 40, 40, 0, -1, 40, -1, -1, -1 }; static const ANTLR3_INT32 dfa146_accept[26] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, -1, -1, -1, -1, 4, -1, 1, 2, 5 }; static const ANTLR3_INT32 dfa146_special[26] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 2, 0, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1 }; /** Used when there is no transition table entry for a particular state */ #define dfa146_T_empty NULL static const ANTLR3_INT32 dfa146_T0[] = { 6, -1, -1, -1, 1, 8, 3, 2, -1, 3, -1, 3, 9, 1, -1, -1, -1, 3, -1, -1, -1, 4, 5, -1, -1, -1, 3, -1, -1, -1, 7, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa146_T1[] = { 6, -1, -1, -1, 1, -1, 3, 2, -1, 3, -1, 3, -1, 1, -1, -1, -1, 3, -1, -1, -1, 4, 5, -1, -1, -1, 3, -1, -1, -1, -1, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa146_T2[] = { -1 }; static const ANTLR3_INT32 dfa146_T3[] = { 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 10 }; static const ANTLR3_INT32 dfa146_T4[] = { 10 }; static const ANTLR3_INT32 dfa146_T5[] = { 17 }; static const ANTLR3_INT32 dfa146_T6[] = { 8, -1, -1, -1, -1, -1, -1, 9, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 7 }; static const ANTLR3_INT32 dfa146_T7[] = { 16, -1, -1, -1, 16, -1, 16, 15, -1, 16, 13, 16, -1, 14, -1, -1, -1, 16, -1, -1, -1, 16, 16, -1, -1, -1, 16, -1, -1, -1, 17, 16, 16, 16, 16 }; static const ANTLR3_INT32 dfa146_T8[] = { 16, -1, -1, -1, 16, 12, 16, 15, -1, 16, 13, 16, -1, 14, -1, -1, -1, 16, -1, -1, -1, 16, 16, -1, -1, -1, 16, -1, -1, -1, 11, 16, 16, 16, 16 }; static const ANTLR3_INT32 dfa146_T9[] = { 18, 18, 18, 19, 18, 18, 18, 18, 18, 18, 18, 18, 20, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18 }; static const ANTLR3_INT32 dfa146_T10[] = { 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa146_transitions[] = { dfa146_T1, dfa146_T0, dfa146_T0, dfa146_T0, dfa146_T0, dfa146_T0, dfa146_T0, dfa146_T6, dfa146_T4, dfa146_T8, dfa146_T3, dfa146_T8, dfa146_T5, dfa146_T9, dfa146_T2, dfa146_T2, NULL, dfa146_T7, dfa146_T9, dfa146_T10, dfa146_T2, NULL, dfa146_T9, NULL, NULL, NULL }; static ANTLR3_INT32 dfa146_sst(pbelle_sip_messageParser ctx, pANTLR3_BASE_RECOGNIZER recognizer, pANTLR3_INT_STREAM is, pANTLR3_CYCLIC_DFA dfa, ANTLR3_INT32 s) { ANTLR3_INT32 _s; _s = s; switch (s) { case 0: { ANTLR3_UINT32 LA146_15; ANTLR3_MARKER index146_15; LA146_15 = LA(1); index146_15 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(qop))) ) { s = 16; } else if ( ((IS_TOKEN(nc))) ) { s = 21; } SEEK(index146_15); if ( s>=0 ) { return s; } } break; case 1: { ANTLR3_UINT32 LA146_20; ANTLR3_MARKER index146_20; LA146_20 = LA(1); index146_20 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(nextnonce))) ) { s = 23; } else if ( ((IS_TOKEN(cnonce))) ) { s = 24; } else if ( ((IS_TOKEN(rspauth))) ) { s = 25; } SEEK(index146_20); if ( s>=0 ) { return s; } } break; case 2: { ANTLR3_UINT32 LA146_14; ANTLR3_MARKER index146_14; LA146_14 = LA(1); index146_14 = INDEX(); REWINDLAST(); s = -1; if ( ((IS_TOKEN(qop))) ) { s = 16; } else if ( ((IS_TOKEN(nc))) ) { s = 21; } SEEK(index146_14); if ( s>=0 ) { return s; } } break; } if (BACKTRACKING > 0) { FAILEDFLAG = ANTLR3_TRUE; return -1; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)"1710:3: ( next_nonce | cnonce | authentication_info_message_qop | nonce_count | rspauth )"; EXCEPTION->decisionNum = 146; EXCEPTION->state = _s; return -1; } /* Declare tracking structure for Cyclic DFA 146 */ static ANTLR3_CYCLIC_DFA cdfa146 = { 146, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"1710:3: ( next_nonce | cnonce | authentication_info_message_qop | nonce_count | rspauth )", (CDFA_SPECIAL_FUNC) dfa146_sst, antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa146_eot, /* EOT table */ dfa146_eof, /* EOF table */ dfa146_min, /* Minimum tokens for each state */ dfa146_max, /* Maximum tokens for each state */ dfa146_accept, /* Accept table */ dfa146_special, /* Special transition states */ dfa146_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 146 * --------------------- *//** Static dfa state tables for Cyclic dfa: * 1791:43: ( ( userinfo[$paramless_uri::current] )=> ( userinfo[$paramless_uri::current] hostport[$paramless_uri::current] ) | hostport[$paramless_uri::current] ) */ static const ANTLR3_INT32 dfa150_eot[168] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa150_eof[168] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, 6, 6, -1, -1, 6, -1, -1, -1, 6, -1, -1, -1, -1, 6, 6, -1, -1, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6, 6, 6, 6, 6, -1, -1, -1, -1, -1, -1, -1, 6, -1, -1, -1, -1, -1, -1, 6, -1, -1, 6, -1, -1, 6, 6, -1, -1, -1, 6, 6, -1, -1, -1, -1, -1, -1, -1, 6, 6, 6, -1, -1, 6, 6, 6, 6, 6, 6, -1, 6, -1, -1, 6, 6, 6, 6, 6, 6, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6, 6, -1, 6, 6, 6, -1, -1, 6, 6, -1, 6, 6, -1, 6, 6, -1, 6, 6, 6, 6, -1, 6, 6, -1, 6, 6, 6, 6, -1, 6, -1, 6, -1, -1, 6, 6 }; static const ANTLR3_INT32 dfa150_min[168] = { 4, 4, 4, -1, -1, -1, -1, -1, -1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, -1, 4, -1, -1, -1, -1, -1, -1, -1, 4, 4, 4, 4, 13, 4, 4, 4, 4, 6, 4, 4, 4, 4, 6, 4, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 13, 4, 6, 6, 4, 6, 6, 4, 4, 4, 4, 4, 4, 6, 4, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 6, 4, 4, 4, 0, 0, 0, 13, 0, 0, 0, 0, 0, 4, 4, 4, 4, 6, 6, 4, 13, 4, 4, 4, 13, 4, 4, 13, 4, 4, 4, 4, 13, 4, 6, 6, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 13, 4, 4, 0, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 13, 13, 4, 4 }; static const ANTLR3_INT32 dfa150_max[168] = { 40, 40, 40, -1, -1, -1, -1, -1, -1, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, -1, 40, -1, -1, -1, -1, -1, -1, -1, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 0, 0, 0, 19, 0, 0, 0, 0, 0, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 19, 40, 40, 19, 40, 40, 40, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 19, 40, 40, 0, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 19, 19, 40, 40 }; static const ANTLR3_INT32 dfa150_accept[168] = { -1, -1, -1, 1, 1, 1, 2, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, 1, 1, 1, 1, 1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa150_special[168] = { 122, 13, 22, -1, -1, -1, -1, -1, -1, 44, 85, 111, 1, 72, 77, 95, 120, 70, 119, 2, 46, 76, 104, 40, 19, -1, 27, -1, -1, -1, -1, -1, -1, -1, 112, 81, 37, 86, -1, 24, 4, 5, 34, -1, 59, 55, 89, 58, -1, 75, 123, 57, 74, 82, 64, 14, 100, 16, -1, 42, 96, 101, 91, -1, 115, -1, -1, 29, -1, -1, 105, 35, 28, 107, 18, 3, -1, 30, -1, 93, 49, 99, -1, 65, 47, 50, 71, 32, 7, 45, -1, 114, 121, 51, 116, 117, 8, -1, 36, 67, 88, 31, 23, 92, -1, 61, 66, 63, 69, 68, 106, 39, 84, 79, -1, -1, 109, -1, 15, 102, 17, -1, 97, 103, -1, 113, 83, 38, 87, -1, 25, -1, -1, -1, 98, 43, 73, 26, 90, 60, 6, -1, 9, 41, -1, 33, 56, 48, 94, 54, 11, 53, -1, 10, 12, 110, 21, 118, 78, 0, -1, 62, 52, 108, -1, -1, 20, 80 }; /** Used when there is no transition table entry for a particular state */ #define dfa150_T_empty NULL static const ANTLR3_INT32 dfa150_T0[] = { 92, 8, -1, -1, 156, 19, 157, 6, 159, 158, 161, 159, -1, 159, 5, 157, -1, -1, -1, 159, 6, -1, -1, 160, 161, 161, -1, -1, 159, 6, 18, 161, 6, 159, 159, 159, 159 }; static const ANTLR3_INT32 dfa150_T1[] = { 5, 8, -1, -1, 7, 5, 9, -1, 21, 10, 5, 3, -1, 3, 5, 9, -1, -1, -1, 3, -1, -1, -1, 4, 5, 5, -1, -1, 3, -1, 5, 5, -1, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa150_T2[] = { 5, 8, 6, -1, 7, 5, 45, 6, 47, 46, 5, 47, 6, 47, 5, 45, -1, 6, -1, 47, -1, -1, -1, 48, 49, 5, -1, -1, 47, -1, 5, 5, 6, 47, 47, 47, 47 }; static const ANTLR3_INT32 dfa150_T3[] = { 29, 8, 6, -1, 6, 33, 73, 6, 75, 74, 32, 75, -1, 75, 30, 73, -1, 6, -1, 75, -1, -1, -1, 76, 77, -1, -1, -1, 75, -1, -1, -1, 6, 75, 75, 75, 75 }; static const ANTLR3_INT32 dfa150_T4[] = { 5, 8, 6, -1, 7, 19, 40, 6, 42, 41, 5, 42, -1, 42, 64, 40, -1, -1, -1, 42, -1, -1, -1, 43, 44, 5, -1, -1, 42, -1, 18, 5, 6, 42, 42, 42, 42 }; static const ANTLR3_INT32 dfa150_T5[] = { 83, 8, -1, -1, 6, 54, 149, 6, 151, 150, 154, 151, -1, 151, 30, 149, -1, -1, -1, 151, 6, -1, -1, 152, 153, 6, -1, -1, 151, 6, 6, 6, 6, 151, 151, 151, 151 }; static const ANTLR3_INT32 dfa150_T6[] = { 92, 8, -1, -1, 86, 19, 87, 6, 89, 88, 91, 89, -1, 89, 5, 87, -1, -1, -1, 89, 6, -1, -1, 90, 91, 91, -1, -1, 89, 6, 18, 91, 6, 89, 89, 89, 89 }; static const ANTLR3_INT32 dfa150_T7[] = { 5, 8, 6, -1, 7, 19, 94, 6, 96, 95, 5, 96, -1, 96, 5, 94, -1, -1, -1, 96, -1, -1, -1, 97, 98, 5, -1, -1, 96, -1, 18, 5, 6, 96, 96, 96, 96 }; static const ANTLR3_INT32 dfa150_T8[] = { 141, -1, -1, -1, -1, -1, 141 }; static const ANTLR3_INT32 dfa150_T9[] = { 63, -1, -1, -1, -1, -1, 63 }; static const ANTLR3_INT32 dfa150_T10[] = { 78, -1, -1, -1, -1, -1, 78 }; static const ANTLR3_INT32 dfa150_T11[] = { 117, -1, -1, -1, -1, -1, 117 }; static const ANTLR3_INT32 dfa150_T12[] = { 124, -1, -1, -1, -1, -1, 124 }; static const ANTLR3_INT32 dfa150_T13[] = { 165, -1, -1, -1, -1, -1, 165 }; static const ANTLR3_INT32 dfa150_T14[] = { 133, -1, -1, -1, -1, -1, 133 }; static const ANTLR3_INT32 dfa150_T15[] = { 144, -1, -1, -1, -1, -1, 144 }; static const ANTLR3_INT32 dfa150_T16[] = { 164, -1, -1, -1, -1, -1, 164 }; static const ANTLR3_INT32 dfa150_T17[] = { 5, 8, -1, -1, 7, 5, 9, -1, 12, 10, 5, 11, -1, 3, 5, 9, -1, -1, -1, 3, -1, -1, -1, 4, 5, 5, -1, -1, 3, -1, 5, 5, -1, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa150_T18[] = { 6, -1, 6, -1, 6, 6, 6, 111, -1, 6, -1, 6, -1, 110, -1, 6, -1, 6, -1, -1, -1, 6, 6, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa150_T19[] = { 6, -1, 6, -1, 6, 6, 6, 138, -1, 6, -1, 6, -1, 137, -1, 6, -1, 6, -1, -1, -1, 6, 6, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa150_T20[] = { 29, 8, -1, -1, 6, 33, 55, -1, 57, 56, 61, 57, -1, 57, 59, 55, -1, -1, -1, 57, 6, -1, -1, 58, 60, 6, -1, -1, 57, 6, -1, 6, -1, 57, 57, 57, 57 }; static const ANTLR3_INT32 dfa150_T21[] = { 29, 8, -1, -1, 6, 33, 118, -1, 120, 119, 123, 120, -1, 120, 140, 118, -1, -1, -1, 120, 6, -1, -1, 121, 122, 6, -1, -1, 120, 6, -1, 6, -1, 120, 120, 120, 120 }; static const ANTLR3_INT32 dfa150_T22[] = { 5, 8, -1, -1, 7, 5, 9, -1, 12, 52, 5, 53, -1, 3, 5, 9, -1, -1, -1, 3, -1, -1, -1, 4, 5, 5, -1, -1, 3, -1, 5, 5, -1, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa150_T23[] = { 5, 8, -1, -1, 7, 5, 9, -1, 12, 13, 5, 14, -1, 3, 5, 9, -1, -1, -1, 3, -1, -1, -1, 4, 5, 5, -1, -1, 3, -1, 5, 5, -1, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa150_T24[] = { -1 }; static const ANTLR3_INT32 dfa150_T25[] = { 5, 8, -1, -1, 34, 5, 35, -1, 37, 36, 39, 37, -1, 37, 62, 35, -1, -1, -1, 37, 6, -1, -1, 38, 39, 39, -1, -1, 37, 6, 5, 39, -1, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa150_T26[] = { 5, 8, -1, -1, 125, 5, 126, -1, 128, 127, 130, 128, -1, 128, 143, 126, -1, -1, -1, 128, 6, -1, -1, 129, 130, 130, -1, -1, 128, 6, 5, 130, -1, 128, 128, 128, 128 }; static const ANTLR3_INT32 dfa150_T27[] = { 29, 8, -1, -1, -1, 54, 25, 6, 27, 26, 32, 27, -1, 27, 30, 25, -1, -1, -1, 27, -1, -1, -1, 28, 31, 6, -1, -1, 27, -1, 6, -1, 6, 27, 27, 27, 27 }; static const ANTLR3_INT32 dfa150_T28[] = { 5, 8, -1, -1, 7, 5, 9, -1, 12, 112, 5, 113, -1, 3, 5, 9, -1, -1, -1, 3, -1, -1, -1, 4, 5, 5, -1, -1, 3, -1, 5, 5, -1, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa150_T29[] = { 105, 8, -1, -1, -1, 109, 101, -1, 103, 102, 108, 103, -1, 103, 106, 101, -1, -1, -1, 103, 6, -1, -1, 104, 107, 6, -1, -1, 103, -1, 6, 6, -1, 103, 103, 103, 103 }; static const ANTLR3_INT32 dfa150_T30[] = { 5, 8, -1, -1, 15, 19, 1, 6, 3, 72, 5, 3, -1, 3, 5, 1, -1, -1, -1, 3, -1, -1, -1, 4, 5, 16, -1, -1, 3, -1, 18, 5, 6, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa150_T31[] = { 5, 8, 6, -1, 67, 5, 45, 6, 47, 46, 5, 47, -1, 47, 5, 45, -1, 6, -1, 47, -1, -1, -1, 48, 49, 5, -1, -1, 47, -1, 5, 5, 6, 47, 47, 47, 47 }; static const ANTLR3_INT32 dfa150_T32[] = { 5, 8, -1, -1, 15, 19, 1, 6, 3, 24, 5, 3, -1, 3, 5, 1, -1, -1, -1, 3, -1, -1, -1, 4, 5, 16, -1, -1, 3, -1, 18, 5, 6, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa150_T33[] = { 6, -1, -1, 6, 6, 6, 6, 132, -1, 6, -1, 6, -1, 131, -1, -1, -1, 6, -1, -1, -1, 6, 6, -1, -1, -1, 6, -1, 6, -1, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa150_T34[] = { 83, 8, -1, -1, 6, 54, 79, 6, 81, 80, 85, 81, -1, 81, 30, 79, -1, -1, -1, 81, 6, -1, -1, 82, 84, 6, -1, -1, 81, 6, 6, 6, 6, 81, 81, 81, 81 }; static const ANTLR3_INT32 dfa150_T35[] = { 5, 8, -1, -1, 15, 19, 1, 6, 3, 136, 5, 3, -1, 3, 5, 1, -1, -1, -1, 3, -1, -1, -1, 4, 5, 16, -1, -1, 3, -1, 18, 5, 6, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa150_T36[] = { 142, -1, -1, -1, -1, -1, 142 }; static const ANTLR3_INT32 dfa150_T37[] = { 5, 8, -1, -1, 15, 19, 9, 6, 12, 10, 5, 17, -1, 3, 5, 9, -1, -1, -1, 3, -1, -1, -1, 4, 5, 16, -1, -1, 3, -1, 18, 5, 6, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa150_T38[] = { 93, -1, -1, -1, -1, -1, 93 }; static const ANTLR3_INT32 dfa150_T39[] = { 116, -1, -1, -1, -1, -1, 116 }; static const ANTLR3_INT32 dfa150_T40[] = { 139, -1, -1, -1, -1, -1, 139 }; static const ANTLR3_INT32 dfa150_T41[] = { 147, -1, -1, -1, -1, -1, 147 }; static const ANTLR3_INT32 dfa150_T42[] = { 155, -1, -1, -1, -1, -1, 155 }; static const ANTLR3_INT32 dfa150_T43[] = { 167, -1, -1, -1, -1, -1, 167 }; static const ANTLR3_INT32 dfa150_T44[] = { 162, -1, -1, -1, -1, -1, 162 }; static const ANTLR3_INT32 dfa150_T45[] = { 166, -1, -1, -1, -1, -1, 166 }; static const ANTLR3_INT32 dfa150_T46[] = { 5, 8, -1, -1, 7, 5, 50, -1, 21, 51, 5, 11, -1, 3, 5, 50, -1, -1, -1, 3, -1, -1, -1, 4, 5, 5, -1, -1, 3, -1, 5, 5, -1, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa150_T47[] = { 6, -1, -1, 6, 6, 6, 6, 146, -1, 6, -1, 6, -1, 145, -1, -1, -1, 6, -1, -1, -1, 6, 6, -1, -1, -1, 6, -1, 6, -1, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa150_T48[] = { 29, 8, 6, -1, -1, 33, 73, 6, 75, 74, 32, 75, 6, 75, 30, 73, -1, 6, -1, 75, -1, -1, -1, 76, 77, -1, -1, -1, 75, -1, -1, -1, 6, 75, 75, 75, 75 }; static const ANTLR3_INT32 dfa150_T49[] = { 29, 8, -1, -1, 6, 33, 118, -1, 120, 119, 123, 120, -1, 120, 30, 118, -1, -1, -1, 120, 6, -1, -1, 121, 122, 6, -1, -1, 120, 6, -1, 6, -1, 120, 120, 120, 120 }; static const ANTLR3_INT32 dfa150_T50[] = { 5, 8, -1, -1, 15, 19, 1, 6, 3, 20, 5, 3, -1, 3, 5, 1, -1, -1, -1, 3, -1, -1, -1, 4, 5, 16, -1, -1, 3, -1, 18, 5, 6, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa150_T51[] = { 5, 8, -1, -1, 15, 19, 9, 6, 12, 22, 5, 23, -1, 3, 5, 9, -1, -1, -1, 3, -1, -1, -1, 4, 5, 16, -1, -1, 3, -1, 18, 5, 6, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa150_T52[] = { 5, 8, -1, -1, 15, 19, 9, 6, 12, 148, 5, 11, -1, 3, 5, 9, -1, -1, -1, 3, -1, -1, -1, 4, 5, 16, -1, -1, 3, -1, 18, 5, 6, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa150_T53[] = { 5, 8, -1, -1, 15, 19, 9, 6, 12, 70, 5, 71, -1, 3, 5, 9, -1, -1, -1, 3, -1, -1, -1, 4, 5, 16, -1, -1, 3, -1, 18, 5, 6, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa150_T54[] = { 5, 8, -1, -1, 7, 5, 50, -1, 21, 51, 5, 3, -1, 3, 5, 50, -1, -1, -1, 3, -1, -1, -1, 4, 5, 5, -1, -1, 3, -1, 5, 5, -1, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa150_T55[] = { 5, 8, -1, -1, 7, 5, 1, -1, 3, 24, 5, 3, -1, 3, 5, 1, -1, -1, -1, 3, -1, -1, -1, 4, 5, 5, -1, -1, 3, -1, 5, 5, -1, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa150_T56[] = { 5, 8, -1, -1, 7, 5, 1, -1, 3, 136, 5, 3, -1, 3, 5, 1, -1, -1, -1, 3, -1, -1, -1, 4, 5, 5, -1, -1, 3, -1, 5, 5, -1, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa150_T57[] = { 5, 8, -1, -1, 7, 5, 1, -1, 3, 72, 5, 3, -1, 3, 5, 1, -1, -1, -1, 3, -1, -1, -1, 4, 5, 5, -1, -1, 3, -1, 5, 5, -1, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa150_T58[] = { 5, 8, -1, -1, 15, 19, 9, 6, 12, 134, 5, 135, -1, 3, 5, 9, -1, -1, -1, 3, -1, -1, -1, 4, 5, 16, -1, -1, 3, -1, 18, 5, 6, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa150_T59[] = { 6, -1, -1, 6, 6, 6, 6, 66, -1, 6, -1, 6, 6, 65, -1, -1, -1, 6, -1, -1, -1, 6, 6, -1, -1, -1, 6, -1, 6, -1, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa150_T60[] = { 6, -1, 6, -1, 6, 6, 6, 69, -1, 6, -1, 6, -1, 68, -1, 6, -1, 6, -1, -1, -1, 6, 6, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa150_T61[] = { 6, -1, 6, -1, 6, 6, 6, 115, -1, 6, -1, 6, -1, 114, -1, 6, -1, 6, -1, -1, -1, 6, 6, -1, -1, -1, 6, -1, -1, -1, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa150_T62[] = { 5, 8, -1, -1, 15, 19, 9, 6, 12, 163, 5, 17, -1, 3, 5, 9, -1, -1, -1, 3, -1, -1, -1, 4, 5, 16, -1, -1, 3, -1, 18, 5, 6, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa150_T63[] = { 29, 8, -1, -1, -1, 33, 25, -1, 27, 26, 32, 27, -1, 27, 30, 25, -1, -1, -1, 27, -1, -1, -1, 28, 31, -1, -1, -1, 27, -1, -1, -1, -1, 27, 27, 27, 27 }; static const ANTLR3_INT32 dfa150_T64[] = { 5, 8, -1, -1, 15, 19, 9, 6, 12, 10, 5, 135, -1, 3, 5, 9, -1, -1, -1, 3, -1, -1, -1, 4, 5, 16, -1, -1, 3, -1, 18, 5, 6, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa150_T65[] = { 5, 8, -1, -1, 15, 19, 9, 6, 12, 10, 5, 23, -1, 3, 5, 9, -1, -1, -1, 3, -1, -1, -1, 4, 5, 16, -1, -1, 3, -1, 18, 5, 6, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa150_T66[] = { 5, 8, -1, -1, 15, 19, 9, 6, 12, 10, 5, 71, -1, 3, 5, 9, -1, -1, -1, 3, -1, -1, -1, 4, 5, 16, -1, -1, 3, -1, 18, 5, 6, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa150_T67[] = { 6, -1, -1, 6, 6, 6, 6, 100, -1, 6, -1, 6, 6, 99, -1, -1, -1, 6, -1, -1, -1, 6, 6, -1, -1, -1, 6, -1, 6, -1, 6, 6, 6, 6, 6 }; static const ANTLR3_INT32 dfa150_T68[] = { 5, 8, -1, -1, 7, 5, 1, -1, 3, 20, 5, 3, -1, 3, 5, 1, -1, -1, -1, 3, -1, -1, -1, 4, 5, 5, -1, -1, 3, -1, 5, 5, -1, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa150_T69[] = { 5, 8, 6, -1, 7, 5, 94, 6, 96, 95, 5, 96, 6, 96, 5, 94, -1, -1, -1, 96, -1, -1, -1, 97, 98, 5, -1, -1, 96, -1, 5, 5, 6, 96, 96, 96, 96 }; static const ANTLR3_INT32 dfa150_T70[] = { 5, 8, 6, -1, 7, 5, 40, 6, 42, 41, 5, 42, -1, 42, 5, 40, -1, -1, -1, 42, -1, -1, -1, 43, 44, 5, -1, -1, 42, -1, 5, 5, 6, 42, 42, 42, 42 }; static const ANTLR3_INT32 dfa150_T71[] = { 5, 8, -1, -1, 34, 5, 35, -1, 37, 36, 39, 37, -1, 37, 5, 35, -1, -1, -1, 37, 6, -1, -1, 38, 39, 39, -1, -1, 37, 6, 5, 39, -1, 37, 37, 37, 37 }; static const ANTLR3_INT32 dfa150_T72[] = { 5, 8, -1, -1, 125, 5, 126, -1, 128, 127, 130, 128, -1, 128, 5, 126, -1, -1, -1, 128, 6, -1, -1, 129, 130, 130, -1, -1, 128, 6, 5, 130, -1, 128, 128, 128, 128 }; static const ANTLR3_INT32 dfa150_T73[] = { 5, -1, -1, -1, -1, 5, 1, -1, 3, 2, 5, 3, -1, 3, 5, 1, -1, -1, -1, 3, 6, -1, -1, 4, 5, 5, -1, -1, 3, -1, 5, 5, -1, 3, 3, 3, 3 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa150_transitions[] = { dfa150_T73, dfa150_T17, dfa150_T23, NULL, NULL, NULL, NULL, NULL, NULL, dfa150_T37, dfa150_T37, dfa150_T68, dfa150_T1, dfa150_T51, dfa150_T55, dfa150_T63, dfa150_T71, dfa150_T50, dfa150_T70, dfa150_T2, dfa150_T17, dfa150_T54, dfa150_T65, dfa150_T32, dfa150_T22, NULL, dfa150_T27, NULL, NULL, NULL, NULL, NULL, NULL, NULL, dfa150_T20, dfa150_T25, dfa150_T25, dfa150_T25, dfa150_T9, dfa150_T25, dfa150_T4, dfa150_T4, dfa150_T4, dfa150_T59, dfa150_T4, dfa150_T31, dfa150_T31, dfa150_T31, dfa150_T60, dfa150_T31, dfa150_T46, dfa150_T46, dfa150_T53, dfa150_T57, dfa150_T48, dfa150_T20, dfa150_T20, dfa150_T20, dfa150_T10, dfa150_T34, dfa150_T20, dfa150_T20, dfa150_T6, dfa150_T38, dfa150_T69, dfa150_T67, dfa150_T67, dfa150_T29, dfa150_T18, dfa150_T18, dfa150_T66, dfa150_T30, dfa150_T28, dfa150_T3, dfa150_T3, dfa150_T3, dfa150_T61, dfa150_T3, dfa150_T39, dfa150_T34, dfa150_T34, dfa150_T34, dfa150_T11, dfa150_T49, dfa150_T34, dfa150_T34, dfa150_T34, dfa150_T6, dfa150_T6, dfa150_T6, dfa150_T12, dfa150_T6, dfa150_T72, dfa150_T25, dfa150_T7, dfa150_T7, dfa150_T7, dfa150_T33, dfa150_T7, dfa150_T4, dfa150_T4, dfa150_T24, dfa150_T24, dfa150_T24, dfa150_T14, dfa150_T24, dfa150_T24, dfa150_T24, dfa150_T24, dfa150_T24, dfa150_T31, dfa150_T31, dfa150_T58, dfa150_T56, dfa150_T19, dfa150_T19, dfa150_T20, dfa150_T40, dfa150_T21, dfa150_T21, dfa150_T21, dfa150_T8, dfa150_T21, dfa150_T21, dfa150_T36, dfa150_T21, dfa150_T26, dfa150_T26, dfa150_T26, dfa150_T15, dfa150_T26, dfa150_T47, dfa150_T47, dfa150_T41, dfa150_T64, dfa150_T35, dfa150_T52, dfa150_T3, dfa150_T3, dfa150_T34, dfa150_T5, dfa150_T42, dfa150_T6, dfa150_T0, dfa150_T44, dfa150_T7, dfa150_T7, dfa150_T24, dfa150_T62, dfa150_T5, dfa150_T5, dfa150_T5, dfa150_T16, dfa150_T5, dfa150_T5, dfa150_T21, dfa150_T5, dfa150_T0, dfa150_T0, dfa150_T0, dfa150_T13, dfa150_T0, dfa150_T26, dfa150_T37, dfa150_T45, dfa150_T43, dfa150_T5, dfa150_T0 }; static ANTLR3_INT32 dfa150_sst(pbelle_sip_messageParser ctx, pANTLR3_BASE_RECOGNIZER recognizer, pANTLR3_INT_STREAM is, pANTLR3_CYCLIC_DFA dfa, ANTLR3_INT32 s) { ANTLR3_INT32 _s; _s = s; switch (s) { case 0: { ANTLR3_UINT32 LA150_159; ANTLR3_MARKER index150_159; LA150_159 = LA(1); index150_159 = INDEX(); REWINDLAST(); s = -1; if ( (LA150_159 == COLON) ) { s = 156; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_159 == AT) ) { s = 8; } else if ( (LA150_159 == COMMON_CHAR || LA150_159 == HEX_CHAR) ) { s = 157; } else if ( (LA150_159 == DIGIT) ) { s = 158; } else if ( (LA150_159 == DASH || LA150_159 == DOT || LA150_159 == EMARK || LA150_159 == LPAREN || LA150_159 == RPAREN || ((LA150_159 >= SQUOTE) && (LA150_159 <= USCORE))) ) { s = 159; } else if ( (LA150_159 == PERCENT) ) { s = 160; } else if ( (LA150_159 == SEMI) ) { s = 18; } else if ( (LA150_159 == EOF || LA150_159 == CRLF || LA150_159 == LSBRAQUET || LA150_159 == RSBRAQUET || LA150_159 == SP) ) { s = 6; } else if ( (LA150_159 == COMMA) ) { s = 19; } else if ( (LA150_159 == AND) ) { s = 92; } else if ( (LA150_159 == DOLLARD || ((LA150_159 >= PLUS) && (LA150_159 <= QMARK)) || LA150_159 == SLASH) ) { s = 161; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_159 == EQUAL) ) { s = 5; } SEEK(index150_159); if ( s>=0 ) { return s; } } break; case 1: { ANTLR3_UINT32 LA150_12; ANTLR3_MARKER index150_12; LA150_12 = LA(1); index150_12 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) && (LA150_12 == COLON) ) { s = 7; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_12 == AT) ) { s = 8; } else if ( (LA150_12 == COMMON_CHAR || LA150_12 == HEX_CHAR) ) { s = 9; } else if ( (LA150_12 == DIGIT) ) { s = 10; } else if ( (LA150_12 == DASH) ) { s = 21; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_12 == PERCENT) ) { s = 4; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_12 == AND || LA150_12 == COMMA || LA150_12 == DOLLARD || LA150_12 == EQUAL || ((LA150_12 >= PLUS) && (LA150_12 <= QMARK)) || ((LA150_12 >= SEMI) && (LA150_12 <= SLASH))) ) { s = 5; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_12 == DOT || LA150_12 == EMARK || LA150_12 == LPAREN || LA150_12 == RPAREN || ((LA150_12 >= SQUOTE) && (LA150_12 <= USCORE))) ) { s = 3; } SEEK(index150_12); if ( s>=0 ) { return s; } } break; case 2: { ANTLR3_UINT32 LA150_19; ANTLR3_MARKER index150_19; LA150_19 = LA(1); index150_19 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) && (LA150_19 == COLON) ) { s = 7; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_19 == AT) ) { s = 8; } else if ( (LA150_19 == COMMON_CHAR || LA150_19 == HEX_CHAR) ) { s = 45; } else if ( (LA150_19 == DIGIT) ) { s = 46; } else if ( (LA150_19 == DASH || LA150_19 == DOT || LA150_19 == EMARK || LA150_19 == LPAREN || LA150_19 == RPAREN || ((LA150_19 >= SQUOTE) && (LA150_19 <= USCORE))) ) { s = 47; } else if ( (LA150_19 == PERCENT) ) { s = 48; } else if ( (LA150_19 == PLUS) ) { s = 49; } else if ( (LA150_19 == BQUOTE || LA150_19 == CRLF || LA150_19 == DQUOTE || LA150_19 == LAQUOT || LA150_19 == SP) ) { s = 6; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_19 == AND || LA150_19 == COMMA || LA150_19 == DOLLARD || LA150_19 == EQUAL || LA150_19 == QMARK || ((LA150_19 >= SEMI) && (LA150_19 <= SLASH))) ) { s = 5; } SEEK(index150_19); if ( s>=0 ) { return s; } } break; case 3: { ANTLR3_UINT32 LA150_75; ANTLR3_MARKER index150_75; LA150_75 = LA(1); index150_75 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) && (LA150_75 == AT) ) { s = 8; } else if ( (LA150_75 == COMMON_CHAR || LA150_75 == HEX_CHAR) ) { s = 73; } else if ( (LA150_75 == DIGIT) ) { s = 74; } else if ( (LA150_75 == DASH || LA150_75 == DOT || LA150_75 == EMARK || LA150_75 == LPAREN || LA150_75 == RPAREN || ((LA150_75 >= SQUOTE) && (LA150_75 <= USCORE))) ) { s = 75; } else if ( (LA150_75 == PERCENT) ) { s = 76; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_75 == AND) ) { s = 29; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_75 == EQUAL) ) { s = 30; } else if ( (LA150_75 == PLUS) ) { s = 77; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_75 == DOLLARD) ) { s = 32; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_75 == COMMA) ) { s = 33; } else if ( (LA150_75 == BQUOTE || LA150_75 == COLON || LA150_75 == CRLF || LA150_75 == LAQUOT || LA150_75 == SP) ) { s = 6; } SEEK(index150_75); if ( s>=0 ) { return s; } } break; case 4: { ANTLR3_UINT32 LA150_40; ANTLR3_MARKER index150_40; LA150_40 = LA(1); index150_40 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) && (LA150_40 == COLON) ) { s = 7; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_40 == AT) ) { s = 8; } else if ( (LA150_40 == COMMON_CHAR || LA150_40 == HEX_CHAR) ) { s = 40; } else if ( (LA150_40 == DIGIT) ) { s = 41; } else if ( (LA150_40 == DASH || LA150_40 == DOT || LA150_40 == EMARK || LA150_40 == LPAREN || LA150_40 == RPAREN || ((LA150_40 >= SQUOTE) && (LA150_40 <= USCORE))) ) { s = 42; } else if ( (LA150_40 == PERCENT) ) { s = 43; } else if ( (LA150_40 == EQUAL) ) { s = 64; } else if ( (LA150_40 == EOF || LA150_40 == BQUOTE || LA150_40 == CRLF || LA150_40 == SP) ) { s = 6; } else if ( (LA150_40 == COMMA) ) { s = 19; } else if ( (LA150_40 == SEMI) ) { s = 18; } else if ( (LA150_40 == PLUS) ) { s = 44; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_40 == AND || LA150_40 == DOLLARD || LA150_40 == QMARK || LA150_40 == SLASH) ) { s = 5; } SEEK(index150_40); if ( s>=0 ) { return s; } } break; case 5: { ANTLR3_UINT32 LA150_41; ANTLR3_MARKER index150_41; LA150_41 = LA(1); index150_41 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) && (LA150_41 == COLON) ) { s = 7; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_41 == AT) ) { s = 8; } else if ( (LA150_41 == COMMON_CHAR || LA150_41 == HEX_CHAR) ) { s = 40; } else if ( (LA150_41 == DIGIT) ) { s = 41; } else if ( (LA150_41 == DASH || LA150_41 == DOT || LA150_41 == EMARK || LA150_41 == LPAREN || LA150_41 == RPAREN || ((LA150_41 >= SQUOTE) && (LA150_41 <= USCORE))) ) { s = 42; } else if ( (LA150_41 == PERCENT) ) { s = 43; } else if ( (LA150_41 == EQUAL) ) { s = 64; } else if ( (LA150_41 == EOF || LA150_41 == BQUOTE || LA150_41 == CRLF || LA150_41 == SP) ) { s = 6; } else if ( (LA150_41 == COMMA) ) { s = 19; } else if ( (LA150_41 == SEMI) ) { s = 18; } else if ( (LA150_41 == PLUS) ) { s = 44; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_41 == AND || LA150_41 == DOLLARD || LA150_41 == QMARK || LA150_41 == SLASH) ) { s = 5; } SEEK(index150_41); if ( s>=0 ) { return s; } } break; case 6: { ANTLR3_UINT32 LA150_140; ANTLR3_MARKER index150_140; LA150_140 = LA(1); index150_140 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) && (LA150_140 == AT) ) { s = 8; } else if ( (LA150_140 == COMMON_CHAR || LA150_140 == HEX_CHAR) ) { s = 149; } else if ( (LA150_140 == DIGIT) ) { s = 150; } else if ( (LA150_140 == DASH || LA150_140 == DOT || LA150_140 == EMARK || LA150_140 == LPAREN || LA150_140 == RPAREN || ((LA150_140 >= SQUOTE) && (LA150_140 <= USCORE))) ) { s = 151; } else if ( (LA150_140 == PERCENT) ) { s = 152; } else if ( (LA150_140 == AND) ) { s = 83; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_140 == EQUAL) ) { s = 30; } else if ( (LA150_140 == PLUS) ) { s = 153; } else if ( (LA150_140 == DOLLARD) ) { s = 154; } else if ( (LA150_140 == COMMA) ) { s = 54; } else if ( (LA150_140 == EOF || LA150_140 == COLON || LA150_140 == CRLF || LA150_140 == LSBRAQUET || LA150_140 == QMARK || ((LA150_140 >= RSBRAQUET) && (LA150_140 <= SP))) ) { s = 6; } SEEK(index150_140); if ( s>=0 ) { return s; } } break; case 7: { ANTLR3_UINT32 LA150_88; ANTLR3_MARKER index150_88; LA150_88 = LA(1); index150_88 = INDEX(); REWINDLAST(); s = -1; if ( (LA150_88 == COLON) ) { s = 86; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_88 == AT) ) { s = 8; } else if ( (LA150_88 == COMMON_CHAR || LA150_88 == HEX_CHAR) ) { s = 87; } else if ( (LA150_88 == DIGIT) ) { s = 88; } else if ( (LA150_88 == DASH || LA150_88 == DOT || LA150_88 == EMARK || LA150_88 == LPAREN || LA150_88 == RPAREN || ((LA150_88 >= SQUOTE) && (LA150_88 <= USCORE))) ) { s = 89; } else if ( (LA150_88 == PERCENT) ) { s = 90; } else if ( (LA150_88 == AND) ) { s = 92; } else if ( (LA150_88 == SEMI) ) { s = 18; } else if ( (LA150_88 == EOF || LA150_88 == CRLF || LA150_88 == LSBRAQUET || LA150_88 == RSBRAQUET || LA150_88 == SP) ) { s = 6; } else if ( (LA150_88 == COMMA) ) { s = 19; } else if ( (LA150_88 == DOLLARD || ((LA150_88 >= PLUS) && (LA150_88 <= QMARK)) || LA150_88 == SLASH) ) { s = 91; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_88 == EQUAL) ) { s = 5; } SEEK(index150_88); if ( s>=0 ) { return s; } } break; case 8: { ANTLR3_UINT32 LA150_96; ANTLR3_MARKER index150_96; LA150_96 = LA(1); index150_96 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) && (LA150_96 == COLON) ) { s = 7; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_96 == AT) ) { s = 8; } else if ( (LA150_96 == COMMON_CHAR || LA150_96 == HEX_CHAR) ) { s = 94; } else if ( (LA150_96 == DIGIT) ) { s = 95; } else if ( (LA150_96 == DASH || LA150_96 == DOT || LA150_96 == EMARK || LA150_96 == LPAREN || LA150_96 == RPAREN || ((LA150_96 >= SQUOTE) && (LA150_96 <= USCORE))) ) { s = 96; } else if ( (LA150_96 == PERCENT) ) { s = 97; } else if ( (LA150_96 == COMMA) ) { s = 19; } else if ( (LA150_96 == EOF || LA150_96 == BQUOTE || LA150_96 == CRLF || LA150_96 == SP) ) { s = 6; } else if ( (LA150_96 == SEMI) ) { s = 18; } else if ( (LA150_96 == PLUS) ) { s = 98; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_96 == AND || LA150_96 == DOLLARD || LA150_96 == EQUAL || LA150_96 == QMARK || LA150_96 == SLASH) ) { s = 5; } SEEK(index150_96); if ( s>=0 ) { return s; } } break; case 9: { ANTLR3_UINT32 LA150_142; ANTLR3_MARKER index150_142; LA150_142 = LA(1); index150_142 = INDEX(); REWINDLAST(); s = -1; if ( (LA150_142 == COLON) ) { s = 86; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_142 == AT) ) { s = 8; } else if ( (LA150_142 == COMMON_CHAR || LA150_142 == HEX_CHAR) ) { s = 87; } else if ( (LA150_142 == DIGIT) ) { s = 88; } else if ( (LA150_142 == DASH || LA150_142 == DOT || LA150_142 == EMARK || LA150_142 == LPAREN || LA150_142 == RPAREN || ((LA150_142 >= SQUOTE) && (LA150_142 <= USCORE))) ) { s = 89; } else if ( (LA150_142 == PERCENT) ) { s = 90; } else if ( (LA150_142 == AND) ) { s = 92; } else if ( (LA150_142 == SEMI) ) { s = 18; } else if ( (LA150_142 == EOF || LA150_142 == CRLF || LA150_142 == LSBRAQUET || LA150_142 == RSBRAQUET || LA150_142 == SP) ) { s = 6; } else if ( (LA150_142 == COMMA) ) { s = 19; } else if ( (LA150_142 == DOLLARD || ((LA150_142 >= PLUS) && (LA150_142 <= QMARK)) || LA150_142 == SLASH) ) { s = 91; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_142 == EQUAL) ) { s = 5; } SEEK(index150_142); if ( s>=0 ) { return s; } } break; case 10: { ANTLR3_UINT32 LA150_153; ANTLR3_MARKER index150_153; LA150_153 = LA(1); index150_153 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) && (LA150_153 == AT) ) { s = 8; } else if ( (LA150_153 == COMMON_CHAR || LA150_153 == HEX_CHAR) ) { s = 149; } else if ( (LA150_153 == DIGIT) ) { s = 150; } else if ( (LA150_153 == DASH || LA150_153 == DOT || LA150_153 == EMARK || LA150_153 == LPAREN || LA150_153 == RPAREN || ((LA150_153 >= SQUOTE) && (LA150_153 <= USCORE))) ) { s = 151; } else if ( (LA150_153 == PERCENT) ) { s = 152; } else if ( (LA150_153 == AND) ) { s = 83; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_153 == EQUAL) ) { s = 30; } else if ( (LA150_153 == PLUS) ) { s = 153; } else if ( (LA150_153 == DOLLARD) ) { s = 154; } else if ( (LA150_153 == COMMA) ) { s = 54; } else if ( (LA150_153 == EOF || LA150_153 == COLON || LA150_153 == CRLF || LA150_153 == LSBRAQUET || LA150_153 == QMARK || ((LA150_153 >= RSBRAQUET) && (LA150_153 <= SP))) ) { s = 6; } SEEK(index150_153); if ( s>=0 ) { return s; } } break; case 11: { ANTLR3_UINT32 LA150_150; ANTLR3_MARKER index150_150; LA150_150 = LA(1); index150_150 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) && (LA150_150 == AT) ) { s = 8; } else if ( (LA150_150 == COMMON_CHAR || LA150_150 == HEX_CHAR) ) { s = 149; } else if ( (LA150_150 == DIGIT) ) { s = 150; } else if ( (LA150_150 == DASH || LA150_150 == DOT || LA150_150 == EMARK || LA150_150 == LPAREN || LA150_150 == RPAREN || ((LA150_150 >= SQUOTE) && (LA150_150 <= USCORE))) ) { s = 151; } else if ( (LA150_150 == PERCENT) ) { s = 152; } else if ( (LA150_150 == AND) ) { s = 83; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_150 == EQUAL) ) { s = 30; } else if ( (LA150_150 == PLUS) ) { s = 153; } else if ( (LA150_150 == DOLLARD) ) { s = 154; } else if ( (LA150_150 == COMMA) ) { s = 54; } else if ( (LA150_150 == EOF || LA150_150 == COLON || LA150_150 == CRLF || LA150_150 == LSBRAQUET || LA150_150 == QMARK || ((LA150_150 >= RSBRAQUET) && (LA150_150 <= SP))) ) { s = 6; } SEEK(index150_150); if ( s>=0 ) { return s; } } break; case 12: { ANTLR3_UINT32 LA150_154; ANTLR3_MARKER index150_154; LA150_154 = LA(1); index150_154 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) && (LA150_154 == AT) ) { s = 8; } else if ( (LA150_154 == COMMON_CHAR || LA150_154 == HEX_CHAR) ) { s = 149; } else if ( (LA150_154 == DIGIT) ) { s = 150; } else if ( (LA150_154 == DASH || LA150_154 == DOT || LA150_154 == EMARK || LA150_154 == LPAREN || LA150_154 == RPAREN || ((LA150_154 >= SQUOTE) && (LA150_154 <= USCORE))) ) { s = 151; } else if ( (LA150_154 == PERCENT) ) { s = 152; } else if ( (LA150_154 == AND) ) { s = 83; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_154 == EQUAL) ) { s = 30; } else if ( (LA150_154 == PLUS) ) { s = 153; } else if ( (LA150_154 == DOLLARD) ) { s = 154; } else if ( (LA150_154 == COMMA) ) { s = 54; } else if ( (LA150_154 == EOF || LA150_154 == COLON || LA150_154 == CRLF || LA150_154 == LSBRAQUET || LA150_154 == QMARK || ((LA150_154 >= RSBRAQUET) && (LA150_154 <= SP))) ) { s = 6; } SEEK(index150_154); if ( s>=0 ) { return s; } } break; case 13: { ANTLR3_UINT32 LA150_1; ANTLR3_MARKER index150_1; LA150_1 = LA(1); index150_1 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) && (LA150_1 == COLON) ) { s = 7; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_1 == AT) ) { s = 8; } else if ( (LA150_1 == COMMON_CHAR || LA150_1 == HEX_CHAR) ) { s = 9; } else if ( (LA150_1 == DIGIT) ) { s = 10; } else if ( (LA150_1 == DOT) ) { s = 11; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_1 == PERCENT) ) { s = 4; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_1 == AND || LA150_1 == COMMA || LA150_1 == DOLLARD || LA150_1 == EQUAL || ((LA150_1 >= PLUS) && (LA150_1 <= QMARK)) || ((LA150_1 >= SEMI) && (LA150_1 <= SLASH))) ) { s = 5; } else if ( (LA150_1 == DASH) ) { s = 12; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_1 == EMARK || LA150_1 == LPAREN || LA150_1 == RPAREN || ((LA150_1 >= SQUOTE) && (LA150_1 <= USCORE))) ) { s = 3; } SEEK(index150_1); if ( s>=0 ) { return s; } } break; case 14: { ANTLR3_UINT32 LA150_55; ANTLR3_MARKER index150_55; LA150_55 = LA(1); index150_55 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) && (LA150_55 == AT) ) { s = 8; } else if ( (LA150_55 == COMMON_CHAR || LA150_55 == HEX_CHAR) ) { s = 55; } else if ( (LA150_55 == DIGIT) ) { s = 56; } else if ( (LA150_55 == DASH || LA150_55 == DOT || LA150_55 == EMARK || LA150_55 == LPAREN || LA150_55 == RPAREN || ((LA150_55 >= SQUOTE) && (LA150_55 <= USCORE))) ) { s = 57; } else if ( (LA150_55 == PERCENT) ) { s = 58; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_55 == AND) ) { s = 29; } else if ( (LA150_55 == EQUAL) ) { s = 59; } else if ( (LA150_55 == PLUS) ) { s = 60; } else if ( (LA150_55 == DOLLARD) ) { s = 61; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_55 == COMMA) ) { s = 33; } else if ( (LA150_55 == COLON || LA150_55 == LSBRAQUET || LA150_55 == QMARK || LA150_55 == RSBRAQUET || LA150_55 == SLASH) ) { s = 6; } SEEK(index150_55); if ( s>=0 ) { return s; } } break; case 15: { ANTLR3_UINT32 LA150_118; ANTLR3_MARKER index150_118; LA150_118 = LA(1); index150_118 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) && (LA150_118 == AT) ) { s = 8; } else if ( (LA150_118 == COMMON_CHAR || LA150_118 == HEX_CHAR) ) { s = 118; } else if ( (LA150_118 == DIGIT) ) { s = 119; } else if ( (LA150_118 == DASH || LA150_118 == DOT || LA150_118 == EMARK || LA150_118 == LPAREN || LA150_118 == RPAREN || ((LA150_118 >= SQUOTE) && (LA150_118 <= USCORE))) ) { s = 120; } else if ( (LA150_118 == PERCENT) ) { s = 121; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_118 == AND) ) { s = 29; } else if ( (LA150_118 == EQUAL) ) { s = 140; } else if ( (LA150_118 == PLUS) ) { s = 122; } else if ( (LA150_118 == DOLLARD) ) { s = 123; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_118 == COMMA) ) { s = 33; } else if ( (LA150_118 == COLON || LA150_118 == LSBRAQUET || LA150_118 == QMARK || LA150_118 == RSBRAQUET || LA150_118 == SLASH) ) { s = 6; } SEEK(index150_118); if ( s>=0 ) { return s; } } break; case 16: { ANTLR3_UINT32 LA150_57; ANTLR3_MARKER index150_57; LA150_57 = LA(1); index150_57 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) && (LA150_57 == AT) ) { s = 8; } else if ( (LA150_57 == COMMON_CHAR || LA150_57 == HEX_CHAR) ) { s = 55; } else if ( (LA150_57 == DIGIT) ) { s = 56; } else if ( (LA150_57 == DASH || LA150_57 == DOT || LA150_57 == EMARK || LA150_57 == LPAREN || LA150_57 == RPAREN || ((LA150_57 >= SQUOTE) && (LA150_57 <= USCORE))) ) { s = 57; } else if ( (LA150_57 == PERCENT) ) { s = 58; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_57 == AND) ) { s = 29; } else if ( (LA150_57 == EQUAL) ) { s = 59; } else if ( (LA150_57 == PLUS) ) { s = 60; } else if ( (LA150_57 == DOLLARD) ) { s = 61; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_57 == COMMA) ) { s = 33; } else if ( (LA150_57 == COLON || LA150_57 == LSBRAQUET || LA150_57 == QMARK || LA150_57 == RSBRAQUET || LA150_57 == SLASH) ) { s = 6; } SEEK(index150_57); if ( s>=0 ) { return s; } } break; case 17: { ANTLR3_UINT32 LA150_120; ANTLR3_MARKER index150_120; LA150_120 = LA(1); index150_120 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) && (LA150_120 == AT) ) { s = 8; } else if ( (LA150_120 == COMMON_CHAR || LA150_120 == HEX_CHAR) ) { s = 118; } else if ( (LA150_120 == DIGIT) ) { s = 119; } else if ( (LA150_120 == DASH || LA150_120 == DOT || LA150_120 == EMARK || LA150_120 == LPAREN || LA150_120 == RPAREN || ((LA150_120 >= SQUOTE) && (LA150_120 <= USCORE))) ) { s = 120; } else if ( (LA150_120 == PERCENT) ) { s = 121; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_120 == AND) ) { s = 29; } else if ( (LA150_120 == EQUAL) ) { s = 140; } else if ( (LA150_120 == PLUS) ) { s = 122; } else if ( (LA150_120 == DOLLARD) ) { s = 123; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_120 == COMMA) ) { s = 33; } else if ( (LA150_120 == COLON || LA150_120 == LSBRAQUET || LA150_120 == QMARK || LA150_120 == RSBRAQUET || LA150_120 == SLASH) ) { s = 6; } SEEK(index150_120); if ( s>=0 ) { return s; } } break; case 18: { ANTLR3_UINT32 LA150_74; ANTLR3_MARKER index150_74; LA150_74 = LA(1); index150_74 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) && (LA150_74 == AT) ) { s = 8; } else if ( (LA150_74 == COMMON_CHAR || LA150_74 == HEX_CHAR) ) { s = 73; } else if ( (LA150_74 == DIGIT) ) { s = 74; } else if ( (LA150_74 == DASH || LA150_74 == DOT || LA150_74 == EMARK || LA150_74 == LPAREN || LA150_74 == RPAREN || ((LA150_74 >= SQUOTE) && (LA150_74 <= USCORE))) ) { s = 75; } else if ( (LA150_74 == PERCENT) ) { s = 76; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_74 == AND) ) { s = 29; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_74 == EQUAL) ) { s = 30; } else if ( (LA150_74 == PLUS) ) { s = 77; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_74 == DOLLARD) ) { s = 32; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_74 == COMMA) ) { s = 33; } else if ( (LA150_74 == BQUOTE || LA150_74 == COLON || LA150_74 == CRLF || LA150_74 == LAQUOT || LA150_74 == SP) ) { s = 6; } SEEK(index150_74); if ( s>=0 ) { return s; } } break; case 19: { ANTLR3_UINT32 LA150_24; ANTLR3_MARKER index150_24; LA150_24 = LA(1); index150_24 = INDEX(); REWINDLAST(); s = -1; if ( (LA150_24 == DIGIT) ) { s = 52; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_24 == COLON) ) { s = 7; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_24 == AT) ) { s = 8; } else if ( (LA150_24 == COMMON_CHAR || LA150_24 == HEX_CHAR) ) { s = 9; } else if ( (LA150_24 == DASH) ) { s = 12; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_24 == PERCENT) ) { s = 4; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_24 == AND || LA150_24 == COMMA || LA150_24 == DOLLARD || LA150_24 == EQUAL || ((LA150_24 >= PLUS) && (LA150_24 <= QMARK)) || ((LA150_24 >= SEMI) && (LA150_24 <= SLASH))) ) { s = 5; } else if ( (LA150_24 == DOT) ) { s = 53; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_24 == EMARK || LA150_24 == LPAREN || LA150_24 == RPAREN || ((LA150_24 >= SQUOTE) && (LA150_24 <= USCORE))) ) { s = 3; } SEEK(index150_24); if ( s>=0 ) { return s; } } break; case 20: { ANTLR3_UINT32 LA150_166; ANTLR3_MARKER index150_166; LA150_166 = LA(1); index150_166 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) && (LA150_166 == AT) ) { s = 8; } else if ( (LA150_166 == COMMON_CHAR || LA150_166 == HEX_CHAR) ) { s = 149; } else if ( (LA150_166 == DIGIT) ) { s = 150; } else if ( (LA150_166 == DASH || LA150_166 == DOT || LA150_166 == EMARK || LA150_166 == LPAREN || LA150_166 == RPAREN || ((LA150_166 >= SQUOTE) && (LA150_166 <= USCORE))) ) { s = 151; } else if ( (LA150_166 == PERCENT) ) { s = 152; } else if ( (LA150_166 == AND) ) { s = 83; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_166 == EQUAL) ) { s = 30; } else if ( (LA150_166 == PLUS) ) { s = 153; } else if ( (LA150_166 == DOLLARD) ) { s = 154; } else if ( (LA150_166 == COMMA) ) { s = 54; } else if ( (LA150_166 == EOF || LA150_166 == COLON || LA150_166 == CRLF || LA150_166 == LSBRAQUET || LA150_166 == QMARK || ((LA150_166 >= RSBRAQUET) && (LA150_166 <= SP))) ) { s = 6; } SEEK(index150_166); if ( s>=0 ) { return s; } } break; case 21: { ANTLR3_UINT32 LA150_156; ANTLR3_MARKER index150_156; LA150_156 = LA(1); index150_156 = INDEX(); REWINDLAST(); s = -1; if ( (LA150_156 == COMMON_CHAR || LA150_156 == HEX_CHAR) ) { s = 149; } else if ( (LA150_156 == DIGIT) ) { s = 150; } else if ( (LA150_156 == DASH || LA150_156 == DOT || LA150_156 == EMARK || LA150_156 == LPAREN || LA150_156 == RPAREN || ((LA150_156 >= SQUOTE) && (LA150_156 <= USCORE))) ) { s = 151; } else if ( (LA150_156 == PERCENT) ) { s = 152; } else if ( (LA150_156 == AND) ) { s = 83; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_156 == EQUAL) ) { s = 30; } else if ( (LA150_156 == PLUS) ) { s = 153; } else if ( (LA150_156 == DOLLARD) ) { s = 154; } else if ( (LA150_156 == COMMA) ) { s = 54; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_156 == AT) ) { s = 8; } else if ( (LA150_156 == EOF || LA150_156 == COLON || LA150_156 == CRLF || LA150_156 == LSBRAQUET || LA150_156 == QMARK || ((LA150_156 >= RSBRAQUET) && (LA150_156 <= SP))) ) { s = 6; } SEEK(index150_156); if ( s>=0 ) { return s; } } break; case 22: { ANTLR3_UINT32 LA150_2; ANTLR3_MARKER index150_2; LA150_2 = LA(1); index150_2 = INDEX(); REWINDLAST(); s = -1; if ( (LA150_2 == DIGIT) ) { s = 13; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_2 == COLON) ) { s = 7; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_2 == AT) ) { s = 8; } else if ( (LA150_2 == COMMON_CHAR || LA150_2 == HEX_CHAR) ) { s = 9; } else if ( (LA150_2 == DOT) ) { s = 14; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_2 == PERCENT) ) { s = 4; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_2 == AND || LA150_2 == COMMA || LA150_2 == DOLLARD || LA150_2 == EQUAL || ((LA150_2 >= PLUS) && (LA150_2 <= QMARK)) || ((LA150_2 >= SEMI) && (LA150_2 <= SLASH))) ) { s = 5; } else if ( (LA150_2 == DASH) ) { s = 12; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_2 == EMARK || LA150_2 == LPAREN || LA150_2 == RPAREN || ((LA150_2 >= SQUOTE) && (LA150_2 <= USCORE))) ) { s = 3; } SEEK(index150_2); if ( s>=0 ) { return s; } } break; case 23: { ANTLR3_UINT32 LA150_102; ANTLR3_MARKER index150_102; LA150_102 = LA(1); index150_102 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) ) { s = 33; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index150_102); if ( s>=0 ) { return s; } } break; case 24: { ANTLR3_UINT32 LA150_39; ANTLR3_MARKER index150_39; LA150_39 = LA(1); index150_39 = INDEX(); REWINDLAST(); s = -1; if ( (LA150_39 == COLON) ) { s = 34; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_39 == AT) ) { s = 8; } else if ( (LA150_39 == COMMON_CHAR || LA150_39 == HEX_CHAR) ) { s = 35; } else if ( (LA150_39 == DIGIT) ) { s = 36; } else if ( (LA150_39 == DASH || LA150_39 == DOT || LA150_39 == EMARK || LA150_39 == LPAREN || LA150_39 == RPAREN || ((LA150_39 >= SQUOTE) && (LA150_39 <= USCORE))) ) { s = 37; } else if ( (LA150_39 == PERCENT) ) { s = 38; } else if ( (LA150_39 == EQUAL) ) { s = 62; } else if ( (LA150_39 == DOLLARD || ((LA150_39 >= PLUS) && (LA150_39 <= QMARK)) || LA150_39 == SLASH) ) { s = 39; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_39 == AND || LA150_39 == COMMA || LA150_39 == SEMI) ) { s = 5; } else if ( (LA150_39 == LSBRAQUET || LA150_39 == RSBRAQUET) ) { s = 6; } SEEK(index150_39); if ( s>=0 ) { return s; } } break; case 25: { ANTLR3_UINT32 LA150_130; ANTLR3_MARKER index150_130; LA150_130 = LA(1); index150_130 = INDEX(); REWINDLAST(); s = -1; if ( (LA150_130 == COLON) ) { s = 125; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_130 == AT) ) { s = 8; } else if ( (LA150_130 == COMMON_CHAR || LA150_130 == HEX_CHAR) ) { s = 126; } else if ( (LA150_130 == DIGIT) ) { s = 127; } else if ( (LA150_130 == DASH || LA150_130 == DOT || LA150_130 == EMARK || LA150_130 == LPAREN || LA150_130 == RPAREN || ((LA150_130 >= SQUOTE) && (LA150_130 <= USCORE))) ) { s = 128; } else if ( (LA150_130 == PERCENT) ) { s = 129; } else if ( (LA150_130 == EQUAL) ) { s = 143; } else if ( (LA150_130 == DOLLARD || ((LA150_130 >= PLUS) && (LA150_130 <= QMARK)) || LA150_130 == SLASH) ) { s = 130; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_130 == AND || LA150_130 == COMMA || LA150_130 == SEMI) ) { s = 5; } else if ( (LA150_130 == LSBRAQUET || LA150_130 == RSBRAQUET) ) { s = 6; } SEEK(index150_130); if ( s>=0 ) { return s; } } break; case 26: { ANTLR3_UINT32 LA150_137; ANTLR3_MARKER index150_137; LA150_137 = LA(1); index150_137 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) && (LA150_137 == AT) ) { s = 8; } else if ( (LA150_137 == COMMON_CHAR || LA150_137 == HEX_CHAR) ) { s = 73; } else if ( (LA150_137 == DIGIT) ) { s = 74; } else if ( (LA150_137 == DASH || LA150_137 == DOT || LA150_137 == EMARK || LA150_137 == LPAREN || LA150_137 == RPAREN || ((LA150_137 >= SQUOTE) && (LA150_137 <= USCORE))) ) { s = 75; } else if ( (LA150_137 == PERCENT) ) { s = 76; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_137 == AND) ) { s = 29; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_137 == EQUAL) ) { s = 30; } else if ( (LA150_137 == PLUS) ) { s = 77; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_137 == DOLLARD) ) { s = 32; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_137 == COMMA) ) { s = 33; } else if ( (LA150_137 == BQUOTE || LA150_137 == COLON || LA150_137 == CRLF || LA150_137 == LAQUOT || LA150_137 == SP) ) { s = 6; } SEEK(index150_137); if ( s>=0 ) { return s; } } break; case 27: { ANTLR3_UINT32 LA150_26; ANTLR3_MARKER index150_26; LA150_26 = LA(1); index150_26 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) && (LA150_26 == AT) ) { s = 8; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_26 == COMMON_CHAR || LA150_26 == HEX_CHAR) ) { s = 25; } else if ( (LA150_26 == DIGIT) ) { s = 26; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_26 == DASH || LA150_26 == DOT || LA150_26 == EMARK || LA150_26 == LPAREN || LA150_26 == RPAREN || ((LA150_26 >= SQUOTE) && (LA150_26 <= USCORE))) ) { s = 27; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_26 == PERCENT) ) { s = 28; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_26 == AND) ) { s = 29; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_26 == EQUAL) ) { s = 30; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_26 == PLUS) ) { s = 31; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_26 == DOLLARD) ) { s = 32; } else if ( (LA150_26 == COMMA) ) { s = 54; } else if ( (LA150_26 == EOF || LA150_26 == CRLF || LA150_26 == QMARK || LA150_26 == SEMI || LA150_26 == SP) ) { s = 6; } SEEK(index150_26); if ( s>=0 ) { return s; } } break; case 28: { ANTLR3_UINT32 LA150_72; ANTLR3_MARKER index150_72; LA150_72 = LA(1); index150_72 = INDEX(); REWINDLAST(); s = -1; if ( (LA150_72 == DIGIT) ) { s = 112; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_72 == COLON) ) { s = 7; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_72 == AT) ) { s = 8; } else if ( (LA150_72 == COMMON_CHAR || LA150_72 == HEX_CHAR) ) { s = 9; } else if ( (LA150_72 == DASH) ) { s = 12; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_72 == PERCENT) ) { s = 4; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_72 == AND || LA150_72 == COMMA || LA150_72 == DOLLARD || LA150_72 == EQUAL || ((LA150_72 >= PLUS) && (LA150_72 <= QMARK)) || ((LA150_72 >= SEMI) && (LA150_72 <= SLASH))) ) { s = 5; } else if ( (LA150_72 == DOT) ) { s = 113; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_72 == EMARK || LA150_72 == LPAREN || LA150_72 == RPAREN || ((LA150_72 >= SQUOTE) && (LA150_72 <= USCORE))) ) { s = 3; } SEEK(index150_72); if ( s>=0 ) { return s; } } break; case 29: { ANTLR3_UINT32 LA150_67; ANTLR3_MARKER index150_67; LA150_67 = LA(1); index150_67 = INDEX(); REWINDLAST(); s = -1; if ( (LA150_67 == COMMON_CHAR || LA150_67 == HEX_CHAR) ) { s = 101; } else if ( (LA150_67 == DIGIT) ) { s = 102; } else if ( (LA150_67 == DASH || LA150_67 == DOT || LA150_67 == EMARK || LA150_67 == LPAREN || LA150_67 == RPAREN || ((LA150_67 >= SQUOTE) && (LA150_67 <= USCORE))) ) { s = 103; } else if ( (LA150_67 == PERCENT) ) { s = 104; } else if ( (LA150_67 == AND) ) { s = 105; } else if ( (LA150_67 == EQUAL) ) { s = 106; } else if ( (LA150_67 == PLUS) ) { s = 107; } else if ( (LA150_67 == DOLLARD) ) { s = 108; } else if ( (LA150_67 == COMMA) ) { s = 109; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_67 == AT) ) { s = 8; } else if ( (LA150_67 == LSBRAQUET || LA150_67 == QMARK || ((LA150_67 >= SEMI) && (LA150_67 <= SLASH))) ) { s = 6; } SEEK(index150_67); if ( s>=0 ) { return s; } } break; case 30: { ANTLR3_UINT32 LA150_77; ANTLR3_MARKER index150_77; LA150_77 = LA(1); index150_77 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) && (LA150_77 == AT) ) { s = 8; } else if ( (LA150_77 == COMMON_CHAR || LA150_77 == HEX_CHAR) ) { s = 73; } else if ( (LA150_77 == DIGIT) ) { s = 74; } else if ( (LA150_77 == DASH || LA150_77 == DOT || LA150_77 == EMARK || LA150_77 == LPAREN || LA150_77 == RPAREN || ((LA150_77 >= SQUOTE) && (LA150_77 <= USCORE))) ) { s = 75; } else if ( (LA150_77 == PERCENT) ) { s = 76; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_77 == AND) ) { s = 29; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_77 == EQUAL) ) { s = 30; } else if ( (LA150_77 == PLUS) ) { s = 77; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_77 == DOLLARD) ) { s = 32; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_77 == COMMA) ) { s = 33; } else if ( (LA150_77 == BQUOTE || LA150_77 == COLON || LA150_77 == CRLF || LA150_77 == LAQUOT || LA150_77 == SP) ) { s = 6; } SEEK(index150_77); if ( s>=0 ) { return s; } } break; case 31: { ANTLR3_UINT32 LA150_101; ANTLR3_MARKER index150_101; LA150_101 = LA(1); index150_101 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) ) { s = 33; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index150_101); if ( s>=0 ) { return s; } } break; case 32: { ANTLR3_UINT32 LA150_87; ANTLR3_MARKER index150_87; LA150_87 = LA(1); index150_87 = INDEX(); REWINDLAST(); s = -1; if ( (LA150_87 == COLON) ) { s = 86; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_87 == AT) ) { s = 8; } else if ( (LA150_87 == COMMON_CHAR || LA150_87 == HEX_CHAR) ) { s = 87; } else if ( (LA150_87 == DIGIT) ) { s = 88; } else if ( (LA150_87 == DASH || LA150_87 == DOT || LA150_87 == EMARK || LA150_87 == LPAREN || LA150_87 == RPAREN || ((LA150_87 >= SQUOTE) && (LA150_87 <= USCORE))) ) { s = 89; } else if ( (LA150_87 == PERCENT) ) { s = 90; } else if ( (LA150_87 == AND) ) { s = 92; } else if ( (LA150_87 == SEMI) ) { s = 18; } else if ( (LA150_87 == EOF || LA150_87 == CRLF || LA150_87 == LSBRAQUET || LA150_87 == RSBRAQUET || LA150_87 == SP) ) { s = 6; } else if ( (LA150_87 == COMMA) ) { s = 19; } else if ( (LA150_87 == DOLLARD || ((LA150_87 >= PLUS) && (LA150_87 <= QMARK)) || LA150_87 == SLASH) ) { s = 91; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_87 == EQUAL) ) { s = 5; } SEEK(index150_87); if ( s>=0 ) { return s; } } break; case 33: { ANTLR3_UINT32 LA150_145; ANTLR3_MARKER index150_145; LA150_145 = LA(1); index150_145 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) && (LA150_145 == COLON) ) { s = 7; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_145 == AT) ) { s = 8; } else if ( (LA150_145 == COMMON_CHAR || LA150_145 == HEX_CHAR) ) { s = 94; } else if ( (LA150_145 == DIGIT) ) { s = 95; } else if ( (LA150_145 == DASH || LA150_145 == DOT || LA150_145 == EMARK || LA150_145 == LPAREN || LA150_145 == RPAREN || ((LA150_145 >= SQUOTE) && (LA150_145 <= USCORE))) ) { s = 96; } else if ( (LA150_145 == PERCENT) ) { s = 97; } else if ( (LA150_145 == COMMA) ) { s = 19; } else if ( (LA150_145 == EOF || LA150_145 == BQUOTE || LA150_145 == CRLF || LA150_145 == SP) ) { s = 6; } else if ( (LA150_145 == SEMI) ) { s = 18; } else if ( (LA150_145 == PLUS) ) { s = 98; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_145 == AND || LA150_145 == DOLLARD || LA150_145 == EQUAL || LA150_145 == QMARK || LA150_145 == SLASH) ) { s = 5; } SEEK(index150_145); if ( s>=0 ) { return s; } } break; case 34: { ANTLR3_UINT32 LA150_42; ANTLR3_MARKER index150_42; LA150_42 = LA(1); index150_42 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) && (LA150_42 == COLON) ) { s = 7; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_42 == AT) ) { s = 8; } else if ( (LA150_42 == COMMON_CHAR || LA150_42 == HEX_CHAR) ) { s = 40; } else if ( (LA150_42 == DIGIT) ) { s = 41; } else if ( (LA150_42 == DASH || LA150_42 == DOT || LA150_42 == EMARK || LA150_42 == LPAREN || LA150_42 == RPAREN || ((LA150_42 >= SQUOTE) && (LA150_42 <= USCORE))) ) { s = 42; } else if ( (LA150_42 == PERCENT) ) { s = 43; } else if ( (LA150_42 == EQUAL) ) { s = 64; } else if ( (LA150_42 == EOF || LA150_42 == BQUOTE || LA150_42 == CRLF || LA150_42 == SP) ) { s = 6; } else if ( (LA150_42 == COMMA) ) { s = 19; } else if ( (LA150_42 == SEMI) ) { s = 18; } else if ( (LA150_42 == PLUS) ) { s = 44; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_42 == AND || LA150_42 == DOLLARD || LA150_42 == QMARK || LA150_42 == SLASH) ) { s = 5; } SEEK(index150_42); if ( s>=0 ) { return s; } } break; case 35: { ANTLR3_UINT32 LA150_71; ANTLR3_MARKER index150_71; LA150_71 = LA(1); index150_71 = INDEX(); REWINDLAST(); s = -1; if ( (LA150_71 == DIGIT) ) { s = 72; } else if ( (LA150_71 == COLON) ) { s = 15; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_71 == AT) ) { s = 8; } else if ( (LA150_71 == COMMON_CHAR || LA150_71 == HEX_CHAR) ) { s = 1; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_71 == DASH || LA150_71 == DOT || LA150_71 == EMARK || LA150_71 == LPAREN || LA150_71 == RPAREN || ((LA150_71 >= SQUOTE) && (LA150_71 <= USCORE))) ) { s = 3; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_71 == PERCENT) ) { s = 4; } else if ( (LA150_71 == QMARK) ) { s = 16; } else if ( (LA150_71 == SEMI) ) { s = 18; } else if ( (LA150_71 == EOF || LA150_71 == CRLF || LA150_71 == SP) ) { s = 6; } else if ( (LA150_71 == COMMA) ) { s = 19; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_71 == AND || LA150_71 == DOLLARD || LA150_71 == EQUAL || LA150_71 == PLUS || LA150_71 == SLASH) ) { s = 5; } SEEK(index150_71); if ( s>=0 ) { return s; } } break; case 36: { ANTLR3_UINT32 LA150_98; ANTLR3_MARKER index150_98; LA150_98 = LA(1); index150_98 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) && (LA150_98 == COLON) ) { s = 7; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_98 == AT) ) { s = 8; } else if ( (LA150_98 == COMMON_CHAR || LA150_98 == HEX_CHAR) ) { s = 94; } else if ( (LA150_98 == DIGIT) ) { s = 95; } else if ( (LA150_98 == DASH || LA150_98 == DOT || LA150_98 == EMARK || LA150_98 == LPAREN || LA150_98 == RPAREN || ((LA150_98 >= SQUOTE) && (LA150_98 <= USCORE))) ) { s = 96; } else if ( (LA150_98 == PERCENT) ) { s = 97; } else if ( (LA150_98 == COMMA) ) { s = 19; } else if ( (LA150_98 == EOF || LA150_98 == BQUOTE || LA150_98 == CRLF || LA150_98 == SP) ) { s = 6; } else if ( (LA150_98 == SEMI) ) { s = 18; } else if ( (LA150_98 == PLUS) ) { s = 98; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_98 == AND || LA150_98 == DOLLARD || LA150_98 == EQUAL || LA150_98 == QMARK || LA150_98 == SLASH) ) { s = 5; } SEEK(index150_98); if ( s>=0 ) { return s; } } break; case 37: { ANTLR3_UINT32 LA150_36; ANTLR3_MARKER index150_36; LA150_36 = LA(1); index150_36 = INDEX(); REWINDLAST(); s = -1; if ( (LA150_36 == COLON) ) { s = 34; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_36 == AT) ) { s = 8; } else if ( (LA150_36 == COMMON_CHAR || LA150_36 == HEX_CHAR) ) { s = 35; } else if ( (LA150_36 == DIGIT) ) { s = 36; } else if ( (LA150_36 == DASH || LA150_36 == DOT || LA150_36 == EMARK || LA150_36 == LPAREN || LA150_36 == RPAREN || ((LA150_36 >= SQUOTE) && (LA150_36 <= USCORE))) ) { s = 37; } else if ( (LA150_36 == PERCENT) ) { s = 38; } else if ( (LA150_36 == EQUAL) ) { s = 62; } else if ( (LA150_36 == DOLLARD || ((LA150_36 >= PLUS) && (LA150_36 <= QMARK)) || LA150_36 == SLASH) ) { s = 39; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_36 == AND || LA150_36 == COMMA || LA150_36 == SEMI) ) { s = 5; } else if ( (LA150_36 == LSBRAQUET || LA150_36 == RSBRAQUET) ) { s = 6; } SEEK(index150_36); if ( s>=0 ) { return s; } } break; case 38: { ANTLR3_UINT32 LA150_127; ANTLR3_MARKER index150_127; LA150_127 = LA(1); index150_127 = INDEX(); REWINDLAST(); s = -1; if ( (LA150_127 == COLON) ) { s = 125; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_127 == AT) ) { s = 8; } else if ( (LA150_127 == COMMON_CHAR || LA150_127 == HEX_CHAR) ) { s = 126; } else if ( (LA150_127 == DIGIT) ) { s = 127; } else if ( (LA150_127 == DASH || LA150_127 == DOT || LA150_127 == EMARK || LA150_127 == LPAREN || LA150_127 == RPAREN || ((LA150_127 >= SQUOTE) && (LA150_127 <= USCORE))) ) { s = 128; } else if ( (LA150_127 == PERCENT) ) { s = 129; } else if ( (LA150_127 == EQUAL) ) { s = 143; } else if ( (LA150_127 == DOLLARD || ((LA150_127 >= PLUS) && (LA150_127 <= QMARK)) || LA150_127 == SLASH) ) { s = 130; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_127 == AND || LA150_127 == COMMA || LA150_127 == SEMI) ) { s = 5; } else if ( (LA150_127 == LSBRAQUET || LA150_127 == RSBRAQUET) ) { s = 6; } SEEK(index150_127); if ( s>=0 ) { return s; } } break; case 39: { ANTLR3_UINT32 LA150_111; ANTLR3_MARKER index150_111; LA150_111 = LA(1); index150_111 = INDEX(); REWINDLAST(); s = -1; if ( (LA150_111 == COLON) ) { s = 67; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_111 == AT) ) { s = 8; } else if ( (LA150_111 == COMMON_CHAR || LA150_111 == HEX_CHAR) ) { s = 45; } else if ( (LA150_111 == DIGIT) ) { s = 46; } else if ( (LA150_111 == DASH || LA150_111 == DOT || LA150_111 == EMARK || LA150_111 == LPAREN || LA150_111 == RPAREN || ((LA150_111 >= SQUOTE) && (LA150_111 <= USCORE))) ) { s = 47; } else if ( (LA150_111 == PERCENT) ) { s = 48; } else if ( (LA150_111 == PLUS) ) { s = 49; } else if ( (LA150_111 == BQUOTE || LA150_111 == CRLF || LA150_111 == LAQUOT || LA150_111 == SP) ) { s = 6; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_111 == AND || LA150_111 == COMMA || LA150_111 == DOLLARD || LA150_111 == EQUAL || LA150_111 == QMARK || ((LA150_111 >= SEMI) && (LA150_111 <= SLASH))) ) { s = 5; } SEEK(index150_111); if ( s>=0 ) { return s; } } break; case 40: { ANTLR3_UINT32 LA150_23; ANTLR3_MARKER index150_23; LA150_23 = LA(1); index150_23 = INDEX(); REWINDLAST(); s = -1; if ( (LA150_23 == DIGIT) ) { s = 24; } else if ( (LA150_23 == COLON) ) { s = 15; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_23 == AT) ) { s = 8; } else if ( (LA150_23 == COMMON_CHAR || LA150_23 == HEX_CHAR) ) { s = 1; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_23 == DASH || LA150_23 == DOT || LA150_23 == EMARK || LA150_23 == LPAREN || LA150_23 == RPAREN || ((LA150_23 >= SQUOTE) && (LA150_23 <= USCORE))) ) { s = 3; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_23 == PERCENT) ) { s = 4; } else if ( (LA150_23 == QMARK) ) { s = 16; } else if ( (LA150_23 == SEMI) ) { s = 18; } else if ( (LA150_23 == EOF || LA150_23 == CRLF || LA150_23 == SP) ) { s = 6; } else if ( (LA150_23 == COMMA) ) { s = 19; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_23 == AND || LA150_23 == DOLLARD || LA150_23 == EQUAL || LA150_23 == PLUS || LA150_23 == SLASH) ) { s = 5; } SEEK(index150_23); if ( s>=0 ) { return s; } } break; case 41: { ANTLR3_UINT32 LA150_143; ANTLR3_MARKER index150_143; LA150_143 = LA(1); index150_143 = INDEX(); REWINDLAST(); s = -1; if ( (LA150_143 == COLON) ) { s = 156; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_143 == AT) ) { s = 8; } else if ( (LA150_143 == COMMON_CHAR || LA150_143 == HEX_CHAR) ) { s = 157; } else if ( (LA150_143 == DIGIT) ) { s = 158; } else if ( (LA150_143 == DASH || LA150_143 == DOT || LA150_143 == EMARK || LA150_143 == LPAREN || LA150_143 == RPAREN || ((LA150_143 >= SQUOTE) && (LA150_143 <= USCORE))) ) { s = 159; } else if ( (LA150_143 == PERCENT) ) { s = 160; } else if ( (LA150_143 == DOLLARD || ((LA150_143 >= PLUS) && (LA150_143 <= QMARK)) || LA150_143 == SLASH) ) { s = 161; } else if ( (LA150_143 == SEMI) ) { s = 18; } else if ( (LA150_143 == EOF || LA150_143 == CRLF || LA150_143 == LSBRAQUET || LA150_143 == RSBRAQUET || LA150_143 == SP) ) { s = 6; } else if ( (LA150_143 == COMMA) ) { s = 19; } else if ( (LA150_143 == AND) ) { s = 92; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_143 == EQUAL) ) { s = 5; } SEEK(index150_143); if ( s>=0 ) { return s; } } break; case 42: { ANTLR3_UINT32 LA150_59; ANTLR3_MARKER index150_59; LA150_59 = LA(1); index150_59 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) && (LA150_59 == AT) ) { s = 8; } else if ( (LA150_59 == COMMON_CHAR || LA150_59 == HEX_CHAR) ) { s = 79; } else if ( (LA150_59 == DIGIT) ) { s = 80; } else if ( (LA150_59 == DASH || LA150_59 == DOT || LA150_59 == EMARK || LA150_59 == LPAREN || LA150_59 == RPAREN || ((LA150_59 >= SQUOTE) && (LA150_59 <= USCORE))) ) { s = 81; } else if ( (LA150_59 == PERCENT) ) { s = 82; } else if ( (LA150_59 == AND) ) { s = 83; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_59 == EQUAL) ) { s = 30; } else if ( (LA150_59 == PLUS) ) { s = 84; } else if ( (LA150_59 == DOLLARD) ) { s = 85; } else if ( (LA150_59 == COMMA) ) { s = 54; } else if ( (LA150_59 == EOF || LA150_59 == COLON || LA150_59 == CRLF || LA150_59 == LSBRAQUET || LA150_59 == QMARK || ((LA150_59 >= RSBRAQUET) && (LA150_59 <= SP))) ) { s = 6; } SEEK(index150_59); if ( s>=0 ) { return s; } } break; case 43: { ANTLR3_UINT32 LA150_135; ANTLR3_MARKER index150_135; LA150_135 = LA(1); index150_135 = INDEX(); REWINDLAST(); s = -1; if ( (LA150_135 == DIGIT) ) { s = 136; } else if ( (LA150_135 == COLON) ) { s = 15; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_135 == AT) ) { s = 8; } else if ( (LA150_135 == COMMON_CHAR || LA150_135 == HEX_CHAR) ) { s = 1; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_135 == DASH || LA150_135 == DOT || LA150_135 == EMARK || LA150_135 == LPAREN || LA150_135 == RPAREN || ((LA150_135 >= SQUOTE) && (LA150_135 <= USCORE))) ) { s = 3; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_135 == PERCENT) ) { s = 4; } else if ( (LA150_135 == QMARK) ) { s = 16; } else if ( (LA150_135 == SEMI) ) { s = 18; } else if ( (LA150_135 == EOF || LA150_135 == CRLF || LA150_135 == SP) ) { s = 6; } else if ( (LA150_135 == COMMA) ) { s = 19; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_135 == AND || LA150_135 == DOLLARD || LA150_135 == EQUAL || LA150_135 == PLUS || LA150_135 == SLASH) ) { s = 5; } SEEK(index150_135); if ( s>=0 ) { return s; } } break; case 44: { ANTLR3_UINT32 LA150_9; ANTLR3_MARKER index150_9; LA150_9 = LA(1); index150_9 = INDEX(); REWINDLAST(); s = -1; if ( (LA150_9 == COLON) ) { s = 15; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_9 == AT) ) { s = 8; } else if ( (LA150_9 == COMMON_CHAR || LA150_9 == HEX_CHAR) ) { s = 9; } else if ( (LA150_9 == DIGIT) ) { s = 10; } else if ( (LA150_9 == DASH) ) { s = 12; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_9 == PERCENT) ) { s = 4; } else if ( (LA150_9 == QMARK) ) { s = 16; } else if ( (LA150_9 == DOT) ) { s = 17; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_9 == EMARK || LA150_9 == LPAREN || LA150_9 == RPAREN || ((LA150_9 >= SQUOTE) && (LA150_9 <= USCORE))) ) { s = 3; } else if ( (LA150_9 == SEMI) ) { s = 18; } else if ( (LA150_9 == EOF || LA150_9 == CRLF || LA150_9 == SP) ) { s = 6; } else if ( (LA150_9 == COMMA) ) { s = 19; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_9 == AND || LA150_9 == DOLLARD || LA150_9 == EQUAL || LA150_9 == PLUS || LA150_9 == SLASH) ) { s = 5; } SEEK(index150_9); if ( s>=0 ) { return s; } } break; case 45: { ANTLR3_UINT32 LA150_89; ANTLR3_MARKER index150_89; LA150_89 = LA(1); index150_89 = INDEX(); REWINDLAST(); s = -1; if ( (LA150_89 == COLON) ) { s = 86; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_89 == AT) ) { s = 8; } else if ( (LA150_89 == COMMON_CHAR || LA150_89 == HEX_CHAR) ) { s = 87; } else if ( (LA150_89 == DIGIT) ) { s = 88; } else if ( (LA150_89 == DASH || LA150_89 == DOT || LA150_89 == EMARK || LA150_89 == LPAREN || LA150_89 == RPAREN || ((LA150_89 >= SQUOTE) && (LA150_89 <= USCORE))) ) { s = 89; } else if ( (LA150_89 == PERCENT) ) { s = 90; } else if ( (LA150_89 == AND) ) { s = 92; } else if ( (LA150_89 == SEMI) ) { s = 18; } else if ( (LA150_89 == EOF || LA150_89 == CRLF || LA150_89 == LSBRAQUET || LA150_89 == RSBRAQUET || LA150_89 == SP) ) { s = 6; } else if ( (LA150_89 == COMMA) ) { s = 19; } else if ( (LA150_89 == DOLLARD || ((LA150_89 >= PLUS) && (LA150_89 <= QMARK)) || LA150_89 == SLASH) ) { s = 91; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_89 == EQUAL) ) { s = 5; } SEEK(index150_89); if ( s>=0 ) { return s; } } break; case 46: { ANTLR3_UINT32 LA150_20; ANTLR3_MARKER index150_20; LA150_20 = LA(1); index150_20 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) && (LA150_20 == COLON) ) { s = 7; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_20 == AT) ) { s = 8; } else if ( (LA150_20 == COMMON_CHAR || LA150_20 == HEX_CHAR) ) { s = 9; } else if ( (LA150_20 == DIGIT) ) { s = 10; } else if ( (LA150_20 == DASH) ) { s = 12; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_20 == PERCENT) ) { s = 4; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_20 == AND || LA150_20 == COMMA || LA150_20 == DOLLARD || LA150_20 == EQUAL || ((LA150_20 >= PLUS) && (LA150_20 <= QMARK)) || ((LA150_20 >= SEMI) && (LA150_20 <= SLASH))) ) { s = 5; } else if ( (LA150_20 == DOT) ) { s = 11; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_20 == EMARK || LA150_20 == LPAREN || LA150_20 == RPAREN || ((LA150_20 >= SQUOTE) && (LA150_20 <= USCORE))) ) { s = 3; } SEEK(index150_20); if ( s>=0 ) { return s; } } break; case 47: { ANTLR3_UINT32 LA150_84; ANTLR3_MARKER index150_84; LA150_84 = LA(1); index150_84 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) && (LA150_84 == AT) ) { s = 8; } else if ( (LA150_84 == COMMON_CHAR || LA150_84 == HEX_CHAR) ) { s = 79; } else if ( (LA150_84 == DIGIT) ) { s = 80; } else if ( (LA150_84 == DASH || LA150_84 == DOT || LA150_84 == EMARK || LA150_84 == LPAREN || LA150_84 == RPAREN || ((LA150_84 >= SQUOTE) && (LA150_84 <= USCORE))) ) { s = 81; } else if ( (LA150_84 == PERCENT) ) { s = 82; } else if ( (LA150_84 == AND) ) { s = 83; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_84 == EQUAL) ) { s = 30; } else if ( (LA150_84 == PLUS) ) { s = 84; } else if ( (LA150_84 == DOLLARD) ) { s = 85; } else if ( (LA150_84 == COMMA) ) { s = 54; } else if ( (LA150_84 == EOF || LA150_84 == COLON || LA150_84 == CRLF || LA150_84 == LSBRAQUET || LA150_84 == QMARK || ((LA150_84 >= RSBRAQUET) && (LA150_84 <= SP))) ) { s = 6; } SEEK(index150_84); if ( s>=0 ) { return s; } } break; case 48: { ANTLR3_UINT32 LA150_147; ANTLR3_MARKER index150_147; LA150_147 = LA(1); index150_147 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) ) { s = 33; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index150_147); if ( s>=0 ) { return s; } } break; case 49: { ANTLR3_UINT32 LA150_80; ANTLR3_MARKER index150_80; LA150_80 = LA(1); index150_80 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) && (LA150_80 == AT) ) { s = 8; } else if ( (LA150_80 == COMMON_CHAR || LA150_80 == HEX_CHAR) ) { s = 79; } else if ( (LA150_80 == DIGIT) ) { s = 80; } else if ( (LA150_80 == DASH || LA150_80 == DOT || LA150_80 == EMARK || LA150_80 == LPAREN || LA150_80 == RPAREN || ((LA150_80 >= SQUOTE) && (LA150_80 <= USCORE))) ) { s = 81; } else if ( (LA150_80 == PERCENT) ) { s = 82; } else if ( (LA150_80 == AND) ) { s = 83; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_80 == EQUAL) ) { s = 30; } else if ( (LA150_80 == PLUS) ) { s = 84; } else if ( (LA150_80 == DOLLARD) ) { s = 85; } else if ( (LA150_80 == COMMA) ) { s = 54; } else if ( (LA150_80 == EOF || LA150_80 == COLON || LA150_80 == CRLF || LA150_80 == LSBRAQUET || LA150_80 == QMARK || ((LA150_80 >= RSBRAQUET) && (LA150_80 <= SP))) ) { s = 6; } SEEK(index150_80); if ( s>=0 ) { return s; } } break; case 50: { ANTLR3_UINT32 LA150_85; ANTLR3_MARKER index150_85; LA150_85 = LA(1); index150_85 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) && (LA150_85 == AT) ) { s = 8; } else if ( (LA150_85 == COMMON_CHAR || LA150_85 == HEX_CHAR) ) { s = 79; } else if ( (LA150_85 == DIGIT) ) { s = 80; } else if ( (LA150_85 == DASH || LA150_85 == DOT || LA150_85 == EMARK || LA150_85 == LPAREN || LA150_85 == RPAREN || ((LA150_85 >= SQUOTE) && (LA150_85 <= USCORE))) ) { s = 81; } else if ( (LA150_85 == PERCENT) ) { s = 82; } else if ( (LA150_85 == AND) ) { s = 83; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_85 == EQUAL) ) { s = 30; } else if ( (LA150_85 == PLUS) ) { s = 84; } else if ( (LA150_85 == DOLLARD) ) { s = 85; } else if ( (LA150_85 == COMMA) ) { s = 54; } else if ( (LA150_85 == EOF || LA150_85 == COLON || LA150_85 == CRLF || LA150_85 == LSBRAQUET || LA150_85 == QMARK || ((LA150_85 >= RSBRAQUET) && (LA150_85 <= SP))) ) { s = 6; } SEEK(index150_85); if ( s>=0 ) { return s; } } break; case 51: { ANTLR3_UINT32 LA150_93; ANTLR3_MARKER index150_93; LA150_93 = LA(1); index150_93 = INDEX(); REWINDLAST(); s = -1; if ( (LA150_93 == COLON) ) { s = 34; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_93 == AT) ) { s = 8; } else if ( (LA150_93 == COMMON_CHAR || LA150_93 == HEX_CHAR) ) { s = 35; } else if ( (LA150_93 == DIGIT) ) { s = 36; } else if ( (LA150_93 == DASH || LA150_93 == DOT || LA150_93 == EMARK || LA150_93 == LPAREN || LA150_93 == RPAREN || ((LA150_93 >= SQUOTE) && (LA150_93 <= USCORE))) ) { s = 37; } else if ( (LA150_93 == PERCENT) ) { s = 38; } else if ( (LA150_93 == EQUAL) ) { s = 62; } else if ( (LA150_93 == DOLLARD || ((LA150_93 >= PLUS) && (LA150_93 <= QMARK)) || LA150_93 == SLASH) ) { s = 39; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_93 == AND || LA150_93 == COMMA || LA150_93 == SEMI) ) { s = 5; } else if ( (LA150_93 == LSBRAQUET || LA150_93 == RSBRAQUET) ) { s = 6; } SEEK(index150_93); if ( s>=0 ) { return s; } } break; case 52: { ANTLR3_UINT32 LA150_162; ANTLR3_MARKER index150_162; LA150_162 = LA(1); index150_162 = INDEX(); REWINDLAST(); s = -1; if ( (LA150_162 == COLON) ) { s = 125; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_162 == AT) ) { s = 8; } else if ( (LA150_162 == COMMON_CHAR || LA150_162 == HEX_CHAR) ) { s = 126; } else if ( (LA150_162 == DIGIT) ) { s = 127; } else if ( (LA150_162 == DASH || LA150_162 == DOT || LA150_162 == EMARK || LA150_162 == LPAREN || LA150_162 == RPAREN || ((LA150_162 >= SQUOTE) && (LA150_162 <= USCORE))) ) { s = 128; } else if ( (LA150_162 == PERCENT) ) { s = 129; } else if ( (LA150_162 == EQUAL) ) { s = 143; } else if ( (LA150_162 == DOLLARD || ((LA150_162 >= PLUS) && (LA150_162 <= QMARK)) || LA150_162 == SLASH) ) { s = 130; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_162 == AND || LA150_162 == COMMA || LA150_162 == SEMI) ) { s = 5; } else if ( (LA150_162 == LSBRAQUET || LA150_162 == RSBRAQUET) ) { s = 6; } SEEK(index150_162); if ( s>=0 ) { return s; } } break; case 53: { ANTLR3_UINT32 LA150_151; ANTLR3_MARKER index150_151; LA150_151 = LA(1); index150_151 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) && (LA150_151 == AT) ) { s = 8; } else if ( (LA150_151 == COMMON_CHAR || LA150_151 == HEX_CHAR) ) { s = 149; } else if ( (LA150_151 == DIGIT) ) { s = 150; } else if ( (LA150_151 == DASH || LA150_151 == DOT || LA150_151 == EMARK || LA150_151 == LPAREN || LA150_151 == RPAREN || ((LA150_151 >= SQUOTE) && (LA150_151 <= USCORE))) ) { s = 151; } else if ( (LA150_151 == PERCENT) ) { s = 152; } else if ( (LA150_151 == AND) ) { s = 83; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_151 == EQUAL) ) { s = 30; } else if ( (LA150_151 == PLUS) ) { s = 153; } else if ( (LA150_151 == DOLLARD) ) { s = 154; } else if ( (LA150_151 == COMMA) ) { s = 54; } else if ( (LA150_151 == EOF || LA150_151 == COLON || LA150_151 == CRLF || LA150_151 == LSBRAQUET || LA150_151 == QMARK || ((LA150_151 >= RSBRAQUET) && (LA150_151 <= SP))) ) { s = 6; } SEEK(index150_151); if ( s>=0 ) { return s; } } break; case 54: { ANTLR3_UINT32 LA150_149; ANTLR3_MARKER index150_149; LA150_149 = LA(1); index150_149 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) && (LA150_149 == AT) ) { s = 8; } else if ( (LA150_149 == COMMON_CHAR || LA150_149 == HEX_CHAR) ) { s = 149; } else if ( (LA150_149 == DIGIT) ) { s = 150; } else if ( (LA150_149 == DASH || LA150_149 == DOT || LA150_149 == EMARK || LA150_149 == LPAREN || LA150_149 == RPAREN || ((LA150_149 >= SQUOTE) && (LA150_149 <= USCORE))) ) { s = 151; } else if ( (LA150_149 == PERCENT) ) { s = 152; } else if ( (LA150_149 == AND) ) { s = 83; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_149 == EQUAL) ) { s = 30; } else if ( (LA150_149 == PLUS) ) { s = 153; } else if ( (LA150_149 == DOLLARD) ) { s = 154; } else if ( (LA150_149 == COMMA) ) { s = 54; } else if ( (LA150_149 == EOF || LA150_149 == COLON || LA150_149 == CRLF || LA150_149 == LSBRAQUET || LA150_149 == QMARK || ((LA150_149 >= RSBRAQUET) && (LA150_149 <= SP))) ) { s = 6; } SEEK(index150_149); if ( s>=0 ) { return s; } } break; case 55: { ANTLR3_UINT32 LA150_45; ANTLR3_MARKER index150_45; LA150_45 = LA(1); index150_45 = INDEX(); REWINDLAST(); s = -1; if ( (LA150_45 == COLON) ) { s = 67; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_45 == AT) ) { s = 8; } else if ( (LA150_45 == COMMON_CHAR || LA150_45 == HEX_CHAR) ) { s = 45; } else if ( (LA150_45 == DIGIT) ) { s = 46; } else if ( (LA150_45 == DASH || LA150_45 == DOT || LA150_45 == EMARK || LA150_45 == LPAREN || LA150_45 == RPAREN || ((LA150_45 >= SQUOTE) && (LA150_45 <= USCORE))) ) { s = 47; } else if ( (LA150_45 == PERCENT) ) { s = 48; } else if ( (LA150_45 == PLUS) ) { s = 49; } else if ( (LA150_45 == BQUOTE || LA150_45 == CRLF || LA150_45 == LAQUOT || LA150_45 == SP) ) { s = 6; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_45 == AND || LA150_45 == COMMA || LA150_45 == DOLLARD || LA150_45 == EQUAL || LA150_45 == QMARK || ((LA150_45 >= SEMI) && (LA150_45 <= SLASH))) ) { s = 5; } SEEK(index150_45); if ( s>=0 ) { return s; } } break; case 56: { ANTLR3_UINT32 LA150_146; ANTLR3_MARKER index150_146; LA150_146 = LA(1); index150_146 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) && (LA150_146 == COLON) ) { s = 7; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_146 == AT) ) { s = 8; } else if ( (LA150_146 == COMMON_CHAR || LA150_146 == HEX_CHAR) ) { s = 94; } else if ( (LA150_146 == DIGIT) ) { s = 95; } else if ( (LA150_146 == DASH || LA150_146 == DOT || LA150_146 == EMARK || LA150_146 == LPAREN || LA150_146 == RPAREN || ((LA150_146 >= SQUOTE) && (LA150_146 <= USCORE))) ) { s = 96; } else if ( (LA150_146 == PERCENT) ) { s = 97; } else if ( (LA150_146 == COMMA) ) { s = 19; } else if ( (LA150_146 == EOF || LA150_146 == BQUOTE || LA150_146 == CRLF || LA150_146 == SP) ) { s = 6; } else if ( (LA150_146 == SEMI) ) { s = 18; } else if ( (LA150_146 == PLUS) ) { s = 98; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_146 == AND || LA150_146 == DOLLARD || LA150_146 == EQUAL || LA150_146 == QMARK || LA150_146 == SLASH) ) { s = 5; } SEEK(index150_146); if ( s>=0 ) { return s; } } break; case 57: { ANTLR3_UINT32 LA150_51; ANTLR3_MARKER index150_51; LA150_51 = LA(1); index150_51 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) && (LA150_51 == COLON) ) { s = 7; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_51 == AT) ) { s = 8; } else if ( (LA150_51 == COMMON_CHAR || LA150_51 == HEX_CHAR) ) { s = 50; } else if ( (LA150_51 == DIGIT) ) { s = 51; } else if ( (LA150_51 == DOT) ) { s = 11; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_51 == PERCENT) ) { s = 4; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_51 == AND || LA150_51 == COMMA || LA150_51 == DOLLARD || LA150_51 == EQUAL || ((LA150_51 >= PLUS) && (LA150_51 <= QMARK)) || ((LA150_51 >= SEMI) && (LA150_51 <= SLASH))) ) { s = 5; } else if ( (LA150_51 == DASH) ) { s = 21; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_51 == EMARK || LA150_51 == LPAREN || LA150_51 == RPAREN || ((LA150_51 >= SQUOTE) && (LA150_51 <= USCORE))) ) { s = 3; } SEEK(index150_51); if ( s>=0 ) { return s; } } break; case 58: { ANTLR3_UINT32 LA150_47; ANTLR3_MARKER index150_47; LA150_47 = LA(1); index150_47 = INDEX(); REWINDLAST(); s = -1; if ( (LA150_47 == COLON) ) { s = 67; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_47 == AT) ) { s = 8; } else if ( (LA150_47 == COMMON_CHAR || LA150_47 == HEX_CHAR) ) { s = 45; } else if ( (LA150_47 == DIGIT) ) { s = 46; } else if ( (LA150_47 == DASH || LA150_47 == DOT || LA150_47 == EMARK || LA150_47 == LPAREN || LA150_47 == RPAREN || ((LA150_47 >= SQUOTE) && (LA150_47 <= USCORE))) ) { s = 47; } else if ( (LA150_47 == PERCENT) ) { s = 48; } else if ( (LA150_47 == PLUS) ) { s = 49; } else if ( (LA150_47 == BQUOTE || LA150_47 == CRLF || LA150_47 == LAQUOT || LA150_47 == SP) ) { s = 6; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_47 == AND || LA150_47 == COMMA || LA150_47 == DOLLARD || LA150_47 == EQUAL || LA150_47 == QMARK || ((LA150_47 >= SEMI) && (LA150_47 <= SLASH))) ) { s = 5; } SEEK(index150_47); if ( s>=0 ) { return s; } } break; case 59: { ANTLR3_UINT32 LA150_44; ANTLR3_MARKER index150_44; LA150_44 = LA(1); index150_44 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) && (LA150_44 == COLON) ) { s = 7; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_44 == AT) ) { s = 8; } else if ( (LA150_44 == COMMON_CHAR || LA150_44 == HEX_CHAR) ) { s = 40; } else if ( (LA150_44 == DIGIT) ) { s = 41; } else if ( (LA150_44 == DASH || LA150_44 == DOT || LA150_44 == EMARK || LA150_44 == LPAREN || LA150_44 == RPAREN || ((LA150_44 >= SQUOTE) && (LA150_44 <= USCORE))) ) { s = 42; } else if ( (LA150_44 == PERCENT) ) { s = 43; } else if ( (LA150_44 == EQUAL) ) { s = 64; } else if ( (LA150_44 == EOF || LA150_44 == BQUOTE || LA150_44 == CRLF || LA150_44 == SP) ) { s = 6; } else if ( (LA150_44 == COMMA) ) { s = 19; } else if ( (LA150_44 == SEMI) ) { s = 18; } else if ( (LA150_44 == PLUS) ) { s = 44; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_44 == AND || LA150_44 == DOLLARD || LA150_44 == QMARK || LA150_44 == SLASH) ) { s = 5; } SEEK(index150_44); if ( s>=0 ) { return s; } } break; case 60: { ANTLR3_UINT32 LA150_139; ANTLR3_MARKER index150_139; LA150_139 = LA(1); index150_139 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) && (LA150_139 == AT) ) { s = 8; } else if ( (LA150_139 == COMMON_CHAR || LA150_139 == HEX_CHAR) ) { s = 79; } else if ( (LA150_139 == DIGIT) ) { s = 80; } else if ( (LA150_139 == DASH || LA150_139 == DOT || LA150_139 == EMARK || LA150_139 == LPAREN || LA150_139 == RPAREN || ((LA150_139 >= SQUOTE) && (LA150_139 <= USCORE))) ) { s = 81; } else if ( (LA150_139 == PERCENT) ) { s = 82; } else if ( (LA150_139 == AND) ) { s = 83; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_139 == EQUAL) ) { s = 30; } else if ( (LA150_139 == PLUS) ) { s = 84; } else if ( (LA150_139 == DOLLARD) ) { s = 85; } else if ( (LA150_139 == COMMA) ) { s = 54; } else if ( (LA150_139 == EOF || LA150_139 == COLON || LA150_139 == CRLF || LA150_139 == LSBRAQUET || LA150_139 == QMARK || ((LA150_139 >= RSBRAQUET) && (LA150_139 <= SP))) ) { s = 6; } SEEK(index150_139); if ( s>=0 ) { return s; } } break; case 61: { ANTLR3_UINT32 LA150_105; ANTLR3_MARKER index150_105; LA150_105 = LA(1); index150_105 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) ) { s = 33; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index150_105); if ( s>=0 ) { return s; } } break; case 62: { ANTLR3_UINT32 LA150_161; ANTLR3_MARKER index150_161; LA150_161 = LA(1); index150_161 = INDEX(); REWINDLAST(); s = -1; if ( (LA150_161 == COLON) ) { s = 156; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_161 == AT) ) { s = 8; } else if ( (LA150_161 == COMMON_CHAR || LA150_161 == HEX_CHAR) ) { s = 157; } else if ( (LA150_161 == DIGIT) ) { s = 158; } else if ( (LA150_161 == DASH || LA150_161 == DOT || LA150_161 == EMARK || LA150_161 == LPAREN || LA150_161 == RPAREN || ((LA150_161 >= SQUOTE) && (LA150_161 <= USCORE))) ) { s = 159; } else if ( (LA150_161 == PERCENT) ) { s = 160; } else if ( (LA150_161 == SEMI) ) { s = 18; } else if ( (LA150_161 == EOF || LA150_161 == CRLF || LA150_161 == LSBRAQUET || LA150_161 == RSBRAQUET || LA150_161 == SP) ) { s = 6; } else if ( (LA150_161 == COMMA) ) { s = 19; } else if ( (LA150_161 == AND) ) { s = 92; } else if ( (LA150_161 == DOLLARD || ((LA150_161 >= PLUS) && (LA150_161 <= QMARK)) || LA150_161 == SLASH) ) { s = 161; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_161 == EQUAL) ) { s = 5; } SEEK(index150_161); if ( s>=0 ) { return s; } } break; case 63: { ANTLR3_UINT32 LA150_107; ANTLR3_MARKER index150_107; LA150_107 = LA(1); index150_107 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) ) { s = 33; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index150_107); if ( s>=0 ) { return s; } } break; case 64: { ANTLR3_UINT32 LA150_54; ANTLR3_MARKER index150_54; LA150_54 = LA(1); index150_54 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) && (LA150_54 == AT) ) { s = 8; } else if ( (LA150_54 == COMMON_CHAR || LA150_54 == HEX_CHAR) ) { s = 73; } else if ( (LA150_54 == DIGIT) ) { s = 74; } else if ( (LA150_54 == DASH || LA150_54 == DOT || LA150_54 == EMARK || LA150_54 == LPAREN || LA150_54 == RPAREN || ((LA150_54 >= SQUOTE) && (LA150_54 <= USCORE))) ) { s = 75; } else if ( (LA150_54 == PERCENT) ) { s = 76; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_54 == AND) ) { s = 29; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_54 == EQUAL) ) { s = 30; } else if ( (LA150_54 == PLUS) ) { s = 77; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_54 == DOLLARD) ) { s = 32; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_54 == COMMA) ) { s = 33; } else if ( (LA150_54 == BQUOTE || LA150_54 == CRLF || LA150_54 == DQUOTE || LA150_54 == LAQUOT || LA150_54 == SP) ) { s = 6; } SEEK(index150_54); if ( s>=0 ) { return s; } } break; case 65: { ANTLR3_UINT32 LA150_83; ANTLR3_MARKER index150_83; LA150_83 = LA(1); index150_83 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) && (LA150_83 == AT) ) { s = 8; } else if ( (LA150_83 == COMMON_CHAR || LA150_83 == HEX_CHAR) ) { s = 118; } else if ( (LA150_83 == DIGIT) ) { s = 119; } else if ( (LA150_83 == DASH || LA150_83 == DOT || LA150_83 == EMARK || LA150_83 == LPAREN || LA150_83 == RPAREN || ((LA150_83 >= SQUOTE) && (LA150_83 <= USCORE))) ) { s = 120; } else if ( (LA150_83 == PERCENT) ) { s = 121; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_83 == AND) ) { s = 29; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_83 == EQUAL) ) { s = 30; } else if ( (LA150_83 == PLUS) ) { s = 122; } else if ( (LA150_83 == DOLLARD) ) { s = 123; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_83 == COMMA) ) { s = 33; } else if ( (LA150_83 == COLON || LA150_83 == LSBRAQUET || LA150_83 == QMARK || LA150_83 == RSBRAQUET || LA150_83 == SLASH) ) { s = 6; } SEEK(index150_83); if ( s>=0 ) { return s; } } break; case 66: { ANTLR3_UINT32 LA150_106; ANTLR3_MARKER index150_106; LA150_106 = LA(1); index150_106 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) ) { s = 33; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index150_106); if ( s>=0 ) { return s; } } break; case 67: { ANTLR3_UINT32 LA150_99; ANTLR3_MARKER index150_99; LA150_99 = LA(1); index150_99 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) && (LA150_99 == COLON) ) { s = 7; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_99 == AT) ) { s = 8; } else if ( (LA150_99 == COMMON_CHAR || LA150_99 == HEX_CHAR) ) { s = 40; } else if ( (LA150_99 == DIGIT) ) { s = 41; } else if ( (LA150_99 == DASH || LA150_99 == DOT || LA150_99 == EMARK || LA150_99 == LPAREN || LA150_99 == RPAREN || ((LA150_99 >= SQUOTE) && (LA150_99 <= USCORE))) ) { s = 42; } else if ( (LA150_99 == PERCENT) ) { s = 43; } else if ( (LA150_99 == EQUAL) ) { s = 64; } else if ( (LA150_99 == EOF || LA150_99 == BQUOTE || LA150_99 == CRLF || LA150_99 == SP) ) { s = 6; } else if ( (LA150_99 == COMMA) ) { s = 19; } else if ( (LA150_99 == SEMI) ) { s = 18; } else if ( (LA150_99 == PLUS) ) { s = 44; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_99 == AND || LA150_99 == DOLLARD || LA150_99 == QMARK || LA150_99 == SLASH) ) { s = 5; } SEEK(index150_99); if ( s>=0 ) { return s; } } break; case 68: { ANTLR3_UINT32 LA150_109; ANTLR3_MARKER index150_109; LA150_109 = LA(1); index150_109 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) ) { s = 33; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index150_109); if ( s>=0 ) { return s; } } break; case 69: { ANTLR3_UINT32 LA150_108; ANTLR3_MARKER index150_108; LA150_108 = LA(1); index150_108 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) ) { s = 33; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index150_108); if ( s>=0 ) { return s; } } break; case 70: { ANTLR3_UINT32 LA150_17; ANTLR3_MARKER index150_17; LA150_17 = LA(1); index150_17 = INDEX(); REWINDLAST(); s = -1; if ( (LA150_17 == COLON) ) { s = 15; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_17 == AT) ) { s = 8; } else if ( (LA150_17 == COMMON_CHAR || LA150_17 == HEX_CHAR) ) { s = 1; } else if ( (LA150_17 == DIGIT) ) { s = 20; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_17 == DASH || LA150_17 == DOT || LA150_17 == EMARK || LA150_17 == LPAREN || LA150_17 == RPAREN || ((LA150_17 >= SQUOTE) && (LA150_17 <= USCORE))) ) { s = 3; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_17 == PERCENT) ) { s = 4; } else if ( (LA150_17 == QMARK) ) { s = 16; } else if ( (LA150_17 == SEMI) ) { s = 18; } else if ( (LA150_17 == EOF || LA150_17 == CRLF || LA150_17 == SP) ) { s = 6; } else if ( (LA150_17 == COMMA) ) { s = 19; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_17 == AND || LA150_17 == DOLLARD || LA150_17 == EQUAL || LA150_17 == PLUS || LA150_17 == SLASH) ) { s = 5; } SEEK(index150_17); if ( s>=0 ) { return s; } } break; case 71: { ANTLR3_UINT32 LA150_86; ANTLR3_MARKER index150_86; LA150_86 = LA(1); index150_86 = INDEX(); REWINDLAST(); s = -1; if ( (LA150_86 == COMMON_CHAR || LA150_86 == HEX_CHAR) ) { s = 79; } else if ( (LA150_86 == DIGIT) ) { s = 80; } else if ( (LA150_86 == DASH || LA150_86 == DOT || LA150_86 == EMARK || LA150_86 == LPAREN || LA150_86 == RPAREN || ((LA150_86 >= SQUOTE) && (LA150_86 <= USCORE))) ) { s = 81; } else if ( (LA150_86 == PERCENT) ) { s = 82; } else if ( (LA150_86 == AND) ) { s = 83; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_86 == EQUAL) ) { s = 30; } else if ( (LA150_86 == PLUS) ) { s = 84; } else if ( (LA150_86 == DOLLARD) ) { s = 85; } else if ( (LA150_86 == COMMA) ) { s = 54; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_86 == AT) ) { s = 8; } else if ( (LA150_86 == EOF || LA150_86 == COLON || LA150_86 == CRLF || LA150_86 == LSBRAQUET || LA150_86 == QMARK || ((LA150_86 >= RSBRAQUET) && (LA150_86 <= SP))) ) { s = 6; } SEEK(index150_86); if ( s>=0 ) { return s; } } break; case 72: { ANTLR3_UINT32 LA150_13; ANTLR3_MARKER index150_13; LA150_13 = LA(1); index150_13 = INDEX(); REWINDLAST(); s = -1; if ( (LA150_13 == DIGIT) ) { s = 22; } else if ( (LA150_13 == DOT) ) { s = 23; } else if ( (LA150_13 == COLON) ) { s = 15; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_13 == AT) ) { s = 8; } else if ( (LA150_13 == COMMON_CHAR || LA150_13 == HEX_CHAR) ) { s = 9; } else if ( (LA150_13 == DASH) ) { s = 12; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_13 == PERCENT) ) { s = 4; } else if ( (LA150_13 == QMARK) ) { s = 16; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_13 == EMARK || LA150_13 == LPAREN || LA150_13 == RPAREN || ((LA150_13 >= SQUOTE) && (LA150_13 <= USCORE))) ) { s = 3; } else if ( (LA150_13 == SEMI) ) { s = 18; } else if ( (LA150_13 == EOF || LA150_13 == CRLF || LA150_13 == SP) ) { s = 6; } else if ( (LA150_13 == COMMA) ) { s = 19; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_13 == AND || LA150_13 == DOLLARD || LA150_13 == EQUAL || LA150_13 == PLUS || LA150_13 == SLASH) ) { s = 5; } SEEK(index150_13); if ( s>=0 ) { return s; } } break; case 73: { ANTLR3_UINT32 LA150_136; ANTLR3_MARKER index150_136; LA150_136 = LA(1); index150_136 = INDEX(); REWINDLAST(); s = -1; if ( (LA150_136 == DIGIT) ) { s = 148; } else if ( (LA150_136 == COLON) ) { s = 15; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_136 == AT) ) { s = 8; } else if ( (LA150_136 == COMMON_CHAR || LA150_136 == HEX_CHAR) ) { s = 9; } else if ( (LA150_136 == DASH) ) { s = 12; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_136 == PERCENT) ) { s = 4; } else if ( (LA150_136 == QMARK) ) { s = 16; } else if ( (LA150_136 == DOT) ) { s = 11; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_136 == EMARK || LA150_136 == LPAREN || LA150_136 == RPAREN || ((LA150_136 >= SQUOTE) && (LA150_136 <= USCORE))) ) { s = 3; } else if ( (LA150_136 == SEMI) ) { s = 18; } else if ( (LA150_136 == EOF || LA150_136 == CRLF || LA150_136 == SP) ) { s = 6; } else if ( (LA150_136 == COMMA) ) { s = 19; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_136 == AND || LA150_136 == DOLLARD || LA150_136 == EQUAL || LA150_136 == PLUS || LA150_136 == SLASH) ) { s = 5; } SEEK(index150_136); if ( s>=0 ) { return s; } } break; case 74: { ANTLR3_UINT32 LA150_52; ANTLR3_MARKER index150_52; LA150_52 = LA(1); index150_52 = INDEX(); REWINDLAST(); s = -1; if ( (LA150_52 == DIGIT) ) { s = 70; } else if ( (LA150_52 == DOT) ) { s = 71; } else if ( (LA150_52 == COLON) ) { s = 15; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_52 == AT) ) { s = 8; } else if ( (LA150_52 == COMMON_CHAR || LA150_52 == HEX_CHAR) ) { s = 9; } else if ( (LA150_52 == DASH) ) { s = 12; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_52 == PERCENT) ) { s = 4; } else if ( (LA150_52 == QMARK) ) { s = 16; } else if ( (LA150_52 == SEMI) ) { s = 18; } else if ( (LA150_52 == EOF || LA150_52 == CRLF || LA150_52 == SP) ) { s = 6; } else if ( (LA150_52 == COMMA) ) { s = 19; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_52 == AND || LA150_52 == DOLLARD || LA150_52 == EQUAL || LA150_52 == PLUS || LA150_52 == SLASH) ) { s = 5; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_52 == EMARK || LA150_52 == LPAREN || LA150_52 == RPAREN || ((LA150_52 >= SQUOTE) && (LA150_52 <= USCORE))) ) { s = 3; } SEEK(index150_52); if ( s>=0 ) { return s; } } break; case 75: { ANTLR3_UINT32 LA150_49; ANTLR3_MARKER index150_49; LA150_49 = LA(1); index150_49 = INDEX(); REWINDLAST(); s = -1; if ( (LA150_49 == COLON) ) { s = 67; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_49 == AT) ) { s = 8; } else if ( (LA150_49 == COMMON_CHAR || LA150_49 == HEX_CHAR) ) { s = 45; } else if ( (LA150_49 == DIGIT) ) { s = 46; } else if ( (LA150_49 == DASH || LA150_49 == DOT || LA150_49 == EMARK || LA150_49 == LPAREN || LA150_49 == RPAREN || ((LA150_49 >= SQUOTE) && (LA150_49 <= USCORE))) ) { s = 47; } else if ( (LA150_49 == PERCENT) ) { s = 48; } else if ( (LA150_49 == PLUS) ) { s = 49; } else if ( (LA150_49 == BQUOTE || LA150_49 == CRLF || LA150_49 == LAQUOT || LA150_49 == SP) ) { s = 6; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_49 == AND || LA150_49 == COMMA || LA150_49 == DOLLARD || LA150_49 == EQUAL || LA150_49 == QMARK || ((LA150_49 >= SEMI) && (LA150_49 <= SLASH))) ) { s = 5; } SEEK(index150_49); if ( s>=0 ) { return s; } } break; case 76: { ANTLR3_UINT32 LA150_21; ANTLR3_MARKER index150_21; LA150_21 = LA(1); index150_21 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) && (LA150_21 == COLON) ) { s = 7; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_21 == AT) ) { s = 8; } else if ( (LA150_21 == COMMON_CHAR || LA150_21 == HEX_CHAR) ) { s = 50; } else if ( (LA150_21 == DIGIT) ) { s = 51; } else if ( (LA150_21 == DASH) ) { s = 21; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_21 == PERCENT) ) { s = 4; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_21 == AND || LA150_21 == COMMA || LA150_21 == DOLLARD || LA150_21 == EQUAL || ((LA150_21 >= PLUS) && (LA150_21 <= QMARK)) || ((LA150_21 >= SEMI) && (LA150_21 <= SLASH))) ) { s = 5; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_21 == DOT || LA150_21 == EMARK || LA150_21 == LPAREN || LA150_21 == RPAREN || ((LA150_21 >= SQUOTE) && (LA150_21 <= USCORE))) ) { s = 3; } SEEK(index150_21); if ( s>=0 ) { return s; } } break; case 77: { ANTLR3_UINT32 LA150_14; ANTLR3_MARKER index150_14; LA150_14 = LA(1); index150_14 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) && (LA150_14 == COLON) ) { s = 7; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_14 == AT) ) { s = 8; } else if ( (LA150_14 == COMMON_CHAR || LA150_14 == HEX_CHAR) ) { s = 1; } else if ( (LA150_14 == DIGIT) ) { s = 24; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_14 == DASH || LA150_14 == DOT || LA150_14 == EMARK || LA150_14 == LPAREN || LA150_14 == RPAREN || ((LA150_14 >= SQUOTE) && (LA150_14 <= USCORE))) ) { s = 3; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_14 == PERCENT) ) { s = 4; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_14 == AND || LA150_14 == COMMA || LA150_14 == DOLLARD || LA150_14 == EQUAL || ((LA150_14 >= PLUS) && (LA150_14 <= QMARK)) || ((LA150_14 >= SEMI) && (LA150_14 <= SLASH))) ) { s = 5; } SEEK(index150_14); if ( s>=0 ) { return s; } } break; case 78: { ANTLR3_UINT32 LA150_158; ANTLR3_MARKER index150_158; LA150_158 = LA(1); index150_158 = INDEX(); REWINDLAST(); s = -1; if ( (LA150_158 == COLON) ) { s = 156; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_158 == AT) ) { s = 8; } else if ( (LA150_158 == COMMON_CHAR || LA150_158 == HEX_CHAR) ) { s = 157; } else if ( (LA150_158 == DIGIT) ) { s = 158; } else if ( (LA150_158 == DASH || LA150_158 == DOT || LA150_158 == EMARK || LA150_158 == LPAREN || LA150_158 == RPAREN || ((LA150_158 >= SQUOTE) && (LA150_158 <= USCORE))) ) { s = 159; } else if ( (LA150_158 == PERCENT) ) { s = 160; } else if ( (LA150_158 == SEMI) ) { s = 18; } else if ( (LA150_158 == EOF || LA150_158 == CRLF || LA150_158 == LSBRAQUET || LA150_158 == RSBRAQUET || LA150_158 == SP) ) { s = 6; } else if ( (LA150_158 == COMMA) ) { s = 19; } else if ( (LA150_158 == AND) ) { s = 92; } else if ( (LA150_158 == DOLLARD || ((LA150_158 >= PLUS) && (LA150_158 <= QMARK)) || LA150_158 == SLASH) ) { s = 161; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_158 == EQUAL) ) { s = 5; } SEEK(index150_158); if ( s>=0 ) { return s; } } break; case 79: { ANTLR3_UINT32 LA150_113; ANTLR3_MARKER index150_113; LA150_113 = LA(1); index150_113 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) && (LA150_113 == COLON) ) { s = 7; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_113 == AT) ) { s = 8; } else if ( (LA150_113 == COMMON_CHAR || LA150_113 == HEX_CHAR) ) { s = 1; } else if ( (LA150_113 == DIGIT) ) { s = 136; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_113 == DASH || LA150_113 == DOT || LA150_113 == EMARK || LA150_113 == LPAREN || LA150_113 == RPAREN || ((LA150_113 >= SQUOTE) && (LA150_113 <= USCORE))) ) { s = 3; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_113 == PERCENT) ) { s = 4; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_113 == AND || LA150_113 == COMMA || LA150_113 == DOLLARD || LA150_113 == EQUAL || ((LA150_113 >= PLUS) && (LA150_113 <= QMARK)) || ((LA150_113 >= SEMI) && (LA150_113 <= SLASH))) ) { s = 5; } SEEK(index150_113); if ( s>=0 ) { return s; } } break; case 80: { ANTLR3_UINT32 LA150_167; ANTLR3_MARKER index150_167; LA150_167 = LA(1); index150_167 = INDEX(); REWINDLAST(); s = -1; if ( (LA150_167 == COLON) ) { s = 156; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_167 == AT) ) { s = 8; } else if ( (LA150_167 == COMMON_CHAR || LA150_167 == HEX_CHAR) ) { s = 157; } else if ( (LA150_167 == DIGIT) ) { s = 158; } else if ( (LA150_167 == DASH || LA150_167 == DOT || LA150_167 == EMARK || LA150_167 == LPAREN || LA150_167 == RPAREN || ((LA150_167 >= SQUOTE) && (LA150_167 <= USCORE))) ) { s = 159; } else if ( (LA150_167 == PERCENT) ) { s = 160; } else if ( (LA150_167 == SEMI) ) { s = 18; } else if ( (LA150_167 == EOF || LA150_167 == CRLF || LA150_167 == LSBRAQUET || LA150_167 == RSBRAQUET || LA150_167 == SP) ) { s = 6; } else if ( (LA150_167 == COMMA) ) { s = 19; } else if ( (LA150_167 == AND) ) { s = 92; } else if ( (LA150_167 == DOLLARD || ((LA150_167 >= PLUS) && (LA150_167 <= QMARK)) || LA150_167 == SLASH) ) { s = 161; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_167 == EQUAL) ) { s = 5; } SEEK(index150_167); if ( s>=0 ) { return s; } } break; case 81: { ANTLR3_UINT32 LA150_35; ANTLR3_MARKER index150_35; LA150_35 = LA(1); index150_35 = INDEX(); REWINDLAST(); s = -1; if ( (LA150_35 == COLON) ) { s = 34; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_35 == AT) ) { s = 8; } else if ( (LA150_35 == COMMON_CHAR || LA150_35 == HEX_CHAR) ) { s = 35; } else if ( (LA150_35 == DIGIT) ) { s = 36; } else if ( (LA150_35 == DASH || LA150_35 == DOT || LA150_35 == EMARK || LA150_35 == LPAREN || LA150_35 == RPAREN || ((LA150_35 >= SQUOTE) && (LA150_35 <= USCORE))) ) { s = 37; } else if ( (LA150_35 == PERCENT) ) { s = 38; } else if ( (LA150_35 == EQUAL) ) { s = 62; } else if ( (LA150_35 == DOLLARD || ((LA150_35 >= PLUS) && (LA150_35 <= QMARK)) || LA150_35 == SLASH) ) { s = 39; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_35 == AND || LA150_35 == COMMA || LA150_35 == SEMI) ) { s = 5; } else if ( (LA150_35 == LSBRAQUET || LA150_35 == RSBRAQUET) ) { s = 6; } SEEK(index150_35); if ( s>=0 ) { return s; } } break; case 82: { ANTLR3_UINT32 LA150_53; ANTLR3_MARKER index150_53; LA150_53 = LA(1); index150_53 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) && (LA150_53 == COLON) ) { s = 7; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_53 == AT) ) { s = 8; } else if ( (LA150_53 == COMMON_CHAR || LA150_53 == HEX_CHAR) ) { s = 1; } else if ( (LA150_53 == DIGIT) ) { s = 72; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_53 == DASH || LA150_53 == DOT || LA150_53 == EMARK || LA150_53 == LPAREN || LA150_53 == RPAREN || ((LA150_53 >= SQUOTE) && (LA150_53 <= USCORE))) ) { s = 3; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_53 == PERCENT) ) { s = 4; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_53 == AND || LA150_53 == COMMA || LA150_53 == DOLLARD || LA150_53 == EQUAL || ((LA150_53 >= PLUS) && (LA150_53 <= QMARK)) || ((LA150_53 >= SEMI) && (LA150_53 <= SLASH))) ) { s = 5; } SEEK(index150_53); if ( s>=0 ) { return s; } } break; case 83: { ANTLR3_UINT32 LA150_126; ANTLR3_MARKER index150_126; LA150_126 = LA(1); index150_126 = INDEX(); REWINDLAST(); s = -1; if ( (LA150_126 == COLON) ) { s = 125; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_126 == AT) ) { s = 8; } else if ( (LA150_126 == COMMON_CHAR || LA150_126 == HEX_CHAR) ) { s = 126; } else if ( (LA150_126 == DIGIT) ) { s = 127; } else if ( (LA150_126 == DASH || LA150_126 == DOT || LA150_126 == EMARK || LA150_126 == LPAREN || LA150_126 == RPAREN || ((LA150_126 >= SQUOTE) && (LA150_126 <= USCORE))) ) { s = 128; } else if ( (LA150_126 == PERCENT) ) { s = 129; } else if ( (LA150_126 == EQUAL) ) { s = 143; } else if ( (LA150_126 == DOLLARD || ((LA150_126 >= PLUS) && (LA150_126 <= QMARK)) || LA150_126 == SLASH) ) { s = 130; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_126 == AND || LA150_126 == COMMA || LA150_126 == SEMI) ) { s = 5; } else if ( (LA150_126 == LSBRAQUET || LA150_126 == RSBRAQUET) ) { s = 6; } SEEK(index150_126); if ( s>=0 ) { return s; } } break; case 84: { ANTLR3_UINT32 LA150_112; ANTLR3_MARKER index150_112; LA150_112 = LA(1); index150_112 = INDEX(); REWINDLAST(); s = -1; if ( (LA150_112 == DIGIT) ) { s = 134; } else if ( (LA150_112 == DOT) ) { s = 135; } else if ( (LA150_112 == COLON) ) { s = 15; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_112 == AT) ) { s = 8; } else if ( (LA150_112 == COMMON_CHAR || LA150_112 == HEX_CHAR) ) { s = 9; } else if ( (LA150_112 == DASH) ) { s = 12; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_112 == PERCENT) ) { s = 4; } else if ( (LA150_112 == QMARK) ) { s = 16; } else if ( (LA150_112 == SEMI) ) { s = 18; } else if ( (LA150_112 == EOF || LA150_112 == CRLF || LA150_112 == SP) ) { s = 6; } else if ( (LA150_112 == COMMA) ) { s = 19; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_112 == AND || LA150_112 == DOLLARD || LA150_112 == EQUAL || LA150_112 == PLUS || LA150_112 == SLASH) ) { s = 5; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_112 == EMARK || LA150_112 == LPAREN || LA150_112 == RPAREN || ((LA150_112 >= SQUOTE) && (LA150_112 <= USCORE))) ) { s = 3; } SEEK(index150_112); if ( s>=0 ) { return s; } } break; case 85: { ANTLR3_UINT32 LA150_10; ANTLR3_MARKER index150_10; LA150_10 = LA(1); index150_10 = INDEX(); REWINDLAST(); s = -1; if ( (LA150_10 == COLON) ) { s = 15; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_10 == AT) ) { s = 8; } else if ( (LA150_10 == COMMON_CHAR || LA150_10 == HEX_CHAR) ) { s = 9; } else if ( (LA150_10 == DIGIT) ) { s = 10; } else if ( (LA150_10 == DASH) ) { s = 12; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_10 == PERCENT) ) { s = 4; } else if ( (LA150_10 == QMARK) ) { s = 16; } else if ( (LA150_10 == DOT) ) { s = 17; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_10 == EMARK || LA150_10 == LPAREN || LA150_10 == RPAREN || ((LA150_10 >= SQUOTE) && (LA150_10 <= USCORE))) ) { s = 3; } else if ( (LA150_10 == SEMI) ) { s = 18; } else if ( (LA150_10 == EOF || LA150_10 == CRLF || LA150_10 == SP) ) { s = 6; } else if ( (LA150_10 == COMMA) ) { s = 19; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_10 == AND || LA150_10 == DOLLARD || LA150_10 == EQUAL || LA150_10 == PLUS || LA150_10 == SLASH) ) { s = 5; } SEEK(index150_10); if ( s>=0 ) { return s; } } break; case 86: { ANTLR3_UINT32 LA150_37; ANTLR3_MARKER index150_37; LA150_37 = LA(1); index150_37 = INDEX(); REWINDLAST(); s = -1; if ( (LA150_37 == COLON) ) { s = 34; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_37 == AT) ) { s = 8; } else if ( (LA150_37 == COMMON_CHAR || LA150_37 == HEX_CHAR) ) { s = 35; } else if ( (LA150_37 == DIGIT) ) { s = 36; } else if ( (LA150_37 == DASH || LA150_37 == DOT || LA150_37 == EMARK || LA150_37 == LPAREN || LA150_37 == RPAREN || ((LA150_37 >= SQUOTE) && (LA150_37 <= USCORE))) ) { s = 37; } else if ( (LA150_37 == PERCENT) ) { s = 38; } else if ( (LA150_37 == EQUAL) ) { s = 62; } else if ( (LA150_37 == DOLLARD || ((LA150_37 >= PLUS) && (LA150_37 <= QMARK)) || LA150_37 == SLASH) ) { s = 39; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_37 == AND || LA150_37 == COMMA || LA150_37 == SEMI) ) { s = 5; } else if ( (LA150_37 == LSBRAQUET || LA150_37 == RSBRAQUET) ) { s = 6; } SEEK(index150_37); if ( s>=0 ) { return s; } } break; case 87: { ANTLR3_UINT32 LA150_128; ANTLR3_MARKER index150_128; LA150_128 = LA(1); index150_128 = INDEX(); REWINDLAST(); s = -1; if ( (LA150_128 == COLON) ) { s = 125; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_128 == AT) ) { s = 8; } else if ( (LA150_128 == COMMON_CHAR || LA150_128 == HEX_CHAR) ) { s = 126; } else if ( (LA150_128 == DIGIT) ) { s = 127; } else if ( (LA150_128 == DASH || LA150_128 == DOT || LA150_128 == EMARK || LA150_128 == LPAREN || LA150_128 == RPAREN || ((LA150_128 >= SQUOTE) && (LA150_128 <= USCORE))) ) { s = 128; } else if ( (LA150_128 == PERCENT) ) { s = 129; } else if ( (LA150_128 == EQUAL) ) { s = 143; } else if ( (LA150_128 == DOLLARD || ((LA150_128 >= PLUS) && (LA150_128 <= QMARK)) || LA150_128 == SLASH) ) { s = 130; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_128 == AND || LA150_128 == COMMA || LA150_128 == SEMI) ) { s = 5; } else if ( (LA150_128 == LSBRAQUET || LA150_128 == RSBRAQUET) ) { s = 6; } SEEK(index150_128); if ( s>=0 ) { return s; } } break; case 88: { ANTLR3_UINT32 LA150_100; ANTLR3_MARKER index150_100; LA150_100 = LA(1); index150_100 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) && (LA150_100 == COLON) ) { s = 7; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_100 == AT) ) { s = 8; } else if ( (LA150_100 == COMMON_CHAR || LA150_100 == HEX_CHAR) ) { s = 40; } else if ( (LA150_100 == DIGIT) ) { s = 41; } else if ( (LA150_100 == DASH || LA150_100 == DOT || LA150_100 == EMARK || LA150_100 == LPAREN || LA150_100 == RPAREN || ((LA150_100 >= SQUOTE) && (LA150_100 <= USCORE))) ) { s = 42; } else if ( (LA150_100 == PERCENT) ) { s = 43; } else if ( (LA150_100 == EQUAL) ) { s = 64; } else if ( (LA150_100 == EOF || LA150_100 == BQUOTE || LA150_100 == CRLF || LA150_100 == SP) ) { s = 6; } else if ( (LA150_100 == COMMA) ) { s = 19; } else if ( (LA150_100 == SEMI) ) { s = 18; } else if ( (LA150_100 == PLUS) ) { s = 44; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_100 == AND || LA150_100 == DOLLARD || LA150_100 == QMARK || LA150_100 == SLASH) ) { s = 5; } SEEK(index150_100); if ( s>=0 ) { return s; } } break; case 89: { ANTLR3_UINT32 LA150_46; ANTLR3_MARKER index150_46; LA150_46 = LA(1); index150_46 = INDEX(); REWINDLAST(); s = -1; if ( (LA150_46 == COLON) ) { s = 67; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_46 == AT) ) { s = 8; } else if ( (LA150_46 == COMMON_CHAR || LA150_46 == HEX_CHAR) ) { s = 45; } else if ( (LA150_46 == DIGIT) ) { s = 46; } else if ( (LA150_46 == DASH || LA150_46 == DOT || LA150_46 == EMARK || LA150_46 == LPAREN || LA150_46 == RPAREN || ((LA150_46 >= SQUOTE) && (LA150_46 <= USCORE))) ) { s = 47; } else if ( (LA150_46 == PERCENT) ) { s = 48; } else if ( (LA150_46 == PLUS) ) { s = 49; } else if ( (LA150_46 == BQUOTE || LA150_46 == CRLF || LA150_46 == LAQUOT || LA150_46 == SP) ) { s = 6; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_46 == AND || LA150_46 == COMMA || LA150_46 == DOLLARD || LA150_46 == EQUAL || LA150_46 == QMARK || ((LA150_46 >= SEMI) && (LA150_46 <= SLASH))) ) { s = 5; } SEEK(index150_46); if ( s>=0 ) { return s; } } break; case 90: { ANTLR3_UINT32 LA150_138; ANTLR3_MARKER index150_138; LA150_138 = LA(1); index150_138 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) && (LA150_138 == AT) ) { s = 8; } else if ( (LA150_138 == COMMON_CHAR || LA150_138 == HEX_CHAR) ) { s = 73; } else if ( (LA150_138 == DIGIT) ) { s = 74; } else if ( (LA150_138 == DASH || LA150_138 == DOT || LA150_138 == EMARK || LA150_138 == LPAREN || LA150_138 == RPAREN || ((LA150_138 >= SQUOTE) && (LA150_138 <= USCORE))) ) { s = 75; } else if ( (LA150_138 == PERCENT) ) { s = 76; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_138 == AND) ) { s = 29; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_138 == EQUAL) ) { s = 30; } else if ( (LA150_138 == PLUS) ) { s = 77; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_138 == DOLLARD) ) { s = 32; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_138 == COMMA) ) { s = 33; } else if ( (LA150_138 == BQUOTE || LA150_138 == COLON || LA150_138 == CRLF || LA150_138 == LAQUOT || LA150_138 == SP) ) { s = 6; } SEEK(index150_138); if ( s>=0 ) { return s; } } break; case 91: { ANTLR3_UINT32 LA150_62; ANTLR3_MARKER index150_62; LA150_62 = LA(1); index150_62 = INDEX(); REWINDLAST(); s = -1; if ( (LA150_62 == COLON) ) { s = 86; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_62 == AT) ) { s = 8; } else if ( (LA150_62 == COMMON_CHAR || LA150_62 == HEX_CHAR) ) { s = 87; } else if ( (LA150_62 == DIGIT) ) { s = 88; } else if ( (LA150_62 == DASH || LA150_62 == DOT || LA150_62 == EMARK || LA150_62 == LPAREN || LA150_62 == RPAREN || ((LA150_62 >= SQUOTE) && (LA150_62 <= USCORE))) ) { s = 89; } else if ( (LA150_62 == PERCENT) ) { s = 90; } else if ( (LA150_62 == DOLLARD || ((LA150_62 >= PLUS) && (LA150_62 <= QMARK)) || LA150_62 == SLASH) ) { s = 91; } else if ( (LA150_62 == AND) ) { s = 92; } else if ( (LA150_62 == EOF || LA150_62 == CRLF || LA150_62 == LSBRAQUET || LA150_62 == RSBRAQUET || LA150_62 == SP) ) { s = 6; } else if ( (LA150_62 == SEMI) ) { s = 18; } else if ( (LA150_62 == COMMA) ) { s = 19; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_62 == EQUAL) ) { s = 5; } SEEK(index150_62); if ( s>=0 ) { return s; } } break; case 92: { ANTLR3_UINT32 LA150_103; ANTLR3_MARKER index150_103; LA150_103 = LA(1); index150_103 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) ) { s = 33; } else if ( (ANTLR3_TRUE) ) { s = 6; } SEEK(index150_103); if ( s>=0 ) { return s; } } break; case 93: { ANTLR3_UINT32 LA150_79; ANTLR3_MARKER index150_79; LA150_79 = LA(1); index150_79 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) && (LA150_79 == AT) ) { s = 8; } else if ( (LA150_79 == COMMON_CHAR || LA150_79 == HEX_CHAR) ) { s = 79; } else if ( (LA150_79 == DIGIT) ) { s = 80; } else if ( (LA150_79 == DASH || LA150_79 == DOT || LA150_79 == EMARK || LA150_79 == LPAREN || LA150_79 == RPAREN || ((LA150_79 >= SQUOTE) && (LA150_79 <= USCORE))) ) { s = 81; } else if ( (LA150_79 == PERCENT) ) { s = 82; } else if ( (LA150_79 == AND) ) { s = 83; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_79 == EQUAL) ) { s = 30; } else if ( (LA150_79 == PLUS) ) { s = 84; } else if ( (LA150_79 == DOLLARD) ) { s = 85; } else if ( (LA150_79 == COMMA) ) { s = 54; } else if ( (LA150_79 == EOF || LA150_79 == COLON || LA150_79 == CRLF || LA150_79 == LSBRAQUET || LA150_79 == QMARK || ((LA150_79 >= RSBRAQUET) && (LA150_79 <= SP))) ) { s = 6; } SEEK(index150_79); if ( s>=0 ) { return s; } } break; case 94: { ANTLR3_UINT32 LA150_148; ANTLR3_MARKER index150_148; LA150_148 = LA(1); index150_148 = INDEX(); REWINDLAST(); s = -1; if ( (LA150_148 == DIGIT) ) { s = 163; } else if ( (LA150_148 == COLON) ) { s = 15; } else if ( (LA150_148 == QMARK) ) { s = 16; } else if ( (LA150_148 == EOF || LA150_148 == CRLF || LA150_148 == SP) ) { s = 6; } else if ( (LA150_148 == SEMI) ) { s = 18; } else if ( (LA150_148 == COMMA) ) { s = 19; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_148 == AT) ) { s = 8; } else if ( (LA150_148 == COMMON_CHAR || LA150_148 == HEX_CHAR) ) { s = 9; } else if ( (LA150_148 == DOT) ) { s = 17; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_148 == PERCENT) ) { s = 4; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_148 == AND || LA150_148 == DOLLARD || LA150_148 == EQUAL || LA150_148 == PLUS || LA150_148 == SLASH) ) { s = 5; } else if ( (LA150_148 == DASH) ) { s = 12; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_148 == EMARK || LA150_148 == LPAREN || LA150_148 == RPAREN || ((LA150_148 >= SQUOTE) && (LA150_148 <= USCORE))) ) { s = 3; } SEEK(index150_148); if ( s>=0 ) { return s; } } break; case 95: { ANTLR3_UINT32 LA150_15; ANTLR3_MARKER index150_15; LA150_15 = LA(1); index150_15 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) && (LA150_15 == COMMON_CHAR || LA150_15 == HEX_CHAR) ) { s = 25; } else if ( (LA150_15 == DIGIT) ) { s = 26; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_15 == DASH || LA150_15 == DOT || LA150_15 == EMARK || LA150_15 == LPAREN || LA150_15 == RPAREN || ((LA150_15 >= SQUOTE) && (LA150_15 <= USCORE))) ) { s = 27; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_15 == PERCENT) ) { s = 28; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_15 == AND) ) { s = 29; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_15 == EQUAL) ) { s = 30; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_15 == PLUS) ) { s = 31; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_15 == DOLLARD) ) { s = 32; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_15 == COMMA) ) { s = 33; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_15 == AT) ) { s = 8; } SEEK(index150_15); if ( s>=0 ) { return s; } } break; case 96: { ANTLR3_UINT32 LA150_60; ANTLR3_MARKER index150_60; LA150_60 = LA(1); index150_60 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) && (LA150_60 == AT) ) { s = 8; } else if ( (LA150_60 == COMMON_CHAR || LA150_60 == HEX_CHAR) ) { s = 55; } else if ( (LA150_60 == DIGIT) ) { s = 56; } else if ( (LA150_60 == DASH || LA150_60 == DOT || LA150_60 == EMARK || LA150_60 == LPAREN || LA150_60 == RPAREN || ((LA150_60 >= SQUOTE) && (LA150_60 <= USCORE))) ) { s = 57; } else if ( (LA150_60 == PERCENT) ) { s = 58; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_60 == AND) ) { s = 29; } else if ( (LA150_60 == EQUAL) ) { s = 59; } else if ( (LA150_60 == PLUS) ) { s = 60; } else if ( (LA150_60 == DOLLARD) ) { s = 61; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_60 == COMMA) ) { s = 33; } else if ( (LA150_60 == COLON || LA150_60 == LSBRAQUET || LA150_60 == QMARK || LA150_60 == RSBRAQUET || LA150_60 == SLASH) ) { s = 6; } SEEK(index150_60); if ( s>=0 ) { return s; } } break; case 97: { ANTLR3_UINT32 LA150_122; ANTLR3_MARKER index150_122; LA150_122 = LA(1); index150_122 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) && (LA150_122 == AT) ) { s = 8; } else if ( (LA150_122 == COMMON_CHAR || LA150_122 == HEX_CHAR) ) { s = 118; } else if ( (LA150_122 == DIGIT) ) { s = 119; } else if ( (LA150_122 == DASH || LA150_122 == DOT || LA150_122 == EMARK || LA150_122 == LPAREN || LA150_122 == RPAREN || ((LA150_122 >= SQUOTE) && (LA150_122 <= USCORE))) ) { s = 120; } else if ( (LA150_122 == PERCENT) ) { s = 121; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_122 == AND) ) { s = 29; } else if ( (LA150_122 == EQUAL) ) { s = 140; } else if ( (LA150_122 == PLUS) ) { s = 122; } else if ( (LA150_122 == DOLLARD) ) { s = 123; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_122 == COMMA) ) { s = 33; } else if ( (LA150_122 == COLON || LA150_122 == LSBRAQUET || LA150_122 == QMARK || LA150_122 == RSBRAQUET || LA150_122 == SLASH) ) { s = 6; } SEEK(index150_122); if ( s>=0 ) { return s; } } break; case 98: { ANTLR3_UINT32 LA150_134; ANTLR3_MARKER index150_134; LA150_134 = LA(1); index150_134 = INDEX(); REWINDLAST(); s = -1; if ( (LA150_134 == DOT) ) { s = 135; } else if ( (LA150_134 == COLON) ) { s = 15; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_134 == AT) ) { s = 8; } else if ( (LA150_134 == COMMON_CHAR || LA150_134 == HEX_CHAR) ) { s = 9; } else if ( (LA150_134 == DIGIT) ) { s = 10; } else if ( (LA150_134 == DASH) ) { s = 12; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_134 == PERCENT) ) { s = 4; } else if ( (LA150_134 == QMARK) ) { s = 16; } else if ( (LA150_134 == SEMI) ) { s = 18; } else if ( (LA150_134 == EOF || LA150_134 == CRLF || LA150_134 == SP) ) { s = 6; } else if ( (LA150_134 == COMMA) ) { s = 19; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_134 == AND || LA150_134 == DOLLARD || LA150_134 == EQUAL || LA150_134 == PLUS || LA150_134 == SLASH) ) { s = 5; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_134 == EMARK || LA150_134 == LPAREN || LA150_134 == RPAREN || ((LA150_134 >= SQUOTE) && (LA150_134 <= USCORE))) ) { s = 3; } SEEK(index150_134); if ( s>=0 ) { return s; } } break; case 99: { ANTLR3_UINT32 LA150_81; ANTLR3_MARKER index150_81; LA150_81 = LA(1); index150_81 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) && (LA150_81 == AT) ) { s = 8; } else if ( (LA150_81 == COMMON_CHAR || LA150_81 == HEX_CHAR) ) { s = 79; } else if ( (LA150_81 == DIGIT) ) { s = 80; } else if ( (LA150_81 == DASH || LA150_81 == DOT || LA150_81 == EMARK || LA150_81 == LPAREN || LA150_81 == RPAREN || ((LA150_81 >= SQUOTE) && (LA150_81 <= USCORE))) ) { s = 81; } else if ( (LA150_81 == PERCENT) ) { s = 82; } else if ( (LA150_81 == AND) ) { s = 83; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_81 == EQUAL) ) { s = 30; } else if ( (LA150_81 == PLUS) ) { s = 84; } else if ( (LA150_81 == DOLLARD) ) { s = 85; } else if ( (LA150_81 == COMMA) ) { s = 54; } else if ( (LA150_81 == EOF || LA150_81 == COLON || LA150_81 == CRLF || LA150_81 == LSBRAQUET || LA150_81 == QMARK || ((LA150_81 >= RSBRAQUET) && (LA150_81 <= SP))) ) { s = 6; } SEEK(index150_81); if ( s>=0 ) { return s; } } break; case 100: { ANTLR3_UINT32 LA150_56; ANTLR3_MARKER index150_56; LA150_56 = LA(1); index150_56 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) && (LA150_56 == AT) ) { s = 8; } else if ( (LA150_56 == COMMON_CHAR || LA150_56 == HEX_CHAR) ) { s = 55; } else if ( (LA150_56 == DIGIT) ) { s = 56; } else if ( (LA150_56 == DASH || LA150_56 == DOT || LA150_56 == EMARK || LA150_56 == LPAREN || LA150_56 == RPAREN || ((LA150_56 >= SQUOTE) && (LA150_56 <= USCORE))) ) { s = 57; } else if ( (LA150_56 == PERCENT) ) { s = 58; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_56 == AND) ) { s = 29; } else if ( (LA150_56 == EQUAL) ) { s = 59; } else if ( (LA150_56 == PLUS) ) { s = 60; } else if ( (LA150_56 == DOLLARD) ) { s = 61; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_56 == COMMA) ) { s = 33; } else if ( (LA150_56 == COLON || LA150_56 == LSBRAQUET || LA150_56 == QMARK || LA150_56 == RSBRAQUET || LA150_56 == SLASH) ) { s = 6; } SEEK(index150_56); if ( s>=0 ) { return s; } } break; case 101: { ANTLR3_UINT32 LA150_61; ANTLR3_MARKER index150_61; LA150_61 = LA(1); index150_61 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) && (LA150_61 == AT) ) { s = 8; } else if ( (LA150_61 == COMMON_CHAR || LA150_61 == HEX_CHAR) ) { s = 55; } else if ( (LA150_61 == DIGIT) ) { s = 56; } else if ( (LA150_61 == DASH || LA150_61 == DOT || LA150_61 == EMARK || LA150_61 == LPAREN || LA150_61 == RPAREN || ((LA150_61 >= SQUOTE) && (LA150_61 <= USCORE))) ) { s = 57; } else if ( (LA150_61 == PERCENT) ) { s = 58; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_61 == AND) ) { s = 29; } else if ( (LA150_61 == EQUAL) ) { s = 59; } else if ( (LA150_61 == PLUS) ) { s = 60; } else if ( (LA150_61 == DOLLARD) ) { s = 61; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_61 == COMMA) ) { s = 33; } else if ( (LA150_61 == COLON || LA150_61 == LSBRAQUET || LA150_61 == QMARK || LA150_61 == RSBRAQUET || LA150_61 == SLASH) ) { s = 6; } SEEK(index150_61); if ( s>=0 ) { return s; } } break; case 102: { ANTLR3_UINT32 LA150_119; ANTLR3_MARKER index150_119; LA150_119 = LA(1); index150_119 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) && (LA150_119 == AT) ) { s = 8; } else if ( (LA150_119 == COMMON_CHAR || LA150_119 == HEX_CHAR) ) { s = 118; } else if ( (LA150_119 == DIGIT) ) { s = 119; } else if ( (LA150_119 == DASH || LA150_119 == DOT || LA150_119 == EMARK || LA150_119 == LPAREN || LA150_119 == RPAREN || ((LA150_119 >= SQUOTE) && (LA150_119 <= USCORE))) ) { s = 120; } else if ( (LA150_119 == PERCENT) ) { s = 121; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_119 == AND) ) { s = 29; } else if ( (LA150_119 == EQUAL) ) { s = 140; } else if ( (LA150_119 == PLUS) ) { s = 122; } else if ( (LA150_119 == DOLLARD) ) { s = 123; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_119 == COMMA) ) { s = 33; } else if ( (LA150_119 == COLON || LA150_119 == LSBRAQUET || LA150_119 == QMARK || LA150_119 == RSBRAQUET || LA150_119 == SLASH) ) { s = 6; } SEEK(index150_119); if ( s>=0 ) { return s; } } break; case 103: { ANTLR3_UINT32 LA150_123; ANTLR3_MARKER index150_123; LA150_123 = LA(1); index150_123 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) && (LA150_123 == AT) ) { s = 8; } else if ( (LA150_123 == COMMON_CHAR || LA150_123 == HEX_CHAR) ) { s = 118; } else if ( (LA150_123 == DIGIT) ) { s = 119; } else if ( (LA150_123 == DASH || LA150_123 == DOT || LA150_123 == EMARK || LA150_123 == LPAREN || LA150_123 == RPAREN || ((LA150_123 >= SQUOTE) && (LA150_123 <= USCORE))) ) { s = 120; } else if ( (LA150_123 == PERCENT) ) { s = 121; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_123 == AND) ) { s = 29; } else if ( (LA150_123 == EQUAL) ) { s = 140; } else if ( (LA150_123 == PLUS) ) { s = 122; } else if ( (LA150_123 == DOLLARD) ) { s = 123; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_123 == COMMA) ) { s = 33; } else if ( (LA150_123 == COLON || LA150_123 == LSBRAQUET || LA150_123 == QMARK || LA150_123 == RSBRAQUET || LA150_123 == SLASH) ) { s = 6; } SEEK(index150_123); if ( s>=0 ) { return s; } } break; case 104: { ANTLR3_UINT32 LA150_22; ANTLR3_MARKER index150_22; LA150_22 = LA(1); index150_22 = INDEX(); REWINDLAST(); s = -1; if ( (LA150_22 == DOT) ) { s = 23; } else if ( (LA150_22 == COLON) ) { s = 15; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_22 == AT) ) { s = 8; } else if ( (LA150_22 == COMMON_CHAR || LA150_22 == HEX_CHAR) ) { s = 9; } else if ( (LA150_22 == DIGIT) ) { s = 10; } else if ( (LA150_22 == DASH) ) { s = 12; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_22 == PERCENT) ) { s = 4; } else if ( (LA150_22 == QMARK) ) { s = 16; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_22 == EMARK || LA150_22 == LPAREN || LA150_22 == RPAREN || ((LA150_22 >= SQUOTE) && (LA150_22 <= USCORE))) ) { s = 3; } else if ( (LA150_22 == SEMI) ) { s = 18; } else if ( (LA150_22 == EOF || LA150_22 == CRLF || LA150_22 == SP) ) { s = 6; } else if ( (LA150_22 == COMMA) ) { s = 19; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_22 == AND || LA150_22 == DOLLARD || LA150_22 == EQUAL || LA150_22 == PLUS || LA150_22 == SLASH) ) { s = 5; } SEEK(index150_22); if ( s>=0 ) { return s; } } break; case 105: { ANTLR3_UINT32 LA150_70; ANTLR3_MARKER index150_70; LA150_70 = LA(1); index150_70 = INDEX(); REWINDLAST(); s = -1; if ( (LA150_70 == DOT) ) { s = 71; } else if ( (LA150_70 == COLON) ) { s = 15; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_70 == AT) ) { s = 8; } else if ( (LA150_70 == COMMON_CHAR || LA150_70 == HEX_CHAR) ) { s = 9; } else if ( (LA150_70 == DIGIT) ) { s = 10; } else if ( (LA150_70 == DASH) ) { s = 12; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_70 == PERCENT) ) { s = 4; } else if ( (LA150_70 == QMARK) ) { s = 16; } else if ( (LA150_70 == SEMI) ) { s = 18; } else if ( (LA150_70 == EOF || LA150_70 == CRLF || LA150_70 == SP) ) { s = 6; } else if ( (LA150_70 == COMMA) ) { s = 19; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_70 == AND || LA150_70 == DOLLARD || LA150_70 == EQUAL || LA150_70 == PLUS || LA150_70 == SLASH) ) { s = 5; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_70 == EMARK || LA150_70 == LPAREN || LA150_70 == RPAREN || ((LA150_70 >= SQUOTE) && (LA150_70 <= USCORE))) ) { s = 3; } SEEK(index150_70); if ( s>=0 ) { return s; } } break; case 106: { ANTLR3_UINT32 LA150_110; ANTLR3_MARKER index150_110; LA150_110 = LA(1); index150_110 = INDEX(); REWINDLAST(); s = -1; if ( (LA150_110 == COLON) ) { s = 67; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_110 == AT) ) { s = 8; } else if ( (LA150_110 == COMMON_CHAR || LA150_110 == HEX_CHAR) ) { s = 45; } else if ( (LA150_110 == DIGIT) ) { s = 46; } else if ( (LA150_110 == DASH || LA150_110 == DOT || LA150_110 == EMARK || LA150_110 == LPAREN || LA150_110 == RPAREN || ((LA150_110 >= SQUOTE) && (LA150_110 <= USCORE))) ) { s = 47; } else if ( (LA150_110 == PERCENT) ) { s = 48; } else if ( (LA150_110 == PLUS) ) { s = 49; } else if ( (LA150_110 == BQUOTE || LA150_110 == CRLF || LA150_110 == LAQUOT || LA150_110 == SP) ) { s = 6; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_110 == AND || LA150_110 == COMMA || LA150_110 == DOLLARD || LA150_110 == EQUAL || LA150_110 == QMARK || ((LA150_110 >= SEMI) && (LA150_110 <= SLASH))) ) { s = 5; } SEEK(index150_110); if ( s>=0 ) { return s; } } break; case 107: { ANTLR3_UINT32 LA150_73; ANTLR3_MARKER index150_73; LA150_73 = LA(1); index150_73 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) && (LA150_73 == AT) ) { s = 8; } else if ( (LA150_73 == COMMON_CHAR || LA150_73 == HEX_CHAR) ) { s = 73; } else if ( (LA150_73 == DIGIT) ) { s = 74; } else if ( (LA150_73 == DASH || LA150_73 == DOT || LA150_73 == EMARK || LA150_73 == LPAREN || LA150_73 == RPAREN || ((LA150_73 >= SQUOTE) && (LA150_73 <= USCORE))) ) { s = 75; } else if ( (LA150_73 == PERCENT) ) { s = 76; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_73 == AND) ) { s = 29; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_73 == EQUAL) ) { s = 30; } else if ( (LA150_73 == PLUS) ) { s = 77; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_73 == DOLLARD) ) { s = 32; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_73 == COMMA) ) { s = 33; } else if ( (LA150_73 == BQUOTE || LA150_73 == COLON || LA150_73 == CRLF || LA150_73 == LAQUOT || LA150_73 == SP) ) { s = 6; } SEEK(index150_73); if ( s>=0 ) { return s; } } break; case 108: { ANTLR3_UINT32 LA150_163; ANTLR3_MARKER index150_163; LA150_163 = LA(1); index150_163 = INDEX(); REWINDLAST(); s = -1; if ( (LA150_163 == COLON) ) { s = 15; } else if ( (LA150_163 == QMARK) ) { s = 16; } else if ( (LA150_163 == EOF || LA150_163 == CRLF || LA150_163 == SP) ) { s = 6; } else if ( (LA150_163 == SEMI) ) { s = 18; } else if ( (LA150_163 == COMMA) ) { s = 19; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_163 == AT) ) { s = 8; } else if ( (LA150_163 == COMMON_CHAR || LA150_163 == HEX_CHAR) ) { s = 9; } else if ( (LA150_163 == DIGIT) ) { s = 10; } else if ( (LA150_163 == DOT) ) { s = 17; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_163 == PERCENT) ) { s = 4; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_163 == AND || LA150_163 == DOLLARD || LA150_163 == EQUAL || LA150_163 == PLUS || LA150_163 == SLASH) ) { s = 5; } else if ( (LA150_163 == DASH) ) { s = 12; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_163 == EMARK || LA150_163 == LPAREN || LA150_163 == RPAREN || ((LA150_163 >= SQUOTE) && (LA150_163 <= USCORE))) ) { s = 3; } SEEK(index150_163); if ( s>=0 ) { return s; } } break; case 109: { ANTLR3_UINT32 LA150_116; ANTLR3_MARKER index150_116; LA150_116 = LA(1); index150_116 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) && (LA150_116 == AT) ) { s = 8; } else if ( (LA150_116 == COMMON_CHAR || LA150_116 == HEX_CHAR) ) { s = 55; } else if ( (LA150_116 == DIGIT) ) { s = 56; } else if ( (LA150_116 == DASH || LA150_116 == DOT || LA150_116 == EMARK || LA150_116 == LPAREN || LA150_116 == RPAREN || ((LA150_116 >= SQUOTE) && (LA150_116 <= USCORE))) ) { s = 57; } else if ( (LA150_116 == PERCENT) ) { s = 58; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_116 == AND) ) { s = 29; } else if ( (LA150_116 == EQUAL) ) { s = 59; } else if ( (LA150_116 == PLUS) ) { s = 60; } else if ( (LA150_116 == DOLLARD) ) { s = 61; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_116 == COMMA) ) { s = 33; } else if ( (LA150_116 == COLON || LA150_116 == LSBRAQUET || LA150_116 == QMARK || LA150_116 == RSBRAQUET || LA150_116 == SLASH) ) { s = 6; } SEEK(index150_116); if ( s>=0 ) { return s; } } break; case 110: { ANTLR3_UINT32 LA150_155; ANTLR3_MARKER index150_155; LA150_155 = LA(1); index150_155 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) && (LA150_155 == AT) ) { s = 8; } else if ( (LA150_155 == COMMON_CHAR || LA150_155 == HEX_CHAR) ) { s = 118; } else if ( (LA150_155 == DIGIT) ) { s = 119; } else if ( (LA150_155 == DASH || LA150_155 == DOT || LA150_155 == EMARK || LA150_155 == LPAREN || LA150_155 == RPAREN || ((LA150_155 >= SQUOTE) && (LA150_155 <= USCORE))) ) { s = 120; } else if ( (LA150_155 == PERCENT) ) { s = 121; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_155 == AND) ) { s = 29; } else if ( (LA150_155 == EQUAL) ) { s = 140; } else if ( (LA150_155 == PLUS) ) { s = 122; } else if ( (LA150_155 == DOLLARD) ) { s = 123; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_155 == COMMA) ) { s = 33; } else if ( (LA150_155 == COLON || LA150_155 == LSBRAQUET || LA150_155 == QMARK || LA150_155 == RSBRAQUET || LA150_155 == SLASH) ) { s = 6; } SEEK(index150_155); if ( s>=0 ) { return s; } } break; case 111: { ANTLR3_UINT32 LA150_11; ANTLR3_MARKER index150_11; LA150_11 = LA(1); index150_11 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) && (LA150_11 == COLON) ) { s = 7; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_11 == AT) ) { s = 8; } else if ( (LA150_11 == COMMON_CHAR || LA150_11 == HEX_CHAR) ) { s = 1; } else if ( (LA150_11 == DIGIT) ) { s = 20; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_11 == DASH || LA150_11 == DOT || LA150_11 == EMARK || LA150_11 == LPAREN || LA150_11 == RPAREN || ((LA150_11 >= SQUOTE) && (LA150_11 <= USCORE))) ) { s = 3; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_11 == PERCENT) ) { s = 4; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_11 == AND || LA150_11 == COMMA || LA150_11 == DOLLARD || LA150_11 == EQUAL || ((LA150_11 >= PLUS) && (LA150_11 <= QMARK)) || ((LA150_11 >= SEMI) && (LA150_11 <= SLASH))) ) { s = 5; } SEEK(index150_11); if ( s>=0 ) { return s; } } break; case 112: { ANTLR3_UINT32 LA150_34; ANTLR3_MARKER index150_34; LA150_34 = LA(1); index150_34 = INDEX(); REWINDLAST(); s = -1; if ( (LA150_34 == COMMON_CHAR || LA150_34 == HEX_CHAR) ) { s = 55; } else if ( (LA150_34 == DIGIT) ) { s = 56; } else if ( (LA150_34 == DASH || LA150_34 == DOT || LA150_34 == EMARK || LA150_34 == LPAREN || LA150_34 == RPAREN || ((LA150_34 >= SQUOTE) && (LA150_34 <= USCORE))) ) { s = 57; } else if ( (LA150_34 == PERCENT) ) { s = 58; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_34 == AND) ) { s = 29; } else if ( (LA150_34 == EQUAL) ) { s = 59; } else if ( (LA150_34 == PLUS) ) { s = 60; } else if ( (LA150_34 == DOLLARD) ) { s = 61; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_34 == COMMA) ) { s = 33; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_34 == AT) ) { s = 8; } else if ( (LA150_34 == COLON || LA150_34 == LSBRAQUET || LA150_34 == QMARK || LA150_34 == RSBRAQUET || LA150_34 == SLASH) ) { s = 6; } SEEK(index150_34); if ( s>=0 ) { return s; } } break; case 113: { ANTLR3_UINT32 LA150_125; ANTLR3_MARKER index150_125; LA150_125 = LA(1); index150_125 = INDEX(); REWINDLAST(); s = -1; if ( (LA150_125 == COMMON_CHAR || LA150_125 == HEX_CHAR) ) { s = 118; } else if ( (LA150_125 == DIGIT) ) { s = 119; } else if ( (LA150_125 == DASH || LA150_125 == DOT || LA150_125 == EMARK || LA150_125 == LPAREN || LA150_125 == RPAREN || ((LA150_125 >= SQUOTE) && (LA150_125 <= USCORE))) ) { s = 120; } else if ( (LA150_125 == PERCENT) ) { s = 121; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_125 == AND) ) { s = 29; } else if ( (LA150_125 == EQUAL) ) { s = 140; } else if ( (LA150_125 == PLUS) ) { s = 122; } else if ( (LA150_125 == DOLLARD) ) { s = 123; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_125 == COMMA) ) { s = 33; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_125 == AT) ) { s = 8; } else if ( (LA150_125 == COLON || LA150_125 == LSBRAQUET || LA150_125 == QMARK || LA150_125 == RSBRAQUET || LA150_125 == SLASH) ) { s = 6; } SEEK(index150_125); if ( s>=0 ) { return s; } } break; case 114: { ANTLR3_UINT32 LA150_91; ANTLR3_MARKER index150_91; LA150_91 = LA(1); index150_91 = INDEX(); REWINDLAST(); s = -1; if ( (LA150_91 == COLON) ) { s = 86; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_91 == AT) ) { s = 8; } else if ( (LA150_91 == COMMON_CHAR || LA150_91 == HEX_CHAR) ) { s = 87; } else if ( (LA150_91 == DIGIT) ) { s = 88; } else if ( (LA150_91 == DASH || LA150_91 == DOT || LA150_91 == EMARK || LA150_91 == LPAREN || LA150_91 == RPAREN || ((LA150_91 >= SQUOTE) && (LA150_91 <= USCORE))) ) { s = 89; } else if ( (LA150_91 == PERCENT) ) { s = 90; } else if ( (LA150_91 == AND) ) { s = 92; } else if ( (LA150_91 == SEMI) ) { s = 18; } else if ( (LA150_91 == EOF || LA150_91 == CRLF || LA150_91 == LSBRAQUET || LA150_91 == RSBRAQUET || LA150_91 == SP) ) { s = 6; } else if ( (LA150_91 == COMMA) ) { s = 19; } else if ( (LA150_91 == DOLLARD || ((LA150_91 >= PLUS) && (LA150_91 <= QMARK)) || LA150_91 == SLASH) ) { s = 91; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_91 == EQUAL) ) { s = 5; } SEEK(index150_91); if ( s>=0 ) { return s; } } break; case 115: { ANTLR3_UINT32 LA150_64; ANTLR3_MARKER index150_64; LA150_64 = LA(1); index150_64 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) && (LA150_64 == COLON) ) { s = 7; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_64 == AT) ) { s = 8; } else if ( (LA150_64 == COMMON_CHAR || LA150_64 == HEX_CHAR) ) { s = 94; } else if ( (LA150_64 == DIGIT) ) { s = 95; } else if ( (LA150_64 == DASH || LA150_64 == DOT || LA150_64 == EMARK || LA150_64 == LPAREN || LA150_64 == RPAREN || ((LA150_64 >= SQUOTE) && (LA150_64 <= USCORE))) ) { s = 96; } else if ( (LA150_64 == PERCENT) ) { s = 97; } else if ( (LA150_64 == PLUS) ) { s = 98; } else if ( (LA150_64 == BQUOTE || LA150_64 == CRLF || LA150_64 == DQUOTE || LA150_64 == SP) ) { s = 6; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_64 == AND || LA150_64 == COMMA || LA150_64 == DOLLARD || LA150_64 == EQUAL || LA150_64 == QMARK || ((LA150_64 >= SEMI) && (LA150_64 <= SLASH))) ) { s = 5; } SEEK(index150_64); if ( s>=0 ) { return s; } } break; case 116: { ANTLR3_UINT32 LA150_94; ANTLR3_MARKER index150_94; LA150_94 = LA(1); index150_94 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) && (LA150_94 == COLON) ) { s = 7; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_94 == AT) ) { s = 8; } else if ( (LA150_94 == COMMON_CHAR || LA150_94 == HEX_CHAR) ) { s = 94; } else if ( (LA150_94 == DIGIT) ) { s = 95; } else if ( (LA150_94 == DASH || LA150_94 == DOT || LA150_94 == EMARK || LA150_94 == LPAREN || LA150_94 == RPAREN || ((LA150_94 >= SQUOTE) && (LA150_94 <= USCORE))) ) { s = 96; } else if ( (LA150_94 == PERCENT) ) { s = 97; } else if ( (LA150_94 == COMMA) ) { s = 19; } else if ( (LA150_94 == EOF || LA150_94 == BQUOTE || LA150_94 == CRLF || LA150_94 == SP) ) { s = 6; } else if ( (LA150_94 == SEMI) ) { s = 18; } else if ( (LA150_94 == PLUS) ) { s = 98; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_94 == AND || LA150_94 == DOLLARD || LA150_94 == EQUAL || LA150_94 == QMARK || LA150_94 == SLASH) ) { s = 5; } SEEK(index150_94); if ( s>=0 ) { return s; } } break; case 117: { ANTLR3_UINT32 LA150_95; ANTLR3_MARKER index150_95; LA150_95 = LA(1); index150_95 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) && (LA150_95 == COLON) ) { s = 7; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_95 == AT) ) { s = 8; } else if ( (LA150_95 == COMMON_CHAR || LA150_95 == HEX_CHAR) ) { s = 94; } else if ( (LA150_95 == DIGIT) ) { s = 95; } else if ( (LA150_95 == DASH || LA150_95 == DOT || LA150_95 == EMARK || LA150_95 == LPAREN || LA150_95 == RPAREN || ((LA150_95 >= SQUOTE) && (LA150_95 <= USCORE))) ) { s = 96; } else if ( (LA150_95 == PERCENT) ) { s = 97; } else if ( (LA150_95 == COMMA) ) { s = 19; } else if ( (LA150_95 == EOF || LA150_95 == BQUOTE || LA150_95 == CRLF || LA150_95 == SP) ) { s = 6; } else if ( (LA150_95 == SEMI) ) { s = 18; } else if ( (LA150_95 == PLUS) ) { s = 98; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_95 == AND || LA150_95 == DOLLARD || LA150_95 == EQUAL || LA150_95 == QMARK || LA150_95 == SLASH) ) { s = 5; } SEEK(index150_95); if ( s>=0 ) { return s; } } break; case 118: { ANTLR3_UINT32 LA150_157; ANTLR3_MARKER index150_157; LA150_157 = LA(1); index150_157 = INDEX(); REWINDLAST(); s = -1; if ( (LA150_157 == COLON) ) { s = 156; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_157 == AT) ) { s = 8; } else if ( (LA150_157 == COMMON_CHAR || LA150_157 == HEX_CHAR) ) { s = 157; } else if ( (LA150_157 == DIGIT) ) { s = 158; } else if ( (LA150_157 == DASH || LA150_157 == DOT || LA150_157 == EMARK || LA150_157 == LPAREN || LA150_157 == RPAREN || ((LA150_157 >= SQUOTE) && (LA150_157 <= USCORE))) ) { s = 159; } else if ( (LA150_157 == PERCENT) ) { s = 160; } else if ( (LA150_157 == SEMI) ) { s = 18; } else if ( (LA150_157 == EOF || LA150_157 == CRLF || LA150_157 == LSBRAQUET || LA150_157 == RSBRAQUET || LA150_157 == SP) ) { s = 6; } else if ( (LA150_157 == COMMA) ) { s = 19; } else if ( (LA150_157 == AND) ) { s = 92; } else if ( (LA150_157 == DOLLARD || ((LA150_157 >= PLUS) && (LA150_157 <= QMARK)) || LA150_157 == SLASH) ) { s = 161; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_157 == EQUAL) ) { s = 5; } SEEK(index150_157); if ( s>=0 ) { return s; } } break; case 119: { ANTLR3_UINT32 LA150_18; ANTLR3_MARKER index150_18; LA150_18 = LA(1); index150_18 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) && (LA150_18 == COLON) ) { s = 7; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_18 == AT) ) { s = 8; } else if ( (LA150_18 == COMMON_CHAR || LA150_18 == HEX_CHAR) ) { s = 40; } else if ( (LA150_18 == DIGIT) ) { s = 41; } else if ( (LA150_18 == DASH || LA150_18 == DOT || LA150_18 == EMARK || LA150_18 == LPAREN || LA150_18 == RPAREN || ((LA150_18 >= SQUOTE) && (LA150_18 <= USCORE))) ) { s = 42; } else if ( (LA150_18 == PERCENT) ) { s = 43; } else if ( (LA150_18 == PLUS) ) { s = 44; } else if ( (LA150_18 == BQUOTE || LA150_18 == CRLF || LA150_18 == SP) ) { s = 6; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_18 == AND || LA150_18 == COMMA || LA150_18 == DOLLARD || LA150_18 == EQUAL || LA150_18 == QMARK || ((LA150_18 >= SEMI) && (LA150_18 <= SLASH))) ) { s = 5; } SEEK(index150_18); if ( s>=0 ) { return s; } } break; case 120: { ANTLR3_UINT32 LA150_16; ANTLR3_MARKER index150_16; LA150_16 = LA(1); index150_16 = INDEX(); REWINDLAST(); s = -1; if ( (LA150_16 == COLON) ) { s = 34; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_16 == AT) ) { s = 8; } else if ( (LA150_16 == COMMON_CHAR || LA150_16 == HEX_CHAR) ) { s = 35; } else if ( (LA150_16 == DIGIT) ) { s = 36; } else if ( (LA150_16 == DASH || LA150_16 == DOT || LA150_16 == EMARK || LA150_16 == LPAREN || LA150_16 == RPAREN || ((LA150_16 >= SQUOTE) && (LA150_16 <= USCORE))) ) { s = 37; } else if ( (LA150_16 == PERCENT) ) { s = 38; } else if ( (LA150_16 == DOLLARD || ((LA150_16 >= PLUS) && (LA150_16 <= QMARK)) || LA150_16 == SLASH) ) { s = 39; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_16 == AND || LA150_16 == COMMA || LA150_16 == EQUAL || LA150_16 == SEMI) ) { s = 5; } else if ( (LA150_16 == LSBRAQUET || LA150_16 == RSBRAQUET) ) { s = 6; } SEEK(index150_16); if ( s>=0 ) { return s; } } break; case 121: { ANTLR3_UINT32 LA150_92; ANTLR3_MARKER index150_92; LA150_92 = LA(1); index150_92 = INDEX(); REWINDLAST(); s = -1; if ( (LA150_92 == COLON) ) { s = 125; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_92 == AT) ) { s = 8; } else if ( (LA150_92 == COMMON_CHAR || LA150_92 == HEX_CHAR) ) { s = 126; } else if ( (LA150_92 == DIGIT) ) { s = 127; } else if ( (LA150_92 == DASH || LA150_92 == DOT || LA150_92 == EMARK || LA150_92 == LPAREN || LA150_92 == RPAREN || ((LA150_92 >= SQUOTE) && (LA150_92 <= USCORE))) ) { s = 128; } else if ( (LA150_92 == PERCENT) ) { s = 129; } else if ( (LA150_92 == DOLLARD || ((LA150_92 >= PLUS) && (LA150_92 <= QMARK)) || LA150_92 == SLASH) ) { s = 130; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_92 == AND || LA150_92 == COMMA || LA150_92 == EQUAL || LA150_92 == SEMI) ) { s = 5; } else if ( (LA150_92 == LSBRAQUET || LA150_92 == RSBRAQUET) ) { s = 6; } SEEK(index150_92); if ( s>=0 ) { return s; } } break; case 122: { ANTLR3_UINT32 LA150_0; ANTLR3_MARKER index150_0; LA150_0 = LA(1); index150_0 = INDEX(); REWINDLAST(); s = -1; if ( (LA150_0 == COMMON_CHAR || LA150_0 == HEX_CHAR) ) { s = 1; } else if ( (LA150_0 == DIGIT) ) { s = 2; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_0 == DASH || LA150_0 == DOT || LA150_0 == EMARK || LA150_0 == LPAREN || LA150_0 == RPAREN || ((LA150_0 >= SQUOTE) && (LA150_0 <= USCORE))) ) { s = 3; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_0 == PERCENT) ) { s = 4; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_0 == AND || LA150_0 == COMMA || LA150_0 == DOLLARD || LA150_0 == EQUAL || ((LA150_0 >= PLUS) && (LA150_0 <= QMARK)) || ((LA150_0 >= SEMI) && (LA150_0 <= SLASH))) ) { s = 5; } else if ( (LA150_0 == LSBRAQUET) ) { s = 6; } SEEK(index150_0); if ( s>=0 ) { return s; } } break; case 123: { ANTLR3_UINT32 LA150_50; ANTLR3_MARKER index150_50; LA150_50 = LA(1); index150_50 = INDEX(); REWINDLAST(); s = -1; if ( (synpred9_belle_sip_message(ctx)) && (LA150_50 == COLON) ) { s = 7; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_50 == AT) ) { s = 8; } else if ( (LA150_50 == COMMON_CHAR || LA150_50 == HEX_CHAR) ) { s = 50; } else if ( (LA150_50 == DIGIT) ) { s = 51; } else if ( (LA150_50 == DOT) ) { s = 11; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_50 == PERCENT) ) { s = 4; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_50 == AND || LA150_50 == COMMA || LA150_50 == DOLLARD || LA150_50 == EQUAL || ((LA150_50 >= PLUS) && (LA150_50 <= QMARK)) || ((LA150_50 >= SEMI) && (LA150_50 <= SLASH))) ) { s = 5; } else if ( (LA150_50 == DASH) ) { s = 21; } else if ( (synpred9_belle_sip_message(ctx)) && (LA150_50 == EMARK || LA150_50 == LPAREN || LA150_50 == RPAREN || ((LA150_50 >= SQUOTE) && (LA150_50 <= USCORE))) ) { s = 3; } SEEK(index150_50); if ( s>=0 ) { return s; } } break; } if (BACKTRACKING > 0) { FAILEDFLAG = ANTLR3_TRUE; return -1; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)"1791:43: ( ( userinfo[$paramless_uri::current] )=> ( userinfo[$paramless_uri::current] hostport[$paramless_uri::current] ) | hostport[$paramless_uri::current] )"; EXCEPTION->decisionNum = 150; EXCEPTION->state = _s; return -1; } /* Declare tracking structure for Cyclic DFA 150 */ static ANTLR3_CYCLIC_DFA cdfa150 = { 150, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"1791:43: ( ( userinfo[$paramless_uri::current] )=> ( userinfo[$paramless_uri::current] hostport[$paramless_uri::current] ) | hostport[$paramless_uri::current] )", (CDFA_SPECIAL_FUNC) dfa150_sst, antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa150_eot, /* EOT table */ dfa150_eof, /* EOF table */ dfa150_min, /* Minimum tokens for each state */ dfa150_max, /* Maximum tokens for each state */ dfa150_accept, /* Accept table */ dfa150_special, /* Special transition states */ dfa150_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 150 * --------------------- *//** Static dfa state tables for Cyclic dfa: * 1803:33: ( ( ( userinfo[NULL] )=> userinfo[$uri::current] hostport[$uri::current] ) | hostport[$uri::current] ) */ static const ANTLR3_INT32 dfa152_eot[157] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa152_eof[157] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, 6, 6, -1, -1, 6, -1, -1, 6, 6, -1, -1, -1, 6, 6, -1, -1, 6, -1, -1, -1, -1, -1, -1, -1, 6, 6, 6, 6, -1, 6, 6, -1, -1, -1, -1, -1, -1, -1, -1, 6, -1, 6, 6, 6, -1, 6, -1, 6, 6, 6, -1, -1, -1, -1, -1, -1, 6, -1, -1, 6, -1, 6, 6, -1, -1, 6, 6, 6, -1, 6, 6, 6, 6, 6, 6, 6, 6, -1, 6, 6, 6, -1, 6, 6, 6, -1, -1, 6, 6, 6, 6, 6, 6, -1, 6, -1, -1, 6, -1, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6, 6, 6, 6, 6, 6, 6, -1, 6, 6, -1, 6, 6, 6, 6, -1, 6, 6, -1, 6, 6, 6, 6, -1, 6, -1, 6, -1, -1, 6, 6 }; static const ANTLR3_INT32 dfa152_min[157] = { 4, 4, 4, -1, -1, -1, -1, -1, -1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, -1, 4, -1, -1, -1, -1, -1, -1, -1, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 13, 4, 4, 4, 4, 13, 4, 4, 4, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 13, 13, 4, 13, 4, 4, 4, 13, 4, 4, 13, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 13, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 13, 13, 4, 4 }; static const ANTLR3_INT32 dfa152_max[157] = { 40, 40, 40, -1, -1, -1, -1, -1, -1, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, -1, 40, -1, -1, -1, -1, -1, -1, -1, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 19, 40, 40, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 19, 19, 40, 19, 40, 40, 40, 19, 40, 40, 19, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 19, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 19, 19, 40, 40 }; static const ANTLR3_INT32 dfa152_accept[157] = { -1, -1, -1, 1, 1, 1, 2, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, 1, 1, 1, 1, 1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa152_special[157] = { 79, 12, 26, -1, -1, -1, -1, -1, -1, 20, 55, 108, 5, 58, 78, 93, 31, 42, 115, 47, 76, 71, 25, 24, -1, 10, -1, -1, -1, -1, -1, -1, -1, 69, 80, 21, 106, -1, 109, 91, 111, 82, 39, 87, -1, 29, 118, 54, 62, 83, 23, 85, 45, -1, 53, 67, 49, 48, 35, 2, -1, 13, 97, 16, -1, 103, 95, 98, 37, -1, 74, 28, 32, -1, 102, 61, 107, -1, 27, 18, 22, 110, 34, 38, 0, 50, -1, 77, 43, 94, -1, 36, 3, 44, -1, 65, 6, 4, 8, 101, 63, 113, -1, 46, 116, 51, 57, 81, 41, -1, -1, 104, -1, 14, 99, 17, -1, 96, 100, -1, 112, 84, 40, 88, -1, 30, 90, 19, 59, 70, 11, 9, 64, -1, 68, 114, -1, 66, 117, 72, 1, -1, 75, 73, 105, 86, 56, 15, 60, -1, 7, 52, 92, -1, -1, 89, 33 }; /** Used when there is no transition table entry for a particular state */ #define dfa152_T_empty NULL static const ANTLR3_INT32 dfa152_T0[] = { 87, 8, -1, -1, 82, 5, 83, 6, 88, 84, 87, 85, 6, 88, 5, 83, -1, -1, -1, 88, 6, -1, -1, 86, 87, 18, 6, -1, 88, 6, 16, 87, 6, 88, 88, 88, 88 }; static const ANTLR3_INT32 dfa152_T1[] = { 95, 8, -1, -1, 6, 32, 138, 6, 140, 139, 143, 140, 6, 140, 29, 138, -1, -1, -1, 140, 6, -1, -1, 141, 142, 6, 6, -1, 140, 6, -1, 6, 6, 140, 140, 140, 140 }; static const ANTLR3_INT32 dfa152_T2[] = { 87, 8, -1, -1, 82, 5, 83, -1, 88, 84, 87, 85, -1, 88, 5, 83, -1, -1, -1, 88, 6, -1, -1, 86, 87, 5, -1, -1, 88, 6, 5, 87, -1, 88, 88, 88, 88 }; static const ANTLR3_INT32 dfa152_T3[] = { 95, 8, -1, -1, 6, 32, 91, 6, 93, 92, 97, 93, 6, 93, 29, 91, -1, -1, -1, 93, 6, -1, -1, 94, 96, 6, 6, -1, 93, 6, -1, 6, 6, 93, 93, 93, 93 }; static const ANTLR3_INT32 dfa152_T4[] = { 5, 8, -1, -1, 7, 5, 9, -1, 20, 10, 5, 3, -1, 3, 5, 9, -1, -1, -1, 3, -1, -1, -1, 4, 5, 5, -1, -1, 3, -1, 5, 5, -1, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa152_T5[] = { 104, 8, -1, -1, 145, 5, 146, 6, 148, 147, 150, 148, 6, 148, 5, 146, -1, -1, -1, 148, 6, -1, -1, 149, 150, 150, 6, -1, 148, 6, 5, 150, 6, 148, 148, 148, 148 }; static const ANTLR3_INT32 dfa152_T6[] = { 28, 8, -1, -1, -1, 32, 24, 6, 26, 25, 31, 26, 6, 26, 29, 24, -1, -1, -1, 26, -1, -1, -1, 27, 30, 6, 6, -1, 26, -1, 6, -1, 6, 26, 26, 26, 26 }; static const ANTLR3_INT32 dfa152_T7[] = { 90, -1, -1, -1, -1, -1, 90 }; static const ANTLR3_INT32 dfa152_T8[] = { 69, -1, -1, -1, -1, -1, 69 }; static const ANTLR3_INT32 dfa152_T9[] = { 109, -1, -1, -1, -1, -1, 109 }; static const ANTLR3_INT32 dfa152_T10[] = { 110, -1, -1, -1, -1, -1, 110 }; static const ANTLR3_INT32 dfa152_T11[] = { 112, -1, -1, -1, -1, -1, 112 }; static const ANTLR3_INT32 dfa152_T12[] = { 119, -1, -1, -1, -1, -1, 119 }; static const ANTLR3_INT32 dfa152_T13[] = { 154, -1, -1, -1, -1, -1, 154 }; static const ANTLR3_INT32 dfa152_T14[] = { 133, -1, -1, -1, -1, -1, 133 }; static const ANTLR3_INT32 dfa152_T15[] = { 136, -1, -1, -1, -1, -1, 136 }; static const ANTLR3_INT32 dfa152_T16[] = { 153, -1, -1, -1, -1, -1, 153 }; static const ANTLR3_INT32 dfa152_T17[] = { 5, 8, -1, -1, 7, 5, 9, -1, 12, 10, 5, 11, -1, 3, 5, 9, -1, -1, -1, 3, -1, -1, -1, 4, 5, 5, -1, -1, 3, -1, 5, 5, -1, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa152_T18[] = { 60, -1, -1, -1, -1, -1, 60 }; static const ANTLR3_INT32 dfa152_T19[] = { 73, -1, -1, -1, -1, -1, 73 }; static const ANTLR3_INT32 dfa152_T20[] = { 28, 8, -1, -1, 6, 32, 61, -1, 63, 62, 67, 63, -1, 63, 65, 61, -1, -1, -1, 63, 6, -1, -1, 64, 66, 6, -1, -1, 63, 6, -1, 6, -1, 63, 63, 63, 63 }; static const ANTLR3_INT32 dfa152_T21[] = { 28, 8, -1, -1, 6, 32, 113, -1, 115, 114, 118, 115, -1, 115, 132, 113, -1, -1, -1, 115, 6, -1, -1, 116, 117, 6, -1, -1, 115, 6, -1, 6, -1, 115, 115, 115, 115 }; static const ANTLR3_INT32 dfa152_T22[] = { 78, 8, -1, -1, 6, 32, 74, 6, 81, 75, 80, 76, 6, 81, 29, 74, -1, -1, -1, 81, 6, -1, -1, 77, 79, 6, 6, -1, 81, 6, 6, 6, 6, 81, 81, 81, 81 }; static const ANTLR3_INT32 dfa152_T23[] = { 5, 8, -1, -1, 15, 5, 1, 6, 3, 128, 5, 3, 6, 3, 5, 1, -1, -1, -1, 3, -1, -1, -1, 4, 5, 18, 6, -1, 3, -1, 16, 5, 6, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa152_T24[] = { 5, 8, -1, -1, 15, 5, 9, 6, 12, 10, 5, 17, 6, 3, 5, 9, -1, -1, -1, 3, -1, -1, -1, 4, 5, 18, 6, -1, 3, -1, 16, 5, 6, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa152_T25[] = { 38, 8, -1, -1, 33, 5, 34, 6, 39, 35, 38, 36, 6, 39, 59, 34, -1, -1, -1, 39, 6, -1, -1, 37, 38, 18, 6, -1, 39, 6, 16, 38, 6, 39, 39, 39, 39 }; static const ANTLR3_INT32 dfa152_T26[] = { 54, 8, -1, -1, 6, 32, 50, 6, 58, 51, 57, 52, 6, 58, 55, 50, -1, -1, -1, 58, 6, -1, -1, 53, 56, 6, 6, -1, 58, 6, 6, 6, 6, 58, 58, 58, 58 }; static const ANTLR3_INT32 dfa152_T27[] = { 5, 8, -1, -1, 7, 5, 9, -1, 12, 48, 5, 49, -1, 3, 5, 9, -1, -1, -1, 3, -1, -1, -1, 4, 5, 5, -1, -1, 3, -1, 5, 5, -1, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa152_T28[] = { 5, 8, -1, -1, 15, 5, 1, 6, 3, 23, 5, 3, 6, 3, 5, 1, -1, -1, -1, 3, -1, -1, -1, 4, 5, 18, 6, -1, 3, -1, 16, 5, 6, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa152_T29[] = { 5, 8, -1, -1, 7, 5, 9, -1, 12, 13, 5, 14, -1, 3, 5, 9, -1, -1, -1, 3, -1, -1, -1, 4, 5, 5, -1, -1, 3, -1, 5, 5, -1, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa152_T30[] = { 5, 8, -1, -1, 15, 5, 1, 6, 3, 72, 5, 3, 6, 3, 5, 1, -1, -1, -1, 3, -1, -1, -1, 4, 5, 18, 6, -1, 3, -1, 16, 5, 6, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa152_T31[] = { 5, 8, -1, -1, 40, 5, 41, -1, 43, 42, 45, 43, -1, 43, 68, 41, -1, -1, -1, 43, 6, -1, -1, 44, 45, 45, -1, -1, 43, 6, 5, 45, -1, 43, 43, 43, 43 }; static const ANTLR3_INT32 dfa152_T32[] = { 5, 8, -1, -1, 120, 5, 121, -1, 123, 122, 125, 123, -1, 123, 135, 121, -1, -1, -1, 123, 6, -1, -1, 124, 125, 125, -1, -1, 123, 6, 5, 125, -1, 123, 123, 123, 123 }; static const ANTLR3_INT32 dfa152_T33[] = { 38, 8, -1, -1, 33, 5, 34, 6, 39, 35, 38, 36, 6, 39, 5, 34, -1, -1, -1, 39, 6, -1, -1, 37, 38, 18, 6, -1, 39, 6, 16, 38, 6, 39, 39, 39, 39 }; static const ANTLR3_INT32 dfa152_T34[] = { 5, 8, -1, -1, 7, 5, 9, -1, 12, 106, 5, 107, -1, 3, 5, 9, -1, -1, -1, 3, -1, -1, -1, 4, 5, 5, -1, -1, 3, -1, 5, 5, -1, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa152_T35[] = { 104, 8, -1, -1, 98, 5, 99, 6, 101, 100, 103, 101, 6, 101, 5, 99, -1, -1, -1, 101, 6, -1, -1, 102, 103, 103, 6, -1, 101, 6, 5, 103, 6, 101, 101, 101, 101 }; static const ANTLR3_INT32 dfa152_T36[] = { 5, 8, -1, -1, 15, 5, 1, 6, 3, 19, 5, 3, 6, 3, 5, 1, -1, -1, -1, 3, -1, -1, -1, 4, 5, 18, 6, -1, 3, -1, 16, 5, 6, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa152_T37[] = { 105, -1, -1, -1, -1, -1, 105 }; static const ANTLR3_INT32 dfa152_T38[] = { 111, -1, -1, -1, -1, -1, 111 }; static const ANTLR3_INT32 dfa152_T39[] = { 129, -1, -1, -1, -1, -1, 129 }; static const ANTLR3_INT32 dfa152_T40[] = { 130, -1, -1, -1, -1, -1, 130 }; static const ANTLR3_INT32 dfa152_T41[] = { 131, -1, -1, -1, -1, -1, 131 }; static const ANTLR3_INT32 dfa152_T42[] = { 134, -1, -1, -1, -1, -1, 134 }; static const ANTLR3_INT32 dfa152_T43[] = { 144, -1, -1, -1, -1, -1, 144 }; static const ANTLR3_INT32 dfa152_T44[] = { 151, -1, -1, -1, -1, -1, 151 }; static const ANTLR3_INT32 dfa152_T45[] = { 156, -1, -1, -1, -1, -1, 156 }; static const ANTLR3_INT32 dfa152_T46[] = { 155, -1, -1, -1, -1, -1, 155 }; static const ANTLR3_INT32 dfa152_T47[] = { 5, 8, -1, -1, 7, 5, 46, -1, 20, 47, 5, 11, -1, 3, 5, 46, -1, -1, -1, 3, -1, -1, -1, 4, 5, 5, -1, -1, 3, -1, 5, 5, -1, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa152_T48[] = { 5, 8, -1, -1, 15, 5, 9, 6, 12, 126, 5, 127, 6, 3, 5, 9, -1, -1, -1, 3, -1, -1, -1, 4, 5, 18, 6, -1, 3, -1, 16, 5, 6, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa152_T49[] = { 5, 8, -1, -1, 15, 5, 9, 6, 12, 21, 5, 22, 6, 3, 5, 9, -1, -1, -1, 3, -1, -1, -1, 4, 5, 18, 6, -1, 3, -1, 16, 5, 6, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa152_T50[] = { 5, 8, -1, -1, 15, 5, 9, 6, 12, 137, 5, 11, 6, 3, 5, 9, -1, -1, -1, 3, -1, -1, -1, 4, 5, 18, 6, -1, 3, -1, 16, 5, 6, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa152_T51[] = { 5, 8, -1, -1, 15, 5, 9, 6, 12, 70, 5, 71, 6, 3, 5, 9, -1, -1, -1, 3, -1, -1, -1, 4, 5, 18, 6, -1, 3, -1, 16, 5, 6, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa152_T52[] = { 28, 8, -1, -1, 6, 32, 113, -1, 115, 114, 118, 115, -1, 115, 29, 113, -1, -1, -1, 115, 6, -1, -1, 116, 117, 6, -1, -1, 115, 6, -1, 6, -1, 115, 115, 115, 115 }; static const ANTLR3_INT32 dfa152_T53[] = { 5, 8, -1, -1, 15, 5, 9, 6, 12, 152, 5, 17, 6, 3, 5, 9, -1, -1, -1, 3, -1, -1, -1, 4, 5, 18, 6, -1, 3, -1, 16, 5, 6, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa152_T54[] = { 78, 8, -1, -1, 6, 32, 74, -1, 81, 75, 80, 76, -1, 81, 29, 74, -1, -1, -1, 81, 6, -1, -1, 77, 79, -1, -1, -1, 81, 6, -1, 6, -1, 81, 81, 81, 81 }; static const ANTLR3_INT32 dfa152_T55[] = { 5, 8, -1, -1, 15, 5, 9, 6, 12, 10, 5, 22, 6, 3, 5, 9, -1, -1, -1, 3, -1, -1, -1, 4, 5, 18, 6, -1, 3, -1, 16, 5, 6, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa152_T56[] = { 89, -1, -1, -1, -1, -1, 89 }; static const ANTLR3_INT32 dfa152_T57[] = { 108, -1, -1, -1, -1, -1, 108 }; static const ANTLR3_INT32 dfa152_T58[] = { 5, 8, -1, -1, 15, 5, 9, 6, 12, 10, 5, 71, 6, 3, 5, 9, -1, -1, -1, 3, -1, -1, -1, 4, 5, 18, 6, -1, 3, -1, 16, 5, 6, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa152_T59[] = { 5, 8, -1, -1, 7, 5, 46, -1, 20, 47, 5, 3, -1, 3, 5, 46, -1, -1, -1, 3, -1, -1, -1, 4, 5, 5, -1, -1, 3, -1, 5, 5, -1, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa152_T60[] = { 5, 8, -1, -1, 7, 5, 1, -1, 3, 23, 5, 3, -1, 3, 5, 1, -1, -1, -1, 3, -1, -1, -1, 4, 5, 5, -1, -1, 3, -1, 5, 5, -1, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa152_T61[] = { 5, -1, -1, -1, -1, 5, 1, -1, 3, 2, 5, 3, -1, 3, 5, 1, -1, -1, -1, 3, 6, -1, -1, 4, 5, 5, -1, -1, 3, -1, 5, 5, -1, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa152_T62[] = { 5, 8, -1, -1, 7, 5, 1, -1, 3, 128, 5, 3, -1, 3, 5, 1, -1, -1, -1, 3, -1, -1, -1, 4, 5, 5, -1, -1, 3, -1, 5, 5, -1, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa152_T63[] = { 5, 8, -1, -1, 7, 5, 1, -1, 3, 72, 5, 3, -1, 3, 5, 1, -1, -1, -1, 3, -1, -1, -1, 4, 5, 5, -1, -1, 3, -1, 5, 5, -1, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa152_T64[] = { 5, 8, -1, -1, 15, 5, 9, 6, 12, 10, 5, 127, 6, 3, 5, 9, -1, -1, -1, 3, -1, -1, -1, 4, 5, 18, 6, -1, 3, -1, 16, 5, 6, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa152_T65[] = { 28, 8, -1, -1, -1, 32, 24, -1, 26, 25, 31, 26, -1, 26, 29, 24, -1, -1, -1, 26, -1, -1, -1, 27, 30, -1, -1, -1, 26, -1, -1, -1, -1, 26, 26, 26, 26 }; static const ANTLR3_INT32 dfa152_T66[] = { 5, 8, -1, -1, 7, 5, 1, -1, 3, 19, 5, 3, -1, 3, 5, 1, -1, -1, -1, 3, -1, -1, -1, 4, 5, 5, -1, -1, 3, -1, 5, 5, -1, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa152_T67[] = { 5, 8, -1, -1, 40, 5, 41, -1, 43, 42, 45, 43, -1, 43, 5, 41, -1, -1, -1, 43, 6, -1, -1, 44, 45, 45, -1, -1, 43, 6, 5, 45, -1, 43, 43, 43, 43 }; static const ANTLR3_INT32 dfa152_T68[] = { 5, 8, -1, -1, 120, 5, 121, -1, 123, 122, 125, 123, -1, 123, 5, 121, -1, -1, -1, 123, 6, -1, -1, 124, 125, 125, -1, -1, 123, 6, 5, 125, -1, 123, 123, 123, 123 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa152_transitions[] = { dfa152_T61, dfa152_T17, dfa152_T29, NULL, NULL, NULL, NULL, NULL, NULL, dfa152_T24, dfa152_T24, dfa152_T66, dfa152_T4, dfa152_T49, dfa152_T60, dfa152_T65, dfa152_T33, dfa152_T36, dfa152_T67, dfa152_T17, dfa152_T59, dfa152_T55, dfa152_T28, dfa152_T27, NULL, dfa152_T6, NULL, NULL, NULL, NULL, NULL, NULL, NULL, dfa152_T26, dfa152_T25, dfa152_T25, dfa152_T25, dfa152_T18, dfa152_T25, dfa152_T25, dfa152_T20, dfa152_T31, dfa152_T31, dfa152_T31, dfa152_T8, dfa152_T31, dfa152_T47, dfa152_T47, dfa152_T51, dfa152_T63, dfa152_T26, dfa152_T26, dfa152_T26, dfa152_T19, dfa152_T26, dfa152_T54, dfa152_T26, dfa152_T26, dfa152_T26, dfa152_T2, dfa152_T56, dfa152_T20, dfa152_T20, dfa152_T20, dfa152_T7, dfa152_T3, dfa152_T20, dfa152_T20, dfa152_T35, dfa152_T37, dfa152_T58, dfa152_T30, dfa152_T34, dfa152_T57, dfa152_T22, dfa152_T22, dfa152_T22, dfa152_T9, dfa152_T22, dfa152_T22, dfa152_T22, dfa152_T22, dfa152_T22, dfa152_T0, dfa152_T0, dfa152_T0, dfa152_T10, dfa152_T0, dfa152_T0, dfa152_T25, dfa152_T38, dfa152_T3, dfa152_T3, dfa152_T3, dfa152_T11, dfa152_T52, dfa152_T3, dfa152_T3, dfa152_T3, dfa152_T35, dfa152_T35, dfa152_T35, dfa152_T12, dfa152_T35, dfa152_T68, dfa152_T31, dfa152_T48, dfa152_T62, dfa152_T26, dfa152_T39, dfa152_T40, dfa152_T20, dfa152_T41, dfa152_T21, dfa152_T21, dfa152_T21, dfa152_T14, dfa152_T21, dfa152_T21, dfa152_T42, dfa152_T21, dfa152_T32, dfa152_T32, dfa152_T32, dfa152_T15, dfa152_T32, dfa152_T64, dfa152_T23, dfa152_T50, dfa152_T22, dfa152_T0, dfa152_T3, dfa152_T1, dfa152_T43, dfa152_T35, dfa152_T5, dfa152_T44, dfa152_T53, dfa152_T1, dfa152_T1, dfa152_T1, dfa152_T16, dfa152_T1, dfa152_T1, dfa152_T21, dfa152_T1, dfa152_T5, dfa152_T5, dfa152_T5, dfa152_T13, dfa152_T5, dfa152_T32, dfa152_T24, dfa152_T46, dfa152_T45, dfa152_T1, dfa152_T5 }; static ANTLR3_INT32 dfa152_sst(pbelle_sip_messageParser ctx, pANTLR3_BASE_RECOGNIZER recognizer, pANTLR3_INT_STREAM is, pANTLR3_CYCLIC_DFA dfa, ANTLR3_INT32 s) { ANTLR3_INT32 _s; _s = s; switch (s) { case 0: { ANTLR3_UINT32 LA152_84; ANTLR3_MARKER index152_84; LA152_84 = LA(1); index152_84 = INDEX(); REWINDLAST(); s = -1; if ( (LA152_84 == COLON) ) { s = 82; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_84 == AT) ) { s = 8; } else if ( (LA152_84 == COMMON_CHAR || LA152_84 == HEX_CHAR) ) { s = 83; } else if ( (LA152_84 == DIGIT) ) { s = 84; } else if ( (LA152_84 == DOT) ) { s = 85; } else if ( (LA152_84 == PERCENT) ) { s = 86; } else if ( (LA152_84 == QMARK) ) { s = 18; } else if ( (LA152_84 == SEMI) ) { s = 16; } else if ( (LA152_84 == EOF || LA152_84 == CRLF || LA152_84 == DQUOTE || LA152_84 == LSBRAQUET || LA152_84 == RAQUOT || LA152_84 == RSBRAQUET || LA152_84 == SP) ) { s = 6; } else if ( (LA152_84 == AND || LA152_84 == DOLLARD || LA152_84 == PLUS || LA152_84 == SLASH) ) { s = 87; } else if ( (LA152_84 == DASH || LA152_84 == EMARK || LA152_84 == LPAREN || LA152_84 == RPAREN || ((LA152_84 >= SQUOTE) && (LA152_84 <= USCORE))) ) { s = 88; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_84 == COMMA || LA152_84 == EQUAL) ) { s = 5; } SEEK(index152_84); if ( s>=0 ) { return s; } } break; case 1: { ANTLR3_UINT32 LA152_140; ANTLR3_MARKER index152_140; LA152_140 = LA(1); index152_140 = INDEX(); REWINDLAST(); s = -1; if ( (synpred10_belle_sip_message(ctx)) && (LA152_140 == AT) ) { s = 8; } else if ( (LA152_140 == COMMON_CHAR || LA152_140 == HEX_CHAR) ) { s = 138; } else if ( (LA152_140 == DIGIT) ) { s = 139; } else if ( (LA152_140 == DASH || LA152_140 == DOT || LA152_140 == EMARK || LA152_140 == LPAREN || LA152_140 == RPAREN || ((LA152_140 >= SQUOTE) && (LA152_140 <= USCORE))) ) { s = 140; } else if ( (LA152_140 == PERCENT) ) { s = 141; } else if ( (LA152_140 == AND) ) { s = 95; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_140 == EQUAL) ) { s = 29; } else if ( (LA152_140 == PLUS) ) { s = 142; } else if ( (LA152_140 == DOLLARD) ) { s = 143; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_140 == COMMA) ) { s = 32; } else if ( (LA152_140 == EOF || LA152_140 == COLON || LA152_140 == CRLF || LA152_140 == DQUOTE || LA152_140 == LSBRAQUET || ((LA152_140 >= QMARK) && (LA152_140 <= RAQUOT)) || LA152_140 == RSBRAQUET || ((LA152_140 >= SLASH) && (LA152_140 <= SP))) ) { s = 6; } SEEK(index152_140); if ( s>=0 ) { return s; } } break; case 2: { ANTLR3_UINT32 LA152_59; ANTLR3_MARKER index152_59; LA152_59 = LA(1); index152_59 = INDEX(); REWINDLAST(); s = -1; if ( (LA152_59 == COLON) ) { s = 82; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_59 == AT) ) { s = 8; } else if ( (LA152_59 == COMMON_CHAR || LA152_59 == HEX_CHAR) ) { s = 83; } else if ( (LA152_59 == DIGIT) ) { s = 84; } else if ( (LA152_59 == DOT) ) { s = 85; } else if ( (LA152_59 == PERCENT) ) { s = 86; } else if ( (LA152_59 == AND || LA152_59 == DOLLARD || LA152_59 == PLUS || LA152_59 == SLASH) ) { s = 87; } else if ( (LA152_59 == DASH || LA152_59 == EMARK || LA152_59 == LPAREN || LA152_59 == RPAREN || ((LA152_59 >= SQUOTE) && (LA152_59 <= USCORE))) ) { s = 88; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_59 == COMMA || LA152_59 == EQUAL || LA152_59 == QMARK || LA152_59 == SEMI) ) { s = 5; } else if ( (LA152_59 == LSBRAQUET || LA152_59 == RSBRAQUET) ) { s = 6; } SEEK(index152_59); if ( s>=0 ) { return s; } } break; case 3: { ANTLR3_UINT32 LA152_92; ANTLR3_MARKER index152_92; LA152_92 = LA(1); index152_92 = INDEX(); REWINDLAST(); s = -1; if ( (synpred10_belle_sip_message(ctx)) && (LA152_92 == AT) ) { s = 8; } else if ( (LA152_92 == COMMON_CHAR || LA152_92 == HEX_CHAR) ) { s = 91; } else if ( (LA152_92 == DIGIT) ) { s = 92; } else if ( (LA152_92 == DASH || LA152_92 == DOT || LA152_92 == EMARK || LA152_92 == LPAREN || LA152_92 == RPAREN || ((LA152_92 >= SQUOTE) && (LA152_92 <= USCORE))) ) { s = 93; } else if ( (LA152_92 == PERCENT) ) { s = 94; } else if ( (LA152_92 == AND) ) { s = 95; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_92 == EQUAL) ) { s = 29; } else if ( (LA152_92 == PLUS) ) { s = 96; } else if ( (LA152_92 == DOLLARD) ) { s = 97; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_92 == COMMA) ) { s = 32; } else if ( (LA152_92 == EOF || LA152_92 == COLON || LA152_92 == CRLF || LA152_92 == DQUOTE || LA152_92 == LSBRAQUET || ((LA152_92 >= QMARK) && (LA152_92 <= RAQUOT)) || LA152_92 == RSBRAQUET || ((LA152_92 >= SLASH) && (LA152_92 <= SP))) ) { s = 6; } SEEK(index152_92); if ( s>=0 ) { return s; } } break; case 4: { ANTLR3_UINT32 LA152_97; ANTLR3_MARKER index152_97; LA152_97 = LA(1); index152_97 = INDEX(); REWINDLAST(); s = -1; if ( (synpred10_belle_sip_message(ctx)) && (LA152_97 == AT) ) { s = 8; } else if ( (LA152_97 == COMMON_CHAR || LA152_97 == HEX_CHAR) ) { s = 91; } else if ( (LA152_97 == DIGIT) ) { s = 92; } else if ( (LA152_97 == DASH || LA152_97 == DOT || LA152_97 == EMARK || LA152_97 == LPAREN || LA152_97 == RPAREN || ((LA152_97 >= SQUOTE) && (LA152_97 <= USCORE))) ) { s = 93; } else if ( (LA152_97 == PERCENT) ) { s = 94; } else if ( (LA152_97 == AND) ) { s = 95; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_97 == EQUAL) ) { s = 29; } else if ( (LA152_97 == PLUS) ) { s = 96; } else if ( (LA152_97 == DOLLARD) ) { s = 97; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_97 == COMMA) ) { s = 32; } else if ( (LA152_97 == EOF || LA152_97 == COLON || LA152_97 == CRLF || LA152_97 == DQUOTE || LA152_97 == LSBRAQUET || ((LA152_97 >= QMARK) && (LA152_97 <= RAQUOT)) || LA152_97 == RSBRAQUET || ((LA152_97 >= SLASH) && (LA152_97 <= SP))) ) { s = 6; } SEEK(index152_97); if ( s>=0 ) { return s; } } break; case 5: { ANTLR3_UINT32 LA152_12; ANTLR3_MARKER index152_12; LA152_12 = LA(1); index152_12 = INDEX(); REWINDLAST(); s = -1; if ( (synpred10_belle_sip_message(ctx)) && (LA152_12 == COLON) ) { s = 7; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_12 == AT) ) { s = 8; } else if ( (LA152_12 == COMMON_CHAR || LA152_12 == HEX_CHAR) ) { s = 9; } else if ( (LA152_12 == DIGIT) ) { s = 10; } else if ( (LA152_12 == DASH) ) { s = 20; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_12 == PERCENT) ) { s = 4; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_12 == AND || LA152_12 == COMMA || LA152_12 == DOLLARD || LA152_12 == EQUAL || ((LA152_12 >= PLUS) && (LA152_12 <= QMARK)) || ((LA152_12 >= SEMI) && (LA152_12 <= SLASH))) ) { s = 5; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_12 == DOT || LA152_12 == EMARK || LA152_12 == LPAREN || LA152_12 == RPAREN || ((LA152_12 >= SQUOTE) && (LA152_12 <= USCORE))) ) { s = 3; } SEEK(index152_12); if ( s>=0 ) { return s; } } break; case 6: { ANTLR3_UINT32 LA152_96; ANTLR3_MARKER index152_96; LA152_96 = LA(1); index152_96 = INDEX(); REWINDLAST(); s = -1; if ( (synpred10_belle_sip_message(ctx)) && (LA152_96 == AT) ) { s = 8; } else if ( (LA152_96 == COMMON_CHAR || LA152_96 == HEX_CHAR) ) { s = 91; } else if ( (LA152_96 == DIGIT) ) { s = 92; } else if ( (LA152_96 == DASH || LA152_96 == DOT || LA152_96 == EMARK || LA152_96 == LPAREN || LA152_96 == RPAREN || ((LA152_96 >= SQUOTE) && (LA152_96 <= USCORE))) ) { s = 93; } else if ( (LA152_96 == PERCENT) ) { s = 94; } else if ( (LA152_96 == AND) ) { s = 95; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_96 == EQUAL) ) { s = 29; } else if ( (LA152_96 == PLUS) ) { s = 96; } else if ( (LA152_96 == DOLLARD) ) { s = 97; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_96 == COMMA) ) { s = 32; } else if ( (LA152_96 == EOF || LA152_96 == COLON || LA152_96 == CRLF || LA152_96 == DQUOTE || LA152_96 == LSBRAQUET || ((LA152_96 >= QMARK) && (LA152_96 <= RAQUOT)) || LA152_96 == RSBRAQUET || ((LA152_96 >= SLASH) && (LA152_96 <= SP))) ) { s = 6; } SEEK(index152_96); if ( s>=0 ) { return s; } } break; case 7: { ANTLR3_UINT32 LA152_150; ANTLR3_MARKER index152_150; LA152_150 = LA(1); index152_150 = INDEX(); REWINDLAST(); s = -1; if ( (LA152_150 == COLON) ) { s = 145; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_150 == AT) ) { s = 8; } else if ( (LA152_150 == COMMON_CHAR || LA152_150 == HEX_CHAR) ) { s = 146; } else if ( (LA152_150 == DIGIT) ) { s = 147; } else if ( (LA152_150 == DASH || LA152_150 == DOT || LA152_150 == EMARK || LA152_150 == LPAREN || LA152_150 == RPAREN || ((LA152_150 >= SQUOTE) && (LA152_150 <= USCORE))) ) { s = 148; } else if ( (LA152_150 == PERCENT) ) { s = 149; } else if ( (LA152_150 == AND) ) { s = 104; } else if ( (LA152_150 == EOF || LA152_150 == CRLF || LA152_150 == DQUOTE || LA152_150 == LSBRAQUET || LA152_150 == RAQUOT || LA152_150 == RSBRAQUET || LA152_150 == SP) ) { s = 6; } else if ( (LA152_150 == DOLLARD || ((LA152_150 >= PLUS) && (LA152_150 <= QMARK)) || LA152_150 == SLASH) ) { s = 150; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_150 == COMMA || LA152_150 == EQUAL || LA152_150 == SEMI) ) { s = 5; } SEEK(index152_150); if ( s>=0 ) { return s; } } break; case 8: { ANTLR3_UINT32 LA152_98; ANTLR3_MARKER index152_98; LA152_98 = LA(1); index152_98 = INDEX(); REWINDLAST(); s = -1; if ( (LA152_98 == COMMON_CHAR || LA152_98 == HEX_CHAR) ) { s = 91; } else if ( (LA152_98 == DIGIT) ) { s = 92; } else if ( (LA152_98 == DASH || LA152_98 == DOT || LA152_98 == EMARK || LA152_98 == LPAREN || LA152_98 == RPAREN || ((LA152_98 >= SQUOTE) && (LA152_98 <= USCORE))) ) { s = 93; } else if ( (LA152_98 == PERCENT) ) { s = 94; } else if ( (LA152_98 == AND) ) { s = 95; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_98 == EQUAL) ) { s = 29; } else if ( (LA152_98 == PLUS) ) { s = 96; } else if ( (LA152_98 == DOLLARD) ) { s = 97; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_98 == COMMA) ) { s = 32; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_98 == AT) ) { s = 8; } else if ( (LA152_98 == EOF || LA152_98 == COLON || LA152_98 == CRLF || LA152_98 == DQUOTE || LA152_98 == LSBRAQUET || ((LA152_98 >= QMARK) && (LA152_98 <= RAQUOT)) || LA152_98 == RSBRAQUET || ((LA152_98 >= SLASH) && (LA152_98 <= SP))) ) { s = 6; } SEEK(index152_98); if ( s>=0 ) { return s; } } break; case 9: { ANTLR3_UINT32 LA152_131; ANTLR3_MARKER index152_131; LA152_131 = LA(1); index152_131 = INDEX(); REWINDLAST(); s = -1; if ( (synpred10_belle_sip_message(ctx)) && (LA152_131 == AT) ) { s = 8; } else if ( (LA152_131 == COMMON_CHAR || LA152_131 == HEX_CHAR) ) { s = 91; } else if ( (LA152_131 == DIGIT) ) { s = 92; } else if ( (LA152_131 == DASH || LA152_131 == DOT || LA152_131 == EMARK || LA152_131 == LPAREN || LA152_131 == RPAREN || ((LA152_131 >= SQUOTE) && (LA152_131 <= USCORE))) ) { s = 93; } else if ( (LA152_131 == PERCENT) ) { s = 94; } else if ( (LA152_131 == AND) ) { s = 95; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_131 == EQUAL) ) { s = 29; } else if ( (LA152_131 == PLUS) ) { s = 96; } else if ( (LA152_131 == DOLLARD) ) { s = 97; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_131 == COMMA) ) { s = 32; } else if ( (LA152_131 == EOF || LA152_131 == COLON || LA152_131 == CRLF || LA152_131 == DQUOTE || LA152_131 == LSBRAQUET || ((LA152_131 >= QMARK) && (LA152_131 <= RAQUOT)) || LA152_131 == RSBRAQUET || ((LA152_131 >= SLASH) && (LA152_131 <= SP))) ) { s = 6; } SEEK(index152_131); if ( s>=0 ) { return s; } } break; case 10: { ANTLR3_UINT32 LA152_25; ANTLR3_MARKER index152_25; LA152_25 = LA(1); index152_25 = INDEX(); REWINDLAST(); s = -1; if ( (synpred10_belle_sip_message(ctx)) && (LA152_25 == AT) ) { s = 8; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_25 == COMMON_CHAR || LA152_25 == HEX_CHAR) ) { s = 24; } else if ( (LA152_25 == DIGIT) ) { s = 25; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_25 == DASH || LA152_25 == DOT || LA152_25 == EMARK || LA152_25 == LPAREN || LA152_25 == RPAREN || ((LA152_25 >= SQUOTE) && (LA152_25 <= USCORE))) ) { s = 26; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_25 == PERCENT) ) { s = 27; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_25 == AND) ) { s = 28; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_25 == EQUAL) ) { s = 29; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_25 == PLUS) ) { s = 30; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_25 == DOLLARD) ) { s = 31; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_25 == COMMA) ) { s = 32; } else if ( (LA152_25 == EOF || LA152_25 == CRLF || LA152_25 == DQUOTE || ((LA152_25 >= QMARK) && (LA152_25 <= RAQUOT)) || LA152_25 == SEMI || LA152_25 == SP) ) { s = 6; } SEEK(index152_25); if ( s>=0 ) { return s; } } break; case 11: { ANTLR3_UINT32 LA152_130; ANTLR3_MARKER index152_130; LA152_130 = LA(1); index152_130 = INDEX(); REWINDLAST(); s = -1; if ( (LA152_130 == COLON) ) { s = 82; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_130 == AT) ) { s = 8; } else if ( (LA152_130 == COMMON_CHAR || LA152_130 == HEX_CHAR) ) { s = 83; } else if ( (LA152_130 == DIGIT) ) { s = 84; } else if ( (LA152_130 == DOT) ) { s = 85; } else if ( (LA152_130 == PERCENT) ) { s = 86; } else if ( (LA152_130 == QMARK) ) { s = 18; } else if ( (LA152_130 == SEMI) ) { s = 16; } else if ( (LA152_130 == EOF || LA152_130 == CRLF || LA152_130 == DQUOTE || LA152_130 == LSBRAQUET || LA152_130 == RAQUOT || LA152_130 == RSBRAQUET || LA152_130 == SP) ) { s = 6; } else if ( (LA152_130 == AND || LA152_130 == DOLLARD || LA152_130 == PLUS || LA152_130 == SLASH) ) { s = 87; } else if ( (LA152_130 == DASH || LA152_130 == EMARK || LA152_130 == LPAREN || LA152_130 == RPAREN || ((LA152_130 >= SQUOTE) && (LA152_130 <= USCORE))) ) { s = 88; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_130 == COMMA || LA152_130 == EQUAL) ) { s = 5; } SEEK(index152_130); if ( s>=0 ) { return s; } } break; case 12: { ANTLR3_UINT32 LA152_1; ANTLR3_MARKER index152_1; LA152_1 = LA(1); index152_1 = INDEX(); REWINDLAST(); s = -1; if ( (synpred10_belle_sip_message(ctx)) && (LA152_1 == COLON) ) { s = 7; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_1 == AT) ) { s = 8; } else if ( (LA152_1 == COMMON_CHAR || LA152_1 == HEX_CHAR) ) { s = 9; } else if ( (LA152_1 == DIGIT) ) { s = 10; } else if ( (LA152_1 == DOT) ) { s = 11; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_1 == PERCENT) ) { s = 4; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_1 == AND || LA152_1 == COMMA || LA152_1 == DOLLARD || LA152_1 == EQUAL || ((LA152_1 >= PLUS) && (LA152_1 <= QMARK)) || ((LA152_1 >= SEMI) && (LA152_1 <= SLASH))) ) { s = 5; } else if ( (LA152_1 == DASH) ) { s = 12; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_1 == EMARK || LA152_1 == LPAREN || LA152_1 == RPAREN || ((LA152_1 >= SQUOTE) && (LA152_1 <= USCORE))) ) { s = 3; } SEEK(index152_1); if ( s>=0 ) { return s; } } break; case 13: { ANTLR3_UINT32 LA152_61; ANTLR3_MARKER index152_61; LA152_61 = LA(1); index152_61 = INDEX(); REWINDLAST(); s = -1; if ( (synpred10_belle_sip_message(ctx)) && (LA152_61 == AT) ) { s = 8; } else if ( (LA152_61 == COMMON_CHAR || LA152_61 == HEX_CHAR) ) { s = 61; } else if ( (LA152_61 == DIGIT) ) { s = 62; } else if ( (LA152_61 == DASH || LA152_61 == DOT || LA152_61 == EMARK || LA152_61 == LPAREN || LA152_61 == RPAREN || ((LA152_61 >= SQUOTE) && (LA152_61 <= USCORE))) ) { s = 63; } else if ( (LA152_61 == PERCENT) ) { s = 64; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_61 == AND) ) { s = 28; } else if ( (LA152_61 == EQUAL) ) { s = 65; } else if ( (LA152_61 == PLUS) ) { s = 66; } else if ( (LA152_61 == DOLLARD) ) { s = 67; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_61 == COMMA) ) { s = 32; } else if ( (LA152_61 == COLON || LA152_61 == LSBRAQUET || LA152_61 == QMARK || LA152_61 == RSBRAQUET || LA152_61 == SLASH) ) { s = 6; } SEEK(index152_61); if ( s>=0 ) { return s; } } break; case 14: { ANTLR3_UINT32 LA152_113; ANTLR3_MARKER index152_113; LA152_113 = LA(1); index152_113 = INDEX(); REWINDLAST(); s = -1; if ( (synpred10_belle_sip_message(ctx)) && (LA152_113 == AT) ) { s = 8; } else if ( (LA152_113 == COMMON_CHAR || LA152_113 == HEX_CHAR) ) { s = 113; } else if ( (LA152_113 == DIGIT) ) { s = 114; } else if ( (LA152_113 == DASH || LA152_113 == DOT || LA152_113 == EMARK || LA152_113 == LPAREN || LA152_113 == RPAREN || ((LA152_113 >= SQUOTE) && (LA152_113 <= USCORE))) ) { s = 115; } else if ( (LA152_113 == PERCENT) ) { s = 116; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_113 == AND) ) { s = 28; } else if ( (LA152_113 == EQUAL) ) { s = 132; } else if ( (LA152_113 == PLUS) ) { s = 117; } else if ( (LA152_113 == DOLLARD) ) { s = 118; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_113 == COMMA) ) { s = 32; } else if ( (LA152_113 == COLON || LA152_113 == LSBRAQUET || LA152_113 == QMARK || LA152_113 == RSBRAQUET || LA152_113 == SLASH) ) { s = 6; } SEEK(index152_113); if ( s>=0 ) { return s; } } break; case 15: { ANTLR3_UINT32 LA152_147; ANTLR3_MARKER index152_147; LA152_147 = LA(1); index152_147 = INDEX(); REWINDLAST(); s = -1; if ( (LA152_147 == COLON) ) { s = 145; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_147 == AT) ) { s = 8; } else if ( (LA152_147 == COMMON_CHAR || LA152_147 == HEX_CHAR) ) { s = 146; } else if ( (LA152_147 == DIGIT) ) { s = 147; } else if ( (LA152_147 == DASH || LA152_147 == DOT || LA152_147 == EMARK || LA152_147 == LPAREN || LA152_147 == RPAREN || ((LA152_147 >= SQUOTE) && (LA152_147 <= USCORE))) ) { s = 148; } else if ( (LA152_147 == PERCENT) ) { s = 149; } else if ( (LA152_147 == AND) ) { s = 104; } else if ( (LA152_147 == EOF || LA152_147 == CRLF || LA152_147 == DQUOTE || LA152_147 == LSBRAQUET || LA152_147 == RAQUOT || LA152_147 == RSBRAQUET || LA152_147 == SP) ) { s = 6; } else if ( (LA152_147 == DOLLARD || ((LA152_147 >= PLUS) && (LA152_147 <= QMARK)) || LA152_147 == SLASH) ) { s = 150; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_147 == COMMA || LA152_147 == EQUAL || LA152_147 == SEMI) ) { s = 5; } SEEK(index152_147); if ( s>=0 ) { return s; } } break; case 16: { ANTLR3_UINT32 LA152_63; ANTLR3_MARKER index152_63; LA152_63 = LA(1); index152_63 = INDEX(); REWINDLAST(); s = -1; if ( (synpred10_belle_sip_message(ctx)) && (LA152_63 == AT) ) { s = 8; } else if ( (LA152_63 == COMMON_CHAR || LA152_63 == HEX_CHAR) ) { s = 61; } else if ( (LA152_63 == DIGIT) ) { s = 62; } else if ( (LA152_63 == DASH || LA152_63 == DOT || LA152_63 == EMARK || LA152_63 == LPAREN || LA152_63 == RPAREN || ((LA152_63 >= SQUOTE) && (LA152_63 <= USCORE))) ) { s = 63; } else if ( (LA152_63 == PERCENT) ) { s = 64; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_63 == AND) ) { s = 28; } else if ( (LA152_63 == EQUAL) ) { s = 65; } else if ( (LA152_63 == PLUS) ) { s = 66; } else if ( (LA152_63 == DOLLARD) ) { s = 67; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_63 == COMMA) ) { s = 32; } else if ( (LA152_63 == COLON || LA152_63 == LSBRAQUET || LA152_63 == QMARK || LA152_63 == RSBRAQUET || LA152_63 == SLASH) ) { s = 6; } SEEK(index152_63); if ( s>=0 ) { return s; } } break; case 17: { ANTLR3_UINT32 LA152_115; ANTLR3_MARKER index152_115; LA152_115 = LA(1); index152_115 = INDEX(); REWINDLAST(); s = -1; if ( (synpred10_belle_sip_message(ctx)) && (LA152_115 == AT) ) { s = 8; } else if ( (LA152_115 == COMMON_CHAR || LA152_115 == HEX_CHAR) ) { s = 113; } else if ( (LA152_115 == DIGIT) ) { s = 114; } else if ( (LA152_115 == DASH || LA152_115 == DOT || LA152_115 == EMARK || LA152_115 == LPAREN || LA152_115 == RPAREN || ((LA152_115 >= SQUOTE) && (LA152_115 <= USCORE))) ) { s = 115; } else if ( (LA152_115 == PERCENT) ) { s = 116; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_115 == AND) ) { s = 28; } else if ( (LA152_115 == EQUAL) ) { s = 132; } else if ( (LA152_115 == PLUS) ) { s = 117; } else if ( (LA152_115 == DOLLARD) ) { s = 118; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_115 == COMMA) ) { s = 32; } else if ( (LA152_115 == COLON || LA152_115 == LSBRAQUET || LA152_115 == QMARK || LA152_115 == RSBRAQUET || LA152_115 == SLASH) ) { s = 6; } SEEK(index152_115); if ( s>=0 ) { return s; } } break; case 18: { ANTLR3_UINT32 LA152_79; ANTLR3_MARKER index152_79; LA152_79 = LA(1); index152_79 = INDEX(); REWINDLAST(); s = -1; if ( (synpred10_belle_sip_message(ctx)) && (LA152_79 == AT) ) { s = 8; } else if ( (LA152_79 == COMMON_CHAR || LA152_79 == HEX_CHAR) ) { s = 74; } else if ( (LA152_79 == DIGIT) ) { s = 75; } else if ( (LA152_79 == DOT) ) { s = 76; } else if ( (LA152_79 == PERCENT) ) { s = 77; } else if ( (LA152_79 == AND) ) { s = 78; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_79 == EQUAL) ) { s = 29; } else if ( (LA152_79 == PLUS) ) { s = 79; } else if ( (LA152_79 == DOLLARD) ) { s = 80; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_79 == COMMA) ) { s = 32; } else if ( (LA152_79 == EOF || LA152_79 == COLON || LA152_79 == CRLF || LA152_79 == DQUOTE || LA152_79 == LSBRAQUET || ((LA152_79 >= QMARK) && (LA152_79 <= RAQUOT)) || ((LA152_79 >= RSBRAQUET) && (LA152_79 <= SP))) ) { s = 6; } else if ( (LA152_79 == DASH || LA152_79 == EMARK || LA152_79 == LPAREN || LA152_79 == RPAREN || ((LA152_79 >= SQUOTE) && (LA152_79 <= USCORE))) ) { s = 81; } SEEK(index152_79); if ( s>=0 ) { return s; } } break; case 19: { ANTLR3_UINT32 LA152_127; ANTLR3_MARKER index152_127; LA152_127 = LA(1); index152_127 = INDEX(); REWINDLAST(); s = -1; if ( (LA152_127 == DIGIT) ) { s = 128; } else if ( (LA152_127 == COLON) ) { s = 15; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_127 == AT) ) { s = 8; } else if ( (LA152_127 == COMMON_CHAR || LA152_127 == HEX_CHAR) ) { s = 1; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_127 == DASH || LA152_127 == DOT || LA152_127 == EMARK || LA152_127 == LPAREN || LA152_127 == RPAREN || ((LA152_127 >= SQUOTE) && (LA152_127 <= USCORE))) ) { s = 3; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_127 == PERCENT) ) { s = 4; } else if ( (LA152_127 == SEMI) ) { s = 16; } else if ( (LA152_127 == EOF || LA152_127 == CRLF || LA152_127 == DQUOTE || LA152_127 == RAQUOT || LA152_127 == SP) ) { s = 6; } else if ( (LA152_127 == QMARK) ) { s = 18; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_127 == AND || LA152_127 == COMMA || LA152_127 == DOLLARD || LA152_127 == EQUAL || LA152_127 == PLUS || LA152_127 == SLASH) ) { s = 5; } SEEK(index152_127); if ( s>=0 ) { return s; } } break; case 20: { ANTLR3_UINT32 LA152_9; ANTLR3_MARKER index152_9; LA152_9 = LA(1); index152_9 = INDEX(); REWINDLAST(); s = -1; if ( (LA152_9 == COLON) ) { s = 15; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_9 == AT) ) { s = 8; } else if ( (LA152_9 == COMMON_CHAR || LA152_9 == HEX_CHAR) ) { s = 9; } else if ( (LA152_9 == DIGIT) ) { s = 10; } else if ( (LA152_9 == DASH) ) { s = 12; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_9 == PERCENT) ) { s = 4; } else if ( (LA152_9 == SEMI) ) { s = 16; } else if ( (LA152_9 == DOT) ) { s = 17; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_9 == EMARK || LA152_9 == LPAREN || LA152_9 == RPAREN || ((LA152_9 >= SQUOTE) && (LA152_9 <= USCORE))) ) { s = 3; } else if ( (LA152_9 == EOF || LA152_9 == CRLF || LA152_9 == DQUOTE || LA152_9 == RAQUOT || LA152_9 == SP) ) { s = 6; } else if ( (LA152_9 == QMARK) ) { s = 18; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_9 == AND || LA152_9 == COMMA || LA152_9 == DOLLARD || LA152_9 == EQUAL || LA152_9 == PLUS || LA152_9 == SLASH) ) { s = 5; } SEEK(index152_9); if ( s>=0 ) { return s; } } break; case 21: { ANTLR3_UINT32 LA152_35; ANTLR3_MARKER index152_35; LA152_35 = LA(1); index152_35 = INDEX(); REWINDLAST(); s = -1; if ( (LA152_35 == COLON) ) { s = 33; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_35 == AT) ) { s = 8; } else if ( (LA152_35 == COMMON_CHAR || LA152_35 == HEX_CHAR) ) { s = 34; } else if ( (LA152_35 == DIGIT) ) { s = 35; } else if ( (LA152_35 == DOT) ) { s = 36; } else if ( (LA152_35 == PERCENT) ) { s = 37; } else if ( (LA152_35 == QMARK) ) { s = 18; } else if ( (LA152_35 == SEMI) ) { s = 16; } else if ( (LA152_35 == EOF || LA152_35 == CRLF || LA152_35 == DQUOTE || LA152_35 == LSBRAQUET || LA152_35 == RAQUOT || LA152_35 == RSBRAQUET || LA152_35 == SP) ) { s = 6; } else if ( (LA152_35 == AND || LA152_35 == DOLLARD || LA152_35 == PLUS || LA152_35 == SLASH) ) { s = 38; } else if ( (LA152_35 == DASH || LA152_35 == EMARK || LA152_35 == LPAREN || LA152_35 == RPAREN || ((LA152_35 >= SQUOTE) && (LA152_35 <= USCORE))) ) { s = 39; } else if ( (LA152_35 == EQUAL) ) { s = 59; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_35 == COMMA) ) { s = 5; } SEEK(index152_35); if ( s>=0 ) { return s; } } break; case 22: { ANTLR3_UINT32 LA152_80; ANTLR3_MARKER index152_80; LA152_80 = LA(1); index152_80 = INDEX(); REWINDLAST(); s = -1; if ( (synpred10_belle_sip_message(ctx)) && (LA152_80 == AT) ) { s = 8; } else if ( (LA152_80 == COMMON_CHAR || LA152_80 == HEX_CHAR) ) { s = 74; } else if ( (LA152_80 == DIGIT) ) { s = 75; } else if ( (LA152_80 == DOT) ) { s = 76; } else if ( (LA152_80 == PERCENT) ) { s = 77; } else if ( (LA152_80 == AND) ) { s = 78; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_80 == EQUAL) ) { s = 29; } else if ( (LA152_80 == PLUS) ) { s = 79; } else if ( (LA152_80 == DOLLARD) ) { s = 80; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_80 == COMMA) ) { s = 32; } else if ( (LA152_80 == EOF || LA152_80 == COLON || LA152_80 == CRLF || LA152_80 == DQUOTE || LA152_80 == LSBRAQUET || ((LA152_80 >= QMARK) && (LA152_80 <= RAQUOT)) || ((LA152_80 >= RSBRAQUET) && (LA152_80 <= SP))) ) { s = 6; } else if ( (LA152_80 == DASH || LA152_80 == EMARK || LA152_80 == LPAREN || LA152_80 == RPAREN || ((LA152_80 >= SQUOTE) && (LA152_80 <= USCORE))) ) { s = 81; } SEEK(index152_80); if ( s>=0 ) { return s; } } break; case 23: { ANTLR3_UINT32 LA152_50; ANTLR3_MARKER index152_50; LA152_50 = LA(1); index152_50 = INDEX(); REWINDLAST(); s = -1; if ( (synpred10_belle_sip_message(ctx)) && (LA152_50 == AT) ) { s = 8; } else if ( (LA152_50 == COMMON_CHAR || LA152_50 == HEX_CHAR) ) { s = 50; } else if ( (LA152_50 == DIGIT) ) { s = 51; } else if ( (LA152_50 == DOT) ) { s = 52; } else if ( (LA152_50 == PERCENT) ) { s = 53; } else if ( (LA152_50 == AND) ) { s = 54; } else if ( (LA152_50 == EQUAL) ) { s = 55; } else if ( (LA152_50 == PLUS) ) { s = 56; } else if ( (LA152_50 == DOLLARD) ) { s = 57; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_50 == COMMA) ) { s = 32; } else if ( (LA152_50 == EOF || LA152_50 == COLON || LA152_50 == CRLF || LA152_50 == DQUOTE || LA152_50 == LSBRAQUET || ((LA152_50 >= QMARK) && (LA152_50 <= RAQUOT)) || ((LA152_50 >= RSBRAQUET) && (LA152_50 <= SP))) ) { s = 6; } else if ( (LA152_50 == DASH || LA152_50 == EMARK || LA152_50 == LPAREN || LA152_50 == RPAREN || ((LA152_50 >= SQUOTE) && (LA152_50 <= USCORE))) ) { s = 58; } SEEK(index152_50); if ( s>=0 ) { return s; } } break; case 24: { ANTLR3_UINT32 LA152_23; ANTLR3_MARKER index152_23; LA152_23 = LA(1); index152_23 = INDEX(); REWINDLAST(); s = -1; if ( (LA152_23 == DIGIT) ) { s = 48; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_23 == COLON) ) { s = 7; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_23 == AT) ) { s = 8; } else if ( (LA152_23 == COMMON_CHAR || LA152_23 == HEX_CHAR) ) { s = 9; } else if ( (LA152_23 == DASH) ) { s = 12; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_23 == PERCENT) ) { s = 4; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_23 == AND || LA152_23 == COMMA || LA152_23 == DOLLARD || LA152_23 == EQUAL || ((LA152_23 >= PLUS) && (LA152_23 <= QMARK)) || ((LA152_23 >= SEMI) && (LA152_23 <= SLASH))) ) { s = 5; } else if ( (LA152_23 == DOT) ) { s = 49; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_23 == EMARK || LA152_23 == LPAREN || LA152_23 == RPAREN || ((LA152_23 >= SQUOTE) && (LA152_23 <= USCORE))) ) { s = 3; } SEEK(index152_23); if ( s>=0 ) { return s; } } break; case 25: { ANTLR3_UINT32 LA152_22; ANTLR3_MARKER index152_22; LA152_22 = LA(1); index152_22 = INDEX(); REWINDLAST(); s = -1; if ( (LA152_22 == DIGIT) ) { s = 23; } else if ( (LA152_22 == COLON) ) { s = 15; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_22 == AT) ) { s = 8; } else if ( (LA152_22 == COMMON_CHAR || LA152_22 == HEX_CHAR) ) { s = 1; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_22 == DASH || LA152_22 == DOT || LA152_22 == EMARK || LA152_22 == LPAREN || LA152_22 == RPAREN || ((LA152_22 >= SQUOTE) && (LA152_22 <= USCORE))) ) { s = 3; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_22 == PERCENT) ) { s = 4; } else if ( (LA152_22 == SEMI) ) { s = 16; } else if ( (LA152_22 == EOF || LA152_22 == CRLF || LA152_22 == DQUOTE || LA152_22 == RAQUOT || LA152_22 == SP) ) { s = 6; } else if ( (LA152_22 == QMARK) ) { s = 18; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_22 == AND || LA152_22 == COMMA || LA152_22 == DOLLARD || LA152_22 == EQUAL || LA152_22 == PLUS || LA152_22 == SLASH) ) { s = 5; } SEEK(index152_22); if ( s>=0 ) { return s; } } break; case 26: { ANTLR3_UINT32 LA152_2; ANTLR3_MARKER index152_2; LA152_2 = LA(1); index152_2 = INDEX(); REWINDLAST(); s = -1; if ( (LA152_2 == DIGIT) ) { s = 13; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_2 == COLON) ) { s = 7; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_2 == AT) ) { s = 8; } else if ( (LA152_2 == COMMON_CHAR || LA152_2 == HEX_CHAR) ) { s = 9; } else if ( (LA152_2 == DOT) ) { s = 14; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_2 == PERCENT) ) { s = 4; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_2 == AND || LA152_2 == COMMA || LA152_2 == DOLLARD || LA152_2 == EQUAL || ((LA152_2 >= PLUS) && (LA152_2 <= QMARK)) || ((LA152_2 >= SEMI) && (LA152_2 <= SLASH))) ) { s = 5; } else if ( (LA152_2 == DASH) ) { s = 12; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_2 == EMARK || LA152_2 == LPAREN || LA152_2 == RPAREN || ((LA152_2 >= SQUOTE) && (LA152_2 <= USCORE))) ) { s = 3; } SEEK(index152_2); if ( s>=0 ) { return s; } } break; case 27: { ANTLR3_UINT32 LA152_78; ANTLR3_MARKER index152_78; LA152_78 = LA(1); index152_78 = INDEX(); REWINDLAST(); s = -1; if ( (synpred10_belle_sip_message(ctx)) && (LA152_78 == AT) ) { s = 8; } else if ( (LA152_78 == COMMON_CHAR || LA152_78 == HEX_CHAR) ) { s = 74; } else if ( (LA152_78 == DIGIT) ) { s = 75; } else if ( (LA152_78 == DOT) ) { s = 76; } else if ( (LA152_78 == PERCENT) ) { s = 77; } else if ( (LA152_78 == AND) ) { s = 78; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_78 == EQUAL) ) { s = 29; } else if ( (LA152_78 == PLUS) ) { s = 79; } else if ( (LA152_78 == DOLLARD) ) { s = 80; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_78 == COMMA) ) { s = 32; } else if ( (LA152_78 == EOF || LA152_78 == COLON || LA152_78 == CRLF || LA152_78 == DQUOTE || LA152_78 == LSBRAQUET || ((LA152_78 >= QMARK) && (LA152_78 <= RAQUOT)) || ((LA152_78 >= RSBRAQUET) && (LA152_78 <= SP))) ) { s = 6; } else if ( (LA152_78 == DASH || LA152_78 == EMARK || LA152_78 == LPAREN || LA152_78 == RPAREN || ((LA152_78 >= SQUOTE) && (LA152_78 <= USCORE))) ) { s = 81; } SEEK(index152_78); if ( s>=0 ) { return s; } } break; case 28: { ANTLR3_UINT32 LA152_71; ANTLR3_MARKER index152_71; LA152_71 = LA(1); index152_71 = INDEX(); REWINDLAST(); s = -1; if ( (LA152_71 == DIGIT) ) { s = 72; } else if ( (LA152_71 == COLON) ) { s = 15; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_71 == AT) ) { s = 8; } else if ( (LA152_71 == COMMON_CHAR || LA152_71 == HEX_CHAR) ) { s = 1; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_71 == DASH || LA152_71 == DOT || LA152_71 == EMARK || LA152_71 == LPAREN || LA152_71 == RPAREN || ((LA152_71 >= SQUOTE) && (LA152_71 <= USCORE))) ) { s = 3; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_71 == PERCENT) ) { s = 4; } else if ( (LA152_71 == SEMI) ) { s = 16; } else if ( (LA152_71 == EOF || LA152_71 == CRLF || LA152_71 == DQUOTE || LA152_71 == RAQUOT || LA152_71 == SP) ) { s = 6; } else if ( (LA152_71 == QMARK) ) { s = 18; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_71 == AND || LA152_71 == COMMA || LA152_71 == DOLLARD || LA152_71 == EQUAL || LA152_71 == PLUS || LA152_71 == SLASH) ) { s = 5; } SEEK(index152_71); if ( s>=0 ) { return s; } } break; case 29: { ANTLR3_UINT32 LA152_45; ANTLR3_MARKER index152_45; LA152_45 = LA(1); index152_45 = INDEX(); REWINDLAST(); s = -1; if ( (LA152_45 == COLON) ) { s = 40; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_45 == AT) ) { s = 8; } else if ( (LA152_45 == COMMON_CHAR || LA152_45 == HEX_CHAR) ) { s = 41; } else if ( (LA152_45 == DIGIT) ) { s = 42; } else if ( (LA152_45 == DASH || LA152_45 == DOT || LA152_45 == EMARK || LA152_45 == LPAREN || LA152_45 == RPAREN || ((LA152_45 >= SQUOTE) && (LA152_45 <= USCORE))) ) { s = 43; } else if ( (LA152_45 == PERCENT) ) { s = 44; } else if ( (LA152_45 == EQUAL) ) { s = 68; } else if ( (LA152_45 == DOLLARD || ((LA152_45 >= PLUS) && (LA152_45 <= QMARK)) || LA152_45 == SLASH) ) { s = 45; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_45 == AND || LA152_45 == COMMA || LA152_45 == SEMI) ) { s = 5; } else if ( (LA152_45 == LSBRAQUET || LA152_45 == RSBRAQUET) ) { s = 6; } SEEK(index152_45); if ( s>=0 ) { return s; } } break; case 30: { ANTLR3_UINT32 LA152_125; ANTLR3_MARKER index152_125; LA152_125 = LA(1); index152_125 = INDEX(); REWINDLAST(); s = -1; if ( (LA152_125 == COLON) ) { s = 120; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_125 == AT) ) { s = 8; } else if ( (LA152_125 == COMMON_CHAR || LA152_125 == HEX_CHAR) ) { s = 121; } else if ( (LA152_125 == DIGIT) ) { s = 122; } else if ( (LA152_125 == DASH || LA152_125 == DOT || LA152_125 == EMARK || LA152_125 == LPAREN || LA152_125 == RPAREN || ((LA152_125 >= SQUOTE) && (LA152_125 <= USCORE))) ) { s = 123; } else if ( (LA152_125 == PERCENT) ) { s = 124; } else if ( (LA152_125 == EQUAL) ) { s = 135; } else if ( (LA152_125 == DOLLARD || ((LA152_125 >= PLUS) && (LA152_125 <= QMARK)) || LA152_125 == SLASH) ) { s = 125; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_125 == AND || LA152_125 == COMMA || LA152_125 == SEMI) ) { s = 5; } else if ( (LA152_125 == LSBRAQUET || LA152_125 == RSBRAQUET) ) { s = 6; } SEEK(index152_125); if ( s>=0 ) { return s; } } break; case 31: { ANTLR3_UINT32 LA152_16; ANTLR3_MARKER index152_16; LA152_16 = LA(1); index152_16 = INDEX(); REWINDLAST(); s = -1; if ( (LA152_16 == COLON) ) { s = 33; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_16 == AT) ) { s = 8; } else if ( (LA152_16 == COMMON_CHAR || LA152_16 == HEX_CHAR) ) { s = 34; } else if ( (LA152_16 == DIGIT) ) { s = 35; } else if ( (LA152_16 == DOT) ) { s = 36; } else if ( (LA152_16 == PERCENT) ) { s = 37; } else if ( (LA152_16 == AND || LA152_16 == DOLLARD || LA152_16 == PLUS || LA152_16 == SLASH) ) { s = 38; } else if ( (LA152_16 == EOF || LA152_16 == CRLF || LA152_16 == DQUOTE || LA152_16 == LSBRAQUET || LA152_16 == RAQUOT || LA152_16 == RSBRAQUET || LA152_16 == SP) ) { s = 6; } else if ( (LA152_16 == DASH || LA152_16 == EMARK || LA152_16 == LPAREN || LA152_16 == RPAREN || ((LA152_16 >= SQUOTE) && (LA152_16 <= USCORE))) ) { s = 39; } else if ( (LA152_16 == QMARK) ) { s = 18; } else if ( (LA152_16 == SEMI) ) { s = 16; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_16 == COMMA || LA152_16 == EQUAL) ) { s = 5; } SEEK(index152_16); if ( s>=0 ) { return s; } } break; case 32: { ANTLR3_UINT32 LA152_72; ANTLR3_MARKER index152_72; LA152_72 = LA(1); index152_72 = INDEX(); REWINDLAST(); s = -1; if ( (LA152_72 == DIGIT) ) { s = 106; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_72 == COLON) ) { s = 7; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_72 == AT) ) { s = 8; } else if ( (LA152_72 == COMMON_CHAR || LA152_72 == HEX_CHAR) ) { s = 9; } else if ( (LA152_72 == DASH) ) { s = 12; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_72 == PERCENT) ) { s = 4; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_72 == AND || LA152_72 == COMMA || LA152_72 == DOLLARD || LA152_72 == EQUAL || ((LA152_72 >= PLUS) && (LA152_72 <= QMARK)) || ((LA152_72 >= SEMI) && (LA152_72 <= SLASH))) ) { s = 5; } else if ( (LA152_72 == DOT) ) { s = 107; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_72 == EMARK || LA152_72 == LPAREN || LA152_72 == RPAREN || ((LA152_72 >= SQUOTE) && (LA152_72 <= USCORE))) ) { s = 3; } SEEK(index152_72); if ( s>=0 ) { return s; } } break; case 33: { ANTLR3_UINT32 LA152_156; ANTLR3_MARKER index152_156; LA152_156 = LA(1); index152_156 = INDEX(); REWINDLAST(); s = -1; if ( (LA152_156 == COLON) ) { s = 145; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_156 == AT) ) { s = 8; } else if ( (LA152_156 == COMMON_CHAR || LA152_156 == HEX_CHAR) ) { s = 146; } else if ( (LA152_156 == DIGIT) ) { s = 147; } else if ( (LA152_156 == DASH || LA152_156 == DOT || LA152_156 == EMARK || LA152_156 == LPAREN || LA152_156 == RPAREN || ((LA152_156 >= SQUOTE) && (LA152_156 <= USCORE))) ) { s = 148; } else if ( (LA152_156 == PERCENT) ) { s = 149; } else if ( (LA152_156 == AND) ) { s = 104; } else if ( (LA152_156 == EOF || LA152_156 == CRLF || LA152_156 == DQUOTE || LA152_156 == LSBRAQUET || LA152_156 == RAQUOT || LA152_156 == RSBRAQUET || LA152_156 == SP) ) { s = 6; } else if ( (LA152_156 == DOLLARD || ((LA152_156 >= PLUS) && (LA152_156 <= QMARK)) || LA152_156 == SLASH) ) { s = 150; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_156 == COMMA || LA152_156 == EQUAL || LA152_156 == SEMI) ) { s = 5; } SEEK(index152_156); if ( s>=0 ) { return s; } } break; case 34: { ANTLR3_UINT32 LA152_82; ANTLR3_MARKER index152_82; LA152_82 = LA(1); index152_82 = INDEX(); REWINDLAST(); s = -1; if ( (LA152_82 == COMMON_CHAR || LA152_82 == HEX_CHAR) ) { s = 74; } else if ( (LA152_82 == DIGIT) ) { s = 75; } else if ( (LA152_82 == DOT) ) { s = 76; } else if ( (LA152_82 == PERCENT) ) { s = 77; } else if ( (LA152_82 == AND) ) { s = 78; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_82 == EQUAL) ) { s = 29; } else if ( (LA152_82 == PLUS) ) { s = 79; } else if ( (LA152_82 == DOLLARD) ) { s = 80; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_82 == COMMA) ) { s = 32; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_82 == AT) ) { s = 8; } else if ( (LA152_82 == EOF || LA152_82 == COLON || LA152_82 == CRLF || LA152_82 == DQUOTE || LA152_82 == LSBRAQUET || ((LA152_82 >= QMARK) && (LA152_82 <= RAQUOT)) || ((LA152_82 >= RSBRAQUET) && (LA152_82 <= SP))) ) { s = 6; } else if ( (LA152_82 == DASH || LA152_82 == EMARK || LA152_82 == LPAREN || LA152_82 == RPAREN || ((LA152_82 >= SQUOTE) && (LA152_82 <= USCORE))) ) { s = 81; } SEEK(index152_82); if ( s>=0 ) { return s; } } break; case 35: { ANTLR3_UINT32 LA152_58; ANTLR3_MARKER index152_58; LA152_58 = LA(1); index152_58 = INDEX(); REWINDLAST(); s = -1; if ( (synpred10_belle_sip_message(ctx)) && (LA152_58 == AT) ) { s = 8; } else if ( (LA152_58 == COMMON_CHAR || LA152_58 == HEX_CHAR) ) { s = 50; } else if ( (LA152_58 == DIGIT) ) { s = 51; } else if ( (LA152_58 == DOT) ) { s = 52; } else if ( (LA152_58 == PERCENT) ) { s = 53; } else if ( (LA152_58 == AND) ) { s = 54; } else if ( (LA152_58 == EQUAL) ) { s = 55; } else if ( (LA152_58 == PLUS) ) { s = 56; } else if ( (LA152_58 == DOLLARD) ) { s = 57; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_58 == COMMA) ) { s = 32; } else if ( (LA152_58 == EOF || LA152_58 == COLON || LA152_58 == CRLF || LA152_58 == DQUOTE || LA152_58 == LSBRAQUET || ((LA152_58 >= QMARK) && (LA152_58 <= RAQUOT)) || ((LA152_58 >= RSBRAQUET) && (LA152_58 <= SP))) ) { s = 6; } else if ( (LA152_58 == DASH || LA152_58 == EMARK || LA152_58 == LPAREN || LA152_58 == RPAREN || ((LA152_58 >= SQUOTE) && (LA152_58 <= USCORE))) ) { s = 58; } SEEK(index152_58); if ( s>=0 ) { return s; } } break; case 36: { ANTLR3_UINT32 LA152_91; ANTLR3_MARKER index152_91; LA152_91 = LA(1); index152_91 = INDEX(); REWINDLAST(); s = -1; if ( (synpred10_belle_sip_message(ctx)) && (LA152_91 == AT) ) { s = 8; } else if ( (LA152_91 == COMMON_CHAR || LA152_91 == HEX_CHAR) ) { s = 91; } else if ( (LA152_91 == DIGIT) ) { s = 92; } else if ( (LA152_91 == DASH || LA152_91 == DOT || LA152_91 == EMARK || LA152_91 == LPAREN || LA152_91 == RPAREN || ((LA152_91 >= SQUOTE) && (LA152_91 <= USCORE))) ) { s = 93; } else if ( (LA152_91 == PERCENT) ) { s = 94; } else if ( (LA152_91 == AND) ) { s = 95; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_91 == EQUAL) ) { s = 29; } else if ( (LA152_91 == PLUS) ) { s = 96; } else if ( (LA152_91 == DOLLARD) ) { s = 97; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_91 == COMMA) ) { s = 32; } else if ( (LA152_91 == EOF || LA152_91 == COLON || LA152_91 == CRLF || LA152_91 == DQUOTE || LA152_91 == LSBRAQUET || ((LA152_91 >= QMARK) && (LA152_91 <= RAQUOT)) || LA152_91 == RSBRAQUET || ((LA152_91 >= SLASH) && (LA152_91 <= SP))) ) { s = 6; } SEEK(index152_91); if ( s>=0 ) { return s; } } break; case 37: { ANTLR3_UINT32 LA152_68; ANTLR3_MARKER index152_68; LA152_68 = LA(1); index152_68 = INDEX(); REWINDLAST(); s = -1; if ( (LA152_68 == COLON) ) { s = 98; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_68 == AT) ) { s = 8; } else if ( (LA152_68 == COMMON_CHAR || LA152_68 == HEX_CHAR) ) { s = 99; } else if ( (LA152_68 == DIGIT) ) { s = 100; } else if ( (LA152_68 == DASH || LA152_68 == DOT || LA152_68 == EMARK || LA152_68 == LPAREN || LA152_68 == RPAREN || ((LA152_68 >= SQUOTE) && (LA152_68 <= USCORE))) ) { s = 101; } else if ( (LA152_68 == PERCENT) ) { s = 102; } else if ( (LA152_68 == DOLLARD || ((LA152_68 >= PLUS) && (LA152_68 <= QMARK)) || LA152_68 == SLASH) ) { s = 103; } else if ( (LA152_68 == AND) ) { s = 104; } else if ( (LA152_68 == EOF || LA152_68 == CRLF || LA152_68 == DQUOTE || LA152_68 == LSBRAQUET || LA152_68 == RAQUOT || LA152_68 == RSBRAQUET || LA152_68 == SP) ) { s = 6; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_68 == COMMA || LA152_68 == EQUAL || LA152_68 == SEMI) ) { s = 5; } SEEK(index152_68); if ( s>=0 ) { return s; } } break; case 38: { ANTLR3_UINT32 LA152_83; ANTLR3_MARKER index152_83; LA152_83 = LA(1); index152_83 = INDEX(); REWINDLAST(); s = -1; if ( (LA152_83 == COLON) ) { s = 82; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_83 == AT) ) { s = 8; } else if ( (LA152_83 == COMMON_CHAR || LA152_83 == HEX_CHAR) ) { s = 83; } else if ( (LA152_83 == DIGIT) ) { s = 84; } else if ( (LA152_83 == DOT) ) { s = 85; } else if ( (LA152_83 == PERCENT) ) { s = 86; } else if ( (LA152_83 == QMARK) ) { s = 18; } else if ( (LA152_83 == SEMI) ) { s = 16; } else if ( (LA152_83 == EOF || LA152_83 == CRLF || LA152_83 == DQUOTE || LA152_83 == LSBRAQUET || LA152_83 == RAQUOT || LA152_83 == RSBRAQUET || LA152_83 == SP) ) { s = 6; } else if ( (LA152_83 == AND || LA152_83 == DOLLARD || LA152_83 == PLUS || LA152_83 == SLASH) ) { s = 87; } else if ( (LA152_83 == DASH || LA152_83 == EMARK || LA152_83 == LPAREN || LA152_83 == RPAREN || ((LA152_83 >= SQUOTE) && (LA152_83 <= USCORE))) ) { s = 88; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_83 == COMMA || LA152_83 == EQUAL) ) { s = 5; } SEEK(index152_83); if ( s>=0 ) { return s; } } break; case 39: { ANTLR3_UINT32 LA152_42; ANTLR3_MARKER index152_42; LA152_42 = LA(1); index152_42 = INDEX(); REWINDLAST(); s = -1; if ( (LA152_42 == COLON) ) { s = 40; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_42 == AT) ) { s = 8; } else if ( (LA152_42 == COMMON_CHAR || LA152_42 == HEX_CHAR) ) { s = 41; } else if ( (LA152_42 == DIGIT) ) { s = 42; } else if ( (LA152_42 == DASH || LA152_42 == DOT || LA152_42 == EMARK || LA152_42 == LPAREN || LA152_42 == RPAREN || ((LA152_42 >= SQUOTE) && (LA152_42 <= USCORE))) ) { s = 43; } else if ( (LA152_42 == PERCENT) ) { s = 44; } else if ( (LA152_42 == EQUAL) ) { s = 68; } else if ( (LA152_42 == DOLLARD || ((LA152_42 >= PLUS) && (LA152_42 <= QMARK)) || LA152_42 == SLASH) ) { s = 45; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_42 == AND || LA152_42 == COMMA || LA152_42 == SEMI) ) { s = 5; } else if ( (LA152_42 == LSBRAQUET || LA152_42 == RSBRAQUET) ) { s = 6; } SEEK(index152_42); if ( s>=0 ) { return s; } } break; case 40: { ANTLR3_UINT32 LA152_122; ANTLR3_MARKER index152_122; LA152_122 = LA(1); index152_122 = INDEX(); REWINDLAST(); s = -1; if ( (LA152_122 == COLON) ) { s = 120; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_122 == AT) ) { s = 8; } else if ( (LA152_122 == COMMON_CHAR || LA152_122 == HEX_CHAR) ) { s = 121; } else if ( (LA152_122 == DIGIT) ) { s = 122; } else if ( (LA152_122 == DASH || LA152_122 == DOT || LA152_122 == EMARK || LA152_122 == LPAREN || LA152_122 == RPAREN || ((LA152_122 >= SQUOTE) && (LA152_122 <= USCORE))) ) { s = 123; } else if ( (LA152_122 == PERCENT) ) { s = 124; } else if ( (LA152_122 == EQUAL) ) { s = 135; } else if ( (LA152_122 == DOLLARD || ((LA152_122 >= PLUS) && (LA152_122 <= QMARK)) || LA152_122 == SLASH) ) { s = 125; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_122 == AND || LA152_122 == COMMA || LA152_122 == SEMI) ) { s = 5; } else if ( (LA152_122 == LSBRAQUET || LA152_122 == RSBRAQUET) ) { s = 6; } SEEK(index152_122); if ( s>=0 ) { return s; } } break; case 41: { ANTLR3_UINT32 LA152_108; ANTLR3_MARKER index152_108; LA152_108 = LA(1); index152_108 = INDEX(); REWINDLAST(); s = -1; if ( (synpred10_belle_sip_message(ctx)) && (LA152_108 == AT) ) { s = 8; } else if ( (LA152_108 == COMMON_CHAR || LA152_108 == HEX_CHAR) ) { s = 50; } else if ( (LA152_108 == DIGIT) ) { s = 51; } else if ( (LA152_108 == DOT) ) { s = 52; } else if ( (LA152_108 == PERCENT) ) { s = 53; } else if ( (LA152_108 == AND) ) { s = 54; } else if ( (LA152_108 == EQUAL) ) { s = 55; } else if ( (LA152_108 == PLUS) ) { s = 56; } else if ( (LA152_108 == DOLLARD) ) { s = 57; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_108 == COMMA) ) { s = 32; } else if ( (LA152_108 == EOF || LA152_108 == COLON || LA152_108 == CRLF || LA152_108 == DQUOTE || LA152_108 == LSBRAQUET || ((LA152_108 >= QMARK) && (LA152_108 <= RAQUOT)) || ((LA152_108 >= RSBRAQUET) && (LA152_108 <= SP))) ) { s = 6; } else if ( (LA152_108 == DASH || LA152_108 == EMARK || LA152_108 == LPAREN || LA152_108 == RPAREN || ((LA152_108 >= SQUOTE) && (LA152_108 <= USCORE))) ) { s = 58; } SEEK(index152_108); if ( s>=0 ) { return s; } } break; case 42: { ANTLR3_UINT32 LA152_17; ANTLR3_MARKER index152_17; LA152_17 = LA(1); index152_17 = INDEX(); REWINDLAST(); s = -1; if ( (LA152_17 == COLON) ) { s = 15; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_17 == AT) ) { s = 8; } else if ( (LA152_17 == COMMON_CHAR || LA152_17 == HEX_CHAR) ) { s = 1; } else if ( (LA152_17 == DIGIT) ) { s = 19; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_17 == DASH || LA152_17 == DOT || LA152_17 == EMARK || LA152_17 == LPAREN || LA152_17 == RPAREN || ((LA152_17 >= SQUOTE) && (LA152_17 <= USCORE))) ) { s = 3; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_17 == PERCENT) ) { s = 4; } else if ( (LA152_17 == SEMI) ) { s = 16; } else if ( (LA152_17 == EOF || LA152_17 == CRLF || LA152_17 == DQUOTE || LA152_17 == RAQUOT || LA152_17 == SP) ) { s = 6; } else if ( (LA152_17 == QMARK) ) { s = 18; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_17 == AND || LA152_17 == COMMA || LA152_17 == DOLLARD || LA152_17 == EQUAL || LA152_17 == PLUS || LA152_17 == SLASH) ) { s = 5; } SEEK(index152_17); if ( s>=0 ) { return s; } } break; case 43: { ANTLR3_UINT32 LA152_88; ANTLR3_MARKER index152_88; LA152_88 = LA(1); index152_88 = INDEX(); REWINDLAST(); s = -1; if ( (LA152_88 == COLON) ) { s = 82; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_88 == AT) ) { s = 8; } else if ( (LA152_88 == COMMON_CHAR || LA152_88 == HEX_CHAR) ) { s = 83; } else if ( (LA152_88 == DIGIT) ) { s = 84; } else if ( (LA152_88 == DOT) ) { s = 85; } else if ( (LA152_88 == PERCENT) ) { s = 86; } else if ( (LA152_88 == QMARK) ) { s = 18; } else if ( (LA152_88 == SEMI) ) { s = 16; } else if ( (LA152_88 == EOF || LA152_88 == CRLF || LA152_88 == DQUOTE || LA152_88 == LSBRAQUET || LA152_88 == RAQUOT || LA152_88 == RSBRAQUET || LA152_88 == SP) ) { s = 6; } else if ( (LA152_88 == AND || LA152_88 == DOLLARD || LA152_88 == PLUS || LA152_88 == SLASH) ) { s = 87; } else if ( (LA152_88 == DASH || LA152_88 == EMARK || LA152_88 == LPAREN || LA152_88 == RPAREN || ((LA152_88 >= SQUOTE) && (LA152_88 <= USCORE))) ) { s = 88; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_88 == COMMA || LA152_88 == EQUAL) ) { s = 5; } SEEK(index152_88); if ( s>=0 ) { return s; } } break; case 44: { ANTLR3_UINT32 LA152_93; ANTLR3_MARKER index152_93; LA152_93 = LA(1); index152_93 = INDEX(); REWINDLAST(); s = -1; if ( (synpred10_belle_sip_message(ctx)) && (LA152_93 == AT) ) { s = 8; } else if ( (LA152_93 == COMMON_CHAR || LA152_93 == HEX_CHAR) ) { s = 91; } else if ( (LA152_93 == DIGIT) ) { s = 92; } else if ( (LA152_93 == DASH || LA152_93 == DOT || LA152_93 == EMARK || LA152_93 == LPAREN || LA152_93 == RPAREN || ((LA152_93 >= SQUOTE) && (LA152_93 <= USCORE))) ) { s = 93; } else if ( (LA152_93 == PERCENT) ) { s = 94; } else if ( (LA152_93 == AND) ) { s = 95; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_93 == EQUAL) ) { s = 29; } else if ( (LA152_93 == PLUS) ) { s = 96; } else if ( (LA152_93 == DOLLARD) ) { s = 97; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_93 == COMMA) ) { s = 32; } else if ( (LA152_93 == EOF || LA152_93 == COLON || LA152_93 == CRLF || LA152_93 == DQUOTE || LA152_93 == LSBRAQUET || ((LA152_93 >= QMARK) && (LA152_93 <= RAQUOT)) || LA152_93 == RSBRAQUET || ((LA152_93 >= SLASH) && (LA152_93 <= SP))) ) { s = 6; } SEEK(index152_93); if ( s>=0 ) { return s; } } break; case 45: { ANTLR3_UINT32 LA152_52; ANTLR3_MARKER index152_52; LA152_52 = LA(1); index152_52 = INDEX(); REWINDLAST(); s = -1; if ( (synpred10_belle_sip_message(ctx)) && (LA152_52 == AT) ) { s = 8; } else if ( (LA152_52 == COMMON_CHAR || LA152_52 == HEX_CHAR) ) { s = 50; } else if ( (LA152_52 == DIGIT) ) { s = 51; } else if ( (LA152_52 == DOT) ) { s = 52; } else if ( (LA152_52 == PERCENT) ) { s = 53; } else if ( (LA152_52 == AND) ) { s = 54; } else if ( (LA152_52 == EQUAL) ) { s = 55; } else if ( (LA152_52 == PLUS) ) { s = 56; } else if ( (LA152_52 == DOLLARD) ) { s = 57; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_52 == COMMA) ) { s = 32; } else if ( (LA152_52 == EOF || LA152_52 == COLON || LA152_52 == CRLF || LA152_52 == DQUOTE || LA152_52 == LSBRAQUET || ((LA152_52 >= QMARK) && (LA152_52 <= RAQUOT)) || ((LA152_52 >= RSBRAQUET) && (LA152_52 <= SP))) ) { s = 6; } else if ( (LA152_52 == DASH || LA152_52 == EMARK || LA152_52 == LPAREN || LA152_52 == RPAREN || ((LA152_52 >= SQUOTE) && (LA152_52 <= USCORE))) ) { s = 58; } SEEK(index152_52); if ( s>=0 ) { return s; } } break; case 46: { ANTLR3_UINT32 LA152_103; ANTLR3_MARKER index152_103; LA152_103 = LA(1); index152_103 = INDEX(); REWINDLAST(); s = -1; if ( (LA152_103 == COLON) ) { s = 98; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_103 == AT) ) { s = 8; } else if ( (LA152_103 == COMMON_CHAR || LA152_103 == HEX_CHAR) ) { s = 99; } else if ( (LA152_103 == DIGIT) ) { s = 100; } else if ( (LA152_103 == DASH || LA152_103 == DOT || LA152_103 == EMARK || LA152_103 == LPAREN || LA152_103 == RPAREN || ((LA152_103 >= SQUOTE) && (LA152_103 <= USCORE))) ) { s = 101; } else if ( (LA152_103 == PERCENT) ) { s = 102; } else if ( (LA152_103 == AND) ) { s = 104; } else if ( (LA152_103 == DOLLARD || ((LA152_103 >= PLUS) && (LA152_103 <= QMARK)) || LA152_103 == SLASH) ) { s = 103; } else if ( (LA152_103 == EOF || LA152_103 == CRLF || LA152_103 == DQUOTE || LA152_103 == LSBRAQUET || LA152_103 == RAQUOT || LA152_103 == RSBRAQUET || LA152_103 == SP) ) { s = 6; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_103 == COMMA || LA152_103 == EQUAL || LA152_103 == SEMI) ) { s = 5; } SEEK(index152_103); if ( s>=0 ) { return s; } } break; case 47: { ANTLR3_UINT32 LA152_19; ANTLR3_MARKER index152_19; LA152_19 = LA(1); index152_19 = INDEX(); REWINDLAST(); s = -1; if ( (synpred10_belle_sip_message(ctx)) && (LA152_19 == COLON) ) { s = 7; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_19 == AT) ) { s = 8; } else if ( (LA152_19 == COMMON_CHAR || LA152_19 == HEX_CHAR) ) { s = 9; } else if ( (LA152_19 == DIGIT) ) { s = 10; } else if ( (LA152_19 == DASH) ) { s = 12; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_19 == PERCENT) ) { s = 4; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_19 == AND || LA152_19 == COMMA || LA152_19 == DOLLARD || LA152_19 == EQUAL || ((LA152_19 >= PLUS) && (LA152_19 <= QMARK)) || ((LA152_19 >= SEMI) && (LA152_19 <= SLASH))) ) { s = 5; } else if ( (LA152_19 == DOT) ) { s = 11; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_19 == EMARK || LA152_19 == LPAREN || LA152_19 == RPAREN || ((LA152_19 >= SQUOTE) && (LA152_19 <= USCORE))) ) { s = 3; } SEEK(index152_19); if ( s>=0 ) { return s; } } break; case 48: { ANTLR3_UINT32 LA152_57; ANTLR3_MARKER index152_57; LA152_57 = LA(1); index152_57 = INDEX(); REWINDLAST(); s = -1; if ( (synpred10_belle_sip_message(ctx)) && (LA152_57 == AT) ) { s = 8; } else if ( (LA152_57 == COMMON_CHAR || LA152_57 == HEX_CHAR) ) { s = 50; } else if ( (LA152_57 == DIGIT) ) { s = 51; } else if ( (LA152_57 == DOT) ) { s = 52; } else if ( (LA152_57 == PERCENT) ) { s = 53; } else if ( (LA152_57 == AND) ) { s = 54; } else if ( (LA152_57 == EQUAL) ) { s = 55; } else if ( (LA152_57 == PLUS) ) { s = 56; } else if ( (LA152_57 == DOLLARD) ) { s = 57; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_57 == COMMA) ) { s = 32; } else if ( (LA152_57 == EOF || LA152_57 == COLON || LA152_57 == CRLF || LA152_57 == DQUOTE || LA152_57 == LSBRAQUET || ((LA152_57 >= QMARK) && (LA152_57 <= RAQUOT)) || ((LA152_57 >= RSBRAQUET) && (LA152_57 <= SP))) ) { s = 6; } else if ( (LA152_57 == DASH || LA152_57 == EMARK || LA152_57 == LPAREN || LA152_57 == RPAREN || ((LA152_57 >= SQUOTE) && (LA152_57 <= USCORE))) ) { s = 58; } SEEK(index152_57); if ( s>=0 ) { return s; } } break; case 49: { ANTLR3_UINT32 LA152_56; ANTLR3_MARKER index152_56; LA152_56 = LA(1); index152_56 = INDEX(); REWINDLAST(); s = -1; if ( (synpred10_belle_sip_message(ctx)) && (LA152_56 == AT) ) { s = 8; } else if ( (LA152_56 == COMMON_CHAR || LA152_56 == HEX_CHAR) ) { s = 50; } else if ( (LA152_56 == DIGIT) ) { s = 51; } else if ( (LA152_56 == DOT) ) { s = 52; } else if ( (LA152_56 == PERCENT) ) { s = 53; } else if ( (LA152_56 == AND) ) { s = 54; } else if ( (LA152_56 == EQUAL) ) { s = 55; } else if ( (LA152_56 == PLUS) ) { s = 56; } else if ( (LA152_56 == DOLLARD) ) { s = 57; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_56 == COMMA) ) { s = 32; } else if ( (LA152_56 == EOF || LA152_56 == COLON || LA152_56 == CRLF || LA152_56 == DQUOTE || LA152_56 == LSBRAQUET || ((LA152_56 >= QMARK) && (LA152_56 <= RAQUOT)) || ((LA152_56 >= RSBRAQUET) && (LA152_56 <= SP))) ) { s = 6; } else if ( (LA152_56 == DASH || LA152_56 == EMARK || LA152_56 == LPAREN || LA152_56 == RPAREN || ((LA152_56 >= SQUOTE) && (LA152_56 <= USCORE))) ) { s = 58; } SEEK(index152_56); if ( s>=0 ) { return s; } } break; case 50: { ANTLR3_UINT32 LA152_85; ANTLR3_MARKER index152_85; LA152_85 = LA(1); index152_85 = INDEX(); REWINDLAST(); s = -1; if ( (LA152_85 == COLON) ) { s = 82; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_85 == AT) ) { s = 8; } else if ( (LA152_85 == COMMON_CHAR || LA152_85 == HEX_CHAR) ) { s = 83; } else if ( (LA152_85 == DIGIT) ) { s = 84; } else if ( (LA152_85 == DOT) ) { s = 85; } else if ( (LA152_85 == PERCENT) ) { s = 86; } else if ( (LA152_85 == QMARK) ) { s = 18; } else if ( (LA152_85 == SEMI) ) { s = 16; } else if ( (LA152_85 == EOF || LA152_85 == CRLF || LA152_85 == DQUOTE || LA152_85 == LSBRAQUET || LA152_85 == RAQUOT || LA152_85 == RSBRAQUET || LA152_85 == SP) ) { s = 6; } else if ( (LA152_85 == AND || LA152_85 == DOLLARD || LA152_85 == PLUS || LA152_85 == SLASH) ) { s = 87; } else if ( (LA152_85 == DASH || LA152_85 == EMARK || LA152_85 == LPAREN || LA152_85 == RPAREN || ((LA152_85 >= SQUOTE) && (LA152_85 <= USCORE))) ) { s = 88; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_85 == COMMA || LA152_85 == EQUAL) ) { s = 5; } SEEK(index152_85); if ( s>=0 ) { return s; } } break; case 51: { ANTLR3_UINT32 LA152_105; ANTLR3_MARKER index152_105; LA152_105 = LA(1); index152_105 = INDEX(); REWINDLAST(); s = -1; if ( (LA152_105 == COLON) ) { s = 40; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_105 == AT) ) { s = 8; } else if ( (LA152_105 == COMMON_CHAR || LA152_105 == HEX_CHAR) ) { s = 41; } else if ( (LA152_105 == DIGIT) ) { s = 42; } else if ( (LA152_105 == DASH || LA152_105 == DOT || LA152_105 == EMARK || LA152_105 == LPAREN || LA152_105 == RPAREN || ((LA152_105 >= SQUOTE) && (LA152_105 <= USCORE))) ) { s = 43; } else if ( (LA152_105 == PERCENT) ) { s = 44; } else if ( (LA152_105 == EQUAL) ) { s = 68; } else if ( (LA152_105 == DOLLARD || ((LA152_105 >= PLUS) && (LA152_105 <= QMARK)) || LA152_105 == SLASH) ) { s = 45; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_105 == AND || LA152_105 == COMMA || LA152_105 == SEMI) ) { s = 5; } else if ( (LA152_105 == LSBRAQUET || LA152_105 == RSBRAQUET) ) { s = 6; } SEEK(index152_105); if ( s>=0 ) { return s; } } break; case 52: { ANTLR3_UINT32 LA152_151; ANTLR3_MARKER index152_151; LA152_151 = LA(1); index152_151 = INDEX(); REWINDLAST(); s = -1; if ( (LA152_151 == COLON) ) { s = 120; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_151 == AT) ) { s = 8; } else if ( (LA152_151 == COMMON_CHAR || LA152_151 == HEX_CHAR) ) { s = 121; } else if ( (LA152_151 == DIGIT) ) { s = 122; } else if ( (LA152_151 == DASH || LA152_151 == DOT || LA152_151 == EMARK || LA152_151 == LPAREN || LA152_151 == RPAREN || ((LA152_151 >= SQUOTE) && (LA152_151 <= USCORE))) ) { s = 123; } else if ( (LA152_151 == PERCENT) ) { s = 124; } else if ( (LA152_151 == EQUAL) ) { s = 135; } else if ( (LA152_151 == DOLLARD || ((LA152_151 >= PLUS) && (LA152_151 <= QMARK)) || LA152_151 == SLASH) ) { s = 125; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_151 == AND || LA152_151 == COMMA || LA152_151 == SEMI) ) { s = 5; } else if ( (LA152_151 == LSBRAQUET || LA152_151 == RSBRAQUET) ) { s = 6; } SEEK(index152_151); if ( s>=0 ) { return s; } } break; case 53: { ANTLR3_UINT32 LA152_54; ANTLR3_MARKER index152_54; LA152_54 = LA(1); index152_54 = INDEX(); REWINDLAST(); s = -1; if ( (synpred10_belle_sip_message(ctx)) && (LA152_54 == AT) ) { s = 8; } else if ( (LA152_54 == COMMON_CHAR || LA152_54 == HEX_CHAR) ) { s = 50; } else if ( (LA152_54 == DIGIT) ) { s = 51; } else if ( (LA152_54 == DOT) ) { s = 52; } else if ( (LA152_54 == PERCENT) ) { s = 53; } else if ( (LA152_54 == AND) ) { s = 54; } else if ( (LA152_54 == EQUAL) ) { s = 55; } else if ( (LA152_54 == PLUS) ) { s = 56; } else if ( (LA152_54 == DOLLARD) ) { s = 57; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_54 == COMMA) ) { s = 32; } else if ( (LA152_54 == EOF || LA152_54 == COLON || LA152_54 == CRLF || LA152_54 == DQUOTE || LA152_54 == LSBRAQUET || ((LA152_54 >= QMARK) && (LA152_54 <= RAQUOT)) || ((LA152_54 >= RSBRAQUET) && (LA152_54 <= SP))) ) { s = 6; } else if ( (LA152_54 == DASH || LA152_54 == EMARK || LA152_54 == LPAREN || LA152_54 == RPAREN || ((LA152_54 >= SQUOTE) && (LA152_54 <= USCORE))) ) { s = 58; } SEEK(index152_54); if ( s>=0 ) { return s; } } break; case 54: { ANTLR3_UINT32 LA152_47; ANTLR3_MARKER index152_47; LA152_47 = LA(1); index152_47 = INDEX(); REWINDLAST(); s = -1; if ( (synpred10_belle_sip_message(ctx)) && (LA152_47 == COLON) ) { s = 7; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_47 == AT) ) { s = 8; } else if ( (LA152_47 == COMMON_CHAR || LA152_47 == HEX_CHAR) ) { s = 46; } else if ( (LA152_47 == DIGIT) ) { s = 47; } else if ( (LA152_47 == DOT) ) { s = 11; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_47 == PERCENT) ) { s = 4; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_47 == AND || LA152_47 == COMMA || LA152_47 == DOLLARD || LA152_47 == EQUAL || ((LA152_47 >= PLUS) && (LA152_47 <= QMARK)) || ((LA152_47 >= SEMI) && (LA152_47 <= SLASH))) ) { s = 5; } else if ( (LA152_47 == DASH) ) { s = 20; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_47 == EMARK || LA152_47 == LPAREN || LA152_47 == RPAREN || ((LA152_47 >= SQUOTE) && (LA152_47 <= USCORE))) ) { s = 3; } SEEK(index152_47); if ( s>=0 ) { return s; } } break; case 55: { ANTLR3_UINT32 LA152_10; ANTLR3_MARKER index152_10; LA152_10 = LA(1); index152_10 = INDEX(); REWINDLAST(); s = -1; if ( (LA152_10 == COLON) ) { s = 15; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_10 == AT) ) { s = 8; } else if ( (LA152_10 == COMMON_CHAR || LA152_10 == HEX_CHAR) ) { s = 9; } else if ( (LA152_10 == DIGIT) ) { s = 10; } else if ( (LA152_10 == DASH) ) { s = 12; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_10 == PERCENT) ) { s = 4; } else if ( (LA152_10 == SEMI) ) { s = 16; } else if ( (LA152_10 == DOT) ) { s = 17; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_10 == EMARK || LA152_10 == LPAREN || LA152_10 == RPAREN || ((LA152_10 >= SQUOTE) && (LA152_10 <= USCORE))) ) { s = 3; } else if ( (LA152_10 == EOF || LA152_10 == CRLF || LA152_10 == DQUOTE || LA152_10 == RAQUOT || LA152_10 == SP) ) { s = 6; } else if ( (LA152_10 == QMARK) ) { s = 18; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_10 == AND || LA152_10 == COMMA || LA152_10 == DOLLARD || LA152_10 == EQUAL || LA152_10 == PLUS || LA152_10 == SLASH) ) { s = 5; } SEEK(index152_10); if ( s>=0 ) { return s; } } break; case 56: { ANTLR3_UINT32 LA152_146; ANTLR3_MARKER index152_146; LA152_146 = LA(1); index152_146 = INDEX(); REWINDLAST(); s = -1; if ( (LA152_146 == COLON) ) { s = 145; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_146 == AT) ) { s = 8; } else if ( (LA152_146 == COMMON_CHAR || LA152_146 == HEX_CHAR) ) { s = 146; } else if ( (LA152_146 == DIGIT) ) { s = 147; } else if ( (LA152_146 == DASH || LA152_146 == DOT || LA152_146 == EMARK || LA152_146 == LPAREN || LA152_146 == RPAREN || ((LA152_146 >= SQUOTE) && (LA152_146 <= USCORE))) ) { s = 148; } else if ( (LA152_146 == PERCENT) ) { s = 149; } else if ( (LA152_146 == AND) ) { s = 104; } else if ( (LA152_146 == EOF || LA152_146 == CRLF || LA152_146 == DQUOTE || LA152_146 == LSBRAQUET || LA152_146 == RAQUOT || LA152_146 == RSBRAQUET || LA152_146 == SP) ) { s = 6; } else if ( (LA152_146 == DOLLARD || ((LA152_146 >= PLUS) && (LA152_146 <= QMARK)) || LA152_146 == SLASH) ) { s = 150; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_146 == COMMA || LA152_146 == EQUAL || LA152_146 == SEMI) ) { s = 5; } SEEK(index152_146); if ( s>=0 ) { return s; } } break; case 57: { ANTLR3_UINT32 LA152_106; ANTLR3_MARKER index152_106; LA152_106 = LA(1); index152_106 = INDEX(); REWINDLAST(); s = -1; if ( (LA152_106 == DIGIT) ) { s = 126; } else if ( (LA152_106 == DOT) ) { s = 127; } else if ( (LA152_106 == COLON) ) { s = 15; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_106 == AT) ) { s = 8; } else if ( (LA152_106 == COMMON_CHAR || LA152_106 == HEX_CHAR) ) { s = 9; } else if ( (LA152_106 == DASH) ) { s = 12; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_106 == PERCENT) ) { s = 4; } else if ( (LA152_106 == SEMI) ) { s = 16; } else if ( (LA152_106 == EOF || LA152_106 == CRLF || LA152_106 == DQUOTE || LA152_106 == RAQUOT || LA152_106 == SP) ) { s = 6; } else if ( (LA152_106 == QMARK) ) { s = 18; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_106 == AND || LA152_106 == COMMA || LA152_106 == DOLLARD || LA152_106 == EQUAL || LA152_106 == PLUS || LA152_106 == SLASH) ) { s = 5; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_106 == EMARK || LA152_106 == LPAREN || LA152_106 == RPAREN || ((LA152_106 >= SQUOTE) && (LA152_106 <= USCORE))) ) { s = 3; } SEEK(index152_106); if ( s>=0 ) { return s; } } break; case 58: { ANTLR3_UINT32 LA152_13; ANTLR3_MARKER index152_13; LA152_13 = LA(1); index152_13 = INDEX(); REWINDLAST(); s = -1; if ( (LA152_13 == DIGIT) ) { s = 21; } else if ( (LA152_13 == DOT) ) { s = 22; } else if ( (LA152_13 == COLON) ) { s = 15; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_13 == AT) ) { s = 8; } else if ( (LA152_13 == COMMON_CHAR || LA152_13 == HEX_CHAR) ) { s = 9; } else if ( (LA152_13 == DASH) ) { s = 12; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_13 == PERCENT) ) { s = 4; } else if ( (LA152_13 == SEMI) ) { s = 16; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_13 == EMARK || LA152_13 == LPAREN || LA152_13 == RPAREN || ((LA152_13 >= SQUOTE) && (LA152_13 <= USCORE))) ) { s = 3; } else if ( (LA152_13 == EOF || LA152_13 == CRLF || LA152_13 == DQUOTE || LA152_13 == RAQUOT || LA152_13 == SP) ) { s = 6; } else if ( (LA152_13 == QMARK) ) { s = 18; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_13 == AND || LA152_13 == COMMA || LA152_13 == DOLLARD || LA152_13 == EQUAL || LA152_13 == PLUS || LA152_13 == SLASH) ) { s = 5; } SEEK(index152_13); if ( s>=0 ) { return s; } } break; case 59: { ANTLR3_UINT32 LA152_128; ANTLR3_MARKER index152_128; LA152_128 = LA(1); index152_128 = INDEX(); REWINDLAST(); s = -1; if ( (LA152_128 == DIGIT) ) { s = 137; } else if ( (LA152_128 == COLON) ) { s = 15; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_128 == AT) ) { s = 8; } else if ( (LA152_128 == COMMON_CHAR || LA152_128 == HEX_CHAR) ) { s = 9; } else if ( (LA152_128 == DASH) ) { s = 12; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_128 == PERCENT) ) { s = 4; } else if ( (LA152_128 == SEMI) ) { s = 16; } else if ( (LA152_128 == DOT) ) { s = 11; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_128 == EMARK || LA152_128 == LPAREN || LA152_128 == RPAREN || ((LA152_128 >= SQUOTE) && (LA152_128 <= USCORE))) ) { s = 3; } else if ( (LA152_128 == EOF || LA152_128 == CRLF || LA152_128 == DQUOTE || LA152_128 == RAQUOT || LA152_128 == SP) ) { s = 6; } else if ( (LA152_128 == QMARK) ) { s = 18; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_128 == AND || LA152_128 == COMMA || LA152_128 == DOLLARD || LA152_128 == EQUAL || LA152_128 == PLUS || LA152_128 == SLASH) ) { s = 5; } SEEK(index152_128); if ( s>=0 ) { return s; } } break; case 60: { ANTLR3_UINT32 LA152_148; ANTLR3_MARKER index152_148; LA152_148 = LA(1); index152_148 = INDEX(); REWINDLAST(); s = -1; if ( (LA152_148 == COLON) ) { s = 145; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_148 == AT) ) { s = 8; } else if ( (LA152_148 == COMMON_CHAR || LA152_148 == HEX_CHAR) ) { s = 146; } else if ( (LA152_148 == DIGIT) ) { s = 147; } else if ( (LA152_148 == DASH || LA152_148 == DOT || LA152_148 == EMARK || LA152_148 == LPAREN || LA152_148 == RPAREN || ((LA152_148 >= SQUOTE) && (LA152_148 <= USCORE))) ) { s = 148; } else if ( (LA152_148 == PERCENT) ) { s = 149; } else if ( (LA152_148 == AND) ) { s = 104; } else if ( (LA152_148 == EOF || LA152_148 == CRLF || LA152_148 == DQUOTE || LA152_148 == LSBRAQUET || LA152_148 == RAQUOT || LA152_148 == RSBRAQUET || LA152_148 == SP) ) { s = 6; } else if ( (LA152_148 == DOLLARD || ((LA152_148 >= PLUS) && (LA152_148 <= QMARK)) || LA152_148 == SLASH) ) { s = 150; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_148 == COMMA || LA152_148 == EQUAL || LA152_148 == SEMI) ) { s = 5; } SEEK(index152_148); if ( s>=0 ) { return s; } } break; case 61: { ANTLR3_UINT32 LA152_75; ANTLR3_MARKER index152_75; LA152_75 = LA(1); index152_75 = INDEX(); REWINDLAST(); s = -1; if ( (synpred10_belle_sip_message(ctx)) && (LA152_75 == AT) ) { s = 8; } else if ( (LA152_75 == COMMON_CHAR || LA152_75 == HEX_CHAR) ) { s = 74; } else if ( (LA152_75 == DIGIT) ) { s = 75; } else if ( (LA152_75 == DOT) ) { s = 76; } else if ( (LA152_75 == PERCENT) ) { s = 77; } else if ( (LA152_75 == AND) ) { s = 78; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_75 == EQUAL) ) { s = 29; } else if ( (LA152_75 == PLUS) ) { s = 79; } else if ( (LA152_75 == DOLLARD) ) { s = 80; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_75 == COMMA) ) { s = 32; } else if ( (LA152_75 == EOF || LA152_75 == COLON || LA152_75 == CRLF || LA152_75 == DQUOTE || LA152_75 == LSBRAQUET || ((LA152_75 >= QMARK) && (LA152_75 <= RAQUOT)) || ((LA152_75 >= RSBRAQUET) && (LA152_75 <= SP))) ) { s = 6; } else if ( (LA152_75 == DASH || LA152_75 == EMARK || LA152_75 == LPAREN || LA152_75 == RPAREN || ((LA152_75 >= SQUOTE) && (LA152_75 <= USCORE))) ) { s = 81; } SEEK(index152_75); if ( s>=0 ) { return s; } } break; case 62: { ANTLR3_UINT32 LA152_48; ANTLR3_MARKER index152_48; LA152_48 = LA(1); index152_48 = INDEX(); REWINDLAST(); s = -1; if ( (LA152_48 == DIGIT) ) { s = 70; } else if ( (LA152_48 == DOT) ) { s = 71; } else if ( (LA152_48 == COLON) ) { s = 15; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_48 == AT) ) { s = 8; } else if ( (LA152_48 == COMMON_CHAR || LA152_48 == HEX_CHAR) ) { s = 9; } else if ( (LA152_48 == DASH) ) { s = 12; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_48 == PERCENT) ) { s = 4; } else if ( (LA152_48 == SEMI) ) { s = 16; } else if ( (LA152_48 == EOF || LA152_48 == CRLF || LA152_48 == DQUOTE || LA152_48 == RAQUOT || LA152_48 == SP) ) { s = 6; } else if ( (LA152_48 == QMARK) ) { s = 18; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_48 == AND || LA152_48 == COMMA || LA152_48 == DOLLARD || LA152_48 == EQUAL || LA152_48 == PLUS || LA152_48 == SLASH) ) { s = 5; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_48 == EMARK || LA152_48 == LPAREN || LA152_48 == RPAREN || ((LA152_48 >= SQUOTE) && (LA152_48 <= USCORE))) ) { s = 3; } SEEK(index152_48); if ( s>=0 ) { return s; } } break; case 63: { ANTLR3_UINT32 LA152_100; ANTLR3_MARKER index152_100; LA152_100 = LA(1); index152_100 = INDEX(); REWINDLAST(); s = -1; if ( (LA152_100 == COLON) ) { s = 98; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_100 == AT) ) { s = 8; } else if ( (LA152_100 == COMMON_CHAR || LA152_100 == HEX_CHAR) ) { s = 99; } else if ( (LA152_100 == DIGIT) ) { s = 100; } else if ( (LA152_100 == DASH || LA152_100 == DOT || LA152_100 == EMARK || LA152_100 == LPAREN || LA152_100 == RPAREN || ((LA152_100 >= SQUOTE) && (LA152_100 <= USCORE))) ) { s = 101; } else if ( (LA152_100 == PERCENT) ) { s = 102; } else if ( (LA152_100 == AND) ) { s = 104; } else if ( (LA152_100 == DOLLARD || ((LA152_100 >= PLUS) && (LA152_100 <= QMARK)) || LA152_100 == SLASH) ) { s = 103; } else if ( (LA152_100 == EOF || LA152_100 == CRLF || LA152_100 == DQUOTE || LA152_100 == LSBRAQUET || LA152_100 == RAQUOT || LA152_100 == RSBRAQUET || LA152_100 == SP) ) { s = 6; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_100 == COMMA || LA152_100 == EQUAL || LA152_100 == SEMI) ) { s = 5; } SEEK(index152_100); if ( s>=0 ) { return s; } } break; case 64: { ANTLR3_UINT32 LA152_132; ANTLR3_MARKER index152_132; LA152_132 = LA(1); index152_132 = INDEX(); REWINDLAST(); s = -1; if ( (synpred10_belle_sip_message(ctx)) && (LA152_132 == AT) ) { s = 8; } else if ( (LA152_132 == COMMON_CHAR || LA152_132 == HEX_CHAR) ) { s = 138; } else if ( (LA152_132 == DIGIT) ) { s = 139; } else if ( (LA152_132 == DASH || LA152_132 == DOT || LA152_132 == EMARK || LA152_132 == LPAREN || LA152_132 == RPAREN || ((LA152_132 >= SQUOTE) && (LA152_132 <= USCORE))) ) { s = 140; } else if ( (LA152_132 == PERCENT) ) { s = 141; } else if ( (LA152_132 == AND) ) { s = 95; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_132 == EQUAL) ) { s = 29; } else if ( (LA152_132 == PLUS) ) { s = 142; } else if ( (LA152_132 == DOLLARD) ) { s = 143; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_132 == COMMA) ) { s = 32; } else if ( (LA152_132 == EOF || LA152_132 == COLON || LA152_132 == CRLF || LA152_132 == DQUOTE || LA152_132 == LSBRAQUET || ((LA152_132 >= QMARK) && (LA152_132 <= RAQUOT)) || LA152_132 == RSBRAQUET || ((LA152_132 >= SLASH) && (LA152_132 <= SP))) ) { s = 6; } SEEK(index152_132); if ( s>=0 ) { return s; } } break; case 65: { ANTLR3_UINT32 LA152_95; ANTLR3_MARKER index152_95; LA152_95 = LA(1); index152_95 = INDEX(); REWINDLAST(); s = -1; if ( (synpred10_belle_sip_message(ctx)) && (LA152_95 == AT) ) { s = 8; } else if ( (LA152_95 == COMMON_CHAR || LA152_95 == HEX_CHAR) ) { s = 113; } else if ( (LA152_95 == DIGIT) ) { s = 114; } else if ( (LA152_95 == DASH || LA152_95 == DOT || LA152_95 == EMARK || LA152_95 == LPAREN || LA152_95 == RPAREN || ((LA152_95 >= SQUOTE) && (LA152_95 <= USCORE))) ) { s = 115; } else if ( (LA152_95 == PERCENT) ) { s = 116; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_95 == AND) ) { s = 28; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_95 == EQUAL) ) { s = 29; } else if ( (LA152_95 == PLUS) ) { s = 117; } else if ( (LA152_95 == DOLLARD) ) { s = 118; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_95 == COMMA) ) { s = 32; } else if ( (LA152_95 == COLON || LA152_95 == LSBRAQUET || LA152_95 == QMARK || LA152_95 == RSBRAQUET || LA152_95 == SLASH) ) { s = 6; } SEEK(index152_95); if ( s>=0 ) { return s; } } break; case 66: { ANTLR3_UINT32 LA152_137; ANTLR3_MARKER index152_137; LA152_137 = LA(1); index152_137 = INDEX(); REWINDLAST(); s = -1; if ( (LA152_137 == DIGIT) ) { s = 152; } else if ( (LA152_137 == COLON) ) { s = 15; } else if ( (LA152_137 == EOF || LA152_137 == CRLF || LA152_137 == DQUOTE || LA152_137 == RAQUOT || LA152_137 == SP) ) { s = 6; } else if ( (LA152_137 == SEMI) ) { s = 16; } else if ( (LA152_137 == QMARK) ) { s = 18; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_137 == AT) ) { s = 8; } else if ( (LA152_137 == COMMON_CHAR || LA152_137 == HEX_CHAR) ) { s = 9; } else if ( (LA152_137 == DOT) ) { s = 17; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_137 == PERCENT) ) { s = 4; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_137 == AND || LA152_137 == COMMA || LA152_137 == DOLLARD || LA152_137 == EQUAL || LA152_137 == PLUS || LA152_137 == SLASH) ) { s = 5; } else if ( (LA152_137 == DASH) ) { s = 12; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_137 == EMARK || LA152_137 == LPAREN || LA152_137 == RPAREN || ((LA152_137 >= SQUOTE) && (LA152_137 <= USCORE))) ) { s = 3; } SEEK(index152_137); if ( s>=0 ) { return s; } } break; case 67: { ANTLR3_UINT32 LA152_55; ANTLR3_MARKER index152_55; LA152_55 = LA(1); index152_55 = INDEX(); REWINDLAST(); s = -1; if ( (synpred10_belle_sip_message(ctx)) && (LA152_55 == AT) ) { s = 8; } else if ( (LA152_55 == COMMON_CHAR || LA152_55 == HEX_CHAR) ) { s = 74; } else if ( (LA152_55 == DIGIT) ) { s = 75; } else if ( (LA152_55 == DOT) ) { s = 76; } else if ( (LA152_55 == PERCENT) ) { s = 77; } else if ( (LA152_55 == AND) ) { s = 78; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_55 == EQUAL) ) { s = 29; } else if ( (LA152_55 == PLUS) ) { s = 79; } else if ( (LA152_55 == DOLLARD) ) { s = 80; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_55 == COMMA) ) { s = 32; } else if ( (LA152_55 == DASH || LA152_55 == EMARK || LA152_55 == LPAREN || LA152_55 == RPAREN || ((LA152_55 >= SQUOTE) && (LA152_55 <= USCORE))) ) { s = 81; } else if ( (LA152_55 == COLON || LA152_55 == LSBRAQUET || LA152_55 == RSBRAQUET || LA152_55 == SLASH) ) { s = 6; } SEEK(index152_55); if ( s>=0 ) { return s; } } break; case 68: { ANTLR3_UINT32 LA152_134; ANTLR3_MARKER index152_134; LA152_134 = LA(1); index152_134 = INDEX(); REWINDLAST(); s = -1; if ( (LA152_134 == COLON) ) { s = 98; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_134 == AT) ) { s = 8; } else if ( (LA152_134 == COMMON_CHAR || LA152_134 == HEX_CHAR) ) { s = 99; } else if ( (LA152_134 == DIGIT) ) { s = 100; } else if ( (LA152_134 == DASH || LA152_134 == DOT || LA152_134 == EMARK || LA152_134 == LPAREN || LA152_134 == RPAREN || ((LA152_134 >= SQUOTE) && (LA152_134 <= USCORE))) ) { s = 101; } else if ( (LA152_134 == PERCENT) ) { s = 102; } else if ( (LA152_134 == AND) ) { s = 104; } else if ( (LA152_134 == DOLLARD || ((LA152_134 >= PLUS) && (LA152_134 <= QMARK)) || LA152_134 == SLASH) ) { s = 103; } else if ( (LA152_134 == EOF || LA152_134 == CRLF || LA152_134 == DQUOTE || LA152_134 == LSBRAQUET || LA152_134 == RAQUOT || LA152_134 == RSBRAQUET || LA152_134 == SP) ) { s = 6; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_134 == COMMA || LA152_134 == EQUAL || LA152_134 == SEMI) ) { s = 5; } SEEK(index152_134); if ( s>=0 ) { return s; } } break; case 69: { ANTLR3_UINT32 LA152_33; ANTLR3_MARKER index152_33; LA152_33 = LA(1); index152_33 = INDEX(); REWINDLAST(); s = -1; if ( (LA152_33 == COMMON_CHAR || LA152_33 == HEX_CHAR) ) { s = 50; } else if ( (LA152_33 == DIGIT) ) { s = 51; } else if ( (LA152_33 == DOT) ) { s = 52; } else if ( (LA152_33 == PERCENT) ) { s = 53; } else if ( (LA152_33 == AND) ) { s = 54; } else if ( (LA152_33 == EQUAL) ) { s = 55; } else if ( (LA152_33 == PLUS) ) { s = 56; } else if ( (LA152_33 == DOLLARD) ) { s = 57; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_33 == COMMA) ) { s = 32; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_33 == AT) ) { s = 8; } else if ( (LA152_33 == EOF || LA152_33 == COLON || LA152_33 == CRLF || LA152_33 == DQUOTE || LA152_33 == LSBRAQUET || ((LA152_33 >= QMARK) && (LA152_33 <= RAQUOT)) || ((LA152_33 >= RSBRAQUET) && (LA152_33 <= SP))) ) { s = 6; } else if ( (LA152_33 == DASH || LA152_33 == EMARK || LA152_33 == LPAREN || LA152_33 == RPAREN || ((LA152_33 >= SQUOTE) && (LA152_33 <= USCORE))) ) { s = 58; } SEEK(index152_33); if ( s>=0 ) { return s; } } break; case 70: { ANTLR3_UINT32 LA152_129; ANTLR3_MARKER index152_129; LA152_129 = LA(1); index152_129 = INDEX(); REWINDLAST(); s = -1; if ( (synpred10_belle_sip_message(ctx)) && (LA152_129 == AT) ) { s = 8; } else if ( (LA152_129 == COMMON_CHAR || LA152_129 == HEX_CHAR) ) { s = 74; } else if ( (LA152_129 == DIGIT) ) { s = 75; } else if ( (LA152_129 == DOT) ) { s = 76; } else if ( (LA152_129 == PERCENT) ) { s = 77; } else if ( (LA152_129 == AND) ) { s = 78; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_129 == EQUAL) ) { s = 29; } else if ( (LA152_129 == PLUS) ) { s = 79; } else if ( (LA152_129 == DOLLARD) ) { s = 80; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_129 == COMMA) ) { s = 32; } else if ( (LA152_129 == EOF || LA152_129 == COLON || LA152_129 == CRLF || LA152_129 == DQUOTE || LA152_129 == LSBRAQUET || ((LA152_129 >= QMARK) && (LA152_129 <= RAQUOT)) || ((LA152_129 >= RSBRAQUET) && (LA152_129 <= SP))) ) { s = 6; } else if ( (LA152_129 == DASH || LA152_129 == EMARK || LA152_129 == LPAREN || LA152_129 == RPAREN || ((LA152_129 >= SQUOTE) && (LA152_129 <= USCORE))) ) { s = 81; } SEEK(index152_129); if ( s>=0 ) { return s; } } break; case 71: { ANTLR3_UINT32 LA152_21; ANTLR3_MARKER index152_21; LA152_21 = LA(1); index152_21 = INDEX(); REWINDLAST(); s = -1; if ( (LA152_21 == DOT) ) { s = 22; } else if ( (LA152_21 == COLON) ) { s = 15; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_21 == AT) ) { s = 8; } else if ( (LA152_21 == COMMON_CHAR || LA152_21 == HEX_CHAR) ) { s = 9; } else if ( (LA152_21 == DIGIT) ) { s = 10; } else if ( (LA152_21 == DASH) ) { s = 12; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_21 == PERCENT) ) { s = 4; } else if ( (LA152_21 == SEMI) ) { s = 16; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_21 == EMARK || LA152_21 == LPAREN || LA152_21 == RPAREN || ((LA152_21 >= SQUOTE) && (LA152_21 <= USCORE))) ) { s = 3; } else if ( (LA152_21 == EOF || LA152_21 == CRLF || LA152_21 == DQUOTE || LA152_21 == RAQUOT || LA152_21 == SP) ) { s = 6; } else if ( (LA152_21 == QMARK) ) { s = 18; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_21 == AND || LA152_21 == COMMA || LA152_21 == DOLLARD || LA152_21 == EQUAL || LA152_21 == PLUS || LA152_21 == SLASH) ) { s = 5; } SEEK(index152_21); if ( s>=0 ) { return s; } } break; case 72: { ANTLR3_UINT32 LA152_139; ANTLR3_MARKER index152_139; LA152_139 = LA(1); index152_139 = INDEX(); REWINDLAST(); s = -1; if ( (synpred10_belle_sip_message(ctx)) && (LA152_139 == AT) ) { s = 8; } else if ( (LA152_139 == COMMON_CHAR || LA152_139 == HEX_CHAR) ) { s = 138; } else if ( (LA152_139 == DIGIT) ) { s = 139; } else if ( (LA152_139 == DASH || LA152_139 == DOT || LA152_139 == EMARK || LA152_139 == LPAREN || LA152_139 == RPAREN || ((LA152_139 >= SQUOTE) && (LA152_139 <= USCORE))) ) { s = 140; } else if ( (LA152_139 == PERCENT) ) { s = 141; } else if ( (LA152_139 == AND) ) { s = 95; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_139 == EQUAL) ) { s = 29; } else if ( (LA152_139 == PLUS) ) { s = 142; } else if ( (LA152_139 == DOLLARD) ) { s = 143; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_139 == COMMA) ) { s = 32; } else if ( (LA152_139 == EOF || LA152_139 == COLON || LA152_139 == CRLF || LA152_139 == DQUOTE || LA152_139 == LSBRAQUET || ((LA152_139 >= QMARK) && (LA152_139 <= RAQUOT)) || LA152_139 == RSBRAQUET || ((LA152_139 >= SLASH) && (LA152_139 <= SP))) ) { s = 6; } SEEK(index152_139); if ( s>=0 ) { return s; } } break; case 73: { ANTLR3_UINT32 LA152_143; ANTLR3_MARKER index152_143; LA152_143 = LA(1); index152_143 = INDEX(); REWINDLAST(); s = -1; if ( (synpred10_belle_sip_message(ctx)) && (LA152_143 == AT) ) { s = 8; } else if ( (LA152_143 == COMMON_CHAR || LA152_143 == HEX_CHAR) ) { s = 138; } else if ( (LA152_143 == DIGIT) ) { s = 139; } else if ( (LA152_143 == DASH || LA152_143 == DOT || LA152_143 == EMARK || LA152_143 == LPAREN || LA152_143 == RPAREN || ((LA152_143 >= SQUOTE) && (LA152_143 <= USCORE))) ) { s = 140; } else if ( (LA152_143 == PERCENT) ) { s = 141; } else if ( (LA152_143 == AND) ) { s = 95; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_143 == EQUAL) ) { s = 29; } else if ( (LA152_143 == PLUS) ) { s = 142; } else if ( (LA152_143 == DOLLARD) ) { s = 143; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_143 == COMMA) ) { s = 32; } else if ( (LA152_143 == EOF || LA152_143 == COLON || LA152_143 == CRLF || LA152_143 == DQUOTE || LA152_143 == LSBRAQUET || ((LA152_143 >= QMARK) && (LA152_143 <= RAQUOT)) || LA152_143 == RSBRAQUET || ((LA152_143 >= SLASH) && (LA152_143 <= SP))) ) { s = 6; } SEEK(index152_143); if ( s>=0 ) { return s; } } break; case 74: { ANTLR3_UINT32 LA152_70; ANTLR3_MARKER index152_70; LA152_70 = LA(1); index152_70 = INDEX(); REWINDLAST(); s = -1; if ( (LA152_70 == DOT) ) { s = 71; } else if ( (LA152_70 == COLON) ) { s = 15; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_70 == AT) ) { s = 8; } else if ( (LA152_70 == COMMON_CHAR || LA152_70 == HEX_CHAR) ) { s = 9; } else if ( (LA152_70 == DIGIT) ) { s = 10; } else if ( (LA152_70 == DASH) ) { s = 12; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_70 == PERCENT) ) { s = 4; } else if ( (LA152_70 == SEMI) ) { s = 16; } else if ( (LA152_70 == EOF || LA152_70 == CRLF || LA152_70 == DQUOTE || LA152_70 == RAQUOT || LA152_70 == SP) ) { s = 6; } else if ( (LA152_70 == QMARK) ) { s = 18; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_70 == AND || LA152_70 == COMMA || LA152_70 == DOLLARD || LA152_70 == EQUAL || LA152_70 == PLUS || LA152_70 == SLASH) ) { s = 5; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_70 == EMARK || LA152_70 == LPAREN || LA152_70 == RPAREN || ((LA152_70 >= SQUOTE) && (LA152_70 <= USCORE))) ) { s = 3; } SEEK(index152_70); if ( s>=0 ) { return s; } } break; case 75: { ANTLR3_UINT32 LA152_142; ANTLR3_MARKER index152_142; LA152_142 = LA(1); index152_142 = INDEX(); REWINDLAST(); s = -1; if ( (synpred10_belle_sip_message(ctx)) && (LA152_142 == AT) ) { s = 8; } else if ( (LA152_142 == COMMON_CHAR || LA152_142 == HEX_CHAR) ) { s = 138; } else if ( (LA152_142 == DIGIT) ) { s = 139; } else if ( (LA152_142 == DASH || LA152_142 == DOT || LA152_142 == EMARK || LA152_142 == LPAREN || LA152_142 == RPAREN || ((LA152_142 >= SQUOTE) && (LA152_142 <= USCORE))) ) { s = 140; } else if ( (LA152_142 == PERCENT) ) { s = 141; } else if ( (LA152_142 == AND) ) { s = 95; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_142 == EQUAL) ) { s = 29; } else if ( (LA152_142 == PLUS) ) { s = 142; } else if ( (LA152_142 == DOLLARD) ) { s = 143; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_142 == COMMA) ) { s = 32; } else if ( (LA152_142 == EOF || LA152_142 == COLON || LA152_142 == CRLF || LA152_142 == DQUOTE || LA152_142 == LSBRAQUET || ((LA152_142 >= QMARK) && (LA152_142 <= RAQUOT)) || LA152_142 == RSBRAQUET || ((LA152_142 >= SLASH) && (LA152_142 <= SP))) ) { s = 6; } SEEK(index152_142); if ( s>=0 ) { return s; } } break; case 76: { ANTLR3_UINT32 LA152_20; ANTLR3_MARKER index152_20; LA152_20 = LA(1); index152_20 = INDEX(); REWINDLAST(); s = -1; if ( (synpred10_belle_sip_message(ctx)) && (LA152_20 == COLON) ) { s = 7; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_20 == AT) ) { s = 8; } else if ( (LA152_20 == COMMON_CHAR || LA152_20 == HEX_CHAR) ) { s = 46; } else if ( (LA152_20 == DIGIT) ) { s = 47; } else if ( (LA152_20 == DASH) ) { s = 20; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_20 == PERCENT) ) { s = 4; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_20 == AND || LA152_20 == COMMA || LA152_20 == DOLLARD || LA152_20 == EQUAL || ((LA152_20 >= PLUS) && (LA152_20 <= QMARK)) || ((LA152_20 >= SEMI) && (LA152_20 <= SLASH))) ) { s = 5; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_20 == DOT || LA152_20 == EMARK || LA152_20 == LPAREN || LA152_20 == RPAREN || ((LA152_20 >= SQUOTE) && (LA152_20 <= USCORE))) ) { s = 3; } SEEK(index152_20); if ( s>=0 ) { return s; } } break; case 77: { ANTLR3_UINT32 LA152_87; ANTLR3_MARKER index152_87; LA152_87 = LA(1); index152_87 = INDEX(); REWINDLAST(); s = -1; if ( (LA152_87 == COLON) ) { s = 82; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_87 == AT) ) { s = 8; } else if ( (LA152_87 == COMMON_CHAR || LA152_87 == HEX_CHAR) ) { s = 83; } else if ( (LA152_87 == DIGIT) ) { s = 84; } else if ( (LA152_87 == DOT) ) { s = 85; } else if ( (LA152_87 == PERCENT) ) { s = 86; } else if ( (LA152_87 == QMARK) ) { s = 18; } else if ( (LA152_87 == SEMI) ) { s = 16; } else if ( (LA152_87 == EOF || LA152_87 == CRLF || LA152_87 == DQUOTE || LA152_87 == LSBRAQUET || LA152_87 == RAQUOT || LA152_87 == RSBRAQUET || LA152_87 == SP) ) { s = 6; } else if ( (LA152_87 == AND || LA152_87 == DOLLARD || LA152_87 == PLUS || LA152_87 == SLASH) ) { s = 87; } else if ( (LA152_87 == DASH || LA152_87 == EMARK || LA152_87 == LPAREN || LA152_87 == RPAREN || ((LA152_87 >= SQUOTE) && (LA152_87 <= USCORE))) ) { s = 88; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_87 == COMMA || LA152_87 == EQUAL) ) { s = 5; } SEEK(index152_87); if ( s>=0 ) { return s; } } break; case 78: { ANTLR3_UINT32 LA152_14; ANTLR3_MARKER index152_14; LA152_14 = LA(1); index152_14 = INDEX(); REWINDLAST(); s = -1; if ( (synpred10_belle_sip_message(ctx)) && (LA152_14 == COLON) ) { s = 7; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_14 == AT) ) { s = 8; } else if ( (LA152_14 == COMMON_CHAR || LA152_14 == HEX_CHAR) ) { s = 1; } else if ( (LA152_14 == DIGIT) ) { s = 23; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_14 == DASH || LA152_14 == DOT || LA152_14 == EMARK || LA152_14 == LPAREN || LA152_14 == RPAREN || ((LA152_14 >= SQUOTE) && (LA152_14 <= USCORE))) ) { s = 3; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_14 == PERCENT) ) { s = 4; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_14 == AND || LA152_14 == COMMA || LA152_14 == DOLLARD || LA152_14 == EQUAL || ((LA152_14 >= PLUS) && (LA152_14 <= QMARK)) || ((LA152_14 >= SEMI) && (LA152_14 <= SLASH))) ) { s = 5; } SEEK(index152_14); if ( s>=0 ) { return s; } } break; case 79: { ANTLR3_UINT32 LA152_0; ANTLR3_MARKER index152_0; LA152_0 = LA(1); index152_0 = INDEX(); REWINDLAST(); s = -1; if ( (LA152_0 == COMMON_CHAR || LA152_0 == HEX_CHAR) ) { s = 1; } else if ( (LA152_0 == DIGIT) ) { s = 2; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_0 == DASH || LA152_0 == DOT || LA152_0 == EMARK || LA152_0 == LPAREN || LA152_0 == RPAREN || ((LA152_0 >= SQUOTE) && (LA152_0 <= USCORE))) ) { s = 3; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_0 == PERCENT) ) { s = 4; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_0 == AND || LA152_0 == COMMA || LA152_0 == DOLLARD || LA152_0 == EQUAL || ((LA152_0 >= PLUS) && (LA152_0 <= QMARK)) || ((LA152_0 >= SEMI) && (LA152_0 <= SLASH))) ) { s = 5; } else if ( (LA152_0 == LSBRAQUET) ) { s = 6; } SEEK(index152_0); if ( s>=0 ) { return s; } } break; case 80: { ANTLR3_UINT32 LA152_34; ANTLR3_MARKER index152_34; LA152_34 = LA(1); index152_34 = INDEX(); REWINDLAST(); s = -1; if ( (LA152_34 == COLON) ) { s = 33; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_34 == AT) ) { s = 8; } else if ( (LA152_34 == COMMON_CHAR || LA152_34 == HEX_CHAR) ) { s = 34; } else if ( (LA152_34 == DIGIT) ) { s = 35; } else if ( (LA152_34 == DOT) ) { s = 36; } else if ( (LA152_34 == PERCENT) ) { s = 37; } else if ( (LA152_34 == QMARK) ) { s = 18; } else if ( (LA152_34 == SEMI) ) { s = 16; } else if ( (LA152_34 == EOF || LA152_34 == CRLF || LA152_34 == DQUOTE || LA152_34 == LSBRAQUET || LA152_34 == RAQUOT || LA152_34 == RSBRAQUET || LA152_34 == SP) ) { s = 6; } else if ( (LA152_34 == AND || LA152_34 == DOLLARD || LA152_34 == PLUS || LA152_34 == SLASH) ) { s = 38; } else if ( (LA152_34 == DASH || LA152_34 == EMARK || LA152_34 == LPAREN || LA152_34 == RPAREN || ((LA152_34 >= SQUOTE) && (LA152_34 <= USCORE))) ) { s = 39; } else if ( (LA152_34 == EQUAL) ) { s = 59; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_34 == COMMA) ) { s = 5; } SEEK(index152_34); if ( s>=0 ) { return s; } } break; case 81: { ANTLR3_UINT32 LA152_107; ANTLR3_MARKER index152_107; LA152_107 = LA(1); index152_107 = INDEX(); REWINDLAST(); s = -1; if ( (synpred10_belle_sip_message(ctx)) && (LA152_107 == COLON) ) { s = 7; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_107 == AT) ) { s = 8; } else if ( (LA152_107 == COMMON_CHAR || LA152_107 == HEX_CHAR) ) { s = 1; } else if ( (LA152_107 == DIGIT) ) { s = 128; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_107 == DASH || LA152_107 == DOT || LA152_107 == EMARK || LA152_107 == LPAREN || LA152_107 == RPAREN || ((LA152_107 >= SQUOTE) && (LA152_107 <= USCORE))) ) { s = 3; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_107 == PERCENT) ) { s = 4; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_107 == AND || LA152_107 == COMMA || LA152_107 == DOLLARD || LA152_107 == EQUAL || ((LA152_107 >= PLUS) && (LA152_107 <= QMARK)) || ((LA152_107 >= SEMI) && (LA152_107 <= SLASH))) ) { s = 5; } SEEK(index152_107); if ( s>=0 ) { return s; } } break; case 82: { ANTLR3_UINT32 LA152_41; ANTLR3_MARKER index152_41; LA152_41 = LA(1); index152_41 = INDEX(); REWINDLAST(); s = -1; if ( (LA152_41 == COLON) ) { s = 40; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_41 == AT) ) { s = 8; } else if ( (LA152_41 == COMMON_CHAR || LA152_41 == HEX_CHAR) ) { s = 41; } else if ( (LA152_41 == DIGIT) ) { s = 42; } else if ( (LA152_41 == DASH || LA152_41 == DOT || LA152_41 == EMARK || LA152_41 == LPAREN || LA152_41 == RPAREN || ((LA152_41 >= SQUOTE) && (LA152_41 <= USCORE))) ) { s = 43; } else if ( (LA152_41 == PERCENT) ) { s = 44; } else if ( (LA152_41 == EQUAL) ) { s = 68; } else if ( (LA152_41 == DOLLARD || ((LA152_41 >= PLUS) && (LA152_41 <= QMARK)) || LA152_41 == SLASH) ) { s = 45; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_41 == AND || LA152_41 == COMMA || LA152_41 == SEMI) ) { s = 5; } else if ( (LA152_41 == LSBRAQUET || LA152_41 == RSBRAQUET) ) { s = 6; } SEEK(index152_41); if ( s>=0 ) { return s; } } break; case 83: { ANTLR3_UINT32 LA152_49; ANTLR3_MARKER index152_49; LA152_49 = LA(1); index152_49 = INDEX(); REWINDLAST(); s = -1; if ( (synpred10_belle_sip_message(ctx)) && (LA152_49 == COLON) ) { s = 7; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_49 == AT) ) { s = 8; } else if ( (LA152_49 == COMMON_CHAR || LA152_49 == HEX_CHAR) ) { s = 1; } else if ( (LA152_49 == DIGIT) ) { s = 72; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_49 == DASH || LA152_49 == DOT || LA152_49 == EMARK || LA152_49 == LPAREN || LA152_49 == RPAREN || ((LA152_49 >= SQUOTE) && (LA152_49 <= USCORE))) ) { s = 3; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_49 == PERCENT) ) { s = 4; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_49 == AND || LA152_49 == COMMA || LA152_49 == DOLLARD || LA152_49 == EQUAL || ((LA152_49 >= PLUS) && (LA152_49 <= QMARK)) || ((LA152_49 >= SEMI) && (LA152_49 <= SLASH))) ) { s = 5; } SEEK(index152_49); if ( s>=0 ) { return s; } } break; case 84: { ANTLR3_UINT32 LA152_121; ANTLR3_MARKER index152_121; LA152_121 = LA(1); index152_121 = INDEX(); REWINDLAST(); s = -1; if ( (LA152_121 == COLON) ) { s = 120; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_121 == AT) ) { s = 8; } else if ( (LA152_121 == COMMON_CHAR || LA152_121 == HEX_CHAR) ) { s = 121; } else if ( (LA152_121 == DIGIT) ) { s = 122; } else if ( (LA152_121 == DASH || LA152_121 == DOT || LA152_121 == EMARK || LA152_121 == LPAREN || LA152_121 == RPAREN || ((LA152_121 >= SQUOTE) && (LA152_121 <= USCORE))) ) { s = 123; } else if ( (LA152_121 == PERCENT) ) { s = 124; } else if ( (LA152_121 == EQUAL) ) { s = 135; } else if ( (LA152_121 == DOLLARD || ((LA152_121 >= PLUS) && (LA152_121 <= QMARK)) || LA152_121 == SLASH) ) { s = 125; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_121 == AND || LA152_121 == COMMA || LA152_121 == SEMI) ) { s = 5; } else if ( (LA152_121 == LSBRAQUET || LA152_121 == RSBRAQUET) ) { s = 6; } SEEK(index152_121); if ( s>=0 ) { return s; } } break; case 85: { ANTLR3_UINT32 LA152_51; ANTLR3_MARKER index152_51; LA152_51 = LA(1); index152_51 = INDEX(); REWINDLAST(); s = -1; if ( (synpred10_belle_sip_message(ctx)) && (LA152_51 == AT) ) { s = 8; } else if ( (LA152_51 == COMMON_CHAR || LA152_51 == HEX_CHAR) ) { s = 50; } else if ( (LA152_51 == DIGIT) ) { s = 51; } else if ( (LA152_51 == DOT) ) { s = 52; } else if ( (LA152_51 == PERCENT) ) { s = 53; } else if ( (LA152_51 == AND) ) { s = 54; } else if ( (LA152_51 == EQUAL) ) { s = 55; } else if ( (LA152_51 == PLUS) ) { s = 56; } else if ( (LA152_51 == DOLLARD) ) { s = 57; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_51 == COMMA) ) { s = 32; } else if ( (LA152_51 == EOF || LA152_51 == COLON || LA152_51 == CRLF || LA152_51 == DQUOTE || LA152_51 == LSBRAQUET || ((LA152_51 >= QMARK) && (LA152_51 <= RAQUOT)) || ((LA152_51 >= RSBRAQUET) && (LA152_51 <= SP))) ) { s = 6; } else if ( (LA152_51 == DASH || LA152_51 == EMARK || LA152_51 == LPAREN || LA152_51 == RPAREN || ((LA152_51 >= SQUOTE) && (LA152_51 <= USCORE))) ) { s = 58; } SEEK(index152_51); if ( s>=0 ) { return s; } } break; case 86: { ANTLR3_UINT32 LA152_145; ANTLR3_MARKER index152_145; LA152_145 = LA(1); index152_145 = INDEX(); REWINDLAST(); s = -1; if ( (LA152_145 == COMMON_CHAR || LA152_145 == HEX_CHAR) ) { s = 138; } else if ( (LA152_145 == DIGIT) ) { s = 139; } else if ( (LA152_145 == DASH || LA152_145 == DOT || LA152_145 == EMARK || LA152_145 == LPAREN || LA152_145 == RPAREN || ((LA152_145 >= SQUOTE) && (LA152_145 <= USCORE))) ) { s = 140; } else if ( (LA152_145 == PERCENT) ) { s = 141; } else if ( (LA152_145 == AND) ) { s = 95; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_145 == EQUAL) ) { s = 29; } else if ( (LA152_145 == PLUS) ) { s = 142; } else if ( (LA152_145 == DOLLARD) ) { s = 143; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_145 == COMMA) ) { s = 32; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_145 == AT) ) { s = 8; } else if ( (LA152_145 == EOF || LA152_145 == COLON || LA152_145 == CRLF || LA152_145 == DQUOTE || LA152_145 == LSBRAQUET || ((LA152_145 >= QMARK) && (LA152_145 <= RAQUOT)) || LA152_145 == RSBRAQUET || ((LA152_145 >= SLASH) && (LA152_145 <= SP))) ) { s = 6; } SEEK(index152_145); if ( s>=0 ) { return s; } } break; case 87: { ANTLR3_UINT32 LA152_43; ANTLR3_MARKER index152_43; LA152_43 = LA(1); index152_43 = INDEX(); REWINDLAST(); s = -1; if ( (LA152_43 == COLON) ) { s = 40; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_43 == AT) ) { s = 8; } else if ( (LA152_43 == COMMON_CHAR || LA152_43 == HEX_CHAR) ) { s = 41; } else if ( (LA152_43 == DIGIT) ) { s = 42; } else if ( (LA152_43 == DASH || LA152_43 == DOT || LA152_43 == EMARK || LA152_43 == LPAREN || LA152_43 == RPAREN || ((LA152_43 >= SQUOTE) && (LA152_43 <= USCORE))) ) { s = 43; } else if ( (LA152_43 == PERCENT) ) { s = 44; } else if ( (LA152_43 == EQUAL) ) { s = 68; } else if ( (LA152_43 == DOLLARD || ((LA152_43 >= PLUS) && (LA152_43 <= QMARK)) || LA152_43 == SLASH) ) { s = 45; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_43 == AND || LA152_43 == COMMA || LA152_43 == SEMI) ) { s = 5; } else if ( (LA152_43 == LSBRAQUET || LA152_43 == RSBRAQUET) ) { s = 6; } SEEK(index152_43); if ( s>=0 ) { return s; } } break; case 88: { ANTLR3_UINT32 LA152_123; ANTLR3_MARKER index152_123; LA152_123 = LA(1); index152_123 = INDEX(); REWINDLAST(); s = -1; if ( (LA152_123 == COLON) ) { s = 120; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_123 == AT) ) { s = 8; } else if ( (LA152_123 == COMMON_CHAR || LA152_123 == HEX_CHAR) ) { s = 121; } else if ( (LA152_123 == DIGIT) ) { s = 122; } else if ( (LA152_123 == DASH || LA152_123 == DOT || LA152_123 == EMARK || LA152_123 == LPAREN || LA152_123 == RPAREN || ((LA152_123 >= SQUOTE) && (LA152_123 <= USCORE))) ) { s = 123; } else if ( (LA152_123 == PERCENT) ) { s = 124; } else if ( (LA152_123 == EQUAL) ) { s = 135; } else if ( (LA152_123 == DOLLARD || ((LA152_123 >= PLUS) && (LA152_123 <= QMARK)) || LA152_123 == SLASH) ) { s = 125; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_123 == AND || LA152_123 == COMMA || LA152_123 == SEMI) ) { s = 5; } else if ( (LA152_123 == LSBRAQUET || LA152_123 == RSBRAQUET) ) { s = 6; } SEEK(index152_123); if ( s>=0 ) { return s; } } break; case 89: { ANTLR3_UINT32 LA152_155; ANTLR3_MARKER index152_155; LA152_155 = LA(1); index152_155 = INDEX(); REWINDLAST(); s = -1; if ( (synpred10_belle_sip_message(ctx)) && (LA152_155 == AT) ) { s = 8; } else if ( (LA152_155 == COMMON_CHAR || LA152_155 == HEX_CHAR) ) { s = 138; } else if ( (LA152_155 == DIGIT) ) { s = 139; } else if ( (LA152_155 == DASH || LA152_155 == DOT || LA152_155 == EMARK || LA152_155 == LPAREN || LA152_155 == RPAREN || ((LA152_155 >= SQUOTE) && (LA152_155 <= USCORE))) ) { s = 140; } else if ( (LA152_155 == PERCENT) ) { s = 141; } else if ( (LA152_155 == AND) ) { s = 95; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_155 == EQUAL) ) { s = 29; } else if ( (LA152_155 == PLUS) ) { s = 142; } else if ( (LA152_155 == DOLLARD) ) { s = 143; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_155 == COMMA) ) { s = 32; } else if ( (LA152_155 == EOF || LA152_155 == COLON || LA152_155 == CRLF || LA152_155 == DQUOTE || LA152_155 == LSBRAQUET || ((LA152_155 >= QMARK) && (LA152_155 <= RAQUOT)) || LA152_155 == RSBRAQUET || ((LA152_155 >= SLASH) && (LA152_155 <= SP))) ) { s = 6; } SEEK(index152_155); if ( s>=0 ) { return s; } } break; case 90: { ANTLR3_UINT32 LA152_126; ANTLR3_MARKER index152_126; LA152_126 = LA(1); index152_126 = INDEX(); REWINDLAST(); s = -1; if ( (LA152_126 == DOT) ) { s = 127; } else if ( (LA152_126 == COLON) ) { s = 15; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_126 == AT) ) { s = 8; } else if ( (LA152_126 == COMMON_CHAR || LA152_126 == HEX_CHAR) ) { s = 9; } else if ( (LA152_126 == DIGIT) ) { s = 10; } else if ( (LA152_126 == DASH) ) { s = 12; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_126 == PERCENT) ) { s = 4; } else if ( (LA152_126 == SEMI) ) { s = 16; } else if ( (LA152_126 == EOF || LA152_126 == CRLF || LA152_126 == DQUOTE || LA152_126 == RAQUOT || LA152_126 == SP) ) { s = 6; } else if ( (LA152_126 == QMARK) ) { s = 18; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_126 == AND || LA152_126 == COMMA || LA152_126 == DOLLARD || LA152_126 == EQUAL || LA152_126 == PLUS || LA152_126 == SLASH) ) { s = 5; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_126 == EMARK || LA152_126 == LPAREN || LA152_126 == RPAREN || ((LA152_126 >= SQUOTE) && (LA152_126 <= USCORE))) ) { s = 3; } SEEK(index152_126); if ( s>=0 ) { return s; } } break; case 91: { ANTLR3_UINT32 LA152_39; ANTLR3_MARKER index152_39; LA152_39 = LA(1); index152_39 = INDEX(); REWINDLAST(); s = -1; if ( (LA152_39 == COLON) ) { s = 33; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_39 == AT) ) { s = 8; } else if ( (LA152_39 == COMMON_CHAR || LA152_39 == HEX_CHAR) ) { s = 34; } else if ( (LA152_39 == DIGIT) ) { s = 35; } else if ( (LA152_39 == DOT) ) { s = 36; } else if ( (LA152_39 == PERCENT) ) { s = 37; } else if ( (LA152_39 == QMARK) ) { s = 18; } else if ( (LA152_39 == SEMI) ) { s = 16; } else if ( (LA152_39 == EOF || LA152_39 == CRLF || LA152_39 == DQUOTE || LA152_39 == LSBRAQUET || LA152_39 == RAQUOT || LA152_39 == RSBRAQUET || LA152_39 == SP) ) { s = 6; } else if ( (LA152_39 == AND || LA152_39 == DOLLARD || LA152_39 == PLUS || LA152_39 == SLASH) ) { s = 38; } else if ( (LA152_39 == DASH || LA152_39 == EMARK || LA152_39 == LPAREN || LA152_39 == RPAREN || ((LA152_39 >= SQUOTE) && (LA152_39 <= USCORE))) ) { s = 39; } else if ( (LA152_39 == EQUAL) ) { s = 59; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_39 == COMMA) ) { s = 5; } SEEK(index152_39); if ( s>=0 ) { return s; } } break; case 92: { ANTLR3_UINT32 LA152_152; ANTLR3_MARKER index152_152; LA152_152 = LA(1); index152_152 = INDEX(); REWINDLAST(); s = -1; if ( (LA152_152 == COLON) ) { s = 15; } else if ( (LA152_152 == EOF || LA152_152 == CRLF || LA152_152 == DQUOTE || LA152_152 == RAQUOT || LA152_152 == SP) ) { s = 6; } else if ( (LA152_152 == SEMI) ) { s = 16; } else if ( (LA152_152 == QMARK) ) { s = 18; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_152 == AT) ) { s = 8; } else if ( (LA152_152 == COMMON_CHAR || LA152_152 == HEX_CHAR) ) { s = 9; } else if ( (LA152_152 == DIGIT) ) { s = 10; } else if ( (LA152_152 == DOT) ) { s = 17; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_152 == PERCENT) ) { s = 4; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_152 == AND || LA152_152 == COMMA || LA152_152 == DOLLARD || LA152_152 == EQUAL || LA152_152 == PLUS || LA152_152 == SLASH) ) { s = 5; } else if ( (LA152_152 == DASH) ) { s = 12; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_152 == EMARK || LA152_152 == LPAREN || LA152_152 == RPAREN || ((LA152_152 >= SQUOTE) && (LA152_152 <= USCORE))) ) { s = 3; } SEEK(index152_152); if ( s>=0 ) { return s; } } break; case 93: { ANTLR3_UINT32 LA152_15; ANTLR3_MARKER index152_15; LA152_15 = LA(1); index152_15 = INDEX(); REWINDLAST(); s = -1; if ( (synpred10_belle_sip_message(ctx)) && (LA152_15 == COMMON_CHAR || LA152_15 == HEX_CHAR) ) { s = 24; } else if ( (LA152_15 == DIGIT) ) { s = 25; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_15 == DASH || LA152_15 == DOT || LA152_15 == EMARK || LA152_15 == LPAREN || LA152_15 == RPAREN || ((LA152_15 >= SQUOTE) && (LA152_15 <= USCORE))) ) { s = 26; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_15 == PERCENT) ) { s = 27; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_15 == AND) ) { s = 28; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_15 == EQUAL) ) { s = 29; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_15 == PLUS) ) { s = 30; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_15 == DOLLARD) ) { s = 31; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_15 == COMMA) ) { s = 32; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_15 == AT) ) { s = 8; } SEEK(index152_15); if ( s>=0 ) { return s; } } break; case 94: { ANTLR3_UINT32 LA152_89; ANTLR3_MARKER index152_89; LA152_89 = LA(1); index152_89 = INDEX(); REWINDLAST(); s = -1; if ( (LA152_89 == COLON) ) { s = 33; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_89 == AT) ) { s = 8; } else if ( (LA152_89 == COMMON_CHAR || LA152_89 == HEX_CHAR) ) { s = 34; } else if ( (LA152_89 == DIGIT) ) { s = 35; } else if ( (LA152_89 == DOT) ) { s = 36; } else if ( (LA152_89 == PERCENT) ) { s = 37; } else if ( (LA152_89 == QMARK) ) { s = 18; } else if ( (LA152_89 == SEMI) ) { s = 16; } else if ( (LA152_89 == EOF || LA152_89 == CRLF || LA152_89 == DQUOTE || LA152_89 == LSBRAQUET || LA152_89 == RAQUOT || LA152_89 == RSBRAQUET || LA152_89 == SP) ) { s = 6; } else if ( (LA152_89 == AND || LA152_89 == DOLLARD || LA152_89 == PLUS || LA152_89 == SLASH) ) { s = 38; } else if ( (LA152_89 == DASH || LA152_89 == EMARK || LA152_89 == LPAREN || LA152_89 == RPAREN || ((LA152_89 >= SQUOTE) && (LA152_89 <= USCORE))) ) { s = 39; } else if ( (LA152_89 == EQUAL) ) { s = 59; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_89 == COMMA) ) { s = 5; } SEEK(index152_89); if ( s>=0 ) { return s; } } break; case 95: { ANTLR3_UINT32 LA152_66; ANTLR3_MARKER index152_66; LA152_66 = LA(1); index152_66 = INDEX(); REWINDLAST(); s = -1; if ( (synpred10_belle_sip_message(ctx)) && (LA152_66 == AT) ) { s = 8; } else if ( (LA152_66 == COMMON_CHAR || LA152_66 == HEX_CHAR) ) { s = 61; } else if ( (LA152_66 == DIGIT) ) { s = 62; } else if ( (LA152_66 == DASH || LA152_66 == DOT || LA152_66 == EMARK || LA152_66 == LPAREN || LA152_66 == RPAREN || ((LA152_66 >= SQUOTE) && (LA152_66 <= USCORE))) ) { s = 63; } else if ( (LA152_66 == PERCENT) ) { s = 64; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_66 == AND) ) { s = 28; } else if ( (LA152_66 == EQUAL) ) { s = 65; } else if ( (LA152_66 == PLUS) ) { s = 66; } else if ( (LA152_66 == DOLLARD) ) { s = 67; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_66 == COMMA) ) { s = 32; } else if ( (LA152_66 == COLON || LA152_66 == LSBRAQUET || LA152_66 == QMARK || LA152_66 == RSBRAQUET || LA152_66 == SLASH) ) { s = 6; } SEEK(index152_66); if ( s>=0 ) { return s; } } break; case 96: { ANTLR3_UINT32 LA152_117; ANTLR3_MARKER index152_117; LA152_117 = LA(1); index152_117 = INDEX(); REWINDLAST(); s = -1; if ( (synpred10_belle_sip_message(ctx)) && (LA152_117 == AT) ) { s = 8; } else if ( (LA152_117 == COMMON_CHAR || LA152_117 == HEX_CHAR) ) { s = 113; } else if ( (LA152_117 == DIGIT) ) { s = 114; } else if ( (LA152_117 == DASH || LA152_117 == DOT || LA152_117 == EMARK || LA152_117 == LPAREN || LA152_117 == RPAREN || ((LA152_117 >= SQUOTE) && (LA152_117 <= USCORE))) ) { s = 115; } else if ( (LA152_117 == PERCENT) ) { s = 116; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_117 == AND) ) { s = 28; } else if ( (LA152_117 == EQUAL) ) { s = 132; } else if ( (LA152_117 == PLUS) ) { s = 117; } else if ( (LA152_117 == DOLLARD) ) { s = 118; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_117 == COMMA) ) { s = 32; } else if ( (LA152_117 == COLON || LA152_117 == LSBRAQUET || LA152_117 == QMARK || LA152_117 == RSBRAQUET || LA152_117 == SLASH) ) { s = 6; } SEEK(index152_117); if ( s>=0 ) { return s; } } break; case 97: { ANTLR3_UINT32 LA152_62; ANTLR3_MARKER index152_62; LA152_62 = LA(1); index152_62 = INDEX(); REWINDLAST(); s = -1; if ( (synpred10_belle_sip_message(ctx)) && (LA152_62 == AT) ) { s = 8; } else if ( (LA152_62 == COMMON_CHAR || LA152_62 == HEX_CHAR) ) { s = 61; } else if ( (LA152_62 == DIGIT) ) { s = 62; } else if ( (LA152_62 == DASH || LA152_62 == DOT || LA152_62 == EMARK || LA152_62 == LPAREN || LA152_62 == RPAREN || ((LA152_62 >= SQUOTE) && (LA152_62 <= USCORE))) ) { s = 63; } else if ( (LA152_62 == PERCENT) ) { s = 64; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_62 == AND) ) { s = 28; } else if ( (LA152_62 == EQUAL) ) { s = 65; } else if ( (LA152_62 == PLUS) ) { s = 66; } else if ( (LA152_62 == DOLLARD) ) { s = 67; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_62 == COMMA) ) { s = 32; } else if ( (LA152_62 == COLON || LA152_62 == LSBRAQUET || LA152_62 == QMARK || LA152_62 == RSBRAQUET || LA152_62 == SLASH) ) { s = 6; } SEEK(index152_62); if ( s>=0 ) { return s; } } break; case 98: { ANTLR3_UINT32 LA152_67; ANTLR3_MARKER index152_67; LA152_67 = LA(1); index152_67 = INDEX(); REWINDLAST(); s = -1; if ( (synpred10_belle_sip_message(ctx)) && (LA152_67 == AT) ) { s = 8; } else if ( (LA152_67 == COMMON_CHAR || LA152_67 == HEX_CHAR) ) { s = 61; } else if ( (LA152_67 == DIGIT) ) { s = 62; } else if ( (LA152_67 == DASH || LA152_67 == DOT || LA152_67 == EMARK || LA152_67 == LPAREN || LA152_67 == RPAREN || ((LA152_67 >= SQUOTE) && (LA152_67 <= USCORE))) ) { s = 63; } else if ( (LA152_67 == PERCENT) ) { s = 64; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_67 == AND) ) { s = 28; } else if ( (LA152_67 == EQUAL) ) { s = 65; } else if ( (LA152_67 == PLUS) ) { s = 66; } else if ( (LA152_67 == DOLLARD) ) { s = 67; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_67 == COMMA) ) { s = 32; } else if ( (LA152_67 == COLON || LA152_67 == LSBRAQUET || LA152_67 == QMARK || LA152_67 == RSBRAQUET || LA152_67 == SLASH) ) { s = 6; } SEEK(index152_67); if ( s>=0 ) { return s; } } break; case 99: { ANTLR3_UINT32 LA152_114; ANTLR3_MARKER index152_114; LA152_114 = LA(1); index152_114 = INDEX(); REWINDLAST(); s = -1; if ( (synpred10_belle_sip_message(ctx)) && (LA152_114 == AT) ) { s = 8; } else if ( (LA152_114 == COMMON_CHAR || LA152_114 == HEX_CHAR) ) { s = 113; } else if ( (LA152_114 == DIGIT) ) { s = 114; } else if ( (LA152_114 == DASH || LA152_114 == DOT || LA152_114 == EMARK || LA152_114 == LPAREN || LA152_114 == RPAREN || ((LA152_114 >= SQUOTE) && (LA152_114 <= USCORE))) ) { s = 115; } else if ( (LA152_114 == PERCENT) ) { s = 116; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_114 == AND) ) { s = 28; } else if ( (LA152_114 == EQUAL) ) { s = 132; } else if ( (LA152_114 == PLUS) ) { s = 117; } else if ( (LA152_114 == DOLLARD) ) { s = 118; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_114 == COMMA) ) { s = 32; } else if ( (LA152_114 == COLON || LA152_114 == LSBRAQUET || LA152_114 == QMARK || LA152_114 == RSBRAQUET || LA152_114 == SLASH) ) { s = 6; } SEEK(index152_114); if ( s>=0 ) { return s; } } break; case 100: { ANTLR3_UINT32 LA152_118; ANTLR3_MARKER index152_118; LA152_118 = LA(1); index152_118 = INDEX(); REWINDLAST(); s = -1; if ( (synpred10_belle_sip_message(ctx)) && (LA152_118 == AT) ) { s = 8; } else if ( (LA152_118 == COMMON_CHAR || LA152_118 == HEX_CHAR) ) { s = 113; } else if ( (LA152_118 == DIGIT) ) { s = 114; } else if ( (LA152_118 == DASH || LA152_118 == DOT || LA152_118 == EMARK || LA152_118 == LPAREN || LA152_118 == RPAREN || ((LA152_118 >= SQUOTE) && (LA152_118 <= USCORE))) ) { s = 115; } else if ( (LA152_118 == PERCENT) ) { s = 116; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_118 == AND) ) { s = 28; } else if ( (LA152_118 == EQUAL) ) { s = 132; } else if ( (LA152_118 == PLUS) ) { s = 117; } else if ( (LA152_118 == DOLLARD) ) { s = 118; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_118 == COMMA) ) { s = 32; } else if ( (LA152_118 == COLON || LA152_118 == LSBRAQUET || LA152_118 == QMARK || LA152_118 == RSBRAQUET || LA152_118 == SLASH) ) { s = 6; } SEEK(index152_118); if ( s>=0 ) { return s; } } break; case 101: { ANTLR3_UINT32 LA152_99; ANTLR3_MARKER index152_99; LA152_99 = LA(1); index152_99 = INDEX(); REWINDLAST(); s = -1; if ( (LA152_99 == COLON) ) { s = 98; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_99 == AT) ) { s = 8; } else if ( (LA152_99 == COMMON_CHAR || LA152_99 == HEX_CHAR) ) { s = 99; } else if ( (LA152_99 == DIGIT) ) { s = 100; } else if ( (LA152_99 == DASH || LA152_99 == DOT || LA152_99 == EMARK || LA152_99 == LPAREN || LA152_99 == RPAREN || ((LA152_99 >= SQUOTE) && (LA152_99 <= USCORE))) ) { s = 101; } else if ( (LA152_99 == PERCENT) ) { s = 102; } else if ( (LA152_99 == AND) ) { s = 104; } else if ( (LA152_99 == DOLLARD || ((LA152_99 >= PLUS) && (LA152_99 <= QMARK)) || LA152_99 == SLASH) ) { s = 103; } else if ( (LA152_99 == EOF || LA152_99 == CRLF || LA152_99 == DQUOTE || LA152_99 == LSBRAQUET || LA152_99 == RAQUOT || LA152_99 == RSBRAQUET || LA152_99 == SP) ) { s = 6; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_99 == COMMA || LA152_99 == EQUAL || LA152_99 == SEMI) ) { s = 5; } SEEK(index152_99); if ( s>=0 ) { return s; } } break; case 102: { ANTLR3_UINT32 LA152_74; ANTLR3_MARKER index152_74; LA152_74 = LA(1); index152_74 = INDEX(); REWINDLAST(); s = -1; if ( (synpred10_belle_sip_message(ctx)) && (LA152_74 == AT) ) { s = 8; } else if ( (LA152_74 == COMMON_CHAR || LA152_74 == HEX_CHAR) ) { s = 74; } else if ( (LA152_74 == DIGIT) ) { s = 75; } else if ( (LA152_74 == DOT) ) { s = 76; } else if ( (LA152_74 == PERCENT) ) { s = 77; } else if ( (LA152_74 == AND) ) { s = 78; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_74 == EQUAL) ) { s = 29; } else if ( (LA152_74 == PLUS) ) { s = 79; } else if ( (LA152_74 == DOLLARD) ) { s = 80; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_74 == COMMA) ) { s = 32; } else if ( (LA152_74 == EOF || LA152_74 == COLON || LA152_74 == CRLF || LA152_74 == DQUOTE || LA152_74 == LSBRAQUET || ((LA152_74 >= QMARK) && (LA152_74 <= RAQUOT)) || ((LA152_74 >= RSBRAQUET) && (LA152_74 <= SP))) ) { s = 6; } else if ( (LA152_74 == DASH || LA152_74 == EMARK || LA152_74 == LPAREN || LA152_74 == RPAREN || ((LA152_74 >= SQUOTE) && (LA152_74 <= USCORE))) ) { s = 81; } SEEK(index152_74); if ( s>=0 ) { return s; } } break; case 103: { ANTLR3_UINT32 LA152_65; ANTLR3_MARKER index152_65; LA152_65 = LA(1); index152_65 = INDEX(); REWINDLAST(); s = -1; if ( (synpred10_belle_sip_message(ctx)) && (LA152_65 == AT) ) { s = 8; } else if ( (LA152_65 == COMMON_CHAR || LA152_65 == HEX_CHAR) ) { s = 91; } else if ( (LA152_65 == DIGIT) ) { s = 92; } else if ( (LA152_65 == DASH || LA152_65 == DOT || LA152_65 == EMARK || LA152_65 == LPAREN || LA152_65 == RPAREN || ((LA152_65 >= SQUOTE) && (LA152_65 <= USCORE))) ) { s = 93; } else if ( (LA152_65 == PERCENT) ) { s = 94; } else if ( (LA152_65 == AND) ) { s = 95; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_65 == EQUAL) ) { s = 29; } else if ( (LA152_65 == PLUS) ) { s = 96; } else if ( (LA152_65 == DOLLARD) ) { s = 97; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_65 == COMMA) ) { s = 32; } else if ( (LA152_65 == EOF || LA152_65 == COLON || LA152_65 == CRLF || LA152_65 == DQUOTE || LA152_65 == LSBRAQUET || ((LA152_65 >= QMARK) && (LA152_65 <= RAQUOT)) || LA152_65 == RSBRAQUET || ((LA152_65 >= SLASH) && (LA152_65 <= SP))) ) { s = 6; } SEEK(index152_65); if ( s>=0 ) { return s; } } break; case 104: { ANTLR3_UINT32 LA152_111; ANTLR3_MARKER index152_111; LA152_111 = LA(1); index152_111 = INDEX(); REWINDLAST(); s = -1; if ( (synpred10_belle_sip_message(ctx)) && (LA152_111 == AT) ) { s = 8; } else if ( (LA152_111 == COMMON_CHAR || LA152_111 == HEX_CHAR) ) { s = 61; } else if ( (LA152_111 == DIGIT) ) { s = 62; } else if ( (LA152_111 == DASH || LA152_111 == DOT || LA152_111 == EMARK || LA152_111 == LPAREN || LA152_111 == RPAREN || ((LA152_111 >= SQUOTE) && (LA152_111 <= USCORE))) ) { s = 63; } else if ( (LA152_111 == PERCENT) ) { s = 64; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_111 == AND) ) { s = 28; } else if ( (LA152_111 == EQUAL) ) { s = 65; } else if ( (LA152_111 == PLUS) ) { s = 66; } else if ( (LA152_111 == DOLLARD) ) { s = 67; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_111 == COMMA) ) { s = 32; } else if ( (LA152_111 == COLON || LA152_111 == LSBRAQUET || LA152_111 == QMARK || LA152_111 == RSBRAQUET || LA152_111 == SLASH) ) { s = 6; } SEEK(index152_111); if ( s>=0 ) { return s; } } break; case 105: { ANTLR3_UINT32 LA152_144; ANTLR3_MARKER index152_144; LA152_144 = LA(1); index152_144 = INDEX(); REWINDLAST(); s = -1; if ( (synpred10_belle_sip_message(ctx)) && (LA152_144 == AT) ) { s = 8; } else if ( (LA152_144 == COMMON_CHAR || LA152_144 == HEX_CHAR) ) { s = 113; } else if ( (LA152_144 == DIGIT) ) { s = 114; } else if ( (LA152_144 == DASH || LA152_144 == DOT || LA152_144 == EMARK || LA152_144 == LPAREN || LA152_144 == RPAREN || ((LA152_144 >= SQUOTE) && (LA152_144 <= USCORE))) ) { s = 115; } else if ( (LA152_144 == PERCENT) ) { s = 116; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_144 == AND) ) { s = 28; } else if ( (LA152_144 == EQUAL) ) { s = 132; } else if ( (LA152_144 == PLUS) ) { s = 117; } else if ( (LA152_144 == DOLLARD) ) { s = 118; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_144 == COMMA) ) { s = 32; } else if ( (LA152_144 == COLON || LA152_144 == LSBRAQUET || LA152_144 == QMARK || LA152_144 == RSBRAQUET || LA152_144 == SLASH) ) { s = 6; } SEEK(index152_144); if ( s>=0 ) { return s; } } break; case 106: { ANTLR3_UINT32 LA152_36; ANTLR3_MARKER index152_36; LA152_36 = LA(1); index152_36 = INDEX(); REWINDLAST(); s = -1; if ( (LA152_36 == COLON) ) { s = 33; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_36 == AT) ) { s = 8; } else if ( (LA152_36 == COMMON_CHAR || LA152_36 == HEX_CHAR) ) { s = 34; } else if ( (LA152_36 == DIGIT) ) { s = 35; } else if ( (LA152_36 == DOT) ) { s = 36; } else if ( (LA152_36 == PERCENT) ) { s = 37; } else if ( (LA152_36 == QMARK) ) { s = 18; } else if ( (LA152_36 == SEMI) ) { s = 16; } else if ( (LA152_36 == EOF || LA152_36 == CRLF || LA152_36 == DQUOTE || LA152_36 == LSBRAQUET || LA152_36 == RAQUOT || LA152_36 == RSBRAQUET || LA152_36 == SP) ) { s = 6; } else if ( (LA152_36 == AND || LA152_36 == DOLLARD || LA152_36 == PLUS || LA152_36 == SLASH) ) { s = 38; } else if ( (LA152_36 == DASH || LA152_36 == EMARK || LA152_36 == LPAREN || LA152_36 == RPAREN || ((LA152_36 >= SQUOTE) && (LA152_36 <= USCORE))) ) { s = 39; } else if ( (LA152_36 == EQUAL) ) { s = 59; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_36 == COMMA) ) { s = 5; } SEEK(index152_36); if ( s>=0 ) { return s; } } break; case 107: { ANTLR3_UINT32 LA152_76; ANTLR3_MARKER index152_76; LA152_76 = LA(1); index152_76 = INDEX(); REWINDLAST(); s = -1; if ( (synpred10_belle_sip_message(ctx)) && (LA152_76 == AT) ) { s = 8; } else if ( (LA152_76 == COMMON_CHAR || LA152_76 == HEX_CHAR) ) { s = 74; } else if ( (LA152_76 == DIGIT) ) { s = 75; } else if ( (LA152_76 == DOT) ) { s = 76; } else if ( (LA152_76 == PERCENT) ) { s = 77; } else if ( (LA152_76 == AND) ) { s = 78; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_76 == EQUAL) ) { s = 29; } else if ( (LA152_76 == PLUS) ) { s = 79; } else if ( (LA152_76 == DOLLARD) ) { s = 80; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_76 == COMMA) ) { s = 32; } else if ( (LA152_76 == EOF || LA152_76 == COLON || LA152_76 == CRLF || LA152_76 == DQUOTE || LA152_76 == LSBRAQUET || ((LA152_76 >= QMARK) && (LA152_76 <= RAQUOT)) || ((LA152_76 >= RSBRAQUET) && (LA152_76 <= SP))) ) { s = 6; } else if ( (LA152_76 == DASH || LA152_76 == EMARK || LA152_76 == LPAREN || LA152_76 == RPAREN || ((LA152_76 >= SQUOTE) && (LA152_76 <= USCORE))) ) { s = 81; } SEEK(index152_76); if ( s>=0 ) { return s; } } break; case 108: { ANTLR3_UINT32 LA152_11; ANTLR3_MARKER index152_11; LA152_11 = LA(1); index152_11 = INDEX(); REWINDLAST(); s = -1; if ( (synpred10_belle_sip_message(ctx)) && (LA152_11 == COLON) ) { s = 7; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_11 == AT) ) { s = 8; } else if ( (LA152_11 == COMMON_CHAR || LA152_11 == HEX_CHAR) ) { s = 1; } else if ( (LA152_11 == DIGIT) ) { s = 19; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_11 == DASH || LA152_11 == DOT || LA152_11 == EMARK || LA152_11 == LPAREN || LA152_11 == RPAREN || ((LA152_11 >= SQUOTE) && (LA152_11 <= USCORE))) ) { s = 3; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_11 == PERCENT) ) { s = 4; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_11 == AND || LA152_11 == COMMA || LA152_11 == DOLLARD || LA152_11 == EQUAL || ((LA152_11 >= PLUS) && (LA152_11 <= QMARK)) || ((LA152_11 >= SEMI) && (LA152_11 <= SLASH))) ) { s = 5; } SEEK(index152_11); if ( s>=0 ) { return s; } } break; case 109: { ANTLR3_UINT32 LA152_38; ANTLR3_MARKER index152_38; LA152_38 = LA(1); index152_38 = INDEX(); REWINDLAST(); s = -1; if ( (LA152_38 == COLON) ) { s = 33; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_38 == AT) ) { s = 8; } else if ( (LA152_38 == COMMON_CHAR || LA152_38 == HEX_CHAR) ) { s = 34; } else if ( (LA152_38 == DIGIT) ) { s = 35; } else if ( (LA152_38 == DOT) ) { s = 36; } else if ( (LA152_38 == PERCENT) ) { s = 37; } else if ( (LA152_38 == QMARK) ) { s = 18; } else if ( (LA152_38 == SEMI) ) { s = 16; } else if ( (LA152_38 == EOF || LA152_38 == CRLF || LA152_38 == DQUOTE || LA152_38 == LSBRAQUET || LA152_38 == RAQUOT || LA152_38 == RSBRAQUET || LA152_38 == SP) ) { s = 6; } else if ( (LA152_38 == AND || LA152_38 == DOLLARD || LA152_38 == PLUS || LA152_38 == SLASH) ) { s = 38; } else if ( (LA152_38 == DASH || LA152_38 == EMARK || LA152_38 == LPAREN || LA152_38 == RPAREN || ((LA152_38 >= SQUOTE) && (LA152_38 <= USCORE))) ) { s = 39; } else if ( (LA152_38 == EQUAL) ) { s = 59; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_38 == COMMA) ) { s = 5; } SEEK(index152_38); if ( s>=0 ) { return s; } } break; case 110: { ANTLR3_UINT32 LA152_81; ANTLR3_MARKER index152_81; LA152_81 = LA(1); index152_81 = INDEX(); REWINDLAST(); s = -1; if ( (synpred10_belle_sip_message(ctx)) && (LA152_81 == AT) ) { s = 8; } else if ( (LA152_81 == COMMON_CHAR || LA152_81 == HEX_CHAR) ) { s = 74; } else if ( (LA152_81 == DIGIT) ) { s = 75; } else if ( (LA152_81 == DOT) ) { s = 76; } else if ( (LA152_81 == PERCENT) ) { s = 77; } else if ( (LA152_81 == AND) ) { s = 78; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_81 == EQUAL) ) { s = 29; } else if ( (LA152_81 == PLUS) ) { s = 79; } else if ( (LA152_81 == DOLLARD) ) { s = 80; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_81 == COMMA) ) { s = 32; } else if ( (LA152_81 == EOF || LA152_81 == COLON || LA152_81 == CRLF || LA152_81 == DQUOTE || LA152_81 == LSBRAQUET || ((LA152_81 >= QMARK) && (LA152_81 <= RAQUOT)) || ((LA152_81 >= RSBRAQUET) && (LA152_81 <= SP))) ) { s = 6; } else if ( (LA152_81 == DASH || LA152_81 == EMARK || LA152_81 == LPAREN || LA152_81 == RPAREN || ((LA152_81 >= SQUOTE) && (LA152_81 <= USCORE))) ) { s = 81; } SEEK(index152_81); if ( s>=0 ) { return s; } } break; case 111: { ANTLR3_UINT32 LA152_40; ANTLR3_MARKER index152_40; LA152_40 = LA(1); index152_40 = INDEX(); REWINDLAST(); s = -1; if ( (LA152_40 == COMMON_CHAR || LA152_40 == HEX_CHAR) ) { s = 61; } else if ( (LA152_40 == DIGIT) ) { s = 62; } else if ( (LA152_40 == DASH || LA152_40 == DOT || LA152_40 == EMARK || LA152_40 == LPAREN || LA152_40 == RPAREN || ((LA152_40 >= SQUOTE) && (LA152_40 <= USCORE))) ) { s = 63; } else if ( (LA152_40 == PERCENT) ) { s = 64; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_40 == AND) ) { s = 28; } else if ( (LA152_40 == EQUAL) ) { s = 65; } else if ( (LA152_40 == PLUS) ) { s = 66; } else if ( (LA152_40 == DOLLARD) ) { s = 67; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_40 == COMMA) ) { s = 32; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_40 == AT) ) { s = 8; } else if ( (LA152_40 == COLON || LA152_40 == LSBRAQUET || LA152_40 == QMARK || LA152_40 == RSBRAQUET || LA152_40 == SLASH) ) { s = 6; } SEEK(index152_40); if ( s>=0 ) { return s; } } break; case 112: { ANTLR3_UINT32 LA152_120; ANTLR3_MARKER index152_120; LA152_120 = LA(1); index152_120 = INDEX(); REWINDLAST(); s = -1; if ( (LA152_120 == COMMON_CHAR || LA152_120 == HEX_CHAR) ) { s = 113; } else if ( (LA152_120 == DIGIT) ) { s = 114; } else if ( (LA152_120 == DASH || LA152_120 == DOT || LA152_120 == EMARK || LA152_120 == LPAREN || LA152_120 == RPAREN || ((LA152_120 >= SQUOTE) && (LA152_120 <= USCORE))) ) { s = 115; } else if ( (LA152_120 == PERCENT) ) { s = 116; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_120 == AND) ) { s = 28; } else if ( (LA152_120 == EQUAL) ) { s = 132; } else if ( (LA152_120 == PLUS) ) { s = 117; } else if ( (LA152_120 == DOLLARD) ) { s = 118; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_120 == COMMA) ) { s = 32; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_120 == AT) ) { s = 8; } else if ( (LA152_120 == COLON || LA152_120 == LSBRAQUET || LA152_120 == QMARK || LA152_120 == RSBRAQUET || LA152_120 == SLASH) ) { s = 6; } SEEK(index152_120); if ( s>=0 ) { return s; } } break; case 113: { ANTLR3_UINT32 LA152_101; ANTLR3_MARKER index152_101; LA152_101 = LA(1); index152_101 = INDEX(); REWINDLAST(); s = -1; if ( (LA152_101 == COLON) ) { s = 98; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_101 == AT) ) { s = 8; } else if ( (LA152_101 == COMMON_CHAR || LA152_101 == HEX_CHAR) ) { s = 99; } else if ( (LA152_101 == DIGIT) ) { s = 100; } else if ( (LA152_101 == DASH || LA152_101 == DOT || LA152_101 == EMARK || LA152_101 == LPAREN || LA152_101 == RPAREN || ((LA152_101 >= SQUOTE) && (LA152_101 <= USCORE))) ) { s = 101; } else if ( (LA152_101 == PERCENT) ) { s = 102; } else if ( (LA152_101 == AND) ) { s = 104; } else if ( (LA152_101 == DOLLARD || ((LA152_101 >= PLUS) && (LA152_101 <= QMARK)) || LA152_101 == SLASH) ) { s = 103; } else if ( (LA152_101 == EOF || LA152_101 == CRLF || LA152_101 == DQUOTE || LA152_101 == LSBRAQUET || LA152_101 == RAQUOT || LA152_101 == RSBRAQUET || LA152_101 == SP) ) { s = 6; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_101 == COMMA || LA152_101 == EQUAL || LA152_101 == SEMI) ) { s = 5; } SEEK(index152_101); if ( s>=0 ) { return s; } } break; case 114: { ANTLR3_UINT32 LA152_135; ANTLR3_MARKER index152_135; LA152_135 = LA(1); index152_135 = INDEX(); REWINDLAST(); s = -1; if ( (LA152_135 == COLON) ) { s = 145; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_135 == AT) ) { s = 8; } else if ( (LA152_135 == COMMON_CHAR || LA152_135 == HEX_CHAR) ) { s = 146; } else if ( (LA152_135 == DIGIT) ) { s = 147; } else if ( (LA152_135 == DASH || LA152_135 == DOT || LA152_135 == EMARK || LA152_135 == LPAREN || LA152_135 == RPAREN || ((LA152_135 >= SQUOTE) && (LA152_135 <= USCORE))) ) { s = 148; } else if ( (LA152_135 == PERCENT) ) { s = 149; } else if ( (LA152_135 == DOLLARD || ((LA152_135 >= PLUS) && (LA152_135 <= QMARK)) || LA152_135 == SLASH) ) { s = 150; } else if ( (LA152_135 == AND) ) { s = 104; } else if ( (LA152_135 == EOF || LA152_135 == CRLF || LA152_135 == DQUOTE || LA152_135 == LSBRAQUET || LA152_135 == RAQUOT || LA152_135 == RSBRAQUET || LA152_135 == SP) ) { s = 6; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_135 == COMMA || LA152_135 == EQUAL || LA152_135 == SEMI) ) { s = 5; } SEEK(index152_135); if ( s>=0 ) { return s; } } break; case 115: { ANTLR3_UINT32 LA152_18; ANTLR3_MARKER index152_18; LA152_18 = LA(1); index152_18 = INDEX(); REWINDLAST(); s = -1; if ( (LA152_18 == COLON) ) { s = 40; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_18 == AT) ) { s = 8; } else if ( (LA152_18 == COMMON_CHAR || LA152_18 == HEX_CHAR) ) { s = 41; } else if ( (LA152_18 == DIGIT) ) { s = 42; } else if ( (LA152_18 == DASH || LA152_18 == DOT || LA152_18 == EMARK || LA152_18 == LPAREN || LA152_18 == RPAREN || ((LA152_18 >= SQUOTE) && (LA152_18 <= USCORE))) ) { s = 43; } else if ( (LA152_18 == PERCENT) ) { s = 44; } else if ( (LA152_18 == DOLLARD || ((LA152_18 >= PLUS) && (LA152_18 <= QMARK)) || LA152_18 == SLASH) ) { s = 45; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_18 == AND || LA152_18 == COMMA || LA152_18 == EQUAL || LA152_18 == SEMI) ) { s = 5; } else if ( (LA152_18 == LSBRAQUET || LA152_18 == RSBRAQUET) ) { s = 6; } SEEK(index152_18); if ( s>=0 ) { return s; } } break; case 116: { ANTLR3_UINT32 LA152_104; ANTLR3_MARKER index152_104; LA152_104 = LA(1); index152_104 = INDEX(); REWINDLAST(); s = -1; if ( (LA152_104 == COLON) ) { s = 120; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_104 == AT) ) { s = 8; } else if ( (LA152_104 == COMMON_CHAR || LA152_104 == HEX_CHAR) ) { s = 121; } else if ( (LA152_104 == DIGIT) ) { s = 122; } else if ( (LA152_104 == DASH || LA152_104 == DOT || LA152_104 == EMARK || LA152_104 == LPAREN || LA152_104 == RPAREN || ((LA152_104 >= SQUOTE) && (LA152_104 <= USCORE))) ) { s = 123; } else if ( (LA152_104 == PERCENT) ) { s = 124; } else if ( (LA152_104 == DOLLARD || ((LA152_104 >= PLUS) && (LA152_104 <= QMARK)) || LA152_104 == SLASH) ) { s = 125; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_104 == AND || LA152_104 == COMMA || LA152_104 == EQUAL || LA152_104 == SEMI) ) { s = 5; } else if ( (LA152_104 == LSBRAQUET || LA152_104 == RSBRAQUET) ) { s = 6; } SEEK(index152_104); if ( s>=0 ) { return s; } } break; case 117: { ANTLR3_UINT32 LA152_138; ANTLR3_MARKER index152_138; LA152_138 = LA(1); index152_138 = INDEX(); REWINDLAST(); s = -1; if ( (synpred10_belle_sip_message(ctx)) && (LA152_138 == AT) ) { s = 8; } else if ( (LA152_138 == COMMON_CHAR || LA152_138 == HEX_CHAR) ) { s = 138; } else if ( (LA152_138 == DIGIT) ) { s = 139; } else if ( (LA152_138 == DASH || LA152_138 == DOT || LA152_138 == EMARK || LA152_138 == LPAREN || LA152_138 == RPAREN || ((LA152_138 >= SQUOTE) && (LA152_138 <= USCORE))) ) { s = 140; } else if ( (LA152_138 == PERCENT) ) { s = 141; } else if ( (LA152_138 == AND) ) { s = 95; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_138 == EQUAL) ) { s = 29; } else if ( (LA152_138 == PLUS) ) { s = 142; } else if ( (LA152_138 == DOLLARD) ) { s = 143; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_138 == COMMA) ) { s = 32; } else if ( (LA152_138 == EOF || LA152_138 == COLON || LA152_138 == CRLF || LA152_138 == DQUOTE || LA152_138 == LSBRAQUET || ((LA152_138 >= QMARK) && (LA152_138 <= RAQUOT)) || LA152_138 == RSBRAQUET || ((LA152_138 >= SLASH) && (LA152_138 <= SP))) ) { s = 6; } SEEK(index152_138); if ( s>=0 ) { return s; } } break; case 118: { ANTLR3_UINT32 LA152_46; ANTLR3_MARKER index152_46; LA152_46 = LA(1); index152_46 = INDEX(); REWINDLAST(); s = -1; if ( (synpred10_belle_sip_message(ctx)) && (LA152_46 == COLON) ) { s = 7; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_46 == AT) ) { s = 8; } else if ( (LA152_46 == COMMON_CHAR || LA152_46 == HEX_CHAR) ) { s = 46; } else if ( (LA152_46 == DIGIT) ) { s = 47; } else if ( (LA152_46 == DOT) ) { s = 11; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_46 == PERCENT) ) { s = 4; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_46 == AND || LA152_46 == COMMA || LA152_46 == DOLLARD || LA152_46 == EQUAL || ((LA152_46 >= PLUS) && (LA152_46 <= QMARK)) || ((LA152_46 >= SEMI) && (LA152_46 <= SLASH))) ) { s = 5; } else if ( (LA152_46 == DASH) ) { s = 20; } else if ( (synpred10_belle_sip_message(ctx)) && (LA152_46 == EMARK || LA152_46 == LPAREN || LA152_46 == RPAREN || ((LA152_46 >= SQUOTE) && (LA152_46 <= USCORE))) ) { s = 3; } SEEK(index152_46); if ( s>=0 ) { return s; } } break; } if (BACKTRACKING > 0) { FAILEDFLAG = ANTLR3_TRUE; return -1; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)"1803:33: ( ( ( userinfo[NULL] )=> userinfo[$uri::current] hostport[$uri::current] ) | hostport[$uri::current] )"; EXCEPTION->decisionNum = 152; EXCEPTION->state = _s; return -1; } /* Declare tracking structure for Cyclic DFA 152 */ static ANTLR3_CYCLIC_DFA cdfa152 = { 152, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"1803:33: ( ( ( userinfo[NULL] )=> userinfo[$uri::current] hostport[$uri::current] ) | hostport[$uri::current] )", (CDFA_SPECIAL_FUNC) dfa152_sst, antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa152_eot, /* EOT table */ dfa152_eof, /* EOF table */ dfa152_min, /* Minimum tokens for each state */ dfa152_max, /* Maximum tokens for each state */ dfa152_accept, /* Accept table */ dfa152_special, /* Special transition states */ dfa152_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 152 * --------------------- *//** Static dfa state tables for Cyclic dfa: * 1804:4: ( uri_parameters[$uri::current] )? */ static const ANTLR3_INT32 dfa153_eot[7] = { -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa153_eof[7] = { 4, 4, -1, -1, -1, 4, 4 }; static const ANTLR3_INT32 dfa153_min[7] = { 11, 10, 36, -1, -1, 11, 30 }; static const ANTLR3_INT32 dfa153_max[7] = { 36, 36, 36, -1, -1, 36, 36 }; static const ANTLR3_INT32 dfa153_accept[7] = { -1, -1, -1, 1, 2, -1, -1 }; static const ANTLR3_INT32 dfa153_special[7] = { -1, -1, -1, -1, -1, -1, -1 }; /** Used when there is no transition table entry for a particular state */ #define dfa153_T_empty NULL static const ANTLR3_INT32 dfa153_T0[] = { 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, -1, -1, -1, 3, -1, 5 }; static const ANTLR3_INT32 dfa153_T1[] = { 4, 2, -1, -1, -1, -1, -1, -1, -1, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, -1, -1, -1, 3, -1, 5 }; static const ANTLR3_INT32 dfa153_T2[] = { 4, -1, -1, -1, 3, -1, 6 }; static const ANTLR3_INT32 dfa153_T3[] = { 6 }; static const ANTLR3_INT32 dfa153_T4[] = { 2, -1, -1, -1, -1, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, 4, -1, -1, -1, 3, -1, 1 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa153_transitions[] = { dfa153_T4, dfa153_T1, dfa153_T3, NULL, NULL, dfa153_T0, dfa153_T2 }; /* Declare tracking structure for Cyclic DFA 153 */ static ANTLR3_CYCLIC_DFA cdfa153 = { 153, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"1804:4: ( uri_parameters[$uri::current] )?", (CDFA_SPECIAL_FUNC) antlr3dfaspecialStateTransition, /* Default special state transition function */ antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa153_eot, /* EOT table */ dfa153_eof, /* EOF table */ dfa153_min, /* Minimum tokens for each state */ dfa153_max, /* Maximum tokens for each state */ dfa153_accept, /* Accept table */ dfa153_special, /* Special transition states */ dfa153_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 153 * --------------------- *//** Static dfa state tables for Cyclic dfa: * 1816:38: ( ( ( userinfo[NULL] )=> userinfo[$fast_uri::current] fast_hostport[$fast_uri::current] ) | fast_hostport[$fast_uri::current] ) */ static const ANTLR3_INT32 dfa155_eot[134] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa155_eof[134] = { -1, 6, 6, -1, -1, -1, -1, -1, -1, 6, 6, 6, 6, 6, -1, -1, 6, -1, -1, -1, -1, -1, -1, -1, 6, 6, 6, 6, -1, 6, 6, -1, -1, -1, -1, -1, -1, 6, 6, 6, -1, 6, -1, 6, 6, 6, -1, -1, -1, -1, -1, -1, 6, -1, -1, 6, -1, -1, 6, 6, 6, -1, 6, 6, 6, 6, 6, 6, 6, 6, -1, 6, 6, 6, -1, 6, 6, 6, -1, -1, 6, 6, 6, 6, 6, 6, -1, 6, -1, -1, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6, 6, 6, 6, -1, 6, 6, -1, 6, 6, 6, -1, 6, 6, -1, 6, 6, 6, 6, -1, 6, -1, -1, -1, 6, 6 }; static const ANTLR3_INT32 dfa155_min[134] = { 4, 4, 4, -1, -1, -1, -1, 4, -1, 4, 4, 4, 4, 4, 4, -1, 4, -1, -1, -1, -1, -1, -1, -1, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 13, 4, 4, 4, 4, 13, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 4, 4, 13, 13, 4, 13, 4, 4, 4, 13, 4, 4, 13, 4, 4, 4, 4, 13, 4, 4, 4, 4, 4, 13, 4, 4, 13, 4, 4, 4, 13, 4, 4, 4, 4, 4, 4, 4, 13, 4, 4, 13, 13, 4, 4 }; static const ANTLR3_INT32 dfa155_max[134] = { 40, 40, 40, -1, -1, -1, -1, 40, -1, 40, 40, 40, 40, 40, 40, -1, 40, -1, -1, -1, -1, -1, -1, -1, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 19, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 40, 40, 19, 19, 40, 19, 40, 40, 40, 19, 40, 40, 19, 40, 40, 40, 40, 19, 40, 40, 40, 40, 40, 19, 40, 40, 19, 40, 40, 40, 19, 40, 40, 40, 40, 40, 40, 40, 19, 40, 40, 19, 19, 40, 40 }; static const ANTLR3_INT32 dfa155_accept[134] = { -1, -1, -1, 1, 1, 1, 2, -1, 1, -1, -1, -1, -1, -1, -1, 1, -1, 1, 1, 1, 1, 1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa155_special[134] = { 23, 57, 32, -1, -1, -1, -1, 83, -1, 56, 31, 22, 88, 28, 93, -1, 45, -1, -1, -1, -1, -1, -1, -1, 24, 34, 76, 48, -1, 52, 44, 89, 62, 36, 66, -1, 29, 84, 38, 3, -1, 9, 54, 6, 8, 91, 0, -1, 14, 77, 20, -1, 5, 72, 78, 40, -1, -1, 46, 17, 55, -1, 82, 73, 75, 51, 94, 92, 59, 7, -1, 33, 1, 43, -1, 47, 13, 49, -1, 53, 16, 12, 25, 2, 61, 4, -1, 50, 96, 41, 95, -1, -1, 86, -1, 15, 79, 21, -1, 74, 80, -1, 90, 63, 37, 67, -1, 30, 27, 65, 26, 60, -1, 71, 10, -1, 11, 69, 19, -1, 68, 70, 87, 81, 58, 35, 64, -1, 18, 42, -1, -1, 85, 39 }; /** Used when there is no transition table entry for a particular state */ #define dfa155_T_empty NULL static const ANTLR3_INT32 dfa155_T0[] = { 71, 8, -1, -1, 66, 5, 67, -1, 72, 68, 71, 69, -1, 72, 5, 67, -1, -1, -1, 72, 6, -1, -1, 70, 71, 5, -1, -1, 72, 6, 5, 71, -1, 72, 72, 72, 72 }; static const ANTLR3_INT32 dfa155_T1[] = { 71, 8, -1, -1, 66, 5, 67, 6, 72, 68, 71, 69, -1, 72, 5, 67, -1, -1, -1, 72, 6, -1, -1, 70, 71, 14, 6, -1, 72, 6, 12, 71, 6, 72, 72, 72, 72 }; static const ANTLR3_INT32 dfa155_T2[] = { 88, 8, -1, -1, 82, 5, 83, 6, 85, 84, 87, 85, -1, 85, 5, 83, -1, -1, -1, 85, 6, -1, -1, 86, 87, 87, 6, -1, 85, 6, 5, 87, 6, 85, 85, 85, 85 }; static const ANTLR3_INT32 dfa155_T3[] = { 41, 8, -1, -1, 6, 23, 37, 6, 45, 38, 44, 39, -1, 45, 42, 37, -1, -1, -1, 45, 6, -1, -1, 40, 43, 6, 6, -1, 45, 6, 6, 6, 6, 45, 45, 45, 45 }; static const ANTLR3_INT32 dfa155_T4[] = { 79, 8, -1, -1, 6, 23, 75, 6, 77, 76, 81, 77, -1, 77, 20, 75, -1, -1, -1, 77, 6, -1, -1, 78, 80, 6, 6, -1, 77, 6, -1, 6, 6, 77, 77, 77, 77 }; static const ANTLR3_INT32 dfa155_T5[] = { 56, -1, -1, -1, -1, -1, 56 }; static const ANTLR3_INT32 dfa155_T6[] = { 74, -1, -1, -1, -1, -1, 74 }; static const ANTLR3_INT32 dfa155_T7[] = { 91, -1, -1, -1, -1, -1, 91 }; static const ANTLR3_INT32 dfa155_T8[] = { 130, -1, -1, -1, -1, -1, 130 }; static const ANTLR3_INT32 dfa155_T9[] = { 131, -1, -1, -1, -1, -1, 131 }; static const ANTLR3_INT32 dfa155_T10[] = { 92, -1, -1, -1, -1, -1, 92 }; static const ANTLR3_INT32 dfa155_T11[] = { 94, -1, -1, -1, -1, -1, 94 }; static const ANTLR3_INT32 dfa155_T12[] = { 101, -1, -1, -1, -1, -1, 101 }; static const ANTLR3_INT32 dfa155_T13[] = { 112, -1, -1, -1, -1, -1, 112 }; static const ANTLR3_INT32 dfa155_T14[] = { 115, -1, -1, -1, -1, -1, 115 }; static const ANTLR3_INT32 dfa155_T15[] = { 88, 8, -1, -1, 123, 5, 124, 6, 126, 125, 128, 126, -1, 126, 5, 124, -1, -1, -1, 126, 6, -1, -1, 127, 128, 128, 6, -1, 126, 6, 5, 128, 6, 126, 126, 126, 126 }; static const ANTLR3_INT32 dfa155_T16[] = { 79, 8, -1, -1, 6, 23, 116, 6, 118, 117, 121, 118, -1, 118, 20, 116, -1, -1, -1, 118, 6, -1, -1, 119, 120, 6, 6, -1, 118, 6, -1, 6, 6, 118, 118, 118, 118 }; static const ANTLR3_INT32 dfa155_T17[] = { 47, -1, -1, -1, -1, -1, 47 }; static const ANTLR3_INT32 dfa155_T18[] = { 57, -1, -1, -1, -1, -1, 57 }; static const ANTLR3_INT32 dfa155_T19[] = { 19, 8, -1, -1, 6, 23, 48, -1, 50, 49, 54, 50, -1, 50, 52, 48, -1, -1, -1, 50, 6, -1, -1, 51, 53, 6, -1, -1, 50, 6, -1, 6, -1, 50, 50, 50, 50 }; static const ANTLR3_INT32 dfa155_T20[] = { 19, 8, -1, -1, 6, 23, 95, -1, 97, 96, 100, 97, -1, 97, 111, 95, -1, -1, -1, 97, 6, -1, -1, 98, 99, 6, -1, -1, 97, 6, -1, 6, -1, 97, 97, 97, 97 }; static const ANTLR3_INT32 dfa155_T21[] = { 62, 8, -1, -1, 6, 23, 58, 6, 65, 59, 64, 60, -1, 65, 20, 58, -1, -1, -1, 65, 6, -1, -1, 61, 63, 6, 6, -1, 65, 6, 6, 6, 6, 65, 65, 65, 65 }; static const ANTLR3_INT32 dfa155_T22[] = { 5, 8, -1, -1, 7, 5, 9, 6, 11, 10, 5, 13, -1, 3, 5, 9, -1, -1, -1, 3, -1, -1, -1, 4, 5, 14, 6, -1, 3, -1, 12, 5, 6, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa155_T23[] = { 5, -1, -1, -1, -1, 5, 1, -1, 3, 2, 5, 3, -1, 3, 5, 1, -1, -1, -1, 3, 6, -1, -1, 4, 5, 5, -1, -1, 3, -1, 5, 5, -1, 3, 3, 3, 3 }; static const ANTLR3_INT32 dfa155_T24[] = { 5, 8, -1, -1, 31, 5, 32, -1, 34, 33, 36, 34, -1, 34, 55, 32, -1, -1, -1, 34, 6, -1, -1, 35, 36, 36, -1, -1, 34, 6, 5, 36, -1, 34, 34, 34, 34 }; static const ANTLR3_INT32 dfa155_T25[] = { 5, 8, -1, -1, 102, 5, 103, -1, 105, 104, 107, 105, -1, 105, 114, 103, -1, -1, -1, 105, 6, -1, -1, 106, 107, 107, -1, -1, 105, 6, 5, 107, -1, 105, 105, 105, 105 }; static const ANTLR3_INT32 dfa155_T26[] = { 29, 8, -1, -1, 24, 5, 25, 6, 30, 26, 29, 27, -1, 30, 46, 25, -1, -1, -1, 30, 6, -1, -1, 28, 29, 14, 6, -1, 30, 6, 12, 29, 6, 30, 30, 30, 30 }; static const ANTLR3_INT32 dfa155_T27[] = { 93, -1, -1, -1, -1, -1, 93 }; static const ANTLR3_INT32 dfa155_T28[] = { 89, -1, -1, -1, -1, -1, 89 }; static const ANTLR3_INT32 dfa155_T29[] = { 108, -1, -1, -1, -1, -1, 108 }; static const ANTLR3_INT32 dfa155_T30[] = { 109, -1, -1, -1, -1, -1, 109 }; static const ANTLR3_INT32 dfa155_T31[] = { 110, -1, -1, -1, -1, -1, 110 }; static const ANTLR3_INT32 dfa155_T32[] = { 133, -1, -1, -1, -1, -1, 133 }; static const ANTLR3_INT32 dfa155_T33[] = { 113, -1, -1, -1, -1, -1, 113 }; static const ANTLR3_INT32 dfa155_T34[] = { 122, -1, -1, -1, -1, -1, 122 }; static const ANTLR3_INT32 dfa155_T35[] = { 129, -1, -1, -1, -1, -1, 129 }; static const ANTLR3_INT32 dfa155_T36[] = { 132, -1, -1, -1, -1, -1, 132 }; static const ANTLR3_INT32 dfa155_T37[] = { 19, 8, -1, -1, -1, 23, 15, 6, 17, 16, 22, 17, -1, 17, 20, 15, -1, -1, -1, 17, -1, -1, -1, 18, 21, 6, 6, -1, 17, -1, 6, -1, 6, 17, 17, 17, 17 }; static const ANTLR3_INT32 dfa155_T38[] = { 19, 8, -1, -1, 6, 23, 95, -1, 97, 96, 100, 97, -1, 97, 20, 95, -1, -1, -1, 97, 6, -1, -1, 98, 99, 6, -1, -1, 97, 6, -1, 6, -1, 97, 97, 97, 97 }; static const ANTLR3_INT32 dfa155_T39[] = { 62, 8, -1, -1, 6, 23, 58, -1, 65, 59, 64, 60, -1, 65, 20, 58, -1, -1, -1, 65, 6, -1, -1, 61, 63, -1, -1, -1, 65, 6, -1, 6, -1, 65, 65, 65, 65 }; static const ANTLR3_INT32 dfa155_T40[] = { 73, -1, -1, -1, -1, -1, 73 }; static const ANTLR3_INT32 dfa155_T41[] = { 90, -1, -1, -1, -1, -1, 90 }; static const ANTLR3_INT32 dfa155_T42[] = { 19, 8, -1, -1, -1, 23, 15, -1, 17, 16, 22, 17, -1, 17, 20, 15, -1, -1, -1, 17, -1, -1, -1, 18, 21, -1, -1, -1, 17, -1, -1, -1, -1, 17, 17, 17, 17 }; static const ANTLR3_INT32 dfa155_T43[] = { 29, 8, -1, -1, 24, 5, 25, 6, 30, 26, 29, 27, -1, 30, 5, 25, -1, -1, -1, 30, 6, -1, -1, 28, 29, 14, 6, -1, 30, 6, 12, 29, 6, 30, 30, 30, 30 }; static const ANTLR3_INT32 dfa155_T44[] = { 5, 8, -1, -1, 31, 5, 32, -1, 34, 33, 36, 34, -1, 34, 5, 32, -1, -1, -1, 34, 6, -1, -1, 35, 36, 36, -1, -1, 34, 6, 5, 36, -1, 34, 34, 34, 34 }; static const ANTLR3_INT32 dfa155_T45[] = { 5, 8, -1, -1, 102, 5, 103, -1, 105, 104, 107, 105, -1, 105, 5, 103, -1, -1, -1, 105, 6, -1, -1, 106, 107, 107, -1, -1, 105, 6, 5, 107, -1, 105, 105, 105, 105 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa155_transitions[] = { dfa155_T23, dfa155_T22, dfa155_T22, NULL, NULL, NULL, NULL, dfa155_T42, NULL, dfa155_T22, dfa155_T22, dfa155_T22, dfa155_T43, dfa155_T22, dfa155_T44, NULL, dfa155_T37, NULL, NULL, NULL, NULL, NULL, NULL, NULL, dfa155_T3, dfa155_T26, dfa155_T26, dfa155_T26, dfa155_T17, dfa155_T26, dfa155_T26, dfa155_T19, dfa155_T24, dfa155_T24, dfa155_T24, dfa155_T5, dfa155_T24, dfa155_T3, dfa155_T3, dfa155_T3, dfa155_T18, dfa155_T3, dfa155_T39, dfa155_T3, dfa155_T3, dfa155_T3, dfa155_T0, dfa155_T40, dfa155_T19, dfa155_T19, dfa155_T19, dfa155_T6, dfa155_T4, dfa155_T19, dfa155_T19, dfa155_T2, dfa155_T28, dfa155_T41, dfa155_T21, dfa155_T21, dfa155_T21, dfa155_T7, dfa155_T21, dfa155_T21, dfa155_T21, dfa155_T21, dfa155_T21, dfa155_T1, dfa155_T1, dfa155_T1, dfa155_T10, dfa155_T1, dfa155_T1, dfa155_T26, dfa155_T27, dfa155_T4, dfa155_T4, dfa155_T4, dfa155_T11, dfa155_T38, dfa155_T4, dfa155_T4, dfa155_T4, dfa155_T2, dfa155_T2, dfa155_T2, dfa155_T12, dfa155_T2, dfa155_T45, dfa155_T24, dfa155_T3, dfa155_T29, dfa155_T30, dfa155_T19, dfa155_T31, dfa155_T20, dfa155_T20, dfa155_T20, dfa155_T13, dfa155_T20, dfa155_T20, dfa155_T33, dfa155_T20, dfa155_T25, dfa155_T25, dfa155_T25, dfa155_T14, dfa155_T25, dfa155_T21, dfa155_T1, dfa155_T4, dfa155_T16, dfa155_T34, dfa155_T2, dfa155_T15, dfa155_T35, dfa155_T16, dfa155_T16, dfa155_T16, dfa155_T8, dfa155_T16, dfa155_T16, dfa155_T20, dfa155_T16, dfa155_T15, dfa155_T15, dfa155_T15, dfa155_T9, dfa155_T15, dfa155_T25, dfa155_T36, dfa155_T32, dfa155_T16, dfa155_T15 }; static ANTLR3_INT32 dfa155_sst(pbelle_sip_messageParser ctx, pANTLR3_BASE_RECOGNIZER recognizer, pANTLR3_INT_STREAM is, pANTLR3_CYCLIC_DFA dfa, ANTLR3_INT32 s) { ANTLR3_INT32 _s; _s = s; switch (s) { case 0: { ANTLR3_UINT32 LA155_46; ANTLR3_MARKER index155_46; LA155_46 = LA(1); index155_46 = INDEX(); REWINDLAST(); s = -1; if ( (LA155_46 == COLON) ) { s = 66; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_46 == AT) ) { s = 8; } else if ( (LA155_46 == COMMON_CHAR || LA155_46 == HEX_CHAR) ) { s = 67; } else if ( (LA155_46 == DIGIT) ) { s = 68; } else if ( (LA155_46 == DOT) ) { s = 69; } else if ( (LA155_46 == PERCENT) ) { s = 70; } else if ( (LA155_46 == AND || LA155_46 == DOLLARD || LA155_46 == PLUS || LA155_46 == SLASH) ) { s = 71; } else if ( (LA155_46 == DASH || LA155_46 == EMARK || LA155_46 == LPAREN || LA155_46 == RPAREN || ((LA155_46 >= SQUOTE) && (LA155_46 <= USCORE))) ) { s = 72; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_46 == COMMA || LA155_46 == EQUAL || LA155_46 == QMARK || LA155_46 == SEMI) ) { s = 5; } else if ( (LA155_46 == LSBRAQUET || LA155_46 == RSBRAQUET) ) { s = 6; } SEEK(index155_46); if ( s>=0 ) { return s; } } break; case 1: { ANTLR3_UINT32 LA155_72; ANTLR3_MARKER index155_72; LA155_72 = LA(1); index155_72 = INDEX(); REWINDLAST(); s = -1; if ( (LA155_72 == COLON) ) { s = 66; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_72 == AT) ) { s = 8; } else if ( (LA155_72 == COMMON_CHAR || LA155_72 == HEX_CHAR) ) { s = 67; } else if ( (LA155_72 == DIGIT) ) { s = 68; } else if ( (LA155_72 == DOT) ) { s = 69; } else if ( (LA155_72 == PERCENT) ) { s = 70; } else if ( (LA155_72 == QMARK) ) { s = 14; } else if ( (LA155_72 == SEMI) ) { s = 12; } else if ( (LA155_72 == EOF || LA155_72 == CRLF || LA155_72 == LSBRAQUET || LA155_72 == RAQUOT || LA155_72 == RSBRAQUET || LA155_72 == SP) ) { s = 6; } else if ( (LA155_72 == AND || LA155_72 == DOLLARD || LA155_72 == PLUS || LA155_72 == SLASH) ) { s = 71; } else if ( (LA155_72 == DASH || LA155_72 == EMARK || LA155_72 == LPAREN || LA155_72 == RPAREN || ((LA155_72 >= SQUOTE) && (LA155_72 <= USCORE))) ) { s = 72; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_72 == COMMA || LA155_72 == EQUAL) ) { s = 5; } SEEK(index155_72); if ( s>=0 ) { return s; } } break; case 2: { ANTLR3_UINT32 LA155_83; ANTLR3_MARKER index155_83; LA155_83 = LA(1); index155_83 = INDEX(); REWINDLAST(); s = -1; if ( (LA155_83 == COLON) ) { s = 82; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_83 == AT) ) { s = 8; } else if ( (LA155_83 == COMMON_CHAR || LA155_83 == HEX_CHAR) ) { s = 83; } else if ( (LA155_83 == DIGIT) ) { s = 84; } else if ( (LA155_83 == DASH || LA155_83 == DOT || LA155_83 == EMARK || LA155_83 == LPAREN || LA155_83 == RPAREN || ((LA155_83 >= SQUOTE) && (LA155_83 <= USCORE))) ) { s = 85; } else if ( (LA155_83 == PERCENT) ) { s = 86; } else if ( (LA155_83 == AND) ) { s = 88; } else if ( (LA155_83 == DOLLARD || ((LA155_83 >= PLUS) && (LA155_83 <= QMARK)) || LA155_83 == SLASH) ) { s = 87; } else if ( (LA155_83 == EOF || LA155_83 == CRLF || LA155_83 == LSBRAQUET || LA155_83 == RAQUOT || LA155_83 == RSBRAQUET || LA155_83 == SP) ) { s = 6; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_83 == COMMA || LA155_83 == EQUAL || LA155_83 == SEMI) ) { s = 5; } SEEK(index155_83); if ( s>=0 ) { return s; } } break; case 3: { ANTLR3_UINT32 LA155_39; ANTLR3_MARKER index155_39; LA155_39 = LA(1); index155_39 = INDEX(); REWINDLAST(); s = -1; if ( (synpred11_belle_sip_message(ctx)) && (LA155_39 == AT) ) { s = 8; } else if ( (LA155_39 == COMMON_CHAR || LA155_39 == HEX_CHAR) ) { s = 37; } else if ( (LA155_39 == DIGIT) ) { s = 38; } else if ( (LA155_39 == DOT) ) { s = 39; } else if ( (LA155_39 == PERCENT) ) { s = 40; } else if ( (LA155_39 == AND) ) { s = 41; } else if ( (LA155_39 == EQUAL) ) { s = 42; } else if ( (LA155_39 == PLUS) ) { s = 43; } else if ( (LA155_39 == DOLLARD) ) { s = 44; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_39 == COMMA) ) { s = 23; } else if ( (LA155_39 == EOF || LA155_39 == COLON || LA155_39 == CRLF || LA155_39 == LSBRAQUET || ((LA155_39 >= QMARK) && (LA155_39 <= RAQUOT)) || ((LA155_39 >= RSBRAQUET) && (LA155_39 <= SP))) ) { s = 6; } else if ( (LA155_39 == DASH || LA155_39 == EMARK || LA155_39 == LPAREN || LA155_39 == RPAREN || ((LA155_39 >= SQUOTE) && (LA155_39 <= USCORE))) ) { s = 45; } SEEK(index155_39); if ( s>=0 ) { return s; } } break; case 4: { ANTLR3_UINT32 LA155_85; ANTLR3_MARKER index155_85; LA155_85 = LA(1); index155_85 = INDEX(); REWINDLAST(); s = -1; if ( (LA155_85 == COLON) ) { s = 82; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_85 == AT) ) { s = 8; } else if ( (LA155_85 == COMMON_CHAR || LA155_85 == HEX_CHAR) ) { s = 83; } else if ( (LA155_85 == DIGIT) ) { s = 84; } else if ( (LA155_85 == DASH || LA155_85 == DOT || LA155_85 == EMARK || LA155_85 == LPAREN || LA155_85 == RPAREN || ((LA155_85 >= SQUOTE) && (LA155_85 <= USCORE))) ) { s = 85; } else if ( (LA155_85 == PERCENT) ) { s = 86; } else if ( (LA155_85 == AND) ) { s = 88; } else if ( (LA155_85 == DOLLARD || ((LA155_85 >= PLUS) && (LA155_85 <= QMARK)) || LA155_85 == SLASH) ) { s = 87; } else if ( (LA155_85 == EOF || LA155_85 == CRLF || LA155_85 == LSBRAQUET || LA155_85 == RAQUOT || LA155_85 == RSBRAQUET || LA155_85 == SP) ) { s = 6; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_85 == COMMA || LA155_85 == EQUAL || LA155_85 == SEMI) ) { s = 5; } SEEK(index155_85); if ( s>=0 ) { return s; } } break; case 5: { ANTLR3_UINT32 LA155_52; ANTLR3_MARKER index155_52; LA155_52 = LA(1); index155_52 = INDEX(); REWINDLAST(); s = -1; if ( (synpred11_belle_sip_message(ctx)) && (LA155_52 == AT) ) { s = 8; } else if ( (LA155_52 == COMMON_CHAR || LA155_52 == HEX_CHAR) ) { s = 75; } else if ( (LA155_52 == DIGIT) ) { s = 76; } else if ( (LA155_52 == DASH || LA155_52 == DOT || LA155_52 == EMARK || LA155_52 == LPAREN || LA155_52 == RPAREN || ((LA155_52 >= SQUOTE) && (LA155_52 <= USCORE))) ) { s = 77; } else if ( (LA155_52 == PERCENT) ) { s = 78; } else if ( (LA155_52 == AND) ) { s = 79; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_52 == EQUAL) ) { s = 20; } else if ( (LA155_52 == PLUS) ) { s = 80; } else if ( (LA155_52 == DOLLARD) ) { s = 81; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_52 == COMMA) ) { s = 23; } else if ( (LA155_52 == EOF || LA155_52 == COLON || LA155_52 == CRLF || LA155_52 == LSBRAQUET || ((LA155_52 >= QMARK) && (LA155_52 <= RAQUOT)) || LA155_52 == RSBRAQUET || ((LA155_52 >= SLASH) && (LA155_52 <= SP))) ) { s = 6; } SEEK(index155_52); if ( s>=0 ) { return s; } } break; case 6: { ANTLR3_UINT32 LA155_43; ANTLR3_MARKER index155_43; LA155_43 = LA(1); index155_43 = INDEX(); REWINDLAST(); s = -1; if ( (synpred11_belle_sip_message(ctx)) && (LA155_43 == AT) ) { s = 8; } else if ( (LA155_43 == COMMON_CHAR || LA155_43 == HEX_CHAR) ) { s = 37; } else if ( (LA155_43 == DIGIT) ) { s = 38; } else if ( (LA155_43 == DOT) ) { s = 39; } else if ( (LA155_43 == PERCENT) ) { s = 40; } else if ( (LA155_43 == AND) ) { s = 41; } else if ( (LA155_43 == EQUAL) ) { s = 42; } else if ( (LA155_43 == PLUS) ) { s = 43; } else if ( (LA155_43 == DOLLARD) ) { s = 44; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_43 == COMMA) ) { s = 23; } else if ( (LA155_43 == EOF || LA155_43 == COLON || LA155_43 == CRLF || LA155_43 == LSBRAQUET || ((LA155_43 >= QMARK) && (LA155_43 <= RAQUOT)) || ((LA155_43 >= RSBRAQUET) && (LA155_43 <= SP))) ) { s = 6; } else if ( (LA155_43 == DASH || LA155_43 == EMARK || LA155_43 == LPAREN || LA155_43 == RPAREN || ((LA155_43 >= SQUOTE) && (LA155_43 <= USCORE))) ) { s = 45; } SEEK(index155_43); if ( s>=0 ) { return s; } } break; case 7: { ANTLR3_UINT32 LA155_69; ANTLR3_MARKER index155_69; LA155_69 = LA(1); index155_69 = INDEX(); REWINDLAST(); s = -1; if ( (LA155_69 == COLON) ) { s = 66; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_69 == AT) ) { s = 8; } else if ( (LA155_69 == COMMON_CHAR || LA155_69 == HEX_CHAR) ) { s = 67; } else if ( (LA155_69 == DIGIT) ) { s = 68; } else if ( (LA155_69 == DOT) ) { s = 69; } else if ( (LA155_69 == PERCENT) ) { s = 70; } else if ( (LA155_69 == QMARK) ) { s = 14; } else if ( (LA155_69 == SEMI) ) { s = 12; } else if ( (LA155_69 == EOF || LA155_69 == CRLF || LA155_69 == LSBRAQUET || LA155_69 == RAQUOT || LA155_69 == RSBRAQUET || LA155_69 == SP) ) { s = 6; } else if ( (LA155_69 == AND || LA155_69 == DOLLARD || LA155_69 == PLUS || LA155_69 == SLASH) ) { s = 71; } else if ( (LA155_69 == DASH || LA155_69 == EMARK || LA155_69 == LPAREN || LA155_69 == RPAREN || ((LA155_69 >= SQUOTE) && (LA155_69 <= USCORE))) ) { s = 72; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_69 == COMMA || LA155_69 == EQUAL) ) { s = 5; } SEEK(index155_69); if ( s>=0 ) { return s; } } break; case 8: { ANTLR3_UINT32 LA155_44; ANTLR3_MARKER index155_44; LA155_44 = LA(1); index155_44 = INDEX(); REWINDLAST(); s = -1; if ( (synpred11_belle_sip_message(ctx)) && (LA155_44 == AT) ) { s = 8; } else if ( (LA155_44 == COMMON_CHAR || LA155_44 == HEX_CHAR) ) { s = 37; } else if ( (LA155_44 == DIGIT) ) { s = 38; } else if ( (LA155_44 == DOT) ) { s = 39; } else if ( (LA155_44 == PERCENT) ) { s = 40; } else if ( (LA155_44 == AND) ) { s = 41; } else if ( (LA155_44 == EQUAL) ) { s = 42; } else if ( (LA155_44 == PLUS) ) { s = 43; } else if ( (LA155_44 == DOLLARD) ) { s = 44; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_44 == COMMA) ) { s = 23; } else if ( (LA155_44 == EOF || LA155_44 == COLON || LA155_44 == CRLF || LA155_44 == LSBRAQUET || ((LA155_44 >= QMARK) && (LA155_44 <= RAQUOT)) || ((LA155_44 >= RSBRAQUET) && (LA155_44 <= SP))) ) { s = 6; } else if ( (LA155_44 == DASH || LA155_44 == EMARK || LA155_44 == LPAREN || LA155_44 == RPAREN || ((LA155_44 >= SQUOTE) && (LA155_44 <= USCORE))) ) { s = 45; } SEEK(index155_44); if ( s>=0 ) { return s; } } break; case 9: { ANTLR3_UINT32 LA155_41; ANTLR3_MARKER index155_41; LA155_41 = LA(1); index155_41 = INDEX(); REWINDLAST(); s = -1; if ( (synpred11_belle_sip_message(ctx)) && (LA155_41 == AT) ) { s = 8; } else if ( (LA155_41 == COMMON_CHAR || LA155_41 == HEX_CHAR) ) { s = 37; } else if ( (LA155_41 == DIGIT) ) { s = 38; } else if ( (LA155_41 == DOT) ) { s = 39; } else if ( (LA155_41 == PERCENT) ) { s = 40; } else if ( (LA155_41 == AND) ) { s = 41; } else if ( (LA155_41 == EQUAL) ) { s = 42; } else if ( (LA155_41 == PLUS) ) { s = 43; } else if ( (LA155_41 == DOLLARD) ) { s = 44; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_41 == COMMA) ) { s = 23; } else if ( (LA155_41 == EOF || LA155_41 == COLON || LA155_41 == CRLF || LA155_41 == LSBRAQUET || ((LA155_41 >= QMARK) && (LA155_41 <= RAQUOT)) || ((LA155_41 >= RSBRAQUET) && (LA155_41 <= SP))) ) { s = 6; } else if ( (LA155_41 == DASH || LA155_41 == EMARK || LA155_41 == LPAREN || LA155_41 == RPAREN || ((LA155_41 >= SQUOTE) && (LA155_41 <= USCORE))) ) { s = 45; } SEEK(index155_41); if ( s>=0 ) { return s; } } break; case 10: { ANTLR3_UINT32 LA155_114; ANTLR3_MARKER index155_114; LA155_114 = LA(1); index155_114 = INDEX(); REWINDLAST(); s = -1; if ( (LA155_114 == COLON) ) { s = 123; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_114 == AT) ) { s = 8; } else if ( (LA155_114 == COMMON_CHAR || LA155_114 == HEX_CHAR) ) { s = 124; } else if ( (LA155_114 == DIGIT) ) { s = 125; } else if ( (LA155_114 == DASH || LA155_114 == DOT || LA155_114 == EMARK || LA155_114 == LPAREN || LA155_114 == RPAREN || ((LA155_114 >= SQUOTE) && (LA155_114 <= USCORE))) ) { s = 126; } else if ( (LA155_114 == PERCENT) ) { s = 127; } else if ( (LA155_114 == DOLLARD || ((LA155_114 >= PLUS) && (LA155_114 <= QMARK)) || LA155_114 == SLASH) ) { s = 128; } else if ( (LA155_114 == AND) ) { s = 88; } else if ( (LA155_114 == EOF || LA155_114 == CRLF || LA155_114 == LSBRAQUET || LA155_114 == RAQUOT || LA155_114 == RSBRAQUET || LA155_114 == SP) ) { s = 6; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_114 == COMMA || LA155_114 == EQUAL || LA155_114 == SEMI) ) { s = 5; } SEEK(index155_114); if ( s>=0 ) { return s; } } break; case 11: { ANTLR3_UINT32 LA155_116; ANTLR3_MARKER index155_116; LA155_116 = LA(1); index155_116 = INDEX(); REWINDLAST(); s = -1; if ( (synpred11_belle_sip_message(ctx)) && (LA155_116 == AT) ) { s = 8; } else if ( (LA155_116 == COMMON_CHAR || LA155_116 == HEX_CHAR) ) { s = 116; } else if ( (LA155_116 == DIGIT) ) { s = 117; } else if ( (LA155_116 == DASH || LA155_116 == DOT || LA155_116 == EMARK || LA155_116 == LPAREN || LA155_116 == RPAREN || ((LA155_116 >= SQUOTE) && (LA155_116 <= USCORE))) ) { s = 118; } else if ( (LA155_116 == PERCENT) ) { s = 119; } else if ( (LA155_116 == AND) ) { s = 79; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_116 == EQUAL) ) { s = 20; } else if ( (LA155_116 == PLUS) ) { s = 120; } else if ( (LA155_116 == DOLLARD) ) { s = 121; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_116 == COMMA) ) { s = 23; } else if ( (LA155_116 == EOF || LA155_116 == COLON || LA155_116 == CRLF || LA155_116 == LSBRAQUET || ((LA155_116 >= QMARK) && (LA155_116 <= RAQUOT)) || LA155_116 == RSBRAQUET || ((LA155_116 >= SLASH) && (LA155_116 <= SP))) ) { s = 6; } SEEK(index155_116); if ( s>=0 ) { return s; } } break; case 12: { ANTLR3_UINT32 LA155_81; ANTLR3_MARKER index155_81; LA155_81 = LA(1); index155_81 = INDEX(); REWINDLAST(); s = -1; if ( (synpred11_belle_sip_message(ctx)) && (LA155_81 == AT) ) { s = 8; } else if ( (LA155_81 == COMMON_CHAR || LA155_81 == HEX_CHAR) ) { s = 75; } else if ( (LA155_81 == DIGIT) ) { s = 76; } else if ( (LA155_81 == DASH || LA155_81 == DOT || LA155_81 == EMARK || LA155_81 == LPAREN || LA155_81 == RPAREN || ((LA155_81 >= SQUOTE) && (LA155_81 <= USCORE))) ) { s = 77; } else if ( (LA155_81 == PERCENT) ) { s = 78; } else if ( (LA155_81 == AND) ) { s = 79; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_81 == EQUAL) ) { s = 20; } else if ( (LA155_81 == PLUS) ) { s = 80; } else if ( (LA155_81 == DOLLARD) ) { s = 81; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_81 == COMMA) ) { s = 23; } else if ( (LA155_81 == EOF || LA155_81 == COLON || LA155_81 == CRLF || LA155_81 == LSBRAQUET || ((LA155_81 >= QMARK) && (LA155_81 <= RAQUOT)) || LA155_81 == RSBRAQUET || ((LA155_81 >= SLASH) && (LA155_81 <= SP))) ) { s = 6; } SEEK(index155_81); if ( s>=0 ) { return s; } } break; case 13: { ANTLR3_UINT32 LA155_76; ANTLR3_MARKER index155_76; LA155_76 = LA(1); index155_76 = INDEX(); REWINDLAST(); s = -1; if ( (synpred11_belle_sip_message(ctx)) && (LA155_76 == AT) ) { s = 8; } else if ( (LA155_76 == COMMON_CHAR || LA155_76 == HEX_CHAR) ) { s = 75; } else if ( (LA155_76 == DIGIT) ) { s = 76; } else if ( (LA155_76 == DASH || LA155_76 == DOT || LA155_76 == EMARK || LA155_76 == LPAREN || LA155_76 == RPAREN || ((LA155_76 >= SQUOTE) && (LA155_76 <= USCORE))) ) { s = 77; } else if ( (LA155_76 == PERCENT) ) { s = 78; } else if ( (LA155_76 == AND) ) { s = 79; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_76 == EQUAL) ) { s = 20; } else if ( (LA155_76 == PLUS) ) { s = 80; } else if ( (LA155_76 == DOLLARD) ) { s = 81; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_76 == COMMA) ) { s = 23; } else if ( (LA155_76 == EOF || LA155_76 == COLON || LA155_76 == CRLF || LA155_76 == LSBRAQUET || ((LA155_76 >= QMARK) && (LA155_76 <= RAQUOT)) || LA155_76 == RSBRAQUET || ((LA155_76 >= SLASH) && (LA155_76 <= SP))) ) { s = 6; } SEEK(index155_76); if ( s>=0 ) { return s; } } break; case 14: { ANTLR3_UINT32 LA155_48; ANTLR3_MARKER index155_48; LA155_48 = LA(1); index155_48 = INDEX(); REWINDLAST(); s = -1; if ( (synpred11_belle_sip_message(ctx)) && (LA155_48 == AT) ) { s = 8; } else if ( (LA155_48 == COMMON_CHAR || LA155_48 == HEX_CHAR) ) { s = 48; } else if ( (LA155_48 == DIGIT) ) { s = 49; } else if ( (LA155_48 == DASH || LA155_48 == DOT || LA155_48 == EMARK || LA155_48 == LPAREN || LA155_48 == RPAREN || ((LA155_48 >= SQUOTE) && (LA155_48 <= USCORE))) ) { s = 50; } else if ( (LA155_48 == PERCENT) ) { s = 51; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_48 == AND) ) { s = 19; } else if ( (LA155_48 == EQUAL) ) { s = 52; } else if ( (LA155_48 == PLUS) ) { s = 53; } else if ( (LA155_48 == DOLLARD) ) { s = 54; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_48 == COMMA) ) { s = 23; } else if ( (LA155_48 == COLON || LA155_48 == LSBRAQUET || LA155_48 == QMARK || LA155_48 == RSBRAQUET || LA155_48 == SLASH) ) { s = 6; } SEEK(index155_48); if ( s>=0 ) { return s; } } break; case 15: { ANTLR3_UINT32 LA155_95; ANTLR3_MARKER index155_95; LA155_95 = LA(1); index155_95 = INDEX(); REWINDLAST(); s = -1; if ( (synpred11_belle_sip_message(ctx)) && (LA155_95 == AT) ) { s = 8; } else if ( (LA155_95 == COMMON_CHAR || LA155_95 == HEX_CHAR) ) { s = 95; } else if ( (LA155_95 == DIGIT) ) { s = 96; } else if ( (LA155_95 == DASH || LA155_95 == DOT || LA155_95 == EMARK || LA155_95 == LPAREN || LA155_95 == RPAREN || ((LA155_95 >= SQUOTE) && (LA155_95 <= USCORE))) ) { s = 97; } else if ( (LA155_95 == PERCENT) ) { s = 98; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_95 == AND) ) { s = 19; } else if ( (LA155_95 == EQUAL) ) { s = 111; } else if ( (LA155_95 == PLUS) ) { s = 99; } else if ( (LA155_95 == DOLLARD) ) { s = 100; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_95 == COMMA) ) { s = 23; } else if ( (LA155_95 == COLON || LA155_95 == LSBRAQUET || LA155_95 == QMARK || LA155_95 == RSBRAQUET || LA155_95 == SLASH) ) { s = 6; } SEEK(index155_95); if ( s>=0 ) { return s; } } break; case 16: { ANTLR3_UINT32 LA155_80; ANTLR3_MARKER index155_80; LA155_80 = LA(1); index155_80 = INDEX(); REWINDLAST(); s = -1; if ( (synpred11_belle_sip_message(ctx)) && (LA155_80 == AT) ) { s = 8; } else if ( (LA155_80 == COMMON_CHAR || LA155_80 == HEX_CHAR) ) { s = 75; } else if ( (LA155_80 == DIGIT) ) { s = 76; } else if ( (LA155_80 == DASH || LA155_80 == DOT || LA155_80 == EMARK || LA155_80 == LPAREN || LA155_80 == RPAREN || ((LA155_80 >= SQUOTE) && (LA155_80 <= USCORE))) ) { s = 77; } else if ( (LA155_80 == PERCENT) ) { s = 78; } else if ( (LA155_80 == AND) ) { s = 79; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_80 == EQUAL) ) { s = 20; } else if ( (LA155_80 == PLUS) ) { s = 80; } else if ( (LA155_80 == DOLLARD) ) { s = 81; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_80 == COMMA) ) { s = 23; } else if ( (LA155_80 == EOF || LA155_80 == COLON || LA155_80 == CRLF || LA155_80 == LSBRAQUET || ((LA155_80 >= QMARK) && (LA155_80 <= RAQUOT)) || LA155_80 == RSBRAQUET || ((LA155_80 >= SLASH) && (LA155_80 <= SP))) ) { s = 6; } SEEK(index155_80); if ( s>=0 ) { return s; } } break; case 17: { ANTLR3_UINT32 LA155_59; ANTLR3_MARKER index155_59; LA155_59 = LA(1); index155_59 = INDEX(); REWINDLAST(); s = -1; if ( (synpred11_belle_sip_message(ctx)) && (LA155_59 == AT) ) { s = 8; } else if ( (LA155_59 == COMMON_CHAR || LA155_59 == HEX_CHAR) ) { s = 58; } else if ( (LA155_59 == DIGIT) ) { s = 59; } else if ( (LA155_59 == DOT) ) { s = 60; } else if ( (LA155_59 == PERCENT) ) { s = 61; } else if ( (LA155_59 == AND) ) { s = 62; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_59 == EQUAL) ) { s = 20; } else if ( (LA155_59 == PLUS) ) { s = 63; } else if ( (LA155_59 == DOLLARD) ) { s = 64; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_59 == COMMA) ) { s = 23; } else if ( (LA155_59 == EOF || LA155_59 == COLON || LA155_59 == CRLF || LA155_59 == LSBRAQUET || ((LA155_59 >= QMARK) && (LA155_59 <= RAQUOT)) || ((LA155_59 >= RSBRAQUET) && (LA155_59 <= SP))) ) { s = 6; } else if ( (LA155_59 == DASH || LA155_59 == EMARK || LA155_59 == LPAREN || LA155_59 == RPAREN || ((LA155_59 >= SQUOTE) && (LA155_59 <= USCORE))) ) { s = 65; } SEEK(index155_59); if ( s>=0 ) { return s; } } break; case 18: { ANTLR3_UINT32 LA155_128; ANTLR3_MARKER index155_128; LA155_128 = LA(1); index155_128 = INDEX(); REWINDLAST(); s = -1; if ( (LA155_128 == COLON) ) { s = 123; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_128 == AT) ) { s = 8; } else if ( (LA155_128 == COMMON_CHAR || LA155_128 == HEX_CHAR) ) { s = 124; } else if ( (LA155_128 == DIGIT) ) { s = 125; } else if ( (LA155_128 == DASH || LA155_128 == DOT || LA155_128 == EMARK || LA155_128 == LPAREN || LA155_128 == RPAREN || ((LA155_128 >= SQUOTE) && (LA155_128 <= USCORE))) ) { s = 126; } else if ( (LA155_128 == PERCENT) ) { s = 127; } else if ( (LA155_128 == AND) ) { s = 88; } else if ( (LA155_128 == EOF || LA155_128 == CRLF || LA155_128 == LSBRAQUET || LA155_128 == RAQUOT || LA155_128 == RSBRAQUET || LA155_128 == SP) ) { s = 6; } else if ( (LA155_128 == DOLLARD || ((LA155_128 >= PLUS) && (LA155_128 <= QMARK)) || LA155_128 == SLASH) ) { s = 128; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_128 == COMMA || LA155_128 == EQUAL || LA155_128 == SEMI) ) { s = 5; } SEEK(index155_128); if ( s>=0 ) { return s; } } break; case 19: { ANTLR3_UINT32 LA155_118; ANTLR3_MARKER index155_118; LA155_118 = LA(1); index155_118 = INDEX(); REWINDLAST(); s = -1; if ( (synpred11_belle_sip_message(ctx)) && (LA155_118 == AT) ) { s = 8; } else if ( (LA155_118 == COMMON_CHAR || LA155_118 == HEX_CHAR) ) { s = 116; } else if ( (LA155_118 == DIGIT) ) { s = 117; } else if ( (LA155_118 == DASH || LA155_118 == DOT || LA155_118 == EMARK || LA155_118 == LPAREN || LA155_118 == RPAREN || ((LA155_118 >= SQUOTE) && (LA155_118 <= USCORE))) ) { s = 118; } else if ( (LA155_118 == PERCENT) ) { s = 119; } else if ( (LA155_118 == AND) ) { s = 79; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_118 == EQUAL) ) { s = 20; } else if ( (LA155_118 == PLUS) ) { s = 120; } else if ( (LA155_118 == DOLLARD) ) { s = 121; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_118 == COMMA) ) { s = 23; } else if ( (LA155_118 == EOF || LA155_118 == COLON || LA155_118 == CRLF || LA155_118 == LSBRAQUET || ((LA155_118 >= QMARK) && (LA155_118 <= RAQUOT)) || LA155_118 == RSBRAQUET || ((LA155_118 >= SLASH) && (LA155_118 <= SP))) ) { s = 6; } SEEK(index155_118); if ( s>=0 ) { return s; } } break; case 20: { ANTLR3_UINT32 LA155_50; ANTLR3_MARKER index155_50; LA155_50 = LA(1); index155_50 = INDEX(); REWINDLAST(); s = -1; if ( (synpred11_belle_sip_message(ctx)) && (LA155_50 == AT) ) { s = 8; } else if ( (LA155_50 == COMMON_CHAR || LA155_50 == HEX_CHAR) ) { s = 48; } else if ( (LA155_50 == DIGIT) ) { s = 49; } else if ( (LA155_50 == DASH || LA155_50 == DOT || LA155_50 == EMARK || LA155_50 == LPAREN || LA155_50 == RPAREN || ((LA155_50 >= SQUOTE) && (LA155_50 <= USCORE))) ) { s = 50; } else if ( (LA155_50 == PERCENT) ) { s = 51; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_50 == AND) ) { s = 19; } else if ( (LA155_50 == EQUAL) ) { s = 52; } else if ( (LA155_50 == PLUS) ) { s = 53; } else if ( (LA155_50 == DOLLARD) ) { s = 54; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_50 == COMMA) ) { s = 23; } else if ( (LA155_50 == COLON || LA155_50 == LSBRAQUET || LA155_50 == QMARK || LA155_50 == RSBRAQUET || LA155_50 == SLASH) ) { s = 6; } SEEK(index155_50); if ( s>=0 ) { return s; } } break; case 21: { ANTLR3_UINT32 LA155_97; ANTLR3_MARKER index155_97; LA155_97 = LA(1); index155_97 = INDEX(); REWINDLAST(); s = -1; if ( (synpred11_belle_sip_message(ctx)) && (LA155_97 == AT) ) { s = 8; } else if ( (LA155_97 == COMMON_CHAR || LA155_97 == HEX_CHAR) ) { s = 95; } else if ( (LA155_97 == DIGIT) ) { s = 96; } else if ( (LA155_97 == DASH || LA155_97 == DOT || LA155_97 == EMARK || LA155_97 == LPAREN || LA155_97 == RPAREN || ((LA155_97 >= SQUOTE) && (LA155_97 <= USCORE))) ) { s = 97; } else if ( (LA155_97 == PERCENT) ) { s = 98; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_97 == AND) ) { s = 19; } else if ( (LA155_97 == EQUAL) ) { s = 111; } else if ( (LA155_97 == PLUS) ) { s = 99; } else if ( (LA155_97 == DOLLARD) ) { s = 100; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_97 == COMMA) ) { s = 23; } else if ( (LA155_97 == COLON || LA155_97 == LSBRAQUET || LA155_97 == QMARK || LA155_97 == RSBRAQUET || LA155_97 == SLASH) ) { s = 6; } SEEK(index155_97); if ( s>=0 ) { return s; } } break; case 22: { ANTLR3_UINT32 LA155_11; ANTLR3_MARKER index155_11; LA155_11 = LA(1); index155_11 = INDEX(); REWINDLAST(); s = -1; if ( (LA155_11 == COLON) ) { s = 7; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_11 == AT) ) { s = 8; } else if ( (LA155_11 == COMMON_CHAR || LA155_11 == HEX_CHAR) ) { s = 9; } else if ( (LA155_11 == DIGIT) ) { s = 10; } else if ( (LA155_11 == DASH) ) { s = 11; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_11 == PERCENT) ) { s = 4; } else if ( (LA155_11 == SEMI) ) { s = 12; } else if ( (LA155_11 == EOF || LA155_11 == CRLF || LA155_11 == RAQUOT || LA155_11 == SP) ) { s = 6; } else if ( (LA155_11 == QMARK) ) { s = 14; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_11 == AND || LA155_11 == COMMA || LA155_11 == DOLLARD || LA155_11 == EQUAL || LA155_11 == PLUS || LA155_11 == SLASH) ) { s = 5; } else if ( (LA155_11 == DOT) ) { s = 13; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_11 == EMARK || LA155_11 == LPAREN || LA155_11 == RPAREN || ((LA155_11 >= SQUOTE) && (LA155_11 <= USCORE))) ) { s = 3; } SEEK(index155_11); if ( s>=0 ) { return s; } } break; case 23: { ANTLR3_UINT32 LA155_0; ANTLR3_MARKER index155_0; LA155_0 = LA(1); index155_0 = INDEX(); REWINDLAST(); s = -1; if ( (LA155_0 == COMMON_CHAR || LA155_0 == HEX_CHAR) ) { s = 1; } else if ( (LA155_0 == DIGIT) ) { s = 2; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_0 == DASH || LA155_0 == DOT || LA155_0 == EMARK || LA155_0 == LPAREN || LA155_0 == RPAREN || ((LA155_0 >= SQUOTE) && (LA155_0 <= USCORE))) ) { s = 3; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_0 == PERCENT) ) { s = 4; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_0 == AND || LA155_0 == COMMA || LA155_0 == DOLLARD || LA155_0 == EQUAL || ((LA155_0 >= PLUS) && (LA155_0 <= QMARK)) || ((LA155_0 >= SEMI) && (LA155_0 <= SLASH))) ) { s = 5; } else if ( (LA155_0 == LSBRAQUET) ) { s = 6; } SEEK(index155_0); if ( s>=0 ) { return s; } } break; case 24: { ANTLR3_UINT32 LA155_24; ANTLR3_MARKER index155_24; LA155_24 = LA(1); index155_24 = INDEX(); REWINDLAST(); s = -1; if ( (LA155_24 == COMMON_CHAR || LA155_24 == HEX_CHAR) ) { s = 37; } else if ( (LA155_24 == DIGIT) ) { s = 38; } else if ( (LA155_24 == DOT) ) { s = 39; } else if ( (LA155_24 == PERCENT) ) { s = 40; } else if ( (LA155_24 == AND) ) { s = 41; } else if ( (LA155_24 == EQUAL) ) { s = 42; } else if ( (LA155_24 == PLUS) ) { s = 43; } else if ( (LA155_24 == DOLLARD) ) { s = 44; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_24 == COMMA) ) { s = 23; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_24 == AT) ) { s = 8; } else if ( (LA155_24 == EOF || LA155_24 == COLON || LA155_24 == CRLF || LA155_24 == LSBRAQUET || ((LA155_24 >= QMARK) && (LA155_24 <= RAQUOT)) || ((LA155_24 >= RSBRAQUET) && (LA155_24 <= SP))) ) { s = 6; } else if ( (LA155_24 == DASH || LA155_24 == EMARK || LA155_24 == LPAREN || LA155_24 == RPAREN || ((LA155_24 >= SQUOTE) && (LA155_24 <= USCORE))) ) { s = 45; } SEEK(index155_24); if ( s>=0 ) { return s; } } break; case 25: { ANTLR3_UINT32 LA155_82; ANTLR3_MARKER index155_82; LA155_82 = LA(1); index155_82 = INDEX(); REWINDLAST(); s = -1; if ( (LA155_82 == COMMON_CHAR || LA155_82 == HEX_CHAR) ) { s = 75; } else if ( (LA155_82 == DIGIT) ) { s = 76; } else if ( (LA155_82 == DASH || LA155_82 == DOT || LA155_82 == EMARK || LA155_82 == LPAREN || LA155_82 == RPAREN || ((LA155_82 >= SQUOTE) && (LA155_82 <= USCORE))) ) { s = 77; } else if ( (LA155_82 == PERCENT) ) { s = 78; } else if ( (LA155_82 == AND) ) { s = 79; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_82 == EQUAL) ) { s = 20; } else if ( (LA155_82 == PLUS) ) { s = 80; } else if ( (LA155_82 == DOLLARD) ) { s = 81; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_82 == COMMA) ) { s = 23; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_82 == AT) ) { s = 8; } else if ( (LA155_82 == EOF || LA155_82 == COLON || LA155_82 == CRLF || LA155_82 == LSBRAQUET || ((LA155_82 >= QMARK) && (LA155_82 <= RAQUOT)) || LA155_82 == RSBRAQUET || ((LA155_82 >= SLASH) && (LA155_82 <= SP))) ) { s = 6; } SEEK(index155_82); if ( s>=0 ) { return s; } } break; case 26: { ANTLR3_UINT32 LA155_110; ANTLR3_MARKER index155_110; LA155_110 = LA(1); index155_110 = INDEX(); REWINDLAST(); s = -1; if ( (synpred11_belle_sip_message(ctx)) && (LA155_110 == AT) ) { s = 8; } else if ( (LA155_110 == COMMON_CHAR || LA155_110 == HEX_CHAR) ) { s = 75; } else if ( (LA155_110 == DIGIT) ) { s = 76; } else if ( (LA155_110 == DASH || LA155_110 == DOT || LA155_110 == EMARK || LA155_110 == LPAREN || LA155_110 == RPAREN || ((LA155_110 >= SQUOTE) && (LA155_110 <= USCORE))) ) { s = 77; } else if ( (LA155_110 == PERCENT) ) { s = 78; } else if ( (LA155_110 == AND) ) { s = 79; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_110 == EQUAL) ) { s = 20; } else if ( (LA155_110 == PLUS) ) { s = 80; } else if ( (LA155_110 == DOLLARD) ) { s = 81; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_110 == COMMA) ) { s = 23; } else if ( (LA155_110 == EOF || LA155_110 == COLON || LA155_110 == CRLF || LA155_110 == LSBRAQUET || ((LA155_110 >= QMARK) && (LA155_110 <= RAQUOT)) || LA155_110 == RSBRAQUET || ((LA155_110 >= SLASH) && (LA155_110 <= SP))) ) { s = 6; } SEEK(index155_110); if ( s>=0 ) { return s; } } break; case 27: { ANTLR3_UINT32 LA155_108; ANTLR3_MARKER index155_108; LA155_108 = LA(1); index155_108 = INDEX(); REWINDLAST(); s = -1; if ( (synpred11_belle_sip_message(ctx)) && (LA155_108 == AT) ) { s = 8; } else if ( (LA155_108 == COMMON_CHAR || LA155_108 == HEX_CHAR) ) { s = 58; } else if ( (LA155_108 == DIGIT) ) { s = 59; } else if ( (LA155_108 == DOT) ) { s = 60; } else if ( (LA155_108 == PERCENT) ) { s = 61; } else if ( (LA155_108 == AND) ) { s = 62; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_108 == EQUAL) ) { s = 20; } else if ( (LA155_108 == PLUS) ) { s = 63; } else if ( (LA155_108 == DOLLARD) ) { s = 64; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_108 == COMMA) ) { s = 23; } else if ( (LA155_108 == EOF || LA155_108 == COLON || LA155_108 == CRLF || LA155_108 == LSBRAQUET || ((LA155_108 >= QMARK) && (LA155_108 <= RAQUOT)) || ((LA155_108 >= RSBRAQUET) && (LA155_108 <= SP))) ) { s = 6; } else if ( (LA155_108 == DASH || LA155_108 == EMARK || LA155_108 == LPAREN || LA155_108 == RPAREN || ((LA155_108 >= SQUOTE) && (LA155_108 <= USCORE))) ) { s = 65; } SEEK(index155_108); if ( s>=0 ) { return s; } } break; case 28: { ANTLR3_UINT32 LA155_13; ANTLR3_MARKER index155_13; LA155_13 = LA(1); index155_13 = INDEX(); REWINDLAST(); s = -1; if ( (LA155_13 == COLON) ) { s = 7; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_13 == AT) ) { s = 8; } else if ( (LA155_13 == COMMON_CHAR || LA155_13 == HEX_CHAR) ) { s = 9; } else if ( (LA155_13 == DIGIT) ) { s = 10; } else if ( (LA155_13 == DASH) ) { s = 11; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_13 == PERCENT) ) { s = 4; } else if ( (LA155_13 == SEMI) ) { s = 12; } else if ( (LA155_13 == EOF || LA155_13 == CRLF || LA155_13 == RAQUOT || LA155_13 == SP) ) { s = 6; } else if ( (LA155_13 == QMARK) ) { s = 14; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_13 == AND || LA155_13 == COMMA || LA155_13 == DOLLARD || LA155_13 == EQUAL || LA155_13 == PLUS || LA155_13 == SLASH) ) { s = 5; } else if ( (LA155_13 == DOT) ) { s = 13; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_13 == EMARK || LA155_13 == LPAREN || LA155_13 == RPAREN || ((LA155_13 >= SQUOTE) && (LA155_13 <= USCORE))) ) { s = 3; } SEEK(index155_13); if ( s>=0 ) { return s; } } break; case 29: { ANTLR3_UINT32 LA155_36; ANTLR3_MARKER index155_36; LA155_36 = LA(1); index155_36 = INDEX(); REWINDLAST(); s = -1; if ( (LA155_36 == COLON) ) { s = 31; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_36 == AT) ) { s = 8; } else if ( (LA155_36 == COMMON_CHAR || LA155_36 == HEX_CHAR) ) { s = 32; } else if ( (LA155_36 == DIGIT) ) { s = 33; } else if ( (LA155_36 == DASH || LA155_36 == DOT || LA155_36 == EMARK || LA155_36 == LPAREN || LA155_36 == RPAREN || ((LA155_36 >= SQUOTE) && (LA155_36 <= USCORE))) ) { s = 34; } else if ( (LA155_36 == PERCENT) ) { s = 35; } else if ( (LA155_36 == EQUAL) ) { s = 55; } else if ( (LA155_36 == DOLLARD || ((LA155_36 >= PLUS) && (LA155_36 <= QMARK)) || LA155_36 == SLASH) ) { s = 36; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_36 == AND || LA155_36 == COMMA || LA155_36 == SEMI) ) { s = 5; } else if ( (LA155_36 == LSBRAQUET || LA155_36 == RSBRAQUET) ) { s = 6; } SEEK(index155_36); if ( s>=0 ) { return s; } } break; case 30: { ANTLR3_UINT32 LA155_107; ANTLR3_MARKER index155_107; LA155_107 = LA(1); index155_107 = INDEX(); REWINDLAST(); s = -1; if ( (LA155_107 == COLON) ) { s = 102; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_107 == AT) ) { s = 8; } else if ( (LA155_107 == COMMON_CHAR || LA155_107 == HEX_CHAR) ) { s = 103; } else if ( (LA155_107 == DIGIT) ) { s = 104; } else if ( (LA155_107 == DASH || LA155_107 == DOT || LA155_107 == EMARK || LA155_107 == LPAREN || LA155_107 == RPAREN || ((LA155_107 >= SQUOTE) && (LA155_107 <= USCORE))) ) { s = 105; } else if ( (LA155_107 == PERCENT) ) { s = 106; } else if ( (LA155_107 == EQUAL) ) { s = 114; } else if ( (LA155_107 == DOLLARD || ((LA155_107 >= PLUS) && (LA155_107 <= QMARK)) || LA155_107 == SLASH) ) { s = 107; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_107 == AND || LA155_107 == COMMA || LA155_107 == SEMI) ) { s = 5; } else if ( (LA155_107 == LSBRAQUET || LA155_107 == RSBRAQUET) ) { s = 6; } SEEK(index155_107); if ( s>=0 ) { return s; } } break; case 31: { ANTLR3_UINT32 LA155_10; ANTLR3_MARKER index155_10; LA155_10 = LA(1); index155_10 = INDEX(); REWINDLAST(); s = -1; if ( (LA155_10 == COLON) ) { s = 7; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_10 == AT) ) { s = 8; } else if ( (LA155_10 == COMMON_CHAR || LA155_10 == HEX_CHAR) ) { s = 9; } else if ( (LA155_10 == DIGIT) ) { s = 10; } else if ( (LA155_10 == DASH) ) { s = 11; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_10 == PERCENT) ) { s = 4; } else if ( (LA155_10 == SEMI) ) { s = 12; } else if ( (LA155_10 == EOF || LA155_10 == CRLF || LA155_10 == RAQUOT || LA155_10 == SP) ) { s = 6; } else if ( (LA155_10 == QMARK) ) { s = 14; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_10 == AND || LA155_10 == COMMA || LA155_10 == DOLLARD || LA155_10 == EQUAL || LA155_10 == PLUS || LA155_10 == SLASH) ) { s = 5; } else if ( (LA155_10 == DOT) ) { s = 13; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_10 == EMARK || LA155_10 == LPAREN || LA155_10 == RPAREN || ((LA155_10 >= SQUOTE) && (LA155_10 <= USCORE))) ) { s = 3; } SEEK(index155_10); if ( s>=0 ) { return s; } } break; case 32: { ANTLR3_UINT32 LA155_2; ANTLR3_MARKER index155_2; LA155_2 = LA(1); index155_2 = INDEX(); REWINDLAST(); s = -1; if ( (LA155_2 == COLON) ) { s = 7; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_2 == AT) ) { s = 8; } else if ( (LA155_2 == COMMON_CHAR || LA155_2 == HEX_CHAR) ) { s = 9; } else if ( (LA155_2 == DIGIT) ) { s = 10; } else if ( (LA155_2 == DASH) ) { s = 11; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_2 == PERCENT) ) { s = 4; } else if ( (LA155_2 == SEMI) ) { s = 12; } else if ( (LA155_2 == DOT) ) { s = 13; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_2 == EMARK || LA155_2 == LPAREN || LA155_2 == RPAREN || ((LA155_2 >= SQUOTE) && (LA155_2 <= USCORE))) ) { s = 3; } else if ( (LA155_2 == EOF || LA155_2 == CRLF || LA155_2 == RAQUOT || LA155_2 == SP) ) { s = 6; } else if ( (LA155_2 == QMARK) ) { s = 14; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_2 == AND || LA155_2 == COMMA || LA155_2 == DOLLARD || LA155_2 == EQUAL || LA155_2 == PLUS || LA155_2 == SLASH) ) { s = 5; } SEEK(index155_2); if ( s>=0 ) { return s; } } break; case 33: { ANTLR3_UINT32 LA155_71; ANTLR3_MARKER index155_71; LA155_71 = LA(1); index155_71 = INDEX(); REWINDLAST(); s = -1; if ( (LA155_71 == COLON) ) { s = 66; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_71 == AT) ) { s = 8; } else if ( (LA155_71 == COMMON_CHAR || LA155_71 == HEX_CHAR) ) { s = 67; } else if ( (LA155_71 == DIGIT) ) { s = 68; } else if ( (LA155_71 == DOT) ) { s = 69; } else if ( (LA155_71 == PERCENT) ) { s = 70; } else if ( (LA155_71 == QMARK) ) { s = 14; } else if ( (LA155_71 == SEMI) ) { s = 12; } else if ( (LA155_71 == EOF || LA155_71 == CRLF || LA155_71 == LSBRAQUET || LA155_71 == RAQUOT || LA155_71 == RSBRAQUET || LA155_71 == SP) ) { s = 6; } else if ( (LA155_71 == AND || LA155_71 == DOLLARD || LA155_71 == PLUS || LA155_71 == SLASH) ) { s = 71; } else if ( (LA155_71 == DASH || LA155_71 == EMARK || LA155_71 == LPAREN || LA155_71 == RPAREN || ((LA155_71 >= SQUOTE) && (LA155_71 <= USCORE))) ) { s = 72; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_71 == COMMA || LA155_71 == EQUAL) ) { s = 5; } SEEK(index155_71); if ( s>=0 ) { return s; } } break; case 34: { ANTLR3_UINT32 LA155_25; ANTLR3_MARKER index155_25; LA155_25 = LA(1); index155_25 = INDEX(); REWINDLAST(); s = -1; if ( (LA155_25 == COLON) ) { s = 24; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_25 == AT) ) { s = 8; } else if ( (LA155_25 == COMMON_CHAR || LA155_25 == HEX_CHAR) ) { s = 25; } else if ( (LA155_25 == DIGIT) ) { s = 26; } else if ( (LA155_25 == DOT) ) { s = 27; } else if ( (LA155_25 == PERCENT) ) { s = 28; } else if ( (LA155_25 == QMARK) ) { s = 14; } else if ( (LA155_25 == SEMI) ) { s = 12; } else if ( (LA155_25 == EOF || LA155_25 == CRLF || LA155_25 == LSBRAQUET || LA155_25 == RAQUOT || LA155_25 == RSBRAQUET || LA155_25 == SP) ) { s = 6; } else if ( (LA155_25 == AND || LA155_25 == DOLLARD || LA155_25 == PLUS || LA155_25 == SLASH) ) { s = 29; } else if ( (LA155_25 == DASH || LA155_25 == EMARK || LA155_25 == LPAREN || LA155_25 == RPAREN || ((LA155_25 >= SQUOTE) && (LA155_25 <= USCORE))) ) { s = 30; } else if ( (LA155_25 == EQUAL) ) { s = 46; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_25 == COMMA) ) { s = 5; } SEEK(index155_25); if ( s>=0 ) { return s; } } break; case 35: { ANTLR3_UINT32 LA155_125; ANTLR3_MARKER index155_125; LA155_125 = LA(1); index155_125 = INDEX(); REWINDLAST(); s = -1; if ( (LA155_125 == COLON) ) { s = 123; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_125 == AT) ) { s = 8; } else if ( (LA155_125 == COMMON_CHAR || LA155_125 == HEX_CHAR) ) { s = 124; } else if ( (LA155_125 == DIGIT) ) { s = 125; } else if ( (LA155_125 == DASH || LA155_125 == DOT || LA155_125 == EMARK || LA155_125 == LPAREN || LA155_125 == RPAREN || ((LA155_125 >= SQUOTE) && (LA155_125 <= USCORE))) ) { s = 126; } else if ( (LA155_125 == PERCENT) ) { s = 127; } else if ( (LA155_125 == AND) ) { s = 88; } else if ( (LA155_125 == EOF || LA155_125 == CRLF || LA155_125 == LSBRAQUET || LA155_125 == RAQUOT || LA155_125 == RSBRAQUET || LA155_125 == SP) ) { s = 6; } else if ( (LA155_125 == DOLLARD || ((LA155_125 >= PLUS) && (LA155_125 <= QMARK)) || LA155_125 == SLASH) ) { s = 128; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_125 == COMMA || LA155_125 == EQUAL || LA155_125 == SEMI) ) { s = 5; } SEEK(index155_125); if ( s>=0 ) { return s; } } break; case 36: { ANTLR3_UINT32 LA155_33; ANTLR3_MARKER index155_33; LA155_33 = LA(1); index155_33 = INDEX(); REWINDLAST(); s = -1; if ( (LA155_33 == COLON) ) { s = 31; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_33 == AT) ) { s = 8; } else if ( (LA155_33 == COMMON_CHAR || LA155_33 == HEX_CHAR) ) { s = 32; } else if ( (LA155_33 == DIGIT) ) { s = 33; } else if ( (LA155_33 == DASH || LA155_33 == DOT || LA155_33 == EMARK || LA155_33 == LPAREN || LA155_33 == RPAREN || ((LA155_33 >= SQUOTE) && (LA155_33 <= USCORE))) ) { s = 34; } else if ( (LA155_33 == PERCENT) ) { s = 35; } else if ( (LA155_33 == EQUAL) ) { s = 55; } else if ( (LA155_33 == DOLLARD || ((LA155_33 >= PLUS) && (LA155_33 <= QMARK)) || LA155_33 == SLASH) ) { s = 36; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_33 == AND || LA155_33 == COMMA || LA155_33 == SEMI) ) { s = 5; } else if ( (LA155_33 == LSBRAQUET || LA155_33 == RSBRAQUET) ) { s = 6; } SEEK(index155_33); if ( s>=0 ) { return s; } } break; case 37: { ANTLR3_UINT32 LA155_104; ANTLR3_MARKER index155_104; LA155_104 = LA(1); index155_104 = INDEX(); REWINDLAST(); s = -1; if ( (LA155_104 == COLON) ) { s = 102; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_104 == AT) ) { s = 8; } else if ( (LA155_104 == COMMON_CHAR || LA155_104 == HEX_CHAR) ) { s = 103; } else if ( (LA155_104 == DIGIT) ) { s = 104; } else if ( (LA155_104 == DASH || LA155_104 == DOT || LA155_104 == EMARK || LA155_104 == LPAREN || LA155_104 == RPAREN || ((LA155_104 >= SQUOTE) && (LA155_104 <= USCORE))) ) { s = 105; } else if ( (LA155_104 == PERCENT) ) { s = 106; } else if ( (LA155_104 == EQUAL) ) { s = 114; } else if ( (LA155_104 == DOLLARD || ((LA155_104 >= PLUS) && (LA155_104 <= QMARK)) || LA155_104 == SLASH) ) { s = 107; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_104 == AND || LA155_104 == COMMA || LA155_104 == SEMI) ) { s = 5; } else if ( (LA155_104 == LSBRAQUET || LA155_104 == RSBRAQUET) ) { s = 6; } SEEK(index155_104); if ( s>=0 ) { return s; } } break; case 38: { ANTLR3_UINT32 LA155_38; ANTLR3_MARKER index155_38; LA155_38 = LA(1); index155_38 = INDEX(); REWINDLAST(); s = -1; if ( (synpred11_belle_sip_message(ctx)) && (LA155_38 == AT) ) { s = 8; } else if ( (LA155_38 == COMMON_CHAR || LA155_38 == HEX_CHAR) ) { s = 37; } else if ( (LA155_38 == DIGIT) ) { s = 38; } else if ( (LA155_38 == DOT) ) { s = 39; } else if ( (LA155_38 == PERCENT) ) { s = 40; } else if ( (LA155_38 == AND) ) { s = 41; } else if ( (LA155_38 == EQUAL) ) { s = 42; } else if ( (LA155_38 == PLUS) ) { s = 43; } else if ( (LA155_38 == DOLLARD) ) { s = 44; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_38 == COMMA) ) { s = 23; } else if ( (LA155_38 == EOF || LA155_38 == COLON || LA155_38 == CRLF || LA155_38 == LSBRAQUET || ((LA155_38 >= QMARK) && (LA155_38 <= RAQUOT)) || ((LA155_38 >= RSBRAQUET) && (LA155_38 <= SP))) ) { s = 6; } else if ( (LA155_38 == DASH || LA155_38 == EMARK || LA155_38 == LPAREN || LA155_38 == RPAREN || ((LA155_38 >= SQUOTE) && (LA155_38 <= USCORE))) ) { s = 45; } SEEK(index155_38); if ( s>=0 ) { return s; } } break; case 39: { ANTLR3_UINT32 LA155_133; ANTLR3_MARKER index155_133; LA155_133 = LA(1); index155_133 = INDEX(); REWINDLAST(); s = -1; if ( (LA155_133 == COLON) ) { s = 123; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_133 == AT) ) { s = 8; } else if ( (LA155_133 == COMMON_CHAR || LA155_133 == HEX_CHAR) ) { s = 124; } else if ( (LA155_133 == DIGIT) ) { s = 125; } else if ( (LA155_133 == DASH || LA155_133 == DOT || LA155_133 == EMARK || LA155_133 == LPAREN || LA155_133 == RPAREN || ((LA155_133 >= SQUOTE) && (LA155_133 <= USCORE))) ) { s = 126; } else if ( (LA155_133 == PERCENT) ) { s = 127; } else if ( (LA155_133 == AND) ) { s = 88; } else if ( (LA155_133 == EOF || LA155_133 == CRLF || LA155_133 == LSBRAQUET || LA155_133 == RAQUOT || LA155_133 == RSBRAQUET || LA155_133 == SP) ) { s = 6; } else if ( (LA155_133 == DOLLARD || ((LA155_133 >= PLUS) && (LA155_133 <= QMARK)) || LA155_133 == SLASH) ) { s = 128; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_133 == COMMA || LA155_133 == EQUAL || LA155_133 == SEMI) ) { s = 5; } SEEK(index155_133); if ( s>=0 ) { return s; } } break; case 40: { ANTLR3_UINT32 LA155_55; ANTLR3_MARKER index155_55; LA155_55 = LA(1); index155_55 = INDEX(); REWINDLAST(); s = -1; if ( (LA155_55 == COLON) ) { s = 82; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_55 == AT) ) { s = 8; } else if ( (LA155_55 == COMMON_CHAR || LA155_55 == HEX_CHAR) ) { s = 83; } else if ( (LA155_55 == DIGIT) ) { s = 84; } else if ( (LA155_55 == DASH || LA155_55 == DOT || LA155_55 == EMARK || LA155_55 == LPAREN || LA155_55 == RPAREN || ((LA155_55 >= SQUOTE) && (LA155_55 <= USCORE))) ) { s = 85; } else if ( (LA155_55 == PERCENT) ) { s = 86; } else if ( (LA155_55 == DOLLARD || ((LA155_55 >= PLUS) && (LA155_55 <= QMARK)) || LA155_55 == SLASH) ) { s = 87; } else if ( (LA155_55 == AND) ) { s = 88; } else if ( (LA155_55 == EOF || LA155_55 == CRLF || LA155_55 == LSBRAQUET || LA155_55 == RAQUOT || LA155_55 == RSBRAQUET || LA155_55 == SP) ) { s = 6; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_55 == COMMA || LA155_55 == EQUAL || LA155_55 == SEMI) ) { s = 5; } SEEK(index155_55); if ( s>=0 ) { return s; } } break; case 41: { ANTLR3_UINT32 LA155_89; ANTLR3_MARKER index155_89; LA155_89 = LA(1); index155_89 = INDEX(); REWINDLAST(); s = -1; if ( (LA155_89 == COLON) ) { s = 31; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_89 == AT) ) { s = 8; } else if ( (LA155_89 == COMMON_CHAR || LA155_89 == HEX_CHAR) ) { s = 32; } else if ( (LA155_89 == DIGIT) ) { s = 33; } else if ( (LA155_89 == DASH || LA155_89 == DOT || LA155_89 == EMARK || LA155_89 == LPAREN || LA155_89 == RPAREN || ((LA155_89 >= SQUOTE) && (LA155_89 <= USCORE))) ) { s = 34; } else if ( (LA155_89 == PERCENT) ) { s = 35; } else if ( (LA155_89 == EQUAL) ) { s = 55; } else if ( (LA155_89 == DOLLARD || ((LA155_89 >= PLUS) && (LA155_89 <= QMARK)) || LA155_89 == SLASH) ) { s = 36; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_89 == AND || LA155_89 == COMMA || LA155_89 == SEMI) ) { s = 5; } else if ( (LA155_89 == LSBRAQUET || LA155_89 == RSBRAQUET) ) { s = 6; } SEEK(index155_89); if ( s>=0 ) { return s; } } break; case 42: { ANTLR3_UINT32 LA155_129; ANTLR3_MARKER index155_129; LA155_129 = LA(1); index155_129 = INDEX(); REWINDLAST(); s = -1; if ( (LA155_129 == COLON) ) { s = 102; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_129 == AT) ) { s = 8; } else if ( (LA155_129 == COMMON_CHAR || LA155_129 == HEX_CHAR) ) { s = 103; } else if ( (LA155_129 == DIGIT) ) { s = 104; } else if ( (LA155_129 == DASH || LA155_129 == DOT || LA155_129 == EMARK || LA155_129 == LPAREN || LA155_129 == RPAREN || ((LA155_129 >= SQUOTE) && (LA155_129 <= USCORE))) ) { s = 105; } else if ( (LA155_129 == PERCENT) ) { s = 106; } else if ( (LA155_129 == EQUAL) ) { s = 114; } else if ( (LA155_129 == DOLLARD || ((LA155_129 >= PLUS) && (LA155_129 <= QMARK)) || LA155_129 == SLASH) ) { s = 107; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_129 == AND || LA155_129 == COMMA || LA155_129 == SEMI) ) { s = 5; } else if ( (LA155_129 == LSBRAQUET || LA155_129 == RSBRAQUET) ) { s = 6; } SEEK(index155_129); if ( s>=0 ) { return s; } } break; case 43: { ANTLR3_UINT32 LA155_73; ANTLR3_MARKER index155_73; LA155_73 = LA(1); index155_73 = INDEX(); REWINDLAST(); s = -1; if ( (LA155_73 == COLON) ) { s = 24; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_73 == AT) ) { s = 8; } else if ( (LA155_73 == COMMON_CHAR || LA155_73 == HEX_CHAR) ) { s = 25; } else if ( (LA155_73 == DIGIT) ) { s = 26; } else if ( (LA155_73 == DOT) ) { s = 27; } else if ( (LA155_73 == PERCENT) ) { s = 28; } else if ( (LA155_73 == QMARK) ) { s = 14; } else if ( (LA155_73 == SEMI) ) { s = 12; } else if ( (LA155_73 == EOF || LA155_73 == CRLF || LA155_73 == LSBRAQUET || LA155_73 == RAQUOT || LA155_73 == RSBRAQUET || LA155_73 == SP) ) { s = 6; } else if ( (LA155_73 == AND || LA155_73 == DOLLARD || LA155_73 == PLUS || LA155_73 == SLASH) ) { s = 29; } else if ( (LA155_73 == DASH || LA155_73 == EMARK || LA155_73 == LPAREN || LA155_73 == RPAREN || ((LA155_73 >= SQUOTE) && (LA155_73 <= USCORE))) ) { s = 30; } else if ( (LA155_73 == EQUAL) ) { s = 46; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_73 == COMMA) ) { s = 5; } SEEK(index155_73); if ( s>=0 ) { return s; } } break; case 44: { ANTLR3_UINT32 LA155_30; ANTLR3_MARKER index155_30; LA155_30 = LA(1); index155_30 = INDEX(); REWINDLAST(); s = -1; if ( (LA155_30 == COLON) ) { s = 24; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_30 == AT) ) { s = 8; } else if ( (LA155_30 == COMMON_CHAR || LA155_30 == HEX_CHAR) ) { s = 25; } else if ( (LA155_30 == DIGIT) ) { s = 26; } else if ( (LA155_30 == DOT) ) { s = 27; } else if ( (LA155_30 == PERCENT) ) { s = 28; } else if ( (LA155_30 == QMARK) ) { s = 14; } else if ( (LA155_30 == SEMI) ) { s = 12; } else if ( (LA155_30 == EOF || LA155_30 == CRLF || LA155_30 == LSBRAQUET || LA155_30 == RAQUOT || LA155_30 == RSBRAQUET || LA155_30 == SP) ) { s = 6; } else if ( (LA155_30 == AND || LA155_30 == DOLLARD || LA155_30 == PLUS || LA155_30 == SLASH) ) { s = 29; } else if ( (LA155_30 == DASH || LA155_30 == EMARK || LA155_30 == LPAREN || LA155_30 == RPAREN || ((LA155_30 >= SQUOTE) && (LA155_30 <= USCORE))) ) { s = 30; } else if ( (LA155_30 == EQUAL) ) { s = 46; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_30 == COMMA) ) { s = 5; } SEEK(index155_30); if ( s>=0 ) { return s; } } break; case 45: { ANTLR3_UINT32 LA155_16; ANTLR3_MARKER index155_16; LA155_16 = LA(1); index155_16 = INDEX(); REWINDLAST(); s = -1; if ( (synpred11_belle_sip_message(ctx)) && (LA155_16 == AT) ) { s = 8; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_16 == COMMON_CHAR || LA155_16 == HEX_CHAR) ) { s = 15; } else if ( (LA155_16 == DIGIT) ) { s = 16; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_16 == DASH || LA155_16 == DOT || LA155_16 == EMARK || LA155_16 == LPAREN || LA155_16 == RPAREN || ((LA155_16 >= SQUOTE) && (LA155_16 <= USCORE))) ) { s = 17; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_16 == PERCENT) ) { s = 18; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_16 == AND) ) { s = 19; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_16 == EQUAL) ) { s = 20; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_16 == PLUS) ) { s = 21; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_16 == DOLLARD) ) { s = 22; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_16 == COMMA) ) { s = 23; } else if ( (LA155_16 == EOF || LA155_16 == CRLF || ((LA155_16 >= QMARK) && (LA155_16 <= RAQUOT)) || LA155_16 == SEMI || LA155_16 == SP) ) { s = 6; } SEEK(index155_16); if ( s>=0 ) { return s; } } break; case 46: { ANTLR3_UINT32 LA155_58; ANTLR3_MARKER index155_58; LA155_58 = LA(1); index155_58 = INDEX(); REWINDLAST(); s = -1; if ( (synpred11_belle_sip_message(ctx)) && (LA155_58 == AT) ) { s = 8; } else if ( (LA155_58 == COMMON_CHAR || LA155_58 == HEX_CHAR) ) { s = 58; } else if ( (LA155_58 == DIGIT) ) { s = 59; } else if ( (LA155_58 == DOT) ) { s = 60; } else if ( (LA155_58 == PERCENT) ) { s = 61; } else if ( (LA155_58 == AND) ) { s = 62; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_58 == EQUAL) ) { s = 20; } else if ( (LA155_58 == PLUS) ) { s = 63; } else if ( (LA155_58 == DOLLARD) ) { s = 64; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_58 == COMMA) ) { s = 23; } else if ( (LA155_58 == EOF || LA155_58 == COLON || LA155_58 == CRLF || LA155_58 == LSBRAQUET || ((LA155_58 >= QMARK) && (LA155_58 <= RAQUOT)) || ((LA155_58 >= RSBRAQUET) && (LA155_58 <= SP))) ) { s = 6; } else if ( (LA155_58 == DASH || LA155_58 == EMARK || LA155_58 == LPAREN || LA155_58 == RPAREN || ((LA155_58 >= SQUOTE) && (LA155_58 <= USCORE))) ) { s = 65; } SEEK(index155_58); if ( s>=0 ) { return s; } } break; case 47: { ANTLR3_UINT32 LA155_75; ANTLR3_MARKER index155_75; LA155_75 = LA(1); index155_75 = INDEX(); REWINDLAST(); s = -1; if ( (synpred11_belle_sip_message(ctx)) && (LA155_75 == AT) ) { s = 8; } else if ( (LA155_75 == COMMON_CHAR || LA155_75 == HEX_CHAR) ) { s = 75; } else if ( (LA155_75 == DIGIT) ) { s = 76; } else if ( (LA155_75 == DASH || LA155_75 == DOT || LA155_75 == EMARK || LA155_75 == LPAREN || LA155_75 == RPAREN || ((LA155_75 >= SQUOTE) && (LA155_75 <= USCORE))) ) { s = 77; } else if ( (LA155_75 == PERCENT) ) { s = 78; } else if ( (LA155_75 == AND) ) { s = 79; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_75 == EQUAL) ) { s = 20; } else if ( (LA155_75 == PLUS) ) { s = 80; } else if ( (LA155_75 == DOLLARD) ) { s = 81; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_75 == COMMA) ) { s = 23; } else if ( (LA155_75 == EOF || LA155_75 == COLON || LA155_75 == CRLF || LA155_75 == LSBRAQUET || ((LA155_75 >= QMARK) && (LA155_75 <= RAQUOT)) || LA155_75 == RSBRAQUET || ((LA155_75 >= SLASH) && (LA155_75 <= SP))) ) { s = 6; } SEEK(index155_75); if ( s>=0 ) { return s; } } break; case 48: { ANTLR3_UINT32 LA155_27; ANTLR3_MARKER index155_27; LA155_27 = LA(1); index155_27 = INDEX(); REWINDLAST(); s = -1; if ( (LA155_27 == COLON) ) { s = 24; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_27 == AT) ) { s = 8; } else if ( (LA155_27 == COMMON_CHAR || LA155_27 == HEX_CHAR) ) { s = 25; } else if ( (LA155_27 == DIGIT) ) { s = 26; } else if ( (LA155_27 == DOT) ) { s = 27; } else if ( (LA155_27 == PERCENT) ) { s = 28; } else if ( (LA155_27 == QMARK) ) { s = 14; } else if ( (LA155_27 == SEMI) ) { s = 12; } else if ( (LA155_27 == EOF || LA155_27 == CRLF || LA155_27 == LSBRAQUET || LA155_27 == RAQUOT || LA155_27 == RSBRAQUET || LA155_27 == SP) ) { s = 6; } else if ( (LA155_27 == AND || LA155_27 == DOLLARD || LA155_27 == PLUS || LA155_27 == SLASH) ) { s = 29; } else if ( (LA155_27 == DASH || LA155_27 == EMARK || LA155_27 == LPAREN || LA155_27 == RPAREN || ((LA155_27 >= SQUOTE) && (LA155_27 <= USCORE))) ) { s = 30; } else if ( (LA155_27 == EQUAL) ) { s = 46; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_27 == COMMA) ) { s = 5; } SEEK(index155_27); if ( s>=0 ) { return s; } } break; case 49: { ANTLR3_UINT32 LA155_77; ANTLR3_MARKER index155_77; LA155_77 = LA(1); index155_77 = INDEX(); REWINDLAST(); s = -1; if ( (synpred11_belle_sip_message(ctx)) && (LA155_77 == AT) ) { s = 8; } else if ( (LA155_77 == COMMON_CHAR || LA155_77 == HEX_CHAR) ) { s = 75; } else if ( (LA155_77 == DIGIT) ) { s = 76; } else if ( (LA155_77 == DASH || LA155_77 == DOT || LA155_77 == EMARK || LA155_77 == LPAREN || LA155_77 == RPAREN || ((LA155_77 >= SQUOTE) && (LA155_77 <= USCORE))) ) { s = 77; } else if ( (LA155_77 == PERCENT) ) { s = 78; } else if ( (LA155_77 == AND) ) { s = 79; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_77 == EQUAL) ) { s = 20; } else if ( (LA155_77 == PLUS) ) { s = 80; } else if ( (LA155_77 == DOLLARD) ) { s = 81; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_77 == COMMA) ) { s = 23; } else if ( (LA155_77 == EOF || LA155_77 == COLON || LA155_77 == CRLF || LA155_77 == LSBRAQUET || ((LA155_77 >= QMARK) && (LA155_77 <= RAQUOT)) || LA155_77 == RSBRAQUET || ((LA155_77 >= SLASH) && (LA155_77 <= SP))) ) { s = 6; } SEEK(index155_77); if ( s>=0 ) { return s; } } break; case 50: { ANTLR3_UINT32 LA155_87; ANTLR3_MARKER index155_87; LA155_87 = LA(1); index155_87 = INDEX(); REWINDLAST(); s = -1; if ( (LA155_87 == COLON) ) { s = 82; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_87 == AT) ) { s = 8; } else if ( (LA155_87 == COMMON_CHAR || LA155_87 == HEX_CHAR) ) { s = 83; } else if ( (LA155_87 == DIGIT) ) { s = 84; } else if ( (LA155_87 == DASH || LA155_87 == DOT || LA155_87 == EMARK || LA155_87 == LPAREN || LA155_87 == RPAREN || ((LA155_87 >= SQUOTE) && (LA155_87 <= USCORE))) ) { s = 85; } else if ( (LA155_87 == PERCENT) ) { s = 86; } else if ( (LA155_87 == AND) ) { s = 88; } else if ( (LA155_87 == DOLLARD || ((LA155_87 >= PLUS) && (LA155_87 <= QMARK)) || LA155_87 == SLASH) ) { s = 87; } else if ( (LA155_87 == EOF || LA155_87 == CRLF || LA155_87 == LSBRAQUET || LA155_87 == RAQUOT || LA155_87 == RSBRAQUET || LA155_87 == SP) ) { s = 6; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_87 == COMMA || LA155_87 == EQUAL || LA155_87 == SEMI) ) { s = 5; } SEEK(index155_87); if ( s>=0 ) { return s; } } break; case 51: { ANTLR3_UINT32 LA155_65; ANTLR3_MARKER index155_65; LA155_65 = LA(1); index155_65 = INDEX(); REWINDLAST(); s = -1; if ( (synpred11_belle_sip_message(ctx)) && (LA155_65 == AT) ) { s = 8; } else if ( (LA155_65 == COMMON_CHAR || LA155_65 == HEX_CHAR) ) { s = 58; } else if ( (LA155_65 == DIGIT) ) { s = 59; } else if ( (LA155_65 == DOT) ) { s = 60; } else if ( (LA155_65 == PERCENT) ) { s = 61; } else if ( (LA155_65 == AND) ) { s = 62; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_65 == EQUAL) ) { s = 20; } else if ( (LA155_65 == PLUS) ) { s = 63; } else if ( (LA155_65 == DOLLARD) ) { s = 64; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_65 == COMMA) ) { s = 23; } else if ( (LA155_65 == EOF || LA155_65 == COLON || LA155_65 == CRLF || LA155_65 == LSBRAQUET || ((LA155_65 >= QMARK) && (LA155_65 <= RAQUOT)) || ((LA155_65 >= RSBRAQUET) && (LA155_65 <= SP))) ) { s = 6; } else if ( (LA155_65 == DASH || LA155_65 == EMARK || LA155_65 == LPAREN || LA155_65 == RPAREN || ((LA155_65 >= SQUOTE) && (LA155_65 <= USCORE))) ) { s = 65; } SEEK(index155_65); if ( s>=0 ) { return s; } } break; case 52: { ANTLR3_UINT32 LA155_29; ANTLR3_MARKER index155_29; LA155_29 = LA(1); index155_29 = INDEX(); REWINDLAST(); s = -1; if ( (LA155_29 == COLON) ) { s = 24; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_29 == AT) ) { s = 8; } else if ( (LA155_29 == COMMON_CHAR || LA155_29 == HEX_CHAR) ) { s = 25; } else if ( (LA155_29 == DIGIT) ) { s = 26; } else if ( (LA155_29 == DOT) ) { s = 27; } else if ( (LA155_29 == PERCENT) ) { s = 28; } else if ( (LA155_29 == QMARK) ) { s = 14; } else if ( (LA155_29 == SEMI) ) { s = 12; } else if ( (LA155_29 == EOF || LA155_29 == CRLF || LA155_29 == LSBRAQUET || LA155_29 == RAQUOT || LA155_29 == RSBRAQUET || LA155_29 == SP) ) { s = 6; } else if ( (LA155_29 == AND || LA155_29 == DOLLARD || LA155_29 == PLUS || LA155_29 == SLASH) ) { s = 29; } else if ( (LA155_29 == DASH || LA155_29 == EMARK || LA155_29 == LPAREN || LA155_29 == RPAREN || ((LA155_29 >= SQUOTE) && (LA155_29 <= USCORE))) ) { s = 30; } else if ( (LA155_29 == EQUAL) ) { s = 46; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_29 == COMMA) ) { s = 5; } SEEK(index155_29); if ( s>=0 ) { return s; } } break; case 53: { ANTLR3_UINT32 LA155_79; ANTLR3_MARKER index155_79; LA155_79 = LA(1); index155_79 = INDEX(); REWINDLAST(); s = -1; if ( (synpred11_belle_sip_message(ctx)) && (LA155_79 == AT) ) { s = 8; } else if ( (LA155_79 == COMMON_CHAR || LA155_79 == HEX_CHAR) ) { s = 95; } else if ( (LA155_79 == DIGIT) ) { s = 96; } else if ( (LA155_79 == DASH || LA155_79 == DOT || LA155_79 == EMARK || LA155_79 == LPAREN || LA155_79 == RPAREN || ((LA155_79 >= SQUOTE) && (LA155_79 <= USCORE))) ) { s = 97; } else if ( (LA155_79 == PERCENT) ) { s = 98; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_79 == AND) ) { s = 19; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_79 == EQUAL) ) { s = 20; } else if ( (LA155_79 == PLUS) ) { s = 99; } else if ( (LA155_79 == DOLLARD) ) { s = 100; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_79 == COMMA) ) { s = 23; } else if ( (LA155_79 == COLON || LA155_79 == LSBRAQUET || LA155_79 == QMARK || LA155_79 == RSBRAQUET || LA155_79 == SLASH) ) { s = 6; } SEEK(index155_79); if ( s>=0 ) { return s; } } break; case 54: { ANTLR3_UINT32 LA155_42; ANTLR3_MARKER index155_42; LA155_42 = LA(1); index155_42 = INDEX(); REWINDLAST(); s = -1; if ( (synpred11_belle_sip_message(ctx)) && (LA155_42 == AT) ) { s = 8; } else if ( (LA155_42 == COMMON_CHAR || LA155_42 == HEX_CHAR) ) { s = 58; } else if ( (LA155_42 == DIGIT) ) { s = 59; } else if ( (LA155_42 == DOT) ) { s = 60; } else if ( (LA155_42 == PERCENT) ) { s = 61; } else if ( (LA155_42 == AND) ) { s = 62; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_42 == EQUAL) ) { s = 20; } else if ( (LA155_42 == PLUS) ) { s = 63; } else if ( (LA155_42 == DOLLARD) ) { s = 64; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_42 == COMMA) ) { s = 23; } else if ( (LA155_42 == DASH || LA155_42 == EMARK || LA155_42 == LPAREN || LA155_42 == RPAREN || ((LA155_42 >= SQUOTE) && (LA155_42 <= USCORE))) ) { s = 65; } else if ( (LA155_42 == COLON || LA155_42 == LSBRAQUET || LA155_42 == RSBRAQUET || LA155_42 == SLASH) ) { s = 6; } SEEK(index155_42); if ( s>=0 ) { return s; } } break; case 55: { ANTLR3_UINT32 LA155_60; ANTLR3_MARKER index155_60; LA155_60 = LA(1); index155_60 = INDEX(); REWINDLAST(); s = -1; if ( (synpred11_belle_sip_message(ctx)) && (LA155_60 == AT) ) { s = 8; } else if ( (LA155_60 == COMMON_CHAR || LA155_60 == HEX_CHAR) ) { s = 58; } else if ( (LA155_60 == DIGIT) ) { s = 59; } else if ( (LA155_60 == DOT) ) { s = 60; } else if ( (LA155_60 == PERCENT) ) { s = 61; } else if ( (LA155_60 == AND) ) { s = 62; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_60 == EQUAL) ) { s = 20; } else if ( (LA155_60 == PLUS) ) { s = 63; } else if ( (LA155_60 == DOLLARD) ) { s = 64; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_60 == COMMA) ) { s = 23; } else if ( (LA155_60 == EOF || LA155_60 == COLON || LA155_60 == CRLF || LA155_60 == LSBRAQUET || ((LA155_60 >= QMARK) && (LA155_60 <= RAQUOT)) || ((LA155_60 >= RSBRAQUET) && (LA155_60 <= SP))) ) { s = 6; } else if ( (LA155_60 == DASH || LA155_60 == EMARK || LA155_60 == LPAREN || LA155_60 == RPAREN || ((LA155_60 >= SQUOTE) && (LA155_60 <= USCORE))) ) { s = 65; } SEEK(index155_60); if ( s>=0 ) { return s; } } break; case 56: { ANTLR3_UINT32 LA155_9; ANTLR3_MARKER index155_9; LA155_9 = LA(1); index155_9 = INDEX(); REWINDLAST(); s = -1; if ( (LA155_9 == COLON) ) { s = 7; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_9 == AT) ) { s = 8; } else if ( (LA155_9 == COMMON_CHAR || LA155_9 == HEX_CHAR) ) { s = 9; } else if ( (LA155_9 == DIGIT) ) { s = 10; } else if ( (LA155_9 == DASH) ) { s = 11; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_9 == PERCENT) ) { s = 4; } else if ( (LA155_9 == SEMI) ) { s = 12; } else if ( (LA155_9 == EOF || LA155_9 == CRLF || LA155_9 == RAQUOT || LA155_9 == SP) ) { s = 6; } else if ( (LA155_9 == QMARK) ) { s = 14; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_9 == AND || LA155_9 == COMMA || LA155_9 == DOLLARD || LA155_9 == EQUAL || LA155_9 == PLUS || LA155_9 == SLASH) ) { s = 5; } else if ( (LA155_9 == DOT) ) { s = 13; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_9 == EMARK || LA155_9 == LPAREN || LA155_9 == RPAREN || ((LA155_9 >= SQUOTE) && (LA155_9 <= USCORE))) ) { s = 3; } SEEK(index155_9); if ( s>=0 ) { return s; } } break; case 57: { ANTLR3_UINT32 LA155_1; ANTLR3_MARKER index155_1; LA155_1 = LA(1); index155_1 = INDEX(); REWINDLAST(); s = -1; if ( (LA155_1 == COLON) ) { s = 7; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_1 == AT) ) { s = 8; } else if ( (LA155_1 == COMMON_CHAR || LA155_1 == HEX_CHAR) ) { s = 9; } else if ( (LA155_1 == DIGIT) ) { s = 10; } else if ( (LA155_1 == DASH) ) { s = 11; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_1 == PERCENT) ) { s = 4; } else if ( (LA155_1 == SEMI) ) { s = 12; } else if ( (LA155_1 == DOT) ) { s = 13; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_1 == EMARK || LA155_1 == LPAREN || LA155_1 == RPAREN || ((LA155_1 >= SQUOTE) && (LA155_1 <= USCORE))) ) { s = 3; } else if ( (LA155_1 == EOF || LA155_1 == CRLF || LA155_1 == RAQUOT || LA155_1 == SP) ) { s = 6; } else if ( (LA155_1 == QMARK) ) { s = 14; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_1 == AND || LA155_1 == COMMA || LA155_1 == DOLLARD || LA155_1 == EQUAL || LA155_1 == PLUS || LA155_1 == SLASH) ) { s = 5; } SEEK(index155_1); if ( s>=0 ) { return s; } } break; case 58: { ANTLR3_UINT32 LA155_124; ANTLR3_MARKER index155_124; LA155_124 = LA(1); index155_124 = INDEX(); REWINDLAST(); s = -1; if ( (LA155_124 == COLON) ) { s = 123; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_124 == AT) ) { s = 8; } else if ( (LA155_124 == COMMON_CHAR || LA155_124 == HEX_CHAR) ) { s = 124; } else if ( (LA155_124 == DIGIT) ) { s = 125; } else if ( (LA155_124 == DASH || LA155_124 == DOT || LA155_124 == EMARK || LA155_124 == LPAREN || LA155_124 == RPAREN || ((LA155_124 >= SQUOTE) && (LA155_124 <= USCORE))) ) { s = 126; } else if ( (LA155_124 == PERCENT) ) { s = 127; } else if ( (LA155_124 == AND) ) { s = 88; } else if ( (LA155_124 == EOF || LA155_124 == CRLF || LA155_124 == LSBRAQUET || LA155_124 == RAQUOT || LA155_124 == RSBRAQUET || LA155_124 == SP) ) { s = 6; } else if ( (LA155_124 == DOLLARD || ((LA155_124 >= PLUS) && (LA155_124 <= QMARK)) || LA155_124 == SLASH) ) { s = 128; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_124 == COMMA || LA155_124 == EQUAL || LA155_124 == SEMI) ) { s = 5; } SEEK(index155_124); if ( s>=0 ) { return s; } } break; case 59: { ANTLR3_UINT32 LA155_68; ANTLR3_MARKER index155_68; LA155_68 = LA(1); index155_68 = INDEX(); REWINDLAST(); s = -1; if ( (LA155_68 == COLON) ) { s = 66; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_68 == AT) ) { s = 8; } else if ( (LA155_68 == COMMON_CHAR || LA155_68 == HEX_CHAR) ) { s = 67; } else if ( (LA155_68 == DIGIT) ) { s = 68; } else if ( (LA155_68 == DOT) ) { s = 69; } else if ( (LA155_68 == PERCENT) ) { s = 70; } else if ( (LA155_68 == QMARK) ) { s = 14; } else if ( (LA155_68 == SEMI) ) { s = 12; } else if ( (LA155_68 == EOF || LA155_68 == CRLF || LA155_68 == LSBRAQUET || LA155_68 == RAQUOT || LA155_68 == RSBRAQUET || LA155_68 == SP) ) { s = 6; } else if ( (LA155_68 == AND || LA155_68 == DOLLARD || LA155_68 == PLUS || LA155_68 == SLASH) ) { s = 71; } else if ( (LA155_68 == DASH || LA155_68 == EMARK || LA155_68 == LPAREN || LA155_68 == RPAREN || ((LA155_68 >= SQUOTE) && (LA155_68 <= USCORE))) ) { s = 72; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_68 == COMMA || LA155_68 == EQUAL) ) { s = 5; } SEEK(index155_68); if ( s>=0 ) { return s; } } break; case 60: { ANTLR3_UINT32 LA155_111; ANTLR3_MARKER index155_111; LA155_111 = LA(1); index155_111 = INDEX(); REWINDLAST(); s = -1; if ( (synpred11_belle_sip_message(ctx)) && (LA155_111 == AT) ) { s = 8; } else if ( (LA155_111 == COMMON_CHAR || LA155_111 == HEX_CHAR) ) { s = 116; } else if ( (LA155_111 == DIGIT) ) { s = 117; } else if ( (LA155_111 == DASH || LA155_111 == DOT || LA155_111 == EMARK || LA155_111 == LPAREN || LA155_111 == RPAREN || ((LA155_111 >= SQUOTE) && (LA155_111 <= USCORE))) ) { s = 118; } else if ( (LA155_111 == PERCENT) ) { s = 119; } else if ( (LA155_111 == AND) ) { s = 79; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_111 == EQUAL) ) { s = 20; } else if ( (LA155_111 == PLUS) ) { s = 120; } else if ( (LA155_111 == DOLLARD) ) { s = 121; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_111 == COMMA) ) { s = 23; } else if ( (LA155_111 == EOF || LA155_111 == COLON || LA155_111 == CRLF || LA155_111 == LSBRAQUET || ((LA155_111 >= QMARK) && (LA155_111 <= RAQUOT)) || LA155_111 == RSBRAQUET || ((LA155_111 >= SLASH) && (LA155_111 <= SP))) ) { s = 6; } SEEK(index155_111); if ( s>=0 ) { return s; } } break; case 61: { ANTLR3_UINT32 LA155_84; ANTLR3_MARKER index155_84; LA155_84 = LA(1); index155_84 = INDEX(); REWINDLAST(); s = -1; if ( (LA155_84 == COLON) ) { s = 82; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_84 == AT) ) { s = 8; } else if ( (LA155_84 == COMMON_CHAR || LA155_84 == HEX_CHAR) ) { s = 83; } else if ( (LA155_84 == DIGIT) ) { s = 84; } else if ( (LA155_84 == DASH || LA155_84 == DOT || LA155_84 == EMARK || LA155_84 == LPAREN || LA155_84 == RPAREN || ((LA155_84 >= SQUOTE) && (LA155_84 <= USCORE))) ) { s = 85; } else if ( (LA155_84 == PERCENT) ) { s = 86; } else if ( (LA155_84 == AND) ) { s = 88; } else if ( (LA155_84 == DOLLARD || ((LA155_84 >= PLUS) && (LA155_84 <= QMARK)) || LA155_84 == SLASH) ) { s = 87; } else if ( (LA155_84 == EOF || LA155_84 == CRLF || LA155_84 == LSBRAQUET || LA155_84 == RAQUOT || LA155_84 == RSBRAQUET || LA155_84 == SP) ) { s = 6; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_84 == COMMA || LA155_84 == EQUAL || LA155_84 == SEMI) ) { s = 5; } SEEK(index155_84); if ( s>=0 ) { return s; } } break; case 62: { ANTLR3_UINT32 LA155_32; ANTLR3_MARKER index155_32; LA155_32 = LA(1); index155_32 = INDEX(); REWINDLAST(); s = -1; if ( (LA155_32 == COLON) ) { s = 31; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_32 == AT) ) { s = 8; } else if ( (LA155_32 == COMMON_CHAR || LA155_32 == HEX_CHAR) ) { s = 32; } else if ( (LA155_32 == DIGIT) ) { s = 33; } else if ( (LA155_32 == DASH || LA155_32 == DOT || LA155_32 == EMARK || LA155_32 == LPAREN || LA155_32 == RPAREN || ((LA155_32 >= SQUOTE) && (LA155_32 <= USCORE))) ) { s = 34; } else if ( (LA155_32 == PERCENT) ) { s = 35; } else if ( (LA155_32 == EQUAL) ) { s = 55; } else if ( (LA155_32 == DOLLARD || ((LA155_32 >= PLUS) && (LA155_32 <= QMARK)) || LA155_32 == SLASH) ) { s = 36; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_32 == AND || LA155_32 == COMMA || LA155_32 == SEMI) ) { s = 5; } else if ( (LA155_32 == LSBRAQUET || LA155_32 == RSBRAQUET) ) { s = 6; } SEEK(index155_32); if ( s>=0 ) { return s; } } break; case 63: { ANTLR3_UINT32 LA155_103; ANTLR3_MARKER index155_103; LA155_103 = LA(1); index155_103 = INDEX(); REWINDLAST(); s = -1; if ( (LA155_103 == COLON) ) { s = 102; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_103 == AT) ) { s = 8; } else if ( (LA155_103 == COMMON_CHAR || LA155_103 == HEX_CHAR) ) { s = 103; } else if ( (LA155_103 == DIGIT) ) { s = 104; } else if ( (LA155_103 == DASH || LA155_103 == DOT || LA155_103 == EMARK || LA155_103 == LPAREN || LA155_103 == RPAREN || ((LA155_103 >= SQUOTE) && (LA155_103 <= USCORE))) ) { s = 105; } else if ( (LA155_103 == PERCENT) ) { s = 106; } else if ( (LA155_103 == EQUAL) ) { s = 114; } else if ( (LA155_103 == DOLLARD || ((LA155_103 >= PLUS) && (LA155_103 <= QMARK)) || LA155_103 == SLASH) ) { s = 107; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_103 == AND || LA155_103 == COMMA || LA155_103 == SEMI) ) { s = 5; } else if ( (LA155_103 == LSBRAQUET || LA155_103 == RSBRAQUET) ) { s = 6; } SEEK(index155_103); if ( s>=0 ) { return s; } } break; case 64: { ANTLR3_UINT32 LA155_126; ANTLR3_MARKER index155_126; LA155_126 = LA(1); index155_126 = INDEX(); REWINDLAST(); s = -1; if ( (LA155_126 == COLON) ) { s = 123; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_126 == AT) ) { s = 8; } else if ( (LA155_126 == COMMON_CHAR || LA155_126 == HEX_CHAR) ) { s = 124; } else if ( (LA155_126 == DIGIT) ) { s = 125; } else if ( (LA155_126 == DASH || LA155_126 == DOT || LA155_126 == EMARK || LA155_126 == LPAREN || LA155_126 == RPAREN || ((LA155_126 >= SQUOTE) && (LA155_126 <= USCORE))) ) { s = 126; } else if ( (LA155_126 == PERCENT) ) { s = 127; } else if ( (LA155_126 == AND) ) { s = 88; } else if ( (LA155_126 == EOF || LA155_126 == CRLF || LA155_126 == LSBRAQUET || LA155_126 == RAQUOT || LA155_126 == RSBRAQUET || LA155_126 == SP) ) { s = 6; } else if ( (LA155_126 == DOLLARD || ((LA155_126 >= PLUS) && (LA155_126 <= QMARK)) || LA155_126 == SLASH) ) { s = 128; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_126 == COMMA || LA155_126 == EQUAL || LA155_126 == SEMI) ) { s = 5; } SEEK(index155_126); if ( s>=0 ) { return s; } } break; case 65: { ANTLR3_UINT32 LA155_109; ANTLR3_MARKER index155_109; LA155_109 = LA(1); index155_109 = INDEX(); REWINDLAST(); s = -1; if ( (LA155_109 == COLON) ) { s = 66; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_109 == AT) ) { s = 8; } else if ( (LA155_109 == COMMON_CHAR || LA155_109 == HEX_CHAR) ) { s = 67; } else if ( (LA155_109 == DIGIT) ) { s = 68; } else if ( (LA155_109 == DOT) ) { s = 69; } else if ( (LA155_109 == PERCENT) ) { s = 70; } else if ( (LA155_109 == QMARK) ) { s = 14; } else if ( (LA155_109 == SEMI) ) { s = 12; } else if ( (LA155_109 == EOF || LA155_109 == CRLF || LA155_109 == LSBRAQUET || LA155_109 == RAQUOT || LA155_109 == RSBRAQUET || LA155_109 == SP) ) { s = 6; } else if ( (LA155_109 == AND || LA155_109 == DOLLARD || LA155_109 == PLUS || LA155_109 == SLASH) ) { s = 71; } else if ( (LA155_109 == DASH || LA155_109 == EMARK || LA155_109 == LPAREN || LA155_109 == RPAREN || ((LA155_109 >= SQUOTE) && (LA155_109 <= USCORE))) ) { s = 72; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_109 == COMMA || LA155_109 == EQUAL) ) { s = 5; } SEEK(index155_109); if ( s>=0 ) { return s; } } break; case 66: { ANTLR3_UINT32 LA155_34; ANTLR3_MARKER index155_34; LA155_34 = LA(1); index155_34 = INDEX(); REWINDLAST(); s = -1; if ( (LA155_34 == COLON) ) { s = 31; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_34 == AT) ) { s = 8; } else if ( (LA155_34 == COMMON_CHAR || LA155_34 == HEX_CHAR) ) { s = 32; } else if ( (LA155_34 == DIGIT) ) { s = 33; } else if ( (LA155_34 == DASH || LA155_34 == DOT || LA155_34 == EMARK || LA155_34 == LPAREN || LA155_34 == RPAREN || ((LA155_34 >= SQUOTE) && (LA155_34 <= USCORE))) ) { s = 34; } else if ( (LA155_34 == PERCENT) ) { s = 35; } else if ( (LA155_34 == EQUAL) ) { s = 55; } else if ( (LA155_34 == DOLLARD || ((LA155_34 >= PLUS) && (LA155_34 <= QMARK)) || LA155_34 == SLASH) ) { s = 36; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_34 == AND || LA155_34 == COMMA || LA155_34 == SEMI) ) { s = 5; } else if ( (LA155_34 == LSBRAQUET || LA155_34 == RSBRAQUET) ) { s = 6; } SEEK(index155_34); if ( s>=0 ) { return s; } } break; case 67: { ANTLR3_UINT32 LA155_105; ANTLR3_MARKER index155_105; LA155_105 = LA(1); index155_105 = INDEX(); REWINDLAST(); s = -1; if ( (LA155_105 == COLON) ) { s = 102; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_105 == AT) ) { s = 8; } else if ( (LA155_105 == COMMON_CHAR || LA155_105 == HEX_CHAR) ) { s = 103; } else if ( (LA155_105 == DIGIT) ) { s = 104; } else if ( (LA155_105 == DASH || LA155_105 == DOT || LA155_105 == EMARK || LA155_105 == LPAREN || LA155_105 == RPAREN || ((LA155_105 >= SQUOTE) && (LA155_105 <= USCORE))) ) { s = 105; } else if ( (LA155_105 == PERCENT) ) { s = 106; } else if ( (LA155_105 == EQUAL) ) { s = 114; } else if ( (LA155_105 == DOLLARD || ((LA155_105 >= PLUS) && (LA155_105 <= QMARK)) || LA155_105 == SLASH) ) { s = 107; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_105 == AND || LA155_105 == COMMA || LA155_105 == SEMI) ) { s = 5; } else if ( (LA155_105 == LSBRAQUET || LA155_105 == RSBRAQUET) ) { s = 6; } SEEK(index155_105); if ( s>=0 ) { return s; } } break; case 68: { ANTLR3_UINT32 LA155_120; ANTLR3_MARKER index155_120; LA155_120 = LA(1); index155_120 = INDEX(); REWINDLAST(); s = -1; if ( (synpred11_belle_sip_message(ctx)) && (LA155_120 == AT) ) { s = 8; } else if ( (LA155_120 == COMMON_CHAR || LA155_120 == HEX_CHAR) ) { s = 116; } else if ( (LA155_120 == DIGIT) ) { s = 117; } else if ( (LA155_120 == DASH || LA155_120 == DOT || LA155_120 == EMARK || LA155_120 == LPAREN || LA155_120 == RPAREN || ((LA155_120 >= SQUOTE) && (LA155_120 <= USCORE))) ) { s = 118; } else if ( (LA155_120 == PERCENT) ) { s = 119; } else if ( (LA155_120 == AND) ) { s = 79; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_120 == EQUAL) ) { s = 20; } else if ( (LA155_120 == PLUS) ) { s = 120; } else if ( (LA155_120 == DOLLARD) ) { s = 121; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_120 == COMMA) ) { s = 23; } else if ( (LA155_120 == EOF || LA155_120 == COLON || LA155_120 == CRLF || LA155_120 == LSBRAQUET || ((LA155_120 >= QMARK) && (LA155_120 <= RAQUOT)) || LA155_120 == RSBRAQUET || ((LA155_120 >= SLASH) && (LA155_120 <= SP))) ) { s = 6; } SEEK(index155_120); if ( s>=0 ) { return s; } } break; case 69: { ANTLR3_UINT32 LA155_117; ANTLR3_MARKER index155_117; LA155_117 = LA(1); index155_117 = INDEX(); REWINDLAST(); s = -1; if ( (synpred11_belle_sip_message(ctx)) && (LA155_117 == AT) ) { s = 8; } else if ( (LA155_117 == COMMON_CHAR || LA155_117 == HEX_CHAR) ) { s = 116; } else if ( (LA155_117 == DIGIT) ) { s = 117; } else if ( (LA155_117 == DASH || LA155_117 == DOT || LA155_117 == EMARK || LA155_117 == LPAREN || LA155_117 == RPAREN || ((LA155_117 >= SQUOTE) && (LA155_117 <= USCORE))) ) { s = 118; } else if ( (LA155_117 == PERCENT) ) { s = 119; } else if ( (LA155_117 == AND) ) { s = 79; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_117 == EQUAL) ) { s = 20; } else if ( (LA155_117 == PLUS) ) { s = 120; } else if ( (LA155_117 == DOLLARD) ) { s = 121; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_117 == COMMA) ) { s = 23; } else if ( (LA155_117 == EOF || LA155_117 == COLON || LA155_117 == CRLF || LA155_117 == LSBRAQUET || ((LA155_117 >= QMARK) && (LA155_117 <= RAQUOT)) || LA155_117 == RSBRAQUET || ((LA155_117 >= SLASH) && (LA155_117 <= SP))) ) { s = 6; } SEEK(index155_117); if ( s>=0 ) { return s; } } break; case 70: { ANTLR3_UINT32 LA155_121; ANTLR3_MARKER index155_121; LA155_121 = LA(1); index155_121 = INDEX(); REWINDLAST(); s = -1; if ( (synpred11_belle_sip_message(ctx)) && (LA155_121 == AT) ) { s = 8; } else if ( (LA155_121 == COMMON_CHAR || LA155_121 == HEX_CHAR) ) { s = 116; } else if ( (LA155_121 == DIGIT) ) { s = 117; } else if ( (LA155_121 == DASH || LA155_121 == DOT || LA155_121 == EMARK || LA155_121 == LPAREN || LA155_121 == RPAREN || ((LA155_121 >= SQUOTE) && (LA155_121 <= USCORE))) ) { s = 118; } else if ( (LA155_121 == PERCENT) ) { s = 119; } else if ( (LA155_121 == AND) ) { s = 79; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_121 == EQUAL) ) { s = 20; } else if ( (LA155_121 == PLUS) ) { s = 120; } else if ( (LA155_121 == DOLLARD) ) { s = 121; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_121 == COMMA) ) { s = 23; } else if ( (LA155_121 == EOF || LA155_121 == COLON || LA155_121 == CRLF || LA155_121 == LSBRAQUET || ((LA155_121 >= QMARK) && (LA155_121 <= RAQUOT)) || LA155_121 == RSBRAQUET || ((LA155_121 >= SLASH) && (LA155_121 <= SP))) ) { s = 6; } SEEK(index155_121); if ( s>=0 ) { return s; } } break; case 71: { ANTLR3_UINT32 LA155_113; ANTLR3_MARKER index155_113; LA155_113 = LA(1); index155_113 = INDEX(); REWINDLAST(); s = -1; if ( (LA155_113 == COLON) ) { s = 82; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_113 == AT) ) { s = 8; } else if ( (LA155_113 == COMMON_CHAR || LA155_113 == HEX_CHAR) ) { s = 83; } else if ( (LA155_113 == DIGIT) ) { s = 84; } else if ( (LA155_113 == DASH || LA155_113 == DOT || LA155_113 == EMARK || LA155_113 == LPAREN || LA155_113 == RPAREN || ((LA155_113 >= SQUOTE) && (LA155_113 <= USCORE))) ) { s = 85; } else if ( (LA155_113 == PERCENT) ) { s = 86; } else if ( (LA155_113 == AND) ) { s = 88; } else if ( (LA155_113 == DOLLARD || ((LA155_113 >= PLUS) && (LA155_113 <= QMARK)) || LA155_113 == SLASH) ) { s = 87; } else if ( (LA155_113 == EOF || LA155_113 == CRLF || LA155_113 == LSBRAQUET || LA155_113 == RAQUOT || LA155_113 == RSBRAQUET || LA155_113 == SP) ) { s = 6; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_113 == COMMA || LA155_113 == EQUAL || LA155_113 == SEMI) ) { s = 5; } SEEK(index155_113); if ( s>=0 ) { return s; } } break; case 72: { ANTLR3_UINT32 LA155_53; ANTLR3_MARKER index155_53; LA155_53 = LA(1); index155_53 = INDEX(); REWINDLAST(); s = -1; if ( (synpred11_belle_sip_message(ctx)) && (LA155_53 == AT) ) { s = 8; } else if ( (LA155_53 == COMMON_CHAR || LA155_53 == HEX_CHAR) ) { s = 48; } else if ( (LA155_53 == DIGIT) ) { s = 49; } else if ( (LA155_53 == DASH || LA155_53 == DOT || LA155_53 == EMARK || LA155_53 == LPAREN || LA155_53 == RPAREN || ((LA155_53 >= SQUOTE) && (LA155_53 <= USCORE))) ) { s = 50; } else if ( (LA155_53 == PERCENT) ) { s = 51; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_53 == AND) ) { s = 19; } else if ( (LA155_53 == EQUAL) ) { s = 52; } else if ( (LA155_53 == PLUS) ) { s = 53; } else if ( (LA155_53 == DOLLARD) ) { s = 54; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_53 == COMMA) ) { s = 23; } else if ( (LA155_53 == COLON || LA155_53 == LSBRAQUET || LA155_53 == QMARK || LA155_53 == RSBRAQUET || LA155_53 == SLASH) ) { s = 6; } SEEK(index155_53); if ( s>=0 ) { return s; } } break; case 73: { ANTLR3_UINT32 LA155_63; ANTLR3_MARKER index155_63; LA155_63 = LA(1); index155_63 = INDEX(); REWINDLAST(); s = -1; if ( (synpred11_belle_sip_message(ctx)) && (LA155_63 == AT) ) { s = 8; } else if ( (LA155_63 == COMMON_CHAR || LA155_63 == HEX_CHAR) ) { s = 58; } else if ( (LA155_63 == DIGIT) ) { s = 59; } else if ( (LA155_63 == DOT) ) { s = 60; } else if ( (LA155_63 == PERCENT) ) { s = 61; } else if ( (LA155_63 == AND) ) { s = 62; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_63 == EQUAL) ) { s = 20; } else if ( (LA155_63 == PLUS) ) { s = 63; } else if ( (LA155_63 == DOLLARD) ) { s = 64; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_63 == COMMA) ) { s = 23; } else if ( (LA155_63 == EOF || LA155_63 == COLON || LA155_63 == CRLF || LA155_63 == LSBRAQUET || ((LA155_63 >= QMARK) && (LA155_63 <= RAQUOT)) || ((LA155_63 >= RSBRAQUET) && (LA155_63 <= SP))) ) { s = 6; } else if ( (LA155_63 == DASH || LA155_63 == EMARK || LA155_63 == LPAREN || LA155_63 == RPAREN || ((LA155_63 >= SQUOTE) && (LA155_63 <= USCORE))) ) { s = 65; } SEEK(index155_63); if ( s>=0 ) { return s; } } break; case 74: { ANTLR3_UINT32 LA155_99; ANTLR3_MARKER index155_99; LA155_99 = LA(1); index155_99 = INDEX(); REWINDLAST(); s = -1; if ( (synpred11_belle_sip_message(ctx)) && (LA155_99 == AT) ) { s = 8; } else if ( (LA155_99 == COMMON_CHAR || LA155_99 == HEX_CHAR) ) { s = 95; } else if ( (LA155_99 == DIGIT) ) { s = 96; } else if ( (LA155_99 == DASH || LA155_99 == DOT || LA155_99 == EMARK || LA155_99 == LPAREN || LA155_99 == RPAREN || ((LA155_99 >= SQUOTE) && (LA155_99 <= USCORE))) ) { s = 97; } else if ( (LA155_99 == PERCENT) ) { s = 98; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_99 == AND) ) { s = 19; } else if ( (LA155_99 == EQUAL) ) { s = 111; } else if ( (LA155_99 == PLUS) ) { s = 99; } else if ( (LA155_99 == DOLLARD) ) { s = 100; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_99 == COMMA) ) { s = 23; } else if ( (LA155_99 == COLON || LA155_99 == LSBRAQUET || LA155_99 == QMARK || LA155_99 == RSBRAQUET || LA155_99 == SLASH) ) { s = 6; } SEEK(index155_99); if ( s>=0 ) { return s; } } break; case 75: { ANTLR3_UINT32 LA155_64; ANTLR3_MARKER index155_64; LA155_64 = LA(1); index155_64 = INDEX(); REWINDLAST(); s = -1; if ( (synpred11_belle_sip_message(ctx)) && (LA155_64 == AT) ) { s = 8; } else if ( (LA155_64 == COMMON_CHAR || LA155_64 == HEX_CHAR) ) { s = 58; } else if ( (LA155_64 == DIGIT) ) { s = 59; } else if ( (LA155_64 == DOT) ) { s = 60; } else if ( (LA155_64 == PERCENT) ) { s = 61; } else if ( (LA155_64 == AND) ) { s = 62; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_64 == EQUAL) ) { s = 20; } else if ( (LA155_64 == PLUS) ) { s = 63; } else if ( (LA155_64 == DOLLARD) ) { s = 64; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_64 == COMMA) ) { s = 23; } else if ( (LA155_64 == EOF || LA155_64 == COLON || LA155_64 == CRLF || LA155_64 == LSBRAQUET || ((LA155_64 >= QMARK) && (LA155_64 <= RAQUOT)) || ((LA155_64 >= RSBRAQUET) && (LA155_64 <= SP))) ) { s = 6; } else if ( (LA155_64 == DASH || LA155_64 == EMARK || LA155_64 == LPAREN || LA155_64 == RPAREN || ((LA155_64 >= SQUOTE) && (LA155_64 <= USCORE))) ) { s = 65; } SEEK(index155_64); if ( s>=0 ) { return s; } } break; case 76: { ANTLR3_UINT32 LA155_26; ANTLR3_MARKER index155_26; LA155_26 = LA(1); index155_26 = INDEX(); REWINDLAST(); s = -1; if ( (LA155_26 == COLON) ) { s = 24; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_26 == AT) ) { s = 8; } else if ( (LA155_26 == COMMON_CHAR || LA155_26 == HEX_CHAR) ) { s = 25; } else if ( (LA155_26 == DIGIT) ) { s = 26; } else if ( (LA155_26 == DOT) ) { s = 27; } else if ( (LA155_26 == PERCENT) ) { s = 28; } else if ( (LA155_26 == QMARK) ) { s = 14; } else if ( (LA155_26 == SEMI) ) { s = 12; } else if ( (LA155_26 == EOF || LA155_26 == CRLF || LA155_26 == LSBRAQUET || LA155_26 == RAQUOT || LA155_26 == RSBRAQUET || LA155_26 == SP) ) { s = 6; } else if ( (LA155_26 == AND || LA155_26 == DOLLARD || LA155_26 == PLUS || LA155_26 == SLASH) ) { s = 29; } else if ( (LA155_26 == DASH || LA155_26 == EMARK || LA155_26 == LPAREN || LA155_26 == RPAREN || ((LA155_26 >= SQUOTE) && (LA155_26 <= USCORE))) ) { s = 30; } else if ( (LA155_26 == EQUAL) ) { s = 46; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_26 == COMMA) ) { s = 5; } SEEK(index155_26); if ( s>=0 ) { return s; } } break; case 77: { ANTLR3_UINT32 LA155_49; ANTLR3_MARKER index155_49; LA155_49 = LA(1); index155_49 = INDEX(); REWINDLAST(); s = -1; if ( (synpred11_belle_sip_message(ctx)) && (LA155_49 == AT) ) { s = 8; } else if ( (LA155_49 == COMMON_CHAR || LA155_49 == HEX_CHAR) ) { s = 48; } else if ( (LA155_49 == DIGIT) ) { s = 49; } else if ( (LA155_49 == DASH || LA155_49 == DOT || LA155_49 == EMARK || LA155_49 == LPAREN || LA155_49 == RPAREN || ((LA155_49 >= SQUOTE) && (LA155_49 <= USCORE))) ) { s = 50; } else if ( (LA155_49 == PERCENT) ) { s = 51; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_49 == AND) ) { s = 19; } else if ( (LA155_49 == EQUAL) ) { s = 52; } else if ( (LA155_49 == PLUS) ) { s = 53; } else if ( (LA155_49 == DOLLARD) ) { s = 54; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_49 == COMMA) ) { s = 23; } else if ( (LA155_49 == COLON || LA155_49 == LSBRAQUET || LA155_49 == QMARK || LA155_49 == RSBRAQUET || LA155_49 == SLASH) ) { s = 6; } SEEK(index155_49); if ( s>=0 ) { return s; } } break; case 78: { ANTLR3_UINT32 LA155_54; ANTLR3_MARKER index155_54; LA155_54 = LA(1); index155_54 = INDEX(); REWINDLAST(); s = -1; if ( (synpred11_belle_sip_message(ctx)) && (LA155_54 == AT) ) { s = 8; } else if ( (LA155_54 == COMMON_CHAR || LA155_54 == HEX_CHAR) ) { s = 48; } else if ( (LA155_54 == DIGIT) ) { s = 49; } else if ( (LA155_54 == DASH || LA155_54 == DOT || LA155_54 == EMARK || LA155_54 == LPAREN || LA155_54 == RPAREN || ((LA155_54 >= SQUOTE) && (LA155_54 <= USCORE))) ) { s = 50; } else if ( (LA155_54 == PERCENT) ) { s = 51; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_54 == AND) ) { s = 19; } else if ( (LA155_54 == EQUAL) ) { s = 52; } else if ( (LA155_54 == PLUS) ) { s = 53; } else if ( (LA155_54 == DOLLARD) ) { s = 54; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_54 == COMMA) ) { s = 23; } else if ( (LA155_54 == COLON || LA155_54 == LSBRAQUET || LA155_54 == QMARK || LA155_54 == RSBRAQUET || LA155_54 == SLASH) ) { s = 6; } SEEK(index155_54); if ( s>=0 ) { return s; } } break; case 79: { ANTLR3_UINT32 LA155_96; ANTLR3_MARKER index155_96; LA155_96 = LA(1); index155_96 = INDEX(); REWINDLAST(); s = -1; if ( (synpred11_belle_sip_message(ctx)) && (LA155_96 == AT) ) { s = 8; } else if ( (LA155_96 == COMMON_CHAR || LA155_96 == HEX_CHAR) ) { s = 95; } else if ( (LA155_96 == DIGIT) ) { s = 96; } else if ( (LA155_96 == DASH || LA155_96 == DOT || LA155_96 == EMARK || LA155_96 == LPAREN || LA155_96 == RPAREN || ((LA155_96 >= SQUOTE) && (LA155_96 <= USCORE))) ) { s = 97; } else if ( (LA155_96 == PERCENT) ) { s = 98; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_96 == AND) ) { s = 19; } else if ( (LA155_96 == EQUAL) ) { s = 111; } else if ( (LA155_96 == PLUS) ) { s = 99; } else if ( (LA155_96 == DOLLARD) ) { s = 100; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_96 == COMMA) ) { s = 23; } else if ( (LA155_96 == COLON || LA155_96 == LSBRAQUET || LA155_96 == QMARK || LA155_96 == RSBRAQUET || LA155_96 == SLASH) ) { s = 6; } SEEK(index155_96); if ( s>=0 ) { return s; } } break; case 80: { ANTLR3_UINT32 LA155_100; ANTLR3_MARKER index155_100; LA155_100 = LA(1); index155_100 = INDEX(); REWINDLAST(); s = -1; if ( (synpred11_belle_sip_message(ctx)) && (LA155_100 == AT) ) { s = 8; } else if ( (LA155_100 == COMMON_CHAR || LA155_100 == HEX_CHAR) ) { s = 95; } else if ( (LA155_100 == DIGIT) ) { s = 96; } else if ( (LA155_100 == DASH || LA155_100 == DOT || LA155_100 == EMARK || LA155_100 == LPAREN || LA155_100 == RPAREN || ((LA155_100 >= SQUOTE) && (LA155_100 <= USCORE))) ) { s = 97; } else if ( (LA155_100 == PERCENT) ) { s = 98; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_100 == AND) ) { s = 19; } else if ( (LA155_100 == EQUAL) ) { s = 111; } else if ( (LA155_100 == PLUS) ) { s = 99; } else if ( (LA155_100 == DOLLARD) ) { s = 100; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_100 == COMMA) ) { s = 23; } else if ( (LA155_100 == COLON || LA155_100 == LSBRAQUET || LA155_100 == QMARK || LA155_100 == RSBRAQUET || LA155_100 == SLASH) ) { s = 6; } SEEK(index155_100); if ( s>=0 ) { return s; } } break; case 81: { ANTLR3_UINT32 LA155_123; ANTLR3_MARKER index155_123; LA155_123 = LA(1); index155_123 = INDEX(); REWINDLAST(); s = -1; if ( (LA155_123 == COMMON_CHAR || LA155_123 == HEX_CHAR) ) { s = 116; } else if ( (LA155_123 == DIGIT) ) { s = 117; } else if ( (LA155_123 == DASH || LA155_123 == DOT || LA155_123 == EMARK || LA155_123 == LPAREN || LA155_123 == RPAREN || ((LA155_123 >= SQUOTE) && (LA155_123 <= USCORE))) ) { s = 118; } else if ( (LA155_123 == PERCENT) ) { s = 119; } else if ( (LA155_123 == AND) ) { s = 79; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_123 == EQUAL) ) { s = 20; } else if ( (LA155_123 == PLUS) ) { s = 120; } else if ( (LA155_123 == DOLLARD) ) { s = 121; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_123 == COMMA) ) { s = 23; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_123 == AT) ) { s = 8; } else if ( (LA155_123 == EOF || LA155_123 == COLON || LA155_123 == CRLF || LA155_123 == LSBRAQUET || ((LA155_123 >= QMARK) && (LA155_123 <= RAQUOT)) || LA155_123 == RSBRAQUET || ((LA155_123 >= SLASH) && (LA155_123 <= SP))) ) { s = 6; } SEEK(index155_123); if ( s>=0 ) { return s; } } break; case 82: { ANTLR3_UINT32 LA155_62; ANTLR3_MARKER index155_62; LA155_62 = LA(1); index155_62 = INDEX(); REWINDLAST(); s = -1; if ( (synpred11_belle_sip_message(ctx)) && (LA155_62 == AT) ) { s = 8; } else if ( (LA155_62 == COMMON_CHAR || LA155_62 == HEX_CHAR) ) { s = 58; } else if ( (LA155_62 == DIGIT) ) { s = 59; } else if ( (LA155_62 == DOT) ) { s = 60; } else if ( (LA155_62 == PERCENT) ) { s = 61; } else if ( (LA155_62 == AND) ) { s = 62; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_62 == EQUAL) ) { s = 20; } else if ( (LA155_62 == PLUS) ) { s = 63; } else if ( (LA155_62 == DOLLARD) ) { s = 64; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_62 == COMMA) ) { s = 23; } else if ( (LA155_62 == EOF || LA155_62 == COLON || LA155_62 == CRLF || LA155_62 == LSBRAQUET || ((LA155_62 >= QMARK) && (LA155_62 <= RAQUOT)) || ((LA155_62 >= RSBRAQUET) && (LA155_62 <= SP))) ) { s = 6; } else if ( (LA155_62 == DASH || LA155_62 == EMARK || LA155_62 == LPAREN || LA155_62 == RPAREN || ((LA155_62 >= SQUOTE) && (LA155_62 <= USCORE))) ) { s = 65; } SEEK(index155_62); if ( s>=0 ) { return s; } } break; case 83: { ANTLR3_UINT32 LA155_7; ANTLR3_MARKER index155_7; LA155_7 = LA(1); index155_7 = INDEX(); REWINDLAST(); s = -1; if ( (synpred11_belle_sip_message(ctx)) && (LA155_7 == COMMON_CHAR || LA155_7 == HEX_CHAR) ) { s = 15; } else if ( (LA155_7 == DIGIT) ) { s = 16; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_7 == DASH || LA155_7 == DOT || LA155_7 == EMARK || LA155_7 == LPAREN || LA155_7 == RPAREN || ((LA155_7 >= SQUOTE) && (LA155_7 <= USCORE))) ) { s = 17; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_7 == PERCENT) ) { s = 18; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_7 == AND) ) { s = 19; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_7 == EQUAL) ) { s = 20; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_7 == PLUS) ) { s = 21; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_7 == DOLLARD) ) { s = 22; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_7 == COMMA) ) { s = 23; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_7 == AT) ) { s = 8; } SEEK(index155_7); if ( s>=0 ) { return s; } } break; case 84: { ANTLR3_UINT32 LA155_37; ANTLR3_MARKER index155_37; LA155_37 = LA(1); index155_37 = INDEX(); REWINDLAST(); s = -1; if ( (synpred11_belle_sip_message(ctx)) && (LA155_37 == AT) ) { s = 8; } else if ( (LA155_37 == COMMON_CHAR || LA155_37 == HEX_CHAR) ) { s = 37; } else if ( (LA155_37 == DIGIT) ) { s = 38; } else if ( (LA155_37 == DOT) ) { s = 39; } else if ( (LA155_37 == PERCENT) ) { s = 40; } else if ( (LA155_37 == AND) ) { s = 41; } else if ( (LA155_37 == EQUAL) ) { s = 42; } else if ( (LA155_37 == PLUS) ) { s = 43; } else if ( (LA155_37 == DOLLARD) ) { s = 44; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_37 == COMMA) ) { s = 23; } else if ( (LA155_37 == EOF || LA155_37 == COLON || LA155_37 == CRLF || LA155_37 == LSBRAQUET || ((LA155_37 >= QMARK) && (LA155_37 <= RAQUOT)) || ((LA155_37 >= RSBRAQUET) && (LA155_37 <= SP))) ) { s = 6; } else if ( (LA155_37 == DASH || LA155_37 == EMARK || LA155_37 == LPAREN || LA155_37 == RPAREN || ((LA155_37 >= SQUOTE) && (LA155_37 <= USCORE))) ) { s = 45; } SEEK(index155_37); if ( s>=0 ) { return s; } } break; case 85: { ANTLR3_UINT32 LA155_132; ANTLR3_MARKER index155_132; LA155_132 = LA(1); index155_132 = INDEX(); REWINDLAST(); s = -1; if ( (synpred11_belle_sip_message(ctx)) && (LA155_132 == AT) ) { s = 8; } else if ( (LA155_132 == COMMON_CHAR || LA155_132 == HEX_CHAR) ) { s = 116; } else if ( (LA155_132 == DIGIT) ) { s = 117; } else if ( (LA155_132 == DASH || LA155_132 == DOT || LA155_132 == EMARK || LA155_132 == LPAREN || LA155_132 == RPAREN || ((LA155_132 >= SQUOTE) && (LA155_132 <= USCORE))) ) { s = 118; } else if ( (LA155_132 == PERCENT) ) { s = 119; } else if ( (LA155_132 == AND) ) { s = 79; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_132 == EQUAL) ) { s = 20; } else if ( (LA155_132 == PLUS) ) { s = 120; } else if ( (LA155_132 == DOLLARD) ) { s = 121; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_132 == COMMA) ) { s = 23; } else if ( (LA155_132 == EOF || LA155_132 == COLON || LA155_132 == CRLF || LA155_132 == LSBRAQUET || ((LA155_132 >= QMARK) && (LA155_132 <= RAQUOT)) || LA155_132 == RSBRAQUET || ((LA155_132 >= SLASH) && (LA155_132 <= SP))) ) { s = 6; } SEEK(index155_132); if ( s>=0 ) { return s; } } break; case 86: { ANTLR3_UINT32 LA155_93; ANTLR3_MARKER index155_93; LA155_93 = LA(1); index155_93 = INDEX(); REWINDLAST(); s = -1; if ( (synpred11_belle_sip_message(ctx)) && (LA155_93 == AT) ) { s = 8; } else if ( (LA155_93 == COMMON_CHAR || LA155_93 == HEX_CHAR) ) { s = 48; } else if ( (LA155_93 == DIGIT) ) { s = 49; } else if ( (LA155_93 == DASH || LA155_93 == DOT || LA155_93 == EMARK || LA155_93 == LPAREN || LA155_93 == RPAREN || ((LA155_93 >= SQUOTE) && (LA155_93 <= USCORE))) ) { s = 50; } else if ( (LA155_93 == PERCENT) ) { s = 51; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_93 == AND) ) { s = 19; } else if ( (LA155_93 == EQUAL) ) { s = 52; } else if ( (LA155_93 == PLUS) ) { s = 53; } else if ( (LA155_93 == DOLLARD) ) { s = 54; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_93 == COMMA) ) { s = 23; } else if ( (LA155_93 == COLON || LA155_93 == LSBRAQUET || LA155_93 == QMARK || LA155_93 == RSBRAQUET || LA155_93 == SLASH) ) { s = 6; } SEEK(index155_93); if ( s>=0 ) { return s; } } break; case 87: { ANTLR3_UINT32 LA155_122; ANTLR3_MARKER index155_122; LA155_122 = LA(1); index155_122 = INDEX(); REWINDLAST(); s = -1; if ( (synpred11_belle_sip_message(ctx)) && (LA155_122 == AT) ) { s = 8; } else if ( (LA155_122 == COMMON_CHAR || LA155_122 == HEX_CHAR) ) { s = 95; } else if ( (LA155_122 == DIGIT) ) { s = 96; } else if ( (LA155_122 == DASH || LA155_122 == DOT || LA155_122 == EMARK || LA155_122 == LPAREN || LA155_122 == RPAREN || ((LA155_122 >= SQUOTE) && (LA155_122 <= USCORE))) ) { s = 97; } else if ( (LA155_122 == PERCENT) ) { s = 98; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_122 == AND) ) { s = 19; } else if ( (LA155_122 == EQUAL) ) { s = 111; } else if ( (LA155_122 == PLUS) ) { s = 99; } else if ( (LA155_122 == DOLLARD) ) { s = 100; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_122 == COMMA) ) { s = 23; } else if ( (LA155_122 == COLON || LA155_122 == LSBRAQUET || LA155_122 == QMARK || LA155_122 == RSBRAQUET || LA155_122 == SLASH) ) { s = 6; } SEEK(index155_122); if ( s>=0 ) { return s; } } break; case 88: { ANTLR3_UINT32 LA155_12; ANTLR3_MARKER index155_12; LA155_12 = LA(1); index155_12 = INDEX(); REWINDLAST(); s = -1; if ( (LA155_12 == COLON) ) { s = 24; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_12 == AT) ) { s = 8; } else if ( (LA155_12 == COMMON_CHAR || LA155_12 == HEX_CHAR) ) { s = 25; } else if ( (LA155_12 == DIGIT) ) { s = 26; } else if ( (LA155_12 == DOT) ) { s = 27; } else if ( (LA155_12 == PERCENT) ) { s = 28; } else if ( (LA155_12 == AND || LA155_12 == DOLLARD || LA155_12 == PLUS || LA155_12 == SLASH) ) { s = 29; } else if ( (LA155_12 == EOF || LA155_12 == CRLF || LA155_12 == LSBRAQUET || LA155_12 == RAQUOT || LA155_12 == RSBRAQUET || LA155_12 == SP) ) { s = 6; } else if ( (LA155_12 == DASH || LA155_12 == EMARK || LA155_12 == LPAREN || LA155_12 == RPAREN || ((LA155_12 >= SQUOTE) && (LA155_12 <= USCORE))) ) { s = 30; } else if ( (LA155_12 == QMARK) ) { s = 14; } else if ( (LA155_12 == SEMI) ) { s = 12; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_12 == COMMA || LA155_12 == EQUAL) ) { s = 5; } SEEK(index155_12); if ( s>=0 ) { return s; } } break; case 89: { ANTLR3_UINT32 LA155_31; ANTLR3_MARKER index155_31; LA155_31 = LA(1); index155_31 = INDEX(); REWINDLAST(); s = -1; if ( (LA155_31 == COMMON_CHAR || LA155_31 == HEX_CHAR) ) { s = 48; } else if ( (LA155_31 == DIGIT) ) { s = 49; } else if ( (LA155_31 == DASH || LA155_31 == DOT || LA155_31 == EMARK || LA155_31 == LPAREN || LA155_31 == RPAREN || ((LA155_31 >= SQUOTE) && (LA155_31 <= USCORE))) ) { s = 50; } else if ( (LA155_31 == PERCENT) ) { s = 51; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_31 == AND) ) { s = 19; } else if ( (LA155_31 == EQUAL) ) { s = 52; } else if ( (LA155_31 == PLUS) ) { s = 53; } else if ( (LA155_31 == DOLLARD) ) { s = 54; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_31 == COMMA) ) { s = 23; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_31 == AT) ) { s = 8; } else if ( (LA155_31 == COLON || LA155_31 == LSBRAQUET || LA155_31 == QMARK || LA155_31 == RSBRAQUET || LA155_31 == SLASH) ) { s = 6; } SEEK(index155_31); if ( s>=0 ) { return s; } } break; case 90: { ANTLR3_UINT32 LA155_102; ANTLR3_MARKER index155_102; LA155_102 = LA(1); index155_102 = INDEX(); REWINDLAST(); s = -1; if ( (LA155_102 == COMMON_CHAR || LA155_102 == HEX_CHAR) ) { s = 95; } else if ( (LA155_102 == DIGIT) ) { s = 96; } else if ( (LA155_102 == DASH || LA155_102 == DOT || LA155_102 == EMARK || LA155_102 == LPAREN || LA155_102 == RPAREN || ((LA155_102 >= SQUOTE) && (LA155_102 <= USCORE))) ) { s = 97; } else if ( (LA155_102 == PERCENT) ) { s = 98; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_102 == AND) ) { s = 19; } else if ( (LA155_102 == EQUAL) ) { s = 111; } else if ( (LA155_102 == PLUS) ) { s = 99; } else if ( (LA155_102 == DOLLARD) ) { s = 100; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_102 == COMMA) ) { s = 23; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_102 == AT) ) { s = 8; } else if ( (LA155_102 == COLON || LA155_102 == LSBRAQUET || LA155_102 == QMARK || LA155_102 == RSBRAQUET || LA155_102 == SLASH) ) { s = 6; } SEEK(index155_102); if ( s>=0 ) { return s; } } break; case 91: { ANTLR3_UINT32 LA155_45; ANTLR3_MARKER index155_45; LA155_45 = LA(1); index155_45 = INDEX(); REWINDLAST(); s = -1; if ( (synpred11_belle_sip_message(ctx)) && (LA155_45 == AT) ) { s = 8; } else if ( (LA155_45 == COMMON_CHAR || LA155_45 == HEX_CHAR) ) { s = 37; } else if ( (LA155_45 == DIGIT) ) { s = 38; } else if ( (LA155_45 == DOT) ) { s = 39; } else if ( (LA155_45 == PERCENT) ) { s = 40; } else if ( (LA155_45 == AND) ) { s = 41; } else if ( (LA155_45 == EQUAL) ) { s = 42; } else if ( (LA155_45 == PLUS) ) { s = 43; } else if ( (LA155_45 == DOLLARD) ) { s = 44; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_45 == COMMA) ) { s = 23; } else if ( (LA155_45 == EOF || LA155_45 == COLON || LA155_45 == CRLF || LA155_45 == LSBRAQUET || ((LA155_45 >= QMARK) && (LA155_45 <= RAQUOT)) || ((LA155_45 >= RSBRAQUET) && (LA155_45 <= SP))) ) { s = 6; } else if ( (LA155_45 == DASH || LA155_45 == EMARK || LA155_45 == LPAREN || LA155_45 == RPAREN || ((LA155_45 >= SQUOTE) && (LA155_45 <= USCORE))) ) { s = 45; } SEEK(index155_45); if ( s>=0 ) { return s; } } break; case 92: { ANTLR3_UINT32 LA155_67; ANTLR3_MARKER index155_67; LA155_67 = LA(1); index155_67 = INDEX(); REWINDLAST(); s = -1; if ( (LA155_67 == COLON) ) { s = 66; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_67 == AT) ) { s = 8; } else if ( (LA155_67 == COMMON_CHAR || LA155_67 == HEX_CHAR) ) { s = 67; } else if ( (LA155_67 == DIGIT) ) { s = 68; } else if ( (LA155_67 == DOT) ) { s = 69; } else if ( (LA155_67 == PERCENT) ) { s = 70; } else if ( (LA155_67 == QMARK) ) { s = 14; } else if ( (LA155_67 == SEMI) ) { s = 12; } else if ( (LA155_67 == EOF || LA155_67 == CRLF || LA155_67 == LSBRAQUET || LA155_67 == RAQUOT || LA155_67 == RSBRAQUET || LA155_67 == SP) ) { s = 6; } else if ( (LA155_67 == AND || LA155_67 == DOLLARD || LA155_67 == PLUS || LA155_67 == SLASH) ) { s = 71; } else if ( (LA155_67 == DASH || LA155_67 == EMARK || LA155_67 == LPAREN || LA155_67 == RPAREN || ((LA155_67 >= SQUOTE) && (LA155_67 <= USCORE))) ) { s = 72; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_67 == COMMA || LA155_67 == EQUAL) ) { s = 5; } SEEK(index155_67); if ( s>=0 ) { return s; } } break; case 93: { ANTLR3_UINT32 LA155_14; ANTLR3_MARKER index155_14; LA155_14 = LA(1); index155_14 = INDEX(); REWINDLAST(); s = -1; if ( (LA155_14 == COLON) ) { s = 31; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_14 == AT) ) { s = 8; } else if ( (LA155_14 == COMMON_CHAR || LA155_14 == HEX_CHAR) ) { s = 32; } else if ( (LA155_14 == DIGIT) ) { s = 33; } else if ( (LA155_14 == DASH || LA155_14 == DOT || LA155_14 == EMARK || LA155_14 == LPAREN || LA155_14 == RPAREN || ((LA155_14 >= SQUOTE) && (LA155_14 <= USCORE))) ) { s = 34; } else if ( (LA155_14 == PERCENT) ) { s = 35; } else if ( (LA155_14 == DOLLARD || ((LA155_14 >= PLUS) && (LA155_14 <= QMARK)) || LA155_14 == SLASH) ) { s = 36; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_14 == AND || LA155_14 == COMMA || LA155_14 == EQUAL || LA155_14 == SEMI) ) { s = 5; } else if ( (LA155_14 == LSBRAQUET || LA155_14 == RSBRAQUET) ) { s = 6; } SEEK(index155_14); if ( s>=0 ) { return s; } } break; case 94: { ANTLR3_UINT32 LA155_66; ANTLR3_MARKER index155_66; LA155_66 = LA(1); index155_66 = INDEX(); REWINDLAST(); s = -1; if ( (LA155_66 == COMMON_CHAR || LA155_66 == HEX_CHAR) ) { s = 58; } else if ( (LA155_66 == DIGIT) ) { s = 59; } else if ( (LA155_66 == DOT) ) { s = 60; } else if ( (LA155_66 == PERCENT) ) { s = 61; } else if ( (LA155_66 == AND) ) { s = 62; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_66 == EQUAL) ) { s = 20; } else if ( (LA155_66 == PLUS) ) { s = 63; } else if ( (LA155_66 == DOLLARD) ) { s = 64; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_66 == COMMA) ) { s = 23; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_66 == AT) ) { s = 8; } else if ( (LA155_66 == EOF || LA155_66 == COLON || LA155_66 == CRLF || LA155_66 == LSBRAQUET || ((LA155_66 >= QMARK) && (LA155_66 <= RAQUOT)) || ((LA155_66 >= RSBRAQUET) && (LA155_66 <= SP))) ) { s = 6; } else if ( (LA155_66 == DASH || LA155_66 == EMARK || LA155_66 == LPAREN || LA155_66 == RPAREN || ((LA155_66 >= SQUOTE) && (LA155_66 <= USCORE))) ) { s = 65; } SEEK(index155_66); if ( s>=0 ) { return s; } } break; case 95: { ANTLR3_UINT32 LA155_90; ANTLR3_MARKER index155_90; LA155_90 = LA(1); index155_90 = INDEX(); REWINDLAST(); s = -1; if ( (synpred11_belle_sip_message(ctx)) && (LA155_90 == AT) ) { s = 8; } else if ( (LA155_90 == COMMON_CHAR || LA155_90 == HEX_CHAR) ) { s = 37; } else if ( (LA155_90 == DIGIT) ) { s = 38; } else if ( (LA155_90 == DOT) ) { s = 39; } else if ( (LA155_90 == PERCENT) ) { s = 40; } else if ( (LA155_90 == AND) ) { s = 41; } else if ( (LA155_90 == EQUAL) ) { s = 42; } else if ( (LA155_90 == PLUS) ) { s = 43; } else if ( (LA155_90 == DOLLARD) ) { s = 44; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_90 == COMMA) ) { s = 23; } else if ( (LA155_90 == EOF || LA155_90 == COLON || LA155_90 == CRLF || LA155_90 == LSBRAQUET || ((LA155_90 >= QMARK) && (LA155_90 <= RAQUOT)) || ((LA155_90 >= RSBRAQUET) && (LA155_90 <= SP))) ) { s = 6; } else if ( (LA155_90 == DASH || LA155_90 == EMARK || LA155_90 == LPAREN || LA155_90 == RPAREN || ((LA155_90 >= SQUOTE) && (LA155_90 <= USCORE))) ) { s = 45; } SEEK(index155_90); if ( s>=0 ) { return s; } } break; case 96: { ANTLR3_UINT32 LA155_88; ANTLR3_MARKER index155_88; LA155_88 = LA(1); index155_88 = INDEX(); REWINDLAST(); s = -1; if ( (LA155_88 == COLON) ) { s = 102; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_88 == AT) ) { s = 8; } else if ( (LA155_88 == COMMON_CHAR || LA155_88 == HEX_CHAR) ) { s = 103; } else if ( (LA155_88 == DIGIT) ) { s = 104; } else if ( (LA155_88 == DASH || LA155_88 == DOT || LA155_88 == EMARK || LA155_88 == LPAREN || LA155_88 == RPAREN || ((LA155_88 >= SQUOTE) && (LA155_88 <= USCORE))) ) { s = 105; } else if ( (LA155_88 == PERCENT) ) { s = 106; } else if ( (LA155_88 == DOLLARD || ((LA155_88 >= PLUS) && (LA155_88 <= QMARK)) || LA155_88 == SLASH) ) { s = 107; } else if ( (synpred11_belle_sip_message(ctx)) && (LA155_88 == AND || LA155_88 == COMMA || LA155_88 == EQUAL || LA155_88 == SEMI) ) { s = 5; } else if ( (LA155_88 == LSBRAQUET || LA155_88 == RSBRAQUET) ) { s = 6; } SEEK(index155_88); if ( s>=0 ) { return s; } } break; } if (BACKTRACKING > 0) { FAILEDFLAG = ANTLR3_TRUE; return -1; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)"1816:38: ( ( ( userinfo[NULL] )=> userinfo[$fast_uri::current] fast_hostport[$fast_uri::current] ) | fast_hostport[$fast_uri::current] )"; EXCEPTION->decisionNum = 155; EXCEPTION->state = _s; return -1; } /* Declare tracking structure for Cyclic DFA 155 */ static ANTLR3_CYCLIC_DFA cdfa155 = { 155, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"1816:38: ( ( ( userinfo[NULL] )=> userinfo[$fast_uri::current] fast_hostport[$fast_uri::current] ) | fast_hostport[$fast_uri::current] )", (CDFA_SPECIAL_FUNC) dfa155_sst, antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa155_eot, /* EOT table */ dfa155_eof, /* EOF table */ dfa155_min, /* Minimum tokens for each state */ dfa155_max, /* Maximum tokens for each state */ dfa155_accept, /* Accept table */ dfa155_special, /* Special transition states */ dfa155_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 155 * --------------------- *//** Static dfa state tables for Cyclic dfa: * 1817:4: ( uri_parameters[$fast_uri::current] )? */ static const ANTLR3_INT32 dfa156_eot[6] = { -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa156_eof[6] = { 4, 4, -1, -1, -1, 4 }; static const ANTLR3_INT32 dfa156_min[6] = { 11, 11, 36, -1, -1, 30 }; static const ANTLR3_INT32 dfa156_max[6] = { 36, 36, 36, -1, -1, 36 }; static const ANTLR3_INT32 dfa156_accept[6] = { -1, -1, -1, 1, 2, -1 }; static const ANTLR3_INT32 dfa156_special[6] = { -1, -1, -1, -1, -1, -1 }; /** Used when there is no transition table entry for a particular state */ #define dfa156_T_empty NULL static const ANTLR3_INT32 dfa156_T0[] = { 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, -1, -1, -1, 3, -1, 1 }; static const ANTLR3_INT32 dfa156_T1[] = { 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, 4, -1, -1, -1, 3, -1, 1 }; static const ANTLR3_INT32 dfa156_T2[] = { 4, -1, -1, -1, 3, -1, 5 }; static const ANTLR3_INT32 dfa156_T3[] = { 5 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa156_transitions[] = { dfa156_T1, dfa156_T0, dfa156_T3, NULL, NULL, dfa156_T2 }; /* Declare tracking structure for Cyclic DFA 156 */ static ANTLR3_CYCLIC_DFA cdfa156 = { 156, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"1817:4: ( uri_parameters[$fast_uri::current] )?", (CDFA_SPECIAL_FUNC) antlr3dfaspecialStateTransition, /* Default special state transition function */ antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa156_eot, /* EOT table */ dfa156_eof, /* EOF table */ dfa156_min, /* Minimum tokens for each state */ dfa156_max, /* Maximum tokens for each state */ dfa156_accept, /* Accept table */ dfa156_special, /* Special transition states */ dfa156_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 156 * --------------------- *//** Static dfa state tables for Cyclic dfa: * ()+ loopback of 1865:7: ( ( semi uri_parameter ) | ( ( lws )? SEMI ) )+ */ static const ANTLR3_INT32 dfa165_eot[19] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa165_eof[19] = { 1, -1, 1, -1, 10, 1, 1, 10, -1, -1, -1, 10, 9, 10, 9, 9, 9, 9, -1 }; static const ANTLR3_INT32 dfa165_min[19] = { 11, -1, 10, 36, 4, 11, 30, 4, 36, -1, -1, 4, 4, 4, 4, 4, 4, 4, 6 }; static const ANTLR3_INT32 dfa165_max[19] = { 36, -1, 36, 36, 40, 36, 36, 40, 36, -1, -1, 40, 40, 40, 40, 40, 40, 40, 40 }; static const ANTLR3_INT32 dfa165_accept[19] = { -1, 3, -1, -1, -1, -1, -1, -1, -1, 1, 2, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa165_special[19] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; /** Used when there is no transition table entry for a particular state */ #define dfa165_T_empty NULL static const ANTLR3_INT32 dfa165_T0[] = { 6 }; static const ANTLR3_INT32 dfa165_T1[] = { 13 }; static const ANTLR3_INT32 dfa165_T2[] = { 9, -1, -1, -1, 9, -1, 9, 9, 9, 15, 9, 9, 9, 9, 9, 9, -1, -1, -1, 9, 9, -1, -1, 9, 9, 9, 9, -1, 9, 9, 9, 9, 9, 9, 9, 9, 9 }; static const ANTLR3_INT32 dfa165_T3[] = { 9, -1, -1, -1, 9, -1, 9, 9, 9, 9, 9, 16, 9, 9, 9, 9, -1, -1, -1, 9, 9, -1, -1, 9, 9, 9, 9, -1, 9, 9, 9, 9, 9, 9, 9, 9, 9 }; static const ANTLR3_INT32 dfa165_T4[] = { 9, -1, -1, -1, 9, -1, 9, 9, 9, 17, 9, 9, 9, 9, 9, 9, -1, -1, -1, 9, 9, -1, -1, 9, 9, 9, 9, -1, 9, 9, 9, 9, 9, 9, 9, 9, 9 }; static const ANTLR3_INT32 dfa165_T5[] = { 9, -1, -1, -1, 9, -1, 9, 18, 9, 9, 9, 9, 9, 9, 9, 9, -1, -1, -1, 9, 9, -1, -1, 9, 9, 9, 9, -1, 9, 9, 9, 9, 9, 9, 9, 9, 9 }; static const ANTLR3_INT32 dfa165_T6[] = { 9, -1, -1, -1, 9, -1, 9, -1, 9, 9, 9, 9, -1, 9, -1, 9, -1, -1, -1, 9, 9, -1, -1, 9, 9, -1, 10, -1, 9, 9, 10, 9, 13, 9, 9, 9, 9 }; static const ANTLR3_INT32 dfa165_T7[] = { 9, -1, -1, -1, 9, -1, 9, 8, 9, 9, 9, 9, 10, 9, -1, 9, -1, -1, -1, 9, 9, -1, -1, 9, 9, 10, 10, -1, 9, 9, 10, 9, 7, 9, 9, 9, 9 }; static const ANTLR3_INT32 dfa165_T8[] = { 3, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 1, -1, -1, -1, 4, -1, 2 }; static const ANTLR3_INT32 dfa165_T9[] = { 10, -1, -1, -1, 10, -1, 10, 10, -1, 10, -1, 10, -1, 10, -1, -1, -1, 10, -1, -1, -1, 10, 10, -1, -1, -1, 10, -1, -1, -1, 9, 10, 10, 10, 10 }; static const ANTLR3_INT32 dfa165_T10[] = { 9, -1, -1, -1, 9, -1, 9, 8, 9, 9, 9, 9, -1, 9, -1, 9, -1, -1, -1, 9, 9, -1, -1, 9, 9, -1, 10, -1, 9, 9, 10, 9, 11, 9, 9, 9, 9 }; static const ANTLR3_INT32 dfa165_T11[] = { 1, 3, -1, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, 4, -1, 5 }; static const ANTLR3_INT32 dfa165_T12[] = { 9, -1, -1, -1, 9, -1, 12, 8, 9, 9, 9, 9, -1, 9, -1, 12, -1, -1, -1, 9, 9, -1, -1, 9, 9, -1, 10, -1, 9, 9, 10, 9, 11, 9, 9, 9, 9 }; static const ANTLR3_INT32 dfa165_T13[] = { 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, 4, -1, 5 }; static const ANTLR3_INT32 dfa165_T14[] = { 9, -1, -1, -1, 9, -1, 12, 9, 9, 9, 9, 9, 9, 9, 9, 12, -1, -1, -1, 9, 9, -1, -1, 9, 9, 9, 9, -1, 9, 9, 9, 14, 9, 9, 9, 9, 9 }; static const ANTLR3_INT32 dfa165_T15[] = { 1, -1, -1, -1, 4, -1, 6 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa165_transitions[] = { dfa165_T8, NULL, dfa165_T11, dfa165_T0, dfa165_T7, dfa165_T13, dfa165_T15, dfa165_T12, dfa165_T1, NULL, NULL, dfa165_T10, dfa165_T14, dfa165_T6, dfa165_T2, dfa165_T3, dfa165_T4, dfa165_T5, dfa165_T9 }; /* Declare tracking structure for Cyclic DFA 165 */ static ANTLR3_CYCLIC_DFA cdfa165 = { 165, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"()+ loopback of 1865:7: ( ( semi uri_parameter ) | ( ( lws )? SEMI ) )+", (CDFA_SPECIAL_FUNC) antlr3dfaspecialStateTransition, /* Default special state transition function */ antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa165_eot, /* EOT table */ dfa165_eof, /* EOF table */ dfa165_min, /* Minimum tokens for each state */ dfa165_max, /* Maximum tokens for each state */ dfa165_accept, /* Accept table */ dfa165_special, /* Special transition states */ dfa165_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 165 * --------------------- *//** Static dfa state tables for Cyclic dfa: * 1868:1: other_param : ( pname | ( pname EQUAL pvalue ) ); */ static const ANTLR3_INT32 dfa166_eot[11] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa166_eof[11] = { -1, 7, 7, 7, 7, 7, -1, -1, -1, -1, 7 }; static const ANTLR3_INT32 dfa166_min[11] = { 4, 4, 4, 4, 4, 4, 13, -1, -1, 13, 4 }; static const ANTLR3_INT32 dfa166_max[11] = { 40, 40, 40, 40, 40, 40, 19, -1, -1, 19, 40 }; static const ANTLR3_INT32 dfa166_accept[11] = { -1, -1, -1, -1, -1, -1, -1, 1, 2, -1, -1 }; static const ANTLR3_INT32 dfa166_special[11] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; /** Used when there is no transition table entry for a particular state */ #define dfa166_T_empty NULL static const ANTLR3_INT32 dfa166_T0[] = { 4, -1, -1, -1, 4, -1, 2, 7, 5, 3, 4, 1, 7, 5, 8, 2, -1, -1, -1, 5, 4, -1, -1, 6, 4, 7, 7, -1, 5, 4, 7, 4, 7, 5, 5, 5, 5 }; static const ANTLR3_INT32 dfa166_T1[] = { 9, -1, -1, -1, -1, -1, 9 }; static const ANTLR3_INT32 dfa166_T2[] = { 4, -1, -1, -1, 4, -1, 2, -1, 5, 3, 4, 1, -1, 5, -1, 2, -1, -1, -1, 5, 4, -1, -1, 6, 4, -1, -1, -1, 5, 4, -1, 4, -1, 5, 5, 5, 5 }; static const ANTLR3_INT32 dfa166_T3[] = { 10, -1, -1, -1, -1, -1, 10 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa166_transitions[] = { dfa166_T2, dfa166_T0, dfa166_T0, dfa166_T0, dfa166_T0, dfa166_T0, dfa166_T1, NULL, NULL, dfa166_T3, dfa166_T0 }; /* Declare tracking structure for Cyclic DFA 166 */ static ANTLR3_CYCLIC_DFA cdfa166 = { 166, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"1868:1: other_param : ( pname | ( pname EQUAL pvalue ) );", (CDFA_SPECIAL_FUNC) antlr3dfaspecialStateTransition, /* Default special state transition function */ antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa166_eot, /* EOT table */ dfa166_eof, /* EOF table */ dfa166_min, /* Minimum tokens for each state */ dfa166_max, /* Maximum tokens for each state */ dfa166_accept, /* Accept table */ dfa166_special, /* Special transition states */ dfa166_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 166 * --------------------- *//** Static dfa state tables for Cyclic dfa: * ()* loopback of 1940:21: ( domainlabel DOT )* */ static const ANTLR3_INT32 dfa177_eot[18] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa177_eof[18] = { -1, -1, -1, -1, 14, 14, -1, 14, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa177_min[18] = { 10, 10, 10, 10, 8, 8, -1, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa177_max[18] = { 19, 19, 19, 19, 36, 36, -1, 36, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa177_accept[18] = { -1, -1, -1, -1, -1, -1, 1, -1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 }; static const ANTLR3_INT32 dfa177_special[18] = { -1, -1, -1, -1, 1, 0, -1, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; /** Used when there is no transition table entry for a particular state */ #define dfa177_T_empty NULL static const ANTLR3_INT32 dfa177_T0[] = { 4, -1, 3, 5, -1, 6, -1, -1, -1, 4 }; static const ANTLR3_INT32 dfa177_T1[] = { 8, 16, 4, 10, 3, 5, -1, 7, 17, -1, -1, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, 13, 15, -1, -1, -1, 11, 12, 9 }; static const ANTLR3_INT32 dfa177_T2[] = { 1, -1, -1, 2, -1, -1, -1, -1, -1, 1 }; static const ANTLR3_INT32 dfa177_T3[] = { 4, -1, 6, 5, -1, -1, -1, -1, -1, 4 }; static const ANTLR3_INT32 dfa177_T4[] = { 8, 16, 6, 10, -1, 6, -1, -1, 17, -1, -1, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, 13, 15, -1, -1, -1, 11, 12, 9 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa177_transitions[] = { dfa177_T2, dfa177_T0, dfa177_T0, dfa177_T3, dfa177_T1, dfa177_T1, NULL, dfa177_T4, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }; static ANTLR3_INT32 dfa177_sst(pbelle_sip_messageParser ctx, pANTLR3_BASE_RECOGNIZER recognizer, pANTLR3_INT_STREAM is, pANTLR3_CYCLIC_DFA dfa, ANTLR3_INT32 s) { ANTLR3_INT32 _s; _s = s; switch (s) { case 0: { ANTLR3_UINT32 LA177_5; ANTLR3_MARKER index177_5; LA177_5 = LA(1); index177_5 = INDEX(); REWINDLAST(); s = -1; if ( (LA177_5 == DOT) ) { s = 7; } else if ( (synpred13_belle_sip_message(ctx)) && (LA177_5 == COLON) ) { s = 8; } else if ( (synpred13_belle_sip_message(ctx)) && (LA177_5 == SP) ) { s = 9; } else if ( (synpred13_belle_sip_message(ctx)) && (LA177_5 == CRLF) ) { s = 10; } else if ( (synpred13_belle_sip_message(ctx)) && (LA177_5 == SEMI) ) { s = 11; } else if ( (synpred13_belle_sip_message(ctx)) && (LA177_5 == SLASH) ) { s = 12; } else if ( (synpred13_belle_sip_message(ctx)) && (LA177_5 == QMARK) ) { s = 13; } else if ( (synpred13_belle_sip_message(ctx)) && (LA177_5 == EOF) ) { s = 14; } else if ( (synpred13_belle_sip_message(ctx)) && (LA177_5 == RAQUOT) ) { s = 15; } else if ( (synpred13_belle_sip_message(ctx)) && (LA177_5 == COMMA) ) { s = 16; } else if ( (synpred13_belle_sip_message(ctx)) && (LA177_5 == DQUOTE) ) { s = 17; } else if ( (LA177_5 == DASH) ) { s = 3; } else if ( (LA177_5 == COMMON_CHAR || LA177_5 == HEX_CHAR) ) { s = 4; } else if ( (LA177_5 == DIGIT) ) { s = 5; } SEEK(index177_5); if ( s>=0 ) { return s; } } break; case 1: { ANTLR3_UINT32 LA177_4; ANTLR3_MARKER index177_4; LA177_4 = LA(1); index177_4 = INDEX(); REWINDLAST(); s = -1; if ( (LA177_4 == DOT) ) { s = 7; } else if ( (synpred13_belle_sip_message(ctx)) && (LA177_4 == COLON) ) { s = 8; } else if ( (synpred13_belle_sip_message(ctx)) && (LA177_4 == SP) ) { s = 9; } else if ( (synpred13_belle_sip_message(ctx)) && (LA177_4 == CRLF) ) { s = 10; } else if ( (synpred13_belle_sip_message(ctx)) && (LA177_4 == SEMI) ) { s = 11; } else if ( (synpred13_belle_sip_message(ctx)) && (LA177_4 == SLASH) ) { s = 12; } else if ( (synpred13_belle_sip_message(ctx)) && (LA177_4 == QMARK) ) { s = 13; } else if ( (synpred13_belle_sip_message(ctx)) && (LA177_4 == EOF) ) { s = 14; } else if ( (synpred13_belle_sip_message(ctx)) && (LA177_4 == RAQUOT) ) { s = 15; } else if ( (synpred13_belle_sip_message(ctx)) && (LA177_4 == COMMA) ) { s = 16; } else if ( (synpred13_belle_sip_message(ctx)) && (LA177_4 == DQUOTE) ) { s = 17; } else if ( (LA177_4 == DASH) ) { s = 3; } else if ( (LA177_4 == COMMON_CHAR || LA177_4 == HEX_CHAR) ) { s = 4; } else if ( (LA177_4 == DIGIT) ) { s = 5; } SEEK(index177_4); if ( s>=0 ) { return s; } } break; case 2: { ANTLR3_UINT32 LA177_7; ANTLR3_MARKER index177_7; LA177_7 = LA(1); index177_7 = INDEX(); REWINDLAST(); s = -1; if ( (synpred13_belle_sip_message(ctx)) && (LA177_7 == COLON) ) { s = 8; } else if ( (synpred13_belle_sip_message(ctx)) && (LA177_7 == SP) ) { s = 9; } else if ( (synpred13_belle_sip_message(ctx)) && (LA177_7 == CRLF) ) { s = 10; } else if ( (synpred13_belle_sip_message(ctx)) && (LA177_7 == SEMI) ) { s = 11; } else if ( (synpred13_belle_sip_message(ctx)) && (LA177_7 == SLASH) ) { s = 12; } else if ( (synpred13_belle_sip_message(ctx)) && (LA177_7 == QMARK) ) { s = 13; } else if ( (synpred13_belle_sip_message(ctx)) && (LA177_7 == EOF) ) { s = 14; } else if ( (synpred13_belle_sip_message(ctx)) && (LA177_7 == RAQUOT) ) { s = 15; } else if ( (synpred13_belle_sip_message(ctx)) && (LA177_7 == COMMA) ) { s = 16; } else if ( (synpred13_belle_sip_message(ctx)) && (LA177_7 == DQUOTE) ) { s = 17; } else if ( (LA177_7 == COMMON_CHAR || LA177_7 == DIGIT || LA177_7 == HEX_CHAR) ) { s = 6; } SEEK(index177_7); if ( s>=0 ) { return s; } } break; } if (BACKTRACKING > 0) { FAILEDFLAG = ANTLR3_TRUE; return -1; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)"()* loopback of 1940:21: ( domainlabel DOT )*"; EXCEPTION->decisionNum = 177; EXCEPTION->state = _s; return -1; } /* Declare tracking structure for Cyclic DFA 177 */ static ANTLR3_CYCLIC_DFA cdfa177 = { 177, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"()* loopback of 1940:21: ( domainlabel DOT )*", (CDFA_SPECIAL_FUNC) dfa177_sst, antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa177_eot, /* EOT table */ dfa177_eof, /* EOF table */ dfa177_min, /* Minimum tokens for each state */ dfa177_max, /* Maximum tokens for each state */ dfa177_accept, /* Accept table */ dfa177_special, /* Special transition states */ dfa177_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 177 * --------------------- *//** Static dfa state tables for Cyclic dfa: * 1947:1: ipv6address : ( hexpart ( COLON ipv4address )? | ( hexseq )? COLON COLON ipv4address ); */ static const ANTLR3_INT32 dfa185_eot[18] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa185_eof[18] = { -1, 4, -1, -1, -1, 4, 4, 4, 4, 4, 4, 4, 4, -1, 4, 4, 4, 4 }; static const ANTLR3_INT32 dfa185_min[18] = { 8, 8, 8, 8, -1, 8, 8, 8, 8, 8, 8, 8, 8, -1, 8, 8, 8, 8 }; static const ANTLR3_INT32 dfa185_max[18] = { 19, 36, 8, 19, -1, 36, 36, 36, 36, 36, 36, 36, 36, -1, 36, 36, 36, 36 }; static const ANTLR3_INT32 dfa185_accept[18] = { -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, 2, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa185_special[18] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; /** Used when there is no transition table entry for a particular state */ #define dfa185_T_empty NULL static const ANTLR3_INT32 dfa185_T0[] = { 4, 4, -1, 4, -1, 16, -1, 13, -1, -1, -1, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, 4, -1, 4 }; static const ANTLR3_INT32 dfa185_T1[] = { 4, 4, -1, 4, -1, 14, -1, 13, -1, -1, -1, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, 4, -1, 4 }; static const ANTLR3_INT32 dfa185_T2[] = { 2, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, 1 }; static const ANTLR3_INT32 dfa185_T3[] = { 3, 4, -1, 4, -1, 15, -1, 4, -1, -1, -1, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, 4, -1, 4 }; static const ANTLR3_INT32 dfa185_T4[] = { 4, 4, -1, 4, -1, 4, -1, 13, -1, -1, -1, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, 4, -1, 4 }; static const ANTLR3_INT32 dfa185_T5[] = { 4, 4, -1, 4, -1, 9, -1, -1, -1, -1, -1, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, 4, -1, 4 }; static const ANTLR3_INT32 dfa185_T6[] = { 3, 4, -1, 4, -1, 8, -1, 4, -1, -1, -1, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, 4, -1, 4 }; static const ANTLR3_INT32 dfa185_T7[] = { 4, 4, -1, 4, -1, 12, -1, 13, -1, -1, -1, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, 4, -1, 4 }; static const ANTLR3_INT32 dfa185_T8[] = { 6, -1, -1, -1, -1, 7, -1, -1, -1, -1, -1, 8 }; static const ANTLR3_INT32 dfa185_T9[] = { 4, 4, -1, 4, -1, 17, -1, 13, -1, -1, -1, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, 4, -1, 4 }; static const ANTLR3_INT32 dfa185_T10[] = { 3, 4, -1, 4, -1, 8, -1, -1, -1, -1, -1, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, 4, -1, 4 }; static const ANTLR3_INT32 dfa185_T11[] = { 3, 4, -1, 4, -1, 11, -1, 4, -1, -1, -1, 8, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, 4, -1, 4 }; static const ANTLR3_INT32 dfa185_T12[] = { 4, 4, -1, 4, -1, 10, -1, -1, -1, -1, -1, 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, 4, -1, 4 }; static const ANTLR3_INT32 dfa185_T13[] = { 5 }; static const ANTLR3_INT32 dfa185_T14[] = { 3, 4, -1, 4, -1, 1, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, 4, -1, 4 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa185_transitions[] = { dfa185_T2, dfa185_T14, dfa185_T13, dfa185_T8, NULL, dfa185_T5, dfa185_T12, dfa185_T11, dfa185_T10, dfa185_T7, dfa185_T1, dfa185_T3, dfa185_T0, NULL, dfa185_T9, dfa185_T6, dfa185_T4, dfa185_T4 }; /* Declare tracking structure for Cyclic DFA 185 */ static ANTLR3_CYCLIC_DFA cdfa185 = { 185, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"1947:1: ipv6address : ( hexpart ( COLON ipv4address )? | ( hexseq )? COLON COLON ipv4address );", (CDFA_SPECIAL_FUNC) antlr3dfaspecialStateTransition, /* Default special state transition function */ antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa185_eot, /* EOT table */ dfa185_eof, /* EOF table */ dfa185_min, /* Minimum tokens for each state */ dfa185_max, /* Maximum tokens for each state */ dfa185_accept, /* Accept table */ dfa185_special, /* Special transition states */ dfa185_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 185 * --------------------- *//** Static dfa state tables for Cyclic dfa: * 1948:1: hexpart : ( hexseq | hexseq COLON COLON ( hexseq )? | COLON COLON ( hexseq )? ); */ static const ANTLR3_INT32 dfa188_eot[10] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa188_eof[10] = { -1, 4, -1, -1, -1, -1, 4, 4, 4, 4 }; static const ANTLR3_INT32 dfa188_min[10] = { 8, 8, -1, 8, -1, -1, 8, 8, 8, 8 }; static const ANTLR3_INT32 dfa188_max[10] = { 19, 36, -1, 19, -1, -1, 36, 36, 36, 36 }; static const ANTLR3_INT32 dfa188_accept[10] = { -1, -1, 3, -1, 1, 2, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa188_special[10] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; /** Used when there is no transition table entry for a particular state */ #define dfa188_T_empty NULL static const ANTLR3_INT32 dfa188_T0[] = { 2, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, 1 }; static const ANTLR3_INT32 dfa188_T1[] = { 5, -1, -1, -1, -1, 6, -1, -1, -1, -1, -1, 7 }; static const ANTLR3_INT32 dfa188_T2[] = { 3, 4, -1, 4, -1, 7, -1, -1, -1, -1, -1, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, 4, -1, 4 }; static const ANTLR3_INT32 dfa188_T3[] = { 3, 4, -1, 4, -1, 1, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, 4, -1, 4 }; static const ANTLR3_INT32 dfa188_T4[] = { 3, 4, -1, 4, -1, 9, -1, 4, -1, -1, -1, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, 4, -1, 4 }; static const ANTLR3_INT32 dfa188_T5[] = { 3, 4, -1, 4, -1, 8, -1, 4, -1, -1, -1, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, 4, -1, 4 }; static const ANTLR3_INT32 dfa188_T6[] = { 3, 4, -1, 4, -1, 7, -1, 4, -1, -1, -1, 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 4, 4, -1, 4 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa188_transitions[] = { dfa188_T0, dfa188_T3, NULL, dfa188_T1, NULL, NULL, dfa188_T5, dfa188_T2, dfa188_T4, dfa188_T6 }; /* Declare tracking structure for Cyclic DFA 188 */ static ANTLR3_CYCLIC_DFA cdfa188 = { 188, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"1948:1: hexpart : ( hexseq | hexseq COLON COLON ( hexseq )? | COLON COLON ( hexseq )? );", (CDFA_SPECIAL_FUNC) antlr3dfaspecialStateTransition, /* Default special state transition function */ antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa188_eot, /* EOT table */ dfa188_eof, /* EOF table */ dfa188_min, /* Minimum tokens for each state */ dfa188_max, /* Maximum tokens for each state */ dfa188_accept, /* Accept table */ dfa188_special, /* Special transition states */ dfa188_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 188 * --------------------- *//** Static dfa state tables for Cyclic dfa: * 2000:1: lws : ( ( ( SP )* CRLF ( SP )+ ) | ( SP )+ ); */ static const ANTLR3_INT32 dfa215_eot[5] = { -1, -1, -1, -1, -1 }; static const ANTLR3_INT32 dfa215_eof[5] = { -1, 4, -1, -1, -1 }; static const ANTLR3_INT32 dfa215_min[5] = { 11, 4, -1, 6, -1 }; static const ANTLR3_INT32 dfa215_max[5] = { 36, 40, -1, 40, -1 }; static const ANTLR3_INT32 dfa215_accept[5] = { -1, -1, 1, -1, 2 }; static const ANTLR3_INT32 dfa215_special[5] = { -1, -1, -1, -1, -1 }; /** Used when there is no transition table entry for a particular state */ #define dfa215_T_empty NULL static const ANTLR3_INT32 dfa215_T0[] = { 4, -1, -1, -1, 4, 4, 4, 4, -1, 4, -1, 4, -1, 4, -1, -1, -1, 4, -1, -1, -1, 4, 4, -1, -1, -1, 4, -1, -1, -1, 2, 4, 4, 4, 4 }; static const ANTLR3_INT32 dfa215_T1[] = { 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1 }; static const ANTLR3_INT32 dfa215_T2[] = { 4, 4, 4, 4, 4, 4, 4, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, 4, 4, 4 }; /* Transition tables are a table of sub tables, with some tables * reused for efficiency. */ static const ANTLR3_INT32 * const dfa215_transitions[] = { dfa215_T1, dfa215_T2, NULL, dfa215_T0, NULL }; /* Declare tracking structure for Cyclic DFA 215 */ static ANTLR3_CYCLIC_DFA cdfa215 = { 215, /* Decision number of this dfa */ /* Which decision this represents: */ (const pANTLR3_UCHAR)"2000:1: lws : ( ( ( SP )* CRLF ( SP )+ ) | ( SP )+ );", (CDFA_SPECIAL_FUNC) antlr3dfaspecialStateTransition, /* Default special state transition function */ antlr3dfaspecialTransition, /* DFA specialTransition is currently just a default function in the runtime */ antlr3dfapredict, /* DFA simulator function is in the runtime */ dfa215_eot, /* EOT table */ dfa215_eof, /* EOF table */ dfa215_min, /* Minimum tokens for each state */ dfa215_max, /* Maximum tokens for each state */ dfa215_accept, /* Accept table */ dfa215_special, /* Special transition states */ dfa215_transitions /* Table of transition tables */ }; /* End of Cyclic DFA 215 * --------------------- */ /* ========================================================================= * End of DFA tables for the parser */ /* ============================================== * Parsing rules */ /** * $ANTLR start message * ../grammars/belle_sip_message.g:99:1: message returns [belle_sip_message_t* ret] : message_raw[&($message::message_length)] ; */ static belle_sip_message_t* message(pbelle_sip_messageParser ctx) { belle_sip_message_t* ret; belle_sip_message_t* message_raw1; #undef RETURN_TYPE_message_raw1 #define RETURN_TYPE_message_raw1 belle_sip_message_t* /* Initialize rule variables */ ctx->pbelle_sip_messageParser_messageTop = pbelle_sip_messageParser_messagePush(ctx); ret=NULL; { // ../grammars/belle_sip_message.g:102:3: ( message_raw[&($message::message_length)] ) // ../grammars/belle_sip_message.g:102:5: message_raw[&($message::message_length)] { FOLLOWPUSH(FOLLOW_message_raw_in_message73); message_raw1=message_raw(ctx, &((SCOPE_TOP(message))->message_length)); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulemessageEx; } if (HASFAILED()) { pbelle_sip_messageParser_messagePop(ctx); return ret; } if ( BACKTRACKING==0 ) { ret= message_raw1 ; } } } // This is where rules clean up and exit // goto rulemessageEx; /* Prevent compiler warnings */ rulemessageEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } pbelle_sip_messageParser_messagePop(ctx); return ret; } /* $ANTLR end message */ /** * $ANTLR start message_raw * ../grammars/belle_sip_message.g:104:1: message_raw[size_t* length] returns [belle_sip_message_t* ret] : ( common_request | common_response ); */ static belle_sip_message_t* message_raw(pbelle_sip_messageParser ctx, size_t* length) { belle_sip_message_t* ret; belle_sip_message_t* common_request2; #undef RETURN_TYPE_common_request2 #define RETURN_TYPE_common_request2 belle_sip_message_t* belle_sip_message_t* common_response3; #undef RETURN_TYPE_common_response3 #define RETURN_TYPE_common_response3 belle_sip_message_t* /* Initialize rule variables */ ctx->pbelle_sip_messageParser_message_rawTop = pbelle_sip_messageParser_message_rawPush(ctx); (SCOPE_TOP(message_raw))->message_length=length; ret=NULL; { { // ../grammars/belle_sip_message.g:107:2: ( common_request | common_response ) ANTLR3_UINT32 alt1; alt1=2; alt1 = cdfa1.predict(ctx, RECOGNIZER, ISTREAM, &cdfa1); if (HASEXCEPTION()) { goto rulemessage_rawEx; } if (HASFAILED()) { pbelle_sip_messageParser_message_rawPop(ctx); return ret; } switch (alt1) { case 1: // ../grammars/belle_sip_message.g:107:5: common_request { FOLLOWPUSH(FOLLOW_common_request_in_message_raw102); common_request2=common_request(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulemessage_rawEx; } if (HASFAILED()) { pbelle_sip_messageParser_message_rawPop(ctx); return ret; } if ( BACKTRACKING==0 ) { ret= common_request2 ; } } break; case 2: // ../grammars/belle_sip_message.g:108:7: common_response { FOLLOWPUSH(FOLLOW_common_response_in_message_raw112); common_response3=common_response(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulemessage_rawEx; } if (HASFAILED()) { pbelle_sip_messageParser_message_rawPop(ctx); return ret; } if ( BACKTRACKING==0 ) { ret= common_response3 ; } } break; } } } // This is where rules clean up and exit // goto rulemessage_rawEx; /* Prevent compiler warnings */ rulemessage_rawEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } pbelle_sip_messageParser_message_rawPop(ctx); return ret; } /* $ANTLR end message_raw */ /** * $ANTLR start request * ../grammars/belle_sip_message.g:110:1: request returns [belle_sip_request_t* ret=NULL] : common_request ; */ static belle_sip_request_t* request(pbelle_sip_messageParser ctx) { belle_sip_request_t* ret; belle_sip_message_t* common_request4; #undef RETURN_TYPE_common_request4 #define RETURN_TYPE_common_request4 belle_sip_message_t* /* Initialize rule variables */ ret = NULL; { // ../grammars/belle_sip_message.g:111:3: ( common_request ) // ../grammars/belle_sip_message.g:111:4: common_request { FOLLOWPUSH(FOLLOW_common_request_in_request128); common_request4=common_request(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulerequestEx; } if (HASFAILED()) { return ret; } if ( BACKTRACKING==0 ) { ret=BELLE_SIP_REQUEST( common_request4 ); } } } // This is where rules clean up and exit // goto rulerequestEx; /* Prevent compiler warnings */ rulerequestEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ret; } /* $ANTLR end request */ /** * $ANTLR start common_request * ../grammars/belle_sip_message.g:114:1: common_request returns [belle_sip_message_t* ret] : ( ( (~ ( CRLF ) )* sip_version CRLF )=> request_line | ( (~ ( CRLF ) )* http_version CRLF )=> http_request_line ) ( message_header[BELLE_SIP_MESSAGE($common_request::current)] )+ last_crlf= CRLF ; */ static belle_sip_message_t* common_request(pbelle_sip_messageParser ctx) { belle_sip_message_t* ret; pANTLR3_COMMON_TOKEN last_crlf; belle_sip_request_t* request_line5; #undef RETURN_TYPE_request_line5 #define RETURN_TYPE_request_line5 belle_sip_request_t* belle_http_request_t * http_request_line6; #undef RETURN_TYPE_http_request_line6 #define RETURN_TYPE_http_request_line6 belle_http_request_t * /* Initialize rule variables */ ctx->pbelle_sip_messageParser_common_requestTop = pbelle_sip_messageParser_common_requestPush(ctx); ret=(SCOPE_TOP(common_request))->current=NULL; last_crlf = NULL; { // ../grammars/belle_sip_message.g:117:2: ( ( ( (~ ( CRLF ) )* sip_version CRLF )=> request_line | ( (~ ( CRLF ) )* http_version CRLF )=> http_request_line ) ( message_header[BELLE_SIP_MESSAGE($common_request::current)] )+ last_crlf= CRLF ) // ../grammars/belle_sip_message.g:117:6: ( ( (~ ( CRLF ) )* sip_version CRLF )=> request_line | ( (~ ( CRLF ) )* http_version CRLF )=> http_request_line ) ( message_header[BELLE_SIP_MESSAGE($common_request::current)] )+ last_crlf= CRLF { // ../grammars/belle_sip_message.g:117:6: ( ( (~ ( CRLF ) )* sip_version CRLF )=> request_line | ( (~ ( CRLF ) )* http_version CRLF )=> http_request_line ) { int alt2=2; alt2 = cdfa2.predict(ctx, RECOGNIZER, ISTREAM, &cdfa2); if (HASEXCEPTION()) { goto rulecommon_requestEx; } if (HASFAILED()) { pbelle_sip_messageParser_common_requestPop(ctx); return ret; } switch (alt2) { case 1: // ../grammars/belle_sip_message.g:117:9: ( (~ ( CRLF ) )* sip_version CRLF )=> request_line { FOLLOWPUSH(FOLLOW_request_line_in_common_request174); request_line5=request_line(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulecommon_requestEx; } if (HASFAILED()) { pbelle_sip_messageParser_common_requestPop(ctx); return ret; } if ( BACKTRACKING==0 ) { ret=(SCOPE_TOP(common_request))->current=BELLE_SIP_MESSAGE( request_line5 ); } } break; case 2: // ../grammars/belle_sip_message.g:118:8: ( (~ ( CRLF ) )* http_version CRLF )=> http_request_line { FOLLOWPUSH(FOLLOW_http_request_line_in_common_request202); http_request_line6=http_request_line(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulecommon_requestEx; } if (HASFAILED()) { pbelle_sip_messageParser_common_requestPop(ctx); return ret; } if ( BACKTRACKING==0 ) { ret=(SCOPE_TOP(common_request))->current=BELLE_SIP_MESSAGE( http_request_line6 ); } } break; } } // ../grammars/belle_sip_message.g:119:3: ( message_header[BELLE_SIP_MESSAGE($common_request::current)] )+ { int cnt3=0; for (;;) { int alt3=2; switch ( LA(1) ) { case BQUOTE: case COMMON_CHAR: case DASH: case DIGIT: case DOT: case EMARK: case HEX_CHAR: case LPAREN: case PERCENT: case PLUS: case RPAREN: case SQUOTE: case STAR: case TILDE: case USCORE: { alt3=1; } break; } switch (alt3) { case 1: // ../grammars/belle_sip_message.g:119:3: message_header[BELLE_SIP_MESSAGE($common_request::current)] { FOLLOWPUSH(FOLLOW_message_header_in_common_request208); message_header(ctx, BELLE_SIP_MESSAGE((SCOPE_TOP(common_request))->current)); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulecommon_requestEx; } if (HASFAILED()) { pbelle_sip_messageParser_common_requestPop(ctx); return ret; } } break; default: if ( cnt3 >= 1 ) { goto loop3; } if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_common_requestPop(ctx); return ret; } /* mismatchedSetEx() */ CONSTRUCTEX(); EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME; goto rulecommon_requestEx; } cnt3++; } loop3: ; /* Jump to here if this rule does not match */ } last_crlf = (pANTLR3_COMMON_TOKEN) MATCHT(CRLF, &FOLLOW_CRLF_in_common_request214); if (HASEXCEPTION()) { goto rulecommon_requestEx; } if (HASFAILED()) { pbelle_sip_messageParser_common_requestPop(ctx); return ret; } if ( BACKTRACKING==0 ) { *((SCOPE_TOP(message_raw))->message_length)=last_crlf->user1; } } } // This is where rules clean up and exit // goto rulecommon_requestEx; /* Prevent compiler warnings */ rulecommon_requestEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } pbelle_sip_messageParser_common_requestPop(ctx); return ret; } /* $ANTLR end common_request */ /** * $ANTLR start request_line * ../grammars/belle_sip_message.g:121:1: request_line returns [belle_sip_request_t* ret=NULL] : method SP ( uri | generic_uri ) SP sip_version CRLF ; */ static belle_sip_request_t* request_line(pbelle_sip_messageParser ctx) { belle_sip_request_t* ret; belle_sip_messageParser_method_return method7; #undef RETURN_TYPE_method7 #define RETURN_TYPE_method7 belle_sip_messageParser_method_return belle_sip_uri_t* uri8; #undef RETURN_TYPE_uri8 #define RETURN_TYPE_uri8 belle_sip_uri_t* belle_generic_uri_t* generic_uri9; #undef RETURN_TYPE_generic_uri9 #define RETURN_TYPE_generic_uri9 belle_generic_uri_t* /* Initialize rule variables */ ret = NULL; ctx->pbelle_sip_messageParser_request_lineTop = pbelle_sip_messageParser_request_linePush(ctx); (SCOPE_TOP(request_line))->current= belle_sip_request_new(); ret=(SCOPE_TOP(request_line))->current; { // ../grammars/belle_sip_message.g:124:2: ( method SP ( uri | generic_uri ) SP sip_version CRLF ) // ../grammars/belle_sip_message.g:124:6: method SP ( uri | generic_uri ) SP sip_version CRLF { FOLLOWPUSH(FOLLOW_method_in_request_line244); method7=method(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulerequest_lineEx; } if (HASFAILED()) { pbelle_sip_messageParser_request_linePop(ctx); return ret; } if ( BACKTRACKING==0 ) { belle_sip_request_set_method((SCOPE_TOP(request_line))->current,(const char*)( (STRSTREAM->toStringTT(STRSTREAM, method7.start, method7.stop)) ->chars)); } MATCHT(SP, &FOLLOW_SP_in_request_line253); if (HASEXCEPTION()) { goto rulerequest_lineEx; } if (HASFAILED()) { pbelle_sip_messageParser_request_linePop(ctx); return ret; } // ../grammars/belle_sip_message.g:126:6: ( uri | generic_uri ) { int alt4=2; alt4 = cdfa4.predict(ctx, RECOGNIZER, ISTREAM, &cdfa4); if (HASEXCEPTION()) { goto rulerequest_lineEx; } if (HASFAILED()) { pbelle_sip_messageParser_request_linePop(ctx); return ret; } switch (alt4) { case 1: // ../grammars/belle_sip_message.g:126:8: uri { FOLLOWPUSH(FOLLOW_uri_in_request_line262); uri8=uri(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulerequest_lineEx; } if (HASFAILED()) { pbelle_sip_messageParser_request_linePop(ctx); return ret; } if ( BACKTRACKING==0 ) { belle_sip_request_set_uri((SCOPE_TOP(request_line))->current, uri8 ); } } break; case 2: // ../grammars/belle_sip_message.g:128:7: generic_uri { FOLLOWPUSH(FOLLOW_generic_uri_in_request_line280); generic_uri9=generic_uri(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulerequest_lineEx; } if (HASFAILED()) { pbelle_sip_messageParser_request_linePop(ctx); return ret; } if ( BACKTRACKING==0 ) { belle_sip_request_set_absolute_uri((SCOPE_TOP(request_line))->current, generic_uri9 ); } } break; } } MATCHT(SP, &FOLLOW_SP_in_request_line297); if (HASEXCEPTION()) { goto rulerequest_lineEx; } if (HASFAILED()) { pbelle_sip_messageParser_request_linePop(ctx); return ret; } FOLLOWPUSH(FOLLOW_sip_version_in_request_line304); sip_version(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulerequest_lineEx; } if (HASFAILED()) { pbelle_sip_messageParser_request_linePop(ctx); return ret; } MATCHT(CRLF, &FOLLOW_CRLF_in_request_line311); if (HASEXCEPTION()) { goto rulerequest_lineEx; } if (HASFAILED()) { pbelle_sip_messageParser_request_linePop(ctx); return ret; } } } // This is where rules clean up and exit // goto rulerequest_lineEx; /* Prevent compiler warnings */ rulerequest_lineEx: ; if (HASEXCEPTION()) { /* catch(decl,action) */ { belle_sip_message("[%s] reason [%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref((SCOPE_TOP(request_line))->current); ret=NULL; } } else { } pbelle_sip_messageParser_request_linePop(ctx); return ret; } /* $ANTLR end request_line */ /** * $ANTLR start sip_version * ../grammars/belle_sip_message.g:139:1: sip_version :{...}? generic_version ; */ static void sip_version(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:140:2: ({...}? generic_version ) // ../grammars/belle_sip_message.g:140:5: {...}? generic_version { if ( !((IS_TOKEN(SIP/))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(SIP/)"; EXCEPTION->ruleName = (void *)"sip_version"; } FOLLOWPUSH(FOLLOW_generic_version_in_sip_version329); generic_version(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesip_versionEx; } if (HASFAILED()) { return ; } } } // This is where rules clean up and exit // goto rulesip_versionEx; /* Prevent compiler warnings */ rulesip_versionEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end sip_version */ /** * $ANTLR start generic_version * ../grammars/belle_sip_message.g:143:1: generic_version : ( alpha )+ SLASH DIGIT DOT DIGIT ; */ static void generic_version(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:143:16: ( ( alpha )+ SLASH DIGIT DOT DIGIT ) // ../grammars/belle_sip_message.g:143:18: ( alpha )+ SLASH DIGIT DOT DIGIT { // ../grammars/belle_sip_message.g:143:18: ( alpha )+ { int cnt5=0; for (;;) { int alt5=2; switch ( LA(1) ) { case COMMON_CHAR: case HEX_CHAR: { alt5=1; } break; } switch (alt5) { case 1: // ../grammars/belle_sip_message.g:143:18: alpha { FOLLOWPUSH(FOLLOW_alpha_in_generic_version338); alpha(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulegeneric_versionEx; } if (HASFAILED()) { return ; } } break; default: if ( cnt5 >= 1 ) { goto loop5; } if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } /* mismatchedSetEx() */ CONSTRUCTEX(); EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME; goto rulegeneric_versionEx; } cnt5++; } loop5: ; /* Jump to here if this rule does not match */ } MATCHT(SLASH, &FOLLOW_SLASH_in_generic_version341); if (HASEXCEPTION()) { goto rulegeneric_versionEx; } if (HASFAILED()) { return ; } MATCHT(DIGIT, &FOLLOW_DIGIT_in_generic_version343); if (HASEXCEPTION()) { goto rulegeneric_versionEx; } if (HASFAILED()) { return ; } MATCHT(DOT, &FOLLOW_DOT_in_generic_version345); if (HASEXCEPTION()) { goto rulegeneric_versionEx; } if (HASFAILED()) { return ; } MATCHT(DIGIT, &FOLLOW_DIGIT_in_generic_version347); if (HASEXCEPTION()) { goto rulegeneric_versionEx; } if (HASFAILED()) { return ; } } } // This is where rules clean up and exit // goto rulegeneric_versionEx; /* Prevent compiler warnings */ rulegeneric_versionEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end generic_version */ /** * $ANTLR start message_header * ../grammars/belle_sip_message.g:145:1: message_header[belle_sip_message_t* message] : ( header_extension_base[(BELLE_SIP_OBJECT_IS_INSTANCE_OF($message,belle_http_request_t) ||BELLE_SIP_OBJECT_IS_INSTANCE_OF($message,belle_http_response_t)) ] ) CRLF ; */ static void message_header(pbelle_sip_messageParser ctx, belle_sip_message_t* message) { belle_sip_header_t* header_extension_base10; #undef RETURN_TYPE_header_extension_base10 #define RETURN_TYPE_header_extension_base10 belle_sip_header_t* /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:147:2: ( ( header_extension_base[(BELLE_SIP_OBJECT_IS_INSTANCE_OF($message,belle_http_request_t) ||BELLE_SIP_OBJECT_IS_INSTANCE_OF($message,belle_http_response_t)) ] ) CRLF ) // ../grammars/belle_sip_message.g:147:15: ( header_extension_base[(BELLE_SIP_OBJECT_IS_INSTANCE_OF($message,belle_http_request_t) ||BELLE_SIP_OBJECT_IS_INSTANCE_OF($message,belle_http_response_t)) ] ) CRLF { // ../grammars/belle_sip_message.g:147:15: ( header_extension_base[(BELLE_SIP_OBJECT_IS_INSTANCE_OF($message,belle_http_request_t) ||BELLE_SIP_OBJECT_IS_INSTANCE_OF($message,belle_http_response_t)) ] ) // ../grammars/belle_sip_message.g:193:19: header_extension_base[(BELLE_SIP_OBJECT_IS_INSTANCE_OF($message,belle_http_request_t) ||BELLE_SIP_OBJECT_IS_INSTANCE_OF($message,belle_http_response_t)) ] { FOLLOWPUSH(FOLLOW_header_extension_base_in_message_header423); header_extension_base10=header_extension_base(ctx, (BELLE_SIP_OBJECT_IS_INSTANCE_OF(message,belle_http_request_t) ||BELLE_SIP_OBJECT_IS_INSTANCE_OF(message,belle_http_response_t))); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulemessage_headerEx; } if (HASFAILED()) { return ; } if ( BACKTRACKING==0 ) { belle_sip_header_t* lheader = BELLE_SIP_HEADER(header_extension_base10 ); do { if (lheader == NULL) break; /*sanity check*/ belle_sip_message_add_header(message,lheader); } while((lheader=belle_sip_header_get_next(lheader)) != NULL); } } MATCHT(CRLF, &FOLLOW_CRLF_in_message_header446); if (HASEXCEPTION()) { goto rulemessage_headerEx; } if (HASFAILED()) { return ; } } } // This is where rules clean up and exit // goto rulemessage_headerEx; /* Prevent compiler warnings */ rulemessage_headerEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end message_header */ /** * $ANTLR start method * ../grammars/belle_sip_message.g:216:1: method : extension_method ; */ static belle_sip_messageParser_method_return method(pbelle_sip_messageParser ctx) { belle_sip_messageParser_method_return retval; /* Initialize rule variables */ retval.start = LT(1); retval.stop = retval.start; { // ../grammars/belle_sip_message.g:216:9: ( extension_method ) // ../grammars/belle_sip_message.g:216:81: extension_method { FOLLOWPUSH(FOLLOW_extension_method_in_method485); extension_method(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulemethodEx; } if (HASFAILED()) { return retval; } } } // This is where rules clean up and exit // goto rulemethodEx; /* Prevent compiler warnings */ rulemethodEx: ; retval.stop = LT(-1); if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end method */ /** * $ANTLR start extension_method * ../grammars/belle_sip_message.g:218:1: extension_method : token ; */ static void extension_method(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:219:2: ( token ) // ../grammars/belle_sip_message.g:219:6: token { FOLLOWPUSH(FOLLOW_token_in_extension_method497); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleextension_methodEx; } if (HASFAILED()) { return ; } } } // This is where rules clean up and exit // goto ruleextension_methodEx; /* Prevent compiler warnings */ ruleextension_methodEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end extension_method */ /** * $ANTLR start common_response * ../grammars/belle_sip_message.g:221:1: common_response returns [belle_sip_message_t* ret=NULL] : ( ( sip_version (~ ( CRLF ) )* CRLF )=> status_line | ( http_version (~ ( CRLF ) )* CRLF )=> http_status_line ) ( ( message_header[BELLE_SIP_MESSAGE($ret)] )+ last_crlf= CRLF )? ; */ static belle_sip_message_t* common_response(pbelle_sip_messageParser ctx) { belle_sip_message_t* ret; pANTLR3_COMMON_TOKEN last_crlf; belle_sip_response_t* status_line11; #undef RETURN_TYPE_status_line11 #define RETURN_TYPE_status_line11 belle_sip_response_t* belle_http_response_t* http_status_line12; #undef RETURN_TYPE_http_status_line12 #define RETURN_TYPE_http_status_line12 belle_http_response_t* /* Initialize rule variables */ ret = NULL; last_crlf = NULL; { // ../grammars/belle_sip_message.g:222:3: ( ( ( sip_version (~ ( CRLF ) )* CRLF )=> status_line | ( http_version (~ ( CRLF ) )* CRLF )=> http_status_line ) ( ( message_header[BELLE_SIP_MESSAGE($ret)] )+ last_crlf= CRLF )? ) // ../grammars/belle_sip_message.g:222:7: ( ( sip_version (~ ( CRLF ) )* CRLF )=> status_line | ( http_version (~ ( CRLF ) )* CRLF )=> http_status_line ) ( ( message_header[BELLE_SIP_MESSAGE($ret)] )+ last_crlf= CRLF )? { // ../grammars/belle_sip_message.g:222:7: ( ( sip_version (~ ( CRLF ) )* CRLF )=> status_line | ( http_version (~ ( CRLF ) )* CRLF )=> http_status_line ) { int alt6=2; alt6 = cdfa6.predict(ctx, RECOGNIZER, ISTREAM, &cdfa6); if (HASEXCEPTION()) { goto rulecommon_responseEx; } if (HASFAILED()) { return ret; } switch (alt6) { case 1: // ../grammars/belle_sip_message.g:222:11: ( sip_version (~ ( CRLF ) )* CRLF )=> status_line { FOLLOWPUSH(FOLLOW_status_line_in_common_response533); status_line11=status_line(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulecommon_responseEx; } if (HASFAILED()) { return ret; } if ( BACKTRACKING==0 ) { ret=BELLE_SIP_MESSAGE( status_line11 ); } } break; case 2: // ../grammars/belle_sip_message.g:223:11: ( http_version (~ ( CRLF ) )* CRLF )=> http_status_line { FOLLOWPUSH(FOLLOW_http_status_line_in_common_response564); http_status_line12=http_status_line(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulecommon_responseEx; } if (HASFAILED()) { return ret; } if ( BACKTRACKING==0 ) { ret=BELLE_SIP_MESSAGE( http_status_line12 ); } } break; } } // ../grammars/belle_sip_message.g:224:3: ( ( message_header[BELLE_SIP_MESSAGE($ret)] )+ last_crlf= CRLF )? { int alt8=2; switch ( LA(1) ) { case BQUOTE: case COMMON_CHAR: case DASH: case DIGIT: case DOT: case EMARK: case HEX_CHAR: case LPAREN: case PERCENT: case PLUS: case RPAREN: case SQUOTE: case STAR: case TILDE: case USCORE: { alt8=1; } break; } switch (alt8) { case 1: // ../grammars/belle_sip_message.g:224:4: ( message_header[BELLE_SIP_MESSAGE($ret)] )+ last_crlf= CRLF { // ../grammars/belle_sip_message.g:224:4: ( message_header[BELLE_SIP_MESSAGE($ret)] )+ { int cnt7=0; for (;;) { int alt7=2; switch ( LA(1) ) { case BQUOTE: case COMMON_CHAR: case DASH: case DIGIT: case DOT: case EMARK: case HEX_CHAR: case LPAREN: case PERCENT: case PLUS: case RPAREN: case SQUOTE: case STAR: case TILDE: case USCORE: { alt7=1; } break; } switch (alt7) { case 1: // ../grammars/belle_sip_message.g:224:4: message_header[BELLE_SIP_MESSAGE($ret)] { FOLLOWPUSH(FOLLOW_message_header_in_common_response571); message_header(ctx, BELLE_SIP_MESSAGE( ret )); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulecommon_responseEx; } if (HASFAILED()) { return ret; } } break; default: if ( cnt7 >= 1 ) { goto loop7; } if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ret; } /* mismatchedSetEx() */ CONSTRUCTEX(); EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME; goto rulecommon_responseEx; } cnt7++; } loop7: ; /* Jump to here if this rule does not match */ } last_crlf = (pANTLR3_COMMON_TOKEN) MATCHT(CRLF, &FOLLOW_CRLF_in_common_response577); if (HASEXCEPTION()) { goto rulecommon_responseEx; } if (HASFAILED()) { return ret; } if ( BACKTRACKING==0 ) { *((SCOPE_TOP(message_raw))->message_length)=last_crlf->user1; } } break; } } } } // This is where rules clean up and exit // goto rulecommon_responseEx; /* Prevent compiler warnings */ rulecommon_responseEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ret; } /* $ANTLR end common_response */ /** * $ANTLR start response * ../grammars/belle_sip_message.g:226:1: response returns [belle_sip_response_t* ret=NULL] : common_response ; */ static belle_sip_response_t* response(pbelle_sip_messageParser ctx) { belle_sip_response_t* ret; belle_sip_message_t* common_response13; #undef RETURN_TYPE_common_response13 #define RETURN_TYPE_common_response13 belle_sip_message_t* /* Initialize rule variables */ ret = NULL; { // ../grammars/belle_sip_message.g:227:2: ( common_response ) // ../grammars/belle_sip_message.g:227:6: common_response { FOLLOWPUSH(FOLLOW_common_response_in_response601); common_response13=common_response(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleresponseEx; } if (HASFAILED()) { return ret; } if ( BACKTRACKING==0 ) { ret=BELLE_SIP_RESPONSE( common_response13 ); } } } // This is where rules clean up and exit // goto ruleresponseEx; /* Prevent compiler warnings */ ruleresponseEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ret; } /* $ANTLR end response */ /** * $ANTLR start status_line * ../grammars/belle_sip_message.g:229:1: status_line returns [belle_sip_response_t* ret=NULL] : sip_version SP status_code SP reason_phrase CRLF ; */ static belle_sip_response_t* status_line(pbelle_sip_messageParser ctx) { belle_sip_response_t* ret; belle_sip_messageParser_status_code_return status_code14; #undef RETURN_TYPE_status_code14 #define RETURN_TYPE_status_code14 belle_sip_messageParser_status_code_return belle_sip_messageParser_reason_phrase_return reason_phrase15; #undef RETURN_TYPE_reason_phrase15 #define RETURN_TYPE_reason_phrase15 belle_sip_messageParser_reason_phrase_return /* Initialize rule variables */ ret = NULL; ctx->pbelle_sip_messageParser_status_lineTop = pbelle_sip_messageParser_status_linePush(ctx); ret= belle_sip_response_new(); { // ../grammars/belle_sip_message.g:232:2: ( sip_version SP status_code SP reason_phrase CRLF ) // ../grammars/belle_sip_message.g:232:6: sip_version SP status_code SP reason_phrase CRLF { FOLLOWPUSH(FOLLOW_sip_version_in_status_line630); sip_version(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulestatus_lineEx; } if (HASFAILED()) { pbelle_sip_messageParser_status_linePop(ctx); return ret; } MATCHT(SP, &FOLLOW_SP_in_status_line636); if (HASEXCEPTION()) { goto rulestatus_lineEx; } if (HASFAILED()) { pbelle_sip_messageParser_status_linePop(ctx); return ret; } FOLLOWPUSH(FOLLOW_status_code_in_status_line638); status_code14=status_code(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulestatus_lineEx; } if (HASFAILED()) { pbelle_sip_messageParser_status_linePop(ctx); return ret; } if ( BACKTRACKING==0 ) { belle_sip_response_set_status_code(ret ,atoi((char*)(STRSTREAM->toStringTT(STRSTREAM, status_code14.start, status_code14.stop)) ->chars)); } MATCHT(SP, &FOLLOW_SP_in_status_line646); if (HASEXCEPTION()) { goto rulestatus_lineEx; } if (HASFAILED()) { pbelle_sip_messageParser_status_linePop(ctx); return ret; } FOLLOWPUSH(FOLLOW_reason_phrase_in_status_line648); reason_phrase15=reason_phrase(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulestatus_lineEx; } if (HASFAILED()) { pbelle_sip_messageParser_status_linePop(ctx); return ret; } if ( BACKTRACKING==0 ) { belle_sip_response_set_reason_phrase(ret ,(char*)(STRSTREAM->toStringTT(STRSTREAM, reason_phrase15.start, reason_phrase15.stop)) ->chars); } MATCHT(CRLF, &FOLLOW_CRLF_in_status_line656); if (HASEXCEPTION()) { goto rulestatus_lineEx; } if (HASFAILED()) { pbelle_sip_messageParser_status_linePop(ctx); return ret; } } } // This is where rules clean up and exit // goto rulestatus_lineEx; /* Prevent compiler warnings */ rulestatus_lineEx: ; if (HASEXCEPTION()) { /* catch(decl,action) */ { belle_sip_message("[%s] reason [%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref( ret ); ret=NULL; } } else { } pbelle_sip_messageParser_status_linePop(ctx); return ret; } /* $ANTLR end status_line */ /** * $ANTLR start status_code * ../grammars/belle_sip_message.g:244:1: status_code : extension_code ; */ static belle_sip_messageParser_status_code_return status_code(pbelle_sip_messageParser ctx) { belle_sip_messageParser_status_code_return retval; /* Initialize rule variables */ retval.start = LT(1); retval.stop = retval.start; { // ../grammars/belle_sip_message.g:245:2: ( extension_code ) // ../grammars/belle_sip_message.g:245:4: extension_code { FOLLOWPUSH(FOLLOW_extension_code_in_status_code673); extension_code(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulestatus_codeEx; } if (HASFAILED()) { return retval; } } } // This is where rules clean up and exit // goto rulestatus_codeEx; /* Prevent compiler warnings */ rulestatus_codeEx: ; retval.stop = LT(-1); if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end status_code */ /** * $ANTLR start extension_code * ../grammars/belle_sip_message.g:247:1: extension_code : DIGIT DIGIT DIGIT ; */ static void extension_code(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:248:2: ( DIGIT DIGIT DIGIT ) // ../grammars/belle_sip_message.g:248:6: DIGIT DIGIT DIGIT { MATCHT(DIGIT, &FOLLOW_DIGIT_in_extension_code684); if (HASEXCEPTION()) { goto ruleextension_codeEx; } if (HASFAILED()) { return ; } MATCHT(DIGIT, &FOLLOW_DIGIT_in_extension_code686); if (HASEXCEPTION()) { goto ruleextension_codeEx; } if (HASFAILED()) { return ; } MATCHT(DIGIT, &FOLLOW_DIGIT_in_extension_code688); if (HASEXCEPTION()) { goto ruleextension_codeEx; } if (HASFAILED()) { return ; } } } // This is where rules clean up and exit // goto ruleextension_codeEx; /* Prevent compiler warnings */ ruleextension_codeEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end extension_code */ /** * $ANTLR start reason_phrase * ../grammars/belle_sip_message.g:249:1: reason_phrase : (~ ( CRLF ) )* ; */ static belle_sip_messageParser_reason_phrase_return reason_phrase(pbelle_sip_messageParser ctx) { belle_sip_messageParser_reason_phrase_return retval; /* Initialize rule variables */ retval.start = LT(1); retval.stop = retval.start; { // ../grammars/belle_sip_message.g:250:2: ( (~ ( CRLF ) )* ) // ../grammars/belle_sip_message.g:250:6: (~ ( CRLF ) )* { // ../grammars/belle_sip_message.g:250:6: (~ ( CRLF ) )* for (;;) { int alt9=2; switch ( LA(1) ) { case AND: case AT: case BQUOTE: case BSLASH: case COLON: case COMMA: case COMMON_CHAR: case DASH: case DIGIT: case DOLLARD: case DOT: case DQUOTE: case EMARK: case EQUAL: case HEX_CHAR: case HTAB: case LAQUOT: case LBRACE: case LPAREN: case LSBRAQUET: case OCTET: case OR: case PERCENT: case PLUS: case QMARK: case RAQUOT: case RBRACE: case RPAREN: case RSBRAQUET: case SEMI: case SLASH: case SP: case SQUOTE: case STAR: case TILDE: case USCORE: { alt9=1; } break; } switch (alt9) { case 1: // ../grammars/belle_sip_message.g: { if ( ((LA(1) >= AND) && (LA(1) <= COMMON_CHAR)) || ((LA(1) >= DASH) && (LA(1) <= USCORE)) ) { CONSUME(); PERRORRECOVERY=ANTLR3_FALSE; FAILEDFLAG=ANTLR3_FALSE; } else { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_MISMATCHED_SET_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_MISMATCHED_SET_NAME; EXCEPTION->expectingSet = NULL; goto rulereason_phraseEx; } } break; default: goto loop9; /* break out of the loop */ break; } } loop9: ; /* Jump out to here if this rule does not match */ } } // This is where rules clean up and exit // goto rulereason_phraseEx; /* Prevent compiler warnings */ rulereason_phraseEx: ; retval.stop = LT(-1); if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end reason_phrase */ /** * $ANTLR start http_request * ../grammars/belle_sip_message.g:255:1: http_request returns [belle_http_request_t* ret=NULL] : common_request ; */ static belle_http_request_t* http_request(pbelle_sip_messageParser ctx) { belle_http_request_t* ret; belle_sip_message_t* common_request16; #undef RETURN_TYPE_common_request16 #define RETURN_TYPE_common_request16 belle_sip_message_t* /* Initialize rule variables */ ret = NULL; { // ../grammars/belle_sip_message.g:256:3: ( common_request ) // ../grammars/belle_sip_message.g:256:4: common_request { FOLLOWPUSH(FOLLOW_common_request_in_http_request719); common_request16=common_request(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulehttp_requestEx; } if (HASFAILED()) { return ret; } if ( BACKTRACKING==0 ) { ret=BELLE_HTTP_REQUEST( common_request16 ); } } } // This is where rules clean up and exit // goto rulehttp_requestEx; /* Prevent compiler warnings */ rulehttp_requestEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ret; } /* $ANTLR end http_request */ /** * $ANTLR start http_request_line * ../grammars/belle_sip_message.g:258:1: http_request_line returns [belle_http_request_t *ret=NULL] : method SP ( generic_uri )=> generic_uri SP http_version CRLF ; */ static belle_http_request_t * http_request_line(pbelle_sip_messageParser ctx) { belle_http_request_t * ret; belle_sip_messageParser_method_return method17; #undef RETURN_TYPE_method17 #define RETURN_TYPE_method17 belle_sip_messageParser_method_return belle_generic_uri_t* generic_uri18; #undef RETURN_TYPE_generic_uri18 #define RETURN_TYPE_generic_uri18 belle_generic_uri_t* /* Initialize rule variables */ ret = NULL; ctx->pbelle_sip_messageParser_http_request_lineTop = pbelle_sip_messageParser_http_request_linePush(ctx); (SCOPE_TOP(http_request_line))->current= belle_http_request_new(); ret=(SCOPE_TOP(http_request_line))->current; { // ../grammars/belle_sip_message.g:261:3: ( method SP ( generic_uri )=> generic_uri SP http_version CRLF ) // ../grammars/belle_sip_message.g:261:5: method SP ( generic_uri )=> generic_uri SP http_version CRLF { FOLLOWPUSH(FOLLOW_method_in_http_request_line744); method17=method(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulehttp_request_lineEx; } if (HASFAILED()) { pbelle_sip_messageParser_http_request_linePop(ctx); return ret; } if ( BACKTRACKING==0 ) { belle_http_request_set_method((SCOPE_TOP(http_request_line))->current,(const char*)( (STRSTREAM->toStringTT(STRSTREAM, method17.start, method17.stop)) ->chars)); } MATCHT(SP, &FOLLOW_SP_in_http_request_line752); if (HASEXCEPTION()) { goto rulehttp_request_lineEx; } if (HASFAILED()) { pbelle_sip_messageParser_http_request_linePop(ctx); return ret; } FOLLOWPUSH(FOLLOW_generic_uri_in_http_request_line762); generic_uri18=generic_uri(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulehttp_request_lineEx; } if (HASFAILED()) { pbelle_sip_messageParser_http_request_linePop(ctx); return ret; } if ( BACKTRACKING==0 ) { belle_http_request_set_uri((SCOPE_TOP(http_request_line))->current, generic_uri18 ); } MATCHT(SP, &FOLLOW_SP_in_http_request_line770); if (HASEXCEPTION()) { goto rulehttp_request_lineEx; } if (HASFAILED()) { pbelle_sip_messageParser_http_request_linePop(ctx); return ret; } FOLLOWPUSH(FOLLOW_http_version_in_http_request_line776); http_version(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulehttp_request_lineEx; } if (HASFAILED()) { pbelle_sip_messageParser_http_request_linePop(ctx); return ret; } MATCHT(CRLF, &FOLLOW_CRLF_in_http_request_line778); if (HASEXCEPTION()) { goto rulehttp_request_lineEx; } if (HASFAILED()) { pbelle_sip_messageParser_http_request_linePop(ctx); return ret; } } } // This is where rules clean up and exit // goto rulehttp_request_lineEx; /* Prevent compiler warnings */ rulehttp_request_lineEx: ; if (HASEXCEPTION()) { /* catch(decl,action) */ { belle_sip_message("[%s] reason [%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref((SCOPE_TOP(http_request_line))->current); ret=NULL; } } else { } pbelle_sip_messageParser_http_request_linePop(ctx); return ret; } /* $ANTLR end http_request_line */ /** * $ANTLR start http_version * ../grammars/belle_sip_message.g:273:1: http_version :{...}? generic_version ; */ static void http_version(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:273:13: ({...}? generic_version ) // ../grammars/belle_sip_message.g:273:16: {...}? generic_version { if ( !((IS_TOKEN(HTTP/))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(HTTP/)"; EXCEPTION->ruleName = (void *)"http_version"; } FOLLOWPUSH(FOLLOW_generic_version_in_http_version794); generic_version(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulehttp_versionEx; } if (HASFAILED()) { return ; } } } // This is where rules clean up and exit // goto rulehttp_versionEx; /* Prevent compiler warnings */ rulehttp_versionEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end http_version */ /** * $ANTLR start http_response * ../grammars/belle_sip_message.g:275:1: http_response returns [belle_http_response_t* ret=NULL] : common_response ; */ static belle_http_response_t* http_response(pbelle_sip_messageParser ctx) { belle_http_response_t* ret; belle_sip_message_t* common_response19; #undef RETURN_TYPE_common_response19 #define RETURN_TYPE_common_response19 belle_sip_message_t* /* Initialize rule variables */ ret = NULL; { // ../grammars/belle_sip_message.g:276:3: ( common_response ) // ../grammars/belle_sip_message.g:276:7: common_response { FOLLOWPUSH(FOLLOW_common_response_in_http_response811); common_response19=common_response(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulehttp_responseEx; } if (HASFAILED()) { return ret; } if ( BACKTRACKING==0 ) { ret=BELLE_HTTP_RESPONSE( common_response19 ); } } } // This is where rules clean up and exit // goto rulehttp_responseEx; /* Prevent compiler warnings */ rulehttp_responseEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ret; } /* $ANTLR end http_response */ /** * $ANTLR start http_status_line * ../grammars/belle_sip_message.g:278:1: http_status_line returns [belle_http_response_t* ret] : http_version SP status_code SP reason_phrase CRLF ; */ static belle_http_response_t* http_status_line(pbelle_sip_messageParser ctx) { belle_http_response_t* ret; belle_sip_messageParser_status_code_return status_code20; #undef RETURN_TYPE_status_code20 #define RETURN_TYPE_status_code20 belle_sip_messageParser_status_code_return belle_sip_messageParser_reason_phrase_return reason_phrase21; #undef RETURN_TYPE_reason_phrase21 #define RETURN_TYPE_reason_phrase21 belle_sip_messageParser_reason_phrase_return /* Initialize rule variables */ ret= belle_http_response_new(); { // ../grammars/belle_sip_message.g:280:3: ( http_version SP status_code SP reason_phrase CRLF ) // ../grammars/belle_sip_message.g:280:7: http_version SP status_code SP reason_phrase CRLF { FOLLOWPUSH(FOLLOW_http_version_in_http_status_line836); http_version(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulehttp_status_lineEx; } if (HASFAILED()) { return ret; } MATCHT(SP, &FOLLOW_SP_in_http_status_line843); if (HASEXCEPTION()) { goto rulehttp_status_lineEx; } if (HASFAILED()) { return ret; } FOLLOWPUSH(FOLLOW_status_code_in_http_status_line845); status_code20=status_code(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulehttp_status_lineEx; } if (HASFAILED()) { return ret; } if ( BACKTRACKING==0 ) { belle_http_response_set_status_code(ret ,atoi((char*)(STRSTREAM->toStringTT(STRSTREAM, status_code20.start, status_code20.stop)) ->chars)); } MATCHT(SP, &FOLLOW_SP_in_http_status_line854); if (HASEXCEPTION()) { goto rulehttp_status_lineEx; } if (HASFAILED()) { return ret; } FOLLOWPUSH(FOLLOW_reason_phrase_in_http_status_line856); reason_phrase21=reason_phrase(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulehttp_status_lineEx; } if (HASFAILED()) { return ret; } if ( BACKTRACKING==0 ) { belle_http_response_set_reason_phrase(ret ,(char*)(STRSTREAM->toStringTT(STRSTREAM, reason_phrase21.start, reason_phrase21.stop)) ->chars); } MATCHT(CRLF, &FOLLOW_CRLF_in_http_status_line865); if (HASEXCEPTION()) { goto rulehttp_status_lineEx; } if (HASFAILED()) { return ret; } } } // This is where rules clean up and exit // goto rulehttp_status_lineEx; /* Prevent compiler warnings */ rulehttp_status_lineEx: ; if (HASEXCEPTION()) { /* catch(decl,action) */ { belle_sip_message("[%s] reason [%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref( ret ); ret=NULL; } } else { } return ret; } /* $ANTLR end http_status_line */ /** * $ANTLR start opaque_part_for_from_to_contact_addr_spec * ../grammars/belle_sip_message.g:302:1: opaque_part_for_from_to_contact_addr_spec : uric_no_slash_for_from_to_contact_addr_spec ( uric_for_from_to_contact_addr_spec )* ; */ static belle_sip_messageParser_opaque_part_for_from_to_contact_addr_spec_return opaque_part_for_from_to_contact_addr_spec(pbelle_sip_messageParser ctx) { belle_sip_messageParser_opaque_part_for_from_to_contact_addr_spec_return retval; /* Initialize rule variables */ retval.start = LT(1); retval.stop = retval.start; { // ../grammars/belle_sip_message.g:303:2: ( uric_no_slash_for_from_to_contact_addr_spec ( uric_for_from_to_contact_addr_spec )* ) // ../grammars/belle_sip_message.g:303:5: uric_no_slash_for_from_to_contact_addr_spec ( uric_for_from_to_contact_addr_spec )* { FOLLOWPUSH(FOLLOW_uric_no_slash_for_from_to_contact_addr_spec_in_opaque_part_for_from_to_contact_addr_spec889); uric_no_slash_for_from_to_contact_addr_spec(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleopaque_part_for_from_to_contact_addr_specEx; } if (HASFAILED()) { return retval; } // ../grammars/belle_sip_message.g:303:49: ( uric_for_from_to_contact_addr_spec )* for (;;) { int alt10=2; switch ( LA(1) ) { case AND: case AT: case COLON: case COMMON_CHAR: case DASH: case DIGIT: case DOLLARD: case DOT: case EMARK: case EQUAL: case HEX_CHAR: case LPAREN: case PERCENT: case PLUS: case RPAREN: case SLASH: case SQUOTE: case STAR: case TILDE: case USCORE: { alt10=1; } break; } switch (alt10) { case 1: // ../grammars/belle_sip_message.g:303:49: uric_for_from_to_contact_addr_spec { FOLLOWPUSH(FOLLOW_uric_for_from_to_contact_addr_spec_in_opaque_part_for_from_to_contact_addr_spec891); uric_for_from_to_contact_addr_spec(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleopaque_part_for_from_to_contact_addr_specEx; } if (HASFAILED()) { return retval; } } break; default: goto loop10; /* break out of the loop */ break; } } loop10: ; /* Jump out to here if this rule does not match */ } } // This is where rules clean up and exit // goto ruleopaque_part_for_from_to_contact_addr_specEx; /* Prevent compiler warnings */ ruleopaque_part_for_from_to_contact_addr_specEx: ; retval.stop = LT(-1); if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end opaque_part_for_from_to_contact_addr_spec */ /** * $ANTLR start opaque_part * ../grammars/belle_sip_message.g:304:1: opaque_part : uric_no_slash ( uric )* ; */ static belle_sip_messageParser_opaque_part_return opaque_part(pbelle_sip_messageParser ctx) { belle_sip_messageParser_opaque_part_return retval; /* Initialize rule variables */ retval.start = LT(1); retval.stop = retval.start; { // ../grammars/belle_sip_message.g:305:2: ( uric_no_slash ( uric )* ) // ../grammars/belle_sip_message.g:305:5: uric_no_slash ( uric )* { FOLLOWPUSH(FOLLOW_uric_no_slash_in_opaque_part901); uric_no_slash(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleopaque_partEx; } if (HASFAILED()) { return retval; } // ../grammars/belle_sip_message.g:305:19: ( uric )* for (;;) { int alt11=2; switch ( LA(1) ) { case AND: case AT: case COLON: case COMMA: case COMMON_CHAR: case DASH: case DIGIT: case DOLLARD: case DOT: case EMARK: case EQUAL: case HEX_CHAR: case LPAREN: case PERCENT: case PLUS: case QMARK: case RPAREN: case SEMI: case SLASH: case SQUOTE: case STAR: case TILDE: case USCORE: { alt11=1; } break; } switch (alt11) { case 1: // ../grammars/belle_sip_message.g:305:19: uric { FOLLOWPUSH(FOLLOW_uric_in_opaque_part903); uric(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleopaque_partEx; } if (HASFAILED()) { return retval; } } break; default: goto loop11; /* break out of the loop */ break; } } loop11: ; /* Jump out to here if this rule does not match */ } } // This is where rules clean up and exit // goto ruleopaque_partEx; /* Prevent compiler warnings */ ruleopaque_partEx: ; retval.stop = LT(-1); if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end opaque_part */ /** * $ANTLR start uric_no_slash_for_from_to_contact_addr_spec * ../grammars/belle_sip_message.g:307:1: uric_no_slash_for_from_to_contact_addr_spec : ( unreserved | escaped | COLON | AT | AND | EQUAL | PLUS | DOLLARD ); */ static void uric_no_slash_for_from_to_contact_addr_spec(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { { // ../grammars/belle_sip_message.g:308:2: ( unreserved | escaped | COLON | AT | AND | EQUAL | PLUS | DOLLARD ) ANTLR3_UINT32 alt12; alt12=8; switch ( LA(1) ) { case COMMON_CHAR: case DASH: case DIGIT: case DOT: case EMARK: case HEX_CHAR: case LPAREN: case RPAREN: case SQUOTE: case STAR: case TILDE: case USCORE: { alt12=1; } break; case PERCENT: { alt12=2; } break; case COLON: { alt12=3; } break; case AT: { alt12=4; } break; case AND: { alt12=5; } break; case EQUAL: { alt12=6; } break; case PLUS: { alt12=7; } break; case DOLLARD: { alt12=8; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 12; EXCEPTION->state = 0; goto ruleuric_no_slash_for_from_to_contact_addr_specEx; } switch (alt12) { case 1: // ../grammars/belle_sip_message.g:308:4: unreserved { FOLLOWPUSH(FOLLOW_unreserved_in_uric_no_slash_for_from_to_contact_addr_spec913); unreserved(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleuric_no_slash_for_from_to_contact_addr_specEx; } if (HASFAILED()) { return ; } } break; case 2: // ../grammars/belle_sip_message.g:308:17: escaped { FOLLOWPUSH(FOLLOW_escaped_in_uric_no_slash_for_from_to_contact_addr_spec917); escaped(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleuric_no_slash_for_from_to_contact_addr_specEx; } if (HASFAILED()) { return ; } } break; case 3: // ../grammars/belle_sip_message.g:308:28: COLON { MATCHT(COLON, &FOLLOW_COLON_in_uric_no_slash_for_from_to_contact_addr_spec922); if (HASEXCEPTION()) { goto ruleuric_no_slash_for_from_to_contact_addr_specEx; } if (HASFAILED()) { return ; } } break; case 4: // ../grammars/belle_sip_message.g:308:36: AT { MATCHT(AT, &FOLLOW_AT_in_uric_no_slash_for_from_to_contact_addr_spec926); if (HASEXCEPTION()) { goto ruleuric_no_slash_for_from_to_contact_addr_specEx; } if (HASFAILED()) { return ; } } break; case 5: // ../grammars/belle_sip_message.g:308:40: AND { MATCHT(AND, &FOLLOW_AND_in_uric_no_slash_for_from_to_contact_addr_spec929); if (HASEXCEPTION()) { goto ruleuric_no_slash_for_from_to_contact_addr_specEx; } if (HASFAILED()) { return ; } } break; case 6: // ../grammars/belle_sip_message.g:308:46: EQUAL { MATCHT(EQUAL, &FOLLOW_EQUAL_in_uric_no_slash_for_from_to_contact_addr_spec933); if (HASEXCEPTION()) { goto ruleuric_no_slash_for_from_to_contact_addr_specEx; } if (HASFAILED()) { return ; } } break; case 7: // ../grammars/belle_sip_message.g:308:54: PLUS { MATCHT(PLUS, &FOLLOW_PLUS_in_uric_no_slash_for_from_to_contact_addr_spec937); if (HASEXCEPTION()) { goto ruleuric_no_slash_for_from_to_contact_addr_specEx; } if (HASFAILED()) { return ; } } break; case 8: // ../grammars/belle_sip_message.g:308:61: DOLLARD { MATCHT(DOLLARD, &FOLLOW_DOLLARD_in_uric_no_slash_for_from_to_contact_addr_spec941); if (HASEXCEPTION()) { goto ruleuric_no_slash_for_from_to_contact_addr_specEx; } if (HASFAILED()) { return ; } } break; } } } // This is where rules clean up and exit // goto ruleuric_no_slash_for_from_to_contact_addr_specEx; /* Prevent compiler warnings */ ruleuric_no_slash_for_from_to_contact_addr_specEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end uric_no_slash_for_from_to_contact_addr_spec */ /** * $ANTLR start uric_no_slash * ../grammars/belle_sip_message.g:309:1: uric_no_slash : ( COMMA | SEMI | QMARK | uric_no_slash_for_from_to_contact_addr_spec ); */ static void uric_no_slash(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { { // ../grammars/belle_sip_message.g:310:2: ( COMMA | SEMI | QMARK | uric_no_slash_for_from_to_contact_addr_spec ) ANTLR3_UINT32 alt13; alt13=4; switch ( LA(1) ) { case COMMA: { alt13=1; } break; case SEMI: { alt13=2; } break; case QMARK: { alt13=3; } break; case AND: case AT: case COLON: case COMMON_CHAR: case DASH: case DIGIT: case DOLLARD: case DOT: case EMARK: case EQUAL: case HEX_CHAR: case LPAREN: case PERCENT: case PLUS: case RPAREN: case SQUOTE: case STAR: case TILDE: case USCORE: { alt13=4; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 13; EXCEPTION->state = 0; goto ruleuric_no_slashEx; } switch (alt13) { case 1: // ../grammars/belle_sip_message.g:310:3: COMMA { MATCHT(COMMA, &FOLLOW_COMMA_in_uric_no_slash948); if (HASEXCEPTION()) { goto ruleuric_no_slashEx; } if (HASFAILED()) { return ; } } break; case 2: // ../grammars/belle_sip_message.g:310:11: SEMI { MATCHT(SEMI, &FOLLOW_SEMI_in_uric_no_slash952); if (HASEXCEPTION()) { goto ruleuric_no_slashEx; } if (HASFAILED()) { return ; } } break; case 3: // ../grammars/belle_sip_message.g:310:18: QMARK { MATCHT(QMARK, &FOLLOW_QMARK_in_uric_no_slash956); if (HASEXCEPTION()) { goto ruleuric_no_slashEx; } if (HASFAILED()) { return ; } } break; case 4: // ../grammars/belle_sip_message.g:310:27: uric_no_slash_for_from_to_contact_addr_spec { FOLLOWPUSH(FOLLOW_uric_no_slash_for_from_to_contact_addr_spec_in_uric_no_slash961); uric_no_slash_for_from_to_contact_addr_spec(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleuric_no_slashEx; } if (HASFAILED()) { return ; } } break; } } } // This is where rules clean up and exit // goto ruleuric_no_slashEx; /* Prevent compiler warnings */ ruleuric_no_slashEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end uric_no_slash */ /** * $ANTLR start scheme * ../grammars/belle_sip_message.g:312:2: scheme : alpha ( alphanum | PLUS | DASH | DOT )* ; */ static belle_sip_messageParser_scheme_return scheme(pbelle_sip_messageParser ctx) { belle_sip_messageParser_scheme_return retval; /* Initialize rule variables */ retval.start = LT(1); retval.stop = retval.start; { // ../grammars/belle_sip_message.g:312:8: ( alpha ( alphanum | PLUS | DASH | DOT )* ) // ../grammars/belle_sip_message.g:312:10: alpha ( alphanum | PLUS | DASH | DOT )* { FOLLOWPUSH(FOLLOW_alpha_in_scheme970); alpha(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleschemeEx; } if (HASFAILED()) { return retval; } // ../grammars/belle_sip_message.g:312:16: ( alphanum | PLUS | DASH | DOT )* for (;;) { int alt14=5; switch ( LA(1) ) { case COMMON_CHAR: case DIGIT: case HEX_CHAR: { alt14=1; } break; case PLUS: { alt14=2; } break; case DASH: { alt14=3; } break; case DOT: { alt14=4; } break; } switch (alt14) { case 1: // ../grammars/belle_sip_message.g:312:18: alphanum { FOLLOWPUSH(FOLLOW_alphanum_in_scheme974); alphanum(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleschemeEx; } if (HASFAILED()) { return retval; } } break; case 2: // ../grammars/belle_sip_message.g:312:29: PLUS { MATCHT(PLUS, &FOLLOW_PLUS_in_scheme978); if (HASEXCEPTION()) { goto ruleschemeEx; } if (HASFAILED()) { return retval; } } break; case 3: // ../grammars/belle_sip_message.g:312:36: DASH { MATCHT(DASH, &FOLLOW_DASH_in_scheme982); if (HASEXCEPTION()) { goto ruleschemeEx; } if (HASFAILED()) { return retval; } } break; case 4: // ../grammars/belle_sip_message.g:312:43: DOT { MATCHT(DOT, &FOLLOW_DOT_in_scheme986); if (HASEXCEPTION()) { goto ruleschemeEx; } if (HASFAILED()) { return retval; } } break; default: goto loop14; /* break out of the loop */ break; } } loop14: ; /* Jump out to here if this rule does not match */ } } // This is where rules clean up and exit // goto ruleschemeEx; /* Prevent compiler warnings */ ruleschemeEx: ; retval.stop = LT(-1); if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end scheme */ /** * $ANTLR start generic_uri_for_from_to_contact_addr_spec * ../grammars/belle_sip_message.g:316:1: generic_uri_for_from_to_contact_addr_spec returns [belle_generic_uri_t* ret=NULL] : scheme COLON opaque_part_for_from_to_contact_addr_spec ; */ static belle_generic_uri_t* generic_uri_for_from_to_contact_addr_spec(pbelle_sip_messageParser ctx) { belle_generic_uri_t* ret; belle_sip_messageParser_scheme_return scheme22; #undef RETURN_TYPE_scheme22 #define RETURN_TYPE_scheme22 belle_sip_messageParser_scheme_return belle_sip_messageParser_opaque_part_for_from_to_contact_addr_spec_return opaque_part_for_from_to_contact_addr_spec23; #undef RETURN_TYPE_opaque_part_for_from_to_contact_addr_spec23 #define RETURN_TYPE_opaque_part_for_from_to_contact_addr_spec23 belle_sip_messageParser_opaque_part_for_from_to_contact_addr_spec_return /* Initialize rule variables */ ret = NULL; ctx->pbelle_sip_messageParser_generic_uri_for_from_to_contact_addr_specTop = pbelle_sip_messageParser_generic_uri_for_from_to_contact_addr_specPush(ctx); (SCOPE_TOP(generic_uri_for_from_to_contact_addr_spec))->current= ret = belle_generic_uri_new(); { // ../grammars/belle_sip_message.g:319:4: ( scheme COLON opaque_part_for_from_to_contact_addr_spec ) // ../grammars/belle_sip_message.g:319:6: scheme COLON opaque_part_for_from_to_contact_addr_spec { FOLLOWPUSH(FOLLOW_scheme_in_generic_uri_for_from_to_contact_addr_spec1016); scheme22=scheme(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulegeneric_uri_for_from_to_contact_addr_specEx; } if (HASFAILED()) { pbelle_sip_messageParser_generic_uri_for_from_to_contact_addr_specPop(ctx); return ret; } if ( BACKTRACKING==0 ) { belle_generic_uri_set_scheme((SCOPE_TOP(generic_uri_for_from_to_contact_addr_spec))->current,(const char*) (STRSTREAM->toStringTT(STRSTREAM, scheme22.start, scheme22.stop)) ->chars); } MATCHT(COLON, &FOLLOW_COLON_in_generic_uri_for_from_to_contact_addr_spec1023); if (HASEXCEPTION()) { goto rulegeneric_uri_for_from_to_contact_addr_specEx; } if (HASFAILED()) { pbelle_sip_messageParser_generic_uri_for_from_to_contact_addr_specPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_opaque_part_for_from_to_contact_addr_spec_in_generic_uri_for_from_to_contact_addr_spec1026); opaque_part_for_from_to_contact_addr_spec23=opaque_part_for_from_to_contact_addr_spec(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulegeneric_uri_for_from_to_contact_addr_specEx; } if (HASFAILED()) { pbelle_sip_messageParser_generic_uri_for_from_to_contact_addr_specPop(ctx); return ret; } if ( BACKTRACKING==0 ) { belle_generic_uri_set_opaque_part((SCOPE_TOP(generic_uri_for_from_to_contact_addr_spec))->current,(const char*) (STRSTREAM->toStringTT(STRSTREAM, opaque_part_for_from_to_contact_addr_spec23.start, opaque_part_for_from_to_contact_addr_spec23.stop)) ->chars) ; } } } // This is where rules clean up and exit // goto rulegeneric_uri_for_from_to_contact_addr_specEx; /* Prevent compiler warnings */ rulegeneric_uri_for_from_to_contact_addr_specEx: ; if (HASEXCEPTION()) { /* catch(decl,action) */ { belle_sip_message("[%s] reason [%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref(ret ); ret=NULL; } } else { } pbelle_sip_messageParser_generic_uri_for_from_to_contact_addr_specPop(ctx); return ret; } /* $ANTLR end generic_uri_for_from_to_contact_addr_spec */ /** * $ANTLR start generic_uri * ../grammars/belle_sip_message.g:330:1: generic_uri returns [belle_generic_uri_t* ret=NULL] : ( hier_part[$generic_uri::current] | ( scheme COLON ( opaque_part | hier_part[$generic_uri::current] ) ) ); */ static belle_generic_uri_t* generic_uri(pbelle_sip_messageParser ctx) { belle_generic_uri_t* ret; belle_sip_messageParser_scheme_return scheme24; #undef RETURN_TYPE_scheme24 #define RETURN_TYPE_scheme24 belle_sip_messageParser_scheme_return belle_sip_messageParser_opaque_part_return opaque_part25; #undef RETURN_TYPE_opaque_part25 #define RETURN_TYPE_opaque_part25 belle_sip_messageParser_opaque_part_return /* Initialize rule variables */ ret = NULL; ctx->pbelle_sip_messageParser_generic_uriTop = pbelle_sip_messageParser_generic_uriPush(ctx); (SCOPE_TOP(generic_uri))->current= ret = belle_generic_uri_new(); { { // ../grammars/belle_sip_message.g:333:4: ( hier_part[$generic_uri::current] | ( scheme COLON ( opaque_part | hier_part[$generic_uri::current] ) ) ) ANTLR3_UINT32 alt16; alt16=2; switch ( LA(1) ) { case SLASH: { alt16=1; } break; case COMMON_CHAR: case HEX_CHAR: { alt16=2; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_generic_uriPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 16; EXCEPTION->state = 0; goto rulegeneric_uriEx; } switch (alt16) { case 1: // ../grammars/belle_sip_message.g:333:7: hier_part[$generic_uri::current] { FOLLOWPUSH(FOLLOW_hier_part_in_generic_uri1064); hier_part(ctx, (SCOPE_TOP(generic_uri))->current); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulegeneric_uriEx; } if (HASFAILED()) { pbelle_sip_messageParser_generic_uriPop(ctx); return ret; } } break; case 2: // ../grammars/belle_sip_message.g:334:9: ( scheme COLON ( opaque_part | hier_part[$generic_uri::current] ) ) { // ../grammars/belle_sip_message.g:334:9: ( scheme COLON ( opaque_part | hier_part[$generic_uri::current] ) ) // ../grammars/belle_sip_message.g:334:10: scheme COLON ( opaque_part | hier_part[$generic_uri::current] ) { FOLLOWPUSH(FOLLOW_scheme_in_generic_uri1076); scheme24=scheme(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulegeneric_uriEx; } if (HASFAILED()) { pbelle_sip_messageParser_generic_uriPop(ctx); return ret; } if ( BACKTRACKING==0 ) { belle_generic_uri_set_scheme((SCOPE_TOP(generic_uri))->current,(const char*) (STRSTREAM->toStringTT(STRSTREAM, scheme24.start, scheme24.stop)) ->chars); } MATCHT(COLON, &FOLLOW_COLON_in_generic_uri1087); if (HASEXCEPTION()) { goto rulegeneric_uriEx; } if (HASFAILED()) { pbelle_sip_messageParser_generic_uriPop(ctx); return ret; } // ../grammars/belle_sip_message.g:335:15: ( opaque_part | hier_part[$generic_uri::current] ) { int alt15=2; switch ( LA(1) ) { case AND: case AT: case COLON: case COMMA: case COMMON_CHAR: case DASH: case DIGIT: case DOLLARD: case DOT: case EMARK: case EQUAL: case HEX_CHAR: case LPAREN: case PERCENT: case PLUS: case QMARK: case RPAREN: case SEMI: case SQUOTE: case STAR: case TILDE: case USCORE: { alt15=1; } break; case SLASH: { alt15=2; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_generic_uriPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 15; EXCEPTION->state = 0; goto rulegeneric_uriEx; } switch (alt15) { case 1: // ../grammars/belle_sip_message.g:335:16: opaque_part { FOLLOWPUSH(FOLLOW_opaque_part_in_generic_uri1091); opaque_part25=opaque_part(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulegeneric_uriEx; } if (HASFAILED()) { pbelle_sip_messageParser_generic_uriPop(ctx); return ret; } if ( BACKTRACKING==0 ) { belle_generic_uri_set_opaque_part((SCOPE_TOP(generic_uri))->current,(const char*) (STRSTREAM->toStringTT(STRSTREAM, opaque_part25.start, opaque_part25.stop)) ->chars) ; } } break; case 2: // ../grammars/belle_sip_message.g:336:11: hier_part[$generic_uri::current] { FOLLOWPUSH(FOLLOW_hier_part_in_generic_uri1105); hier_part(ctx, (SCOPE_TOP(generic_uri))->current); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulegeneric_uriEx; } if (HASFAILED()) { pbelle_sip_messageParser_generic_uriPop(ctx); return ret; } } break; } } } } break; } } } // This is where rules clean up and exit // goto rulegeneric_uriEx; /* Prevent compiler warnings */ rulegeneric_uriEx: ; if (HASEXCEPTION()) { /* catch(decl,action) */ { belle_sip_message("[%s] reason [%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref((SCOPE_TOP(generic_uri))->current); ret=NULL; } } else { } pbelle_sip_messageParser_generic_uriPop(ctx); return ret; } /* $ANTLR end generic_uri */ /** * $ANTLR start hier_part * ../grammars/belle_sip_message.g:345:1: hier_part[belle_generic_uri_t* uri] returns [belle_generic_uri_t* ret=NULL] : ( ( SLASH SLASH path_segments[NULL] )=> ( SLASH SLASH path_segments[uri] ) | ( SLASH SLASH authority[NULL] ( path_segments[NULL] )? )=> ( SLASH SLASH authority[uri] ( path_segments[uri] )? ) | ( path_segments[uri] ) ) ( QMARK query )? ; */ static belle_generic_uri_t* hier_part(pbelle_sip_messageParser ctx, belle_generic_uri_t* uri) { belle_generic_uri_t* ret; belle_sip_messageParser_query_return query26; #undef RETURN_TYPE_query26 #define RETURN_TYPE_query26 belle_sip_messageParser_query_return /* Initialize rule variables */ ret = NULL; { // ../grammars/belle_sip_message.g:346:5: ( ( ( SLASH SLASH path_segments[NULL] )=> ( SLASH SLASH path_segments[uri] ) | ( SLASH SLASH authority[NULL] ( path_segments[NULL] )? )=> ( SLASH SLASH authority[uri] ( path_segments[uri] )? ) | ( path_segments[uri] ) ) ( QMARK query )? ) // ../grammars/belle_sip_message.g:346:5: ( ( SLASH SLASH path_segments[NULL] )=> ( SLASH SLASH path_segments[uri] ) | ( SLASH SLASH authority[NULL] ( path_segments[NULL] )? )=> ( SLASH SLASH authority[uri] ( path_segments[uri] )? ) | ( path_segments[uri] ) ) ( QMARK query )? { // ../grammars/belle_sip_message.g:346:5: ( ( SLASH SLASH path_segments[NULL] )=> ( SLASH SLASH path_segments[uri] ) | ( SLASH SLASH authority[NULL] ( path_segments[NULL] )? )=> ( SLASH SLASH authority[uri] ( path_segments[uri] )? ) | ( path_segments[uri] ) ) { int alt18=3; alt18 = cdfa18.predict(ctx, RECOGNIZER, ISTREAM, &cdfa18); if (HASEXCEPTION()) { goto rulehier_partEx; } if (HASFAILED()) { return ret; } switch (alt18) { case 1: // ../grammars/belle_sip_message.g:347:2: ( SLASH SLASH path_segments[NULL] )=> ( SLASH SLASH path_segments[uri] ) { // ../grammars/belle_sip_message.g:347:37: ( SLASH SLASH path_segments[uri] ) // ../grammars/belle_sip_message.g:347:39: SLASH SLASH path_segments[uri] { MATCHT(SLASH, &FOLLOW_SLASH_in_hier_part1146); if (HASEXCEPTION()) { goto rulehier_partEx; } if (HASFAILED()) { return ret; } MATCHT(SLASH, &FOLLOW_SLASH_in_hier_part1148); if (HASEXCEPTION()) { goto rulehier_partEx; } if (HASFAILED()) { return ret; } FOLLOWPUSH(FOLLOW_path_segments_in_hier_part1150); path_segments(ctx, uri); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulehier_partEx; } if (HASFAILED()) { return ret; } } } break; case 2: // ../grammars/belle_sip_message.g:349:3: ( SLASH SLASH authority[NULL] ( path_segments[NULL] )? )=> ( SLASH SLASH authority[uri] ( path_segments[uri] )? ) { // ../grammars/belle_sip_message.g:349:57: ( SLASH SLASH authority[uri] ( path_segments[uri] )? ) // ../grammars/belle_sip_message.g:349:59: SLASH SLASH authority[uri] ( path_segments[uri] )? { MATCHT(SLASH, &FOLLOW_SLASH_in_hier_part1177); if (HASEXCEPTION()) { goto rulehier_partEx; } if (HASFAILED()) { return ret; } MATCHT(SLASH, &FOLLOW_SLASH_in_hier_part1179); if (HASEXCEPTION()) { goto rulehier_partEx; } if (HASFAILED()) { return ret; } FOLLOWPUSH(FOLLOW_authority_in_hier_part1181); authority(ctx, uri); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulehier_partEx; } if (HASFAILED()) { return ret; } // ../grammars/belle_sip_message.g:349:86: ( path_segments[uri] )? { int alt17=2; switch ( LA(1) ) { case SLASH: { alt17=1; } break; } switch (alt17) { case 1: // ../grammars/belle_sip_message.g:349:87: path_segments[uri] { FOLLOWPUSH(FOLLOW_path_segments_in_hier_part1185); path_segments(ctx, uri); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulehier_partEx; } if (HASFAILED()) { return ret; } } break; } } } } break; case 3: // ../grammars/belle_sip_message.g:351:3: ( path_segments[uri] ) { // ../grammars/belle_sip_message.g:351:3: ( path_segments[uri] ) // ../grammars/belle_sip_message.g:351:5: path_segments[uri] { FOLLOWPUSH(FOLLOW_path_segments_in_hier_part1199); path_segments(ctx, uri); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulehier_partEx; } if (HASFAILED()) { return ret; } } } break; } } // ../grammars/belle_sip_message.g:352:3: ( QMARK query )? { int alt19=2; switch ( LA(1) ) { case QMARK: { alt19=1; } break; } switch (alt19) { case 1: // ../grammars/belle_sip_message.g:352:4: QMARK query { MATCHT(QMARK, &FOLLOW_QMARK_in_hier_part1208); if (HASEXCEPTION()) { goto rulehier_partEx; } if (HASFAILED()) { return ret; } FOLLOWPUSH(FOLLOW_query_in_hier_part1210); query26=query(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulehier_partEx; } if (HASFAILED()) { return ret; } if ( BACKTRACKING==0 ) { char* unescaped_query; unescaped_query=belle_sip_to_unescaped_string((const char *)(STRSTREAM->toStringTT(STRSTREAM, query26.start, query26.stop)) ->chars); belle_generic_uri_set_query(uri,(const char*)unescaped_query); belle_sip_free(unescaped_query); } } break; } } } } // This is where rules clean up and exit // goto rulehier_partEx; /* Prevent compiler warnings */ rulehier_partEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ret; } /* $ANTLR end hier_part */ /** * $ANTLR start path_segments * ../grammars/belle_sip_message.g:360:1: path_segments[belle_generic_uri_t* uri] : SLASH ( segment ( SLASH segment )* ) ; */ static belle_sip_messageParser_path_segments_return path_segments(pbelle_sip_messageParser ctx, belle_generic_uri_t* uri) { belle_sip_messageParser_path_segments_return retval; /* Initialize rule variables */ retval.start = LT(1); retval.stop = retval.start; { // ../grammars/belle_sip_message.g:361:3: ( SLASH ( segment ( SLASH segment )* ) ) // ../grammars/belle_sip_message.g:361:5: SLASH ( segment ( SLASH segment )* ) { MATCHT(SLASH, &FOLLOW_SLASH_in_path_segments1238); if (HASEXCEPTION()) { goto rulepath_segmentsEx; } if (HASFAILED()) { return retval; } // ../grammars/belle_sip_message.g:361:11: ( segment ( SLASH segment )* ) // ../grammars/belle_sip_message.g:361:12: segment ( SLASH segment )* { FOLLOWPUSH(FOLLOW_segment_in_path_segments1241); segment(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulepath_segmentsEx; } if (HASFAILED()) { return retval; } // ../grammars/belle_sip_message.g:361:20: ( SLASH segment )* for (;;) { int alt20=2; switch ( LA(1) ) { case SLASH: { alt20=1; } break; } switch (alt20) { case 1: // ../grammars/belle_sip_message.g:361:22: SLASH segment { MATCHT(SLASH, &FOLLOW_SLASH_in_path_segments1245); if (HASEXCEPTION()) { goto rulepath_segmentsEx; } if (HASFAILED()) { return retval; } FOLLOWPUSH(FOLLOW_segment_in_path_segments1247); segment(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulepath_segmentsEx; } if (HASFAILED()) { return retval; } } break; default: goto loop20; /* break out of the loop */ break; } } loop20: ; /* Jump out to here if this rule does not match */ } if ( BACKTRACKING==0 ) { char* unescaped_path; unescaped_path=belle_sip_to_unescaped_string((const char *)STRSTREAM->toStringTT(STRSTREAM, retval.start, LT(-1)) ->chars); belle_generic_uri_set_path(uri,(const char*)unescaped_path); belle_sip_free(unescaped_path); } } } // This is where rules clean up and exit // goto rulepath_segmentsEx; /* Prevent compiler warnings */ rulepath_segmentsEx: ; retval.stop = LT(-1); if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end path_segments */ /** * $ANTLR start segment * ../grammars/belle_sip_message.g:368:1: segment : ( pchar )* ( SEMI param )* ; */ static void segment(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:368:8: ( ( pchar )* ( SEMI param )* ) // ../grammars/belle_sip_message.g:368:10: ( pchar )* ( SEMI param )* { // ../grammars/belle_sip_message.g:368:10: ( pchar )* for (;;) { int alt21=2; switch ( LA(1) ) { case AND: case AT: case COLON: case COMMA: case COMMON_CHAR: case DASH: case DIGIT: case DOLLARD: case DOT: case EMARK: case EQUAL: case HEX_CHAR: case LPAREN: case PERCENT: case PLUS: case RPAREN: case SQUOTE: case STAR: case TILDE: case USCORE: { alt21=1; } break; } switch (alt21) { case 1: // ../grammars/belle_sip_message.g:368:10: pchar { FOLLOWPUSH(FOLLOW_pchar_in_segment1261); pchar(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesegmentEx; } if (HASFAILED()) { return ; } } break; default: goto loop21; /* break out of the loop */ break; } } loop21: ; /* Jump out to here if this rule does not match */ // ../grammars/belle_sip_message.g:368:17: ( SEMI param )* for (;;) { int alt22=2; switch ( LA(1) ) { case SEMI: { alt22=1; } break; } switch (alt22) { case 1: // ../grammars/belle_sip_message.g:368:19: SEMI param { MATCHT(SEMI, &FOLLOW_SEMI_in_segment1266); if (HASEXCEPTION()) { goto rulesegmentEx; } if (HASFAILED()) { return ; } FOLLOWPUSH(FOLLOW_param_in_segment1268); param(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesegmentEx; } if (HASFAILED()) { return ; } } break; default: goto loop22; /* break out of the loop */ break; } } loop22: ; /* Jump out to here if this rule does not match */ } } // This is where rules clean up and exit // goto rulesegmentEx; /* Prevent compiler warnings */ rulesegmentEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end segment */ /** * $ANTLR start param * ../grammars/belle_sip_message.g:369:1: param : ( pchar )* ; */ static void param(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:369:6: ( ( pchar )* ) // ../grammars/belle_sip_message.g:369:8: ( pchar )* { // ../grammars/belle_sip_message.g:369:8: ( pchar )* for (;;) { int alt23=2; switch ( LA(1) ) { case AND: case AT: case COLON: case COMMA: case COMMON_CHAR: case DASH: case DIGIT: case DOLLARD: case DOT: case EMARK: case EQUAL: case HEX_CHAR: case LPAREN: case PERCENT: case PLUS: case RPAREN: case SQUOTE: case STAR: case TILDE: case USCORE: { alt23=1; } break; } switch (alt23) { case 1: // ../grammars/belle_sip_message.g:369:8: pchar { FOLLOWPUSH(FOLLOW_pchar_in_param1277); pchar(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleparamEx; } if (HASFAILED()) { return ; } } break; default: goto loop23; /* break out of the loop */ break; } } loop23: ; /* Jump out to here if this rule does not match */ } } // This is where rules clean up and exit // goto ruleparamEx; /* Prevent compiler warnings */ ruleparamEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end param */ /** * $ANTLR start pchar * ../grammars/belle_sip_message.g:370:1: pchar : ( unreserved | escaped | COLON | AT | AND | EQUAL | PLUS | DOLLARD | COMMA ); */ static void pchar(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { { // ../grammars/belle_sip_message.g:370:6: ( unreserved | escaped | COLON | AT | AND | EQUAL | PLUS | DOLLARD | COMMA ) ANTLR3_UINT32 alt24; alt24=9; switch ( LA(1) ) { case COMMON_CHAR: case DASH: case DIGIT: case DOT: case EMARK: case HEX_CHAR: case LPAREN: case RPAREN: case SQUOTE: case STAR: case TILDE: case USCORE: { alt24=1; } break; case PERCENT: { alt24=2; } break; case COLON: { alt24=3; } break; case AT: { alt24=4; } break; case AND: { alt24=5; } break; case EQUAL: { alt24=6; } break; case PLUS: { alt24=7; } break; case DOLLARD: { alt24=8; } break; case COMMA: { alt24=9; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 24; EXCEPTION->state = 0; goto rulepcharEx; } switch (alt24) { case 1: // ../grammars/belle_sip_message.g:370:9: unreserved { FOLLOWPUSH(FOLLOW_unreserved_in_pchar1285); unreserved(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulepcharEx; } if (HASFAILED()) { return ; } } break; case 2: // ../grammars/belle_sip_message.g:370:22: escaped { FOLLOWPUSH(FOLLOW_escaped_in_pchar1289); escaped(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulepcharEx; } if (HASFAILED()) { return ; } } break; case 3: // ../grammars/belle_sip_message.g:370:32: COLON { MATCHT(COLON, &FOLLOW_COLON_in_pchar1293); if (HASEXCEPTION()) { goto rulepcharEx; } if (HASFAILED()) { return ; } } break; case 4: // ../grammars/belle_sip_message.g:370:40: AT { MATCHT(AT, &FOLLOW_AT_in_pchar1297); if (HASEXCEPTION()) { goto rulepcharEx; } if (HASFAILED()) { return ; } } break; case 5: // ../grammars/belle_sip_message.g:370:45: AND { MATCHT(AND, &FOLLOW_AND_in_pchar1301); if (HASEXCEPTION()) { goto rulepcharEx; } if (HASFAILED()) { return ; } } break; case 6: // ../grammars/belle_sip_message.g:370:51: EQUAL { MATCHT(EQUAL, &FOLLOW_EQUAL_in_pchar1305); if (HASEXCEPTION()) { goto rulepcharEx; } if (HASFAILED()) { return ; } } break; case 7: // ../grammars/belle_sip_message.g:370:59: PLUS { MATCHT(PLUS, &FOLLOW_PLUS_in_pchar1309); if (HASEXCEPTION()) { goto rulepcharEx; } if (HASFAILED()) { return ; } } break; case 8: // ../grammars/belle_sip_message.g:370:66: DOLLARD { MATCHT(DOLLARD, &FOLLOW_DOLLARD_in_pchar1313); if (HASEXCEPTION()) { goto rulepcharEx; } if (HASFAILED()) { return ; } } break; case 9: // ../grammars/belle_sip_message.g:370:76: COMMA { MATCHT(COMMA, &FOLLOW_COMMA_in_pchar1317); if (HASEXCEPTION()) { goto rulepcharEx; } if (HASFAILED()) { return ; } } break; } } } // This is where rules clean up and exit // goto rulepcharEx; /* Prevent compiler warnings */ rulepcharEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end pchar */ /** * $ANTLR start query * ../grammars/belle_sip_message.g:372:1: query : ( uric )+ ; */ static belle_sip_messageParser_query_return query(pbelle_sip_messageParser ctx) { belle_sip_messageParser_query_return retval; /* Initialize rule variables */ retval.start = LT(1); retval.stop = retval.start; { // ../grammars/belle_sip_message.g:372:6: ( ( uric )+ ) // ../grammars/belle_sip_message.g:372:8: ( uric )+ { // ../grammars/belle_sip_message.g:372:8: ( uric )+ { int cnt25=0; for (;;) { int alt25=2; switch ( LA(1) ) { case AND: case AT: case COLON: case COMMA: case COMMON_CHAR: case DASH: case DIGIT: case DOLLARD: case DOT: case EMARK: case EQUAL: case HEX_CHAR: case LPAREN: case PERCENT: case PLUS: case QMARK: case RPAREN: case SEMI: case SLASH: case SQUOTE: case STAR: case TILDE: case USCORE: { alt25=1; } break; } switch (alt25) { case 1: // ../grammars/belle_sip_message.g:372:8: uric { FOLLOWPUSH(FOLLOW_uric_in_query1324); uric(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulequeryEx; } if (HASFAILED()) { return retval; } } break; default: if ( cnt25 >= 1 ) { goto loop25; } if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } /* mismatchedSetEx() */ CONSTRUCTEX(); EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME; goto rulequeryEx; } cnt25++; } loop25: ; /* Jump to here if this rule does not match */ } } } // This is where rules clean up and exit // goto rulequeryEx; /* Prevent compiler warnings */ rulequeryEx: ; retval.stop = LT(-1); if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end query */ /** * $ANTLR start uric * ../grammars/belle_sip_message.g:373:1: uric : ( reserved | unreserved | escaped ); */ static void uric(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { { // ../grammars/belle_sip_message.g:373:5: ( reserved | unreserved | escaped ) ANTLR3_UINT32 alt26; alt26=3; switch ( LA(1) ) { case AND: case AT: case COLON: case COMMA: case DOLLARD: case EQUAL: case PLUS: case QMARK: case SEMI: case SLASH: { alt26=1; } break; case COMMON_CHAR: case DASH: case DIGIT: case DOT: case EMARK: case HEX_CHAR: case LPAREN: case RPAREN: case SQUOTE: case STAR: case TILDE: case USCORE: { alt26=2; } break; case PERCENT: { alt26=3; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 26; EXCEPTION->state = 0; goto ruleuricEx; } switch (alt26) { case 1: // ../grammars/belle_sip_message.g:373:7: reserved { FOLLOWPUSH(FOLLOW_reserved_in_uric1331); reserved(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleuricEx; } if (HASFAILED()) { return ; } } break; case 2: // ../grammars/belle_sip_message.g:373:18: unreserved { FOLLOWPUSH(FOLLOW_unreserved_in_uric1335); unreserved(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleuricEx; } if (HASFAILED()) { return ; } } break; case 3: // ../grammars/belle_sip_message.g:373:31: escaped { FOLLOWPUSH(FOLLOW_escaped_in_uric1339); escaped(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleuricEx; } if (HASFAILED()) { return ; } } break; } } } // This is where rules clean up and exit // goto ruleuricEx; /* Prevent compiler warnings */ ruleuricEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end uric */ /** * $ANTLR start uric_for_from_to_contact_addr_spec * ../grammars/belle_sip_message.g:375:1: uric_for_from_to_contact_addr_spec : ( reserved_for_from_to_contact_addr_spec | unreserved | escaped ); */ static void uric_for_from_to_contact_addr_spec(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { { // ../grammars/belle_sip_message.g:375:35: ( reserved_for_from_to_contact_addr_spec | unreserved | escaped ) ANTLR3_UINT32 alt27; alt27=3; switch ( LA(1) ) { case AND: case AT: case COLON: case DOLLARD: case EQUAL: case PLUS: case SLASH: { alt27=1; } break; case COMMON_CHAR: case DASH: case DIGIT: case DOT: case EMARK: case HEX_CHAR: case LPAREN: case RPAREN: case SQUOTE: case STAR: case TILDE: case USCORE: { alt27=2; } break; case PERCENT: { alt27=3; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 27; EXCEPTION->state = 0; goto ruleuric_for_from_to_contact_addr_specEx; } switch (alt27) { case 1: // ../grammars/belle_sip_message.g:375:37: reserved_for_from_to_contact_addr_spec { FOLLOWPUSH(FOLLOW_reserved_for_from_to_contact_addr_spec_in_uric_for_from_to_contact_addr_spec1346); reserved_for_from_to_contact_addr_spec(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleuric_for_from_to_contact_addr_specEx; } if (HASFAILED()) { return ; } } break; case 2: // ../grammars/belle_sip_message.g:375:78: unreserved { FOLLOWPUSH(FOLLOW_unreserved_in_uric_for_from_to_contact_addr_spec1350); unreserved(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleuric_for_from_to_contact_addr_specEx; } if (HASFAILED()) { return ; } } break; case 3: // ../grammars/belle_sip_message.g:375:91: escaped { FOLLOWPUSH(FOLLOW_escaped_in_uric_for_from_to_contact_addr_spec1354); escaped(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleuric_for_from_to_contact_addr_specEx; } if (HASFAILED()) { return ; } } break; } } } // This is where rules clean up and exit // goto ruleuric_for_from_to_contact_addr_specEx; /* Prevent compiler warnings */ ruleuric_for_from_to_contact_addr_specEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end uric_for_from_to_contact_addr_spec */ /** * $ANTLR start authority * ../grammars/belle_sip_message.g:377:1: authority[belle_generic_uri_t* uri] : ( ( authority_userinfo[NULL] )=> authority_userinfo[uri] )? authority_hostport[uri] ; */ static void authority(pbelle_sip_messageParser ctx, belle_generic_uri_t* uri) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:378:3: ( ( ( authority_userinfo[NULL] )=> authority_userinfo[uri] )? authority_hostport[uri] ) // ../grammars/belle_sip_message.g:379:3: ( ( authority_userinfo[NULL] )=> authority_userinfo[uri] )? authority_hostport[uri] { // ../grammars/belle_sip_message.g:379:3: ( ( authority_userinfo[NULL] )=> authority_userinfo[uri] )? { int alt28=2; alt28 = cdfa28.predict(ctx, RECOGNIZER, ISTREAM, &cdfa28); if (HASEXCEPTION()) { goto ruleauthorityEx; } if (HASFAILED()) { return ; } switch (alt28) { case 1: // ../grammars/belle_sip_message.g:379:4: ( authority_userinfo[NULL] )=> authority_userinfo[uri] { FOLLOWPUSH(FOLLOW_authority_userinfo_in_authority1372); authority_userinfo(ctx, uri); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleauthorityEx; } if (HASFAILED()) { return ; } } break; } } FOLLOWPUSH(FOLLOW_authority_hostport_in_authority1378); authority_hostport(ctx, uri); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleauthorityEx; } if (HASFAILED()) { return ; } } } // This is where rules clean up and exit // goto ruleauthorityEx; /* Prevent compiler warnings */ ruleauthorityEx: ; if (HASEXCEPTION()) { /* catch(decl,action) */ { belle_sip_message("[%s] reason [%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); } } else { } return ; } /* $ANTLR end authority */ /** * $ANTLR start authority_userinfo * ../grammars/belle_sip_message.g:386:1: authority_userinfo[belle_generic_uri_t* uri] : authority_user ( COLON authority_password )? AT ; */ static void authority_userinfo(pbelle_sip_messageParser ctx, belle_generic_uri_t* uri) { /* Initialize rule variables */ ctx->pbelle_sip_messageParser_authority_userinfoTop = pbelle_sip_messageParser_authority_userinfoPush(ctx); (SCOPE_TOP(authority_userinfo))->current=uri; { // ../grammars/belle_sip_message.g:389:8: ( authority_user ( COLON authority_password )? AT ) // ../grammars/belle_sip_message.g:389:11: authority_user ( COLON authority_password )? AT { FOLLOWPUSH(FOLLOW_authority_user_in_authority_userinfo1416); authority_user(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleauthority_userinfoEx; } if (HASFAILED()) { pbelle_sip_messageParser_authority_userinfoPop(ctx); return ; } // ../grammars/belle_sip_message.g:389:26: ( COLON authority_password )? { int alt29=2; switch ( LA(1) ) { case COLON: { alt29=1; } break; } switch (alt29) { case 1: // ../grammars/belle_sip_message.g:389:28: COLON authority_password { MATCHT(COLON, &FOLLOW_COLON_in_authority_userinfo1420); if (HASEXCEPTION()) { goto ruleauthority_userinfoEx; } if (HASFAILED()) { pbelle_sip_messageParser_authority_userinfoPop(ctx); return ; } FOLLOWPUSH(FOLLOW_authority_password_in_authority_userinfo1422); authority_password(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleauthority_userinfoEx; } if (HASFAILED()) { pbelle_sip_messageParser_authority_userinfoPop(ctx); return ; } } break; } } MATCHT(AT, &FOLLOW_AT_in_authority_userinfo1428); if (HASEXCEPTION()) { goto ruleauthority_userinfoEx; } if (HASFAILED()) { pbelle_sip_messageParser_authority_userinfoPop(ctx); return ; } } } // This is where rules clean up and exit // goto ruleauthority_userinfoEx; /* Prevent compiler warnings */ ruleauthority_userinfoEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } pbelle_sip_messageParser_authority_userinfoPop(ctx); return ; } /* $ANTLR end authority_userinfo */ /** * $ANTLR start authority_user * ../grammars/belle_sip_message.g:390:1: authority_user : ( unreserved | escaped | user_unreserved )+ ; */ static belle_sip_messageParser_authority_user_return authority_user(pbelle_sip_messageParser ctx) { belle_sip_messageParser_authority_user_return retval; /* Initialize rule variables */ retval.start = LT(1); retval.stop = retval.start; { // ../grammars/belle_sip_message.g:390:27: ( ( unreserved | escaped | user_unreserved )+ ) // ../grammars/belle_sip_message.g:390:31: ( unreserved | escaped | user_unreserved )+ { // ../grammars/belle_sip_message.g:390:31: ( unreserved | escaped | user_unreserved )+ { int cnt30=0; for (;;) { int alt30=4; switch ( LA(1) ) { case COMMON_CHAR: case DASH: case DIGIT: case DOT: case EMARK: case HEX_CHAR: case LPAREN: case RPAREN: case SQUOTE: case STAR: case TILDE: case USCORE: { alt30=1; } break; case PERCENT: { alt30=2; } break; case AND: case COMMA: case DOLLARD: case EQUAL: case PLUS: case QMARK: case SEMI: case SLASH: { alt30=3; } break; } switch (alt30) { case 1: // ../grammars/belle_sip_message.g:390:33: unreserved { FOLLOWPUSH(FOLLOW_unreserved_in_authority_user1451); unreserved(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleauthority_userEx; } if (HASFAILED()) { return retval; } } break; case 2: // ../grammars/belle_sip_message.g:390:47: escaped { FOLLOWPUSH(FOLLOW_escaped_in_authority_user1456); escaped(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleauthority_userEx; } if (HASFAILED()) { return retval; } } break; case 3: // ../grammars/belle_sip_message.g:390:57: user_unreserved { FOLLOWPUSH(FOLLOW_user_unreserved_in_authority_user1460); user_unreserved(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleauthority_userEx; } if (HASFAILED()) { return retval; } } break; default: if ( cnt30 >= 1 ) { goto loop30; } if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } /* mismatchedSetEx() */ CONSTRUCTEX(); EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME; goto ruleauthority_userEx; } cnt30++; } loop30: ; /* Jump to here if this rule does not match */ } if ( BACKTRACKING==0 ) { char* unescaped_username; unescaped_username=belle_sip_to_unescaped_string((const char *)STRSTREAM->toStringTT(STRSTREAM, retval.start, LT(-1)) ->chars); belle_generic_uri_set_user((SCOPE_TOP(authority_userinfo))->current,unescaped_username); belle_sip_free(unescaped_username); } } } // This is where rules clean up and exit // goto ruleauthority_userEx; /* Prevent compiler warnings */ ruleauthority_userEx: ; retval.stop = LT(-1); if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end authority_user */ /** * $ANTLR start authority_password * ../grammars/belle_sip_message.g:397:1: authority_password : ( unreserved | escaped | AND | EQUAL | PLUS | DOLLARD | COMMA )* ; */ static belle_sip_messageParser_authority_password_return authority_password(pbelle_sip_messageParser ctx) { belle_sip_messageParser_authority_password_return retval; /* Initialize rule variables */ retval.start = LT(1); retval.stop = retval.start; { // ../grammars/belle_sip_message.g:397:27: ( ( unreserved | escaped | AND | EQUAL | PLUS | DOLLARD | COMMA )* ) // ../grammars/belle_sip_message.g:397:31: ( unreserved | escaped | AND | EQUAL | PLUS | DOLLARD | COMMA )* { // ../grammars/belle_sip_message.g:397:31: ( unreserved | escaped | AND | EQUAL | PLUS | DOLLARD | COMMA )* for (;;) { int alt31=8; switch ( LA(1) ) { case COMMON_CHAR: case DASH: case DIGIT: case DOT: case EMARK: case HEX_CHAR: case LPAREN: case RPAREN: case SQUOTE: case STAR: case TILDE: case USCORE: { alt31=1; } break; case PERCENT: { alt31=2; } break; case AND: { alt31=3; } break; case EQUAL: { alt31=4; } break; case PLUS: { alt31=5; } break; case DOLLARD: { alt31=6; } break; case COMMA: { alt31=7; } break; } switch (alt31) { case 1: // ../grammars/belle_sip_message.g:397:33: unreserved { FOLLOWPUSH(FOLLOW_unreserved_in_authority_password1484); unreserved(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleauthority_passwordEx; } if (HASFAILED()) { return retval; } } break; case 2: // ../grammars/belle_sip_message.g:397:46: escaped { FOLLOWPUSH(FOLLOW_escaped_in_authority_password1488); escaped(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleauthority_passwordEx; } if (HASFAILED()) { return retval; } } break; case 3: // ../grammars/belle_sip_message.g:397:56: AND { MATCHT(AND, &FOLLOW_AND_in_authority_password1492); if (HASEXCEPTION()) { goto ruleauthority_passwordEx; } if (HASFAILED()) { return retval; } } break; case 4: // ../grammars/belle_sip_message.g:397:62: EQUAL { MATCHT(EQUAL, &FOLLOW_EQUAL_in_authority_password1496); if (HASEXCEPTION()) { goto ruleauthority_passwordEx; } if (HASFAILED()) { return retval; } } break; case 5: // ../grammars/belle_sip_message.g:397:70: PLUS { MATCHT(PLUS, &FOLLOW_PLUS_in_authority_password1500); if (HASEXCEPTION()) { goto ruleauthority_passwordEx; } if (HASFAILED()) { return retval; } } break; case 6: // ../grammars/belle_sip_message.g:397:77: DOLLARD { MATCHT(DOLLARD, &FOLLOW_DOLLARD_in_authority_password1504); if (HASEXCEPTION()) { goto ruleauthority_passwordEx; } if (HASFAILED()) { return retval; } } break; case 7: // ../grammars/belle_sip_message.g:397:87: COMMA { MATCHT(COMMA, &FOLLOW_COMMA_in_authority_password1508); if (HASEXCEPTION()) { goto ruleauthority_passwordEx; } if (HASFAILED()) { return retval; } } break; default: goto loop31; /* break out of the loop */ break; } } loop31: ; /* Jump out to here if this rule does not match */ if ( BACKTRACKING==0 ) { char* unescaped_userpasswd; const char* source = (const char*)STRSTREAM->toStringTT(STRSTREAM, retval.start, LT(-1)) ->chars; if( source != NULL ){ unescaped_userpasswd=belle_sip_to_unescaped_string((const char *)source); belle_generic_uri_set_user_password((SCOPE_TOP(authority_userinfo))->current,unescaped_userpasswd); belle_sip_free(unescaped_userpasswd); } } } } // This is where rules clean up and exit // goto ruleauthority_passwordEx; /* Prevent compiler warnings */ ruleauthority_passwordEx: ; retval.stop = LT(-1); if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end authority_password */ /** * $ANTLR start authority_hostport * ../grammars/belle_sip_message.g:406:1: authority_hostport[belle_generic_uri_t* uri] : host ( ( COLON port )? ( semi generic_param[BELLE_SIP_PARAMETERS($authority_hostport::current)] )* ) ; */ static void authority_hostport(pbelle_sip_messageParser ctx, belle_generic_uri_t* uri) { belle_sip_messageParser_port_return port27; #undef RETURN_TYPE_port27 #define RETURN_TYPE_port27 belle_sip_messageParser_port_return const char* host28; #undef RETURN_TYPE_host28 #define RETURN_TYPE_host28 const char* /* Initialize rule variables */ ctx->pbelle_sip_messageParser_authority_hostportTop = pbelle_sip_messageParser_authority_hostportPush(ctx); (SCOPE_TOP(authority_hostport))->current=uri; { // ../grammars/belle_sip_message.g:409:9: ( host ( ( COLON port )? ( semi generic_param[BELLE_SIP_PARAMETERS($authority_hostport::current)] )* ) ) // ../grammars/belle_sip_message.g:409:13: host ( ( COLON port )? ( semi generic_param[BELLE_SIP_PARAMETERS($authority_hostport::current)] )* ) { FOLLOWPUSH(FOLLOW_host_in_authority_hostport1540); host28=host(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleauthority_hostportEx; } if (HASFAILED()) { pbelle_sip_messageParser_authority_hostportPop(ctx); return ; } // ../grammars/belle_sip_message.g:410:3: ( ( COLON port )? ( semi generic_param[BELLE_SIP_PARAMETERS($authority_hostport::current)] )* ) // ../grammars/belle_sip_message.g:410:4: ( COLON port )? ( semi generic_param[BELLE_SIP_PARAMETERS($authority_hostport::current)] )* { // ../grammars/belle_sip_message.g:410:4: ( COLON port )? { int alt32=2; switch ( LA(1) ) { case COLON: { alt32=1; } break; } switch (alt32) { case 1: // ../grammars/belle_sip_message.g:410:6: COLON port { MATCHT(COLON, &FOLLOW_COLON_in_authority_hostport1547); if (HASEXCEPTION()) { goto ruleauthority_hostportEx; } if (HASFAILED()) { pbelle_sip_messageParser_authority_hostportPop(ctx); return ; } FOLLOWPUSH(FOLLOW_port_in_authority_hostport1549); port27=port(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleauthority_hostportEx; } if (HASFAILED()) { pbelle_sip_messageParser_authority_hostportPop(ctx); return ; } if ( BACKTRACKING==0 ) { belle_generic_uri_set_port((SCOPE_TOP(authority_hostport))->current, port27.ret ); } } break; } } // ../grammars/belle_sip_message.g:411:3: ( semi generic_param[BELLE_SIP_PARAMETERS($authority_hostport::current)] )* for (;;) { int alt33=2; alt33 = cdfa33.predict(ctx, RECOGNIZER, ISTREAM, &cdfa33); if (HASEXCEPTION()) { goto ruleauthority_hostportEx; } if (HASFAILED()) { pbelle_sip_messageParser_authority_hostportPop(ctx); return ; } switch (alt33) { case 1: // ../grammars/belle_sip_message.g:411:4: semi generic_param[BELLE_SIP_PARAMETERS($authority_hostport::current)] { FOLLOWPUSH(FOLLOW_semi_in_authority_hostport1558); semi(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleauthority_hostportEx; } if (HASFAILED()) { pbelle_sip_messageParser_authority_hostportPop(ctx); return ; } FOLLOWPUSH(FOLLOW_generic_param_in_authority_hostport1561); generic_param(ctx, BELLE_SIP_PARAMETERS((SCOPE_TOP(authority_hostport))->current)); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleauthority_hostportEx; } if (HASFAILED()) { pbelle_sip_messageParser_authority_hostportPop(ctx); return ; } } break; default: goto loop33; /* break out of the loop */ break; } } loop33: ; /* Jump out to here if this rule does not match */ } if ( BACKTRACKING==0 ) { belle_generic_uri_set_host((SCOPE_TOP(authority_hostport))->current, host28 ); } } } // This is where rules clean up and exit // goto ruleauthority_hostportEx; /* Prevent compiler warnings */ ruleauthority_hostportEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } pbelle_sip_messageParser_authority_hostportPop(ctx); return ; } /* $ANTLR end authority_hostport */ /** * $ANTLR start generic_param * ../grammars/belle_sip_message.g:418:1: generic_param[belle_sip_parameters_t* object] returns [belle_sip_param_pair_t* ret=NULL] : token ( equal gen_value )? ; */ static belle_sip_param_pair_t* generic_param(pbelle_sip_messageParser ctx, belle_sip_parameters_t* object) { belle_sip_param_pair_t* ret; belle_sip_messageParser_gen_value_return gen_value29; #undef RETURN_TYPE_gen_value29 #define RETURN_TYPE_gen_value29 belle_sip_messageParser_gen_value_return belle_sip_messageParser_token_return token30; #undef RETURN_TYPE_token30 #define RETURN_TYPE_token30 belle_sip_messageParser_token_return /* Initialize rule variables */ ret = NULL; ctx->pbelle_sip_messageParser_generic_paramTop = pbelle_sip_messageParser_generic_paramPush(ctx); (SCOPE_TOP(generic_param))->is_value=0; (SCOPE_TOP(generic_param))->gen_value_string=NULL; { // ../grammars/belle_sip_message.g:421:3: ( token ( equal gen_value )? ) // ../grammars/belle_sip_message.g:421:8: token ( equal gen_value )? { FOLLOWPUSH(FOLLOW_token_in_generic_param1603); token30=token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulegeneric_paramEx; } if (HASFAILED()) { pbelle_sip_messageParser_generic_paramPop(ctx); return ret; } // ../grammars/belle_sip_message.g:421:14: ( equal gen_value )? { int alt34=2; alt34 = cdfa34.predict(ctx, RECOGNIZER, ISTREAM, &cdfa34); if (HASEXCEPTION()) { goto rulegeneric_paramEx; } if (HASFAILED()) { pbelle_sip_messageParser_generic_paramPop(ctx); return ret; } switch (alt34) { case 1: // ../grammars/belle_sip_message.g:421:17: equal gen_value { FOLLOWPUSH(FOLLOW_equal_in_generic_param1608); equal(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulegeneric_paramEx; } if (HASFAILED()) { pbelle_sip_messageParser_generic_paramPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_gen_value_in_generic_param1610); gen_value29=gen_value(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulegeneric_paramEx; } if (HASFAILED()) { pbelle_sip_messageParser_generic_paramPop(ctx); return ret; } if ( BACKTRACKING==0 ) { (SCOPE_TOP(generic_param))->gen_value_string=(char*)( (STRSTREAM->toStringTT(STRSTREAM, gen_value29.start, gen_value29.stop)) ->chars); } } break; } } if ( BACKTRACKING==0 ) { if (object == NULL) { ret=belle_sip_param_pair_new((const char*)( (STRSTREAM->toStringTT(STRSTREAM, token30.start, token30.stop)) ->chars) ,(SCOPE_TOP(generic_param))->gen_value_string); } else { belle_sip_parameters_set_parameter(object ,(const char*)((STRSTREAM->toStringTT(STRSTREAM, token30.start, token30.stop)) ->chars) ,(SCOPE_TOP(generic_param))->gen_value_string); ret=NULL; } } } } // This is where rules clean up and exit // goto rulegeneric_paramEx; /* Prevent compiler warnings */ rulegeneric_paramEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } pbelle_sip_messageParser_generic_paramPop(ctx); return ret; } /* $ANTLR end generic_param */ /** * $ANTLR start gen_value * ../grammars/belle_sip_message.g:432:1: gen_value : ( token | quoted_string ); */ static belle_sip_messageParser_gen_value_return gen_value(pbelle_sip_messageParser ctx) { belle_sip_messageParser_gen_value_return retval; /* Initialize rule variables */ retval.start = LT(1); retval.stop = retval.start; { { // ../grammars/belle_sip_message.g:433:3: ( token | quoted_string ) ANTLR3_UINT32 alt35; alt35=2; switch ( LA(1) ) { case BQUOTE: case COMMON_CHAR: case DASH: case DIGIT: case DOT: case EMARK: case HEX_CHAR: case LPAREN: case PERCENT: case PLUS: case RPAREN: case SQUOTE: case STAR: case TILDE: case USCORE: { alt35=1; } break; case DQUOTE: { alt35=2; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 35; EXCEPTION->state = 0; goto rulegen_valueEx; } switch (alt35) { case 1: // ../grammars/belle_sip_message.g:433:7: token { FOLLOWPUSH(FOLLOW_token_in_gen_value1628); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulegen_valueEx; } if (HASFAILED()) { return retval; } } break; case 2: // ../grammars/belle_sip_message.g:433:16: quoted_string { FOLLOWPUSH(FOLLOW_quoted_string_in_gen_value1633); quoted_string(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulegen_valueEx; } if (HASFAILED()) { return retval; } } break; } } } // This is where rules clean up and exit // goto rulegen_valueEx; /* Prevent compiler warnings */ rulegen_valueEx: ; retval.stop = LT(-1); if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end gen_value */ /** * $ANTLR start quoted_string * ../grammars/belle_sip_message.g:435:1: quoted_string options {greedy=false; } : DQUOTE (~ ( DQUOTE | BSLASH ) | ( BSLASH . ) )* DQUOTE ; */ static belle_sip_messageParser_quoted_string_return quoted_string(pbelle_sip_messageParser ctx) { belle_sip_messageParser_quoted_string_return retval; /* Initialize rule variables */ retval.start = LT(1); retval.stop = retval.start; { // ../grammars/belle_sip_message.g:437:3: ( DQUOTE (~ ( DQUOTE | BSLASH ) | ( BSLASH . ) )* DQUOTE ) // ../grammars/belle_sip_message.g:437:5: DQUOTE (~ ( DQUOTE | BSLASH ) | ( BSLASH . ) )* DQUOTE { MATCHT(DQUOTE, &FOLLOW_DQUOTE_in_quoted_string1654); if (HASEXCEPTION()) { goto rulequoted_stringEx; } if (HASFAILED()) { return retval; } // ../grammars/belle_sip_message.g:437:12: (~ ( DQUOTE | BSLASH ) | ( BSLASH . ) )* for (;;) { int alt36=3; switch ( LA(1) ) { case AND: case AT: case BQUOTE: case COLON: case COMMA: case COMMON_CHAR: case CRLF: case DASH: case DIGIT: case DOLLARD: case DOT: case EMARK: case EQUAL: case HEX_CHAR: case HTAB: case LAQUOT: case LBRACE: case LPAREN: case LSBRAQUET: case OCTET: case OR: case PERCENT: case PLUS: case QMARK: case RAQUOT: case RBRACE: case RPAREN: case RSBRAQUET: case SEMI: case SLASH: case SP: case SQUOTE: case STAR: case TILDE: case USCORE: { alt36=1; } break; case BSLASH: { alt36=2; } break; } switch (alt36) { case 1: // ../grammars/belle_sip_message.g:437:13: ~ ( DQUOTE | BSLASH ) { if ( ((LA(1) >= AND) && (LA(1) <= BQUOTE)) || ((LA(1) >= COLON) && (LA(1) <= DOT)) || ((LA(1) >= EMARK) && (LA(1) <= USCORE)) ) { CONSUME(); PERRORRECOVERY=ANTLR3_FALSE; FAILEDFLAG=ANTLR3_FALSE; } else { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_MISMATCHED_SET_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_MISMATCHED_SET_NAME; EXCEPTION->expectingSet = NULL; goto rulequoted_stringEx; } } break; case 2: // ../grammars/belle_sip_message.g:437:34: ( BSLASH . ) { // ../grammars/belle_sip_message.g:437:34: ( BSLASH . ) // ../grammars/belle_sip_message.g:437:35: BSLASH . { MATCHT(BSLASH, &FOLLOW_BSLASH_in_quoted_string1669); if (HASEXCEPTION()) { goto rulequoted_stringEx; } if (HASFAILED()) { return retval; } MATCHANYT(); if (HASEXCEPTION()) { goto rulequoted_stringEx; } if (HASFAILED()) { return retval; } } } break; default: goto loop36; /* break out of the loop */ break; } } loop36: ; /* Jump out to here if this rule does not match */ MATCHT(DQUOTE, &FOLLOW_DQUOTE_in_quoted_string1677); if (HASEXCEPTION()) { goto rulequoted_stringEx; } if (HASFAILED()) { return retval; } } } // This is where rules clean up and exit // goto rulequoted_stringEx; /* Prevent compiler warnings */ rulequoted_stringEx: ; retval.stop = LT(-1); if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end quoted_string */ /** * $ANTLR start header_allow * ../grammars/belle_sip_message.g:465:1: header_allow returns [belle_sip_header_allow_t* ret] :{...}? token hcolon methods ; */ static belle_sip_header_allow_t* header_allow(pbelle_sip_messageParser ctx) { belle_sip_header_allow_t* ret; belle_sip_messageParser_methods_return methods31; #undef RETURN_TYPE_methods31 #define RETURN_TYPE_methods31 belle_sip_messageParser_methods_return /* Initialize rule variables */ ctx->pbelle_sip_messageParser_header_allowTop = pbelle_sip_messageParser_header_allowPush(ctx); (SCOPE_TOP(header_allow))->current= belle_sip_header_allow_new(); ret=(SCOPE_TOP(header_allow))->current; { // ../grammars/belle_sip_message.g:469:6: ({...}? token hcolon methods ) // ../grammars/belle_sip_message.g:469:6: {...}? token hcolon methods { if ( !((IS_TOKEN(Allow))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_header_allowPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(Allow)"; EXCEPTION->ruleName = (void *)"header_allow"; } FOLLOWPUSH(FOLLOW_token_in_header_allow1707); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_allowEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_allowPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_hcolon_in_header_allow1711); hcolon(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_allowEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_allowPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_methods_in_header_allow1713); methods31=methods(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_allowEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_allowPop(ctx); return ret; } if ( BACKTRACKING==0 ) { belle_sip_header_allow_set_method((SCOPE_TOP(header_allow))->current,(const char*)( (STRSTREAM->toStringTT(STRSTREAM, methods31.start, methods31.stop)) ->chars)); } } } // This is where rules clean up and exit // goto ruleheader_allowEx; /* Prevent compiler warnings */ ruleheader_allowEx: ; if (HASEXCEPTION()) { /* catch(decl,action) */ { belle_sip_message("[%s] reason [%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref((SCOPE_TOP(header_allow))->current); ret=NULL; } } else { } pbelle_sip_messageParser_header_allowPop(ctx); return ret; } /* $ANTLR end header_allow */ /** * $ANTLR start methods * ../grammars/belle_sip_message.g:476:1: methods : method ( comma method )* ; */ static belle_sip_messageParser_methods_return methods(pbelle_sip_messageParser ctx) { belle_sip_messageParser_methods_return retval; /* Initialize rule variables */ retval.start = LT(1); retval.stop = retval.start; { // ../grammars/belle_sip_message.g:476:9: ( method ( comma method )* ) // ../grammars/belle_sip_message.g:476:20: method ( comma method )* { FOLLOWPUSH(FOLLOW_method_in_methods1731); method(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulemethodsEx; } if (HASFAILED()) { return retval; } // ../grammars/belle_sip_message.g:476:27: ( comma method )* for (;;) { int alt37=2; switch ( LA(1) ) { case COMMA: case CRLF: case SP: { alt37=1; } break; } switch (alt37) { case 1: // ../grammars/belle_sip_message.g:476:28: comma method { FOLLOWPUSH(FOLLOW_comma_in_methods1734); comma(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulemethodsEx; } if (HASFAILED()) { return retval; } FOLLOWPUSH(FOLLOW_method_in_methods1736); method(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulemethodsEx; } if (HASFAILED()) { return retval; } } break; default: goto loop37; /* break out of the loop */ break; } } loop37: ; /* Jump out to here if this rule does not match */ } } // This is where rules clean up and exit // goto rulemethodsEx; /* Prevent compiler warnings */ rulemethodsEx: ; retval.stop = LT(-1); if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end methods */ /** * $ANTLR start authorization_token * ../grammars/belle_sip_message.g:477:1: authorization_token :{...}? token ; */ static void authorization_token(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:477:20: ({...}? token ) // ../grammars/belle_sip_message.g:477:22: {...}? token { if ( !((IS_TOKEN(Authorization))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(Authorization)"; EXCEPTION->ruleName = (void *)"authorization_token"; } FOLLOWPUSH(FOLLOW_token_in_authorization_token1746); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleauthorization_tokenEx; } if (HASFAILED()) { return ; } } } // This is where rules clean up and exit // goto ruleauthorization_tokenEx; /* Prevent compiler warnings */ ruleauthorization_tokenEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end authorization_token */ /** * $ANTLR start digest_token * ../grammars/belle_sip_message.g:478:1: digest_token :{...}? token ; */ static void digest_token(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:478:13: ({...}? token ) // ../grammars/belle_sip_message.g:478:15: {...}? token { if ( !((IS_TOKEN(Digest))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(Digest)"; EXCEPTION->ruleName = (void *)"digest_token"; } FOLLOWPUSH(FOLLOW_token_in_digest_token1754); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruledigest_tokenEx; } if (HASFAILED()) { return ; } } } // This is where rules clean up and exit // goto ruledigest_tokenEx; /* Prevent compiler warnings */ ruledigest_tokenEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end digest_token */ /** * $ANTLR start header_authorization * ../grammars/belle_sip_message.g:481:1: header_authorization returns [belle_sip_header_authorization_t* ret] : authorization_token hcolon credentials[$header_authorization::current] ; */ static belle_sip_header_authorization_t* header_authorization(pbelle_sip_messageParser ctx) { belle_sip_header_authorization_t* ret; /* Initialize rule variables */ ctx->pbelle_sip_messageParser_header_authorizationTop = pbelle_sip_messageParser_header_authorizationPush(ctx); (SCOPE_TOP(header_authorization))->current= belle_sip_header_authorization_new(); ret=(SCOPE_TOP(header_authorization))->current; { // ../grammars/belle_sip_message.g:484:3: ( authorization_token hcolon credentials[$header_authorization::current] ) // ../grammars/belle_sip_message.g:484:7: authorization_token hcolon credentials[$header_authorization::current] { FOLLOWPUSH(FOLLOW_authorization_token_in_header_authorization1781); authorization_token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_authorizationEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_authorizationPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_hcolon_in_header_authorization1785); hcolon(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_authorizationEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_authorizationPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_credentials_in_header_authorization1787); credentials(ctx, (SCOPE_TOP(header_authorization))->current); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_authorizationEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_authorizationPop(ctx); return ret; } } } // This is where rules clean up and exit // goto ruleheader_authorizationEx; /* Prevent compiler warnings */ ruleheader_authorizationEx: ; if (HASEXCEPTION()) { /* catch(decl,action) */ { belle_sip_message("[%s] reason [%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref((SCOPE_TOP(header_authorization))->current); ret=NULL; } } else { } pbelle_sip_messageParser_header_authorizationPop(ctx); return ret; } /* $ANTLR end header_authorization */ /** * $ANTLR start credentials * ../grammars/belle_sip_message.g:492:1: credentials[belle_sip_header_authorization_t* header_authorization_base] : ( ( digest_token lws digest_response[header_authorization_base] ) | other_response[header_authorization_base] ); */ static void credentials(pbelle_sip_messageParser ctx, belle_sip_header_authorization_t* header_authorization_base) { /* Initialize rule variables */ { { // ../grammars/belle_sip_message.g:493:3: ( ( digest_token lws digest_response[header_authorization_base] ) | other_response[header_authorization_base] ) ANTLR3_UINT32 alt38; alt38=2; alt38 = cdfa38.predict(ctx, RECOGNIZER, ISTREAM, &cdfa38); if (HASEXCEPTION()) { goto rulecredentialsEx; } if (HASFAILED()) { return ; } switch (alt38) { case 1: // ../grammars/belle_sip_message.g:493:7: ( digest_token lws digest_response[header_authorization_base] ) { // ../grammars/belle_sip_message.g:493:7: ( digest_token lws digest_response[header_authorization_base] ) // ../grammars/belle_sip_message.g:493:8: digest_token lws digest_response[header_authorization_base] { FOLLOWPUSH(FOLLOW_digest_token_in_credentials1810); digest_token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulecredentialsEx; } if (HASFAILED()) { return ; } if ( BACKTRACKING==0 ) { belle_sip_header_authorization_set_scheme(header_authorization_base,"Digest"); } FOLLOWPUSH(FOLLOW_lws_in_credentials1821); lws(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulecredentialsEx; } if (HASFAILED()) { return ; } FOLLOWPUSH(FOLLOW_digest_response_in_credentials1823); digest_response(ctx, header_authorization_base); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulecredentialsEx; } if (HASFAILED()) { return ; } } } break; case 2: // ../grammars/belle_sip_message.g:495:24: other_response[header_authorization_base] { FOLLOWPUSH(FOLLOW_other_response_in_credentials1850); other_response(ctx, header_authorization_base); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulecredentialsEx; } if (HASFAILED()) { return ; } } break; } } } // This is where rules clean up and exit // goto rulecredentialsEx; /* Prevent compiler warnings */ rulecredentialsEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end credentials */ /** * $ANTLR start digest_response * ../grammars/belle_sip_message.g:496:1: digest_response[belle_sip_header_authorization_t* header_authorization_base] : dig_resp[header_authorization_base] ( comma dig_resp[header_authorization_base] )* ; */ static void digest_response(pbelle_sip_messageParser ctx, belle_sip_header_authorization_t* header_authorization_base) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:497:3: ( dig_resp[header_authorization_base] ( comma dig_resp[header_authorization_base] )* ) // ../grammars/belle_sip_message.g:497:7: dig_resp[header_authorization_base] ( comma dig_resp[header_authorization_base] )* { FOLLOWPUSH(FOLLOW_dig_resp_in_digest_response1865); dig_resp(ctx, header_authorization_base); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruledigest_responseEx; } if (HASFAILED()) { return ; } // ../grammars/belle_sip_message.g:497:43: ( comma dig_resp[header_authorization_base] )* for (;;) { int alt39=2; switch ( LA(1) ) { case COMMA: case CRLF: case SP: { alt39=1; } break; } switch (alt39) { case 1: // ../grammars/belle_sip_message.g:497:44: comma dig_resp[header_authorization_base] { FOLLOWPUSH(FOLLOW_comma_in_digest_response1869); comma(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruledigest_responseEx; } if (HASFAILED()) { return ; } FOLLOWPUSH(FOLLOW_dig_resp_in_digest_response1871); dig_resp(ctx, header_authorization_base); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruledigest_responseEx; } if (HASFAILED()) { return ; } } break; default: goto loop39; /* break out of the loop */ break; } } loop39: ; /* Jump out to here if this rule does not match */ } } // This is where rules clean up and exit // goto ruledigest_responseEx; /* Prevent compiler warnings */ ruledigest_responseEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end digest_response */ /** * $ANTLR start dig_resp * ../grammars/belle_sip_message.g:498:1: dig_resp[belle_sip_header_authorization_t* header_authorization_base] : ( username | realm | nonce | digest_uri[header_authorization_base] | dresponse | algorithm | cnonce | opaque | message_qop | nonce_count | auth_param[header_authorization_base] ); */ static void dig_resp(pbelle_sip_messageParser ctx, belle_sip_header_authorization_t* header_authorization_base) { char* username32; #undef RETURN_TYPE_username32 #define RETURN_TYPE_username32 char* char* realm33; #undef RETURN_TYPE_realm33 #define RETURN_TYPE_realm33 char* char* nonce34; #undef RETURN_TYPE_nonce34 #define RETURN_TYPE_nonce34 char* char* dresponse35; #undef RETURN_TYPE_dresponse35 #define RETURN_TYPE_dresponse35 char* const char* algorithm36; #undef RETURN_TYPE_algorithm36 #define RETURN_TYPE_algorithm36 const char* char* cnonce37; #undef RETURN_TYPE_cnonce37 #define RETURN_TYPE_cnonce37 char* char* opaque38; #undef RETURN_TYPE_opaque38 #define RETURN_TYPE_opaque38 char* const char* message_qop39; #undef RETURN_TYPE_message_qop39 #define RETURN_TYPE_message_qop39 const char* const char* nonce_count40; #undef RETURN_TYPE_nonce_count40 #define RETURN_TYPE_nonce_count40 const char* /* Initialize rule variables */ { { // ../grammars/belle_sip_message.g:499:3: ( username | realm | nonce | digest_uri[header_authorization_base] | dresponse | algorithm | cnonce | opaque | message_qop | nonce_count | auth_param[header_authorization_base] ) ANTLR3_UINT32 alt40; alt40=11; alt40 = cdfa40.predict(ctx, RECOGNIZER, ISTREAM, &cdfa40); if (HASEXCEPTION()) { goto ruledig_respEx; } if (HASFAILED()) { return ; } switch (alt40) { case 1: // ../grammars/belle_sip_message.g:499:7: username { FOLLOWPUSH(FOLLOW_username_in_dig_resp1888); username32=username(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruledig_respEx; } if (HASFAILED()) { return ; } if ( BACKTRACKING==0 ) { belle_sip_header_authorization_set_username(header_authorization_base,username32 ); belle_sip_free(username32 ); } } break; case 2: // ../grammars/belle_sip_message.g:502:5: realm { FOLLOWPUSH(FOLLOW_realm_in_dig_resp1896); realm33=realm(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruledig_respEx; } if (HASFAILED()) { return ; } if ( BACKTRACKING==0 ) { belle_sip_header_authorization_set_realm(header_authorization_base,(char*)realm33 ); belle_sip_free(realm33 ); } } break; case 3: // ../grammars/belle_sip_message.g:505:5: nonce { FOLLOWPUSH(FOLLOW_nonce_in_dig_resp1904); nonce34=nonce(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruledig_respEx; } if (HASFAILED()) { return ; } if ( BACKTRACKING==0 ) { belle_sip_header_authorization_set_nonce(header_authorization_base,(char*)nonce34 ); belle_sip_free(nonce34 ); } } break; case 4: // ../grammars/belle_sip_message.g:508:5: digest_uri[header_authorization_base] { FOLLOWPUSH(FOLLOW_digest_uri_in_dig_resp1912); digest_uri(ctx, header_authorization_base); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruledig_respEx; } if (HASFAILED()) { return ; } } break; case 5: // ../grammars/belle_sip_message.g:509:5: dresponse { FOLLOWPUSH(FOLLOW_dresponse_in_dig_resp1919); dresponse35=dresponse(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruledig_respEx; } if (HASFAILED()) { return ; } if ( BACKTRACKING==0 ) { belle_sip_header_authorization_set_response(header_authorization_base,(char*)dresponse35 ); belle_sip_free(dresponse35 ); } } break; case 6: // ../grammars/belle_sip_message.g:512:5: algorithm { FOLLOWPUSH(FOLLOW_algorithm_in_dig_resp1928); algorithm36=algorithm(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruledig_respEx; } if (HASFAILED()) { return ; } if ( BACKTRACKING==0 ) { belle_sip_header_authorization_set_algorithm(header_authorization_base,(char*)algorithm36 ); } } break; case 7: // ../grammars/belle_sip_message.g:515:5: cnonce { FOLLOWPUSH(FOLLOW_cnonce_in_dig_resp1937); cnonce37=cnonce(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruledig_respEx; } if (HASFAILED()) { return ; } if ( BACKTRACKING==0 ) { belle_sip_header_authorization_set_cnonce(header_authorization_base,(char*)cnonce37 ); belle_sip_free(cnonce37 ); } } break; case 8: // ../grammars/belle_sip_message.g:519:5: opaque { FOLLOWPUSH(FOLLOW_opaque_in_dig_resp1944); opaque38=opaque(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruledig_respEx; } if (HASFAILED()) { return ; } if ( BACKTRACKING==0 ) { belle_sip_header_authorization_set_opaque(header_authorization_base,(char*)opaque38 ); belle_sip_free(opaque38 ); } } break; case 9: // ../grammars/belle_sip_message.g:523:5: message_qop { FOLLOWPUSH(FOLLOW_message_qop_in_dig_resp1952); message_qop39=message_qop(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruledig_respEx; } if (HASFAILED()) { return ; } if ( BACKTRACKING==0 ) { belle_sip_header_authorization_set_qop(header_authorization_base,message_qop39 ); } } break; case 10: // ../grammars/belle_sip_message.g:526:5: nonce_count { FOLLOWPUSH(FOLLOW_nonce_count_in_dig_resp1959); nonce_count40=nonce_count(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruledig_respEx; } if (HASFAILED()) { return ; } if ( BACKTRACKING==0 ) { belle_sip_header_authorization_set_nonce_count(header_authorization_base,atoi((char*)nonce_count40 )); } } break; case 11: // ../grammars/belle_sip_message.g:529:5: auth_param[header_authorization_base] { FOLLOWPUSH(FOLLOW_auth_param_in_dig_resp1966); auth_param(ctx, header_authorization_base); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruledig_respEx; } if (HASFAILED()) { return ; } } break; } } } // This is where rules clean up and exit // goto ruledig_respEx; /* Prevent compiler warnings */ ruledig_respEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end dig_resp */ /** * $ANTLR start username_token * ../grammars/belle_sip_message.g:531:1: username_token :{...}? token ; */ static void username_token(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:531:15: ({...}? token ) // ../grammars/belle_sip_message.g:531:17: {...}? token { if ( !((IS_TOKEN(username))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(username)"; EXCEPTION->ruleName = (void *)"username_token"; } FOLLOWPUSH(FOLLOW_token_in_username_token1979); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleusername_tokenEx; } if (HASFAILED()) { return ; } } } // This is where rules clean up and exit // goto ruleusername_tokenEx; /* Prevent compiler warnings */ ruleusername_tokenEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end username_token */ /** * $ANTLR start username * ../grammars/belle_sip_message.g:532:1: username returns [char* ret=NULL] : username_token equal username_value ; */ static char* username(pbelle_sip_messageParser ctx) { char* ret; belle_sip_messageParser_username_value_return username_value41; #undef RETURN_TYPE_username_value41 #define RETURN_TYPE_username_value41 belle_sip_messageParser_username_value_return /* Initialize rule variables */ ret = NULL; { // ../grammars/belle_sip_message.g:533:3: ( username_token equal username_value ) // ../grammars/belle_sip_message.g:533:7: username_token equal username_value { FOLLOWPUSH(FOLLOW_username_token_in_username1994); username_token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleusernameEx; } if (HASFAILED()) { return ret; } FOLLOWPUSH(FOLLOW_equal_in_username1998); equal(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleusernameEx; } if (HASFAILED()) { return ret; } FOLLOWPUSH(FOLLOW_username_value_in_username2000); username_value41=username_value(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleusernameEx; } if (HASFAILED()) { return ret; } if ( BACKTRACKING==0 ) { ret= _belle_sip_str_dup_and_unquote_string((char*) (STRSTREAM->toStringTT(STRSTREAM, username_value41.start, username_value41.stop)) ->chars); } } } // This is where rules clean up and exit // goto ruleusernameEx; /* Prevent compiler warnings */ ruleusernameEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ret; } /* $ANTLR end username */ /** * $ANTLR start username_value * ../grammars/belle_sip_message.g:537:1: username_value : quoted_string ; */ static belle_sip_messageParser_username_value_return username_value(pbelle_sip_messageParser ctx) { belle_sip_messageParser_username_value_return retval; /* Initialize rule variables */ retval.start = LT(1); retval.stop = retval.start; { // ../grammars/belle_sip_message.g:537:19: ( quoted_string ) // ../grammars/belle_sip_message.g:537:22: quoted_string { FOLLOWPUSH(FOLLOW_quoted_string_in_username_value2014); quoted_string(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleusername_valueEx; } if (HASFAILED()) { return retval; } } } // This is where rules clean up and exit // goto ruleusername_valueEx; /* Prevent compiler warnings */ ruleusername_valueEx: ; retval.stop = LT(-1); if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end username_value */ /** * $ANTLR start uri_token * ../grammars/belle_sip_message.g:539:1: uri_token :{...}? token ; */ static void uri_token(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:539:10: ({...}? token ) // ../grammars/belle_sip_message.g:539:12: {...}? token { if ( !((IS_TOKEN(uri))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(uri)"; EXCEPTION->ruleName = (void *)"uri_token"; } FOLLOWPUSH(FOLLOW_token_in_uri_token2023); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleuri_tokenEx; } if (HASFAILED()) { return ; } } } // This is where rules clean up and exit // goto ruleuri_tokenEx; /* Prevent compiler warnings */ ruleuri_tokenEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end uri_token */ /** * $ANTLR start digest_uri * ../grammars/belle_sip_message.g:540:1: digest_uri[belle_sip_header_authorization_t* header_authorization_base] : uri_token equal DQUOTE uri DQUOTE ; */ static void digest_uri(pbelle_sip_messageParser ctx, belle_sip_header_authorization_t* header_authorization_base) { belle_sip_uri_t* uri42; #undef RETURN_TYPE_uri42 #define RETURN_TYPE_uri42 belle_sip_uri_t* /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:541:3: ( uri_token equal DQUOTE uri DQUOTE ) // ../grammars/belle_sip_message.g:541:7: uri_token equal DQUOTE uri DQUOTE { FOLLOWPUSH(FOLLOW_uri_token_in_digest_uri2036); uri_token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruledigest_uriEx; } if (HASFAILED()) { return ; } FOLLOWPUSH(FOLLOW_equal_in_digest_uri2040); equal(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruledigest_uriEx; } if (HASFAILED()) { return ; } MATCHT(DQUOTE, &FOLLOW_DQUOTE_in_digest_uri2042); if (HASEXCEPTION()) { goto ruledigest_uriEx; } if (HASFAILED()) { return ; } FOLLOWPUSH(FOLLOW_uri_in_digest_uri2044); uri42=uri(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruledigest_uriEx; } if (HASFAILED()) { return ; } MATCHT(DQUOTE, &FOLLOW_DQUOTE_in_digest_uri2046); if (HASEXCEPTION()) { goto ruledigest_uriEx; } if (HASFAILED()) { return ; } if ( BACKTRACKING==0 ) { belle_sip_header_authorization_set_uri(header_authorization_base,uri42 ); } } } // This is where rules clean up and exit // goto ruledigest_uriEx; /* Prevent compiler warnings */ ruledigest_uriEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end digest_uri */ /** * $ANTLR start message_qop * ../grammars/belle_sip_message.g:550:1: message_qop returns [const char* ret=NULL] :{...}? token equal qop_value ; */ static const char* message_qop(pbelle_sip_messageParser ctx) { const char* ret; belle_sip_messageParser_qop_value_return qop_value43; #undef RETURN_TYPE_qop_value43 #define RETURN_TYPE_qop_value43 belle_sip_messageParser_qop_value_return /* Initialize rule variables */ ret = NULL; { // ../grammars/belle_sip_message.g:551:3: ({...}? token equal qop_value ) // ../grammars/belle_sip_message.g:551:7: {...}? token equal qop_value { if ( !((IS_TOKEN(qop))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(qop)"; EXCEPTION->ruleName = (void *)"message_qop"; } FOLLOWPUSH(FOLLOW_token_in_message_qop2071); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulemessage_qopEx; } if (HASFAILED()) { return ret; } FOLLOWPUSH(FOLLOW_equal_in_message_qop2074); equal(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulemessage_qopEx; } if (HASFAILED()) { return ret; } FOLLOWPUSH(FOLLOW_qop_value_in_message_qop2077); qop_value43=qop_value(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulemessage_qopEx; } if (HASFAILED()) { return ret; } if ( BACKTRACKING==0 ) { ret= (const char*) (STRSTREAM->toStringTT(STRSTREAM, qop_value43.start, qop_value43.stop)) ->chars; } } } // This is where rules clean up and exit // goto rulemessage_qopEx; /* Prevent compiler warnings */ rulemessage_qopEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ret; } /* $ANTLR end message_qop */ /** * $ANTLR start qop_value * ../grammars/belle_sip_message.g:553:1: qop_value : token ; */ static belle_sip_messageParser_qop_value_return qop_value(pbelle_sip_messageParser ctx) { belle_sip_messageParser_qop_value_return retval; /* Initialize rule variables */ retval.start = LT(1); retval.stop = retval.start; { // ../grammars/belle_sip_message.g:554:3: ( token ) // ../grammars/belle_sip_message.g:554:6: token { FOLLOWPUSH(FOLLOW_token_in_qop_value2090); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleqop_valueEx; } if (HASFAILED()) { return retval; } } } // This is where rules clean up and exit // goto ruleqop_valueEx; /* Prevent compiler warnings */ ruleqop_valueEx: ; retval.stop = LT(-1); if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end qop_value */ /** * $ANTLR start cnonce * ../grammars/belle_sip_message.g:556:1: cnonce returns [char* ret=NULL] :{...}? token equal cnonce_value ; */ static char* cnonce(pbelle_sip_messageParser ctx) { char* ret; belle_sip_messageParser_cnonce_value_return cnonce_value44; #undef RETURN_TYPE_cnonce_value44 #define RETURN_TYPE_cnonce_value44 belle_sip_messageParser_cnonce_value_return /* Initialize rule variables */ ret = NULL; { // ../grammars/belle_sip_message.g:557:3: ({...}? token equal cnonce_value ) // ../grammars/belle_sip_message.g:557:7: {...}? token equal cnonce_value { if ( !((IS_TOKEN(cnonce))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(cnonce)"; EXCEPTION->ruleName = (void *)"cnonce"; } FOLLOWPUSH(FOLLOW_token_in_cnonce2108); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulecnonceEx; } if (HASFAILED()) { return ret; } FOLLOWPUSH(FOLLOW_equal_in_cnonce2112); equal(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulecnonceEx; } if (HASFAILED()) { return ret; } FOLLOWPUSH(FOLLOW_cnonce_value_in_cnonce2114); cnonce_value44=cnonce_value(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulecnonceEx; } if (HASFAILED()) { return ret; } if ( BACKTRACKING==0 ) { ret= _belle_sip_str_dup_and_unquote_string((char*) (STRSTREAM->toStringTT(STRSTREAM, cnonce_value44.start, cnonce_value44.stop)) ->chars); } } } // This is where rules clean up and exit // goto rulecnonceEx; /* Prevent compiler warnings */ rulecnonceEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ret; } /* $ANTLR end cnonce */ /** * $ANTLR start cnonce_value * ../grammars/belle_sip_message.g:560:1: cnonce_value : nonce_value ; */ static belle_sip_messageParser_cnonce_value_return cnonce_value(pbelle_sip_messageParser ctx) { belle_sip_messageParser_cnonce_value_return retval; /* Initialize rule variables */ retval.start = LT(1); retval.stop = retval.start; { // ../grammars/belle_sip_message.g:561:3: ( nonce_value ) // ../grammars/belle_sip_message.g:561:7: nonce_value { FOLLOWPUSH(FOLLOW_nonce_value_in_cnonce_value2127); nonce_value(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulecnonce_valueEx; } if (HASFAILED()) { return retval; } } } // This is where rules clean up and exit // goto rulecnonce_valueEx; /* Prevent compiler warnings */ rulecnonce_valueEx: ; retval.stop = LT(-1); if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end cnonce_value */ /** * $ANTLR start nonce_count * ../grammars/belle_sip_message.g:562:1: nonce_count returns [const char* ret=NULL] :{...}? token equal nc_value ; */ static const char* nonce_count(pbelle_sip_messageParser ctx) { const char* ret; belle_sip_messageParser_nc_value_return nc_value45; #undef RETURN_TYPE_nc_value45 #define RETURN_TYPE_nc_value45 belle_sip_messageParser_nc_value_return /* Initialize rule variables */ ret = NULL; { // ../grammars/belle_sip_message.g:563:3: ({...}? token equal nc_value ) // ../grammars/belle_sip_message.g:563:7: {...}? token equal nc_value { if ( !((IS_TOKEN(nc))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(nc)"; EXCEPTION->ruleName = (void *)"nonce_count"; } FOLLOWPUSH(FOLLOW_token_in_nonce_count2144); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulenonce_countEx; } if (HASFAILED()) { return ret; } FOLLOWPUSH(FOLLOW_equal_in_nonce_count2148); equal(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulenonce_countEx; } if (HASFAILED()) { return ret; } FOLLOWPUSH(FOLLOW_nc_value_in_nonce_count2150); nc_value45=nc_value(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulenonce_countEx; } if (HASFAILED()) { return ret; } if ( BACKTRACKING==0 ) { ret=(char*) (STRSTREAM->toStringTT(STRSTREAM, nc_value45.start, nc_value45.stop)) ->chars; } } } // This is where rules clean up and exit // goto rulenonce_countEx; /* Prevent compiler warnings */ rulenonce_countEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ret; } /* $ANTLR end nonce_count */ /** * $ANTLR start nc_value * ../grammars/belle_sip_message.g:564:1: nc_value : huit_lhex ; */ static belle_sip_messageParser_nc_value_return nc_value(pbelle_sip_messageParser ctx) { belle_sip_messageParser_nc_value_return retval; /* Initialize rule variables */ retval.start = LT(1); retval.stop = retval.start; { // ../grammars/belle_sip_message.g:565:3: ( huit_lhex ) // ../grammars/belle_sip_message.g:565:7: huit_lhex { FOLLOWPUSH(FOLLOW_huit_lhex_in_nc_value2163); huit_lhex(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulenc_valueEx; } if (HASFAILED()) { return retval; } } } // This is where rules clean up and exit // goto rulenc_valueEx; /* Prevent compiler warnings */ rulenc_valueEx: ; retval.stop = LT(-1); if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end nc_value */ /** * $ANTLR start dresponse * ../grammars/belle_sip_message.g:566:1: dresponse returns [char* ret=NULL] :{...}? token equal request_digest ; */ static char* dresponse(pbelle_sip_messageParser ctx) { char* ret; belle_sip_messageParser_request_digest_return request_digest46; #undef RETURN_TYPE_request_digest46 #define RETURN_TYPE_request_digest46 belle_sip_messageParser_request_digest_return /* Initialize rule variables */ ret = NULL; { // ../grammars/belle_sip_message.g:567:3: ({...}? token equal request_digest ) // ../grammars/belle_sip_message.g:567:7: {...}? token equal request_digest { if ( !((IS_TOKEN(response))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(response)"; EXCEPTION->ruleName = (void *)"dresponse"; } FOLLOWPUSH(FOLLOW_token_in_dresponse2181); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruledresponseEx; } if (HASFAILED()) { return ret; } FOLLOWPUSH(FOLLOW_equal_in_dresponse2185); equal(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruledresponseEx; } if (HASFAILED()) { return ret; } FOLLOWPUSH(FOLLOW_request_digest_in_dresponse2187); request_digest46=request_digest(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruledresponseEx; } if (HASFAILED()) { return ret; } if ( BACKTRACKING==0 ) { ret= _belle_sip_str_dup_and_unquote_string((char*) (STRSTREAM->toStringTT(STRSTREAM, request_digest46.start, request_digest46.stop)) ->chars); } } } // This is where rules clean up and exit // goto ruledresponseEx; /* Prevent compiler warnings */ ruledresponseEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ret; } /* $ANTLR end dresponse */ /** * $ANTLR start request_digest * ../grammars/belle_sip_message.g:570:1: request_digest : quoted_string ; */ static belle_sip_messageParser_request_digest_return request_digest(pbelle_sip_messageParser ctx) { belle_sip_messageParser_request_digest_return retval; /* Initialize rule variables */ retval.start = LT(1); retval.stop = retval.start; { // ../grammars/belle_sip_message.g:571:3: ( quoted_string ) // ../grammars/belle_sip_message.g:571:7: quoted_string { FOLLOWPUSH(FOLLOW_quoted_string_in_request_digest2199); quoted_string(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulerequest_digestEx; } if (HASFAILED()) { return retval; } } } // This is where rules clean up and exit // goto rulerequest_digestEx; /* Prevent compiler warnings */ rulerequest_digestEx: ; retval.stop = LT(-1); if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end request_digest */ /** * $ANTLR start huit_lhex * ../grammars/belle_sip_message.g:573:1: huit_lhex : ( hexdigit )+ ; */ static void huit_lhex(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:574:3: ( ( hexdigit )+ ) // ../grammars/belle_sip_message.g:574:5: ( hexdigit )+ { // ../grammars/belle_sip_message.g:574:5: ( hexdigit )+ { int cnt41=0; for (;;) { int alt41=2; switch ( LA(1) ) { case DIGIT: case HEX_CHAR: { alt41=1; } break; } switch (alt41) { case 1: // ../grammars/belle_sip_message.g:574:5: hexdigit { FOLLOWPUSH(FOLLOW_hexdigit_in_huit_lhex2210); hexdigit(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulehuit_lhexEx; } if (HASFAILED()) { return ; } } break; default: if ( cnt41 >= 1 ) { goto loop41; } if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } /* mismatchedSetEx() */ CONSTRUCTEX(); EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME; goto rulehuit_lhexEx; } cnt41++; } loop41: ; /* Jump to here if this rule does not match */ } } } // This is where rules clean up and exit // goto rulehuit_lhexEx; /* Prevent compiler warnings */ rulehuit_lhexEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end huit_lhex */ /** * $ANTLR start auth_param * ../grammars/belle_sip_message.g:576:1: auth_param[belle_sip_header_authorization_t* header_authorization_base] : auth_param_name equal auth_param_value ; */ static void auth_param(pbelle_sip_messageParser ctx, belle_sip_header_authorization_t* header_authorization_base) { belle_sip_messageParser_auth_param_name_return auth_param_name47; #undef RETURN_TYPE_auth_param_name47 #define RETURN_TYPE_auth_param_name47 belle_sip_messageParser_auth_param_name_return belle_sip_messageParser_auth_param_value_return auth_param_value48; #undef RETURN_TYPE_auth_param_value48 #define RETURN_TYPE_auth_param_value48 belle_sip_messageParser_auth_param_value_return /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:577:3: ( auth_param_name equal auth_param_value ) // ../grammars/belle_sip_message.g:577:7: auth_param_name equal auth_param_value { FOLLOWPUSH(FOLLOW_auth_param_name_in_auth_param2225); auth_param_name47=auth_param_name(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleauth_paramEx; } if (HASFAILED()) { return ; } FOLLOWPUSH(FOLLOW_equal_in_auth_param2227); equal(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleauth_paramEx; } if (HASFAILED()) { return ; } FOLLOWPUSH(FOLLOW_auth_param_value_in_auth_param2250); auth_param_value48=auth_param_value(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleauth_paramEx; } if (HASFAILED()) { return ; } if ( BACKTRACKING==0 ) { belle_sip_parameters_set_parameter(BELLE_SIP_PARAMETERS(header_authorization_base) ,(char*)(STRSTREAM->toStringTT(STRSTREAM, auth_param_name47.start, auth_param_name47.stop)) ->chars ,(char*)(STRSTREAM->toStringTT(STRSTREAM, auth_param_value48.start, auth_param_value48.stop)) ->chars); } } } // This is where rules clean up and exit // goto ruleauth_paramEx; /* Prevent compiler warnings */ ruleauth_paramEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end auth_param */ /** * $ANTLR start auth_param_value * ../grammars/belle_sip_message.g:583:1: auth_param_value : ( token | quoted_string ); */ static belle_sip_messageParser_auth_param_value_return auth_param_value(pbelle_sip_messageParser ctx) { belle_sip_messageParser_auth_param_value_return retval; /* Initialize rule variables */ retval.start = LT(1); retval.stop = retval.start; { { // ../grammars/belle_sip_message.g:583:18: ( token | quoted_string ) ANTLR3_UINT32 alt42; alt42=2; switch ( LA(1) ) { case BQUOTE: case COMMON_CHAR: case DASH: case DIGIT: case DOT: case EMARK: case HEX_CHAR: case LPAREN: case PERCENT: case PLUS: case RPAREN: case SQUOTE: case STAR: case TILDE: case USCORE: { alt42=1; } break; case DQUOTE: { alt42=2; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 42; EXCEPTION->state = 0; goto ruleauth_param_valueEx; } switch (alt42) { case 1: // ../grammars/belle_sip_message.g:583:20: token { FOLLOWPUSH(FOLLOW_token_in_auth_param_value2270); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleauth_param_valueEx; } if (HASFAILED()) { return retval; } } break; case 2: // ../grammars/belle_sip_message.g:583:28: quoted_string { FOLLOWPUSH(FOLLOW_quoted_string_in_auth_param_value2274); quoted_string(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleauth_param_valueEx; } if (HASFAILED()) { return retval; } } break; } } } // This is where rules clean up and exit // goto ruleauth_param_valueEx; /* Prevent compiler warnings */ ruleauth_param_valueEx: ; retval.stop = LT(-1); if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end auth_param_value */ /** * $ANTLR start auth_param_name * ../grammars/belle_sip_message.g:584:1: auth_param_name : token ; */ static belle_sip_messageParser_auth_param_name_return auth_param_name(pbelle_sip_messageParser ctx) { belle_sip_messageParser_auth_param_name_return retval; /* Initialize rule variables */ retval.start = LT(1); retval.stop = retval.start; { // ../grammars/belle_sip_message.g:585:3: ( token ) // ../grammars/belle_sip_message.g:585:7: token { FOLLOWPUSH(FOLLOW_token_in_auth_param_name2286); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleauth_param_nameEx; } if (HASFAILED()) { return retval; } } } // This is where rules clean up and exit // goto ruleauth_param_nameEx; /* Prevent compiler warnings */ ruleauth_param_nameEx: ; retval.stop = LT(-1); if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end auth_param_name */ /** * $ANTLR start other_response * ../grammars/belle_sip_message.g:586:1: other_response[belle_sip_header_authorization_t* header_authorization_base] : auth_scheme lws auth_param[header_authorization_base] ( comma auth_param[header_authorization_base] )* ; */ static void other_response(pbelle_sip_messageParser ctx, belle_sip_header_authorization_t* header_authorization_base) { belle_sip_messageParser_auth_scheme_return auth_scheme49; #undef RETURN_TYPE_auth_scheme49 #define RETURN_TYPE_auth_scheme49 belle_sip_messageParser_auth_scheme_return /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:587:3: ( auth_scheme lws auth_param[header_authorization_base] ( comma auth_param[header_authorization_base] )* ) // ../grammars/belle_sip_message.g:587:7: auth_scheme lws auth_param[header_authorization_base] ( comma auth_param[header_authorization_base] )* { FOLLOWPUSH(FOLLOW_auth_scheme_in_other_response2299); auth_scheme49=auth_scheme(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleother_responseEx; } if (HASFAILED()) { return ; } if ( BACKTRACKING==0 ) { belle_sip_header_authorization_set_scheme(header_authorization_base,(const char*)(STRSTREAM->toStringTT(STRSTREAM, auth_scheme49.start, auth_scheme49.stop)) ->chars); } FOLLOWPUSH(FOLLOW_lws_in_other_response2308); lws(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleother_responseEx; } if (HASFAILED()) { return ; } FOLLOWPUSH(FOLLOW_auth_param_in_other_response2310); auth_param(ctx, header_authorization_base); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleother_responseEx; } if (HASFAILED()) { return ; } // ../grammars/belle_sip_message.g:589:22: ( comma auth_param[header_authorization_base] )* for (;;) { int alt43=2; switch ( LA(1) ) { case COMMA: case CRLF: case SP: { alt43=1; } break; } switch (alt43) { case 1: // ../grammars/belle_sip_message.g:589:23: comma auth_param[header_authorization_base] { FOLLOWPUSH(FOLLOW_comma_in_other_response2335); comma(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleother_responseEx; } if (HASFAILED()) { return ; } FOLLOWPUSH(FOLLOW_auth_param_in_other_response2337); auth_param(ctx, header_authorization_base); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleother_responseEx; } if (HASFAILED()) { return ; } } break; default: goto loop43; /* break out of the loop */ break; } } loop43: ; /* Jump out to here if this rule does not match */ } } // This is where rules clean up and exit // goto ruleother_responseEx; /* Prevent compiler warnings */ ruleother_responseEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end other_response */ /** * $ANTLR start auth_scheme * ../grammars/belle_sip_message.g:591:1: auth_scheme : token ; */ static belle_sip_messageParser_auth_scheme_return auth_scheme(pbelle_sip_messageParser ctx) { belle_sip_messageParser_auth_scheme_return retval; /* Initialize rule variables */ retval.start = LT(1); retval.stop = retval.start; { // ../grammars/belle_sip_message.g:592:3: ( token ) // ../grammars/belle_sip_message.g:592:7: token { FOLLOWPUSH(FOLLOW_token_in_auth_scheme2352); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleauth_schemeEx; } if (HASFAILED()) { return retval; } } } // This is where rules clean up and exit // goto ruleauth_schemeEx; /* Prevent compiler warnings */ ruleauth_schemeEx: ; retval.stop = LT(-1); if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end auth_scheme */ /** * $ANTLR start nonce_value * ../grammars/belle_sip_message.g:603:1: nonce_value : quoted_string ; */ static belle_sip_messageParser_nonce_value_return nonce_value(pbelle_sip_messageParser ctx) { belle_sip_messageParser_nonce_value_return retval; /* Initialize rule variables */ retval.start = LT(1); retval.stop = retval.start; { // ../grammars/belle_sip_message.g:603:21: ( quoted_string ) // ../grammars/belle_sip_message.g:603:24: quoted_string { FOLLOWPUSH(FOLLOW_quoted_string_in_nonce_value2370); quoted_string(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulenonce_valueEx; } if (HASFAILED()) { return retval; } } } // This is where rules clean up and exit // goto rulenonce_valueEx; /* Prevent compiler warnings */ rulenonce_valueEx: ; retval.stop = LT(-1); if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end nonce_value */ /** * $ANTLR start call_id_token * ../grammars/belle_sip_message.g:611:1: call_id_token :{...}? token ; */ static void call_id_token(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:611:14: ({...}? token ) // ../grammars/belle_sip_message.g:611:16: {...}? token { if ( !((IS_HEADER_NAMED(Call-ID,i))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_HEADER_NAMED(Call-ID,i)"; EXCEPTION->ruleName = (void *)"call_id_token"; } FOLLOWPUSH(FOLLOW_token_in_call_id_token2382); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulecall_id_tokenEx; } if (HASFAILED()) { return ; } } } // This is where rules clean up and exit // goto rulecall_id_tokenEx; /* Prevent compiler warnings */ rulecall_id_tokenEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end call_id_token */ /** * $ANTLR start header_call_id * ../grammars/belle_sip_message.g:613:1: header_call_id returns [belle_sip_header_call_id_t* ret=NULL] : call_id_token hcolon call_id ; */ static belle_sip_header_call_id_t* header_call_id(pbelle_sip_messageParser ctx) { belle_sip_header_call_id_t* ret; belle_sip_messageParser_call_id_return call_id50; #undef RETURN_TYPE_call_id50 #define RETURN_TYPE_call_id50 belle_sip_messageParser_call_id_return /* Initialize rule variables */ ret = NULL; ctx->pbelle_sip_messageParser_header_call_idTop = pbelle_sip_messageParser_header_call_idPush(ctx); (SCOPE_TOP(header_call_id))->current= belle_sip_header_call_id_new(); ret=(SCOPE_TOP(header_call_id))->current; { // ../grammars/belle_sip_message.g:616:3: ( call_id_token hcolon call_id ) // ../grammars/belle_sip_message.g:616:6: call_id_token hcolon call_id { FOLLOWPUSH(FOLLOW_call_id_token_in_header_call_id2407); call_id_token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_call_idEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_call_idPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_hcolon_in_header_call_id2411); hcolon(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_call_idEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_call_idPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_call_id_in_header_call_id2413); call_id50=call_id(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_call_idEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_call_idPop(ctx); return ret; } if ( BACKTRACKING==0 ) { belle_sip_header_call_id_set_call_id((SCOPE_TOP(header_call_id))->current,(const char*) (STRSTREAM->toStringTT(STRSTREAM, call_id50.start, call_id50.stop)) ->chars); } } } // This is where rules clean up and exit // goto ruleheader_call_idEx; /* Prevent compiler warnings */ ruleheader_call_idEx: ; if (HASEXCEPTION()) { /* catch(decl,action) */ { belle_sip_message("[%s] reason [%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref((SCOPE_TOP(header_call_id))->current); ret=NULL; } } else { } pbelle_sip_messageParser_header_call_idPop(ctx); return ret; } /* $ANTLR end header_call_id */ /** * $ANTLR start call_id * ../grammars/belle_sip_message.g:623:1: call_id : word ( AT word )? ; */ static belle_sip_messageParser_call_id_return call_id(pbelle_sip_messageParser ctx) { belle_sip_messageParser_call_id_return retval; /* Initialize rule variables */ retval.start = LT(1); retval.stop = retval.start; { // ../grammars/belle_sip_message.g:624:3: ( word ( AT word )? ) // ../grammars/belle_sip_message.g:624:7: word ( AT word )? { FOLLOWPUSH(FOLLOW_word_in_call_id2431); word(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulecall_idEx; } if (HASFAILED()) { return retval; } // ../grammars/belle_sip_message.g:624:12: ( AT word )? { int alt44=2; switch ( LA(1) ) { case AT: { alt44=1; } break; } switch (alt44) { case 1: // ../grammars/belle_sip_message.g:624:14: AT word { MATCHT(AT, &FOLLOW_AT_in_call_id2435); if (HASEXCEPTION()) { goto rulecall_idEx; } if (HASFAILED()) { return retval; } FOLLOWPUSH(FOLLOW_word_in_call_id2437); word(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulecall_idEx; } if (HASFAILED()) { return retval; } } break; } } } } // This is where rules clean up and exit // goto rulecall_idEx; /* Prevent compiler warnings */ rulecall_idEx: ; retval.stop = LT(-1); if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end call_id */ /** * $ANTLR start retry_after_token * ../grammars/belle_sip_message.g:635:1: retry_after_token :{...}? token ; */ static void retry_after_token(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:635:18: ({...}? token ) // ../grammars/belle_sip_message.g:635:20: {...}? token { if ( !((IS_HEADER_NAMED(Retry-After,r))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_HEADER_NAMED(Retry-After,r)"; EXCEPTION->ruleName = (void *)"retry_after_token"; } FOLLOWPUSH(FOLLOW_token_in_retry_after_token2453); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleretry_after_tokenEx; } if (HASFAILED()) { return ; } } } // This is where rules clean up and exit // goto ruleretry_after_tokenEx; /* Prevent compiler warnings */ ruleretry_after_tokenEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end retry_after_token */ /** * $ANTLR start header_retry_after * ../grammars/belle_sip_message.g:637:1: header_retry_after returns [belle_sip_header_retry_after_t* ret] : retry_after_token hcolon retry_after ; */ static belle_sip_header_retry_after_t* header_retry_after(pbelle_sip_messageParser ctx) { belle_sip_header_retry_after_t* ret; belle_sip_messageParser_retry_after_return retry_after51; #undef RETURN_TYPE_retry_after51 #define RETURN_TYPE_retry_after51 belle_sip_messageParser_retry_after_return /* Initialize rule variables */ ctx->pbelle_sip_messageParser_header_retry_afterTop = pbelle_sip_messageParser_header_retry_afterPush(ctx); (SCOPE_TOP(header_retry_after))->current= belle_sip_header_retry_after_new(); ret=(SCOPE_TOP(header_retry_after))->current; { // ../grammars/belle_sip_message.g:640:4: ( retry_after_token hcolon retry_after ) // ../grammars/belle_sip_message.g:640:4: retry_after_token hcolon retry_after { FOLLOWPUSH(FOLLOW_retry_after_token_in_header_retry_after2476); retry_after_token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_retry_afterEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_retry_afterPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_hcolon_in_header_retry_after2480); hcolon(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_retry_afterEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_retry_afterPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_retry_after_in_header_retry_after2482); retry_after51=retry_after(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_retry_afterEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_retry_afterPop(ctx); return ret; } if ( BACKTRACKING==0 ) { belle_sip_header_retry_after_set_retry_after((SCOPE_TOP(header_retry_after))->current,atoi((const char*) (STRSTREAM->toStringTT(STRSTREAM, retry_after51.start, retry_after51.stop)) ->chars)); } } } // This is where rules clean up and exit // goto ruleheader_retry_afterEx; /* Prevent compiler warnings */ ruleheader_retry_afterEx: ; if (HASEXCEPTION()) { /* catch(decl,action) */ { belle_sip_message("[%s] reason [%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref((SCOPE_TOP(header_retry_after))->current); ret=NULL; } } else { } pbelle_sip_messageParser_header_retry_afterPop(ctx); return ret; } /* $ANTLR end header_retry_after */ /** * $ANTLR start retry_after * ../grammars/belle_sip_message.g:647:1: retry_after : ( DIGIT )+ ; */ static belle_sip_messageParser_retry_after_return retry_after(pbelle_sip_messageParser ctx) { belle_sip_messageParser_retry_after_return retval; /* Initialize rule variables */ retval.start = LT(1); retval.stop = retval.start; { // ../grammars/belle_sip_message.g:648:5: ( ( DIGIT )+ ) // ../grammars/belle_sip_message.g:648:5: ( DIGIT )+ { // ../grammars/belle_sip_message.g:648:5: ( DIGIT )+ { int cnt45=0; for (;;) { int alt45=2; switch ( LA(1) ) { case DIGIT: { alt45=1; } break; } switch (alt45) { case 1: // ../grammars/belle_sip_message.g:648:5: DIGIT { MATCHT(DIGIT, &FOLLOW_DIGIT_in_retry_after2498); if (HASEXCEPTION()) { goto ruleretry_afterEx; } if (HASFAILED()) { return retval; } } break; default: if ( cnt45 >= 1 ) { goto loop45; } if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } /* mismatchedSetEx() */ CONSTRUCTEX(); EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME; goto ruleretry_afterEx; } cnt45++; } loop45: ; /* Jump to here if this rule does not match */ } } } // This is where rules clean up and exit // goto ruleretry_afterEx; /* Prevent compiler warnings */ ruleretry_afterEx: ; retval.stop = LT(-1); if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end retry_after */ /** * $ANTLR start contact_token * ../grammars/belle_sip_message.g:650:1: contact_token :{...}? token ; */ static void contact_token(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:650:14: ({...}? token ) // ../grammars/belle_sip_message.g:650:16: {...}? token { if ( !((IS_HEADER_NAMED(Contact,m))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_HEADER_NAMED(Contact,m)"; EXCEPTION->ruleName = (void *)"contact_token"; } FOLLOWPUSH(FOLLOW_token_in_contact_token2509); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulecontact_tokenEx; } if (HASFAILED()) { return ; } } } // This is where rules clean up and exit // goto rulecontact_tokenEx; /* Prevent compiler warnings */ rulecontact_tokenEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end contact_token */ /** * $ANTLR start header_contact * ../grammars/belle_sip_message.g:652:1: header_contact returns [belle_sip_header_contact_t* ret] : ( contact_token ) sp_tab_colon ( ( ( lws )? STAR ) | ( contact_param ( COMMA contact_param )* ) ) ; */ static belle_sip_header_contact_t* header_contact(pbelle_sip_messageParser ctx) { belle_sip_header_contact_t* ret; /* Initialize rule variables */ ctx->pbelle_sip_messageParser_header_contactTop = pbelle_sip_messageParser_header_contactPush(ctx); (SCOPE_TOP(header_contact))->current=NULL; (SCOPE_TOP(header_contact))->first=NULL; ret=NULL; { // ../grammars/belle_sip_message.g:655:3: ( ( contact_token ) sp_tab_colon ( ( ( lws )? STAR ) | ( contact_param ( COMMA contact_param )* ) ) ) // ../grammars/belle_sip_message.g:655:7: ( contact_token ) sp_tab_colon ( ( ( lws )? STAR ) | ( contact_param ( COMMA contact_param )* ) ) { // ../grammars/belle_sip_message.g:655:7: ( contact_token ) // ../grammars/belle_sip_message.g:655:8: contact_token { FOLLOWPUSH(FOLLOW_contact_token_in_header_contact2540); contact_token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_contactEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_contactPop(ctx); return ret; } } FOLLOWPUSH(FOLLOW_sp_tab_colon_in_header_contact2548); sp_tab_colon(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_contactEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_contactPop(ctx); return ret; } // ../grammars/belle_sip_message.g:656:19: ( ( ( lws )? STAR ) | ( contact_param ( COMMA contact_param )* ) ) { int alt48=2; alt48 = cdfa48.predict(ctx, RECOGNIZER, ISTREAM, &cdfa48); if (HASEXCEPTION()) { goto ruleheader_contactEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_contactPop(ctx); return ret; } switch (alt48) { case 1: // ../grammars/belle_sip_message.g:656:22: ( ( lws )? STAR ) { // ../grammars/belle_sip_message.g:656:22: ( ( lws )? STAR ) // ../grammars/belle_sip_message.g:656:23: ( lws )? STAR { // ../grammars/belle_sip_message.g:656:23: ( lws )? { int alt46=2; switch ( LA(1) ) { case CRLF: case SP: { alt46=1; } break; } switch (alt46) { case 1: // ../grammars/belle_sip_message.g:656:23: lws { FOLLOWPUSH(FOLLOW_lws_in_header_contact2572); lws(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_contactEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_contactPop(ctx); return ret; } } break; } } MATCHT(STAR, &FOLLOW_STAR_in_header_contact2575); if (HASEXCEPTION()) { goto ruleheader_contactEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_contactPop(ctx); return ret; } } if ( BACKTRACKING==0 ) { (SCOPE_TOP(header_contact))->current= belle_sip_header_contact_new(); belle_sip_header_contact_set_wildcard((SCOPE_TOP(header_contact))->current,1); } } break; case 2: // ../grammars/belle_sip_message.g:658:21: ( contact_param ( COMMA contact_param )* ) { // ../grammars/belle_sip_message.g:658:21: ( contact_param ( COMMA contact_param )* ) // ../grammars/belle_sip_message.g:658:22: contact_param ( COMMA contact_param )* { FOLLOWPUSH(FOLLOW_contact_param_in_header_contact2601); contact_param(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_contactEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_contactPop(ctx); return ret; } // ../grammars/belle_sip_message.g:658:36: ( COMMA contact_param )* for (;;) { int alt47=2; switch ( LA(1) ) { case COMMA: { alt47=1; } break; } switch (alt47) { case 1: // ../grammars/belle_sip_message.g:658:38: COMMA contact_param { MATCHT(COMMA, &FOLLOW_COMMA_in_header_contact2605); if (HASEXCEPTION()) { goto ruleheader_contactEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_contactPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_contact_param_in_header_contact2607); contact_param(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_contactEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_contactPop(ctx); return ret; } } break; default: goto loop47; /* break out of the loop */ break; } } loop47: ; /* Jump out to here if this rule does not match */ } } break; } } if ( BACKTRACKING==0 ) { ret= (SCOPE_TOP(header_contact))->first; } } } // This is where rules clean up and exit // goto ruleheader_contactEx; /* Prevent compiler warnings */ ruleheader_contactEx: ; if (HASEXCEPTION()) { /* catch(decl,action) */ { belle_sip_message("[%s] reason [%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); ret= (SCOPE_TOP(header_contact))->first; if (ret ) belle_sip_object_unref(ret ); ret=NULL; } } else { } pbelle_sip_messageParser_header_contactPop(ctx); return ret; } /* $ANTLR end header_contact */ /** * $ANTLR start contact_param * ../grammars/belle_sip_message.g:667:1: contact_param : ( name_addr[BELLE_SIP_HEADER_ADDRESS($header_contact::current)] | paramless_addr_spec[BELLE_SIP_HEADER_ADDRESS($header_contact::current)] ) ( SEMI ( lws )? contact_params ( lws )? )* ; */ static void contact_param(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ ctx->pbelle_sip_messageParser_contact_paramTop = pbelle_sip_messageParser_contact_paramPush(ctx); if ((SCOPE_TOP(header_contact))->current == NULL) { (SCOPE_TOP(header_contact))->current= belle_sip_header_contact_new(); (SCOPE_TOP(header_contact))->first= (SCOPE_TOP(header_contact))->current; (SCOPE_TOP(contact_param))->prev=NULL; } else { (SCOPE_TOP(contact_param))->prev=(SCOPE_TOP(header_contact))->current; belle_sip_header_set_next(BELLE_SIP_HEADER((SCOPE_TOP(header_contact))->current),(belle_sip_header_t*)belle_sip_header_contact_new()); (SCOPE_TOP(header_contact))->current= (belle_sip_header_contact_t*)belle_sip_header_get_next(BELLE_SIP_HEADER((SCOPE_TOP(header_contact))->current)); } { // ../grammars/belle_sip_message.g:679:3: ( ( name_addr[BELLE_SIP_HEADER_ADDRESS($header_contact::current)] | paramless_addr_spec[BELLE_SIP_HEADER_ADDRESS($header_contact::current)] ) ( SEMI ( lws )? contact_params ( lws )? )* ) // ../grammars/belle_sip_message.g:679:7: ( name_addr[BELLE_SIP_HEADER_ADDRESS($header_contact::current)] | paramless_addr_spec[BELLE_SIP_HEADER_ADDRESS($header_contact::current)] ) ( SEMI ( lws )? contact_params ( lws )? )* { // ../grammars/belle_sip_message.g:679:7: ( name_addr[BELLE_SIP_HEADER_ADDRESS($header_contact::current)] | paramless_addr_spec[BELLE_SIP_HEADER_ADDRESS($header_contact::current)] ) { int alt49=2; alt49 = cdfa49.predict(ctx, RECOGNIZER, ISTREAM, &cdfa49); if (HASEXCEPTION()) { goto rulecontact_paramEx; } if (HASFAILED()) { pbelle_sip_messageParser_contact_paramPop(ctx); return ; } switch (alt49) { case 1: // ../grammars/belle_sip_message.g:679:9: name_addr[BELLE_SIP_HEADER_ADDRESS($header_contact::current)] { FOLLOWPUSH(FOLLOW_name_addr_in_contact_param2642); name_addr(ctx, BELLE_SIP_HEADER_ADDRESS((SCOPE_TOP(header_contact))->current)); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulecontact_paramEx; } if (HASFAILED()) { pbelle_sip_messageParser_contact_paramPop(ctx); return ; } } break; case 2: // ../grammars/belle_sip_message.g:680:8: paramless_addr_spec[BELLE_SIP_HEADER_ADDRESS($header_contact::current)] { FOLLOWPUSH(FOLLOW_paramless_addr_spec_in_contact_param2652); paramless_addr_spec(ctx, BELLE_SIP_HEADER_ADDRESS((SCOPE_TOP(header_contact))->current)); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulecontact_paramEx; } if (HASFAILED()) { pbelle_sip_messageParser_contact_paramPop(ctx); return ; } } break; } } // ../grammars/belle_sip_message.g:680:81: ( SEMI ( lws )? contact_params ( lws )? )* for (;;) { int alt52=2; switch ( LA(1) ) { case SEMI: { alt52=1; } break; } switch (alt52) { case 1: // ../grammars/belle_sip_message.g:680:82: SEMI ( lws )? contact_params ( lws )? { MATCHT(SEMI, &FOLLOW_SEMI_in_contact_param2657); if (HASEXCEPTION()) { goto rulecontact_paramEx; } if (HASFAILED()) { pbelle_sip_messageParser_contact_paramPop(ctx); return ; } // ../grammars/belle_sip_message.g:680:87: ( lws )? { int alt50=2; switch ( LA(1) ) { case CRLF: case SP: { alt50=1; } break; } switch (alt50) { case 1: // ../grammars/belle_sip_message.g:680:87: lws { FOLLOWPUSH(FOLLOW_lws_in_contact_param2659); lws(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulecontact_paramEx; } if (HASFAILED()) { pbelle_sip_messageParser_contact_paramPop(ctx); return ; } } break; } } FOLLOWPUSH(FOLLOW_contact_params_in_contact_param2662); contact_params(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulecontact_paramEx; } if (HASFAILED()) { pbelle_sip_messageParser_contact_paramPop(ctx); return ; } // ../grammars/belle_sip_message.g:680:107: ( lws )? { int alt51=2; switch ( LA(1) ) { case CRLF: case SP: { alt51=1; } break; } switch (alt51) { case 1: // ../grammars/belle_sip_message.g:680:107: lws { FOLLOWPUSH(FOLLOW_lws_in_contact_param2664); lws(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulecontact_paramEx; } if (HASFAILED()) { pbelle_sip_messageParser_contact_paramPop(ctx); return ; } } break; } } } break; default: goto loop52; /* break out of the loop */ break; } } loop52: ; /* Jump out to here if this rule does not match */ } } // This is where rules clean up and exit // goto rulecontact_paramEx; /* Prevent compiler warnings */ rulecontact_paramEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } pbelle_sip_messageParser_contact_paramPop(ctx); return ; } /* $ANTLR end contact_param */ /** * $ANTLR start header_address * ../grammars/belle_sip_message.g:683:1: header_address returns [belle_sip_header_address_t* ret] : ( ( name_addr_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)] ( SEMI ( lws )? generic_param[BELLE_SIP_PARAMETERS($ret)] ( lws )? )* ) | addr_spec_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)] ) ; */ static belle_sip_header_address_t* header_address(pbelle_sip_messageParser ctx) { belle_sip_header_address_t* ret; /* Initialize rule variables */ ret=belle_sip_header_address_new(); { // ../grammars/belle_sip_message.g:685:3: ( ( ( name_addr_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)] ( SEMI ( lws )? generic_param[BELLE_SIP_PARAMETERS($ret)] ( lws )? )* ) | addr_spec_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)] ) ) // ../grammars/belle_sip_message.g:685:5: ( ( name_addr_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)] ( SEMI ( lws )? generic_param[BELLE_SIP_PARAMETERS($ret)] ( lws )? )* ) | addr_spec_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)] ) { // ../grammars/belle_sip_message.g:685:5: ( ( name_addr_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)] ( SEMI ( lws )? generic_param[BELLE_SIP_PARAMETERS($ret)] ( lws )? )* ) | addr_spec_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)] ) { int alt56=2; alt56 = cdfa56.predict(ctx, RECOGNIZER, ISTREAM, &cdfa56); if (HASEXCEPTION()) { goto ruleheader_addressEx; } if (HASFAILED()) { return ret; } switch (alt56) { case 1: // ../grammars/belle_sip_message.g:685:7: ( name_addr_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)] ( SEMI ( lws )? generic_param[BELLE_SIP_PARAMETERS($ret)] ( lws )? )* ) { // ../grammars/belle_sip_message.g:685:7: ( name_addr_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)] ( SEMI ( lws )? generic_param[BELLE_SIP_PARAMETERS($ret)] ( lws )? )* ) // ../grammars/belle_sip_message.g:685:8: name_addr_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)] ( SEMI ( lws )? generic_param[BELLE_SIP_PARAMETERS($ret)] ( lws )? )* { FOLLOWPUSH(FOLLOW_name_addr_with_generic_uri_in_header_address2690); name_addr_with_generic_uri(ctx, BELLE_SIP_HEADER_ADDRESS( ret )); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_addressEx; } if (HASFAILED()) { return ret; } // ../grammars/belle_sip_message.g:685:68: ( SEMI ( lws )? generic_param[BELLE_SIP_PARAMETERS($ret)] ( lws )? )* for (;;) { int alt55=2; switch ( LA(1) ) { case SEMI: { alt55=1; } break; } switch (alt55) { case 1: // ../grammars/belle_sip_message.g:685:69: SEMI ( lws )? generic_param[BELLE_SIP_PARAMETERS($ret)] ( lws )? { MATCHT(SEMI, &FOLLOW_SEMI_in_header_address2695); if (HASEXCEPTION()) { goto ruleheader_addressEx; } if (HASFAILED()) { return ret; } // ../grammars/belle_sip_message.g:685:74: ( lws )? { int alt53=2; switch ( LA(1) ) { case CRLF: case SP: { alt53=1; } break; } switch (alt53) { case 1: // ../grammars/belle_sip_message.g:685:74: lws { FOLLOWPUSH(FOLLOW_lws_in_header_address2697); lws(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_addressEx; } if (HASFAILED()) { return ret; } } break; } } FOLLOWPUSH(FOLLOW_generic_param_in_header_address2700); generic_param(ctx, BELLE_SIP_PARAMETERS( ret )); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_addressEx; } if (HASFAILED()) { return ret; } // ../grammars/belle_sip_message.g:685:122: ( lws )? { int alt54=2; switch ( LA(1) ) { case CRLF: case SP: { alt54=1; } break; } switch (alt54) { case 1: // ../grammars/belle_sip_message.g:685:122: lws { FOLLOWPUSH(FOLLOW_lws_in_header_address2704); lws(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_addressEx; } if (HASFAILED()) { return ret; } } break; } } } break; default: goto loop55; /* break out of the loop */ break; } } loop55: ; /* Jump out to here if this rule does not match */ } } break; case 2: // ../grammars/belle_sip_message.g:686:4: addr_spec_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)] { FOLLOWPUSH(FOLLOW_addr_spec_with_generic_uri_in_header_address2713); addr_spec_with_generic_uri(ctx, BELLE_SIP_HEADER_ADDRESS( ret )); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_addressEx; } if (HASFAILED()) { return ret; } } break; } } if ( BACKTRACKING==0 ) { if (!belle_sip_header_address_get_uri(ret ) && !belle_sip_header_address_get_absolute_uri((ret ))) { belle_sip_object_unref(ret ); ret=NULL; } } } } // This is where rules clean up and exit // goto ruleheader_addressEx; /* Prevent compiler warnings */ ruleheader_addressEx: ; if (HASEXCEPTION()) { /* catch(decl,action) */ { belle_sip_debug("[%s] reason [%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); if (ret ) belle_sip_object_unref(ret ); ret=NULL; } } else { } return ret; } /* $ANTLR end header_address */ /** * $ANTLR start header_address_param_less * ../grammars/belle_sip_message.g:701:1: header_address_param_less returns [belle_sip_header_address_t* ret] : header_address_base[belle_sip_header_address_new()] ; */ static belle_sip_header_address_t* header_address_param_less(pbelle_sip_messageParser ctx) { belle_sip_header_address_t* ret; belle_sip_header_address_t* header_address_base52; #undef RETURN_TYPE_header_address_base52 #define RETURN_TYPE_header_address_base52 belle_sip_header_address_t* /* Initialize rule variables */ ret=NULL; { // ../grammars/belle_sip_message.g:703:3: ( header_address_base[belle_sip_header_address_new()] ) // ../grammars/belle_sip_message.g:703:5: header_address_base[belle_sip_header_address_new()] { FOLLOWPUSH(FOLLOW_header_address_base_in_header_address_param_less2744); header_address_base52=header_address_base(ctx, belle_sip_header_address_new()); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_address_param_lessEx; } if (HASFAILED()) { return ret; } if ( BACKTRACKING==0 ) { ret= header_address_base52 ; } } } // This is where rules clean up and exit // goto ruleheader_address_param_lessEx; /* Prevent compiler warnings */ ruleheader_address_param_lessEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ret; } /* $ANTLR end header_address_param_less */ /** * $ANTLR start header_address_base * ../grammars/belle_sip_message.g:705:1: header_address_base[belle_sip_header_address_t* obj] returns [belle_sip_header_address_t* ret] : ( name_addr_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)] | addr_spec_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)] ) ; */ static belle_sip_header_address_t* header_address_base(pbelle_sip_messageParser ctx, belle_sip_header_address_t* obj) { belle_sip_header_address_t* ret; /* Initialize rule variables */ ret=obj; { // ../grammars/belle_sip_message.g:707:6: ( ( name_addr_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)] | addr_spec_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)] ) ) // ../grammars/belle_sip_message.g:707:9: ( name_addr_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)] | addr_spec_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)] ) { // ../grammars/belle_sip_message.g:707:9: ( name_addr_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)] | addr_spec_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)] ) { int alt57=2; alt57 = cdfa57.predict(ctx, RECOGNIZER, ISTREAM, &cdfa57); if (HASEXCEPTION()) { goto ruleheader_address_baseEx; } if (HASFAILED()) { return ret; } switch (alt57) { case 1: // ../grammars/belle_sip_message.g:707:11: name_addr_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)] { FOLLOWPUSH(FOLLOW_name_addr_with_generic_uri_in_header_address_base2778); name_addr_with_generic_uri(ctx, BELLE_SIP_HEADER_ADDRESS( ret )); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_address_baseEx; } if (HASFAILED()) { return ret; } } break; case 2: // ../grammars/belle_sip_message.g:708:3: addr_spec_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)] { FOLLOWPUSH(FOLLOW_addr_spec_with_generic_uri_in_header_address_base2783); addr_spec_with_generic_uri(ctx, BELLE_SIP_HEADER_ADDRESS( ret )); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_address_baseEx; } if (HASFAILED()) { return ret; } } break; } } if ( BACKTRACKING==0 ) { if (!belle_sip_header_address_get_uri(ret ) && !belle_sip_header_address_get_absolute_uri((ret ))) { belle_sip_object_unref(ret ); ret=NULL; } } } } // This is where rules clean up and exit // goto ruleheader_address_baseEx; /* Prevent compiler warnings */ ruleheader_address_baseEx: ; if (HASEXCEPTION()) { /* catch(decl,action) */ { belle_sip_debug("[%s] reason [%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); if (ret ) belle_sip_object_unref(ret ); ret=NULL; } } else { } return ret; } /* $ANTLR end header_address_base */ /** * $ANTLR start fast_header_address * ../grammars/belle_sip_message.g:720:1: fast_header_address returns [belle_sip_header_address_t* ret] : ( ( fast_name_addr_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)] ( SEMI ( lws )? generic_param[BELLE_SIP_PARAMETERS($ret)] ( lws )? )* ) | fast_addr_spec_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)] ) ; */ static belle_sip_header_address_t* fast_header_address(pbelle_sip_messageParser ctx) { belle_sip_header_address_t* ret; /* Initialize rule variables */ ret=belle_sip_header_address_new(); { // ../grammars/belle_sip_message.g:722:6: ( ( ( fast_name_addr_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)] ( SEMI ( lws )? generic_param[BELLE_SIP_PARAMETERS($ret)] ( lws )? )* ) | fast_addr_spec_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)] ) ) // ../grammars/belle_sip_message.g:722:9: ( ( fast_name_addr_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)] ( SEMI ( lws )? generic_param[BELLE_SIP_PARAMETERS($ret)] ( lws )? )* ) | fast_addr_spec_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)] ) { // ../grammars/belle_sip_message.g:722:9: ( ( fast_name_addr_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)] ( SEMI ( lws )? generic_param[BELLE_SIP_PARAMETERS($ret)] ( lws )? )* ) | fast_addr_spec_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)] ) { int alt61=2; alt61 = cdfa61.predict(ctx, RECOGNIZER, ISTREAM, &cdfa61); if (HASEXCEPTION()) { goto rulefast_header_addressEx; } if (HASFAILED()) { return ret; } switch (alt61) { case 1: // ../grammars/belle_sip_message.g:722:12: ( fast_name_addr_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)] ( SEMI ( lws )? generic_param[BELLE_SIP_PARAMETERS($ret)] ( lws )? )* ) { // ../grammars/belle_sip_message.g:722:12: ( fast_name_addr_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)] ( SEMI ( lws )? generic_param[BELLE_SIP_PARAMETERS($ret)] ( lws )? )* ) // ../grammars/belle_sip_message.g:722:13: fast_name_addr_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)] ( SEMI ( lws )? generic_param[BELLE_SIP_PARAMETERS($ret)] ( lws )? )* { FOLLOWPUSH(FOLLOW_fast_name_addr_with_generic_uri_in_fast_header_address2822); fast_name_addr_with_generic_uri(ctx, BELLE_SIP_HEADER_ADDRESS( ret )); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulefast_header_addressEx; } if (HASFAILED()) { return ret; } // ../grammars/belle_sip_message.g:722:78: ( SEMI ( lws )? generic_param[BELLE_SIP_PARAMETERS($ret)] ( lws )? )* for (;;) { int alt60=2; switch ( LA(1) ) { case SEMI: { alt60=1; } break; } switch (alt60) { case 1: // ../grammars/belle_sip_message.g:722:79: SEMI ( lws )? generic_param[BELLE_SIP_PARAMETERS($ret)] ( lws )? { MATCHT(SEMI, &FOLLOW_SEMI_in_fast_header_address2827); if (HASEXCEPTION()) { goto rulefast_header_addressEx; } if (HASFAILED()) { return ret; } // ../grammars/belle_sip_message.g:722:84: ( lws )? { int alt58=2; switch ( LA(1) ) { case CRLF: case SP: { alt58=1; } break; } switch (alt58) { case 1: // ../grammars/belle_sip_message.g:722:84: lws { FOLLOWPUSH(FOLLOW_lws_in_fast_header_address2829); lws(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulefast_header_addressEx; } if (HASFAILED()) { return ret; } } break; } } FOLLOWPUSH(FOLLOW_generic_param_in_fast_header_address2832); generic_param(ctx, BELLE_SIP_PARAMETERS( ret )); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulefast_header_addressEx; } if (HASFAILED()) { return ret; } // ../grammars/belle_sip_message.g:722:132: ( lws )? { int alt59=2; switch ( LA(1) ) { case CRLF: case SP: { alt59=1; } break; } switch (alt59) { case 1: // ../grammars/belle_sip_message.g:722:132: lws { FOLLOWPUSH(FOLLOW_lws_in_fast_header_address2836); lws(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulefast_header_addressEx; } if (HASFAILED()) { return ret; } } break; } } } break; default: goto loop60; /* break out of the loop */ break; } } loop60: ; /* Jump out to here if this rule does not match */ } } break; case 2: // ../grammars/belle_sip_message.g:723:4: fast_addr_spec_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)] { FOLLOWPUSH(FOLLOW_fast_addr_spec_with_generic_uri_in_fast_header_address2845); fast_addr_spec_with_generic_uri(ctx, BELLE_SIP_HEADER_ADDRESS( ret )); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulefast_header_addressEx; } if (HASFAILED()) { return ret; } } break; } } if ( BACKTRACKING==0 ) { if (!belle_sip_header_address_get_uri(ret ) && !belle_sip_header_address_get_absolute_uri((ret ))) { belle_sip_object_unref(ret ); ret=NULL; } } } } // This is where rules clean up and exit // goto rulefast_header_addressEx; /* Prevent compiler warnings */ rulefast_header_addressEx: ; if (HASEXCEPTION()) { /* catch(decl,action) */ { belle_sip_debug("[%s] reason [%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); if (ret ) belle_sip_object_unref(ret ); ret=NULL; } } else { } return ret; } /* $ANTLR end fast_header_address */ /** * $ANTLR start fast_header_address_param_less * ../grammars/belle_sip_message.g:735:1: fast_header_address_param_less returns [belle_sip_header_address_t* ret] : ( fast_name_addr_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)] | fast_addr_spec_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)] ) ; */ static belle_sip_header_address_t* fast_header_address_param_less(pbelle_sip_messageParser ctx) { belle_sip_header_address_t* ret; /* Initialize rule variables */ ret=belle_sip_header_address_new(); { // ../grammars/belle_sip_message.g:737:6: ( ( fast_name_addr_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)] | fast_addr_spec_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)] ) ) // ../grammars/belle_sip_message.g:737:9: ( fast_name_addr_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)] | fast_addr_spec_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)] ) { // ../grammars/belle_sip_message.g:737:9: ( fast_name_addr_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)] | fast_addr_spec_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)] ) { int alt62=2; alt62 = cdfa62.predict(ctx, RECOGNIZER, ISTREAM, &cdfa62); if (HASEXCEPTION()) { goto rulefast_header_address_param_lessEx; } if (HASFAILED()) { return ret; } switch (alt62) { case 1: // ../grammars/belle_sip_message.g:737:12: fast_name_addr_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)] { FOLLOWPUSH(FOLLOW_fast_name_addr_with_generic_uri_in_fast_header_address_param_less2883); fast_name_addr_with_generic_uri(ctx, BELLE_SIP_HEADER_ADDRESS( ret )); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulefast_header_address_param_lessEx; } if (HASFAILED()) { return ret; } } break; case 2: // ../grammars/belle_sip_message.g:738:4: fast_addr_spec_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($ret)] { FOLLOWPUSH(FOLLOW_fast_addr_spec_with_generic_uri_in_fast_header_address_param_less2889); fast_addr_spec_with_generic_uri(ctx, BELLE_SIP_HEADER_ADDRESS( ret )); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulefast_header_address_param_lessEx; } if (HASFAILED()) { return ret; } } break; } } if ( BACKTRACKING==0 ) { if (!belle_sip_header_address_get_uri(ret ) && !belle_sip_header_address_get_absolute_uri((ret ))) { belle_sip_object_unref(ret ); ret=NULL; } } } } // This is where rules clean up and exit // goto rulefast_header_address_param_lessEx; /* Prevent compiler warnings */ rulefast_header_address_param_lessEx: ; if (HASEXCEPTION()) { /* catch(decl,action) */ { belle_sip_debug("[%s] reason [%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); if (ret ) belle_sip_object_unref(ret ); ret=NULL; } } else { } return ret; } /* $ANTLR end fast_header_address_param_less */ /** * $ANTLR start name_addr * ../grammars/belle_sip_message.g:750:1: name_addr[belle_sip_header_address_t* object] : ( ( lws )? display_name[object] )? sp_laquot addr_spec[object] raquot_sp ; */ static void name_addr(pbelle_sip_messageParser ctx, belle_sip_header_address_t* object) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:751:3: ( ( ( lws )? display_name[object] )? sp_laquot addr_spec[object] raquot_sp ) // ../grammars/belle_sip_message.g:751:10: ( ( lws )? display_name[object] )? sp_laquot addr_spec[object] raquot_sp { // ../grammars/belle_sip_message.g:751:10: ( ( lws )? display_name[object] )? { int alt64=2; alt64 = cdfa64.predict(ctx, RECOGNIZER, ISTREAM, &cdfa64); if (HASEXCEPTION()) { goto rulename_addrEx; } if (HASFAILED()) { return ; } switch (alt64) { case 1: // ../grammars/belle_sip_message.g:751:11: ( lws )? display_name[object] { // ../grammars/belle_sip_message.g:751:11: ( lws )? { int alt63=2; switch ( LA(1) ) { case CRLF: case SP: { alt63=1; } break; } switch (alt63) { case 1: // ../grammars/belle_sip_message.g:751:11: lws { FOLLOWPUSH(FOLLOW_lws_in_name_addr2917); lws(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulename_addrEx; } if (HASFAILED()) { return ; } } break; } } FOLLOWPUSH(FOLLOW_display_name_in_name_addr2920); display_name(ctx, object); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulename_addrEx; } if (HASFAILED()) { return ; } } break; } } FOLLOWPUSH(FOLLOW_sp_laquot_in_name_addr2925); sp_laquot(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulename_addrEx; } if (HASFAILED()) { return ; } FOLLOWPUSH(FOLLOW_addr_spec_in_name_addr2928); addr_spec(ctx, object); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulename_addrEx; } if (HASFAILED()) { return ; } FOLLOWPUSH(FOLLOW_raquot_sp_in_name_addr2931); raquot_sp(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulename_addrEx; } if (HASFAILED()) { return ; } } } // This is where rules clean up and exit // goto rulename_addrEx; /* Prevent compiler warnings */ rulename_addrEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end name_addr */ /** * $ANTLR start name_addr_with_generic_uri * ../grammars/belle_sip_message.g:753:1: name_addr_with_generic_uri[belle_sip_header_address_t* object] : ( ( lws )? display_name[object] )? sp_laquot addr_spec_with_generic_uri[object] raquot_sp ; */ static void name_addr_with_generic_uri(pbelle_sip_messageParser ctx, belle_sip_header_address_t* object) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:754:3: ( ( ( lws )? display_name[object] )? sp_laquot addr_spec_with_generic_uri[object] raquot_sp ) // ../grammars/belle_sip_message.g:754:10: ( ( lws )? display_name[object] )? sp_laquot addr_spec_with_generic_uri[object] raquot_sp { // ../grammars/belle_sip_message.g:754:10: ( ( lws )? display_name[object] )? { int alt66=2; alt66 = cdfa66.predict(ctx, RECOGNIZER, ISTREAM, &cdfa66); if (HASEXCEPTION()) { goto rulename_addr_with_generic_uriEx; } if (HASFAILED()) { return ; } switch (alt66) { case 1: // ../grammars/belle_sip_message.g:754:11: ( lws )? display_name[object] { // ../grammars/belle_sip_message.g:754:11: ( lws )? { int alt65=2; switch ( LA(1) ) { case CRLF: case SP: { alt65=1; } break; } switch (alt65) { case 1: // ../grammars/belle_sip_message.g:754:11: lws { FOLLOWPUSH(FOLLOW_lws_in_name_addr_with_generic_uri2948); lws(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulename_addr_with_generic_uriEx; } if (HASFAILED()) { return ; } } break; } } FOLLOWPUSH(FOLLOW_display_name_in_name_addr_with_generic_uri2951); display_name(ctx, object); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulename_addr_with_generic_uriEx; } if (HASFAILED()) { return ; } } break; } } FOLLOWPUSH(FOLLOW_sp_laquot_in_name_addr_with_generic_uri2956); sp_laquot(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulename_addr_with_generic_uriEx; } if (HASFAILED()) { return ; } FOLLOWPUSH(FOLLOW_addr_spec_with_generic_uri_in_name_addr_with_generic_uri2959); addr_spec_with_generic_uri(ctx, object); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulename_addr_with_generic_uriEx; } if (HASFAILED()) { return ; } FOLLOWPUSH(FOLLOW_raquot_sp_in_name_addr_with_generic_uri2962); raquot_sp(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulename_addr_with_generic_uriEx; } if (HASFAILED()) { return ; } } } // This is where rules clean up and exit // goto rulename_addr_with_generic_uriEx; /* Prevent compiler warnings */ rulename_addr_with_generic_uriEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end name_addr_with_generic_uri */ /** * $ANTLR start fast_name_addr_with_generic_uri * ../grammars/belle_sip_message.g:756:1: fast_name_addr_with_generic_uri[belle_sip_header_address_t* object] : ( ( lws )? display_name[object] )? sp_laquot fast_addr_spec_with_generic_uri[object] raquot_sp ; */ static void fast_name_addr_with_generic_uri(pbelle_sip_messageParser ctx, belle_sip_header_address_t* object) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:757:3: ( ( ( lws )? display_name[object] )? sp_laquot fast_addr_spec_with_generic_uri[object] raquot_sp ) // ../grammars/belle_sip_message.g:757:10: ( ( lws )? display_name[object] )? sp_laquot fast_addr_spec_with_generic_uri[object] raquot_sp { // ../grammars/belle_sip_message.g:757:10: ( ( lws )? display_name[object] )? { int alt68=2; alt68 = cdfa68.predict(ctx, RECOGNIZER, ISTREAM, &cdfa68); if (HASEXCEPTION()) { goto rulefast_name_addr_with_generic_uriEx; } if (HASFAILED()) { return ; } switch (alt68) { case 1: // ../grammars/belle_sip_message.g:757:11: ( lws )? display_name[object] { // ../grammars/belle_sip_message.g:757:11: ( lws )? { int alt67=2; switch ( LA(1) ) { case CRLF: case SP: { alt67=1; } break; } switch (alt67) { case 1: // ../grammars/belle_sip_message.g:757:11: lws { FOLLOWPUSH(FOLLOW_lws_in_fast_name_addr_with_generic_uri2979); lws(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulefast_name_addr_with_generic_uriEx; } if (HASFAILED()) { return ; } } break; } } FOLLOWPUSH(FOLLOW_display_name_in_fast_name_addr_with_generic_uri2982); display_name(ctx, object); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulefast_name_addr_with_generic_uriEx; } if (HASFAILED()) { return ; } } break; } } FOLLOWPUSH(FOLLOW_sp_laquot_in_fast_name_addr_with_generic_uri2987); sp_laquot(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulefast_name_addr_with_generic_uriEx; } if (HASFAILED()) { return ; } FOLLOWPUSH(FOLLOW_fast_addr_spec_with_generic_uri_in_fast_name_addr_with_generic_uri2990); fast_addr_spec_with_generic_uri(ctx, object); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulefast_name_addr_with_generic_uriEx; } if (HASFAILED()) { return ; } FOLLOWPUSH(FOLLOW_raquot_sp_in_fast_name_addr_with_generic_uri2993); raquot_sp(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulefast_name_addr_with_generic_uriEx; } if (HASFAILED()) { return ; } } } // This is where rules clean up and exit // goto rulefast_name_addr_with_generic_uriEx; /* Prevent compiler warnings */ rulefast_name_addr_with_generic_uriEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end fast_name_addr_with_generic_uri */ /** * $ANTLR start addr_spec * ../grammars/belle_sip_message.g:761:1: addr_spec[belle_sip_header_address_t* object] : ( lws )? uri ( lws )? ; */ static void addr_spec(pbelle_sip_messageParser ctx, belle_sip_header_address_t* object) { belle_sip_uri_t* uri53; #undef RETURN_TYPE_uri53 #define RETURN_TYPE_uri53 belle_sip_uri_t* /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:762:3: ( ( lws )? uri ( lws )? ) // ../grammars/belle_sip_message.g:762:6: ( lws )? uri ( lws )? { // ../grammars/belle_sip_message.g:762:6: ( lws )? { int alt69=2; switch ( LA(1) ) { case CRLF: case SP: { alt69=1; } break; } switch (alt69) { case 1: // ../grammars/belle_sip_message.g:762:6: lws { FOLLOWPUSH(FOLLOW_lws_in_addr_spec3007); lws(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleaddr_specEx; } if (HASFAILED()) { return ; } } break; } } FOLLOWPUSH(FOLLOW_uri_in_addr_spec3010); uri53=uri(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleaddr_specEx; } if (HASFAILED()) { return ; } if ( BACKTRACKING==0 ) { belle_sip_header_address_set_uri(object,uri53 ); } // ../grammars/belle_sip_message.g:762:68: ( lws )? { int alt70=2; switch ( LA(1) ) { case CRLF: case SP: { alt70=1; } break; } switch (alt70) { case 1: // ../grammars/belle_sip_message.g:762:68: lws { FOLLOWPUSH(FOLLOW_lws_in_addr_spec3014); lws(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleaddr_specEx; } if (HASFAILED()) { return ; } } break; } } } } // This is where rules clean up and exit // goto ruleaddr_specEx; /* Prevent compiler warnings */ ruleaddr_specEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end addr_spec */ /** * $ANTLR start addr_spec_with_generic_uri * ../grammars/belle_sip_message.g:764:1: addr_spec_with_generic_uri[belle_sip_header_address_t* object] : ( lws )? ( uri | generic_uri ) ( lws )? ; */ static void addr_spec_with_generic_uri(pbelle_sip_messageParser ctx, belle_sip_header_address_t* object) { belle_sip_uri_t* uri54; #undef RETURN_TYPE_uri54 #define RETURN_TYPE_uri54 belle_sip_uri_t* belle_generic_uri_t* generic_uri55; #undef RETURN_TYPE_generic_uri55 #define RETURN_TYPE_generic_uri55 belle_generic_uri_t* /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:765:3: ( ( lws )? ( uri | generic_uri ) ( lws )? ) // ../grammars/belle_sip_message.g:765:6: ( lws )? ( uri | generic_uri ) ( lws )? { // ../grammars/belle_sip_message.g:765:6: ( lws )? { int alt71=2; switch ( LA(1) ) { case CRLF: case SP: { alt71=1; } break; } switch (alt71) { case 1: // ../grammars/belle_sip_message.g:765:6: lws { FOLLOWPUSH(FOLLOW_lws_in_addr_spec_with_generic_uri3027); lws(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleaddr_spec_with_generic_uriEx; } if (HASFAILED()) { return ; } } break; } } // ../grammars/belle_sip_message.g:765:11: ( uri | generic_uri ) { int alt72=2; alt72 = cdfa72.predict(ctx, RECOGNIZER, ISTREAM, &cdfa72); if (HASEXCEPTION()) { goto ruleaddr_spec_with_generic_uriEx; } if (HASFAILED()) { return ; } switch (alt72) { case 1: // ../grammars/belle_sip_message.g:765:13: uri { FOLLOWPUSH(FOLLOW_uri_in_addr_spec_with_generic_uri3032); uri54=uri(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleaddr_spec_with_generic_uriEx; } if (HASFAILED()) { return ; } if ( BACKTRACKING==0 ) { belle_sip_header_address_set_uri(object,uri54 ); } } break; case 2: // ../grammars/belle_sip_message.g:767:4: generic_uri { FOLLOWPUSH(FOLLOW_generic_uri_in_addr_spec_with_generic_uri3044); generic_uri55=generic_uri(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleaddr_spec_with_generic_uriEx; } if (HASFAILED()) { return ; } if ( BACKTRACKING==0 ) { const char *scheme = belle_generic_uri_get_scheme(generic_uri55 ); if ( scheme && strcasecmp(scheme,"sip") != 0 && strcasecmp(scheme, "sips") != 0 ) { belle_sip_header_address_set_absolute_uri(object,generic_uri55 ); } else { belle_sip_message("Cannot parse a sip/sips uri as a generic uri"); belle_sip_object_unref(generic_uri55 ); } } } break; } } // ../grammars/belle_sip_message.g:776:6: ( lws )? { int alt73=2; switch ( LA(1) ) { case CRLF: case SP: { alt73=1; } break; } switch (alt73) { case 1: // ../grammars/belle_sip_message.g:776:6: lws { FOLLOWPUSH(FOLLOW_lws_in_addr_spec_with_generic_uri3053); lws(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleaddr_spec_with_generic_uriEx; } if (HASFAILED()) { return ; } } break; } } } } // This is where rules clean up and exit // goto ruleaddr_spec_with_generic_uriEx; /* Prevent compiler warnings */ ruleaddr_spec_with_generic_uriEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end addr_spec_with_generic_uri */ /** * $ANTLR start fast_addr_spec_with_generic_uri * ../grammars/belle_sip_message.g:778:3: fast_addr_spec_with_generic_uri[belle_sip_header_address_t* object] : ( lws )? ( fast_uri | generic_uri ) ( lws )? ; */ static void fast_addr_spec_with_generic_uri(pbelle_sip_messageParser ctx, belle_sip_header_address_t* object) { belle_sip_uri_t* fast_uri56; #undef RETURN_TYPE_fast_uri56 #define RETURN_TYPE_fast_uri56 belle_sip_uri_t* belle_generic_uri_t* generic_uri57; #undef RETURN_TYPE_generic_uri57 #define RETURN_TYPE_generic_uri57 belle_generic_uri_t* /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:779:3: ( ( lws )? ( fast_uri | generic_uri ) ( lws )? ) // ../grammars/belle_sip_message.g:779:6: ( lws )? ( fast_uri | generic_uri ) ( lws )? { // ../grammars/belle_sip_message.g:779:6: ( lws )? { int alt74=2; switch ( LA(1) ) { case CRLF: case SP: { alt74=1; } break; } switch (alt74) { case 1: // ../grammars/belle_sip_message.g:779:6: lws { FOLLOWPUSH(FOLLOW_lws_in_fast_addr_spec_with_generic_uri3068); lws(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulefast_addr_spec_with_generic_uriEx; } if (HASFAILED()) { return ; } } break; } } // ../grammars/belle_sip_message.g:779:11: ( fast_uri | generic_uri ) { int alt75=2; alt75 = cdfa75.predict(ctx, RECOGNIZER, ISTREAM, &cdfa75); if (HASEXCEPTION()) { goto rulefast_addr_spec_with_generic_uriEx; } if (HASFAILED()) { return ; } switch (alt75) { case 1: // ../grammars/belle_sip_message.g:779:13: fast_uri { FOLLOWPUSH(FOLLOW_fast_uri_in_fast_addr_spec_with_generic_uri3073); fast_uri56=fast_uri(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulefast_addr_spec_with_generic_uriEx; } if (HASFAILED()) { return ; } if ( BACKTRACKING==0 ) { belle_sip_header_address_set_uri(object,fast_uri56 ); } } break; case 2: // ../grammars/belle_sip_message.g:781:4: generic_uri { FOLLOWPUSH(FOLLOW_generic_uri_in_fast_addr_spec_with_generic_uri3085); generic_uri57=generic_uri(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulefast_addr_spec_with_generic_uriEx; } if (HASFAILED()) { return ; } if ( BACKTRACKING==0 ) { const char *scheme = belle_generic_uri_get_scheme(generic_uri57 ); if ( scheme && strcasecmp(scheme, "sip") != 0 && strcasecmp(scheme, "sips") != 0 ) { belle_sip_header_address_set_absolute_uri(object, generic_uri57 ); } else { belle_sip_message("Cannot parse a sip/sips uri as a generic uri"); belle_sip_object_unref(generic_uri57 ); } } } break; } } // ../grammars/belle_sip_message.g:790:6: ( lws )? { int alt76=2; switch ( LA(1) ) { case CRLF: case SP: { alt76=1; } break; } switch (alt76) { case 1: // ../grammars/belle_sip_message.g:790:6: lws { FOLLOWPUSH(FOLLOW_lws_in_fast_addr_spec_with_generic_uri3094); lws(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulefast_addr_spec_with_generic_uriEx; } if (HASFAILED()) { return ; } } break; } } } } // This is where rules clean up and exit // goto rulefast_addr_spec_with_generic_uriEx; /* Prevent compiler warnings */ rulefast_addr_spec_with_generic_uriEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end fast_addr_spec_with_generic_uri */ /** * $ANTLR start paramless_addr_spec * ../grammars/belle_sip_message.g:792:1: paramless_addr_spec[belle_sip_header_address_t* object] : ( lws )? paramless_uri ( lws )? ; */ static void paramless_addr_spec(pbelle_sip_messageParser ctx, belle_sip_header_address_t* object) { belle_sip_uri_t* paramless_uri58; #undef RETURN_TYPE_paramless_uri58 #define RETURN_TYPE_paramless_uri58 belle_sip_uri_t* /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:793:3: ( ( lws )? paramless_uri ( lws )? ) // ../grammars/belle_sip_message.g:793:6: ( lws )? paramless_uri ( lws )? { // ../grammars/belle_sip_message.g:793:6: ( lws )? { int alt77=2; switch ( LA(1) ) { case CRLF: case SP: { alt77=1; } break; } switch (alt77) { case 1: // ../grammars/belle_sip_message.g:793:6: lws { FOLLOWPUSH(FOLLOW_lws_in_paramless_addr_spec3107); lws(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleparamless_addr_specEx; } if (HASFAILED()) { return ; } } break; } } FOLLOWPUSH(FOLLOW_paramless_uri_in_paramless_addr_spec3110); paramless_uri58=paramless_uri(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleparamless_addr_specEx; } if (HASFAILED()) { return ; } if ( BACKTRACKING==0 ) { belle_sip_header_address_set_uri(object,paramless_uri58 ); } // ../grammars/belle_sip_message.g:793:88: ( lws )? { int alt78=2; switch ( LA(1) ) { case CRLF: case SP: { alt78=1; } break; } switch (alt78) { case 1: // ../grammars/belle_sip_message.g:793:88: lws { FOLLOWPUSH(FOLLOW_lws_in_paramless_addr_spec3114); lws(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleparamless_addr_specEx; } if (HASFAILED()) { return ; } } break; } } } } // This is where rules clean up and exit // goto ruleparamless_addr_specEx; /* Prevent compiler warnings */ ruleparamless_addr_specEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end paramless_addr_spec */ /** * $ANTLR start paramless_addr_spec_with_generic_uri * ../grammars/belle_sip_message.g:795:1: paramless_addr_spec_with_generic_uri[belle_sip_header_address_t* object] : ( lws )? ( paramless_uri | generic_uri_for_from_to_contact_addr_spec ) ( lws )? ; */ static void paramless_addr_spec_with_generic_uri(pbelle_sip_messageParser ctx, belle_sip_header_address_t* object) { belle_sip_uri_t* paramless_uri59; #undef RETURN_TYPE_paramless_uri59 #define RETURN_TYPE_paramless_uri59 belle_sip_uri_t* belle_generic_uri_t* generic_uri_for_from_to_contact_addr_spec60; #undef RETURN_TYPE_generic_uri_for_from_to_contact_addr_spec60 #define RETURN_TYPE_generic_uri_for_from_to_contact_addr_spec60 belle_generic_uri_t* /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:796:3: ( ( lws )? ( paramless_uri | generic_uri_for_from_to_contact_addr_spec ) ( lws )? ) // ../grammars/belle_sip_message.g:796:6: ( lws )? ( paramless_uri | generic_uri_for_from_to_contact_addr_spec ) ( lws )? { // ../grammars/belle_sip_message.g:796:6: ( lws )? { int alt79=2; switch ( LA(1) ) { case CRLF: case SP: { alt79=1; } break; } switch (alt79) { case 1: // ../grammars/belle_sip_message.g:796:6: lws { FOLLOWPUSH(FOLLOW_lws_in_paramless_addr_spec_with_generic_uri3128); lws(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleparamless_addr_spec_with_generic_uriEx; } if (HASFAILED()) { return ; } } break; } } // ../grammars/belle_sip_message.g:796:11: ( paramless_uri | generic_uri_for_from_to_contact_addr_spec ) { int alt80=2; alt80 = cdfa80.predict(ctx, RECOGNIZER, ISTREAM, &cdfa80); if (HASEXCEPTION()) { goto ruleparamless_addr_spec_with_generic_uriEx; } if (HASFAILED()) { return ; } switch (alt80) { case 1: // ../grammars/belle_sip_message.g:796:13: paramless_uri { FOLLOWPUSH(FOLLOW_paramless_uri_in_paramless_addr_spec_with_generic_uri3133); paramless_uri59=paramless_uri(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleparamless_addr_spec_with_generic_uriEx; } if (HASFAILED()) { return ; } if ( BACKTRACKING==0 ) { belle_sip_header_address_set_uri(object,paramless_uri59 ); } } break; case 2: // ../grammars/belle_sip_message.g:798:4: generic_uri_for_from_to_contact_addr_spec { FOLLOWPUSH(FOLLOW_generic_uri_for_from_to_contact_addr_spec_in_paramless_addr_spec_with_generic_uri3145); generic_uri_for_from_to_contact_addr_spec60=generic_uri_for_from_to_contact_addr_spec(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleparamless_addr_spec_with_generic_uriEx; } if (HASFAILED()) { return ; } if ( BACKTRACKING==0 ) { belle_sip_header_address_set_absolute_uri(object,generic_uri_for_from_to_contact_addr_spec60 ); } } break; } } // ../grammars/belle_sip_message.g:799:6: ( lws )? { int alt81=2; switch ( LA(1) ) { case CRLF: case SP: { alt81=1; } break; } switch (alt81) { case 1: // ../grammars/belle_sip_message.g:799:6: lws { FOLLOWPUSH(FOLLOW_lws_in_paramless_addr_spec_with_generic_uri3153); lws(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleparamless_addr_spec_with_generic_uriEx; } if (HASFAILED()) { return ; } } break; } } } } // This is where rules clean up and exit // goto ruleparamless_addr_spec_with_generic_uriEx; /* Prevent compiler warnings */ ruleparamless_addr_spec_with_generic_uriEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end paramless_addr_spec_with_generic_uri */ /** * $ANTLR start display_name_tokens * ../grammars/belle_sip_message.g:801:1: display_name_tokens : token ( lws token )* ; */ static belle_sip_messageParser_display_name_tokens_return display_name_tokens(pbelle_sip_messageParser ctx) { belle_sip_messageParser_display_name_tokens_return retval; /* Initialize rule variables */ retval.start = LT(1); retval.stop = retval.start; { // ../grammars/belle_sip_message.g:802:2: ( token ( lws token )* ) // ../grammars/belle_sip_message.g:802:3: token ( lws token )* { FOLLOWPUSH(FOLLOW_token_in_display_name_tokens3163); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruledisplay_name_tokensEx; } if (HASFAILED()) { return retval; } // ../grammars/belle_sip_message.g:802:9: ( lws token )* for (;;) { int alt82=2; alt82 = cdfa82.predict(ctx, RECOGNIZER, ISTREAM, &cdfa82); if (HASEXCEPTION()) { goto ruledisplay_name_tokensEx; } if (HASFAILED()) { return retval; } switch (alt82) { case 1: // ../grammars/belle_sip_message.g:802:10: lws token { FOLLOWPUSH(FOLLOW_lws_in_display_name_tokens3166); lws(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruledisplay_name_tokensEx; } if (HASFAILED()) { return retval; } FOLLOWPUSH(FOLLOW_token_in_display_name_tokens3168); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruledisplay_name_tokensEx; } if (HASFAILED()) { return retval; } } break; default: goto loop82; /* break out of the loop */ break; } } loop82: ; /* Jump out to here if this rule does not match */ } } // This is where rules clean up and exit // goto ruledisplay_name_tokensEx; /* Prevent compiler warnings */ ruledisplay_name_tokensEx: ; retval.stop = LT(-1); if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end display_name_tokens */ /** * $ANTLR start display_name * ../grammars/belle_sip_message.g:803:1: display_name[belle_sip_header_address_t* object] : ( display_name_tokens | quoted_string ); */ static void display_name(pbelle_sip_messageParser ctx, belle_sip_header_address_t* object) { belle_sip_messageParser_display_name_tokens_return display_name_tokens61; #undef RETURN_TYPE_display_name_tokens61 #define RETURN_TYPE_display_name_tokens61 belle_sip_messageParser_display_name_tokens_return belle_sip_messageParser_quoted_string_return quoted_string62; #undef RETURN_TYPE_quoted_string62 #define RETURN_TYPE_quoted_string62 belle_sip_messageParser_quoted_string_return /* Initialize rule variables */ { { // ../grammars/belle_sip_message.g:804:3: ( display_name_tokens | quoted_string ) ANTLR3_UINT32 alt83; alt83=2; switch ( LA(1) ) { case BQUOTE: case COMMON_CHAR: case DASH: case DIGIT: case DOT: case EMARK: case HEX_CHAR: case LPAREN: case PERCENT: case PLUS: case RPAREN: case SQUOTE: case STAR: case TILDE: case USCORE: { alt83=1; } break; case DQUOTE: { alt83=2; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 83; EXCEPTION->state = 0; goto ruledisplay_nameEx; } switch (alt83) { case 1: // ../grammars/belle_sip_message.g:804:6: display_name_tokens { FOLLOWPUSH(FOLLOW_display_name_tokens_in_display_name3182); display_name_tokens61=display_name_tokens(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruledisplay_nameEx; } if (HASFAILED()) { return ; } if ( BACKTRACKING==0 ) { belle_sip_header_address_set_displayname(object,(const char*)((STRSTREAM->toStringTT(STRSTREAM, display_name_tokens61.start, display_name_tokens61.stop)) ->chars)); } } break; case 2: // ../grammars/belle_sip_message.g:805:8: quoted_string { FOLLOWPUSH(FOLLOW_quoted_string_in_display_name3193); quoted_string62=quoted_string(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruledisplay_nameEx; } if (HASFAILED()) { return ; } if ( BACKTRACKING==0 ) { char* unescaped_char = belle_sip_string_to_backslash_less_unescaped_string((const char*)((STRSTREAM->toStringTT(STRSTREAM, quoted_string62.start, quoted_string62.stop)) ->chars)); belle_sip_header_address_set_quoted_displayname(object,(const char*)unescaped_char); belle_sip_free(unescaped_char); } } break; } } } // This is where rules clean up and exit // goto ruledisplay_nameEx; /* Prevent compiler warnings */ ruledisplay_nameEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end display_name */ /** * $ANTLR start contact_params * ../grammars/belle_sip_message.g:813:1: contact_params : contact_extension ; */ static void contact_params(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:814:3: ( contact_extension ) // ../grammars/belle_sip_message.g:815:27: contact_extension { FOLLOWPUSH(FOLLOW_contact_extension_in_contact_params3221); contact_extension(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulecontact_paramsEx; } if (HASFAILED()) { return ; } } } // This is where rules clean up and exit // goto rulecontact_paramsEx; /* Prevent compiler warnings */ rulecontact_paramsEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end contact_params */ /** * $ANTLR start contact_extension * ../grammars/belle_sip_message.g:820:1: contact_extension : generic_param[BELLE_SIP_PARAMETERS($header_contact::current)] ; */ static void contact_extension(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:821:3: ( generic_param[BELLE_SIP_PARAMETERS($header_contact::current)] ) // ../grammars/belle_sip_message.g:821:7: generic_param[BELLE_SIP_PARAMETERS($header_contact::current)] { FOLLOWPUSH(FOLLOW_generic_param_in_contact_extension3234); generic_param(ctx, BELLE_SIP_PARAMETERS((SCOPE_TOP(header_contact))->current)); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulecontact_extensionEx; } if (HASFAILED()) { return ; } } } // This is where rules clean up and exit // goto rulecontact_extensionEx; /* Prevent compiler warnings */ rulecontact_extensionEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end contact_extension */ /** * $ANTLR start delta_seconds * ../grammars/belle_sip_message.g:823:1: delta_seconds : ( DIGIT )+ ; */ static belle_sip_messageParser_delta_seconds_return delta_seconds(pbelle_sip_messageParser ctx) { belle_sip_messageParser_delta_seconds_return retval; /* Initialize rule variables */ retval.start = LT(1); retval.stop = retval.start; { // ../grammars/belle_sip_message.g:824:3: ( ( DIGIT )+ ) // ../grammars/belle_sip_message.g:824:7: ( DIGIT )+ { // ../grammars/belle_sip_message.g:824:7: ( DIGIT )+ { int cnt84=0; for (;;) { int alt84=2; switch ( LA(1) ) { case DIGIT: { alt84=1; } break; } switch (alt84) { case 1: // ../grammars/belle_sip_message.g:824:7: DIGIT { MATCHT(DIGIT, &FOLLOW_DIGIT_in_delta_seconds3248); if (HASEXCEPTION()) { goto ruledelta_secondsEx; } if (HASFAILED()) { return retval; } } break; default: if ( cnt84 >= 1 ) { goto loop84; } if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } /* mismatchedSetEx() */ CONSTRUCTEX(); EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME; goto ruledelta_secondsEx; } cnt84++; } loop84: ; /* Jump to here if this rule does not match */ } } } // This is where rules clean up and exit // goto ruledelta_secondsEx; /* Prevent compiler warnings */ ruledelta_secondsEx: ; retval.stop = LT(-1); if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end delta_seconds */ /** * $ANTLR start content_length_token * ../grammars/belle_sip_message.g:863:1: content_length_token :{...}? token ; */ static void content_length_token(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:863:22: ({...}? token ) // ../grammars/belle_sip_message.g:863:25: {...}? token { if ( !((IS_HEADER_NAMED(Content-Length,l))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_HEADER_NAMED(Content-Length,l)"; EXCEPTION->ruleName = (void *)"content_length_token"; } FOLLOWPUSH(FOLLOW_token_in_content_length_token3263); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulecontent_length_tokenEx; } if (HASFAILED()) { return ; } } } // This is where rules clean up and exit // goto rulecontent_length_tokenEx; /* Prevent compiler warnings */ rulecontent_length_tokenEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end content_length_token */ /** * $ANTLR start header_content_length * ../grammars/belle_sip_message.g:864:1: header_content_length returns [belle_sip_header_content_length_t* ret] : content_length_token hcolon content_length ; */ static belle_sip_header_content_length_t* header_content_length(pbelle_sip_messageParser ctx) { belle_sip_header_content_length_t* ret; belle_sip_messageParser_content_length_return content_length63; #undef RETURN_TYPE_content_length63 #define RETURN_TYPE_content_length63 belle_sip_messageParser_content_length_return /* Initialize rule variables */ ctx->pbelle_sip_messageParser_header_content_lengthTop = pbelle_sip_messageParser_header_content_lengthPush(ctx); (SCOPE_TOP(header_content_length))->current= belle_sip_header_content_length_new(); ret=(SCOPE_TOP(header_content_length))->current; { // ../grammars/belle_sip_message.g:867:3: ( content_length_token hcolon content_length ) // ../grammars/belle_sip_message.g:867:6: content_length_token hcolon content_length { FOLLOWPUSH(FOLLOW_content_length_token_in_header_content_length3287); content_length_token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_content_lengthEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_content_lengthPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_hcolon_in_header_content_length3296); hcolon(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_content_lengthEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_content_lengthPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_content_length_in_header_content_length3303); content_length63=content_length(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_content_lengthEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_content_lengthPop(ctx); return ret; } if ( BACKTRACKING==0 ) { belle_sip_header_content_length_set_content_length((SCOPE_TOP(header_content_length))->current,atoi((const char*) (STRSTREAM->toStringTT(STRSTREAM, content_length63.start, content_length63.stop)) ->chars)); } } } // This is where rules clean up and exit // goto ruleheader_content_lengthEx; /* Prevent compiler warnings */ ruleheader_content_lengthEx: ; if (HASEXCEPTION()) { /* catch(decl,action) */ { belle_sip_message("[%s] reason [%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref((SCOPE_TOP(header_content_length))->current); ret=NULL; } } else { } pbelle_sip_messageParser_header_content_lengthPop(ctx); return ret; } /* $ANTLR end header_content_length */ /** * $ANTLR start content_length * ../grammars/belle_sip_message.g:876:1: content_length : ( DIGIT )+ ; */ static belle_sip_messageParser_content_length_return content_length(pbelle_sip_messageParser ctx) { belle_sip_messageParser_content_length_return retval; /* Initialize rule variables */ retval.start = LT(1); retval.stop = retval.start; { // ../grammars/belle_sip_message.g:876:15: ( ( DIGIT )+ ) // ../grammars/belle_sip_message.g:876:16: ( DIGIT )+ { // ../grammars/belle_sip_message.g:876:16: ( DIGIT )+ { int cnt85=0; for (;;) { int alt85=2; switch ( LA(1) ) { case DIGIT: { alt85=1; } break; } switch (alt85) { case 1: // ../grammars/belle_sip_message.g:876:16: DIGIT { MATCHT(DIGIT, &FOLLOW_DIGIT_in_content_length3316); if (HASEXCEPTION()) { goto rulecontent_lengthEx; } if (HASFAILED()) { return retval; } } break; default: if ( cnt85 >= 1 ) { goto loop85; } if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } /* mismatchedSetEx() */ CONSTRUCTEX(); EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME; goto rulecontent_lengthEx; } cnt85++; } loop85: ; /* Jump to here if this rule does not match */ } } } // This is where rules clean up and exit // goto rulecontent_lengthEx; /* Prevent compiler warnings */ rulecontent_lengthEx: ; retval.stop = LT(-1); if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end content_length */ /** * $ANTLR start content_type_token * ../grammars/belle_sip_message.g:878:1: content_type_token :{...}? token ; */ static void content_type_token(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:878:20: ({...}? token ) // ../grammars/belle_sip_message.g:878:23: {...}? token { if ( !((IS_HEADER_NAMED(Content-Type,c))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_HEADER_NAMED(Content-Type,c)"; EXCEPTION->ruleName = (void *)"content_type_token"; } FOLLOWPUSH(FOLLOW_token_in_content_type_token3328); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulecontent_type_tokenEx; } if (HASFAILED()) { return ; } } } // This is where rules clean up and exit // goto rulecontent_type_tokenEx; /* Prevent compiler warnings */ rulecontent_type_tokenEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end content_type_token */ /** * $ANTLR start header_content_type * ../grammars/belle_sip_message.g:879:1: header_content_type returns [belle_sip_header_content_type_t* ret=NULL] : content_type_token hcolon media_type ; */ static belle_sip_header_content_type_t* header_content_type(pbelle_sip_messageParser ctx) { belle_sip_header_content_type_t* ret; /* Initialize rule variables */ ret = NULL; ctx->pbelle_sip_messageParser_header_content_typeTop = pbelle_sip_messageParser_header_content_typePush(ctx); (SCOPE_TOP(header_content_type))->current= belle_sip_header_content_type_new(); ret=(SCOPE_TOP(header_content_type))->current; { // ../grammars/belle_sip_message.g:882:3: ( content_type_token hcolon media_type ) // ../grammars/belle_sip_message.g:882:6: content_type_token hcolon media_type { FOLLOWPUSH(FOLLOW_content_type_token_in_header_content_type3352); content_type_token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_content_typeEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_content_typePop(ctx); return ret; } FOLLOWPUSH(FOLLOW_hcolon_in_header_content_type3355); hcolon(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_content_typeEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_content_typePop(ctx); return ret; } FOLLOWPUSH(FOLLOW_media_type_in_header_content_type3357); media_type(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_content_typeEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_content_typePop(ctx); return ret; } } } // This is where rules clean up and exit // goto ruleheader_content_typeEx; /* Prevent compiler warnings */ ruleheader_content_typeEx: ; if (HASEXCEPTION()) { /* catch(decl,action) */ { belle_sip_message("[%s] reason [%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref((SCOPE_TOP(header_content_type))->current); ret=NULL; } } else { } pbelle_sip_messageParser_header_content_typePop(ctx); return ret; } /* $ANTLR end header_content_type */ /** * $ANTLR start media_type * ../grammars/belle_sip_message.g:889:1: media_type : m_type slash m_subtype ( semi type_param )? ( semi generic_param[BELLE_SIP_PARAMETERS($header_content_type::current)] )* ; */ static void media_type(pbelle_sip_messageParser ctx) { belle_sip_messageParser_m_type_return m_type64; #undef RETURN_TYPE_m_type64 #define RETURN_TYPE_m_type64 belle_sip_messageParser_m_type_return belle_sip_messageParser_m_subtype_return m_subtype65; #undef RETURN_TYPE_m_subtype65 #define RETURN_TYPE_m_subtype65 belle_sip_messageParser_m_subtype_return /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:890:3: ( m_type slash m_subtype ( semi type_param )? ( semi generic_param[BELLE_SIP_PARAMETERS($header_content_type::current)] )* ) // ../grammars/belle_sip_message.g:890:6: m_type slash m_subtype ( semi type_param )? ( semi generic_param[BELLE_SIP_PARAMETERS($header_content_type::current)] )* { FOLLOWPUSH(FOLLOW_m_type_in_media_type3373); m_type64=m_type(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulemedia_typeEx; } if (HASFAILED()) { return ; } if ( BACKTRACKING==0 ) { belle_sip_header_content_type_set_type((SCOPE_TOP(header_content_type))->current,(const char*) (STRSTREAM->toStringTT(STRSTREAM, m_type64.start, m_type64.stop)) ->chars); } FOLLOWPUSH(FOLLOW_slash_in_media_type3382); slash(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulemedia_typeEx; } if (HASFAILED()) { return ; } FOLLOWPUSH(FOLLOW_m_subtype_in_media_type3389); m_subtype65=m_subtype(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulemedia_typeEx; } if (HASFAILED()) { return ; } if ( BACKTRACKING==0 ) { belle_sip_header_content_type_set_subtype((SCOPE_TOP(header_content_type))->current,(const char*) (STRSTREAM->toStringTT(STRSTREAM, m_subtype65.start, m_subtype65.stop)) ->chars); } // ../grammars/belle_sip_message.g:893:6: ( semi type_param )? { int alt86=2; alt86 = cdfa86.predict(ctx, RECOGNIZER, ISTREAM, &cdfa86); if (HASEXCEPTION()) { goto rulemedia_typeEx; } if (HASFAILED()) { return ; } switch (alt86) { case 1: // ../grammars/belle_sip_message.g:893:7: semi type_param { FOLLOWPUSH(FOLLOW_semi_in_media_type3399); semi(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulemedia_typeEx; } if (HASFAILED()) { return ; } FOLLOWPUSH(FOLLOW_type_param_in_media_type3401); type_param(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulemedia_typeEx; } if (HASFAILED()) { return ; } } break; } } // ../grammars/belle_sip_message.g:893:25: ( semi generic_param[BELLE_SIP_PARAMETERS($header_content_type::current)] )* for (;;) { int alt87=2; switch ( LA(1) ) { case CRLF: case SEMI: case SP: { alt87=1; } break; } switch (alt87) { case 1: // ../grammars/belle_sip_message.g:893:26: semi generic_param[BELLE_SIP_PARAMETERS($header_content_type::current)] { FOLLOWPUSH(FOLLOW_semi_in_media_type3406); semi(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulemedia_typeEx; } if (HASFAILED()) { return ; } FOLLOWPUSH(FOLLOW_generic_param_in_media_type3408); generic_param(ctx, BELLE_SIP_PARAMETERS((SCOPE_TOP(header_content_type))->current)); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulemedia_typeEx; } if (HASFAILED()) { return ; } } break; default: goto loop87; /* break out of the loop */ break; } } loop87: ; /* Jump out to here if this rule does not match */ } } // This is where rules clean up and exit // goto rulemedia_typeEx; /* Prevent compiler warnings */ rulemedia_typeEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end media_type */ /** * $ANTLR start m_type * ../grammars/belle_sip_message.g:894:1: m_type : token ; */ static belle_sip_messageParser_m_type_return m_type(pbelle_sip_messageParser ctx) { belle_sip_messageParser_m_type_return retval; /* Initialize rule variables */ retval.start = LT(1); retval.stop = retval.start; { // ../grammars/belle_sip_message.g:895:3: ( token ) // ../grammars/belle_sip_message.g:895:5: token { FOLLOWPUSH(FOLLOW_token_in_m_type3421); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulem_typeEx; } if (HASFAILED()) { return retval; } } } // This is where rules clean up and exit // goto rulem_typeEx; /* Prevent compiler warnings */ rulem_typeEx: ; retval.stop = LT(-1); if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end m_type */ /** * $ANTLR start type_param * ../grammars/belle_sip_message.g:897:1: type_param :{...}? token equal type_param_value ; */ static void type_param(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:897:11: ({...}? token equal type_param_value ) // ../grammars/belle_sip_message.g:897:13: {...}? token equal type_param_value { if ( !((IS_TOKEN(type))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(type)"; EXCEPTION->ruleName = (void *)"type_param"; } FOLLOWPUSH(FOLLOW_token_in_type_param3430); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruletype_paramEx; } if (HASFAILED()) { return ; } FOLLOWPUSH(FOLLOW_equal_in_type_param3432); equal(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruletype_paramEx; } if (HASFAILED()) { return ; } FOLLOWPUSH(FOLLOW_type_param_value_in_type_param3434); type_param_value(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruletype_paramEx; } if (HASFAILED()) { return ; } } } // This is where rules clean up and exit // goto ruletype_paramEx; /* Prevent compiler warnings */ ruletype_paramEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end type_param */ /** * $ANTLR start type_param_value * ../grammars/belle_sip_message.g:898:1: type_param_value : m_type slash m_subtype ; */ static belle_sip_messageParser_type_param_value_return type_param_value(pbelle_sip_messageParser ctx) { belle_sip_messageParser_type_param_value_return retval; /* Initialize rule variables */ retval.start = LT(1); retval.stop = retval.start; { // ../grammars/belle_sip_message.g:898:18: ( m_type slash m_subtype ) // ../grammars/belle_sip_message.g:898:20: m_type slash m_subtype { FOLLOWPUSH(FOLLOW_m_type_in_type_param_value3441); m_type(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruletype_param_valueEx; } if (HASFAILED()) { return retval; } FOLLOWPUSH(FOLLOW_slash_in_type_param_value3443); slash(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruletype_param_valueEx; } if (HASFAILED()) { return retval; } FOLLOWPUSH(FOLLOW_m_subtype_in_type_param_value3445); m_subtype(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruletype_param_valueEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { belle_sip_parameters_set_parameter(BELLE_SIP_PARAMETERS((SCOPE_TOP(header_content_type))->current) ,"type" ,(const char*) STRSTREAM->toStringTT(STRSTREAM, retval.start, LT(-1)) ->chars); } } } // This is where rules clean up and exit // goto ruletype_param_valueEx; /* Prevent compiler warnings */ ruletype_param_valueEx: ; retval.stop = LT(-1); if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end type_param_value */ /** * $ANTLR start m_subtype * ../grammars/belle_sip_message.g:914:1: m_subtype : token ; */ static belle_sip_messageParser_m_subtype_return m_subtype(pbelle_sip_messageParser ctx) { belle_sip_messageParser_m_subtype_return retval; /* Initialize rule variables */ retval.start = LT(1); retval.stop = retval.start; { // ../grammars/belle_sip_message.g:914:18: ( token ) // ../grammars/belle_sip_message.g:914:20: token { FOLLOWPUSH(FOLLOW_token_in_m_subtype3464); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulem_subtypeEx; } if (HASFAILED()) { return retval; } } } // This is where rules clean up and exit // goto rulem_subtypeEx; /* Prevent compiler warnings */ rulem_subtypeEx: ; retval.stop = LT(-1); if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end m_subtype */ /** * $ANTLR start cseq_token * ../grammars/belle_sip_message.g:925:1: cseq_token :{...}? token ; */ static void cseq_token(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:925:12: ({...}? token ) // ../grammars/belle_sip_message.g:925:15: {...}? token { if ( !((IS_TOKEN(CSeq))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(CSeq)"; EXCEPTION->ruleName = (void *)"cseq_token"; } FOLLOWPUSH(FOLLOW_token_in_cseq_token3477); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulecseq_tokenEx; } if (HASFAILED()) { return ; } } } // This is where rules clean up and exit // goto rulecseq_tokenEx; /* Prevent compiler warnings */ rulecseq_tokenEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end cseq_token */ /** * $ANTLR start header_cseq * ../grammars/belle_sip_message.g:926:1: header_cseq returns [belle_sip_header_cseq_t* ret] : cseq_token hcolon seq_number lws method ; */ static belle_sip_header_cseq_t* header_cseq(pbelle_sip_messageParser ctx) { belle_sip_header_cseq_t* ret; belle_sip_messageParser_seq_number_return seq_number66; #undef RETURN_TYPE_seq_number66 #define RETURN_TYPE_seq_number66 belle_sip_messageParser_seq_number_return belle_sip_messageParser_method_return method67; #undef RETURN_TYPE_method67 #define RETURN_TYPE_method67 belle_sip_messageParser_method_return /* Initialize rule variables */ ctx->pbelle_sip_messageParser_header_cseqTop = pbelle_sip_messageParser_header_cseqPush(ctx); (SCOPE_TOP(header_cseq))->current= belle_sip_header_cseq_new(); ret= (SCOPE_TOP(header_cseq))->current; { // ../grammars/belle_sip_message.g:929:3: ( cseq_token hcolon seq_number lws method ) // ../grammars/belle_sip_message.g:929:5: cseq_token hcolon seq_number lws method { FOLLOWPUSH(FOLLOW_cseq_token_in_header_cseq3500); cseq_token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_cseqEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_cseqPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_hcolon_in_header_cseq3506); hcolon(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_cseqEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_cseqPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_seq_number_in_header_cseq3512); seq_number66=seq_number(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_cseqEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_cseqPop(ctx); return ret; } if ( BACKTRACKING==0 ) { belle_sip_header_cseq_set_seq_number((SCOPE_TOP(header_cseq))->current,atoi((const char*) (STRSTREAM->toStringTT(STRSTREAM, seq_number66.start, seq_number66.stop)) ->chars)); } FOLLOWPUSH(FOLLOW_lws_in_header_cseq3520); lws(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_cseqEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_cseqPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_method_in_header_cseq3526); method67=method(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_cseqEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_cseqPop(ctx); return ret; } if ( BACKTRACKING==0 ) { belle_sip_header_cseq_set_method((SCOPE_TOP(header_cseq))->current,(const char*) (STRSTREAM->toStringTT(STRSTREAM, method67.start, method67.stop)) ->chars); } } } // This is where rules clean up and exit // goto ruleheader_cseqEx; /* Prevent compiler warnings */ ruleheader_cseqEx: ; if (HASEXCEPTION()) { /* catch(decl,action) */ { belle_sip_message("[%s] reason [%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref((SCOPE_TOP(header_cseq))->current); ret=NULL; } } else { } pbelle_sip_messageParser_header_cseqPop(ctx); return ret; } /* $ANTLR end header_cseq */ /** * $ANTLR start seq_number * ../grammars/belle_sip_message.g:940:1: seq_number : ( DIGIT )+ ; */ static belle_sip_messageParser_seq_number_return seq_number(pbelle_sip_messageParser ctx) { belle_sip_messageParser_seq_number_return retval; /* Initialize rule variables */ retval.start = LT(1); retval.stop = retval.start; { // ../grammars/belle_sip_message.g:940:11: ( ( DIGIT )+ ) // ../grammars/belle_sip_message.g:940:12: ( DIGIT )+ { // ../grammars/belle_sip_message.g:940:12: ( DIGIT )+ { int cnt88=0; for (;;) { int alt88=2; switch ( LA(1) ) { case DIGIT: { alt88=1; } break; } switch (alt88) { case 1: // ../grammars/belle_sip_message.g:940:12: DIGIT { MATCHT(DIGIT, &FOLLOW_DIGIT_in_seq_number3540); if (HASEXCEPTION()) { goto ruleseq_numberEx; } if (HASFAILED()) { return retval; } } break; default: if ( cnt88 >= 1 ) { goto loop88; } if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } /* mismatchedSetEx() */ CONSTRUCTEX(); EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME; goto ruleseq_numberEx; } cnt88++; } loop88: ; /* Jump to here if this rule does not match */ } } } // This is where rules clean up and exit // goto ruleseq_numberEx; /* Prevent compiler warnings */ ruleseq_numberEx: ; retval.stop = LT(-1); if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end seq_number */ /** * $ANTLR start date_token * ../grammars/belle_sip_message.g:943:1: date_token :{...}? token ; */ static void date_token(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:943:11: ({...}? token ) // ../grammars/belle_sip_message.g:943:13: {...}? token { if ( !((IS_TOKEN(Date))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(Date)"; EXCEPTION->ruleName = (void *)"date_token"; } FOLLOWPUSH(FOLLOW_token_in_date_token3552); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruledate_tokenEx; } if (HASFAILED()) { return ; } } } // This is where rules clean up and exit // goto ruledate_tokenEx; /* Prevent compiler warnings */ ruledate_tokenEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end date_token */ /** * $ANTLR start header_date * ../grammars/belle_sip_message.g:945:1: header_date returns [belle_sip_header_date_t* ret] : date_token hcolon sip_date ; */ static belle_sip_header_date_t* header_date(pbelle_sip_messageParser ctx) { belle_sip_header_date_t* ret; belle_sip_messageParser_sip_date_return sip_date68; #undef RETURN_TYPE_sip_date68 #define RETURN_TYPE_sip_date68 belle_sip_messageParser_sip_date_return /* Initialize rule variables */ ctx->pbelle_sip_messageParser_header_dateTop = pbelle_sip_messageParser_header_datePush(ctx); (SCOPE_TOP(header_date))->current= belle_sip_header_date_new(); ret=(SCOPE_TOP(header_date))->current; { // ../grammars/belle_sip_message.g:948:3: ( date_token hcolon sip_date ) // ../grammars/belle_sip_message.g:948:6: date_token hcolon sip_date { FOLLOWPUSH(FOLLOW_date_token_in_header_date3577); date_token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_dateEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_datePop(ctx); return ret; } FOLLOWPUSH(FOLLOW_hcolon_in_header_date3581); hcolon(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_dateEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_datePop(ctx); return ret; } FOLLOWPUSH(FOLLOW_sip_date_in_header_date3583); sip_date68=sip_date(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_dateEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_datePop(ctx); return ret; } if ( BACKTRACKING==0 ) { belle_sip_header_date_set_date((SCOPE_TOP(header_date))->current,(const char*) (STRSTREAM->toStringTT(STRSTREAM, sip_date68.start, sip_date68.stop)) ->chars); } } } // This is where rules clean up and exit // goto ruleheader_dateEx; /* Prevent compiler warnings */ ruleheader_dateEx: ; if (HASEXCEPTION()) { /* catch(decl,action) */ { belle_sip_message("[%s] reason [%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref((SCOPE_TOP(header_date))->current); ret=NULL; } } else { } pbelle_sip_messageParser_header_datePop(ctx); return ret; } /* $ANTLR end header_date */ /** * $ANTLR start date * ../grammars/belle_sip_message.g:956:1: date : sip_date ; */ static void date(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:957:3: ( sip_date ) // ../grammars/belle_sip_message.g:957:5: sip_date { FOLLOWPUSH(FOLLOW_sip_date_in_date3600); sip_date(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruledateEx; } if (HASFAILED()) { return ; } } } // This is where rules clean up and exit // goto ruledateEx; /* Prevent compiler warnings */ ruledateEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end date */ /** * $ANTLR start sip_date * ../grammars/belle_sip_message.g:959:1: sip_date : alpha alpha alpha COMMA SP DIGIT DIGIT SP alpha alpha alpha SP DIGIT DIGIT DIGIT DIGIT SP DIGIT DIGIT COLON DIGIT DIGIT COLON DIGIT DIGIT SP alpha alpha alpha ; */ static belle_sip_messageParser_sip_date_return sip_date(pbelle_sip_messageParser ctx) { belle_sip_messageParser_sip_date_return retval; /* Initialize rule variables */ retval.start = LT(1); retval.stop = retval.start; { // ../grammars/belle_sip_message.g:960:3: ( alpha alpha alpha COMMA SP DIGIT DIGIT SP alpha alpha alpha SP DIGIT DIGIT DIGIT DIGIT SP DIGIT DIGIT COLON DIGIT DIGIT COLON DIGIT DIGIT SP alpha alpha alpha ) // ../grammars/belle_sip_message.g:960:15: alpha alpha alpha COMMA SP DIGIT DIGIT SP alpha alpha alpha SP DIGIT DIGIT DIGIT DIGIT SP DIGIT DIGIT COLON DIGIT DIGIT COLON DIGIT DIGIT SP alpha alpha alpha { FOLLOWPUSH(FOLLOW_alpha_in_sip_date3612); alpha(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesip_dateEx; } if (HASFAILED()) { return retval; } FOLLOWPUSH(FOLLOW_alpha_in_sip_date3614); alpha(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesip_dateEx; } if (HASFAILED()) { return retval; } FOLLOWPUSH(FOLLOW_alpha_in_sip_date3616); alpha(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesip_dateEx; } if (HASFAILED()) { return retval; } MATCHT(COMMA, &FOLLOW_COMMA_in_sip_date3618); if (HASEXCEPTION()) { goto rulesip_dateEx; } if (HASFAILED()) { return retval; } MATCHT(SP, &FOLLOW_SP_in_sip_date3620); if (HASEXCEPTION()) { goto rulesip_dateEx; } if (HASFAILED()) { return retval; } MATCHT(DIGIT, &FOLLOW_DIGIT_in_sip_date3623); if (HASEXCEPTION()) { goto rulesip_dateEx; } if (HASFAILED()) { return retval; } MATCHT(DIGIT, &FOLLOW_DIGIT_in_sip_date3625); if (HASEXCEPTION()) { goto rulesip_dateEx; } if (HASFAILED()) { return retval; } MATCHT(SP, &FOLLOW_SP_in_sip_date3627); if (HASEXCEPTION()) { goto rulesip_dateEx; } if (HASFAILED()) { return retval; } FOLLOWPUSH(FOLLOW_alpha_in_sip_date3629); alpha(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesip_dateEx; } if (HASFAILED()) { return retval; } FOLLOWPUSH(FOLLOW_alpha_in_sip_date3631); alpha(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesip_dateEx; } if (HASFAILED()) { return retval; } FOLLOWPUSH(FOLLOW_alpha_in_sip_date3633); alpha(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesip_dateEx; } if (HASFAILED()) { return retval; } MATCHT(SP, &FOLLOW_SP_in_sip_date3635); if (HASEXCEPTION()) { goto rulesip_dateEx; } if (HASFAILED()) { return retval; } MATCHT(DIGIT, &FOLLOW_DIGIT_in_sip_date3637); if (HASEXCEPTION()) { goto rulesip_dateEx; } if (HASFAILED()) { return retval; } MATCHT(DIGIT, &FOLLOW_DIGIT_in_sip_date3639); if (HASEXCEPTION()) { goto rulesip_dateEx; } if (HASFAILED()) { return retval; } MATCHT(DIGIT, &FOLLOW_DIGIT_in_sip_date3641); if (HASEXCEPTION()) { goto rulesip_dateEx; } if (HASFAILED()) { return retval; } MATCHT(DIGIT, &FOLLOW_DIGIT_in_sip_date3643); if (HASEXCEPTION()) { goto rulesip_dateEx; } if (HASFAILED()) { return retval; } MATCHT(SP, &FOLLOW_SP_in_sip_date3645); if (HASEXCEPTION()) { goto rulesip_dateEx; } if (HASFAILED()) { return retval; } MATCHT(DIGIT, &FOLLOW_DIGIT_in_sip_date3648); if (HASEXCEPTION()) { goto rulesip_dateEx; } if (HASFAILED()) { return retval; } MATCHT(DIGIT, &FOLLOW_DIGIT_in_sip_date3650); if (HASEXCEPTION()) { goto rulesip_dateEx; } if (HASFAILED()) { return retval; } MATCHT(COLON, &FOLLOW_COLON_in_sip_date3653); if (HASEXCEPTION()) { goto rulesip_dateEx; } if (HASFAILED()) { return retval; } MATCHT(DIGIT, &FOLLOW_DIGIT_in_sip_date3655); if (HASEXCEPTION()) { goto rulesip_dateEx; } if (HASFAILED()) { return retval; } MATCHT(DIGIT, &FOLLOW_DIGIT_in_sip_date3657); if (HASEXCEPTION()) { goto rulesip_dateEx; } if (HASFAILED()) { return retval; } MATCHT(COLON, &FOLLOW_COLON_in_sip_date3660); if (HASEXCEPTION()) { goto rulesip_dateEx; } if (HASFAILED()) { return retval; } MATCHT(DIGIT, &FOLLOW_DIGIT_in_sip_date3662); if (HASEXCEPTION()) { goto rulesip_dateEx; } if (HASFAILED()) { return retval; } MATCHT(DIGIT, &FOLLOW_DIGIT_in_sip_date3664); if (HASEXCEPTION()) { goto rulesip_dateEx; } if (HASFAILED()) { return retval; } MATCHT(SP, &FOLLOW_SP_in_sip_date3666); if (HASEXCEPTION()) { goto rulesip_dateEx; } if (HASFAILED()) { return retval; } FOLLOWPUSH(FOLLOW_alpha_in_sip_date3669); alpha(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesip_dateEx; } if (HASFAILED()) { return retval; } FOLLOWPUSH(FOLLOW_alpha_in_sip_date3671); alpha(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesip_dateEx; } if (HASFAILED()) { return retval; } FOLLOWPUSH(FOLLOW_alpha_in_sip_date3673); alpha(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesip_dateEx; } if (HASFAILED()) { return retval; } } } // This is where rules clean up and exit // goto rulesip_dateEx; /* Prevent compiler warnings */ rulesip_dateEx: ; retval.stop = LT(-1); if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end sip_date */ /** * $ANTLR start header_expires * ../grammars/belle_sip_message.g:984:1: header_expires returns [belle_sip_header_expires_t* ret] :{...}? token hcolon delta_seconds ; */ static belle_sip_header_expires_t* header_expires(pbelle_sip_messageParser ctx) { belle_sip_header_expires_t* ret; belle_sip_messageParser_delta_seconds_return delta_seconds69; #undef RETURN_TYPE_delta_seconds69 #define RETURN_TYPE_delta_seconds69 belle_sip_messageParser_delta_seconds_return /* Initialize rule variables */ ctx->pbelle_sip_messageParser_header_expiresTop = pbelle_sip_messageParser_header_expiresPush(ctx); (SCOPE_TOP(header_expires))->current= belle_sip_header_expires_new(); ret= (SCOPE_TOP(header_expires))->current; { // ../grammars/belle_sip_message.g:987:3: ({...}? token hcolon delta_seconds ) // ../grammars/belle_sip_message.g:987:7: {...}? token hcolon delta_seconds { if ( !((IS_TOKEN(Expires))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_header_expiresPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(Expires)"; EXCEPTION->ruleName = (void *)"header_expires"; } FOLLOWPUSH(FOLLOW_token_in_header_expires3705); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_expiresEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_expiresPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_hcolon_in_header_expires3709); hcolon(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_expiresEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_expiresPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_delta_seconds_in_header_expires3711); delta_seconds69=delta_seconds(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_expiresEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_expiresPop(ctx); return ret; } if ( BACKTRACKING==0 ) { belle_sip_header_expires_set_expires((SCOPE_TOP(header_expires))->current,atoi((const char *) (STRSTREAM->toStringTT(STRSTREAM, delta_seconds69.start, delta_seconds69.stop)) ->chars)); } } } // This is where rules clean up and exit // goto ruleheader_expiresEx; /* Prevent compiler warnings */ ruleheader_expiresEx: ; if (HASEXCEPTION()) { /* catch(decl,action) */ { belle_sip_message("[%s] reason [%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref((SCOPE_TOP(header_expires))->current); ret=NULL; } } else { } pbelle_sip_messageParser_header_expiresPop(ctx); return ret; } /* $ANTLR end header_expires */ /** * $ANTLR start from_token * ../grammars/belle_sip_message.g:995:1: from_token :{...}? token ; */ static void from_token(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:995:11: ({...}? token ) // ../grammars/belle_sip_message.g:995:14: {...}? token { if ( !((IS_HEADER_NAMED(From,f))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_HEADER_NAMED(From,f)"; EXCEPTION->ruleName = (void *)"from_token"; } FOLLOWPUSH(FOLLOW_token_in_from_token3729); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulefrom_tokenEx; } if (HASFAILED()) { return ; } } } // This is where rules clean up and exit // goto rulefrom_tokenEx; /* Prevent compiler warnings */ rulefrom_tokenEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end from_token */ /** * $ANTLR start header_from * ../grammars/belle_sip_message.g:996:1: header_from returns [belle_sip_header_from_t* ret] : from_token sp_tab_colon from_spec ; */ static belle_sip_header_from_t* header_from(pbelle_sip_messageParser ctx) { belle_sip_header_from_t* ret; /* Initialize rule variables */ ctx->pbelle_sip_messageParser_header_fromTop = pbelle_sip_messageParser_header_fromPush(ctx); (SCOPE_TOP(header_from))->current= belle_sip_header_from_new(); ret= (SCOPE_TOP(header_from))->current; { // ../grammars/belle_sip_message.g:1000:3: ( from_token sp_tab_colon from_spec ) // ../grammars/belle_sip_message.g:1000:7: from_token sp_tab_colon from_spec { FOLLOWPUSH(FOLLOW_from_token_in_header_from3755); from_token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_fromEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_fromPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_sp_tab_colon_in_header_from3758); sp_tab_colon(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_fromEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_fromPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_from_spec_in_header_from3760); from_spec(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_fromEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_fromPop(ctx); return ret; } if ( BACKTRACKING==0 ) { if (!belle_sip_header_address_get_uri((belle_sip_header_address_t*)((SCOPE_TOP(header_from))->current)) && !belle_sip_header_address_get_absolute_uri((belle_sip_header_address_t*)((SCOPE_TOP(header_from))->current))) { belle_sip_object_unref((SCOPE_TOP(header_from))->current); ret=NULL; } } } } // This is where rules clean up and exit // goto ruleheader_fromEx; /* Prevent compiler warnings */ ruleheader_fromEx: ; if (HASEXCEPTION()) { /* catch(decl,action) */ { belle_sip_message("[%s] reason [%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref((SCOPE_TOP(header_from))->current); ret=NULL; } } else { } pbelle_sip_messageParser_header_fromPop(ctx); return ret; } /* $ANTLR end header_from */ /** * $ANTLR start from_spec * ../grammars/belle_sip_message.g:1015:1: from_spec : ( name_addr_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($header_from::current)] | paramless_addr_spec_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($header_from::current)] ) ( SEMI ( lws )? from_param ( lws )? )* ; */ static void from_spec(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:1016:3: ( ( name_addr_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($header_from::current)] | paramless_addr_spec_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($header_from::current)] ) ( SEMI ( lws )? from_param ( lws )? )* ) // ../grammars/belle_sip_message.g:1016:7: ( name_addr_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($header_from::current)] | paramless_addr_spec_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($header_from::current)] ) ( SEMI ( lws )? from_param ( lws )? )* { // ../grammars/belle_sip_message.g:1016:7: ( name_addr_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($header_from::current)] | paramless_addr_spec_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($header_from::current)] ) { int alt89=2; alt89 = cdfa89.predict(ctx, RECOGNIZER, ISTREAM, &cdfa89); if (HASEXCEPTION()) { goto rulefrom_specEx; } if (HASFAILED()) { return ; } switch (alt89) { case 1: // ../grammars/belle_sip_message.g:1016:9: name_addr_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($header_from::current)] { FOLLOWPUSH(FOLLOW_name_addr_with_generic_uri_in_from_spec3788); name_addr_with_generic_uri(ctx, BELLE_SIP_HEADER_ADDRESS((SCOPE_TOP(header_from))->current)); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulefrom_specEx; } if (HASFAILED()) { return ; } } break; case 2: // ../grammars/belle_sip_message.g:1016:87: paramless_addr_spec_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($header_from::current)] { FOLLOWPUSH(FOLLOW_paramless_addr_spec_with_generic_uri_in_from_spec3793); paramless_addr_spec_with_generic_uri(ctx, BELLE_SIP_HEADER_ADDRESS((SCOPE_TOP(header_from))->current)); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulefrom_specEx; } if (HASFAILED()) { return ; } } break; } } // ../grammars/belle_sip_message.g:1017:7: ( SEMI ( lws )? from_param ( lws )? )* for (;;) { int alt92=2; switch ( LA(1) ) { case SEMI: { alt92=1; } break; } switch (alt92) { case 1: // ../grammars/belle_sip_message.g:1017:9: SEMI ( lws )? from_param ( lws )? { MATCHT(SEMI, &FOLLOW_SEMI_in_from_spec3806); if (HASEXCEPTION()) { goto rulefrom_specEx; } if (HASFAILED()) { return ; } // ../grammars/belle_sip_message.g:1017:14: ( lws )? { int alt90=2; switch ( LA(1) ) { case CRLF: case SP: { alt90=1; } break; } switch (alt90) { case 1: // ../grammars/belle_sip_message.g:1017:14: lws { FOLLOWPUSH(FOLLOW_lws_in_from_spec3808); lws(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulefrom_specEx; } if (HASFAILED()) { return ; } } break; } } FOLLOWPUSH(FOLLOW_from_param_in_from_spec3811); from_param(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulefrom_specEx; } if (HASFAILED()) { return ; } // ../grammars/belle_sip_message.g:1017:30: ( lws )? { int alt91=2; switch ( LA(1) ) { case CRLF: case SP: { alt91=1; } break; } switch (alt91) { case 1: // ../grammars/belle_sip_message.g:1017:30: lws { FOLLOWPUSH(FOLLOW_lws_in_from_spec3813); lws(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulefrom_specEx; } if (HASFAILED()) { return ; } } break; } } } break; default: goto loop92; /* break out of the loop */ break; } } loop92: ; /* Jump out to here if this rule does not match */ } } // This is where rules clean up and exit // goto rulefrom_specEx; /* Prevent compiler warnings */ rulefrom_specEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end from_spec */ /** * $ANTLR start from_param * ../grammars/belle_sip_message.g:1018:1: from_param : generic_param[BELLE_SIP_PARAMETERS($header_from::current)] ; */ static void from_param(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:1019:3: ( generic_param[BELLE_SIP_PARAMETERS($header_from::current)] ) // ../grammars/belle_sip_message.g:1019:23: generic_param[BELLE_SIP_PARAMETERS($header_from::current)] { FOLLOWPUSH(FOLLOW_generic_param_in_from_param3830); generic_param(ctx, BELLE_SIP_PARAMETERS((SCOPE_TOP(header_from))->current)); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulefrom_paramEx; } if (HASFAILED()) { return ; } } } // This is where rules clean up and exit // goto rulefrom_paramEx; /* Prevent compiler warnings */ rulefrom_paramEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end from_param */ /** * $ANTLR start header_max_forwards * ../grammars/belle_sip_message.g:1029:1: header_max_forwards returns [belle_sip_header_max_forwards_t* ret] :{...}? token hcolon max_forwards ; */ static belle_sip_header_max_forwards_t* header_max_forwards(pbelle_sip_messageParser ctx) { belle_sip_header_max_forwards_t* ret; belle_sip_messageParser_max_forwards_return max_forwards70; #undef RETURN_TYPE_max_forwards70 #define RETURN_TYPE_max_forwards70 belle_sip_messageParser_max_forwards_return /* Initialize rule variables */ ctx->pbelle_sip_messageParser_header_max_forwardsTop = pbelle_sip_messageParser_header_max_forwardsPush(ctx); (SCOPE_TOP(header_max_forwards))->current= belle_sip_header_max_forwards_new(); ret= (SCOPE_TOP(header_max_forwards))->current; { // ../grammars/belle_sip_message.g:1032:3: ({...}? token hcolon max_forwards ) // ../grammars/belle_sip_message.g:1032:7: {...}? token hcolon max_forwards { if ( !((IS_TOKEN(Max-Forwards))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_header_max_forwardsPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(Max-Forwards)"; EXCEPTION->ruleName = (void *)"header_max_forwards"; } FOLLOWPUSH(FOLLOW_token_in_header_max_forwards3864); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_max_forwardsEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_max_forwardsPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_hcolon_in_header_max_forwards3868); hcolon(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_max_forwardsEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_max_forwardsPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_max_forwards_in_header_max_forwards3874); max_forwards70=max_forwards(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_max_forwardsEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_max_forwardsPop(ctx); return ret; } if ( BACKTRACKING==0 ) { belle_sip_header_max_forwards_set_max_forwards((SCOPE_TOP(header_max_forwards))->current,atoi((const char*) (STRSTREAM->toStringTT(STRSTREAM, max_forwards70.start, max_forwards70.stop)) ->chars)); } } } // This is where rules clean up and exit // goto ruleheader_max_forwardsEx; /* Prevent compiler warnings */ ruleheader_max_forwardsEx: ; if (HASEXCEPTION()) { /* catch(decl,action) */ { belle_sip_message("[%s] reason [%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref((SCOPE_TOP(header_max_forwards))->current); ret=NULL; } } else { } pbelle_sip_messageParser_header_max_forwardsPop(ctx); return ret; } /* $ANTLR end header_max_forwards */ /** * $ANTLR start max_forwards * ../grammars/belle_sip_message.g:1040:1: max_forwards : ( DIGIT )+ ; */ static belle_sip_messageParser_max_forwards_return max_forwards(pbelle_sip_messageParser ctx) { belle_sip_messageParser_max_forwards_return retval; /* Initialize rule variables */ retval.start = LT(1); retval.stop = retval.start; { // ../grammars/belle_sip_message.g:1040:13: ( ( DIGIT )+ ) // ../grammars/belle_sip_message.g:1040:14: ( DIGIT )+ { // ../grammars/belle_sip_message.g:1040:14: ( DIGIT )+ { int cnt93=0; for (;;) { int alt93=2; switch ( LA(1) ) { case DIGIT: { alt93=1; } break; } switch (alt93) { case 1: // ../grammars/belle_sip_message.g:1040:14: DIGIT { MATCHT(DIGIT, &FOLLOW_DIGIT_in_max_forwards3887); if (HASEXCEPTION()) { goto rulemax_forwardsEx; } if (HASFAILED()) { return retval; } } break; default: if ( cnt93 >= 1 ) { goto loop93; } if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } /* mismatchedSetEx() */ CONSTRUCTEX(); EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME; goto rulemax_forwardsEx; } cnt93++; } loop93: ; /* Jump to here if this rule does not match */ } } } // This is where rules clean up and exit // goto rulemax_forwardsEx; /* Prevent compiler warnings */ rulemax_forwardsEx: ; retval.stop = LT(-1); if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end max_forwards */ /** * $ANTLR start header_proxy_authenticate * ../grammars/belle_sip_message.g:1063:1: header_proxy_authenticate returns [belle_sip_header_proxy_authenticate_t* ret] :{...}? token hcolon ( challenge[BELLE_SIP_HEADER_WWW_AUTHENTICATE($header_proxy_authenticate::current)] ( comma challenge[BELLE_SIP_HEADER_WWW_AUTHENTICATE($header_proxy_authenticate::current)] )* ) ; */ static belle_sip_header_proxy_authenticate_t* header_proxy_authenticate(pbelle_sip_messageParser ctx) { belle_sip_header_proxy_authenticate_t* ret; /* Initialize rule variables */ ctx->pbelle_sip_messageParser_header_proxy_authenticateTop = pbelle_sip_messageParser_header_proxy_authenticatePush(ctx); (SCOPE_TOP(header_proxy_authenticate))->current= belle_sip_header_proxy_authenticate_new(); ret= (SCOPE_TOP(header_proxy_authenticate))->current; { // ../grammars/belle_sip_message.g:1066:3: ({...}? token hcolon ( challenge[BELLE_SIP_HEADER_WWW_AUTHENTICATE($header_proxy_authenticate::current)] ( comma challenge[BELLE_SIP_HEADER_WWW_AUTHENTICATE($header_proxy_authenticate::current)] )* ) ) // ../grammars/belle_sip_message.g:1066:7: {...}? token hcolon ( challenge[BELLE_SIP_HEADER_WWW_AUTHENTICATE($header_proxy_authenticate::current)] ( comma challenge[BELLE_SIP_HEADER_WWW_AUTHENTICATE($header_proxy_authenticate::current)] )* ) { if ( !((IS_TOKEN(Proxy-Authenticate))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_header_proxy_authenticatePop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(Proxy-Authenticate)"; EXCEPTION->ruleName = (void *)"header_proxy_authenticate"; } FOLLOWPUSH(FOLLOW_token_in_header_proxy_authenticate3918); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_proxy_authenticateEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_proxy_authenticatePop(ctx); return ret; } FOLLOWPUSH(FOLLOW_hcolon_in_header_proxy_authenticate3924); hcolon(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_proxy_authenticateEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_proxy_authenticatePop(ctx); return ret; } // ../grammars/belle_sip_message.g:1067:10: ( challenge[BELLE_SIP_HEADER_WWW_AUTHENTICATE($header_proxy_authenticate::current)] ( comma challenge[BELLE_SIP_HEADER_WWW_AUTHENTICATE($header_proxy_authenticate::current)] )* ) // ../grammars/belle_sip_message.g:1067:11: challenge[BELLE_SIP_HEADER_WWW_AUTHENTICATE($header_proxy_authenticate::current)] ( comma challenge[BELLE_SIP_HEADER_WWW_AUTHENTICATE($header_proxy_authenticate::current)] )* { FOLLOWPUSH(FOLLOW_challenge_in_header_proxy_authenticate3927); challenge(ctx, BELLE_SIP_HEADER_WWW_AUTHENTICATE((SCOPE_TOP(header_proxy_authenticate))->current)); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_proxy_authenticateEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_proxy_authenticatePop(ctx); return ret; } // ../grammars/belle_sip_message.g:1068:8: ( comma challenge[BELLE_SIP_HEADER_WWW_AUTHENTICATE($header_proxy_authenticate::current)] )* for (;;) { int alt94=2; switch ( LA(1) ) { case COMMA: case CRLF: case SP: { alt94=1; } break; } switch (alt94) { case 1: // ../grammars/belle_sip_message.g:1068:9: comma challenge[BELLE_SIP_HEADER_WWW_AUTHENTICATE($header_proxy_authenticate::current)] { FOLLOWPUSH(FOLLOW_comma_in_header_proxy_authenticate3939); comma(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_proxy_authenticateEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_proxy_authenticatePop(ctx); return ret; } if ( BACKTRACKING==0 ) { belle_sip_header_t* header = BELLE_SIP_HEADER((SCOPE_TOP(header_proxy_authenticate))->current); belle_sip_header_set_next(header,(belle_sip_header_t*)((SCOPE_TOP(header_proxy_authenticate))->current= belle_sip_header_proxy_authenticate_new())); } FOLLOWPUSH(FOLLOW_challenge_in_header_proxy_authenticate3945); challenge(ctx, BELLE_SIP_HEADER_WWW_AUTHENTICATE((SCOPE_TOP(header_proxy_authenticate))->current)); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_proxy_authenticateEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_proxy_authenticatePop(ctx); return ret; } } break; default: goto loop94; /* break out of the loop */ break; } } loop94: ; /* Jump out to here if this rule does not match */ } } } // This is where rules clean up and exit // goto ruleheader_proxy_authenticateEx; /* Prevent compiler warnings */ ruleheader_proxy_authenticateEx: ; if (HASEXCEPTION()) { /* catch(decl,action) */ { belle_sip_message("[%s] reason [%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref(ret ); ret=NULL; } } else { } pbelle_sip_messageParser_header_proxy_authenticatePop(ctx); return ret; } /* $ANTLR end header_proxy_authenticate */ /** * $ANTLR start challenge * ../grammars/belle_sip_message.g:1078:1: challenge[belle_sip_header_www_authenticate_t* www_authenticate] : ( ({...}? token lws digest_cln[www_authenticate] ( comma digest_cln[www_authenticate] )* ) | other_challenge[www_authenticate] ); */ static void challenge(pbelle_sip_messageParser ctx, belle_sip_header_www_authenticate_t* www_authenticate) { /* Initialize rule variables */ { { // ../grammars/belle_sip_message.g:1079:3: ( ({...}? token lws digest_cln[www_authenticate] ( comma digest_cln[www_authenticate] )* ) | other_challenge[www_authenticate] ) ANTLR3_UINT32 alt96; alt96=2; alt96 = cdfa96.predict(ctx, RECOGNIZER, ISTREAM, &cdfa96); if (HASEXCEPTION()) { goto rulechallengeEx; } if (HASFAILED()) { return ; } switch (alt96) { case 1: // ../grammars/belle_sip_message.g:1079:7: ({...}? token lws digest_cln[www_authenticate] ( comma digest_cln[www_authenticate] )* ) { // ../grammars/belle_sip_message.g:1079:7: ({...}? token lws digest_cln[www_authenticate] ( comma digest_cln[www_authenticate] )* ) // ../grammars/belle_sip_message.g:1079:8: {...}? token lws digest_cln[www_authenticate] ( comma digest_cln[www_authenticate] )* { if ( !((IS_TOKEN(Digest))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(Digest)"; EXCEPTION->ruleName = (void *)"challenge"; } FOLLOWPUSH(FOLLOW_token_in_challenge3972); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulechallengeEx; } if (HASFAILED()) { return ; } if ( BACKTRACKING==0 ) { belle_sip_header_www_authenticate_set_scheme(www_authenticate,"Digest"); } FOLLOWPUSH(FOLLOW_lws_in_challenge3983); lws(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulechallengeEx; } if (HASFAILED()) { return ; } FOLLOWPUSH(FOLLOW_digest_cln_in_challenge3985); digest_cln(ctx, www_authenticate); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulechallengeEx; } if (HASFAILED()) { return ; } // ../grammars/belle_sip_message.g:1080:39: ( comma digest_cln[www_authenticate] )* for (;;) { int alt95=2; alt95 = cdfa95.predict(ctx, RECOGNIZER, ISTREAM, &cdfa95); if (HASEXCEPTION()) { goto rulechallengeEx; } if (HASFAILED()) { return ; } switch (alt95) { case 1: // ../grammars/belle_sip_message.g:1080:40: comma digest_cln[www_authenticate] { FOLLOWPUSH(FOLLOW_comma_in_challenge3989); comma(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulechallengeEx; } if (HASFAILED()) { return ; } FOLLOWPUSH(FOLLOW_digest_cln_in_challenge3991); digest_cln(ctx, www_authenticate); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulechallengeEx; } if (HASFAILED()) { return ; } } break; default: goto loop95; /* break out of the loop */ break; } } loop95: ; /* Jump out to here if this rule does not match */ } } break; case 2: // ../grammars/belle_sip_message.g:1081:26: other_challenge[www_authenticate] { FOLLOWPUSH(FOLLOW_other_challenge_in_challenge4022); other_challenge(ctx, www_authenticate); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulechallengeEx; } if (HASFAILED()) { return ; } } break; } } } // This is where rules clean up and exit // goto rulechallengeEx; /* Prevent compiler warnings */ rulechallengeEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end challenge */ /** * $ANTLR start other_challenge * ../grammars/belle_sip_message.g:1082:1: other_challenge[belle_sip_header_www_authenticate_t* www_authenticate] : auth_scheme lws auth_param[(belle_sip_header_authorization_t*)www_authenticate] ( comma auth_param[(belle_sip_header_authorization_t*)www_authenticate] )* ; */ static void other_challenge(pbelle_sip_messageParser ctx, belle_sip_header_www_authenticate_t* www_authenticate) { belle_sip_messageParser_auth_scheme_return auth_scheme71; #undef RETURN_TYPE_auth_scheme71 #define RETURN_TYPE_auth_scheme71 belle_sip_messageParser_auth_scheme_return /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:1083:3: ( auth_scheme lws auth_param[(belle_sip_header_authorization_t*)www_authenticate] ( comma auth_param[(belle_sip_header_authorization_t*)www_authenticate] )* ) // ../grammars/belle_sip_message.g:1083:7: auth_scheme lws auth_param[(belle_sip_header_authorization_t*)www_authenticate] ( comma auth_param[(belle_sip_header_authorization_t*)www_authenticate] )* { FOLLOWPUSH(FOLLOW_auth_scheme_in_other_challenge4037); auth_scheme71=auth_scheme(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleother_challengeEx; } if (HASFAILED()) { return ; } if ( BACKTRACKING==0 ) { belle_sip_header_www_authenticate_set_scheme(www_authenticate,(char*)(STRSTREAM->toStringTT(STRSTREAM, auth_scheme71.start, auth_scheme71.stop)) ->chars); } FOLLOWPUSH(FOLLOW_lws_in_other_challenge4046); lws(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleother_challengeEx; } if (HASFAILED()) { return ; } FOLLOWPUSH(FOLLOW_auth_param_in_other_challenge4048); auth_param(ctx, (belle_sip_header_authorization_t*)www_authenticate); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleother_challengeEx; } if (HASFAILED()) { return ; } // ../grammars/belle_sip_message.g:1085:24: ( comma auth_param[(belle_sip_header_authorization_t*)www_authenticate] )* for (;;) { int alt97=2; alt97 = cdfa97.predict(ctx, RECOGNIZER, ISTREAM, &cdfa97); if (HASEXCEPTION()) { goto ruleother_challengeEx; } if (HASFAILED()) { return ; } switch (alt97) { case 1: // ../grammars/belle_sip_message.g:1085:25: comma auth_param[(belle_sip_header_authorization_t*)www_authenticate] { FOLLOWPUSH(FOLLOW_comma_in_other_challenge4075); comma(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleother_challengeEx; } if (HASFAILED()) { return ; } FOLLOWPUSH(FOLLOW_auth_param_in_other_challenge4077); auth_param(ctx, (belle_sip_header_authorization_t*)www_authenticate); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleother_challengeEx; } if (HASFAILED()) { return ; } } break; default: goto loop97; /* break out of the loop */ break; } } loop97: ; /* Jump out to here if this rule does not match */ } } // This is where rules clean up and exit // goto ruleother_challengeEx; /* Prevent compiler warnings */ ruleother_challengeEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end other_challenge */ /** * $ANTLR start digest_cln * ../grammars/belle_sip_message.g:1086:1: digest_cln[belle_sip_header_www_authenticate_t* www_authenticate] : ( realm | nonce | algorithm | opaque | qop_opts | domain | stale | auth_param[(belle_sip_header_authorization_t*)www_authenticate] ); */ static void digest_cln(pbelle_sip_messageParser ctx, belle_sip_header_www_authenticate_t* www_authenticate) { char* realm72; #undef RETURN_TYPE_realm72 #define RETURN_TYPE_realm72 char* char* nonce73; #undef RETURN_TYPE_nonce73 #define RETURN_TYPE_nonce73 char* const char* algorithm74; #undef RETURN_TYPE_algorithm74 #define RETURN_TYPE_algorithm74 const char* char* opaque75; #undef RETURN_TYPE_opaque75 #define RETURN_TYPE_opaque75 char* belle_sip_list_t* qop_opts76; #undef RETURN_TYPE_qop_opts76 #define RETURN_TYPE_qop_opts76 belle_sip_list_t* char* domain77; #undef RETURN_TYPE_domain77 #define RETURN_TYPE_domain77 char* const char* stale78; #undef RETURN_TYPE_stale78 #define RETURN_TYPE_stale78 const char* /* Initialize rule variables */ { { // ../grammars/belle_sip_message.g:1087:3: ( realm | nonce | algorithm | opaque | qop_opts | domain | stale | auth_param[(belle_sip_header_authorization_t*)www_authenticate] ) ANTLR3_UINT32 alt98; alt98=8; alt98 = cdfa98.predict(ctx, RECOGNIZER, ISTREAM, &cdfa98); if (HASEXCEPTION()) { goto ruledigest_clnEx; } if (HASFAILED()) { return ; } switch (alt98) { case 1: // ../grammars/belle_sip_message.g:1088:4: realm { FOLLOWPUSH(FOLLOW_realm_in_digest_cln4094); realm72=realm(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruledigest_clnEx; } if (HASFAILED()) { return ; } if ( BACKTRACKING==0 ) { belle_sip_header_www_authenticate_set_realm(www_authenticate,(char*)realm72 ); belle_sip_free(realm72 ); } } break; case 2: // ../grammars/belle_sip_message.g:1090:5: nonce { FOLLOWPUSH(FOLLOW_nonce_in_digest_cln4102); nonce73=nonce(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruledigest_clnEx; } if (HASFAILED()) { return ; } if ( BACKTRACKING==0 ) { belle_sip_header_www_authenticate_set_nonce(www_authenticate,(char*)nonce73 ); belle_sip_free(nonce73 ); } } break; case 3: // ../grammars/belle_sip_message.g:1092:5: algorithm { FOLLOWPUSH(FOLLOW_algorithm_in_digest_cln4110); algorithm74=algorithm(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruledigest_clnEx; } if (HASFAILED()) { return ; } if ( BACKTRACKING==0 ) { belle_sip_header_www_authenticate_set_algorithm(www_authenticate,algorithm74 ); } } break; case 4: // ../grammars/belle_sip_message.g:1093:5: opaque { FOLLOWPUSH(FOLLOW_opaque_in_digest_cln4118); opaque75=opaque(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruledigest_clnEx; } if (HASFAILED()) { return ; } if ( BACKTRACKING==0 ) { belle_sip_header_www_authenticate_set_opaque(www_authenticate,opaque75 ); belle_sip_free(opaque75 ); } } break; case 5: // ../grammars/belle_sip_message.g:1095:5: qop_opts { FOLLOWPUSH(FOLLOW_qop_opts_in_digest_cln4127); qop_opts76=qop_opts(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruledigest_clnEx; } if (HASFAILED()) { return ; } if ( BACKTRACKING==0 ) { belle_sip_header_www_authenticate_set_qop(www_authenticate,qop_opts76 ); /*belle_sip_free(qop_opts76 );*/ } } break; case 6: // ../grammars/belle_sip_message.g:1097:5: domain { FOLLOWPUSH(FOLLOW_domain_in_digest_cln4135); domain77=domain(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruledigest_clnEx; } if (HASFAILED()) { return ; } if ( BACKTRACKING==0 ) { belle_sip_header_www_authenticate_set_domain(www_authenticate,domain77 ); belle_sip_free(domain77 ); } } break; case 7: // ../grammars/belle_sip_message.g:1099:5: stale { FOLLOWPUSH(FOLLOW_stale_in_digest_cln4143); stale78=stale(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruledigest_clnEx; } if (HASFAILED()) { return ; } if ( BACKTRACKING==0 ) { if (strcmp("true",stale78 )==0) { belle_sip_header_www_authenticate_set_stale(www_authenticate,1); } } } break; case 8: // ../grammars/belle_sip_message.g:1103:8: auth_param[(belle_sip_header_authorization_t*)www_authenticate] { FOLLOWPUSH(FOLLOW_auth_param_in_digest_cln4154); auth_param(ctx, (belle_sip_header_authorization_t*)www_authenticate); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruledigest_clnEx; } if (HASFAILED()) { return ; } } break; } } } // This is where rules clean up and exit // goto ruledigest_clnEx; /* Prevent compiler warnings */ ruledigest_clnEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end digest_cln */ /** * $ANTLR start realm * ../grammars/belle_sip_message.g:1106:1: realm returns [char* ret=NULL] :{...}? token equal realm_value ; */ static char* realm(pbelle_sip_messageParser ctx) { char* ret; belle_sip_messageParser_realm_value_return realm_value79; #undef RETURN_TYPE_realm_value79 #define RETURN_TYPE_realm_value79 belle_sip_messageParser_realm_value_return /* Initialize rule variables */ ret = NULL; { // ../grammars/belle_sip_message.g:1107:3: ({...}? token equal realm_value ) // ../grammars/belle_sip_message.g:1107:7: {...}? token equal realm_value { if ( !((IS_TOKEN(realm))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(realm)"; EXCEPTION->ruleName = (void *)"realm"; } FOLLOWPUSH(FOLLOW_token_in_realm4175); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulerealmEx; } if (HASFAILED()) { return ret; } FOLLOWPUSH(FOLLOW_equal_in_realm4179); equal(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulerealmEx; } if (HASFAILED()) { return ret; } FOLLOWPUSH(FOLLOW_realm_value_in_realm4181); realm_value79=realm_value(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulerealmEx; } if (HASFAILED()) { return ret; } if ( BACKTRACKING==0 ) { ret= _belle_sip_str_dup_and_unquote_string((char*) (STRSTREAM->toStringTT(STRSTREAM, realm_value79.start, realm_value79.stop)) ->chars); } } } // This is where rules clean up and exit // goto rulerealmEx; /* Prevent compiler warnings */ rulerealmEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ret; } /* $ANTLR end realm */ /** * $ANTLR start realm_value * ../grammars/belle_sip_message.g:1110:1: realm_value : quoted_string ; */ static belle_sip_messageParser_realm_value_return realm_value(pbelle_sip_messageParser ctx) { belle_sip_messageParser_realm_value_return retval; /* Initialize rule variables */ retval.start = LT(1); retval.stop = retval.start; { // ../grammars/belle_sip_message.g:1111:3: ( quoted_string ) // ../grammars/belle_sip_message.g:1111:7: quoted_string { FOLLOWPUSH(FOLLOW_quoted_string_in_realm_value4194); quoted_string(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulerealm_valueEx; } if (HASFAILED()) { return retval; } } } // This is where rules clean up and exit // goto rulerealm_valueEx; /* Prevent compiler warnings */ rulerealm_valueEx: ; retval.stop = LT(-1); if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end realm_value */ /** * $ANTLR start domain * ../grammars/belle_sip_message.g:1113:1: domain returns [char* ret=NULL] :{...}? token equal quoted_string ; */ static char* domain(pbelle_sip_messageParser ctx) { char* ret; belle_sip_messageParser_quoted_string_return quoted_string80; #undef RETURN_TYPE_quoted_string80 #define RETURN_TYPE_quoted_string80 belle_sip_messageParser_quoted_string_return /* Initialize rule variables */ ret = NULL; { // ../grammars/belle_sip_message.g:1114:3: ({...}? token equal quoted_string ) // ../grammars/belle_sip_message.g:1114:7: {...}? token equal quoted_string { if ( !((IS_TOKEN(domain))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(domain)"; EXCEPTION->ruleName = (void *)"domain"; } FOLLOWPUSH(FOLLOW_token_in_domain4213); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruledomainEx; } if (HASFAILED()) { return ret; } FOLLOWPUSH(FOLLOW_equal_in_domain4217); equal(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruledomainEx; } if (HASFAILED()) { return ret; } FOLLOWPUSH(FOLLOW_quoted_string_in_domain4219); quoted_string80=quoted_string(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruledomainEx; } if (HASFAILED()) { return ret; } if ( BACKTRACKING==0 ) { ret= _belle_sip_str_dup_and_unquote_string((char*) (STRSTREAM->toStringTT(STRSTREAM, quoted_string80.start, quoted_string80.stop)) ->chars); } } } // This is where rules clean up and exit // goto ruledomainEx; /* Prevent compiler warnings */ ruledomainEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ret; } /* $ANTLR end domain */ /** * $ANTLR start nonce * ../grammars/belle_sip_message.g:1121:1: nonce returns [char* ret=NULL] :{...}? token equal nonce_value ; */ static char* nonce(pbelle_sip_messageParser ctx) { char* ret; belle_sip_messageParser_nonce_value_return nonce_value81; #undef RETURN_TYPE_nonce_value81 #define RETURN_TYPE_nonce_value81 belle_sip_messageParser_nonce_value_return /* Initialize rule variables */ ret = NULL; { // ../grammars/belle_sip_message.g:1122:3: ({...}? token equal nonce_value ) // ../grammars/belle_sip_message.g:1122:7: {...}? token equal nonce_value { if ( !((IS_TOKEN(nonce))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(nonce)"; EXCEPTION->ruleName = (void *)"nonce"; } FOLLOWPUSH(FOLLOW_token_in_nonce4243); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulenonceEx; } if (HASFAILED()) { return ret; } FOLLOWPUSH(FOLLOW_equal_in_nonce4247); equal(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulenonceEx; } if (HASFAILED()) { return ret; } FOLLOWPUSH(FOLLOW_nonce_value_in_nonce4249); nonce_value81=nonce_value(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulenonceEx; } if (HASFAILED()) { return ret; } if ( BACKTRACKING==0 ) { ret= _belle_sip_str_dup_and_unquote_string((char*) (STRSTREAM->toStringTT(STRSTREAM, nonce_value81.start, nonce_value81.stop)) ->chars); } } } // This is where rules clean up and exit // goto rulenonceEx; /* Prevent compiler warnings */ rulenonceEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ret; } /* $ANTLR end nonce */ /** * $ANTLR start opaque * ../grammars/belle_sip_message.g:1125:1: opaque returns [char* ret=NULL] :{...}? token equal quoted_string ; */ static char* opaque(pbelle_sip_messageParser ctx) { char* ret; belle_sip_messageParser_quoted_string_return quoted_string82; #undef RETURN_TYPE_quoted_string82 #define RETURN_TYPE_quoted_string82 belle_sip_messageParser_quoted_string_return /* Initialize rule variables */ ret = NULL; { // ../grammars/belle_sip_message.g:1126:3: ({...}? token equal quoted_string ) // ../grammars/belle_sip_message.g:1126:7: {...}? token equal quoted_string { if ( !((IS_TOKEN(opaque))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(opaque)"; EXCEPTION->ruleName = (void *)"opaque"; } FOLLOWPUSH(FOLLOW_token_in_opaque4267); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleopaqueEx; } if (HASFAILED()) { return ret; } FOLLOWPUSH(FOLLOW_equal_in_opaque4271); equal(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleopaqueEx; } if (HASFAILED()) { return ret; } FOLLOWPUSH(FOLLOW_quoted_string_in_opaque4273); quoted_string82=quoted_string(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleopaqueEx; } if (HASFAILED()) { return ret; } if ( BACKTRACKING==0 ) { ret= _belle_sip_str_dup_and_unquote_string((char*) (STRSTREAM->toStringTT(STRSTREAM, quoted_string82.start, quoted_string82.stop)) ->chars); } } } // This is where rules clean up and exit // goto ruleopaqueEx; /* Prevent compiler warnings */ ruleopaqueEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ret; } /* $ANTLR end opaque */ /** * $ANTLR start stale * ../grammars/belle_sip_message.g:1130:1: stale returns [const char* ret=NULL] :{...}? token equal stale_value ; */ static const char* stale(pbelle_sip_messageParser ctx) { const char* ret; belle_sip_messageParser_stale_value_return stale_value83; #undef RETURN_TYPE_stale_value83 #define RETURN_TYPE_stale_value83 belle_sip_messageParser_stale_value_return /* Initialize rule variables */ ret = NULL; { // ../grammars/belle_sip_message.g:1131:3: ({...}? token equal stale_value ) // ../grammars/belle_sip_message.g:1131:7: {...}? token equal stale_value { if ( !((IS_TOKEN(stale))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(stale)"; EXCEPTION->ruleName = (void *)"stale"; } FOLLOWPUSH(FOLLOW_token_in_stale4293); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulestaleEx; } if (HASFAILED()) { return ret; } FOLLOWPUSH(FOLLOW_equal_in_stale4297); equal(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulestaleEx; } if (HASFAILED()) { return ret; } FOLLOWPUSH(FOLLOW_stale_value_in_stale4299); stale_value83=stale_value(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulestaleEx; } if (HASFAILED()) { return ret; } if ( BACKTRACKING==0 ) { ret=(char*) (STRSTREAM->toStringTT(STRSTREAM, stale_value83.start, stale_value83.stop)) ->chars; } } } // This is where rules clean up and exit // goto rulestaleEx; /* Prevent compiler warnings */ rulestaleEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ret; } /* $ANTLR end stale */ /** * $ANTLR start stale_value * ../grammars/belle_sip_message.g:1133:1: stale_value : token ; */ static belle_sip_messageParser_stale_value_return stale_value(pbelle_sip_messageParser ctx) { belle_sip_messageParser_stale_value_return retval; /* Initialize rule variables */ retval.start = LT(1); retval.stop = retval.start; { // ../grammars/belle_sip_message.g:1133:12: ( token ) // ../grammars/belle_sip_message.g:1133:13: token { FOLLOWPUSH(FOLLOW_token_in_stale_value4309); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulestale_valueEx; } if (HASFAILED()) { return retval; } } } // This is where rules clean up and exit // goto rulestale_valueEx; /* Prevent compiler warnings */ rulestale_valueEx: ; retval.stop = LT(-1); if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end stale_value */ /** * $ANTLR start algorithm * ../grammars/belle_sip_message.g:1135:1: algorithm returns [const char* ret=NULL] :{...}? token equal alg_value= token ; */ static const char* algorithm(pbelle_sip_messageParser ctx) { const char* ret; belle_sip_messageParser_token_return alg_value; #undef RETURN_TYPE_alg_value #define RETURN_TYPE_alg_value belle_sip_messageParser_token_return /* Initialize rule variables */ ret = NULL; { // ../grammars/belle_sip_message.g:1136:3: ({...}? token equal alg_value= token ) // ../grammars/belle_sip_message.g:1136:7: {...}? token equal alg_value= token { if ( !((IS_TOKEN(algorithm))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(algorithm)"; EXCEPTION->ruleName = (void *)"algorithm"; } FOLLOWPUSH(FOLLOW_token_in_algorithm4327); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulealgorithmEx; } if (HASFAILED()) { return ret; } FOLLOWPUSH(FOLLOW_equal_in_algorithm4331); equal(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulealgorithmEx; } if (HASFAILED()) { return ret; } FOLLOWPUSH(FOLLOW_token_in_algorithm4337); alg_value=token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulealgorithmEx; } if (HASFAILED()) { return ret; } if ( BACKTRACKING==0 ) { ret=(char*) (STRSTREAM->toStringTT(STRSTREAM, alg_value.start, alg_value.stop)) ->chars; } } } // This is where rules clean up and exit // goto rulealgorithmEx; /* Prevent compiler warnings */ rulealgorithmEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ret; } /* $ANTLR end algorithm */ /** * $ANTLR start qop_opts * ../grammars/belle_sip_message.g:1140:1: qop_opts returns [belle_sip_list_t* ret=NULL] :{...}? token equal DQUOTE qop_opts_value ( COMMA qop_opts_value )* DQUOTE ; */ static belle_sip_list_t* qop_opts(pbelle_sip_messageParser ctx) { belle_sip_list_t* ret; /* Initialize rule variables */ ret = NULL; ctx->pbelle_sip_messageParser_qop_optsTop = pbelle_sip_messageParser_qop_optsPush(ctx); (SCOPE_TOP(qop_opts))->list=NULL; { // ../grammars/belle_sip_message.g:1143:3: ({...}? token equal DQUOTE qop_opts_value ( COMMA qop_opts_value )* DQUOTE ) // ../grammars/belle_sip_message.g:1143:7: {...}? token equal DQUOTE qop_opts_value ( COMMA qop_opts_value )* DQUOTE { if ( !((IS_TOKEN(qop))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_qop_optsPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(qop)"; EXCEPTION->ruleName = (void *)"qop_opts"; } FOLLOWPUSH(FOLLOW_token_in_qop_opts4369); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleqop_optsEx; } if (HASFAILED()) { pbelle_sip_messageParser_qop_optsPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_equal_in_qop_opts4373); equal(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleqop_optsEx; } if (HASFAILED()) { pbelle_sip_messageParser_qop_optsPop(ctx); return ret; } MATCHT(DQUOTE, &FOLLOW_DQUOTE_in_qop_opts4378); if (HASEXCEPTION()) { goto ruleqop_optsEx; } if (HASFAILED()) { pbelle_sip_messageParser_qop_optsPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_qop_opts_value_in_qop_opts4382); qop_opts_value(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleqop_optsEx; } if (HASFAILED()) { pbelle_sip_messageParser_qop_optsPop(ctx); return ret; } // ../grammars/belle_sip_message.g:1146:3: ( COMMA qop_opts_value )* for (;;) { int alt99=2; switch ( LA(1) ) { case COMMA: { alt99=1; } break; } switch (alt99) { case 1: // ../grammars/belle_sip_message.g:1146:4: COMMA qop_opts_value { MATCHT(COMMA, &FOLLOW_COMMA_in_qop_opts4387); if (HASEXCEPTION()) { goto ruleqop_optsEx; } if (HASFAILED()) { pbelle_sip_messageParser_qop_optsPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_qop_opts_value_in_qop_opts4389); qop_opts_value(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleqop_optsEx; } if (HASFAILED()) { pbelle_sip_messageParser_qop_optsPop(ctx); return ret; } } break; default: goto loop99; /* break out of the loop */ break; } } loop99: ; /* Jump out to here if this rule does not match */ MATCHT(DQUOTE, &FOLLOW_DQUOTE_in_qop_opts4396); if (HASEXCEPTION()) { goto ruleqop_optsEx; } if (HASFAILED()) { pbelle_sip_messageParser_qop_optsPop(ctx); return ret; } if ( BACKTRACKING==0 ) { ret=(SCOPE_TOP(qop_opts))->list; } } } // This is where rules clean up and exit // goto ruleqop_optsEx; /* Prevent compiler warnings */ ruleqop_optsEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } pbelle_sip_messageParser_qop_optsPop(ctx); return ret; } /* $ANTLR end qop_opts */ /** * $ANTLR start qop_opts_value * ../grammars/belle_sip_message.g:1149:1: qop_opts_value : ( lws )? token ( lws )? ; */ static void qop_opts_value(pbelle_sip_messageParser ctx) { belle_sip_messageParser_token_return token84; #undef RETURN_TYPE_token84 #define RETURN_TYPE_token84 belle_sip_messageParser_token_return /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:1150:3: ( ( lws )? token ( lws )? ) // ../grammars/belle_sip_message.g:1150:3: ( lws )? token ( lws )? { // ../grammars/belle_sip_message.g:1150:3: ( lws )? { int alt100=2; switch ( LA(1) ) { case CRLF: case SP: { alt100=1; } break; } switch (alt100) { case 1: // ../grammars/belle_sip_message.g:1150:3: lws { FOLLOWPUSH(FOLLOW_lws_in_qop_opts_value4407); lws(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleqop_opts_valueEx; } if (HASFAILED()) { return ; } } break; } } FOLLOWPUSH(FOLLOW_token_in_qop_opts_value4410); token84=token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleqop_opts_valueEx; } if (HASFAILED()) { return ; } // ../grammars/belle_sip_message.g:1150:14: ( lws )? { int alt101=2; switch ( LA(1) ) { case CRLF: case SP: { alt101=1; } break; } switch (alt101) { case 1: // ../grammars/belle_sip_message.g:1150:14: lws { FOLLOWPUSH(FOLLOW_lws_in_qop_opts_value4412); lws(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleqop_opts_valueEx; } if (HASFAILED()) { return ; } } break; } } if ( BACKTRACKING==0 ) { (SCOPE_TOP(qop_opts))->list=belle_sip_list_append((SCOPE_TOP(qop_opts))->list,belle_sip_strdup((const char*) (STRSTREAM->toStringTT(STRSTREAM, token84.start, token84.stop)) ->chars)); } } } // This is where rules clean up and exit // goto ruleqop_opts_valueEx; /* Prevent compiler warnings */ ruleqop_opts_valueEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end qop_opts_value */ /** * $ANTLR start header_proxy_authorization * ../grammars/belle_sip_message.g:1152:1: header_proxy_authorization returns [belle_sip_header_proxy_authorization_t* ret=NULL] :{...}? token hcolon credentials[(belle_sip_header_authorization_t*)$header_proxy_authorization::current] ; */ static belle_sip_header_proxy_authorization_t* header_proxy_authorization(pbelle_sip_messageParser ctx) { belle_sip_header_proxy_authorization_t* ret; /* Initialize rule variables */ ret = NULL; ctx->pbelle_sip_messageParser_header_proxy_authorizationTop = pbelle_sip_messageParser_header_proxy_authorizationPush(ctx); (SCOPE_TOP(header_proxy_authorization))->current= belle_sip_header_proxy_authorization_new(); ret= (SCOPE_TOP(header_proxy_authorization))->current; { // ../grammars/belle_sip_message.g:1155:3: ({...}? token hcolon credentials[(belle_sip_header_authorization_t*)$header_proxy_authorization::current] ) // ../grammars/belle_sip_message.g:1155:7: {...}? token hcolon credentials[(belle_sip_header_authorization_t*)$header_proxy_authorization::current] { if ( !((IS_TOKEN(Proxy-Authorization))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_header_proxy_authorizationPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(Proxy-Authorization)"; EXCEPTION->ruleName = (void *)"header_proxy_authorization"; } FOLLOWPUSH(FOLLOW_token_in_header_proxy_authorization4443); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_proxy_authorizationEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_proxy_authorizationPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_hcolon_in_header_proxy_authorization4447); hcolon(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_proxy_authorizationEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_proxy_authorizationPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_credentials_in_header_proxy_authorization4449); credentials(ctx, (belle_sip_header_authorization_t*)(SCOPE_TOP(header_proxy_authorization))->current); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_proxy_authorizationEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_proxy_authorizationPop(ctx); return ret; } } } // This is where rules clean up and exit // goto ruleheader_proxy_authorizationEx; /* Prevent compiler warnings */ ruleheader_proxy_authorizationEx: ; if (HASEXCEPTION()) { /* catch(decl,action) */ { belle_sip_message("[%s] reason [%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref((SCOPE_TOP(header_proxy_authorization))->current); ret=NULL; } } else { } pbelle_sip_messageParser_header_proxy_authorizationPop(ctx); return ret; } /* $ANTLR end header_proxy_authorization */ /** * $ANTLR start service_route_token * ../grammars/belle_sip_message.g:1171:1: service_route_token :{...}? token ; */ static void service_route_token(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:1171:20: ({...}? token ) // ../grammars/belle_sip_message.g:1171:23: {...}? token { if ( !((IS_TOKEN(Service-Route))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(Service-Route)"; EXCEPTION->ruleName = (void *)"service_route_token"; } FOLLOWPUSH(FOLLOW_token_in_service_route_token4470); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleservice_route_tokenEx; } if (HASFAILED()) { return ; } } } // This is where rules clean up and exit // goto ruleservice_route_tokenEx; /* Prevent compiler warnings */ ruleservice_route_tokenEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end service_route_token */ /** * $ANTLR start header_service_route * ../grammars/belle_sip_message.g:1172:1: header_service_route returns [belle_sip_header_service_route_t* ret=NULL] : service_route_token sp_tab_colon srv_route ( COMMA srv_route )* ; */ static belle_sip_header_service_route_t* header_service_route(pbelle_sip_messageParser ctx) { belle_sip_header_service_route_t* ret; /* Initialize rule variables */ ret = NULL; ctx->pbelle_sip_messageParser_header_service_routeTop = pbelle_sip_messageParser_header_service_routePush(ctx); (SCOPE_TOP(header_service_route))->current= NULL;(SCOPE_TOP(header_service_route))->first=NULL; { // ../grammars/belle_sip_message.g:1175:3: ( service_route_token sp_tab_colon srv_route ( COMMA srv_route )* ) // ../grammars/belle_sip_message.g:1175:7: service_route_token sp_tab_colon srv_route ( COMMA srv_route )* { FOLLOWPUSH(FOLLOW_service_route_token_in_header_service_route4495); service_route_token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_service_routeEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_service_routePop(ctx); return ret; } FOLLOWPUSH(FOLLOW_sp_tab_colon_in_header_service_route4499); sp_tab_colon(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_service_routeEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_service_routePop(ctx); return ret; } FOLLOWPUSH(FOLLOW_srv_route_in_header_service_route4501); srv_route(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_service_routeEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_service_routePop(ctx); return ret; } // ../grammars/belle_sip_message.g:1175:70: ( COMMA srv_route )* for (;;) { int alt102=2; switch ( LA(1) ) { case COMMA: { alt102=1; } break; } switch (alt102) { case 1: // ../grammars/belle_sip_message.g:1175:71: COMMA srv_route { MATCHT(COMMA, &FOLLOW_COMMA_in_header_service_route4504); if (HASEXCEPTION()) { goto ruleheader_service_routeEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_service_routePop(ctx); return ret; } FOLLOWPUSH(FOLLOW_srv_route_in_header_service_route4506); srv_route(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_service_routeEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_service_routePop(ctx); return ret; } } break; default: goto loop102; /* break out of the loop */ break; } } loop102: ; /* Jump out to here if this rule does not match */ if ( BACKTRACKING==0 ) { ret= (SCOPE_TOP(header_service_route))->first; } } } // This is where rules clean up and exit // goto ruleheader_service_routeEx; /* Prevent compiler warnings */ ruleheader_service_routeEx: ; if (HASEXCEPTION()) { /* catch(decl,action) */ { belle_sip_message("[%s] reason [%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); ret= (SCOPE_TOP(header_service_route))->first; if (ret ) belle_sip_object_unref(ret ); ret=NULL; } } else { } pbelle_sip_messageParser_header_service_routePop(ctx); return ret; } /* $ANTLR end header_service_route */ /** * $ANTLR start srv_route * ../grammars/belle_sip_message.g:1183:1: srv_route : name_addr[BELLE_SIP_HEADER_ADDRESS($header_service_route::current)] ( SEMI ( lws )? sr_param ( lws )? )* ; */ static void srv_route(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ ctx->pbelle_sip_messageParser_srv_routeTop = pbelle_sip_messageParser_srv_routePush(ctx); if ((SCOPE_TOP(header_service_route))->current == NULL) { (SCOPE_TOP(header_service_route))->first= (SCOPE_TOP(header_service_route))->current = belle_sip_header_service_route_new(); (SCOPE_TOP(srv_route))->prev=NULL; } else { belle_sip_header_t* header = BELLE_SIP_HEADER((SCOPE_TOP(header_service_route))->current); (SCOPE_TOP(srv_route))->prev=(SCOPE_TOP(header_service_route))->current; belle_sip_header_set_next(header,(belle_sip_header_t*)((SCOPE_TOP(header_service_route))->current= belle_sip_header_service_route_new())); } { // ../grammars/belle_sip_message.g:1194:4: ( name_addr[BELLE_SIP_HEADER_ADDRESS($header_service_route::current)] ( SEMI ( lws )? sr_param ( lws )? )* ) // ../grammars/belle_sip_message.g:1194:8: name_addr[BELLE_SIP_HEADER_ADDRESS($header_service_route::current)] ( SEMI ( lws )? sr_param ( lws )? )* { FOLLOWPUSH(FOLLOW_name_addr_in_srv_route4537); name_addr(ctx, BELLE_SIP_HEADER_ADDRESS((SCOPE_TOP(header_service_route))->current)); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesrv_routeEx; } if (HASFAILED()) { pbelle_sip_messageParser_srv_routePop(ctx); return ; } // ../grammars/belle_sip_message.g:1194:76: ( SEMI ( lws )? sr_param ( lws )? )* for (;;) { int alt105=2; switch ( LA(1) ) { case SEMI: { alt105=1; } break; } switch (alt105) { case 1: // ../grammars/belle_sip_message.g:1194:78: SEMI ( lws )? sr_param ( lws )? { MATCHT(SEMI, &FOLLOW_SEMI_in_srv_route4542); if (HASEXCEPTION()) { goto rulesrv_routeEx; } if (HASFAILED()) { pbelle_sip_messageParser_srv_routePop(ctx); return ; } // ../grammars/belle_sip_message.g:1194:83: ( lws )? { int alt103=2; switch ( LA(1) ) { case CRLF: case SP: { alt103=1; } break; } switch (alt103) { case 1: // ../grammars/belle_sip_message.g:1194:83: lws { FOLLOWPUSH(FOLLOW_lws_in_srv_route4544); lws(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesrv_routeEx; } if (HASFAILED()) { pbelle_sip_messageParser_srv_routePop(ctx); return ; } } break; } } FOLLOWPUSH(FOLLOW_sr_param_in_srv_route4547); sr_param(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesrv_routeEx; } if (HASFAILED()) { pbelle_sip_messageParser_srv_routePop(ctx); return ; } // ../grammars/belle_sip_message.g:1194:97: ( lws )? { int alt104=2; switch ( LA(1) ) { case CRLF: case SP: { alt104=1; } break; } switch (alt104) { case 1: // ../grammars/belle_sip_message.g:1194:97: lws { FOLLOWPUSH(FOLLOW_lws_in_srv_route4549); lws(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesrv_routeEx; } if (HASFAILED()) { pbelle_sip_messageParser_srv_routePop(ctx); return ; } } break; } } } break; default: goto loop105; /* break out of the loop */ break; } } loop105: ; /* Jump out to here if this rule does not match */ } } // This is where rules clean up and exit // goto rulesrv_routeEx; /* Prevent compiler warnings */ rulesrv_routeEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } pbelle_sip_messageParser_srv_routePop(ctx); return ; } /* $ANTLR end srv_route */ /** * $ANTLR start sr_param * ../grammars/belle_sip_message.g:1197:1: sr_param : generic_param[BELLE_SIP_PARAMETERS($header_service_route::current)] ; */ static void sr_param(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:1198:3: ( generic_param[BELLE_SIP_PARAMETERS($header_service_route::current)] ) // ../grammars/belle_sip_message.g:1198:7: generic_param[BELLE_SIP_PARAMETERS($header_service_route::current)] { FOLLOWPUSH(FOLLOW_generic_param_in_sr_param4565); generic_param(ctx, BELLE_SIP_PARAMETERS((SCOPE_TOP(header_service_route))->current)); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesr_paramEx; } if (HASFAILED()) { return ; } } } // This is where rules clean up and exit // goto rulesr_paramEx; /* Prevent compiler warnings */ rulesr_paramEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end sr_param */ /** * $ANTLR start record_route_token * ../grammars/belle_sip_message.g:1200:1: record_route_token :{...}? token ; */ static void record_route_token(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:1200:19: ({...}? token ) // ../grammars/belle_sip_message.g:1200:22: {...}? token { if ( !((IS_TOKEN(Record-Route))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(Record-Route)"; EXCEPTION->ruleName = (void *)"record_route_token"; } FOLLOWPUSH(FOLLOW_token_in_record_route_token4576); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulerecord_route_tokenEx; } if (HASFAILED()) { return ; } } } // This is where rules clean up and exit // goto rulerecord_route_tokenEx; /* Prevent compiler warnings */ rulerecord_route_tokenEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end record_route_token */ /** * $ANTLR start header_record_route * ../grammars/belle_sip_message.g:1201:1: header_record_route returns [belle_sip_header_record_route_t* ret=NULL] : record_route_token sp_tab_colon rec_route ( COMMA rec_route )* ; */ static belle_sip_header_record_route_t* header_record_route(pbelle_sip_messageParser ctx) { belle_sip_header_record_route_t* ret; /* Initialize rule variables */ ret = NULL; ctx->pbelle_sip_messageParser_header_record_routeTop = pbelle_sip_messageParser_header_record_routePush(ctx); (SCOPE_TOP(header_record_route))->current= NULL;(SCOPE_TOP(header_record_route))->first=NULL; { // ../grammars/belle_sip_message.g:1204:3: ( record_route_token sp_tab_colon rec_route ( COMMA rec_route )* ) // ../grammars/belle_sip_message.g:1204:7: record_route_token sp_tab_colon rec_route ( COMMA rec_route )* { FOLLOWPUSH(FOLLOW_record_route_token_in_header_record_route4601); record_route_token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_record_routeEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_record_routePop(ctx); return ret; } FOLLOWPUSH(FOLLOW_sp_tab_colon_in_header_record_route4605); sp_tab_colon(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_record_routeEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_record_routePop(ctx); return ret; } FOLLOWPUSH(FOLLOW_rec_route_in_header_record_route4607); rec_route(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_record_routeEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_record_routePop(ctx); return ret; } // ../grammars/belle_sip_message.g:1204:68: ( COMMA rec_route )* for (;;) { int alt106=2; switch ( LA(1) ) { case COMMA: { alt106=1; } break; } switch (alt106) { case 1: // ../grammars/belle_sip_message.g:1204:70: COMMA rec_route { MATCHT(COMMA, &FOLLOW_COMMA_in_header_record_route4611); if (HASEXCEPTION()) { goto ruleheader_record_routeEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_record_routePop(ctx); return ret; } FOLLOWPUSH(FOLLOW_rec_route_in_header_record_route4613); rec_route(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_record_routeEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_record_routePop(ctx); return ret; } } break; default: goto loop106; /* break out of the loop */ break; } } loop106: ; /* Jump out to here if this rule does not match */ if ( BACKTRACKING==0 ) { ret= (SCOPE_TOP(header_record_route))->first; } } } // This is where rules clean up and exit // goto ruleheader_record_routeEx; /* Prevent compiler warnings */ ruleheader_record_routeEx: ; if (HASEXCEPTION()) { /* catch(decl,action) */ { belle_sip_message("[%s] reason [%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); ret= (SCOPE_TOP(header_record_route))->first; if (ret ) belle_sip_object_unref(ret ); ret=NULL; } } else { } pbelle_sip_messageParser_header_record_routePop(ctx); return ret; } /* $ANTLR end header_record_route */ /** * $ANTLR start rec_route * ../grammars/belle_sip_message.g:1212:1: rec_route : name_addr[BELLE_SIP_HEADER_ADDRESS($header_record_route::current)] ( SEMI ( lws )? rr_param ( lws )? )* ; */ static void rec_route(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ ctx->pbelle_sip_messageParser_rec_routeTop = pbelle_sip_messageParser_rec_routePush(ctx); if ((SCOPE_TOP(header_record_route))->current == NULL) { (SCOPE_TOP(header_record_route))->first= (SCOPE_TOP(header_record_route))->current = belle_sip_header_record_route_new(); (SCOPE_TOP(rec_route))->prev=NULL; } else { belle_sip_header_t* header = BELLE_SIP_HEADER((SCOPE_TOP(header_record_route))->current); (SCOPE_TOP(rec_route))->prev=(SCOPE_TOP(header_record_route))->current; belle_sip_header_set_next(header,(belle_sip_header_t*)((SCOPE_TOP(header_record_route))->current= belle_sip_header_record_route_new())); } { // ../grammars/belle_sip_message.g:1223:3: ( name_addr[BELLE_SIP_HEADER_ADDRESS($header_record_route::current)] ( SEMI ( lws )? rr_param ( lws )? )* ) // ../grammars/belle_sip_message.g:1223:7: name_addr[BELLE_SIP_HEADER_ADDRESS($header_record_route::current)] ( SEMI ( lws )? rr_param ( lws )? )* { FOLLOWPUSH(FOLLOW_name_addr_in_rec_route4643); name_addr(ctx, BELLE_SIP_HEADER_ADDRESS((SCOPE_TOP(header_record_route))->current)); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulerec_routeEx; } if (HASFAILED()) { pbelle_sip_messageParser_rec_routePop(ctx); return ; } // ../grammars/belle_sip_message.g:1223:74: ( SEMI ( lws )? rr_param ( lws )? )* for (;;) { int alt109=2; switch ( LA(1) ) { case SEMI: { alt109=1; } break; } switch (alt109) { case 1: // ../grammars/belle_sip_message.g:1223:76: SEMI ( lws )? rr_param ( lws )? { MATCHT(SEMI, &FOLLOW_SEMI_in_rec_route4648); if (HASEXCEPTION()) { goto rulerec_routeEx; } if (HASFAILED()) { pbelle_sip_messageParser_rec_routePop(ctx); return ; } // ../grammars/belle_sip_message.g:1223:81: ( lws )? { int alt107=2; switch ( LA(1) ) { case CRLF: case SP: { alt107=1; } break; } switch (alt107) { case 1: // ../grammars/belle_sip_message.g:1223:81: lws { FOLLOWPUSH(FOLLOW_lws_in_rec_route4650); lws(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulerec_routeEx; } if (HASFAILED()) { pbelle_sip_messageParser_rec_routePop(ctx); return ; } } break; } } FOLLOWPUSH(FOLLOW_rr_param_in_rec_route4653); rr_param(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulerec_routeEx; } if (HASFAILED()) { pbelle_sip_messageParser_rec_routePop(ctx); return ; } // ../grammars/belle_sip_message.g:1223:95: ( lws )? { int alt108=2; switch ( LA(1) ) { case CRLF: case SP: { alt108=1; } break; } switch (alt108) { case 1: // ../grammars/belle_sip_message.g:1223:95: lws { FOLLOWPUSH(FOLLOW_lws_in_rec_route4655); lws(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulerec_routeEx; } if (HASFAILED()) { pbelle_sip_messageParser_rec_routePop(ctx); return ; } } break; } } } break; default: goto loop109; /* break out of the loop */ break; } } loop109: ; /* Jump out to here if this rule does not match */ } } // This is where rules clean up and exit // goto rulerec_routeEx; /* Prevent compiler warnings */ rulerec_routeEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } pbelle_sip_messageParser_rec_routePop(ctx); return ; } /* $ANTLR end rec_route */ /** * $ANTLR start rr_param * ../grammars/belle_sip_message.g:1225:1: rr_param : generic_param[BELLE_SIP_PARAMETERS($header_record_route::current)] ; */ static void rr_param(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:1226:3: ( generic_param[BELLE_SIP_PARAMETERS($header_record_route::current)] ) // ../grammars/belle_sip_message.g:1226:7: generic_param[BELLE_SIP_PARAMETERS($header_record_route::current)] { FOLLOWPUSH(FOLLOW_generic_param_in_rr_param4671); generic_param(ctx, BELLE_SIP_PARAMETERS((SCOPE_TOP(header_record_route))->current)); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulerr_paramEx; } if (HASFAILED()) { return ; } } } // This is where rules clean up and exit // goto rulerr_paramEx; /* Prevent compiler warnings */ rulerr_paramEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end rr_param */ /** * $ANTLR start comment * ../grammars/belle_sip_message.g:1242:1: comment : LPAREN . RPAREN ; */ static void comment(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:1242:9: ( LPAREN . RPAREN ) // ../grammars/belle_sip_message.g:1242:11: LPAREN . RPAREN { MATCHT(LPAREN, &FOLLOW_LPAREN_in_comment4681); if (HASEXCEPTION()) { goto rulecommentEx; } if (HASFAILED()) { return ; } MATCHANYT(); if (HASEXCEPTION()) { goto rulecommentEx; } if (HASFAILED()) { return ; } MATCHT(RPAREN, &FOLLOW_RPAREN_in_comment4685); if (HASEXCEPTION()) { goto rulecommentEx; } if (HASFAILED()) { return ; } } } // This is where rules clean up and exit // goto rulecommentEx; /* Prevent compiler warnings */ rulecommentEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end comment */ /** * $ANTLR start route_token * ../grammars/belle_sip_message.g:1249:1: route_token :{...}? token ; */ static void route_token(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:1249:12: ({...}? token ) // ../grammars/belle_sip_message.g:1249:15: {...}? token { if ( !((IS_TOKEN(Route))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(Route)"; EXCEPTION->ruleName = (void *)"route_token"; } FOLLOWPUSH(FOLLOW_token_in_route_token4697); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleroute_tokenEx; } if (HASFAILED()) { return ; } } } // This is where rules clean up and exit // goto ruleroute_tokenEx; /* Prevent compiler warnings */ ruleroute_tokenEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end route_token */ /** * $ANTLR start header_route * ../grammars/belle_sip_message.g:1250:1: header_route returns [belle_sip_header_route_t* ret=NULL] : route_token sp_tab_colon route_param ( COMMA route_param )* ; */ static belle_sip_header_route_t* header_route(pbelle_sip_messageParser ctx) { belle_sip_header_route_t* ret; /* Initialize rule variables */ ret = NULL; ctx->pbelle_sip_messageParser_header_routeTop = pbelle_sip_messageParser_header_routePush(ctx); (SCOPE_TOP(header_route))->current= NULL; (SCOPE_TOP(header_route))->first=NULL; { // ../grammars/belle_sip_message.g:1253:3: ( route_token sp_tab_colon route_param ( COMMA route_param )* ) // ../grammars/belle_sip_message.g:1253:7: route_token sp_tab_colon route_param ( COMMA route_param )* { FOLLOWPUSH(FOLLOW_route_token_in_header_route4722); route_token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_routeEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_routePop(ctx); return ret; } FOLLOWPUSH(FOLLOW_sp_tab_colon_in_header_route4726); sp_tab_colon(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_routeEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_routePop(ctx); return ret; } FOLLOWPUSH(FOLLOW_route_param_in_header_route4728); route_param(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_routeEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_routePop(ctx); return ret; } // ../grammars/belle_sip_message.g:1253:56: ( COMMA route_param )* for (;;) { int alt110=2; switch ( LA(1) ) { case COMMA: { alt110=1; } break; } switch (alt110) { case 1: // ../grammars/belle_sip_message.g:1253:58: COMMA route_param { MATCHT(COMMA, &FOLLOW_COMMA_in_header_route4732); if (HASEXCEPTION()) { goto ruleheader_routeEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_routePop(ctx); return ret; } FOLLOWPUSH(FOLLOW_route_param_in_header_route4734); route_param(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_routeEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_routePop(ctx); return ret; } } break; default: goto loop110; /* break out of the loop */ break; } } loop110: ; /* Jump out to here if this rule does not match */ if ( BACKTRACKING==0 ) { ret= (SCOPE_TOP(header_route))->first; } } } // This is where rules clean up and exit // goto ruleheader_routeEx; /* Prevent compiler warnings */ ruleheader_routeEx: ; if (HASEXCEPTION()) { /* catch(decl,action) */ { belle_sip_message("[%s] reason [%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); ret= (SCOPE_TOP(header_route))->first; if (ret ) belle_sip_object_unref(ret ); ret=NULL; } } else { } pbelle_sip_messageParser_header_routePop(ctx); return ret; } /* $ANTLR end header_route */ /** * $ANTLR start route_param * ../grammars/belle_sip_message.g:1261:1: route_param : name_addr[BELLE_SIP_HEADER_ADDRESS($header_route::current)] ( SEMI ( lws )? r_param ( lws )? )* ; */ static void route_param(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ ctx->pbelle_sip_messageParser_route_paramTop = pbelle_sip_messageParser_route_paramPush(ctx); if ((SCOPE_TOP(header_route))->current == NULL) { (SCOPE_TOP(header_route))->first= (SCOPE_TOP(header_route))->current = belle_sip_header_route_new(); (SCOPE_TOP(route_param))->prev=NULL; } else { belle_sip_header_t* header = BELLE_SIP_HEADER((SCOPE_TOP(header_route))->current); (SCOPE_TOP(route_param))->prev=(SCOPE_TOP(header_route))->current; belle_sip_header_set_next(header,(belle_sip_header_t*)((SCOPE_TOP(header_route))->current= belle_sip_header_route_new())); } { // ../grammars/belle_sip_message.g:1272:3: ( name_addr[BELLE_SIP_HEADER_ADDRESS($header_route::current)] ( SEMI ( lws )? r_param ( lws )? )* ) // ../grammars/belle_sip_message.g:1272:7: name_addr[BELLE_SIP_HEADER_ADDRESS($header_route::current)] ( SEMI ( lws )? r_param ( lws )? )* { FOLLOWPUSH(FOLLOW_name_addr_in_route_param4763); name_addr(ctx, BELLE_SIP_HEADER_ADDRESS((SCOPE_TOP(header_route))->current)); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleroute_paramEx; } if (HASFAILED()) { pbelle_sip_messageParser_route_paramPop(ctx); return ; } // ../grammars/belle_sip_message.g:1272:67: ( SEMI ( lws )? r_param ( lws )? )* for (;;) { int alt113=2; switch ( LA(1) ) { case SEMI: { alt113=1; } break; } switch (alt113) { case 1: // ../grammars/belle_sip_message.g:1272:69: SEMI ( lws )? r_param ( lws )? { MATCHT(SEMI, &FOLLOW_SEMI_in_route_param4768); if (HASEXCEPTION()) { goto ruleroute_paramEx; } if (HASFAILED()) { pbelle_sip_messageParser_route_paramPop(ctx); return ; } // ../grammars/belle_sip_message.g:1272:74: ( lws )? { int alt111=2; switch ( LA(1) ) { case CRLF: case SP: { alt111=1; } break; } switch (alt111) { case 1: // ../grammars/belle_sip_message.g:1272:74: lws { FOLLOWPUSH(FOLLOW_lws_in_route_param4770); lws(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleroute_paramEx; } if (HASFAILED()) { pbelle_sip_messageParser_route_paramPop(ctx); return ; } } break; } } FOLLOWPUSH(FOLLOW_r_param_in_route_param4773); r_param(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleroute_paramEx; } if (HASFAILED()) { pbelle_sip_messageParser_route_paramPop(ctx); return ; } // ../grammars/belle_sip_message.g:1272:87: ( lws )? { int alt112=2; switch ( LA(1) ) { case CRLF: case SP: { alt112=1; } break; } switch (alt112) { case 1: // ../grammars/belle_sip_message.g:1272:87: lws { FOLLOWPUSH(FOLLOW_lws_in_route_param4775); lws(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleroute_paramEx; } if (HASFAILED()) { pbelle_sip_messageParser_route_paramPop(ctx); return ; } } break; } } } break; default: goto loop113; /* break out of the loop */ break; } } loop113: ; /* Jump out to here if this rule does not match */ } } // This is where rules clean up and exit // goto ruleroute_paramEx; /* Prevent compiler warnings */ ruleroute_paramEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } pbelle_sip_messageParser_route_paramPop(ctx); return ; } /* $ANTLR end route_param */ /** * $ANTLR start r_param * ../grammars/belle_sip_message.g:1274:1: r_param : generic_param[BELLE_SIP_PARAMETERS($header_route::current)] ; */ static void r_param(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:1275:3: ( generic_param[BELLE_SIP_PARAMETERS($header_route::current)] ) // ../grammars/belle_sip_message.g:1275:7: generic_param[BELLE_SIP_PARAMETERS($header_route::current)] { FOLLOWPUSH(FOLLOW_generic_param_in_r_param4790); generic_param(ctx, BELLE_SIP_PARAMETERS((SCOPE_TOP(header_route))->current)); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruler_paramEx; } if (HASFAILED()) { return ; } } } // This is where rules clean up and exit // goto ruler_paramEx; /* Prevent compiler warnings */ ruler_paramEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end r_param */ /** * $ANTLR start to_token * ../grammars/belle_sip_message.g:1299:1: to_token :{...}? token ; */ static void to_token(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:1299:9: ({...}? token ) // ../grammars/belle_sip_message.g:1299:12: {...}? token { if ( !((IS_HEADER_NAMED(To,t))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_HEADER_NAMED(To,t)"; EXCEPTION->ruleName = (void *)"to_token"; } FOLLOWPUSH(FOLLOW_token_in_to_token4805); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleto_tokenEx; } if (HASFAILED()) { return ; } } } // This is where rules clean up and exit // goto ruleto_tokenEx; /* Prevent compiler warnings */ ruleto_tokenEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end to_token */ /** * $ANTLR start header_to * ../grammars/belle_sip_message.g:1300:1: header_to returns [belle_sip_header_to_t* ret=NULL] : to_token sp_tab_colon to_spec ; */ static belle_sip_header_to_t* header_to(pbelle_sip_messageParser ctx) { belle_sip_header_to_t* ret; /* Initialize rule variables */ ret = NULL; ctx->pbelle_sip_messageParser_header_toTop = pbelle_sip_messageParser_header_toPush(ctx); (SCOPE_TOP(header_to))->current= belle_sip_header_to_new(); ret= (SCOPE_TOP(header_to))->current; { // ../grammars/belle_sip_message.g:1304:3: ( to_token sp_tab_colon to_spec ) // ../grammars/belle_sip_message.g:1304:7: to_token sp_tab_colon to_spec { FOLLOWPUSH(FOLLOW_to_token_in_header_to4831); to_token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_toEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_toPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_sp_tab_colon_in_header_to4835); sp_tab_colon(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_toEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_toPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_to_spec_in_header_to4837); to_spec(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_toEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_toPop(ctx); return ret; } } } // This is where rules clean up and exit // goto ruleheader_toEx; /* Prevent compiler warnings */ ruleheader_toEx: ; if (HASEXCEPTION()) { /* catch(decl,action) */ { belle_sip_message("[%s] reason [%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref((SCOPE_TOP(header_to))->current); ret=NULL; } } else { } pbelle_sip_messageParser_header_toPop(ctx); return ret; } /* $ANTLR end header_to */ /** * $ANTLR start to_spec * ../grammars/belle_sip_message.g:1311:1: to_spec : ( name_addr_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($header_to::current)] | paramless_addr_spec_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($header_to::current)] ) ( SEMI ( lws )? to_param ( lws )? )* ; */ static void to_spec(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:1312:3: ( ( name_addr_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($header_to::current)] | paramless_addr_spec_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($header_to::current)] ) ( SEMI ( lws )? to_param ( lws )? )* ) // ../grammars/belle_sip_message.g:1312:7: ( name_addr_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($header_to::current)] | paramless_addr_spec_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($header_to::current)] ) ( SEMI ( lws )? to_param ( lws )? )* { // ../grammars/belle_sip_message.g:1312:7: ( name_addr_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($header_to::current)] | paramless_addr_spec_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($header_to::current)] ) { int alt114=2; alt114 = cdfa114.predict(ctx, RECOGNIZER, ISTREAM, &cdfa114); if (HASEXCEPTION()) { goto ruleto_specEx; } if (HASFAILED()) { return ; } switch (alt114) { case 1: // ../grammars/belle_sip_message.g:1312:9: name_addr_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($header_to::current)] { FOLLOWPUSH(FOLLOW_name_addr_with_generic_uri_in_to_spec4856); name_addr_with_generic_uri(ctx, BELLE_SIP_HEADER_ADDRESS((SCOPE_TOP(header_to))->current)); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleto_specEx; } if (HASFAILED()) { return ; } } break; case 2: // ../grammars/belle_sip_message.g:1312:85: paramless_addr_spec_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($header_to::current)] { FOLLOWPUSH(FOLLOW_paramless_addr_spec_with_generic_uri_in_to_spec4861); paramless_addr_spec_with_generic_uri(ctx, BELLE_SIP_HEADER_ADDRESS((SCOPE_TOP(header_to))->current)); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleto_specEx; } if (HASFAILED()) { return ; } } break; } } // ../grammars/belle_sip_message.g:1313:16: ( SEMI ( lws )? to_param ( lws )? )* for (;;) { int alt117=2; switch ( LA(1) ) { case SEMI: { alt117=1; } break; } switch (alt117) { case 1: // ../grammars/belle_sip_message.g:1313:18: SEMI ( lws )? to_param ( lws )? { MATCHT(SEMI, &FOLLOW_SEMI_in_to_spec4883); if (HASEXCEPTION()) { goto ruleto_specEx; } if (HASFAILED()) { return ; } // ../grammars/belle_sip_message.g:1313:23: ( lws )? { int alt115=2; switch ( LA(1) ) { case CRLF: case SP: { alt115=1; } break; } switch (alt115) { case 1: // ../grammars/belle_sip_message.g:1313:23: lws { FOLLOWPUSH(FOLLOW_lws_in_to_spec4885); lws(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleto_specEx; } if (HASFAILED()) { return ; } } break; } } FOLLOWPUSH(FOLLOW_to_param_in_to_spec4888); to_param(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleto_specEx; } if (HASFAILED()) { return ; } // ../grammars/belle_sip_message.g:1313:37: ( lws )? { int alt116=2; switch ( LA(1) ) { case CRLF: case SP: { alt116=1; } break; } switch (alt116) { case 1: // ../grammars/belle_sip_message.g:1313:37: lws { FOLLOWPUSH(FOLLOW_lws_in_to_spec4890); lws(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleto_specEx; } if (HASFAILED()) { return ; } } break; } } } break; default: goto loop117; /* break out of the loop */ break; } } loop117: ; /* Jump out to here if this rule does not match */ } } // This is where rules clean up and exit // goto ruleto_specEx; /* Prevent compiler warnings */ ruleto_specEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end to_spec */ /** * $ANTLR start to_param * ../grammars/belle_sip_message.g:1314:1: to_param : generic_param[BELLE_SIP_PARAMETERS($header_to::current)] ; */ static void to_param(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:1315:3: ( generic_param[BELLE_SIP_PARAMETERS($header_to::current)] ) // ../grammars/belle_sip_message.g:1315:23: generic_param[BELLE_SIP_PARAMETERS($header_to::current)] { FOLLOWPUSH(FOLLOW_generic_param_in_to_param4906); generic_param(ctx, BELLE_SIP_PARAMETERS((SCOPE_TOP(header_to))->current)); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleto_paramEx; } if (HASFAILED()) { return ; } } } // This is where rules clean up and exit // goto ruleto_paramEx; /* Prevent compiler warnings */ ruleto_paramEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end to_param */ /** * $ANTLR start diversion_token * ../grammars/belle_sip_message.g:1317:1: diversion_token :{...}? token ; */ static void diversion_token(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:1317:16: ({...}? token ) // ../grammars/belle_sip_message.g:1317:18: {...}? token { if ( !((IS_HEADER_NAMED(Diversion,d))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_HEADER_NAMED(Diversion,d)"; EXCEPTION->ruleName = (void *)"diversion_token"; } FOLLOWPUSH(FOLLOW_token_in_diversion_token4917); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulediversion_tokenEx; } if (HASFAILED()) { return ; } } } // This is where rules clean up and exit // goto rulediversion_tokenEx; /* Prevent compiler warnings */ rulediversion_tokenEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end diversion_token */ /** * $ANTLR start header_diversion * ../grammars/belle_sip_message.g:1318:1: header_diversion returns [belle_sip_header_diversion_t* ret=NULL] : diversion_token sp_tab_colon diversion_spec ; */ static belle_sip_header_diversion_t* header_diversion(pbelle_sip_messageParser ctx) { belle_sip_header_diversion_t* ret; /* Initialize rule variables */ ret = NULL; ctx->pbelle_sip_messageParser_header_diversionTop = pbelle_sip_messageParser_header_diversionPush(ctx); (SCOPE_TOP(header_diversion))->current= belle_sip_header_diversion_new(); ret= (SCOPE_TOP(header_diversion))->current; { // ../grammars/belle_sip_message.g:1322:3: ( diversion_token sp_tab_colon diversion_spec ) // ../grammars/belle_sip_message.g:1322:7: diversion_token sp_tab_colon diversion_spec { FOLLOWPUSH(FOLLOW_diversion_token_in_header_diversion4942); diversion_token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_diversionEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_diversionPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_sp_tab_colon_in_header_diversion4946); sp_tab_colon(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_diversionEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_diversionPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_diversion_spec_in_header_diversion4948); diversion_spec(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_diversionEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_diversionPop(ctx); return ret; } } } // This is where rules clean up and exit // goto ruleheader_diversionEx; /* Prevent compiler warnings */ ruleheader_diversionEx: ; if (HASEXCEPTION()) { /* catch(decl,action) */ { belle_sip_message("[%s] reason [%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref((SCOPE_TOP(header_diversion))->current); ret=NULL; } } else { } pbelle_sip_messageParser_header_diversionPop(ctx); return ret; } /* $ANTLR end header_diversion */ /** * $ANTLR start diversion_spec * ../grammars/belle_sip_message.g:1329:1: diversion_spec : ( name_addr_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($header_diversion::current)] | paramless_addr_spec_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($header_diversion::current)] ) ( SEMI ( lws )? diversion_param ( lws )? )* ; */ static void diversion_spec(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:1330:3: ( ( name_addr_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($header_diversion::current)] | paramless_addr_spec_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($header_diversion::current)] ) ( SEMI ( lws )? diversion_param ( lws )? )* ) // ../grammars/belle_sip_message.g:1330:7: ( name_addr_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($header_diversion::current)] | paramless_addr_spec_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($header_diversion::current)] ) ( SEMI ( lws )? diversion_param ( lws )? )* { // ../grammars/belle_sip_message.g:1330:7: ( name_addr_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($header_diversion::current)] | paramless_addr_spec_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($header_diversion::current)] ) { int alt118=2; alt118 = cdfa118.predict(ctx, RECOGNIZER, ISTREAM, &cdfa118); if (HASEXCEPTION()) { goto rulediversion_specEx; } if (HASFAILED()) { return ; } switch (alt118) { case 1: // ../grammars/belle_sip_message.g:1330:9: name_addr_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($header_diversion::current)] { FOLLOWPUSH(FOLLOW_name_addr_with_generic_uri_in_diversion_spec4967); name_addr_with_generic_uri(ctx, BELLE_SIP_HEADER_ADDRESS((SCOPE_TOP(header_diversion))->current)); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulediversion_specEx; } if (HASFAILED()) { return ; } } break; case 2: // ../grammars/belle_sip_message.g:1330:92: paramless_addr_spec_with_generic_uri[BELLE_SIP_HEADER_ADDRESS($header_diversion::current)] { FOLLOWPUSH(FOLLOW_paramless_addr_spec_with_generic_uri_in_diversion_spec4972); paramless_addr_spec_with_generic_uri(ctx, BELLE_SIP_HEADER_ADDRESS((SCOPE_TOP(header_diversion))->current)); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulediversion_specEx; } if (HASFAILED()) { return ; } } break; } } // ../grammars/belle_sip_message.g:1331:16: ( SEMI ( lws )? diversion_param ( lws )? )* for (;;) { int alt121=2; switch ( LA(1) ) { case SEMI: { alt121=1; } break; } switch (alt121) { case 1: // ../grammars/belle_sip_message.g:1331:18: SEMI ( lws )? diversion_param ( lws )? { MATCHT(SEMI, &FOLLOW_SEMI_in_diversion_spec4994); if (HASEXCEPTION()) { goto rulediversion_specEx; } if (HASFAILED()) { return ; } // ../grammars/belle_sip_message.g:1331:23: ( lws )? { int alt119=2; switch ( LA(1) ) { case CRLF: case SP: { alt119=1; } break; } switch (alt119) { case 1: // ../grammars/belle_sip_message.g:1331:23: lws { FOLLOWPUSH(FOLLOW_lws_in_diversion_spec4996); lws(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulediversion_specEx; } if (HASFAILED()) { return ; } } break; } } FOLLOWPUSH(FOLLOW_diversion_param_in_diversion_spec4999); diversion_param(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulediversion_specEx; } if (HASFAILED()) { return ; } // ../grammars/belle_sip_message.g:1331:44: ( lws )? { int alt120=2; switch ( LA(1) ) { case CRLF: case SP: { alt120=1; } break; } switch (alt120) { case 1: // ../grammars/belle_sip_message.g:1331:44: lws { FOLLOWPUSH(FOLLOW_lws_in_diversion_spec5001); lws(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulediversion_specEx; } if (HASFAILED()) { return ; } } break; } } } break; default: goto loop121; /* break out of the loop */ break; } } loop121: ; /* Jump out to here if this rule does not match */ } } // This is where rules clean up and exit // goto rulediversion_specEx; /* Prevent compiler warnings */ rulediversion_specEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end diversion_spec */ /** * $ANTLR start diversion_param * ../grammars/belle_sip_message.g:1332:1: diversion_param : generic_param[BELLE_SIP_PARAMETERS($header_diversion::current)] ; */ static void diversion_param(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:1333:3: ( generic_param[BELLE_SIP_PARAMETERS($header_diversion::current)] ) // ../grammars/belle_sip_message.g:1333:23: generic_param[BELLE_SIP_PARAMETERS($header_diversion::current)] { FOLLOWPUSH(FOLLOW_generic_param_in_diversion_param5017); generic_param(ctx, BELLE_SIP_PARAMETERS((SCOPE_TOP(header_diversion))->current)); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulediversion_paramEx; } if (HASFAILED()) { return ; } } } // This is where rules clean up and exit // goto rulediversion_paramEx; /* Prevent compiler warnings */ rulediversion_paramEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end diversion_param */ /** * $ANTLR start refer_to_token * ../grammars/belle_sip_message.g:1335:1: refer_to_token :{...}? token ; */ static void refer_to_token(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:1335:15: ({...}? token ) // ../grammars/belle_sip_message.g:1335:18: {...}? token { if ( !((IS_TOKEN(Refer-To))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(Refer-To)"; EXCEPTION->ruleName = (void *)"refer_to_token"; } FOLLOWPUSH(FOLLOW_token_in_refer_to_token5029); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulerefer_to_tokenEx; } if (HASFAILED()) { return ; } } } // This is where rules clean up and exit // goto rulerefer_to_tokenEx; /* Prevent compiler warnings */ rulerefer_to_tokenEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end refer_to_token */ /** * $ANTLR start header_refer_to * ../grammars/belle_sip_message.g:1336:1: header_refer_to returns [belle_sip_header_refer_to_t* ret=NULL] : refer_to_token sp_tab_colon refer_to_spec[BELLE_SIP_HEADER_ADDRESS(belle_sip_header_refer_to_new())] ; */ static belle_sip_header_refer_to_t* header_refer_to(pbelle_sip_messageParser ctx) { belle_sip_header_refer_to_t* ret; belle_sip_header_address_t* refer_to_spec85; #undef RETURN_TYPE_refer_to_spec85 #define RETURN_TYPE_refer_to_spec85 belle_sip_header_address_t* /* Initialize rule variables */ ret = NULL; { // ../grammars/belle_sip_message.g:1337:3: ( refer_to_token sp_tab_colon refer_to_spec[BELLE_SIP_HEADER_ADDRESS(belle_sip_header_refer_to_new())] ) // ../grammars/belle_sip_message.g:1337:7: refer_to_token sp_tab_colon refer_to_spec[BELLE_SIP_HEADER_ADDRESS(belle_sip_header_refer_to_new())] { FOLLOWPUSH(FOLLOW_refer_to_token_in_header_refer_to5045); refer_to_token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_refer_toEx; } if (HASFAILED()) { return ret; } FOLLOWPUSH(FOLLOW_sp_tab_colon_in_header_refer_to5055); sp_tab_colon(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_refer_toEx; } if (HASFAILED()) { return ret; } FOLLOWPUSH(FOLLOW_refer_to_spec_in_header_refer_to5063); refer_to_spec85=refer_to_spec(ctx, BELLE_SIP_HEADER_ADDRESS(belle_sip_header_refer_to_new())); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_refer_toEx; } if (HASFAILED()) { return ret; } if ( BACKTRACKING==0 ) { ret= BELLE_SIP_HEADER_REFER_TO( refer_to_spec85 ); } } } // This is where rules clean up and exit // goto ruleheader_refer_toEx; /* Prevent compiler warnings */ ruleheader_refer_toEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ret; } /* $ANTLR end header_refer_to */ /** * $ANTLR start referred_by_token * ../grammars/belle_sip_message.g:1341:1: referred_by_token :{...}? token ; */ static void referred_by_token(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:1341:18: ({...}? token ) // ../grammars/belle_sip_message.g:1341:21: {...}? token { if ( !((IS_TOKEN(Referred-By))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(Referred-By)"; EXCEPTION->ruleName = (void *)"referred_by_token"; } FOLLOWPUSH(FOLLOW_token_in_referred_by_token5076); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulereferred_by_tokenEx; } if (HASFAILED()) { return ; } } } // This is where rules clean up and exit // goto rulereferred_by_tokenEx; /* Prevent compiler warnings */ rulereferred_by_tokenEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end referred_by_token */ /** * $ANTLR start header_referred_by * ../grammars/belle_sip_message.g:1342:1: header_referred_by returns [belle_sip_header_referred_by_t* ret=NULL] : referred_by_token sp_tab_colon refer_to_spec[BELLE_SIP_HEADER_ADDRESS(belle_sip_header_referred_by_new())] ; */ static belle_sip_header_referred_by_t* header_referred_by(pbelle_sip_messageParser ctx) { belle_sip_header_referred_by_t* ret; belle_sip_header_address_t* refer_to_spec86; #undef RETURN_TYPE_refer_to_spec86 #define RETURN_TYPE_refer_to_spec86 belle_sip_header_address_t* /* Initialize rule variables */ ret = NULL; { // ../grammars/belle_sip_message.g:1343:3: ( referred_by_token sp_tab_colon refer_to_spec[BELLE_SIP_HEADER_ADDRESS(belle_sip_header_referred_by_new())] ) // ../grammars/belle_sip_message.g:1343:7: referred_by_token sp_tab_colon refer_to_spec[BELLE_SIP_HEADER_ADDRESS(belle_sip_header_referred_by_new())] { FOLLOWPUSH(FOLLOW_referred_by_token_in_header_referred_by5092); referred_by_token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_referred_byEx; } if (HASFAILED()) { return ret; } FOLLOWPUSH(FOLLOW_sp_tab_colon_in_header_referred_by5102); sp_tab_colon(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_referred_byEx; } if (HASFAILED()) { return ret; } FOLLOWPUSH(FOLLOW_refer_to_spec_in_header_referred_by5110); refer_to_spec86=refer_to_spec(ctx, BELLE_SIP_HEADER_ADDRESS(belle_sip_header_referred_by_new())); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_referred_byEx; } if (HASFAILED()) { return ret; } if ( BACKTRACKING==0 ) { ret= BELLE_SIP_HEADER_REFERRED_BY( refer_to_spec86 ); } } } // This is where rules clean up and exit // goto ruleheader_referred_byEx; /* Prevent compiler warnings */ ruleheader_referred_byEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ret; } /* $ANTLR end header_referred_by */ /** * $ANTLR start refer_to_spec * ../grammars/belle_sip_message.g:1347:1: refer_to_spec[belle_sip_header_address_t* address] returns [belle_sip_header_address_t* ret] : ( ( name_addr[address] | paramless_addr_spec[address] ) ( SEMI ( lws )? generic_param[BELLE_SIP_PARAMETERS(address)] ( lws )? )* ) ; */ static belle_sip_header_address_t* refer_to_spec(pbelle_sip_messageParser ctx, belle_sip_header_address_t* address) { belle_sip_header_address_t* ret; /* Initialize rule variables */ ret=address; { // ../grammars/belle_sip_message.g:1349:3: ( ( ( name_addr[address] | paramless_addr_spec[address] ) ( SEMI ( lws )? generic_param[BELLE_SIP_PARAMETERS(address)] ( lws )? )* ) ) // ../grammars/belle_sip_message.g:1349:7: ( ( name_addr[address] | paramless_addr_spec[address] ) ( SEMI ( lws )? generic_param[BELLE_SIP_PARAMETERS(address)] ( lws )? )* ) { // ../grammars/belle_sip_message.g:1349:7: ( ( name_addr[address] | paramless_addr_spec[address] ) ( SEMI ( lws )? generic_param[BELLE_SIP_PARAMETERS(address)] ( lws )? )* ) // ../grammars/belle_sip_message.g:1349:8: ( name_addr[address] | paramless_addr_spec[address] ) ( SEMI ( lws )? generic_param[BELLE_SIP_PARAMETERS(address)] ( lws )? )* { // ../grammars/belle_sip_message.g:1349:8: ( name_addr[address] | paramless_addr_spec[address] ) { int alt122=2; alt122 = cdfa122.predict(ctx, RECOGNIZER, ISTREAM, &cdfa122); if (HASEXCEPTION()) { goto rulerefer_to_specEx; } if (HASFAILED()) { return ret; } switch (alt122) { case 1: // ../grammars/belle_sip_message.g:1349:10: name_addr[address] { FOLLOWPUSH(FOLLOW_name_addr_in_refer_to_spec5142); name_addr(ctx, address); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulerefer_to_specEx; } if (HASFAILED()) { return ret; } } break; case 2: // ../grammars/belle_sip_message.g:1349:31: paramless_addr_spec[address] { FOLLOWPUSH(FOLLOW_paramless_addr_spec_in_refer_to_spec5147); paramless_addr_spec(ctx, address); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulerefer_to_specEx; } if (HASFAILED()) { return ret; } } break; } } // ../grammars/belle_sip_message.g:1349:62: ( SEMI ( lws )? generic_param[BELLE_SIP_PARAMETERS(address)] ( lws )? )* for (;;) { int alt125=2; switch ( LA(1) ) { case SEMI: { alt125=1; } break; } switch (alt125) { case 1: // ../grammars/belle_sip_message.g:1349:64: SEMI ( lws )? generic_param[BELLE_SIP_PARAMETERS(address)] ( lws )? { MATCHT(SEMI, &FOLLOW_SEMI_in_refer_to_spec5154); if (HASEXCEPTION()) { goto rulerefer_to_specEx; } if (HASFAILED()) { return ret; } // ../grammars/belle_sip_message.g:1349:69: ( lws )? { int alt123=2; switch ( LA(1) ) { case CRLF: case SP: { alt123=1; } break; } switch (alt123) { case 1: // ../grammars/belle_sip_message.g:1349:69: lws { FOLLOWPUSH(FOLLOW_lws_in_refer_to_spec5156); lws(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulerefer_to_specEx; } if (HASFAILED()) { return ret; } } break; } } FOLLOWPUSH(FOLLOW_generic_param_in_refer_to_spec5159); generic_param(ctx, BELLE_SIP_PARAMETERS(address)); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulerefer_to_specEx; } if (HASFAILED()) { return ret; } // ../grammars/belle_sip_message.g:1349:120: ( lws )? { int alt124=2; switch ( LA(1) ) { case CRLF: case SP: { alt124=1; } break; } switch (alt124) { case 1: // ../grammars/belle_sip_message.g:1349:120: lws { FOLLOWPUSH(FOLLOW_lws_in_refer_to_spec5163); lws(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulerefer_to_specEx; } if (HASFAILED()) { return ret; } } break; } } } break; default: goto loop125; /* break out of the loop */ break; } } loop125: ; /* Jump out to here if this rule does not match */ } } } // This is where rules clean up and exit // goto rulerefer_to_specEx; /* Prevent compiler warnings */ rulerefer_to_specEx: ; if (HASEXCEPTION()) { /* catch(decl,action) */ { belle_sip_message("[%s] reason [%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref(address); ret=NULL; } } else { } return ret; } /* $ANTLR end refer_to_spec */ /** * $ANTLR start header_user_agent * ../grammars/belle_sip_message.g:1362:1: header_user_agent returns [belle_sip_header_user_agent_t* ret] :{...}? token hcolon server_val ( lws server_val )* ; */ static belle_sip_header_user_agent_t* header_user_agent(pbelle_sip_messageParser ctx) { belle_sip_header_user_agent_t* ret; /* Initialize rule variables */ ctx->pbelle_sip_messageParser_header_user_agentTop = pbelle_sip_messageParser_header_user_agentPush(ctx); (SCOPE_TOP(header_user_agent))->current= belle_sip_header_user_agent_new(); ret= (SCOPE_TOP(header_user_agent))->current; { // ../grammars/belle_sip_message.g:1365:3: ({...}? token hcolon server_val ( lws server_val )* ) // ../grammars/belle_sip_message.g:1365:7: {...}? token hcolon server_val ( lws server_val )* { if ( !((IS_TOKEN(User-Agent))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_header_user_agentPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(User-Agent)"; EXCEPTION->ruleName = (void *)"header_user_agent"; } FOLLOWPUSH(FOLLOW_token_in_header_user_agent5206); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_user_agentEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_user_agentPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_hcolon_in_header_user_agent5210); hcolon(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_user_agentEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_user_agentPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_server_val_in_header_user_agent5212); server_val(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_user_agentEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_user_agentPop(ctx); return ret; } // ../grammars/belle_sip_message.g:1365:72: ( lws server_val )* for (;;) { int alt126=2; switch ( LA(1) ) { case CRLF: case SP: { alt126=1; } break; } switch (alt126) { case 1: // ../grammars/belle_sip_message.g:1365:73: lws server_val { FOLLOWPUSH(FOLLOW_lws_in_header_user_agent5215); lws(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_user_agentEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_user_agentPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_server_val_in_header_user_agent5217); server_val(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_user_agentEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_user_agentPop(ctx); return ret; } } break; default: goto loop126; /* break out of the loop */ break; } } loop126: ; /* Jump out to here if this rule does not match */ } } // This is where rules clean up and exit // goto ruleheader_user_agentEx; /* Prevent compiler warnings */ ruleheader_user_agentEx: ; if (HASEXCEPTION()) { /* catch(decl,action) */ { belle_sip_message("[%s] reason [%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref((SCOPE_TOP(header_user_agent))->current); ret=NULL; } } else { } pbelle_sip_messageParser_header_user_agentPop(ctx); return ret; } /* $ANTLR end header_user_agent */ /** * $ANTLR start server_val * ../grammars/belle_sip_message.g:1373:1: server_val : word ; */ static void server_val(pbelle_sip_messageParser ctx) { belle_sip_messageParser_word_return word87; #undef RETURN_TYPE_word87 #define RETURN_TYPE_word87 belle_sip_messageParser_word_return /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:1373:15: ( word ) // ../grammars/belle_sip_message.g:1373:17: word { FOLLOWPUSH(FOLLOW_word_in_server_val5236); word87=word(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleserver_valEx; } if (HASFAILED()) { return ; } if ( BACKTRACKING==0 ) { belle_sip_header_user_agent_add_product((SCOPE_TOP(header_user_agent))->current,(const char*) (STRSTREAM->toStringTT(STRSTREAM, word87.start, word87.stop)) ->chars); } } } // This is where rules clean up and exit // goto ruleserver_valEx; /* Prevent compiler warnings */ ruleserver_valEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end server_val */ /** * $ANTLR start via_token * ../grammars/belle_sip_message.g:1381:1: via_token :{...}? token ; */ static void via_token(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:1381:10: ({...}? token ) // ../grammars/belle_sip_message.g:1381:13: {...}? token { if ( !((IS_HEADER_NAMED(Via,v))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_HEADER_NAMED(Via,v)"; EXCEPTION->ruleName = (void *)"via_token"; } FOLLOWPUSH(FOLLOW_token_in_via_token5249); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulevia_tokenEx; } if (HASFAILED()) { return ; } } } // This is where rules clean up and exit // goto rulevia_tokenEx; /* Prevent compiler warnings */ rulevia_tokenEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end via_token */ /** * $ANTLR start header_via * ../grammars/belle_sip_message.g:1382:1: header_via returns [belle_sip_header_via_t* ret] : via_token hcolon via_parm ( comma via_parm )* ; */ static belle_sip_header_via_t* header_via(pbelle_sip_messageParser ctx) { belle_sip_header_via_t* ret; /* Initialize rule variables */ ctx->pbelle_sip_messageParser_header_viaTop = pbelle_sip_messageParser_header_viaPush(ctx); (SCOPE_TOP(header_via))->current= NULL;(SCOPE_TOP(header_via))->first=NULL; ret= NULL; { // ../grammars/belle_sip_message.g:1386:3: ( via_token hcolon via_parm ( comma via_parm )* ) // ../grammars/belle_sip_message.g:1386:7: via_token hcolon via_parm ( comma via_parm )* { FOLLOWPUSH(FOLLOW_via_token_in_header_via5275); via_token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_viaEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_viaPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_hcolon_in_header_via5278); hcolon(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_viaEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_viaPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_via_parm_in_header_via5280); via_parm(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_viaEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_viaPop(ctx); return ret; } // ../grammars/belle_sip_message.g:1386:53: ( comma via_parm )* for (;;) { int alt127=2; switch ( LA(1) ) { case COMMA: case CRLF: case SP: { alt127=1; } break; } switch (alt127) { case 1: // ../grammars/belle_sip_message.g:1386:54: comma via_parm { FOLLOWPUSH(FOLLOW_comma_in_header_via5283); comma(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_viaEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_viaPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_via_parm_in_header_via5285); via_parm(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_viaEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_viaPop(ctx); return ret; } } break; default: goto loop127; /* break out of the loop */ break; } } loop127: ; /* Jump out to here if this rule does not match */ if ( BACKTRACKING==0 ) { ret= (SCOPE_TOP(header_via))->first; } } } // This is where rules clean up and exit // goto ruleheader_viaEx; /* Prevent compiler warnings */ ruleheader_viaEx: ; if (HASEXCEPTION()) { /* catch(decl,action) */ { belle_sip_message("[%s] reason [%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); ret= (SCOPE_TOP(header_via))->first; if (ret ) belle_sip_object_unref(ret ); ret=NULL; } } else { } pbelle_sip_messageParser_header_viaPop(ctx); return ret; } /* $ANTLR end header_via */ /** * $ANTLR start via_parm * ../grammars/belle_sip_message.g:1394:1: via_parm : sent_protocol lws sent_by ( semi via_params )* ; */ static void via_parm(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ ctx->pbelle_sip_messageParser_via_parmTop = pbelle_sip_messageParser_via_parmPush(ctx); if ((SCOPE_TOP(header_via))->current == NULL) { (SCOPE_TOP(header_via))->first= (SCOPE_TOP(header_via))->current = belle_sip_header_via_new(); (SCOPE_TOP(via_parm))->prev=NULL; } else { belle_sip_header_t* header; (SCOPE_TOP(via_parm))->prev=(SCOPE_TOP(header_via))->current; header = BELLE_SIP_HEADER((SCOPE_TOP(header_via))->current); belle_sip_header_set_next(header,(belle_sip_header_t*)((SCOPE_TOP(header_via))->current= belle_sip_header_via_new())); } { // ../grammars/belle_sip_message.g:1406:3: ( sent_protocol lws sent_by ( semi via_params )* ) // ../grammars/belle_sip_message.g:1406:7: sent_protocol lws sent_by ( semi via_params )* { FOLLOWPUSH(FOLLOW_sent_protocol_in_via_parm5316); sent_protocol(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulevia_parmEx; } if (HASFAILED()) { pbelle_sip_messageParser_via_parmPop(ctx); return ; } FOLLOWPUSH(FOLLOW_lws_in_via_parm5319); lws(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulevia_parmEx; } if (HASFAILED()) { pbelle_sip_messageParser_via_parmPop(ctx); return ; } FOLLOWPUSH(FOLLOW_sent_by_in_via_parm5321); sent_by(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulevia_parmEx; } if (HASFAILED()) { pbelle_sip_messageParser_via_parmPop(ctx); return ; } // ../grammars/belle_sip_message.g:1406:34: ( semi via_params )* for (;;) { int alt128=2; alt128 = cdfa128.predict(ctx, RECOGNIZER, ISTREAM, &cdfa128); if (HASEXCEPTION()) { goto rulevia_parmEx; } if (HASFAILED()) { pbelle_sip_messageParser_via_parmPop(ctx); return ; } switch (alt128) { case 1: // ../grammars/belle_sip_message.g:1406:36: semi via_params { FOLLOWPUSH(FOLLOW_semi_in_via_parm5325); semi(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulevia_parmEx; } if (HASFAILED()) { pbelle_sip_messageParser_via_parmPop(ctx); return ; } FOLLOWPUSH(FOLLOW_via_params_in_via_parm5327); via_params(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulevia_parmEx; } if (HASFAILED()) { pbelle_sip_messageParser_via_parmPop(ctx); return ; } } break; default: goto loop128; /* break out of the loop */ break; } } loop128: ; /* Jump out to here if this rule does not match */ } } // This is where rules clean up and exit // goto rulevia_parmEx; /* Prevent compiler warnings */ rulevia_parmEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } pbelle_sip_messageParser_via_parmPop(ctx); return ; } /* $ANTLR end via_parm */ /** * $ANTLR start via_params * ../grammars/belle_sip_message.g:1408:1: via_params : ( via_received[$header_via::current] | generic_param[BELLE_SIP_PARAMETERS($header_via::current)] ); */ static void via_params(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { { // ../grammars/belle_sip_message.g:1409:3: ( via_received[$header_via::current] | generic_param[BELLE_SIP_PARAMETERS($header_via::current)] ) ANTLR3_UINT32 alt129; alt129=2; alt129 = cdfa129.predict(ctx, RECOGNIZER, ISTREAM, &cdfa129); if (HASEXCEPTION()) { goto rulevia_paramsEx; } if (HASFAILED()) { return ; } switch (alt129) { case 1: // ../grammars/belle_sip_message.g:1411:41: via_received[$header_via::current] { FOLLOWPUSH(FOLLOW_via_received_in_via_params5344); via_received(ctx, (SCOPE_TOP(header_via))->current); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulevia_paramsEx; } if (HASFAILED()) { return ; } } break; case 2: // ../grammars/belle_sip_message.g:1411:78: generic_param[BELLE_SIP_PARAMETERS($header_via::current)] { FOLLOWPUSH(FOLLOW_generic_param_in_via_params5349); generic_param(ctx, BELLE_SIP_PARAMETERS((SCOPE_TOP(header_via))->current)); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulevia_paramsEx; } if (HASFAILED()) { return ; } } break; } } } // This is where rules clean up and exit // goto rulevia_paramsEx; /* Prevent compiler warnings */ rulevia_paramsEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end via_params */ /** * $ANTLR start via_received * ../grammars/belle_sip_message.g:1416:1: via_received[belle_sip_header_via_t* object] :{...}? token EQUAL via_address ; */ static void via_received(pbelle_sip_messageParser ctx, belle_sip_header_via_t* object) { const char* via_address88; #undef RETURN_TYPE_via_address88 #define RETURN_TYPE_via_address88 const char* /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:1417:3: ({...}? token EQUAL via_address ) // ../grammars/belle_sip_message.g:1417:5: {...}? token EQUAL via_address { if ( !((IS_TOKEN(received))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(received)"; EXCEPTION->ruleName = (void *)"via_received"; } FOLLOWPUSH(FOLLOW_token_in_via_received5366); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulevia_receivedEx; } if (HASFAILED()) { return ; } MATCHT(EQUAL, &FOLLOW_EQUAL_in_via_received5368); if (HASEXCEPTION()) { goto rulevia_receivedEx; } if (HASFAILED()) { return ; } FOLLOWPUSH(FOLLOW_via_address_in_via_received5370); via_address88=via_address(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulevia_receivedEx; } if (HASFAILED()) { return ; } if ( BACKTRACKING==0 ) { belle_sip_header_via_set_received(object,(const char*)via_address88 ); } } } // This is where rules clean up and exit // goto rulevia_receivedEx; /* Prevent compiler warnings */ rulevia_receivedEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end via_received */ /** * $ANTLR start via_address * ../grammars/belle_sip_message.g:1419:1: via_address returns [const char* ret=NULL] : ( ipv4address | ipv6address | ipv6reference ); */ static const char* via_address(pbelle_sip_messageParser ctx) { const char* ret; belle_sip_messageParser_ipv4address_return ipv4address89; #undef RETURN_TYPE_ipv4address89 #define RETURN_TYPE_ipv4address89 belle_sip_messageParser_ipv4address_return belle_sip_messageParser_ipv6address_return ipv6address90; #undef RETURN_TYPE_ipv6address90 #define RETURN_TYPE_ipv6address90 belle_sip_messageParser_ipv6address_return const char* ipv6reference91; #undef RETURN_TYPE_ipv6reference91 #define RETURN_TYPE_ipv6reference91 const char* /* Initialize rule variables */ ret = NULL; { { // ../grammars/belle_sip_message.g:1420:3: ( ipv4address | ipv6address | ipv6reference ) ANTLR3_UINT32 alt130; alt130=3; switch ( LA(1) ) { case DIGIT: { switch ( LA(2) ) { case DIGIT: { switch ( LA(3) ) { case DIGIT: { switch ( LA(4) ) { case DOT: { alt130=1; } break; case EOF: case COLON: case COMMA: case CRLF: case DIGIT: case HEX_CHAR: case SEMI: case SP: { alt130=2; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 130; EXCEPTION->state = 6; goto rulevia_addressEx; } } break; case DOT: { alt130=1; } break; case EOF: case COLON: case COMMA: case CRLF: case HEX_CHAR: case SEMI: case SP: { alt130=2; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 130; EXCEPTION->state = 4; goto rulevia_addressEx; } } break; case DOT: { alt130=1; } break; case EOF: case COLON: case COMMA: case CRLF: case HEX_CHAR: case SEMI: case SP: { alt130=2; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 130; EXCEPTION->state = 1; goto rulevia_addressEx; } } break; case COLON: case HEX_CHAR: { alt130=2; } break; case LSBRAQUET: { alt130=3; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 130; EXCEPTION->state = 0; goto rulevia_addressEx; } switch (alt130) { case 1: // ../grammars/belle_sip_message.g:1420:7: ipv4address { FOLLOWPUSH(FOLLOW_ipv4address_in_via_address5388); ipv4address89=ipv4address(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulevia_addressEx; } if (HASFAILED()) { return ret; } if ( BACKTRACKING==0 ) { ret=(const char*) (STRSTREAM->toStringTT(STRSTREAM, ipv4address89.start, ipv4address89.stop)) ->chars; } } break; case 2: // ../grammars/belle_sip_message.g:1421:9: ipv6address { FOLLOWPUSH(FOLLOW_ipv6address_in_via_address5400); ipv6address90=ipv6address(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulevia_addressEx; } if (HASFAILED()) { return ret; } if ( BACKTRACKING==0 ) { ret=(const char *) (STRSTREAM->toStringTT(STRSTREAM, ipv6address90.start, ipv6address90.stop)) ->chars; } } break; case 3: // ../grammars/belle_sip_message.g:1422:9: ipv6reference { FOLLOWPUSH(FOLLOW_ipv6reference_in_via_address5412); ipv6reference91=ipv6reference(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulevia_addressEx; } if (HASFAILED()) { return ret; } if ( BACKTRACKING==0 ) { ret=(const char*) ipv6reference91 ; } } break; } } } // This is where rules clean up and exit // goto rulevia_addressEx; /* Prevent compiler warnings */ rulevia_addressEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ret; } /* $ANTLR end via_address */ /** * $ANTLR start sent_protocol * ../grammars/belle_sip_message.g:1428:1: sent_protocol : ( protocol_name slash protocol_version ) slash transport ; */ static belle_sip_messageParser_sent_protocol_return sent_protocol(pbelle_sip_messageParser ctx) { belle_sip_messageParser_sent_protocol_return retval; belle_sip_messageParser_transport_return transport92; #undef RETURN_TYPE_transport92 #define RETURN_TYPE_transport92 belle_sip_messageParser_transport_return /* Initialize rule variables */ retval.start = LT(1); retval.stop = retval.start; { // ../grammars/belle_sip_message.g:1429:3: ( ( protocol_name slash protocol_version ) slash transport ) // ../grammars/belle_sip_message.g:1429:7: ( protocol_name slash protocol_version ) slash transport { // ../grammars/belle_sip_message.g:1429:7: ( protocol_name slash protocol_version ) // ../grammars/belle_sip_message.g:1429:8: protocol_name slash protocol_version { FOLLOWPUSH(FOLLOW_protocol_name_in_sent_protocol5429); protocol_name(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesent_protocolEx; } if (HASFAILED()) { return retval; } FOLLOWPUSH(FOLLOW_slash_in_sent_protocol5431); slash(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesent_protocolEx; } if (HASFAILED()) { return retval; } FOLLOWPUSH(FOLLOW_protocol_version_in_sent_protocol5433); protocol_version(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesent_protocolEx; } if (HASFAILED()) { return retval; } } if ( BACKTRACKING==0 ) { belle_sip_header_via_set_protocol((SCOPE_TOP(header_via))->current,(const char*) STRSTREAM->toStringTT(STRSTREAM, retval.start, LT(-1)) ->chars); } FOLLOWPUSH(FOLLOW_slash_in_sent_protocol5459); slash(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesent_protocolEx; } if (HASFAILED()) { return retval; } FOLLOWPUSH(FOLLOW_transport_in_sent_protocol5461); transport92=transport(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesent_protocolEx; } if (HASFAILED()) { return retval; } if ( BACKTRACKING==0 ) { belle_sip_header_via_set_transport((SCOPE_TOP(header_via))->current,(const char*) (STRSTREAM->toStringTT(STRSTREAM, transport92.start, transport92.stop)) ->chars); } } } // This is where rules clean up and exit // goto rulesent_protocolEx; /* Prevent compiler warnings */ rulesent_protocolEx: ; retval.stop = LT(-1); if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end sent_protocol */ /** * $ANTLR start protocol_name * ../grammars/belle_sip_message.g:1431:1: protocol_name : token ; */ static void protocol_name(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:1432:3: ( token ) // ../grammars/belle_sip_message.g:1432:19: token { FOLLOWPUSH(FOLLOW_token_in_protocol_name5477); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleprotocol_nameEx; } if (HASFAILED()) { return ; } } } // This is where rules clean up and exit // goto ruleprotocol_nameEx; /* Prevent compiler warnings */ ruleprotocol_nameEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end protocol_name */ /** * $ANTLR start protocol_version * ../grammars/belle_sip_message.g:1433:1: protocol_version : token ; */ static void protocol_version(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:1434:3: ( token ) // ../grammars/belle_sip_message.g:1434:7: token { FOLLOWPUSH(FOLLOW_token_in_protocol_version5488); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleprotocol_versionEx; } if (HASFAILED()) { return ; } } } // This is where rules clean up and exit // goto ruleprotocol_versionEx; /* Prevent compiler warnings */ ruleprotocol_versionEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end protocol_version */ /** * $ANTLR start transport * ../grammars/belle_sip_message.g:1435:1: transport : other_transport ; */ static belle_sip_messageParser_transport_return transport(pbelle_sip_messageParser ctx) { belle_sip_messageParser_transport_return retval; /* Initialize rule variables */ retval.start = LT(1); retval.stop = retval.start; { // ../grammars/belle_sip_message.g:1436:3: ( other_transport ) // ../grammars/belle_sip_message.g:1437:27: other_transport { FOLLOWPUSH(FOLLOW_other_transport_in_transport5500); other_transport(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruletransportEx; } if (HASFAILED()) { return retval; } } } // This is where rules clean up and exit // goto ruletransportEx; /* Prevent compiler warnings */ ruletransportEx: ; retval.stop = LT(-1); if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end transport */ /** * $ANTLR start other_transport * ../grammars/belle_sip_message.g:1438:1: other_transport : token ; */ static void other_transport(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:1439:3: ( token ) // ../grammars/belle_sip_message.g:1439:5: token { FOLLOWPUSH(FOLLOW_token_in_other_transport5509); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleother_transportEx; } if (HASFAILED()) { return ; } } } // This is where rules clean up and exit // goto ruleother_transportEx; /* Prevent compiler warnings */ ruleother_transportEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end other_transport */ /** * $ANTLR start sent_by * ../grammars/belle_sip_message.g:1441:1: sent_by : host ( COLON port )? ; */ static void sent_by(pbelle_sip_messageParser ctx) { const char* host93; #undef RETURN_TYPE_host93 #define RETURN_TYPE_host93 const char* belle_sip_messageParser_port_return port94; #undef RETURN_TYPE_port94 #define RETURN_TYPE_port94 belle_sip_messageParser_port_return /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:1442:3: ( host ( COLON port )? ) // ../grammars/belle_sip_message.g:1442:7: host ( COLON port )? { FOLLOWPUSH(FOLLOW_host_in_sent_by5521); host93=host(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesent_byEx; } if (HASFAILED()) { return ; } if ( BACKTRACKING==0 ) { belle_sip_header_via_set_host((SCOPE_TOP(header_via))->current, host93 ); } // ../grammars/belle_sip_message.g:1443:6: ( COLON port )? { int alt131=2; switch ( LA(1) ) { case COLON: { alt131=1; } break; } switch (alt131) { case 1: // ../grammars/belle_sip_message.g:1443:8: COLON port { MATCHT(COLON, &FOLLOW_COLON_in_sent_by5532); if (HASEXCEPTION()) { goto rulesent_byEx; } if (HASFAILED()) { return ; } FOLLOWPUSH(FOLLOW_port_in_sent_by5534); port94=port(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesent_byEx; } if (HASFAILED()) { return ; } if ( BACKTRACKING==0 ) { belle_sip_header_via_set_port((SCOPE_TOP(header_via))->current, port94.ret ); } } break; } } } } // This is where rules clean up and exit // goto rulesent_byEx; /* Prevent compiler warnings */ rulesent_byEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end sent_by */ /** * $ANTLR start header_www_authenticate * ../grammars/belle_sip_message.g:1462:1: header_www_authenticate returns [belle_sip_header_www_authenticate_t* ret] :{...}? token hcolon ( challenge[$header_www_authenticate::current] ( comma challenge[$header_www_authenticate::current] )* ) ; */ static belle_sip_header_www_authenticate_t* header_www_authenticate(pbelle_sip_messageParser ctx) { belle_sip_header_www_authenticate_t* ret; /* Initialize rule variables */ ctx->pbelle_sip_messageParser_header_www_authenticateTop = pbelle_sip_messageParser_header_www_authenticatePush(ctx); (SCOPE_TOP(header_www_authenticate))->current= belle_sip_header_www_authenticate_new(); ret= (SCOPE_TOP(header_www_authenticate))->current; { // ../grammars/belle_sip_message.g:1465:3: ({...}? token hcolon ( challenge[$header_www_authenticate::current] ( comma challenge[$header_www_authenticate::current] )* ) ) // ../grammars/belle_sip_message.g:1465:7: {...}? token hcolon ( challenge[$header_www_authenticate::current] ( comma challenge[$header_www_authenticate::current] )* ) { if ( !((IS_TOKEN(WWW-Authenticate))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_header_www_authenticatePop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(WWW-Authenticate)"; EXCEPTION->ruleName = (void *)"header_www_authenticate"; } FOLLOWPUSH(FOLLOW_token_in_header_www_authenticate5570); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_www_authenticateEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_www_authenticatePop(ctx); return ret; } FOLLOWPUSH(FOLLOW_hcolon_in_header_www_authenticate5574); hcolon(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_www_authenticateEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_www_authenticatePop(ctx); return ret; } // ../grammars/belle_sip_message.g:1465:73: ( challenge[$header_www_authenticate::current] ( comma challenge[$header_www_authenticate::current] )* ) // ../grammars/belle_sip_message.g:1465:74: challenge[$header_www_authenticate::current] ( comma challenge[$header_www_authenticate::current] )* { FOLLOWPUSH(FOLLOW_challenge_in_header_www_authenticate5577); challenge(ctx, (SCOPE_TOP(header_www_authenticate))->current); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_www_authenticateEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_www_authenticatePop(ctx); return ret; } // ../grammars/belle_sip_message.g:1466:8: ( comma challenge[$header_www_authenticate::current] )* for (;;) { int alt132=2; switch ( LA(1) ) { case COMMA: case CRLF: case SP: { alt132=1; } break; } switch (alt132) { case 1: // ../grammars/belle_sip_message.g:1466:9: comma challenge[$header_www_authenticate::current] { FOLLOWPUSH(FOLLOW_comma_in_header_www_authenticate5589); comma(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_www_authenticateEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_www_authenticatePop(ctx); return ret; } if ( BACKTRACKING==0 ) { belle_sip_header_t* header = BELLE_SIP_HEADER((SCOPE_TOP(header_www_authenticate))->current); belle_sip_header_set_next(header,(belle_sip_header_t*)((SCOPE_TOP(header_www_authenticate))->current= belle_sip_header_www_authenticate_new())); } FOLLOWPUSH(FOLLOW_challenge_in_header_www_authenticate5595); challenge(ctx, (SCOPE_TOP(header_www_authenticate))->current); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_www_authenticateEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_www_authenticatePop(ctx); return ret; } } break; default: goto loop132; /* break out of the loop */ break; } } loop132: ; /* Jump out to here if this rule does not match */ } } } // This is where rules clean up and exit // goto ruleheader_www_authenticateEx; /* Prevent compiler warnings */ ruleheader_www_authenticateEx: ; if (HASEXCEPTION()) { /* catch(decl,action) */ { belle_sip_message("[%s] reason [%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref(ret ); ret=NULL; } } else { } pbelle_sip_messageParser_header_www_authenticatePop(ctx); return ret; } /* $ANTLR end header_www_authenticate */ /** * $ANTLR start state_value * ../grammars/belle_sip_message.g:1476:1: state_value : token ; */ static belle_sip_messageParser_state_value_return state_value(pbelle_sip_messageParser ctx) { belle_sip_messageParser_state_value_return retval; /* Initialize rule variables */ retval.start = LT(1); retval.stop = retval.start; { // ../grammars/belle_sip_message.g:1476:12: ( token ) // ../grammars/belle_sip_message.g:1476:14: token { FOLLOWPUSH(FOLLOW_token_in_state_value5613); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulestate_valueEx; } if (HASFAILED()) { return retval; } } } // This is where rules clean up and exit // goto rulestate_valueEx; /* Prevent compiler warnings */ rulestate_valueEx: ; retval.stop = LT(-1); if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end state_value */ /** * $ANTLR start header_subscription_state * ../grammars/belle_sip_message.g:1478:1: header_subscription_state returns [belle_sip_header_subscription_state_t* ret] :{...}? token hcolon state_value ( semi generic_param[BELLE_SIP_PARAMETERS($header_subscription_state::current)] )* ; */ static belle_sip_header_subscription_state_t* header_subscription_state(pbelle_sip_messageParser ctx) { belle_sip_header_subscription_state_t* ret; belle_sip_messageParser_state_value_return state_value95; #undef RETURN_TYPE_state_value95 #define RETURN_TYPE_state_value95 belle_sip_messageParser_state_value_return /* Initialize rule variables */ ctx->pbelle_sip_messageParser_header_subscription_stateTop = pbelle_sip_messageParser_header_subscription_statePush(ctx); (SCOPE_TOP(header_subscription_state))->current= belle_sip_header_subscription_state_new(); ret= (SCOPE_TOP(header_subscription_state))->current; { // ../grammars/belle_sip_message.g:1481:2: ({...}? token hcolon state_value ( semi generic_param[BELLE_SIP_PARAMETERS($header_subscription_state::current)] )* ) // ../grammars/belle_sip_message.g:1481:4: {...}? token hcolon state_value ( semi generic_param[BELLE_SIP_PARAMETERS($header_subscription_state::current)] )* { if ( !((IS_TOKEN(Subscription-State))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_header_subscription_statePop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(Subscription-State)"; EXCEPTION->ruleName = (void *)"header_subscription_state"; } FOLLOWPUSH(FOLLOW_token_in_header_subscription_state5639); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_subscription_stateEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_subscription_statePop(ctx); return ret; } FOLLOWPUSH(FOLLOW_hcolon_in_header_subscription_state5644); hcolon(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_subscription_stateEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_subscription_statePop(ctx); return ret; } FOLLOWPUSH(FOLLOW_state_value_in_header_subscription_state5646); state_value95=state_value(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_subscription_stateEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_subscription_statePop(ctx); return ret; } if ( BACKTRACKING==0 ) { belle_sip_header_subscription_state_set_state((SCOPE_TOP(header_subscription_state))->current,(const char*) (STRSTREAM->toStringTT(STRSTREAM, state_value95.start, state_value95.stop)) ->chars); } // ../grammars/belle_sip_message.g:1483:2: ( semi generic_param[BELLE_SIP_PARAMETERS($header_subscription_state::current)] )* for (;;) { int alt133=2; switch ( LA(1) ) { case CRLF: case SEMI: case SP: { alt133=1; } break; } switch (alt133) { case 1: // ../grammars/belle_sip_message.g:1483:3: semi generic_param[BELLE_SIP_PARAMETERS($header_subscription_state::current)] { FOLLOWPUSH(FOLLOW_semi_in_header_subscription_state5652); semi(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_subscription_stateEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_subscription_statePop(ctx); return ret; } FOLLOWPUSH(FOLLOW_generic_param_in_header_subscription_state5655); generic_param(ctx, BELLE_SIP_PARAMETERS((SCOPE_TOP(header_subscription_state))->current)); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_subscription_stateEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_subscription_statePop(ctx); return ret; } } break; default: goto loop133; /* break out of the loop */ break; } } loop133: ; /* Jump out to here if this rule does not match */ } } // This is where rules clean up and exit // goto ruleheader_subscription_stateEx; /* Prevent compiler warnings */ ruleheader_subscription_stateEx: ; if (HASEXCEPTION()) { /* catch(decl,action) */ { belle_sip_message("[%s] reason [%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref((SCOPE_TOP(header_subscription_state))->current); ret=NULL; } } else { } pbelle_sip_messageParser_header_subscription_statePop(ctx); return ret; } /* $ANTLR end header_subscription_state */ /** * $ANTLR start header_event * ../grammars/belle_sip_message.g:1491:1: header_event returns [belle_sip_header_event_t* ret] :{...}? token hcolon event_package ( semi generic_param[BELLE_SIP_PARAMETERS($header_event::current)] )* ; */ static belle_sip_header_event_t* header_event(pbelle_sip_messageParser ctx) { belle_sip_header_event_t* ret; belle_sip_messageParser_event_package_return event_package96; #undef RETURN_TYPE_event_package96 #define RETURN_TYPE_event_package96 belle_sip_messageParser_event_package_return /* Initialize rule variables */ ctx->pbelle_sip_messageParser_header_eventTop = pbelle_sip_messageParser_header_eventPush(ctx); (SCOPE_TOP(header_event))->current= belle_sip_header_event_new(); ret= (SCOPE_TOP(header_event))->current; { // ../grammars/belle_sip_message.g:1494:2: ({...}? token hcolon event_package ( semi generic_param[BELLE_SIP_PARAMETERS($header_event::current)] )* ) // ../grammars/belle_sip_message.g:1494:4: {...}? token hcolon event_package ( semi generic_param[BELLE_SIP_PARAMETERS($header_event::current)] )* { if ( !((IS_HEADER_NAMED(Event,o))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_header_eventPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_HEADER_NAMED(Event,o)"; EXCEPTION->ruleName = (void *)"header_event"; } FOLLOWPUSH(FOLLOW_token_in_header_event5691); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_eventEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_eventPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_hcolon_in_header_event5696); hcolon(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_eventEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_eventPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_event_package_in_header_event5698); event_package96=event_package(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_eventEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_eventPop(ctx); return ret; } if ( BACKTRACKING==0 ) { belle_sip_header_event_set_package_name((SCOPE_TOP(header_event))->current,(const char*) (STRSTREAM->toStringTT(STRSTREAM, event_package96.start, event_package96.stop)) ->chars); } // ../grammars/belle_sip_message.g:1496:2: ( semi generic_param[BELLE_SIP_PARAMETERS($header_event::current)] )* for (;;) { int alt134=2; switch ( LA(1) ) { case CRLF: case SEMI: case SP: { alt134=1; } break; } switch (alt134) { case 1: // ../grammars/belle_sip_message.g:1496:3: semi generic_param[BELLE_SIP_PARAMETERS($header_event::current)] { FOLLOWPUSH(FOLLOW_semi_in_header_event5704); semi(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_eventEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_eventPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_generic_param_in_header_event5707); generic_param(ctx, BELLE_SIP_PARAMETERS((SCOPE_TOP(header_event))->current)); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_eventEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_eventPop(ctx); return ret; } } break; default: goto loop134; /* break out of the loop */ break; } } loop134: ; /* Jump out to here if this rule does not match */ } } // This is where rules clean up and exit // goto ruleheader_eventEx; /* Prevent compiler warnings */ ruleheader_eventEx: ; if (HASEXCEPTION()) { /* catch(decl,action) */ { belle_sip_message("[%s] reason [%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref((SCOPE_TOP(header_event))->current); ret=NULL; } } else { } pbelle_sip_messageParser_header_eventPop(ctx); return ret; } /* $ANTLR end header_event */ /** * $ANTLR start event_package * ../grammars/belle_sip_message.g:1503:1: event_package : token ; */ static belle_sip_messageParser_event_package_return event_package(pbelle_sip_messageParser ctx) { belle_sip_messageParser_event_package_return retval; /* Initialize rule variables */ retval.start = LT(1); retval.stop = retval.start; { // ../grammars/belle_sip_message.g:1504:2: ( token ) // ../grammars/belle_sip_message.g:1504:5: token { FOLLOWPUSH(FOLLOW_token_in_event_package5727); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleevent_packageEx; } if (HASFAILED()) { return retval; } } } // This is where rules clean up and exit // goto ruleevent_packageEx; /* Prevent compiler warnings */ ruleevent_packageEx: ; retval.stop = LT(-1); if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end event_package */ /** * $ANTLR start header_replaces * ../grammars/belle_sip_message.g:1517:1: header_replaces returns [belle_sip_header_replaces_t* ret] :{...}? token hcolon call_id ( semi generic_param[BELLE_SIP_PARAMETERS($header_replaces::current)] )* ; */ static belle_sip_header_replaces_t* header_replaces(pbelle_sip_messageParser ctx) { belle_sip_header_replaces_t* ret; belle_sip_messageParser_call_id_return call_id97; #undef RETURN_TYPE_call_id97 #define RETURN_TYPE_call_id97 belle_sip_messageParser_call_id_return /* Initialize rule variables */ ctx->pbelle_sip_messageParser_header_replacesTop = pbelle_sip_messageParser_header_replacesPush(ctx); (SCOPE_TOP(header_replaces))->current= belle_sip_header_replaces_new(); ret= (SCOPE_TOP(header_replaces))->current; { // ../grammars/belle_sip_message.g:1520:2: ({...}? token hcolon call_id ( semi generic_param[BELLE_SIP_PARAMETERS($header_replaces::current)] )* ) // ../grammars/belle_sip_message.g:1520:4: {...}? token hcolon call_id ( semi generic_param[BELLE_SIP_PARAMETERS($header_replaces::current)] )* { if ( !((IS_TOKEN(Replaces))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_header_replacesPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(Replaces)"; EXCEPTION->ruleName = (void *)"header_replaces"; } FOLLOWPUSH(FOLLOW_token_in_header_replaces5754); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_replacesEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_replacesPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_hcolon_in_header_replaces5759); hcolon(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_replacesEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_replacesPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_call_id_in_header_replaces5761); call_id97=call_id(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_replacesEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_replacesPop(ctx); return ret; } if ( BACKTRACKING==0 ) { belle_sip_header_replaces_set_call_id((SCOPE_TOP(header_replaces))->current,(const char*) (STRSTREAM->toStringTT(STRSTREAM, call_id97.start, call_id97.stop)) ->chars); } // ../grammars/belle_sip_message.g:1522:3: ( semi generic_param[BELLE_SIP_PARAMETERS($header_replaces::current)] )* for (;;) { int alt135=2; switch ( LA(1) ) { case CRLF: case SEMI: case SP: { alt135=1; } break; } switch (alt135) { case 1: // ../grammars/belle_sip_message.g:1522:4: semi generic_param[BELLE_SIP_PARAMETERS($header_replaces::current)] { FOLLOWPUSH(FOLLOW_semi_in_header_replaces5768); semi(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_replacesEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_replacesPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_generic_param_in_header_replaces5771); generic_param(ctx, BELLE_SIP_PARAMETERS((SCOPE_TOP(header_replaces))->current)); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_replacesEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_replacesPop(ctx); return ret; } } break; default: goto loop135; /* break out of the loop */ break; } } loop135: ; /* Jump out to here if this rule does not match */ } } // This is where rules clean up and exit // goto ruleheader_replacesEx; /* Prevent compiler warnings */ ruleheader_replacesEx: ; if (HASEXCEPTION()) { /* catch(decl,action) */ { belle_sip_message("[%s] reason [%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref((SCOPE_TOP(header_replaces))->current); ret=NULL; } } else { } pbelle_sip_messageParser_header_replacesPop(ctx); return ret; } /* $ANTLR end header_replaces */ /** * $ANTLR start header_p_preferred_identity * ../grammars/belle_sip_message.g:1533:1: header_p_preferred_identity returns [belle_sip_header_p_preferred_identity_t* ret] :{...}? token sp_tab_colon header_address_base[(belle_sip_header_address_t*)belle_sip_header_p_preferred_identity_new()] ; */ static belle_sip_header_p_preferred_identity_t* header_p_preferred_identity(pbelle_sip_messageParser ctx) { belle_sip_header_p_preferred_identity_t* ret; belle_sip_header_address_t* header_address_base98; #undef RETURN_TYPE_header_address_base98 #define RETURN_TYPE_header_address_base98 belle_sip_header_address_t* /* Initialize rule variables */ ret=NULL; { // ../grammars/belle_sip_message.g:1535:3: ({...}? token sp_tab_colon header_address_base[(belle_sip_header_address_t*)belle_sip_header_p_preferred_identity_new()] ) // ../grammars/belle_sip_message.g:1535:6: {...}? token sp_tab_colon header_address_base[(belle_sip_header_address_t*)belle_sip_header_p_preferred_identity_new()] { if ( !((IS_TOKEN(P-Preferred-Identity))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(P-Preferred-Identity)"; EXCEPTION->ruleName = (void *)"header_p_preferred_identity"; } FOLLOWPUSH(FOLLOW_token_in_header_p_preferred_identity5807); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_p_preferred_identityEx; } if (HASFAILED()) { return ret; } FOLLOWPUSH(FOLLOW_sp_tab_colon_in_header_p_preferred_identity5812); sp_tab_colon(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_p_preferred_identityEx; } if (HASFAILED()) { return ret; } FOLLOWPUSH(FOLLOW_header_address_base_in_header_p_preferred_identity5814); header_address_base98=header_address_base(ctx, (belle_sip_header_address_t*)belle_sip_header_p_preferred_identity_new()); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_p_preferred_identityEx; } if (HASFAILED()) { return ret; } if ( BACKTRACKING==0 ) { ret=(belle_sip_header_p_preferred_identity_t*) header_address_base98 ; } } } // This is where rules clean up and exit // goto ruleheader_p_preferred_identityEx; /* Prevent compiler warnings */ ruleheader_p_preferred_identityEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ret; } /* $ANTLR end header_p_preferred_identity */ /** * $ANTLR start header_privacy * ../grammars/belle_sip_message.g:1538:1: header_privacy returns [belle_sip_header_privacy_t* ret] :{...}? token hcolon privacy_val ( semi privacy_val )* ; */ static belle_sip_header_privacy_t* header_privacy(pbelle_sip_messageParser ctx) { belle_sip_header_privacy_t* ret; /* Initialize rule variables */ ctx->pbelle_sip_messageParser_header_privacyTop = pbelle_sip_messageParser_header_privacyPush(ctx); (SCOPE_TOP(header_privacy))->current= belle_sip_header_privacy_new(); ret= (SCOPE_TOP(header_privacy))->current; { // ../grammars/belle_sip_message.g:1541:3: ({...}? token hcolon privacy_val ( semi privacy_val )* ) // ../grammars/belle_sip_message.g:1541:7: {...}? token hcolon privacy_val ( semi privacy_val )* { if ( !((IS_TOKEN(Privacy))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_header_privacyPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(Privacy)"; EXCEPTION->ruleName = (void *)"header_privacy"; } FOLLOWPUSH(FOLLOW_token_in_header_privacy5845); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_privacyEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_privacyPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_hcolon_in_header_privacy5849); hcolon(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_privacyEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_privacyPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_privacy_val_in_header_privacy5851); privacy_val(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_privacyEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_privacyPop(ctx); return ret; } // ../grammars/belle_sip_message.g:1541:67: ( semi privacy_val )* for (;;) { int alt136=2; switch ( LA(1) ) { case CRLF: case SEMI: case SP: { alt136=1; } break; } switch (alt136) { case 1: // ../grammars/belle_sip_message.g:1541:68: semi privacy_val { FOLLOWPUSH(FOLLOW_semi_in_header_privacy5854); semi(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_privacyEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_privacyPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_privacy_val_in_header_privacy5856); privacy_val(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_privacyEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_privacyPop(ctx); return ret; } } break; default: goto loop136; /* break out of the loop */ break; } } loop136: ; /* Jump out to here if this rule does not match */ } } // This is where rules clean up and exit // goto ruleheader_privacyEx; /* Prevent compiler warnings */ ruleheader_privacyEx: ; if (HASEXCEPTION()) { /* catch(decl,action) */ { belle_sip_message("[%s] reason [%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref(ret ); ret=NULL; } } else { } pbelle_sip_messageParser_header_privacyPop(ctx); return ret; } /* $ANTLR end header_privacy */ /** * $ANTLR start privacy_val * ../grammars/belle_sip_message.g:1548:1: privacy_val : token ; */ static void privacy_val(pbelle_sip_messageParser ctx) { belle_sip_messageParser_token_return token99; #undef RETURN_TYPE_token99 #define RETURN_TYPE_token99 belle_sip_messageParser_token_return /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:1548:12: ( token ) // ../grammars/belle_sip_message.g:1548:14: token { FOLLOWPUSH(FOLLOW_token_in_privacy_val5870); token99=token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleprivacy_valEx; } if (HASFAILED()) { return ; } if ( BACKTRACKING==0 ) { belle_sip_header_privacy_add_privacy((SCOPE_TOP(header_privacy))->current,(const char*) (STRSTREAM->toStringTT(STRSTREAM, token99.start, token99.stop)) ->chars); } } } // This is where rules clean up and exit // goto ruleprivacy_valEx; /* Prevent compiler warnings */ ruleprivacy_valEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end privacy_val */ /** * $ANTLR start header_supported * ../grammars/belle_sip_message.g:1551:1: header_supported returns [belle_sip_header_supported_t* ret] :{...}? token hcolon supported_val ( comma supported_val )* ; */ static belle_sip_header_supported_t* header_supported(pbelle_sip_messageParser ctx) { belle_sip_header_supported_t* ret; /* Initialize rule variables */ ctx->pbelle_sip_messageParser_header_supportedTop = pbelle_sip_messageParser_header_supportedPush(ctx); (SCOPE_TOP(header_supported))->current= belle_sip_header_supported_new(); ret= (SCOPE_TOP(header_supported))->current; { // ../grammars/belle_sip_message.g:1554:5: ({...}? token hcolon supported_val ( comma supported_val )* ) // ../grammars/belle_sip_message.g:1554:5: {...}? token hcolon supported_val ( comma supported_val )* { if ( !((IS_TOKEN(Supported))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_header_supportedPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(Supported)"; EXCEPTION->ruleName = (void *)"header_supported"; } FOLLOWPUSH(FOLLOW_token_in_header_supported5899); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_supportedEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_supportedPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_hcolon_in_header_supported5903); hcolon(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_supportedEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_supportedPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_supported_val_in_header_supported5905); supported_val(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_supportedEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_supportedPop(ctx); return ret; } // ../grammars/belle_sip_message.g:1554:71: ( comma supported_val )* for (;;) { int alt137=2; switch ( LA(1) ) { case COMMA: case CRLF: case SP: { alt137=1; } break; } switch (alt137) { case 1: // ../grammars/belle_sip_message.g:1554:72: comma supported_val { FOLLOWPUSH(FOLLOW_comma_in_header_supported5908); comma(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_supportedEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_supportedPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_supported_val_in_header_supported5910); supported_val(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_supportedEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_supportedPop(ctx); return ret; } } break; default: goto loop137; /* break out of the loop */ break; } } loop137: ; /* Jump out to here if this rule does not match */ } } // This is where rules clean up and exit // goto ruleheader_supportedEx; /* Prevent compiler warnings */ ruleheader_supportedEx: ; if (HASEXCEPTION()) { /* catch(decl,action) */ { belle_sip_message("[%s] reason [%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref(ret ); ret=NULL; } } else { } pbelle_sip_messageParser_header_supportedPop(ctx); return ret; } /* $ANTLR end header_supported */ /** * $ANTLR start supported_val * ../grammars/belle_sip_message.g:1561:1: supported_val : token ; */ static void supported_val(pbelle_sip_messageParser ctx) { belle_sip_messageParser_token_return token100; #undef RETURN_TYPE_token100 #define RETURN_TYPE_token100 belle_sip_messageParser_token_return /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:1561:14: ( token ) // ../grammars/belle_sip_message.g:1561:16: token { FOLLOWPUSH(FOLLOW_token_in_supported_val5924); token100=token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesupported_valEx; } if (HASFAILED()) { return ; } if ( BACKTRACKING==0 ) { belle_sip_header_supported_add_supported((SCOPE_TOP(header_supported))->current,(const char*) (STRSTREAM->toStringTT(STRSTREAM, token100.start, token100.stop)) ->chars); } } } // This is where rules clean up and exit // goto rulesupported_valEx; /* Prevent compiler warnings */ rulesupported_valEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end supported_val */ /** * $ANTLR start header_session_expires * ../grammars/belle_sip_message.g:1565:1: header_session_expires returns [belle_sip_header_session_expires_t* ret] :{...}? token hcolon delta_seconds ( semi generic_param[BELLE_SIP_PARAMETERS($header_session_expires::current)] )* ; */ static belle_sip_header_session_expires_t* header_session_expires(pbelle_sip_messageParser ctx) { belle_sip_header_session_expires_t* ret; belle_sip_messageParser_delta_seconds_return delta_seconds101; #undef RETURN_TYPE_delta_seconds101 #define RETURN_TYPE_delta_seconds101 belle_sip_messageParser_delta_seconds_return /* Initialize rule variables */ ctx->pbelle_sip_messageParser_header_session_expiresTop = pbelle_sip_messageParser_header_session_expiresPush(ctx); (SCOPE_TOP(header_session_expires))->current= belle_sip_header_session_expires_new(); ret= (SCOPE_TOP(header_session_expires))->current; { // ../grammars/belle_sip_message.g:1571:3: ({...}? token hcolon delta_seconds ( semi generic_param[BELLE_SIP_PARAMETERS($header_session_expires::current)] )* ) // ../grammars/belle_sip_message.g:1571:5: {...}? token hcolon delta_seconds ( semi generic_param[BELLE_SIP_PARAMETERS($header_session_expires::current)] )* { if ( !((IS_TOKEN(Session-Expires))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_header_session_expiresPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(Session-Expires)"; EXCEPTION->ruleName = (void *)"header_session_expires"; } FOLLOWPUSH(FOLLOW_token_in_header_session_expires5952); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_session_expiresEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_session_expiresPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_hcolon_in_header_session_expires5956); hcolon(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_session_expiresEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_session_expiresPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_delta_seconds_in_header_session_expires5958); delta_seconds101=delta_seconds(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_session_expiresEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_session_expiresPop(ctx); return ret; } if ( BACKTRACKING==0 ) { belle_sip_header_session_expires_set_delta((SCOPE_TOP(header_session_expires))->current, atoi((const char *) (STRSTREAM->toStringTT(STRSTREAM, delta_seconds101.start, delta_seconds101.stop)) ->chars)); } // ../grammars/belle_sip_message.g:1573:3: ( semi generic_param[BELLE_SIP_PARAMETERS($header_session_expires::current)] )* for (;;) { int alt138=2; switch ( LA(1) ) { case CRLF: case SEMI: case SP: { alt138=1; } break; } switch (alt138) { case 1: // ../grammars/belle_sip_message.g:1573:4: semi generic_param[BELLE_SIP_PARAMETERS($header_session_expires::current)] { FOLLOWPUSH(FOLLOW_semi_in_header_session_expires5963); semi(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_session_expiresEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_session_expiresPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_generic_param_in_header_session_expires5965); generic_param(ctx, BELLE_SIP_PARAMETERS((SCOPE_TOP(header_session_expires))->current)); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_session_expiresEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_session_expiresPop(ctx); return ret; } } break; default: goto loop138; /* break out of the loop */ break; } } loop138: ; /* Jump out to here if this rule does not match */ } } // This is where rules clean up and exit // goto ruleheader_session_expiresEx; /* Prevent compiler warnings */ ruleheader_session_expiresEx: ; if (HASEXCEPTION()) { /* catch(decl,action) */ { belle_sip_message("[%s] reason [%s]", (const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref((SCOPE_TOP(header_session_expires))->current); ret=NULL; } } else { } pbelle_sip_messageParser_header_session_expiresPop(ctx); return ret; } /* $ANTLR end header_session_expires */ /** * $ANTLR start header_require * ../grammars/belle_sip_message.g:1583:1: header_require returns [belle_sip_header_require_t* ret] :{...}? token hcolon require_val ( comma require_val )* ; */ static belle_sip_header_require_t* header_require(pbelle_sip_messageParser ctx) { belle_sip_header_require_t* ret; /* Initialize rule variables */ ctx->pbelle_sip_messageParser_header_requireTop = pbelle_sip_messageParser_header_requirePush(ctx); (SCOPE_TOP(header_require))->current= belle_sip_header_require_new(); ret= (SCOPE_TOP(header_require))->current; { // ../grammars/belle_sip_message.g:1586:5: ({...}? token hcolon require_val ( comma require_val )* ) // ../grammars/belle_sip_message.g:1586:5: {...}? token hcolon require_val ( comma require_val )* { if ( !((IS_TOKEN(Require))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_header_requirePop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(Require)"; EXCEPTION->ruleName = (void *)"header_require"; } FOLLOWPUSH(FOLLOW_token_in_header_require6003); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_requireEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_requirePop(ctx); return ret; } FOLLOWPUSH(FOLLOW_hcolon_in_header_require6007); hcolon(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_requireEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_requirePop(ctx); return ret; } FOLLOWPUSH(FOLLOW_require_val_in_header_require6009); require_val(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_requireEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_requirePop(ctx); return ret; } // ../grammars/belle_sip_message.g:1586:65: ( comma require_val )* for (;;) { int alt139=2; switch ( LA(1) ) { case COMMA: case CRLF: case SP: { alt139=1; } break; } switch (alt139) { case 1: // ../grammars/belle_sip_message.g:1586:66: comma require_val { FOLLOWPUSH(FOLLOW_comma_in_header_require6012); comma(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_requireEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_requirePop(ctx); return ret; } FOLLOWPUSH(FOLLOW_require_val_in_header_require6014); require_val(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_requireEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_requirePop(ctx); return ret; } } break; default: goto loop139; /* break out of the loop */ break; } } loop139: ; /* Jump out to here if this rule does not match */ } } // This is where rules clean up and exit // goto ruleheader_requireEx; /* Prevent compiler warnings */ ruleheader_requireEx: ; if (HASEXCEPTION()) { /* catch(decl,action) */ { belle_sip_message("[%s] reason [%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref(ret ); ret=NULL; } } else { } pbelle_sip_messageParser_header_requirePop(ctx); return ret; } /* $ANTLR end header_require */ /** * $ANTLR start require_val * ../grammars/belle_sip_message.g:1593:1: require_val : token ; */ static void require_val(pbelle_sip_messageParser ctx) { belle_sip_messageParser_token_return token102; #undef RETURN_TYPE_token102 #define RETURN_TYPE_token102 belle_sip_messageParser_token_return /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:1593:12: ( token ) // ../grammars/belle_sip_message.g:1593:14: token { FOLLOWPUSH(FOLLOW_token_in_require_val6028); token102=token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulerequire_valEx; } if (HASFAILED()) { return ; } if ( BACKTRACKING==0 ) { belle_sip_header_require_add_require((SCOPE_TOP(header_require))->current,(const char*) (STRSTREAM->toStringTT(STRSTREAM, token102.start, token102.stop)) ->chars); } } } // This is where rules clean up and exit // goto rulerequire_valEx; /* Prevent compiler warnings */ rulerequire_valEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end require_val */ /** * $ANTLR start content_disposition_value * ../grammars/belle_sip_message.g:1597:1: content_disposition_value : token ; */ static belle_sip_messageParser_content_disposition_value_return content_disposition_value(pbelle_sip_messageParser ctx) { belle_sip_messageParser_content_disposition_value_return retval; /* Initialize rule variables */ retval.start = LT(1); retval.stop = retval.start; { // ../grammars/belle_sip_message.g:1597:26: ( token ) // ../grammars/belle_sip_message.g:1597:28: token { FOLLOWPUSH(FOLLOW_token_in_content_disposition_value6039); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulecontent_disposition_valueEx; } if (HASFAILED()) { return retval; } } } // This is where rules clean up and exit // goto rulecontent_disposition_valueEx; /* Prevent compiler warnings */ rulecontent_disposition_valueEx: ; retval.stop = LT(-1); if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end content_disposition_value */ /** * $ANTLR start header_content_disposition * ../grammars/belle_sip_message.g:1599:1: header_content_disposition returns [belle_sip_header_content_disposition_t* ret] :{...}? token hcolon content_disposition_value ( semi generic_param[BELLE_SIP_PARAMETERS($header_content_disposition::current)] )* ; */ static belle_sip_header_content_disposition_t* header_content_disposition(pbelle_sip_messageParser ctx) { belle_sip_header_content_disposition_t* ret; belle_sip_messageParser_content_disposition_value_return content_disposition_value103; #undef RETURN_TYPE_content_disposition_value103 #define RETURN_TYPE_content_disposition_value103 belle_sip_messageParser_content_disposition_value_return /* Initialize rule variables */ ctx->pbelle_sip_messageParser_header_content_dispositionTop = pbelle_sip_messageParser_header_content_dispositionPush(ctx); (SCOPE_TOP(header_content_disposition))->current= belle_sip_header_content_disposition_new(); ret= (SCOPE_TOP(header_content_disposition))->current; { // ../grammars/belle_sip_message.g:1602:3: ({...}? token hcolon content_disposition_value ( semi generic_param[BELLE_SIP_PARAMETERS($header_content_disposition::current)] )* ) // ../grammars/belle_sip_message.g:1602:3: {...}? token hcolon content_disposition_value ( semi generic_param[BELLE_SIP_PARAMETERS($header_content_disposition::current)] )* { if ( !((IS_TOKEN(Content-Disposition))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_header_content_dispositionPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(Content-Disposition)"; EXCEPTION->ruleName = (void *)"header_content_disposition"; } FOLLOWPUSH(FOLLOW_token_in_header_content_disposition6064); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_content_dispositionEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_content_dispositionPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_hcolon_in_header_content_disposition6068); hcolon(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_content_dispositionEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_content_dispositionPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_content_disposition_value_in_header_content_disposition6070); content_disposition_value103=content_disposition_value(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_content_dispositionEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_content_dispositionPop(ctx); return ret; } if ( BACKTRACKING==0 ) { belle_sip_header_content_disposition_set_content_disposition((SCOPE_TOP(header_content_disposition))->current,(const char*) (STRSTREAM->toStringTT(STRSTREAM, content_disposition_value103.start, content_disposition_value103.stop)) ->chars); } // ../grammars/belle_sip_message.g:1604:2: ( semi generic_param[BELLE_SIP_PARAMETERS($header_content_disposition::current)] )* for (;;) { int alt140=2; switch ( LA(1) ) { case CRLF: case SEMI: case SP: { alt140=1; } break; } switch (alt140) { case 1: // ../grammars/belle_sip_message.g:1604:2: semi generic_param[BELLE_SIP_PARAMETERS($header_content_disposition::current)] { FOLLOWPUSH(FOLLOW_semi_in_header_content_disposition6075); semi(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_content_dispositionEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_content_dispositionPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_generic_param_in_header_content_disposition6078); generic_param(ctx, BELLE_SIP_PARAMETERS((SCOPE_TOP(header_content_disposition))->current)); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_content_dispositionEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_content_dispositionPop(ctx); return ret; } } break; default: goto loop140; /* break out of the loop */ break; } } loop140: ; /* Jump out to here if this rule does not match */ } } // This is where rules clean up and exit // goto ruleheader_content_dispositionEx; /* Prevent compiler warnings */ ruleheader_content_dispositionEx: ; if (HASEXCEPTION()) { /* catch(decl,action) */ { belle_sip_message("[%s] reason [%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref((SCOPE_TOP(header_content_disposition))->current); ret=NULL; } } else { } pbelle_sip_messageParser_header_content_dispositionPop(ctx); return ret; } /* $ANTLR end header_content_disposition */ /** * $ANTLR start accept_token * ../grammars/belle_sip_message.g:1614:1: accept_token :{...}? token ; */ static void accept_token(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:1614:14: ({...}? token ) // ../grammars/belle_sip_message.g:1614:17: {...}? token { if ( !((IS_TOKEN(Accept))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(Accept)"; EXCEPTION->ruleName = (void *)"accept_token"; } FOLLOWPUSH(FOLLOW_token_in_accept_token6102); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleaccept_tokenEx; } if (HASFAILED()) { return ; } } } // This is where rules clean up and exit // goto ruleaccept_tokenEx; /* Prevent compiler warnings */ ruleaccept_tokenEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end accept_token */ /** * $ANTLR start header_accept * ../grammars/belle_sip_message.g:1615:1: header_accept returns [belle_sip_header_accept_t* ret=NULL] : accept_token hcolon accept_param ( comma accept_param )* ; */ static belle_sip_header_accept_t* header_accept(pbelle_sip_messageParser ctx) { belle_sip_header_accept_t* ret; /* Initialize rule variables */ ret = NULL; ctx->pbelle_sip_messageParser_header_acceptTop = pbelle_sip_messageParser_header_acceptPush(ctx); (SCOPE_TOP(header_accept))->current= NULL;(SCOPE_TOP(header_accept))->first=NULL; ret= NULL; { // ../grammars/belle_sip_message.g:1618:4: ( accept_token hcolon accept_param ( comma accept_param )* ) // ../grammars/belle_sip_message.g:1618:4: accept_token hcolon accept_param ( comma accept_param )* { FOLLOWPUSH(FOLLOW_accept_token_in_header_accept6124); accept_token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_acceptEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_acceptPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_hcolon_in_header_accept6127); hcolon(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_acceptEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_acceptPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_accept_param_in_header_accept6129); accept_param(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_acceptEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_acceptPop(ctx); return ret; } // ../grammars/belle_sip_message.g:1618:53: ( comma accept_param )* for (;;) { int alt141=2; switch ( LA(1) ) { case COMMA: case CRLF: case SP: { alt141=1; } break; } switch (alt141) { case 1: // ../grammars/belle_sip_message.g:1618:54: comma accept_param { FOLLOWPUSH(FOLLOW_comma_in_header_accept6132); comma(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_acceptEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_acceptPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_accept_param_in_header_accept6134); accept_param(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_acceptEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_acceptPop(ctx); return ret; } } break; default: goto loop141; /* break out of the loop */ break; } } loop141: ; /* Jump out to here if this rule does not match */ if ( BACKTRACKING==0 ) { ret= (SCOPE_TOP(header_accept))->first; } } } // This is where rules clean up and exit // goto ruleheader_acceptEx; /* Prevent compiler warnings */ ruleheader_acceptEx: ; if (HASEXCEPTION()) { /* catch(decl,action) */ { belle_sip_message("[%s] reason [%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); ret= (SCOPE_TOP(header_accept))->first; if (ret ) belle_sip_object_unref(ret ); ret=NULL; } } else { } pbelle_sip_messageParser_header_acceptPop(ctx); return ret; } /* $ANTLR end header_accept */ /** * $ANTLR start accept_param * ../grammars/belle_sip_message.g:1627:1: accept_param : accept_main_media_type slash accept_sub_media_type ( semi generic_param[BELLE_SIP_PARAMETERS($header_accept::current)] )* ; */ static void accept_param(pbelle_sip_messageParser ctx) { belle_sip_messageParser_accept_main_media_type_return accept_main_media_type104; #undef RETURN_TYPE_accept_main_media_type104 #define RETURN_TYPE_accept_main_media_type104 belle_sip_messageParser_accept_main_media_type_return belle_sip_messageParser_accept_sub_media_type_return accept_sub_media_type105; #undef RETURN_TYPE_accept_sub_media_type105 #define RETURN_TYPE_accept_sub_media_type105 belle_sip_messageParser_accept_sub_media_type_return /* Initialize rule variables */ ctx->pbelle_sip_messageParser_accept_paramTop = pbelle_sip_messageParser_accept_paramPush(ctx); if ((SCOPE_TOP(header_accept))->current == NULL) { (SCOPE_TOP(header_accept))->first= (SCOPE_TOP(header_accept))->current = belle_sip_header_accept_new(); (SCOPE_TOP(accept_param))->prev=NULL; } else { belle_sip_header_t* header; (SCOPE_TOP(accept_param))->prev=(SCOPE_TOP(header_accept))->current; header = BELLE_SIP_HEADER((SCOPE_TOP(header_accept))->current); belle_sip_header_set_next(header,(belle_sip_header_t*)((SCOPE_TOP(header_accept))->current= belle_sip_header_accept_new())); } { // ../grammars/belle_sip_message.g:1639:4: ( accept_main_media_type slash accept_sub_media_type ( semi generic_param[BELLE_SIP_PARAMETERS($header_accept::current)] )* ) // ../grammars/belle_sip_message.g:1639:4: accept_main_media_type slash accept_sub_media_type ( semi generic_param[BELLE_SIP_PARAMETERS($header_accept::current)] )* { FOLLOWPUSH(FOLLOW_accept_main_media_type_in_accept_param6163); accept_main_media_type104=accept_main_media_type(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleaccept_paramEx; } if (HASFAILED()) { pbelle_sip_messageParser_accept_paramPop(ctx); return ; } if ( BACKTRACKING==0 ) { belle_sip_header_accept_set_type((SCOPE_TOP(header_accept))->current,(const char*) (STRSTREAM->toStringTT(STRSTREAM, accept_main_media_type104.start, accept_main_media_type104.stop)) ->chars); } FOLLOWPUSH(FOLLOW_slash_in_accept_param6167); slash(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleaccept_paramEx; } if (HASFAILED()) { pbelle_sip_messageParser_accept_paramPop(ctx); return ; } FOLLOWPUSH(FOLLOW_accept_sub_media_type_in_accept_param6169); accept_sub_media_type105=accept_sub_media_type(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleaccept_paramEx; } if (HASFAILED()) { pbelle_sip_messageParser_accept_paramPop(ctx); return ; } if ( BACKTRACKING==0 ) { belle_sip_header_accept_set_subtype((SCOPE_TOP(header_accept))->current,(const char*) (STRSTREAM->toStringTT(STRSTREAM, accept_sub_media_type105.start, accept_sub_media_type105.stop)) ->chars); } // ../grammars/belle_sip_message.g:1642:2: ( semi generic_param[BELLE_SIP_PARAMETERS($header_accept::current)] )* for (;;) { int alt142=2; alt142 = cdfa142.predict(ctx, RECOGNIZER, ISTREAM, &cdfa142); if (HASEXCEPTION()) { goto ruleaccept_paramEx; } if (HASFAILED()) { pbelle_sip_messageParser_accept_paramPop(ctx); return ; } switch (alt142) { case 1: // ../grammars/belle_sip_message.g:1642:2: semi generic_param[BELLE_SIP_PARAMETERS($header_accept::current)] { FOLLOWPUSH(FOLLOW_semi_in_accept_param6174); semi(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleaccept_paramEx; } if (HASFAILED()) { pbelle_sip_messageParser_accept_paramPop(ctx); return ; } FOLLOWPUSH(FOLLOW_generic_param_in_accept_param6177); generic_param(ctx, BELLE_SIP_PARAMETERS((SCOPE_TOP(header_accept))->current)); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleaccept_paramEx; } if (HASFAILED()) { pbelle_sip_messageParser_accept_paramPop(ctx); return ; } } break; default: goto loop142; /* break out of the loop */ break; } } loop142: ; /* Jump out to here if this rule does not match */ } } // This is where rules clean up and exit // goto ruleaccept_paramEx; /* Prevent compiler warnings */ ruleaccept_paramEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } pbelle_sip_messageParser_accept_paramPop(ctx); return ; } /* $ANTLR end accept_param */ /** * $ANTLR start accept_main_media_type * ../grammars/belle_sip_message.g:1644:1: accept_main_media_type : token ; */ static belle_sip_messageParser_accept_main_media_type_return accept_main_media_type(pbelle_sip_messageParser ctx) { belle_sip_messageParser_accept_main_media_type_return retval; /* Initialize rule variables */ retval.start = LT(1); retval.stop = retval.start; { // ../grammars/belle_sip_message.g:1644:23: ( token ) // ../grammars/belle_sip_message.g:1644:25: token { FOLLOWPUSH(FOLLOW_token_in_accept_main_media_type6188); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleaccept_main_media_typeEx; } if (HASFAILED()) { return retval; } } } // This is where rules clean up and exit // goto ruleaccept_main_media_typeEx; /* Prevent compiler warnings */ ruleaccept_main_media_typeEx: ; retval.stop = LT(-1); if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end accept_main_media_type */ /** * $ANTLR start accept_sub_media_type * ../grammars/belle_sip_message.g:1645:1: accept_sub_media_type : token ; */ static belle_sip_messageParser_accept_sub_media_type_return accept_sub_media_type(pbelle_sip_messageParser ctx) { belle_sip_messageParser_accept_sub_media_type_return retval; /* Initialize rule variables */ retval.start = LT(1); retval.stop = retval.start; { // ../grammars/belle_sip_message.g:1645:22: ( token ) // ../grammars/belle_sip_message.g:1645:24: token { FOLLOWPUSH(FOLLOW_token_in_accept_sub_media_type6194); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleaccept_sub_media_typeEx; } if (HASFAILED()) { return retval; } } } // This is where rules clean up and exit // goto ruleaccept_sub_media_typeEx; /* Prevent compiler warnings */ ruleaccept_sub_media_typeEx: ; retval.stop = LT(-1); if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end accept_sub_media_type */ /** * $ANTLR start header_reason * ../grammars/belle_sip_message.g:1660:1: header_reason returns [belle_sip_header_reason_t* ret=NULL] :{...}? token hcolon header_reason_param ( comma header_reason_param )* ; */ static belle_sip_header_reason_t* header_reason(pbelle_sip_messageParser ctx) { belle_sip_header_reason_t* ret; /* Initialize rule variables */ ret = NULL; ctx->pbelle_sip_messageParser_header_reasonTop = pbelle_sip_messageParser_header_reasonPush(ctx); (SCOPE_TOP(header_reason))->current= NULL; (SCOPE_TOP(header_reason))->first=NULL; { // ../grammars/belle_sip_message.g:1663:5: ({...}? token hcolon header_reason_param ( comma header_reason_param )* ) // ../grammars/belle_sip_message.g:1663:5: {...}? token hcolon header_reason_param ( comma header_reason_param )* { if ( !((IS_TOKEN(Reason))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_header_reasonPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(Reason)"; EXCEPTION->ruleName = (void *)"header_reason"; } FOLLOWPUSH(FOLLOW_token_in_header_reason6223); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_reasonEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_reasonPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_hcolon_in_header_reason6227); hcolon(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_reasonEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_reasonPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_header_reason_param_in_header_reason6229); header_reason_param(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_reasonEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_reasonPop(ctx); return ret; } // ../grammars/belle_sip_message.g:1663:72: ( comma header_reason_param )* for (;;) { int alt143=2; switch ( LA(1) ) { case COMMA: case CRLF: case SP: { alt143=1; } break; } switch (alt143) { case 1: // ../grammars/belle_sip_message.g:1663:74: comma header_reason_param { FOLLOWPUSH(FOLLOW_comma_in_header_reason6234); comma(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_reasonEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_reasonPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_header_reason_param_in_header_reason6236); header_reason_param(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_reasonEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_reasonPop(ctx); return ret; } } break; default: goto loop143; /* break out of the loop */ break; } } loop143: ; /* Jump out to here if this rule does not match */ if ( BACKTRACKING==0 ) { ret= (SCOPE_TOP(header_reason))->first; } } } // This is where rules clean up and exit // goto ruleheader_reasonEx; /* Prevent compiler warnings */ ruleheader_reasonEx: ; if (HASEXCEPTION()) { /* catch(decl,action) */ { belle_sip_message("[%s] reason [%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); ret= (SCOPE_TOP(header_reason))->first; if (ret ) belle_sip_object_unref(ret ); ret=NULL; } } else { } pbelle_sip_messageParser_header_reasonPop(ctx); return ret; } /* $ANTLR end header_reason */ /** * $ANTLR start header_reason_param * ../grammars/belle_sip_message.g:1671:1: header_reason_param : header_reason_protocol ( semi generic_param[BELLE_SIP_PARAMETERS($header_reason::current)] )* ; */ static void header_reason_param(pbelle_sip_messageParser ctx) { belle_sip_messageParser_header_reason_protocol_return header_reason_protocol106; #undef RETURN_TYPE_header_reason_protocol106 #define RETURN_TYPE_header_reason_protocol106 belle_sip_messageParser_header_reason_protocol_return /* Initialize rule variables */ ctx->pbelle_sip_messageParser_header_reason_paramTop = pbelle_sip_messageParser_header_reason_paramPush(ctx); if ((SCOPE_TOP(header_reason))->current == NULL) { (SCOPE_TOP(header_reason))->first= (SCOPE_TOP(header_reason))->current = belle_sip_header_reason_new(); (SCOPE_TOP(header_reason_param))->prev=NULL; } else { belle_sip_header_t* header = BELLE_SIP_HEADER((SCOPE_TOP(header_reason))->current); (SCOPE_TOP(header_reason_param))->prev=(SCOPE_TOP(header_reason))->current; belle_sip_header_set_next(header,(belle_sip_header_t*)((SCOPE_TOP(header_reason))->current= belle_sip_header_reason_new())); } { // ../grammars/belle_sip_message.g:1682:2: ( header_reason_protocol ( semi generic_param[BELLE_SIP_PARAMETERS($header_reason::current)] )* ) // ../grammars/belle_sip_message.g:1682:3: header_reason_protocol ( semi generic_param[BELLE_SIP_PARAMETERS($header_reason::current)] )* { FOLLOWPUSH(FOLLOW_header_reason_protocol_in_header_reason_param6262); header_reason_protocol106=header_reason_protocol(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_reason_paramEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_reason_paramPop(ctx); return ; } if ( BACKTRACKING==0 ) { belle_sip_header_reason_set_protocol((SCOPE_TOP(header_reason))->current,(const char*) (STRSTREAM->toStringTT(STRSTREAM, header_reason_protocol106.start, header_reason_protocol106.stop)) ->chars); } // ../grammars/belle_sip_message.g:1683:2: ( semi generic_param[BELLE_SIP_PARAMETERS($header_reason::current)] )* for (;;) { int alt144=2; alt144 = cdfa144.predict(ctx, RECOGNIZER, ISTREAM, &cdfa144); if (HASEXCEPTION()) { goto ruleheader_reason_paramEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_reason_paramPop(ctx); return ; } switch (alt144) { case 1: // ../grammars/belle_sip_message.g:1683:3: semi generic_param[BELLE_SIP_PARAMETERS($header_reason::current)] { FOLLOWPUSH(FOLLOW_semi_in_header_reason_param6268); semi(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_reason_paramEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_reason_paramPop(ctx); return ; } FOLLOWPUSH(FOLLOW_generic_param_in_header_reason_param6271); generic_param(ctx, BELLE_SIP_PARAMETERS((SCOPE_TOP(header_reason))->current)); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_reason_paramEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_reason_paramPop(ctx); return ; } } break; default: goto loop144; /* break out of the loop */ break; } } loop144: ; /* Jump out to here if this rule does not match */ } } // This is where rules clean up and exit // goto ruleheader_reason_paramEx; /* Prevent compiler warnings */ ruleheader_reason_paramEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } pbelle_sip_messageParser_header_reason_paramPop(ctx); return ; } /* $ANTLR end header_reason_param */ /** * $ANTLR start header_reason_protocol * ../grammars/belle_sip_message.g:1684:1: header_reason_protocol : token ; */ static belle_sip_messageParser_header_reason_protocol_return header_reason_protocol(pbelle_sip_messageParser ctx) { belle_sip_messageParser_header_reason_protocol_return retval; /* Initialize rule variables */ retval.start = LT(1); retval.stop = retval.start; { // ../grammars/belle_sip_message.g:1685:2: ( token ) // ../grammars/belle_sip_message.g:1685:4: token { FOLLOWPUSH(FOLLOW_token_in_header_reason_protocol6283); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_reason_protocolEx; } if (HASFAILED()) { return retval; } } } // This is where rules clean up and exit // goto ruleheader_reason_protocolEx; /* Prevent compiler warnings */ ruleheader_reason_protocolEx: ; retval.stop = LT(-1); if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end header_reason_protocol */ /** * $ANTLR start header_authentication_info * ../grammars/belle_sip_message.g:1698:1: header_authentication_info returns [belle_sip_header_authentication_info_t* ret=NULL] :{...}? token hcolon auth_info ( comma auth_info )* ; */ static belle_sip_header_authentication_info_t* header_authentication_info(pbelle_sip_messageParser ctx) { belle_sip_header_authentication_info_t* ret; /* Initialize rule variables */ ret = NULL; ctx->pbelle_sip_messageParser_header_authentication_infoTop = pbelle_sip_messageParser_header_authentication_infoPush(ctx); (SCOPE_TOP(header_authentication_info))->current= belle_sip_header_authentication_info_new(); ret=(SCOPE_TOP(header_authentication_info))->current; { // ../grammars/belle_sip_message.g:1701:3: ({...}? token hcolon auth_info ( comma auth_info )* ) // ../grammars/belle_sip_message.g:1701:7: {...}? token hcolon auth_info ( comma auth_info )* { if ( !((IS_TOKEN( Authentication-Info))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_header_authentication_infoPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN( Authentication-Info)"; EXCEPTION->ruleName = (void *)"header_authentication_info"; } FOLLOWPUSH(FOLLOW_token_in_header_authentication_info6315); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_authentication_infoEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_authentication_infoPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_hcolon_in_header_authentication_info6319); hcolon(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_authentication_infoEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_authentication_infoPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_auth_info_in_header_authentication_info6323); auth_info(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_authentication_infoEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_authentication_infoPop(ctx); return ret; } // ../grammars/belle_sip_message.g:1701:93: ( comma auth_info )* for (;;) { int alt145=2; switch ( LA(1) ) { case COMMA: case CRLF: case SP: { alt145=1; } break; } switch (alt145) { case 1: // ../grammars/belle_sip_message.g:1701:95: comma auth_info { FOLLOWPUSH(FOLLOW_comma_in_header_authentication_info6327); comma(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_authentication_infoEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_authentication_infoPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_auth_info_in_header_authentication_info6329); auth_info(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_authentication_infoEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_authentication_infoPop(ctx); return ret; } } break; default: goto loop145; /* break out of the loop */ break; } } loop145: ; /* Jump out to here if this rule does not match */ } } // This is where rules clean up and exit // goto ruleheader_authentication_infoEx; /* Prevent compiler warnings */ ruleheader_authentication_infoEx: ; if (HASEXCEPTION()) { /* catch(decl,action) */ { belle_sip_message("[%s] reason [%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref((SCOPE_TOP(header_authentication_info))->current); ret=NULL; } } else { } pbelle_sip_messageParser_header_authentication_infoPop(ctx); return ret; } /* $ANTLR end header_authentication_info */ /** * $ANTLR start auth_info * ../grammars/belle_sip_message.g:1708:2: auth_info : ( next_nonce | cnonce | authentication_info_message_qop | nonce_count | rspauth ) ; */ static void auth_info(pbelle_sip_messageParser ctx) { char* next_nonce107; #undef RETURN_TYPE_next_nonce107 #define RETURN_TYPE_next_nonce107 char* char* cnonce108; #undef RETURN_TYPE_cnonce108 #define RETURN_TYPE_cnonce108 char* const char* authentication_info_message_qop109; #undef RETURN_TYPE_authentication_info_message_qop109 #define RETURN_TYPE_authentication_info_message_qop109 const char* const char* nonce_count110; #undef RETURN_TYPE_nonce_count110 #define RETURN_TYPE_nonce_count110 const char* char* rspauth111; #undef RETURN_TYPE_rspauth111 #define RETURN_TYPE_rspauth111 char* /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:1709:4: ( ( next_nonce | cnonce | authentication_info_message_qop | nonce_count | rspauth ) ) // ../grammars/belle_sip_message.g:1710:3: ( next_nonce | cnonce | authentication_info_message_qop | nonce_count | rspauth ) { // ../grammars/belle_sip_message.g:1710:3: ( next_nonce | cnonce | authentication_info_message_qop | nonce_count | rspauth ) { int alt146=5; alt146 = cdfa146.predict(ctx, RECOGNIZER, ISTREAM, &cdfa146); if (HASEXCEPTION()) { goto ruleauth_infoEx; } if (HASFAILED()) { return ; } switch (alt146) { case 1: // ../grammars/belle_sip_message.g:1710:5: next_nonce { FOLLOWPUSH(FOLLOW_next_nonce_in_auth_info6354); next_nonce107=next_nonce(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleauth_infoEx; } if (HASFAILED()) { return ; } if ( BACKTRACKING==0 ) { belle_sip_header_authentication_info_set_next_nonce((SCOPE_TOP(header_authentication_info))->current,(char*) next_nonce107 ); belle_sip_free(next_nonce107 ); } } break; case 2: // ../grammars/belle_sip_message.g:1713:4: cnonce { FOLLOWPUSH(FOLLOW_cnonce_in_auth_info6361); cnonce108=cnonce(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleauth_infoEx; } if (HASFAILED()) { return ; } if ( BACKTRACKING==0 ) { belle_sip_header_authentication_info_set_cnonce((SCOPE_TOP(header_authentication_info))->current,(char*) cnonce108 ); belle_sip_free(cnonce108 ); } } break; case 3: // ../grammars/belle_sip_message.g:1717:5: authentication_info_message_qop { FOLLOWPUSH(FOLLOW_authentication_info_message_qop_in_auth_info6368); authentication_info_message_qop109=authentication_info_message_qop(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleauth_infoEx; } if (HASFAILED()) { return ; } if ( BACKTRACKING==0 ) { belle_sip_header_authentication_info_set_qop((SCOPE_TOP(header_authentication_info))->current, authentication_info_message_qop109 ); } } break; case 4: // ../grammars/belle_sip_message.g:1720:5: nonce_count { FOLLOWPUSH(FOLLOW_nonce_count_in_auth_info6375); nonce_count110=nonce_count(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleauth_infoEx; } if (HASFAILED()) { return ; } if ( BACKTRACKING==0 ) { belle_sip_header_authentication_info_set_nonce_count((SCOPE_TOP(header_authentication_info))->current,atoi((char*) nonce_count110 )); } } break; case 5: // ../grammars/belle_sip_message.g:1723:5: rspauth { FOLLOWPUSH(FOLLOW_rspauth_in_auth_info6382); rspauth111=rspauth(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleauth_infoEx; } if (HASFAILED()) { return ; } if ( BACKTRACKING==0 ) { belle_sip_header_authentication_info_set_rsp_auth((SCOPE_TOP(header_authentication_info))->current, rspauth111 ); belle_sip_free(rspauth111 ); } } break; } } } } // This is where rules clean up and exit // goto ruleauth_infoEx; /* Prevent compiler warnings */ ruleauth_infoEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end auth_info */ /** * $ANTLR start qop_token * ../grammars/belle_sip_message.g:1728:1: qop_token :{...}? token ; */ static void qop_token(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:1729:2: ({...}? token ) // ../grammars/belle_sip_message.g:1729:5: {...}? token { if ( !((IS_TOKEN(qop))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(qop)"; EXCEPTION->ruleName = (void *)"qop_token"; } FOLLOWPUSH(FOLLOW_token_in_qop_token6398); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleqop_tokenEx; } if (HASFAILED()) { return ; } } } // This is where rules clean up and exit // goto ruleqop_tokenEx; /* Prevent compiler warnings */ ruleqop_tokenEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end qop_token */ /** * $ANTLR start authentication_info_message_qop * ../grammars/belle_sip_message.g:1731:1: authentication_info_message_qop returns [const char* ret=NULL] : qop_token equal token ; */ static const char* authentication_info_message_qop(pbelle_sip_messageParser ctx) { const char* ret; belle_sip_messageParser_token_return token112; #undef RETURN_TYPE_token112 #define RETURN_TYPE_token112 belle_sip_messageParser_token_return /* Initialize rule variables */ ret = NULL; { // ../grammars/belle_sip_message.g:1732:3: ( qop_token equal token ) // ../grammars/belle_sip_message.g:1732:7: qop_token equal token { FOLLOWPUSH(FOLLOW_qop_token_in_authentication_info_message_qop6417); qop_token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleauthentication_info_message_qopEx; } if (HASFAILED()) { return ret; } FOLLOWPUSH(FOLLOW_equal_in_authentication_info_message_qop6419); equal(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleauthentication_info_message_qopEx; } if (HASFAILED()) { return ret; } FOLLOWPUSH(FOLLOW_token_in_authentication_info_message_qop6422); token112=token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleauthentication_info_message_qopEx; } if (HASFAILED()) { return ret; } if ( BACKTRACKING==0 ) { ret= (const char*) (STRSTREAM->toStringTT(STRSTREAM, token112.start, token112.stop)) ->chars; } } } // This is where rules clean up and exit // goto ruleauthentication_info_message_qopEx; /* Prevent compiler warnings */ ruleauthentication_info_message_qopEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ret; } /* $ANTLR end authentication_info_message_qop */ /** * $ANTLR start rspauth * ../grammars/belle_sip_message.g:1734:1: rspauth returns [char* ret=NULL] :{...}? token equal quoted_string ; */ static char* rspauth(pbelle_sip_messageParser ctx) { char* ret; belle_sip_messageParser_quoted_string_return quoted_string113; #undef RETURN_TYPE_quoted_string113 #define RETURN_TYPE_quoted_string113 belle_sip_messageParser_quoted_string_return /* Initialize rule variables */ ret = NULL; { // ../grammars/belle_sip_message.g:1735:3: ({...}? token equal quoted_string ) // ../grammars/belle_sip_message.g:1735:7: {...}? token equal quoted_string { if ( !((IS_TOKEN(rspauth))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(rspauth)"; EXCEPTION->ruleName = (void *)"rspauth"; } FOLLOWPUSH(FOLLOW_token_in_rspauth6444); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulerspauthEx; } if (HASFAILED()) { return ret; } FOLLOWPUSH(FOLLOW_equal_in_rspauth6448); equal(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulerspauthEx; } if (HASFAILED()) { return ret; } FOLLOWPUSH(FOLLOW_quoted_string_in_rspauth6450); quoted_string113=quoted_string(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulerspauthEx; } if (HASFAILED()) { return ret; } if ( BACKTRACKING==0 ) { ret= _belle_sip_str_dup_and_unquote_string((char*) (STRSTREAM->toStringTT(STRSTREAM, quoted_string113.start, quoted_string113.stop)) ->chars); } } } // This is where rules clean up and exit // goto rulerspauthEx; /* Prevent compiler warnings */ rulerspauthEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ret; } /* $ANTLR end rspauth */ /** * $ANTLR start next_nonce * ../grammars/belle_sip_message.g:1738:1: next_nonce returns [char* ret=NULL] :{...}? token equal nonce_value ; */ static char* next_nonce(pbelle_sip_messageParser ctx) { char* ret; belle_sip_messageParser_nonce_value_return nonce_value114; #undef RETURN_TYPE_nonce_value114 #define RETURN_TYPE_nonce_value114 belle_sip_messageParser_nonce_value_return /* Initialize rule variables */ ret = NULL; { // ../grammars/belle_sip_message.g:1739:3: ({...}? token equal nonce_value ) // ../grammars/belle_sip_message.g:1739:7: {...}? token equal nonce_value { if ( !((IS_TOKEN(nextnonce))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(nextnonce)"; EXCEPTION->ruleName = (void *)"next_nonce"; } FOLLOWPUSH(FOLLOW_token_in_next_nonce6469); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulenext_nonceEx; } if (HASFAILED()) { return ret; } FOLLOWPUSH(FOLLOW_equal_in_next_nonce6473); equal(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulenext_nonceEx; } if (HASFAILED()) { return ret; } FOLLOWPUSH(FOLLOW_nonce_value_in_next_nonce6475); nonce_value114=nonce_value(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulenext_nonceEx; } if (HASFAILED()) { return ret; } if ( BACKTRACKING==0 ) { ret= _belle_sip_str_dup_and_unquote_string((char*) (STRSTREAM->toStringTT(STRSTREAM, nonce_value114.start, nonce_value114.stop)) ->chars); } } } // This is where rules clean up and exit // goto rulenext_nonceEx; /* Prevent compiler warnings */ rulenext_nonceEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ret; } /* $ANTLR end next_nonce */ /** * $ANTLR start quoted_algorithm * ../grammars/belle_sip_message.g:1743:1: quoted_algorithm returns [char* ret=NULL] :{...}? token equal nonce_value ; */ static char* quoted_algorithm(pbelle_sip_messageParser ctx) { char* ret; belle_sip_messageParser_nonce_value_return nonce_value115; #undef RETURN_TYPE_nonce_value115 #define RETURN_TYPE_nonce_value115 belle_sip_messageParser_nonce_value_return /* Initialize rule variables */ ret = NULL; { // ../grammars/belle_sip_message.g:1744:3: ({...}? token equal nonce_value ) // ../grammars/belle_sip_message.g:1744:7: {...}? token equal nonce_value { if ( !((IS_TOKEN(nextnonce))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(nextnonce)"; EXCEPTION->ruleName = (void *)"quoted_algorithm"; } FOLLOWPUSH(FOLLOW_token_in_quoted_algorithm6495); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulequoted_algorithmEx; } if (HASFAILED()) { return ret; } FOLLOWPUSH(FOLLOW_equal_in_quoted_algorithm6499); equal(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulequoted_algorithmEx; } if (HASFAILED()) { return ret; } FOLLOWPUSH(FOLLOW_nonce_value_in_quoted_algorithm6501); nonce_value115=nonce_value(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulequoted_algorithmEx; } if (HASFAILED()) { return ret; } if ( BACKTRACKING==0 ) { ret= _belle_sip_str_dup_and_unquote_string((char*) (STRSTREAM->toStringTT(STRSTREAM, nonce_value115.start, nonce_value115.stop)) ->chars); } } } // This is where rules clean up and exit // goto rulequoted_algorithmEx; /* Prevent compiler warnings */ rulequoted_algorithmEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ret; } /* $ANTLR end quoted_algorithm */ /** * $ANTLR start header * ../grammars/belle_sip_message.g:1748:1: header returns [belle_sip_header_t* ret=NULL] : header_extension_base[FALSE] ; */ static belle_sip_header_t* header(pbelle_sip_messageParser ctx) { belle_sip_header_t* ret; belle_sip_header_t* header_extension_base116; #undef RETURN_TYPE_header_extension_base116 #define RETURN_TYPE_header_extension_base116 belle_sip_header_t* /* Initialize rule variables */ ret = NULL; { // ../grammars/belle_sip_message.g:1749:3: ( header_extension_base[FALSE] ) // ../grammars/belle_sip_message.g:1749:5: header_extension_base[FALSE] { FOLLOWPUSH(FOLLOW_header_extension_base_in_header6517); header_extension_base116=header_extension_base(ctx, FALSE); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheaderEx; } if (HASFAILED()) { return ret; } if ( BACKTRACKING==0 ) { ret= header_extension_base116 ; } } } // This is where rules clean up and exit // goto ruleheaderEx; /* Prevent compiler warnings */ ruleheaderEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ret; } /* $ANTLR end header */ /** * $ANTLR start header_extension_base * ../grammars/belle_sip_message.g:1752:1: header_extension_base[ANTLR3_BOOLEAN is_http] returns [belle_sip_header_t* ret] : ( header_name hcolon ( header_value[(const char*)$header_name.text->chars,$is_http ] )? ) ; */ static belle_sip_header_t* header_extension_base(pbelle_sip_messageParser ctx, ANTLR3_BOOLEAN is_http) { belle_sip_header_t* ret; belle_sip_messageParser_header_name_return header_name117; #undef RETURN_TYPE_header_name117 #define RETURN_TYPE_header_name117 belle_sip_messageParser_header_name_return belle_sip_messageParser_header_value_return header_value118; #undef RETURN_TYPE_header_value118 #define RETURN_TYPE_header_value118 belle_sip_messageParser_header_value_return /* Initialize rule variables */ ctx->pbelle_sip_messageParser_header_extension_baseTop = pbelle_sip_messageParser_header_extension_basePush(ctx); (SCOPE_TOP(header_extension_base))->as_value=0; ret=NULL; { // ../grammars/belle_sip_message.g:1755:3: ( ( header_name hcolon ( header_value[(const char*)$header_name.text->chars,$is_http ] )? ) ) // ../grammars/belle_sip_message.g:1755:8: ( header_name hcolon ( header_value[(const char*)$header_name.text->chars,$is_http ] )? ) { // ../grammars/belle_sip_message.g:1755:8: ( header_name hcolon ( header_value[(const char*)$header_name.text->chars,$is_http ] )? ) // ../grammars/belle_sip_message.g:1755:9: header_name hcolon ( header_value[(const char*)$header_name.text->chars,$is_http ] )? { FOLLOWPUSH(FOLLOW_header_name_in_header_extension_base6550); header_name117=header_name(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_extension_baseEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_extension_basePop(ctx); return ret; } FOLLOWPUSH(FOLLOW_hcolon_in_header_extension_base6559); hcolon(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_extension_baseEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_extension_basePop(ctx); return ret; } // ../grammars/belle_sip_message.g:1757:8: ( header_value[(const char*)$header_name.text->chars,$is_http ] )? { int alt147=2; switch ( LA(1) ) { case AND: case AT: case BQUOTE: case BSLASH: case COLON: case COMMA: case COMMON_CHAR: case DASH: case DIGIT: case DOLLARD: case DOT: case DQUOTE: case EMARK: case EQUAL: case HEX_CHAR: case HTAB: case LAQUOT: case LBRACE: case LPAREN: case LSBRAQUET: case OCTET: case OR: case PERCENT: case PLUS: case QMARK: case RAQUOT: case RBRACE: case RPAREN: case RSBRAQUET: case SEMI: case SLASH: case SQUOTE: case STAR: case TILDE: case USCORE: { alt147=1; } break; } switch (alt147) { case 1: // ../grammars/belle_sip_message.g:1757:9: header_value[(const char*)$header_name.text->chars,$is_http ] { FOLLOWPUSH(FOLLOW_header_value_in_header_extension_base6573); header_value118=header_value(ctx, (const char*) (STRSTREAM->toStringTT(STRSTREAM, header_name117.start, header_name117.stop)) ->chars, is_http); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_extension_baseEx; } if (HASFAILED()) { pbelle_sip_messageParser_header_extension_basePop(ctx); return ret; } if ( BACKTRACKING==0 ) { (SCOPE_TOP(header_extension_base))->as_value=1; ret= header_value118.ret ; } } break; } } } if ( BACKTRACKING==0 ) { if (!ret && !(SCOPE_TOP(header_extension_base))->as_value) { /*to handle value parsing error*/ /*special case: header without value*/ ret=belle_sip_header_create((const char*) (STRSTREAM->toStringTT(STRSTREAM, header_name117.start, header_name117.stop)) ->chars,NULL); } } } } // This is where rules clean up and exit // goto ruleheader_extension_baseEx; /* Prevent compiler warnings */ ruleheader_extension_baseEx: ; if (HASEXCEPTION()) { /* catch(decl,action) */ { belle_sip_message("[%s] reason [%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); if (ret ) belle_sip_object_unref(ret ); ret=NULL; } } else { } pbelle_sip_messageParser_header_extension_basePop(ctx); return ret; } /* $ANTLR end header_extension_base */ /** * $ANTLR start header_name * ../grammars/belle_sip_message.g:1770:1: header_name : token ; */ static belle_sip_messageParser_header_name_return header_name(pbelle_sip_messageParser ctx) { belle_sip_messageParser_header_name_return retval; /* Initialize rule variables */ retval.start = LT(1); retval.stop = retval.start; { // ../grammars/belle_sip_message.g:1771:3: ( token ) // ../grammars/belle_sip_message.g:1771:7: token { FOLLOWPUSH(FOLLOW_token_in_header_name6599); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheader_nameEx; } if (HASFAILED()) { return retval; } } } // This is where rules clean up and exit // goto ruleheader_nameEx; /* Prevent compiler warnings */ ruleheader_nameEx: ; retval.stop = LT(-1); if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end header_name */ /** * $ANTLR start header_value * ../grammars/belle_sip_message.g:1773:1: header_value[const char* name, ANTLR3_BOOLEAN is_http] returns [belle_sip_header_t* ret] options {greedy=false; } : (~ ( SP | CRLF ) ( ( CRLF SP ) |~ CRLF )* ) ; */ static belle_sip_messageParser_header_value_return header_value(pbelle_sip_messageParser ctx, const char* name, ANTLR3_BOOLEAN is_http) { belle_sip_messageParser_header_value_return retval; /* Initialize rule variables */ retval.ret=NULL; retval.start = LT(1); retval.stop = retval.start; { // ../grammars/belle_sip_message.g:1776:3: ( (~ ( SP | CRLF ) ( ( CRLF SP ) |~ CRLF )* ) ) // ../grammars/belle_sip_message.g:1776:6: (~ ( SP | CRLF ) ( ( CRLF SP ) |~ CRLF )* ) { // ../grammars/belle_sip_message.g:1776:6: (~ ( SP | CRLF ) ( ( CRLF SP ) |~ CRLF )* ) // ../grammars/belle_sip_message.g:1776:7: ~ ( SP | CRLF ) ( ( CRLF SP ) |~ CRLF )* { if ( ((LA(1) >= AND) && (LA(1) <= COMMON_CHAR)) || ((LA(1) >= DASH) && (LA(1) <= SLASH)) || ((LA(1) >= SQUOTE) && (LA(1) <= USCORE)) ) { CONSUME(); PERRORRECOVERY=ANTLR3_FALSE; FAILEDFLAG=ANTLR3_FALSE; } else { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_MISMATCHED_SET_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_MISMATCHED_SET_NAME; EXCEPTION->expectingSet = NULL; goto ruleheader_valueEx; } // ../grammars/belle_sip_message.g:1776:18: ( ( CRLF SP ) |~ CRLF )* for (;;) { int alt148=3; switch ( LA(1) ) { case CRLF: { switch ( LA(2) ) { case SP: { alt148=1; } break; } } break; case AND: case AT: case BQUOTE: case BSLASH: case COLON: case COMMA: case COMMON_CHAR: case DASH: case DIGIT: case DOLLARD: case DOT: case DQUOTE: case EMARK: case EQUAL: case HEX_CHAR: case HTAB: case LAQUOT: case LBRACE: case LPAREN: case LSBRAQUET: case OCTET: case OR: case PERCENT: case PLUS: case QMARK: case RAQUOT: case RBRACE: case RPAREN: case RSBRAQUET: case SEMI: case SLASH: case SP: case SQUOTE: case STAR: case TILDE: case USCORE: { alt148=2; } break; } switch (alt148) { case 1: // ../grammars/belle_sip_message.g:1776:19: ( CRLF SP ) { // ../grammars/belle_sip_message.g:1776:19: ( CRLF SP ) // ../grammars/belle_sip_message.g:1776:20: CRLF SP { MATCHT(CRLF, &FOLLOW_CRLF_in_header_value6642); if (HASEXCEPTION()) { goto ruleheader_valueEx; } if (HASFAILED()) { return retval; } MATCHT(SP, &FOLLOW_SP_in_header_value6644); if (HASEXCEPTION()) { goto ruleheader_valueEx; } if (HASFAILED()) { return retval; } } } break; case 2: // ../grammars/belle_sip_message.g:1776:31: ~ CRLF { if ( ((LA(1) >= AND) && (LA(1) <= COMMON_CHAR)) || ((LA(1) >= DASH) && (LA(1) <= USCORE)) ) { CONSUME(); PERRORRECOVERY=ANTLR3_FALSE; FAILEDFLAG=ANTLR3_FALSE; } else { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_MISMATCHED_SET_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_MISMATCHED_SET_NAME; EXCEPTION->expectingSet = NULL; goto ruleheader_valueEx; } } break; default: goto loop148; /* break out of the loop */ break; } } loop148: ; /* Jump out to here if this rule does not match */ } if ( BACKTRACKING==0 ) { if (is_http) { retval.ret=belle_http_header_create(name,(const char*) STRSTREAM->toStringTT(STRSTREAM, retval.start, LT(-1)) ->chars); }else { retval.ret=belle_sip_header_create(name,(const char*) STRSTREAM->toStringTT(STRSTREAM, retval.start, LT(-1)) ->chars); } } } } // This is where rules clean up and exit // goto ruleheader_valueEx; /* Prevent compiler warnings */ ruleheader_valueEx: ; retval.stop = LT(-1); if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end header_value */ /** * $ANTLR start message_body * ../grammars/belle_sip_message.g:1784:1: message_body options {greedy=false; } : ( OCTET )+ ; */ static void message_body(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:1786:3: ( ( OCTET )+ ) // ../grammars/belle_sip_message.g:1786:7: ( OCTET )+ { // ../grammars/belle_sip_message.g:1786:7: ( OCTET )+ { int cnt149=0; for (;;) { int alt149=2; switch ( LA(1) ) { case OCTET: { alt149=1; } break; } switch (alt149) { case 1: // ../grammars/belle_sip_message.g:1786:7: OCTET { MATCHT(OCTET, &FOLLOW_OCTET_in_message_body6681); if (HASEXCEPTION()) { goto rulemessage_bodyEx; } if (HASFAILED()) { return ; } } break; default: if ( cnt149 >= 1 ) { goto loop149; } if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } /* mismatchedSetEx() */ CONSTRUCTEX(); EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME; goto rulemessage_bodyEx; } cnt149++; } loop149: ; /* Jump to here if this rule does not match */ } } } // This is where rules clean up and exit // goto rulemessage_bodyEx; /* Prevent compiler warnings */ rulemessage_bodyEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end message_body */ /** * $ANTLR start paramless_uri * ../grammars/belle_sip_message.g:1788:1: paramless_uri returns [belle_sip_uri_t* ret=NULL] : sip_schema[$paramless_uri::current] ( ( userinfo[$paramless_uri::current] )=> ( userinfo[$paramless_uri::current] hostport[$paramless_uri::current] ) | hostport[$paramless_uri::current] ) ( headers[$paramless_uri::current] )? ; */ static belle_sip_uri_t* paramless_uri(pbelle_sip_messageParser ctx) { belle_sip_uri_t* ret; /* Initialize rule variables */ ret = NULL; ctx->pbelle_sip_messageParser_paramless_uriTop = pbelle_sip_messageParser_paramless_uriPush(ctx); (SCOPE_TOP(paramless_uri))->current= belle_sip_uri_new(); { // ../grammars/belle_sip_message.g:1791:4: ( sip_schema[$paramless_uri::current] ( ( userinfo[$paramless_uri::current] )=> ( userinfo[$paramless_uri::current] hostport[$paramless_uri::current] ) | hostport[$paramless_uri::current] ) ( headers[$paramless_uri::current] )? ) // ../grammars/belle_sip_message.g:1791:7: sip_schema[$paramless_uri::current] ( ( userinfo[$paramless_uri::current] )=> ( userinfo[$paramless_uri::current] hostport[$paramless_uri::current] ) | hostport[$paramless_uri::current] ) ( headers[$paramless_uri::current] )? { FOLLOWPUSH(FOLLOW_sip_schema_in_paramless_uri6708); sip_schema(ctx, (SCOPE_TOP(paramless_uri))->current); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleparamless_uriEx; } if (HASFAILED()) { pbelle_sip_messageParser_paramless_uriPop(ctx); return ret; } // ../grammars/belle_sip_message.g:1791:43: ( ( userinfo[$paramless_uri::current] )=> ( userinfo[$paramless_uri::current] hostport[$paramless_uri::current] ) | hostport[$paramless_uri::current] ) { int alt150=2; alt150 = cdfa150.predict(ctx, RECOGNIZER, ISTREAM, &cdfa150); if (HASEXCEPTION()) { goto ruleparamless_uriEx; } if (HASFAILED()) { pbelle_sip_messageParser_paramless_uriPop(ctx); return ret; } switch (alt150) { case 1: // ../grammars/belle_sip_message.g:1791:45: ( userinfo[$paramless_uri::current] )=> ( userinfo[$paramless_uri::current] hostport[$paramless_uri::current] ) { // ../grammars/belle_sip_message.g:1791:83: ( userinfo[$paramless_uri::current] hostport[$paramless_uri::current] ) // ../grammars/belle_sip_message.g:1791:84: userinfo[$paramless_uri::current] hostport[$paramless_uri::current] { FOLLOWPUSH(FOLLOW_userinfo_in_paramless_uri6720); userinfo(ctx, (SCOPE_TOP(paramless_uri))->current); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleparamless_uriEx; } if (HASFAILED()) { pbelle_sip_messageParser_paramless_uriPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_hostport_in_paramless_uri6723); hostport(ctx, (SCOPE_TOP(paramless_uri))->current); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleparamless_uriEx; } if (HASFAILED()) { pbelle_sip_messageParser_paramless_uriPop(ctx); return ret; } } } break; case 2: // ../grammars/belle_sip_message.g:1791:155: hostport[$paramless_uri::current] { FOLLOWPUSH(FOLLOW_hostport_in_paramless_uri6729); hostport(ctx, (SCOPE_TOP(paramless_uri))->current); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleparamless_uriEx; } if (HASFAILED()) { pbelle_sip_messageParser_paramless_uriPop(ctx); return ret; } } break; } } // ../grammars/belle_sip_message.g:1792:4: ( headers[$paramless_uri::current] )? { int alt151=2; switch ( LA(1) ) { case QMARK: { alt151=1; } break; } switch (alt151) { case 1: // ../grammars/belle_sip_message.g:1792:4: headers[$paramless_uri::current] { FOLLOWPUSH(FOLLOW_headers_in_paramless_uri6736); headers(ctx, (SCOPE_TOP(paramless_uri))->current); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleparamless_uriEx; } if (HASFAILED()) { pbelle_sip_messageParser_paramless_uriPop(ctx); return ret; } } break; } } if ( BACKTRACKING==0 ) { ret= (SCOPE_TOP(paramless_uri))->current; } } } // This is where rules clean up and exit // goto ruleparamless_uriEx; /* Prevent compiler warnings */ ruleparamless_uriEx: ; if (HASEXCEPTION()) { /* catch(decl,action) */ { belle_sip_message("[%s] reason [%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref((SCOPE_TOP(paramless_uri))->current); ret=NULL; } } else { } pbelle_sip_messageParser_paramless_uriPop(ctx); return ret; } /* $ANTLR end paramless_uri */ /** * $ANTLR start uri * ../grammars/belle_sip_message.g:1800:1: uri returns [belle_sip_uri_t* ret=NULL] : sip_schema[$uri::current] ( ( ( userinfo[NULL] )=> userinfo[$uri::current] hostport[$uri::current] ) | hostport[$uri::current] ) ( uri_parameters[$uri::current] )? ( headers[$uri::current] )? ; */ static belle_sip_uri_t* uri(pbelle_sip_messageParser ctx) { belle_sip_uri_t* ret; /* Initialize rule variables */ ret = NULL; ctx->pbelle_sip_messageParser_uriTop = pbelle_sip_messageParser_uriPush(ctx); (SCOPE_TOP(uri))->current= belle_sip_uri_new(); { // ../grammars/belle_sip_message.g:1803:4: ( sip_schema[$uri::current] ( ( ( userinfo[NULL] )=> userinfo[$uri::current] hostport[$uri::current] ) | hostport[$uri::current] ) ( uri_parameters[$uri::current] )? ( headers[$uri::current] )? ) // ../grammars/belle_sip_message.g:1803:7: sip_schema[$uri::current] ( ( ( userinfo[NULL] )=> userinfo[$uri::current] hostport[$uri::current] ) | hostport[$uri::current] ) ( uri_parameters[$uri::current] )? ( headers[$uri::current] )? { FOLLOWPUSH(FOLLOW_sip_schema_in_uri6772); sip_schema(ctx, (SCOPE_TOP(uri))->current); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleuriEx; } if (HASFAILED()) { pbelle_sip_messageParser_uriPop(ctx); return ret; } // ../grammars/belle_sip_message.g:1803:33: ( ( ( userinfo[NULL] )=> userinfo[$uri::current] hostport[$uri::current] ) | hostport[$uri::current] ) { int alt152=2; alt152 = cdfa152.predict(ctx, RECOGNIZER, ISTREAM, &cdfa152); if (HASEXCEPTION()) { goto ruleuriEx; } if (HASFAILED()) { pbelle_sip_messageParser_uriPop(ctx); return ret; } switch (alt152) { case 1: // ../grammars/belle_sip_message.g:1803:35: ( ( userinfo[NULL] )=> userinfo[$uri::current] hostport[$uri::current] ) { // ../grammars/belle_sip_message.g:1803:35: ( ( userinfo[NULL] )=> userinfo[$uri::current] hostport[$uri::current] ) // ../grammars/belle_sip_message.g:1803:36: ( userinfo[NULL] )=> userinfo[$uri::current] hostport[$uri::current] { FOLLOWPUSH(FOLLOW_userinfo_in_uri6783); userinfo(ctx, (SCOPE_TOP(uri))->current); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleuriEx; } if (HASFAILED()) { pbelle_sip_messageParser_uriPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_hostport_in_uri6786); hostport(ctx, (SCOPE_TOP(uri))->current); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleuriEx; } if (HASFAILED()) { pbelle_sip_messageParser_uriPop(ctx); return ret; } } } break; case 2: // ../grammars/belle_sip_message.g:1803:105: hostport[$uri::current] { FOLLOWPUSH(FOLLOW_hostport_in_uri6792); hostport(ctx, (SCOPE_TOP(uri))->current); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleuriEx; } if (HASFAILED()) { pbelle_sip_messageParser_uriPop(ctx); return ret; } } break; } } // ../grammars/belle_sip_message.g:1804:4: ( uri_parameters[$uri::current] )? { int alt153=2; alt153 = cdfa153.predict(ctx, RECOGNIZER, ISTREAM, &cdfa153); if (HASEXCEPTION()) { goto ruleuriEx; } if (HASFAILED()) { pbelle_sip_messageParser_uriPop(ctx); return ret; } switch (alt153) { case 1: // ../grammars/belle_sip_message.g:1804:4: uri_parameters[$uri::current] { FOLLOWPUSH(FOLLOW_uri_parameters_in_uri6800); uri_parameters(ctx, (SCOPE_TOP(uri))->current); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleuriEx; } if (HASFAILED()) { pbelle_sip_messageParser_uriPop(ctx); return ret; } } break; } } // ../grammars/belle_sip_message.g:1805:4: ( headers[$uri::current] )? { int alt154=2; switch ( LA(1) ) { case QMARK: { alt154=1; } break; } switch (alt154) { case 1: // ../grammars/belle_sip_message.g:1805:4: headers[$uri::current] { FOLLOWPUSH(FOLLOW_headers_in_uri6807); headers(ctx, (SCOPE_TOP(uri))->current); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleuriEx; } if (HASFAILED()) { pbelle_sip_messageParser_uriPop(ctx); return ret; } } break; } } if ( BACKTRACKING==0 ) { ret= (SCOPE_TOP(uri))->current; } } } // This is where rules clean up and exit // goto ruleuriEx; /* Prevent compiler warnings */ ruleuriEx: ; if (HASEXCEPTION()) { /* catch(decl,action) */ { belle_sip_message("[%s] reason [%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref((SCOPE_TOP(uri))->current); ret=NULL; } } else { } pbelle_sip_messageParser_uriPop(ctx); return ret; } /* $ANTLR end uri */ /** * $ANTLR start fast_uri * ../grammars/belle_sip_message.g:1813:1: fast_uri returns [belle_sip_uri_t* ret=NULL] : sip_schema[$fast_uri::current] ( ( ( userinfo[NULL] )=> userinfo[$fast_uri::current] fast_hostport[$fast_uri::current] ) | fast_hostport[$fast_uri::current] ) ( uri_parameters[$fast_uri::current] )? ( headers[$fast_uri::current] )? ; */ static belle_sip_uri_t* fast_uri(pbelle_sip_messageParser ctx) { belle_sip_uri_t* ret; /* Initialize rule variables */ ret = NULL; ctx->pbelle_sip_messageParser_fast_uriTop = pbelle_sip_messageParser_fast_uriPush(ctx); (SCOPE_TOP(fast_uri))->current= belle_sip_uri_new(); { // ../grammars/belle_sip_message.g:1816:4: ( sip_schema[$fast_uri::current] ( ( ( userinfo[NULL] )=> userinfo[$fast_uri::current] fast_hostport[$fast_uri::current] ) | fast_hostport[$fast_uri::current] ) ( uri_parameters[$fast_uri::current] )? ( headers[$fast_uri::current] )? ) // ../grammars/belle_sip_message.g:1816:7: sip_schema[$fast_uri::current] ( ( ( userinfo[NULL] )=> userinfo[$fast_uri::current] fast_hostport[$fast_uri::current] ) | fast_hostport[$fast_uri::current] ) ( uri_parameters[$fast_uri::current] )? ( headers[$fast_uri::current] )? { FOLLOWPUSH(FOLLOW_sip_schema_in_fast_uri6843); sip_schema(ctx, (SCOPE_TOP(fast_uri))->current); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulefast_uriEx; } if (HASFAILED()) { pbelle_sip_messageParser_fast_uriPop(ctx); return ret; } // ../grammars/belle_sip_message.g:1816:38: ( ( ( userinfo[NULL] )=> userinfo[$fast_uri::current] fast_hostport[$fast_uri::current] ) | fast_hostport[$fast_uri::current] ) { int alt155=2; alt155 = cdfa155.predict(ctx, RECOGNIZER, ISTREAM, &cdfa155); if (HASEXCEPTION()) { goto rulefast_uriEx; } if (HASFAILED()) { pbelle_sip_messageParser_fast_uriPop(ctx); return ret; } switch (alt155) { case 1: // ../grammars/belle_sip_message.g:1816:40: ( ( userinfo[NULL] )=> userinfo[$fast_uri::current] fast_hostport[$fast_uri::current] ) { // ../grammars/belle_sip_message.g:1816:40: ( ( userinfo[NULL] )=> userinfo[$fast_uri::current] fast_hostport[$fast_uri::current] ) // ../grammars/belle_sip_message.g:1816:41: ( userinfo[NULL] )=> userinfo[$fast_uri::current] fast_hostport[$fast_uri::current] { FOLLOWPUSH(FOLLOW_userinfo_in_fast_uri6854); userinfo(ctx, (SCOPE_TOP(fast_uri))->current); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulefast_uriEx; } if (HASFAILED()) { pbelle_sip_messageParser_fast_uriPop(ctx); return ret; } FOLLOWPUSH(FOLLOW_fast_hostport_in_fast_uri6857); fast_hostport(ctx, (SCOPE_TOP(fast_uri))->current); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulefast_uriEx; } if (HASFAILED()) { pbelle_sip_messageParser_fast_uriPop(ctx); return ret; } } } break; case 2: // ../grammars/belle_sip_message.g:1816:125: fast_hostport[$fast_uri::current] { FOLLOWPUSH(FOLLOW_fast_hostport_in_fast_uri6863); fast_hostport(ctx, (SCOPE_TOP(fast_uri))->current); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulefast_uriEx; } if (HASFAILED()) { pbelle_sip_messageParser_fast_uriPop(ctx); return ret; } } break; } } // ../grammars/belle_sip_message.g:1817:4: ( uri_parameters[$fast_uri::current] )? { int alt156=2; alt156 = cdfa156.predict(ctx, RECOGNIZER, ISTREAM, &cdfa156); if (HASEXCEPTION()) { goto rulefast_uriEx; } if (HASFAILED()) { pbelle_sip_messageParser_fast_uriPop(ctx); return ret; } switch (alt156) { case 1: // ../grammars/belle_sip_message.g:1817:4: uri_parameters[$fast_uri::current] { FOLLOWPUSH(FOLLOW_uri_parameters_in_fast_uri6871); uri_parameters(ctx, (SCOPE_TOP(fast_uri))->current); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulefast_uriEx; } if (HASFAILED()) { pbelle_sip_messageParser_fast_uriPop(ctx); return ret; } } break; } } // ../grammars/belle_sip_message.g:1818:4: ( headers[$fast_uri::current] )? { int alt157=2; switch ( LA(1) ) { case QMARK: { alt157=1; } break; } switch (alt157) { case 1: // ../grammars/belle_sip_message.g:1818:4: headers[$fast_uri::current] { FOLLOWPUSH(FOLLOW_headers_in_fast_uri6878); headers(ctx, (SCOPE_TOP(fast_uri))->current); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulefast_uriEx; } if (HASFAILED()) { pbelle_sip_messageParser_fast_uriPop(ctx); return ret; } } break; } } if ( BACKTRACKING==0 ) { ret= (SCOPE_TOP(fast_uri))->current; } } } // This is where rules clean up and exit // goto rulefast_uriEx; /* Prevent compiler warnings */ rulefast_uriEx: ; if (HASEXCEPTION()) { /* catch(decl,action) */ { belle_sip_message("[%s] reason [%s]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message); belle_sip_object_unref((SCOPE_TOP(fast_uri))->current); ret=NULL; } } else { } pbelle_sip_messageParser_fast_uriPop(ctx); return ret; } /* $ANTLR end fast_uri */ /** * $ANTLR start sip_token * ../grammars/belle_sip_message.g:1827:1: sip_token :{...}? token ; */ static void sip_token(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:1827:10: ({...}? token ) // ../grammars/belle_sip_message.g:1827:13: {...}? token { if ( !((IS_TOKEN(sip))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(sip)"; EXCEPTION->ruleName = (void *)"sip_token"; } FOLLOWPUSH(FOLLOW_token_in_sip_token6899); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesip_tokenEx; } if (HASFAILED()) { return ; } } } // This is where rules clean up and exit // goto rulesip_tokenEx; /* Prevent compiler warnings */ rulesip_tokenEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end sip_token */ /** * $ANTLR start sips_token * ../grammars/belle_sip_message.g:1828:1: sips_token :{...}? token ; */ static void sips_token(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:1828:11: ({...}? token ) // ../grammars/belle_sip_message.g:1828:14: {...}? token { if ( !((IS_TOKEN(sips))) ) { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_FAILED_PREDICATE_EXCEPTION; EXCEPTION->message = (void *)"IS_TOKEN(sips)"; EXCEPTION->ruleName = (void *)"sips_token"; } FOLLOWPUSH(FOLLOW_token_in_sips_token6908); token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesips_tokenEx; } if (HASFAILED()) { return ; } } } // This is where rules clean up and exit // goto rulesips_tokenEx; /* Prevent compiler warnings */ rulesips_tokenEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end sips_token */ /** * $ANTLR start sip_schema * ../grammars/belle_sip_message.g:1830:1: sip_schema[belle_sip_uri_t* uri] : ( sips_token | sip_token ) COLON ; */ static void sip_schema(pbelle_sip_messageParser ctx, belle_sip_uri_t* uri) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:1830:35: ( ( sips_token | sip_token ) COLON ) // ../grammars/belle_sip_message.g:1830:37: ( sips_token | sip_token ) COLON { // ../grammars/belle_sip_message.g:1830:37: ( sips_token | sip_token ) { int alt158=2; switch ( LA(1) ) { case COMMON_CHAR: case HEX_CHAR: { { int LA158_1 = LA(2); if ( ((IS_TOKEN(sips)))) { alt158=1; } else if ( ((IS_TOKEN(sip)))) { alt158=2; } else { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 158; EXCEPTION->state = 1; goto rulesip_schemaEx; } } } break; case DIGIT: { { int LA158_2 = LA(2); if ( ((IS_TOKEN(sips)))) { alt158=1; } else if ( ((IS_TOKEN(sip)))) { alt158=2; } else { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 158; EXCEPTION->state = 2; goto rulesip_schemaEx; } } } break; case DASH: case DOT: case EMARK: case LPAREN: case RPAREN: case SQUOTE: case STAR: case TILDE: case USCORE: { { int LA158_3 = LA(2); if ( ((IS_TOKEN(sips)))) { alt158=1; } else if ( ((IS_TOKEN(sip)))) { alt158=2; } else { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 158; EXCEPTION->state = 3; goto rulesip_schemaEx; } } } break; case PERCENT: { { int LA158_4 = LA(2); if ( ((IS_TOKEN(sips)))) { alt158=1; } else if ( ((IS_TOKEN(sip)))) { alt158=2; } else { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 158; EXCEPTION->state = 4; goto rulesip_schemaEx; } } } break; case PLUS: { { int LA158_5 = LA(2); if ( ((IS_TOKEN(sips)))) { alt158=1; } else if ( ((IS_TOKEN(sip)))) { alt158=2; } else { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 158; EXCEPTION->state = 5; goto rulesip_schemaEx; } } } break; case BQUOTE: { { int LA158_6 = LA(2); if ( ((IS_TOKEN(sips)))) { alt158=1; } else if ( ((IS_TOKEN(sip)))) { alt158=2; } else { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 158; EXCEPTION->state = 6; goto rulesip_schemaEx; } } } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 158; EXCEPTION->state = 0; goto rulesip_schemaEx; } switch (alt158) { case 1: // ../grammars/belle_sip_message.g:1830:38: sips_token { FOLLOWPUSH(FOLLOW_sips_token_in_sip_schema6919); sips_token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesip_schemaEx; } if (HASFAILED()) { return ; } if ( BACKTRACKING==0 ) { belle_sip_uri_set_secure(uri,1); } } break; case 2: // ../grammars/belle_sip_message.g:1831:15: sip_token { FOLLOWPUSH(FOLLOW_sip_token_in_sip_schema6937); sip_token(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesip_schemaEx; } if (HASFAILED()) { return ; } } break; } } MATCHT(COLON, &FOLLOW_COLON_in_sip_schema6940); if (HASEXCEPTION()) { goto rulesip_schemaEx; } if (HASFAILED()) { return ; } } } // This is where rules clean up and exit // goto rulesip_schemaEx; /* Prevent compiler warnings */ rulesip_schemaEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end sip_schema */ /** * $ANTLR start userinfo * ../grammars/belle_sip_message.g:1832:1: userinfo[belle_sip_uri_t* uri] : user ( COLON password )? AT ; */ static void userinfo(pbelle_sip_messageParser ctx, belle_sip_uri_t* uri) { /* Initialize rule variables */ ctx->pbelle_sip_messageParser_userinfoTop = pbelle_sip_messageParser_userinfoPush(ctx); (SCOPE_TOP(userinfo))->current=uri; { // ../grammars/belle_sip_message.g:1835:8: ( user ( COLON password )? AT ) // ../grammars/belle_sip_message.g:1835:11: user ( COLON password )? AT { FOLLOWPUSH(FOLLOW_user_in_userinfo6966); user(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleuserinfoEx; } if (HASFAILED()) { pbelle_sip_messageParser_userinfoPop(ctx); return ; } // ../grammars/belle_sip_message.g:1835:16: ( COLON password )? { int alt159=2; switch ( LA(1) ) { case COLON: { alt159=1; } break; } switch (alt159) { case 1: // ../grammars/belle_sip_message.g:1835:18: COLON password { MATCHT(COLON, &FOLLOW_COLON_in_userinfo6970); if (HASEXCEPTION()) { goto ruleuserinfoEx; } if (HASFAILED()) { pbelle_sip_messageParser_userinfoPop(ctx); return ; } FOLLOWPUSH(FOLLOW_password_in_userinfo6972); password(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleuserinfoEx; } if (HASFAILED()) { pbelle_sip_messageParser_userinfoPop(ctx); return ; } } break; } } MATCHT(AT, &FOLLOW_AT_in_userinfo6978); if (HASEXCEPTION()) { goto ruleuserinfoEx; } if (HASFAILED()) { pbelle_sip_messageParser_userinfoPop(ctx); return ; } } } // This is where rules clean up and exit // goto ruleuserinfoEx; /* Prevent compiler warnings */ ruleuserinfoEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } pbelle_sip_messageParser_userinfoPop(ctx); return ; } /* $ANTLR end userinfo */ /** * $ANTLR start user * ../grammars/belle_sip_message.g:1836:1: user : ( unreserved | escaped | user_unreserved )+ ; */ static belle_sip_messageParser_user_return user(pbelle_sip_messageParser ctx) { belle_sip_messageParser_user_return retval; /* Initialize rule variables */ retval.start = LT(1); retval.stop = retval.start; { // ../grammars/belle_sip_message.g:1836:17: ( ( unreserved | escaped | user_unreserved )+ ) // ../grammars/belle_sip_message.g:1836:21: ( unreserved | escaped | user_unreserved )+ { // ../grammars/belle_sip_message.g:1836:21: ( unreserved | escaped | user_unreserved )+ { int cnt160=0; for (;;) { int alt160=4; switch ( LA(1) ) { case COMMON_CHAR: case DASH: case DIGIT: case DOT: case EMARK: case HEX_CHAR: case LPAREN: case RPAREN: case SQUOTE: case STAR: case TILDE: case USCORE: { alt160=1; } break; case PERCENT: { alt160=2; } break; case AND: case COMMA: case DOLLARD: case EQUAL: case PLUS: case QMARK: case SEMI: case SLASH: { alt160=3; } break; } switch (alt160) { case 1: // ../grammars/belle_sip_message.g:1836:23: unreserved { FOLLOWPUSH(FOLLOW_unreserved_in_user7000); unreserved(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleuserEx; } if (HASFAILED()) { return retval; } } break; case 2: // ../grammars/belle_sip_message.g:1836:37: escaped { FOLLOWPUSH(FOLLOW_escaped_in_user7005); escaped(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleuserEx; } if (HASFAILED()) { return retval; } } break; case 3: // ../grammars/belle_sip_message.g:1836:47: user_unreserved { FOLLOWPUSH(FOLLOW_user_unreserved_in_user7009); user_unreserved(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleuserEx; } if (HASFAILED()) { return retval; } } break; default: if ( cnt160 >= 1 ) { goto loop160; } if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } /* mismatchedSetEx() */ CONSTRUCTEX(); EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME; goto ruleuserEx; } cnt160++; } loop160: ; /* Jump to here if this rule does not match */ } if ( BACKTRACKING==0 ) { char* unescaped_username; unescaped_username=belle_sip_to_unescaped_string((const char *)STRSTREAM->toStringTT(STRSTREAM, retval.start, LT(-1)) ->chars); belle_sip_uri_set_user((SCOPE_TOP(userinfo))->current,unescaped_username); belle_sip_free(unescaped_username); } } } // This is where rules clean up and exit // goto ruleuserEx; /* Prevent compiler warnings */ ruleuserEx: ; retval.stop = LT(-1); if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end user */ /** * $ANTLR start password * ../grammars/belle_sip_message.g:1842:1: password : ( unreserved | escaped | AND | EQUAL | PLUS | DOLLARD | COMMA )* ; */ static belle_sip_messageParser_password_return password(pbelle_sip_messageParser ctx) { belle_sip_messageParser_password_return retval; /* Initialize rule variables */ retval.start = LT(1); retval.stop = retval.start; { // ../grammars/belle_sip_message.g:1842:17: ( ( unreserved | escaped | AND | EQUAL | PLUS | DOLLARD | COMMA )* ) // ../grammars/belle_sip_message.g:1842:21: ( unreserved | escaped | AND | EQUAL | PLUS | DOLLARD | COMMA )* { // ../grammars/belle_sip_message.g:1842:21: ( unreserved | escaped | AND | EQUAL | PLUS | DOLLARD | COMMA )* for (;;) { int alt161=8; switch ( LA(1) ) { case COMMON_CHAR: case DASH: case DIGIT: case DOT: case EMARK: case HEX_CHAR: case LPAREN: case RPAREN: case SQUOTE: case STAR: case TILDE: case USCORE: { alt161=1; } break; case PERCENT: { alt161=2; } break; case AND: { alt161=3; } break; case EQUAL: { alt161=4; } break; case PLUS: { alt161=5; } break; case DOLLARD: { alt161=6; } break; case COMMA: { alt161=7; } break; } switch (alt161) { case 1: // ../grammars/belle_sip_message.g:1842:23: unreserved { FOLLOWPUSH(FOLLOW_unreserved_in_password7032); unreserved(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulepasswordEx; } if (HASFAILED()) { return retval; } } break; case 2: // ../grammars/belle_sip_message.g:1842:36: escaped { FOLLOWPUSH(FOLLOW_escaped_in_password7036); escaped(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulepasswordEx; } if (HASFAILED()) { return retval; } } break; case 3: // ../grammars/belle_sip_message.g:1842:45: AND { MATCHT(AND, &FOLLOW_AND_in_password7039); if (HASEXCEPTION()) { goto rulepasswordEx; } if (HASFAILED()) { return retval; } } break; case 4: // ../grammars/belle_sip_message.g:1842:51: EQUAL { MATCHT(EQUAL, &FOLLOW_EQUAL_in_password7043); if (HASEXCEPTION()) { goto rulepasswordEx; } if (HASFAILED()) { return retval; } } break; case 5: // ../grammars/belle_sip_message.g:1842:59: PLUS { MATCHT(PLUS, &FOLLOW_PLUS_in_password7047); if (HASEXCEPTION()) { goto rulepasswordEx; } if (HASFAILED()) { return retval; } } break; case 6: // ../grammars/belle_sip_message.g:1842:66: DOLLARD { MATCHT(DOLLARD, &FOLLOW_DOLLARD_in_password7051); if (HASEXCEPTION()) { goto rulepasswordEx; } if (HASFAILED()) { return retval; } } break; case 7: // ../grammars/belle_sip_message.g:1842:76: COMMA { MATCHT(COMMA, &FOLLOW_COMMA_in_password7055); if (HASEXCEPTION()) { goto rulepasswordEx; } if (HASFAILED()) { return retval; } } break; default: goto loop161; /* break out of the loop */ break; } } loop161: ; /* Jump out to here if this rule does not match */ if ( BACKTRACKING==0 ) { char* unescaped_userpasswd; const char* source = (const char*)STRSTREAM->toStringTT(STRSTREAM, retval.start, LT(-1)) ->chars; if( source != NULL ){ unescaped_userpasswd=belle_sip_to_unescaped_string((const char *)source); belle_sip_uri_set_user_password((SCOPE_TOP(userinfo))->current,unescaped_userpasswd); belle_sip_free(unescaped_userpasswd); } } } } // This is where rules clean up and exit // goto rulepasswordEx; /* Prevent compiler warnings */ rulepasswordEx: ; retval.stop = LT(-1); if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end password */ /** * $ANTLR start hostport * ../grammars/belle_sip_message.g:1851:1: hostport[belle_sip_uri_t* uri] : host ( COLON port )? ; */ static void hostport(pbelle_sip_messageParser ctx, belle_sip_uri_t* uri) { belle_sip_messageParser_port_return port119; #undef RETURN_TYPE_port119 #define RETURN_TYPE_port119 belle_sip_messageParser_port_return const char* host120; #undef RETURN_TYPE_host120 #define RETURN_TYPE_host120 const char* /* Initialize rule variables */ ctx->pbelle_sip_messageParser_hostportTop = pbelle_sip_messageParser_hostportPush(ctx); (SCOPE_TOP(hostport))->current=uri; { // ../grammars/belle_sip_message.g:1854:9: ( host ( COLON port )? ) // ../grammars/belle_sip_message.g:1854:13: host ( COLON port )? { FOLLOWPUSH(FOLLOW_host_in_hostport7087); host120=host(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulehostportEx; } if (HASFAILED()) { pbelle_sip_messageParser_hostportPop(ctx); return ; } // ../grammars/belle_sip_message.g:1854:18: ( COLON port )? { int alt162=2; switch ( LA(1) ) { case COLON: { alt162=1; } break; } switch (alt162) { case 1: // ../grammars/belle_sip_message.g:1854:20: COLON port { MATCHT(COLON, &FOLLOW_COLON_in_hostport7091); if (HASEXCEPTION()) { goto rulehostportEx; } if (HASFAILED()) { pbelle_sip_messageParser_hostportPop(ctx); return ; } FOLLOWPUSH(FOLLOW_port_in_hostport7093); port119=port(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulehostportEx; } if (HASFAILED()) { pbelle_sip_messageParser_hostportPop(ctx); return ; } if ( BACKTRACKING==0 ) { belle_sip_uri_set_port((SCOPE_TOP(hostport))->current, port119.ret ); } } break; } } if ( BACKTRACKING==0 ) { belle_sip_uri_set_host((SCOPE_TOP(hostport))->current, host120 ); } } } // This is where rules clean up and exit // goto rulehostportEx; /* Prevent compiler warnings */ rulehostportEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } pbelle_sip_messageParser_hostportPop(ctx); return ; } /* $ANTLR end hostport */ /** * $ANTLR start fast_hostport * ../grammars/belle_sip_message.g:1856:1: fast_hostport[belle_sip_uri_t* uri] : fast_host ( COLON port )? ; */ static void fast_hostport(pbelle_sip_messageParser ctx, belle_sip_uri_t* uri) { belle_sip_messageParser_port_return port121; #undef RETURN_TYPE_port121 #define RETURN_TYPE_port121 belle_sip_messageParser_port_return const char* fast_host122; #undef RETURN_TYPE_fast_host122 #define RETURN_TYPE_fast_host122 const char* /* Initialize rule variables */ ctx->pbelle_sip_messageParser_fast_hostportTop = pbelle_sip_messageParser_fast_hostportPush(ctx); (SCOPE_TOP(fast_hostport))->current=uri; { // ../grammars/belle_sip_message.g:1859:9: ( fast_host ( COLON port )? ) // ../grammars/belle_sip_message.g:1859:12: fast_host ( COLON port )? { FOLLOWPUSH(FOLLOW_fast_host_in_fast_hostport7126); fast_host122=fast_host(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulefast_hostportEx; } if (HASFAILED()) { pbelle_sip_messageParser_fast_hostportPop(ctx); return ; } // ../grammars/belle_sip_message.g:1859:22: ( COLON port )? { int alt163=2; switch ( LA(1) ) { case COLON: { alt163=1; } break; } switch (alt163) { case 1: // ../grammars/belle_sip_message.g:1859:24: COLON port { MATCHT(COLON, &FOLLOW_COLON_in_fast_hostport7130); if (HASEXCEPTION()) { goto rulefast_hostportEx; } if (HASFAILED()) { pbelle_sip_messageParser_fast_hostportPop(ctx); return ; } FOLLOWPUSH(FOLLOW_port_in_fast_hostport7132); port121=port(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulefast_hostportEx; } if (HASFAILED()) { pbelle_sip_messageParser_fast_hostportPop(ctx); return ; } if ( BACKTRACKING==0 ) { belle_sip_uri_set_port((SCOPE_TOP(fast_hostport))->current, port121.ret ); } } break; } } if ( BACKTRACKING==0 ) { belle_sip_uri_set_host((SCOPE_TOP(fast_hostport))->current, fast_host122 ); } } } // This is where rules clean up and exit // goto rulefast_hostportEx; /* Prevent compiler warnings */ rulefast_hostportEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } pbelle_sip_messageParser_fast_hostportPop(ctx); return ; } /* $ANTLR end fast_hostport */ /** * $ANTLR start uri_parameters * ../grammars/belle_sip_message.g:1862:1: uri_parameters[belle_sip_uri_t* uri] : ( ( semi uri_parameter ) | ( ( lws )? SEMI ) )+ ; */ static void uri_parameters(pbelle_sip_messageParser ctx, belle_sip_uri_t* uri) { /* Initialize rule variables */ ctx->pbelle_sip_messageParser_uri_parametersTop = pbelle_sip_messageParser_uri_parametersPush(ctx); (SCOPE_TOP(uri_parameters))->current=uri; { // ../grammars/belle_sip_message.g:1865:3: ( ( ( semi uri_parameter ) | ( ( lws )? SEMI ) )+ ) // ../grammars/belle_sip_message.g:1865:7: ( ( semi uri_parameter ) | ( ( lws )? SEMI ) )+ { // ../grammars/belle_sip_message.g:1865:7: ( ( semi uri_parameter ) | ( ( lws )? SEMI ) )+ { int cnt165=0; for (;;) { int alt165=3; alt165 = cdfa165.predict(ctx, RECOGNIZER, ISTREAM, &cdfa165); if (HASEXCEPTION()) { goto ruleuri_parametersEx; } if (HASFAILED()) { pbelle_sip_messageParser_uri_parametersPop(ctx); return ; } switch (alt165) { case 1: // ../grammars/belle_sip_message.g:1865:9: ( semi uri_parameter ) { // ../grammars/belle_sip_message.g:1865:9: ( semi uri_parameter ) // ../grammars/belle_sip_message.g:1865:10: semi uri_parameter { FOLLOWPUSH(FOLLOW_semi_in_uri_parameters7164); semi(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleuri_parametersEx; } if (HASFAILED()) { pbelle_sip_messageParser_uri_parametersPop(ctx); return ; } FOLLOWPUSH(FOLLOW_uri_parameter_in_uri_parameters7166); uri_parameter(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleuri_parametersEx; } if (HASFAILED()) { pbelle_sip_messageParser_uri_parametersPop(ctx); return ; } } } break; case 2: // ../grammars/belle_sip_message.g:1865:30: ( ( lws )? SEMI ) { // ../grammars/belle_sip_message.g:1865:30: ( ( lws )? SEMI ) // ../grammars/belle_sip_message.g:1865:31: ( lws )? SEMI { // ../grammars/belle_sip_message.g:1865:31: ( lws )? { int alt164=2; switch ( LA(1) ) { case CRLF: case SP: { alt164=1; } break; } switch (alt164) { case 1: // ../grammars/belle_sip_message.g:1865:31: lws { FOLLOWPUSH(FOLLOW_lws_in_uri_parameters7170); lws(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleuri_parametersEx; } if (HASFAILED()) { pbelle_sip_messageParser_uri_parametersPop(ctx); return ; } } break; } } MATCHT(SEMI, &FOLLOW_SEMI_in_uri_parameters7173); if (HASEXCEPTION()) { goto ruleuri_parametersEx; } if (HASFAILED()) { pbelle_sip_messageParser_uri_parametersPop(ctx); return ; } } } break; default: if ( cnt165 >= 1 ) { goto loop165; } if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_uri_parametersPop(ctx); return ; } /* mismatchedSetEx() */ CONSTRUCTEX(); EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME; goto ruleuri_parametersEx; } cnt165++; } loop165: ; /* Jump to here if this rule does not match */ } } } // This is where rules clean up and exit // goto ruleuri_parametersEx; /* Prevent compiler warnings */ ruleuri_parametersEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } pbelle_sip_messageParser_uri_parametersPop(ctx); return ; } /* $ANTLR end uri_parameters */ /** * $ANTLR start uri_parameter * ../grammars/belle_sip_message.g:1866:1: uri_parameter : other_param ; */ static void uri_parameter(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:1867:3: ( other_param ) // ../grammars/belle_sip_message.g:1867:8: other_param { FOLLOWPUSH(FOLLOW_other_param_in_uri_parameter7193); other_param(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleuri_parameterEx; } if (HASFAILED()) { return ; } } } // This is where rules clean up and exit // goto ruleuri_parameterEx; /* Prevent compiler warnings */ ruleuri_parameterEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end uri_parameter */ /** * $ANTLR start other_param * ../grammars/belle_sip_message.g:1868:1: other_param : ( pname | ( pname EQUAL pvalue ) ); */ static void other_param(pbelle_sip_messageParser ctx) { belle_sip_messageParser_pname_return pname123; #undef RETURN_TYPE_pname123 #define RETURN_TYPE_pname123 belle_sip_messageParser_pname_return belle_sip_messageParser_pname_return pname124; #undef RETURN_TYPE_pname124 #define RETURN_TYPE_pname124 belle_sip_messageParser_pname_return belle_sip_messageParser_pvalue_return pvalue125; #undef RETURN_TYPE_pvalue125 #define RETURN_TYPE_pvalue125 belle_sip_messageParser_pvalue_return /* Initialize rule variables */ { { // ../grammars/belle_sip_message.g:1869:4: ( pname | ( pname EQUAL pvalue ) ) ANTLR3_UINT32 alt166; alt166=2; alt166 = cdfa166.predict(ctx, RECOGNIZER, ISTREAM, &cdfa166); if (HASEXCEPTION()) { goto ruleother_paramEx; } if (HASFAILED()) { return ; } switch (alt166) { case 1: // ../grammars/belle_sip_message.g:1869:4: pname { FOLLOWPUSH(FOLLOW_pname_in_other_param7202); pname123=pname(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleother_paramEx; } if (HASFAILED()) { return ; } if ( BACKTRACKING==0 ) { char* unescaped_parameters = belle_sip_to_unescaped_string((const char *) (STRSTREAM->toStringTT(STRSTREAM, pname123.start, pname123.stop)) ->chars); belle_sip_parameters_set_parameter(BELLE_SIP_PARAMETERS((SCOPE_TOP(uri_parameters))->current) ,unescaped_parameters ,NULL); belle_sip_free(unescaped_parameters); } } break; case 2: // ../grammars/belle_sip_message.g:1877:4: ( pname EQUAL pvalue ) { // ../grammars/belle_sip_message.g:1877:4: ( pname EQUAL pvalue ) // ../grammars/belle_sip_message.g:1877:5: pname EQUAL pvalue { FOLLOWPUSH(FOLLOW_pname_in_other_param7214); pname124=pname(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleother_paramEx; } if (HASFAILED()) { return ; } MATCHT(EQUAL, &FOLLOW_EQUAL_in_other_param7216); if (HASEXCEPTION()) { goto ruleother_paramEx; } if (HASFAILED()) { return ; } FOLLOWPUSH(FOLLOW_pvalue_in_other_param7218); pvalue125=pvalue(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleother_paramEx; } if (HASFAILED()) { return ; } } if ( BACKTRACKING==0 ) { char* unescaped_pname = belle_sip_to_unescaped_string((const char *) (STRSTREAM->toStringTT(STRSTREAM, pname124.start, pname124.stop)) ->chars); char* unescaped_pvalue = belle_sip_to_unescaped_string((const char *) (STRSTREAM->toStringTT(STRSTREAM, pvalue125.start, pvalue125.stop)) ->chars); belle_sip_parameters_set_parameter(BELLE_SIP_PARAMETERS((SCOPE_TOP(uri_parameters))->current) ,unescaped_pname ,unescaped_pvalue); belle_sip_free(unescaped_pname); belle_sip_free(unescaped_pvalue); } } break; } } } // This is where rules clean up and exit // goto ruleother_paramEx; /* Prevent compiler warnings */ ruleother_paramEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end other_param */ /** * $ANTLR start pname * ../grammars/belle_sip_message.g:1888:1: pname : ( paramchar )+ ; */ static belle_sip_messageParser_pname_return pname(pbelle_sip_messageParser ctx) { belle_sip_messageParser_pname_return retval; /* Initialize rule variables */ retval.start = LT(1); retval.stop = retval.start; { // ../grammars/belle_sip_message.g:1889:3: ( ( paramchar )+ ) // ../grammars/belle_sip_message.g:1889:7: ( paramchar )+ { // ../grammars/belle_sip_message.g:1889:7: ( paramchar )+ { int cnt167=0; for (;;) { int alt167=2; switch ( LA(1) ) { case AND: case COLON: case COMMON_CHAR: case DASH: case DIGIT: case DOLLARD: case DOT: case EMARK: case HEX_CHAR: case LPAREN: case LSBRAQUET: case PERCENT: case PLUS: case RPAREN: case RSBRAQUET: case SLASH: case SQUOTE: case STAR: case TILDE: case USCORE: { alt167=1; } break; } switch (alt167) { case 1: // ../grammars/belle_sip_message.g:1889:7: paramchar { FOLLOWPUSH(FOLLOW_paramchar_in_pname7238); paramchar(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulepnameEx; } if (HASFAILED()) { return retval; } } break; default: if ( cnt167 >= 1 ) { goto loop167; } if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } /* mismatchedSetEx() */ CONSTRUCTEX(); EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME; goto rulepnameEx; } cnt167++; } loop167: ; /* Jump to here if this rule does not match */ } } } // This is where rules clean up and exit // goto rulepnameEx; /* Prevent compiler warnings */ rulepnameEx: ; retval.stop = LT(-1); if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end pname */ /** * $ANTLR start pvalue * ../grammars/belle_sip_message.g:1890:1: pvalue : ( paramchar )+ ; */ static belle_sip_messageParser_pvalue_return pvalue(pbelle_sip_messageParser ctx) { belle_sip_messageParser_pvalue_return retval; /* Initialize rule variables */ retval.start = LT(1); retval.stop = retval.start; { // ../grammars/belle_sip_message.g:1891:3: ( ( paramchar )+ ) // ../grammars/belle_sip_message.g:1891:7: ( paramchar )+ { // ../grammars/belle_sip_message.g:1891:7: ( paramchar )+ { int cnt168=0; for (;;) { int alt168=2; switch ( LA(1) ) { case AND: case COLON: case COMMON_CHAR: case DASH: case DIGIT: case DOLLARD: case DOT: case EMARK: case HEX_CHAR: case LPAREN: case LSBRAQUET: case PERCENT: case PLUS: case RPAREN: case RSBRAQUET: case SLASH: case SQUOTE: case STAR: case TILDE: case USCORE: { alt168=1; } break; } switch (alt168) { case 1: // ../grammars/belle_sip_message.g:1891:7: paramchar { FOLLOWPUSH(FOLLOW_paramchar_in_pvalue7250); paramchar(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulepvalueEx; } if (HASFAILED()) { return retval; } } break; default: if ( cnt168 >= 1 ) { goto loop168; } if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } /* mismatchedSetEx() */ CONSTRUCTEX(); EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME; goto rulepvalueEx; } cnt168++; } loop168: ; /* Jump to here if this rule does not match */ } } } // This is where rules clean up and exit // goto rulepvalueEx; /* Prevent compiler warnings */ rulepvalueEx: ; retval.stop = LT(-1); if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end pvalue */ /** * $ANTLR start paramchar * ../grammars/belle_sip_message.g:1892:1: paramchar : ( ( param_unreserved )=> param_unreserved | unreserved | escaped ); */ static void paramchar(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { { // ../grammars/belle_sip_message.g:1893:3: ( ( param_unreserved )=> param_unreserved | unreserved | escaped ) ANTLR3_UINT32 alt169; alt169=3; { int LA169_0 = LA(1); if ( (LA169_0 == DOT)) { { int LA169_1 = LA(2); if ( (synpred12_belle_sip_message(ctx))) { alt169=1; } else if ( (ANTLR3_TRUE)) { alt169=2; } else { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 169; EXCEPTION->state = 1; goto ruleparamcharEx; } } } else if ( (LA169_0 == COMMON_CHAR || ((LA169_0 >= DASH) && (LA169_0 <= DIGIT)) || LA169_0 == EMARK || LA169_0 == HEX_CHAR || LA169_0 == LPAREN || LA169_0 == RPAREN || ((LA169_0 >= SQUOTE) && (LA169_0 <= USCORE)))) { alt169=2; } else if ( (synpred12_belle_sip_message(ctx)) && (LA169_0 == AND || LA169_0 == COLON || LA169_0 == DOLLARD || LA169_0 == LSBRAQUET || LA169_0 == PLUS || LA169_0 == RSBRAQUET || LA169_0 == SLASH)) { alt169=1; } else if ( (LA169_0 == PERCENT)) { alt169=3; } else { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 169; EXCEPTION->state = 0; goto ruleparamcharEx; } } switch (alt169) { case 1: // ../grammars/belle_sip_message.g:1893:7: ( param_unreserved )=> param_unreserved { FOLLOWPUSH(FOLLOW_param_unreserved_in_paramchar7266); param_unreserved(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleparamcharEx; } if (HASFAILED()) { return ; } } break; case 2: // ../grammars/belle_sip_message.g:1893:46: unreserved { FOLLOWPUSH(FOLLOW_unreserved_in_paramchar7270); unreserved(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleparamcharEx; } if (HASFAILED()) { return ; } } break; case 3: // ../grammars/belle_sip_message.g:1893:59: escaped { FOLLOWPUSH(FOLLOW_escaped_in_paramchar7274); escaped(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleparamcharEx; } if (HASFAILED()) { return ; } } break; } } } // This is where rules clean up and exit // goto ruleparamcharEx; /* Prevent compiler warnings */ ruleparamcharEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end paramchar */ /** * $ANTLR start param_unreserved * ../grammars/belle_sip_message.g:1894:1: param_unreserved : ( LSBRAQUET | RSBRAQUET | SLASH | COLON | AND | PLUS | DOLLARD | DOT ); */ static void param_unreserved(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:1895:3: ( LSBRAQUET | RSBRAQUET | SLASH | COLON | AND | PLUS | DOLLARD | DOT ) // ../grammars/belle_sip_message.g: { if ( LA(1) == AND || LA(1) == COLON || ((LA(1) >= DOLLARD) && (LA(1) <= DOT)) || LA(1) == LSBRAQUET || LA(1) == PLUS || LA(1) == RSBRAQUET || LA(1) == SLASH ) { CONSUME(); PERRORRECOVERY=ANTLR3_FALSE; FAILEDFLAG=ANTLR3_FALSE; } else { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_MISMATCHED_SET_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_MISMATCHED_SET_NAME; EXCEPTION->expectingSet = NULL; goto ruleparam_unreservedEx; } } } // This is where rules clean up and exit // goto ruleparam_unreservedEx; /* Prevent compiler warnings */ ruleparam_unreservedEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end param_unreserved */ /** * $ANTLR start headers * ../grammars/belle_sip_message.g:1897:1: headers[belle_sip_uri_t* uri] : QMARK uri_header ( AND uri_header )* ; */ static void headers(pbelle_sip_messageParser ctx, belle_sip_uri_t* uri) { /* Initialize rule variables */ ctx->pbelle_sip_messageParser_headersTop = pbelle_sip_messageParser_headersPush(ctx); (SCOPE_TOP(headers))->current=uri; (SCOPE_TOP(headers))->is_hvalue=0; { // ../grammars/belle_sip_message.g:1900:17: ( QMARK uri_header ( AND uri_header )* ) // ../grammars/belle_sip_message.g:1900:20: QMARK uri_header ( AND uri_header )* { MATCHT(QMARK, &FOLLOW_QMARK_in_headers7348); if (HASEXCEPTION()) { goto ruleheadersEx; } if (HASFAILED()) { pbelle_sip_messageParser_headersPop(ctx); return ; } FOLLOWPUSH(FOLLOW_uri_header_in_headers7350); uri_header(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheadersEx; } if (HASFAILED()) { pbelle_sip_messageParser_headersPop(ctx); return ; } // ../grammars/belle_sip_message.g:1900:37: ( AND uri_header )* for (;;) { int alt170=2; switch ( LA(1) ) { case AND: { alt170=1; } break; } switch (alt170) { case 1: // ../grammars/belle_sip_message.g:1900:39: AND uri_header { MATCHT(AND, &FOLLOW_AND_in_headers7354); if (HASEXCEPTION()) { goto ruleheadersEx; } if (HASFAILED()) { pbelle_sip_messageParser_headersPop(ctx); return ; } FOLLOWPUSH(FOLLOW_uri_header_in_headers7356); uri_header(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleheadersEx; } if (HASFAILED()) { pbelle_sip_messageParser_headersPop(ctx); return ; } } break; default: goto loop170; /* break out of the loop */ break; } } loop170: ; /* Jump out to here if this rule does not match */ } } // This is where rules clean up and exit // goto ruleheadersEx; /* Prevent compiler warnings */ ruleheadersEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } pbelle_sip_messageParser_headersPop(ctx); return ; } /* $ANTLR end headers */ /** * $ANTLR start uri_header * ../grammars/belle_sip_message.g:1901:1: uri_header : hname EQUAL ( hvalue )? ; */ static void uri_header(pbelle_sip_messageParser ctx) { belle_sip_messageParser_hname_return hname126; #undef RETURN_TYPE_hname126 #define RETURN_TYPE_hname126 belle_sip_messageParser_hname_return belle_sip_messageParser_hvalue_return hvalue127; #undef RETURN_TYPE_hvalue127 #define RETURN_TYPE_hvalue127 belle_sip_messageParser_hvalue_return /* Initialize rule variables */ ctx->pbelle_sip_messageParser_uri_headerTop = pbelle_sip_messageParser_uri_headerPush(ctx); (SCOPE_TOP(uri_header))->is_hvalue=0; { // ../grammars/belle_sip_message.g:1904:15: ( hname EQUAL ( hvalue )? ) // ../grammars/belle_sip_message.g:1904:17: hname EQUAL ( hvalue )? { FOLLOWPUSH(FOLLOW_hname_in_uri_header7390); hname126=hname(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleuri_headerEx; } if (HASFAILED()) { pbelle_sip_messageParser_uri_headerPop(ctx); return ; } MATCHT(EQUAL, &FOLLOW_EQUAL_in_uri_header7392); if (HASEXCEPTION()) { goto ruleuri_headerEx; } if (HASFAILED()) { pbelle_sip_messageParser_uri_headerPop(ctx); return ; } // ../grammars/belle_sip_message.g:1904:29: ( hvalue )? { int alt171=2; switch ( LA(1) ) { case COLON: case COMMON_CHAR: case DASH: case DIGIT: case DOLLARD: case DOT: case EMARK: case HEX_CHAR: case LPAREN: case LSBRAQUET: case PERCENT: case PLUS: case QMARK: case RPAREN: case RSBRAQUET: case SLASH: case SQUOTE: case STAR: case TILDE: case USCORE: { alt171=1; } break; } switch (alt171) { case 1: // ../grammars/belle_sip_message.g:1904:30: hvalue { FOLLOWPUSH(FOLLOW_hvalue_in_uri_header7395); hvalue127=hvalue(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleuri_headerEx; } if (HASFAILED()) { pbelle_sip_messageParser_uri_headerPop(ctx); return ; } if ( BACKTRACKING==0 ) { (SCOPE_TOP(uri_header))->is_hvalue= 1; } } break; } } if ( BACKTRACKING==0 ) { char* unescaped_hname = belle_sip_to_unescaped_string((const char *)(STRSTREAM->toStringTT(STRSTREAM, hname126.start, hname126.stop)) ->chars); char* unescaped_hvalue = ((SCOPE_TOP(uri_header))->is_hvalue)?belle_sip_to_unescaped_string((const char *) (STRSTREAM->toStringTT(STRSTREAM, hvalue127.start, hvalue127.stop)) ->chars):NULL; belle_sip_uri_set_header((SCOPE_TOP(headers))->current,unescaped_hname,unescaped_hvalue); belle_sip_free(unescaped_hname); if (unescaped_hvalue) belle_sip_free(unescaped_hvalue); } } } // This is where rules clean up and exit // goto ruleuri_headerEx; /* Prevent compiler warnings */ ruleuri_headerEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } pbelle_sip_messageParser_uri_headerPop(ctx); return ; } /* $ANTLR end uri_header */ /** * $ANTLR start hname * ../grammars/belle_sip_message.g:1911:1: hname : ( hnv_unreserved | unreserved | escaped )+ ; */ static belle_sip_messageParser_hname_return hname(pbelle_sip_messageParser ctx) { belle_sip_messageParser_hname_return retval; /* Initialize rule variables */ retval.start = LT(1); retval.stop = retval.start; { // ../grammars/belle_sip_message.g:1911:17: ( ( hnv_unreserved | unreserved | escaped )+ ) // ../grammars/belle_sip_message.g:1911:20: ( hnv_unreserved | unreserved | escaped )+ { // ../grammars/belle_sip_message.g:1911:20: ( hnv_unreserved | unreserved | escaped )+ { int cnt172=0; for (;;) { int alt172=4; switch ( LA(1) ) { case COLON: case DOLLARD: case LSBRAQUET: case PLUS: case QMARK: case RSBRAQUET: case SLASH: { alt172=1; } break; case COMMON_CHAR: case DASH: case DIGIT: case DOT: case EMARK: case HEX_CHAR: case LPAREN: case RPAREN: case SQUOTE: case STAR: case TILDE: case USCORE: { alt172=2; } break; case PERCENT: { alt172=3; } break; } switch (alt172) { case 1: // ../grammars/belle_sip_message.g:1911:22: hnv_unreserved { FOLLOWPUSH(FOLLOW_hnv_unreserved_in_hname7420); hnv_unreserved(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulehnameEx; } if (HASFAILED()) { return retval; } } break; case 2: // ../grammars/belle_sip_message.g:1911:39: unreserved { FOLLOWPUSH(FOLLOW_unreserved_in_hname7424); unreserved(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulehnameEx; } if (HASFAILED()) { return retval; } } break; case 3: // ../grammars/belle_sip_message.g:1911:52: escaped { FOLLOWPUSH(FOLLOW_escaped_in_hname7428); escaped(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulehnameEx; } if (HASFAILED()) { return retval; } } break; default: if ( cnt172 >= 1 ) { goto loop172; } if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } /* mismatchedSetEx() */ CONSTRUCTEX(); EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME; goto rulehnameEx; } cnt172++; } loop172: ; /* Jump to here if this rule does not match */ } } } // This is where rules clean up and exit // goto rulehnameEx; /* Prevent compiler warnings */ rulehnameEx: ; retval.stop = LT(-1); if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end hname */ /** * $ANTLR start hvalue * ../grammars/belle_sip_message.g:1912:1: hvalue : ( hnv_unreserved | unreserved | escaped )+ ; */ static belle_sip_messageParser_hvalue_return hvalue(pbelle_sip_messageParser ctx) { belle_sip_messageParser_hvalue_return retval; /* Initialize rule variables */ retval.start = LT(1); retval.stop = retval.start; { // ../grammars/belle_sip_message.g:1912:17: ( ( hnv_unreserved | unreserved | escaped )+ ) // ../grammars/belle_sip_message.g:1912:20: ( hnv_unreserved | unreserved | escaped )+ { // ../grammars/belle_sip_message.g:1912:20: ( hnv_unreserved | unreserved | escaped )+ { int cnt173=0; for (;;) { int alt173=4; switch ( LA(1) ) { case COLON: case DOLLARD: case LSBRAQUET: case PLUS: case QMARK: case RSBRAQUET: case SLASH: { alt173=1; } break; case COMMON_CHAR: case DASH: case DIGIT: case DOT: case EMARK: case HEX_CHAR: case LPAREN: case RPAREN: case SQUOTE: case STAR: case TILDE: case USCORE: { alt173=2; } break; case PERCENT: { alt173=3; } break; } switch (alt173) { case 1: // ../grammars/belle_sip_message.g:1912:22: hnv_unreserved { FOLLOWPUSH(FOLLOW_hnv_unreserved_in_hvalue7450); hnv_unreserved(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulehvalueEx; } if (HASFAILED()) { return retval; } } break; case 2: // ../grammars/belle_sip_message.g:1912:39: unreserved { FOLLOWPUSH(FOLLOW_unreserved_in_hvalue7454); unreserved(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulehvalueEx; } if (HASFAILED()) { return retval; } } break; case 3: // ../grammars/belle_sip_message.g:1912:52: escaped { FOLLOWPUSH(FOLLOW_escaped_in_hvalue7458); escaped(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulehvalueEx; } if (HASFAILED()) { return retval; } } break; default: if ( cnt173 >= 1 ) { goto loop173; } if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } /* mismatchedSetEx() */ CONSTRUCTEX(); EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME; goto rulehvalueEx; } cnt173++; } loop173: ; /* Jump to here if this rule does not match */ } } } // This is where rules clean up and exit // goto rulehvalueEx; /* Prevent compiler warnings */ rulehvalueEx: ; retval.stop = LT(-1); if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end hvalue */ /** * $ANTLR start hnv_unreserved * ../grammars/belle_sip_message.g:1915:1: hnv_unreserved : ( LSBRAQUET | RSBRAQUET | SLASH | QMARK | COLON | PLUS | DOLLARD ); */ static void hnv_unreserved(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:1915:17: ( LSBRAQUET | RSBRAQUET | SLASH | QMARK | COLON | PLUS | DOLLARD ) // ../grammars/belle_sip_message.g: { if ( LA(1) == COLON || LA(1) == DOLLARD || LA(1) == LSBRAQUET || ((LA(1) >= PLUS) && (LA(1) <= QMARK)) || LA(1) == RSBRAQUET || LA(1) == SLASH ) { CONSUME(); PERRORRECOVERY=ANTLR3_FALSE; FAILEDFLAG=ANTLR3_FALSE; } else { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_MISMATCHED_SET_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_MISMATCHED_SET_NAME; EXCEPTION->expectingSet = NULL; goto rulehnv_unreservedEx; } } } // This is where rules clean up and exit // goto rulehnv_unreservedEx; /* Prevent compiler warnings */ rulehnv_unreservedEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end hnv_unreserved */ /** * $ANTLR start fast_host * ../grammars/belle_sip_message.g:1922:1: fast_host returns [const char* ret] : ( fast_hostname | ipv6reference ) ; */ static const char* fast_host(pbelle_sip_messageParser ctx) { const char* ret; belle_sip_messageParser_fast_hostname_return fast_hostname128; #undef RETURN_TYPE_fast_hostname128 #define RETURN_TYPE_fast_hostname128 belle_sip_messageParser_fast_hostname_return const char* ipv6reference129; #undef RETURN_TYPE_ipv6reference129 #define RETURN_TYPE_ipv6reference129 const char* /* Initialize rule variables */ ctx->pbelle_sip_messageParser_fast_hostTop = pbelle_sip_messageParser_fast_hostPush(ctx); (SCOPE_TOP(fast_host))->current= ret =NULL; { // ../grammars/belle_sip_message.g:1925:13: ( ( fast_hostname | ipv6reference ) ) // ../grammars/belle_sip_message.g:1925:16: ( fast_hostname | ipv6reference ) { // ../grammars/belle_sip_message.g:1925:16: ( fast_hostname | ipv6reference ) { int alt174=2; switch ( LA(1) ) { case COMMON_CHAR: case DIGIT: case HEX_CHAR: { alt174=1; } break; case LSBRAQUET: { alt174=2; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_fast_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 174; EXCEPTION->state = 0; goto rulefast_hostEx; } switch (alt174) { case 1: // ../grammars/belle_sip_message.g:1925:17: fast_hostname { FOLLOWPUSH(FOLLOW_fast_hostname_in_fast_host7540); fast_hostname128=fast_hostname(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulefast_hostEx; } if (HASFAILED()) { pbelle_sip_messageParser_fast_hostPop(ctx); return ret; } if ( BACKTRACKING==0 ) { (SCOPE_TOP(fast_host))->current=(const char *) (STRSTREAM->toStringTT(STRSTREAM, fast_hostname128.start, fast_hostname128.stop)) ->chars; } } break; case 2: // ../grammars/belle_sip_message.g:1927:23: ipv6reference { FOLLOWPUSH(FOLLOW_ipv6reference_in_fast_host7589); ipv6reference129=ipv6reference(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulefast_hostEx; } if (HASFAILED()) { pbelle_sip_messageParser_fast_hostPop(ctx); return ret; } if ( BACKTRACKING==0 ) { (SCOPE_TOP(fast_host))->current=(const char *) ipv6reference129 ; } } break; } } if ( BACKTRACKING==0 ) { ret=(SCOPE_TOP(fast_host))->current; } } } // This is where rules clean up and exit // goto rulefast_hostEx; /* Prevent compiler warnings */ rulefast_hostEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } pbelle_sip_messageParser_fast_hostPop(ctx); return ret; } /* $ANTLR end fast_host */ /** * $ANTLR start fast_hostname * ../grammars/belle_sip_message.g:1929:1: fast_hostname : alphanum ( alphanum | DASH | DOT )* ; */ static belle_sip_messageParser_fast_hostname_return fast_hostname(pbelle_sip_messageParser ctx) { belle_sip_messageParser_fast_hostname_return retval; /* Initialize rule variables */ retval.start = LT(1); retval.stop = retval.start; { // ../grammars/belle_sip_message.g:1929:14: ( alphanum ( alphanum | DASH | DOT )* ) // ../grammars/belle_sip_message.g:1929:17: alphanum ( alphanum | DASH | DOT )* { FOLLOWPUSH(FOLLOW_alphanum_in_fast_hostname7604); alphanum(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulefast_hostnameEx; } if (HASFAILED()) { return retval; } // ../grammars/belle_sip_message.g:1929:26: ( alphanum | DASH | DOT )* for (;;) { int alt175=4; switch ( LA(1) ) { case COMMON_CHAR: case DIGIT: case HEX_CHAR: { alt175=1; } break; case DASH: { alt175=2; } break; case DOT: { alt175=3; } break; } switch (alt175) { case 1: // ../grammars/belle_sip_message.g:1929:28: alphanum { FOLLOWPUSH(FOLLOW_alphanum_in_fast_hostname7608); alphanum(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulefast_hostnameEx; } if (HASFAILED()) { return retval; } } break; case 2: // ../grammars/belle_sip_message.g:1929:39: DASH { MATCHT(DASH, &FOLLOW_DASH_in_fast_hostname7612); if (HASEXCEPTION()) { goto rulefast_hostnameEx; } if (HASFAILED()) { return retval; } } break; case 3: // ../grammars/belle_sip_message.g:1929:46: DOT { MATCHT(DOT, &FOLLOW_DOT_in_fast_hostname7616); if (HASEXCEPTION()) { goto rulefast_hostnameEx; } if (HASFAILED()) { return retval; } } break; default: goto loop175; /* break out of the loop */ break; } } loop175: ; /* Jump out to here if this rule does not match */ } } // This is where rules clean up and exit // goto rulefast_hostnameEx; /* Prevent compiler warnings */ rulefast_hostnameEx: ; retval.stop = LT(-1); if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end fast_hostname */ /** * $ANTLR start user_unreserved * ../grammars/belle_sip_message.g:1933:1: user_unreserved : ( AND | EQUAL | PLUS | DOLLARD | COMMA | SEMI | QMARK | SLASH ); */ static void user_unreserved(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:1933:17: ( AND | EQUAL | PLUS | DOLLARD | COMMA | SEMI | QMARK | SLASH ) // ../grammars/belle_sip_message.g: { if ( LA(1) == AND || LA(1) == COMMA || LA(1) == DOLLARD || LA(1) == EQUAL || ((LA(1) >= PLUS) && (LA(1) <= QMARK)) || ((LA(1) >= SEMI) && (LA(1) <= SLASH)) ) { CONSUME(); PERRORRECOVERY=ANTLR3_FALSE; FAILEDFLAG=ANTLR3_FALSE; } else { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_MISMATCHED_SET_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_MISMATCHED_SET_NAME; EXCEPTION->expectingSet = NULL; goto ruleuser_unreservedEx; } } } // This is where rules clean up and exit // goto ruleuser_unreservedEx; /* Prevent compiler warnings */ ruleuser_unreservedEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end user_unreserved */ /** * $ANTLR start host * ../grammars/belle_sip_message.g:1934:1: host returns [const char* ret] : ( hostname | ipv4address | ipv6reference ) ; */ static const char* host(pbelle_sip_messageParser ctx) { const char* ret; belle_sip_messageParser_hostname_return hostname130; #undef RETURN_TYPE_hostname130 #define RETURN_TYPE_hostname130 belle_sip_messageParser_hostname_return belle_sip_messageParser_ipv4address_return ipv4address131; #undef RETURN_TYPE_ipv4address131 #define RETURN_TYPE_ipv4address131 belle_sip_messageParser_ipv4address_return const char* ipv6reference132; #undef RETURN_TYPE_ipv6reference132 #define RETURN_TYPE_ipv6reference132 const char* /* Initialize rule variables */ ctx->pbelle_sip_messageParser_hostTop = pbelle_sip_messageParser_hostPush(ctx); (SCOPE_TOP(host))->current= ret =NULL; { // ../grammars/belle_sip_message.g:1937:13: ( ( hostname | ipv4address | ipv6reference ) ) // ../grammars/belle_sip_message.g:1937:17: ( hostname | ipv4address | ipv6reference ) { // ../grammars/belle_sip_message.g:1937:17: ( hostname | ipv4address | ipv6reference ) { int alt176=3; switch ( LA(1) ) { case COMMON_CHAR: case HEX_CHAR: { alt176=1; } break; case DIGIT: { switch ( LA(2) ) { case DIGIT: { switch ( LA(3) ) { case DIGIT: { switch ( LA(4) ) { case DOT: { switch ( LA(5) ) { case DIGIT: { switch ( LA(6) ) { case DIGIT: { switch ( LA(7) ) { case DIGIT: { switch ( LA(8) ) { case DOT: { switch ( LA(9) ) { case DIGIT: { switch ( LA(10) ) { case DIGIT: { switch ( LA(11) ) { case DIGIT: { switch ( LA(12) ) { case DOT: { switch ( LA(13) ) { case DIGIT: { switch ( LA(14) ) { case COMMON_CHAR: case DASH: case DIGIT: case DOT: case HEX_CHAR: { alt176=1; } break; case EOF: case COLON: case COMMA: case CRLF: case DQUOTE: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=2; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 18; goto rulehostEx; } } break; case EOF: case COLON: case COMMA: case COMMON_CHAR: case CRLF: case DQUOTE: case HEX_CHAR: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=1; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 17; goto rulehostEx; } } break; case EOF: case COLON: case COMMA: case COMMON_CHAR: case CRLF: case DASH: case DIGIT: case DQUOTE: case HEX_CHAR: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=1; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 16; goto rulehostEx; } } break; case DOT: { switch ( LA(12) ) { case DIGIT: { switch ( LA(13) ) { case COMMON_CHAR: case DASH: case DIGIT: case DOT: case HEX_CHAR: { alt176=1; } break; case EOF: case COLON: case COMMA: case CRLF: case DQUOTE: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=2; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 18; goto rulehostEx; } } break; case EOF: case COLON: case COMMA: case COMMON_CHAR: case CRLF: case DQUOTE: case HEX_CHAR: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=1; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 17; goto rulehostEx; } } break; case EOF: case COLON: case COMMA: case COMMON_CHAR: case CRLF: case DASH: case DQUOTE: case HEX_CHAR: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=1; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 14; goto rulehostEx; } } break; case COMMON_CHAR: case DASH: case HEX_CHAR: { alt176=1; } break; case DOT: { switch ( LA(11) ) { case COMMON_CHAR: case HEX_CHAR: { alt176=1; } break; case DIGIT: { switch ( LA(12) ) { case COMMON_CHAR: case DASH: case DIGIT: case DOT: case HEX_CHAR: { alt176=1; } break; case EOF: case COLON: case COMMA: case CRLF: case DQUOTE: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=2; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 18; goto rulehostEx; } } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 15; goto rulehostEx; } } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 13; goto rulehostEx; } } break; case EOF: case COLON: case COMMA: case COMMON_CHAR: case CRLF: case DQUOTE: case HEX_CHAR: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=1; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 12; goto rulehostEx; } } break; case EOF: case COLON: case COMMA: case COMMON_CHAR: case CRLF: case DASH: case DIGIT: case DQUOTE: case HEX_CHAR: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=1; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 11; goto rulehostEx; } } break; case DOT: { switch ( LA(8) ) { case DIGIT: { switch ( LA(9) ) { case DIGIT: { switch ( LA(10) ) { case DIGIT: { switch ( LA(11) ) { case DOT: { switch ( LA(12) ) { case DIGIT: { switch ( LA(13) ) { case COMMON_CHAR: case DASH: case DIGIT: case DOT: case HEX_CHAR: { alt176=1; } break; case EOF: case COLON: case COMMA: case CRLF: case DQUOTE: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=2; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 18; goto rulehostEx; } } break; case EOF: case COLON: case COMMA: case COMMON_CHAR: case CRLF: case DQUOTE: case HEX_CHAR: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=1; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 17; goto rulehostEx; } } break; case EOF: case COLON: case COMMA: case COMMON_CHAR: case CRLF: case DASH: case DIGIT: case DQUOTE: case HEX_CHAR: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=1; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 16; goto rulehostEx; } } break; case DOT: { switch ( LA(11) ) { case DIGIT: { switch ( LA(12) ) { case COMMON_CHAR: case DASH: case DIGIT: case DOT: case HEX_CHAR: { alt176=1; } break; case EOF: case COLON: case COMMA: case CRLF: case DQUOTE: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=2; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 18; goto rulehostEx; } } break; case EOF: case COLON: case COMMA: case COMMON_CHAR: case CRLF: case DQUOTE: case HEX_CHAR: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=1; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 17; goto rulehostEx; } } break; case EOF: case COLON: case COMMA: case COMMON_CHAR: case CRLF: case DASH: case DQUOTE: case HEX_CHAR: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=1; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 14; goto rulehostEx; } } break; case COMMON_CHAR: case DASH: case HEX_CHAR: { alt176=1; } break; case DOT: { switch ( LA(10) ) { case COMMON_CHAR: case HEX_CHAR: { alt176=1; } break; case DIGIT: { switch ( LA(11) ) { case COMMON_CHAR: case DASH: case DIGIT: case DOT: case HEX_CHAR: { alt176=1; } break; case EOF: case COLON: case COMMA: case CRLF: case DQUOTE: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=2; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 18; goto rulehostEx; } } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 15; goto rulehostEx; } } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 13; goto rulehostEx; } } break; case EOF: case COLON: case COMMA: case COMMON_CHAR: case CRLF: case DQUOTE: case HEX_CHAR: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=1; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 12; goto rulehostEx; } } break; case EOF: case COLON: case COMMA: case COMMON_CHAR: case CRLF: case DASH: case DQUOTE: case HEX_CHAR: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=1; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 9; goto rulehostEx; } } break; case COMMON_CHAR: case DASH: case HEX_CHAR: { alt176=1; } break; case DOT: { switch ( LA(7) ) { case COMMON_CHAR: case HEX_CHAR: { alt176=1; } break; case DIGIT: { switch ( LA(8) ) { case DIGIT: { switch ( LA(9) ) { case DIGIT: { switch ( LA(10) ) { case DOT: { switch ( LA(11) ) { case DIGIT: { switch ( LA(12) ) { case COMMON_CHAR: case DASH: case DIGIT: case DOT: case HEX_CHAR: { alt176=1; } break; case EOF: case COLON: case COMMA: case CRLF: case DQUOTE: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=2; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 18; goto rulehostEx; } } break; case EOF: case COLON: case COMMA: case COMMON_CHAR: case CRLF: case DQUOTE: case HEX_CHAR: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=1; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 17; goto rulehostEx; } } break; case EOF: case COLON: case COMMA: case COMMON_CHAR: case CRLF: case DASH: case DIGIT: case DQUOTE: case HEX_CHAR: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=1; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 16; goto rulehostEx; } } break; case DOT: { switch ( LA(10) ) { case DIGIT: { switch ( LA(11) ) { case COMMON_CHAR: case DASH: case DIGIT: case DOT: case HEX_CHAR: { alt176=1; } break; case EOF: case COLON: case COMMA: case CRLF: case DQUOTE: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=2; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 18; goto rulehostEx; } } break; case EOF: case COLON: case COMMA: case COMMON_CHAR: case CRLF: case DQUOTE: case HEX_CHAR: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=1; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 17; goto rulehostEx; } } break; case EOF: case COLON: case COMMA: case COMMON_CHAR: case CRLF: case DASH: case DQUOTE: case HEX_CHAR: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=1; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 14; goto rulehostEx; } } break; case COMMON_CHAR: case DASH: case HEX_CHAR: { alt176=1; } break; case DOT: { switch ( LA(9) ) { case COMMON_CHAR: case HEX_CHAR: { alt176=1; } break; case DIGIT: { switch ( LA(10) ) { case COMMON_CHAR: case DASH: case DIGIT: case DOT: case HEX_CHAR: { alt176=1; } break; case EOF: case COLON: case COMMA: case CRLF: case DQUOTE: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=2; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 18; goto rulehostEx; } } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 15; goto rulehostEx; } } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 13; goto rulehostEx; } } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 10; goto rulehostEx; } } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 8; goto rulehostEx; } } break; case EOF: case COLON: case COMMA: case COMMON_CHAR: case CRLF: case DQUOTE: case HEX_CHAR: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=1; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 7; goto rulehostEx; } } break; case EOF: case COLON: case COMMA: case COMMON_CHAR: case CRLF: case DASH: case DIGIT: case DQUOTE: case HEX_CHAR: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=1; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 6; goto rulehostEx; } } break; case DOT: { switch ( LA(4) ) { case DIGIT: { switch ( LA(5) ) { case DIGIT: { switch ( LA(6) ) { case DIGIT: { switch ( LA(7) ) { case DOT: { switch ( LA(8) ) { case DIGIT: { switch ( LA(9) ) { case DIGIT: { switch ( LA(10) ) { case DIGIT: { switch ( LA(11) ) { case DOT: { switch ( LA(12) ) { case DIGIT: { switch ( LA(13) ) { case COMMON_CHAR: case DASH: case DIGIT: case DOT: case HEX_CHAR: { alt176=1; } break; case EOF: case COLON: case COMMA: case CRLF: case DQUOTE: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=2; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 18; goto rulehostEx; } } break; case EOF: case COLON: case COMMA: case COMMON_CHAR: case CRLF: case DQUOTE: case HEX_CHAR: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=1; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 17; goto rulehostEx; } } break; case EOF: case COLON: case COMMA: case COMMON_CHAR: case CRLF: case DASH: case DIGIT: case DQUOTE: case HEX_CHAR: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=1; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 16; goto rulehostEx; } } break; case DOT: { switch ( LA(11) ) { case DIGIT: { switch ( LA(12) ) { case COMMON_CHAR: case DASH: case DIGIT: case DOT: case HEX_CHAR: { alt176=1; } break; case EOF: case COLON: case COMMA: case CRLF: case DQUOTE: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=2; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 18; goto rulehostEx; } } break; case EOF: case COLON: case COMMA: case COMMON_CHAR: case CRLF: case DQUOTE: case HEX_CHAR: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=1; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 17; goto rulehostEx; } } break; case EOF: case COLON: case COMMA: case COMMON_CHAR: case CRLF: case DASH: case DQUOTE: case HEX_CHAR: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=1; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 14; goto rulehostEx; } } break; case COMMON_CHAR: case DASH: case HEX_CHAR: { alt176=1; } break; case DOT: { switch ( LA(10) ) { case COMMON_CHAR: case HEX_CHAR: { alt176=1; } break; case DIGIT: { switch ( LA(11) ) { case COMMON_CHAR: case DASH: case DIGIT: case DOT: case HEX_CHAR: { alt176=1; } break; case EOF: case COLON: case COMMA: case CRLF: case DQUOTE: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=2; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 18; goto rulehostEx; } } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 15; goto rulehostEx; } } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 13; goto rulehostEx; } } break; case EOF: case COLON: case COMMA: case COMMON_CHAR: case CRLF: case DQUOTE: case HEX_CHAR: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=1; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 12; goto rulehostEx; } } break; case EOF: case COLON: case COMMA: case COMMON_CHAR: case CRLF: case DASH: case DIGIT: case DQUOTE: case HEX_CHAR: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=1; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 11; goto rulehostEx; } } break; case DOT: { switch ( LA(7) ) { case DIGIT: { switch ( LA(8) ) { case DIGIT: { switch ( LA(9) ) { case DIGIT: { switch ( LA(10) ) { case DOT: { switch ( LA(11) ) { case DIGIT: { switch ( LA(12) ) { case COMMON_CHAR: case DASH: case DIGIT: case DOT: case HEX_CHAR: { alt176=1; } break; case EOF: case COLON: case COMMA: case CRLF: case DQUOTE: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=2; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 18; goto rulehostEx; } } break; case EOF: case COLON: case COMMA: case COMMON_CHAR: case CRLF: case DQUOTE: case HEX_CHAR: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=1; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 17; goto rulehostEx; } } break; case EOF: case COLON: case COMMA: case COMMON_CHAR: case CRLF: case DASH: case DIGIT: case DQUOTE: case HEX_CHAR: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=1; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 16; goto rulehostEx; } } break; case DOT: { switch ( LA(10) ) { case DIGIT: { switch ( LA(11) ) { case COMMON_CHAR: case DASH: case DIGIT: case DOT: case HEX_CHAR: { alt176=1; } break; case EOF: case COLON: case COMMA: case CRLF: case DQUOTE: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=2; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 18; goto rulehostEx; } } break; case EOF: case COLON: case COMMA: case COMMON_CHAR: case CRLF: case DQUOTE: case HEX_CHAR: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=1; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 17; goto rulehostEx; } } break; case EOF: case COLON: case COMMA: case COMMON_CHAR: case CRLF: case DASH: case DQUOTE: case HEX_CHAR: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=1; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 14; goto rulehostEx; } } break; case COMMON_CHAR: case DASH: case HEX_CHAR: { alt176=1; } break; case DOT: { switch ( LA(9) ) { case COMMON_CHAR: case HEX_CHAR: { alt176=1; } break; case DIGIT: { switch ( LA(10) ) { case COMMON_CHAR: case DASH: case DIGIT: case DOT: case HEX_CHAR: { alt176=1; } break; case EOF: case COLON: case COMMA: case CRLF: case DQUOTE: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=2; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 18; goto rulehostEx; } } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 15; goto rulehostEx; } } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 13; goto rulehostEx; } } break; case EOF: case COLON: case COMMA: case COMMON_CHAR: case CRLF: case DQUOTE: case HEX_CHAR: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=1; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 12; goto rulehostEx; } } break; case EOF: case COLON: case COMMA: case COMMON_CHAR: case CRLF: case DASH: case DQUOTE: case HEX_CHAR: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=1; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 9; goto rulehostEx; } } break; case COMMON_CHAR: case DASH: case HEX_CHAR: { alt176=1; } break; case DOT: { switch ( LA(6) ) { case COMMON_CHAR: case HEX_CHAR: { alt176=1; } break; case DIGIT: { switch ( LA(7) ) { case DIGIT: { switch ( LA(8) ) { case DIGIT: { switch ( LA(9) ) { case DOT: { switch ( LA(10) ) { case DIGIT: { switch ( LA(11) ) { case COMMON_CHAR: case DASH: case DIGIT: case DOT: case HEX_CHAR: { alt176=1; } break; case EOF: case COLON: case COMMA: case CRLF: case DQUOTE: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=2; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 18; goto rulehostEx; } } break; case EOF: case COLON: case COMMA: case COMMON_CHAR: case CRLF: case DQUOTE: case HEX_CHAR: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=1; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 17; goto rulehostEx; } } break; case EOF: case COLON: case COMMA: case COMMON_CHAR: case CRLF: case DASH: case DIGIT: case DQUOTE: case HEX_CHAR: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=1; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 16; goto rulehostEx; } } break; case DOT: { switch ( LA(9) ) { case DIGIT: { switch ( LA(10) ) { case COMMON_CHAR: case DASH: case DIGIT: case DOT: case HEX_CHAR: { alt176=1; } break; case EOF: case COLON: case COMMA: case CRLF: case DQUOTE: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=2; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 18; goto rulehostEx; } } break; case EOF: case COLON: case COMMA: case COMMON_CHAR: case CRLF: case DQUOTE: case HEX_CHAR: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=1; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 17; goto rulehostEx; } } break; case EOF: case COLON: case COMMA: case COMMON_CHAR: case CRLF: case DASH: case DQUOTE: case HEX_CHAR: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=1; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 14; goto rulehostEx; } } break; case COMMON_CHAR: case DASH: case HEX_CHAR: { alt176=1; } break; case DOT: { switch ( LA(8) ) { case COMMON_CHAR: case HEX_CHAR: { alt176=1; } break; case DIGIT: { switch ( LA(9) ) { case COMMON_CHAR: case DASH: case DIGIT: case DOT: case HEX_CHAR: { alt176=1; } break; case EOF: case COLON: case COMMA: case CRLF: case DQUOTE: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=2; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 18; goto rulehostEx; } } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 15; goto rulehostEx; } } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 13; goto rulehostEx; } } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 10; goto rulehostEx; } } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 8; goto rulehostEx; } } break; case EOF: case COLON: case COMMA: case COMMON_CHAR: case CRLF: case DQUOTE: case HEX_CHAR: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=1; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 7; goto rulehostEx; } } break; case EOF: case COLON: case COMMA: case COMMON_CHAR: case CRLF: case DASH: case DQUOTE: case HEX_CHAR: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=1; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 4; goto rulehostEx; } } break; case DOT: { switch ( LA(3) ) { case COMMON_CHAR: case HEX_CHAR: { alt176=1; } break; case DIGIT: { switch ( LA(4) ) { case DIGIT: { switch ( LA(5) ) { case DIGIT: { switch ( LA(6) ) { case DOT: { switch ( LA(7) ) { case DIGIT: { switch ( LA(8) ) { case DIGIT: { switch ( LA(9) ) { case DIGIT: { switch ( LA(10) ) { case DOT: { switch ( LA(11) ) { case DIGIT: { switch ( LA(12) ) { case COMMON_CHAR: case DASH: case DIGIT: case DOT: case HEX_CHAR: { alt176=1; } break; case EOF: case COLON: case COMMA: case CRLF: case DQUOTE: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=2; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 18; goto rulehostEx; } } break; case EOF: case COLON: case COMMA: case COMMON_CHAR: case CRLF: case DQUOTE: case HEX_CHAR: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=1; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 17; goto rulehostEx; } } break; case EOF: case COLON: case COMMA: case COMMON_CHAR: case CRLF: case DASH: case DIGIT: case DQUOTE: case HEX_CHAR: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=1; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 16; goto rulehostEx; } } break; case DOT: { switch ( LA(10) ) { case DIGIT: { switch ( LA(11) ) { case COMMON_CHAR: case DASH: case DIGIT: case DOT: case HEX_CHAR: { alt176=1; } break; case EOF: case COLON: case COMMA: case CRLF: case DQUOTE: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=2; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 18; goto rulehostEx; } } break; case EOF: case COLON: case COMMA: case COMMON_CHAR: case CRLF: case DQUOTE: case HEX_CHAR: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=1; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 17; goto rulehostEx; } } break; case EOF: case COLON: case COMMA: case COMMON_CHAR: case CRLF: case DASH: case DQUOTE: case HEX_CHAR: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=1; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 14; goto rulehostEx; } } break; case COMMON_CHAR: case DASH: case HEX_CHAR: { alt176=1; } break; case DOT: { switch ( LA(9) ) { case COMMON_CHAR: case HEX_CHAR: { alt176=1; } break; case DIGIT: { switch ( LA(10) ) { case COMMON_CHAR: case DASH: case DIGIT: case DOT: case HEX_CHAR: { alt176=1; } break; case EOF: case COLON: case COMMA: case CRLF: case DQUOTE: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=2; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 18; goto rulehostEx; } } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 15; goto rulehostEx; } } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 13; goto rulehostEx; } } break; case EOF: case COLON: case COMMA: case COMMON_CHAR: case CRLF: case DQUOTE: case HEX_CHAR: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=1; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 12; goto rulehostEx; } } break; case EOF: case COLON: case COMMA: case COMMON_CHAR: case CRLF: case DASH: case DIGIT: case DQUOTE: case HEX_CHAR: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=1; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 11; goto rulehostEx; } } break; case DOT: { switch ( LA(6) ) { case DIGIT: { switch ( LA(7) ) { case DIGIT: { switch ( LA(8) ) { case DIGIT: { switch ( LA(9) ) { case DOT: { switch ( LA(10) ) { case DIGIT: { switch ( LA(11) ) { case COMMON_CHAR: case DASH: case DIGIT: case DOT: case HEX_CHAR: { alt176=1; } break; case EOF: case COLON: case COMMA: case CRLF: case DQUOTE: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=2; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 18; goto rulehostEx; } } break; case EOF: case COLON: case COMMA: case COMMON_CHAR: case CRLF: case DQUOTE: case HEX_CHAR: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=1; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 17; goto rulehostEx; } } break; case EOF: case COLON: case COMMA: case COMMON_CHAR: case CRLF: case DASH: case DIGIT: case DQUOTE: case HEX_CHAR: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=1; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 16; goto rulehostEx; } } break; case DOT: { switch ( LA(9) ) { case DIGIT: { switch ( LA(10) ) { case COMMON_CHAR: case DASH: case DIGIT: case DOT: case HEX_CHAR: { alt176=1; } break; case EOF: case COLON: case COMMA: case CRLF: case DQUOTE: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=2; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 18; goto rulehostEx; } } break; case EOF: case COLON: case COMMA: case COMMON_CHAR: case CRLF: case DQUOTE: case HEX_CHAR: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=1; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 17; goto rulehostEx; } } break; case EOF: case COLON: case COMMA: case COMMON_CHAR: case CRLF: case DASH: case DQUOTE: case HEX_CHAR: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=1; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 14; goto rulehostEx; } } break; case COMMON_CHAR: case DASH: case HEX_CHAR: { alt176=1; } break; case DOT: { switch ( LA(8) ) { case COMMON_CHAR: case HEX_CHAR: { alt176=1; } break; case DIGIT: { switch ( LA(9) ) { case COMMON_CHAR: case DASH: case DIGIT: case DOT: case HEX_CHAR: { alt176=1; } break; case EOF: case COLON: case COMMA: case CRLF: case DQUOTE: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=2; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 18; goto rulehostEx; } } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 15; goto rulehostEx; } } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 13; goto rulehostEx; } } break; case EOF: case COLON: case COMMA: case COMMON_CHAR: case CRLF: case DQUOTE: case HEX_CHAR: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=1; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 12; goto rulehostEx; } } break; case EOF: case COLON: case COMMA: case COMMON_CHAR: case CRLF: case DASH: case DQUOTE: case HEX_CHAR: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=1; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 9; goto rulehostEx; } } break; case COMMON_CHAR: case DASH: case HEX_CHAR: { alt176=1; } break; case DOT: { switch ( LA(5) ) { case COMMON_CHAR: case HEX_CHAR: { alt176=1; } break; case DIGIT: { switch ( LA(6) ) { case DIGIT: { switch ( LA(7) ) { case DIGIT: { switch ( LA(8) ) { case DOT: { switch ( LA(9) ) { case DIGIT: { switch ( LA(10) ) { case COMMON_CHAR: case DASH: case DIGIT: case DOT: case HEX_CHAR: { alt176=1; } break; case EOF: case COLON: case COMMA: case CRLF: case DQUOTE: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=2; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 18; goto rulehostEx; } } break; case EOF: case COLON: case COMMA: case COMMON_CHAR: case CRLF: case DQUOTE: case HEX_CHAR: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=1; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 17; goto rulehostEx; } } break; case EOF: case COLON: case COMMA: case COMMON_CHAR: case CRLF: case DASH: case DIGIT: case DQUOTE: case HEX_CHAR: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=1; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 16; goto rulehostEx; } } break; case DOT: { switch ( LA(8) ) { case DIGIT: { switch ( LA(9) ) { case COMMON_CHAR: case DASH: case DIGIT: case DOT: case HEX_CHAR: { alt176=1; } break; case EOF: case COLON: case COMMA: case CRLF: case DQUOTE: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=2; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 18; goto rulehostEx; } } break; case EOF: case COLON: case COMMA: case COMMON_CHAR: case CRLF: case DQUOTE: case HEX_CHAR: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=1; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 17; goto rulehostEx; } } break; case EOF: case COLON: case COMMA: case COMMON_CHAR: case CRLF: case DASH: case DQUOTE: case HEX_CHAR: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=1; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 14; goto rulehostEx; } } break; case COMMON_CHAR: case DASH: case HEX_CHAR: { alt176=1; } break; case DOT: { switch ( LA(7) ) { case COMMON_CHAR: case HEX_CHAR: { alt176=1; } break; case DIGIT: { switch ( LA(8) ) { case COMMON_CHAR: case DASH: case DIGIT: case DOT: case HEX_CHAR: { alt176=1; } break; case EOF: case COLON: case COMMA: case CRLF: case DQUOTE: case QMARK: case RAQUOT: case SEMI: case SLASH: case SP: { alt176=2; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 18; goto rulehostEx; } } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 15; goto rulehostEx; } } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 13; goto rulehostEx; } } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 10; goto rulehostEx; } } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 8; goto rulehostEx; } } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 5; goto rulehostEx; } } break; case COMMON_CHAR: case DASH: case HEX_CHAR: { alt176=1; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 2; goto rulehostEx; } } break; case LSBRAQUET: { alt176=3; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; pbelle_sip_messageParser_hostPop(ctx); return ret; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 176; EXCEPTION->state = 0; goto rulehostEx; } switch (alt176) { case 1: // ../grammars/belle_sip_message.g:1937:18: hostname { FOLLOWPUSH(FOLLOW_hostname_in_host7693); hostname130=hostname(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulehostEx; } if (HASFAILED()) { pbelle_sip_messageParser_hostPop(ctx); return ret; } if ( BACKTRACKING==0 ) { (SCOPE_TOP(host))->current=(const char *) (STRSTREAM->toStringTT(STRSTREAM, hostname130.start, hostname130.stop)) ->chars; } } break; case 2: // ../grammars/belle_sip_message.g:1938:23: ipv4address { FOLLOWPUSH(FOLLOW_ipv4address_in_host7719); ipv4address131=ipv4address(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulehostEx; } if (HASFAILED()) { pbelle_sip_messageParser_hostPop(ctx); return ret; } if ( BACKTRACKING==0 ) { (SCOPE_TOP(host))->current=(const char *) (STRSTREAM->toStringTT(STRSTREAM, ipv4address131.start, ipv4address131.stop)) ->chars; } } break; case 3: // ../grammars/belle_sip_message.g:1939:23: ipv6reference { FOLLOWPUSH(FOLLOW_ipv6reference_in_host7745); ipv6reference132=ipv6reference(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulehostEx; } if (HASFAILED()) { pbelle_sip_messageParser_hostPop(ctx); return ret; } if ( BACKTRACKING==0 ) { (SCOPE_TOP(host))->current=(const char *) ipv6reference132 ; } } break; } } if ( BACKTRACKING==0 ) { ret=(SCOPE_TOP(host))->current; } } } // This is where rules clean up and exit // goto rulehostEx; /* Prevent compiler warnings */ rulehostEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } pbelle_sip_messageParser_hostPop(ctx); return ret; } /* $ANTLR end host */ /** * $ANTLR start hostname * ../grammars/belle_sip_message.g:1940:1: hostname : ( domainlabel DOT )* ( toplabel )=> toplabel ( DOT )? ; */ static belle_sip_messageParser_hostname_return hostname(pbelle_sip_messageParser ctx) { belle_sip_messageParser_hostname_return retval; /* Initialize rule variables */ retval.start = LT(1); retval.stop = retval.start; { // ../grammars/belle_sip_message.g:1940:17: ( ( domainlabel DOT )* ( toplabel )=> toplabel ( DOT )? ) // ../grammars/belle_sip_message.g:1940:21: ( domainlabel DOT )* ( toplabel )=> toplabel ( DOT )? { // ../grammars/belle_sip_message.g:1940:21: ( domainlabel DOT )* for (;;) { int alt177=2; alt177 = cdfa177.predict(ctx, RECOGNIZER, ISTREAM, &cdfa177); if (HASEXCEPTION()) { goto rulehostnameEx; } if (HASFAILED()) { return retval; } switch (alt177) { case 1: // ../grammars/belle_sip_message.g:1940:23: domainlabel DOT { FOLLOWPUSH(FOLLOW_domainlabel_in_hostname7768); domainlabel(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulehostnameEx; } if (HASFAILED()) { return retval; } MATCHT(DOT, &FOLLOW_DOT_in_hostname7770); if (HASEXCEPTION()) { goto rulehostnameEx; } if (HASFAILED()) { return retval; } } break; default: goto loop177; /* break out of the loop */ break; } } loop177: ; /* Jump out to here if this rule does not match */ FOLLOWPUSH(FOLLOW_toplabel_in_hostname7779); toplabel(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulehostnameEx; } if (HASFAILED()) { return retval; } // ../grammars/belle_sip_message.g:1940:63: ( DOT )? { int alt178=2; switch ( LA(1) ) { case DOT: { alt178=1; } break; } switch (alt178) { case 1: // ../grammars/belle_sip_message.g:1940:63: DOT { MATCHT(DOT, &FOLLOW_DOT_in_hostname7781); if (HASEXCEPTION()) { goto rulehostnameEx; } if (HASFAILED()) { return retval; } } break; } } } } // This is where rules clean up and exit // goto rulehostnameEx; /* Prevent compiler warnings */ rulehostnameEx: ; retval.stop = LT(-1); if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end hostname */ /** * $ANTLR start domainlabel * ../grammars/belle_sip_message.g:1942:1: domainlabel : ( alphanum | ( alphanum ( alphanum | DASH )* alphanum ) ); */ static void domainlabel(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { { // ../grammars/belle_sip_message.g:1942:17: ( alphanum | ( alphanum ( alphanum | DASH )* alphanum ) ) ANTLR3_UINT32 alt180; alt180=2; switch ( LA(1) ) { case COMMON_CHAR: case HEX_CHAR: { switch ( LA(2) ) { case DOT: { alt180=1; } break; case COMMON_CHAR: case DASH: case DIGIT: case HEX_CHAR: { alt180=2; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 180; EXCEPTION->state = 1; goto ruledomainlabelEx; } } break; case DIGIT: { switch ( LA(2) ) { case DOT: { alt180=1; } break; case COMMON_CHAR: case DASH: case DIGIT: case HEX_CHAR: { alt180=2; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 180; EXCEPTION->state = 2; goto ruledomainlabelEx; } } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 180; EXCEPTION->state = 0; goto ruledomainlabelEx; } switch (alt180) { case 1: // ../grammars/belle_sip_message.g:1942:21: alphanum { FOLLOWPUSH(FOLLOW_alphanum_in_domainlabel7797); alphanum(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruledomainlabelEx; } if (HASFAILED()) { return ; } } break; case 2: // ../grammars/belle_sip_message.g:1942:32: ( alphanum ( alphanum | DASH )* alphanum ) { // ../grammars/belle_sip_message.g:1942:32: ( alphanum ( alphanum | DASH )* alphanum ) // ../grammars/belle_sip_message.g:1942:33: alphanum ( alphanum | DASH )* alphanum { FOLLOWPUSH(FOLLOW_alphanum_in_domainlabel7802); alphanum(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruledomainlabelEx; } if (HASFAILED()) { return ; } // ../grammars/belle_sip_message.g:1942:42: ( alphanum | DASH )* for (;;) { int alt179=3; switch ( LA(1) ) { case COMMON_CHAR: case HEX_CHAR: { switch ( LA(2) ) { case COMMON_CHAR: case DASH: case DIGIT: case HEX_CHAR: { alt179=1; } break; } } break; case DIGIT: { switch ( LA(2) ) { case COMMON_CHAR: case DASH: case DIGIT: case HEX_CHAR: { alt179=1; } break; } } break; case DASH: { alt179=2; } break; } switch (alt179) { case 1: // ../grammars/belle_sip_message.g:1942:44: alphanum { FOLLOWPUSH(FOLLOW_alphanum_in_domainlabel7806); alphanum(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruledomainlabelEx; } if (HASFAILED()) { return ; } } break; case 2: // ../grammars/belle_sip_message.g:1942:55: DASH { MATCHT(DASH, &FOLLOW_DASH_in_domainlabel7810); if (HASEXCEPTION()) { goto ruledomainlabelEx; } if (HASFAILED()) { return ; } } break; default: goto loop179; /* break out of the loop */ break; } } loop179: ; /* Jump out to here if this rule does not match */ FOLLOWPUSH(FOLLOW_alphanum_in_domainlabel7815); alphanum(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruledomainlabelEx; } if (HASFAILED()) { return ; } } } break; } } } // This is where rules clean up and exit // goto ruledomainlabelEx; /* Prevent compiler warnings */ ruledomainlabelEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end domainlabel */ /** * $ANTLR start toplabel * ../grammars/belle_sip_message.g:1943:1: toplabel : alphanum ( ( DASH )? alphanum )+ ; */ static void toplabel(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:1943:17: ( alphanum ( ( DASH )? alphanum )+ ) // ../grammars/belle_sip_message.g:1943:21: alphanum ( ( DASH )? alphanum )+ { FOLLOWPUSH(FOLLOW_alphanum_in_toplabel7833); alphanum(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruletoplabelEx; } if (HASFAILED()) { return ; } // ../grammars/belle_sip_message.g:1943:30: ( ( DASH )? alphanum )+ { int cnt182=0; for (;;) { int alt182=2; switch ( LA(1) ) { case COMMON_CHAR: case DASH: case DIGIT: case HEX_CHAR: { alt182=1; } break; } switch (alt182) { case 1: // ../grammars/belle_sip_message.g:1943:33: ( DASH )? alphanum { // ../grammars/belle_sip_message.g:1943:33: ( DASH )? { int alt181=2; switch ( LA(1) ) { case DASH: { alt181=1; } break; } switch (alt181) { case 1: // ../grammars/belle_sip_message.g:1943:33: DASH { MATCHT(DASH, &FOLLOW_DASH_in_toplabel7838); if (HASEXCEPTION()) { goto ruletoplabelEx; } if (HASFAILED()) { return ; } } break; } } FOLLOWPUSH(FOLLOW_alphanum_in_toplabel7842); alphanum(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruletoplabelEx; } if (HASFAILED()) { return ; } } break; default: if ( cnt182 >= 1 ) { goto loop182; } if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } /* mismatchedSetEx() */ CONSTRUCTEX(); EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME; goto ruletoplabelEx; } cnt182++; } loop182: ; /* Jump to here if this rule does not match */ } } } // This is where rules clean up and exit // goto ruletoplabelEx; /* Prevent compiler warnings */ ruletoplabelEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end toplabel */ /** * $ANTLR start ipv4address * ../grammars/belle_sip_message.g:1945:1: ipv4address : three_digit DOT three_digit DOT three_digit DOT three_digit ; */ static belle_sip_messageParser_ipv4address_return ipv4address(pbelle_sip_messageParser ctx) { belle_sip_messageParser_ipv4address_return retval; /* Initialize rule variables */ retval.start = LT(1); retval.stop = retval.start; { // ../grammars/belle_sip_message.g:1945:16: ( three_digit DOT three_digit DOT three_digit DOT three_digit ) // ../grammars/belle_sip_message.g:1945:19: three_digit DOT three_digit DOT three_digit DOT three_digit { FOLLOWPUSH(FOLLOW_three_digit_in_ipv4address7856); three_digit(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleipv4addressEx; } if (HASFAILED()) { return retval; } MATCHT(DOT, &FOLLOW_DOT_in_ipv4address7858); if (HASEXCEPTION()) { goto ruleipv4addressEx; } if (HASFAILED()) { return retval; } FOLLOWPUSH(FOLLOW_three_digit_in_ipv4address7860); three_digit(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleipv4addressEx; } if (HASFAILED()) { return retval; } MATCHT(DOT, &FOLLOW_DOT_in_ipv4address7862); if (HASEXCEPTION()) { goto ruleipv4addressEx; } if (HASFAILED()) { return retval; } FOLLOWPUSH(FOLLOW_three_digit_in_ipv4address7864); three_digit(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleipv4addressEx; } if (HASFAILED()) { return retval; } MATCHT(DOT, &FOLLOW_DOT_in_ipv4address7866); if (HASEXCEPTION()) { goto ruleipv4addressEx; } if (HASFAILED()) { return retval; } FOLLOWPUSH(FOLLOW_three_digit_in_ipv4address7868); three_digit(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleipv4addressEx; } if (HASFAILED()) { return retval; } } } // This is where rules clean up and exit // goto ruleipv4addressEx; /* Prevent compiler warnings */ ruleipv4addressEx: ; retval.stop = LT(-1); if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end ipv4address */ /** * $ANTLR start ipv6reference * ../grammars/belle_sip_message.g:1946:1: ipv6reference returns [const char* ret=NULL] : LSBRAQUET ipv6address RSBRAQUET ; */ static const char* ipv6reference(pbelle_sip_messageParser ctx) { const char* ret; belle_sip_messageParser_ipv6address_return ipv6address133; #undef RETURN_TYPE_ipv6address133 #define RETURN_TYPE_ipv6address133 belle_sip_messageParser_ipv6address_return /* Initialize rule variables */ ret = NULL; { // ../grammars/belle_sip_message.g:1946:47: ( LSBRAQUET ipv6address RSBRAQUET ) // ../grammars/belle_sip_message.g:1946:50: LSBRAQUET ipv6address RSBRAQUET { MATCHT(LSBRAQUET, &FOLLOW_LSBRAQUET_in_ipv6reference7882); if (HASEXCEPTION()) { goto ruleipv6referenceEx; } if (HASFAILED()) { return ret; } FOLLOWPUSH(FOLLOW_ipv6address_in_ipv6reference7884); ipv6address133=ipv6address(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleipv6referenceEx; } if (HASFAILED()) { return ret; } MATCHT(RSBRAQUET, &FOLLOW_RSBRAQUET_in_ipv6reference7886); if (HASEXCEPTION()) { goto ruleipv6referenceEx; } if (HASFAILED()) { return ret; } if ( BACKTRACKING==0 ) { ret=(const char *) (STRSTREAM->toStringTT(STRSTREAM, ipv6address133.start, ipv6address133.stop)) ->chars; } } } // This is where rules clean up and exit // goto ruleipv6referenceEx; /* Prevent compiler warnings */ ruleipv6referenceEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ret; } /* $ANTLR end ipv6reference */ /** * $ANTLR start ipv6address * ../grammars/belle_sip_message.g:1947:1: ipv6address : ( hexpart ( COLON ipv4address )? | ( hexseq )? COLON COLON ipv4address ); */ static belle_sip_messageParser_ipv6address_return ipv6address(pbelle_sip_messageParser ctx) { belle_sip_messageParser_ipv6address_return retval; /* Initialize rule variables */ retval.start = LT(1); retval.stop = retval.start; { { // ../grammars/belle_sip_message.g:1947:16: ( hexpart ( COLON ipv4address )? | ( hexseq )? COLON COLON ipv4address ) ANTLR3_UINT32 alt185; alt185=2; alt185 = cdfa185.predict(ctx, RECOGNIZER, ISTREAM, &cdfa185); if (HASEXCEPTION()) { goto ruleipv6addressEx; } if (HASFAILED()) { return retval; } switch (alt185) { case 1: // ../grammars/belle_sip_message.g:1947:19: hexpart ( COLON ipv4address )? { FOLLOWPUSH(FOLLOW_hexpart_in_ipv6address7899); hexpart(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleipv6addressEx; } if (HASFAILED()) { return retval; } // ../grammars/belle_sip_message.g:1947:27: ( COLON ipv4address )? { int alt183=2; switch ( LA(1) ) { case COLON: { alt183=1; } break; } switch (alt183) { case 1: // ../grammars/belle_sip_message.g:1947:29: COLON ipv4address { MATCHT(COLON, &FOLLOW_COLON_in_ipv6address7903); if (HASEXCEPTION()) { goto ruleipv6addressEx; } if (HASFAILED()) { return retval; } FOLLOWPUSH(FOLLOW_ipv4address_in_ipv6address7905); ipv4address(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleipv6addressEx; } if (HASFAILED()) { return retval; } } break; } } } break; case 2: // ../grammars/belle_sip_message.g:1947:52: ( hexseq )? COLON COLON ipv4address { // ../grammars/belle_sip_message.g:1947:52: ( hexseq )? { int alt184=2; switch ( LA(1) ) { case DIGIT: case HEX_CHAR: { alt184=1; } break; } switch (alt184) { case 1: // ../grammars/belle_sip_message.g:1947:54: hexseq { FOLLOWPUSH(FOLLOW_hexseq_in_ipv6address7914); hexseq(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleipv6addressEx; } if (HASFAILED()) { return retval; } } break; } } MATCHT(COLON, &FOLLOW_COLON_in_ipv6address7919); if (HASEXCEPTION()) { goto ruleipv6addressEx; } if (HASFAILED()) { return retval; } MATCHT(COLON, &FOLLOW_COLON_in_ipv6address7921); if (HASEXCEPTION()) { goto ruleipv6addressEx; } if (HASFAILED()) { return retval; } FOLLOWPUSH(FOLLOW_ipv4address_in_ipv6address7923); ipv4address(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleipv6addressEx; } if (HASFAILED()) { return retval; } } break; } } } // This is where rules clean up and exit // goto ruleipv6addressEx; /* Prevent compiler warnings */ ruleipv6addressEx: ; retval.stop = LT(-1); if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end ipv6address */ /** * $ANTLR start hexpart * ../grammars/belle_sip_message.g:1948:1: hexpart : ( hexseq | hexseq COLON COLON ( hexseq )? | COLON COLON ( hexseq )? ); */ static void hexpart(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { { // ../grammars/belle_sip_message.g:1948:16: ( hexseq | hexseq COLON COLON ( hexseq )? | COLON COLON ( hexseq )? ) ANTLR3_UINT32 alt188; alt188=3; alt188 = cdfa188.predict(ctx, RECOGNIZER, ISTREAM, &cdfa188); if (HASEXCEPTION()) { goto rulehexpartEx; } if (HASFAILED()) { return ; } switch (alt188) { case 1: // ../grammars/belle_sip_message.g:1948:19: hexseq { FOLLOWPUSH(FOLLOW_hexseq_in_hexpart7938); hexseq(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulehexpartEx; } if (HASFAILED()) { return ; } } break; case 2: // ../grammars/belle_sip_message.g:1948:28: hexseq COLON COLON ( hexseq )? { FOLLOWPUSH(FOLLOW_hexseq_in_hexpart7942); hexseq(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulehexpartEx; } if (HASFAILED()) { return ; } MATCHT(COLON, &FOLLOW_COLON_in_hexpart7944); if (HASEXCEPTION()) { goto rulehexpartEx; } if (HASFAILED()) { return ; } MATCHT(COLON, &FOLLOW_COLON_in_hexpart7946); if (HASEXCEPTION()) { goto rulehexpartEx; } if (HASFAILED()) { return ; } // ../grammars/belle_sip_message.g:1948:47: ( hexseq )? { int alt186=2; switch ( LA(1) ) { case DIGIT: case HEX_CHAR: { alt186=1; } break; } switch (alt186) { case 1: // ../grammars/belle_sip_message.g:1948:49: hexseq { FOLLOWPUSH(FOLLOW_hexseq_in_hexpart7950); hexseq(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulehexpartEx; } if (HASFAILED()) { return ; } } break; } } } break; case 3: // ../grammars/belle_sip_message.g:1948:61: COLON COLON ( hexseq )? { MATCHT(COLON, &FOLLOW_COLON_in_hexpart7957); if (HASEXCEPTION()) { goto rulehexpartEx; } if (HASFAILED()) { return ; } MATCHT(COLON, &FOLLOW_COLON_in_hexpart7959); if (HASEXCEPTION()) { goto rulehexpartEx; } if (HASFAILED()) { return ; } // ../grammars/belle_sip_message.g:1948:73: ( hexseq )? { int alt187=2; switch ( LA(1) ) { case DIGIT: case HEX_CHAR: { alt187=1; } break; } switch (alt187) { case 1: // ../grammars/belle_sip_message.g:1948:75: hexseq { FOLLOWPUSH(FOLLOW_hexseq_in_hexpart7963); hexseq(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulehexpartEx; } if (HASFAILED()) { return ; } } break; } } } break; } } } // This is where rules clean up and exit // goto rulehexpartEx; /* Prevent compiler warnings */ rulehexpartEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end hexpart */ /** * $ANTLR start hexseq * ../grammars/belle_sip_message.g:1949:1: hexseq : hex4 ( COLON hex4 )* ; */ static void hexseq(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:1949:16: ( hex4 ( COLON hex4 )* ) // ../grammars/belle_sip_message.g:1949:19: hex4 ( COLON hex4 )* { FOLLOWPUSH(FOLLOW_hex4_in_hexseq7982); hex4(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulehexseqEx; } if (HASFAILED()) { return ; } // ../grammars/belle_sip_message.g:1949:24: ( COLON hex4 )* for (;;) { int alt189=2; switch ( LA(1) ) { case COLON: { switch ( LA(2) ) { case DIGIT: { switch ( LA(3) ) { case DIGIT: { switch ( LA(4) ) { case DIGIT: { switch ( LA(5) ) { case EOF: case COLON: case COMMA: case CRLF: case DIGIT: case HEX_CHAR: case RSBRAQUET: case SEMI: case SP: { alt189=1; } break; } } break; case EOF: case COLON: case COMMA: case CRLF: case HEX_CHAR: case RSBRAQUET: case SEMI: case SP: { alt189=1; } break; } } break; case EOF: case COLON: case COMMA: case CRLF: case HEX_CHAR: case RSBRAQUET: case SEMI: case SP: { alt189=1; } break; } } break; case HEX_CHAR: { alt189=1; } break; } } break; } switch (alt189) { case 1: // ../grammars/belle_sip_message.g:1949:26: COLON hex4 { MATCHT(COLON, &FOLLOW_COLON_in_hexseq7986); if (HASEXCEPTION()) { goto rulehexseqEx; } if (HASFAILED()) { return ; } FOLLOWPUSH(FOLLOW_hex4_in_hexseq7988); hex4(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulehexseqEx; } if (HASFAILED()) { return ; } } break; default: goto loop189; /* break out of the loop */ break; } } loop189: ; /* Jump out to here if this rule does not match */ } } // This is where rules clean up and exit // goto rulehexseqEx; /* Prevent compiler warnings */ rulehexseqEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end hexseq */ /** * $ANTLR start hex4 * ../grammars/belle_sip_message.g:1950:1: hex4 : ( hexdigit )+ ; */ static void hex4(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:1950:16: ( ( hexdigit )+ ) // ../grammars/belle_sip_message.g:1950:19: ( hexdigit )+ { // ../grammars/belle_sip_message.g:1950:19: ( hexdigit )+ { int cnt190=0; for (;;) { int alt190=2; switch ( LA(1) ) { case DIGIT: case HEX_CHAR: { alt190=1; } break; } switch (alt190) { case 1: // ../grammars/belle_sip_message.g:1950:19: hexdigit { FOLLOWPUSH(FOLLOW_hexdigit_in_hex48008); hexdigit(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulehex4Ex; } if (HASFAILED()) { return ; } } break; default: if ( cnt190 >= 1 ) { goto loop190; } if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } /* mismatchedSetEx() */ CONSTRUCTEX(); EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME; goto rulehex4Ex; } cnt190++; } loop190: ; /* Jump to here if this rule does not match */ } } } // This is where rules clean up and exit // goto rulehex4Ex; /* Prevent compiler warnings */ rulehex4Ex: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end hex4 */ /** * $ANTLR start port * ../grammars/belle_sip_message.g:1952:1: port returns [int ret] : ( DIGIT )+ ; */ static belle_sip_messageParser_port_return port(pbelle_sip_messageParser ctx) { belle_sip_messageParser_port_return retval; /* Initialize rule variables */ retval.ret=-1; retval.start = LT(1); retval.stop = retval.start; { // ../grammars/belle_sip_message.g:1954:2: ( ( DIGIT )+ ) // ../grammars/belle_sip_message.g:1954:5: ( DIGIT )+ { // ../grammars/belle_sip_message.g:1954:5: ( DIGIT )+ { int cnt191=0; for (;;) { int alt191=2; switch ( LA(1) ) { case DIGIT: { alt191=1; } break; } switch (alt191) { case 1: // ../grammars/belle_sip_message.g:1954:5: DIGIT { MATCHT(DIGIT, &FOLLOW_DIGIT_in_port8030); if (HASEXCEPTION()) { goto ruleportEx; } if (HASFAILED()) { return retval; } } break; default: if ( cnt191 >= 1 ) { goto loop191; } if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } /* mismatchedSetEx() */ CONSTRUCTEX(); EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME; goto ruleportEx; } cnt191++; } loop191: ; /* Jump to here if this rule does not match */ } if ( BACKTRACKING==0 ) { retval.ret=atoi((const char *) STRSTREAM->toStringTT(STRSTREAM, retval.start, LT(-1)) ->chars); } } } // This is where rules clean up and exit // goto ruleportEx; /* Prevent compiler warnings */ ruleportEx: ; retval.stop = LT(-1); if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end port */ /** * $ANTLR start escaped * ../grammars/belle_sip_message.g:1956:1: escaped : PERCENT hexdigit hexdigit ; */ static void escaped(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:1956:13: ( PERCENT hexdigit hexdigit ) // ../grammars/belle_sip_message.g:1956:16: PERCENT hexdigit hexdigit { MATCHT(PERCENT, &FOLLOW_PERCENT_in_escaped8046); if (HASEXCEPTION()) { goto ruleescapedEx; } if (HASFAILED()) { return ; } FOLLOWPUSH(FOLLOW_hexdigit_in_escaped8048); hexdigit(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleescapedEx; } if (HASFAILED()) { return ; } FOLLOWPUSH(FOLLOW_hexdigit_in_escaped8050); hexdigit(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleescapedEx; } if (HASFAILED()) { return ; } } } // This is where rules clean up and exit // goto ruleescapedEx; /* Prevent compiler warnings */ ruleescapedEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end escaped */ /** * $ANTLR start ttl * ../grammars/belle_sip_message.g:1957:1: ttl : three_digit ; */ static void ttl(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:1957:5: ( three_digit ) // ../grammars/belle_sip_message.g:1957:7: three_digit { FOLLOWPUSH(FOLLOW_three_digit_in_ttl8057); three_digit(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulettlEx; } if (HASFAILED()) { return ; } } } // This is where rules clean up and exit // goto rulettlEx; /* Prevent compiler warnings */ rulettlEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end ttl */ /** * $ANTLR start three_digit * ../grammars/belle_sip_message.g:1958:1: three_digit : ( ( DIGIT )=> DIGIT | ( DIGIT DIGIT )=> ( DIGIT DIGIT ) | ( DIGIT DIGIT DIGIT )=> ( DIGIT DIGIT DIGIT ) ); */ static void three_digit(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { { // ../grammars/belle_sip_message.g:1958:12: ( ( DIGIT )=> DIGIT | ( DIGIT DIGIT )=> ( DIGIT DIGIT ) | ( DIGIT DIGIT DIGIT )=> ( DIGIT DIGIT DIGIT ) ) ANTLR3_UINT32 alt192; alt192=3; switch ( LA(1) ) { case DIGIT: { { int LA192_1 = LA(2); if ( (LA192_1 == DIGIT)) { { int LA192_2 = LA(3); if ( (synpred16_belle_sip_message(ctx)) && (LA192_2 == DIGIT)) { alt192=3; } else if ( (synpred15_belle_sip_message(ctx)) && (LA192_2 == DOT)) { alt192=2; } else if ( (synpred15_belle_sip_message(ctx)) && (LA192_2 == SP)) { alt192=2; } else if ( (synpred15_belle_sip_message(ctx)) && (LA192_2 == CRLF)) { alt192=2; } else if ( (synpred15_belle_sip_message(ctx)) && (LA192_2 == COMMA)) { alt192=2; } else if ( (synpred15_belle_sip_message(ctx)) && (LA192_2 == EOF)) { alt192=2; } else if ( (synpred15_belle_sip_message(ctx)) && (LA192_2 == SEMI)) { alt192=2; } else if ( (synpred15_belle_sip_message(ctx)) && (LA192_2 == COLON)) { alt192=2; } else if ( (synpred15_belle_sip_message(ctx)) && (LA192_2 == SLASH)) { alt192=2; } else if ( (synpred15_belle_sip_message(ctx)) && (LA192_2 == QMARK)) { alt192=2; } else if ( (synpred15_belle_sip_message(ctx)) && (LA192_2 == RAQUOT)) { alt192=2; } else if ( (synpred15_belle_sip_message(ctx)) && (LA192_2 == DQUOTE)) { alt192=2; } else if ( (synpred15_belle_sip_message(ctx)) && (LA192_2 == RSBRAQUET)) { alt192=2; } else { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 192; EXCEPTION->state = 2; goto rulethree_digitEx; } } } else if ( (synpred14_belle_sip_message(ctx)) && (LA192_1 == DOT)) { alt192=1; } else if ( (synpred14_belle_sip_message(ctx)) && (LA192_1 == SP)) { alt192=1; } else if ( (synpred14_belle_sip_message(ctx)) && (LA192_1 == CRLF)) { alt192=1; } else if ( (synpred14_belle_sip_message(ctx)) && (LA192_1 == COMMA)) { alt192=1; } else if ( (synpred14_belle_sip_message(ctx)) && (LA192_1 == EOF)) { alt192=1; } else if ( (synpred14_belle_sip_message(ctx)) && (LA192_1 == SEMI)) { alt192=1; } else if ( (synpred14_belle_sip_message(ctx)) && (LA192_1 == COLON)) { alt192=1; } else if ( (synpred14_belle_sip_message(ctx)) && (LA192_1 == SLASH)) { alt192=1; } else if ( (synpred14_belle_sip_message(ctx)) && (LA192_1 == QMARK)) { alt192=1; } else if ( (synpred14_belle_sip_message(ctx)) && (LA192_1 == RAQUOT)) { alt192=1; } else if ( (synpred14_belle_sip_message(ctx)) && (LA192_1 == DQUOTE)) { alt192=1; } else if ( (synpred14_belle_sip_message(ctx)) && (LA192_1 == RSBRAQUET)) { alt192=1; } else { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 192; EXCEPTION->state = 1; goto rulethree_digitEx; } } } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 192; EXCEPTION->state = 0; goto rulethree_digitEx; } switch (alt192) { case 1: // ../grammars/belle_sip_message.g:1958:14: ( DIGIT )=> DIGIT { MATCHT(DIGIT, &FOLLOW_DIGIT_in_three_digit8069); if (HASEXCEPTION()) { goto rulethree_digitEx; } if (HASFAILED()) { return ; } } break; case 2: // ../grammars/belle_sip_message.g:1960:13: ( DIGIT DIGIT )=> ( DIGIT DIGIT ) { // ../grammars/belle_sip_message.g:1960:30: ( DIGIT DIGIT ) // ../grammars/belle_sip_message.g:1960:31: DIGIT DIGIT { MATCHT(DIGIT, &FOLLOW_DIGIT_in_three_digit8106); if (HASEXCEPTION()) { goto rulethree_digitEx; } if (HASFAILED()) { return ; } MATCHT(DIGIT, &FOLLOW_DIGIT_in_three_digit8108); if (HASEXCEPTION()) { goto rulethree_digitEx; } if (HASFAILED()) { return ; } } } break; case 3: // ../grammars/belle_sip_message.g:1962:13: ( DIGIT DIGIT DIGIT )=> ( DIGIT DIGIT DIGIT ) { // ../grammars/belle_sip_message.g:1962:35: ( DIGIT DIGIT DIGIT ) // ../grammars/belle_sip_message.g:1962:36: DIGIT DIGIT DIGIT { MATCHT(DIGIT, &FOLLOW_DIGIT_in_three_digit8147); if (HASEXCEPTION()) { goto rulethree_digitEx; } if (HASFAILED()) { return ; } MATCHT(DIGIT, &FOLLOW_DIGIT_in_three_digit8149); if (HASEXCEPTION()) { goto rulethree_digitEx; } if (HASFAILED()) { return ; } MATCHT(DIGIT, &FOLLOW_DIGIT_in_three_digit8151); if (HASEXCEPTION()) { goto rulethree_digitEx; } if (HASFAILED()) { return ; } } } break; } } } // This is where rules clean up and exit // goto rulethree_digitEx; /* Prevent compiler warnings */ rulethree_digitEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end three_digit */ /** * $ANTLR start token * ../grammars/belle_sip_message.g:1963:1: token : ( alphanum | mark | PERCENT | PLUS | BQUOTE )+ ; */ static belle_sip_messageParser_token_return token(pbelle_sip_messageParser ctx) { belle_sip_messageParser_token_return retval; /* Initialize rule variables */ retval.start = LT(1); retval.stop = retval.start; { // ../grammars/belle_sip_message.g:1964:3: ( ( alphanum | mark | PERCENT | PLUS | BQUOTE )+ ) // ../grammars/belle_sip_message.g:1964:7: ( alphanum | mark | PERCENT | PLUS | BQUOTE )+ { // ../grammars/belle_sip_message.g:1964:7: ( alphanum | mark | PERCENT | PLUS | BQUOTE )+ { int cnt193=0; for (;;) { int alt193=6; switch ( LA(1) ) { case COMMON_CHAR: case DIGIT: case HEX_CHAR: { alt193=1; } break; case DASH: case DOT: case EMARK: case LPAREN: case RPAREN: case SQUOTE: case STAR: case TILDE: case USCORE: { alt193=2; } break; case PERCENT: { alt193=3; } break; case PLUS: { alt193=4; } break; case BQUOTE: { alt193=5; } break; } switch (alt193) { case 1: // ../grammars/belle_sip_message.g:1964:8: alphanum { FOLLOWPUSH(FOLLOW_alphanum_in_token8165); alphanum(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruletokenEx; } if (HASFAILED()) { return retval; } } break; case 2: // ../grammars/belle_sip_message.g:1964:19: mark { FOLLOWPUSH(FOLLOW_mark_in_token8169); mark(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruletokenEx; } if (HASFAILED()) { return retval; } } break; case 3: // ../grammars/belle_sip_message.g:1964:26: PERCENT { MATCHT(PERCENT, &FOLLOW_PERCENT_in_token8173); if (HASEXCEPTION()) { goto ruletokenEx; } if (HASFAILED()) { return retval; } } break; case 4: // ../grammars/belle_sip_message.g:1964:36: PLUS { MATCHT(PLUS, &FOLLOW_PLUS_in_token8177); if (HASEXCEPTION()) { goto ruletokenEx; } if (HASFAILED()) { return retval; } } break; case 5: // ../grammars/belle_sip_message.g:1964:43: BQUOTE { MATCHT(BQUOTE, &FOLLOW_BQUOTE_in_token8181); if (HASEXCEPTION()) { goto ruletokenEx; } if (HASFAILED()) { return retval; } } break; default: if ( cnt193 >= 1 ) { goto loop193; } if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } /* mismatchedSetEx() */ CONSTRUCTEX(); EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME; goto ruletokenEx; } cnt193++; } loop193: ; /* Jump to here if this rule does not match */ } } } // This is where rules clean up and exit // goto ruletokenEx; /* Prevent compiler warnings */ ruletokenEx: ; retval.stop = LT(-1); if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end token */ /** * $ANTLR start reserved_for_from_to_contact_addr_spec * ../grammars/belle_sip_message.g:1966:1: reserved_for_from_to_contact_addr_spec : ( COLON | AT | AND | EQUAL | PLUS | DOLLARD | SLASH ); */ static void reserved_for_from_to_contact_addr_spec(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:1966:39: ( COLON | AT | AND | EQUAL | PLUS | DOLLARD | SLASH ) // ../grammars/belle_sip_message.g: { if ( ((LA(1) >= AND) && (LA(1) <= AT)) || LA(1) == COLON || LA(1) == DOLLARD || LA(1) == EQUAL || LA(1) == PLUS || LA(1) == SLASH ) { CONSUME(); PERRORRECOVERY=ANTLR3_FALSE; FAILEDFLAG=ANTLR3_FALSE; } else { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_MISMATCHED_SET_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_MISMATCHED_SET_NAME; EXCEPTION->expectingSet = NULL; goto rulereserved_for_from_to_contact_addr_specEx; } } } // This is where rules clean up and exit // goto rulereserved_for_from_to_contact_addr_specEx; /* Prevent compiler warnings */ rulereserved_for_from_to_contact_addr_specEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end reserved_for_from_to_contact_addr_spec */ /** * $ANTLR start reserved * ../grammars/belle_sip_message.g:1969:1: reserved : ( SEMI | COMMA | QMARK | reserved_for_from_to_contact_addr_spec ); */ static void reserved(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { { // ../grammars/belle_sip_message.g:1970:3: ( SEMI | COMMA | QMARK | reserved_for_from_to_contact_addr_spec ) ANTLR3_UINT32 alt194; alt194=4; switch ( LA(1) ) { case SEMI: { alt194=1; } break; case COMMA: { alt194=2; } break; case QMARK: { alt194=3; } break; case AND: case AT: case COLON: case DOLLARD: case EQUAL: case PLUS: case SLASH: { alt194=4; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 194; EXCEPTION->state = 0; goto rulereservedEx; } switch (alt194) { case 1: // ../grammars/belle_sip_message.g:1970:7: SEMI { MATCHT(SEMI, &FOLLOW_SEMI_in_reserved8230); if (HASEXCEPTION()) { goto rulereservedEx; } if (HASFAILED()) { return ; } } break; case 2: // ../grammars/belle_sip_message.g:1970:14: COMMA { MATCHT(COMMA, &FOLLOW_COMMA_in_reserved8234); if (HASEXCEPTION()) { goto rulereservedEx; } if (HASFAILED()) { return ; } } break; case 3: // ../grammars/belle_sip_message.g:1970:23: QMARK { MATCHT(QMARK, &FOLLOW_QMARK_in_reserved8239); if (HASEXCEPTION()) { goto rulereservedEx; } if (HASFAILED()) { return ; } } break; case 4: // ../grammars/belle_sip_message.g:1970:32: reserved_for_from_to_contact_addr_spec { FOLLOWPUSH(FOLLOW_reserved_for_from_to_contact_addr_spec_in_reserved8244); reserved_for_from_to_contact_addr_spec(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulereservedEx; } if (HASFAILED()) { return ; } } break; } } } // This is where rules clean up and exit // goto rulereservedEx; /* Prevent compiler warnings */ rulereservedEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end reserved */ /** * $ANTLR start unreserved * ../grammars/belle_sip_message.g:1972:1: unreserved : ( alphanum | mark ); */ static void unreserved(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { { // ../grammars/belle_sip_message.g:1972:12: ( alphanum | mark ) ANTLR3_UINT32 alt195; alt195=2; switch ( LA(1) ) { case COMMON_CHAR: case DIGIT: case HEX_CHAR: { alt195=1; } break; case DASH: case DOT: case EMARK: case LPAREN: case RPAREN: case SQUOTE: case STAR: case TILDE: case USCORE: { alt195=2; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 195; EXCEPTION->state = 0; goto ruleunreservedEx; } switch (alt195) { case 1: // ../grammars/belle_sip_message.g:1972:17: alphanum { FOLLOWPUSH(FOLLOW_alphanum_in_unreserved8256); alphanum(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleunreservedEx; } if (HASFAILED()) { return ; } } break; case 2: // ../grammars/belle_sip_message.g:1972:27: mark { FOLLOWPUSH(FOLLOW_mark_in_unreserved8259); mark(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleunreservedEx; } if (HASFAILED()) { return ; } } break; } } } // This is where rules clean up and exit // goto ruleunreservedEx; /* Prevent compiler warnings */ ruleunreservedEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end unreserved */ /** * $ANTLR start alphanum * ../grammars/belle_sip_message.g:1973:1: alphanum : ( alpha | DIGIT ); */ static void alphanum(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { { // ../grammars/belle_sip_message.g:1973:10: ( alpha | DIGIT ) ANTLR3_UINT32 alt196; alt196=2; switch ( LA(1) ) { case COMMON_CHAR: case HEX_CHAR: { alt196=1; } break; case DIGIT: { alt196=2; } break; default: if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_NO_VIABLE_ALT_EXCEPTION; EXCEPTION->message = (void *)""; EXCEPTION->decisionNum = 196; EXCEPTION->state = 0; goto rulealphanumEx; } switch (alt196) { case 1: // ../grammars/belle_sip_message.g:1973:16: alpha { FOLLOWPUSH(FOLLOW_alpha_in_alphanum8270); alpha(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulealphanumEx; } if (HASFAILED()) { return ; } } break; case 2: // ../grammars/belle_sip_message.g:1973:24: DIGIT { MATCHT(DIGIT, &FOLLOW_DIGIT_in_alphanum8274); if (HASEXCEPTION()) { goto rulealphanumEx; } if (HASFAILED()) { return ; } } break; } } } // This is where rules clean up and exit // goto rulealphanumEx; /* Prevent compiler warnings */ rulealphanumEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end alphanum */ /** * $ANTLR start hexdigit * ../grammars/belle_sip_message.g:1974:1: hexdigit : ( HEX_CHAR | DIGIT ); */ static void hexdigit(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:1975:3: ( HEX_CHAR | DIGIT ) // ../grammars/belle_sip_message.g: { if ( LA(1) == DIGIT || LA(1) == HEX_CHAR ) { CONSUME(); PERRORRECOVERY=ANTLR3_FALSE; FAILEDFLAG=ANTLR3_FALSE; } else { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_MISMATCHED_SET_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_MISMATCHED_SET_NAME; EXCEPTION->expectingSet = NULL; goto rulehexdigitEx; } } } // This is where rules clean up and exit // goto rulehexdigitEx; /* Prevent compiler warnings */ rulehexdigitEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end hexdigit */ /** * $ANTLR start alpha * ../grammars/belle_sip_message.g:1976:1: alpha : ( HEX_CHAR | COMMON_CHAR ); */ static void alpha(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:1976:7: ( HEX_CHAR | COMMON_CHAR ) // ../grammars/belle_sip_message.g: { if ( LA(1) == COMMON_CHAR || LA(1) == HEX_CHAR ) { CONSUME(); PERRORRECOVERY=ANTLR3_FALSE; FAILEDFLAG=ANTLR3_FALSE; } else { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_MISMATCHED_SET_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_MISMATCHED_SET_NAME; EXCEPTION->expectingSet = NULL; goto rulealphaEx; } } } // This is where rules clean up and exit // goto rulealphaEx; /* Prevent compiler warnings */ rulealphaEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end alpha */ /** * $ANTLR start word * ../grammars/belle_sip_message.g:1978:1: word : ( alphanum | mark | PERCENT | PLUS | BQUOTE | LAQUOT | RAQUOT | COLON | BSLASH | DQUOTE | SLASH | LSBRAQUET | RSBRAQUET | QMARK | LBRACE | RBRACE )+ ; */ static belle_sip_messageParser_word_return word(pbelle_sip_messageParser ctx) { belle_sip_messageParser_word_return retval; /* Initialize rule variables */ retval.start = LT(1); retval.stop = retval.start; { // ../grammars/belle_sip_message.g:1979:3: ( ( alphanum | mark | PERCENT | PLUS | BQUOTE | LAQUOT | RAQUOT | COLON | BSLASH | DQUOTE | SLASH | LSBRAQUET | RSBRAQUET | QMARK | LBRACE | RBRACE )+ ) // ../grammars/belle_sip_message.g:1979:7: ( alphanum | mark | PERCENT | PLUS | BQUOTE | LAQUOT | RAQUOT | COLON | BSLASH | DQUOTE | SLASH | LSBRAQUET | RSBRAQUET | QMARK | LBRACE | RBRACE )+ { // ../grammars/belle_sip_message.g:1979:7: ( alphanum | mark | PERCENT | PLUS | BQUOTE | LAQUOT | RAQUOT | COLON | BSLASH | DQUOTE | SLASH | LSBRAQUET | RSBRAQUET | QMARK | LBRACE | RBRACE )+ { int cnt197=0; for (;;) { int alt197=17; switch ( LA(1) ) { case COMMON_CHAR: case DIGIT: case HEX_CHAR: { alt197=1; } break; case DASH: case DOT: case EMARK: case LPAREN: case RPAREN: case SQUOTE: case STAR: case TILDE: case USCORE: { alt197=2; } break; case PERCENT: { alt197=3; } break; case PLUS: { alt197=4; } break; case BQUOTE: { alt197=5; } break; case LAQUOT: { alt197=6; } break; case RAQUOT: { alt197=7; } break; case COLON: { alt197=8; } break; case BSLASH: { alt197=9; } break; case DQUOTE: { alt197=10; } break; case SLASH: { alt197=11; } break; case LSBRAQUET: { alt197=12; } break; case RSBRAQUET: { alt197=13; } break; case QMARK: { alt197=14; } break; case LBRACE: { alt197=15; } break; case RBRACE: { alt197=16; } break; } switch (alt197) { case 1: // ../grammars/belle_sip_message.g:1979:8: alphanum { FOLLOWPUSH(FOLLOW_alphanum_in_word8310); alphanum(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulewordEx; } if (HASFAILED()) { return retval; } } break; case 2: // ../grammars/belle_sip_message.g:1979:19: mark { FOLLOWPUSH(FOLLOW_mark_in_word8314); mark(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulewordEx; } if (HASFAILED()) { return retval; } } break; case 3: // ../grammars/belle_sip_message.g:1979:28: PERCENT { MATCHT(PERCENT, &FOLLOW_PERCENT_in_word8320); if (HASEXCEPTION()) { goto rulewordEx; } if (HASFAILED()) { return retval; } } break; case 4: // ../grammars/belle_sip_message.g:1980:25: PLUS { MATCHT(PLUS, &FOLLOW_PLUS_in_word8346); if (HASEXCEPTION()) { goto rulewordEx; } if (HASFAILED()) { return retval; } } break; case 5: // ../grammars/belle_sip_message.g:1980:32: BQUOTE { MATCHT(BQUOTE, &FOLLOW_BQUOTE_in_word8350); if (HASEXCEPTION()) { goto rulewordEx; } if (HASFAILED()) { return retval; } } break; case 6: // ../grammars/belle_sip_message.g:1981:22: LAQUOT { MATCHT(LAQUOT, &FOLLOW_LAQUOT_in_word8375); if (HASEXCEPTION()) { goto rulewordEx; } if (HASFAILED()) { return retval; } } break; case 7: // ../grammars/belle_sip_message.g:1981:31: RAQUOT { MATCHT(RAQUOT, &FOLLOW_RAQUOT_in_word8379); if (HASEXCEPTION()) { goto rulewordEx; } if (HASFAILED()) { return retval; } } break; case 8: // ../grammars/belle_sip_message.g:1982:22: COLON { MATCHT(COLON, &FOLLOW_COLON_in_word8404); if (HASEXCEPTION()) { goto rulewordEx; } if (HASFAILED()) { return retval; } } break; case 9: // ../grammars/belle_sip_message.g:1982:30: BSLASH { MATCHT(BSLASH, &FOLLOW_BSLASH_in_word8408); if (HASEXCEPTION()) { goto rulewordEx; } if (HASFAILED()) { return retval; } } break; case 10: // ../grammars/belle_sip_message.g:1982:39: DQUOTE { MATCHT(DQUOTE, &FOLLOW_DQUOTE_in_word8412); if (HASEXCEPTION()) { goto rulewordEx; } if (HASFAILED()) { return retval; } } break; case 11: // ../grammars/belle_sip_message.g:1982:48: SLASH { MATCHT(SLASH, &FOLLOW_SLASH_in_word8416); if (HASEXCEPTION()) { goto rulewordEx; } if (HASFAILED()) { return retval; } } break; case 12: // ../grammars/belle_sip_message.g:1982:56: LSBRAQUET { MATCHT(LSBRAQUET, &FOLLOW_LSBRAQUET_in_word8420); if (HASEXCEPTION()) { goto rulewordEx; } if (HASFAILED()) { return retval; } } break; case 13: // ../grammars/belle_sip_message.g:1982:68: RSBRAQUET { MATCHT(RSBRAQUET, &FOLLOW_RSBRAQUET_in_word8424); if (HASEXCEPTION()) { goto rulewordEx; } if (HASFAILED()) { return retval; } } break; case 14: // ../grammars/belle_sip_message.g:1982:80: QMARK { MATCHT(QMARK, &FOLLOW_QMARK_in_word8428); if (HASEXCEPTION()) { goto rulewordEx; } if (HASFAILED()) { return retval; } } break; case 15: // ../grammars/belle_sip_message.g:1982:88: LBRACE { MATCHT(LBRACE, &FOLLOW_LBRACE_in_word8432); if (HASEXCEPTION()) { goto rulewordEx; } if (HASFAILED()) { return retval; } } break; case 16: // ../grammars/belle_sip_message.g:1982:97: RBRACE { MATCHT(RBRACE, &FOLLOW_RBRACE_in_word8436); if (HASEXCEPTION()) { goto rulewordEx; } if (HASFAILED()) { return retval; } } break; default: if ( cnt197 >= 1 ) { goto loop197; } if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return retval; } /* mismatchedSetEx() */ CONSTRUCTEX(); EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME; goto rulewordEx; } cnt197++; } loop197: ; /* Jump to here if this rule does not match */ } } } // This is where rules clean up and exit // goto rulewordEx; /* Prevent compiler warnings */ rulewordEx: ; retval.stop = LT(-1); if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return retval; } /* $ANTLR end word */ /** * $ANTLR start mark * ../grammars/belle_sip_message.g:1984:1: mark : ( DASH | USCORE | DOT | EMARK | TILDE | STAR | SQUOTE | LPAREN | RPAREN ); */ static void mark(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:1984:7: ( DASH | USCORE | DOT | EMARK | TILDE | STAR | SQUOTE | LPAREN | RPAREN ) // ../grammars/belle_sip_message.g: { if ( LA(1) == DASH || LA(1) == DOT || LA(1) == EMARK || LA(1) == LPAREN || LA(1) == RPAREN || ((LA(1) >= SQUOTE) && (LA(1) <= USCORE)) ) { CONSUME(); PERRORRECOVERY=ANTLR3_FALSE; FAILEDFLAG=ANTLR3_FALSE; } else { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_MISMATCHED_SET_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_MISMATCHED_SET_NAME; EXCEPTION->expectingSet = NULL; goto rulemarkEx; } } } // This is where rules clean up and exit // goto rulemarkEx; /* Prevent compiler warnings */ rulemarkEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end mark */ /** * $ANTLR start sp_tab_colon * ../grammars/belle_sip_message.g:1985:1: sp_tab_colon : ( SP | HTAB )* COLON ; */ static void sp_tab_colon(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:1986:2: ( ( SP | HTAB )* COLON ) // ../grammars/belle_sip_message.g:1986:3: ( SP | HTAB )* COLON { // ../grammars/belle_sip_message.g:1986:3: ( SP | HTAB )* for (;;) { int alt198=2; switch ( LA(1) ) { case HTAB: case SP: { alt198=1; } break; } switch (alt198) { case 1: // ../grammars/belle_sip_message.g: { if ( LA(1) == HTAB || LA(1) == SP ) { CONSUME(); PERRORRECOVERY=ANTLR3_FALSE; FAILEDFLAG=ANTLR3_FALSE; } else { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_MISMATCHED_SET_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_MISMATCHED_SET_NAME; EXCEPTION->expectingSet = NULL; goto rulesp_tab_colonEx; } } break; default: goto loop198; /* break out of the loop */ break; } } loop198: ; /* Jump out to here if this rule does not match */ MATCHT(COLON, &FOLLOW_COLON_in_sp_tab_colon8508); if (HASEXCEPTION()) { goto rulesp_tab_colonEx; } if (HASFAILED()) { return ; } } } // This is where rules clean up and exit // goto rulesp_tab_colonEx; /* Prevent compiler warnings */ rulesp_tab_colonEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end sp_tab_colon */ /** * $ANTLR start hcolon * ../grammars/belle_sip_message.g:1987:1: hcolon : sp_tab_colon ( lws )? ; */ static void hcolon(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:1987:9: ( sp_tab_colon ( lws )? ) // ../grammars/belle_sip_message.g:1987:11: sp_tab_colon ( lws )? { FOLLOWPUSH(FOLLOW_sp_tab_colon_in_hcolon8517); sp_tab_colon(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulehcolonEx; } if (HASFAILED()) { return ; } // ../grammars/belle_sip_message.g:1987:24: ( lws )? { int alt199=2; switch ( LA(1) ) { case SP: { alt199=1; } break; case CRLF: { switch ( LA(2) ) { case SP: { alt199=1; } break; } } break; } switch (alt199) { case 1: // ../grammars/belle_sip_message.g:1987:24: lws { FOLLOWPUSH(FOLLOW_lws_in_hcolon8519); lws(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulehcolonEx; } if (HASFAILED()) { return ; } } break; } } } } // This is where rules clean up and exit // goto rulehcolonEx; /* Prevent compiler warnings */ rulehcolonEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end hcolon */ /** * $ANTLR start ldquot * ../grammars/belle_sip_message.g:1989:1: ldquot : ( lws )? DQUOTE ; */ static void ldquot(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:1989:9: ( ( lws )? DQUOTE ) // ../grammars/belle_sip_message.g:1989:12: ( lws )? DQUOTE { // ../grammars/belle_sip_message.g:1989:12: ( lws )? { int alt200=2; switch ( LA(1) ) { case CRLF: case SP: { alt200=1; } break; } switch (alt200) { case 1: // ../grammars/belle_sip_message.g:1989:12: lws { FOLLOWPUSH(FOLLOW_lws_in_ldquot8540); lws(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleldquotEx; } if (HASFAILED()) { return ; } } break; } } MATCHT(DQUOTE, &FOLLOW_DQUOTE_in_ldquot8543); if (HASEXCEPTION()) { goto ruleldquotEx; } if (HASFAILED()) { return ; } } } // This is where rules clean up and exit // goto ruleldquotEx; /* Prevent compiler warnings */ ruleldquotEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end ldquot */ /** * $ANTLR start rdquot * ../grammars/belle_sip_message.g:1990:1: rdquot : DQUOTE ( lws )? ; */ static void rdquot(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:1990:8: ( DQUOTE ( lws )? ) // ../grammars/belle_sip_message.g:1990:10: DQUOTE ( lws )? { MATCHT(DQUOTE, &FOLLOW_DQUOTE_in_rdquot8551); if (HASEXCEPTION()) { goto rulerdquotEx; } if (HASFAILED()) { return ; } // ../grammars/belle_sip_message.g:1990:17: ( lws )? { int alt201=2; switch ( LA(1) ) { case CRLF: case SP: { alt201=1; } break; } switch (alt201) { case 1: // ../grammars/belle_sip_message.g:1990:17: lws { FOLLOWPUSH(FOLLOW_lws_in_rdquot8553); lws(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulerdquotEx; } if (HASFAILED()) { return ; } } break; } } } } // This is where rules clean up and exit // goto rulerdquotEx; /* Prevent compiler warnings */ rulerdquotEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end rdquot */ /** * $ANTLR start semi * ../grammars/belle_sip_message.g:1991:1: semi : ( lws )? SEMI ( lws )? ; */ static void semi(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:1991:5: ( ( lws )? SEMI ( lws )? ) // ../grammars/belle_sip_message.g:1991:7: ( lws )? SEMI ( lws )? { // ../grammars/belle_sip_message.g:1991:7: ( lws )? { int alt202=2; switch ( LA(1) ) { case CRLF: case SP: { alt202=1; } break; } switch (alt202) { case 1: // ../grammars/belle_sip_message.g:1991:7: lws { FOLLOWPUSH(FOLLOW_lws_in_semi8560); lws(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesemiEx; } if (HASFAILED()) { return ; } } break; } } MATCHT(SEMI, &FOLLOW_SEMI_in_semi8563); if (HASEXCEPTION()) { goto rulesemiEx; } if (HASFAILED()) { return ; } // ../grammars/belle_sip_message.g:1991:17: ( lws )? { int alt203=2; switch ( LA(1) ) { case CRLF: case SP: { alt203=1; } break; } switch (alt203) { case 1: // ../grammars/belle_sip_message.g:1991:17: lws { FOLLOWPUSH(FOLLOW_lws_in_semi8565); lws(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesemiEx; } if (HASFAILED()) { return ; } } break; } } } } // This is where rules clean up and exit // goto rulesemiEx; /* Prevent compiler warnings */ rulesemiEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end semi */ /** * $ANTLR start comma * ../grammars/belle_sip_message.g:1992:1: comma : ( lws )? COMMA ( lws )? ; */ static void comma(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:1992:7: ( ( lws )? COMMA ( lws )? ) // ../grammars/belle_sip_message.g:1992:9: ( lws )? COMMA ( lws )? { // ../grammars/belle_sip_message.g:1992:9: ( lws )? { int alt204=2; switch ( LA(1) ) { case CRLF: case SP: { alt204=1; } break; } switch (alt204) { case 1: // ../grammars/belle_sip_message.g:1992:9: lws { FOLLOWPUSH(FOLLOW_lws_in_comma8573); lws(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulecommaEx; } if (HASFAILED()) { return ; } } break; } } MATCHT(COMMA, &FOLLOW_COMMA_in_comma8576); if (HASEXCEPTION()) { goto rulecommaEx; } if (HASFAILED()) { return ; } // ../grammars/belle_sip_message.g:1992:20: ( lws )? { int alt205=2; switch ( LA(1) ) { case CRLF: case SP: { alt205=1; } break; } switch (alt205) { case 1: // ../grammars/belle_sip_message.g:1992:20: lws { FOLLOWPUSH(FOLLOW_lws_in_comma8578); lws(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulecommaEx; } if (HASFAILED()) { return ; } } break; } } } } // This is where rules clean up and exit // goto rulecommaEx; /* Prevent compiler warnings */ rulecommaEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end comma */ /** * $ANTLR start sp_laquot * ../grammars/belle_sip_message.g:1993:1: sp_laquot : ( lws )? LAQUOT ; */ static void sp_laquot(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:1994:3: ( ( lws )? LAQUOT ) // ../grammars/belle_sip_message.g:1994:5: ( lws )? LAQUOT { // ../grammars/belle_sip_message.g:1994:5: ( lws )? { int alt206=2; switch ( LA(1) ) { case CRLF: case SP: { alt206=1; } break; } switch (alt206) { case 1: // ../grammars/belle_sip_message.g:1994:5: lws { FOLLOWPUSH(FOLLOW_lws_in_sp_laquot8588); lws(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesp_laquotEx; } if (HASFAILED()) { return ; } } break; } } MATCHT(LAQUOT, &FOLLOW_LAQUOT_in_sp_laquot8591); if (HASEXCEPTION()) { goto rulesp_laquotEx; } if (HASFAILED()) { return ; } } } // This is where rules clean up and exit // goto rulesp_laquotEx; /* Prevent compiler warnings */ rulesp_laquotEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end sp_laquot */ /** * $ANTLR start raquot_sp * ../grammars/belle_sip_message.g:1995:1: raquot_sp : RAQUOT ( lws )? ; */ static void raquot_sp(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:1996:3: ( RAQUOT ( lws )? ) // ../grammars/belle_sip_message.g:1996:5: RAQUOT ( lws )? { MATCHT(RAQUOT, &FOLLOW_RAQUOT_in_raquot_sp8601); if (HASEXCEPTION()) { goto ruleraquot_spEx; } if (HASFAILED()) { return ; } // ../grammars/belle_sip_message.g:1996:12: ( lws )? { int alt207=2; switch ( LA(1) ) { case CRLF: case SP: { alt207=1; } break; } switch (alt207) { case 1: // ../grammars/belle_sip_message.g:1996:12: lws { FOLLOWPUSH(FOLLOW_lws_in_raquot_sp8603); lws(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleraquot_spEx; } if (HASFAILED()) { return ; } } break; } } } } // This is where rules clean up and exit // goto ruleraquot_spEx; /* Prevent compiler warnings */ ruleraquot_spEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end raquot_sp */ /** * $ANTLR start equal * ../grammars/belle_sip_message.g:1997:1: equal : ( lws )? EQUAL ( lws )? ; */ static void equal(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:1997:6: ( ( lws )? EQUAL ( lws )? ) // ../grammars/belle_sip_message.g:1998:4: ( lws )? EQUAL ( lws )? { // ../grammars/belle_sip_message.g:1998:4: ( lws )? { int alt208=2; switch ( LA(1) ) { case CRLF: case SP: { alt208=1; } break; } switch (alt208) { case 1: // ../grammars/belle_sip_message.g:1998:4: lws { FOLLOWPUSH(FOLLOW_lws_in_equal8613); lws(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleequalEx; } if (HASFAILED()) { return ; } } break; } } MATCHT(EQUAL, &FOLLOW_EQUAL_in_equal8616); if (HASEXCEPTION()) { goto ruleequalEx; } if (HASFAILED()) { return ; } // ../grammars/belle_sip_message.g:1998:15: ( lws )? { int alt209=2; switch ( LA(1) ) { case CRLF: case SP: { alt209=1; } break; } switch (alt209) { case 1: // ../grammars/belle_sip_message.g:1998:15: lws { FOLLOWPUSH(FOLLOW_lws_in_equal8618); lws(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleequalEx; } if (HASFAILED()) { return ; } } break; } } } } // This is where rules clean up and exit // goto ruleequalEx; /* Prevent compiler warnings */ ruleequalEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end equal */ /** * $ANTLR start slash * ../grammars/belle_sip_message.g:1999:1: slash : ( lws )? SLASH ( lws )? ; */ static void slash(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { // ../grammars/belle_sip_message.g:1999:7: ( ( lws )? SLASH ( lws )? ) // ../grammars/belle_sip_message.g:1999:9: ( lws )? SLASH ( lws )? { // ../grammars/belle_sip_message.g:1999:9: ( lws )? { int alt210=2; switch ( LA(1) ) { case CRLF: case SP: { alt210=1; } break; } switch (alt210) { case 1: // ../grammars/belle_sip_message.g:1999:9: lws { FOLLOWPUSH(FOLLOW_lws_in_slash8626); lws(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleslashEx; } if (HASFAILED()) { return ; } } break; } } MATCHT(SLASH, &FOLLOW_SLASH_in_slash8629); if (HASEXCEPTION()) { goto ruleslashEx; } if (HASFAILED()) { return ; } // ../grammars/belle_sip_message.g:1999:20: ( lws )? { int alt211=2; switch ( LA(1) ) { case CRLF: case SP: { alt211=1; } break; } switch (alt211) { case 1: // ../grammars/belle_sip_message.g:1999:20: lws { FOLLOWPUSH(FOLLOW_lws_in_slash8631); lws(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto ruleslashEx; } if (HASFAILED()) { return ; } } break; } } } } // This is where rules clean up and exit // goto ruleslashEx; /* Prevent compiler warnings */ ruleslashEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end slash */ /** * $ANTLR start lws * ../grammars/belle_sip_message.g:2000:1: lws : ( ( ( SP )* CRLF ( SP )+ ) | ( SP )+ ); */ static void lws(pbelle_sip_messageParser ctx) { /* Initialize rule variables */ { { // ../grammars/belle_sip_message.g:2000:5: ( ( ( SP )* CRLF ( SP )+ ) | ( SP )+ ) ANTLR3_UINT32 alt215; alt215=2; alt215 = cdfa215.predict(ctx, RECOGNIZER, ISTREAM, &cdfa215); if (HASEXCEPTION()) { goto rulelwsEx; } if (HASFAILED()) { return ; } switch (alt215) { case 1: // ../grammars/belle_sip_message.g:2000:7: ( ( SP )* CRLF ( SP )+ ) { // ../grammars/belle_sip_message.g:2000:7: ( ( SP )* CRLF ( SP )+ ) // ../grammars/belle_sip_message.g:2000:8: ( SP )* CRLF ( SP )+ { // ../grammars/belle_sip_message.g:2000:8: ( SP )* for (;;) { int alt212=2; switch ( LA(1) ) { case SP: { alt212=1; } break; } switch (alt212) { case 1: // ../grammars/belle_sip_message.g:2000:8: SP { MATCHT(SP, &FOLLOW_SP_in_lws8640); if (HASEXCEPTION()) { goto rulelwsEx; } if (HASFAILED()) { return ; } } break; default: goto loop212; /* break out of the loop */ break; } } loop212: ; /* Jump out to here if this rule does not match */ MATCHT(CRLF, &FOLLOW_CRLF_in_lws8643); if (HASEXCEPTION()) { goto rulelwsEx; } if (HASFAILED()) { return ; } // ../grammars/belle_sip_message.g:2000:17: ( SP )+ { int cnt213=0; for (;;) { int alt213=2; switch ( LA(1) ) { case SP: { alt213=1; } break; } switch (alt213) { case 1: // ../grammars/belle_sip_message.g:2000:17: SP { MATCHT(SP, &FOLLOW_SP_in_lws8645); if (HASEXCEPTION()) { goto rulelwsEx; } if (HASFAILED()) { return ; } } break; default: if ( cnt213 >= 1 ) { goto loop213; } if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } /* mismatchedSetEx() */ CONSTRUCTEX(); EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME; goto rulelwsEx; } cnt213++; } loop213: ; /* Jump to here if this rule does not match */ } } } break; case 2: // ../grammars/belle_sip_message.g:2000:24: ( SP )+ { // ../grammars/belle_sip_message.g:2000:24: ( SP )+ { int cnt214=0; for (;;) { int alt214=2; switch ( LA(1) ) { case SP: { alt214=1; } break; } switch (alt214) { case 1: // ../grammars/belle_sip_message.g:2000:24: SP { MATCHT(SP, &FOLLOW_SP_in_lws8651); if (HASEXCEPTION()) { goto rulelwsEx; } if (HASFAILED()) { return ; } } break; default: if ( cnt214 >= 1 ) { goto loop214; } if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } /* mismatchedSetEx() */ CONSTRUCTEX(); EXCEPTION->type = ANTLR3_EARLY_EXIT_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_EARLY_EXIT_NAME; goto rulelwsEx; } cnt214++; } loop214: ; /* Jump to here if this rule does not match */ } } break; } } } // This is where rules clean up and exit // goto rulelwsEx; /* Prevent compiler warnings */ rulelwsEx: ; if (HASEXCEPTION()) { // This is ugly. We set the exception type to ANTLR3_RECOGNITION_EXCEPTION so we can always // catch them. //PREPORTERROR(); EXCEPTION->type = ANTLR3_RECOGNITION_EXCEPTION; } return ; } /* $ANTLR end lws */ // $ANTLR start synpred1_belle_sip_message static void synpred1_belle_sip_message_fragment(pbelle_sip_messageParser ctx ) { // ../grammars/belle_sip_message.g:117:9: ( (~ ( CRLF ) )* sip_version CRLF ) // ../grammars/belle_sip_message.g:117:11: (~ ( CRLF ) )* sip_version CRLF { // ../grammars/belle_sip_message.g:117:11: (~ ( CRLF ) )* for (;;) { int alt216=2; switch ( LA(1) ) { case COMMON_CHAR: case HEX_CHAR: { { /* dfaLoopbackState(k,edges,eotPredictsAlt,description,stateNumber,semPredState) */ int LA216_1 = LA(2); if ( (!( ((IS_TOKEN(SIP/))) ))) { alt216=1; } } } break; case AND: case AT: case BQUOTE: case BSLASH: case COLON: case COMMA: case DASH: case DIGIT: case DOLLARD: case DOT: case DQUOTE: case EMARK: case EQUAL: case HTAB: case LAQUOT: case LBRACE: case LPAREN: case LSBRAQUET: case OCTET: case OR: case PERCENT: case PLUS: case QMARK: case RAQUOT: case RBRACE: case RPAREN: case RSBRAQUET: case SEMI: case SLASH: case SP: case SQUOTE: case STAR: case TILDE: case USCORE: { alt216=1; } break; } switch (alt216) { case 1: // ../grammars/belle_sip_message.g: { if ( ((LA(1) >= AND) && (LA(1) <= COMMON_CHAR)) || ((LA(1) >= DASH) && (LA(1) <= USCORE)) ) { CONSUME(); PERRORRECOVERY=ANTLR3_FALSE; FAILEDFLAG=ANTLR3_FALSE; } else { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_MISMATCHED_SET_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_MISMATCHED_SET_NAME; EXCEPTION->expectingSet = NULL; goto rulesynpred1_belle_sip_messageEx; } } break; default: goto loop216; /* break out of the loop */ break; } } loop216: ; /* Jump out to here if this rule does not match */ FOLLOWPUSH(FOLLOW_sip_version_in_synpred1_belle_sip_message166); sip_version(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesynpred1_belle_sip_messageEx; } if (HASFAILED()) { return ; } MATCHT(CRLF, &FOLLOW_CRLF_in_synpred1_belle_sip_message168); if (HASEXCEPTION()) { goto rulesynpred1_belle_sip_messageEx; } if (HASFAILED()) { return ; } } // This is where rules clean up and exit // goto rulesynpred1_belle_sip_messageEx; /* Prevent compiler warnings */ rulesynpred1_belle_sip_messageEx: ; } // $ANTLR end synpred1_belle_sip_message // $ANTLR start synpred2_belle_sip_message static void synpred2_belle_sip_message_fragment(pbelle_sip_messageParser ctx ) { // ../grammars/belle_sip_message.g:118:8: ( (~ ( CRLF ) )* http_version CRLF ) // ../grammars/belle_sip_message.g:118:10: (~ ( CRLF ) )* http_version CRLF { // ../grammars/belle_sip_message.g:118:10: (~ ( CRLF ) )* for (;;) { int alt217=2; switch ( LA(1) ) { case COMMON_CHAR: case HEX_CHAR: { { /* dfaLoopbackState(k,edges,eotPredictsAlt,description,stateNumber,semPredState) */ int LA217_1 = LA(2); if ( (!( ((IS_TOKEN(HTTP/))) ))) { alt217=1; } } } break; case AND: case AT: case BQUOTE: case BSLASH: case COLON: case COMMA: case DASH: case DIGIT: case DOLLARD: case DOT: case DQUOTE: case EMARK: case EQUAL: case HTAB: case LAQUOT: case LBRACE: case LPAREN: case LSBRAQUET: case OCTET: case OR: case PERCENT: case PLUS: case QMARK: case RAQUOT: case RBRACE: case RPAREN: case RSBRAQUET: case SEMI: case SLASH: case SP: case SQUOTE: case STAR: case TILDE: case USCORE: { alt217=1; } break; } switch (alt217) { case 1: // ../grammars/belle_sip_message.g: { if ( ((LA(1) >= AND) && (LA(1) <= COMMON_CHAR)) || ((LA(1) >= DASH) && (LA(1) <= USCORE)) ) { CONSUME(); PERRORRECOVERY=ANTLR3_FALSE; FAILEDFLAG=ANTLR3_FALSE; } else { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_MISMATCHED_SET_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_MISMATCHED_SET_NAME; EXCEPTION->expectingSet = NULL; goto rulesynpred2_belle_sip_messageEx; } } break; default: goto loop217; /* break out of the loop */ break; } } loop217: ; /* Jump out to here if this rule does not match */ FOLLOWPUSH(FOLLOW_http_version_in_synpred2_belle_sip_message194); http_version(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesynpred2_belle_sip_messageEx; } if (HASFAILED()) { return ; } MATCHT(CRLF, &FOLLOW_CRLF_in_synpred2_belle_sip_message196); if (HASEXCEPTION()) { goto rulesynpred2_belle_sip_messageEx; } if (HASFAILED()) { return ; } } // This is where rules clean up and exit // goto rulesynpred2_belle_sip_messageEx; /* Prevent compiler warnings */ rulesynpred2_belle_sip_messageEx: ; } // $ANTLR end synpred2_belle_sip_message // $ANTLR start synpred3_belle_sip_message static void synpred3_belle_sip_message_fragment(pbelle_sip_messageParser ctx ) { // ../grammars/belle_sip_message.g:222:11: ( sip_version (~ ( CRLF ) )* CRLF ) // ../grammars/belle_sip_message.g:222:12: sip_version (~ ( CRLF ) )* CRLF { FOLLOWPUSH(FOLLOW_sip_version_in_synpred3_belle_sip_message518); sip_version(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesynpred3_belle_sip_messageEx; } if (HASFAILED()) { return ; } // ../grammars/belle_sip_message.g:222:25: (~ ( CRLF ) )* for (;;) { int alt218=2; switch ( LA(1) ) { case AND: case AT: case BQUOTE: case BSLASH: case COLON: case COMMA: case COMMON_CHAR: case DASH: case DIGIT: case DOLLARD: case DOT: case DQUOTE: case EMARK: case EQUAL: case HEX_CHAR: case HTAB: case LAQUOT: case LBRACE: case LPAREN: case LSBRAQUET: case OCTET: case OR: case PERCENT: case PLUS: case QMARK: case RAQUOT: case RBRACE: case RPAREN: case RSBRAQUET: case SEMI: case SLASH: case SP: case SQUOTE: case STAR: case TILDE: case USCORE: { alt218=1; } break; } switch (alt218) { case 1: // ../grammars/belle_sip_message.g: { if ( ((LA(1) >= AND) && (LA(1) <= COMMON_CHAR)) || ((LA(1) >= DASH) && (LA(1) <= USCORE)) ) { CONSUME(); PERRORRECOVERY=ANTLR3_FALSE; FAILEDFLAG=ANTLR3_FALSE; } else { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_MISMATCHED_SET_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_MISMATCHED_SET_NAME; EXCEPTION->expectingSet = NULL; goto rulesynpred3_belle_sip_messageEx; } } break; default: goto loop218; /* break out of the loop */ break; } } loop218: ; /* Jump out to here if this rule does not match */ MATCHT(CRLF, &FOLLOW_CRLF_in_synpred3_belle_sip_message527); if (HASEXCEPTION()) { goto rulesynpred3_belle_sip_messageEx; } if (HASFAILED()) { return ; } } // This is where rules clean up and exit // goto rulesynpred3_belle_sip_messageEx; /* Prevent compiler warnings */ rulesynpred3_belle_sip_messageEx: ; } // $ANTLR end synpred3_belle_sip_message // $ANTLR start synpred4_belle_sip_message static void synpred4_belle_sip_message_fragment(pbelle_sip_messageParser ctx ) { // ../grammars/belle_sip_message.g:223:11: ( http_version (~ ( CRLF ) )* CRLF ) // ../grammars/belle_sip_message.g:223:12: http_version (~ ( CRLF ) )* CRLF { FOLLOWPUSH(FOLLOW_http_version_in_synpred4_belle_sip_message549); http_version(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesynpred4_belle_sip_messageEx; } if (HASFAILED()) { return ; } // ../grammars/belle_sip_message.g:223:25: (~ ( CRLF ) )* for (;;) { int alt219=2; switch ( LA(1) ) { case AND: case AT: case BQUOTE: case BSLASH: case COLON: case COMMA: case COMMON_CHAR: case DASH: case DIGIT: case DOLLARD: case DOT: case DQUOTE: case EMARK: case EQUAL: case HEX_CHAR: case HTAB: case LAQUOT: case LBRACE: case LPAREN: case LSBRAQUET: case OCTET: case OR: case PERCENT: case PLUS: case QMARK: case RAQUOT: case RBRACE: case RPAREN: case RSBRAQUET: case SEMI: case SLASH: case SP: case SQUOTE: case STAR: case TILDE: case USCORE: { alt219=1; } break; } switch (alt219) { case 1: // ../grammars/belle_sip_message.g: { if ( ((LA(1) >= AND) && (LA(1) <= COMMON_CHAR)) || ((LA(1) >= DASH) && (LA(1) <= USCORE)) ) { CONSUME(); PERRORRECOVERY=ANTLR3_FALSE; FAILEDFLAG=ANTLR3_FALSE; } else { if (BACKTRACKING>0) { FAILEDFLAG = ANTLR3_TRUE; return ; } CONSTRUCTEX(); EXCEPTION->type = ANTLR3_MISMATCHED_SET_EXCEPTION; EXCEPTION->name = (void *)ANTLR3_MISMATCHED_SET_NAME; EXCEPTION->expectingSet = NULL; goto rulesynpred4_belle_sip_messageEx; } } break; default: goto loop219; /* break out of the loop */ break; } } loop219: ; /* Jump out to here if this rule does not match */ MATCHT(CRLF, &FOLLOW_CRLF_in_synpred4_belle_sip_message558); if (HASEXCEPTION()) { goto rulesynpred4_belle_sip_messageEx; } if (HASFAILED()) { return ; } } // This is where rules clean up and exit // goto rulesynpred4_belle_sip_messageEx; /* Prevent compiler warnings */ rulesynpred4_belle_sip_messageEx: ; } // $ANTLR end synpred4_belle_sip_message // $ANTLR start synpred6_belle_sip_message static void synpred6_belle_sip_message_fragment(pbelle_sip_messageParser ctx ) { // ../grammars/belle_sip_message.g:347:2: ( SLASH SLASH path_segments[NULL] ) // ../grammars/belle_sip_message.g:347:3: SLASH SLASH path_segments[NULL] { MATCHT(SLASH, &FOLLOW_SLASH_in_synpred6_belle_sip_message1136); if (HASEXCEPTION()) { goto rulesynpred6_belle_sip_messageEx; } if (HASFAILED()) { return ; } MATCHT(SLASH, &FOLLOW_SLASH_in_synpred6_belle_sip_message1138); if (HASEXCEPTION()) { goto rulesynpred6_belle_sip_messageEx; } if (HASFAILED()) { return ; } FOLLOWPUSH(FOLLOW_path_segments_in_synpred6_belle_sip_message1140); path_segments(ctx, NULL); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesynpred6_belle_sip_messageEx; } if (HASFAILED()) { return ; } } // This is where rules clean up and exit // goto rulesynpred6_belle_sip_messageEx; /* Prevent compiler warnings */ rulesynpred6_belle_sip_messageEx: ; } // $ANTLR end synpred6_belle_sip_message // $ANTLR start synpred7_belle_sip_message static void synpred7_belle_sip_message_fragment(pbelle_sip_messageParser ctx ) { // ../grammars/belle_sip_message.g:349:3: ( SLASH SLASH authority[NULL] ( path_segments[NULL] )? ) // ../grammars/belle_sip_message.g:349:4: SLASH SLASH authority[NULL] ( path_segments[NULL] )? { MATCHT(SLASH, &FOLLOW_SLASH_in_synpred7_belle_sip_message1161); if (HASEXCEPTION()) { goto rulesynpred7_belle_sip_messageEx; } if (HASFAILED()) { return ; } MATCHT(SLASH, &FOLLOW_SLASH_in_synpred7_belle_sip_message1163); if (HASEXCEPTION()) { goto rulesynpred7_belle_sip_messageEx; } if (HASFAILED()) { return ; } FOLLOWPUSH(FOLLOW_authority_in_synpred7_belle_sip_message1165); authority(ctx, NULL); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesynpred7_belle_sip_messageEx; } if (HASFAILED()) { return ; } // ../grammars/belle_sip_message.g:349:32: ( path_segments[NULL] )? { int alt220=2; switch ( LA(1) ) { case SLASH: { alt220=1; } break; } switch (alt220) { case 1: // ../grammars/belle_sip_message.g:349:33: path_segments[NULL] { FOLLOWPUSH(FOLLOW_path_segments_in_synpred7_belle_sip_message1169); path_segments(ctx, NULL); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesynpred7_belle_sip_messageEx; } if (HASFAILED()) { return ; } } break; } } } // This is where rules clean up and exit // goto rulesynpred7_belle_sip_messageEx; /* Prevent compiler warnings */ rulesynpred7_belle_sip_messageEx: ; } // $ANTLR end synpred7_belle_sip_message // $ANTLR start synpred8_belle_sip_message static void synpred8_belle_sip_message_fragment(pbelle_sip_messageParser ctx ) { // ../grammars/belle_sip_message.g:379:4: ( authority_userinfo[NULL] ) // ../grammars/belle_sip_message.g:379:5: authority_userinfo[NULL] { FOLLOWPUSH(FOLLOW_authority_userinfo_in_synpred8_belle_sip_message1367); authority_userinfo(ctx, NULL); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesynpred8_belle_sip_messageEx; } if (HASFAILED()) { return ; } } // This is where rules clean up and exit // goto rulesynpred8_belle_sip_messageEx; /* Prevent compiler warnings */ rulesynpred8_belle_sip_messageEx: ; } // $ANTLR end synpred8_belle_sip_message // $ANTLR start synpred9_belle_sip_message static void synpred9_belle_sip_message_fragment(pbelle_sip_messageParser ctx ) { // ../grammars/belle_sip_message.g:1791:45: ( userinfo[$paramless_uri::current] ) // ../grammars/belle_sip_message.g:1791:46: userinfo[$paramless_uri::current] { FOLLOWPUSH(FOLLOW_userinfo_in_synpred9_belle_sip_message6714); userinfo(ctx, (SCOPE_TOP(paramless_uri))->current); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesynpred9_belle_sip_messageEx; } if (HASFAILED()) { return ; } } // This is where rules clean up and exit // goto rulesynpred9_belle_sip_messageEx; /* Prevent compiler warnings */ rulesynpred9_belle_sip_messageEx: ; } // $ANTLR end synpred9_belle_sip_message // $ANTLR start synpred10_belle_sip_message static void synpred10_belle_sip_message_fragment(pbelle_sip_messageParser ctx ) { // ../grammars/belle_sip_message.g:1803:36: ( userinfo[NULL] ) // ../grammars/belle_sip_message.g:1803:37: userinfo[NULL] { FOLLOWPUSH(FOLLOW_userinfo_in_synpred10_belle_sip_message6779); userinfo(ctx, NULL); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesynpred10_belle_sip_messageEx; } if (HASFAILED()) { return ; } } // This is where rules clean up and exit // goto rulesynpred10_belle_sip_messageEx; /* Prevent compiler warnings */ rulesynpred10_belle_sip_messageEx: ; } // $ANTLR end synpred10_belle_sip_message // $ANTLR start synpred11_belle_sip_message static void synpred11_belle_sip_message_fragment(pbelle_sip_messageParser ctx ) { // ../grammars/belle_sip_message.g:1816:41: ( userinfo[NULL] ) // ../grammars/belle_sip_message.g:1816:42: userinfo[NULL] { FOLLOWPUSH(FOLLOW_userinfo_in_synpred11_belle_sip_message6850); userinfo(ctx, NULL); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesynpred11_belle_sip_messageEx; } if (HASFAILED()) { return ; } } // This is where rules clean up and exit // goto rulesynpred11_belle_sip_messageEx; /* Prevent compiler warnings */ rulesynpred11_belle_sip_messageEx: ; } // $ANTLR end synpred11_belle_sip_message // $ANTLR start synpred12_belle_sip_message static void synpred12_belle_sip_message_fragment(pbelle_sip_messageParser ctx ) { // ../grammars/belle_sip_message.g:1893:7: ( param_unreserved ) // ../grammars/belle_sip_message.g:1893:8: param_unreserved { FOLLOWPUSH(FOLLOW_param_unreserved_in_synpred12_belle_sip_message7263); param_unreserved(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesynpred12_belle_sip_messageEx; } if (HASFAILED()) { return ; } } // This is where rules clean up and exit // goto rulesynpred12_belle_sip_messageEx; /* Prevent compiler warnings */ rulesynpred12_belle_sip_messageEx: ; } // $ANTLR end synpred12_belle_sip_message // $ANTLR start synpred13_belle_sip_message static void synpred13_belle_sip_message_fragment(pbelle_sip_messageParser ctx ) { // ../grammars/belle_sip_message.g:1940:42: ( toplabel ) // ../grammars/belle_sip_message.g:1940:43: toplabel { FOLLOWPUSH(FOLLOW_toplabel_in_synpred13_belle_sip_message7776); toplabel(ctx); FOLLOWPOP(); if (HASEXCEPTION()) { goto rulesynpred13_belle_sip_messageEx; } if (HASFAILED()) { return ; } } // This is where rules clean up and exit // goto rulesynpred13_belle_sip_messageEx; /* Prevent compiler warnings */ rulesynpred13_belle_sip_messageEx: ; } // $ANTLR end synpred13_belle_sip_message // $ANTLR start synpred14_belle_sip_message static void synpred14_belle_sip_message_fragment(pbelle_sip_messageParser ctx ) { // ../grammars/belle_sip_message.g:1958:14: ( DIGIT ) // ../grammars/belle_sip_message.g:1958:15: DIGIT { MATCHT(DIGIT, &FOLLOW_DIGIT_in_synpred14_belle_sip_message8064); if (HASEXCEPTION()) { goto rulesynpred14_belle_sip_messageEx; } if (HASFAILED()) { return ; } } // This is where rules clean up and exit // goto rulesynpred14_belle_sip_messageEx; /* Prevent compiler warnings */ rulesynpred14_belle_sip_messageEx: ; } // $ANTLR end synpred14_belle_sip_message // $ANTLR start synpred15_belle_sip_message static void synpred15_belle_sip_message_fragment(pbelle_sip_messageParser ctx ) { // ../grammars/belle_sip_message.g:1960:13: ( DIGIT DIGIT ) // ../grammars/belle_sip_message.g:1960:14: DIGIT DIGIT { MATCHT(DIGIT, &FOLLOW_DIGIT_in_synpred15_belle_sip_message8098); if (HASEXCEPTION()) { goto rulesynpred15_belle_sip_messageEx; } if (HASFAILED()) { return ; } MATCHT(DIGIT, &FOLLOW_DIGIT_in_synpred15_belle_sip_message8100); if (HASEXCEPTION()) { goto rulesynpred15_belle_sip_messageEx; } if (HASFAILED()) { return ; } } // This is where rules clean up and exit // goto rulesynpred15_belle_sip_messageEx; /* Prevent compiler warnings */ rulesynpred15_belle_sip_messageEx: ; } // $ANTLR end synpred15_belle_sip_message // $ANTLR start synpred16_belle_sip_message static void synpred16_belle_sip_message_fragment(pbelle_sip_messageParser ctx ) { // ../grammars/belle_sip_message.g:1962:13: ( DIGIT DIGIT DIGIT ) // ../grammars/belle_sip_message.g:1962:14: DIGIT DIGIT DIGIT { MATCHT(DIGIT, &FOLLOW_DIGIT_in_synpred16_belle_sip_message8138); if (HASEXCEPTION()) { goto rulesynpred16_belle_sip_messageEx; } if (HASFAILED()) { return ; } MATCHT(DIGIT, &FOLLOW_DIGIT_in_synpred16_belle_sip_message8140); if (HASEXCEPTION()) { goto rulesynpred16_belle_sip_messageEx; } if (HASFAILED()) { return ; } MATCHT(DIGIT, &FOLLOW_DIGIT_in_synpred16_belle_sip_message8142); if (HASEXCEPTION()) { goto rulesynpred16_belle_sip_messageEx; } if (HASFAILED()) { return ; } } // This is where rules clean up and exit // goto rulesynpred16_belle_sip_messageEx; /* Prevent compiler warnings */ rulesynpred16_belle_sip_messageEx: ; } // $ANTLR end synpred16_belle_sip_message /* End of parsing rules * ============================================== */ /* ============================================== * Syntactic predicates */ static ANTLR3_BOOLEAN synpred13_belle_sip_message(pbelle_sip_messageParser ctx) { ANTLR3_MARKER start; ANTLR3_BOOLEAN success; BACKTRACKING++; start = MARK(); synpred13_belle_sip_message_fragment(ctx); // can never throw exception success = !(FAILEDFLAG); REWIND(start); BACKTRACKING--; FAILEDFLAG = ANTLR3_FALSE; return success; } static ANTLR3_BOOLEAN synpred1_belle_sip_message(pbelle_sip_messageParser ctx) { ANTLR3_MARKER start; ANTLR3_BOOLEAN success; BACKTRACKING++; start = MARK(); synpred1_belle_sip_message_fragment(ctx); // can never throw exception success = !(FAILEDFLAG); REWIND(start); BACKTRACKING--; FAILEDFLAG = ANTLR3_FALSE; return success; } static ANTLR3_BOOLEAN synpred16_belle_sip_message(pbelle_sip_messageParser ctx) { ANTLR3_MARKER start; ANTLR3_BOOLEAN success; BACKTRACKING++; start = MARK(); synpred16_belle_sip_message_fragment(ctx); // can never throw exception success = !(FAILEDFLAG); REWIND(start); BACKTRACKING--; FAILEDFLAG = ANTLR3_FALSE; return success; } static ANTLR3_BOOLEAN synpred8_belle_sip_message(pbelle_sip_messageParser ctx) { ANTLR3_MARKER start; ANTLR3_BOOLEAN success; BACKTRACKING++; start = MARK(); synpred8_belle_sip_message_fragment(ctx); // can never throw exception success = !(FAILEDFLAG); REWIND(start); BACKTRACKING--; FAILEDFLAG = ANTLR3_FALSE; return success; } static ANTLR3_BOOLEAN synpred9_belle_sip_message(pbelle_sip_messageParser ctx) { ANTLR3_MARKER start; ANTLR3_BOOLEAN success; BACKTRACKING++; start = MARK(); synpred9_belle_sip_message_fragment(ctx); // can never throw exception success = !(FAILEDFLAG); REWIND(start); BACKTRACKING--; FAILEDFLAG = ANTLR3_FALSE; return success; } static ANTLR3_BOOLEAN synpred14_belle_sip_message(pbelle_sip_messageParser ctx) { ANTLR3_MARKER start; ANTLR3_BOOLEAN success; BACKTRACKING++; start = MARK(); synpred14_belle_sip_message_fragment(ctx); // can never throw exception success = !(FAILEDFLAG); REWIND(start); BACKTRACKING--; FAILEDFLAG = ANTLR3_FALSE; return success; } static ANTLR3_BOOLEAN synpred6_belle_sip_message(pbelle_sip_messageParser ctx) { ANTLR3_MARKER start; ANTLR3_BOOLEAN success; BACKTRACKING++; start = MARK(); synpred6_belle_sip_message_fragment(ctx); // can never throw exception success = !(FAILEDFLAG); REWIND(start); BACKTRACKING--; FAILEDFLAG = ANTLR3_FALSE; return success; } static ANTLR3_BOOLEAN synpred3_belle_sip_message(pbelle_sip_messageParser ctx) { ANTLR3_MARKER start; ANTLR3_BOOLEAN success; BACKTRACKING++; start = MARK(); synpred3_belle_sip_message_fragment(ctx); // can never throw exception success = !(FAILEDFLAG); REWIND(start); BACKTRACKING--; FAILEDFLAG = ANTLR3_FALSE; return success; } static ANTLR3_BOOLEAN synpred11_belle_sip_message(pbelle_sip_messageParser ctx) { ANTLR3_MARKER start; ANTLR3_BOOLEAN success; BACKTRACKING++; start = MARK(); synpred11_belle_sip_message_fragment(ctx); // can never throw exception success = !(FAILEDFLAG); REWIND(start); BACKTRACKING--; FAILEDFLAG = ANTLR3_FALSE; return success; } static ANTLR3_BOOLEAN synpred4_belle_sip_message(pbelle_sip_messageParser ctx) { ANTLR3_MARKER start; ANTLR3_BOOLEAN success; BACKTRACKING++; start = MARK(); synpred4_belle_sip_message_fragment(ctx); // can never throw exception success = !(FAILEDFLAG); REWIND(start); BACKTRACKING--; FAILEDFLAG = ANTLR3_FALSE; return success; } static ANTLR3_BOOLEAN synpred12_belle_sip_message(pbelle_sip_messageParser ctx) { ANTLR3_MARKER start; ANTLR3_BOOLEAN success; BACKTRACKING++; start = MARK(); synpred12_belle_sip_message_fragment(ctx); // can never throw exception success = !(FAILEDFLAG); REWIND(start); BACKTRACKING--; FAILEDFLAG = ANTLR3_FALSE; return success; } static ANTLR3_BOOLEAN synpred10_belle_sip_message(pbelle_sip_messageParser ctx) { ANTLR3_MARKER start; ANTLR3_BOOLEAN success; BACKTRACKING++; start = MARK(); synpred10_belle_sip_message_fragment(ctx); // can never throw exception success = !(FAILEDFLAG); REWIND(start); BACKTRACKING--; FAILEDFLAG = ANTLR3_FALSE; return success; } static ANTLR3_BOOLEAN synpred2_belle_sip_message(pbelle_sip_messageParser ctx) { ANTLR3_MARKER start; ANTLR3_BOOLEAN success; BACKTRACKING++; start = MARK(); synpred2_belle_sip_message_fragment(ctx); // can never throw exception success = !(FAILEDFLAG); REWIND(start); BACKTRACKING--; FAILEDFLAG = ANTLR3_FALSE; return success; } static ANTLR3_BOOLEAN synpred15_belle_sip_message(pbelle_sip_messageParser ctx) { ANTLR3_MARKER start; ANTLR3_BOOLEAN success; BACKTRACKING++; start = MARK(); synpred15_belle_sip_message_fragment(ctx); // can never throw exception success = !(FAILEDFLAG); REWIND(start); BACKTRACKING--; FAILEDFLAG = ANTLR3_FALSE; return success; } static ANTLR3_BOOLEAN synpred7_belle_sip_message(pbelle_sip_messageParser ctx) { ANTLR3_MARKER start; ANTLR3_BOOLEAN success; BACKTRACKING++; start = MARK(); synpred7_belle_sip_message_fragment(ctx); // can never throw exception success = !(FAILEDFLAG); REWIND(start); BACKTRACKING--; FAILEDFLAG = ANTLR3_FALSE; return success; } /* End of syntactic predicates * ============================================== */ /* End of code * ============================================================================= */ belle-sip-5.2.0+dfsg/src/grammars/belle_sip_messageParser.h000066400000000000000000005573711434613136500237310ustar00rootroot00000000000000/** \file * This C header file was generated by $ANTLR version 3.4 * * - From the grammar source file : ../grammars/belle_sip_message.g * - On : 2021-09-07 16:55:33 * - for the parser : belle_sip_messageParserParser * * Editing it, at least manually, is not wise. * * C language generator and runtime by Jim Idle, jimi|hereisanat|idle|dotgoeshere|ws. * * * The parser belle_sip_messageParser has the callable functions (rules) shown below, * which will invoke the code for the associated rule in the source grammar * assuming that the input stream is pointing to a token/text stream that could begin * this rule. * * For instance if you call the first (topmost) rule in a parser grammar, you will * get the results of a full parse, but calling a rule half way through the grammar will * allow you to pass part of a full token stream to the parser, such as for syntax checking * in editors and so on. * * The parser entry points are called indirectly (by function pointer to function) via * a parser context typedef pbelle_sip_messageParser, which is returned from a call to belle_sip_messageParserNew(). * * The methods in pbelle_sip_messageParser are as follows: * * - belle_sip_message_t* pbelle_sip_messageParser->message(pbelle_sip_messageParser) * - belle_sip_message_t* pbelle_sip_messageParser->message_raw(pbelle_sip_messageParser) * - belle_sip_request_t* pbelle_sip_messageParser->request(pbelle_sip_messageParser) * - belle_sip_message_t* pbelle_sip_messageParser->common_request(pbelle_sip_messageParser) * - belle_sip_request_t* pbelle_sip_messageParser->request_line(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->sip_version(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->generic_version(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->message_header(pbelle_sip_messageParser) * - belle_sip_messageParser_method_return pbelle_sip_messageParser->method(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->extension_method(pbelle_sip_messageParser) * - belle_sip_message_t* pbelle_sip_messageParser->common_response(pbelle_sip_messageParser) * - belle_sip_response_t* pbelle_sip_messageParser->response(pbelle_sip_messageParser) * - belle_sip_response_t* pbelle_sip_messageParser->status_line(pbelle_sip_messageParser) * - belle_sip_messageParser_status_code_return pbelle_sip_messageParser->status_code(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->extension_code(pbelle_sip_messageParser) * - belle_sip_messageParser_reason_phrase_return pbelle_sip_messageParser->reason_phrase(pbelle_sip_messageParser) * - belle_http_request_t* pbelle_sip_messageParser->http_request(pbelle_sip_messageParser) * - belle_http_request_t * pbelle_sip_messageParser->http_request_line(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->http_version(pbelle_sip_messageParser) * - belle_http_response_t* pbelle_sip_messageParser->http_response(pbelle_sip_messageParser) * - belle_http_response_t* pbelle_sip_messageParser->http_status_line(pbelle_sip_messageParser) * - belle_sip_messageParser_opaque_part_for_from_to_contact_addr_spec_return pbelle_sip_messageParser->opaque_part_for_from_to_contact_addr_spec(pbelle_sip_messageParser) * - belle_sip_messageParser_opaque_part_return pbelle_sip_messageParser->opaque_part(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->uric_no_slash_for_from_to_contact_addr_spec(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->uric_no_slash(pbelle_sip_messageParser) * - belle_sip_messageParser_scheme_return pbelle_sip_messageParser->scheme(pbelle_sip_messageParser) * - belle_generic_uri_t* pbelle_sip_messageParser->generic_uri_for_from_to_contact_addr_spec(pbelle_sip_messageParser) * - belle_generic_uri_t* pbelle_sip_messageParser->generic_uri(pbelle_sip_messageParser) * - belle_generic_uri_t* pbelle_sip_messageParser->hier_part(pbelle_sip_messageParser) * - belle_sip_messageParser_path_segments_return pbelle_sip_messageParser->path_segments(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->segment(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->param(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->pchar(pbelle_sip_messageParser) * - belle_sip_messageParser_query_return pbelle_sip_messageParser->query(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->uric(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->uric_for_from_to_contact_addr_spec(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->authority(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->authority_userinfo(pbelle_sip_messageParser) * - belle_sip_messageParser_authority_user_return pbelle_sip_messageParser->authority_user(pbelle_sip_messageParser) * - belle_sip_messageParser_authority_password_return pbelle_sip_messageParser->authority_password(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->authority_hostport(pbelle_sip_messageParser) * - belle_sip_param_pair_t* pbelle_sip_messageParser->generic_param(pbelle_sip_messageParser) * - belle_sip_messageParser_gen_value_return pbelle_sip_messageParser->gen_value(pbelle_sip_messageParser) * - belle_sip_messageParser_quoted_string_return pbelle_sip_messageParser->quoted_string(pbelle_sip_messageParser) * - belle_sip_header_allow_t* pbelle_sip_messageParser->header_allow(pbelle_sip_messageParser) * - belle_sip_messageParser_methods_return pbelle_sip_messageParser->methods(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->authorization_token(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->digest_token(pbelle_sip_messageParser) * - belle_sip_header_authorization_t* pbelle_sip_messageParser->header_authorization(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->credentials(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->digest_response(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->dig_resp(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->username_token(pbelle_sip_messageParser) * - char* pbelle_sip_messageParser->username(pbelle_sip_messageParser) * - belle_sip_messageParser_username_value_return pbelle_sip_messageParser->username_value(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->uri_token(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->digest_uri(pbelle_sip_messageParser) * - const char* pbelle_sip_messageParser->message_qop(pbelle_sip_messageParser) * - belle_sip_messageParser_qop_value_return pbelle_sip_messageParser->qop_value(pbelle_sip_messageParser) * - char* pbelle_sip_messageParser->cnonce(pbelle_sip_messageParser) * - belle_sip_messageParser_cnonce_value_return pbelle_sip_messageParser->cnonce_value(pbelle_sip_messageParser) * - const char* pbelle_sip_messageParser->nonce_count(pbelle_sip_messageParser) * - belle_sip_messageParser_nc_value_return pbelle_sip_messageParser->nc_value(pbelle_sip_messageParser) * - char* pbelle_sip_messageParser->dresponse(pbelle_sip_messageParser) * - belle_sip_messageParser_request_digest_return pbelle_sip_messageParser->request_digest(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->huit_lhex(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->auth_param(pbelle_sip_messageParser) * - belle_sip_messageParser_auth_param_value_return pbelle_sip_messageParser->auth_param_value(pbelle_sip_messageParser) * - belle_sip_messageParser_auth_param_name_return pbelle_sip_messageParser->auth_param_name(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->other_response(pbelle_sip_messageParser) * - belle_sip_messageParser_auth_scheme_return pbelle_sip_messageParser->auth_scheme(pbelle_sip_messageParser) * - belle_sip_messageParser_nonce_value_return pbelle_sip_messageParser->nonce_value(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->call_id_token(pbelle_sip_messageParser) * - belle_sip_header_call_id_t* pbelle_sip_messageParser->header_call_id(pbelle_sip_messageParser) * - belle_sip_messageParser_call_id_return pbelle_sip_messageParser->call_id(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->retry_after_token(pbelle_sip_messageParser) * - belle_sip_header_retry_after_t* pbelle_sip_messageParser->header_retry_after(pbelle_sip_messageParser) * - belle_sip_messageParser_retry_after_return pbelle_sip_messageParser->retry_after(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->contact_token(pbelle_sip_messageParser) * - belle_sip_header_contact_t* pbelle_sip_messageParser->header_contact(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->contact_param(pbelle_sip_messageParser) * - belle_sip_header_address_t* pbelle_sip_messageParser->header_address(pbelle_sip_messageParser) * - belle_sip_header_address_t* pbelle_sip_messageParser->header_address_param_less(pbelle_sip_messageParser) * - belle_sip_header_address_t* pbelle_sip_messageParser->header_address_base(pbelle_sip_messageParser) * - belle_sip_header_address_t* pbelle_sip_messageParser->fast_header_address(pbelle_sip_messageParser) * - belle_sip_header_address_t* pbelle_sip_messageParser->fast_header_address_param_less(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->name_addr(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->name_addr_with_generic_uri(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->fast_name_addr_with_generic_uri(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->addr_spec(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->addr_spec_with_generic_uri(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->fast_addr_spec_with_generic_uri(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->paramless_addr_spec(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->paramless_addr_spec_with_generic_uri(pbelle_sip_messageParser) * - belle_sip_messageParser_display_name_tokens_return pbelle_sip_messageParser->display_name_tokens(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->display_name(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->contact_params(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->contact_extension(pbelle_sip_messageParser) * - belle_sip_messageParser_delta_seconds_return pbelle_sip_messageParser->delta_seconds(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->content_length_token(pbelle_sip_messageParser) * - belle_sip_header_content_length_t* pbelle_sip_messageParser->header_content_length(pbelle_sip_messageParser) * - belle_sip_messageParser_content_length_return pbelle_sip_messageParser->content_length(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->content_type_token(pbelle_sip_messageParser) * - belle_sip_header_content_type_t* pbelle_sip_messageParser->header_content_type(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->media_type(pbelle_sip_messageParser) * - belle_sip_messageParser_m_type_return pbelle_sip_messageParser->m_type(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->type_param(pbelle_sip_messageParser) * - belle_sip_messageParser_type_param_value_return pbelle_sip_messageParser->type_param_value(pbelle_sip_messageParser) * - belle_sip_messageParser_m_subtype_return pbelle_sip_messageParser->m_subtype(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->cseq_token(pbelle_sip_messageParser) * - belle_sip_header_cseq_t* pbelle_sip_messageParser->header_cseq(pbelle_sip_messageParser) * - belle_sip_messageParser_seq_number_return pbelle_sip_messageParser->seq_number(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->date_token(pbelle_sip_messageParser) * - belle_sip_header_date_t* pbelle_sip_messageParser->header_date(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->date(pbelle_sip_messageParser) * - belle_sip_messageParser_sip_date_return pbelle_sip_messageParser->sip_date(pbelle_sip_messageParser) * - belle_sip_header_expires_t* pbelle_sip_messageParser->header_expires(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->from_token(pbelle_sip_messageParser) * - belle_sip_header_from_t* pbelle_sip_messageParser->header_from(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->from_spec(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->from_param(pbelle_sip_messageParser) * - belle_sip_header_max_forwards_t* pbelle_sip_messageParser->header_max_forwards(pbelle_sip_messageParser) * - belle_sip_messageParser_max_forwards_return pbelle_sip_messageParser->max_forwards(pbelle_sip_messageParser) * - belle_sip_header_proxy_authenticate_t* pbelle_sip_messageParser->header_proxy_authenticate(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->challenge(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->other_challenge(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->digest_cln(pbelle_sip_messageParser) * - char* pbelle_sip_messageParser->realm(pbelle_sip_messageParser) * - belle_sip_messageParser_realm_value_return pbelle_sip_messageParser->realm_value(pbelle_sip_messageParser) * - char* pbelle_sip_messageParser->domain(pbelle_sip_messageParser) * - char* pbelle_sip_messageParser->nonce(pbelle_sip_messageParser) * - char* pbelle_sip_messageParser->opaque(pbelle_sip_messageParser) * - const char* pbelle_sip_messageParser->stale(pbelle_sip_messageParser) * - belle_sip_messageParser_stale_value_return pbelle_sip_messageParser->stale_value(pbelle_sip_messageParser) * - const char* pbelle_sip_messageParser->algorithm(pbelle_sip_messageParser) * - belle_sip_list_t* pbelle_sip_messageParser->qop_opts(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->qop_opts_value(pbelle_sip_messageParser) * - belle_sip_header_proxy_authorization_t* pbelle_sip_messageParser->header_proxy_authorization(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->service_route_token(pbelle_sip_messageParser) * - belle_sip_header_service_route_t* pbelle_sip_messageParser->header_service_route(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->srv_route(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->sr_param(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->record_route_token(pbelle_sip_messageParser) * - belle_sip_header_record_route_t* pbelle_sip_messageParser->header_record_route(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->rec_route(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->rr_param(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->comment(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->route_token(pbelle_sip_messageParser) * - belle_sip_header_route_t* pbelle_sip_messageParser->header_route(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->route_param(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->r_param(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->to_token(pbelle_sip_messageParser) * - belle_sip_header_to_t* pbelle_sip_messageParser->header_to(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->to_spec(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->to_param(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->diversion_token(pbelle_sip_messageParser) * - belle_sip_header_diversion_t* pbelle_sip_messageParser->header_diversion(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->diversion_spec(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->diversion_param(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->refer_to_token(pbelle_sip_messageParser) * - belle_sip_header_refer_to_t* pbelle_sip_messageParser->header_refer_to(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->referred_by_token(pbelle_sip_messageParser) * - belle_sip_header_referred_by_t* pbelle_sip_messageParser->header_referred_by(pbelle_sip_messageParser) * - belle_sip_header_address_t* pbelle_sip_messageParser->refer_to_spec(pbelle_sip_messageParser) * - belle_sip_header_user_agent_t* pbelle_sip_messageParser->header_user_agent(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->server_val(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->via_token(pbelle_sip_messageParser) * - belle_sip_header_via_t* pbelle_sip_messageParser->header_via(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->via_parm(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->via_params(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->via_received(pbelle_sip_messageParser) * - const char* pbelle_sip_messageParser->via_address(pbelle_sip_messageParser) * - belle_sip_messageParser_sent_protocol_return pbelle_sip_messageParser->sent_protocol(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->protocol_name(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->protocol_version(pbelle_sip_messageParser) * - belle_sip_messageParser_transport_return pbelle_sip_messageParser->transport(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->other_transport(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->sent_by(pbelle_sip_messageParser) * - belle_sip_header_www_authenticate_t* pbelle_sip_messageParser->header_www_authenticate(pbelle_sip_messageParser) * - belle_sip_messageParser_state_value_return pbelle_sip_messageParser->state_value(pbelle_sip_messageParser) * - belle_sip_header_subscription_state_t* pbelle_sip_messageParser->header_subscription_state(pbelle_sip_messageParser) * - belle_sip_header_event_t* pbelle_sip_messageParser->header_event(pbelle_sip_messageParser) * - belle_sip_messageParser_event_package_return pbelle_sip_messageParser->event_package(pbelle_sip_messageParser) * - belle_sip_header_replaces_t* pbelle_sip_messageParser->header_replaces(pbelle_sip_messageParser) * - belle_sip_header_p_preferred_identity_t* pbelle_sip_messageParser->header_p_preferred_identity(pbelle_sip_messageParser) * - belle_sip_header_privacy_t* pbelle_sip_messageParser->header_privacy(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->privacy_val(pbelle_sip_messageParser) * - belle_sip_header_supported_t* pbelle_sip_messageParser->header_supported(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->supported_val(pbelle_sip_messageParser) * - belle_sip_header_session_expires_t* pbelle_sip_messageParser->header_session_expires(pbelle_sip_messageParser) * - belle_sip_header_require_t* pbelle_sip_messageParser->header_require(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->require_val(pbelle_sip_messageParser) * - belle_sip_messageParser_content_disposition_value_return pbelle_sip_messageParser->content_disposition_value(pbelle_sip_messageParser) * - belle_sip_header_content_disposition_t* pbelle_sip_messageParser->header_content_disposition(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->accept_token(pbelle_sip_messageParser) * - belle_sip_header_accept_t* pbelle_sip_messageParser->header_accept(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->accept_param(pbelle_sip_messageParser) * - belle_sip_messageParser_accept_main_media_type_return pbelle_sip_messageParser->accept_main_media_type(pbelle_sip_messageParser) * - belle_sip_messageParser_accept_sub_media_type_return pbelle_sip_messageParser->accept_sub_media_type(pbelle_sip_messageParser) * - belle_sip_header_reason_t* pbelle_sip_messageParser->header_reason(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->header_reason_param(pbelle_sip_messageParser) * - belle_sip_messageParser_header_reason_protocol_return pbelle_sip_messageParser->header_reason_protocol(pbelle_sip_messageParser) * - belle_sip_header_authentication_info_t* pbelle_sip_messageParser->header_authentication_info(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->auth_info(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->qop_token(pbelle_sip_messageParser) * - const char* pbelle_sip_messageParser->authentication_info_message_qop(pbelle_sip_messageParser) * - char* pbelle_sip_messageParser->rspauth(pbelle_sip_messageParser) * - char* pbelle_sip_messageParser->next_nonce(pbelle_sip_messageParser) * - char* pbelle_sip_messageParser->quoted_algorithm(pbelle_sip_messageParser) * - belle_sip_header_t* pbelle_sip_messageParser->header(pbelle_sip_messageParser) * - belle_sip_header_t* pbelle_sip_messageParser->header_extension_base(pbelle_sip_messageParser) * - belle_sip_messageParser_header_name_return pbelle_sip_messageParser->header_name(pbelle_sip_messageParser) * - belle_sip_messageParser_header_value_return pbelle_sip_messageParser->header_value(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->message_body(pbelle_sip_messageParser) * - belle_sip_uri_t* pbelle_sip_messageParser->paramless_uri(pbelle_sip_messageParser) * - belle_sip_uri_t* pbelle_sip_messageParser->uri(pbelle_sip_messageParser) * - belle_sip_uri_t* pbelle_sip_messageParser->fast_uri(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->sip_token(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->sips_token(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->sip_schema(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->userinfo(pbelle_sip_messageParser) * - belle_sip_messageParser_user_return pbelle_sip_messageParser->user(pbelle_sip_messageParser) * - belle_sip_messageParser_password_return pbelle_sip_messageParser->password(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->hostport(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->fast_hostport(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->uri_parameters(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->uri_parameter(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->other_param(pbelle_sip_messageParser) * - belle_sip_messageParser_pname_return pbelle_sip_messageParser->pname(pbelle_sip_messageParser) * - belle_sip_messageParser_pvalue_return pbelle_sip_messageParser->pvalue(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->paramchar(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->param_unreserved(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->headers(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->uri_header(pbelle_sip_messageParser) * - belle_sip_messageParser_hname_return pbelle_sip_messageParser->hname(pbelle_sip_messageParser) * - belle_sip_messageParser_hvalue_return pbelle_sip_messageParser->hvalue(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->hnv_unreserved(pbelle_sip_messageParser) * - const char* pbelle_sip_messageParser->fast_host(pbelle_sip_messageParser) * - belle_sip_messageParser_fast_hostname_return pbelle_sip_messageParser->fast_hostname(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->user_unreserved(pbelle_sip_messageParser) * - const char* pbelle_sip_messageParser->host(pbelle_sip_messageParser) * - belle_sip_messageParser_hostname_return pbelle_sip_messageParser->hostname(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->domainlabel(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->toplabel(pbelle_sip_messageParser) * - belle_sip_messageParser_ipv4address_return pbelle_sip_messageParser->ipv4address(pbelle_sip_messageParser) * - const char* pbelle_sip_messageParser->ipv6reference(pbelle_sip_messageParser) * - belle_sip_messageParser_ipv6address_return pbelle_sip_messageParser->ipv6address(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->hexpart(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->hexseq(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->hex4(pbelle_sip_messageParser) * - belle_sip_messageParser_port_return pbelle_sip_messageParser->port(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->escaped(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->ttl(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->three_digit(pbelle_sip_messageParser) * - belle_sip_messageParser_token_return pbelle_sip_messageParser->token(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->reserved_for_from_to_contact_addr_spec(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->reserved(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->unreserved(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->alphanum(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->hexdigit(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->alpha(pbelle_sip_messageParser) * - belle_sip_messageParser_word_return pbelle_sip_messageParser->word(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->mark(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->sp_tab_colon(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->hcolon(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->ldquot(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->rdquot(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->semi(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->comma(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->sp_laquot(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->raquot_sp(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->equal(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->slash(pbelle_sip_messageParser) * - void pbelle_sip_messageParser->lws(pbelle_sip_messageParser) * * * * * * * * * * * * * * * * * The return type for any particular rule is of course determined by the source * grammar file. */ // [The "BSD license"] // Copyright (c) 2005-2009 Jim Idle, Temporal Wave LLC // http://www.temporal-wave.com // http://www.linkedin.com/in/jimidle // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions // are met: // 1. Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // 2. Redistributions in binary form must reproduce the above copyright // notice, this list of conditions and the following disclaimer in the // documentation and/or other materials provided with the distribution. // 3. The name of the author may not be used to endorse or promote products // derived from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR // IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES // OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT // NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF // THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef _belle_sip_messageParser_H #define _belle_sip_messageParser_H /* ============================================================================= * Standard antlr3 C runtime definitions */ #include /* End of standard antlr 3 runtime definitions * ============================================================================= */ #include "belle-sip/defs.h" #include "belle-sip/types.h" #include "belle-sip/message.h" #include "belle-sip/http-message.h" #include "parserutils.h" BELLESIP_EXPORT void belle_sip_header_address_set_quoted_displayname(belle_sip_header_address_t* address,const char* value); #ifdef __cplusplus extern "C" { #endif // Forward declare the context typedef so that we can use it before it is // properly defined. Delegators and delegates (from import statements) are // interdependent and their context structures contain pointers to each other // C only allows such things to be declared if you pre-declare the typedef. // typedef struct belle_sip_messageParser_Ctx_struct belle_sip_messageParser, * pbelle_sip_messageParser; /* belle-sip - SIP (RFC3261) library. Copyright (C) 2010 Belledonne Communications SARL This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #pragma GCC diagnostic ignored "-Wparentheses" #pragma GCC diagnostic ignored "-Wunused" #ifndef __clang__ #pragma GCC diagnostic ignored "-Wunused-but-set-variable" #pragma GCC diagnostic ignored "-Wunused-variable" #pragma GCC diagnostic ignored "-Wunused-function" #endif #ifdef ANTLR3_WINDOWS // Disable: Unreferenced parameter, - Rules with parameters that are not used // constant conditional, - ANTLR realizes that a prediction is always true (synpred usually) // initialized but unused variable - tree rewrite variables declared but not needed // Unreferenced local variable - lexer rule declares but does not always use _type // potentially unitialized variable used - retval always returned from a rule // unreferenced local function has been removed - susually getTokenNames or freeScope, they can go without warnigns // // These are only really displayed at warning level /W4 but that is the code ideal I am aiming at // and the codegen must generate some of these warnings by necessity, apart from 4100, which is // usually generated when a parser rule is given a parameter that it does not use. Mostly though // this is a matter of orthogonality hence I disable that one. // #pragma warning( disable : 4100 ) #pragma warning( disable : 4101 ) #pragma warning( disable : 4127 ) #pragma warning( disable : 4189 ) #pragma warning( disable : 4505 ) #pragma warning( disable : 4701 ) #endif /* ======================== * BACKTRACKING IS ENABLED * ======================== */ typedef struct belle_sip_messageParser_method_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; } belle_sip_messageParser_method_return; typedef struct belle_sip_messageParser_status_code_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; } belle_sip_messageParser_status_code_return; typedef struct belle_sip_messageParser_reason_phrase_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; } belle_sip_messageParser_reason_phrase_return; typedef struct belle_sip_messageParser_opaque_part_for_from_to_contact_addr_spec_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; } belle_sip_messageParser_opaque_part_for_from_to_contact_addr_spec_return; typedef struct belle_sip_messageParser_opaque_part_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; } belle_sip_messageParser_opaque_part_return; typedef struct belle_sip_messageParser_scheme_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; } belle_sip_messageParser_scheme_return; typedef struct belle_sip_messageParser_path_segments_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; } belle_sip_messageParser_path_segments_return; typedef struct belle_sip_messageParser_query_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; } belle_sip_messageParser_query_return; typedef struct belle_sip_messageParser_authority_user_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; } belle_sip_messageParser_authority_user_return; typedef struct belle_sip_messageParser_authority_password_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; } belle_sip_messageParser_authority_password_return; typedef struct belle_sip_messageParser_gen_value_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; } belle_sip_messageParser_gen_value_return; typedef struct belle_sip_messageParser_quoted_string_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; } belle_sip_messageParser_quoted_string_return; typedef struct belle_sip_messageParser_methods_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; } belle_sip_messageParser_methods_return; typedef struct belle_sip_messageParser_username_value_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; } belle_sip_messageParser_username_value_return; typedef struct belle_sip_messageParser_qop_value_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; } belle_sip_messageParser_qop_value_return; typedef struct belle_sip_messageParser_cnonce_value_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; } belle_sip_messageParser_cnonce_value_return; typedef struct belle_sip_messageParser_nc_value_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; } belle_sip_messageParser_nc_value_return; typedef struct belle_sip_messageParser_request_digest_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; } belle_sip_messageParser_request_digest_return; typedef struct belle_sip_messageParser_auth_param_value_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; } belle_sip_messageParser_auth_param_value_return; typedef struct belle_sip_messageParser_auth_param_name_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; } belle_sip_messageParser_auth_param_name_return; typedef struct belle_sip_messageParser_auth_scheme_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; } belle_sip_messageParser_auth_scheme_return; typedef struct belle_sip_messageParser_nonce_value_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; } belle_sip_messageParser_nonce_value_return; typedef struct belle_sip_messageParser_call_id_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; } belle_sip_messageParser_call_id_return; typedef struct belle_sip_messageParser_retry_after_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; } belle_sip_messageParser_retry_after_return; typedef struct belle_sip_messageParser_display_name_tokens_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; } belle_sip_messageParser_display_name_tokens_return; typedef struct belle_sip_messageParser_delta_seconds_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; } belle_sip_messageParser_delta_seconds_return; typedef struct belle_sip_messageParser_content_length_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; } belle_sip_messageParser_content_length_return; typedef struct belle_sip_messageParser_m_type_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; } belle_sip_messageParser_m_type_return; typedef struct belle_sip_messageParser_type_param_value_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; } belle_sip_messageParser_type_param_value_return; typedef struct belle_sip_messageParser_m_subtype_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; } belle_sip_messageParser_m_subtype_return; typedef struct belle_sip_messageParser_seq_number_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; } belle_sip_messageParser_seq_number_return; typedef struct belle_sip_messageParser_sip_date_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; } belle_sip_messageParser_sip_date_return; typedef struct belle_sip_messageParser_max_forwards_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; } belle_sip_messageParser_max_forwards_return; typedef struct belle_sip_messageParser_realm_value_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; } belle_sip_messageParser_realm_value_return; typedef struct belle_sip_messageParser_stale_value_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; } belle_sip_messageParser_stale_value_return; typedef struct belle_sip_messageParser_sent_protocol_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; } belle_sip_messageParser_sent_protocol_return; typedef struct belle_sip_messageParser_transport_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; } belle_sip_messageParser_transport_return; typedef struct belle_sip_messageParser_state_value_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; } belle_sip_messageParser_state_value_return; typedef struct belle_sip_messageParser_event_package_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; } belle_sip_messageParser_event_package_return; typedef struct belle_sip_messageParser_content_disposition_value_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; } belle_sip_messageParser_content_disposition_value_return; typedef struct belle_sip_messageParser_accept_main_media_type_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; } belle_sip_messageParser_accept_main_media_type_return; typedef struct belle_sip_messageParser_accept_sub_media_type_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; } belle_sip_messageParser_accept_sub_media_type_return; typedef struct belle_sip_messageParser_header_reason_protocol_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; } belle_sip_messageParser_header_reason_protocol_return; typedef struct belle_sip_messageParser_header_name_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; } belle_sip_messageParser_header_name_return; typedef struct belle_sip_messageParser_header_value_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; belle_sip_header_t* ret; } belle_sip_messageParser_header_value_return; typedef struct belle_sip_messageParser_user_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; } belle_sip_messageParser_user_return; typedef struct belle_sip_messageParser_password_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; } belle_sip_messageParser_password_return; typedef struct belle_sip_messageParser_pname_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; } belle_sip_messageParser_pname_return; typedef struct belle_sip_messageParser_pvalue_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; } belle_sip_messageParser_pvalue_return; typedef struct belle_sip_messageParser_hname_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; } belle_sip_messageParser_hname_return; typedef struct belle_sip_messageParser_hvalue_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; } belle_sip_messageParser_hvalue_return; typedef struct belle_sip_messageParser_fast_hostname_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; } belle_sip_messageParser_fast_hostname_return; typedef struct belle_sip_messageParser_hostname_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; } belle_sip_messageParser_hostname_return; typedef struct belle_sip_messageParser_ipv4address_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; } belle_sip_messageParser_ipv4address_return; typedef struct belle_sip_messageParser_ipv6address_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; } belle_sip_messageParser_ipv6address_return; typedef struct belle_sip_messageParser_port_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; int ret; } belle_sip_messageParser_port_return; typedef struct belle_sip_messageParser_token_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; } belle_sip_messageParser_token_return; typedef struct belle_sip_messageParser_word_return_struct { /** Generic return elements for ANTLR3 rules that are not in tree parsers or returning trees */ pANTLR3_COMMON_TOKEN start; pANTLR3_COMMON_TOKEN stop; } belle_sip_messageParser_word_return; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the message scope variable tracking * structure. An instance of this structure is created by calling * belle_sip_messageParser_messagePush(). */ typedef struct belle_sip_messageParser_message_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sip_messageParser_message_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ size_t message_length; /* End of programmer defined variables * ============================================================================= */ } belle_sip_messageParser_message_SCOPE, * pbelle_sip_messageParser_message_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the message_raw scope variable tracking * structure. An instance of this structure is created by calling * belle_sip_messageParser_message_rawPush(). */ typedef struct belle_sip_messageParser_message_raw_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sip_messageParser_message_raw_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ size_t* message_length; /* End of programmer defined variables * ============================================================================= */ } belle_sip_messageParser_message_raw_SCOPE, * pbelle_sip_messageParser_message_raw_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the common_request scope variable tracking * structure. An instance of this structure is created by calling * belle_sip_messageParser_common_requestPush(). */ typedef struct belle_sip_messageParser_common_request_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sip_messageParser_common_request_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_sip_message_t* current; /* End of programmer defined variables * ============================================================================= */ } belle_sip_messageParser_common_request_SCOPE, * pbelle_sip_messageParser_common_request_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the request_line scope variable tracking * structure. An instance of this structure is created by calling * belle_sip_messageParser_request_linePush(). */ typedef struct belle_sip_messageParser_request_line_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sip_messageParser_request_line_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_sip_request_t* current; /* End of programmer defined variables * ============================================================================= */ } belle_sip_messageParser_request_line_SCOPE, * pbelle_sip_messageParser_request_line_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the status_line scope variable tracking * structure. An instance of this structure is created by calling * belle_sip_messageParser_status_linePush(). */ typedef struct belle_sip_messageParser_status_line_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sip_messageParser_status_line_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_sip_response_t* current; /* End of programmer defined variables * ============================================================================= */ } belle_sip_messageParser_status_line_SCOPE, * pbelle_sip_messageParser_status_line_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the http_request_line scope variable tracking * structure. An instance of this structure is created by calling * belle_sip_messageParser_http_request_linePush(). */ typedef struct belle_sip_messageParser_http_request_line_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sip_messageParser_http_request_line_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_http_request_t* current; /* End of programmer defined variables * ============================================================================= */ } belle_sip_messageParser_http_request_line_SCOPE, * pbelle_sip_messageParser_http_request_line_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the generic_uri_for_from_to_contact_addr_spec scope variable tracking * structure. An instance of this structure is created by calling * belle_sip_messageParser_generic_uri_for_from_to_contact_addr_specPush(). */ typedef struct belle_sip_messageParser_generic_uri_for_from_to_contact_addr_spec_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sip_messageParser_generic_uri_for_from_to_contact_addr_spec_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_generic_uri_t* current; /* End of programmer defined variables * ============================================================================= */ } belle_sip_messageParser_generic_uri_for_from_to_contact_addr_spec_SCOPE, * pbelle_sip_messageParser_generic_uri_for_from_to_contact_addr_spec_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the generic_uri scope variable tracking * structure. An instance of this structure is created by calling * belle_sip_messageParser_generic_uriPush(). */ typedef struct belle_sip_messageParser_generic_uri_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sip_messageParser_generic_uri_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_generic_uri_t* current; /* End of programmer defined variables * ============================================================================= */ } belle_sip_messageParser_generic_uri_SCOPE, * pbelle_sip_messageParser_generic_uri_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the authority_userinfo scope variable tracking * structure. An instance of this structure is created by calling * belle_sip_messageParser_authority_userinfoPush(). */ typedef struct belle_sip_messageParser_authority_userinfo_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sip_messageParser_authority_userinfo_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_generic_uri_t* current; /* End of programmer defined variables * ============================================================================= */ } belle_sip_messageParser_authority_userinfo_SCOPE, * pbelle_sip_messageParser_authority_userinfo_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the authority_hostport scope variable tracking * structure. An instance of this structure is created by calling * belle_sip_messageParser_authority_hostportPush(). */ typedef struct belle_sip_messageParser_authority_hostport_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sip_messageParser_authority_hostport_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_generic_uri_t* current; /* End of programmer defined variables * ============================================================================= */ } belle_sip_messageParser_authority_hostport_SCOPE, * pbelle_sip_messageParser_authority_hostport_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the generic_param scope variable tracking * structure. An instance of this structure is created by calling * belle_sip_messageParser_generic_paramPush(). */ typedef struct belle_sip_messageParser_generic_param_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sip_messageParser_generic_param_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ int is_value; char* gen_value_string; /* End of programmer defined variables * ============================================================================= */ } belle_sip_messageParser_generic_param_SCOPE, * pbelle_sip_messageParser_generic_param_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the header_allow scope variable tracking * structure. An instance of this structure is created by calling * belle_sip_messageParser_header_allowPush(). */ typedef struct belle_sip_messageParser_header_allow_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sip_messageParser_header_allow_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_sip_header_allow_t* current; /* End of programmer defined variables * ============================================================================= */ } belle_sip_messageParser_header_allow_SCOPE, * pbelle_sip_messageParser_header_allow_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the header_authorization scope variable tracking * structure. An instance of this structure is created by calling * belle_sip_messageParser_header_authorizationPush(). */ typedef struct belle_sip_messageParser_header_authorization_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sip_messageParser_header_authorization_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_sip_header_authorization_t* current; /* End of programmer defined variables * ============================================================================= */ } belle_sip_messageParser_header_authorization_SCOPE, * pbelle_sip_messageParser_header_authorization_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the header_call_id scope variable tracking * structure. An instance of this structure is created by calling * belle_sip_messageParser_header_call_idPush(). */ typedef struct belle_sip_messageParser_header_call_id_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sip_messageParser_header_call_id_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_sip_header_call_id_t* current; /* End of programmer defined variables * ============================================================================= */ } belle_sip_messageParser_header_call_id_SCOPE, * pbelle_sip_messageParser_header_call_id_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the header_retry_after scope variable tracking * structure. An instance of this structure is created by calling * belle_sip_messageParser_header_retry_afterPush(). */ typedef struct belle_sip_messageParser_header_retry_after_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sip_messageParser_header_retry_after_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_sip_header_retry_after_t* current; /* End of programmer defined variables * ============================================================================= */ } belle_sip_messageParser_header_retry_after_SCOPE, * pbelle_sip_messageParser_header_retry_after_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the header_contact scope variable tracking * structure. An instance of this structure is created by calling * belle_sip_messageParser_header_contactPush(). */ typedef struct belle_sip_messageParser_header_contact_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sip_messageParser_header_contact_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_sip_header_contact_t* current; belle_sip_header_contact_t* first; /* End of programmer defined variables * ============================================================================= */ } belle_sip_messageParser_header_contact_SCOPE, * pbelle_sip_messageParser_header_contact_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the contact_param scope variable tracking * structure. An instance of this structure is created by calling * belle_sip_messageParser_contact_paramPush(). */ typedef struct belle_sip_messageParser_contact_param_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sip_messageParser_contact_param_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_sip_header_contact_t* prev; /* End of programmer defined variables * ============================================================================= */ } belle_sip_messageParser_contact_param_SCOPE, * pbelle_sip_messageParser_contact_param_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the header_content_length scope variable tracking * structure. An instance of this structure is created by calling * belle_sip_messageParser_header_content_lengthPush(). */ typedef struct belle_sip_messageParser_header_content_length_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sip_messageParser_header_content_length_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_sip_header_content_length_t* current; /* End of programmer defined variables * ============================================================================= */ } belle_sip_messageParser_header_content_length_SCOPE, * pbelle_sip_messageParser_header_content_length_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the header_content_type scope variable tracking * structure. An instance of this structure is created by calling * belle_sip_messageParser_header_content_typePush(). */ typedef struct belle_sip_messageParser_header_content_type_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sip_messageParser_header_content_type_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_sip_header_content_type_t* current; /* End of programmer defined variables * ============================================================================= */ } belle_sip_messageParser_header_content_type_SCOPE, * pbelle_sip_messageParser_header_content_type_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the header_cseq scope variable tracking * structure. An instance of this structure is created by calling * belle_sip_messageParser_header_cseqPush(). */ typedef struct belle_sip_messageParser_header_cseq_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sip_messageParser_header_cseq_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_sip_header_cseq_t* current; /* End of programmer defined variables * ============================================================================= */ } belle_sip_messageParser_header_cseq_SCOPE, * pbelle_sip_messageParser_header_cseq_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the header_date scope variable tracking * structure. An instance of this structure is created by calling * belle_sip_messageParser_header_datePush(). */ typedef struct belle_sip_messageParser_header_date_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sip_messageParser_header_date_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_sip_header_date_t* current; /* End of programmer defined variables * ============================================================================= */ } belle_sip_messageParser_header_date_SCOPE, * pbelle_sip_messageParser_header_date_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the header_expires scope variable tracking * structure. An instance of this structure is created by calling * belle_sip_messageParser_header_expiresPush(). */ typedef struct belle_sip_messageParser_header_expires_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sip_messageParser_header_expires_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_sip_header_expires_t* current; /* End of programmer defined variables * ============================================================================= */ } belle_sip_messageParser_header_expires_SCOPE, * pbelle_sip_messageParser_header_expires_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the header_from scope variable tracking * structure. An instance of this structure is created by calling * belle_sip_messageParser_header_fromPush(). */ typedef struct belle_sip_messageParser_header_from_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sip_messageParser_header_from_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_sip_header_from_t* current; /* End of programmer defined variables * ============================================================================= */ } belle_sip_messageParser_header_from_SCOPE, * pbelle_sip_messageParser_header_from_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the header_max_forwards scope variable tracking * structure. An instance of this structure is created by calling * belle_sip_messageParser_header_max_forwardsPush(). */ typedef struct belle_sip_messageParser_header_max_forwards_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sip_messageParser_header_max_forwards_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_sip_header_max_forwards_t* current; /* End of programmer defined variables * ============================================================================= */ } belle_sip_messageParser_header_max_forwards_SCOPE, * pbelle_sip_messageParser_header_max_forwards_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the header_proxy_authenticate scope variable tracking * structure. An instance of this structure is created by calling * belle_sip_messageParser_header_proxy_authenticatePush(). */ typedef struct belle_sip_messageParser_header_proxy_authenticate_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sip_messageParser_header_proxy_authenticate_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_sip_header_proxy_authenticate_t* current; /* End of programmer defined variables * ============================================================================= */ } belle_sip_messageParser_header_proxy_authenticate_SCOPE, * pbelle_sip_messageParser_header_proxy_authenticate_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the qop_opts scope variable tracking * structure. An instance of this structure is created by calling * belle_sip_messageParser_qop_optsPush(). */ typedef struct belle_sip_messageParser_qop_opts_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sip_messageParser_qop_opts_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_sip_list_t* list; /* End of programmer defined variables * ============================================================================= */ } belle_sip_messageParser_qop_opts_SCOPE, * pbelle_sip_messageParser_qop_opts_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the header_proxy_authorization scope variable tracking * structure. An instance of this structure is created by calling * belle_sip_messageParser_header_proxy_authorizationPush(). */ typedef struct belle_sip_messageParser_header_proxy_authorization_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sip_messageParser_header_proxy_authorization_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_sip_header_proxy_authorization_t* current; /* End of programmer defined variables * ============================================================================= */ } belle_sip_messageParser_header_proxy_authorization_SCOPE, * pbelle_sip_messageParser_header_proxy_authorization_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the header_service_route scope variable tracking * structure. An instance of this structure is created by calling * belle_sip_messageParser_header_service_routePush(). */ typedef struct belle_sip_messageParser_header_service_route_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sip_messageParser_header_service_route_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_sip_header_service_route_t* current; belle_sip_header_service_route_t* first; /* End of programmer defined variables * ============================================================================= */ } belle_sip_messageParser_header_service_route_SCOPE, * pbelle_sip_messageParser_header_service_route_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the srv_route scope variable tracking * structure. An instance of this structure is created by calling * belle_sip_messageParser_srv_routePush(). */ typedef struct belle_sip_messageParser_srv_route_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sip_messageParser_srv_route_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_sip_header_service_route_t* prev; /* End of programmer defined variables * ============================================================================= */ } belle_sip_messageParser_srv_route_SCOPE, * pbelle_sip_messageParser_srv_route_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the header_record_route scope variable tracking * structure. An instance of this structure is created by calling * belle_sip_messageParser_header_record_routePush(). */ typedef struct belle_sip_messageParser_header_record_route_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sip_messageParser_header_record_route_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_sip_header_record_route_t* current; belle_sip_header_record_route_t* first; /* End of programmer defined variables * ============================================================================= */ } belle_sip_messageParser_header_record_route_SCOPE, * pbelle_sip_messageParser_header_record_route_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the rec_route scope variable tracking * structure. An instance of this structure is created by calling * belle_sip_messageParser_rec_routePush(). */ typedef struct belle_sip_messageParser_rec_route_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sip_messageParser_rec_route_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_sip_header_record_route_t* prev; /* End of programmer defined variables * ============================================================================= */ } belle_sip_messageParser_rec_route_SCOPE, * pbelle_sip_messageParser_rec_route_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the header_route scope variable tracking * structure. An instance of this structure is created by calling * belle_sip_messageParser_header_routePush(). */ typedef struct belle_sip_messageParser_header_route_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sip_messageParser_header_route_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_sip_header_route_t* current; belle_sip_header_route_t* first; /* End of programmer defined variables * ============================================================================= */ } belle_sip_messageParser_header_route_SCOPE, * pbelle_sip_messageParser_header_route_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the route_param scope variable tracking * structure. An instance of this structure is created by calling * belle_sip_messageParser_route_paramPush(). */ typedef struct belle_sip_messageParser_route_param_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sip_messageParser_route_param_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_sip_header_route_t* prev; /* End of programmer defined variables * ============================================================================= */ } belle_sip_messageParser_route_param_SCOPE, * pbelle_sip_messageParser_route_param_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the header_to scope variable tracking * structure. An instance of this structure is created by calling * belle_sip_messageParser_header_toPush(). */ typedef struct belle_sip_messageParser_header_to_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sip_messageParser_header_to_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_sip_header_to_t* current; /* End of programmer defined variables * ============================================================================= */ } belle_sip_messageParser_header_to_SCOPE, * pbelle_sip_messageParser_header_to_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the header_diversion scope variable tracking * structure. An instance of this structure is created by calling * belle_sip_messageParser_header_diversionPush(). */ typedef struct belle_sip_messageParser_header_diversion_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sip_messageParser_header_diversion_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_sip_header_diversion_t* current; /* End of programmer defined variables * ============================================================================= */ } belle_sip_messageParser_header_diversion_SCOPE, * pbelle_sip_messageParser_header_diversion_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the header_user_agent scope variable tracking * structure. An instance of this structure is created by calling * belle_sip_messageParser_header_user_agentPush(). */ typedef struct belle_sip_messageParser_header_user_agent_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sip_messageParser_header_user_agent_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_sip_header_user_agent_t* current; /* End of programmer defined variables * ============================================================================= */ } belle_sip_messageParser_header_user_agent_SCOPE, * pbelle_sip_messageParser_header_user_agent_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the header_via scope variable tracking * structure. An instance of this structure is created by calling * belle_sip_messageParser_header_viaPush(). */ typedef struct belle_sip_messageParser_header_via_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sip_messageParser_header_via_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_sip_header_via_t* current; belle_sip_header_via_t* first; /* End of programmer defined variables * ============================================================================= */ } belle_sip_messageParser_header_via_SCOPE, * pbelle_sip_messageParser_header_via_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the via_parm scope variable tracking * structure. An instance of this structure is created by calling * belle_sip_messageParser_via_parmPush(). */ typedef struct belle_sip_messageParser_via_parm_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sip_messageParser_via_parm_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_sip_header_via_t* prev; /* End of programmer defined variables * ============================================================================= */ } belle_sip_messageParser_via_parm_SCOPE, * pbelle_sip_messageParser_via_parm_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the header_www_authenticate scope variable tracking * structure. An instance of this structure is created by calling * belle_sip_messageParser_header_www_authenticatePush(). */ typedef struct belle_sip_messageParser_header_www_authenticate_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sip_messageParser_header_www_authenticate_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_sip_header_www_authenticate_t* current; /* End of programmer defined variables * ============================================================================= */ } belle_sip_messageParser_header_www_authenticate_SCOPE, * pbelle_sip_messageParser_header_www_authenticate_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the header_subscription_state scope variable tracking * structure. An instance of this structure is created by calling * belle_sip_messageParser_header_subscription_statePush(). */ typedef struct belle_sip_messageParser_header_subscription_state_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sip_messageParser_header_subscription_state_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_sip_header_subscription_state_t* current; /* End of programmer defined variables * ============================================================================= */ } belle_sip_messageParser_header_subscription_state_SCOPE, * pbelle_sip_messageParser_header_subscription_state_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the header_event scope variable tracking * structure. An instance of this structure is created by calling * belle_sip_messageParser_header_eventPush(). */ typedef struct belle_sip_messageParser_header_event_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sip_messageParser_header_event_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_sip_header_event_t* current; /* End of programmer defined variables * ============================================================================= */ } belle_sip_messageParser_header_event_SCOPE, * pbelle_sip_messageParser_header_event_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the header_replaces scope variable tracking * structure. An instance of this structure is created by calling * belle_sip_messageParser_header_replacesPush(). */ typedef struct belle_sip_messageParser_header_replaces_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sip_messageParser_header_replaces_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_sip_header_replaces_t* current; /* End of programmer defined variables * ============================================================================= */ } belle_sip_messageParser_header_replaces_SCOPE, * pbelle_sip_messageParser_header_replaces_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the header_privacy scope variable tracking * structure. An instance of this structure is created by calling * belle_sip_messageParser_header_privacyPush(). */ typedef struct belle_sip_messageParser_header_privacy_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sip_messageParser_header_privacy_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_sip_header_privacy_t* current; /* End of programmer defined variables * ============================================================================= */ } belle_sip_messageParser_header_privacy_SCOPE, * pbelle_sip_messageParser_header_privacy_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the header_supported scope variable tracking * structure. An instance of this structure is created by calling * belle_sip_messageParser_header_supportedPush(). */ typedef struct belle_sip_messageParser_header_supported_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sip_messageParser_header_supported_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_sip_header_supported_t* current; /* End of programmer defined variables * ============================================================================= */ } belle_sip_messageParser_header_supported_SCOPE, * pbelle_sip_messageParser_header_supported_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the header_session_expires scope variable tracking * structure. An instance of this structure is created by calling * belle_sip_messageParser_header_session_expiresPush(). */ typedef struct belle_sip_messageParser_header_session_expires_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sip_messageParser_header_session_expires_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_sip_header_session_expires_t* current; /* End of programmer defined variables * ============================================================================= */ } belle_sip_messageParser_header_session_expires_SCOPE, * pbelle_sip_messageParser_header_session_expires_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the header_require scope variable tracking * structure. An instance of this structure is created by calling * belle_sip_messageParser_header_requirePush(). */ typedef struct belle_sip_messageParser_header_require_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sip_messageParser_header_require_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_sip_header_require_t* current; /* End of programmer defined variables * ============================================================================= */ } belle_sip_messageParser_header_require_SCOPE, * pbelle_sip_messageParser_header_require_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the header_content_disposition scope variable tracking * structure. An instance of this structure is created by calling * belle_sip_messageParser_header_content_dispositionPush(). */ typedef struct belle_sip_messageParser_header_content_disposition_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sip_messageParser_header_content_disposition_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_sip_header_content_disposition_t* current; /* End of programmer defined variables * ============================================================================= */ } belle_sip_messageParser_header_content_disposition_SCOPE, * pbelle_sip_messageParser_header_content_disposition_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the header_accept scope variable tracking * structure. An instance of this structure is created by calling * belle_sip_messageParser_header_acceptPush(). */ typedef struct belle_sip_messageParser_header_accept_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sip_messageParser_header_accept_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_sip_header_accept_t* current; belle_sip_header_accept_t* first; /* End of programmer defined variables * ============================================================================= */ } belle_sip_messageParser_header_accept_SCOPE, * pbelle_sip_messageParser_header_accept_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the accept_param scope variable tracking * structure. An instance of this structure is created by calling * belle_sip_messageParser_accept_paramPush(). */ typedef struct belle_sip_messageParser_accept_param_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sip_messageParser_accept_param_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_sip_header_accept_t* prev; /* End of programmer defined variables * ============================================================================= */ } belle_sip_messageParser_accept_param_SCOPE, * pbelle_sip_messageParser_accept_param_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the header_reason scope variable tracking * structure. An instance of this structure is created by calling * belle_sip_messageParser_header_reasonPush(). */ typedef struct belle_sip_messageParser_header_reason_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sip_messageParser_header_reason_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_sip_header_reason_t* current; belle_sip_header_reason_t* first; /* End of programmer defined variables * ============================================================================= */ } belle_sip_messageParser_header_reason_SCOPE, * pbelle_sip_messageParser_header_reason_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the header_reason_param scope variable tracking * structure. An instance of this structure is created by calling * belle_sip_messageParser_header_reason_paramPush(). */ typedef struct belle_sip_messageParser_header_reason_param_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sip_messageParser_header_reason_param_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_sip_header_reason_t* prev; /* End of programmer defined variables * ============================================================================= */ } belle_sip_messageParser_header_reason_param_SCOPE, * pbelle_sip_messageParser_header_reason_param_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the header_authentication_info scope variable tracking * structure. An instance of this structure is created by calling * belle_sip_messageParser_header_authentication_infoPush(). */ typedef struct belle_sip_messageParser_header_authentication_info_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sip_messageParser_header_authentication_info_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_sip_header_authentication_info_t* current; /* End of programmer defined variables * ============================================================================= */ } belle_sip_messageParser_header_authentication_info_SCOPE, * pbelle_sip_messageParser_header_authentication_info_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the header_extension_base scope variable tracking * structure. An instance of this structure is created by calling * belle_sip_messageParser_header_extension_basePush(). */ typedef struct belle_sip_messageParser_header_extension_base_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sip_messageParser_header_extension_base_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ int as_value; /* End of programmer defined variables * ============================================================================= */ } belle_sip_messageParser_header_extension_base_SCOPE, * pbelle_sip_messageParser_header_extension_base_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the paramless_uri scope variable tracking * structure. An instance of this structure is created by calling * belle_sip_messageParser_paramless_uriPush(). */ typedef struct belle_sip_messageParser_paramless_uri_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sip_messageParser_paramless_uri_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_sip_uri_t* current; /* End of programmer defined variables * ============================================================================= */ } belle_sip_messageParser_paramless_uri_SCOPE, * pbelle_sip_messageParser_paramless_uri_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the uri scope variable tracking * structure. An instance of this structure is created by calling * belle_sip_messageParser_uriPush(). */ typedef struct belle_sip_messageParser_uri_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sip_messageParser_uri_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_sip_uri_t* current; /* End of programmer defined variables * ============================================================================= */ } belle_sip_messageParser_uri_SCOPE, * pbelle_sip_messageParser_uri_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the fast_uri scope variable tracking * structure. An instance of this structure is created by calling * belle_sip_messageParser_fast_uriPush(). */ typedef struct belle_sip_messageParser_fast_uri_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sip_messageParser_fast_uri_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_sip_uri_t* current; /* End of programmer defined variables * ============================================================================= */ } belle_sip_messageParser_fast_uri_SCOPE, * pbelle_sip_messageParser_fast_uri_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the userinfo scope variable tracking * structure. An instance of this structure is created by calling * belle_sip_messageParser_userinfoPush(). */ typedef struct belle_sip_messageParser_userinfo_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sip_messageParser_userinfo_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_sip_uri_t* current; /* End of programmer defined variables * ============================================================================= */ } belle_sip_messageParser_userinfo_SCOPE, * pbelle_sip_messageParser_userinfo_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the hostport scope variable tracking * structure. An instance of this structure is created by calling * belle_sip_messageParser_hostportPush(). */ typedef struct belle_sip_messageParser_hostport_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sip_messageParser_hostport_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_sip_uri_t* current; /* End of programmer defined variables * ============================================================================= */ } belle_sip_messageParser_hostport_SCOPE, * pbelle_sip_messageParser_hostport_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the fast_hostport scope variable tracking * structure. An instance of this structure is created by calling * belle_sip_messageParser_fast_hostportPush(). */ typedef struct belle_sip_messageParser_fast_hostport_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sip_messageParser_fast_hostport_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_sip_uri_t* current; /* End of programmer defined variables * ============================================================================= */ } belle_sip_messageParser_fast_hostport_SCOPE, * pbelle_sip_messageParser_fast_hostport_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the uri_parameters scope variable tracking * structure. An instance of this structure is created by calling * belle_sip_messageParser_uri_parametersPush(). */ typedef struct belle_sip_messageParser_uri_parameters_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sip_messageParser_uri_parameters_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_sip_uri_t* current; /* End of programmer defined variables * ============================================================================= */ } belle_sip_messageParser_uri_parameters_SCOPE, * pbelle_sip_messageParser_uri_parameters_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the headers scope variable tracking * structure. An instance of this structure is created by calling * belle_sip_messageParser_headersPush(). */ typedef struct belle_sip_messageParser_headers_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sip_messageParser_headers_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ belle_sip_uri_t* current; int is_hvalue; /* End of programmer defined variables * ============================================================================= */ } belle_sip_messageParser_headers_SCOPE, * pbelle_sip_messageParser_headers_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the uri_header scope variable tracking * structure. An instance of this structure is created by calling * belle_sip_messageParser_uri_headerPush(). */ typedef struct belle_sip_messageParser_uri_header_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sip_messageParser_uri_header_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ int is_hvalue; /* End of programmer defined variables * ============================================================================= */ } belle_sip_messageParser_uri_header_SCOPE, * pbelle_sip_messageParser_uri_header_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the fast_host scope variable tracking * structure. An instance of this structure is created by calling * belle_sip_messageParser_fast_hostPush(). */ typedef struct belle_sip_messageParser_fast_host_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sip_messageParser_fast_host_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ const char* current; /* End of programmer defined variables * ============================================================================= */ } belle_sip_messageParser_fast_host_SCOPE, * pbelle_sip_messageParser_fast_host_SCOPE; /* ruleAttributeScopeDecl(scope) */ /* makeScopeSet() */ /** Definition of the host scope variable tracking * structure. An instance of this structure is created by calling * belle_sip_messageParser_hostPush(). */ typedef struct belle_sip_messageParser_host_SCOPE_struct { /** Function that the user may provide to be called when the * scope is destroyed (so you can free pANTLR3_HASH_TABLES and so on) * * \param POinter to an instance of this typedef/struct */ void (ANTLR3_CDECL *free) (struct belle_sip_messageParser_host_SCOPE_struct * frame); /* ============================================================================= * Programmer defined variables... */ const char* current; /* End of programmer defined variables * ============================================================================= */ } belle_sip_messageParser_host_SCOPE, * pbelle_sip_messageParser_host_SCOPE; /** Context tracking structure for belle_sip_messageParser */ struct belle_sip_messageParser_Ctx_struct { /** Built in ANTLR3 context tracker contains all the generic elements * required for context tracking. */ pANTLR3_PARSER pParser; /* ruleAttributeScopeDef(scope) */ /** Pointer to the message stack for use by pbelle_sip_messageParser_messagePush() * and pbelle_sip_messageParser_messagePop() */ pANTLR3_STACK pbelle_sip_messageParser_messageStack; ANTLR3_UINT32 pbelle_sip_messageParser_messageStack_limit; pbelle_sip_messageParser_message_SCOPE (*pbelle_sip_messageParser_messagePush)(struct belle_sip_messageParser_Ctx_struct * ctx); pbelle_sip_messageParser_message_SCOPE pbelle_sip_messageParser_messageTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the message_raw stack for use by pbelle_sip_messageParser_message_rawPush() * and pbelle_sip_messageParser_message_rawPop() */ pANTLR3_STACK pbelle_sip_messageParser_message_rawStack; ANTLR3_UINT32 pbelle_sip_messageParser_message_rawStack_limit; pbelle_sip_messageParser_message_raw_SCOPE (*pbelle_sip_messageParser_message_rawPush)(struct belle_sip_messageParser_Ctx_struct * ctx); pbelle_sip_messageParser_message_raw_SCOPE pbelle_sip_messageParser_message_rawTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the common_request stack for use by pbelle_sip_messageParser_common_requestPush() * and pbelle_sip_messageParser_common_requestPop() */ pANTLR3_STACK pbelle_sip_messageParser_common_requestStack; ANTLR3_UINT32 pbelle_sip_messageParser_common_requestStack_limit; pbelle_sip_messageParser_common_request_SCOPE (*pbelle_sip_messageParser_common_requestPush)(struct belle_sip_messageParser_Ctx_struct * ctx); pbelle_sip_messageParser_common_request_SCOPE pbelle_sip_messageParser_common_requestTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the request_line stack for use by pbelle_sip_messageParser_request_linePush() * and pbelle_sip_messageParser_request_linePop() */ pANTLR3_STACK pbelle_sip_messageParser_request_lineStack; ANTLR3_UINT32 pbelle_sip_messageParser_request_lineStack_limit; pbelle_sip_messageParser_request_line_SCOPE (*pbelle_sip_messageParser_request_linePush)(struct belle_sip_messageParser_Ctx_struct * ctx); pbelle_sip_messageParser_request_line_SCOPE pbelle_sip_messageParser_request_lineTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the status_line stack for use by pbelle_sip_messageParser_status_linePush() * and pbelle_sip_messageParser_status_linePop() */ pANTLR3_STACK pbelle_sip_messageParser_status_lineStack; ANTLR3_UINT32 pbelle_sip_messageParser_status_lineStack_limit; pbelle_sip_messageParser_status_line_SCOPE (*pbelle_sip_messageParser_status_linePush)(struct belle_sip_messageParser_Ctx_struct * ctx); pbelle_sip_messageParser_status_line_SCOPE pbelle_sip_messageParser_status_lineTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the http_request_line stack for use by pbelle_sip_messageParser_http_request_linePush() * and pbelle_sip_messageParser_http_request_linePop() */ pANTLR3_STACK pbelle_sip_messageParser_http_request_lineStack; ANTLR3_UINT32 pbelle_sip_messageParser_http_request_lineStack_limit; pbelle_sip_messageParser_http_request_line_SCOPE (*pbelle_sip_messageParser_http_request_linePush)(struct belle_sip_messageParser_Ctx_struct * ctx); pbelle_sip_messageParser_http_request_line_SCOPE pbelle_sip_messageParser_http_request_lineTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the generic_uri_for_from_to_contact_addr_spec stack for use by pbelle_sip_messageParser_generic_uri_for_from_to_contact_addr_specPush() * and pbelle_sip_messageParser_generic_uri_for_from_to_contact_addr_specPop() */ pANTLR3_STACK pbelle_sip_messageParser_generic_uri_for_from_to_contact_addr_specStack; ANTLR3_UINT32 pbelle_sip_messageParser_generic_uri_for_from_to_contact_addr_specStack_limit; pbelle_sip_messageParser_generic_uri_for_from_to_contact_addr_spec_SCOPE (*pbelle_sip_messageParser_generic_uri_for_from_to_contact_addr_specPush)(struct belle_sip_messageParser_Ctx_struct * ctx); pbelle_sip_messageParser_generic_uri_for_from_to_contact_addr_spec_SCOPE pbelle_sip_messageParser_generic_uri_for_from_to_contact_addr_specTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the generic_uri stack for use by pbelle_sip_messageParser_generic_uriPush() * and pbelle_sip_messageParser_generic_uriPop() */ pANTLR3_STACK pbelle_sip_messageParser_generic_uriStack; ANTLR3_UINT32 pbelle_sip_messageParser_generic_uriStack_limit; pbelle_sip_messageParser_generic_uri_SCOPE (*pbelle_sip_messageParser_generic_uriPush)(struct belle_sip_messageParser_Ctx_struct * ctx); pbelle_sip_messageParser_generic_uri_SCOPE pbelle_sip_messageParser_generic_uriTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the authority_userinfo stack for use by pbelle_sip_messageParser_authority_userinfoPush() * and pbelle_sip_messageParser_authority_userinfoPop() */ pANTLR3_STACK pbelle_sip_messageParser_authority_userinfoStack; ANTLR3_UINT32 pbelle_sip_messageParser_authority_userinfoStack_limit; pbelle_sip_messageParser_authority_userinfo_SCOPE (*pbelle_sip_messageParser_authority_userinfoPush)(struct belle_sip_messageParser_Ctx_struct * ctx); pbelle_sip_messageParser_authority_userinfo_SCOPE pbelle_sip_messageParser_authority_userinfoTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the authority_hostport stack for use by pbelle_sip_messageParser_authority_hostportPush() * and pbelle_sip_messageParser_authority_hostportPop() */ pANTLR3_STACK pbelle_sip_messageParser_authority_hostportStack; ANTLR3_UINT32 pbelle_sip_messageParser_authority_hostportStack_limit; pbelle_sip_messageParser_authority_hostport_SCOPE (*pbelle_sip_messageParser_authority_hostportPush)(struct belle_sip_messageParser_Ctx_struct * ctx); pbelle_sip_messageParser_authority_hostport_SCOPE pbelle_sip_messageParser_authority_hostportTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the generic_param stack for use by pbelle_sip_messageParser_generic_paramPush() * and pbelle_sip_messageParser_generic_paramPop() */ pANTLR3_STACK pbelle_sip_messageParser_generic_paramStack; ANTLR3_UINT32 pbelle_sip_messageParser_generic_paramStack_limit; pbelle_sip_messageParser_generic_param_SCOPE (*pbelle_sip_messageParser_generic_paramPush)(struct belle_sip_messageParser_Ctx_struct * ctx); pbelle_sip_messageParser_generic_param_SCOPE pbelle_sip_messageParser_generic_paramTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the header_allow stack for use by pbelle_sip_messageParser_header_allowPush() * and pbelle_sip_messageParser_header_allowPop() */ pANTLR3_STACK pbelle_sip_messageParser_header_allowStack; ANTLR3_UINT32 pbelle_sip_messageParser_header_allowStack_limit; pbelle_sip_messageParser_header_allow_SCOPE (*pbelle_sip_messageParser_header_allowPush)(struct belle_sip_messageParser_Ctx_struct * ctx); pbelle_sip_messageParser_header_allow_SCOPE pbelle_sip_messageParser_header_allowTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the header_authorization stack for use by pbelle_sip_messageParser_header_authorizationPush() * and pbelle_sip_messageParser_header_authorizationPop() */ pANTLR3_STACK pbelle_sip_messageParser_header_authorizationStack; ANTLR3_UINT32 pbelle_sip_messageParser_header_authorizationStack_limit; pbelle_sip_messageParser_header_authorization_SCOPE (*pbelle_sip_messageParser_header_authorizationPush)(struct belle_sip_messageParser_Ctx_struct * ctx); pbelle_sip_messageParser_header_authorization_SCOPE pbelle_sip_messageParser_header_authorizationTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the header_call_id stack for use by pbelle_sip_messageParser_header_call_idPush() * and pbelle_sip_messageParser_header_call_idPop() */ pANTLR3_STACK pbelle_sip_messageParser_header_call_idStack; ANTLR3_UINT32 pbelle_sip_messageParser_header_call_idStack_limit; pbelle_sip_messageParser_header_call_id_SCOPE (*pbelle_sip_messageParser_header_call_idPush)(struct belle_sip_messageParser_Ctx_struct * ctx); pbelle_sip_messageParser_header_call_id_SCOPE pbelle_sip_messageParser_header_call_idTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the header_retry_after stack for use by pbelle_sip_messageParser_header_retry_afterPush() * and pbelle_sip_messageParser_header_retry_afterPop() */ pANTLR3_STACK pbelle_sip_messageParser_header_retry_afterStack; ANTLR3_UINT32 pbelle_sip_messageParser_header_retry_afterStack_limit; pbelle_sip_messageParser_header_retry_after_SCOPE (*pbelle_sip_messageParser_header_retry_afterPush)(struct belle_sip_messageParser_Ctx_struct * ctx); pbelle_sip_messageParser_header_retry_after_SCOPE pbelle_sip_messageParser_header_retry_afterTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the header_contact stack for use by pbelle_sip_messageParser_header_contactPush() * and pbelle_sip_messageParser_header_contactPop() */ pANTLR3_STACK pbelle_sip_messageParser_header_contactStack; ANTLR3_UINT32 pbelle_sip_messageParser_header_contactStack_limit; pbelle_sip_messageParser_header_contact_SCOPE (*pbelle_sip_messageParser_header_contactPush)(struct belle_sip_messageParser_Ctx_struct * ctx); pbelle_sip_messageParser_header_contact_SCOPE pbelle_sip_messageParser_header_contactTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the contact_param stack for use by pbelle_sip_messageParser_contact_paramPush() * and pbelle_sip_messageParser_contact_paramPop() */ pANTLR3_STACK pbelle_sip_messageParser_contact_paramStack; ANTLR3_UINT32 pbelle_sip_messageParser_contact_paramStack_limit; pbelle_sip_messageParser_contact_param_SCOPE (*pbelle_sip_messageParser_contact_paramPush)(struct belle_sip_messageParser_Ctx_struct * ctx); pbelle_sip_messageParser_contact_param_SCOPE pbelle_sip_messageParser_contact_paramTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the header_content_length stack for use by pbelle_sip_messageParser_header_content_lengthPush() * and pbelle_sip_messageParser_header_content_lengthPop() */ pANTLR3_STACK pbelle_sip_messageParser_header_content_lengthStack; ANTLR3_UINT32 pbelle_sip_messageParser_header_content_lengthStack_limit; pbelle_sip_messageParser_header_content_length_SCOPE (*pbelle_sip_messageParser_header_content_lengthPush)(struct belle_sip_messageParser_Ctx_struct * ctx); pbelle_sip_messageParser_header_content_length_SCOPE pbelle_sip_messageParser_header_content_lengthTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the header_content_type stack for use by pbelle_sip_messageParser_header_content_typePush() * and pbelle_sip_messageParser_header_content_typePop() */ pANTLR3_STACK pbelle_sip_messageParser_header_content_typeStack; ANTLR3_UINT32 pbelle_sip_messageParser_header_content_typeStack_limit; pbelle_sip_messageParser_header_content_type_SCOPE (*pbelle_sip_messageParser_header_content_typePush)(struct belle_sip_messageParser_Ctx_struct * ctx); pbelle_sip_messageParser_header_content_type_SCOPE pbelle_sip_messageParser_header_content_typeTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the header_cseq stack for use by pbelle_sip_messageParser_header_cseqPush() * and pbelle_sip_messageParser_header_cseqPop() */ pANTLR3_STACK pbelle_sip_messageParser_header_cseqStack; ANTLR3_UINT32 pbelle_sip_messageParser_header_cseqStack_limit; pbelle_sip_messageParser_header_cseq_SCOPE (*pbelle_sip_messageParser_header_cseqPush)(struct belle_sip_messageParser_Ctx_struct * ctx); pbelle_sip_messageParser_header_cseq_SCOPE pbelle_sip_messageParser_header_cseqTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the header_date stack for use by pbelle_sip_messageParser_header_datePush() * and pbelle_sip_messageParser_header_datePop() */ pANTLR3_STACK pbelle_sip_messageParser_header_dateStack; ANTLR3_UINT32 pbelle_sip_messageParser_header_dateStack_limit; pbelle_sip_messageParser_header_date_SCOPE (*pbelle_sip_messageParser_header_datePush)(struct belle_sip_messageParser_Ctx_struct * ctx); pbelle_sip_messageParser_header_date_SCOPE pbelle_sip_messageParser_header_dateTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the header_expires stack for use by pbelle_sip_messageParser_header_expiresPush() * and pbelle_sip_messageParser_header_expiresPop() */ pANTLR3_STACK pbelle_sip_messageParser_header_expiresStack; ANTLR3_UINT32 pbelle_sip_messageParser_header_expiresStack_limit; pbelle_sip_messageParser_header_expires_SCOPE (*pbelle_sip_messageParser_header_expiresPush)(struct belle_sip_messageParser_Ctx_struct * ctx); pbelle_sip_messageParser_header_expires_SCOPE pbelle_sip_messageParser_header_expiresTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the header_from stack for use by pbelle_sip_messageParser_header_fromPush() * and pbelle_sip_messageParser_header_fromPop() */ pANTLR3_STACK pbelle_sip_messageParser_header_fromStack; ANTLR3_UINT32 pbelle_sip_messageParser_header_fromStack_limit; pbelle_sip_messageParser_header_from_SCOPE (*pbelle_sip_messageParser_header_fromPush)(struct belle_sip_messageParser_Ctx_struct * ctx); pbelle_sip_messageParser_header_from_SCOPE pbelle_sip_messageParser_header_fromTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the header_max_forwards stack for use by pbelle_sip_messageParser_header_max_forwardsPush() * and pbelle_sip_messageParser_header_max_forwardsPop() */ pANTLR3_STACK pbelle_sip_messageParser_header_max_forwardsStack; ANTLR3_UINT32 pbelle_sip_messageParser_header_max_forwardsStack_limit; pbelle_sip_messageParser_header_max_forwards_SCOPE (*pbelle_sip_messageParser_header_max_forwardsPush)(struct belle_sip_messageParser_Ctx_struct * ctx); pbelle_sip_messageParser_header_max_forwards_SCOPE pbelle_sip_messageParser_header_max_forwardsTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the header_proxy_authenticate stack for use by pbelle_sip_messageParser_header_proxy_authenticatePush() * and pbelle_sip_messageParser_header_proxy_authenticatePop() */ pANTLR3_STACK pbelle_sip_messageParser_header_proxy_authenticateStack; ANTLR3_UINT32 pbelle_sip_messageParser_header_proxy_authenticateStack_limit; pbelle_sip_messageParser_header_proxy_authenticate_SCOPE (*pbelle_sip_messageParser_header_proxy_authenticatePush)(struct belle_sip_messageParser_Ctx_struct * ctx); pbelle_sip_messageParser_header_proxy_authenticate_SCOPE pbelle_sip_messageParser_header_proxy_authenticateTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the qop_opts stack for use by pbelle_sip_messageParser_qop_optsPush() * and pbelle_sip_messageParser_qop_optsPop() */ pANTLR3_STACK pbelle_sip_messageParser_qop_optsStack; ANTLR3_UINT32 pbelle_sip_messageParser_qop_optsStack_limit; pbelle_sip_messageParser_qop_opts_SCOPE (*pbelle_sip_messageParser_qop_optsPush)(struct belle_sip_messageParser_Ctx_struct * ctx); pbelle_sip_messageParser_qop_opts_SCOPE pbelle_sip_messageParser_qop_optsTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the header_proxy_authorization stack for use by pbelle_sip_messageParser_header_proxy_authorizationPush() * and pbelle_sip_messageParser_header_proxy_authorizationPop() */ pANTLR3_STACK pbelle_sip_messageParser_header_proxy_authorizationStack; ANTLR3_UINT32 pbelle_sip_messageParser_header_proxy_authorizationStack_limit; pbelle_sip_messageParser_header_proxy_authorization_SCOPE (*pbelle_sip_messageParser_header_proxy_authorizationPush)(struct belle_sip_messageParser_Ctx_struct * ctx); pbelle_sip_messageParser_header_proxy_authorization_SCOPE pbelle_sip_messageParser_header_proxy_authorizationTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the header_service_route stack for use by pbelle_sip_messageParser_header_service_routePush() * and pbelle_sip_messageParser_header_service_routePop() */ pANTLR3_STACK pbelle_sip_messageParser_header_service_routeStack; ANTLR3_UINT32 pbelle_sip_messageParser_header_service_routeStack_limit; pbelle_sip_messageParser_header_service_route_SCOPE (*pbelle_sip_messageParser_header_service_routePush)(struct belle_sip_messageParser_Ctx_struct * ctx); pbelle_sip_messageParser_header_service_route_SCOPE pbelle_sip_messageParser_header_service_routeTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the srv_route stack for use by pbelle_sip_messageParser_srv_routePush() * and pbelle_sip_messageParser_srv_routePop() */ pANTLR3_STACK pbelle_sip_messageParser_srv_routeStack; ANTLR3_UINT32 pbelle_sip_messageParser_srv_routeStack_limit; pbelle_sip_messageParser_srv_route_SCOPE (*pbelle_sip_messageParser_srv_routePush)(struct belle_sip_messageParser_Ctx_struct * ctx); pbelle_sip_messageParser_srv_route_SCOPE pbelle_sip_messageParser_srv_routeTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the header_record_route stack for use by pbelle_sip_messageParser_header_record_routePush() * and pbelle_sip_messageParser_header_record_routePop() */ pANTLR3_STACK pbelle_sip_messageParser_header_record_routeStack; ANTLR3_UINT32 pbelle_sip_messageParser_header_record_routeStack_limit; pbelle_sip_messageParser_header_record_route_SCOPE (*pbelle_sip_messageParser_header_record_routePush)(struct belle_sip_messageParser_Ctx_struct * ctx); pbelle_sip_messageParser_header_record_route_SCOPE pbelle_sip_messageParser_header_record_routeTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the rec_route stack for use by pbelle_sip_messageParser_rec_routePush() * and pbelle_sip_messageParser_rec_routePop() */ pANTLR3_STACK pbelle_sip_messageParser_rec_routeStack; ANTLR3_UINT32 pbelle_sip_messageParser_rec_routeStack_limit; pbelle_sip_messageParser_rec_route_SCOPE (*pbelle_sip_messageParser_rec_routePush)(struct belle_sip_messageParser_Ctx_struct * ctx); pbelle_sip_messageParser_rec_route_SCOPE pbelle_sip_messageParser_rec_routeTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the header_route stack for use by pbelle_sip_messageParser_header_routePush() * and pbelle_sip_messageParser_header_routePop() */ pANTLR3_STACK pbelle_sip_messageParser_header_routeStack; ANTLR3_UINT32 pbelle_sip_messageParser_header_routeStack_limit; pbelle_sip_messageParser_header_route_SCOPE (*pbelle_sip_messageParser_header_routePush)(struct belle_sip_messageParser_Ctx_struct * ctx); pbelle_sip_messageParser_header_route_SCOPE pbelle_sip_messageParser_header_routeTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the route_param stack for use by pbelle_sip_messageParser_route_paramPush() * and pbelle_sip_messageParser_route_paramPop() */ pANTLR3_STACK pbelle_sip_messageParser_route_paramStack; ANTLR3_UINT32 pbelle_sip_messageParser_route_paramStack_limit; pbelle_sip_messageParser_route_param_SCOPE (*pbelle_sip_messageParser_route_paramPush)(struct belle_sip_messageParser_Ctx_struct * ctx); pbelle_sip_messageParser_route_param_SCOPE pbelle_sip_messageParser_route_paramTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the header_to stack for use by pbelle_sip_messageParser_header_toPush() * and pbelle_sip_messageParser_header_toPop() */ pANTLR3_STACK pbelle_sip_messageParser_header_toStack; ANTLR3_UINT32 pbelle_sip_messageParser_header_toStack_limit; pbelle_sip_messageParser_header_to_SCOPE (*pbelle_sip_messageParser_header_toPush)(struct belle_sip_messageParser_Ctx_struct * ctx); pbelle_sip_messageParser_header_to_SCOPE pbelle_sip_messageParser_header_toTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the header_diversion stack for use by pbelle_sip_messageParser_header_diversionPush() * and pbelle_sip_messageParser_header_diversionPop() */ pANTLR3_STACK pbelle_sip_messageParser_header_diversionStack; ANTLR3_UINT32 pbelle_sip_messageParser_header_diversionStack_limit; pbelle_sip_messageParser_header_diversion_SCOPE (*pbelle_sip_messageParser_header_diversionPush)(struct belle_sip_messageParser_Ctx_struct * ctx); pbelle_sip_messageParser_header_diversion_SCOPE pbelle_sip_messageParser_header_diversionTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the header_user_agent stack for use by pbelle_sip_messageParser_header_user_agentPush() * and pbelle_sip_messageParser_header_user_agentPop() */ pANTLR3_STACK pbelle_sip_messageParser_header_user_agentStack; ANTLR3_UINT32 pbelle_sip_messageParser_header_user_agentStack_limit; pbelle_sip_messageParser_header_user_agent_SCOPE (*pbelle_sip_messageParser_header_user_agentPush)(struct belle_sip_messageParser_Ctx_struct * ctx); pbelle_sip_messageParser_header_user_agent_SCOPE pbelle_sip_messageParser_header_user_agentTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the header_via stack for use by pbelle_sip_messageParser_header_viaPush() * and pbelle_sip_messageParser_header_viaPop() */ pANTLR3_STACK pbelle_sip_messageParser_header_viaStack; ANTLR3_UINT32 pbelle_sip_messageParser_header_viaStack_limit; pbelle_sip_messageParser_header_via_SCOPE (*pbelle_sip_messageParser_header_viaPush)(struct belle_sip_messageParser_Ctx_struct * ctx); pbelle_sip_messageParser_header_via_SCOPE pbelle_sip_messageParser_header_viaTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the via_parm stack for use by pbelle_sip_messageParser_via_parmPush() * and pbelle_sip_messageParser_via_parmPop() */ pANTLR3_STACK pbelle_sip_messageParser_via_parmStack; ANTLR3_UINT32 pbelle_sip_messageParser_via_parmStack_limit; pbelle_sip_messageParser_via_parm_SCOPE (*pbelle_sip_messageParser_via_parmPush)(struct belle_sip_messageParser_Ctx_struct * ctx); pbelle_sip_messageParser_via_parm_SCOPE pbelle_sip_messageParser_via_parmTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the header_www_authenticate stack for use by pbelle_sip_messageParser_header_www_authenticatePush() * and pbelle_sip_messageParser_header_www_authenticatePop() */ pANTLR3_STACK pbelle_sip_messageParser_header_www_authenticateStack; ANTLR3_UINT32 pbelle_sip_messageParser_header_www_authenticateStack_limit; pbelle_sip_messageParser_header_www_authenticate_SCOPE (*pbelle_sip_messageParser_header_www_authenticatePush)(struct belle_sip_messageParser_Ctx_struct * ctx); pbelle_sip_messageParser_header_www_authenticate_SCOPE pbelle_sip_messageParser_header_www_authenticateTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the header_subscription_state stack for use by pbelle_sip_messageParser_header_subscription_statePush() * and pbelle_sip_messageParser_header_subscription_statePop() */ pANTLR3_STACK pbelle_sip_messageParser_header_subscription_stateStack; ANTLR3_UINT32 pbelle_sip_messageParser_header_subscription_stateStack_limit; pbelle_sip_messageParser_header_subscription_state_SCOPE (*pbelle_sip_messageParser_header_subscription_statePush)(struct belle_sip_messageParser_Ctx_struct * ctx); pbelle_sip_messageParser_header_subscription_state_SCOPE pbelle_sip_messageParser_header_subscription_stateTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the header_event stack for use by pbelle_sip_messageParser_header_eventPush() * and pbelle_sip_messageParser_header_eventPop() */ pANTLR3_STACK pbelle_sip_messageParser_header_eventStack; ANTLR3_UINT32 pbelle_sip_messageParser_header_eventStack_limit; pbelle_sip_messageParser_header_event_SCOPE (*pbelle_sip_messageParser_header_eventPush)(struct belle_sip_messageParser_Ctx_struct * ctx); pbelle_sip_messageParser_header_event_SCOPE pbelle_sip_messageParser_header_eventTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the header_replaces stack for use by pbelle_sip_messageParser_header_replacesPush() * and pbelle_sip_messageParser_header_replacesPop() */ pANTLR3_STACK pbelle_sip_messageParser_header_replacesStack; ANTLR3_UINT32 pbelle_sip_messageParser_header_replacesStack_limit; pbelle_sip_messageParser_header_replaces_SCOPE (*pbelle_sip_messageParser_header_replacesPush)(struct belle_sip_messageParser_Ctx_struct * ctx); pbelle_sip_messageParser_header_replaces_SCOPE pbelle_sip_messageParser_header_replacesTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the header_privacy stack for use by pbelle_sip_messageParser_header_privacyPush() * and pbelle_sip_messageParser_header_privacyPop() */ pANTLR3_STACK pbelle_sip_messageParser_header_privacyStack; ANTLR3_UINT32 pbelle_sip_messageParser_header_privacyStack_limit; pbelle_sip_messageParser_header_privacy_SCOPE (*pbelle_sip_messageParser_header_privacyPush)(struct belle_sip_messageParser_Ctx_struct * ctx); pbelle_sip_messageParser_header_privacy_SCOPE pbelle_sip_messageParser_header_privacyTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the header_supported stack for use by pbelle_sip_messageParser_header_supportedPush() * and pbelle_sip_messageParser_header_supportedPop() */ pANTLR3_STACK pbelle_sip_messageParser_header_supportedStack; ANTLR3_UINT32 pbelle_sip_messageParser_header_supportedStack_limit; pbelle_sip_messageParser_header_supported_SCOPE (*pbelle_sip_messageParser_header_supportedPush)(struct belle_sip_messageParser_Ctx_struct * ctx); pbelle_sip_messageParser_header_supported_SCOPE pbelle_sip_messageParser_header_supportedTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the header_session_expires stack for use by pbelle_sip_messageParser_header_session_expiresPush() * and pbelle_sip_messageParser_header_session_expiresPop() */ pANTLR3_STACK pbelle_sip_messageParser_header_session_expiresStack; ANTLR3_UINT32 pbelle_sip_messageParser_header_session_expiresStack_limit; pbelle_sip_messageParser_header_session_expires_SCOPE (*pbelle_sip_messageParser_header_session_expiresPush)(struct belle_sip_messageParser_Ctx_struct * ctx); pbelle_sip_messageParser_header_session_expires_SCOPE pbelle_sip_messageParser_header_session_expiresTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the header_require stack for use by pbelle_sip_messageParser_header_requirePush() * and pbelle_sip_messageParser_header_requirePop() */ pANTLR3_STACK pbelle_sip_messageParser_header_requireStack; ANTLR3_UINT32 pbelle_sip_messageParser_header_requireStack_limit; pbelle_sip_messageParser_header_require_SCOPE (*pbelle_sip_messageParser_header_requirePush)(struct belle_sip_messageParser_Ctx_struct * ctx); pbelle_sip_messageParser_header_require_SCOPE pbelle_sip_messageParser_header_requireTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the header_content_disposition stack for use by pbelle_sip_messageParser_header_content_dispositionPush() * and pbelle_sip_messageParser_header_content_dispositionPop() */ pANTLR3_STACK pbelle_sip_messageParser_header_content_dispositionStack; ANTLR3_UINT32 pbelle_sip_messageParser_header_content_dispositionStack_limit; pbelle_sip_messageParser_header_content_disposition_SCOPE (*pbelle_sip_messageParser_header_content_dispositionPush)(struct belle_sip_messageParser_Ctx_struct * ctx); pbelle_sip_messageParser_header_content_disposition_SCOPE pbelle_sip_messageParser_header_content_dispositionTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the header_accept stack for use by pbelle_sip_messageParser_header_acceptPush() * and pbelle_sip_messageParser_header_acceptPop() */ pANTLR3_STACK pbelle_sip_messageParser_header_acceptStack; ANTLR3_UINT32 pbelle_sip_messageParser_header_acceptStack_limit; pbelle_sip_messageParser_header_accept_SCOPE (*pbelle_sip_messageParser_header_acceptPush)(struct belle_sip_messageParser_Ctx_struct * ctx); pbelle_sip_messageParser_header_accept_SCOPE pbelle_sip_messageParser_header_acceptTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the accept_param stack for use by pbelle_sip_messageParser_accept_paramPush() * and pbelle_sip_messageParser_accept_paramPop() */ pANTLR3_STACK pbelle_sip_messageParser_accept_paramStack; ANTLR3_UINT32 pbelle_sip_messageParser_accept_paramStack_limit; pbelle_sip_messageParser_accept_param_SCOPE (*pbelle_sip_messageParser_accept_paramPush)(struct belle_sip_messageParser_Ctx_struct * ctx); pbelle_sip_messageParser_accept_param_SCOPE pbelle_sip_messageParser_accept_paramTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the header_reason stack for use by pbelle_sip_messageParser_header_reasonPush() * and pbelle_sip_messageParser_header_reasonPop() */ pANTLR3_STACK pbelle_sip_messageParser_header_reasonStack; ANTLR3_UINT32 pbelle_sip_messageParser_header_reasonStack_limit; pbelle_sip_messageParser_header_reason_SCOPE (*pbelle_sip_messageParser_header_reasonPush)(struct belle_sip_messageParser_Ctx_struct * ctx); pbelle_sip_messageParser_header_reason_SCOPE pbelle_sip_messageParser_header_reasonTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the header_reason_param stack for use by pbelle_sip_messageParser_header_reason_paramPush() * and pbelle_sip_messageParser_header_reason_paramPop() */ pANTLR3_STACK pbelle_sip_messageParser_header_reason_paramStack; ANTLR3_UINT32 pbelle_sip_messageParser_header_reason_paramStack_limit; pbelle_sip_messageParser_header_reason_param_SCOPE (*pbelle_sip_messageParser_header_reason_paramPush)(struct belle_sip_messageParser_Ctx_struct * ctx); pbelle_sip_messageParser_header_reason_param_SCOPE pbelle_sip_messageParser_header_reason_paramTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the header_authentication_info stack for use by pbelle_sip_messageParser_header_authentication_infoPush() * and pbelle_sip_messageParser_header_authentication_infoPop() */ pANTLR3_STACK pbelle_sip_messageParser_header_authentication_infoStack; ANTLR3_UINT32 pbelle_sip_messageParser_header_authentication_infoStack_limit; pbelle_sip_messageParser_header_authentication_info_SCOPE (*pbelle_sip_messageParser_header_authentication_infoPush)(struct belle_sip_messageParser_Ctx_struct * ctx); pbelle_sip_messageParser_header_authentication_info_SCOPE pbelle_sip_messageParser_header_authentication_infoTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the header_extension_base stack for use by pbelle_sip_messageParser_header_extension_basePush() * and pbelle_sip_messageParser_header_extension_basePop() */ pANTLR3_STACK pbelle_sip_messageParser_header_extension_baseStack; ANTLR3_UINT32 pbelle_sip_messageParser_header_extension_baseStack_limit; pbelle_sip_messageParser_header_extension_base_SCOPE (*pbelle_sip_messageParser_header_extension_basePush)(struct belle_sip_messageParser_Ctx_struct * ctx); pbelle_sip_messageParser_header_extension_base_SCOPE pbelle_sip_messageParser_header_extension_baseTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the paramless_uri stack for use by pbelle_sip_messageParser_paramless_uriPush() * and pbelle_sip_messageParser_paramless_uriPop() */ pANTLR3_STACK pbelle_sip_messageParser_paramless_uriStack; ANTLR3_UINT32 pbelle_sip_messageParser_paramless_uriStack_limit; pbelle_sip_messageParser_paramless_uri_SCOPE (*pbelle_sip_messageParser_paramless_uriPush)(struct belle_sip_messageParser_Ctx_struct * ctx); pbelle_sip_messageParser_paramless_uri_SCOPE pbelle_sip_messageParser_paramless_uriTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the uri stack for use by pbelle_sip_messageParser_uriPush() * and pbelle_sip_messageParser_uriPop() */ pANTLR3_STACK pbelle_sip_messageParser_uriStack; ANTLR3_UINT32 pbelle_sip_messageParser_uriStack_limit; pbelle_sip_messageParser_uri_SCOPE (*pbelle_sip_messageParser_uriPush)(struct belle_sip_messageParser_Ctx_struct * ctx); pbelle_sip_messageParser_uri_SCOPE pbelle_sip_messageParser_uriTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the fast_uri stack for use by pbelle_sip_messageParser_fast_uriPush() * and pbelle_sip_messageParser_fast_uriPop() */ pANTLR3_STACK pbelle_sip_messageParser_fast_uriStack; ANTLR3_UINT32 pbelle_sip_messageParser_fast_uriStack_limit; pbelle_sip_messageParser_fast_uri_SCOPE (*pbelle_sip_messageParser_fast_uriPush)(struct belle_sip_messageParser_Ctx_struct * ctx); pbelle_sip_messageParser_fast_uri_SCOPE pbelle_sip_messageParser_fast_uriTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the userinfo stack for use by pbelle_sip_messageParser_userinfoPush() * and pbelle_sip_messageParser_userinfoPop() */ pANTLR3_STACK pbelle_sip_messageParser_userinfoStack; ANTLR3_UINT32 pbelle_sip_messageParser_userinfoStack_limit; pbelle_sip_messageParser_userinfo_SCOPE (*pbelle_sip_messageParser_userinfoPush)(struct belle_sip_messageParser_Ctx_struct * ctx); pbelle_sip_messageParser_userinfo_SCOPE pbelle_sip_messageParser_userinfoTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the hostport stack for use by pbelle_sip_messageParser_hostportPush() * and pbelle_sip_messageParser_hostportPop() */ pANTLR3_STACK pbelle_sip_messageParser_hostportStack; ANTLR3_UINT32 pbelle_sip_messageParser_hostportStack_limit; pbelle_sip_messageParser_hostport_SCOPE (*pbelle_sip_messageParser_hostportPush)(struct belle_sip_messageParser_Ctx_struct * ctx); pbelle_sip_messageParser_hostport_SCOPE pbelle_sip_messageParser_hostportTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the fast_hostport stack for use by pbelle_sip_messageParser_fast_hostportPush() * and pbelle_sip_messageParser_fast_hostportPop() */ pANTLR3_STACK pbelle_sip_messageParser_fast_hostportStack; ANTLR3_UINT32 pbelle_sip_messageParser_fast_hostportStack_limit; pbelle_sip_messageParser_fast_hostport_SCOPE (*pbelle_sip_messageParser_fast_hostportPush)(struct belle_sip_messageParser_Ctx_struct * ctx); pbelle_sip_messageParser_fast_hostport_SCOPE pbelle_sip_messageParser_fast_hostportTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the uri_parameters stack for use by pbelle_sip_messageParser_uri_parametersPush() * and pbelle_sip_messageParser_uri_parametersPop() */ pANTLR3_STACK pbelle_sip_messageParser_uri_parametersStack; ANTLR3_UINT32 pbelle_sip_messageParser_uri_parametersStack_limit; pbelle_sip_messageParser_uri_parameters_SCOPE (*pbelle_sip_messageParser_uri_parametersPush)(struct belle_sip_messageParser_Ctx_struct * ctx); pbelle_sip_messageParser_uri_parameters_SCOPE pbelle_sip_messageParser_uri_parametersTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the headers stack for use by pbelle_sip_messageParser_headersPush() * and pbelle_sip_messageParser_headersPop() */ pANTLR3_STACK pbelle_sip_messageParser_headersStack; ANTLR3_UINT32 pbelle_sip_messageParser_headersStack_limit; pbelle_sip_messageParser_headers_SCOPE (*pbelle_sip_messageParser_headersPush)(struct belle_sip_messageParser_Ctx_struct * ctx); pbelle_sip_messageParser_headers_SCOPE pbelle_sip_messageParser_headersTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the uri_header stack for use by pbelle_sip_messageParser_uri_headerPush() * and pbelle_sip_messageParser_uri_headerPop() */ pANTLR3_STACK pbelle_sip_messageParser_uri_headerStack; ANTLR3_UINT32 pbelle_sip_messageParser_uri_headerStack_limit; pbelle_sip_messageParser_uri_header_SCOPE (*pbelle_sip_messageParser_uri_headerPush)(struct belle_sip_messageParser_Ctx_struct * ctx); pbelle_sip_messageParser_uri_header_SCOPE pbelle_sip_messageParser_uri_headerTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the fast_host stack for use by pbelle_sip_messageParser_fast_hostPush() * and pbelle_sip_messageParser_fast_hostPop() */ pANTLR3_STACK pbelle_sip_messageParser_fast_hostStack; ANTLR3_UINT32 pbelle_sip_messageParser_fast_hostStack_limit; pbelle_sip_messageParser_fast_host_SCOPE (*pbelle_sip_messageParser_fast_hostPush)(struct belle_sip_messageParser_Ctx_struct * ctx); pbelle_sip_messageParser_fast_host_SCOPE pbelle_sip_messageParser_fast_hostTop; /* ruleAttributeScopeDef(scope) */ /** Pointer to the host stack for use by pbelle_sip_messageParser_hostPush() * and pbelle_sip_messageParser_hostPop() */ pANTLR3_STACK pbelle_sip_messageParser_hostStack; ANTLR3_UINT32 pbelle_sip_messageParser_hostStack_limit; pbelle_sip_messageParser_host_SCOPE (*pbelle_sip_messageParser_hostPush)(struct belle_sip_messageParser_Ctx_struct * ctx); pbelle_sip_messageParser_host_SCOPE pbelle_sip_messageParser_hostTop; belle_sip_message_t* (*message) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_message_t* (*message_raw) (struct belle_sip_messageParser_Ctx_struct * ctx, size_t* length); belle_sip_request_t* (*request) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_message_t* (*common_request) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_request_t* (*request_line) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*sip_version) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*generic_version) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*message_header) (struct belle_sip_messageParser_Ctx_struct * ctx, belle_sip_message_t* message); belle_sip_messageParser_method_return (*method) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*extension_method) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_message_t* (*common_response) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_response_t* (*response) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_response_t* (*status_line) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_messageParser_status_code_return (*status_code) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*extension_code) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_messageParser_reason_phrase_return (*reason_phrase) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_http_request_t* (*http_request) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_http_request_t * (*http_request_line) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*http_version) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_http_response_t* (*http_response) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_http_response_t* (*http_status_line) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_messageParser_opaque_part_for_from_to_contact_addr_spec_return (*opaque_part_for_from_to_contact_addr_spec) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_messageParser_opaque_part_return (*opaque_part) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*uric_no_slash_for_from_to_contact_addr_spec) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*uric_no_slash) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_messageParser_scheme_return (*scheme) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_generic_uri_t* (*generic_uri_for_from_to_contact_addr_spec) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_generic_uri_t* (*generic_uri) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_generic_uri_t* (*hier_part) (struct belle_sip_messageParser_Ctx_struct * ctx, belle_generic_uri_t* uri); belle_sip_messageParser_path_segments_return (*path_segments) (struct belle_sip_messageParser_Ctx_struct * ctx, belle_generic_uri_t* uri); void (*segment) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*param) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*pchar) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_messageParser_query_return (*query) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*uric) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*uric_for_from_to_contact_addr_spec) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*authority) (struct belle_sip_messageParser_Ctx_struct * ctx, belle_generic_uri_t* uri); void (*authority_userinfo) (struct belle_sip_messageParser_Ctx_struct * ctx, belle_generic_uri_t* uri); belle_sip_messageParser_authority_user_return (*authority_user) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_messageParser_authority_password_return (*authority_password) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*authority_hostport) (struct belle_sip_messageParser_Ctx_struct * ctx, belle_generic_uri_t* uri); belle_sip_param_pair_t* (*generic_param) (struct belle_sip_messageParser_Ctx_struct * ctx, belle_sip_parameters_t* object); belle_sip_messageParser_gen_value_return (*gen_value) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_messageParser_quoted_string_return (*quoted_string) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_header_allow_t* (*header_allow) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_messageParser_methods_return (*methods) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*authorization_token) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*digest_token) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_header_authorization_t* (*header_authorization) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*credentials) (struct belle_sip_messageParser_Ctx_struct * ctx, belle_sip_header_authorization_t* header_authorization_base); void (*digest_response) (struct belle_sip_messageParser_Ctx_struct * ctx, belle_sip_header_authorization_t* header_authorization_base); void (*dig_resp) (struct belle_sip_messageParser_Ctx_struct * ctx, belle_sip_header_authorization_t* header_authorization_base); void (*username_token) (struct belle_sip_messageParser_Ctx_struct * ctx); char* (*username) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_messageParser_username_value_return (*username_value) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*uri_token) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*digest_uri) (struct belle_sip_messageParser_Ctx_struct * ctx, belle_sip_header_authorization_t* header_authorization_base); const char* (*message_qop) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_messageParser_qop_value_return (*qop_value) (struct belle_sip_messageParser_Ctx_struct * ctx); char* (*cnonce) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_messageParser_cnonce_value_return (*cnonce_value) (struct belle_sip_messageParser_Ctx_struct * ctx); const char* (*nonce_count) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_messageParser_nc_value_return (*nc_value) (struct belle_sip_messageParser_Ctx_struct * ctx); char* (*dresponse) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_messageParser_request_digest_return (*request_digest) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*huit_lhex) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*auth_param) (struct belle_sip_messageParser_Ctx_struct * ctx, belle_sip_header_authorization_t* header_authorization_base); belle_sip_messageParser_auth_param_value_return (*auth_param_value) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_messageParser_auth_param_name_return (*auth_param_name) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*other_response) (struct belle_sip_messageParser_Ctx_struct * ctx, belle_sip_header_authorization_t* header_authorization_base); belle_sip_messageParser_auth_scheme_return (*auth_scheme) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_messageParser_nonce_value_return (*nonce_value) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*call_id_token) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_header_call_id_t* (*header_call_id) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_messageParser_call_id_return (*call_id) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*retry_after_token) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_header_retry_after_t* (*header_retry_after) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_messageParser_retry_after_return (*retry_after) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*contact_token) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_header_contact_t* (*header_contact) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*contact_param) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_header_address_t* (*header_address) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_header_address_t* (*header_address_param_less) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_header_address_t* (*header_address_base) (struct belle_sip_messageParser_Ctx_struct * ctx, belle_sip_header_address_t* obj); belle_sip_header_address_t* (*fast_header_address) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_header_address_t* (*fast_header_address_param_less) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*name_addr) (struct belle_sip_messageParser_Ctx_struct * ctx, belle_sip_header_address_t* object); void (*name_addr_with_generic_uri) (struct belle_sip_messageParser_Ctx_struct * ctx, belle_sip_header_address_t* object); void (*fast_name_addr_with_generic_uri) (struct belle_sip_messageParser_Ctx_struct * ctx, belle_sip_header_address_t* object); void (*addr_spec) (struct belle_sip_messageParser_Ctx_struct * ctx, belle_sip_header_address_t* object); void (*addr_spec_with_generic_uri) (struct belle_sip_messageParser_Ctx_struct * ctx, belle_sip_header_address_t* object); void (*fast_addr_spec_with_generic_uri) (struct belle_sip_messageParser_Ctx_struct * ctx, belle_sip_header_address_t* object); void (*paramless_addr_spec) (struct belle_sip_messageParser_Ctx_struct * ctx, belle_sip_header_address_t* object); void (*paramless_addr_spec_with_generic_uri) (struct belle_sip_messageParser_Ctx_struct * ctx, belle_sip_header_address_t* object); belle_sip_messageParser_display_name_tokens_return (*display_name_tokens) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*display_name) (struct belle_sip_messageParser_Ctx_struct * ctx, belle_sip_header_address_t* object); void (*contact_params) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*contact_extension) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_messageParser_delta_seconds_return (*delta_seconds) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*content_length_token) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_header_content_length_t* (*header_content_length) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_messageParser_content_length_return (*content_length) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*content_type_token) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_header_content_type_t* (*header_content_type) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*media_type) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_messageParser_m_type_return (*m_type) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*type_param) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_messageParser_type_param_value_return (*type_param_value) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_messageParser_m_subtype_return (*m_subtype) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*cseq_token) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_header_cseq_t* (*header_cseq) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_messageParser_seq_number_return (*seq_number) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*date_token) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_header_date_t* (*header_date) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*date) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_messageParser_sip_date_return (*sip_date) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_header_expires_t* (*header_expires) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*from_token) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_header_from_t* (*header_from) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*from_spec) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*from_param) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_header_max_forwards_t* (*header_max_forwards) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_messageParser_max_forwards_return (*max_forwards) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_header_proxy_authenticate_t* (*header_proxy_authenticate) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*challenge) (struct belle_sip_messageParser_Ctx_struct * ctx, belle_sip_header_www_authenticate_t* www_authenticate); void (*other_challenge) (struct belle_sip_messageParser_Ctx_struct * ctx, belle_sip_header_www_authenticate_t* www_authenticate); void (*digest_cln) (struct belle_sip_messageParser_Ctx_struct * ctx, belle_sip_header_www_authenticate_t* www_authenticate); char* (*realm) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_messageParser_realm_value_return (*realm_value) (struct belle_sip_messageParser_Ctx_struct * ctx); char* (*domain) (struct belle_sip_messageParser_Ctx_struct * ctx); char* (*nonce) (struct belle_sip_messageParser_Ctx_struct * ctx); char* (*opaque) (struct belle_sip_messageParser_Ctx_struct * ctx); const char* (*stale) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_messageParser_stale_value_return (*stale_value) (struct belle_sip_messageParser_Ctx_struct * ctx); const char* (*algorithm) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_list_t* (*qop_opts) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*qop_opts_value) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_header_proxy_authorization_t* (*header_proxy_authorization) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*service_route_token) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_header_service_route_t* (*header_service_route) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*srv_route) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*sr_param) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*record_route_token) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_header_record_route_t* (*header_record_route) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*rec_route) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*rr_param) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*comment) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*route_token) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_header_route_t* (*header_route) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*route_param) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*r_param) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*to_token) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_header_to_t* (*header_to) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*to_spec) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*to_param) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*diversion_token) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_header_diversion_t* (*header_diversion) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*diversion_spec) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*diversion_param) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*refer_to_token) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_header_refer_to_t* (*header_refer_to) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*referred_by_token) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_header_referred_by_t* (*header_referred_by) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_header_address_t* (*refer_to_spec) (struct belle_sip_messageParser_Ctx_struct * ctx, belle_sip_header_address_t* address); belle_sip_header_user_agent_t* (*header_user_agent) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*server_val) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*via_token) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_header_via_t* (*header_via) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*via_parm) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*via_params) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*via_received) (struct belle_sip_messageParser_Ctx_struct * ctx, belle_sip_header_via_t* object); const char* (*via_address) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_messageParser_sent_protocol_return (*sent_protocol) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*protocol_name) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*protocol_version) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_messageParser_transport_return (*transport) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*other_transport) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*sent_by) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_header_www_authenticate_t* (*header_www_authenticate) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_messageParser_state_value_return (*state_value) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_header_subscription_state_t* (*header_subscription_state) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_header_event_t* (*header_event) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_messageParser_event_package_return (*event_package) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_header_replaces_t* (*header_replaces) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_header_p_preferred_identity_t* (*header_p_preferred_identity) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_header_privacy_t* (*header_privacy) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*privacy_val) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_header_supported_t* (*header_supported) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*supported_val) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_header_session_expires_t* (*header_session_expires) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_header_require_t* (*header_require) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*require_val) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_messageParser_content_disposition_value_return (*content_disposition_value) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_header_content_disposition_t* (*header_content_disposition) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*accept_token) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_header_accept_t* (*header_accept) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*accept_param) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_messageParser_accept_main_media_type_return (*accept_main_media_type) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_messageParser_accept_sub_media_type_return (*accept_sub_media_type) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_header_reason_t* (*header_reason) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*header_reason_param) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_messageParser_header_reason_protocol_return (*header_reason_protocol) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_header_authentication_info_t* (*header_authentication_info) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*auth_info) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*qop_token) (struct belle_sip_messageParser_Ctx_struct * ctx); const char* (*authentication_info_message_qop) (struct belle_sip_messageParser_Ctx_struct * ctx); char* (*rspauth) (struct belle_sip_messageParser_Ctx_struct * ctx); char* (*next_nonce) (struct belle_sip_messageParser_Ctx_struct * ctx); char* (*quoted_algorithm) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_header_t* (*header) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_header_t* (*header_extension_base) (struct belle_sip_messageParser_Ctx_struct * ctx, ANTLR3_BOOLEAN is_http); belle_sip_messageParser_header_name_return (*header_name) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_messageParser_header_value_return (*header_value) (struct belle_sip_messageParser_Ctx_struct * ctx, const char* name, ANTLR3_BOOLEAN is_http); void (*message_body) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_uri_t* (*paramless_uri) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_uri_t* (*uri) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_uri_t* (*fast_uri) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*sip_token) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*sips_token) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*sip_schema) (struct belle_sip_messageParser_Ctx_struct * ctx, belle_sip_uri_t* uri); void (*userinfo) (struct belle_sip_messageParser_Ctx_struct * ctx, belle_sip_uri_t* uri); belle_sip_messageParser_user_return (*user) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_messageParser_password_return (*password) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*hostport) (struct belle_sip_messageParser_Ctx_struct * ctx, belle_sip_uri_t* uri); void (*fast_hostport) (struct belle_sip_messageParser_Ctx_struct * ctx, belle_sip_uri_t* uri); void (*uri_parameters) (struct belle_sip_messageParser_Ctx_struct * ctx, belle_sip_uri_t* uri); void (*uri_parameter) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*other_param) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_messageParser_pname_return (*pname) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_messageParser_pvalue_return (*pvalue) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*paramchar) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*param_unreserved) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*headers) (struct belle_sip_messageParser_Ctx_struct * ctx, belle_sip_uri_t* uri); void (*uri_header) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_messageParser_hname_return (*hname) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_messageParser_hvalue_return (*hvalue) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*hnv_unreserved) (struct belle_sip_messageParser_Ctx_struct * ctx); const char* (*fast_host) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_messageParser_fast_hostname_return (*fast_hostname) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*user_unreserved) (struct belle_sip_messageParser_Ctx_struct * ctx); const char* (*host) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_messageParser_hostname_return (*hostname) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*domainlabel) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*toplabel) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_messageParser_ipv4address_return (*ipv4address) (struct belle_sip_messageParser_Ctx_struct * ctx); const char* (*ipv6reference) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_messageParser_ipv6address_return (*ipv6address) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*hexpart) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*hexseq) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*hex4) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_messageParser_port_return (*port) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*escaped) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*ttl) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*three_digit) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_messageParser_token_return (*token) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*reserved_for_from_to_contact_addr_spec) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*reserved) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*unreserved) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*alphanum) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*hexdigit) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*alpha) (struct belle_sip_messageParser_Ctx_struct * ctx); belle_sip_messageParser_word_return (*word) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*mark) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*sp_tab_colon) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*hcolon) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*ldquot) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*rdquot) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*semi) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*comma) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*sp_laquot) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*raquot_sp) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*equal) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*slash) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*lws) (struct belle_sip_messageParser_Ctx_struct * ctx); ANTLR3_BOOLEAN (*synpred1_belle_sip_message) (struct belle_sip_messageParser_Ctx_struct * ctx); ANTLR3_BOOLEAN (*synpred2_belle_sip_message) (struct belle_sip_messageParser_Ctx_struct * ctx); ANTLR3_BOOLEAN (*synpred3_belle_sip_message) (struct belle_sip_messageParser_Ctx_struct * ctx); ANTLR3_BOOLEAN (*synpred4_belle_sip_message) (struct belle_sip_messageParser_Ctx_struct * ctx); ANTLR3_BOOLEAN (*synpred6_belle_sip_message) (struct belle_sip_messageParser_Ctx_struct * ctx); ANTLR3_BOOLEAN (*synpred7_belle_sip_message) (struct belle_sip_messageParser_Ctx_struct * ctx); ANTLR3_BOOLEAN (*synpred8_belle_sip_message) (struct belle_sip_messageParser_Ctx_struct * ctx); ANTLR3_BOOLEAN (*synpred9_belle_sip_message) (struct belle_sip_messageParser_Ctx_struct * ctx); ANTLR3_BOOLEAN (*synpred10_belle_sip_message) (struct belle_sip_messageParser_Ctx_struct * ctx); ANTLR3_BOOLEAN (*synpred11_belle_sip_message) (struct belle_sip_messageParser_Ctx_struct * ctx); ANTLR3_BOOLEAN (*synpred12_belle_sip_message) (struct belle_sip_messageParser_Ctx_struct * ctx); ANTLR3_BOOLEAN (*synpred13_belle_sip_message) (struct belle_sip_messageParser_Ctx_struct * ctx); ANTLR3_BOOLEAN (*synpred14_belle_sip_message) (struct belle_sip_messageParser_Ctx_struct * ctx); ANTLR3_BOOLEAN (*synpred15_belle_sip_message) (struct belle_sip_messageParser_Ctx_struct * ctx); ANTLR3_BOOLEAN (*synpred16_belle_sip_message) (struct belle_sip_messageParser_Ctx_struct * ctx); // Delegated rules const char * (*getGrammarFileName)(); void (*reset) (struct belle_sip_messageParser_Ctx_struct * ctx); void (*free) (struct belle_sip_messageParser_Ctx_struct * ctx); }; // Function protoypes for the constructor functions that external translation units // such as delegators and delegates may wish to call. // ANTLR3_API pbelle_sip_messageParser belle_sip_messageParserNew ( pANTLR3_COMMON_TOKEN_STREAM instream); ANTLR3_API pbelle_sip_messageParser belle_sip_messageParserNewSSD ( pANTLR3_COMMON_TOKEN_STREAM instream, pANTLR3_RECOGNIZER_SHARED_STATE state); /** Symbolic definitions of all the tokens that the parser will work with. * \{ * * Antlr will define EOF, but we can't use that as it it is too common in * in C header files and that would be confusing. There is no way to filter this out at the moment * so we just undef it here for now. That isn't the value we get back from C recognizers * anyway. We are looking for ANTLR3_TOKEN_EOF. */ #ifdef EOF #undef EOF #endif #ifdef Tokens #undef Tokens #endif #define EOF -1 #define AND 4 #define AT 5 #define BQUOTE 6 #define BSLASH 7 #define COLON 8 #define COMMA 9 #define COMMON_CHAR 10 #define CRLF 11 #define DASH 12 #define DIGIT 13 #define DOLLARD 14 #define DOT 15 #define DQUOTE 16 #define EMARK 17 #define EQUAL 18 #define HEX_CHAR 19 #define HTAB 20 #define LAQUOT 21 #define LBRACE 22 #define LPAREN 23 #define LSBRAQUET 24 #define OCTET 25 #define OR 26 #define PERCENT 27 #define PLUS 28 #define QMARK 29 #define RAQUOT 30 #define RBRACE 31 #define RPAREN 32 #define RSBRAQUET 33 #define SEMI 34 #define SLASH 35 #define SP 36 #define SQUOTE 37 #define STAR 38 #define TILDE 39 #define USCORE 40 #ifdef EOF #undef EOF #define EOF ANTLR3_TOKEN_EOF #endif #ifndef TOKENSOURCE #define TOKENSOURCE(lxr) lxr->pLexer->rec->state->tokSource #endif /* End of token definitions for belle_sip_messageParser * ============================================================================= */ /** } */ #ifdef __cplusplus } #endif #endif /* END - Note:Keep extra line feed to satisfy UNIX systems */ belle-sip-5.2.0+dfsg/src/http-listener.c000066400000000000000000000063211434613136500200560ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "belle_sip_internal.h" typedef struct belle_http_callbacks belle_http_callbacks_t; struct belle_http_callbacks{ belle_sip_object_t base; belle_http_request_listener_callbacks_t cbs; void *user_ctx; }; static void process_response_headers(belle_http_request_listener_t *l, const belle_http_response_event_t *event){ belle_http_callbacks_t *obj=(belle_http_callbacks_t*)l; if (obj->cbs.process_response_headers) obj->cbs.process_response_headers(obj->user_ctx,event); } static void process_response_event(belle_http_request_listener_t *l, const belle_http_response_event_t *event){ belle_http_callbacks_t *obj=(belle_http_callbacks_t*)l; if (obj->cbs.process_response) obj->cbs.process_response(obj->user_ctx,event); } static void process_io_error(belle_http_request_listener_t *l, const belle_sip_io_error_event_t *event){ belle_http_callbacks_t *obj=(belle_http_callbacks_t*)l; if (obj->cbs.process_io_error) obj->cbs.process_io_error(obj->user_ctx,event); } static void process_timeout(belle_http_request_listener_t *l, const belle_sip_timeout_event_t *event){ belle_http_callbacks_t *obj=(belle_http_callbacks_t*)l; if (obj->cbs.process_timeout) obj->cbs.process_timeout(obj->user_ctx,event); } static void process_auth_requested(belle_http_request_listener_t *l, belle_sip_auth_event_t *event){ belle_http_callbacks_t *obj=(belle_http_callbacks_t*)l; if (obj->cbs.process_auth_requested) obj->cbs.process_auth_requested(obj->user_ctx,event); } /*BELLE_SIP_DECLARE_VPTR(belle_http_callbacks_t);*/ BELLE_SIP_IMPLEMENT_INTERFACE_BEGIN(belle_http_callbacks_t,belle_http_request_listener_t) process_response_headers, process_response_event, process_io_error, process_timeout, process_auth_requested BELLE_SIP_IMPLEMENT_INTERFACE_END BELLE_SIP_DECLARE_IMPLEMENTED_INTERFACES_1(belle_http_callbacks_t,belle_http_request_listener_t); static void belle_http_callbacks_destroy(belle_http_callbacks_t *obj){ if (obj->cbs.listener_destroyed) obj->cbs.listener_destroyed(obj->user_ctx); } BELLE_SIP_INSTANCIATE_VPTR(belle_http_callbacks_t,belle_sip_object_t,belle_http_callbacks_destroy,NULL,NULL,FALSE); belle_http_request_listener_t *belle_http_request_listener_create_from_callbacks(const belle_http_request_listener_callbacks_t *callbacks, void *user_ctx){ belle_http_callbacks_t *obj=belle_sip_object_new(belle_http_callbacks_t); memcpy(&obj->cbs,callbacks,sizeof(belle_http_request_listener_callbacks_t)); obj->user_ctx=user_ctx; return BELLE_HTTP_REQUEST_LISTENER(obj); } belle-sip-5.2.0+dfsg/src/http-message.c000066400000000000000000000143511434613136500176570ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "grammars/belle_sip_messageLexer.h" #include "grammars/belle_sip_messageParser.h" #include "belle_sip_internal.h" static void belle_http_request_init(belle_http_request_t *req){ /*nop*/ } static void belle_http_request_listener_destroyed(belle_http_request_t *req){ req->listener=NULL; } static void belle_http_request_destroy(belle_http_request_t *req){ if (req->req_uri) belle_sip_object_unref(req->req_uri); DESTROY_STRING(req,method) belle_http_request_set_listener(req,NULL); belle_http_request_set_channel(req,NULL); SET_OBJECT_PROPERTY(req,orig_uri,NULL); SET_OBJECT_PROPERTY(req,response,NULL); } static void belle_http_request_clone(belle_http_request_t *obj, const belle_http_request_t *orig){ if (orig->req_uri) obj->req_uri=(belle_generic_uri_t*)belle_sip_object_clone((belle_sip_object_t*)orig->req_uri); CLONE_STRING(belle_http_request,method,obj,orig) } static belle_sip_error_code belle_http_request_marshal(const belle_http_request_t* request, char* buff, size_t buff_size, size_t *offset) { belle_sip_error_code error=belle_sip_snprintf(buff,buff_size,offset,"%s ",belle_http_request_get_method(request)); if (error!=BELLE_SIP_OK) return error; error=belle_generic_uri_marshal(belle_http_request_get_uri(request),buff,buff_size,offset); if (error!=BELLE_SIP_OK) return error; error=belle_sip_snprintf(buff,buff_size,offset," %s","HTTP/1.1\r\n"); if (error!=BELLE_SIP_OK) return error; error=belle_sip_headers_marshal(BELLE_SIP_MESSAGE(request),buff,buff_size,offset); if (error!=BELLE_SIP_OK) return error; return error; } GET_SET_STRING(belle_http_request,method); BELLE_NEW(belle_http_request,belle_sip_message) BELLE_PARSE(belle_sip_messageParser,belle_,http_request) belle_http_request_t *belle_http_request_create(const char *method, belle_generic_uri_t *url, ...){ va_list vl; belle_http_request_t *obj; belle_sip_header_t *header; if (belle_generic_uri_get_host(url) == NULL) { belle_sip_error("%s: NULL host in url", __FUNCTION__); return NULL; } obj=belle_http_request_new(); obj->method=belle_sip_strdup(method); obj->req_uri=(belle_generic_uri_t*)belle_sip_object_ref(url); va_start(vl,url); while((header=va_arg(vl,belle_sip_header_t*))!=NULL){ belle_sip_message_add_header(BELLE_SIP_MESSAGE(obj),header); } va_end(vl); return obj; } int belle_http_request_is_cancelled(const belle_http_request_t *req) { return req->cancelled; } void belle_http_request_cancel(belle_http_request_t *req) { req->cancelled = TRUE; } void belle_http_request_set_listener(belle_http_request_t *req, belle_http_request_listener_t *l){ if (req->listener){ belle_sip_object_weak_unref(req->listener,(belle_sip_object_destroy_notify_t)belle_http_request_listener_destroyed,req); req->listener=NULL; } if (l){ belle_sip_object_weak_ref(l,(belle_sip_object_destroy_notify_t)belle_http_request_listener_destroyed,req); req->listener=l; } } static void notify_http_request_of_channel_destruction(belle_http_request_t *obj, belle_sip_channel_t *chan_being_destroyed){ obj->channel=NULL; } void belle_http_request_set_channel(belle_http_request_t *req, belle_sip_channel_t* chan){ if (req->channel){ belle_sip_object_weak_unref(req->channel, (belle_sip_object_destroy_notify_t)notify_http_request_of_channel_destruction, req); req->channel=NULL; } if (chan){ belle_sip_object_weak_ref(chan, (belle_sip_object_destroy_notify_t)notify_http_request_of_channel_destruction, req); req->channel=chan; } } belle_http_request_listener_t * belle_http_request_get_listener(const belle_http_request_t *req){ return req->listener; } belle_generic_uri_t *belle_http_request_get_uri(const belle_http_request_t *req){ return req->req_uri; } void belle_http_request_set_uri(belle_http_request_t* request, belle_generic_uri_t* uri) { SET_OBJECT_PROPERTY(request,req_uri,uri); } void belle_http_request_set_response(belle_http_request_t *req, belle_http_response_t *resp){ SET_OBJECT_PROPERTY(req,response,resp); } belle_http_response_t *belle_http_request_get_response(belle_http_request_t *req){ return req->response; } /*response*/ struct belle_http_response{ belle_sip_message_t base; char *http_version; int status_code; char *reason_phrase; }; void belle_http_response_destroy(belle_http_response_t *resp){ if (resp->http_version) belle_sip_free(resp->http_version); if (resp->reason_phrase) belle_sip_free(resp->reason_phrase); } static void belle_http_response_init(belle_http_response_t *resp){ } static void belle_http_response_clone(belle_http_response_t *resp, const belle_http_response_t *orig){ if (orig->http_version) resp->http_version=belle_sip_strdup(orig->http_version); resp->status_code=orig->status_code; if (orig->reason_phrase) resp->reason_phrase=belle_sip_strdup(orig->reason_phrase); } belle_sip_error_code belle_http_response_marshal(belle_http_response_t *resp, char* buff, size_t buff_size, size_t *offset) { belle_sip_error_code error=belle_sip_snprintf( buff ,buff_size ,offset ,"HTTP/1.1 %i %s\r\n" ,belle_http_response_get_status_code(resp) ,belle_http_response_get_reason_phrase(resp)?belle_http_response_get_reason_phrase(resp):""); if (error!=BELLE_SIP_OK) return error; error=belle_sip_headers_marshal(BELLE_SIP_MESSAGE(resp),buff,buff_size,offset); if (error!=BELLE_SIP_OK) return error; return error; } BELLE_NEW(belle_http_response,belle_sip_message) BELLE_PARSE(belle_sip_messageParser,belle_,http_response) GET_SET_STRING(belle_http_response,reason_phrase); GET_SET_INT(belle_http_response,status_code,int) belle-sip-5.2.0+dfsg/src/http-provider.c000066400000000000000000000614311434613136500200660ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include #include "belle_sip_internal.h" typedef struct belle_http_channel_context belle_http_channel_context_t; #define BELLE_HTTP_CHANNEL_CONTEXT(obj) BELLE_SIP_CAST(obj,belle_http_channel_context_t) static void provider_remove_channel(belle_http_provider_t *obj, belle_sip_channel_t *chan); struct belle_http_channel_context{ belle_sip_object_t base; belle_http_provider_t *provider; belle_sip_list_t *pending_requests; }; struct belle_http_provider{ belle_sip_object_t base; belle_sip_stack_t *stack; char *bind_ip; int ai_family; belle_sip_list_t *tcp_channels; belle_sip_list_t *tls_channels; belle_tls_crypto_config_t *crypto_config; uint8_t transports; /**< a mask of enabled transports, availables: BELLE_SIP_HTTP_TRANSPORT_TCP and BELLE_SIP_HTTP_TRANSPORT_TLS */ }; #define BELLE_HTTP_REQUEST_INVOKE_LISTENER(obj,method,arg) \ obj->listener ? BELLE_SIP_INVOKE_LISTENER_ARG(obj->listener,belle_http_request_listener_t,method,arg) : 0 static int http_channel_context_handle_authentication(belle_http_channel_context_t *ctx, belle_http_request_t *req){ const char *realm=NULL; belle_sip_auth_event_t *ev=NULL; belle_http_response_t *resp=belle_http_request_get_response(req); const char *username=NULL; const char *passwd=NULL; const char *ha1=NULL; const char *algorithm=NULL; char computed_ha1[65]; belle_sip_header_www_authenticate_t* authenticate; belle_sip_list_t* authenticate_lst; belle_sip_list_t *it; int ret=0; if (req->auth_attempt_count>1){ req->auth_attempt_count=0; return -1; } if (resp == NULL ) { belle_sip_error("Missing response for req [%p], cannot authenticate", req); return -1; } /* check we have at least one authenticate header and discard any proxy authentification */ if (!(authenticate = belle_sip_message_get_header_by_type(resp,belle_sip_header_www_authenticate_t))) { if (belle_sip_message_get_header_by_type(resp,belle_sip_header_proxy_authenticate_t)) { belle_sip_error("Proxy authentication not supported yet, cannot authenticate for resp [%p]", resp); } belle_sip_error("Missing auth header in response [%p], cannot authenticate", resp); return -1; } /*find if username, passwd were already supplied in original request uri*/ if (req->orig_uri){ username=belle_generic_uri_get_user(req->orig_uri); passwd=belle_generic_uri_get_user_password(req->orig_uri); } // add from_uri to process_auth_requested event data belle_sip_uri_t *from_uri = NULL; belle_sip_header_t *header = belle_sip_message_get_header(BELLE_SIP_MESSAGE(req), "From"); /* loop on all authenticate headers */ authenticate_lst = belle_sip_list_copy(belle_sip_message_get_headers(BELLE_SIP_MESSAGE(resp),BELLE_SIP_WWW_AUTHENTICATE)); for (it=authenticate_lst;it!=NULL;it=it->next) { authenticate=BELLE_SIP_HEADER_WWW_AUTHENTICATE(it->data); const char *requested_algorithm = belle_sip_header_www_authenticate_get_algorithm(authenticate); if (requested_algorithm == NULL) { // default algorithm is MD5 requested_algorithm = "MD5"; } if (strcasecmp("Digest",belle_sip_header_www_authenticate_get_scheme(authenticate)) != 0) { belle_sip_error("Unsupported auth scheme [%s] in response [%p], cannot authenticate", belle_sip_header_www_authenticate_get_scheme(authenticate),resp); belle_sip_list_free(authenticate_lst); return -1; } if (belle_sip_stack_check_digest_compatibility(ctx->provider->stack, authenticate) == -1) continue; realm = belle_sip_header_www_authenticate_get_realm(authenticate); if (header) { belle_sip_header_address_t *from_address = belle_sip_header_address_parse(belle_sip_header_get_unparsed_value(header)); from_uri = belle_sip_header_address_get_uri(from_address); } else if (username && !passwd) { from_uri = belle_sip_uri_create(username,realm); } if (!username || !passwd) { ev=belle_sip_auth_event_create((belle_sip_object_t*)ctx->provider,realm,from_uri); belle_sip_auth_event_set_algorithm(ev, requested_algorithm); BELLE_HTTP_REQUEST_INVOKE_LISTENER(req,process_auth_requested,ev); username= ev->userid ? ev->userid : ev->username; passwd=ev->passwd; ha1=ev->ha1; algorithm=ev->algorithm; } if (!ha1) { if (username && passwd) { belle_sip_auth_helper_compute_ha1_for_algorithm(username,realm,passwd, computed_ha1, belle_sip_auth_define_size(requested_algorithm), requested_algorithm); ha1=computed_ha1; algorithm = requested_algorithm; break; } } else { break; } } belle_sip_list_free(authenticate_lst); if (ha1) { belle_http_header_authorization_t* authorization; req->auth_attempt_count++; authorization = belle_http_auth_helper_create_authorization(authenticate); /*select first qop mode*/ belle_sip_header_authorization_set_qop(BELLE_SIP_HEADER_AUTHORIZATION(authorization),belle_sip_header_www_authenticate_get_qop_first(authenticate)); belle_sip_header_authorization_set_nonce_count(BELLE_SIP_HEADER_AUTHORIZATION(authorization),1); /*we don't store nonce count for now*/ belle_sip_header_authorization_set_username(BELLE_SIP_HEADER_AUTHORIZATION(authorization),username); belle_http_header_authorization_set_uri(authorization,belle_http_request_get_uri(req)); belle_sip_header_authorization_set_algorithm(BELLE_SIP_HEADER_AUTHORIZATION(authorization), algorithm); if (belle_sip_auth_helper_fill_authorization(BELLE_SIP_HEADER_AUTHORIZATION(authorization),belle_http_request_get_method(req),ha1)) { belle_sip_error("Cannot fill auth header for request [%p]",req); if (authorization) belle_sip_object_unref(authorization); ret=-1; } else { belle_sip_message_remove_header(BELLE_SIP_MESSAGE(req),BELLE_HTTP_AUTHORIZATION); belle_sip_message_add_header(BELLE_SIP_MESSAGE(req),BELLE_SIP_HEADER(authorization)); belle_http_provider_send_request(ctx->provider,req,NULL); } } else { belle_sip_error("No auth info found for request [%p], cannot authenticate",req); ret=-1; } if (ev) belle_sip_auth_event_destroy(ev); return ret; } static void http_channel_context_handle_response_headers(belle_http_channel_context_t *ctx , belle_sip_channel_t *chan, belle_http_response_t *response){ belle_http_request_t *req=ctx->pending_requests ? (belle_http_request_t*) ctx->pending_requests->data : NULL; belle_http_response_event_t ev={0}; int code; if (req==NULL){ belle_sip_error("Receiving http response headers not matching any request."); return; } if (belle_http_request_is_cancelled(req)) { belle_sip_warning("Receiving http response headers for a cancelled request."); return; } code=belle_http_response_get_status_code(response); if (code!=401 && code!=407){ /*else notify the app about the response headers received*/ ev.source=(belle_sip_object_t*)ctx->provider; ev.request=req; ev.response=response; BELLE_HTTP_REQUEST_INVOKE_LISTENER(req,process_response_headers,&ev); } } static void release_background_task(belle_http_request_t *req){ if( req->background_task_id ){ belle_sip_message("HTTP request finished: ending bg task id=[%x]", req->background_task_id); belle_sip_end_background_task(req->background_task_id); req->background_task_id = 0; } } static void http_channel_context_handle_response(belle_http_channel_context_t *ctx , belle_sip_channel_t *chan, belle_http_response_t *response){ belle_http_request_t *req=NULL; belle_http_response_event_t ev={0}; int code; belle_sip_header_t *connection; /*pop the request matching this response*/ ctx->pending_requests=belle_sip_list_pop_front(ctx->pending_requests,(void**)&req); if (req==NULL){ belle_sip_error("Receiving http response not matching any request."); return; } if (belle_http_request_is_cancelled(req)) { belle_sip_warning("Receiving http response for a cancelled request."); return; } connection=belle_sip_message_get_header((belle_sip_message_t *)response,"Connection"); if (connection && strstr(belle_sip_header_get_unparsed_value(connection),"close")!=NULL) chan->about_to_be_closed=TRUE; belle_http_request_set_response(req,response); code=belle_http_response_get_status_code(response); if ((code==401 || code==407) && http_channel_context_handle_authentication(ctx,req)==0 ){ /*nothing to do, the request has been resubmitted with authentication*/ }else{ /*else notify the app about the response received*/ ev.source=(belle_sip_object_t*)ctx->provider; ev.request=req; ev.response=response; BELLE_HTTP_REQUEST_INVOKE_LISTENER(req,process_response,&ev); release_background_task(req); } belle_sip_object_unref(req); } static void http_channel_notify_io_error(belle_http_channel_context_t *ctx, belle_sip_channel_t *chan, belle_http_request_t *req){ belle_sip_io_error_event_t ev={0}; /*TODO: would be nice to put the message in the event*/ ev.source=(belle_sip_object_t*)ctx->provider; ev.host=chan->peer_cname; ev.port=chan->peer_port; ev.transport=belle_sip_channel_get_transport_name(chan); BELLE_HTTP_REQUEST_INVOKE_LISTENER(req,process_io_error,&ev); release_background_task(req); } static void http_channel_context_handle_io_error(belle_http_channel_context_t *ctx, belle_sip_channel_t *chan){ belle_http_request_t *req=NULL; belle_sip_list_t *elem; /*if the error happens before attempting to send the message, the pending_requests is empty*/ if (ctx->pending_requests==NULL) elem=chan->outgoing_messages; else elem=ctx->pending_requests; /*pop the requests for which this error is reported*/ for(;elem!=NULL;elem=elem->next){ req=(belle_http_request_t *)elem->data; http_channel_notify_io_error(ctx, chan, req); } } static void http_channel_context_handle_disconnection(belle_http_channel_context_t *ctx, belle_sip_channel_t *chan){ belle_sip_list_t *elem; belle_http_request_t *req=NULL; belle_sip_list_t *to_be_resubmitted = NULL; for (elem = chan->outgoing_messages ; elem != NULL ; elem = elem->next){ to_be_resubmitted = bctbx_list_append(to_be_resubmitted, elem->data); } for (elem = ctx->pending_requests ; elem != NULL ; elem = elem->next){ if (bctbx_list_find(to_be_resubmitted, elem->data) == NULL){ to_be_resubmitted = bctbx_list_append(to_be_resubmitted, elem->data); } } for (elem = to_be_resubmitted; elem != NULL; elem = elem->next){ req = (belle_http_request_t *)elem->data; if (req->resubmitted == 0){ req->resubmitted = 1; belle_sip_message("Resubmitting http request."); belle_http_provider_send_request(ctx->provider, req, NULL /*keep the listener as it is already*/); }else{ belle_sip_warning("Http request has already been resubmitted after a server disconnection. Treating this as an error now."); http_channel_notify_io_error(ctx, chan, req); } } bctbx_list_free(to_be_resubmitted); } /* we are called here by the channel when receiving a message for which a body is expected. * We can notify the application so that it can setup an appropriate body handler. */ static void channel_on_message_headers(belle_sip_channel_listener_t *obj, belle_sip_channel_t *chan, belle_sip_message_t *msg){ belle_http_channel_context_t *ctx=BELLE_HTTP_CHANNEL_CONTEXT(obj); if (BELLE_SIP_OBJECT_IS_INSTANCE_OF(msg,belle_http_response_t)){ http_channel_context_handle_response_headers(ctx,chan,(belle_http_response_t*)msg); }/*ignore requests*/ } static void channel_on_message(belle_sip_channel_listener_t *obj, belle_sip_channel_t *chan, belle_sip_message_t *msg){ belle_http_channel_context_t *ctx=BELLE_HTTP_CHANNEL_CONTEXT(obj); if (BELLE_SIP_OBJECT_IS_INSTANCE_OF(msg,belle_http_response_t)){ http_channel_context_handle_response(ctx,chan,(belle_http_response_t*)msg); }/*ignore requests*/ } static int channel_on_auth_requested(belle_sip_channel_listener_t *obj, belle_sip_channel_t *chan, const char* distinguished_name){ belle_http_channel_context_t *ctx=BELLE_HTTP_CHANNEL_CONTEXT(obj); if (BELLE_SIP_IS_INSTANCE_OF(chan,belle_sip_tls_channel_t)) { belle_sip_auth_event_t* auth_event = belle_sip_auth_event_create((belle_sip_object_t*)ctx->provider,NULL,NULL); belle_sip_tls_channel_t *tls_chan=BELLE_SIP_TLS_CHANNEL(chan); belle_http_request_t *req=(belle_http_request_t*)chan->outgoing_messages->data; auth_event->mode=BELLE_SIP_AUTH_MODE_TLS; belle_sip_auth_event_set_distinguished_name(auth_event,distinguished_name); BELLE_HTTP_REQUEST_INVOKE_LISTENER(req,process_auth_requested,auth_event); belle_sip_tls_channel_set_client_certificates_chain(tls_chan,auth_event->cert); belle_sip_tls_channel_set_client_certificate_key(tls_chan,auth_event->key); belle_sip_auth_event_destroy(auth_event); } return 0; } static void channel_on_sending(belle_sip_channel_listener_t *obj, belle_sip_channel_t *chan, belle_sip_message_t *msg){ belle_http_channel_context_t *ctx=BELLE_HTTP_CHANNEL_CONTEXT(obj); ctx->pending_requests=belle_sip_list_append(ctx->pending_requests,belle_sip_object_ref(msg)); } static void channel_state_changed(belle_sip_channel_listener_t *obj, belle_sip_channel_t *chan, belle_sip_channel_state_t state){ belle_http_channel_context_t *ctx=BELLE_HTTP_CHANNEL_CONTEXT(obj); switch(state){ case BELLE_SIP_CHANNEL_INIT: case BELLE_SIP_CHANNEL_RES_IN_PROGRESS: case BELLE_SIP_CHANNEL_RES_DONE: case BELLE_SIP_CHANNEL_CONNECTING: case BELLE_SIP_CHANNEL_READY: case BELLE_SIP_CHANNEL_RETRY: break; case BELLE_SIP_CHANNEL_ERROR: http_channel_context_handle_io_error(ctx, chan); if (!chan->force_close) { provider_remove_channel(ctx->provider,chan); } break; case BELLE_SIP_CHANNEL_DISCONNECTED: if (!chan->force_close) { /* This may happen while there is a pending requests, typically when the client decides to send a new request while the server * decides to close the connection because of inactivity timeout. Handle this case by re-submitting the pending request(s). */ http_channel_context_handle_disconnection(ctx, chan); provider_remove_channel(ctx->provider,chan); } else { /*In case of force close, manage DISCONNECTED as an io error in order to notify potential pending requests*/ http_channel_context_handle_io_error(ctx, chan); } break; } } static void belle_http_channel_context_uninit(belle_http_channel_context_t *obj){ belle_sip_list_free_with_data(obj->pending_requests,belle_sip_object_unref); } static void on_channel_destroyed(belle_http_channel_context_t *obj, belle_sip_channel_t *chan_being_destroyed){ belle_sip_channel_remove_listener(chan_being_destroyed,BELLE_SIP_CHANNEL_LISTENER(obj)); belle_sip_object_unref(obj); } /* * The http channel context stores pending requests so that they can be matched with response received. * It is associated with the channel when the channel is created, and automatically destroyed when the channel is destroyed. **/ belle_http_channel_context_t * belle_http_channel_context_new(belle_sip_channel_t *chan, belle_http_provider_t *prov){ belle_http_channel_context_t *obj=belle_sip_object_new(belle_http_channel_context_t); obj->provider=prov; belle_sip_channel_add_listener(chan,(belle_sip_channel_listener_t*)obj); belle_sip_object_weak_ref(chan,(belle_sip_object_destroy_notify_t)on_channel_destroyed,obj); return obj; } int belle_http_channel_is_busy(belle_sip_channel_t *obj) { belle_sip_list_t *it; if (obj->outgoing_messages != NULL) { return 1; } /*fixme, a litle bit intrusive*/ for (it = obj->full_listeners; it != NULL; it = it->next) { if (BELLE_SIP_IS_INSTANCE_OF(it->data, belle_http_channel_context_t)) { belle_http_channel_context_t *obj = it->data; return obj->pending_requests != NULL; } } return 0; } BELLE_SIP_IMPLEMENT_INTERFACE_BEGIN(belle_http_channel_context_t,belle_sip_channel_listener_t) channel_state_changed, channel_on_message_headers, channel_on_message, channel_on_sending, channel_on_auth_requested BELLE_SIP_IMPLEMENT_INTERFACE_END BELLE_SIP_DECLARE_IMPLEMENTED_INTERFACES_1(belle_http_channel_context_t,belle_sip_channel_listener_t); BELLE_SIP_INSTANCIATE_VPTR(belle_http_channel_context_t,belle_sip_object_t,belle_http_channel_context_uninit,NULL,NULL,FALSE); static void http_provider_uninit(belle_http_provider_t *obj){ belle_sip_message("http provider destroyed."); belle_sip_free(obj->bind_ip); belle_sip_list_for_each(obj->tcp_channels,(void (*)(void*))belle_sip_channel_force_close); belle_sip_list_free_with_data(obj->tcp_channels,belle_sip_object_unref); belle_sip_list_for_each(obj->tls_channels,(void (*)(void*))belle_sip_channel_force_close); belle_sip_list_free_with_data(obj->tls_channels,belle_sip_object_unref); belle_sip_object_unref(obj->crypto_config); } BELLE_SIP_DECLARE_NO_IMPLEMENTED_INTERFACES(belle_http_provider_t); BELLE_SIP_INSTANCIATE_VPTR(belle_http_provider_t,belle_sip_object_t,http_provider_uninit,NULL,NULL,FALSE); belle_http_provider_t *belle_http_provider_new(belle_sip_stack_t *s, const char *bind_ip, const uint8_t transports){ belle_http_provider_t *p=belle_sip_object_new(belle_http_provider_t); p->stack=s; p->bind_ip=belle_sip_strdup(bind_ip); p->ai_family=strchr(p->bind_ip,':') ? AF_INET6 : AF_INET; p->crypto_config=belle_tls_crypto_config_new(); p->transports=transports; return p; } static void split_request_url(belle_http_request_t *req){ belle_generic_uri_t *uri=belle_http_request_get_uri(req); belle_generic_uri_t *new_uri; char *host_value; const char *path; if (belle_generic_uri_get_host(uri)==NULL && req->orig_uri!=NULL) return;/*already processed request uri*/ path=belle_generic_uri_get_path(uri); if (path==NULL) path="/"; new_uri=belle_generic_uri_new(); belle_generic_uri_set_path(new_uri,path); belle_generic_uri_set_query(new_uri, belle_generic_uri_get_query(uri)); if (belle_generic_uri_get_port(uri)>0) host_value=belle_sip_strdup_printf("%s:%i",belle_generic_uri_get_host(uri),belle_generic_uri_get_port(uri)); else host_value=belle_sip_strdup(belle_generic_uri_get_host(uri)); belle_sip_message_add_header(BELLE_SIP_MESSAGE(req),belle_sip_header_create("Host",host_value)); belle_sip_free(host_value); SET_OBJECT_PROPERTY(req,orig_uri,uri); belle_http_request_set_uri(req,new_uri); } static void fix_request(belle_http_request_t *req){ size_t size=belle_sip_message_get_body_size((belle_sip_message_t*)req); belle_sip_header_content_length_t *ctlen=belle_sip_message_get_header_by_type(req, belle_sip_header_content_length_t); if (size>0 && !ctlen){ belle_sip_message_add_header((belle_sip_message_t*)req,(belle_sip_header_t*)belle_sip_header_content_length_create(size)); } } belle_sip_list_t **belle_http_provider_get_channels(belle_http_provider_t *obj, const char *transport_name){ if (strcasecmp(transport_name,"tcp")==0) return &obj->tcp_channels; else if (strcasecmp(transport_name,"tls")==0) return &obj->tls_channels; else{ belle_sip_error("belle_http_provider_send_request(): unsupported transport %s",transport_name); return NULL; } } static void provider_remove_channel(belle_http_provider_t *obj, belle_sip_channel_t *chan){ belle_sip_list_t **channels=belle_http_provider_get_channels(obj,belle_sip_channel_get_transport_name(chan)); *channels=belle_sip_list_remove(*channels,chan); belle_sip_message("channel [%p] removed from http provider.", chan); belle_sip_object_unref(chan); } static void belle_http_end_background_task(void* data) { belle_http_request_t *req = BELLE_HTTP_REQUEST(data); belle_sip_warning("Ending unfinished HTTP transfer background task id=[%x]", req->background_task_id); if( req->background_task_id ){ belle_sip_end_background_task(req->background_task_id); req->background_task_id = 0; } } int belle_http_provider_send_request(belle_http_provider_t *obj, belle_http_request_t *req, belle_http_request_listener_t *listener){ belle_sip_channel_t *chan; belle_sip_list_t **channels; belle_sip_hop_t *hop=belle_sip_hop_new_from_generic_uri(req->orig_uri ? req->orig_uri : req->req_uri); if (hop->host == NULL){ belle_sip_error("belle_http_provider_send_request(): no host defined in request uri."); belle_sip_object_unref(hop); return -1; } channels = belle_http_provider_get_channels(obj,hop->transport); if (listener) belle_http_request_set_listener(req,listener); chan=belle_sip_channel_find_from_list(*channels,obj->ai_family, hop); if (chan) { // we cannot use the same channel for multiple requests yet since only the first // one will be processed. Instead of queuing/serializing requests on a single channel, // we currently create one channel per request if needed. if (belle_http_channel_is_busy(chan)) { belle_sip_message("%s: found an available channel but was busy, creating a new one", __FUNCTION__); chan = NULL; } } if (!chan){ if (strcasecmp(hop->transport,"tcp")==0){ if ((obj->transports & BELLE_SIP_HTTP_TRANSPORT_TCP)==0) { char *uri_as_string = belle_generic_uri_to_string(req->orig_uri ? req->orig_uri : req->req_uri); belle_sip_error("%s: cannot process request to [%s] as this provider is not configured to process http requests", __FUNCTION__, uri_as_string); belle_sip_free(uri_as_string); belle_sip_object_unref(hop); return -1; } chan=belle_sip_stream_channel_new_client(obj->stack,obj->bind_ip,0,hop->cname,hop->host,hop->port, FALSE); } else if (strcasecmp(hop->transport,"tls")==0){ if ((obj->transports & BELLE_SIP_HTTP_TRANSPORT_TLS)==0) { char *uri_as_string = belle_generic_uri_to_string(req->orig_uri ? req->orig_uri : req->req_uri); belle_sip_error("%s: cannot process request to [%s] as this provider is not configured to process https requests", __FUNCTION__, uri_as_string); belle_sip_free(uri_as_string); belle_sip_object_unref(hop); return -1; } chan=belle_sip_channel_new_tls(obj->stack,obj->crypto_config,obj->bind_ip,0,hop->cname,hop->host,hop->port, FALSE); } if (!chan){ belle_sip_error("%s: cannot create channel for [%s:%s:%i]", __FUNCTION__, hop->transport, hop->cname, hop->port); belle_sip_object_unref(hop); return -1; } belle_http_channel_context_new(chan,obj); *channels=belle_sip_list_prepend(*channels,chan); } belle_sip_object_unref(hop); split_request_url(req); fix_request(req); belle_http_request_set_channel(req,chan); if( req->background_task_id != 0){ req->background_task_id = belle_sip_begin_background_task("belle-sip http", belle_http_end_background_task, req); } belle_sip_channel_queue_message(chan,BELLE_SIP_MESSAGE(req)); return 0; } static void reenqueue_request(belle_http_request_t *req, belle_http_provider_t *prov){ belle_http_provider_send_request(prov,req,req->listener); } void belle_http_provider_cancel_request(belle_http_provider_t *obj, belle_http_request_t *req){ belle_sip_list_t *outgoing_messages; belle_http_request_cancel(req); if (req->channel){ // Keep the list of the outgoing messages of the channel... outgoing_messages = belle_sip_list_copy_with_data(req->channel->outgoing_messages,(void* (*)(void*))belle_sip_object_ref); if (outgoing_messages && outgoing_messages->data == req){ /*our request didn't go out; so drop it.*/ outgoing_messages = belle_sip_list_remove(outgoing_messages ,req); belle_sip_object_unref(req); } /*protect the channel from being destroyed before removing it (removing it will unref it)*/ belle_sip_object_ref(req->channel); provider_remove_channel(obj, req->channel); // ... close the channel... belle_sip_channel_force_close(req->channel); belle_sip_object_unref(req->channel); // ... and reenqueue the previously queued outgoing messages into a new channel belle_sip_list_for_each2(outgoing_messages,(void (*)(void*,void*))reenqueue_request,obj); belle_sip_list_free_with_data(outgoing_messages,belle_sip_object_unref); } } int belle_http_provider_set_tls_verify_policy(belle_http_provider_t *obj, belle_tls_verify_policy_t *verify_ctx){ SET_OBJECT_PROPERTY(obj,crypto_config,verify_ctx); return 0; } int belle_http_provider_set_tls_crypto_config(belle_http_provider_t *obj, belle_tls_crypto_config_t *crypto_config){ SET_OBJECT_PROPERTY(obj,crypto_config,crypto_config); return 0; } void belle_http_provider_set_recv_error(belle_http_provider_t *obj, int recv_error) { belle_sip_list_t *it; for(it=obj->tcp_channels;it!=NULL;it=it->next){ belle_sip_channel_t *chan = (belle_sip_channel_t*)it->data; chan->simulated_recv_return=recv_error; chan->base.notify_required=(recv_error<=0); } for(it=obj->tls_channels;it!=NULL;it=it->next){ belle_sip_channel_t *chan = (belle_sip_channel_t*)it->data; chan->simulated_recv_return=recv_error; chan->base.notify_required=(recv_error<=0); } } belle-sip-5.2.0+dfsg/src/ict.c000066400000000000000000000206621434613136500160370ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ /** * INVITE client transaction implementation. **/ #include #include "belle_sip_internal.h" static void on_ict_terminate(belle_sip_ict_t *obj){ belle_sip_transaction_t *base=(belle_sip_transaction_t*)obj; if (obj->timer_A){ belle_sip_transaction_stop_timer(base,obj->timer_A); belle_sip_object_unref(obj->timer_A); obj->timer_A=NULL; } if (obj->timer_B){ belle_sip_transaction_stop_timer(base,obj->timer_B); belle_sip_object_unref(obj->timer_B); obj->timer_B=NULL; } if (obj->timer_D){ belle_sip_transaction_stop_timer(base,obj->timer_D); belle_sip_object_unref(obj->timer_D); obj->timer_D=NULL; } if (obj->timer_M){ belle_sip_transaction_stop_timer(base,obj->timer_M); belle_sip_object_unref(obj->timer_M); obj->timer_M=NULL; } if (obj->ack){ belle_sip_object_unref(obj->ack); obj->ack=NULL; } } static void ict_destroy(belle_sip_ict_t *obj){ on_ict_terminate(obj); } static belle_sip_request_t *make_ack(belle_sip_ict_t *obj, belle_sip_response_t *resp){ belle_sip_transaction_t *base=(belle_sip_transaction_t*)obj; if (obj->ack==NULL){ obj->ack=belle_sip_request_new(); belle_sip_object_ref(obj->ack); belle_sip_request_set_method(obj->ack,"ACK"); belle_sip_request_set_uri(obj->ack,belle_sip_request_get_uri(base->request)); belle_sip_util_copy_headers((belle_sip_message_t*)base->request,(belle_sip_message_t*)obj->ack,BELLE_SIP_VIA,FALSE); belle_sip_util_copy_headers((belle_sip_message_t*)base->request,(belle_sip_message_t*)obj->ack,BELLE_SIP_CALL_ID,FALSE); belle_sip_util_copy_headers((belle_sip_message_t*)base->request,(belle_sip_message_t*)obj->ack,BELLE_SIP_FROM,FALSE); belle_sip_util_copy_headers((belle_sip_message_t*)resp,(belle_sip_message_t*)obj->ack,BELLE_SIP_TO,FALSE); belle_sip_util_copy_headers((belle_sip_message_t*)base->request,(belle_sip_message_t*)obj->ack,BELLE_SIP_CONTACT,TRUE); belle_sip_util_copy_headers((belle_sip_message_t*)base->request,(belle_sip_message_t*)obj->ack,BELLE_SIP_ROUTE,TRUE); belle_sip_util_copy_headers((belle_sip_message_t*)base->request,(belle_sip_message_t*)obj->ack,BELLE_SIP_MAX_FORWARDS,FALSE); belle_sip_message_add_header((belle_sip_message_t*)obj->ack, (belle_sip_header_t*)belle_sip_header_cseq_create( belle_sip_header_cseq_get_seq_number((belle_sip_header_cseq_t*)belle_sip_message_get_header((belle_sip_message_t*)base->request,BELLE_SIP_CSEQ)), "ACK")); } return obj->ack; } /* Timer D: Wait time for response retransmits */ static int ict_on_timer_D(belle_sip_ict_t *obj){ belle_sip_transaction_t *base=(belle_sip_transaction_t*)obj; if (base->state==BELLE_SIP_TRANSACTION_COMPLETED){ belle_sip_transaction_terminate(base); } return BELLE_SIP_STOP; } /* Timer M: Wait time for retransmission of 2xx to INVITE or additional 2xx from other branches of a forked INVITE */ static int ict_on_timer_M(belle_sip_ict_t *obj){ belle_sip_transaction_t *base=(belle_sip_transaction_t*)obj; if (base->state==BELLE_SIP_TRANSACTION_ACCEPTED){ belle_sip_transaction_terminate(base); } return BELLE_SIP_STOP; } static void ict_on_response(belle_sip_ict_t *obj, belle_sip_response_t *resp){ belle_sip_transaction_t *base=(belle_sip_transaction_t*)obj; int code=belle_sip_response_get_status_code(resp); const belle_sip_timer_config_t *cfg=belle_sip_transaction_get_timer_config(base); switch (base->state){ case BELLE_SIP_TRANSACTION_CALLING: belle_sip_transaction_set_state(base,BELLE_SIP_TRANSACTION_PROCEEDING); BCTBX_NO_BREAK; /*intentionally no break*/ case BELLE_SIP_TRANSACTION_PROCEEDING: if (code>=300){ belle_sip_transaction_set_state(base,BELLE_SIP_TRANSACTION_COMPLETED); belle_sip_channel_queue_message(base->channel,(belle_sip_message_t*)make_ack(obj,resp)); belle_sip_client_transaction_notify_response((belle_sip_client_transaction_t*)obj,resp); obj->timer_D=belle_sip_timeout_source_new((belle_sip_source_func_t)ict_on_timer_D,obj,cfg->T1*64); belle_sip_transaction_start_timer(base,obj->timer_D); }else if (code>=200){ obj->timer_M=belle_sip_timeout_source_new((belle_sip_source_func_t)ict_on_timer_M,obj,cfg->T1*64); belle_sip_transaction_start_timer(base,obj->timer_M); belle_sip_transaction_set_state(base,BELLE_SIP_TRANSACTION_ACCEPTED); belle_sip_client_transaction_notify_response((belle_sip_client_transaction_t*)obj,resp); }else if (code>=100){ belle_sip_client_transaction_notify_response((belle_sip_client_transaction_t*)obj,resp); } break; case BELLE_SIP_TRANSACTION_ACCEPTED: if (code>=200 && code<300){ belle_sip_client_transaction_notify_response((belle_sip_client_transaction_t*)obj,resp); } break; case BELLE_SIP_TRANSACTION_COMPLETED: if (code>=300 && obj->ack){ belle_sip_channel_queue_message(base->channel,(belle_sip_message_t*)obj->ack); } break; default: break; } } /* Timer A: INVITE request retransmit interval, for UDP only */ static int ict_on_timer_A(belle_sip_ict_t *obj){ belle_sip_transaction_t *base=(belle_sip_transaction_t*)obj; if (!base->channel) return BELLE_SIP_STOP; switch(base->state){ case BELLE_SIP_TRANSACTION_CALLING: { /*reset the timer to twice the previous value, and retransmit */ int64_t prev_timeout=belle_sip_source_get_timeout_int64(obj->timer_A); belle_sip_source_set_timeout_int64(obj->timer_A,2*prev_timeout); belle_sip_channel_queue_message(base->channel,(belle_sip_message_t*)base->request); } break; default: break; } return BELLE_SIP_CONTINUE; } /* Timer B: INVITE transaction timeout timer */ static int ict_on_timer_B(belle_sip_ict_t *obj){ belle_sip_transaction_t *base=(belle_sip_transaction_t*)obj; switch (base->state){ case BELLE_SIP_TRANSACTION_CALLING: belle_sip_transaction_notify_timeout(base); break; default: break; } return BELLE_SIP_STOP; } static void ict_stop_retransmissions(belle_sip_ict_t *obj){ belle_sip_transaction_t *base=(belle_sip_transaction_t*)obj; belle_sip_message("ICT retransmissions stopped"); if (obj->timer_A){ belle_sip_transaction_stop_timer(base,obj->timer_A); belle_sip_object_unref(obj->timer_A); obj->timer_A=NULL; } } static void ict_send_request(belle_sip_ict_t *obj){ belle_sip_transaction_t *base=(belle_sip_transaction_t*)obj; const belle_sip_timer_config_t *cfg=belle_sip_transaction_get_timer_config(base); belle_sip_transaction_set_state(base,BELLE_SIP_TRANSACTION_CALLING); if (!belle_sip_channel_is_reliable(base->channel)){ obj->timer_A=belle_sip_timeout_source_new((belle_sip_source_func_t)ict_on_timer_A,obj,cfg->T1); belle_sip_transaction_start_timer(base,obj->timer_A); } obj->timer_B=belle_sip_timeout_source_new((belle_sip_source_func_t)ict_on_timer_B,obj,cfg->T1*64); belle_sip_transaction_start_timer(base,obj->timer_B); belle_sip_channel_queue_message(base->channel,(belle_sip_message_t*)base->request); } BELLE_SIP_DECLARE_NO_IMPLEMENTED_INTERFACES(belle_sip_ict_t); BELLE_SIP_INSTANCIATE_CUSTOM_VPTR_BEGIN(belle_sip_ict_t) { { { BELLE_SIP_VPTR_INIT(belle_sip_ict_t,belle_sip_client_transaction_t,TRUE), (belle_sip_object_destroy_t)ict_destroy, NULL, NULL, (belle_sip_object_on_first_ref_t) NULL, (belle_sip_object_on_last_ref_t) NULL, BELLE_SIP_DEFAULT_BUFSIZE_HINT }, (void (*)(belle_sip_transaction_t*))on_ict_terminate }, (void (*)(belle_sip_client_transaction_t*))ict_send_request, (void (*)(belle_sip_client_transaction_t*,belle_sip_response_t*))ict_on_response, (void (*)(belle_sip_client_transaction_t*))ict_stop_retransmissions } BELLE_SIP_INSTANCIATE_CUSTOM_VPTR_END belle_sip_ict_t *belle_sip_ict_new(belle_sip_provider_t *prov, belle_sip_request_t *req){ belle_sip_ict_t *obj=belle_sip_object_new(belle_sip_ict_t); belle_sip_client_transaction_init((belle_sip_client_transaction_t*)obj,prov,req); return obj; } belle-sip-5.2.0+dfsg/src/ios_check_version.m000066400000000000000000000021261434613136500207610ustar00rootroot00000000000000/* belle-sip - SIP (RFC3261) library. Copyright (C) 2022 Belledonne Communications SARL This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ #ifdef __APPLE__ #include #endif #include "belle_sip_internal.h" #if TARGET_OS_IPHONE #import int belle_sip_get_ios_device_major_version() { NSArray *versionCompatibility = [[UIDevice currentDevice].systemVersion componentsSeparatedByString:@"."]; return [[versionCompatibility objectAtIndex:0] intValue]; } #endif belle-sip-5.2.0+dfsg/src/ist.c000066400000000000000000000152331434613136500160550ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ /** * INVITE server transaction implementation. **/ #include "belle_sip_internal.h" static void ist_on_terminate(belle_sip_ist_t *obj){ belle_sip_transaction_t *base=(belle_sip_transaction_t*)obj; /*timer pointers are set to NULL because they can be released later*/ if (obj->timer_G){ belle_sip_transaction_stop_timer(base,obj->timer_G); belle_sip_object_unref(obj->timer_G); obj->timer_G=NULL; } if (obj->timer_H){ belle_sip_transaction_stop_timer(base,obj->timer_H); belle_sip_object_unref(obj->timer_H); obj->timer_H=NULL; } if (obj->timer_I){ belle_sip_transaction_stop_timer(base,obj->timer_I); belle_sip_object_unref(obj->timer_I); obj->timer_I=NULL; } if (obj->timer_L){ belle_sip_transaction_stop_timer(base,obj->timer_L); belle_sip_object_unref(obj->timer_L); obj->timer_L=NULL; } } static void ist_destroy(belle_sip_ist_t *obj){ ist_on_terminate(obj); } /* Timer G: INVITE response retransmit interval */ static int ist_on_timer_G(belle_sip_ist_t *obj){ belle_sip_transaction_t *base=(belle_sip_transaction_t*)obj; if (base->state==BELLE_SIP_TRANSACTION_COMPLETED){ const belle_sip_timer_config_t *cfg=belle_sip_transaction_get_timer_config(base); int64_t interval=belle_sip_source_get_timeout_int64(obj->timer_G); belle_sip_channel_queue_message(base->channel,(belle_sip_message_t*)base->last_response); belle_sip_source_set_timeout_int64(obj->timer_G,MIN(2*interval,cfg->T2)); return BELLE_SIP_CONTINUE; } return BELLE_SIP_STOP; } /* Timer H: Wait time for ACK receipt */ static int ist_on_timer_H(belle_sip_ist_t *obj){ belle_sip_transaction_t *base=(belle_sip_transaction_t*)obj; if (base->state==BELLE_SIP_TRANSACTION_COMPLETED){ belle_sip_transaction_terminate(base); /*FIXME: no ACK was received, should report the failure */ } return BELLE_SIP_STOP; } /* Timer I: Wait time for ACK retransmits */ static int ist_on_timer_I(belle_sip_ist_t *obj){ belle_sip_transaction_t *base=(belle_sip_transaction_t*)obj; belle_sip_transaction_terminate(base); return BELLE_SIP_STOP; } /* Timer L: Wait time for accepted INVITE request retransmits */ static int ist_on_timer_L(belle_sip_ist_t *obj){ belle_sip_transaction_t *base=(belle_sip_transaction_t*)obj; belle_sip_transaction_terminate(base); return BELLE_SIP_STOP; } int belle_sip_ist_process_ack(belle_sip_ist_t *obj, belle_sip_message_t *ack){ belle_sip_transaction_t *base=(belle_sip_transaction_t*)obj; int ret=-1; switch(base->state){ case BELLE_SIP_TRANSACTION_COMPLETED: /*clear timer G*/ if (obj->timer_G){ belle_sip_transaction_stop_timer(base,obj->timer_G); belle_sip_object_unref(obj->timer_G); obj->timer_G=NULL; } belle_sip_transaction_set_state(base,BELLE_SIP_TRANSACTION_CONFIRMED); if (!belle_sip_channel_is_reliable(base->channel)){ const belle_sip_timer_config_t *cfg=belle_sip_transaction_get_timer_config(base); obj->timer_I=belle_sip_timeout_source_new((belle_sip_source_func_t)ist_on_timer_I,obj,cfg->T4); belle_sip_transaction_start_timer(base,obj->timer_I); }else ist_on_timer_I(obj); break; case BELLE_SIP_TRANSACTION_ACCEPTED: ret=0; /*let the ACK be reported to TU */ break; default: break; } return ret; } static int ist_send_new_response(belle_sip_ist_t *obj, belle_sip_response_t *resp){ belle_sip_transaction_t *base=(belle_sip_transaction_t*)obj; int code=belle_sip_response_get_status_code(resp); int ret=-1; switch(base->state){ case BELLE_SIP_TRANSACTION_PROCEEDING: { const belle_sip_timer_config_t *cfg=belle_sip_transaction_get_timer_config(base); ret=0; belle_sip_channel_queue_message(base->channel,(belle_sip_message_t*)resp); if (code>=200 && code<300){ belle_sip_transaction_set_state(base,BELLE_SIP_TRANSACTION_ACCEPTED); obj->timer_L=belle_sip_timeout_source_new((belle_sip_source_func_t)ist_on_timer_L,obj,64*cfg->T1); belle_sip_transaction_start_timer(base,obj->timer_L); }else if (code>=300){ belle_sip_transaction_set_state(base,BELLE_SIP_TRANSACTION_COMPLETED); if (!belle_sip_channel_is_reliable(base->channel)){ obj->timer_G=belle_sip_timeout_source_new((belle_sip_source_func_t)ist_on_timer_G,obj,cfg->T1); belle_sip_transaction_start_timer(base,obj->timer_G); } obj->timer_H=belle_sip_timeout_source_new((belle_sip_source_func_t)ist_on_timer_H,obj,64*cfg->T1); belle_sip_transaction_start_timer(base,obj->timer_H); } } break; case BELLE_SIP_TRANSACTION_ACCEPTED: if (code>=200 && code<300){ ret=0; /*let the response go to transport layer*/ } default: break; } return ret; } static void ist_on_request_retransmission(belle_sip_nist_t *obj){ belle_sip_transaction_t *base=(belle_sip_transaction_t*)obj; switch(base->state){ case BELLE_SIP_TRANSACTION_PROCEEDING: case BELLE_SIP_TRANSACTION_COMPLETED: belle_sip_channel_queue_message(base->channel,(belle_sip_message_t*)base->last_response); break; default: break; } } BELLE_SIP_DECLARE_NO_IMPLEMENTED_INTERFACES(belle_sip_ist_t); BELLE_SIP_INSTANCIATE_CUSTOM_VPTR_BEGIN(belle_sip_ist_t) { { { BELLE_SIP_VPTR_INIT(belle_sip_ist_t,belle_sip_server_transaction_t,TRUE), (belle_sip_object_destroy_t)ist_destroy, NULL, NULL, (belle_sip_object_on_first_ref_t) NULL, (belle_sip_object_on_last_ref_t) NULL, BELLE_SIP_DEFAULT_BUFSIZE_HINT }, (void (*)(belle_sip_transaction_t *))ist_on_terminate }, (int (*)(belle_sip_server_transaction_t*, belle_sip_response_t *))ist_send_new_response, (void (*)(belle_sip_server_transaction_t*))ist_on_request_retransmission, } BELLE_SIP_INSTANCIATE_CUSTOM_VPTR_END belle_sip_ist_t *belle_sip_ist_new(belle_sip_provider_t *prov, belle_sip_request_t *req){ belle_sip_ist_t *obj=belle_sip_object_new(belle_sip_ist_t); belle_sip_transaction_t *base=(belle_sip_transaction_t*)obj; belle_sip_server_transaction_init((belle_sip_server_transaction_t*)obj,prov,req); belle_sip_transaction_set_state(base,BELLE_SIP_TRANSACTION_PROCEEDING); return obj; } belle-sip-5.2.0+dfsg/src/listeningpoint.c000066400000000000000000000232741434613136500203300ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "belle_sip_internal.h" void belle_sip_listening_point_init(belle_sip_listening_point_t *lp, belle_sip_stack_t *s, const char *address, int port){ char *tmp; belle_sip_init_sockets(); lp->stack=s; lp->listening_uri=belle_sip_uri_create(NULL,address); belle_sip_object_ref(lp->listening_uri); belle_sip_uri_set_port(lp->listening_uri,port); belle_sip_uri_set_transport_param(lp->listening_uri,BELLE_SIP_OBJECT_VPTR(lp,belle_sip_listening_point_t)->transport); tmp=belle_sip_object_to_string((belle_sip_object_t*)BELLE_SIP_LISTENING_POINT(lp)->listening_uri); if (strchr(address,':')) { lp->ai_family=AF_INET6; } else { lp->ai_family=AF_INET; } belle_sip_message("Creating listening point [%p] on [%s]",lp, tmp); belle_sip_free(tmp); } static void belle_sip_listening_point_uninit(belle_sip_listening_point_t *lp){ char *tmp=belle_sip_object_to_string((belle_sip_object_t*)BELLE_SIP_LISTENING_POINT(lp)->listening_uri); belle_sip_listening_point_clean_channels(lp); belle_sip_message("Listening point [%p] on [%s] destroyed",lp, tmp); belle_sip_object_unref(lp->listening_uri); belle_sip_free(tmp); lp->channel_listener=NULL; /*does not unref provider*/ belle_sip_uninit_sockets(); belle_sip_listening_point_set_keep_alive(lp,-1); } void belle_sip_listening_point_add_channel(belle_sip_listening_point_t *lp, belle_sip_channel_t *chan){ chan->lp=lp; belle_sip_channel_add_listener(chan,lp->channel_listener); /*add channel listener*/ /*channel is already owned, no ref needed - REVISIT: channel should be initally unowned probably.*/ /* The channel with names must be treated with higher priority by the get_channel() method so queued on front. * This is to prevent the UDP listening point to dispatch incoming messages to channels that were created by inbound connection * where name cannot be determined. When this arrives, there can be 2 channels for the same destination IP and strange problems can occur * where requests are sent through name qualified channel and response received through name unqualified channel. */ if (chan->has_name) lp->channels=belle_sip_list_prepend(lp->channels,chan); else lp->channels=belle_sip_list_append(lp->channels,chan); } belle_sip_channel_t *belle_sip_listening_point_create_channel(belle_sip_listening_point_t *obj, const belle_sip_hop_t *hop){ belle_sip_channel_t *chan=BELLE_SIP_OBJECT_VPTR(obj,belle_sip_listening_point_t)->create_channel(obj,hop); if (chan){ belle_sip_listening_point_add_channel(obj,chan); } return chan; } void belle_sip_listening_point_remove_channel(belle_sip_listening_point_t *lp, belle_sip_channel_t *chan){ belle_sip_channel_remove_listener(chan,lp->channel_listener); lp->channels=belle_sip_list_remove(lp->channels,chan); belle_sip_object_unref(chan); } void belle_sip_listening_point_clean_channels(belle_sip_listening_point_t *lp){ int existing_channels = belle_sip_listening_point_get_channel_count(lp); belle_sip_list_t* iterator; if (existing_channels > 0) { belle_sip_message("Listening point destroying [%i] channels",existing_channels); } for (iterator=lp->channels;iterator!=NULL;iterator=iterator->next) { belle_sip_channel_t *chan=(belle_sip_channel_t*)iterator->data; belle_sip_channel_force_close(chan); } lp->channels=belle_sip_list_free_with_data(lp->channels,(void (*)(void*))belle_sip_object_unref); } void belle_sip_listening_point_clean_unreliable_channels(belle_sip_listening_point_t *lp){ belle_sip_list_t* iterator; uint64_t current_time = belle_sip_time_ms(); int count = 0; if (lp->stack->unreliable_transport_timeout <= 0) return; for (iterator = lp->channels; iterator!=NULL ; ) { belle_sip_channel_t *chan=(belle_sip_channel_t*)iterator->data; belle_sip_list_t * next_iterator = iterator->next; if (chan->state == BELLE_SIP_CHANNEL_READY) { if (current_time - chan->last_recv_time > (uint64_t)(lp->stack->unreliable_transport_timeout * 1000)){ belle_sip_channel_force_close(chan); belle_sip_object_unref(chan); count++; lp->channels = bctbx_list_erase_link(lp->channels, iterator); } } iterator = next_iterator; } if (count > 0){ belle_sip_message("belle_sip_listening_point_clean_unreliable_channels() has closed [%i] channels.", count); } } int belle_sip_listening_point_get_channel_count(const belle_sip_listening_point_t *lp){ return (int)belle_sip_list_size(lp->channels); } BELLE_SIP_DECLARE_NO_IMPLEMENTED_INTERFACES(belle_sip_listening_point_t); BELLE_SIP_INSTANCIATE_CUSTOM_VPTR_BEGIN(belle_sip_listening_point_t) { BELLE_SIP_VPTR_INIT(belle_sip_listening_point_t, belle_sip_object_t,FALSE), (belle_sip_object_destroy_t)belle_sip_listening_point_uninit, NULL, NULL, (belle_sip_object_on_first_ref_t) NULL, (belle_sip_object_on_last_ref_t) NULL, BELLE_SIP_DEFAULT_BUFSIZE_HINT }, NULL, NULL BELLE_SIP_INSTANCIATE_CUSTOM_VPTR_END const char *belle_sip_listening_point_get_ip_address(const belle_sip_listening_point_t *lp){ return belle_sip_uri_get_host(lp->listening_uri); } int belle_sip_listening_point_get_port(const belle_sip_listening_point_t *lp){ return belle_sip_uri_get_listening_port(lp->listening_uri); } const char *belle_sip_listening_point_get_transport(const belle_sip_listening_point_t *lp){ return belle_sip_uri_get_transport_param(lp->listening_uri); } const belle_sip_uri_t* belle_sip_listening_point_get_uri(const belle_sip_listening_point_t *lp) { return lp->listening_uri; } int belle_sip_listening_point_get_well_known_port(const char *transport){ int well_known_port = belle_sip_stack_get_well_known_port(); int tls_well_known_port = belle_sip_stack_get_well_known_port_tls(); if (strcasecmp(transport,"UDP")==0 || strcasecmp(transport,"TCP")==0 ){ return well_known_port; } else if (strcasecmp(transport,"DTLS")==0 || strcasecmp(transport,"TLS")==0 ){ return tls_well_known_port; } else { belle_sip_error("belle_sip_listening_point_get_well_known_port() : Not valid transport value : %s", transport); return -1; } } belle_sip_channel_t *_belle_sip_listening_point_get_channel(belle_sip_listening_point_t *lp, const belle_sip_hop_t *hop, const struct addrinfo *addr){ return belle_sip_channel_find_from_list_with_addrinfo(lp->channels,hop,addr); } belle_sip_channel_t *belle_sip_listening_point_get_channel(belle_sip_listening_point_t *lp,const belle_sip_hop_t *hop){ return belle_sip_channel_find_from_list(lp->channels,lp->ai_family,hop); } static int send_keep_alive(belle_sip_channel_t* obj) { /*keep alive*/ const char* crlfcrlf = "\r\n\r\n"; size_t size=strlen(crlfcrlf); int err=belle_sip_channel_send(obj,crlfcrlf,size); if (err<=0 && !belle_sip_error_code_is_would_block(-err) && err!=-EINTR){ belle_sip_error("channel [%p]: could not send [%u] bytes of keep alive from [%s://%s:%i] to [%s:%i]" ,obj ,(unsigned int)size ,belle_sip_channel_get_transport_name(obj) ,obj->local_ip ,obj->local_port ,obj->peer_name ,obj->peer_port); return -1; }else{ belle_sip_message("channel [%p]: keep alive sent to [%s://%s:%i]" ,obj ,belle_sip_channel_get_transport_name(obj) ,obj->peer_name ,obj->peer_port); return 0; } } void belle_sip_listening_point_send_keep_alive(belle_sip_listening_point_t *lp) { belle_sip_list_t *iterator; belle_sip_channel_t *channel; belle_sip_list_t *to_be_closed = NULL; for (iterator = lp->channels; iterator != NULL; iterator = iterator->next) { channel = (belle_sip_channel_t*)iterator->data; if (channel->state == BELLE_SIP_CHANNEL_READY && channel->out_state == OUTPUT_STREAM_IDLE && send_keep_alive(channel) == -1) { /*only send keep alive if ready*/ to_be_closed = belle_sip_list_append(to_be_closed, channel); } } for (iterator = to_be_closed; iterator != NULL; iterator = iterator->next) { channel = (belle_sip_channel_t*)iterator->data; channel_set_state(channel, BELLE_SIP_CHANNEL_ERROR); belle_sip_channel_close(channel); } belle_sip_list_free(to_be_closed); } static int keep_alive_timer_func(void *user_data, unsigned int events) { belle_sip_listening_point_t* lp=(belle_sip_listening_point_t*)user_data; belle_sip_listening_point_send_keep_alive(lp); return BELLE_SIP_CONTINUE_WITHOUT_CATCHUP; } void belle_sip_listening_point_set_keep_alive(belle_sip_listening_point_t *lp, int ms) { if (ms <=0) { if (lp->keep_alive_timer) { belle_sip_main_loop_remove_source(lp->stack->ml,lp->keep_alive_timer); belle_sip_object_unref(lp->keep_alive_timer); lp->keep_alive_timer=NULL; } return; } if (!lp->keep_alive_timer) { lp->keep_alive_timer = belle_sip_main_loop_create_timeout(lp->stack->ml , keep_alive_timer_func , lp , ms ,"keep alive") ; } else { belle_sip_source_set_timeout_int64(lp->keep_alive_timer,ms); } return; } int belle_sip_listening_point_get_keep_alive(const belle_sip_listening_point_t *lp) { return lp->keep_alive_timer?(int)belle_sip_source_get_timeout_int64(lp->keep_alive_timer):-1; } void belle_sip_listening_point_set_channel_listener(belle_sip_listening_point_t *lp,belle_sip_channel_listener_t* channel_listener) { lp->channel_listener=channel_listener; } belle-sip-5.2.0+dfsg/src/listeningpoint_internal.h000066400000000000000000000127171434613136500222310ustar00rootroot00000000000000/* * Copyright (c) 2012-2021 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef LISTENINGPOINT_INTERNAL_H_ #define LISTENINGPOINT_INTERNAL_H_ BELLE_SIP_DECLARE_CUSTOM_VPTR_BEGIN(belle_sip_listening_point_t,belle_sip_object_t) const char *transport; belle_sip_channel_t * (*create_channel)(belle_sip_listening_point_t *, const belle_sip_hop_t *hop); BELLE_SIP_DECLARE_CUSTOM_VPTR_END #define BELLE_SIP_LISTENING_POINT(obj) BELLE_SIP_CAST(obj,belle_sip_listening_point_t) /* Listening points: base, udp */ struct belle_sip_listening_point{ belle_sip_object_t base; belle_sip_stack_t *stack; belle_sip_list_t *channels; belle_sip_uri_t* listening_uri; belle_sip_source_t* keep_alive_timer; belle_sip_channel_listener_t* channel_listener; /*initial channel listener used for channel creation, specially for socket server*/ int ai_family; /*AF_INET or AF_INET6*/ }; BELLE_SIP_BEGIN_DECLS void belle_sip_listening_point_init(belle_sip_listening_point_t *lp, belle_sip_stack_t *s, const char *address, int port); belle_sip_channel_t *_belle_sip_listening_point_get_channel(belle_sip_listening_point_t *lp,const belle_sip_hop_t *hop, const struct addrinfo *addr); belle_sip_channel_t *belle_sip_listening_point_create_channel(belle_sip_listening_point_t *ip, const belle_sip_hop_t *hop); void belle_sip_listening_point_remove_channel(belle_sip_listening_point_t *lp, belle_sip_channel_t *chan); int belle_sip_listening_point_get_well_known_port(const char *transport); belle_sip_channel_t *belle_sip_listening_point_get_channel(belle_sip_listening_point_t *lp, const belle_sip_hop_t *hop); void belle_sip_listening_point_add_channel(belle_sip_listening_point_t *lp, belle_sip_channel_t *chan); void belle_sip_listening_point_set_channel_listener(belle_sip_listening_point_t *lp,belle_sip_channel_listener_t* channel_listener); BELLE_SIP_END_DECLS /**udp*/ typedef struct belle_sip_udp_listening_point belle_sip_udp_listening_point_t; belle_sip_channel_t * belle_sip_channel_new_udp(belle_sip_stack_t *stack, int sock, const char *bindip, int localport, const char *peername, int peerport, int no_srv); belle_sip_channel_t * belle_sip_channel_new_udp_with_addr(belle_sip_stack_t *stack, int sock, const char *bindip, int localport, const struct addrinfo *ai); belle_sip_listening_point_t * belle_sip_udp_listening_point_new(belle_sip_stack_t *s, const char *ipaddress, int port); belle_sip_socket_t udp_listening_point_create_udp_socket(const char *addr, int *port, int *family); BELLE_SIP_DECLARE_CUSTOM_VPTR_BEGIN(belle_sip_udp_listening_point_t,belle_sip_listening_point_t) BELLE_SIP_DECLARE_CUSTOM_VPTR_END /*stream*/ typedef struct belle_sip_stream_listening_point belle_sip_stream_listening_point_t; struct belle_sip_stream_listening_point{ belle_sip_listening_point_t base; belle_sip_socket_t server_sock; belle_sip_source_t *source; }; BELLE_SIP_DECLARE_CUSTOM_VPTR_BEGIN(belle_sip_stream_listening_point_t,belle_sip_listening_point_t) BELLE_SIP_DECLARE_CUSTOM_VPTR_END void belle_sip_stream_listening_point_setup_server_socket(belle_sip_stream_listening_point_t *obj, belle_sip_source_func_t on_new_connection_cb ); void belle_sip_stream_listening_point_destroy_server_socket(belle_sip_stream_listening_point_t *lp); void belle_sip_stream_listening_point_init(belle_sip_stream_listening_point_t *obj, belle_sip_stack_t *s, const char *ipaddress, int port, belle_sip_source_func_t on_new_connection_cb ); belle_sip_listening_point_t * belle_sip_stream_listening_point_new(belle_sip_stack_t *s, const char *ipaddress, int port); /*tls*/ struct belle_sip_tls_listening_point{ belle_sip_stream_listening_point_t base; belle_tls_crypto_config_t *crypto_config; }; int belle_sip_tls_listening_point_available(void); BELLE_SIP_DECLARE_CUSTOM_VPTR_BEGIN(belle_sip_tls_listening_point_t,belle_sip_listening_point_t) BELLE_SIP_DECLARE_CUSTOM_VPTR_END #define BELLE_SIP_TLS_LISTENING_POINT(obj) BELLE_SIP_CAST(obj,belle_sip_tls_listening_point_t) belle_sip_listening_point_t * belle_sip_tls_listening_point_new(belle_sip_stack_t *s, const char *ipaddress, int port); belle_sip_channel_t * belle_sip_channel_new_tls(belle_sip_stack_t *s, belle_tls_verify_policy_t* verify_ctx, const char *bindip, int localport,const char *cname, const char *name, int port, int no_srv); /*tunnel*/ #ifdef HAVE_TUNNEL typedef struct belle_sip_tunnel_listening_point belle_sip_tunnel_listening_point_t; BELLE_SIP_DECLARE_CUSTOM_VPTR_BEGIN(belle_sip_tunnel_listening_point_t,belle_sip_listening_point_t) BELLE_SIP_DECLARE_CUSTOM_VPTR_END #define BELLE_SIP_TUNNEL_LISTENING_POINT(obj) BELLE_SIP_CAST(obj,belle_sip_tunnel_listening_point_t) belle_sip_channel_t * belle_sip_channel_new_tunnel(belle_sip_stack_t *s, void *tunnelclient, const char *bindip, int localport, const char *name, int port, int no_srv); #endif #include "transports/stream_channel.h" #endif /* LISTENINGPOINT_INTERNAL_H_ */ belle-sip-5.2.0+dfsg/src/md5.c000066400000000000000000000274741434613136500157550ustar00rootroot00000000000000/* Copyright (C) 1999, 2000, 2002 Aladdin Enterprises. All rights reserved. This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. L. Peter Deutsch ghost@aladdin.com */ /* $Id: md5.c,v 1.6 2002/04/13 19:20:28 lpd Exp $ */ /* Independent implementation of MD5 (RFC 1321). This code implements the MD5 Algorithm defined in RFC 1321, whose text is available at http://www.ietf.org/rfc/rfc1321.txt The code is derived from the text of the RFC, including the test suite (section A.5) but excluding the rest of Appendix A. It does not include any code or documentation that is identified in the RFC as being copyrighted. The original and principal author of md5.c is L. Peter Deutsch . Other authors are noted in the change history that follows (in reverse chronological order): 2002-04-13 lpd Clarified derivation from RFC 1321; now handles byte order either statically or dynamically; added missing #include in library. 2002-03-11 lpd Corrected argument list for main(), and added int return type, in test program and T value program. 2002-02-21 lpd Added missing #include in test program. 2000-07-03 lpd Patched to eliminate warnings about "constant is unsigned in ANSI C, signed in traditional"; made test program self-checking. 1999-11-04 lpd Edited comments slightly for automatic TOC extraction. 1999-10-18 lpd Fixed typo in header comment (ansi2knr rather than md5). 1999-05-03 lpd Original version. */ #include "md5.h" #include #include #undef BYTE_ORDER /* 1 = big-endian, -1 = little-endian, 0 = unknown */ #ifdef ARCH_IS_BIG_ENDIAN # define BYTE_ORDER (ARCH_IS_BIG_ENDIAN ? 1 : -1) #else # define BYTE_ORDER 0 #endif #define T_MASK ((md5_word_t)~0) #define T1 /* 0xd76aa478 */ (T_MASK ^ 0x28955b87) #define T2 /* 0xe8c7b756 */ (T_MASK ^ 0x173848a9) #define T3 0x242070db #define T4 /* 0xc1bdceee */ (T_MASK ^ 0x3e423111) #define T5 /* 0xf57c0faf */ (T_MASK ^ 0x0a83f050) #define T6 0x4787c62a #define T7 /* 0xa8304613 */ (T_MASK ^ 0x57cfb9ec) #define T8 /* 0xfd469501 */ (T_MASK ^ 0x02b96afe) #define T9 0x698098d8 #define T10 /* 0x8b44f7af */ (T_MASK ^ 0x74bb0850) #define T11 /* 0xffff5bb1 */ (T_MASK ^ 0x0000a44e) #define T12 /* 0x895cd7be */ (T_MASK ^ 0x76a32841) #define T13 0x6b901122 #define T14 /* 0xfd987193 */ (T_MASK ^ 0x02678e6c) #define T15 /* 0xa679438e */ (T_MASK ^ 0x5986bc71) #define T16 0x49b40821 #define T17 /* 0xf61e2562 */ (T_MASK ^ 0x09e1da9d) #define T18 /* 0xc040b340 */ (T_MASK ^ 0x3fbf4cbf) #define T19 0x265e5a51 #define T20 /* 0xe9b6c7aa */ (T_MASK ^ 0x16493855) #define T21 /* 0xd62f105d */ (T_MASK ^ 0x29d0efa2) #define T22 0x02441453 #define T23 /* 0xd8a1e681 */ (T_MASK ^ 0x275e197e) #define T24 /* 0xe7d3fbc8 */ (T_MASK ^ 0x182c0437) #define T25 0x21e1cde6 #define T26 /* 0xc33707d6 */ (T_MASK ^ 0x3cc8f829) #define T27 /* 0xf4d50d87 */ (T_MASK ^ 0x0b2af278) #define T28 0x455a14ed #define T29 /* 0xa9e3e905 */ (T_MASK ^ 0x561c16fa) #define T30 /* 0xfcefa3f8 */ (T_MASK ^ 0x03105c07) #define T31 0x676f02d9 #define T32 /* 0x8d2a4c8a */ (T_MASK ^ 0x72d5b375) #define T33 /* 0xfffa3942 */ (T_MASK ^ 0x0005c6bd) #define T34 /* 0x8771f681 */ (T_MASK ^ 0x788e097e) #define T35 0x6d9d6122 #define T36 /* 0xfde5380c */ (T_MASK ^ 0x021ac7f3) #define T37 /* 0xa4beea44 */ (T_MASK ^ 0x5b4115bb) #define T38 0x4bdecfa9 #define T39 /* 0xf6bb4b60 */ (T_MASK ^ 0x0944b49f) #define T40 /* 0xbebfbc70 */ (T_MASK ^ 0x4140438f) #define T41 0x289b7ec6 #define T42 /* 0xeaa127fa */ (T_MASK ^ 0x155ed805) #define T43 /* 0xd4ef3085 */ (T_MASK ^ 0x2b10cf7a) #define T44 0x04881d05 #define T45 /* 0xd9d4d039 */ (T_MASK ^ 0x262b2fc6) #define T46 /* 0xe6db99e5 */ (T_MASK ^ 0x1924661a) #define T47 0x1fa27cf8 #define T48 /* 0xc4ac5665 */ (T_MASK ^ 0x3b53a99a) #define T49 /* 0xf4292244 */ (T_MASK ^ 0x0bd6ddbb) #define T50 0x432aff97 #define T51 /* 0xab9423a7 */ (T_MASK ^ 0x546bdc58) #define T52 /* 0xfc93a039 */ (T_MASK ^ 0x036c5fc6) #define T53 0x655b59c3 #define T54 /* 0x8f0ccc92 */ (T_MASK ^ 0x70f3336d) #define T55 /* 0xffeff47d */ (T_MASK ^ 0x00100b82) #define T56 /* 0x85845dd1 */ (T_MASK ^ 0x7a7ba22e) #define T57 0x6fa87e4f #define T58 /* 0xfe2ce6e0 */ (T_MASK ^ 0x01d3191f) #define T59 /* 0xa3014314 */ (T_MASK ^ 0x5cfebceb) #define T60 0x4e0811a1 #define T61 /* 0xf7537e82 */ (T_MASK ^ 0x08ac817d) #define T62 /* 0xbd3af235 */ (T_MASK ^ 0x42c50dca) #define T63 0x2ad7d2bb #define T64 /* 0xeb86d391 */ (T_MASK ^ 0x14792c6e) static void md5_process(md5_state_t *pms, const md5_byte_t *data /*[64]*/) { md5_word_t a = pms->abcd[0], b = pms->abcd[1], c = pms->abcd[2], d = pms->abcd[3]; md5_word_t t; #if BYTE_ORDER > 0 /* Define storage only for big-endian CPUs. */ md5_word_t X[16]; #else /* Define storage for little-endian or both types of CPUs. */ md5_word_t xbuf[16]; const md5_word_t *X; #endif { #if BYTE_ORDER == 0 /* * Determine dynamically whether this is a big-endian or * little-endian machine, since we can use a more efficient * algorithm on the latter. */ static const int w = 1; if (*((const md5_byte_t *)&w)) /* dynamic little-endian */ #endif #if BYTE_ORDER <= 0 /* little-endian */ { /* * On little-endian machines, we can process properly aligned * data without copying it. */ if (!(((uintptr_t)data) & 3)) { /* data are properly aligned */ X = (const md5_word_t *)data; } else { /* not aligned */ memcpy(xbuf, data, 64); X = xbuf; } } #endif #if BYTE_ORDER == 0 else /* dynamic big-endian */ #endif #if BYTE_ORDER >= 0 /* big-endian */ { /* * On big-endian machines, we must arrange the bytes in the * right order. */ const md5_byte_t *xp = data; int i; # if BYTE_ORDER == 0 X = xbuf; /* (dynamic only) */ # else # define xbuf X /* (static only) */ # endif for (i = 0; i < 16; ++i, xp += 4) xbuf[i] = xp[0] + (xp[1] << 8) + (xp[2] << 16) + (xp[3] << 24); } #endif } #define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32 - (n)))) /* Round 1. */ /* Let [abcd k s i] denote the operation a = b + ((a + F(b,c,d) + X[k] + T[i]) <<< s). */ #define F(x, y, z) (((x) & (y)) | (~(x) & (z))) #define SET(a, b, c, d, k, s, Ti)\ t = a + F(b,c,d) + X[k] + Ti;\ a = ROTATE_LEFT(t, s) + b /* Do the following 16 operations. */ SET(a, b, c, d, 0, 7, T1); SET(d, a, b, c, 1, 12, T2); SET(c, d, a, b, 2, 17, T3); SET(b, c, d, a, 3, 22, T4); SET(a, b, c, d, 4, 7, T5); SET(d, a, b, c, 5, 12, T6); SET(c, d, a, b, 6, 17, T7); SET(b, c, d, a, 7, 22, T8); SET(a, b, c, d, 8, 7, T9); SET(d, a, b, c, 9, 12, T10); SET(c, d, a, b, 10, 17, T11); SET(b, c, d, a, 11, 22, T12); SET(a, b, c, d, 12, 7, T13); SET(d, a, b, c, 13, 12, T14); SET(c, d, a, b, 14, 17, T15); SET(b, c, d, a, 15, 22, T16); #undef SET /* Round 2. */ /* Let [abcd k s i] denote the operation a = b + ((a + G(b,c,d) + X[k] + T[i]) <<< s). */ #define G(x, y, z) (((x) & (z)) | ((y) & ~(z))) #define SET(a, b, c, d, k, s, Ti)\ t = a + G(b,c,d) + X[k] + Ti;\ a = ROTATE_LEFT(t, s) + b /* Do the following 16 operations. */ SET(a, b, c, d, 1, 5, T17); SET(d, a, b, c, 6, 9, T18); SET(c, d, a, b, 11, 14, T19); SET(b, c, d, a, 0, 20, T20); SET(a, b, c, d, 5, 5, T21); SET(d, a, b, c, 10, 9, T22); SET(c, d, a, b, 15, 14, T23); SET(b, c, d, a, 4, 20, T24); SET(a, b, c, d, 9, 5, T25); SET(d, a, b, c, 14, 9, T26); SET(c, d, a, b, 3, 14, T27); SET(b, c, d, a, 8, 20, T28); SET(a, b, c, d, 13, 5, T29); SET(d, a, b, c, 2, 9, T30); SET(c, d, a, b, 7, 14, T31); SET(b, c, d, a, 12, 20, T32); #undef SET /* Round 3. */ /* Let [abcd k s t] denote the operation a = b + ((a + H(b,c,d) + X[k] + T[i]) <<< s). */ #define H(x, y, z) ((x) ^ (y) ^ (z)) #define SET(a, b, c, d, k, s, Ti)\ t = a + H(b,c,d) + X[k] + Ti;\ a = ROTATE_LEFT(t, s) + b /* Do the following 16 operations. */ SET(a, b, c, d, 5, 4, T33); SET(d, a, b, c, 8, 11, T34); SET(c, d, a, b, 11, 16, T35); SET(b, c, d, a, 14, 23, T36); SET(a, b, c, d, 1, 4, T37); SET(d, a, b, c, 4, 11, T38); SET(c, d, a, b, 7, 16, T39); SET(b, c, d, a, 10, 23, T40); SET(a, b, c, d, 13, 4, T41); SET(d, a, b, c, 0, 11, T42); SET(c, d, a, b, 3, 16, T43); SET(b, c, d, a, 6, 23, T44); SET(a, b, c, d, 9, 4, T45); SET(d, a, b, c, 12, 11, T46); SET(c, d, a, b, 15, 16, T47); SET(b, c, d, a, 2, 23, T48); #undef SET /* Round 4. */ /* Let [abcd k s t] denote the operation a = b + ((a + I(b,c,d) + X[k] + T[i]) <<< s). */ #define I(x, y, z) ((y) ^ ((x) | ~(z))) #define SET(a, b, c, d, k, s, Ti)\ t = a + I(b,c,d) + X[k] + Ti;\ a = ROTATE_LEFT(t, s) + b /* Do the following 16 operations. */ SET(a, b, c, d, 0, 6, T49); SET(d, a, b, c, 7, 10, T50); SET(c, d, a, b, 14, 15, T51); SET(b, c, d, a, 5, 21, T52); SET(a, b, c, d, 12, 6, T53); SET(d, a, b, c, 3, 10, T54); SET(c, d, a, b, 10, 15, T55); SET(b, c, d, a, 1, 21, T56); SET(a, b, c, d, 8, 6, T57); SET(d, a, b, c, 15, 10, T58); SET(c, d, a, b, 6, 15, T59); SET(b, c, d, a, 13, 21, T60); SET(a, b, c, d, 4, 6, T61); SET(d, a, b, c, 11, 10, T62); SET(c, d, a, b, 2, 15, T63); SET(b, c, d, a, 9, 21, T64); #undef SET /* Then perform the following additions. (That is increment each of the four registers by the value it had before this block was started.) */ pms->abcd[0] += a; pms->abcd[1] += b; pms->abcd[2] += c; pms->abcd[3] += d; } void belle_sip_md5_init(md5_state_t *pms) { pms->count[0] = pms->count[1] = 0; pms->abcd[0] = 0x67452301; pms->abcd[1] = /*0xefcdab89*/ T_MASK ^ 0x10325476; pms->abcd[2] = /*0x98badcfe*/ T_MASK ^ 0x67452301; pms->abcd[3] = 0x10325476; } void belle_sip_md5_append(md5_state_t *pms, const md5_byte_t *data, int nbytes) { const md5_byte_t *p = data; int left = nbytes; int offset = (pms->count[0] >> 3) & 63; md5_word_t nbits = (md5_word_t)(nbytes << 3); if (nbytes <= 0) return; /* Update the message length. */ pms->count[1] += nbytes >> 29; pms->count[0] += nbits; if (pms->count[0] < nbits) pms->count[1]++; /* Process an initial partial block. */ if (offset) { int copy = (offset + nbytes > 64 ? 64 - offset : nbytes); memcpy(pms->buf + offset, p, copy); if (offset + copy < 64) return; p += copy; left -= copy; md5_process(pms, pms->buf); } /* Process full blocks. */ for (; left >= 64; p += 64, left -= 64) md5_process(pms, p); /* Process a final partial block. */ if (left) memcpy(pms->buf, p, left); } void belle_sip_md5_finish(md5_state_t *pms, md5_byte_t digest[16]) { static const md5_byte_t pad[64] = { 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; md5_byte_t data[8]; int i; /* Save the length before padding. */ for (i = 0; i < 8; ++i) data[i] = (md5_byte_t)(pms->count[i >> 2] >> ((i & 3) << 3)); /* Pad to 56 bytes mod 64. */ belle_sip_md5_append(pms, pad, ((55 - (pms->count[0] >> 3)) & 63) + 1); /* Append the length. */ belle_sip_md5_append(pms, data, 8); for (i = 0; i < 16; ++i) digest[i] = (md5_byte_t)(pms->abcd[i >> 2] >> ((i & 3) << 3)); } belle-sip-5.2.0+dfsg/src/md5.h000066400000000000000000000065251434613136500157540ustar00rootroot00000000000000/* Copyright (C) 1999, 2002 Aladdin Enterprises. All rights reserved. This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. L. Peter Deutsch ghost@aladdin.com */ /* $Id: md5.h,v 1.4 2002/04/13 19:20:28 lpd Exp $ */ /* Independent implementation of MD5 (RFC 1321). This code implements the MD5 Algorithm defined in RFC 1321, whose text is available at http://www.ietf.org/rfc/rfc1321.txt The code is derived from the text of the RFC, including the test suite (section A.5) but excluding the rest of Appendix A. It does not include any code or documentation that is identified in the RFC as being copyrighted. The original and principal author of md5.h is L. Peter Deutsch . Other authors are noted in the change history that follows (in reverse chronological order): 2002-04-13 lpd Removed support for non-ANSI compilers; removed references to Ghostscript; clarified derivation from RFC 1321; now handles byte order either statically or dynamically. 1999-11-04 lpd Edited comments slightly for automatic TOC extraction. 1999-10-18 lpd Fixed typo in header comment (ansi2knr rather than md5); added conditionalization for C++ compilation from Martin Purschke . 1999-05-03 lpd Original version. */ #ifndef md5_INCLUDED # define md5_INCLUDED /* * This package supports both compile-time and run-time determination of CPU * byte order. If ARCH_IS_BIG_ENDIAN is defined as 0, the code will be * compiled to run only on little-endian CPUs; if ARCH_IS_BIG_ENDIAN is * defined as non-zero, the code will be compiled to run only on big-endian * CPUs; if ARCH_IS_BIG_ENDIAN is not defined, the code will be compiled to * run on either big- or little-endian CPUs, but will run slightly less * efficiently on either one than if ARCH_IS_BIG_ENDIAN is defined. */ typedef unsigned char md5_byte_t; /* 8-bit byte */ typedef unsigned int md5_word_t; /* 32-bit word */ /* Define the state of the MD5 Algorithm. */ typedef struct md5_state_s { md5_word_t count[2]; /* message length in bits, lsw first */ md5_word_t abcd[4]; /* digest buffer */ md5_byte_t buf[64]; /* accumulate block */ } md5_state_t; #ifdef __cplusplus extern "C" { #endif /* Initialize the algorithm. */ void belle_sip_md5_init(md5_state_t *pms); /* Append a string to the message. */ void belle_sip_md5_append(md5_state_t *pms, const md5_byte_t *data, int nbytes); /* Finish the message and return the digest. */ void belle_sip_md5_finish(md5_state_t *pms, md5_byte_t digest[16]); #ifdef __cplusplus } /* end extern "C" */ #endif #endif /* md5_INCLUDED */ belle-sip-5.2.0+dfsg/src/message.c000066400000000000000000001347621434613136500167130ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "grammars/belle_sip_messageLexer.h" #include "grammars/belle_sip_messageParser.h" #include "belle_sip_internal.h" typedef struct _headers_container { char* name; belle_sip_list_t* header_list; } headers_container_t; /*reference is * http://www.iana.org/assignments/sip-parameters/sip-parameters.xhtml#sip-parameters-2 */ static const char * expand_name(const char *name){ const char *full_name=NULL; if (strlen(name)>1) return name; switch(name[0]){ case 'a': full_name="Accept-Contact"; break; case 'u': full_name="Allow-Events"; break; case 'e': full_name="Content-Encoding"; break; case 'o': full_name="Event"; break; case 'y': full_name="Identity"; break; case 'n': full_name="Identity-Info"; break; case 'r': full_name="Refer-To"; break; case 'b': full_name="Referred-By"; break; case 'j': full_name="Reject-Contact"; break; case 'd': full_name="Request-Disposition"; break; case 'x': full_name="Session-Expires"; break; case 's': full_name="Subject"; break; case 'k': full_name="Supported"; break; default: full_name=name; } return full_name; } static headers_container_t* belle_sip_message_headers_container_new(const char* name) { headers_container_t* headers_container = belle_sip_new0(headers_container_t); headers_container->name = belle_sip_strdup(expand_name(name)); return headers_container; } static void belle_sip_headers_container_delete(headers_container_t *obj){ belle_sip_free(obj->name); belle_sip_list_free_with_data(obj->header_list,(void (*)(void*))belle_sip_object_unref); belle_sip_free(obj); } static void belle_sip_message_destroy(belle_sip_message_t *msg){ belle_sip_list_free_with_data(msg->header_list,(void (*)(void*))belle_sip_headers_container_delete); if (msg->body_handler) belle_sip_object_unref(msg->body_handler); if (msg->multipart_body_cache) bctbx_free(msg->multipart_body_cache); } /*very sub-optimal clone method */ static void belle_sip_message_clone(belle_sip_message_t *obj, const belle_sip_message_t *orig){ headers_container_t *c; const belle_sip_list_t *l; for(l=orig->header_list;l!=NULL;l=l->next){ c=(headers_container_t*)l->data; if (c->header_list){ belle_sip_list_t * ll=belle_sip_list_copy_with_data(c->header_list,(void *(*)(void*))belle_sip_object_clone); belle_sip_message_add_headers(obj,ll); belle_sip_list_free(ll); } } } BELLE_SIP_DECLARE_NO_IMPLEMENTED_INTERFACES(belle_sip_message_t); BELLE_SIP_INSTANCIATE_VPTR(belle_sip_message_t,belle_sip_object_t,belle_sip_message_destroy,belle_sip_message_clone,NULL,TRUE); belle_sip_message_t* belle_sip_message_parse (const char* value) { size_t message_length; return belle_sip_message_parse_raw(value,strlen(value),&message_length); } belle_sip_message_t* belle_sip_message_parse_raw (const char* buff, size_t buff_length,size_t* message_length ) { \ pANTLR3_INPUT_STREAM input; pbelle_sip_messageLexer lex; pANTLR3_COMMON_TOKEN_STREAM tokens; pbelle_sip_messageParser parser; belle_sip_message_t* l_parsed_object; input = ANTLR_STREAM_NEW("message",buff,buff_length); lex = belle_sip_messageLexerNew (input); tokens = antlr3CommonTokenStreamSourceNew (1025, lex->pLexer->rec->state->tokSource); parser = belle_sip_messageParserNew (tokens); l_parsed_object = parser->message_raw(parser,message_length); /* if (*message_length < buff_length) {*/ /*there is a body*/ /* l_parsed_object->body_length=buff_length-*message_length; l_parsed_object->body = belle_sip_malloc(l_parsed_object->body_length+1); memcpy(l_parsed_object->body,buff+*message_length,l_parsed_object->body_length); l_parsed_object->body[l_parsed_object->body_length]='\0'; }*/ parser ->free(parser); tokens ->free(tokens); lex ->free(lex); input ->close(input); return l_parsed_object; } static int belle_sip_headers_container_comp_func(const headers_container_t *a, const char*b) { return strcasecmp(a->name,b); } void belle_sip_message_init(belle_sip_message_t *message){ } headers_container_t* belle_sip_headers_container_get(const belle_sip_message_t* message,const char* header_name) { belle_sip_list_t * result = belle_sip_list_find_custom( message->header_list , (belle_sip_compare_func)belle_sip_headers_container_comp_func , header_name); return result?(headers_container_t*)(result->data):NULL; } headers_container_t * get_or_create_container(belle_sip_message_t *message, const char *header_name){ // first check if already exist headers_container_t* headers_container = belle_sip_headers_container_get(message,header_name); if (headers_container == NULL) { headers_container = belle_sip_message_headers_container_new(header_name); message->header_list=belle_sip_list_append(message->header_list,headers_container); } return headers_container; } void belle_sip_message_add_first(belle_sip_message_t *message,belle_sip_header_t* header) { headers_container_t *headers_container=get_or_create_container(message,belle_sip_header_get_name(header)); headers_container->header_list=belle_sip_list_prepend(headers_container->header_list,belle_sip_object_ref(header)); } void belle_sip_message_add_header(belle_sip_message_t *message,belle_sip_header_t* header) { headers_container_t *headers_container=get_or_create_container(message,belle_sip_header_get_name(header)); headers_container->header_list=belle_sip_list_append(headers_container->header_list,belle_sip_object_ref(header)); } void belle_sip_message_add_headers(belle_sip_message_t *message, const belle_sip_list_t *header_list){ const char *hname; headers_container_t *headers_container; if (header_list == NULL) return; hname=belle_sip_header_get_name(BELLE_SIP_HEADER((header_list->data))); headers_container=get_or_create_container(message,hname); for(;header_list!=NULL;header_list=header_list->next){ belle_sip_header_t *h=BELLE_SIP_HEADER(header_list->data); if (strcmp(belle_sip_header_get_name(h),hname)!=0){ belle_sip_fatal("Bad use of belle_sip_message_add_headers(): all headers of the list must be of the same type."); return ; } headers_container->header_list=belle_sip_list_append(headers_container->header_list,belle_sip_object_ref(h)); } } void belle_sip_message_set_header(belle_sip_message_t *msg, belle_sip_header_t* header){ headers_container_t *headers_container=get_or_create_container(msg,belle_sip_header_get_name(header)); belle_sip_object_ref(header); headers_container->header_list=belle_sip_list_free_with_data(headers_container->header_list,belle_sip_object_unref); headers_container->header_list=belle_sip_list_append(headers_container->header_list,header); } const belle_sip_list_t* belle_sip_message_get_headers(const belle_sip_message_t *message,const char* header_name) { headers_container_t* headers_container = belle_sip_headers_container_get(message,header_name); return headers_container ? headers_container->header_list:NULL; } belle_sip_object_t *_belle_sip_message_get_header_by_type_id(const belle_sip_message_t *message, belle_sip_type_id_t id){ const belle_sip_list_t *e1; for(e1=message->header_list;e1!=NULL;e1=e1->next){ headers_container_t* headers_container=(headers_container_t*)e1->data; if (headers_container->header_list){ belle_sip_object_t *ret=headers_container->header_list->data; if (ret->vptr->id==id) return ret; } } return NULL; } void belle_sip_message_remove_first(belle_sip_message_t *msg, const char *header_name){ headers_container_t* headers_container = belle_sip_headers_container_get(msg,header_name); if (headers_container && headers_container->header_list){ belle_sip_list_t *to_be_removed=headers_container->header_list; headers_container->header_list=belle_sip_list_remove_link(headers_container->header_list,to_be_removed); belle_sip_list_free_with_data(to_be_removed,belle_sip_object_unref); } } void belle_sip_message_remove_last(belle_sip_message_t *msg, const char *header_name){ headers_container_t* headers_container = belle_sip_headers_container_get(msg,header_name); if (headers_container && headers_container->header_list){ belle_sip_list_t *to_be_removed=belle_sip_list_last_elem(headers_container->header_list); headers_container->header_list=belle_sip_list_remove_link(headers_container->header_list,to_be_removed); belle_sip_list_free_with_data(to_be_removed,belle_sip_object_unref); } } void belle_sip_message_remove_header(belle_sip_message_t *msg, const char *header_name){ headers_container_t* headers_container = belle_sip_headers_container_get(msg,header_name); if (headers_container){ msg->header_list = belle_sip_list_remove(msg->header_list,headers_container); belle_sip_headers_container_delete(headers_container); } } void belle_sip_message_remove_header_from_ptr(belle_sip_message_t *msg, belle_sip_header_t* header) { headers_container_t* headers_container = belle_sip_headers_container_get(msg,belle_sip_header_get_name(header)); belle_sip_list_t* it; it=belle_sip_list_find(headers_container->header_list,header); if (it) { belle_sip_object_unref(header); headers_container->header_list=belle_sip_list_delete_link(headers_container->header_list,it); if (belle_sip_list_size(headers_container->header_list) == 0) { msg->header_list = belle_sip_list_remove(msg->header_list,headers_container); belle_sip_headers_container_delete(headers_container); } } } /* belle_sip_error_code belle_sip_message_named_headers_marshal(belle_sip_message_t *message, const char* header_name, char* buff, size_t buff_size, size_t *offset) { belle_sip_error_code error=BELLE_SIP_OK; belle_sip_list_t* header_list = belle_sip_message_get_headers(message,header_name); if (!header_list) { belle_sip_error("headers [%s] not found",header_name); return 0; } for(;header_list!=NULL;header_list=header_list->next){ belle_sip_header_t *h=BELLE_SIP_HEADER(header_list->data); error=belle_sip_object_marshal(BELLE_SIP_OBJECT(h),buff,buff_size,offset); if (error!=BELLE_SIP_OK) return error; error=belle_sip_snprintf(buff,buff_size,offset,"%s","\r\n"); if (error!=BELLE_SIP_OK) return error; } return error; } #define MARSHAL_AND_CHECK_HEADER(header) \ if (current_offset == (current_offset+=(header))) {\ belle_sip_error("missing mandatory header");\ return current_offset;\ } else {\ current_offset+=snprintf(buff+current_offset,buff_size-current_offset,"%s","\r\n");\ } */ typedef void (*each_header_cb)(const belle_sip_header_t* header,void* userdata); static void belle_sip_message_for_each_header(const belle_sip_message_t *message,each_header_cb cb,void* user_data) { belle_sip_list_t* headers_list; belle_sip_list_t* header_list; for(headers_list=message->header_list;headers_list!=NULL;headers_list=headers_list->next){ for(header_list=((headers_container_t*)(headers_list->data))->header_list ;header_list!=NULL ;header_list=header_list->next) { cb(BELLE_SIP_HEADER(header_list->data),user_data); } } return; } static void append_header(const belle_sip_header_t* header,void* user_data) { *(belle_sip_list_t**)user_data=belle_sip_list_append((*(belle_sip_list_t**)user_data),(void*)header); } belle_sip_list_t* belle_sip_message_get_all_headers(const belle_sip_message_t *message) { belle_sip_list_t* headers=NULL; belle_sip_message_for_each_header(message,append_header,&headers); return headers; } belle_sip_error_code belle_sip_headers_marshal(belle_sip_message_t *message, char* buff, size_t buff_size, size_t *offset) { /*FIXME, replace this code by belle_sip_message_for_each_header*/ belle_sip_list_t* headers_list; belle_sip_list_t* header_list; belle_sip_error_code error=BELLE_SIP_OK; #ifdef BELLE_SIP_WORKAROUND_TECHNICOLOR_SIP_ALG_ROUTER_BUG belle_sip_header_t *content_length=NULL; #endif for(headers_list=message->header_list;headers_list!=NULL;headers_list=headers_list->next){ for(header_list=((headers_container_t*)(headers_list->data))->header_list ;header_list!=NULL ;header_list=header_list->next) { belle_sip_header_t *h=BELLE_SIP_HEADER(header_list->data); #ifdef BELLE_SIP_WORKAROUND_TECHNICOLOR_SIP_ALG_ROUTER_BUG if (BELLE_SIP_OBJECT_IS_INSTANCE_OF(h,belle_sip_header_content_length_t)){ content_length=h; }else #endif { while (h!=NULL) { /*header can be chained*/ error=belle_sip_object_marshal(BELLE_SIP_OBJECT(h),buff,buff_size,offset); if (error!=BELLE_SIP_OK) return error; error=belle_sip_snprintf(buff,buff_size,offset,"%s","\r\n"); if (error!=BELLE_SIP_OK) return error; h= belle_sip_header_get_next(h); } } } } #ifdef BELLE_SIP_WORKAROUND_TECHNICOLOR_SIP_ALG_ROUTER_BUG if (content_length){ error=belle_sip_object_marshal(BELLE_SIP_OBJECT(content_length),buff,buff_size,offset); if (error!=BELLE_SIP_OK) return error; error=belle_sip_snprintf(buff,buff_size,offset,"%s","\r\n"); if (error!=BELLE_SIP_OK) return error; } #endif error=belle_sip_snprintf(buff,buff_size,offset,"%s","\r\n"); if (error!=BELLE_SIP_OK) return error; return error; } static void belle_sip_request_destroy(belle_sip_request_t* request) { if (request->method) belle_sip_free(request->method); if (request->uri) belle_sip_object_unref(request->uri); if (request->absolute_uri) belle_sip_object_unref(request->absolute_uri); if (request->dialog) belle_sip_object_unref(request->dialog); if (request->rfc2543_branch) belle_sip_free(request->rfc2543_branch); } static void belle_sip_request_init(belle_sip_request_t *message){ } static void belle_sip_request_clone(belle_sip_request_t *request, const belle_sip_request_t *orig){ if (orig->method) request->method=belle_sip_strdup(orig->method); if (orig->uri) request->uri=(belle_sip_uri_t*)belle_sip_object_ref(belle_sip_object_clone((belle_sip_object_t*)orig->uri)); if (orig->absolute_uri) request->absolute_uri=(belle_generic_uri_t*)belle_sip_object_ref(belle_sip_object_clone((belle_sip_object_t*)orig->absolute_uri)); if (orig->rfc2543_branch) request->rfc2543_branch=belle_sip_strdup(orig->rfc2543_branch); } belle_sip_error_code belle_sip_request_marshal(belle_sip_request_t* request, char* buff, size_t buff_size, size_t *offset) { belle_sip_error_code error=belle_sip_snprintf(buff,buff_size,offset,"%s ",belle_sip_request_get_method(request) ? belle_sip_request_get_method(request) : ""); if (error!=BELLE_SIP_OK) return error; if (request->uri) error=belle_sip_uri_marshal(belle_sip_request_get_uri(request),buff,buff_size,offset); else if (request->absolute_uri) error=belle_generic_uri_marshal(belle_sip_request_get_absolute_uri(request),buff,buff_size,offset); else { belle_sip_error("Missing uri for marshaling request [%p]",request); /*fixme better to have an error code*/ error=BELLE_SIP_OK; } if (error!=BELLE_SIP_OK) return error; error=belle_sip_snprintf(buff,buff_size,offset," %s","SIP/2.0\r\n"); if (error!=BELLE_SIP_OK) return error; error=belle_sip_headers_marshal(BELLE_SIP_MESSAGE(request),buff,buff_size,offset); if (error!=BELLE_SIP_OK) return error; return error; } BELLE_SIP_NEW(request,message) BELLE_SIP_PARSE(request) GET_SET_STRING(belle_sip_request,method); GET_SET_STRING(belle_sip_request,rfc2543_branch); /*caching of the dialog in the request, used when creating a request in dialog to avoid dialog lookup*/ void belle_sip_request_set_dialog(belle_sip_request_t *req, belle_sip_dialog_t *dialog){ SET_OBJECT_PROPERTY(req,dialog,dialog); } void belle_sip_request_set_uri(belle_sip_request_t* request,belle_sip_uri_t* uri) { SET_OBJECT_PROPERTY(request,uri,uri); if (request->absolute_uri && uri) { belle_sip_warning("absolute uri [%p] already set for request [%p], cleaning it",request->absolute_uri, request); belle_sip_request_set_absolute_uri(request,NULL); } } belle_sip_uri_t * belle_sip_request_get_uri(const belle_sip_request_t *request){ return request->uri; } void belle_sip_request_set_absolute_uri(belle_sip_request_t* request,belle_generic_uri_t* absolute_uri) { SET_OBJECT_PROPERTY(request,absolute_uri,absolute_uri); if (request->uri && absolute_uri) { belle_sip_warning("sip uri [%p] already set for request [%p], cleaning it",request->uri, request); belle_sip_request_set_uri(request,NULL); } } belle_generic_uri_t * belle_sip_request_get_absolute_uri(const belle_sip_request_t *request){ return request->absolute_uri; } belle_sip_uri_t* belle_sip_request_extract_origin(const belle_sip_request_t* req) { belle_sip_header_via_t* via_header = belle_sip_message_get_header_by_type(req,belle_sip_header_via_t); belle_sip_uri_t* uri=NULL; const char* received = belle_sip_header_via_get_received(via_header); int rport = belle_sip_header_via_get_rport(via_header); uri = belle_sip_uri_new(); if (received!=NULL) { belle_sip_uri_set_host(uri,received); } else { belle_sip_uri_set_host(uri,belle_sip_header_via_get_host(via_header)); } if (rport>0) { belle_sip_uri_set_port(uri,rport); } else if (belle_sip_header_via_get_port(via_header)) { belle_sip_uri_set_port(uri,belle_sip_header_via_get_port(via_header)); } if (belle_sip_header_via_get_transport(via_header)) { belle_sip_uri_set_transport_param(uri,belle_sip_header_via_get_transport_lowercase(via_header)); } return uri; } int belle_sip_message_is_request(belle_sip_message_t *msg){ return BELLE_SIP_IS_INSTANCE_OF(BELLE_SIP_OBJECT(msg),belle_sip_request_t); } int belle_sip_message_is_response(const belle_sip_message_t *msg){ return BELLE_SIP_IS_INSTANCE_OF(BELLE_SIP_OBJECT(msg),belle_sip_response_t); } belle_sip_header_t *belle_sip_message_get_header(const belle_sip_message_t *msg, const char *header_name){ const belle_sip_list_t *l=belle_sip_message_get_headers(msg,header_name); if (l!=NULL) return (belle_sip_header_t*)l->data; return NULL; } char *belle_sip_message_to_string(belle_sip_message_t *msg){ return belle_sip_object_to_string(BELLE_SIP_OBJECT(msg)); } belle_sip_body_handler_t *belle_sip_message_get_body_handler(const belle_sip_message_t *msg){ return msg->body_handler; } void belle_sip_message_set_body_handler(belle_sip_message_t *msg, belle_sip_body_handler_t *body_handler){ const belle_sip_header_content_length_t *content_length_header = belle_sip_message_get_header_by_type(msg, belle_sip_header_content_length_t); const belle_sip_header_content_type_t *content_type_header = belle_sip_message_get_header_by_type(msg, belle_sip_header_content_type_t); const belle_sip_header_t *content_encoding_header = belle_sip_message_get_header(msg, "Content-Encoding"); const belle_sip_list_t *body_handler_headers = NULL; if (body_handler) body_handler_headers = belle_sip_body_handler_get_headers(body_handler); /* In case of multipart message, we must add the message Content-Type header containing the boundary */ if (body_handler != NULL) { if (BELLE_SIP_OBJECT_IS_INSTANCE_OF(body_handler, belle_sip_multipart_body_handler_t)){ belle_sip_multipart_body_handler_t *multipart_body_handler = BELLE_SIP_MULTIPART_BODY_HANDLER(body_handler); belle_sip_header_content_type_t * content_type = belle_sip_header_content_type_new(); belle_sip_header_content_type_set_type(content_type, "multipart"); if (belle_sip_multipart_body_handler_is_related(multipart_body_handler)) { const belle_sip_list_t *parts = belle_sip_multipart_body_handler_get_parts(multipart_body_handler); if (parts) { belle_sip_body_handler_t *first_part=BELLE_SIP_BODY_HANDLER(parts->data); const belle_sip_list_t *first_part_headers = belle_sip_body_handler_get_headers(first_part); belle_sip_list_t *it; belle_sip_header_content_type_t *first_part_content_type=NULL;; for(it = (belle_sip_list_t *)first_part_headers;it!=NULL;it=it->next) { belle_sip_header_t *header = BELLE_SIP_HEADER(it->data); if(strcasecmp("Content-Type",belle_sip_header_get_name(header)) == 0) { first_part_content_type=BELLE_SIP_HEADER_CONTENT_TYPE(header); break; } } if (first_part_content_type) { char *type_slash_subtype = belle_sip_strdup_printf( "%s/%s", belle_sip_header_content_type_get_type(first_part_content_type), belle_sip_header_content_type_get_subtype(first_part_content_type) ); belle_sip_parameters_set_parameter(BELLE_SIP_PARAMETERS(content_type), "type", type_slash_subtype); belle_sip_free(type_slash_subtype); } else { belle_sip_error("Multipart related body handler [%p] cannot be set without first part content type header",body_handler); } } else { belle_sip_error("Multipart related body handler [%p] cannot be set without first part",body_handler); } belle_sip_header_content_type_set_subtype(content_type, "related"); } else { belle_sip_header_content_type_set_subtype(content_type, "form-data"); } while (body_handler_headers) { belle_sip_header_t *header = BELLE_SIP_HEADER(body_handler_headers->data); belle_sip_message_add_header(BELLE_SIP_MESSAGE(msg), header); body_handler_headers = body_handler_headers->next; } const belle_sip_header_content_type_t *new_content_type_header = belle_sip_message_get_header_by_type(msg, belle_sip_header_content_type_t); if (!new_content_type_header || !belle_sip_parameters_has_parameter(BELLE_SIP_PARAMETERS(new_content_type_header), "boundary")) { belle_sip_parameters_set_parameter(BELLE_SIP_PARAMETERS(content_type), "boundary", belle_sip_multipart_body_handler_get_boundary(multipart_body_handler)); belle_sip_message_add_header(BELLE_SIP_MESSAGE(msg), BELLE_SIP_HEADER(content_type)); } } else { const belle_sip_list_t *headers = belle_sip_body_handler_get_headers(body_handler); for(; headers != NULL; headers = headers->next) { belle_sip_header_t *header = BELLE_SIP_HEADER(headers->data); if (strcasecmp(belle_sip_header_get_name(header),BELLE_SIP_CONTENT_LENGTH ) == 0 && content_length_header) belle_sip_message_remove_header_from_ptr(msg, BELLE_SIP_HEADER(content_length_header)); if (strcasecmp(belle_sip_header_get_name(header),BELLE_SIP_CONTENT_TYPE ) == 0 && content_type_header) belle_sip_message_remove_header_from_ptr(msg, BELLE_SIP_HEADER(content_type_header)); if (strcasecmp(belle_sip_header_get_name(header),"Content-Encoding") == 0 && content_encoding_header) belle_sip_message_remove_header_from_ptr(msg, BELLE_SIP_HEADER(content_encoding_header)); belle_sip_message_add_header(BELLE_SIP_MESSAGE(msg), header); } } } else { if (content_length_header != NULL) belle_sip_message_remove_header_from_ptr(msg, BELLE_SIP_HEADER(content_length_header)); if (content_type_header != NULL) belle_sip_message_remove_header_from_ptr(msg, BELLE_SIP_HEADER(content_type_header)); } SET_OBJECT_PROPERTY(msg,body_handler,body_handler); } static const char *get_multipart_body (belle_sip_message_t *msg) { if (!BELLE_SIP_OBJECT_IS_INSTANCE_OF(msg->body_handler, belle_sip_multipart_body_handler_t)) return NULL; char *old_body = msg->multipart_body_cache; char *body = belle_sip_object_to_string(msg->body_handler); if (old_body) { // Returns the same pointer if no changes. if (!strcmp(body, old_body)) { bctbx_free(body); return old_body; } bctbx_free(msg->multipart_body_cache); } msg->multipart_body_cache = body; return body; } const char *belle_sip_message_get_body(belle_sip_message_t *msg) { if (!msg->body_handler) return NULL; if (BELLE_SIP_OBJECT_IS_INSTANCE_OF(msg->body_handler, belle_sip_memory_body_handler_t)) { return (const char *)belle_sip_memory_body_handler_get_buffer( BELLE_SIP_MEMORY_BODY_HANDLER(msg->body_handler) ); } const char *body = get_multipart_body(msg); if (!body) belle_sip_error("belle_sip_message_get_body(): body cannot be returned as pointer."); return body; } size_t belle_sip_message_get_body_size(const belle_sip_message_t *msg){ if (msg->body_handler==NULL) return 0; return belle_sip_body_handler_get_size(msg->body_handler); } void belle_sip_message_set_body(belle_sip_message_t *msg, const char* body, size_t size) { belle_sip_body_handler_t *bh=NULL; if (body && size) bh=(belle_sip_body_handler_t*)belle_sip_memory_body_handler_new_copy_from_buffer(body,size,NULL,NULL); belle_sip_message_set_body_handler(msg,bh); } void belle_sip_message_assign_body(belle_sip_message_t *msg, char* body, size_t size) { belle_sip_body_handler_t *bh=(belle_sip_body_handler_t*)belle_sip_memory_body_handler_new_from_buffer(body,size,NULL,NULL); belle_sip_message_set_body_handler(msg,bh); } struct _belle_sip_response{ belle_sip_message_t base; char *sip_version; int status_code; char *reason_phrase; }; typedef struct code_phrase{ int code; const char *phrase; } code_phrase_t; static code_phrase_t well_known_codes[]={ { 100, "Trying"}, { 101, "Dialog establishment"}, { 180, "Ringing"}, { 181, "Call is being forwarded"}, { 182, "Queued"}, { 183, "Session progress"}, { 200, "Ok"}, { 202, "Accepted"}, { 300, "Multiple choices"}, { 301, "Moved permanently"}, { 302, "Moved temporarily"}, { 305, "Use proxy"}, { 380, "Alternate contact"}, { 400, "Bad request"}, { 401, "Unauthorized"}, { 402, "Payment required"}, { 403, "Forbidden"}, { 404, "Not found"}, { 405, "Method not allowed"}, { 406, "Not acceptable"}, { 407, "Proxy authentication required"}, { 408, "Request timeout"}, { 410, "Gone"}, { 412, "Conditional Request Failed" }, /*rfc3903*/ { 413, "Request entity too large"}, { 414, "Request-URI too long"}, { 415, "Unsupported media type"}, { 416, "Unsupported URI scheme"}, { 420, "Bad extension"}, { 421, "Extension required"}, { 422, "Session Interval Too Small"}, /*rfc4028*/ { 423, "Interval too brief"}, { 480, "Temporarily unavailable"}, { 481, "Call/transaction does not exist"}, { 482, "Loop detected"}, { 483, "Too many hops"}, { 484, "Address incomplete"}, { 485, "Ambiguous"}, { 486, "Busy here"}, { 487, "Request terminated"}, { 488, "Not acceptable here"}, { 489, "Bad Event"}, /*rfc3265*/ { 491, "Request pending"}, { 493, "Undecipherable"}, { 500, "Server internal error"}, { 501, "Not implemented"}, { 502, "Bad gateway"}, { 503, "Service unavailable"}, { 504, "Server time-out"}, { 505, "Version not supported"}, { 513, "Message too large"}, { 600, "Busy everywhere"}, { 603, "Decline"}, { 604, "Does not exist anywhere"}, { 606, "Not acceptable"}, { 0, NULL } }; const char *belle_sip_get_well_known_reason_phrase(int status_code){ int i; for(i=0;well_known_codes[i].code!=0;++i){ if (well_known_codes[i].code==status_code) return well_known_codes[i].phrase; } return "Unknown reason"; } void belle_sip_response_destroy(belle_sip_response_t *resp){ if (resp->sip_version) belle_sip_free(resp->sip_version); if (resp->reason_phrase) belle_sip_free(resp->reason_phrase); } static void belle_sip_response_init(belle_sip_response_t *resp){ } static void belle_sip_response_clone(belle_sip_response_t *resp, const belle_sip_response_t *orig){ if (orig->sip_version) resp->sip_version=belle_sip_strdup(orig->sip_version); if (orig->reason_phrase) resp->reason_phrase=belle_sip_strdup(orig->reason_phrase); } belle_sip_error_code belle_sip_response_marshal(belle_sip_response_t *resp, char* buff, size_t buff_size, size_t *offset) { belle_sip_error_code error=belle_sip_snprintf( buff ,buff_size ,offset ,"SIP/2.0 %i %s\r\n" ,belle_sip_response_get_status_code(resp) ,belle_sip_response_get_reason_phrase(resp)?belle_sip_response_get_reason_phrase(resp):""); if (error!=BELLE_SIP_OK) return error; error=belle_sip_headers_marshal(BELLE_SIP_MESSAGE(resp),buff,buff_size,offset); if (error!=BELLE_SIP_OK) return error; return error; } BELLE_SIP_NEW(response,message); BELLE_SIP_PARSE(response) GET_SET_STRING(belle_sip_response,reason_phrase); GET_SET_INT(belle_sip_response,status_code,int) static int is_authorized_uri_header(const char* header_name) { /*From, Call-ID, CSeq, Via, and Record-Route*/ /*Accept, Accept-Encoding, Accept-Language, Allow, Contact (in its dialog usage), Organization, Supported, and User-Agent*/ return (strcasecmp("From",header_name) != 0 && strcasecmp("Call-ID",header_name) != 0 && strcasecmp("CSeq",header_name) != 0 && strcasecmp("Via",header_name) != 0 && strcasecmp("Record-Route",header_name) != 0 && strcasecmp("Accept",header_name) != 0 && strcasecmp("Accept-Encoding",header_name) != 0 && strcasecmp("Accept-Language",header_name) != 0 && strcasecmp("Allow",header_name) != 0 && strcasecmp("Contact",header_name) != 0 && strcasecmp("Organization",header_name) != 0 && strcasecmp("Supported",header_name) != 0 && strcasecmp("User-Agent",header_name) != 0); } belle_sip_request_t* belle_sip_request_create ( belle_sip_uri_t *requri, const char* method, belle_sip_header_call_id_t *callid, belle_sip_header_cseq_t * cseq, belle_sip_header_from_t *from, belle_sip_header_to_t *to, belle_sip_header_via_t *via, int max_forward ) { belle_sip_request_t *ret=belle_sip_request_new(); belle_sip_header_max_forwards_t *mf=belle_sip_header_max_forwards_new(); belle_sip_list_t* iterator; if (max_forward==0) max_forward=70; belle_sip_header_max_forwards_set_max_forwards(mf,max_forward); belle_sip_request_set_method(ret,method); belle_sip_message_add_header((belle_sip_message_t*)ret,BELLE_SIP_HEADER(via)); belle_sip_message_add_header((belle_sip_message_t*)ret,BELLE_SIP_HEADER(from)); if (to) belle_sip_message_add_header((belle_sip_message_t*)ret,BELLE_SIP_HEADER(to)); /*to might be in header uri*/ belle_sip_message_add_header((belle_sip_message_t*)ret,BELLE_SIP_HEADER(cseq)); belle_sip_message_add_header((belle_sip_message_t*)ret,BELLE_SIP_HEADER(callid)); if (!belle_sip_message_get_header_by_type(ret,belle_sip_header_max_forwards_t)) belle_sip_message_add_header((belle_sip_message_t*)ret,BELLE_SIP_HEADER(mf)); else belle_sip_object_unref(mf); /* 19.1.5 Forming Requests from a URI An implementation needs to take care when forming requests directly from a URI. URIs from business cards, web pages, and even from sources inside the protocol such as registered contacts may contain inappropriate header fields or body parts. An implementation MUST include any provided transport, maddr, ttl, or user parameter in the Request-URI of the formed request. If the URI contains a method parameter, its value MUST be used as the method of the request. The method parameter MUST NOT be placed in the Request-URI. Unknown URI parameters MUST be placed in the message's Request-URI. An implementation SHOULD treat the presence of any headers or body parts in the URI as a desire to include them in the message, and choose to honor the request on a per-component basis. An implementation SHOULD NOT honor these obviously dangerous header fields: From, Call-ID, CSeq, Via, and Record-Route. An implementation SHOULD NOT honor any requested Route header field values in order to not be used as an unwitting agent in malicious attacks. An implementation SHOULD NOT honor requests to include header fields that may cause it to falsely advertise its location or capabilities. These include: Accept, Accept-Encoding, Accept-Language, Allow, Contact (in its dialog usage), Organization, Supported, and User- Agent. An implementation SHOULD verify the accuracy of any requested descriptive header fields, including: Content-Disposition, Content- Encoding, Content-Language, Content-Length, Content-Type, Date, Mime-Version, and Timestamp.*/ if (belle_sip_uri_get_header_names(requri)) { for (iterator=(belle_sip_list_t*)belle_sip_uri_get_header_names(requri);iterator!=NULL;iterator=iterator->next) { const char* header_name=(const char*)iterator->data; /*1 check header name*/ if (is_authorized_uri_header(header_name)) { belle_sip_header_extension_t* extended_header = belle_sip_header_extension_create(header_name, belle_sip_uri_get_header(requri, header_name)); if (extended_header) { belle_sip_message_add_header((belle_sip_message_t*)ret,BELLE_SIP_HEADER(extended_header)); } } else { belle_sip_warning("Skiping uri header [%s] for request [%p]",header_name,requri); } } } belle_sip_uri_headers_clean(requri); /*remove all headers*/ belle_sip_request_set_uri(ret,requri); return ret; } static void belle_sip_response_init_default(belle_sip_response_t *resp, int status_code, const char *phrase){ resp->status_code=status_code; resp->sip_version=belle_sip_strdup("SIP/2.0"); if (phrase==NULL) phrase=belle_sip_get_well_known_reason_phrase(status_code); resp->reason_phrase=belle_sip_strdup(phrase); } /* * note: we must not assume the request to be well formed because this function may be used to generate 400 Bad request response. */ belle_sip_response_t *belle_sip_response_create_from_request(belle_sip_request_t *req, int status_code){ belle_sip_response_t *resp=belle_sip_response_new(); belle_sip_header_t *h; belle_sip_header_to_t *to; const belle_sip_list_t *vias; belle_sip_response_init_default(resp,status_code,NULL); if (status_code==100 && (h=belle_sip_message_get_header((belle_sip_message_t*)req,"timestamp"))){ belle_sip_message_add_header((belle_sip_message_t*)resp,h); } vias=belle_sip_message_get_headers ((belle_sip_message_t*)req,"via"); belle_sip_message_add_headers((belle_sip_message_t*)resp,vias); h=belle_sip_message_get_header((belle_sip_message_t*)req,"from"); if (h) belle_sip_message_add_header((belle_sip_message_t*)resp,h); h=belle_sip_message_get_header((belle_sip_message_t*)req,"to"); if (h){ if (status_code!=100){ //so that to tag can be added to=(belle_sip_header_to_t*)belle_sip_object_clone((belle_sip_object_t*)h); }else{ to=(belle_sip_header_to_t*)h; } belle_sip_message_add_header((belle_sip_message_t*)resp,(belle_sip_header_t*)to); } h=belle_sip_message_get_header((belle_sip_message_t*)req,"call-id"); if (h) belle_sip_message_add_header((belle_sip_message_t*)resp,h); h=belle_sip_message_get_header((belle_sip_message_t*)req,"cseq"); if (h){ belle_sip_message_add_header((belle_sip_message_t*)resp,h); } return resp; } /* 12.1.1 UAS behavior When a UAS responds to a request with a response that establishes a dialog (such as a 2xx to INVITE), the UAS MUST copy all Record-Route header field values from the request into the response (including the URIs, URI parameters, and any Record-Route header field parameters, whether they are known or unknown to the UAS) and MUST maintain the order of those values. */ void belle_sip_response_fill_for_dialog(belle_sip_response_t *obj, belle_sip_request_t *req){ const belle_sip_list_t *rr=belle_sip_message_get_headers((belle_sip_message_t*)req,BELLE_SIP_RECORD_ROUTE); belle_sip_header_contact_t *ct=belle_sip_message_get_header_by_type(obj,belle_sip_header_contact_t); belle_sip_message_remove_header((belle_sip_message_t*)obj,BELLE_SIP_RECORD_ROUTE); if (rr) belle_sip_message_add_headers((belle_sip_message_t*)obj,rr); if (belle_sip_response_get_status_code(obj)>=200 && belle_sip_response_get_status_code(obj)<300 && !ct){ const char *method=belle_sip_request_get_method(req); if (strcmp(method,"INVITE")==0 || strcmp(method,"SUBSCRIBE")==0){ /*add a dummy contact to be filled by channel later*/ belle_sip_message_add_header((belle_sip_message_t*)obj,(belle_sip_header_t*)belle_sip_header_contact_new()); } } } belle_sip_hop_t* belle_sip_response_get_return_hop(belle_sip_response_t *msg){ belle_sip_header_via_t *via=BELLE_SIP_HEADER_VIA(belle_sip_message_get_header(BELLE_SIP_MESSAGE(msg),"via")); if (via){ const char *host=belle_sip_header_via_get_received(via) ? belle_sip_header_via_get_received(via) : belle_sip_header_via_get_host(via); int port=belle_sip_header_via_get_rport(via)>0 ? belle_sip_header_via_get_rport(via) : belle_sip_header_via_get_listening_port(via); return belle_sip_hop_new(belle_sip_header_via_get_transport_lowercase(via), belle_sip_header_via_get_host(via), host, port); } return NULL; } int belle_sip_response_fix_contact(const belle_sip_response_t* response,belle_sip_header_contact_t* contact) { belle_sip_header_via_t* via_header; belle_sip_uri_t* contact_uri; const char* received; int rport; int contact_port; /*first check received/rport*/ via_header= (belle_sip_header_via_t*)belle_sip_message_get_header(BELLE_SIP_MESSAGE(response),BELLE_SIP_VIA); received = belle_sip_header_via_get_received(via_header); rport = belle_sip_header_via_get_rport(via_header); contact_uri=belle_sip_header_address_get_uri(BELLE_SIP_HEADER_ADDRESS(contact)); if (received) { /*need to update host*/ belle_sip_uri_set_host(contact_uri,received); } else { belle_sip_uri_set_host(contact_uri,belle_sip_header_via_get_host(via_header)); } contact_port = belle_sip_uri_get_port(contact_uri); if (rport>0 ) { /*need to update port*/ if ((rport+contact_port)!=5060) belle_sip_uri_set_port(contact_uri,rport); } else if ((belle_sip_header_via_get_port(via_header)+contact_port)!=5060) { belle_sip_uri_set_port(contact_uri,belle_sip_header_via_get_port(via_header)); } /*try to fix transport if needed (very unlikely)*/ if (strcasecmp(belle_sip_header_via_get_transport(via_header),"UDP")!=0) { if (!belle_sip_uri_get_transport_param(contact_uri) ||strcasecmp(belle_sip_uri_get_transport_param(contact_uri),belle_sip_header_via_get_transport(via_header))!=0) { belle_sip_uri_set_transport_param(contact_uri,belle_sip_header_via_get_transport_lowercase(via_header)); } } else { if (belle_sip_uri_get_transport_param(contact_uri)) { belle_sip_uri_set_transport_param(contact_uri,NULL); } } return 0; } belle_sip_request_t * belle_sip_request_clone_with_body(const belle_sip_request_t *initial_req) { belle_sip_request_t* req=BELLE_SIP_REQUEST(belle_sip_object_clone(BELLE_SIP_OBJECT(initial_req))); if (initial_req->base.body_handler) req->base.body_handler=BELLE_SIP_BODY_HANDLER(belle_sip_object_clone_and_ref( (belle_sip_object_t*)initial_req->base.body_handler)); return req; } typedef struct message_header_list { const char* method; const char* headers[10]; /*MAX headers*/ } message_header_list_t; /** RFC 3261 SIP: Session Initiation Protocol June 2002 Header field where proxy ACK BYE CAN INV OPT REG __________________________________________________________________ Accept R - o - o m* o Accept 2xx - - - o m* o Accept 415 - c - c c c Accept-Encoding R - o - o o o Accept-Encoding 2xx - - - o m* o Accept-Encoding 415 - c - c c c Accept-Language R - o - o o o Accept-Language 2xx - - - o m* o Accept-Language 415 - c - c c c Alert-Info R ar - - - o - - Alert-Info 180 ar - - - o - - Allow R - o - o o o Allow 2xx - o - m* m* o Allow r - o - o o o Allow 405 - m - m m m Authentication-Info 2xx - o - o o o Authorization R o o o o o o Call-ID c r m m m m m m Call-Info ar - - - o o o Contact R o - - m o o Contact 1xx - - - o - - Contact 2xx - - - m o o Contact 3xx d - o - o o o Contact 485 - o - o o o Content-Disposition o o - o o o Content-Encoding o o - o o o Content-Language o o - o o o Content-Length ar t t t t t t Content-Type * * - * * * CSeq c r m m m m m m Date a o o o o o o Error-Info 300-699 a - o o o o o Expires - - - o - o From c r m m m m m m In-Reply-To R - - - o - - Max-Forwards R amr m m m m m m Min-Expires 423 - - - - - m MIME-Version o o - o o o Organization ar - - - o o o Priority R ar - - - o - - Proxy-Authenticate 407 ar - m - m m m Proxy-Authenticate 401 ar - o o o o o Proxy-Authorization R dr o o - o o o Proxy-Require R ar - o - o o o Record-Route R ar o o o o o - Record-Route 2xx,18x mr - o o o o - Reply-To - - - o - - Require ar - c - c c c Retry-After 404,413,480,486 - o o o o o 500,503 - o o o o o 600,603 - o o o o o Route R adr c c c c c c Server r - o o o o o Subject R - - - o - - Supported R - o o m* o o Supported 2xx - o o m* m* o Timestamp o o o o o o To c(1) r m m m m m m Unsupported 420 - m - m m m User-Agent o o o o o o Via R amr m m m m m m Via rc dr m m m m m m Warning r - o o o o o WWW-Authenticate 401 ar - m - m m m WWW-Authenticate 407 ar - o - o o o Table 3: Summary of header fields, A--Z; (1): copied with possible addition of tag */ static message_header_list_t mandatory_headers[] = { {"REGISTER",{"Call-ID","CSeq","From", "Max-Forwards","To","Via",NULL}}, {"INVITE",{"Contact","Call-ID","CSeq","From", "Max-Forwards","To","Via",NULL}}, {"CANCEL",{"Call-ID","CSeq","From", "Max-Forwards","To","Via",NULL}}, {"BYE",{"Call-ID","CSeq","From", "Max-Forwards","To","Via",NULL}}, {"ACK",{"Call-ID","CSeq","From", "Max-Forwards","To","Via",NULL}}, {"*", { "To", "From", "CSeq", "Via", NULL}}, /* catch-all, these fields are required all the time. */ {NULL,{NULL}} }; /*static int belle_sip_message_is_mandatody_header(const char* method, const char* header_name) { int i; for (i=0;mandatory_headers[i].method!=NULL;i++) { if (strcasecmp(method,mandatory_headers[i].method)==0) { int j; for(j=0;mandatory_headers[i].headers[j]!=NULL;j++) { if (strcasecmp(header_name,mandatory_headers[i].headers[j])==0) { return 1; } } } } return 0; } */ /* This mainly check for mandatory parameters in some headers. */ static int belle_sip_message_check_headers_integrity(const belle_sip_message_t *message){ { belle_sip_header_from_t *from = belle_sip_message_get_header_by_type(message, belle_sip_header_from_t); const char *from_tag; if (!from) return 0; from_tag = belle_sip_header_from_get_tag(from); if (!from_tag || strlen(from_tag) == 0) { belle_sip_error("No tag in from header."); return 0; } } /* Note: a via without branch parameter is allowed for backward compatibility with RFC2543. */ return 1; } /* This checks the presence for mandatory headers, per method, according to RFC3261. * Returns 1 if the message is compliant, 0 otherwise. */ int belle_sip_message_check_headers(const belle_sip_message_t* message) { if (BELLE_SIP_OBJECT_IS_INSTANCE_OF(message,belle_sip_request_t)) { int i; belle_sip_header_via_t *via; const char * method = belle_sip_request_get_method(BELLE_SIP_REQUEST(message)); for (i=0;mandatory_headers[i].method!=NULL;i++) { if ( (strcasecmp(method,mandatory_headers[i].method)==0) || (mandatory_headers[i].method[0] == '*') ){ int j; for(j=0;mandatory_headers[i].headers[j]!=NULL;j++) { if (belle_sip_message_get_header(message,mandatory_headers[i].headers[j])==NULL) { belle_sip_error("Missing mandatory header [%s] for message [%s]",mandatory_headers[i].headers[j],method); return 0; } } } } } /*else FIXME should also check in esponses*/ return belle_sip_message_check_headers_integrity(message); } int belle_sip_request_check_uris_components(const belle_sip_request_t* request) { belle_sip_list_t* new_list = belle_sip_message_get_all_headers(BELLE_SIP_MESSAGE(request)); belle_sip_list_t* iterator = new_list; for (;iterator!=NULL;iterator=iterator->next) { belle_sip_header_t* header=(belle_sip_header_t*)iterator->data; if (BELLE_SIP_IS_INSTANCE_OF(header,belle_sip_header_address_t)) { belle_sip_uri_t* uri=belle_sip_header_address_get_uri(BELLE_SIP_HEADER_ADDRESS(header)); if (uri && !belle_sip_uri_check_components_from_context(uri,belle_sip_request_get_method(request),belle_sip_header_get_name(header))) { char* header_string=belle_sip_object_to_string(header); belle_sip_error("Malformed header [%s] for request [%p]",header_string,request); belle_sip_free(header_string); belle_sip_list_free(new_list); return FALSE; } } } belle_sip_list_free(new_list); return belle_sip_uri_check_components_from_request_uri(belle_sip_request_get_uri((const belle_sip_request_t*)request)); } belle-sip-5.2.0+dfsg/src/nict.c000066400000000000000000000146621434613136500162200ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ /** * non-INVITE client transaction implementation. **/ #include "belle_sip_internal.h" static int nict_on_timer_K(belle_sip_nict_t *obj){ belle_sip_transaction_terminate((belle_sip_transaction_t*)obj); return BELLE_SIP_STOP; } static void nict_set_completed(belle_sip_nict_t *obj, belle_sip_response_t *resp){ belle_sip_transaction_t *base=(belle_sip_transaction_t*)obj; const belle_sip_timer_config_t *cfg=belle_sip_transaction_get_timer_config(base); int channel_is_reliable = belle_sip_channel_is_reliable(base->channel); belle_sip_transaction_set_state(base,BELLE_SIP_TRANSACTION_COMPLETED); if (obj->timer_K) belle_sip_fatal("Should never happen."); belle_sip_client_transaction_notify_response((belle_sip_client_transaction_t*)obj,resp); /* After the response is notified, the channel may be shutdown and cleared immediately, this is why it shall be accessed before.*/ if (!channel_is_reliable){ obj->timer_K=belle_sip_timeout_source_new((belle_sip_source_func_t)nict_on_timer_K,obj,cfg->T4); belle_sip_object_set_name((belle_sip_object_t*)obj->timer_K,"timer_K"); belle_sip_transaction_start_timer(base,obj->timer_K); }else belle_sip_transaction_terminate(base); } static void nict_on_response(belle_sip_nict_t *obj, belle_sip_response_t *resp){ belle_sip_transaction_t *base=(belle_sip_transaction_t*)obj; int code=belle_sip_response_get_status_code(resp); switch(base->state){ case BELLE_SIP_TRANSACTION_TRYING: if (code<200){ belle_sip_transaction_set_state(base,BELLE_SIP_TRANSACTION_PROCEEDING); belle_sip_client_transaction_notify_response((belle_sip_client_transaction_t*)obj,resp); } else { nict_set_completed(obj,resp); } break; case BELLE_SIP_TRANSACTION_PROCEEDING: if (code>=200){ nict_set_completed(obj,resp); } break; default: break; } } static void nict_on_terminate(belle_sip_nict_t *obj){ belle_sip_transaction_t *base=(belle_sip_transaction_t*)obj; if (obj->timer_F){ belle_sip_transaction_stop_timer(base,obj->timer_F); belle_sip_object_unref(obj->timer_F); obj->timer_F=NULL; } if (obj->timer_E){ belle_sip_transaction_stop_timer(base,obj->timer_E); belle_sip_object_unref(obj->timer_E); obj->timer_E=NULL; } if (obj->timer_K){ belle_sip_transaction_stop_timer(base,obj->timer_K); belle_sip_object_unref(obj->timer_K); obj->timer_K=NULL; } } static int nict_on_timer_F(belle_sip_nict_t *obj){ belle_sip_transaction_t *base=(belle_sip_transaction_t*)obj; switch (base->state){ case BELLE_SIP_TRANSACTION_TRYING: case BELLE_SIP_TRANSACTION_PROCEEDING: belle_sip_transaction_notify_timeout(base); break; default: break; } return BELLE_SIP_STOP; } static int nict_on_timer_E(belle_sip_nict_t *obj){ belle_sip_transaction_t *base=(belle_sip_transaction_t*)obj; const belle_sip_timer_config_t *cfg=belle_sip_transaction_get_timer_config(base); switch(base->state){ case BELLE_SIP_TRANSACTION_TRYING: { /*reset the timer */ int64_t prev_timeout=belle_sip_source_get_timeout_int64(obj->timer_E); belle_sip_source_set_timeout_int64(obj->timer_E,MIN(2*prev_timeout,cfg->T2)); belle_sip_message("nict_on_timer_E: sending retransmission"); belle_sip_channel_queue_message(base->channel,(belle_sip_message_t*)base->request); } break; case BELLE_SIP_TRANSACTION_PROCEEDING: belle_sip_source_set_timeout_int64(obj->timer_E,cfg->T2); belle_sip_message("nict_on_timer_E: sending retransmission"); belle_sip_channel_queue_message(base->channel,(belle_sip_message_t*)base->request); break; default: /*if we are not in these cases, timer_E does nothing, so remove it*/ return BELLE_SIP_STOP; break; } return BELLE_SIP_CONTINUE; } static void nict_stop_retransmissions(belle_sip_nict_t *obj){ belle_sip_transaction_t *base=(belle_sip_transaction_t*)obj; if (obj->timer_E){ belle_sip_transaction_stop_timer(base,obj->timer_E); belle_sip_object_unref(obj->timer_E); obj->timer_E=NULL; } } static void nict_send_request(belle_sip_nict_t *obj){ belle_sip_transaction_t *base=(belle_sip_transaction_t*)obj; const belle_sip_timer_config_t *cfg=belle_sip_transaction_get_timer_config(base); belle_sip_transaction_set_state(base,BELLE_SIP_TRANSACTION_TRYING); obj->timer_F=belle_sip_timeout_source_new((belle_sip_source_func_t)nict_on_timer_F,obj,cfg->T1*64); belle_sip_object_set_name((belle_sip_object_t*)obj->timer_F,"timer_F"); belle_sip_transaction_start_timer(base,obj->timer_F); if (!belle_sip_channel_is_reliable(base->channel)){ obj->timer_E=belle_sip_timeout_source_new((belle_sip_source_func_t)nict_on_timer_E,obj,cfg->T1); belle_sip_object_set_name((belle_sip_object_t*)obj->timer_E,"timer_E"); belle_sip_transaction_start_timer(base,obj->timer_E); } belle_sip_channel_queue_message(base->channel,(belle_sip_message_t*)base->request); } static void nict_destroy(belle_sip_nict_t *obj){ nict_on_terminate(obj); } BELLE_SIP_DECLARE_NO_IMPLEMENTED_INTERFACES(belle_sip_nict_t); BELLE_SIP_INSTANCIATE_CUSTOM_VPTR_BEGIN(belle_sip_nict_t) { { { BELLE_SIP_VPTR_INIT(belle_sip_nict_t,belle_sip_client_transaction_t,TRUE), (belle_sip_object_destroy_t)nict_destroy, NULL, NULL, BELLE_SIP_DEFAULT_BUFSIZE_HINT }, (void (*)(belle_sip_transaction_t *))nict_on_terminate }, (void (*)(belle_sip_client_transaction_t*))nict_send_request, (void (*)(belle_sip_client_transaction_t*,belle_sip_response_t*))nict_on_response, (void (*)(belle_sip_client_transaction_t*))nict_stop_retransmissions } BELLE_SIP_INSTANCIATE_CUSTOM_VPTR_END belle_sip_nict_t *belle_sip_nict_new(belle_sip_provider_t *prov, belle_sip_request_t *req){ belle_sip_nict_t *obj=belle_sip_object_new(belle_sip_nict_t); belle_sip_client_transaction_init((belle_sip_client_transaction_t*)obj,prov,req); return obj; } belle-sip-5.2.0+dfsg/src/nist.c000066400000000000000000000101751434613136500162330ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ /** * non-INVITE server transaction implementation. **/ #include #include "belle_sip_internal.h" static void nist_on_terminate(belle_sip_nist_t *obj){ belle_sip_transaction_t *base=(belle_sip_transaction_t*)obj; if (obj->timer_J){ belle_sip_transaction_stop_timer(base,obj->timer_J); belle_sip_object_unref(obj->timer_J); obj->timer_J=NULL; } } static void nist_destroy(belle_sip_nist_t *obj){ nist_on_terminate(obj); } static int nist_on_timer_J(belle_sip_nist_t *obj){ belle_sip_transaction_terminate((belle_sip_transaction_t *)obj); return BELLE_SIP_STOP; } static void nist_set_completed(belle_sip_nist_t *obj){ belle_sip_transaction_t *base=(belle_sip_transaction_t*)obj; const belle_sip_timer_config_t *cfg=belle_sip_transaction_get_timer_config(base); int tval; if (!belle_sip_channel_is_reliable(base->channel)) tval=cfg->T1*64; else tval=0; obj->timer_J=belle_sip_timeout_source_new((belle_sip_source_func_t)nist_on_timer_J,obj,tval); belle_sip_transaction_start_timer(base,obj->timer_J); belle_sip_transaction_set_state(base,BELLE_SIP_TRANSACTION_COMPLETED); } static int nist_send_new_response(belle_sip_nist_t *obj, belle_sip_response_t *resp){ belle_sip_transaction_t *base=(belle_sip_transaction_t*)obj; int code=belle_sip_response_get_status_code(resp); int ret=0; switch(base->state){ case BELLE_SIP_TRANSACTION_TRYING: if (code<200){ belle_sip_transaction_set_state(base,BELLE_SIP_TRANSACTION_PROCEEDING); belle_sip_channel_queue_message(base->channel,(belle_sip_message_t*)resp); break; } BCTBX_NO_BREAK; /* no break nist can directly pass from TRYING to PROCEEDING*/ case BELLE_SIP_TRANSACTION_PROCEEDING: if (code>=200){ nist_set_completed(obj); } belle_sip_channel_queue_message(base->channel,(belle_sip_message_t*)resp); break; case BELLE_SIP_TRANSACTION_COMPLETED: belle_sip_warning("nist_send_new_response(): not allowed to send a response while transaction is completed."); ret=-1; /*not allowed to send a response at this time*/ break; default: //ignore break; } return ret; } static void nist_on_request_retransmission(belle_sip_nist_t *obj){ belle_sip_transaction_t *base=(belle_sip_transaction_t*)obj; switch(base->state){ case BELLE_SIP_TRANSACTION_PROCEEDING: case BELLE_SIP_TRANSACTION_COMPLETED: belle_sip_channel_queue_message(base->channel,(belle_sip_message_t*)base->last_response); break; default: //ignore break; } } BELLE_SIP_DECLARE_NO_IMPLEMENTED_INTERFACES(belle_sip_nist_t); BELLE_SIP_INSTANCIATE_CUSTOM_VPTR_BEGIN(belle_sip_nist_t) { { { BELLE_SIP_VPTR_INIT(belle_sip_nist_t,belle_sip_server_transaction_t,TRUE), (belle_sip_object_destroy_t)nist_destroy, NULL, NULL, BELLE_SIP_DEFAULT_BUFSIZE_HINT }, (void (*)(belle_sip_transaction_t *))nist_on_terminate }, (int (*)(belle_sip_server_transaction_t*, belle_sip_response_t *))nist_send_new_response, (void (*)(belle_sip_server_transaction_t*))nist_on_request_retransmission, } BELLE_SIP_INSTANCIATE_CUSTOM_VPTR_END belle_sip_nist_t *belle_sip_nist_new(belle_sip_provider_t *prov, belle_sip_request_t *req){ belle_sip_nist_t *obj=belle_sip_object_new(belle_sip_nist_t); belle_sip_transaction_t *base=(belle_sip_transaction_t*)obj; belle_sip_server_transaction_init((belle_sip_server_transaction_t*)obj,prov,req); belle_sip_transaction_set_state(base,BELLE_SIP_TRANSACTION_TRYING); return obj; } belle-sip-5.2.0+dfsg/src/object++.cc000066400000000000000000000101311434613136500170050ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "belle-sip/object++.hh" #include "belle_sip_internal.h" #ifdef __GNUC__ #include #endif namespace bellesip { class ObjectCAccessors { public: static belle_sip_error_code sMarshal(belle_sip_object_t* obj, char* buff, size_t buff_size, size_t *offset) { return Object::getCppObject(obj)->marshal(buff, buff_size, offset); } static void doDelete(belle_sip_object_t* obj) { delete Object::getCppObject(obj); } static const char* getTypeName(const belle_sip_object_t *obj){ static thread_local std::string readableTypeName; const Object *cppObject = Object::getCppObject(obj); #ifdef __GNUC__ int status = 0; char *tmp = abi::__cxa_demangle(typeid(*cppObject).name(), 0, 0, &status); if (status != 0){ #endif readableTypeName = typeid(*cppObject).name(); #ifdef __GNUC__ }else{ readableTypeName = tmp; free(tmp); } #endif return readableTypeName.c_str(); } }; void Object::init(){ static bool offsetDefined = false; belle_sip_object_vptr_t *vptr = belle_sip_cpp_object_t_vptr_get(); if (!offsetDefined){ vptr->cpp_offset = (int) ((intptr_t)&mObject - (intptr_t)this); offsetDefined = true; } memset(&mObject, 0, sizeof(mObject)); /*the new allocator does not zero the memory*/ _belle_sip_object_init(&mObject, vptr); } Object::Object(){ init(); } Object::Object(const Object &other){ init(); mObject.vptr->get_parent()->clone(&mObject, &other.mObject); /*belle_sip_object_t own's clone method*/ } Object::~Object(){ if (mObject.ref != -1){ /*note: throwing an exception here does not work*/ belle_sip_fatal("bellesip::Object [%p] has been destroyed directly with delete operator. This is prohibited, use unref() instead.", this); } belle_sip_object_uninit(&mObject); belle_sip_debug("Object destroyed [%p]", &mObject); } Object *Object::ref(){ belle_sip_object_ref(&mObject); return this; } const Object *Object::ref() const{ belle_sip_object_ref(&mObject); return this; } void Object::unref(){ belle_sip_object_unref(&mObject); } void Object::constUnref()const{ belle_sip_object_unref(&mObject); } std::string Object::toString() const { return std::string(); } belle_sip_error_code Object::marshal(char* buff, size_t buff_size, size_t *offset){ std::string tmp = toString(); if (tmp.size() >= buff_size) { return BELLE_SIP_BUFFER_OVERFLOW; } strncpy(buff, tmp.c_str(), buff_size); *offset += tmp.size(); return BELLE_SIP_OK; } Object *Object::clone() const { return new Object(*this); } belle_sip_object_t *Object::getCObject(){ return &mObject; } const belle_sip_object_t *Object::getCObject()const{ return &mObject; } Object *Object::getCppObject(void *ptr){ belle_sip_cpp_object_t *obj = BELLE_SIP_CAST(ptr, belle_sip_cpp_object_t); intptr_t cppaddr = (intptr_t)obj - (intptr_t)obj->vptr->cpp_offset; return reinterpret_cast(cppaddr); } const Object *Object::getCppObject(const void *ptr){ return Object::getCppObject((void*)ptr); } }//end of namespace void belle_sip_cpp_object_delete(belle_sip_object_t *obj){ bellesip::ObjectCAccessors::doDelete(obj); } const char * belle_sip_cpp_object_get_type_name(const belle_sip_object_t *obj){ return bellesip::ObjectCAccessors::getTypeName(obj); } BELLE_SIP_DECLARE_NO_IMPLEMENTED_INTERFACES(belle_sip_cpp_object_t); BELLE_SIP_INSTANCIATE_VPTR3(belle_sip_cpp_object_t,belle_sip_object_t,NULL,NULL,bellesip::ObjectCAccessors::sMarshal,NULL,NULL,FALSE,TRUE); belle-sip-5.2.0+dfsg/src/parserutils.h000066400000000000000000000043421434613136500176370ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef belle_sip_parserutils_h #define belle_sip_parserutils_h #include "port.h" static BELLESIP_INLINE int belle_sip_strcasecmp(const char*a, const char* b) { if (!a || !b) return 0; return strcasecmp(a,b) == 0; } #define IS_TOKEN(token) \ belle_sip_strcasecmp(#token,(const char*)INPUT->toStringTT(INPUT,LT(1),LT(strlen(#token)))->chars) #define IS_HEADER_NAMED(name,compressed_name) (IS_TOKEN(compressed_name) || IS_TOKEN(name)) #define STRCASECMP_HEADER_NAMED(name,compressed_name,value) \ (strcasecmp(compressed_name,(const char*)value) == 0 || strcasecmp(name,(const char*)value) == 0 ) #define ANTLR3_LOG_EXCEPTION() belle_sip_message("[\%s] reason [\%s] at line[\%u] position[\%d]",(const char*)EXCEPTION->name,(const char*)EXCEPTION->message,EXCEPTION->line,EXCEPTION->charPositionInLine); BELLESIP_EXPORT void belle_sip_header_set_next(belle_sip_header_t* header,belle_sip_header_t* next); belle_sip_param_pair_t* belle_sip_param_pair_new(const char* name,const char* value); char* _belle_sip_str_dup_and_unquote_string(const char* quoted_string); /** * quoted-string = SWS DQUOTE *(qdtext / quoted-pair ) DQUOTE qdtext = LWS / %x21 / %x23-5B / %x5D-7E / UTF8-NONASCII quoted-pair = "\" (%x00-09 / %x0B-0C / %x0E-7F) remove any \ * */ BELLESIP_EXPORT char* belle_sip_string_to_backslash_less_unescaped_string(const char* buff); BELLESIP_EXPORT char* belle_sip_display_name_to_backslashed_escaped_string(const char* buff); #endif belle-sip-5.2.0+dfsg/src/port.c000066400000000000000000000144071434613136500162440ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "belle_sip_internal.h" #ifdef _WIN32 #include #include #ifdef HAVE_COMPILER_TLS static __declspec(thread) const void *current_thread_data = NULL; #endif static int sockets_initd=0; int belle_sip_init_sockets(void){ if (sockets_initd==0){ WSADATA data; int err = WSAStartup(MAKEWORD(2,2), &data); if (err != 0) { belle_sip_error("WSAStartup failed with error: %d\n", err); return -1; } } sockets_initd++; return 0; } void belle_sip_uninit_sockets(void){ sockets_initd--; if (sockets_initd==0) WSACleanup(); } typedef struct thread_param { void * (*func)(void *); void * arg; } thread_param_t; static unsigned WINAPI thread_starter(void *data) { thread_param_t *params = (thread_param_t*)data; params->func(params->arg); belle_sip_free(data); return 0; } int belle_sip_thread_create(belle_sip_thread_t *thread, void *attr, void * (*func)(void *), void *data) { thread_param_t *params = belle_sip_new(thread_param_t); params->func = func; params->arg = data; *thread = (HANDLE)_beginthreadex(NULL, 0, thread_starter, params, 0, NULL); return 0; } int belle_sip_thread_join(belle_sip_thread_t thread, void **unused) { if (thread != NULL) { WaitForSingleObjectEx(thread, INFINITE, FALSE); CloseHandle(thread); } return 0; } int belle_sip_mutex_init(belle_sip_mutex_t *mutex, void *attr) { #ifdef BELLE_SIP_WINDOWS_DESKTOP *mutex = CreateMutex(NULL, FALSE, NULL); #else InitializeSRWLock(mutex); #endif return 0; } int belle_sip_mutex_lock(belle_sip_mutex_t * hMutex) { #ifdef BELLE_SIP_WINDOWS_DESKTOP WaitForSingleObject(*hMutex, INFINITE); #else AcquireSRWLockExclusive(hMutex); #endif return 0; } int belle_sip_mutex_unlock(belle_sip_mutex_t * hMutex) { #ifdef BELLE_SIP_WINDOWS_DESKTOP ReleaseMutex(*hMutex); #else ReleaseSRWLockExclusive(hMutex); #endif return 0; } int belle_sip_mutex_destroy(belle_sip_mutex_t * hMutex) { #ifdef BELLE_SIP_WINDOWS_DESKTOP CloseHandle(*hMutex); #endif return 0; } int belle_sip_socket_set_nonblocking(belle_sip_socket_t sock) { unsigned long nonBlock = 1; return ioctlsocket(sock, FIONBIO , &nonBlock); } int belle_sip_socket_set_dscp(belle_sip_socket_t sock, int ai_family, int dscp){ belle_sip_warning("belle_sip_socket_set_dscp(): not implemented."); return -1; } const char *belle_sip_get_socket_error_string(){ return belle_sip_get_socket_error_string_from_code(WSAGetLastError()); } const char *belle_sip_get_socket_error_string_from_code(int code){ static CHAR msgBuf[256]; #ifdef _UNICODE static WCHAR wMsgBuf[256]; size_t ret; FormatMessageW( FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, code, 0, // Default language (LPWSTR) &wMsgBuf, sizeof(wMsgBuf), NULL); ret = wcstombs(msgBuf, wMsgBuf, sizeof(msgBuf)); if (ret == sizeof(msgBuf)) msgBuf[sizeof(msgBuf) - 1] = '\0'; #else FormatMessageA( FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, code, 0, // Default language (LPTSTR) &msgBuf, sizeof(msgBuf), NULL); /*FIXME: should convert from TCHAR to UTF8 */ #endif return (const char *)msgBuf; } int belle_sip_thread_key_create(belle_sip_thread_key_t *key, void (*destructor)(void*) ){ #ifdef HAVE_COMPILER_TLS *key = (belle_sip_thread_key_t)¤t_thread_data; #else *key = (belle_sip_thread_key_t)TlsAlloc(); if (*key==TLS_OUT_OF_INDEXES){ belle_sip_error("TlsAlloc(): TLS_OUT_OF_INDEXES."); return -1; } #endif return 0; } int belle_sip_thread_setspecific(belle_sip_thread_key_t key,const void *value){ #ifdef HAVE_COMPILER_TLS current_thread_data = value; return 0; #else return TlsSetValue((DWORD)key,(void*)value) ? 0 : -1; #endif } const void* belle_sip_thread_getspecific(belle_sip_thread_key_t key){ #ifdef HAVE_COMPILER_TLS return current_thread_data; #else return TlsGetValue((DWORD)key); #endif } int belle_sip_thread_key_delete(belle_sip_thread_key_t key){ #ifdef HAVE_COMPILER_TLS current_thread_data = NULL; return 0; #else return TlsFree((DWORD)key) ? 0 : -1; #endif } #ifndef BELLE_SIP_WINDOWS_DESKTOP void belle_sip_sleep(unsigned int ms) { HANDLE sleepEvent = CreateEventEx(NULL, NULL, CREATE_EVENT_MANUAL_RESET, EVENT_ALL_ACCESS); if (!sleepEvent) return; WaitForSingleObjectEx(sleepEvent, ms, FALSE); } #endif #else #include int belle_sip_init_sockets(){ signal(SIGPIPE,SIG_IGN); return 0; } void belle_sip_uninit_sockets(){ } int belle_sip_socket_set_nonblocking(belle_sip_socket_t sock){ return fcntl (sock, F_SETFL, fcntl(sock,F_GETFL) | O_NONBLOCK); } int belle_sip_socket_set_dscp(belle_sip_socket_t sock, int ai_family, int dscp){ int tos; int proto; int value_type; int retval; tos = (dscp << 2) & 0xFC; switch (ai_family) { case AF_INET: proto=IPPROTO_IP; value_type=IP_TOS; break; case AF_INET6: proto=IPPROTO_IPV6; #ifdef IPV6_TCLASS /*seems not defined by my libc*/ value_type=IPV6_TCLASS; #else value_type=IP_TOS; #endif break; default: belle_sip_error("Cannot set DSCP because socket family is unspecified."); return -1; } retval = bctbx_setsockopt(sock, proto, value_type, (const char*)&tos, sizeof(tos)); if (retval==-1) belle_sip_error("Fail to set DSCP value on socket: %s",belle_sip_get_socket_error_string()); return retval; } #endif int belle_sip_socket_enable_dual_stack(belle_sip_socket_t sock){ int value=0; int err=bctbx_setsockopt(sock, IPPROTO_IPV6, IPV6_V6ONLY, (const char*)&value, sizeof(value)); if (err==-1){ belle_sip_warning("belle_sip_socket_enable_dual_stack: bctbx_setsockopt(IPV6_ONLY) failed: %s",belle_sip_get_socket_error_string()); } return err; } belle-sip-5.2.0+dfsg/src/port.h000066400000000000000000000136721434613136500162540ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef belle_sip_port_h #define belle_sip_port_h #include #ifndef _WIN32 #include #include #include #include #include #include #include #include #include #else #if defined(__MINGW32__) || !defined(WINAPI_FAMILY_PARTITION) || !defined(WINAPI_PARTITION_DESKTOP) #define BELLE_SIP_WINDOWS_DESKTOP 1 #elif defined(WINAPI_FAMILY_PARTITION) #if defined(WINAPI_PARTITION_DESKTOP) && WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #define BELLE_SIP_WINDOWS_DESKTOP 1 #elif defined(WINAPI_PARTITION_PHONE_APP) && WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_PHONE_APP) #define BELLE_SIP_WINDOWS_PHONE 1 #elif defined(WINAPI_PARTITION_APP) && WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) #define BELLE_SIP_WINDOWS_UNIVERSAL 1 #endif #endif #ifdef _MSC_VER #if (_MSC_VER >= 1900) #define BELLE_SIP_MSC_VER_GREATER_19 #endif #endif #include #include #define strcasecmp _stricmp #ifdef _MSC_VER #define snprintf _snprintf #define vsnprintf _vsnprintf #define strdup _strdup #else #include #endif /*AI_NUMERICSERV is not defined for windows XP. Since it is not essential, we define it to 0 (does nothing)*/ #ifndef AI_NUMERICSERV #define AI_NUMERICSERV 0 #endif #endif #if defined(_WIN32) || defined(__QNX__) /* Mingw32 does not define AI_V4MAPPED, however it is supported starting from Windows Vista. QNX also does not define AI_V4MAPPED. */ # ifndef AI_V4MAPPED # define AI_V4MAPPED 0x00000800 # endif # ifndef AI_ALL # define AI_ALL 0x00000100 # endif # ifndef IPV6_V6ONLY # define IPV6_V6ONLY 27 # endif #endif /* * Socket abstraction layer */ BELLESIP_EXPORT int belle_sip_init_sockets(void); BELLESIP_EXPORT void belle_sip_uninit_sockets(void); int belle_sip_socket_set_nonblocking (belle_sip_socket_t sock); int belle_sip_socket_set_dscp(belle_sip_socket_t sock, int ai_family, int dscp); int belle_sip_socket_enable_dual_stack(belle_sip_socket_t sock); #if defined(_WIN32) typedef HANDLE belle_sip_thread_t; #define belle_sip_thread_self_id() (unsigned long)GetCurrentThreadId() #define belle_sip_thread_get_id(thread) (unsigned long)GetThreadId(thread) typedef intptr_t belle_sip_thread_key_t; int belle_sip_thread_key_create(belle_sip_thread_key_t *key, void (*destructor)(void*) ); int belle_sip_thread_setspecific(belle_sip_thread_key_t key,const void *value); const void* belle_sip_thread_getspecific(belle_sip_thread_key_t key); int belle_sip_thread_key_delete(belle_sip_thread_key_t key); static BELLESIP_INLINE void belle_sip_close_socket(belle_sip_socket_t s){ closesocket(s); } static BELLESIP_INLINE int get_socket_error(void){ return WSAGetLastError(); } BELLESIP_EXPORT const char *belle_sip_get_socket_error_string(); const char *belle_sip_get_socket_error_string_from_code(int code); /* * Thread abstraction layer */ #ifdef _WIN32 typedef HANDLE belle_sip_thread_t; #ifdef BELLE_SIP_WINDOWS_DESKTOP typedef HANDLE belle_sip_mutex_t; #else typedef SRWLOCK belle_sip_mutex_t; #endif int belle_sip_thread_join(belle_sip_thread_t thread, void **retptr); int belle_sip_thread_create(belle_sip_thread_t *thread, void *attr, void * (*routine)(void*), void *arg); int belle_sip_mutex_init(belle_sip_mutex_t *m, void *attr_unused); int belle_sip_mutex_lock(belle_sip_mutex_t *mutex); int belle_sip_mutex_unlock(belle_sip_mutex_t *mutex); int belle_sip_mutex_destroy(belle_sip_mutex_t *mutex); #else #include typedef pthread_t belle_sip_thread_t; typedef pthread_mutex_t belle_sip_mutex_t; #define belle_sip_thread_join(thread, retptr) pthread_join(thread, retptr) #define belle_sip_thread_create(thread, attr, routine, arg) pthread_create(thread, attr, routine, arg) #define belle_sip_mutex_init pthread_mutex_init #define belle_sip_mutex_lock pthread_mutex_lock #define belle_sip_mutex_unlock pthread_mutex_unlock #define belle_sip_mutex_destroy pthread_mutex_destroy #endif #ifndef BELLE_SIP_WINDOWS_DESKTOP BELLESIP_EXPORT void belle_sip_sleep(unsigned int ms); #else #define belle_sip_sleep Sleep #endif #define usleep(us) belle_sip_sleep((us)/1000) static BELLESIP_INLINE int inet_aton(const char *ip, struct in_addr *p){ *(long*)p=inet_addr(ip); return 0; } #else typedef pthread_t belle_sip_thread_t; #define belle_sip_thread_self_id() (unsigned long)pthread_self() #define belle_sip_thread_get_id(thread) (unsigned long)thread typedef pthread_key_t belle_sip_thread_key_t; #define belle_sip_thread_key_create(key,destructor) pthread_key_create(key,destructor) #define belle_sip_thread_setspecific(key,value) pthread_setspecific(key,value) #define belle_sip_thread_getspecific(key) pthread_getspecific(key) #define belle_sip_thread_key_delete(key) pthread_key_delete(key) static BELLESIP_INLINE void belle_sip_close_socket(belle_sip_socket_t s){ close(s); } static BELLESIP_INLINE int get_socket_error(void){ return errno; } #define belle_sip_get_socket_error_string() strerror(errno) #define belle_sip_get_socket_error_string_from_code(code) strerror(code) #endif #define BELLESIP_EWOULDBLOCK BCTBX_EWOULDBLOCK #define BELLESIP_EINPROGRESS BCTBX_EINPROGRESS #define belle_sip_error_code_is_would_block(err) ((err)==BELLESIP_EWOULDBLOCK || (err)==BELLESIP_EINPROGRESS) #endif belle-sip-5.2.0+dfsg/src/provider.c000066400000000000000000001715111434613136500171120ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "belle_sip_internal.h" #include "listeningpoint_internal.h" #include "md5.h" #include "belle-sip/message.h" static void belle_sip_provider_update_or_create_auth_context(belle_sip_provider_t *p,belle_sip_header_call_id_t* call_id,belle_sip_header_www_authenticate_t* authenticate,belle_sip_uri_t *from_uri,const char* realm); struct authorization_context { belle_sip_header_call_id_t* callid; const char* scheme; const char* realm; const char* nonce; const char* qop; const char* opaque; const char* user_id; const char* algorithm; int nonce_count; int is_proxy; /*To know if created by a 407*/ }; GET_SET_STRING(authorization_context,realm) GET_SET_STRING(authorization_context,nonce) GET_SET_STRING(authorization_context,qop) GET_SET_STRING(authorization_context,scheme) GET_SET_STRING(authorization_context,opaque) GET_SET_STRING(authorization_context,user_id) GET_SET_STRING(authorization_context,algorithm) GET_SET_INT(authorization_context,nonce_count,int) static authorization_context_t* belle_sip_authorization_create(belle_sip_header_call_id_t* call_id) { authorization_context_t* result = malloc(sizeof(authorization_context_t)); memset(result,0,sizeof(authorization_context_t)); result->callid=call_id; belle_sip_object_ref(result->callid); return result; } void belle_sip_authorization_destroy(authorization_context_t* object) { DESTROY_STRING(object,scheme); DESTROY_STRING(object,realm); DESTROY_STRING(object,nonce); DESTROY_STRING(object,qop); DESTROY_STRING(object,opaque); DESTROY_STRING(object,user_id); DESTROY_STRING(object,algorithm); belle_sip_object_unref(object->callid); belle_sip_free(object); } const char *belle_sip_authorization_get_algorithm(const belle_sip_authorization_t* object) { return authorization_context_get_algorithm(object); } static void finalize_transaction(belle_sip_transaction_t *tr){ belle_sip_transaction_state_t state=belle_sip_transaction_get_state(tr); if (state!=BELLE_SIP_TRANSACTION_TERMINATED){ belle_sip_message("Transaction [%p] still in state [%s], will force termination.",tr,belle_sip_transaction_state_to_string(state)); belle_sip_transaction_terminate(tr); } } static void finalize_transactions(const belle_sip_list_t *l){ belle_sip_list_t *copy=belle_sip_list_copy(l); belle_sip_list_free_with_data(copy,(void (*)(void*))finalize_transaction); } static void belle_sip_provider_uninit(belle_sip_provider_t *p){ finalize_transactions(p->client_transactions); p->client_transactions=NULL; finalize_transactions(p->server_transactions); p->server_transactions=NULL; p->listeners=belle_sip_list_free(p->listeners); p->internal_listeners=belle_sip_list_free(p->internal_listeners); p->auth_contexts=belle_sip_list_free_with_data(p->auth_contexts,(void(*)(void*))belle_sip_authorization_destroy); p->dialogs=belle_sip_list_free_with_data(p->dialogs,belle_sip_object_unref); p->lps=belle_sip_list_free_with_data(p->lps,belle_sip_object_unref); } static void channel_state_changed(belle_sip_channel_listener_t *obj, belle_sip_channel_t *chan, belle_sip_channel_state_t state){ belle_sip_io_error_event_t ev; belle_sip_provider_t* prov=BELLE_SIP_PROVIDER(obj); if (state == BELLE_SIP_CHANNEL_ERROR || state == BELLE_SIP_CHANNEL_DISCONNECTED || state == BELLE_SIP_CHANNEL_RETRY) { ev.transport=belle_sip_channel_get_transport_name(chan); ev.port=chan->peer_port; ev.host=chan->peer_name; ev.source=BELLE_SIP_OBJECT(prov); BELLE_SIP_PROVIDER_INVOKE_LISTENERS(prov->listeners,process_io_error,&ev); /*IO error is also relevant for internal listener like refreshers*/ BELLE_SIP_PROVIDER_INVOKE_LISTENERS(prov->internal_listeners,process_io_error,&ev); if (!chan->force_close && state != BELLE_SIP_CHANNEL_RETRY) belle_sip_provider_release_channel(prov,chan); } } static int notify_client_transaction_match(const void *transaction, const void *notify){ belle_sip_client_transaction_t *tr=(belle_sip_client_transaction_t*)transaction; belle_sip_request_t *notify_req=(belle_sip_request_t*)notify; return !belle_sip_client_transaction_is_notify_matching_pending_subscribe(tr,notify_req); } belle_sip_client_transaction_t * belle_sip_provider_find_matching_pending_subscribe_client_transaction_from_notify_req(belle_sip_provider_t *prov, belle_sip_request_t *req) { belle_sip_list_t* elem; if (strcmp("NOTIFY",belle_sip_request_get_method(req)) != 0) { belle_sip_error("belle_sip_provider_find_matching_pending_subscribe_client_transaction_from_notify_req requires a NOTIFY request, not a [%s], on prov [%p]" ,belle_sip_request_get_method(req) ,prov); } elem=belle_sip_list_find_custom(prov->client_transactions,notify_client_transaction_match,req); return elem?BELLE_SIP_CLIENT_TRANSACTION(elem->data):NULL; } static void belle_sip_provider_dispatch_request(belle_sip_provider_t* prov, belle_sip_request_t *req){ belle_sip_server_transaction_t *t; belle_sip_request_event_t ev; t=belle_sip_provider_find_matching_server_transaction(prov,req); if (t){ belle_sip_object_ref(t); belle_sip_server_transaction_on_request(t,req); belle_sip_object_unref(t); }else{ const char *method=belle_sip_request_get_method(req); ev.dialog=NULL; /* Should we limit to ACK ? */ /*Search for a dialog if exist */ if (strcmp("CANCEL",method) == 0) { /* Call leg does not exist */ belle_sip_server_transaction_t *tr = belle_sip_provider_create_server_transaction(prov, req); belle_sip_server_transaction_send_response(tr, belle_sip_response_create_from_request(req, 481)); return; } ev.dialog=belle_sip_provider_find_dialog_from_message(prov,(belle_sip_message_t*)req,1/*request=uas*/); if (ev.dialog){ if (strcmp("ACK",method)==0){ if (belle_sip_dialog_handle_ack(ev.dialog,req)==-1){ /*absorbed ACK retransmission, ignore */ return; } }else if ((strcmp("INVITE",method)==0)&&(ev.dialog->needs_ack)){ belle_sip_dialog_stop_200Ok_retrans(ev.dialog); }else if (!belle_sip_dialog_can_accept_request(ev.dialog, req)){ belle_sip_server_transaction_t *tr=belle_sip_provider_create_server_transaction(prov,req); belle_sip_server_transaction_send_response(tr, belle_sip_response_create_from_request(req,491)); return; } } else if (strcmp("NOTIFY",method) == 0) { /*search for matching subscribe*/ belle_sip_client_transaction_t *sub = belle_sip_provider_find_matching_pending_subscribe_client_transaction_from_notify_req(prov,req); if (sub) { belle_sip_message("Found matching subscribe for NOTIFY [%p], creating dialog",req); ev.dialog=belle_sip_provider_create_dialog_internal(prov,BELLE_SIP_TRANSACTION(sub),FALSE); } } if (prov->unconditional_answer_enabled && strcmp("ACK",method)!=0) { /*always answer predefined value (I.E 480 by default)*/ belle_sip_server_transaction_t *tr=belle_sip_provider_create_server_transaction(prov,req); belle_sip_server_transaction_send_response(tr,belle_sip_response_create_from_request(req,prov->unconditional_answer)); return; } else { ev.source=(belle_sip_object_t*)prov; ev.server_transaction=NULL; ev.request=req; BELLE_SIP_PROVIDER_INVOKE_LISTENERS(prov->listeners,process_request_event,&ev); } } } static belle_sip_list_t* belle_sip_provider_get_auth_context_by_realm_or_call_id(belle_sip_provider_t *p,belle_sip_header_call_id_t* call_id,belle_sip_uri_t *from_uri,const char* realm); static int belle_sip_auth_context_find_by_nonce(const void* elem, const void* nonce_value){ authorization_context_t * a = (authorization_context_t*)elem; if (a->nonce == NULL) return -1; return strcmp(a->nonce, (const char*)nonce_value); } static void belle_sip_provider_dispatch_response(belle_sip_provider_t* p, belle_sip_response_t *msg){ belle_sip_client_transaction_t *t; t=belle_sip_provider_find_matching_client_transaction(p,msg); /*good opportunity to cleanup auth context if answer = 401|407|403*/ switch (belle_sip_response_get_status_code(msg)) { case 401: case 403: case 407: { if (t!=NULL){ const char* nonce = NULL; belle_sip_message_t* req = BELLE_SIP_MESSAGE(belle_sip_transaction_get_request((belle_sip_transaction_t*)t)); belle_sip_header_authorization_t* authorization=BELLE_SIP_HEADER_AUTHORIZATION(belle_sip_message_get_header_by_type(req, belle_sip_header_proxy_authorization_t)); if (authorization==NULL) authorization=belle_sip_message_get_header_by_type(req, belle_sip_header_authorization_t); if (authorization!=NULL){ nonce = belle_sip_header_authorization_get_nonce(authorization); if (nonce != NULL){ belle_sip_list_t * auth_context_with_nonce = NULL; while ((auth_context_with_nonce = belle_sip_list_find_custom(p->auth_contexts, belle_sip_auth_context_find_by_nonce, nonce)) != NULL){ belle_sip_authorization_destroy(auth_context_with_nonce->data); p->auth_contexts = belle_sip_list_delete_link(p->auth_contexts, auth_context_with_nonce); } } } } break; } default: if (t!=NULL){ belle_sip_message_t* req = BELLE_SIP_MESSAGE(belle_sip_transaction_get_request((belle_sip_transaction_t*)t)); belle_sip_header_authentication_info_t *authentication_info = belle_sip_message_get_header_by_type(msg,belle_sip_header_authentication_info_t); belle_sip_list_t *authorization_lst = NULL; belle_sip_header_call_id_t *call_id = belle_sip_message_get_header_by_type(msg,belle_sip_header_call_id_t); belle_sip_header_from_t *from = belle_sip_message_get_header_by_type(req,belle_sip_header_from_t); belle_sip_uri_t *from_uri=belle_sip_header_address_get_uri((belle_sip_header_address_t*)from); /*searching for authentication headers*/ authorization_lst = belle_sip_list_copy(belle_sip_message_get_headers(BELLE_SIP_MESSAGE(req),BELLE_SIP_AUTHORIZATION)); /*search for proxy authenticate*/ authorization_lst=belle_sip_list_concat(authorization_lst,belle_sip_list_copy(belle_sip_message_get_headers(BELLE_SIP_MESSAGE(req),BELLE_SIP_PROXY_AUTHORIZATION))); /*update auth contexts with authenticate headers from response*/ for (;authentication_info && authorization_lst!=NULL;authorization_lst=authorization_lst->next) { belle_sip_header_authorization_t *authorization=BELLE_SIP_HEADER_AUTHORIZATION(authorization_lst->data); belle_sip_header_www_authenticate_t *www_authenticate = belle_sip_auth_helper_create_www_authenticate(authorization); belle_sip_header_www_authenticate_set_nonce(www_authenticate, belle_sip_header_authentication_info_get_next_nonce(authentication_info)); belle_sip_message( "Updating auth context for ream [%s] next nonce is going to be [%s]" , belle_sip_header_www_authenticate_get_realm(www_authenticate) , belle_sip_header_authentication_info_get_next_nonce(authentication_info)); belle_sip_provider_update_or_create_auth_context(p , call_id , www_authenticate , from_uri ,belle_sip_header_www_authenticate_get_realm(www_authenticate)); belle_sip_object_unref(www_authenticate); } if (authorization_lst) belle_sip_list_free(authorization_lst); } } if (t){ /*In some re-connection case, specially over udp, transaction may be found, but without associated channel*/ if (t->base.channel == NULL) { belle_sip_channel_t *chan; belle_sip_message("Transaction [%p] does not have any channel associated, searching for a new one",t); chan=belle_sip_provider_get_channel(p,t->next_hop); /*might be faster to get channel directly from upper level*/ if (chan){ belle_sip_object_ref(chan); belle_sip_channel_add_listener(chan,BELLE_SIP_CHANNEL_LISTENER(t)); t->base.channel=chan; } } } /* * If a transaction is found and have a channel, pass it to the transaction and let it decide what to do. * Else notifies directly. */ if (t && t->base.channel){ /*since the add_response may indirectly terminate the transaction, we need to guarantee the transaction is not freed * until full completion*/ belle_sip_object_ref(t); belle_sip_client_transaction_add_response(t,msg); belle_sip_object_unref(t); }else{ belle_sip_response_event_t event; event.source=(belle_sip_object_t*)p; event.client_transaction=NULL; event.dialog=NULL; event.response=msg; BELLE_SIP_PROVIDER_INVOKE_LISTENERS(p->listeners,process_response_event,&event); } } void belle_sip_provider_dispatch_message(belle_sip_provider_t *prov, belle_sip_message_t *msg){ int message_integrity_verified = TRUE; #ifndef BELLE_SIP_DONT_CHECK_HEADERS_IN_MESSAGE message_integrity_verified = belle_sip_message_check_headers(msg); #endif if (belle_sip_message_is_request(msg)){ if (message_integrity_verified) belle_sip_provider_dispatch_request(prov,(belle_sip_request_t*)msg); else{ belle_sip_response_t *resp=belle_sip_response_create_from_request(BELLE_SIP_REQUEST(msg),400); if (resp){ belle_sip_provider_send_response(prov,resp); } } }else{ if (message_integrity_verified){ belle_sip_provider_dispatch_response(prov,(belle_sip_response_t*)msg); }else if (!prov->response_integrity_checking_enabled){ belle_sip_message("response_integrity_checking is disabled, the response is notified despite it is invalid."); belle_sip_provider_dispatch_response(prov,(belle_sip_response_t*)msg); }else{ /* the response will be silently discarded */ } } belle_sip_object_unref(msg); } /* * takes example on 16.11 of RFC3261 */ static void compute_hash_from_invariants(belle_sip_message_t *msg, char *branchid, size_t branchid_size, const char *initial){ md5_state_t ctx; char tmp[256]={0}; uint8_t digest[16]; belle_sip_header_call_id_t* callid_hdr = belle_sip_message_get_header_by_type(msg,belle_sip_header_call_id_t); belle_sip_header_cseq_t* cseq_hdr = belle_sip_message_get_header_by_type(msg,belle_sip_header_cseq_t); belle_sip_header_from_t* from_hdr = belle_sip_message_get_header_by_type(msg,belle_sip_header_from_t); belle_sip_header_to_t* to_hdr = belle_sip_message_get_header_by_type(msg,belle_sip_header_to_t); unsigned int cseq = cseq_hdr ? belle_sip_header_cseq_get_seq_number(cseq_hdr) : 0; const char *callid = callid_hdr ? belle_sip_header_call_id_get_call_id(callid_hdr) : ""; const char *from_tag = from_hdr ? belle_sip_header_from_get_tag(from_hdr) : ""; const char *to_tag = to_hdr ? belle_sip_header_to_get_tag(to_hdr) : ""; belle_sip_uri_t *requri=NULL; belle_sip_header_via_t *via=NULL; belle_sip_header_via_t *prev_via=NULL; const belle_sip_list_t *vias=belle_sip_message_get_headers(msg,"via"); int is_request=belle_sip_message_is_request(msg); if (vias){ via=(belle_sip_header_via_t*)vias->data; if (vias->next){ prev_via=(belle_sip_header_via_t*)vias->next->data; } } if (is_request){ requri=belle_sip_request_get_uri(BELLE_SIP_REQUEST(msg)); } belle_sip_md5_init(&ctx); if (initial) belle_sip_md5_append(&ctx,(uint8_t*)initial,(int)strlen(initial)); if (requri){ size_t offset=0; belle_sip_object_marshal((belle_sip_object_t*)requri,tmp,sizeof(tmp)-1,&offset); belle_sip_md5_append(&ctx,(uint8_t*)tmp,(int)strlen(tmp)); } if (from_tag) belle_sip_md5_append(&ctx,(uint8_t*)from_tag,(int)strlen(from_tag)); if (to_tag) belle_sip_md5_append(&ctx,(uint8_t*)to_tag,(int)strlen(to_tag)); belle_sip_md5_append(&ctx,(uint8_t*)callid,(int)strlen(callid)); belle_sip_md5_append(&ctx,(uint8_t*)&cseq,sizeof(cseq)); if (is_request){ if (prev_via){ size_t offset=0; belle_sip_object_marshal((belle_sip_object_t*)prev_via,tmp,sizeof(tmp)-1,&offset); belle_sip_md5_append(&ctx,(uint8_t*)tmp,(int)offset); } }else{ if (via){ size_t offset=0; belle_sip_object_marshal((belle_sip_object_t*)via,tmp,sizeof(tmp)-1,&offset); belle_sip_md5_append(&ctx,(uint8_t*)tmp,(int)offset); } } belle_sip_md5_finish(&ctx,digest); belle_sip_octets_to_text(digest,sizeof(digest),branchid,branchid_size); } /* * RFC2543 10.1.2: * "Responses are mapped to requests by the matching To, From, Call-ID, * CSeq headers and the branch parameter of the first Via header." * * to-tag must not be used because an ACK will contain one while original INVITE will not. * Cseq's method is changed for CANCEL so we must not use it as well. **/ static char *compute_rfc2543_branch(belle_sip_request_t *req, char *branchid, size_t branchid_size){ md5_state_t ctx; unsigned int cseq=belle_sip_header_cseq_get_seq_number(belle_sip_message_get_header_by_type(req,belle_sip_header_cseq_t)); uint8_t digest[16]; const char* callid=belle_sip_header_call_id_get_call_id(belle_sip_message_get_header_by_type(req,belle_sip_header_call_id_t)); belle_sip_header_via_t *via=belle_sip_message_get_header_by_type(req,belle_sip_header_via_t); const char *v_branch=belle_sip_header_via_get_branch(via); belle_sip_header_from_t *from=belle_sip_message_get_header_by_type(req,belle_sip_header_from_t); char *from_str=belle_sip_object_to_string(from); belle_sip_header_to_t *to=belle_sip_message_get_header_by_type(req,belle_sip_header_to_t); char *to_str=belle_sip_object_to_string(belle_sip_header_address_get_uri((belle_sip_header_address_t*)to)); belle_sip_md5_init(&ctx); belle_sip_md5_append(&ctx,(uint8_t*)from_str,(int)strlen(from_str)); belle_sip_md5_append(&ctx,(uint8_t*)to_str,(int)strlen(to_str)); belle_sip_md5_append(&ctx,(uint8_t*)callid,(int)strlen(callid)); belle_sip_md5_append(&ctx,(uint8_t*)&cseq,sizeof(cseq)); belle_sip_free(from_str); belle_sip_free(to_str); if (v_branch) belle_sip_md5_append(&ctx,(uint8_t*)v_branch,(int)strlen(v_branch)); belle_sip_md5_finish(&ctx,digest); belle_sip_octets_to_text(digest,sizeof(digest),branchid,branchid_size); return branchid; } static void fix_outgoing_via(belle_sip_provider_t *p, belle_sip_channel_t *chan, belle_sip_message_t *msg){ belle_sip_header_via_t *via=BELLE_SIP_HEADER_VIA(belle_sip_message_get_header(msg,"via")); if (p->rport_enabled) belle_sip_parameters_set_parameter(BELLE_SIP_PARAMETERS(via),"rport",NULL); belle_sip_header_via_set_host(via,chan->local_ip); belle_sip_header_via_set_port(via,chan->local_port); belle_sip_header_via_set_protocol(via,"SIP/2.0"); belle_sip_header_via_set_transport(via,belle_sip_channel_get_transport_name(chan)); if (belle_sip_header_via_get_branch(via)==NULL){ /*branch id should not be set random here (stateless forwarding): but rather a hash of message invariants*/ char branchid[24]; char token[BELLE_SIP_BRANCH_ID_LENGTH]; compute_hash_from_invariants(msg,token,sizeof(token),NULL); snprintf(branchid,sizeof(branchid)-1,BELLE_SIP_BRANCH_MAGIC_COOKIE ".%s",token); belle_sip_header_via_set_branch(via,branchid); belle_sip_message("Computing branch id %s for message sent statelessly", branchid); } } static void channel_on_message_headers(belle_sip_channel_listener_t *obj, belle_sip_channel_t *chan, belle_sip_message_t *msg){ /*not used*/ } static void channel_on_message(belle_sip_channel_listener_t *obj, belle_sip_channel_t *chan, belle_sip_message_t *msg){ belle_sip_object_ref(msg); belle_sip_provider_dispatch_message(BELLE_SIP_PROVIDER(obj),msg); } static int channel_on_auth_requested(belle_sip_channel_listener_t *obj, belle_sip_channel_t *chan, const char* distinguished_name){ if (BELLE_SIP_IS_INSTANCE_OF(chan,belle_sip_tls_channel_t)) { belle_sip_provider_t *prov=BELLE_SIP_PROVIDER(obj); belle_sip_auth_event_t* auth_event = belle_sip_auth_event_create((belle_sip_object_t*)prov,NULL,NULL); belle_sip_tls_channel_t *tls_chan=BELLE_SIP_TLS_CHANNEL(chan); auth_event->mode=BELLE_SIP_AUTH_MODE_TLS; belle_sip_auth_event_set_distinguished_name(auth_event,distinguished_name); BELLE_SIP_PROVIDER_INVOKE_LISTENERS(prov->listeners,process_auth_requested,auth_event); belle_sip_tls_channel_set_client_certificates_chain(tls_chan,auth_event->cert); belle_sip_tls_channel_set_client_certificate_key(tls_chan,auth_event->key); belle_sip_auth_event_destroy(auth_event); } return 0; } static void fix_automatic_header_address(belle_sip_provider_t *prov, belle_sip_channel_t *chan, belle_sip_header_address_t *addr){ const char *ip=NULL; int port=0; belle_sip_uri_t* uri; const char *transport; belle_sip_header_contact_t *contact = BELLE_SIP_OBJECT_IS_INSTANCE_OF(addr, belle_sip_header_contact_t) ? (belle_sip_header_contact_t*)addr : NULL; if (contact && belle_sip_header_contact_is_wildcard(contact)) return; /* fix the contact if in automatic mode or null uri (for backward compatibility)*/ if (!(uri = belle_sip_header_address_get_uri((belle_sip_header_address_t*)addr))) { uri = belle_sip_uri_new(); belle_sip_header_address_set_uri((belle_sip_header_address_t*)addr,uri); belle_sip_header_address_set_automatic(addr,TRUE); }else if (belle_sip_uri_get_host(uri)==NULL){ belle_sip_header_address_set_automatic(addr,TRUE); } if (!belle_sip_header_address_get_automatic(addr)) return; if (prov->nat_helper){ ip=chan->public_ip ? chan->public_ip : chan->local_ip; port=chan->public_port ? chan->public_port : chan->local_port; if (contact) belle_sip_header_contact_set_unknown(contact,!chan->learnt_ip_port); }else{ ip=chan->local_ip; port=chan->local_port; } belle_sip_uri_set_host(uri, ip); transport = belle_sip_channel_get_transport_name_lower_case(chan); /* Enforce a transport name in "sip" scheme. * RFC3263 (locating SIP servers) says that UDP SHOULD be used in absence of transport parameter, * when port or numeric IP are provided. It is a SHOULD, not a must. * We need in this case that the automatic Contact exactly matches the socket that is going * to be used for sending the messages. * TODO: we may need to do the same for sips, but dtls is currently not supported. **/ if (!belle_sip_uri_is_secure(uri)) belle_sip_uri_set_transport_param(uri,transport); if (port!=belle_sip_listening_point_get_well_known_port(transport)) { belle_sip_uri_set_port(uri,port); }else{ belle_sip_uri_set_port(uri,0); } } static void channel_on_sending(belle_sip_channel_listener_t *obj, belle_sip_channel_t *chan, belle_sip_message_t *msg){ belle_sip_header_address_t* contact; belle_sip_header_content_length_t* content_length = (belle_sip_header_content_length_t*)belle_sip_message_get_header(msg,"Content-Length"); const belle_sip_list_t *contacts; belle_sip_header_refer_to_t *refer_to; belle_sip_provider_t *prov=BELLE_SIP_PROVIDER(obj); if (belle_sip_message_is_request(msg)){ const belle_sip_list_t *rroutes; /*probably better to be in channel*/ if (strcmp("CANCEL",belle_sip_request_get_method(BELLE_SIP_REQUEST(msg))) != 0) fix_outgoing_via(prov, chan, msg); /*else in case of CANCEL, via header must excatly be equal to INVITE's via header*/ for (rroutes=belle_sip_message_get_headers(msg,"Record-Route");rroutes!=NULL;rroutes=rroutes->next){ belle_sip_header_record_route_t* rr=(belle_sip_header_record_route_t*)rroutes->data; if (belle_sip_header_record_route_get_auto_outgoing(rr)) { belle_sip_uri_t *rr_uri = belle_sip_channel_create_routable_uri(chan); belle_sip_header_address_set_uri((belle_sip_header_address_t*) rr, rr_uri); } } } for (contacts=belle_sip_message_get_headers(msg,"Contact");contacts!=NULL;contacts=contacts->next){ contact=(belle_sip_header_address_t*)contacts->data; fix_automatic_header_address(prov, chan, contact); } refer_to = belle_sip_message_get_header_by_type(msg, belle_sip_header_refer_to_t); if (refer_to) fix_automatic_header_address(prov, chan, (belle_sip_header_address_t*)refer_to); /* * According to RFC3261, content-length is mandatory for stream based transport, but optional for datagram transport. * However some servers (opensips) are confused when they receive a SIP/UDP packet without Content-Length (they shouldn't). */ if (!content_length && belle_sip_message_get_body_size(msg) == 0 /*if body present, content_length is automatically added at channel level*/ #ifndef BELLE_SIP_FORCE_CONTENT_LENGTH && strcasecmp("udp",belle_sip_channel_get_transport_name(chan))!=0 #endif ) { content_length = belle_sip_header_content_length_create(0); belle_sip_message_add_header(msg,(belle_sip_header_t*)content_length); } } BELLE_SIP_IMPLEMENT_INTERFACE_BEGIN(belle_sip_provider_t,belle_sip_channel_listener_t) channel_state_changed, channel_on_message_headers, channel_on_message, channel_on_sending, channel_on_auth_requested BELLE_SIP_IMPLEMENT_INTERFACE_END BELLE_SIP_DECLARE_IMPLEMENTED_INTERFACES_1(belle_sip_provider_t,belle_sip_channel_listener_t); BELLE_SIP_INSTANCIATE_VPTR(belle_sip_provider_t,belle_sip_object_t,belle_sip_provider_uninit,NULL,NULL,FALSE); belle_sip_provider_t *belle_sip_provider_new(belle_sip_stack_t *s, belle_sip_listening_point_t *lp){ belle_sip_provider_t *p=belle_sip_object_new(belle_sip_provider_t); p->stack=s; p->rport_enabled=1; p->unconditional_answer = 480; p->response_integrity_checking_enabled = TRUE; if (lp) belle_sip_provider_add_listening_point(p,lp); return p; } /* This function is used by a proxy to set its call side record route. * It must be called before adding any VIA header to the message. */ belle_sip_uri_t *belle_sip_provider_create_inbound_record_route(belle_sip_provider_t *p, belle_sip_request_t *req) { belle_sip_uri_t* origin = belle_sip_request_extract_origin(req); belle_sip_hop_t *hop = belle_sip_hop_new_from_uri(origin); belle_sip_channel_t *inChan = belle_sip_provider_get_channel(p, hop); return belle_sip_channel_create_routable_uri(inChan); } static belle_sip_channel_t* _belle_sip_provider_find_channel_using_routable(belle_sip_provider_t *p, const belle_sip_uri_t* routable_uri) { const char *transport; belle_sip_listening_point_t *lp; belle_sip_list_t *elem; belle_sip_channel_t *chan; belle_sip_uri_t* chan_uri; if (!routable_uri) return NULL; transport = belle_sip_uri_is_secure(routable_uri) ? "TLS" : belle_sip_uri_get_transport_param(routable_uri); lp = belle_sip_provider_get_listening_point(p, transport); if (!lp) return NULL; for(elem=lp->channels; elem ;elem=elem->next){ chan=(belle_sip_channel_t*)elem->data; chan_uri = belle_sip_channel_create_routable_uri(chan); if (belle_sip_uri_get_port(routable_uri) == belle_sip_uri_get_port(chan_uri) && 0 == strcmp(belle_sip_uri_get_host(routable_uri), belle_sip_uri_get_host(chan_uri))) { return chan; } } return NULL; } /* * This function is not efficient at all, REVISIT. * Its goal is to determine whether a routable (route or record route) matches the local provider instance. * In order to do that, we go through all the channels and ask them their routable uri, and see if it matches the uri passed in argument. * This creates a lot of temporary objects and iterates through a potentially long list of routables. * Some more efficient solutions could be: * 1- insert a magic cookie parameter in each routable created by the provider, so that recognition is immediate. * Drawback: use of non-standard, possibly conflicting parameter. * 2- check the listening point's uri first (but need to match the ip address to any local ip if it is INADDR_ANY), then use belle_sip_listening_point_get_channel() * to see if a channel is matching. * belle_sip_listening_point_get_channel() is not optimized currently but will have to be, so at least we leverage on something that will be optimized. **/ int belle_sip_provider_is_us(belle_sip_provider_t *p, belle_sip_uri_t* uri) { belle_sip_channel_t* chan = _belle_sip_provider_find_channel_using_routable(p, uri); return !!chan; } int belle_sip_provider_add_listening_point(belle_sip_provider_t *p, belle_sip_listening_point_t *lp){ if (lp == NULL) { belle_sip_error("Cannot add NULL lp to provider [%p]",p); return -1; } belle_sip_listening_point_set_channel_listener(lp,BELLE_SIP_CHANNEL_LISTENER(p)); p->lps=belle_sip_list_append(p->lps,belle_sip_object_ref(lp)); return 0; } void belle_sip_provider_remove_listening_point(belle_sip_provider_t *p, belle_sip_listening_point_t *lp) { p->lps=belle_sip_list_remove(p->lps,lp); belle_sip_object_unref(lp); return; } belle_sip_listening_point_t *belle_sip_provider_get_listening_point(belle_sip_provider_t *p, const char *transport){ belle_sip_list_t *l; for(l=p->lps;l!=NULL;l=l->next){ belle_sip_listening_point_t *lp=(belle_sip_listening_point_t*)l->data; if (strcasecmp(belle_sip_listening_point_get_transport(lp),transport)==0) return lp; } return NULL; } const belle_sip_list_t *belle_sip_provider_get_listening_points(belle_sip_provider_t *p){ return p->lps; } void belle_sip_provider_add_internal_sip_listener(belle_sip_provider_t *p, belle_sip_listener_t *l, int prepend){ if (prepend) p->internal_listeners=belle_sip_list_prepend(p->internal_listeners,l); else p->internal_listeners=belle_sip_list_append(p->internal_listeners,l); } void belle_sip_provider_remove_internal_sip_listener(belle_sip_provider_t *p, belle_sip_listener_t *l){ p->internal_listeners=belle_sip_list_remove(p->internal_listeners,l); } void belle_sip_provider_add_sip_listener(belle_sip_provider_t *p, belle_sip_listener_t *l){ p->listeners=belle_sip_list_append(p->listeners,l); } void belle_sip_provider_remove_sip_listener(belle_sip_provider_t *p, belle_sip_listener_t *l){ p->listeners=belle_sip_list_remove(p->listeners,l); } belle_sip_header_call_id_t * belle_sip_provider_create_call_id(const belle_sip_provider_t *prov){ belle_sip_header_call_id_t *cid=belle_sip_header_call_id_new(); char tmp[11]; belle_sip_header_call_id_set_call_id(cid,belle_sip_random_token(tmp,sizeof(tmp))); return cid; } belle_sip_dialog_t * belle_sip_provider_create_dialog(belle_sip_provider_t *prov, belle_sip_transaction_t *t) { return belle_sip_provider_create_dialog_internal(prov,t,TRUE); } belle_sip_dialog_t * belle_sip_provider_create_dialog_internal(belle_sip_provider_t *prov, belle_sip_transaction_t *t,unsigned int check_last_resp){ belle_sip_dialog_t *dialog=NULL; if (check_last_resp && t->last_response){ int code=belle_sip_response_get_status_code(t->last_response); if (code>=200 && code<300){ belle_sip_fatal("You must not create dialog after sending the response that establish the dialog."); return NULL; } } dialog=belle_sip_dialog_new(t); if (dialog) { belle_sip_transaction_set_dialog(t,dialog); belle_sip_provider_add_dialog(prov,dialog); } return dialog; } static belle_sip_dialog_t* _belle_sip_provider_find_dialog(const belle_sip_provider_t *prov, const char* call_id, const char* local_tag, const char* remote_tag, bool_t local_tag_mandatory) { belle_sip_list_t* iterator; belle_sip_dialog_t*returned_dialog=NULL; if (call_id == NULL || (local_tag_mandatory && (local_tag == NULL)) || remote_tag == NULL) { return NULL; } for(iterator=prov->dialogs;iterator!=NULL;iterator=iterator->next) { belle_sip_dialog_t* dialog=(belle_sip_dialog_t*)iterator->data; dialog=(belle_sip_dialog_t*)iterator->data; /*ignore dialog in state BELLE_SIP_DIALOG_NULL, is it really the correct things to do*/ if (belle_sip_dialog_get_state(dialog) != BELLE_SIP_DIALOG_NULL && _belle_sip_dialog_match(dialog,call_id,local_tag,remote_tag)) { if (!returned_dialog) returned_dialog=dialog; else { belle_sip_fatal("More than 1 dialog is matching, check your app"); } } } return returned_dialog; } /*find a dialog given the call id, local-tag and to-tag*/ belle_sip_dialog_t* belle_sip_provider_find_dialog(const belle_sip_provider_t *prov, const char* call_id, const char* local_tag, const char* remote_tag) { return _belle_sip_provider_find_dialog(prov, call_id, local_tag, remote_tag, TRUE); } belle_sip_dialog_t* belle_sip_provider_find_dialog_with_remote_tag(const belle_sip_provider_t *prov, const char* call_id,const char* remote_tag) { return _belle_sip_provider_find_dialog(prov, call_id, NULL, remote_tag, FALSE); } /*finds an existing dialog for an outgoing or incoming message */ belle_sip_dialog_t *belle_sip_provider_find_dialog_from_message(belle_sip_provider_t *prov, belle_sip_message_t *msg, int as_uas){ belle_sip_header_call_id_t *call_id; belle_sip_header_from_t *from; belle_sip_header_to_t *to; const char *from_tag; const char *to_tag; const char *call_id_value; const char *local_tag,*remote_tag; if (belle_sip_message_is_request(msg)){ belle_sip_request_t *req=BELLE_SIP_REQUEST(msg); if (req->dialog) return req->dialog; } to=belle_sip_message_get_header_by_type(msg,belle_sip_header_to_t); if (to==NULL || (to_tag=belle_sip_header_to_get_tag(to))==NULL){ /* a request without to tag cannot be part of a dialog */ return NULL; } call_id=belle_sip_message_get_header_by_type(msg,belle_sip_header_call_id_t); from=belle_sip_message_get_header_by_type(msg,belle_sip_header_from_t); if (call_id==NULL || from==NULL || (from_tag=belle_sip_header_from_get_tag(from))==NULL) return NULL; call_id_value=belle_sip_header_call_id_get_call_id(call_id); local_tag=as_uas ? to_tag : from_tag; remote_tag=as_uas ? from_tag : to_tag; return belle_sip_provider_find_dialog(prov,call_id_value,local_tag,remote_tag); } void belle_sip_provider_add_dialog(belle_sip_provider_t *prov, belle_sip_dialog_t *dialog){ prov->dialogs=belle_sip_list_prepend(prov->dialogs,belle_sip_object_ref(dialog)); } static void notify_dialog_terminated(belle_sip_dialog_terminated_event_t* ev) { BELLE_SIP_PROVIDER_INVOKE_LISTENERS_FOR_DIALOG(ev->dialog,process_dialog_terminated,ev); belle_sip_object_unref(ev->dialog); belle_sip_free(ev); } void belle_sip_provider_remove_dialog(belle_sip_provider_t *prov, belle_sip_dialog_t *dialog){ belle_sip_dialog_terminated_event_t* ev=belle_sip_malloc(sizeof(belle_sip_dialog_terminated_event_t)); ev->source=prov; ev->dialog=dialog; ev->is_expired=dialog->is_expired; prov->dialogs=belle_sip_list_remove(prov->dialogs,dialog); belle_sip_main_loop_do_later(belle_sip_stack_get_main_loop(prov->stack) ,(belle_sip_callback_t) notify_dialog_terminated , ev); } belle_sip_client_transaction_t *belle_sip_provider_create_client_transaction(belle_sip_provider_t *prov, belle_sip_request_t *req){ const char *method=belle_sip_request_get_method(req); belle_sip_client_transaction_t *t; belle_sip_client_transaction_t *inv_transaction; if (strcmp(method,"INVITE")==0) t=(belle_sip_client_transaction_t*)belle_sip_ict_new(prov,req); else if (strcmp(method,"ACK")==0){ belle_sip_error("belle_sip_provider_create_client_transaction() cannot be used for ACK requests."); return NULL; } else { t=(belle_sip_client_transaction_t*)belle_sip_nict_new(prov,req); if (strcmp(method,"CANCEL")==0){ /*force next hop*/ inv_transaction=belle_sip_provider_find_matching_client_transaction_from_req(prov,req); if (inv_transaction && inv_transaction->next_hop) { /*found corresponding ict, taking next hop*/ /*9.1 Client Behavior * The destination address, port, and transport for the CANCEL MUST be identical to those used to send the original request.*/ t->next_hop=(belle_sip_hop_t*)belle_sip_object_ref(inv_transaction->next_hop); } else { belle_sip_error ("No corresponding ict nor dest found for cancel request attached to transaction [%p]",t); } } } belle_sip_transaction_set_dialog((belle_sip_transaction_t*)t,belle_sip_provider_find_dialog_from_message(prov,(belle_sip_message_t*)req,FALSE)); belle_sip_request_set_dialog(req,NULL);/*get rid of the reference to the dialog, which is no longer needed in the message. This is to avoid circular references.*/ return t; } belle_sip_server_transaction_t *belle_sip_provider_create_server_transaction(belle_sip_provider_t *prov, belle_sip_request_t *req){ belle_sip_server_transaction_t* t; belle_sip_response_t *resp = NULL; if (strcmp(belle_sip_request_get_method(req),"INVITE")==0){ t=(belle_sip_server_transaction_t*)belle_sip_ist_new(prov,req); /*create a 100 Trying response to immediately stop client retransmissions*/ resp=belle_sip_response_create_from_request(req,100); }else if (strcmp(belle_sip_request_get_method(req),"ACK")==0){ belle_sip_error("Creating a server transaction for an ACK is not a good idea, probably"); return NULL; }else t=(belle_sip_server_transaction_t*)belle_sip_nist_new(prov,req); belle_sip_transaction_set_dialog((belle_sip_transaction_t*)t,belle_sip_provider_find_dialog_from_message(prov,(belle_sip_message_t*)req,TRUE)); belle_sip_provider_add_server_transaction(prov,t); if (resp){ /*the response must be sent after the server transaction is refd by belle_sip_provider_add_server_transaction , otherwise * through callbacks we'll reach a point where it is unrefed before leaving from this function*/ belle_sip_server_transaction_send_response(t, resp); } return t; } belle_sip_stack_t *belle_sip_provider_get_sip_stack(belle_sip_provider_t *p){ return p->stack; } belle_sip_channel_t * belle_sip_provider_get_channel(belle_sip_provider_t *p, const belle_sip_hop_t *hop){ belle_sip_list_t *l; belle_sip_listening_point_t *candidate=NULL,*lp; belle_sip_channel_t *chan; if (hop->transport!=NULL) { for(l=p->lps;l!=NULL;l=l->next){ lp=(belle_sip_listening_point_t*)l->data; if (strcasecmp(belle_sip_listening_point_get_transport(lp),hop->transport)==0){ chan=belle_sip_listening_point_get_channel(lp,hop); if (chan) { belle_sip_channel_check_dns_reusability(chan); return chan; } candidate=lp; } } if (candidate){ chan=belle_sip_listening_point_create_channel(candidate,hop); if (!chan) belle_sip_error("Could not create channel to [%s://%s:%i]",hop->transport,hop->host,hop->port); return chan; } } belle_sip_error("No listening point matching for [%s://%s:%i]",hop->transport,hop->host,hop->port); return NULL; } void belle_sip_provider_release_channel(belle_sip_provider_t *p, belle_sip_channel_t *chan){ belle_sip_listening_point_remove_channel(chan->lp,chan); } void belle_sip_provider_clean_channels(belle_sip_provider_t *p){ belle_sip_list_t *l; belle_sip_listening_point_t *lp; for(l=p->lps;l!=NULL;l=l->next){ lp=(belle_sip_listening_point_t*)l->data; belle_sip_listening_point_clean_channels(lp); } } void belle_sip_provider_clean_unreliable_channels(belle_sip_provider_t *p){ belle_sip_list_t *l; belle_sip_listening_point_t *lp; for(l=p->lps;l!=NULL;l=l->next){ lp=(belle_sip_listening_point_t*)l->data; belle_sip_listening_point_clean_unreliable_channels(lp); } } void belle_sip_provider_send_request(belle_sip_provider_t *p, belle_sip_request_t *req){ belle_sip_hop_t* hop; belle_sip_channel_t *chan; hop=belle_sip_stack_get_next_hop(p->stack,req); chan=belle_sip_provider_get_channel(p,hop); if (chan) { belle_sip_channel_queue_message(chan,BELLE_SIP_MESSAGE(req)); } } void belle_sip_provider_send_response(belle_sip_provider_t *p, belle_sip_response_t *resp){ belle_sip_hop_t* hop; belle_sip_channel_t *chan; belle_sip_header_to_t *to=(belle_sip_header_to_t*)belle_sip_message_get_header((belle_sip_message_t*)resp,"to"); if (belle_sip_response_get_status_code(resp)!=100 && to && belle_sip_header_to_get_tag(to)==NULL){ char token[BELLE_SIP_TAG_LENGTH]; compute_hash_from_invariants((belle_sip_message_t*)resp,token,sizeof(token),"tag"); belle_sip_header_to_set_tag(to,token); } hop=belle_sip_response_get_return_hop(resp); if (hop){ chan=belle_sip_provider_get_channel(p,hop); if (chan) belle_sip_channel_queue_message(chan,BELLE_SIP_MESSAGE(resp)); belle_sip_object_unref(hop); } } /*private provider API*/ void belle_sip_provider_set_transaction_terminated(belle_sip_provider_t *p, belle_sip_transaction_t *t){ belle_sip_transaction_terminated_event_t ev; BELLE_SIP_OBJECT_VPTR(t,belle_sip_transaction_t)->on_terminate(t); ev.source=t->provider; ev.transaction=t; ev.is_server_transaction=BELLE_SIP_IS_INSTANCE_OF(t,belle_sip_server_transaction_t); BELLE_SIP_PROVIDER_INVOKE_LISTENERS_FOR_TRANSACTION(t,process_transaction_terminated,&ev); if (!ev.is_server_transaction){ belle_sip_provider_remove_client_transaction(p,(belle_sip_client_transaction_t*)t); }else{ belle_sip_provider_remove_server_transaction(p,(belle_sip_server_transaction_t*)t); } } void belle_sip_provider_add_client_transaction(belle_sip_provider_t *prov, belle_sip_client_transaction_t *t){ prov->client_transactions=belle_sip_list_prepend(prov->client_transactions,belle_sip_object_ref(t)); } struct client_transaction_matcher{ const char *branchid; const char *method; }; static int client_transaction_match(const void *p_tr, const void *p_matcher){ belle_sip_client_transaction_t *tr=(belle_sip_client_transaction_t*)p_tr; struct client_transaction_matcher *matcher=(struct client_transaction_matcher*)p_matcher; const char *req_method=belle_sip_request_get_method(tr->base.request); if (strcmp(matcher->branchid,tr->base.branch_id)==0 && strcmp(matcher->method,req_method)==0) return 0; return -1; } belle_sip_client_transaction_t * belle_sip_provider_find_matching_client_transaction(belle_sip_provider_t *prov, belle_sip_response_t *resp){ struct client_transaction_matcher matcher; belle_sip_header_via_t *via=(belle_sip_header_via_t*)belle_sip_message_get_header((belle_sip_message_t*)resp,"via"); belle_sip_header_cseq_t *cseq=(belle_sip_header_cseq_t*)belle_sip_message_get_header((belle_sip_message_t*)resp,"cseq"); belle_sip_client_transaction_t *ret=NULL; belle_sip_list_t *elem; if (via==NULL){ belle_sip_warning("Response has no via."); return NULL; } if (cseq==NULL){ belle_sip_warning("Response has no cseq."); return NULL; } matcher.branchid = belle_sip_header_via_get_branch(via); matcher.method = belle_sip_header_cseq_get_method(cseq); if (matcher.branchid == NULL) { belle_sip_warning("Response has no branch in via."); return NULL; } if (matcher.method == NULL){ /* Maybe a bit paranoid, the parser should reject this.*/ belle_sip_warning("Response has missing method in cseq."); return NULL; } elem=belle_sip_list_find_custom(prov->client_transactions,client_transaction_match,&matcher); if (elem){ ret=(belle_sip_client_transaction_t*)elem->data; belle_sip_message("Found transaction matching response."); } return ret; } void belle_sip_provider_remove_client_transaction(belle_sip_provider_t *prov, belle_sip_client_transaction_t *t){ belle_sip_list_t* elem=belle_sip_list_find(prov->client_transactions,t); if (elem) { prov->client_transactions=belle_sip_list_delete_link(prov->client_transactions,elem); belle_sip_object_unref(t); } else { belle_sip_error("trying to remove transaction [%p] not part of provider [%p]",t,prov); } } void belle_sip_provider_add_server_transaction(belle_sip_provider_t *prov, belle_sip_server_transaction_t *t){ prov->server_transactions=belle_sip_list_prepend(prov->server_transactions,belle_sip_object_ref(t)); } struct transaction_matcher{ const char *branchid; const char *method; const char *sentby; int is_ack_or_cancel; }; static int transaction_match(const void *p_tr, const void *p_matcher){ belle_sip_transaction_t *tr=(belle_sip_transaction_t*)p_tr; struct transaction_matcher *matcher=(struct transaction_matcher*)p_matcher; const char *req_method=belle_sip_request_get_method(tr->request); if (strcmp(matcher->branchid,tr->branch_id)==0){ if (strcmp(matcher->method,req_method)==0) return 0; if (matcher->is_ack_or_cancel && strcmp(req_method,"INVITE")==0) return 0; } return -1; } belle_sip_transaction_t * belle_sip_provider_find_matching_transaction(belle_sip_list_t *transactions, belle_sip_request_t *req){ struct transaction_matcher matcher; belle_sip_header_via_t *via=(belle_sip_header_via_t*)belle_sip_message_get_header((belle_sip_message_t*)req,"via"); belle_sip_transaction_t *ret=NULL; belle_sip_list_t *elem=NULL; const char *branch; char token[BELLE_SIP_BRANCH_ID_LENGTH] = {0}; matcher.method=belle_sip_request_get_method(req); matcher.is_ack_or_cancel=(strcmp(matcher.method,"ACK")==0 || strcmp(matcher.method,"CANCEL")==0); if (via!=NULL && (branch=belle_sip_header_via_get_branch(via))!=NULL && strncmp(branch,BELLE_SIP_BRANCH_MAGIC_COOKIE,strlen(BELLE_SIP_BRANCH_MAGIC_COOKIE))==0){ matcher.branchid=branch; }else{ /*this request comes from an old equipment, we need to compute our own branch for this request.*/ matcher.branchid=compute_rfc2543_branch(req,token,sizeof(token)); belle_sip_request_set_rfc2543_branch(req,token); belle_sip_message("Message from old RFC2543 stack, computed branch is %s", token); } elem=belle_sip_list_find_custom(transactions,transaction_match,&matcher); if (elem){ ret=(belle_sip_transaction_t*)elem->data; belle_sip_message("Found transaction [%p] matching request.",ret); } return ret; } belle_sip_server_transaction_t * belle_sip_provider_find_matching_server_transaction(belle_sip_provider_t *prov, belle_sip_request_t *req) { belle_sip_transaction_t *ret=belle_sip_provider_find_matching_transaction(prov->server_transactions,req); return ret?BELLE_SIP_SERVER_TRANSACTION(ret):NULL; } belle_sip_client_transaction_t * belle_sip_provider_find_matching_client_transaction_from_req(belle_sip_provider_t *prov, belle_sip_request_t *req) { belle_sip_transaction_t *ret=belle_sip_provider_find_matching_transaction(prov->client_transactions,req); return ret?BELLE_SIP_CLIENT_TRANSACTION(ret):NULL; } void belle_sip_provider_remove_server_transaction(belle_sip_provider_t *prov, belle_sip_server_transaction_t *t){ prov->server_transactions=belle_sip_list_remove(prov->server_transactions,t); belle_sip_object_unref(t); } static void authorization_context_fill_from_auth(authorization_context_t* auth_context,belle_sip_header_www_authenticate_t* authenticate,belle_sip_uri_t *from_uri) { const char *nonce = belle_sip_header_www_authenticate_get_nonce(authenticate); authorization_context_set_realm(auth_context,belle_sip_header_www_authenticate_get_realm(authenticate)); if (auth_context->nonce && nonce && strcmp(nonce, auth_context->nonce) != 0) { /*new nonce, resetting nounce_count*/ auth_context->nonce_count=0; } authorization_context_set_nonce(auth_context, nonce); authorization_context_set_algorithm(auth_context,belle_sip_header_www_authenticate_get_algorithm(authenticate)); authorization_context_set_qop(auth_context,belle_sip_header_www_authenticate_get_qop_first(authenticate)); authorization_context_set_scheme(auth_context,belle_sip_header_www_authenticate_get_scheme(authenticate)); authorization_context_set_opaque(auth_context,belle_sip_header_www_authenticate_get_opaque(authenticate)); authorization_context_set_user_id(auth_context, from_uri?belle_sip_uri_get_user(from_uri):NULL); } static belle_sip_list_t* belle_sip_provider_get_auth_context_by_realm_or_call_id(belle_sip_provider_t *p,belle_sip_header_call_id_t* call_id,belle_sip_uri_t *from_uri,const char* realm) { belle_sip_list_t* auth_context_lst=NULL; belle_sip_list_t* result=NULL; authorization_context_t* auth_context; for (auth_context_lst=p->auth_contexts;auth_context_lst!=NULL;auth_context_lst=auth_context_lst->next) { auth_context=(authorization_context_t*)auth_context_lst->data; if (belle_sip_header_call_id_equals(auth_context->callid,call_id) ) { result=belle_sip_list_append(result,auth_context_lst->data); } } /* According to the RFC3261 22.3, if the outbound proxy realm is set, we could reuse its nonce value: * "If a UA receives a Proxy-Authenticate header field value in a 401/407 * response to a request with a particular Call-ID, it should * incorporate credentials for that realm in all subsequent requests * that contain the same Call-ID. These credentials MUST NOT be cached * across dialogs; however, if a UA is configured with the realm of its * local outbound proxy, when one exists, then the UA MAY cache * credentials for that realm across dialogs." */ if (result == NULL){ const char * from_user=from_uri?belle_sip_uri_get_user(from_uri):NULL; belle_sip_debug("belle_sip_provider_auth: no auth context registered with [call_id=%s], looking for realm..." , call_id?belle_sip_header_call_id_get_call_id(call_id):"(null)"); for (auth_context_lst=p->auth_contexts;auth_context_lst!=NULL;auth_context_lst=auth_context_lst->next) { auth_context=(authorization_context_t*)auth_context_lst->data; belle_sip_debug("belle_sip_provider_auth: \t[realm=%s] [user_id=%s] [call_id=%s]", auth_context->realm?auth_context->realm:"(null)", auth_context->user_id?auth_context->user_id:"(null)", auth_context->callid?belle_sip_header_call_id_get_call_id(auth_context->callid):"(null)" ); /* We also verify that user matches in case of multi-account to avoid use nonce from another account. For a * single user, from_uri user id and realm user id COULD be different but we assume here that this is not the case * in order to avoid adding another field in auth_context struct. **/ if ((realm && strcmp(auth_context->realm,realm)==0) && (from_user && auth_context->user_id && strcmp(auth_context->user_id,from_user)==0)) { result=belle_sip_list_append(result,auth_context_lst->data); belle_sip_debug("belle_sip_provider_auth: found a MATCHING realm auth context!"); } } } return result; } static void belle_sip_provider_update_or_create_auth_context(belle_sip_provider_t *p, belle_sip_header_call_id_t *call_id, belle_sip_header_www_authenticate_t *authenticate, belle_sip_uri_t *from_uri, const char *realm) { belle_sip_list_t *auth_context_lst = NULL; belle_sip_list_t *auth_context_it; authorization_context_t *auth_context; const char *algo = belle_sip_header_www_authenticate_get_algorithm(authenticate); if (belle_sip_stack_check_digest_compatibility(p->stack, authenticate) == -1) return; for (auth_context_it = auth_context_lst = belle_sip_provider_get_auth_context_by_realm_or_call_id(p, call_id, from_uri, realm); auth_context_it != NULL; auth_context_it = auth_context_it->next) { auth_context = (authorization_context_t *)auth_context_it->data; if ((strcmp(auth_context->realm, belle_sip_header_www_authenticate_get_realm(authenticate)) == 0) && ((auth_context->algorithm == NULL) || strcasecmp(auth_context->algorithm, algo) == 0)) { authorization_context_fill_from_auth(auth_context, authenticate, from_uri); goto end; /*only one realm is supposed to be found for now*/ } } /*no auth context found, creating one*/ auth_context = belle_sip_authorization_create(call_id); if (BELLE_SIP_OBJECT_IS_INSTANCE_OF(authenticate, belle_sip_header_proxy_authenticate_t)) { auth_context->is_proxy = 1; /*this cannot be changed*/ } belle_sip_debug("belle_sip_provider_auth: no matching auth context, creating one for [realm=%s][user_id=%s][call_id=%s]" , belle_sip_header_www_authenticate_get_realm(authenticate) ? belle_sip_header_www_authenticate_get_realm(authenticate) : "(null)" , from_uri ? belle_sip_uri_get_user(from_uri) : "(null)" , call_id ? belle_sip_header_call_id_get_call_id(call_id) : "(null)"); authorization_context_fill_from_auth(auth_context, authenticate, from_uri); p->auth_contexts = belle_sip_list_append(p->auth_contexts, auth_context); end: if (auth_context_lst) belle_sip_list_free(auth_context_lst); return; } static belle_sip_list_t *belle_sip_list_find_event(belle_sip_list_t *list, belle_sip_auth_event_t *auth_event) { for (; list != NULL; list = list->next) { belle_sip_auth_event_t *ref_event = (belle_sip_auth_event_t *)list->data; if ((!strcmp(ref_event->realm, auth_event->realm)) && (!strcmp(ref_event->username, auth_event->username))) return list; } return NULL; } static belle_sip_list_t *belle_sip_list_find_double_events(belle_sip_list_t *list, belle_sip_auth_event_t *auth_event) { belle_sip_list_t *ref_list; belle_sip_list_t *ref_list2; if ((ref_list = belle_sip_list_find_event(list, auth_event)) && (ref_list2 = belle_sip_list_find_event(ref_list->next, auth_event))) { belle_sip_auth_event_t *ref_event = (belle_sip_auth_event_t *)ref_list2->data; /*delete which hasn't passwd*/ if (ref_event->passwd || ref_event->ha1) return ref_list; else return ref_list2; } return NULL; } int belle_sip_provider_add_authorization(belle_sip_provider_t *p, belle_sip_request_t* request, belle_sip_response_t *resp, belle_sip_uri_t *from_uri, belle_sip_list_t** auth_infos, const char* realm) { belle_sip_header_call_id_t* call_id; belle_sip_list_t* auth_context_iterator; belle_sip_list_t* authenticate_lst; belle_sip_list_t* head; belle_sip_header_www_authenticate_t* authenticate; belle_sip_header_authorization_t* authorization; belle_sip_header_from_t* from; belle_sip_auth_event_t* auth_event; authorization_context_t* auth_context; const char* ha1; char computed_ha1[65]; int result=0; const char* request_method; size_t size; const char* algo; /*check params*/ if (!p || !request) { belle_sip_error("belle_sip_provider_add_authorization bad parameters"); return 0; } request_method=belle_sip_request_get_method(request); /*22 Usage of HTTP Authentication 22.1 Framework While a server can legitimately challenge most SIP requests, there are two requests defined by this document that require special handling for authentication: ACK and CANCEL. Under an authentication scheme that uses responses to carry values used to compute nonces (such as Digest), some problems come up for any requests that take no response, including ACK. For this reason, any credentials in the INVITE that were accepted by a server MUST be accepted by that server for the ACK. UACs creating an ACK message will duplicate all of the Authorization and Proxy-Authorization header field values that appeared in the INVITE to which the ACK corresponds. Servers MUST NOT attempt to challenge an ACK. Although the CANCEL method does take a response (a 2xx), servers MUST NOT attempt to challenge CANCEL requests since these requests cannot be resubmitted. Generally, a CANCEL request SHOULD be accepted by a server if it comes from the same hop that sent the request being canceled (provided that some sort of transport or network layer security association, as described in Section 26.2.1, is in place). */ if (strcmp("CANCEL",request_method)==0 || strcmp("ACK",request_method)==0) { belle_sip_debug("no authorization header needed for method [%s]",request_method); return 0; } if (from_uri==NULL){ from = belle_sip_message_get_header_by_type(request,belle_sip_header_from_t); from_uri=belle_sip_header_address_get_uri((belle_sip_header_address_t*)from); } /*get authenticates value from response*/ if (resp) { belle_sip_list_t *it; call_id = belle_sip_message_get_header_by_type(BELLE_SIP_MESSAGE(resp),belle_sip_header_call_id_t); /*searching for authentication headers*/ authenticate_lst = belle_sip_list_copy(belle_sip_message_get_headers(BELLE_SIP_MESSAGE(resp),BELLE_SIP_WWW_AUTHENTICATE)); /*search for proxy authenticate*/ authenticate_lst=belle_sip_list_concat(authenticate_lst,belle_sip_list_copy(belle_sip_message_get_headers(BELLE_SIP_MESSAGE(resp),BELLE_SIP_PROXY_AUTHENTICATE))); /*update auth contexts with authenticate headers from response*/ for (it=authenticate_lst;it!=NULL;it=it->next) { authenticate=BELLE_SIP_HEADER_WWW_AUTHENTICATE(it->data); belle_sip_provider_update_or_create_auth_context(p,call_id,authenticate,from_uri,realm); } belle_sip_list_free(authenticate_lst); } /*put authorization header if passwd found*/ call_id = belle_sip_message_get_header_by_type(BELLE_SIP_MESSAGE(request),belle_sip_header_call_id_t); belle_sip_debug("belle_sip_provider_auth: looking an auth context for [method=%s][realm=%s][user_id=%s][call_id=%s]" , request_method , realm?realm:"(null)" , from_uri?belle_sip_uri_get_user(from_uri):"(null)" , call_id?belle_sip_header_call_id_get_call_id(call_id):"(null)" ); head=belle_sip_provider_get_auth_context_by_realm_or_call_id(p,call_id,from_uri,realm); /*we assume there no existing auth headers*/ for (auth_context_iterator=head;auth_context_iterator!=NULL;auth_context_iterator=auth_context_iterator->next) { /*clear auth info*/ auth_context=(authorization_context_t*)auth_context_iterator->data; auth_event = belle_sip_auth_event_create((belle_sip_object_t*)p,auth_context->realm,from_uri); belle_sip_auth_event_set_algorithm(auth_event, auth_context->algorithm); /*put data*/ /*call listener*/ BELLE_SIP_PROVIDER_INVOKE_LISTENERS(p->listeners,process_auth_requested,auth_event); if (auth_event->passwd || auth_event->ha1) { if (!auth_event->userid) { /*if no userid, username = userid*/ belle_sip_auth_event_set_userid(auth_event,auth_event->username); } belle_sip_message("Auth info found for [%s] realm [%s]",auth_event->userid,auth_event->realm); algo = auth_context->algorithm; size = belle_sip_auth_define_size(algo); if (!size) { belle_sip_error("Cannot add authorization header for unsupported algo [%s]", algo); continue; } if (belle_sip_header_call_id_equals(call_id,auth_context->callid)) { /*Same call id so we can make sure auth_context->is_proxy is accurate*/ if (auth_context->is_proxy) authorization=BELLE_SIP_HEADER_AUTHORIZATION(belle_sip_header_proxy_authorization_new()); else authorization=belle_sip_header_authorization_new(); } else if (realm &&strcmp(realm,auth_context->realm)==0 &&from_uri &&strcmp(auth_event->username,belle_sip_uri_get_user(from_uri))==0 &&strcmp("REGISTER",request_method)==0){ /*We can only guess, so for REGISTER, it's probably Authorization*/ authorization=belle_sip_header_authorization_new(); } else { /* for other case, it's probably Proxy-Authorization*/ authorization=BELLE_SIP_HEADER_AUTHORIZATION(belle_sip_header_proxy_authorization_new()); } belle_sip_header_authorization_set_scheme(authorization,auth_context->scheme); belle_sip_header_authorization_set_realm(authorization,auth_context->realm); belle_sip_header_authorization_set_username(authorization,auth_event->userid); belle_sip_header_authorization_set_nonce(authorization,auth_context->nonce); belle_sip_header_authorization_set_qop(authorization,auth_context->qop); belle_sip_header_authorization_set_opaque(authorization,auth_context->opaque); belle_sip_header_authorization_set_algorithm(authorization,auth_context->algorithm); belle_sip_header_authorization_set_uri(authorization,(belle_sip_uri_t*)belle_sip_request_get_uri(request)); if (auth_context->qop){ ++auth_context->nonce_count; belle_sip_header_authorization_set_nonce_count(authorization,auth_context->nonce_count); } if (auth_event->ha1) { ha1=auth_event->ha1; } else { belle_sip_auth_helper_compute_ha1_for_algorithm(auth_event->userid,auth_context->realm,auth_event->passwd, computed_ha1, size, algo); ha1=computed_ha1; } if (belle_sip_auth_helper_fill_authorization(authorization ,belle_sip_request_get_method(request) ,ha1)) { belle_sip_object_unref(authorization); } else belle_sip_message_add_header(BELLE_SIP_MESSAGE(request),BELLE_SIP_HEADER(authorization)); result=1; } else { belle_sip_message("No auth info found for call id [%s]",belle_sip_header_call_id_get_call_id(call_id)); } /*provides auth info in any cases, usefull even if found because auth info can contain wrong password*/ if (auth_infos) { /*stored to give user information on realm/username which requires authentications*/ *auth_infos=belle_sip_list_append(*auth_infos,auth_event); belle_sip_list_t* elem=belle_sip_list_find_double_events(*auth_infos,auth_event); if(elem!=NULL) { belle_sip_auth_event_destroy(bctbx_list_get_data(elem)); *auth_infos=belle_sip_list_delete_link(*auth_infos,elem); } } else { belle_sip_auth_event_destroy(auth_event); } } belle_sip_list_free(head); return result; } void belle_sip_provider_set_recv_error(belle_sip_provider_t *prov, int recv_error) { belle_sip_list_t *lps; belle_sip_list_t *channels; for(lps=prov->lps;lps!=NULL;lps=lps->next){ for(channels=((belle_sip_listening_point_t*)lps->data)->channels;channels!=NULL;channels=channels->next){ ((belle_sip_channel_t*)channels->data)->simulated_recv_return=recv_error; ((belle_sip_source_t*)channels->data)->notify_required=(recv_error<=0); } } } void belle_sip_provider_enable_rport(belle_sip_provider_t *prov, int enable) { prov->rport_enabled=enable; } int belle_sip_provider_is_rport_enabled(belle_sip_provider_t *prov) { return prov->rport_enabled; } void belle_sip_provider_enable_nat_helper(belle_sip_provider_t *prov, int enabled){ prov->nat_helper=enabled; } int belle_sip_provider_nat_helper_enabled(const belle_sip_provider_t *prov){ return prov->nat_helper; } void belle_sip_provider_enable_unconditional_answer(belle_sip_provider_t *prov, int enable) { prov->unconditional_answer_enabled=enable; } void belle_sip_provider_set_unconditional_answer(belle_sip_provider_t *prov, unsigned short code) { prov->unconditional_answer=code; } void belle_sip_provider_enable_response_integrity_checking(belle_sip_provider_t *prov, int value){ prov->response_integrity_checking_enabled = value; } belle-sip-5.2.0+dfsg/src/refresher.c000066400000000000000000001203221434613136500172370ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include #include "belle_sip_internal.h" #include "belle-sip/refresher.h" #define DEFAULT_RETRY_AFTER 60000 #define DEFAULT_INITIAL_RETRY_AFTER_ON_IO_ERROR 500 static void belle_sip_refresher_stop_internal(belle_sip_refresher_t* refresher,int cancel_pending_transaction) ; typedef enum belle_sip_refresher_state { started, stopped }belle_sip_refresher_state_t; typedef enum timer_purpose{ NORMAL_REFRESH, RETRY }timer_purpose_t; struct belle_sip_refresher { belle_sip_object_t obj; belle_sip_refresher_listener_t listener; belle_sip_source_t* timer; belle_sip_client_transaction_t* transaction; belle_sip_request_t* first_acknowledged_request; /*store first request sucessfully acknowledged, usefull to re-build a dialog if needed*/ belle_sip_dialog_t* dialog; /*Cannot rely on transaction to store dialog because of belle_sip_transaction_reset_dialog*/ char* realm; int target_expires; int session_expires; int obtained_expires; belle_sip_refresher_state_t state; void* user_data; int retry_after; belle_sip_list_t* auth_events; int auth_failures; int number_of_retry; /*counter to count number of unsuccesfull retry, used to know when to retry*/ timer_purpose_t timer_purpose; unsigned char manual; unsigned int publish_pending; unsigned char on_io_error; /*flag to avoid multiple error notification*/ unsigned char contact_fixing; /* flag to indicate that we are submiting an updated REGISTER to fix contact after learning IP/port from previous response*/ }; static void set_or_update_dialog(belle_sip_refresher_t* refresher, belle_sip_dialog_t* dialog); static int set_expires_from_trans(belle_sip_refresher_t* refresher); static int timer_cb(void *user_data, unsigned int events) ; static int belle_sip_refresher_refresh_internal(belle_sip_refresher_t* refresher,int expires,int auth_mandatory, belle_sip_list_t** auth_infos, belle_sip_uri_t *requri); static void cancel_retry(belle_sip_refresher_t* refresher) { if (refresher->timer){ belle_sip_main_loop_remove_source(belle_sip_stack_get_main_loop(refresher->transaction->base.provider->stack),refresher->timer); belle_sip_object_unref(refresher->timer); refresher->timer=NULL; } } static void schedule_timer_at(belle_sip_refresher_t* refresher,int delay, timer_purpose_t purpose) { belle_sip_message("Refresher[%p]: scheduling next timer in %i ms for purpose [%s]",refresher, delay, purpose == NORMAL_REFRESH ? "normal refresh" : "retry"); refresher->timer_purpose=purpose; /*cancel timer if any*/ cancel_retry(refresher); refresher->timer=belle_sip_timeout_source_new(timer_cb,refresher,delay); belle_sip_object_set_name((belle_sip_object_t*)refresher->timer,"Refresher timeout"); belle_sip_main_loop_add_source(belle_sip_stack_get_main_loop(refresher->transaction->base.provider->stack),refresher->timer); } static void retry_later(belle_sip_refresher_t* refresher) { refresher->number_of_retry++; schedule_timer_at(refresher,refresher->retry_after,RETRY); } static void retry_later_on_io_error(belle_sip_refresher_t* refresher) { /*if first retry, sent it immediately. */ if (refresher->number_of_retry < 1) { schedule_timer_at(refresher,0,RETRY); refresher->number_of_retry++; } else { retry_later(refresher); } } static void schedule_timer(belle_sip_refresher_t* refresher) { schedule_timer_at(refresher,refresher->obtained_expires*900,NORMAL_REFRESH); } static void process_dialog_terminated(belle_sip_listener_t *user_ctx, const belle_sip_dialog_terminated_event_t *event){ belle_sip_refresher_t* refresher=(belle_sip_refresher_t*)user_ctx; belle_sip_dialog_t *dialog =belle_sip_dialog_terminated_event_get_dialog(event); if (refresher && refresher->transaction && dialog != belle_sip_transaction_get_dialog(BELLE_SIP_TRANSACTION(refresher->transaction))) return; /*not for me*/ if (belle_sip_dialog_expired(dialog) && refresher->state == started) { /* We notify the app that the dialog is expired due to failure to refresh the subscription on time. * However the transaction to renew the dialog is either pending or already failed, and has scheduled a retry already, * so there is no need to reschedule a retry here.*/ belle_sip_warning("Refresher [%p] still started but expired, retrying",refresher); if (refresher->listener) refresher->listener(refresher,refresher->user_data,481, "dialod terminated", TRUE); } } static void process_io_error(belle_sip_listener_t *user_ctx, const belle_sip_io_error_event_t *event){ belle_sip_refresher_t* refresher=(belle_sip_refresher_t*)user_ctx; belle_sip_client_transaction_t*client_transaction; if (refresher->on_io_error==1) { return; /*refresher already on error*/ } if (BELLE_SIP_OBJECT_IS_INSTANCE_OF(belle_sip_io_error_event_get_source(event),belle_sip_client_transaction_t)) { client_transaction=BELLE_SIP_CLIENT_TRANSACTION(belle_sip_io_error_event_get_source(event)); if (!refresher || (refresher && ((refresher->state==stopped && belle_sip_transaction_get_state(BELLE_SIP_TRANSACTION(refresher->transaction)) != BELLE_SIP_TRANSACTION_TRYING && belle_sip_transaction_get_state(BELLE_SIP_TRANSACTION(refresher->transaction)) != BELLE_SIP_TRANSACTION_INIT /*to cover dns or certificate error*/) || client_transaction !=refresher->transaction ))) return; /*not for me or no longuer involved*/ if (refresher->target_expires==0 && belle_sip_transaction_get_state(BELLE_SIP_TRANSACTION(refresher->transaction)) != BELLE_SIP_TRANSACTION_TRYING && belle_sip_transaction_get_state(BELLE_SIP_TRANSACTION(refresher->transaction)) != BELLE_SIP_TRANSACTION_INIT ) { return; /*not for me or no longuer involved because expire=0*/ } if (refresher->state==started) retry_later_on_io_error(refresher); if (refresher->listener) refresher->listener(refresher,refresher->user_data,503, "io error", refresher->state == started); return; } else if (BELLE_SIP_OBJECT_IS_INSTANCE_OF(belle_sip_io_error_event_get_source(event),belle_sip_provider_t)) { /*something went wrong on this provider, checking if my channel is still up*/ if (refresher->state==started /*refresher started or trying to refresh */ && belle_sip_transaction_get_state(BELLE_SIP_TRANSACTION(refresher->transaction)) == BELLE_SIP_TRANSACTION_TERMINATED /*else we are notified by transaction error*/ && refresher->transaction->base.channel /*transaction may not have any channel*/){ switch (belle_sip_channel_get_state(refresher->transaction->base.channel)){ case BELLE_SIP_CHANNEL_DISCONNECTED: case BELLE_SIP_CHANNEL_ERROR: case BELLE_SIP_CHANNEL_RETRY: belle_sip_message("refresher [%p] has channel [%p] in state [%s], reporting error" ,refresher ,refresher->transaction->base.channel ,belle_sip_channel_state_to_string(belle_sip_channel_get_state(refresher->transaction->base.channel))); if (refresher->state==started) retry_later_on_io_error(refresher); if (refresher->listener) refresher->listener(refresher,refresher->user_data,503, "io error", refresher->state == started); refresher->on_io_error=1; break; default: break; } } return; } } belle_sip_header_contact_t* get_first_contact_in_unknown_state(belle_sip_request_t *req){ /*check if automatic contacts could be set by provider, if not resubmit the request immediately.*/ belle_sip_header_contact_t *contact; const belle_sip_list_t *l; for (l=belle_sip_message_get_headers((belle_sip_message_t*)req,"Contact");l!=NULL;l=l->next){ contact=(belle_sip_header_contact_t*)l->data; if (belle_sip_header_contact_is_unknown(contact)){ return contact; } } return NULL; } static int is_contact_address_acurate(const belle_sip_refresher_t* refresher,belle_sip_request_t* request) { belle_sip_header_contact_t* contact; if ((contact = get_first_contact_in_unknown_state(request))){ /*check if contact ip/port is consistant with public channel ip/port*/ int channel_public_port = refresher->transaction->base.channel->public_port; int contact_port = belle_sip_uri_get_listening_port(belle_sip_header_address_get_uri(BELLE_SIP_HEADER_ADDRESS(contact))); const char* channel_public_ip = refresher->transaction->base.channel->public_ip; const char* contact_ip = belle_sip_uri_get_host(belle_sip_header_address_get_uri(BELLE_SIP_HEADER_ADDRESS(contact))); if (channel_public_port == contact_port && channel_public_ip && contact_ip && strcmp(channel_public_ip,contact_ip) == 0) { /*nothing to do contact is accurate*/ belle_sip_header_contact_set_unknown(contact,FALSE); return TRUE; } else { belle_sip_message("Refresher [%p]: contact address [%s:%i] does not match channel address[%s:%i] on channel [%p]" ,refresher ,contact_ip ,contact_port ,channel_public_ip ,channel_public_port ,refresher->transaction->base.channel); return FALSE; } } else { belle_sip_message("Refresher [%p]: has no contact for request [%p].", refresher,request); return TRUE; } } static void process_response_event(belle_sip_listener_t *user_ctx, const belle_sip_response_event_t *event){ belle_sip_client_transaction_t* client_transaction = belle_sip_response_event_get_client_transaction(event); belle_sip_response_t* response = belle_sip_response_event_get_response(event); belle_sip_request_t* request=belle_sip_transaction_get_request(BELLE_SIP_TRANSACTION(client_transaction)); int response_code = belle_sip_response_get_status_code(response); belle_sip_refresher_t* refresher=(belle_sip_refresher_t*)user_ctx; belle_sip_header_contact_t *contact; belle_sip_header_retry_after_t *retry_after_header; int will_retry = TRUE; /*most error codes are retryable*/ retry_after_header = belle_sip_message_get_header_by_type(response,belle_sip_header_retry_after_t); int retry_after_time = retry_after_header ? belle_sip_header_retry_after_get_retry_after(retry_after_header) : DEFAULT_RETRY_AFTER; if (refresher && (client_transaction !=refresher->transaction)) return; /*not for me*/ set_or_update_dialog(refresher,belle_sip_response_event_get_dialog(event)); contact=belle_sip_message_get_header_by_type(response,belle_sip_header_contact_t); /*success case:*/ if (response_code>=200 && response_code<300){ refresher->auth_failures=0; refresher->number_of_retry=0; /*great, success*/ if (strcmp(belle_sip_request_get_method(request),"PUBLISH")==0) { /*search for etag*/ belle_sip_header_t* etag=belle_sip_message_get_header(BELLE_SIP_MESSAGE(response),"SIP-ETag"); if (etag) { belle_sip_header_t* sip_if_match = belle_sip_header_create("SIP-If-Match",belle_sip_header_extension_get_value(BELLE_SIP_HEADER_EXTENSION(etag))); /*update request for next refresh*/ belle_sip_message_remove_header(BELLE_SIP_MESSAGE(request),"SIP-If-Match"); belle_sip_message_add_header(BELLE_SIP_MESSAGE(request),sip_if_match); } else if (refresher->target_expires > 0){ belle_sip_warning("Refresher [%p] received 200ok to a publish without etag",refresher); } } /*update expire if needed*/ set_expires_from_trans(refresher); if (refresher->target_expires<=0) { belle_sip_refresher_stop(refresher); /*doesn't not make sense to refresh if expire =0;*/ } else { /*remove all contact with expire = 0 from request if any, because no need to refresh them*/ const belle_sip_list_t * contact_list= belle_sip_message_get_headers(BELLE_SIP_MESSAGE(request),BELLE_SIP_CONTACT); belle_sip_list_t *iterator, *head; if (contact_list) { for (iterator=head=belle_sip_list_copy(contact_list);iterator!=NULL;iterator=iterator->next) { belle_sip_header_contact_t *contact_for_expire = (belle_sip_header_contact_t *)(iterator->data); if (belle_sip_header_contact_get_expires(contact_for_expire) == 0) { belle_sip_message_remove_header_from_ptr(BELLE_SIP_MESSAGE(request),BELLE_SIP_HEADER(contact_for_expire)); } } belle_sip_list_free(head); } } if (refresher->state==started) { if (!refresher->first_acknowledged_request) belle_sip_object_ref(refresher->first_acknowledged_request = request); if (is_contact_address_acurate(refresher,request) || (!belle_sip_provider_nat_helper_enabled(client_transaction->base.provider) || (contact && belle_sip_parameters_has_parameter(BELLE_SIP_PARAMETERS(contact), "pub-gruu"))) ) { /*Disable nat helper in gruu case. Might not be the best fix, maybe better to make reflesh is not mandatory*/ schedule_timer(refresher); /*re-arm timer*/ } else { if (!refresher->contact_fixing){ belle_sip_message("belle_sip_refresher_start(): refresher [%p] is resubmitting request because contact sent was not correct in original request.",refresher); belle_sip_refresher_refresh(refresher,refresher->target_expires); refresher->contact_fixing = TRUE; return; }else{ belle_sip_message("refresher [%p]: unable to fix contact for NAT - asymmetric flow ?", refresher); refresher->contact_fixing = FALSE; /* reset flag and re-arm timer for next refresh */ schedule_timer(refresher); /*re-arm timer*/ } } } else belle_sip_message("Refresher [%p] not scheduling next refresh, because it was stopped",refresher); }else if (response_code >= 300) {/*special error cases*/ switch (response_code) { case 301: case 302: if (contact){ belle_sip_uri_t *uri=belle_sip_header_address_get_uri(BELLE_SIP_HEADER_ADDRESS(contact)); if (uri && belle_sip_refresher_refresh_internal(refresher,refresher->target_expires,TRUE,&refresher->auth_events,uri)==0) return; } break; case 401: case 407: refresher->auth_failures++; if (refresher->auth_failures>1){ /*avoid looping with 407 or 401 */ belle_sip_warning("Authentication is failing constantly, %s",(refresher->target_expires>0)? "will retry later":"giving up."); if (refresher->target_expires>0) retry_later(refresher); refresher->auth_failures=0; /*reset auth failure*/ break; } if (refresher->auth_events) { refresher->auth_events=belle_sip_list_free_with_data(refresher->auth_events,(void (*)(void*))belle_sip_auth_event_destroy); } if (belle_sip_refresher_refresh_internal(refresher,refresher->target_expires,TRUE,&refresher->auth_events,NULL)==0) return; /*ok, keep 401 internal*/ break; /*Else notify user of registration failure*/ case 403: /*In case of 403, we will retry later, just in case*/ if (refresher->target_expires>0) retry_later(refresher); else will_retry = FALSE; break; case 412: if (strcmp(belle_sip_request_get_method(request),"PUBLISH")==0) { belle_sip_message_remove_header(BELLE_SIP_MESSAGE(request),"SIP-If-Match"); if (refresher->target_expires>0) { retry_later_on_io_error(refresher); return; /*do not notify this kind of error*/ }else{ will_retry = FALSE; } } else { if (refresher->target_expires>0) retry_later(refresher); else will_retry = FALSE; } break; case 423:{ belle_sip_header_extension_t *min_expires=BELLE_SIP_HEADER_EXTENSION(belle_sip_message_get_header((belle_sip_message_t*)response,"Min-Expires")); if (min_expires){ const char *value=belle_sip_header_extension_get_value(min_expires); if (value){ int new_expires=atoi(value); if (new_expires>0 && refresher->state==started){ refresher->target_expires=new_expires; belle_sip_refresher_refresh(refresher,refresher->target_expires); return; } } }else belle_sip_warning("Receiving 423 but no min-expires header."); will_retry = FALSE; break; } case 491: { if (refresher->target_expires>0) { int delay = belle_sip_random() % 10000; /*schedule a retry between 0 and 10 seconds*/ schedule_timer_at(refresher, delay, RETRY); return; /*do not notify this kind of error*/ } } BCTBX_NO_BREAK; /*intentionally no break*/ case 404: case 480: case 500: { if (refresher->target_expires>0 && retry_after_header) { schedule_timer_at(refresher, retry_after_time * 1000, RETRY); return; /*do not notify this kind of error*/ } } BCTBX_NO_BREAK; /*intentionally no break*/ case 505: case 501: /*irrecoverable errors, probably no need to retry later*/ will_retry = FALSE; break; case 481: case 503: if (refresher->target_expires>0) { if (refresher->dialog) retry_later_on_io_error(refresher); else { schedule_timer_at(refresher, retry_after_time * 1000, RETRY); } }else will_retry = FALSE; break; default: /*for all other errors <600, retry later*/ if (response_code < 600 && refresher->target_expires>0) retry_later(refresher); else will_retry = FALSE; break; } } if (refresher->listener) refresher->listener(refresher,refresher->user_data,response_code, belle_sip_response_get_reason_phrase(response), will_retry); } static void process_timeout(belle_sip_listener_t *user_ctx, const belle_sip_timeout_event_t *event) { belle_sip_refresher_t* refresher=(belle_sip_refresher_t*)user_ctx; belle_sip_client_transaction_t*client_transaction =belle_sip_timeout_event_get_client_transaction(event); if (refresher && (client_transaction !=refresher->transaction)) return; /*not for me*/ if (refresher->state==started) { /*retry in 2 seconds but not immediately to let the current transaction be cleaned*/ schedule_timer_at(refresher,2000,RETRY); } if (refresher->listener) refresher->listener(refresher,refresher->user_data,408, "timeout", refresher->state==started); } static void process_transaction_terminated(belle_sip_listener_t *user_ctx, const belle_sip_transaction_terminated_event_t *event) { belle_sip_refresher_t* refresher=(belle_sip_refresher_t*)user_ctx; belle_sip_client_transaction_t*client_transaction = belle_sip_transaction_terminated_event_get_client_transaction(event); if (refresher && (client_transaction !=refresher->transaction)) return; /*not for me*/ if (refresher->publish_pending && refresher->state==started) { refresher->publish_pending = FALSE; belle_sip_message("Publish pending on refresher [%p], doing it",refresher); belle_sip_refresher_refresh(refresher,refresher->target_expires); } else { refresher->publish_pending = FALSE; } } static void process_auth_requested(belle_sip_listener_t *l, belle_sip_auth_event_t *event){ } static void process_request_event(belle_sip_listener_t *user_ctx, const belle_sip_request_event_t *event){ } static void destroy(belle_sip_refresher_t *refresher){ belle_sip_refresher_stop(refresher); belle_sip_provider_remove_internal_sip_listener(refresher->transaction->base.provider,BELLE_SIP_LISTENER(refresher)); belle_sip_object_unref(refresher->transaction); refresher->transaction=NULL; if (refresher->realm) belle_sip_free(refresher->realm); if (refresher->auth_events) refresher->auth_events=belle_sip_list_free_with_data(refresher->auth_events,(void (*)(void*))belle_sip_auth_event_destroy); if (refresher->first_acknowledged_request) belle_sip_object_unref(refresher->first_acknowledged_request); if (refresher->dialog) belle_sip_object_unref(refresher->dialog); } BELLE_SIP_IMPLEMENT_INTERFACE_BEGIN(belle_sip_refresher_t,belle_sip_listener_t) process_dialog_terminated, process_io_error, process_request_event, process_response_event, process_timeout, process_transaction_terminated, process_auth_requested BELLE_SIP_IMPLEMENT_INTERFACE_END BELLE_SIP_DECLARE_IMPLEMENTED_INTERFACES_1(belle_sip_refresher_t, belle_sip_listener_t); BELLE_SIP_INSTANCIATE_VPTR(belle_sip_refresher_t, belle_sip_object_t,destroy, NULL, NULL,FALSE); void belle_sip_refresher_set_listener(belle_sip_refresher_t* refresher, belle_sip_refresher_listener_t listener,void* user_pointer) { refresher->listener=listener; refresher->user_data=user_pointer; } int belle_sip_refresher_refresh(belle_sip_refresher_t* refresher,int expires) { /*first cancel any current retry*/ cancel_retry(refresher); refresher->auth_failures=0;/*reset the auth_failures to get a chance to authenticate again*/ return belle_sip_refresher_refresh_internal(refresher,expires,FALSE,NULL,NULL); } static int unfilled_auth_info(const void* info,const void* userptr) { belle_sip_auth_event_t* auth_info = (belle_sip_auth_event_t*)info; return auth_info->passwd || auth_info->ha1; } static int belle_sip_refresher_refresh_internal(belle_sip_refresher_t* refresher, int expires, int auth_mandatory, belle_sip_list_t** auth_infos, belle_sip_uri_t *requri) { belle_sip_request_t*old_request=belle_sip_transaction_get_request(BELLE_SIP_TRANSACTION(refresher->transaction)); belle_sip_response_t*old_response=belle_sip_transaction_get_response(BELLE_SIP_TRANSACTION(refresher->transaction)); belle_sip_dialog_t* dialog = refresher->dialog; belle_sip_client_transaction_t* client_transaction; belle_sip_request_t* request; belle_sip_header_expires_t* expires_header; belle_sip_uri_t* preset_route=refresher->transaction->preset_route; belle_sip_provider_t* prov=refresher->transaction->base.provider; belle_sip_header_contact_t* contact; /*first remove timer if any*/ if (expires >=0) { refresher->target_expires=expires; } else { /*-1 keep last value*/ } if (!dialog) { const belle_sip_transaction_state_t state=belle_sip_transaction_get_state(BELLE_SIP_TRANSACTION(refresher->transaction)); /*create new request*/ if (belle_sip_transaction_state_is_transient(state)) { /*operation pending, cannot update authorization headers*/ belle_sip_header_cseq_t* cseq; belle_sip_message("Refresher [%p] already has transaction [%p] in state [%s]" ,refresher ,refresher->transaction ,belle_sip_transaction_state_to_string(state)); if (strcmp(belle_sip_request_get_method(old_request),"PUBLISH")==0) { belle_sip_message("Refresher [%p] new publish is delayed to end of ongoing transaction" ,refresher); refresher->publish_pending = TRUE; return 0; } else if (strcmp(belle_sip_request_get_method(old_request),"SUBSCRIBE")==0) { belle_sip_message("Cannot refresh now, there is a pending request for refresher [%p].",refresher); return -1; }else { request=belle_sip_request_clone_with_body(belle_sip_transaction_get_request(BELLE_SIP_TRANSACTION(refresher->transaction))); cseq=belle_sip_message_get_header_by_type(request,belle_sip_header_cseq_t); belle_sip_header_cseq_set_seq_number(cseq,belle_sip_header_cseq_get_seq_number(cseq)+1); } } else { request=belle_sip_client_transaction_create_authenticated_request(refresher->transaction,auth_infos,refresher->realm); } if (requri){ /*case where we are redirected*/ belle_sip_request_set_uri(request,requri); /*remove auth headers, they are not valid for new destination*/ belle_sip_message_remove_header(BELLE_SIP_MESSAGE(request),BELLE_SIP_AUTHORIZATION); belle_sip_message_remove_header(BELLE_SIP_MESSAGE(request),BELLE_SIP_PROXY_AUTHORIZATION); } } else { switch (belle_sip_dialog_get_state(dialog)) { case BELLE_SIP_DIALOG_CONFIRMED: { if (belle_sip_dialog_request_pending(dialog)){ belle_sip_message("Cannot refresh now, there is a pending request in the dialog."); return -1; } request=belle_sip_dialog_create_request_from(dialog,old_request); if (strcmp(belle_sip_request_get_method(request),"SUBSCRIBE")==0) { belle_sip_header_content_type_t *content_type; /*put expire header*/ if (!(expires_header = belle_sip_message_get_header_by_type(request,belle_sip_header_expires_t))) { expires_header = belle_sip_header_expires_new(); belle_sip_message_add_header(BELLE_SIP_MESSAGE(request),BELLE_SIP_HEADER(expires_header)); } if ((content_type = belle_sip_message_get_header_by_type(request, belle_sip_header_content_type_t)) && strcasecmp("application", belle_sip_header_content_type_get_type(content_type)) == 0 && strcasecmp("resource-lists+xml", belle_sip_header_content_type_get_subtype(content_type)) == 0) { /*rfc5367 3.2. Subsequent SUBSCRIBE Requests ... At this point, there are no semantics associated with resource-list bodies in subsequent SUBSCRIBE requests (although future extensions can define them). Therefore, UACs SHOULD NOT include resource-list bodies in subsequent SUBSCRIBE requests to a resource list server. */ belle_sip_message("Removing body, content type and content length for refresher [%p]",refresher); belle_sip_message_set_body(BELLE_SIP_MESSAGE(request), NULL, 0); belle_sip_message_remove_header(BELLE_SIP_MESSAGE(request),BELLE_SIP_CONTENT_TYPE); belle_sip_message_remove_header(BELLE_SIP_MESSAGE(request),BELLE_SIP_CONTENT_LENGTH); } } belle_sip_provider_add_authorization(prov,request,old_response,NULL,auth_infos,refresher->realm); break; } case BELLE_SIP_DIALOG_TERMINATED: { if (refresher->first_acknowledged_request) { belle_sip_message("Dialog [%p] is in state terminated, recreating a new one for refresher [%p]",dialog,refresher); request = refresher->first_acknowledged_request; belle_sip_header_cseq_set_seq_number(belle_sip_message_get_header_by_type(request,belle_sip_header_cseq_t) ,20); belle_sip_parameters_remove_parameter(BELLE_SIP_PARAMETERS(belle_sip_message_get_header_by_type(request,belle_sip_header_to_t)),"tag"); belle_sip_message_set_header((belle_sip_message_t*)request, (belle_sip_header_t*)belle_sip_provider_create_call_id(prov)); break; } BCTBX_NO_BREAK; /*else nop, error case*/ } default: { belle_sip_error("Unexpected dialog state [%s] for dialog [%p], cannot refresh [%s]" ,belle_sip_dialog_state_to_string(belle_sip_dialog_get_state(dialog)) ,dialog ,belle_sip_request_get_method(old_request)); return -1; } } } if (auth_mandatory && auth_infos && belle_sip_list_find_custom(*auth_infos, unfilled_auth_info, NULL)) { belle_sip_message("Auth info not found for this refresh operation on [%p]",refresher); if (request) belle_sip_object_unref(request); return -1; } refresher->on_io_error=0; /*reset this flag*/ /*update expires in any cases*/ expires_header = belle_sip_message_get_header_by_type(request,belle_sip_header_expires_t); if (expires_header) belle_sip_header_expires_set_expires(expires_header,refresher->target_expires); contact=belle_sip_message_get_header_by_type(request,belle_sip_header_contact_t); if (contact && belle_sip_header_contact_get_expires(contact)>=0) belle_sip_header_contact_set_expires(contact,refresher->target_expires); /*update the Date header if it exists*/ { belle_sip_header_date_t *date=belle_sip_message_get_header_by_type(request,belle_sip_header_date_t); if (date){ time_t curtime=time(NULL); belle_sip_header_date_set_time(date,&curtime); } } client_transaction = belle_sip_provider_create_client_transaction(prov,request); client_transaction->base.is_internal=1; if (request == refresher->first_acknowledged_request) { /*request is now ref by transaction so no need to keepo it*/ belle_sip_object_unref(refresher->first_acknowledged_request); refresher->first_acknowledged_request = NULL; } switch (belle_sip_transaction_get_state(BELLE_SIP_TRANSACTION(refresher->transaction))) { case BELLE_SIP_TRANSACTION_INIT: case BELLE_SIP_TRANSACTION_CALLING: case BELLE_SIP_TRANSACTION_TRYING: /*very early state, we can assume nobody will answer, stop retransmiting*/ belle_sip_transaction_terminate(BELLE_SIP_TRANSACTION(refresher->transaction)); break; default: /*we preserve the transaction "as is"*/ break; } /*update reference transaction for next refresh*/ belle_sip_object_unref(refresher->transaction); refresher->transaction=client_transaction; belle_sip_object_ref(refresher->transaction); /*Dialog may have changed, specially if terminated (I.E timeout). In that case, it will only be autiore-created when response is received from peer, so in the mean time, we reset it*/ set_or_update_dialog(refresher, belle_sip_transaction_get_dialog(BELLE_SIP_TRANSACTION(client_transaction))); if (belle_sip_client_transaction_send_request_to(client_transaction,requri?requri:preset_route)) { /*send imediatly to requri in case of redirect*/ belle_sip_error("Cannot send refresh method [%s] for refresher [%p]" ,belle_sip_request_get_method(request) ,refresher); return -1; } if (expires==0) belle_sip_refresher_stop_internal(refresher,0); /*unregister transaction must be preserved*/ return 0; } static int timer_cb(void *user_data, unsigned int events) { belle_sip_refresher_t* refresher = (belle_sip_refresher_t*)user_data; if (refresher->timer_purpose==NORMAL_REFRESH && refresher->manual) { belle_sip_message("Refresher [%p] is in manual mode, skipping refresh.",refresher); /*call listener with special code 0 to indicate request is about to expire*/ if (refresher->listener) refresher->listener(refresher,refresher->user_data,0, "about to expire", FALSE); return BELLE_SIP_STOP; } if (belle_sip_refresher_refresh(refresher,refresher->target_expires)==-1){ retry_later(refresher); } return BELLE_SIP_STOP; } belle_sip_header_contact_t* belle_sip_refresher_get_contact(const belle_sip_refresher_t* refresher) { belle_sip_transaction_t* transaction = BELLE_SIP_TRANSACTION(refresher->transaction); belle_sip_request_t*request=belle_sip_transaction_get_request(transaction); belle_sip_response_t*response=transaction->last_response; const belle_sip_list_t* contact_header_list; belle_sip_header_contact_t* unfixed_local_contact; belle_sip_header_contact_t* fixed_local_contact; char* tmp_string; char* tmp_string2; if (!response) return NULL; /*we assume, there is only one contact in request*/ unfixed_local_contact= belle_sip_message_get_header_by_type(BELLE_SIP_MESSAGE(request),belle_sip_header_contact_t); fixed_local_contact= BELLE_SIP_HEADER_CONTACT(belle_sip_object_clone(BELLE_SIP_OBJECT(unfixed_local_contact))); /*first fix contact using received/rport*/ belle_sip_response_fix_contact(response,fixed_local_contact); contact_header_list = belle_sip_message_get_headers(BELLE_SIP_MESSAGE(response),BELLE_SIP_CONTACT); if (contact_header_list) { contact_header_list = belle_sip_list_find_custom((belle_sip_list_t*)contact_header_list ,(belle_sip_compare_func)belle_sip_header_contact_not_equals_with_uri_omitting , (const void*)fixed_local_contact); if (!contact_header_list) { /*reset header list*/ contact_header_list = belle_sip_message_get_headers(BELLE_SIP_MESSAGE(response),BELLE_SIP_CONTACT); contact_header_list = belle_sip_list_find_custom((belle_sip_list_t*)contact_header_list ,(belle_sip_compare_func)belle_sip_header_contact_not_equals_with_uri_omitting ,unfixed_local_contact); } if (!contact_header_list) { tmp_string=belle_sip_object_to_string(BELLE_SIP_OBJECT(fixed_local_contact)); tmp_string2=belle_sip_object_to_string(BELLE_SIP_OBJECT(unfixed_local_contact)); belle_sip_message("No matching contact neither for [%s] nor [%s]", tmp_string, tmp_string2); belle_sip_object_unref(fixed_local_contact); belle_sip_free(tmp_string); belle_sip_free(tmp_string2); return NULL; } else { belle_sip_object_unref(fixed_local_contact); return BELLE_SIP_HEADER_CONTACT(contact_header_list->data); } } else { return NULL; } } static int set_expires_from_trans(belle_sip_refresher_t* refresher) { belle_sip_transaction_t* transaction = BELLE_SIP_TRANSACTION(refresher->transaction); belle_sip_response_t*response=transaction->last_response; belle_sip_request_t*request=belle_sip_transaction_get_request(transaction); belle_sip_header_expires_t* expires_header=belle_sip_message_get_header_by_type(request,belle_sip_header_expires_t); belle_sip_header_contact_t* contact_header; refresher->obtained_expires=-1; if (strcmp("REGISTER",belle_sip_request_get_method(request))==0 || expires_header /*if request has an expire header, refresher can always work*/) { if (expires_header) refresher->target_expires = belle_sip_header_expires_get_expires(expires_header); /*An "expires" parameter on the "Contact" header has no semantics for * SUBSCRIBE and is explicitly not equivalent to an "Expires" header in * a SUBSCRIBE request or response. */ if (strcmp("REGISTER",belle_sip_request_get_method(request))==0){ if (!expires_header && (contact_header=belle_sip_message_get_header_by_type((belle_sip_message_t*)request,belle_sip_header_contact_t))){ int ct_expires=belle_sip_header_contact_get_expires(BELLE_SIP_HEADER_CONTACT(contact_header)); if (ct_expires!=-1) refresher->target_expires=ct_expires; } /*check in response also to get the obtained expires*/ if ((contact_header=belle_sip_refresher_get_contact(refresher))!=NULL){ /*matching contact, check for its possible expires param*/ refresher->obtained_expires=belle_sip_header_contact_get_expires(BELLE_SIP_HEADER_CONTACT(contact_header)); } } if (refresher->obtained_expires==-1){ /*no contact with expire or not relevant, looking for Expires header*/ if (response && (expires_header=(belle_sip_header_expires_t*)belle_sip_message_get_header(BELLE_SIP_MESSAGE(response),BELLE_SIP_EXPIRES))) { refresher->obtained_expires = belle_sip_header_expires_get_expires(expires_header); } } if (refresher->obtained_expires==-1) { belle_sip_message("Neither Expires header nor corresponding Contact header found, checking from original request"); refresher->obtained_expires=refresher->target_expires; }else if (refresher->target_expires>0 && refresher->obtained_expires==0){ const char* reason = response ? belle_sip_response_get_reason_phrase(response) : NULL; /*check this case because otherwise we are going to loop fast in sending refresh requests.*/ /*"Test account created" is a special reason given by testers when we create temporary account. Since this is a bit of hack, we can ignore logging in that case*/ if (reason && strcmp(reason, "Test account created") != 0) { belle_sip_warning("Server replied with 0 expires, what does that mean?"); } /*suppose it's a server bug and assume our target_expires is understood.*/ refresher->obtained_expires=refresher->target_expires; } } else if (strcmp("INVITE",belle_sip_request_get_method(request))==0) { belle_sip_error("Refresher does not support INVITE yet"); return -1; } else { belle_sip_error("Refresher does not support [%s] yet",belle_sip_request_get_method(request)); return -1; } return 0; } int belle_sip_refresher_start(belle_sip_refresher_t* refresher) { if(refresher->state==started) { belle_sip_warning("Refresher [%p] already started",refresher); } else { if (refresher->target_expires>0) { belle_sip_request_t* request = belle_sip_transaction_get_request(BELLE_SIP_TRANSACTION(refresher->transaction)); refresher->state=started; if (is_contact_address_acurate(refresher,request)) { schedule_timer(refresher); /*re-arm timer*/ } else { belle_sip_message("belle_sip_refresher_start(): refresher [%p] is resubmitting request because contact sent was not correct in original request.",refresher); belle_sip_refresher_refresh(refresher,refresher->target_expires); return 0; } belle_sip_message("Refresher [%p] started, next refresh in [%i] s",refresher,refresher->obtained_expires); }else{ belle_sip_message("Refresher [%p] stopped, expires=%i",refresher,refresher->target_expires); refresher->state=stopped; } } return 0; } void belle_sip_refresher_stop(belle_sip_refresher_t* refresher) { belle_sip_refresher_stop_internal(refresher, 1); } static void belle_sip_refresher_stop_internal(belle_sip_refresher_t* refresher,int cancel_pending_transaction) { belle_sip_message("Refresher [%p] stopped.",refresher); if (refresher->timer){ belle_sip_main_loop_remove_source(belle_sip_stack_get_main_loop(refresher->transaction->base.provider->stack), refresher->timer); belle_sip_object_unref(refresher->timer); refresher->timer=NULL; } if (cancel_pending_transaction && refresher->transaction && belle_sip_transaction_state_is_transient(belle_sip_transaction_get_state(BELLE_SIP_TRANSACTION(refresher->transaction)))) { belle_sip_transaction_terminate(BELLE_SIP_TRANSACTION(refresher->transaction)); /*refresher cancelled, no need to continue to retransmit*/ } refresher->state=stopped; } belle_sip_refresher_t* belle_sip_refresher_new(belle_sip_client_transaction_t* transaction) { belle_sip_refresher_t* refresher; belle_sip_transaction_state_t state=belle_sip_transaction_get_state(BELLE_SIP_TRANSACTION(transaction)); belle_sip_request_t* request = belle_sip_transaction_get_request(BELLE_SIP_TRANSACTION(transaction)); int is_register=strcmp("REGISTER",belle_sip_request_get_method(request))==0; refresher = (belle_sip_refresher_t*)belle_sip_object_new(belle_sip_refresher_t); refresher->transaction=transaction; refresher->state=stopped; refresher->number_of_retry=0; belle_sip_object_ref(transaction); refresher->retry_after=DEFAULT_RETRY_AFTER; if (belle_sip_transaction_get_dialog(BELLE_SIP_TRANSACTION(transaction))) { set_or_update_dialog(refresher, belle_sip_transaction_get_dialog(BELLE_SIP_TRANSACTION(transaction))); /*if dialog is already in state confirmed, store initial request to be able to re-create dialog in case of expired when trying to refresh again*/ if (belle_sip_dialog_get_state(belle_sip_transaction_get_dialog(BELLE_SIP_TRANSACTION(transaction))) == BELLE_SIP_DIALOG_CONFIRMED) { if (!refresher->first_acknowledged_request) belle_sip_object_ref(refresher->first_acknowledged_request = request); } } belle_sip_provider_add_internal_sip_listener(transaction->base.provider,BELLE_SIP_LISTENER(refresher), is_register); if (set_expires_from_trans(refresher)==-1){ belle_sip_error("Unable to extract refresh value from transaction [%p]",transaction); } if (belle_sip_transaction_state_is_transient(state)) { belle_sip_message("Refresher [%p] takes ownership of transaction [%p]",refresher,transaction); transaction->base.is_internal=1; refresher->state=started; } else { belle_sip_refresher_start(refresher); } return refresher; } int belle_sip_refresher_get_expires(const belle_sip_refresher_t* refresher) { return refresher->target_expires; } int belle_sip_refresher_get_retry_after(const belle_sip_refresher_t* refresher){ return refresher->retry_after; } void belle_sip_refresher_set_retry_after(belle_sip_refresher_t* refresher, int delay_ms) { refresher->retry_after=delay_ms; } const char* belle_sip_refresher_get_realm(const belle_sip_refresher_t* refresher){ return refresher->realm; } void belle_sip_refresher_set_realm(belle_sip_refresher_t* refresher, const char* realm) { if (refresher->realm){ belle_sip_free(refresher->realm); refresher->realm = NULL; } if (realm!=NULL){ refresher->realm=belle_sip_strdup(realm); } } const belle_sip_client_transaction_t* belle_sip_refresher_get_transaction(const belle_sip_refresher_t* refresher) { return refresher->transaction; } const belle_sip_list_t* belle_sip_refresher_get_auth_events(const belle_sip_refresher_t* refresher) { return refresher->auth_events; } void belle_sip_refresher_enable_manual_mode(belle_sip_refresher_t *refresher, int enabled){ refresher->manual=enabled; } const char * belle_sip_refresher_get_local_address(belle_sip_refresher_t* refresher, int *port){ belle_sip_channel_t *chan = refresher->transaction->base.channel; if (chan) return belle_sip_channel_get_local_address(chan, port); return NULL; } const char * belle_sip_refresher_get_public_address(belle_sip_refresher_t* refresher, int *port){ belle_sip_channel_t *chan = refresher->transaction->base.channel; if (chan) return belle_sip_channel_get_public_address(chan, port); return NULL; } static void set_or_update_dialog(belle_sip_refresher_t* refresher, belle_sip_dialog_t* dialog) { if (refresher->dialog!=dialog){ belle_sip_message("refresher [%p] : set_or_update_dialog() current=[%p] new=[%p]",refresher,refresher->dialog,dialog); if (refresher->dialog){ belle_sip_object_unref(refresher->dialog); } if (dialog) { belle_sip_object_ref(dialog); /*make sure dialog is internal now*/ dialog->is_internal = TRUE; } refresher->dialog=dialog; } } belle-sip-5.2.0+dfsg/src/sdp/000077500000000000000000000000001434613136500156745ustar00rootroot00000000000000belle-sip-5.2.0+dfsg/src/sdp/parser.cc000066400000000000000000000257721434613136500175140ustar00rootroot00000000000000/* * Copyright (c) 2012-2021 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "sdp/parser.hh" #include "belle-sip/belle-sdp.h" #include "bctoolbox/logging.h" #include #include #include using namespace std; using namespace belr; using namespace bellesip; // Initialize the singleton instance bellesip::SDP::Parser *bellesip::SDP::Parser::instance = 0; bellesip::SDP::Parser *bellesip::SDP::Parser::getInstance() { if (!instance) { instance = new Parser(); } return instance; } bellesip::SDP::Parser::Parser() { shared_ptr grammar = loadGrammar(); _parser = make_shared>(grammar); _parser->setHandler("session-description", make_fn(&belle_sdp_session_description_new)) ->setCollector("session-name", make_fn(&belle_sdp_session_description_set_session_name)) ->setCollector("origin", make_fn(&belle_sdp_session_description_set_origin)) ->setCollector("proto-version", make_fn(&belle_sdp_session_description_set_version)) ->setCollector("connection", make_fn(&belle_sdp_session_description_set_connection)) ->setCollector("bandwidth", make_fn(&belle_sdp_session_description_add_bandwidth)) ->setCollector("info", make_fn(&belle_sdp_session_description_set_info)) ->setCollector("times", make_fn(&belle_sdp_session_description_set_time_description)) ->setCollector("media-description", make_fn(&belle_sdp_session_description_add_media_description)) ->setCollector("attribute", make_fn(&belle_sdp_session_description_add_attribute_holder)); _parser->setHandler("content-attribute", make_fn(&belle_sdp_content_attribute_new)) ->setCollector("mediacnt", make_fn(&belle_sdp_content_attribute_add_media_tag)); _parser->setHandler("label-attribute", make_fn(&belle_sdp_label_attribute_new)) ->setCollector("pointer", make_fn(&belle_sdp_label_attribute_set_pointer)); _parser->setHandler("csup-attribute", make_fn(&belle_sdp_csup_attribute_new)) ->setCollector("option-tag", make_fn(&belle_sdp_csup_attribute_add_option_tag)); _parser->setHandler("creq-attribute", make_fn(&belle_sdp_creq_attribute_new)) ->setCollector("option-tag", make_fn(&belle_sdp_creq_attribute_add_option_tag)); _parser->setHandler("tcap-attribute", make_fn(&belle_sdp_tcap_attribute_new)) ->setCollector("trpr-cap-num", make_fn(&belle_sdp_tcap_attribute_set_id)) ->setCollector("proto", make_fn(&belle_sdp_tcap_attribute_add_proto)); _parser->setHandler("acap-attribute", make_fn(&belle_sdp_acap_attribute_new)) ->setCollector("acap-cap-num", make_fn(&belle_sdp_acap_attribute_set_id)) ->setCollector("att-field", make_fn(&belle_sdp_acap_attribute_set_name)) ->setCollector("att-value", make_fn(&belle_sdp_acap_attribute_set_value)); _parser->setHandler("acfg-attribute", make_fn(&belle_sdp_acfg_attribute_new)) ->setCollector("config-number", make_fn(&belle_sdp_acfg_attribute_set_id)) ->setCollector("sel-config", make_fn(&belle_sdp_acfg_attribute_add_config)); _parser->setHandler("pcfg-attribute", make_fn(&belle_sdp_pcfg_attribute_new)) ->setCollector("config-number", make_fn(&belle_sdp_pcfg_attribute_set_id)) ->setCollector("pot-config", make_fn(&belle_sdp_pcfg_attribute_add_config)); _parser->setHandler("session-name", make_fn(&belle_sdp_session_name_new)) ->setCollector("session-name-value", make_fn(&belle_sdp_session_name_set_value)); _parser->setHandler("proto-version", make_fn(&belle_sdp_version_new)) ->setCollector("proto-version-value", make_fn(&belle_sdp_version_set_version)); _parser->setHandler("times", make_fn(&belle_sdp_time_description_new)) ->setCollector("start-stop-times", make_fn(&belle_sdp_time_description_set_time)); _parser->setHandler("start-stop-times", make_fn(&belle_sdp_time_new)) ->setCollector("start-time", make_fn(&belle_sdp_time_set_start)) ->setCollector("stop-time", make_fn(&belle_sdp_time_set_stop)); _parser->setHandler("media-description", make_fn(&belle_sdp_media_description_new)) ->setCollector("media", make_fn(&belle_sdp_media_description_set_media)) ->setCollector("info", make_fn(&belle_sdp_media_description_set_info)) ->setCollector("connection", make_fn(&belle_sdp_media_description_set_connection)) ->setCollector("bandwidth", make_fn(&belle_sdp_media_description_add_bandwidth)) ->setCollector("attribute", make_fn(&belle_sdp_media_description_add_attribute_holder)); _parser->setHandler("rtcp-fb-attribute", make_fn(&belle_sdp_rtcp_fb_attribute_new)) ->setCollector("rtcp-fb-pt", make_fn(&belle_sdp_rtcp_fb_attribute_set_raw_id)) ->setCollector("rtcp-fb-ack-type", make_fn(&belle_sdp_rtcp_fb_attribute_set_raw_type)) ->setCollector("rtcp-fb-ack-param", make_fn(&belle_sdp_rtcp_fb_attribute_set_raw_param)) ->setCollector("rtcp-fb-nack-type", make_fn(&belle_sdp_rtcp_fb_attribute_set_raw_type)) ->setCollector("rtcp-fb-nack-param", make_fn(&belle_sdp_rtcp_fb_attribute_set_raw_param)) ->setCollector("rtcp-fb-ccm-type", make_fn(&belle_sdp_rtcp_fb_attribute_set_raw_type)) ->setCollector("rtcp-fb-ccm-param", make_fn(&belle_sdp_rtcp_fb_attribute_set_raw_param)) ->setCollector("rtcp-fb-ccm-tmmbr-param", make_fn(&belle_sdp_rtcp_fb_attribute_set_raw_param)) ->setCollector("rtcp-fb-trr-int-type", make_fn(&belle_sdp_rtcp_fb_attribute_set_raw_type)) ->setCollector("rtcp-fb-trr-int", make_fn(&belle_sdp_rtcp_fb_attribute_set_trr_int)); _parser->setHandler("rtcp-xr-attribute", make_fn(&belle_sdp_rtcp_xr_attribute_new)) ->setCollector("rcvr-rtt-mode", make_fn(&belle_sdp_rtcp_xr_attribute_set_rcvr_rtt_mode)) ->setCollector("max-size", make_fn(&belle_sdp_rtcp_xr_attribute_set_rcvr_rtt_max_size)) ->setCollector("stat-summary", make_fn(&belle_sdp_rtcp_xr_attribute_enable_stat_summary)) ->setCollector("stat-flag", make_fn(&belle_sdp_rtcp_xr_attribute_add_stat_summary_flag)) ->setCollector("voip-metrics", make_fn(&belle_sdp_rtcp_xr_attribute_enable_voip_metrics)); _parser->setHandler("attribute", make_fn(&belle_sdp_attribute_holder_new)) ->setCollector("label-attribute", make_fn(&belle_sdp_attribute_holder_set_attribute)) ->setCollector("content-attribute", make_fn(&belle_sdp_attribute_holder_set_attribute)) ->setCollector("acfg-attribute", make_fn(&belle_sdp_attribute_holder_set_attribute)) ->setCollector("creq-attribute", make_fn(&belle_sdp_attribute_holder_set_attribute)) ->setCollector("csup-attribute", make_fn(&belle_sdp_attribute_holder_set_attribute)) ->setCollector("pcfg-attribute", make_fn(&belle_sdp_attribute_holder_set_attribute)) ->setCollector("tcap-attribute", make_fn(&belle_sdp_attribute_holder_set_attribute)) ->setCollector("acap-attribute", make_fn(&belle_sdp_attribute_holder_set_attribute)) ->setCollector("rtcp-fb-attribute", make_fn(&belle_sdp_attribute_holder_set_attribute)) ->setCollector("rtcp-xr-attribute", make_fn(&belle_sdp_attribute_holder_set_attribute)) ->setCollector("raw-attribute", make_fn(&belle_sdp_attribute_holder_set_attribute)); _parser->setHandler("raw-attribute", make_fn(&belle_sdp_raw_attribute_new)) ->setCollector("att-field", make_fn(&belle_sdp_raw_attribute_set_name)) ->setCollector("att-value", make_fn(&belle_sdp_raw_attribute_set_value)); _parser->setHandler("bandwidth", make_fn(&belle_sdp_bandwidth_new)) ->setCollector("bwtype", make_fn(&belle_sdp_bandwidth_set_type)) ->setCollector("bwvalue", make_fn(&belle_sdp_bandwidth_set_value)); _parser->setHandler("origin", make_fn(&belle_sdp_origin_new)) ->setCollector("username", make_fn(&belle_sdp_origin_set_username)) ->setCollector("sess-id", make_fn(&belle_sdp_origin_set_session_id)) ->setCollector("sess-version", make_fn(&belle_sdp_origin_set_session_version)) ->setCollector("nettype", make_fn(&belle_sdp_origin_set_network_type)) ->setCollector("addrtype", make_fn(&belle_sdp_origin_set_address_type)) ->setCollector("unicast-address", make_fn(&belle_sdp_origin_set_address)); _parser->setHandler("connection", make_fn(&belle_sdp_connection_new)) ->setCollector("nettype", make_fn(&belle_sdp_connection_set_network_type)) ->setCollector("addrtype", make_fn(&belle_sdp_connection_set_address_type)) ->setCollector("unicast-address", make_fn(&belle_sdp_connection_set_address)) ->setCollector("IP4-multicast-address", make_fn(&belle_sdp_connection_set_address)) ->setCollector("hexpart", make_fn(&belle_sdp_connection_set_address)) ->setCollector("ttl", make_fn(&belle_sdp_connection_set_ttl)) ->setCollector("range", make_fn(&belle_sdp_connection_set_range)); _parser->setHandler("email", make_fn(&belle_sdp_email_new)) ->setCollector("email-address", make_fn(&belle_sdp_email_set_value)); _parser->setHandler("info", make_fn(&belle_sdp_info_new)) ->setCollector("info-value", make_fn(&belle_sdp_info_set_value)); _parser->setHandler("media", make_fn(&belle_sdp_media_new)) ->setCollector("media-type", make_fn(&belle_sdp_media_set_media_type)) ->setCollector("sdp-port", make_fn(&belle_sdp_media_set_media_port)) ->setCollector("proto", make_fn(&belle_sdp_media_set_protocol)) ->setCollector("fmt", make_fn(&belle_sdp_media_media_formats_add)); } void * bellesip::SDP::Parser::parse(const string &input, const string &rule) { string parsedRule = rule; size_t parsedSize = 0; replace(parsedRule.begin(), parsedRule.end(), '_', '-'); void * elem = _parser->parseInput(parsedRule, input, &parsedSize); if (parsedSize < input.size()){ bctbx_error("[bellesip-sdp-parser] Parsing ended prematuraly at pos %llu", (unsigned long long)parsedSize); } return elem; } shared_ptr bellesip::SDP::Parser::loadGrammar() { shared_ptr grammar = GrammarLoader::get().load("sdp_grammar"); if (!grammar) bctbx_fatal("Unable to load SDP grammar"); return grammar; } belle-sip-5.2.0+dfsg/src/sdp/parser.hh000066400000000000000000000024011434613136500175060ustar00rootroot00000000000000/* * Copyright (c) 2012-2021 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include #include using namespace std; namespace bellesip { namespace SDP { class Parser { public: static Parser *getInstance(); void * parse(const string &input, const string &rule); private: static Parser *instance; Parser(); ~Parser(); shared_ptr loadGrammar(); shared_ptr> _parser; }; } } belle-sip-5.2.0+dfsg/src/sdp/sdp.txt000066400000000000000000000371641434613136500172360ustar00rootroot00000000000000; SDP Syntax session-description = *(proto-version CRLF) *(origin CRLF) *(session-name CRLF) *(info CRLF) ;uri-field CRLF *(email CRLF) ;phone-fields CRLF *(connection CRLF) *(bandwidth CRLF) 1*(times CRLF) ;key-field CRLF *(attribute CRLF) *(media-description) proto-version = %x76 "=" proto-version-value ;this memo describes version 0 proto-version-value = 1*DIGIT origin = %x6f "=" username SP sess-id SP sess-version SP nettype SP addrtype SP unicast-address session-name = %x73 "=" session-name-value session-name-value = text info = %x69 "=" info-value info-value = text uri-field = [%x75 "=" uri CRLF] email = %x65 "=" email-address phone-fields = *(%x70 "=" phone-number CRLF) connection = %x63 "=" nettype SP addrtype SP connection-address ;a connection field must be present ;in every media description or at the ;session-level bandwidth = %x62 "=" bwtype ":" bwvalue bwtype = token bwvalue = 1*DIGIT times = %x74 "=" start-stop-times *(CRLF repeat-fields) ;[zone-adjustments CRLF] start-stop-times = start-time SP stop-time repeat-fields = %x72 "=" repeat-interval SP typed-time 1*(SP typed-time) zone-adjustments = %x7a "=" time SP ["-"] typed-time *(SP time SP ["-"] typed-time) key-field = [%x6b "=" key-type CRLF] media-description = media CRLF [info CRLF] *(connection CRLF) *(bandwidth CRLF) ;[key-field] *(attribute CRLF) media = %x6d "=" media-type SP sdp-port ["/" integer] SP proto 1*(SP fmt) ; sub-rules of 'o=' username = non-ws-string ;pretty wide definition, but doesn't ;include space sess-id = 1*DIGIT ;should be unique for this username/host sess-version = 1*DIGIT nettype = token ;typically "IN" addrtype = token ;typically "IP4" or "IP6" ; sub-rules of 'u=' ; uri = URI-reference ; see RFC 3986 ; sub-rules of 'e=', see RFC 2822 for definitions email-address = address-and-comment / dispname-and-address / addr-spec address-and-comment = addr-spec 1*SP "(" 1*email-safe ")" dispname-and-address = 1*email-safe 1*SP "<" addr-spec ">" ; sub-rules of 'p=' phone-number = phone *SP "(" 1*email-safe ")" / 1*email-safe "<" phone ">" / phone phone = ["+"] DIGIT 1*(SP / "-" / DIGIT) ; sub-rules of 'c=' connection-address = multicast-address / unicast-address ; sub-rules of 't=' start-time = time / "0" stop-time = time / "0" time = POS-DIGIT 9*DIGIT ; Decimal representation of NTP time in ; seconds since 1900. The representation ; of NTP time is an unbounded length field ; containing at least 10 digits. Unlike the ; 64-bit representation used elsewhere, time ; in SDP does not wrap in the year 2036. ; sub-rules of 'r=' and 'z=' repeat-interval = POS-DIGIT *DIGIT [fixed-len-time-unit] typed-time = 1*DIGIT [fixed-len-time-unit] fixed-len-time-unit = %x64 / %x68 / %x6d / %x73 ; sub-rules of 'k=' key-type = %x70 %x72 %x6f %x6d %x70 %x74 / ; "prompt" %x63 %x6c %x65 %x61 %x72 ":" text / ; "clear:" %x62 %x61 %x73 %x65 "64:" base64 / ; "base64:" %x75 %x72 %x69 ":" uri ; "uri:" base64 = *base64-unit [base64-pad] base64-unit = 4base64-char base64-pad = 2base64-char "==" / 3base64-char "=" base64-char = ALPHA / DIGIT / "+" / "/" ; sub-rules of 'a=' attribute = csup-attribute / acap-attribute / tcap-attribute / creq-attribute / pcfg-attribute / acfg-attribute / rtcp-fb-attribute / rtcp-xr-attribute / label-attribute / content-attribute / raw-attribute raw-attribute = %x61 "=" default-attribute default-attribute = (att-field ":" att-value) / att-field att-field = token att-value = byte-string ; sub-rules of 'm=' media-type = token ;typically "audio", "video", "text", or ;"application" fmt = token ;typically an RTP payload type for audio ;and video media proto = token *("/" token) ;typically "RTP/AVP" or "udp" sdp-port = 1*DIGIT ; generic sub-rules: addressing unicast-address = IP4-address / IP6-address / FQDN / extn-addr multicast-address = IP4-multicast / IP6-multicast; / FQDN ;/ extn-addr IP4-multicast = IP4-multicast-address "/" ttl [ "/" range ] ; IPv4 multicast addresses may be in the ; range 224.0.0.0 to 239.255.255.255 range = integer IP4-multicast-address = m1 3( "." decimal-uchar ) m1 = ("22" ("4"/"5"/"6"/"7"/"8"/"9")) / ("23" DIGIT ) IP6-multicast = hexpart [ "/" range ] ; IPv6 address starting with FF ttl = (POS-DIGIT *2DIGIT) / "0" FQDN = 4*(alpha-numeric / "-" / ".") ; fully qualified domain name as specified ; in RFC 1035 (and updates) IP4-address = b1 3("." decimal-uchar) b1 = decimal-uchar ; less than "224" ; The following is consistent with RFC 2373 [30], Appendix B. IP6-address = hexpart [ ":" IP4-address ] hexpart = hexseq / hexseq "::" [ hexseq ] / "::" [ hexseq ] hexseq = hex4 *( ":" hex4) hex4 = 1*4HEXDIG ; Generic for other address families extn-addr = non-ws-string ; generic sub-rules: datatypes text = byte-string ;default is to interpret this as UTF8 text. ;ISO 8859-1 requires "a=charset:ISO-8859-1" ;session-level attribute to be used byte-string = 1*(%x01-09/%x0B-0C/%x0E-FF) ;any byte except NUL, CR, or LF non-ws-string = 1*(VCHAR/%x80-FF) ;string of visible characters token-char = %x21 / %x23-27 / %x2A-2B / %x2D-2E / %x30-39 / %x41-5A / %x5E-7E token = 1*(token-char) email-safe = %x01-09/%x0B-0C/%x0E-27/%x2A-3B/%x3D/%x3F-FF ;any byte except NUL, CR, LF, or the quoting ;characters ()<> integer = POS-DIGIT *DIGIT ; generic sub-rules: primitives alpha-numeric = ALPHA / DIGIT POS-DIGIT = %x31-39 ; 1 - 9 decimal-uchar = DIGIT / POS-DIGIT DIGIT / ("1" 2*(DIGIT)) / ("2" ("0"/"1"/"2"/"3"/"4") DIGIT) / ("2" "5" ("0"/"1"/"2"/"3"/"4"/"5")) ; external references: ; ALPHA, DIGIT, CRLF, SP, VCHAR: from RFC 4234 ; addr-spec: from RFC 2822 addr-spec = text ; non-standard definition ; URI-reference: from RFC 3986 URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ] hier-part = "//" authority path-abempty / path-absolute / path-rootless / path-empty URI-reference = URI / relative-ref absolute-URI = scheme ":" hier-part [ "?" query ] relative-ref = relative-part [ "?" query ] [ "#" fragment ] relative-part = "//" authority path-abempty / path-absolute / path-noscheme / path-empty scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." ) authority = [ userinfo "@" ] host [ ":" port ] userinfo = *( unreserved / pct-encoded / sub-delims / ":" ) host = IP-literal / IPv4address / reg-name port = *DIGIT IP-literal = "[" ( IPv6address / IPvFuture ) "]" IPvFuture = "v" 1*HEXDIG "." 1*( unreserved / sub-delims / ":" ) IPv6address = 6( h16 ":" ) ls32 / "::" 5( h16 ":" ) ls32 / [ h16 ] "::" 4( h16 ":" ) ls32 / [ *1( h16 ":" ) h16 ] "::" 3( h16 ":" ) ls32 / [ *2( h16 ":" ) h16 ] "::" 2( h16 ":" ) ls32 / [ *3( h16 ":" ) h16 ] "::" h16 ":" ls32 / [ *4( h16 ":" ) h16 ] "::" ls32 / [ *5( h16 ":" ) h16 ] "::" h16 / [ *6( h16 ":" ) h16 ] "::" h16 = 1*4HEXDIG ls32 = ( h16 ":" h16 ) / IPv4address IPv4address = dec-octet "." dec-octet "." dec-octet "." dec-octet dec-octet = DIGIT ; 0-9 / %x31-39 DIGIT ; 10-99 / "1" 2DIGIT ; 100-199 / "2" %x30-34 DIGIT ; 200-249 / "25" %x30-35 ; 250-255 reg-name = *( unreserved / pct-encoded / sub-delims ) path = path-abempty ; begins with "/" or is empty / path-absolute ; begins with "/" but not "//" / path-noscheme ; begins with a non-colon segment / path-rootless ; begins with a segment / path-empty ; zero characters path-abempty = *( "/" segment ) path-absolute = "/" [ segment-nz *( "/" segment ) ] path-noscheme = segment-nz-nc *( "/" segment ) path-rootless = segment-nz *( "/" segment ) path-empty = text segment = *pchar segment-nz = 1*pchar segment-nz-nc = 1*( unreserved / pct-encoded / sub-delims / "@" ) ; non-zero-length segment without any colon ":" pchar = unreserved / pct-encoded / sub-delims / ":" / "@" query = *( pchar / "/" / "?" ) fragment = *( pchar / "/" / "?" ) pct-encoded = "%" HEXDIG HEXDIG unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~" reserved = gen-delims / sub-delims gen-delims = ":" / "/" / "?" / "#" / "[" / "]" / "@" sub-delims = "!" / "$" / "&" / "'" / "(" / ")" / "*" / "+" / "," / ";" / "=" ; RFC4585 rtcp-fb-attribute = %x61 "=" "rtcp-fb:" rtcp-fb-pt SP rtcp-fb-val ;%x61 "=rtcp-fb:" rtcp-fb-pt SP rtcp-fb-val rtcp-fb-pt = "*" ; wildcard: applies to all formats / fmt ; as defined in SDP spec rtcp-fb-val = rtcp-fb-ack-type [rtcp-fb-ack-param] / rtcp-fb-nack-type [rtcp-fb-nack-param] / rtcp-fb-trr-int-type SP rtcp-fb-trr-int / rtcp-fb-ccm-type SP rtcp-fb-ccm-param / rtcp-fb-id rtcp-fb-param / rtcp-fb-id ;no or empty param rtcp-fb-trr-int-type = "trr-int" rtcp-fb-trr-int = 1*DIGIT ; RFC5104 rtcp-fb-ccm-type = "ccm" rtcp-fb-ccm-param = "fir" ; Full Intra Request / rtcp-fb-ccm-tmmbr-param [SP "smaxpr=" text] ; Temporary max media bit rate ; / "tstr" ; Temporal-Spatial Trade-Off, not implemented ; / "vbcm" *(SP subMessageType) ; H.271 VBCMs, not implemented ; / token [SP byte-string], not implemented rtcp-fb-ccm-tmmbr-param = "tmmbr" rtcp-fb-id = 1*(alpha-numeric / "-" / "_") rtcp-fb-param = SP "app" [SP byte-string] / SP token [SP byte-string] / rtcp-fb-trr-int rtcp-fb-ack-type = "ack" rtcp-fb-ack-param = SP "rpsi" / SP "app" [SP byte-string] / SP token [SP byte-string] / text ; empty rtcp-fb-nack-type = "nack" rtcp-fb-nack-param = SP "pli" / SP "sli" / SP "rpsi" / SP "app" [SP byte-string] / SP token [SP byte-string] / text ; empty ; RFC3611 rtcp-xr-attribute = %x61 "=" "rtcp-xr" [":" xr-format *(SP xr-format)] xr-format = pkt-loss-rle / pkt-dup-rle / pkt-rcpt-times / rcvr-rtt / stat-summary / voip-metrics / format-ext pkt-loss-rle = "pkt-loss-rle" ["=" max-size] pkt-dup-rle = "pkt-dup-rle" ["=" max-size] pkt-rcpt-times = "pkt-rcpt-times" ["=" max-size] rcvr-rtt = "rcvr-rtt" "=" rcvr-rtt-mode [":" max-size] rcvr-rtt-mode = "all" / "sender" stat-summary = "stat-summary" ["=" stat-flag *("," stat-flag)] stat-flag = "loss" / "dup" / "jitt" / "TTL" / "HL" voip-metrics = "voip-metrics" max-size = text; 1*DIGIT ; maximum block size in octets ;DIGIT = %x30-39 format-ext = text; non-ws-string ; non-ws-string= 1*(%x21-FF) ;CRLF = %d13.10 ; RFC5939 csup-attribute = %x61 "=" "csup:" option-tag-list creq-attribute = %x61 "=" "creq:" option-tag-list option-tag-list= option-tag *("," option-tag) option-tag = token ; defined in [RFC4566] tcap-attribute = %x61 "=" "tcap:" trpr-cap-num 1*WSP proto-list trpr-cap-num = 1*10(DIGIT) proto-list = proto *(1*WSP proto) acap-attribute = %x61 "=" "acap:" acap-cap-num 1*WSP acap-att-par acap-cap-num = 1*10(DIGIT) acap-att-par = default-attribute ; acfg/pcfg acfg-attribute = %x61 "=" "acfg:" config-number [1*WSP sel-cfg-list] pcfg-attribute = %x61 "=" "pcfg:" config-number [1*WSP pot-cfg-list] config-number = 1*10(DIGIT) sel-cfg-list = sel-config *(1*WSP sel-config) sel-config = 1*VCHAR; sel-attribute-config / sel-transport-protocol-config / sel-extension-config pot-cfg-list = pot-config *(1*WSP pot-config) pot-config = 1*VCHAR; attribute-config-list / transport-protocol-config-list / extension-config-list sel-attribute-config = "a=" [delete-attributes ":"] mo-att-cap-list sel-transport-protocol-config = "t=" trpr-cap-num sel-extension-config = ext-cap-name "=" 1*VCHAR attribute-config-list = "a=" delete-attributes ;attribute-config-list =/ "a=" [delete-attributes ":"] mo-att-cap-list *("|" mo-att-cap-list) transport-protocol-config-list = "t=" trpr-cap-num *("|" trpr-cap-num) delete-attributes = "-" ( "m" / "s" / "ms" ) mo-att-cap-list = mandatory-optional-att-cap-list / mandatory-att-cap-list / optional-att-cap-list mandatory-optional-att-cap-list = mandatory-att-cap-list "," optional-att-cap-list mandatory-att-cap-list = att-cap-list optional-att-cap-list = "[" att-cap-list "]" extension-config-list = ["+"] ext-cap-name "=" ext-cap-list att-cap-list = att-cap-num *("," att-cap-num) att-cap-num = 1*10(DIGIT) ext-cap-name = 1*(ALPHA / DIGIT) ext-cap-list = 1*VCHAR ; RFC4796 content-attribute = %x61 "=" "content:" mediacnt-tag mediacnt-tag = mediacnt *("," mediacnt) mediacnt = "slides" / "speaker" / "sl" / "main" / "alt" / mediacnt-ext mediacnt-ext = token ; RFC4574 label-attribute = %x61 "=" "label:" pointer pointer = token belle-sip-5.2.0+dfsg/src/sdp/sdp_grammar000066400000000000000000000266561434613136500201320ustar00rootroot00000000000000#!belrcore rulesabsolute-uri scheme: hier-part? query acap-att-par default-attributeacap-attributea=acap: acap-cap-numÿÿÿÿ wsp acap-att-paracap-cap-num digitacfg-attributea=acfg: config-numberÿÿÿÿ wsp sel-cfg-list addr-spec textaddress-and-comment addr-specÿÿÿÿ sp(ÿÿÿÿ email-safe) addrtype tokenalphaazAZalpha-numeric alpha digitatt-cap-list att-cap-numÿÿÿÿ, att-cap-numatt-cap-num digit att-field token att-value byte-stringattribute csup-attribute acap-attribute tcap-attribute creq-attribute pcfg-attribute acfg-attribute rtcp-fb-attribute rtcp-xr-attribute label-attribute content-attribute raw-attributeattribute-config-lista= delete-attributesauthority userinfo@ host: port b1 decimal-ucharbandwidthb= bwtype: bwvaluebase64ÿÿÿÿ base64-unit base64-padbase64-char alpha digit+/base64-pad base64-char== base64-char=base64-unit base64-charbit01 bwtype tokenbwvalueÿÿÿÿ digitbyte-stringÿÿÿÿ  ÿcharconfig-number digitconnectionc= nettype sp addrtype sp connection-addressconnection-address multicast-address unicast-addresscontent-attributea=content: mediacnt-tagcr creq-attributea=creq: option-tag-listcrlf cr lfcsup-attributea=csup: option-tag-listctldec-octet digit19 digit1 digit204 digit2505decimal-uchar digit pos-digit digit1ÿÿÿÿ digit201234 digit25012345default-attribute att-field: att-value att-fielddelete-attributes-msmsdigit09dispname-and-addressÿÿÿÿ email-safeÿÿÿÿ sp< addr-spec>dquote"emaile= email-addressemail-address address-and-comment dispname-and-address addr-specemail-safe  '*;=?ÿext-cap-listÿÿÿÿ vcharext-cap-nameÿÿÿÿ alpha digitextension-config-list+ ext-cap-name= ext-cap-list extn-addr non-ws-stringfixed-len-time-unitdhms fmt token format-ext textfqdnÿÿÿÿ alpha-numeric-.fragmentÿÿÿÿ pchar/?gen-delims:/?#[]@h16 hexdighex4 hexdighexdig digitabcdefhexpart hexseq hexseq:: hexseq:: hexseqhexseq hex4ÿÿÿÿ: hex4hier-part// authority path-abempty path-absolute path-rootless path-emptyhost ip-literal ipv4address reg-namehtab infoi= info-value info-value textinteger pos-digitÿÿÿÿ digitip-literal[ ipv6address ipvfuture]ip4-address b1. decimal-ucharip4-multicast ip4-multicast-address/ ttl/ rangeip4-multicast-address m1. decimal-ucharip6-address hexpart: ip4-addressip6-multicast hexpart/ rangeipv4address dec-octet. dec-octet. dec-octet. dec-octetipv6address  h16: ls32:: h16: ls32 h16:: h16: ls32 h16: h16:: h16: ls32 h16: h16:: h16: ls32 h16: h16:: h16: ls32 h16: h16:: ls32 h16: h16:: h16 h16: h16::ipvfuturevÿÿÿÿ hexdig.ÿÿÿÿ unreserved sub-delims:key-fieldk= key-type crlfkey-typepromptclear: textbase64: base64uri: urilabel-attributea=label: pointerlf ls32 h16: h16 ipv4addresslwspÿÿÿÿ wsp crlf wspm12245678923 digit mandatory-att-cap-list att-cap-listmandatory-optional-att-cap-list mandatory-att-cap-list, optional-att-cap-list max-size textmedia m= media-type sp sdp-port/ integer sp protoÿÿÿÿ sp fmtmedia-description media crlf info crlfÿÿÿÿ connection crlfÿÿÿÿ bandwidth crlfÿÿÿÿ attribute crlf media-type tokenmediacntslidesspeakerslmainalt mediacnt-ext mediacnt-ext tokenmediacnt-tag mediacntÿÿÿÿ, mediacntmo-att-cap-list mandatory-optional-att-cap-list mandatory-att-cap-list optional-att-cap-listmulticast-address ip4-multicast ip6-multicast nettype tokennon-ws-stringÿÿÿÿ vchar€ÿoctetÿ option-tag tokenoption-tag-list option-tagÿÿÿÿ, option-tagoptional-att-cap-list[ att-cap-list]origin o= username sp sess-id sp sess-version sp nettype sp addrtype sp unicast-addresspath path-abempty path-absolute path-noscheme path-rootless path-emptypath-abemptyÿÿÿÿ/ segmentpath-absolute/ segment-nzÿÿÿÿ/ segment path-empty textpath-noscheme segment-nz-ncÿÿÿÿ/ segmentpath-rootless segment-nzÿÿÿÿ/ segmentpcfg-attributea=pcfg: config-numberÿÿÿÿ wsp pot-cfg-listpchar unreserved pct-encoded sub-delims:@pct-encoded% hexdig hexdigphone+ digitÿÿÿÿ sp- digitphone-fieldsÿÿÿÿp= phone-number crlfphone-number phoneÿÿÿÿ sp(ÿÿÿÿ email-safe)ÿÿÿÿ email-safe< phone> phonepkt-dup-rlepkt-dup-rle= max-sizepkt-loss-rlepkt-loss-rle= max-sizepkt-rcpt-timespkt-rcpt-times= max-size pointer tokenportÿÿÿÿ digitpos-digit19pot-cfg-list pot-configÿÿÿÿÿÿÿÿ wsp pot-configpot-configÿÿÿÿ vcharproto tokenÿÿÿÿ/ tokenproto-list protoÿÿÿÿÿÿÿÿ wsp protoproto-versionv= proto-version-valueproto-version-valueÿÿÿÿ digitqueryÿÿÿÿ pchar/? range integerraw-attributea= default-attributercvr-rttrcvr-rtt= rcvr-rtt-mode: max-sizercvr-rtt-modeallsenderreg-nameÿÿÿÿ unreserved pct-encoded sub-delimsrelative-part// authority path-abempty path-absolute path-noscheme path-emptyrelative-ref relative-part? query# fragmentrepeat-fieldsr= repeat-interval sp typed-timeÿÿÿÿ sp typed-timerepeat-interval pos-digitÿÿÿÿ digit fixed-len-time-unitreserved gen-delims sub-delimsrtcp-fb-ack-param sprpsi spapp sp byte-string sp token sp byte-string textrtcp-fb-ack-typeackrtcp-fb-attributea=rtcp-fb: rtcp-fb-pt sp rtcp-fb-valrtcp-fb-ccm-paramfir rtcp-fb-ccm-tmmbr-param spsmaxpr= textrtcp-fb-ccm-tmmbr-paramtmmbrrtcp-fb-ccm-typeccmrtcp-fb-idÿÿÿÿ alpha-numeric-_rtcp-fb-nack-param sppli spsli sprpsi spapp sp byte-string sp token sp byte-string textrtcp-fb-nack-typenackrtcp-fb-param spapp sp byte-string sp token sp byte-string rtcp-fb-trr-intrtcp-fb-pt* fmtrtcp-fb-trr-intÿÿÿÿ digitrtcp-fb-trr-int-typetrr-intrtcp-fb-val rtcp-fb-ack-type rtcp-fb-ack-param rtcp-fb-nack-type rtcp-fb-nack-param rtcp-fb-trr-int-type sp rtcp-fb-trr-int rtcp-fb-ccm-type sp rtcp-fb-ccm-param rtcp-fb-id rtcp-fb-param rtcp-fb-idrtcp-xr-attributea=rtcp-xr: xr-formatÿÿÿÿ sp xr-formatscheme alphaÿÿÿÿ alpha digit+-.sdp-portÿÿÿÿ digitsegmentÿÿÿÿ pcharsegment-nzÿÿÿÿ pcharsegment-nz-ncÿÿÿÿ unreserved pct-encoded sub-delims@sel-attribute-configa= delete-attributes: mo-att-cap-listsel-cfg-list sel-configÿÿÿÿÿÿÿÿ wsp sel-configsel-configÿÿÿÿ vcharsel-extension-config ext-cap-name=ÿÿÿÿ vcharsel-transport-protocol-configt= trpr-cap-numsess-idÿÿÿÿ digitsess-versionÿÿÿÿ digitsession-description ÿÿÿÿ proto-version crlfÿÿÿÿ origin crlfÿÿÿÿ session-name crlfÿÿÿÿ info crlfÿÿÿÿ email crlfÿÿÿÿ connection crlfÿÿÿÿ bandwidth crlfÿÿÿÿ times crlfÿÿÿÿ attribute crlfÿÿÿÿ media-descriptionsession-names= session-name-value session-name-value textsp start-stop-times start-time sp stop-timestart-time time0stat-flaglossdupjittttlhlstat-summarystat-summary= stat-flagÿÿÿÿ, stat-flagstop-time time0sub-delims !$&'()*+,;=tcap-attributea=tcap: trpr-cap-numÿÿÿÿ wsp proto-list text byte-stringtime pos-digit ÿÿÿÿ digittimest= start-stop-timesÿÿÿÿ crlf repeat-fieldstokenÿÿÿÿ token-chartoken-char!#'*+-.09AZ^~transport-protocol-config-listt= trpr-cap-numÿÿÿÿ| trpr-cap-numtrpr-cap-num digitttl pos-digit digit0typed-timeÿÿÿÿ digit fixed-len-time-unitunicast-address ip4-address ip6-address fqdn extn-addrunreserved alpha digit-._~uri scheme: hier-part? query# fragmenturi-fieldu= uri crlfuri-reference uri relative-refuserinfoÿÿÿÿ unreserved pct-encoded sub-delims: username non-ws-stringvchar!~voip-metricsvoip-metricswsp sp htabxr-format pkt-loss-rle pkt-dup-rle pkt-rcpt-times rcvr-rtt stat-summary voip-metrics format-extzone-adjustmentsz= time sp- typed-timeÿÿÿÿ sp time sp- typed-timebelle-sip-5.2.0+dfsg/src/siplistener.c000066400000000000000000000141571434613136500176230ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "belle_sip_internal.h" belle_sip_response_t* belle_sip_response_event_get_response(const belle_sip_response_event_t* event) { return event->response; } belle_sip_client_transaction_t *belle_sip_response_event_get_client_transaction(const belle_sip_response_event_t* event){ return event->client_transaction; } belle_sip_dialog_t *belle_sip_response_event_get_dialog(const belle_sip_response_event_t* event){ return event->dialog; } belle_sip_request_t* belle_sip_request_event_get_request(const belle_sip_request_event_t* event){ return event->request; } belle_sip_server_transaction_t *belle_sip_request_event_get_server_transaction(const belle_sip_request_event_t* event){ return event->server_transaction; } belle_sip_dialog_t *belle_sip_request_event_get_dialog(const belle_sip_request_event_t* event){ return event->dialog; } belle_sip_dialog_t* belle_sip_dialog_terminated_event_get_dialog(const belle_sip_dialog_terminated_event_t *event) { return event->dialog; } int belle_sip_dialog_terminated_event_is_expired(const belle_sip_dialog_terminated_event_t *event){ return event->is_expired; } const char* belle_sip_io_error_event_get_host(const belle_sip_io_error_event_t* event) { return event->host; } const char* belle_sip_io_error_event_get_transport(const belle_sip_io_error_event_t* event) { return event->transport; } unsigned int belle_sip_io_error_event_port(const belle_sip_io_error_event_t* event) { return event->port; } belle_sip_object_t* belle_sip_io_error_event_get_source(const belle_sip_io_error_event_t* event) { return event->source; } typedef struct belle_sip_callbacks belle_sip_callbacks_t; struct belle_sip_callbacks{ belle_sip_object_t base; belle_sip_listener_callbacks_t cbs; void *user_ctx; }; static void process_dialog_terminated(belle_sip_listener_t *l, const belle_sip_dialog_terminated_event_t *event){ belle_sip_callbacks_t *obj=(belle_sip_callbacks_t*)l; if (obj->cbs.process_dialog_terminated) obj->cbs.process_dialog_terminated(obj->user_ctx,event); } static void process_io_error(belle_sip_listener_t *l, const belle_sip_io_error_event_t *event){ belle_sip_callbacks_t *obj=(belle_sip_callbacks_t*)l; if (obj->cbs.process_io_error) obj->cbs.process_io_error(obj->user_ctx,event); } static void process_request_event(belle_sip_listener_t *l, const belle_sip_request_event_t *event){ belle_sip_callbacks_t *obj=(belle_sip_callbacks_t*)l; if (obj->cbs.process_request_event) obj->cbs.process_request_event(obj->user_ctx,event); } static void process_response_event(belle_sip_listener_t *l, const belle_sip_response_event_t *event){ belle_sip_callbacks_t *obj=(belle_sip_callbacks_t*)l; if (obj->cbs.process_response_event) obj->cbs.process_response_event(obj->user_ctx,event); } static void process_timeout(belle_sip_listener_t *l, const belle_sip_timeout_event_t *event){ belle_sip_callbacks_t *obj=(belle_sip_callbacks_t*)l; if (obj->cbs.process_timeout) obj->cbs.process_timeout(obj->user_ctx,event); } static void process_transaction_terminated(belle_sip_listener_t *l, const belle_sip_transaction_terminated_event_t *event){ belle_sip_callbacks_t *obj=(belle_sip_callbacks_t*)l; if (obj->cbs.process_transaction_terminated) obj->cbs.process_transaction_terminated(obj->user_ctx,event); } static void process_auth_requested(belle_sip_listener_t *l, belle_sip_auth_event_t *event){ belle_sip_callbacks_t *obj=(belle_sip_callbacks_t*)l; if (obj->cbs.process_auth_requested) obj->cbs.process_auth_requested(obj->user_ctx,event); } BELLE_SIP_DECLARE_VPTR(belle_sip_callbacks_t); BELLE_SIP_IMPLEMENT_INTERFACE_BEGIN(belle_sip_callbacks_t,belle_sip_listener_t) process_dialog_terminated, process_io_error, process_request_event, process_response_event, process_timeout, process_transaction_terminated, process_auth_requested BELLE_SIP_IMPLEMENT_INTERFACE_END BELLE_SIP_DECLARE_IMPLEMENTED_INTERFACES_1(belle_sip_callbacks_t,belle_sip_listener_t); static void belle_sip_callbacks_destroy(belle_sip_callbacks_t *obj){ if (obj->cbs.listener_destroyed) obj->cbs.listener_destroyed(obj->user_ctx); } BELLE_SIP_INSTANCIATE_VPTR(belle_sip_callbacks_t,belle_sip_object_t,belle_sip_callbacks_destroy,NULL,NULL,FALSE); belle_sip_listener_t *belle_sip_listener_create_from_callbacks(const belle_sip_listener_callbacks_t *callbacks, void *user_ctx){ belle_sip_callbacks_t *obj=belle_sip_object_new(belle_sip_callbacks_t); memcpy(&obj->cbs,callbacks,sizeof(belle_sip_listener_callbacks_t)); obj->user_ctx=user_ctx; return BELLE_SIP_LISTENER(obj); } belle_sip_client_transaction_t *belle_sip_transaction_terminated_event_get_client_transaction(const belle_sip_transaction_terminated_event_t* event) { return event->is_server_transaction ? NULL:BELLE_SIP_CLIENT_TRANSACTION(event->transaction); } belle_sip_server_transaction_t *belle_sip_transaction_terminated_event_get_server_transaction(const belle_sip_transaction_terminated_event_t* event) { return event->is_server_transaction ? BELLE_SIP_SERVER_TRANSACTION(event->transaction):NULL; } belle_sip_client_transaction_t *belle_sip_timeout_event_get_client_transaction(const belle_sip_timeout_event_t* event) { return event->is_server_transaction ? NULL:BELLE_SIP_CLIENT_TRANSACTION(event->transaction); } belle_sip_server_transaction_t *belle_sip_timeout_event_get_server_transaction(const belle_sip_timeout_event_t* event) { return event->is_server_transaction ? BELLE_SIP_SERVER_TRANSACTION(event->transaction):NULL; } belle-sip-5.2.0+dfsg/src/sipstack.c000066400000000000000000000372531434613136500171050ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "belle_sip_internal.h" #include "listeningpoint_internal.h" static int belle_sip_well_known_port = 5060; static int belle_sip_well_known_port_tls = 5061; int belle_sip_stack_get_well_known_port(){ return belle_sip_well_known_port; } void belle_sip_stack_set_well_known_port(int value){ bctbx_message("belle_sip_stack_set_well_know_port() : set to [%i]", value); belle_sip_well_known_port = value; } int belle_sip_stack_get_well_known_port_tls(){ return belle_sip_well_known_port_tls; } void belle_sip_stack_set_well_known_port_tls(int value){ bctbx_message("belle_sip_stack_set_well_know_port_tls() : set to [%i]", value); belle_sip_well_known_port_tls = value; } belle_sip_hop_t* belle_sip_hop_new(const char* transport, const char *cname, const char* host,int port) { belle_sip_hop_t* hop = belle_sip_object_new(belle_sip_hop_t); if (transport) hop->transport=belle_sip_strdup(transport); if (host) { if (host[0] == '[' && host[1] != '\0'){ /*IPv6 case */ hop->host = belle_sip_strdup(host+1); hop->host[strlen(hop->host)-1] = '\0'; }else{ hop->host=belle_sip_strdup(host); } } if (cname) hop->cname=belle_sip_strdup(cname); hop->port=port; return hop; } belle_sip_hop_t* belle_sip_hop_new_from_uri(const belle_sip_uri_t *uri){ const char *host; const char *cname=NULL; const char * transport=belle_sip_uri_get_transport_param(uri); belle_sip_hop_t *hop; if (!transport) { transport=belle_sip_uri_is_secure(uri)?"tls":"udp"; } host = belle_sip_uri_get_maddr_param(uri); if (!host) host=belle_sip_uri_get_host(uri); cname=belle_sip_uri_get_host(uri); hop = belle_sip_hop_new( transport, cname, host, belle_sip_uri_get_listening_port(uri)); hop->port_is_explicit = (belle_sip_uri_get_port(uri) > 0); return hop; } belle_sip_hop_t* belle_sip_hop_new_from_generic_uri(const belle_generic_uri_t *uri){ const char *host; const char * transport="TCP"; const char *scheme=belle_generic_uri_get_scheme(uri); int port=belle_generic_uri_get_port(uri); int well_known_port=0; const char *cname=NULL; host = belle_sip_parameters_get_parameter(BELLE_SIP_PARAMETERS(uri),"maddr"); if (!host) host = belle_generic_uri_get_host(uri); else cname=belle_generic_uri_get_host(uri); if (strcasecmp(scheme,"http")==0) { transport="TCP"; well_known_port=80; }else if (strcasecmp(scheme,"https")==0) { transport="TLS"; well_known_port=443; } return belle_sip_hop_new(transport, cname, host, port > 0 ? port : well_known_port); } static void belle_sip_hop_destroy(belle_sip_hop_t *hop){ if (hop->host) { belle_sip_free(hop->host); hop->host=NULL; } if (hop->cname){ belle_sip_free(hop->cname); hop->cname=NULL; } if (hop->transport){ belle_sip_free(hop->transport); hop->transport=NULL; } } static void belle_sip_hop_clone(belle_sip_hop_t *hop, const belle_sip_hop_t *orig){ if (orig->host) hop->host=belle_sip_strdup(orig->host); if (orig->cname) hop->cname=belle_sip_strdup(orig->cname); if (orig->transport) hop->transport=belle_sip_strdup(orig->transport); } BELLE_SIP_DECLARE_NO_IMPLEMENTED_INTERFACES(belle_sip_hop_t); BELLE_SIP_INSTANCIATE_VPTR(belle_sip_hop_t,belle_sip_object_t,belle_sip_hop_destroy,belle_sip_hop_clone,NULL,TRUE); struct belle_sip_digest_authentication_policy{ belle_sip_object_t base; unsigned char allow_md5; unsigned char allow_no_qop; }; static void belle_sip_digest_authentication_policy_clone(belle_sip_digest_authentication_policy_t *obj, const belle_sip_digest_authentication_policy_t *from){ obj->allow_md5 = from->allow_md5; obj->allow_no_qop = from->allow_no_qop; } GET_SET_INT(belle_sip_digest_authentication_policy, allow_md5, unsigned char) GET_SET_INT(belle_sip_digest_authentication_policy, allow_no_qop, unsigned char) BELLE_SIP_DECLARE_NO_IMPLEMENTED_INTERFACES(belle_sip_digest_authentication_policy_t); BELLE_SIP_INSTANCIATE_VPTR(belle_sip_digest_authentication_policy_t,belle_sip_object_t,NULL,belle_sip_digest_authentication_policy_clone,NULL,TRUE); belle_sip_digest_authentication_policy_t * belle_sip_digest_authentication_policy_new(void){ belle_sip_digest_authentication_policy_t *obj = belle_sip_object_new(belle_sip_digest_authentication_policy_t); obj->allow_md5 = TRUE; obj->allow_no_qop = TRUE; return obj; } static void belle_sip_stack_destroy(belle_sip_stack_t *stack){ belle_sip_message("stack [%p] destroyed.",stack); if (stack->dns_user_hosts_file) belle_sip_free(stack->dns_user_hosts_file); if (stack->dns_resolv_conf) belle_sip_free(stack->dns_resolv_conf); belle_sip_object_unref(stack->ml); belle_sip_object_unref(stack->digest_auth_policy); if (stack->http_proxy_host) belle_sip_free(stack->http_proxy_host); if (stack->http_proxy_passwd) belle_sip_free(stack->http_proxy_passwd); if (stack->http_proxy_username) belle_sip_free(stack->http_proxy_username); belle_sip_list_free_with_data(stack->dns_servers, belle_sip_free); #ifdef HAVE_DNS_SERVICE if (stack->dns_service_queue) { dispatch_release(stack->dns_service_queue); stack->dns_service_queue = NULL; } #endif /* HAVE_DNS_SERVICE */ bctbx_uninit_logger(); } BELLE_SIP_DECLARE_NO_IMPLEMENTED_INTERFACES(belle_sip_stack_t); BELLE_SIP_INSTANCIATE_VPTR(belle_sip_stack_t,belle_sip_object_t,belle_sip_stack_destroy,NULL,NULL,FALSE); belle_sip_stack_t * belle_sip_stack_new(const char *properties){ belle_sip_stack_t *stack=belle_sip_object_new(belle_sip_stack_t); bctbx_init_logger(FALSE); stack->ml=belle_sip_main_loop_new (); stack->timer_config.T1=500; stack->timer_config.T2=4000; stack->timer_config.T4=5000; stack->transport_timeout=63000; stack->dns_timeout=15000; stack->dns_srv_enabled=TRUE; stack->dns_search_enabled=TRUE; stack->inactive_transport_timeout=3600; /*one hour*/ stack->unreliable_transport_timeout = 120; #ifdef HAVE_DNS_SERVICE stack->dns_service_queue = dispatch_queue_create("com.belledonne_communications.belle_sip.dns_service_queue", DISPATCH_QUEUE_SERIAL); stack->use_dns_service = TRUE; #endif /* HAVE_DNS_SERVICE */ belle_sip_stack_set_digest_authentication_policy(stack, belle_sip_digest_authentication_policy_new()); return stack; } const belle_sip_timer_config_t *belle_sip_stack_get_timer_config(const belle_sip_stack_t *stack){ return &stack->timer_config; } void belle_sip_stack_set_timer_config(belle_sip_stack_t *stack,const belle_sip_timer_config_t *timer_config){ belle_sip_message("Setting timer config to T1 [%i], T2 [%i], T3 [%i], T4 [%i] on stack [%p]", timer_config->T1 , timer_config->T2 , timer_config->T3 , timer_config->T4 , stack); stack->timer_config=*timer_config; } void belle_sip_stack_set_transport_timeout(belle_sip_stack_t *stack, int timeout_ms){ stack->transport_timeout=timeout_ms; } int belle_sip_stack_get_transport_timeout(const belle_sip_stack_t *stack){ return stack->transport_timeout; } int belle_sip_stack_get_dns_timeout(const belle_sip_stack_t *stack) { return stack->dns_timeout; } void belle_sip_stack_set_dns_timeout(belle_sip_stack_t *stack, int timeout) { stack->dns_timeout = timeout; } unsigned char belle_sip_stack_get_dns_engine(const belle_sip_stack_t *stack) { #ifdef HAVE_DNS_SERVICE return stack->use_dns_service==TRUE?BELLE_SIP_DNS_APPLE_DNS_SERVICE:BELLE_SIP_DNS_DNS_C; #else /* HAVE_DNS_SERVICE */ return BELLE_SIP_DNS_DNS_C; #endif /* else HAVE_DNS_SERVICE*/ } void belle_sip_stack_set_dns_engine(belle_sip_stack_t *stack, unsigned char dns_engine) { #ifdef HAVE_DNS_SERVICE switch (dns_engine) { case BELLE_SIP_DNS_APPLE_DNS_SERVICE: stack->use_dns_service = TRUE; break; case BELLE_SIP_DNS_DNS_C: stack->use_dns_service = FALSE; break; default: belle_sip_error("Cannot set DNS engine to unknown value : %d", dns_engine); } #endif /* HAVE_DNS_SERVICE */ } unsigned char belle_sip_stack_dns_srv_enabled(const belle_sip_stack_t *stack) { return stack->dns_srv_enabled; } void belle_sip_stack_enable_dns_srv(belle_sip_stack_t *stack, unsigned char enable) { stack->dns_srv_enabled = enable; } unsigned char belle_sip_stack_dns_search_enabled(const belle_sip_stack_t *stack) { return stack->dns_search_enabled; } void belle_sip_stack_enable_dns_search(belle_sip_stack_t *stack, unsigned char enable) { stack->dns_search_enabled = enable; } belle_sip_listening_point_t *belle_sip_stack_create_listening_point(belle_sip_stack_t *s, const char *ipaddress, int port, const char *transport){ belle_sip_listening_point_t *lp=NULL; if (strcasecmp(transport,"UDP")==0) { lp=belle_sip_udp_listening_point_new(s,ipaddress,port); } else if (strcasecmp(transport,"TCP") == 0) { lp=belle_sip_stream_listening_point_new(s,ipaddress,port); }else if (strcasecmp(transport,"TLS") == 0) { lp=belle_sip_tls_listening_point_new(s,ipaddress,port); } else { belle_sip_fatal("Unsupported transport %s",transport); } return lp; } void belle_sip_stack_delete_listening_point(belle_sip_stack_t *s, belle_sip_listening_point_t *lp){ belle_sip_object_unref(lp); } belle_sip_provider_t *belle_sip_stack_create_provider(belle_sip_stack_t *s, belle_sip_listening_point_t *lp){ belle_sip_provider_t *p=belle_sip_provider_new(s,lp); return p; } belle_http_provider_t *belle_sip_stack_create_http_provider(belle_sip_stack_t *s, const char *bind_ip){ return belle_sip_stack_create_http_provider_with_transports(s, bind_ip, BELLE_SIP_HTTP_TRANSPORT_TCP|BELLE_SIP_HTTP_TRANSPORT_TLS); } belle_http_provider_t *belle_sip_stack_create_http_provider_with_transports(belle_sip_stack_t *s, const char *bind_ip, const uint8_t transports){ belle_http_provider_t *p=belle_http_provider_new(s, bind_ip, transports); return p; } void belle_sip_stack_delete_provider(belle_sip_stack_t *s, belle_sip_provider_t *p){ belle_sip_object_unref(p); } belle_sip_main_loop_t * belle_sip_stack_get_main_loop(belle_sip_stack_t *stack){ return stack->ml; } void belle_sip_stack_main(belle_sip_stack_t *stack){ belle_sip_main_loop_run(stack->ml); } void belle_sip_stack_sleep(belle_sip_stack_t *stack, unsigned int milliseconds){ belle_sip_main_loop_sleep (stack->ml,milliseconds); } belle_sip_hop_t * belle_sip_stack_get_next_hop(belle_sip_stack_t *stack, belle_sip_request_t *req) { belle_sip_header_route_t *route=BELLE_SIP_HEADER_ROUTE(belle_sip_message_get_header(BELLE_SIP_MESSAGE(req),"route")); belle_sip_uri_t *uri; if (route!=NULL){ uri=belle_sip_header_address_get_uri(BELLE_SIP_HEADER_ADDRESS(route)); }else{ uri=belle_sip_request_get_uri(req); } return belle_sip_hop_new_from_uri(uri); } void belle_sip_stack_set_tx_delay(belle_sip_stack_t *stack, int delay_ms){ stack->tx_delay=delay_ms; } void belle_sip_stack_set_send_error(belle_sip_stack_t *stack, int send_error){ stack->send_error=send_error; } void belle_sip_stack_set_resolver_tx_delay(belle_sip_stack_t *stack, int delay_ms) { stack->resolver_tx_delay = delay_ms; } void belle_sip_stack_set_resolver_send_error(belle_sip_stack_t *stack, int send_error) { stack->resolver_send_error = send_error; } void belle_sip_stack_simulate_non_working_srv(belle_sip_stack_t *stack, int yesno){ stack->simulate_non_working_srv = yesno; } const char * belle_sip_stack_get_dns_user_hosts_file(const belle_sip_stack_t *stack) { return stack->dns_user_hosts_file; } void belle_sip_stack_set_dns_user_hosts_file(belle_sip_stack_t *stack, const char *hosts_file) { if (stack->dns_user_hosts_file) belle_sip_free(stack->dns_user_hosts_file); stack->dns_user_hosts_file = hosts_file?belle_sip_strdup(hosts_file):NULL; } const char * belle_sip_stack_get_dns_resolv_conf_file(const belle_sip_stack_t *stack){ return stack->dns_resolv_conf; } void belle_sip_stack_set_dns_resolv_conf_file(belle_sip_stack_t *stack, const char *resolv_conf_file){ if (stack->dns_resolv_conf) belle_sip_free(stack->dns_resolv_conf); stack->dns_resolv_conf = resolv_conf_file?belle_sip_strdup(resolv_conf_file):NULL; } void belle_sip_stack_set_dns_servers(belle_sip_stack_t *stack, const belle_sip_list_t *servers){ belle_sip_list_t *newservers = NULL; if (servers) newservers = belle_sip_list_copy_with_data(servers, (void *(*)(void*))belle_sip_strdup); if (stack->dns_servers){ belle_sip_list_free_with_data(stack->dns_servers, belle_sip_free); } stack->dns_servers = newservers; } const char* belle_sip_version_to_string() { #ifdef BELLESIP_VERSION return BELLESIP_VERSION; #else return PACKAGE_VERSION; #endif } int belle_sip_stack_get_inactive_transport_timeout(const belle_sip_stack_t *stack){ return stack->inactive_transport_timeout; } void belle_sip_stack_set_inactive_transport_timeout(belle_sip_stack_t *stack, int seconds){ stack->inactive_transport_timeout=seconds; } void belle_sip_stack_set_unreliable_connection_timeout(belle_sip_stack_t *stack, int seconds){ stack->unreliable_transport_timeout = seconds; } int belle_sip_stack_get_unreliable_connection_timeout(const belle_sip_stack_t *stack){ return stack->unreliable_transport_timeout; } void belle_sip_stack_set_default_dscp(belle_sip_stack_t *stack, int dscp){ stack->dscp=dscp; } int belle_sip_stack_get_default_dscp(belle_sip_stack_t *stack){ return stack->dscp; } int belle_sip_stack_tls_available(belle_sip_stack_t *stack){ return belle_sip_tls_listening_point_available(); } int belle_sip_stack_content_encoding_available(belle_sip_stack_t *stack, const char *content_encoding) { #ifdef HAVE_ZLIB if (strcmp(content_encoding, "deflate") == 0) return TRUE; #endif return FALSE; } GET_SET_STRING(belle_sip_stack,http_proxy_host) GET_SET_INT(belle_sip_stack,http_proxy_port, int) void belle_sip_set_log_handler(belle_sip_log_function_t func) { bctbx_set_log_handler_for_domain(func, BCTBX_LOG_DOMAIN); } void belle_sip_stack_enable_reconnect_to_primary_asap(belle_sip_stack_t *stack, int enabled) { stack->reconnect_to_primary_asap=enabled; } int belle_sip_stack_reconnect_to_primary_asap_enabled(const belle_sip_stack_t *stack) { return stack->reconnect_to_primary_asap; } void belle_sip_stack_set_digest_authentication_policy(belle_sip_stack_t *stack, belle_sip_digest_authentication_policy_t *policy){ SET_OBJECT_PROPERTY(stack, digest_auth_policy, policy); } const belle_sip_digest_authentication_policy_t *belle_sip_stack_get_digest_authentication_policy(const belle_sip_stack_t *stack){ return stack->digest_auth_policy; } int belle_sip_stack_check_digest_compatibility(const belle_sip_stack_t *stack, const belle_sip_header_www_authenticate_t *authenticate){ const char *algo = belle_sip_header_www_authenticate_get_algorithm(authenticate); if (!stack->digest_auth_policy->allow_md5){ if (!algo || strcasecmp(algo, "MD5") == 0){ belle_sip_warning("Rejecting MD5 digest authentication, not allowed per configuration."); return -1; } } if (!stack->digest_auth_policy->allow_no_qop){ const char *qop_value = belle_sip_header_www_authenticate_get_qop_first(authenticate); if (!qop_value || strcasecmp(qop_value, "auth") != 0){ belle_sip_warning("Rejecting digest authentication with qop != auth, not allowed per configuration."); return -1; } } return 0; } void belle_sip_stack_set_client_bind_port(belle_sip_stack_t *stack, int port){ stack->test_bind_port = port; } belle-sip-5.2.0+dfsg/src/transaction.c000066400000000000000000001003471434613136500176040ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "belle_sip_internal.h" const char *belle_sip_transaction_state_to_string(belle_sip_transaction_state_t state){ switch(state){ case BELLE_SIP_TRANSACTION_INIT: return "INIT"; case BELLE_SIP_TRANSACTION_TRYING: return "TRYING"; case BELLE_SIP_TRANSACTION_CALLING: return "CALLING"; case BELLE_SIP_TRANSACTION_COMPLETED: return "COMPLETED"; case BELLE_SIP_TRANSACTION_CONFIRMED: return "CONFIRMED"; case BELLE_SIP_TRANSACTION_ACCEPTED: return "ACCEPTED"; case BELLE_SIP_TRANSACTION_PROCEEDING: return "PROCEEDING"; case BELLE_SIP_TRANSACTION_TERMINATED: return "TERMINATED"; } belle_sip_fatal("Invalid transaction state."); return "INVALID"; } void belle_sip_transaction_set_state(belle_sip_transaction_t *t, belle_sip_transaction_state_t state) { belle_sip_message("Changing [%s] [%s] transaction [%p], from state [%s] to [%s]", BELLE_SIP_OBJECT_IS_INSTANCE_OF(t,belle_sip_client_transaction_t) ? "client" : "server", belle_sip_request_get_method(t->request), t, belle_sip_transaction_state_to_string(t->state), belle_sip_transaction_state_to_string(state)); t->state=state; } BELLESIP_EXPORT const char *belle_sip_transaction_get_method(const belle_sip_transaction_t *t){ return belle_sip_request_get_method(t->request); } static void transaction_end_background_task(belle_sip_transaction_t *obj){ if (obj->bg_task_id){ belle_sip_message("transaction [%p]: ending transaction background task with id=[%lx].",obj,obj->bg_task_id); belle_sip_end_background_task(obj->bg_task_id); obj->bg_task_id=0; } } static void transaction_background_task_ended(belle_sip_transaction_t *obj){ belle_sip_warning("transaction [%p]: transaction background task has to be ended now, but work isn't finished.",obj); transaction_end_background_task(obj); } static void transaction_begin_background_task(belle_sip_transaction_t *obj){ if (obj->bg_task_id==0){ char *transaction = bctbx_strdup_printf("belle-sip transaction(%p)", obj); obj->bg_task_id=belle_sip_begin_background_task(transaction,(void (*)(void*))transaction_background_task_ended, obj); if (obj->bg_task_id) belle_sip_message("transaction [%p]: starting transaction background task with id=[%lx].",obj,obj->bg_task_id); bctbx_free(transaction); } } static void belle_sip_transaction_init(belle_sip_transaction_t *t, belle_sip_provider_t *prov, belle_sip_request_t *req){ transaction_begin_background_task(t); t->request=(belle_sip_request_t*)belle_sip_object_ref(req); t->provider=prov; } static void transaction_destroy(belle_sip_transaction_t *t){ if (t->call_repair_timer) { belle_sip_transaction_stop_timer(t, t->call_repair_timer); belle_sip_object_unref(t->call_repair_timer); t->call_repair_timer = NULL; } if (t->request) belle_sip_object_unref(t->request); if (t->last_response) belle_sip_object_unref(t->last_response); if (t->channel) belle_sip_object_unref(t->channel); if (t->branch_id) belle_sip_free(t->branch_id); belle_sip_transaction_set_dialog(t,NULL); belle_sip_message("Transaction [%p] deleted",t); } static void notify_timeout(belle_sip_transaction_t *t){ belle_sip_timeout_event_t ev; ev.source=(belle_sip_object_t*)t->provider; ev.transaction=t; ev.is_server_transaction=BELLE_SIP_OBJECT_IS_INSTANCE_OF(t,belle_sip_server_transaction_t); BELLE_SIP_PROVIDER_INVOKE_LISTENERS_FOR_TRANSACTION(t,process_timeout,&ev); } static int server_transaction_on_call_repair_timer(belle_sip_transaction_t *t) { belle_sip_server_transaction_send_response(BELLE_SIP_SERVER_TRANSACTION(t), belle_sip_response_create_from_request(t->request, 503)); return BELLE_SIP_STOP; } static int client_transaction_on_call_repair_timer(belle_sip_transaction_t *t) { belle_sip_transaction_terminate(t); return BELLE_SIP_STOP; } static void transaction_handle_channel_error(belle_sip_transaction_t *t, belle_sip_channel_t *chan){ belle_sip_io_error_event_t ev; belle_sip_transaction_state_t tr_state=belle_sip_transaction_get_state((belle_sip_transaction_t*)t); const belle_sip_timer_config_t *timercfg = NULL; belle_sip_object_ref(t); /*take a ref in the case where the app calls belle_sip_transaction_terminate() within the listener*/ ev.transport=belle_sip_channel_get_transport_name(chan); ev.source=BELLE_SIP_OBJECT(t); ev.port=chan->peer_port; ev.host=chan->peer_name; if ( tr_state!=BELLE_SIP_TRANSACTION_COMPLETED && tr_state!=BELLE_SIP_TRANSACTION_CONFIRMED && tr_state!=BELLE_SIP_TRANSACTION_ACCEPTED && tr_state!=BELLE_SIP_TRANSACTION_TERMINATED) { BELLE_SIP_PROVIDER_INVOKE_LISTENERS_FOR_TRANSACTION(((belle_sip_transaction_t*)t),process_io_error,&ev); } if (t->timed_out) { notify_timeout((belle_sip_transaction_t*)t); } else { if (BELLE_SIP_OBJECT_IS_INSTANCE_OF(t, belle_sip_ist_t) || BELLE_SIP_OBJECT_IS_INSTANCE_OF(t, belle_sip_ict_t)) { timercfg = belle_sip_transaction_get_timer_config(t); if (t->call_repair_timer) { belle_sip_transaction_stop_timer(t, t->call_repair_timer); belle_sip_object_unref(t->call_repair_timer); t->call_repair_timer = NULL; } } } if (!t->timed_out && belle_sip_transaction_state_is_transient(t->state) && BELLE_SIP_OBJECT_IS_INSTANCE_OF(t, belle_sip_ist_t)) { t->call_repair_timer = belle_sip_timeout_source_new((belle_sip_source_func_t)server_transaction_on_call_repair_timer, t, 32 * timercfg->T1); belle_sip_transaction_start_timer(t, t->call_repair_timer); } else if (!t->timed_out && belle_sip_transaction_state_is_transient(t->state) && BELLE_SIP_OBJECT_IS_INSTANCE_OF(t, belle_sip_ict_t)) { t->call_repair_timer = belle_sip_timeout_source_new((belle_sip_source_func_t)client_transaction_on_call_repair_timer, t, 32 * timercfg->T1); belle_sip_transaction_start_timer(t, t->call_repair_timer); } else { belle_sip_transaction_terminate(t); } if (t->channel){ belle_sip_channel_remove_listener(t->channel, (belle_sip_channel_listener_t*)t); belle_sip_object_unref(t->channel); t->channel = NULL; } belle_sip_object_unref(t); } static void on_channel_state_changed(belle_sip_channel_listener_t *l, belle_sip_channel_t *chan, belle_sip_channel_state_t state){ belle_sip_transaction_t *t=(belle_sip_transaction_t*)l; belle_sip_transaction_state_t tr_state=belle_sip_transaction_get_state((belle_sip_transaction_t*)t); belle_sip_message("transaction [%p] channel state changed to [%s]" ,t ,belle_sip_channel_state_to_string(state)); switch(state){ case BELLE_SIP_CHANNEL_READY: if (tr_state==BELLE_SIP_TRANSACTION_INIT && BELLE_SIP_OBJECT_IS_INSTANCE_OF(t,belle_sip_client_transaction_t) ){ belle_sip_client_transaction_t *ct = (belle_sip_client_transaction_t*) t; BELLE_SIP_OBJECT_VPTR(ct,belle_sip_client_transaction_t)->send_request(ct); } break; case BELLE_SIP_CHANNEL_DISCONNECTED: case BELLE_SIP_CHANNEL_ERROR: transaction_handle_channel_error(t, chan); break; case BELLE_SIP_CHANNEL_RETRY: /* Going to the retry state means that the transaction will loose its transport, and get a new one. * While it has no matter if the request was not yet sent, it is a fatal error otherwise. */ if (tr_state != BELLE_SIP_TRANSACTION_INIT) transaction_handle_channel_error(t, chan); break; default: /*ignored*/ break; } /* NO MORE INSTRUCTIONS - transaction_handle_channel_error() may delete both the channel and the transaction.*/ } BELLE_SIP_IMPLEMENT_INTERFACE_BEGIN(belle_sip_transaction_t,belle_sip_channel_listener_t) on_channel_state_changed, NULL, /* on_message_headers */ NULL, /* on_message */ NULL, /* on_sending */ NULL /* on_auth_requested */ BELLE_SIP_IMPLEMENT_INTERFACE_END BELLE_SIP_DECLARE_IMPLEMENTED_INTERFACES_1(belle_sip_transaction_t, belle_sip_channel_listener_t); BELLE_SIP_INSTANCIATE_CUSTOM_VPTR_BEGIN(belle_sip_transaction_t) { BELLE_SIP_VPTR_INIT(belle_sip_transaction_t,belle_sip_object_t,FALSE), (belle_sip_object_destroy_t) transaction_destroy, NULL,/*no clone*/ NULL,/*no marshal*/ BELLE_SIP_DEFAULT_BUFSIZE_HINT }, NULL /*on_terminate*/ BELLE_SIP_INSTANCIATE_CUSTOM_VPTR_END void *belle_sip_transaction_get_application_data_internal(const belle_sip_transaction_t *t){ return t->appdata; } void *belle_sip_transaction_get_application_data(const belle_sip_transaction_t *t){ //if (t->is_internal) { // belle_sip_error("belle_sip_transaction_get_application_data should not be used on internal transaction [%p]",t); // return NULL; //} else { return belle_sip_transaction_get_application_data_internal(t); //}; } void belle_sip_transaction_set_application_data(belle_sip_transaction_t *t, void *data){ t->appdata=data; } const char *belle_sip_transaction_get_branch_id(const belle_sip_transaction_t *t){ return t->branch_id; } belle_sip_transaction_state_t belle_sip_transaction_get_state(const belle_sip_transaction_t *t){ return t->state; } int belle_sip_transaction_state_is_transient(const belle_sip_transaction_state_t state) { switch(state){ case BELLE_SIP_TRANSACTION_INIT: case BELLE_SIP_TRANSACTION_TRYING: case BELLE_SIP_TRANSACTION_CALLING: case BELLE_SIP_TRANSACTION_PROCEEDING: return 1; default: return 0; } } void belle_sip_transaction_terminate(belle_sip_transaction_t *t){ belle_sip_object_ref(t); if (t->call_repair_timer) { belle_sip_transaction_stop_timer(t, t->call_repair_timer); belle_sip_object_unref(t->call_repair_timer); t->call_repair_timer = NULL; } if (belle_sip_transaction_get_state(BELLE_SIP_TRANSACTION(t))!=BELLE_SIP_TRANSACTION_TERMINATED) { int is_client=BELLE_SIP_OBJECT_IS_INSTANCE_OF(t,belle_sip_client_transaction_t); belle_sip_transaction_set_state(t,BELLE_SIP_TRANSACTION_TERMINATED); if (t->dialog && (!t->last_response || belle_sip_response_get_status_code(t->last_response)<200)){ /*inform the dialog if a transaction terminates without final response.*/ belle_sip_dialog_update(t->dialog,t,!is_client); } belle_sip_message("%s%s %s transaction [%p] terminated" ,is_client ? "Client":"Server" ,t->is_internal ? " internal":"" ,belle_sip_request_get_method(belle_sip_transaction_get_request(t)) ,t); BELLE_SIP_OBJECT_VPTR(t,belle_sip_transaction_t)->on_terminate(t); belle_sip_provider_set_transaction_terminated(t->provider,t); } transaction_end_background_task(t); belle_sip_object_unref(t); } belle_sip_request_t *belle_sip_transaction_get_request(const belle_sip_transaction_t *t){ return t->request; } belle_sip_response_t *belle_sip_transaction_get_response(const belle_sip_transaction_t *t) { return t->last_response; } void belle_sip_transaction_notify_timeout(belle_sip_transaction_t *t){ /* Report the channel as possibly dead. If an alternate IP can be tried, the channel will notify us with the RETRY state. * Otherwise it will report the error. * We limit this dead channel reporting to REGISTER transactions, who are unlikely to be unresponded. **/ if (strcmp(belle_sip_request_get_method(t->request), "REGISTER") == 0){ if (belle_sip_channel_notify_timeout(t->channel)==TRUE){ belle_sip_warning("Transaction [%p] has timeout, reported to channel.",t); t->timed_out = TRUE; return; } } belle_sip_object_ref(t); /*take a ref in the case where the app calls belle_sip_transaction_terminate() within the timeout listener*/ notify_timeout(t); belle_sip_transaction_terminate(t); belle_sip_object_unref(t); } belle_sip_dialog_t* belle_sip_transaction_get_dialog(const belle_sip_transaction_t *t) { return t->dialog; } static void belle_sip_transaction_reset_dialog(belle_sip_transaction_t *tr, belle_sip_dialog_t *dialog_disapeearing){ if (tr->dialog!=dialog_disapeearing) belle_sip_error("belle_sip_transaction_reset_dialog(): inconsistency."); tr->dialog=NULL; } void belle_sip_transaction_set_dialog(belle_sip_transaction_t *t, belle_sip_dialog_t *dialog){ if (t->dialog==dialog) return; if (dialog) belle_sip_object_weak_ref(dialog,(belle_sip_object_destroy_notify_t)belle_sip_transaction_reset_dialog,t); if (t->dialog) belle_sip_object_weak_unref(t->dialog,(belle_sip_object_destroy_notify_t)belle_sip_transaction_reset_dialog,t); t->dialog=dialog; } /* * Server transaction */ static void server_transaction_destroy(belle_sip_server_transaction_t *t){ } BELLE_SIP_DECLARE_NO_IMPLEMENTED_INTERFACES(belle_sip_server_transaction_t); BELLE_SIP_INSTANCIATE_CUSTOM_VPTR_BEGIN(belle_sip_server_transaction_t) { { BELLE_SIP_VPTR_INIT(belle_sip_server_transaction_t,belle_sip_transaction_t,FALSE), (belle_sip_object_destroy_t) server_transaction_destroy, NULL, NULL, (belle_sip_object_on_first_ref_t) NULL, (belle_sip_object_on_last_ref_t) NULL, BELLE_SIP_DEFAULT_BUFSIZE_HINT }, NULL }, NULL, /* send_new_response */ NULL /* on_request_retransmission */ BELLE_SIP_INSTANCIATE_CUSTOM_VPTR_END void belle_sip_server_transaction_init(belle_sip_server_transaction_t *t, belle_sip_provider_t *prov,belle_sip_request_t *req){ const char *branch; belle_sip_header_via_t *via=BELLE_SIP_HEADER_VIA(belle_sip_message_get_header((belle_sip_message_t*)req,"via")); branch=belle_sip_header_via_get_branch(via); if (branch==NULL || strncmp(branch,BELLE_SIP_BRANCH_MAGIC_COOKIE,strlen(BELLE_SIP_BRANCH_MAGIC_COOKIE))!=0){ branch=req->rfc2543_branch; if (branch==NULL) belle_sip_fatal("No computed branch for RFC2543 style of message, this should never happen."); } t->base.branch_id=belle_sip_strdup(branch); belle_sip_transaction_init((belle_sip_transaction_t*)t,prov,req); belle_sip_random_token(t->to_tag,sizeof(t->to_tag)); } void belle_sip_server_transaction_send_response(belle_sip_server_transaction_t *t, belle_sip_response_t *resp){ belle_sip_transaction_t *base=(belle_sip_transaction_t*)t; belle_sip_header_to_t *to=(belle_sip_header_to_t*)belle_sip_message_get_header((belle_sip_message_t*)resp,"to"); belle_sip_dialog_t *dialog=base->dialog; int status_code; belle_sip_object_ref(resp); if (!base->last_response || !base->channel){ belle_sip_hop_t* hop=belle_sip_response_get_return_hop(resp); base->channel=belle_sip_provider_get_channel(base->provider,hop); belle_sip_object_unref(hop); if (!base->channel){ belle_sip_error("Transaction [%p]: No channel available for sending response.",t); return; } belle_sip_object_ref(base->channel); belle_sip_channel_add_listener(base->channel, BELLE_SIP_CHANNEL_LISTENER(t)); } status_code=belle_sip_response_get_status_code(resp); if (status_code!=100){ if (belle_sip_header_to_get_tag(to)==NULL){ //add a random to tag belle_sip_header_to_set_tag(to,t->to_tag); } // 12.1 Creation of a Dialog // Dialogs are created through the generation of non-failure responses // to requests with specific methods. Within this specification, only // 2xx and 101-199 responses with a To tag, where the request was // INVITE, will establish a dialog. if (dialog && status_code>100 && status_code<300){ belle_sip_response_fill_for_dialog(resp,base->request); } } if (BELLE_SIP_OBJECT_VPTR(t,belle_sip_server_transaction_t)->send_new_response(t,resp)==0){ if (base->last_response) belle_sip_object_unref(base->last_response); base->last_response=resp; } if (dialog) belle_sip_dialog_update(dialog,BELLE_SIP_TRANSACTION(t),TRUE); } static void server_transaction_notify(belle_sip_server_transaction_t *t, belle_sip_request_t *req, belle_sip_dialog_t *dialog){ belle_sip_request_event_t event; event.source=(belle_sip_object_t*)t->base.provider; event.server_transaction=t; event.dialog=dialog; event.request=req; BELLE_SIP_PROVIDER_INVOKE_LISTENERS_FOR_TRANSACTION(((belle_sip_transaction_t*) t),process_request_event,&event); } void belle_sip_server_transaction_on_request(belle_sip_server_transaction_t *t, belle_sip_request_t *req){ const char *method=belle_sip_request_get_method(req); if (strcmp(method,"ACK")==0){ /*this must be for an INVITE server transaction */ if (BELLE_SIP_OBJECT_IS_INSTANCE_OF(t,belle_sip_ist_t)){ belle_sip_ist_t *ist=(belle_sip_ist_t*)t; if (belle_sip_ist_process_ack(ist,(belle_sip_message_t*)req)==0){ belle_sip_dialog_t *dialog=t->base.dialog; if (dialog && belle_sip_dialog_handle_ack(dialog,req)==0) server_transaction_notify(t,req,dialog); /*else nothing to do because retransmission of ACK*/ } }else{ belle_sip_warning("ACK received for non-invite server transaction ?"); } }else if (strcmp(method,"CANCEL")==0){ server_transaction_notify(t,req,t->base.dialog); }else BELLE_SIP_OBJECT_VPTR(t,belle_sip_server_transaction_t)->on_request_retransmission(t); } /* * client transaction */ belle_sip_request_t * belle_sip_client_transaction_create_cancel(belle_sip_client_transaction_t *t){ belle_sip_message_t *orig=(belle_sip_message_t*)t->base.request; belle_sip_request_t *req; const char *orig_method=belle_sip_request_get_method((belle_sip_request_t*)orig); if (strcmp(orig_method,"ACK")==0 || strcmp(orig_method,"INVITE")!=0){ belle_sip_error("belle_sip_client_transaction_create_cancel() cannot be used for ACK or non-INVITE transactions."); return NULL; } if ((t->base.state != BELLE_SIP_TRANSACTION_PROCEEDING) && (t->base.state != BELLE_SIP_TRANSACTION_CALLING)) { belle_sip_error("belle_sip_client_transaction_create_cancel() can only be used in state PROCEEDING or CALLING" " but current transaction state is %s",belle_sip_transaction_state_to_string(t->base.state)); return NULL; } req=belle_sip_request_new(); belle_sip_request_set_method(req,"CANCEL"); // 9.1 Client Behavior // Since requests other than INVITE are responded to immediately, // sending a CANCEL for a non-INVITE request would always create a // race condition. // The following procedures are used to construct a CANCEL request. The // Request-URI, Call-ID, To, the numeric part of CSeq, and From header // fields in the CANCEL request MUST be identical to those in the // request being cancelled, including tags. A CANCEL constructed by a // client MUST have only a single Via header field value matching the // top Via value in the request being cancelled. belle_sip_request_set_uri(req,(belle_sip_uri_t*)belle_sip_object_clone((belle_sip_object_t*)belle_sip_request_get_uri((belle_sip_request_t*)orig))); belle_sip_util_copy_headers(orig,(belle_sip_message_t*)req,"via",FALSE); belle_sip_util_copy_headers(orig,(belle_sip_message_t*)req,"call-id",FALSE); belle_sip_util_copy_headers(orig,(belle_sip_message_t*)req,"from",FALSE); belle_sip_util_copy_headers(orig,(belle_sip_message_t*)req,"to",FALSE); belle_sip_util_copy_headers(orig,(belle_sip_message_t*)req,"route",TRUE); belle_sip_util_copy_headers(orig,(belle_sip_message_t*)req,BELLE_SIP_MAX_FORWARDS,FALSE); belle_sip_message_add_header( (belle_sip_message_t*)req, (belle_sip_header_t*)belle_sip_header_cseq_create( belle_sip_header_cseq_get_seq_number((belle_sip_header_cseq_t*)belle_sip_message_get_header(orig,"cseq")), "CANCEL" ) ); return req; } int belle_sip_client_transaction_send_request(belle_sip_client_transaction_t *t){ return belle_sip_client_transaction_send_request_to(t,NULL); } int belle_sip_client_transaction_send_request_to(belle_sip_client_transaction_t *t,belle_sip_uri_t* outbound_proxy) { belle_sip_channel_t *chan; belle_sip_provider_t *prov=t->base.provider; belle_sip_dialog_t *dialog=t->base.dialog; belle_sip_request_t *req=t->base.request; int result=-1; if (t->base.state!=BELLE_SIP_TRANSACTION_INIT){ belle_sip_error("belle_sip_client_transaction_send_request: bad state."); return -1; } /*check uris components compliance*/ if (!belle_sip_request_check_uris_components(t->base.request)) { belle_sip_error("belle_sip_client_transaction_send_request: bad request for transaction [%p]",t); return -1; } /*store preset route for future use by refresher*/ if (outbound_proxy){ t->preset_route=outbound_proxy; belle_sip_object_ref(t->preset_route); } if (t->base.sent_by_dialog_queue){ /*it can be sent immediately, so update the request with latest cseq and route_set */ /*update route and contact just in case they changed*/ belle_sip_dialog_update_request(dialog,req); } else if (t->base.request->dialog_queued){ /*this request was created by belle_sip_dialog_create_queued_request().*/ if (dialog == NULL){ belle_sip_error("belle_sip_client_transaction_send_request(): transaction [%p], cannot send" " request because it was created in the context of a dialog that appears to be " " no longer existing.", t); belle_sip_transaction_terminate(BELLE_SIP_TRANSACTION(t)); return -1; } if (belle_sip_dialog_request_pending(dialog) || dialog->queued_ct!=NULL){ /*it cannot be sent immediately, queue the transaction into dialog*/ belle_sip_message("belle_sip_client_transaction_send_request(): transaction [%p], cannot send request now because dialog [%p] is busy" " or other transactions are queued, so queuing into dialog.",t, dialog); belle_sip_dialog_queue_client_transaction(dialog,t); return 0; } belle_sip_dialog_update_request(dialog,req); } if (dialog){ belle_sip_dialog_update(dialog, (belle_sip_transaction_t*)t, FALSE); } if (!t->next_hop) { if (t->preset_route) { t->next_hop=belle_sip_hop_new_from_uri(t->preset_route); } else { t->next_hop = belle_sip_stack_get_next_hop(prov->stack,t->base.request); } belle_sip_object_ref(t->next_hop); } else { /*next hop already preset, probably in case of CANCEL*/ } belle_sip_provider_add_client_transaction(t->base.provider,t); /*add it in any case*/ chan=belle_sip_provider_get_channel(prov,t->next_hop); if (chan){ belle_sip_object_ref(chan); belle_sip_channel_add_listener(chan,BELLE_SIP_CHANNEL_LISTENER(t)); t->base.channel=chan; if (belle_sip_channel_get_state(chan)==BELLE_SIP_CHANNEL_INIT){ belle_sip_message("belle_sip_client_transaction_send_request(): waiting channel to be ready"); belle_sip_channel_prepare(chan); /*the channel will notify us when it is ready*/ } else if (belle_sip_channel_get_state(chan)==BELLE_SIP_CHANNEL_READY){ /*otherwise we can send immediately*/ BELLE_SIP_OBJECT_VPTR(t,belle_sip_client_transaction_t)->send_request(t); } result=0; }else { belle_sip_error("belle_sip_client_transaction_send_request(): no channel available"); belle_sip_transaction_terminate(BELLE_SIP_TRANSACTION(t)); result=-1; } return result; } /** * The client transaction may create a dialog in NULL state upon receiving their first provisionnal response (ie without to-tag defined) for convenience of upper layer. * The dialog will transition to early state as soon as a new provisional response with to-tag is received. **/ static unsigned int should_dialog_be_created(belle_sip_client_transaction_t *t, belle_sip_response_t *resp, int to_tag_required){ belle_sip_request_t* req = belle_sip_transaction_get_request(BELLE_SIP_TRANSACTION(t)); const char* method = belle_sip_request_get_method(req); int status_code = belle_sip_response_get_status_code(resp); belle_sip_header_to_t *to = belle_sip_message_get_header_by_type((belle_sip_message_t*)resp, belle_sip_header_to_t); return status_code>=101 && status_code<300 && (strcmp(method,"INVITE")==0 || strcmp(method,"SUBSCRIBE")==0) && to && (!to_tag_required || belle_sip_header_to_get_tag(to)); } void belle_sip_client_transaction_notify_response(belle_sip_client_transaction_t *t, belle_sip_response_t *resp){ belle_sip_transaction_t *base=(belle_sip_transaction_t*)t; belle_sip_request_t* req = belle_sip_transaction_get_request(BELLE_SIP_TRANSACTION(t)); const char* method = belle_sip_request_get_method(req); belle_sip_response_event_t event; belle_sip_dialog_t *dialog=base->dialog; int status_code = belle_sip_response_get_status_code(resp); if (base->last_response) belle_sip_object_unref(base->last_response); base->last_response=(belle_sip_response_t*)belle_sip_object_ref(resp); if (dialog){ if (status_code>=101 && status_code<300 && strcmp(method,"INVITE")==0 && (dialog->state==BELLE_SIP_DIALOG_EARLY || dialog->state==BELLE_SIP_DIALOG_CONFIRMED)){ /*make sure this response matches the current dialog, or creates a new one*/ if (!belle_sip_dialog_match(dialog,(belle_sip_message_t*)resp,FALSE)){ dialog=belle_sip_provider_find_dialog_from_message(t->base.provider,(belle_sip_message_t*)resp,FALSE); if (!dialog && should_dialog_be_created(t, resp, TRUE)){ dialog=belle_sip_provider_create_dialog_internal(t->base.provider,BELLE_SIP_TRANSACTION(t),FALSE);/*belle_sip_dialog_new(base);*/ belle_sip_message("Handling response creating a new dialog!"); } } } } else if (should_dialog_be_created(t, resp, FALSE)) { dialog=belle_sip_provider_create_dialog_internal(t->base.provider,BELLE_SIP_TRANSACTION(t),FALSE); } if (dialog && belle_sip_dialog_update(dialog,BELLE_SIP_TRANSACTION(t),FALSE)) { /* retransmition, just return*/ belle_sip_message("Response [%p] absorbed by dialog [%p], skipped from transaction layer.",resp,dialog); return; } event.source=(belle_sip_object_t*)base->provider; event.client_transaction=t; event.dialog=dialog; event.response=(belle_sip_response_t*)resp; BELLE_SIP_PROVIDER_INVOKE_LISTENERS_FOR_TRANSACTION(((belle_sip_transaction_t*)t),process_response_event,&event); /*check that 200Ok for INVITEs have been acknowledged by listener*/ if (dialog && status_code>=200 && status_code<300 && strcmp(method,"INVITE")==0){ belle_sip_dialog_check_ack_sent(dialog); } /* * Report a server having internal errors for REGISTER to the channel, in order to go to a fallback IP. * Why for only REGISTER ? because we are sure that the response comes from the server we are connected to. * For others (INVITE, SUBSCRIBE), the response may come from an intermediary server, or the final client. * It would be a bad idea to close the connection and fallback to another node in these cases. */ if (strcmp(method,"REGISTER") == 0){ switch (status_code){ case 500: /* Internal error */ case 503: /* Service unavailable */ belle_sip_channel_notify_server_error(base->channel); break; default: break; } } } void belle_sip_client_transaction_add_response(belle_sip_client_transaction_t *t, belle_sip_response_t *resp){ BELLE_SIP_OBJECT_VPTR(t,belle_sip_client_transaction_t)->on_response(t,resp); } belle_sip_uri_t *belle_sip_client_transaction_get_route(belle_sip_client_transaction_t *t){ return t->preset_route; } static void client_transaction_destroy(belle_sip_client_transaction_t *t ){ if (t->preset_route) belle_sip_object_unref(t->preset_route); if (t->next_hop) belle_sip_object_unref(t->next_hop); } BELLE_SIP_DECLARE_NO_IMPLEMENTED_INTERFACES(belle_sip_client_transaction_t); BELLE_SIP_INSTANCIATE_CUSTOM_VPTR_BEGIN(belle_sip_client_transaction_t) { { BELLE_SIP_VPTR_INIT(belle_sip_client_transaction_t,belle_sip_transaction_t,FALSE), (belle_sip_object_destroy_t)client_transaction_destroy, NULL, NULL, (belle_sip_object_on_first_ref_t) NULL, (belle_sip_object_on_last_ref_t) NULL, BELLE_SIP_DEFAULT_BUFSIZE_HINT }, NULL }, NULL, NULL, NULL BELLE_SIP_INSTANCIATE_CUSTOM_VPTR_END void belle_sip_client_transaction_init(belle_sip_client_transaction_t *obj, belle_sip_provider_t *prov, belle_sip_request_t *req){ belle_sip_header_via_t *via=BELLE_SIP_HEADER_VIA(belle_sip_message_get_header((belle_sip_message_t*)req,"via")); char token[BELLE_SIP_BRANCH_ID_LENGTH]; if (!via){ belle_sip_fatal("belle_sip_client_transaction_init(): No via in request."); } if (strcmp(belle_sip_request_get_method(req),"CANCEL")!=0){ obj->base.branch_id=belle_sip_strdup_printf(BELLE_SIP_BRANCH_MAGIC_COOKIE ".%s",belle_sip_random_token(token,sizeof(token))); belle_sip_header_via_set_branch(via,obj->base.branch_id); }else{ obj->base.branch_id=belle_sip_strdup(belle_sip_header_via_get_branch(via)); } belle_sip_transaction_init((belle_sip_transaction_t*)obj, prov,req); } belle_sip_refresher_t* belle_sip_client_transaction_create_refresher(belle_sip_client_transaction_t *t) { return belle_sip_refresher_new(t); } belle_sip_request_t* belle_sip_client_transaction_create_authenticated_request(belle_sip_client_transaction_t *t,belle_sip_list_t** auth_infos,const char* realm) { belle_sip_request_t* initial_request=belle_sip_transaction_get_request(BELLE_SIP_TRANSACTION(t)); belle_sip_request_t* req=belle_sip_request_clone_with_body(initial_request); belle_sip_header_cseq_t* cseq=belle_sip_message_get_header_by_type(req,belle_sip_header_cseq_t); belle_sip_header_cseq_set_seq_number(cseq,belle_sip_header_cseq_get_seq_number(cseq)+1); if (belle_sip_transaction_get_state(BELLE_SIP_TRANSACTION(t)) != BELLE_SIP_TRANSACTION_COMPLETED && belle_sip_transaction_get_state(BELLE_SIP_TRANSACTION(t)) != BELLE_SIP_TRANSACTION_TERMINATED) { belle_sip_error("Invalid state [%s] for transaction [%p], should be BELLE_SIP_TRANSACTION_COMPLETED | BELLE_SIP_TRANSACTION_TERMINATED" ,belle_sip_transaction_state_to_string(belle_sip_transaction_get_state(BELLE_SIP_TRANSACTION(t))) ,t); belle_sip_object_unref(req); return NULL; } /*remove auth headers*/ belle_sip_message_remove_header(BELLE_SIP_MESSAGE(req),BELLE_SIP_AUTHORIZATION); belle_sip_message_remove_header(BELLE_SIP_MESSAGE(req),BELLE_SIP_PROXY_AUTHORIZATION); /*put auth header*/ belle_sip_provider_add_authorization(t->base.provider,req,t->base.last_response,NULL,auth_infos,realm); return req; } /* rfc 3265 3.3.4. Dialog creation and termination ... NOTIFY requests are matched to such SUBSCRIBE requests if they contain the same "Call-ID", a "To" header "tag" parameter which matches the "From" header "tag" parameter of the SUBSCRIBE, and the same "Event" header field. Rules for comparisons of the "Event" headers are described in section 7.2.1. If a matching NOTIFY request contains a "Subscription-State" of "active" or "pending", it creates a new subscription and a new dialog (unless they have already been created by a matching response, as described above). */ int belle_sip_client_transaction_is_notify_matching_pending_subscribe( belle_sip_client_transaction_t *trans, belle_sip_request_t *notify ) { belle_sip_request_t *subscription; belle_sip_header_event_t *sub_event, *notif_event; belle_sip_header_call_id_t *sub_call_id, *notif_call_id; const char* sub_from_tag, *notif_to_tag; if (!belle_sip_transaction_state_is_transient(belle_sip_transaction_get_state(BELLE_SIP_TRANSACTION(trans))) || strcmp("SUBSCRIBE", belle_sip_transaction_get_method(BELLE_SIP_TRANSACTION(trans)))!=0) return 0; if (strcmp("NOTIFY",belle_sip_request_get_method(notify)) != 0) { belle_sip_error("belle_sip_client_transaction_is_notify_matching_pending_subscribe for request [%p], requires a notify request",notify); return 0; } subscription = belle_sip_transaction_get_request(BELLE_SIP_TRANSACTION(trans)); sub_event = belle_sip_message_get_header_by_type(subscription, belle_sip_header_event_t); if (!sub_event || !belle_sip_header_event_get_package_name(sub_event)) return 0; notif_event = belle_sip_message_get_header_by_type(notify, belle_sip_header_event_t); if (!notif_event || !belle_sip_header_event_get_package_name(notif_event)) return 0; sub_call_id = belle_sip_message_get_header_by_type(subscription, belle_sip_header_call_id_t); notif_call_id = belle_sip_message_get_header_by_type(notify, belle_sip_header_call_id_t); sub_from_tag = belle_sip_header_from_get_tag(belle_sip_message_get_header_by_type(subscription, belle_sip_header_from_t)); notif_to_tag = belle_sip_header_to_get_tag(belle_sip_message_get_header_by_type(notify, belle_sip_header_to_t)); return strcmp(belle_sip_header_call_id_get_call_id(sub_call_id),belle_sip_header_call_id_get_call_id(notif_call_id))==0 && sub_from_tag && notif_to_tag && strcmp(sub_from_tag,notif_to_tag)==0 && strcasecmp(belle_sip_header_event_get_package_name(sub_event),belle_sip_header_event_get_package_name(notif_event))==0; } void belle_sip_client_transaction_stop_retransmissions(belle_sip_client_transaction_t *t){ BELLE_SIP_OBJECT_VPTR(t,belle_sip_client_transaction_t)->stop_retransmissions(t); } belle-sip-5.2.0+dfsg/src/transports/000077500000000000000000000000001434613136500173255ustar00rootroot00000000000000belle-sip-5.2.0+dfsg/src/transports/stream_channel.c000066400000000000000000000304041434613136500224550ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "belle_sip_internal.h" #include "belle-sip/mainloop.h" #include "stream_channel.h" static void set_tcp_nodelay(belle_sip_socket_t sock){ int tmp=1; int err=bctbx_setsockopt(sock, IPPROTO_TCP, TCP_NODELAY,(char*)&tmp,sizeof(tmp)); if (err == -1){ belle_sip_warning ("Fail to set TCP_NODELAY: %s.", belle_sip_get_socket_error_string()); } } /*************TCP********/ static int stream_channel_process_data(belle_sip_stream_channel_t *obj,unsigned int revents); static void stream_channel_uninit(belle_sip_stream_channel_t *obj){ belle_sip_socket_t sock = belle_sip_source_get_socket((belle_sip_source_t*)obj); if (sock!=(belle_sip_socket_t)-1) stream_channel_close(obj); } int stream_channel_send(belle_sip_stream_channel_t *obj, const void *buf, size_t buflen){ belle_sip_socket_t sock = belle_sip_source_get_socket((belle_sip_source_t*)obj); int err=bctbx_send(sock,buf,buflen,0); if (err==(belle_sip_socket_t)-1){ int errnum=get_socket_error(); if (!belle_sip_error_code_is_would_block(errnum)){ belle_sip_error("Could not send stream packet on channel [%p]: %s",obj,belle_sip_get_socket_error_string_from_code(errnum)); } return -errnum; } return err; } int stream_channel_recv(belle_sip_stream_channel_t *obj, void *buf, size_t buflen){ belle_sip_socket_t sock = belle_sip_source_get_socket((belle_sip_source_t*)obj); int err=bctbx_recv(sock,buf,buflen,0); if (err==(belle_sip_socket_t)-1){ int errnum=get_socket_error(); if (errnum == BCTBX_ENOTCONN) { //Do NOT treat it as an error belle_sip_message("Socket is not connected because of IOS10 background policy"); obj->base.closed_by_remote = TRUE; return 0; } if (!belle_sip_error_code_is_would_block(errnum)){ belle_sip_error("Could not receive stream packet: %s",belle_sip_get_socket_error_string_from_code(errnum)); } return -errnum; } return err; } void stream_channel_close(belle_sip_stream_channel_t *obj){ belle_sip_socket_t sock = belle_sip_source_get_socket((belle_sip_source_t*)obj); if (sock!=(belle_sip_socket_t)-1){ #if TARGET_OS_IPHONE if (obj->read_stream != NULL) { CFReadStreamClose (obj->read_stream); CFRelease (obj->read_stream); obj->read_stream=NULL; } if (obj->write_stream != NULL) { CFWriteStreamClose (obj->write_stream); CFRelease (obj->write_stream); obj->write_stream=NULL; } #endif belle_sip_close_socket(sock); } } #if TARGET_OS_IPHONE static void stream_channel_enable_ios_background_mode(belle_sip_stream_channel_t *obj){ int sock=belle_sip_source_get_socket((belle_sip_source_t*)obj); CFStreamCreatePairWithSocket(kCFAllocatorDefault, sock, &obj->read_stream, &obj->write_stream); if (obj->read_stream){ if (!CFReadStreamSetProperty (obj->read_stream, kCFStreamNetworkServiceType, kCFStreamNetworkServiceTypeVoIP)){ belle_sip_warning("CFReadStreamSetProperty() could not set VoIP service type on read stream."); } }else belle_sip_warning("CFStreamCreatePairWithSocket() could not create the read stream."); if (obj->write_stream){ if (!CFWriteStreamSetProperty (obj->write_stream, kCFStreamNetworkServiceType, kCFStreamNetworkServiceTypeVoIP)){ belle_sip_warning("CFReadStreamSetProperty() could not set VoIP service type on write stream."); } }else belle_sip_warning("CFStreamCreatePairWithSocket() could not create the write stream."); if (!CFReadStreamOpen (obj->read_stream)) { belle_sip_warning("CFReadStreamOpen() failed."); } if (!CFWriteStreamOpen (obj->write_stream)) { belle_sip_warning("CFWriteStreamOpen() failed."); } } #endif int stream_channel_connect(belle_sip_stream_channel_t *obj, const struct addrinfo *ai){ int err; int tmp; belle_sip_socket_t sock; belle_sip_stack_t *stack = obj->base.stack; tmp=1; obj->base.ai_family=ai->ai_family; sock=bctbx_socket(ai->ai_family, SOCK_STREAM, IPPROTO_TCP); if (sock==(belle_sip_socket_t)-1){ belle_sip_error("Could not create socket: %s",belle_sip_get_socket_error_string()); return -1; } tmp = 1; err=bctbx_setsockopt(sock, SOL_SOCKET, SO_REUSEADDR,(char*)&tmp,sizeof(tmp)); if (err!=0){ belle_sip_error("bctbx_setsockopt SO_REUSEADDR failed: [%s]",belle_sip_get_socket_error_string()); } if (stack->test_bind_port != 0){ struct addrinfo *bind_ai = bctbx_ip_address_to_addrinfo(ai->ai_family, SOCK_STREAM, ai->ai_family == AF_INET6 ? "::0" : "0.0.0.0", stack->test_bind_port); err = bctbx_bind(sock, bind_ai->ai_addr, (socklen_t)bind_ai->ai_addrlen); if (err != 0){ belle_sip_error("bctbx_bind failed: [%s]",belle_sip_get_socket_error_string()); belle_sip_close_socket(sock); return -1; }else bctbx_message("bind() on port [%i] successful", stack->test_bind_port); bctbx_freeaddrinfo(bind_ai); } tmp = 1; err=bctbx_setsockopt(sock, IPPROTO_TCP, TCP_NODELAY,(char*)&tmp,sizeof(tmp)); if (err!=0){ belle_sip_error("bctbx_setsockopt TCP_NODELAY failed: [%s]",belle_sip_get_socket_error_string()); } belle_sip_socket_set_nonblocking(sock); if (ai->ai_family==AF_INET6 && stack->test_bind_port == 0){ belle_sip_socket_enable_dual_stack(sock); } err = bctbx_connect(sock,ai->ai_addr,(socklen_t)ai->ai_addrlen); if (err != 0 && get_socket_error()!=BELLESIP_EINPROGRESS && get_socket_error()!=BELLESIP_EWOULDBLOCK) { belle_sip_error("stream connect failed %s",belle_sip_get_socket_error_string()); belle_sip_close_socket(sock); return -1; } belle_sip_channel_set_socket((belle_sip_channel_t*)obj,sock,(belle_sip_source_func_t)stream_channel_process_data); belle_sip_source_set_events((belle_sip_source_t*)obj,BELLE_SIP_EVENT_READ|BELLE_SIP_EVENT_WRITE|BELLE_SIP_EVENT_ERROR); belle_sip_source_set_timeout_int64((belle_sip_source_t*)obj,belle_sip_stack_get_transport_timeout(obj->base.stack)); belle_sip_main_loop_add_source(obj->base.stack->ml,(belle_sip_source_t*)obj); return 0; } BELLE_SIP_DECLARE_NO_IMPLEMENTED_INTERFACES(belle_sip_stream_channel_t); BELLE_SIP_INSTANCIATE_CUSTOM_VPTR_BEGIN(belle_sip_stream_channel_t) { { BELLE_SIP_VPTR_INIT(belle_sip_stream_channel_t,belle_sip_channel_t,FALSE), (belle_sip_object_destroy_t)stream_channel_uninit, NULL, NULL, (belle_sip_object_on_first_ref_t) NULL, (belle_sip_object_on_last_ref_t) NULL, BELLE_SIP_DEFAULT_BUFSIZE_HINT }, "TCP", 1, /*is_reliable*/ (int (*)(belle_sip_channel_t *, const struct addrinfo *))stream_channel_connect, (int (*)(belle_sip_channel_t *, const void *, size_t ))stream_channel_send, (int (*)(belle_sip_channel_t *, void *, size_t ))stream_channel_recv, (void (*)(belle_sip_channel_t *))stream_channel_close, } BELLE_SIP_INSTANCIATE_CUSTOM_VPTR_END int finalize_stream_connection(belle_sip_stream_channel_t *obj, unsigned int revents, struct sockaddr *addr, socklen_t* slen) { int err, errnum; socklen_t optlen=sizeof(errnum); belle_sip_socket_t sock=belle_sip_source_get_socket((belle_sip_source_t*)obj); if (revents==BELLE_SIP_EVENT_TIMEOUT){ belle_sip_warning("channel [%p]: user-defined transport timeout.",obj); return -1; } if (!(revents & BELLE_SIP_EVENT_WRITE) && !(revents & BELLE_SIP_EVENT_READ)){ belle_sip_warning("channel [%p]: getting unexpected event while connecting",obj); return -1; } err=bctbx_getsockopt(sock,SOL_SOCKET,SO_ERROR,(void*)&errnum,&optlen); if (err!=0){ belle_sip_error("Failed to retrieve connection status for fd [%i]: cause [%s]",sock,belle_sip_get_socket_error_string()); return -1; }else{ if (errnum==0){ /*obtain bind address for client*/ err=bctbx_getsockname(sock,addr,slen); if (err<0){ belle_sip_error("Failed to retrieve sockname for fd [%i]: cause [%s]",sock,belle_sip_get_socket_error_string()); return -1; } #if TARGET_OS_IPHONE if (belle_sip_get_ios_device_major_version() < 16) { // Causes crash on app built for iOS16 with Xcode 14 stream_channel_enable_ios_background_mode(obj); } #endif if (obj->base.stack->dscp && obj->base.lp){ /*apply dscp only to channel belonging to a SIP listening point*/ belle_sip_socket_set_dscp(sock,obj->base.ai_family,obj->base.stack->dscp); } set_tcp_nodelay(sock); return 0; }else{ belle_sip_error("Connection failed for fd [%i]: cause [%s]",sock,belle_sip_get_socket_error_string_from_code(errnum)); return -1; } } } static int stream_channel_process_data(belle_sip_stream_channel_t *obj,unsigned int revents){ struct sockaddr_storage ss; socklen_t addrlen=sizeof(ss); belle_sip_channel_state_t state=belle_sip_channel_get_state((belle_sip_channel_t*)obj); belle_sip_channel_t *base=(belle_sip_channel_t*)obj; /*belle_sip_message("TCP channel process_data");*/ if (state == BELLE_SIP_CHANNEL_CONNECTING ) { if (finalize_stream_connection(obj,revents,(struct sockaddr*)&ss,&addrlen)) { belle_sip_error("Cannot connect to [%s://%s:%i]",belle_sip_channel_get_transport_name(base),base->peer_name,base->peer_port); channel_set_state(base,BELLE_SIP_CHANNEL_ERROR); return BELLE_SIP_STOP; } belle_sip_source_set_events((belle_sip_source_t*)obj,BELLE_SIP_EVENT_READ|BELLE_SIP_EVENT_ERROR); belle_sip_source_set_timeout_int64((belle_sip_source_t*)obj,-1); belle_sip_channel_set_ready(base,(struct sockaddr*)&ss,addrlen); return BELLE_SIP_CONTINUE; } else if (state == BELLE_SIP_CHANNEL_READY || state == BELLE_SIP_CHANNEL_RES_IN_PROGRESS) { /* Because of DNS TTL timeout, the channel may enter the RES_IN_PROGRESS state temporarily while being connected.*/ return belle_sip_channel_process_data(base,revents); } else { belle_sip_error("Unexpected event [%i], in state [%s] for channel [%p]",revents,belle_sip_channel_state_to_string(state),obj); channel_set_state(base,BELLE_SIP_CHANNEL_ERROR); return BELLE_SIP_STOP; } return BELLE_SIP_CONTINUE; } void belle_sip_stream_channel_init_client(belle_sip_stream_channel_t *obj, belle_sip_stack_t *stack, const char *bindip, int localport, const char *peer_cname, const char *dest, int port, int no_srv){ belle_sip_channel_init((belle_sip_channel_t*)obj, stack ,bindip,localport,peer_cname,dest,port, no_srv); } belle_sip_channel_t * belle_sip_stream_channel_new_client(belle_sip_stack_t *stack,const char *bindip, int localport, const char *peer_cname, const char *dest, int port, int no_srv){ belle_sip_stream_channel_t *obj=belle_sip_object_new(belle_sip_stream_channel_t); belle_sip_stream_channel_init_client(obj,stack,bindip,localport,peer_cname,dest,port, no_srv); return (belle_sip_channel_t*)obj; } /*child of server socket*/ belle_sip_channel_t * belle_sip_stream_channel_new_child(belle_sip_stack_t *stack, belle_sip_socket_t sock, struct sockaddr *remote_addr, socklen_t slen){ struct sockaddr_storage localaddr; socklen_t local_len=sizeof(localaddr); belle_sip_stream_channel_t *obj; int err; int optval=1; err = bctbx_setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (char*)&optval, sizeof (optval)); if (err == -1){ belle_sip_warning ("Fail to set SIP/TCP address reusable: %s.", belle_sip_get_socket_error_string()); } set_tcp_nodelay(sock); if (bctbx_getsockname(sock,(struct sockaddr*)&localaddr,&local_len)==-1){ belle_sip_error("bctbx_getsockname() failed: %s",belle_sip_get_socket_error_string()); return NULL; } obj=belle_sip_object_new(belle_sip_stream_channel_t); belle_sip_channel_init_with_addr((belle_sip_channel_t*)obj,stack,NULL,0,remote_addr,slen); belle_sip_socket_set_nonblocking(sock); belle_sip_channel_set_socket((belle_sip_channel_t*)obj,sock,(belle_sip_source_func_t)stream_channel_process_data); belle_sip_source_set_events((belle_sip_source_t*)obj,BELLE_SIP_EVENT_READ|BELLE_SIP_EVENT_ERROR); belle_sip_channel_set_ready((belle_sip_channel_t*)obj,(struct sockaddr*)&localaddr,local_len); belle_sip_main_loop_add_source(stack->ml,(belle_sip_source_t*)obj); return (belle_sip_channel_t*)obj; } belle-sip-5.2.0+dfsg/src/transports/stream_channel.h000066400000000000000000000046171434613136500224710ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef STREAM_CHANNEL_H_ #define STREAM_CHANNEL_H_ #ifdef __APPLE__ #include "TargetConditionals.h" #endif #if TARGET_OS_IPHONE #include #include #endif #include "channel.h" struct belle_sip_stream_channel{ belle_sip_channel_t base; #if TARGET_OS_IPHONE CFReadStreamRef read_stream; CFWriteStreamRef write_stream; #endif }; BELLE_SIP_DECLARE_CUSTOM_VPTR_BEGIN(belle_sip_stream_channel_t,belle_sip_channel_t) BELLE_SIP_DECLARE_CUSTOM_VPTR_END void belle_sip_stream_channel_init_client(belle_sip_stream_channel_t *obj, belle_sip_stack_t *stack, const char *bindip, int localport,const char *peer_cname, const char *dest, int port, int no_srv); BELLESIP_EXPORT belle_sip_channel_t * belle_sip_stream_channel_new_client(belle_sip_stack_t *stack, const char *bindip, int localport, const char *peer_cname, const char *name, int port, int no_srv); belle_sip_channel_t * belle_sip_stream_channel_new_child(belle_sip_stack_t *stack, belle_sip_socket_t sock, struct sockaddr *remote_addr, socklen_t slen); void stream_channel_close(belle_sip_stream_channel_t *obj); int stream_channel_connect(belle_sip_stream_channel_t *obj, const struct addrinfo *ai); /*return 0 if succeed*/ int finalize_stream_connection(belle_sip_stream_channel_t *obj, unsigned int revents, struct sockaddr *addr, socklen_t* slen); int stream_channel_send(belle_sip_stream_channel_t *obj, const void *buf, size_t buflen); int stream_channel_recv(belle_sip_stream_channel_t *obj, void *buf, size_t buflen); /*for testing purpose*/ BELLESIP_EXPORT void belle_sip_channel_parse_stream(belle_sip_channel_t *obj, int end_of_stream); #endif /* STREAM_CHANNEL_H_ */ belle-sip-5.2.0+dfsg/src/transports/stream_listeningpoint.c000066400000000000000000000160141434613136500241140ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "belle_sip_internal.h" static int on_new_connection(void *userdata, unsigned int events); void belle_sip_stream_listening_point_destroy_server_socket(belle_sip_stream_listening_point_t *lp){ if (lp->server_sock!=(belle_sip_socket_t)-1){ belle_sip_close_socket(lp->server_sock); lp->server_sock=-1; } if (lp->source){ belle_sip_main_loop_remove_source(lp->base.stack->ml,lp->source); belle_sip_object_unref(lp->source); lp->source=NULL; } } static void belle_sip_stream_listening_point_uninit(belle_sip_stream_listening_point_t *lp){ belle_sip_stream_listening_point_destroy_server_socket(lp); } static belle_sip_channel_t *stream_create_channel(belle_sip_listening_point_t *lp, const belle_sip_hop_t *hop){ belle_sip_channel_t *chan=belle_sip_stream_channel_new_client(lp->stack ,belle_sip_uri_get_host(lp->listening_uri) ,belle_sip_uri_get_port(lp->listening_uri) ,hop->cname,hop->host,hop->port, hop->port_is_explicit); return chan; } BELLE_SIP_DECLARE_NO_IMPLEMENTED_INTERFACES(belle_sip_stream_listening_point_t); BELLE_SIP_INSTANCIATE_CUSTOM_VPTR_BEGIN(belle_sip_stream_listening_point_t) { { BELLE_SIP_VPTR_INIT(belle_sip_stream_listening_point_t, belle_sip_listening_point_t,TRUE), (belle_sip_object_destroy_t)belle_sip_stream_listening_point_uninit, NULL, NULL, BELLE_SIP_DEFAULT_BUFSIZE_HINT }, "TCP", stream_create_channel } BELLE_SIP_INSTANCIATE_CUSTOM_VPTR_END static belle_sip_socket_t create_server_socket(const char *addr, int * port, int *family){ struct addrinfo hints={0}; struct addrinfo *res=NULL; int err; belle_sip_socket_t sock; char portnum[10]; int optval=1; if (*port==-1) *port=0; /*random port for bind()*/ belle_sip_set_socket_api(NULL); snprintf(portnum,sizeof(portnum),"%i",*port); hints.ai_family=AF_UNSPEC; hints.ai_socktype=SOCK_STREAM; hints.ai_protocol=IPPROTO_TCP; hints.ai_flags=AI_NUMERICSERV; err=getaddrinfo(addr,portnum,&hints,&res); if (err!=0){ belle_sip_error("getaddrinfo() failed for %s port %i: %s",addr,*port,gai_strerror(err)); return -1; } *family=res->ai_family; sock=bctbx_socket(res->ai_family,res->ai_socktype,res->ai_protocol); if (sock==(belle_sip_socket_t)-1){ belle_sip_error("Cannot create TCP socket: %s",belle_sip_get_socket_error_string()); freeaddrinfo(res); return -1; } err = bctbx_setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (char*)&optval, sizeof (optval)); if (err == -1){ belle_sip_warning ("Fail to set SIP/TCP address reusable: %s.", belle_sip_get_socket_error_string()); } if (res->ai_family==AF_INET6){ belle_sip_socket_enable_dual_stack(sock); } err=bctbx_bind(sock,res->ai_addr,(socklen_t)res->ai_addrlen); if (err==-1){ belle_sip_error("TCP bind() failed for %s port %i: %s",addr,*port,belle_sip_get_socket_error_string()); belle_sip_close_socket(sock); freeaddrinfo(res); return -1; } freeaddrinfo(res); if (*port==0){ struct sockaddr_storage saddr; socklen_t saddr_len=sizeof(saddr); err=bctbx_getsockname(sock,(struct sockaddr*)&saddr,&saddr_len); if (err==0){ err=bctbx_getnameinfo((struct sockaddr*)&saddr,saddr_len,NULL,0,portnum,sizeof(portnum),NI_NUMERICSERV|NI_NUMERICHOST); if (err==0){ *port=atoi(portnum); belle_sip_message("Random TCP port is %i",*port); }else belle_sip_error("TCP bind failed, getnameinfo(): %s",gai_strerror(err)); }else belle_sip_error("TCP bind failed, bctbx_getsockname(): %s",belle_sip_get_socket_error_string()); } err=listen(sock,64); if (err==-1){ belle_sip_error("TCP listen() failed for %s port %i: %s",addr,*port,belle_sip_get_socket_error_string()); belle_sip_close_socket(sock); return -1; } return sock; } void belle_sip_stream_listening_point_setup_server_socket(belle_sip_stream_listening_point_t *obj, belle_sip_source_func_t on_new_connection_cb ){ int port=belle_sip_uri_get_port(obj->base.listening_uri); obj->server_sock=create_server_socket(belle_sip_uri_get_host(obj->base.listening_uri), &port, &obj->base.ai_family); if (obj->server_sock==(belle_sip_socket_t)-1) return; belle_sip_uri_set_port(((belle_sip_listening_point_t*)obj)->listening_uri,port); if (obj->base.stack->dscp) belle_sip_socket_set_dscp(obj->server_sock,obj->base.ai_family,obj->base.stack->dscp); obj->source=belle_sip_socket_source_new(on_new_connection_cb,obj,obj->server_sock,BELLE_SIP_EVENT_READ,-1); belle_sip_main_loop_add_source(obj->base.stack->ml,obj->source); } static int on_new_connection(void *userdata, unsigned int events){ belle_sip_socket_t child; struct sockaddr_storage addr; socklen_t slen=sizeof(addr); belle_sip_stream_listening_point_t *lp=(belle_sip_stream_listening_point_t*)userdata; belle_sip_channel_t *chan; child=accept(lp->server_sock,(struct sockaddr*)&addr,&slen); if (child==(belle_sip_socket_t)-1){ belle_sip_error("Listening point [%p] accept() failed on TCP server socket: %s",lp,belle_sip_get_socket_error_string()); belle_sip_stream_listening_point_destroy_server_socket(lp); belle_sip_stream_listening_point_setup_server_socket(lp,on_new_connection); return BELLE_SIP_STOP; } belle_sip_message("New connection arriving !"); chan=belle_sip_stream_channel_new_child(lp->base.stack,child,(struct sockaddr*)&addr,slen); if (chan) belle_sip_listening_point_add_channel((belle_sip_listening_point_t*)lp,chan); return BELLE_SIP_CONTINUE; } void belle_sip_stream_listening_point_init(belle_sip_stream_listening_point_t *obj, belle_sip_stack_t *s, const char *ipaddress, int port, belle_sip_source_func_t on_new_connection_cb ){ belle_sip_listening_point_init((belle_sip_listening_point_t*)obj,s,ipaddress,port); /* Must init server_sock by default. Otherwise it can be 0 (used by others) and be closed by us. */ obj->server_sock = (belle_sip_socket_t)-1; if (port != BELLE_SIP_LISTENING_POINT_DONT_BIND) belle_sip_stream_listening_point_setup_server_socket(obj, on_new_connection_cb); } belle_sip_listening_point_t * belle_sip_stream_listening_point_new(belle_sip_stack_t *s, const char *ipaddress, int port){ belle_sip_stream_listening_point_t *lp=belle_sip_object_new(belle_sip_stream_listening_point_t); belle_sip_stream_listening_point_init(lp,s,ipaddress,port,on_new_connection); if (port != BELLE_SIP_LISTENING_POINT_DONT_BIND && lp->server_sock==(belle_sip_socket_t)-1){ belle_sip_object_unref(lp); return NULL; } return BELLE_SIP_LISTENING_POINT(lp); } belle-sip-5.2.0+dfsg/src/transports/tls_channel.c000066400000000000000000001055171434613136500217740ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "belle_sip_internal.h" #include "stream_channel.h" #include "bctoolbox/crypto.h" static int belle_sip_tls_channel_init_bctbx_ssl(belle_sip_tls_channel_t *obj); static void belle_sip_tls_channel_deinit_bctbx_ssl(belle_sip_tls_channel_t *obj); /*****************************************************************************/ /*** signing key structure and methods ***/ /*****************************************************************************/ struct belle_sip_signing_key { belle_sip_object_t objet; bctbx_signing_key_t *key; }; /*************************************/ /*** Internal functions ***/ static void belle_sip_signing_key_destroy(belle_sip_signing_key_t *signing_key){ bctbx_signing_key_free(signing_key->key); } static void belle_sip_signing_key_clone(belle_sip_signing_key_t *signing_key, const belle_sip_signing_key_t *orig){ belle_sip_error("belle_sip_signing_key_clone not supported"); } BELLE_SIP_DECLARE_NO_IMPLEMENTED_INTERFACES(belle_sip_signing_key_t); BELLE_SIP_INSTANCIATE_VPTR(belle_sip_signing_key_t,belle_sip_object_t,belle_sip_signing_key_destroy,belle_sip_signing_key_clone,NULL,TRUE); /*************************************/ /** Exposed functions **/ /** * Retrieve key in a string(PEM format) */ char *belle_sip_signing_key_get_pem(belle_sip_signing_key_t *key) { if (key == NULL) return NULL; return bctbx_signing_key_get_pem(key->key); } belle_sip_signing_key_t *belle_sip_signing_key_new(void) { belle_sip_signing_key_t* key = belle_sip_object_new(belle_sip_signing_key_t); key->key = bctbx_signing_key_new(); return key; } belle_sip_signing_key_t* belle_sip_signing_key_parse(const char* buff, size_t size, const char* passwd) { belle_sip_signing_key_t *signing_key = belle_sip_signing_key_new(); int ret; /* check size, buff is the key in PEM format and thus shall include a NULL termination char, make size includes this termination */ if (strlen(buff) == size) { size++; } ret = bctbx_signing_key_parse(signing_key->key, buff, size, (const unsigned char *)passwd, passwd?strlen(passwd):0); if (ret < 0) { char tmp[128]; bctbx_strerror(ret,tmp,sizeof(tmp)); belle_sip_error("cannot parse x509 signing key because [%s]",tmp); belle_sip_object_unref(signing_key); return NULL; } return signing_key; } belle_sip_signing_key_t* belle_sip_signing_key_parse_file(const char* path,const char* passwd) { belle_sip_signing_key_t *signing_key = belle_sip_signing_key_new(); int ret; ret = bctbx_signing_key_parse_file(signing_key->key, path, passwd); if (ret < 0) { char tmp[128]; bctbx_strerror(ret,tmp,sizeof(tmp)); belle_sip_error("cannot parse x509 signing key because [%s]",tmp); belle_sip_object_unref(signing_key); return NULL; } return signing_key; } /*****************************************************************************/ /*** end of signing key structure and methods ***/ /*****************************************************************************/ /*****************************************************************************/ /*** certificate structure and methods ***/ /*****************************************************************************/ struct belle_sip_certificates_chain { belle_sip_object_t objet; bctbx_x509_certificate_t *cert; }; /*************************************/ /*** Internal functions ***/ static void belle_sip_certificates_chain_destroy(belle_sip_certificates_chain_t *certificate){ bctbx_x509_certificate_free(certificate->cert); } static void belle_sip_certificates_chain_clone(belle_sip_certificates_chain_t *certificate, const belle_sip_certificates_chain_t *orig){ belle_sip_error("belle_sip_certificate_clone not supported"); } static int belle_sip_certificate_fill(belle_sip_certificates_chain_t* certificate, const char* buff, size_t size, belle_sip_certificate_raw_format_t format) { int err; if (format == BELLE_SIP_CERTIFICATE_RAW_FORMAT_PEM) { /* if format is PEM, make sure the null termination char is included in the buffer given size */ if (strlen(buff) == size) { size++; } } if ((err=bctbx_x509_certificate_parse(certificate->cert, buff, size)) <0) { char tmp[128]; bctbx_strerror(err,tmp,sizeof(tmp)); belle_sip_error("cannot parse x509 cert because [%s]",tmp); return -1; } return 0; } static int belle_sip_certificate_fill_from_file(belle_sip_certificates_chain_t* certificate, const char* path, belle_sip_certificate_raw_format_t format) { int err; if ((err=bctbx_x509_certificate_parse_file(certificate->cert, path)) <0) { char tmp[128]; bctbx_strerror(err,tmp,sizeof(tmp)); belle_sip_error("cannot parse x509 cert because [%s]",tmp); return -1; } return 0; } BELLE_SIP_DECLARE_NO_IMPLEMENTED_INTERFACES(belle_sip_certificates_chain_t); BELLE_SIP_INSTANCIATE_VPTR(belle_sip_certificates_chain_t,belle_sip_object_t,belle_sip_certificates_chain_destroy,belle_sip_certificates_chain_clone,NULL,TRUE); /*************************************/ /** Exposed functions **/ /** * Retrieve key or certificate in a string(PEM format) */ char *belle_sip_certificates_chain_get_pem(belle_sip_certificates_chain_t *cert) { if (cert == NULL) return NULL; return bctbx_x509_certificates_chain_get_pem(cert->cert); } belle_sip_certificates_chain_t *belle_sip_certificate_chain_new(void) { belle_sip_certificates_chain_t* certificate = belle_sip_object_new(belle_sip_certificates_chain_t); certificate->cert = bctbx_x509_certificate_new(); return certificate; } belle_sip_certificates_chain_t* belle_sip_certificates_chain_parse(const char* buff, size_t size,belle_sip_certificate_raw_format_t format) { belle_sip_certificates_chain_t* certificate = belle_sip_certificate_chain_new(); if (belle_sip_certificate_fill(certificate, buff, size, format)) { belle_sip_object_unref(certificate); certificate=NULL; } return certificate; } belle_sip_certificates_chain_t* belle_sip_certificates_chain_parse_file(const char* path, belle_sip_certificate_raw_format_t format) { belle_sip_certificates_chain_t* certificate = belle_sip_certificate_chain_new(); if (belle_sip_certificate_fill_from_file(certificate, path, format)) { belle_sip_object_unref(certificate); certificate=NULL; } return certificate; } /* * Parse all *.pem files in a given dir(non recursively) and return the one matching the given subject */ int belle_sip_get_certificate_and_pkey_in_dir(const char *path, const char *subject, belle_sip_certificates_chain_t **certificate, belle_sip_signing_key_t **pkey, belle_sip_certificate_raw_format_t format) { /* get all *.pem file from given path */ belle_sip_list_t *file_list = bctbx_parse_directory(path, ".pem"); char *filename = NULL; file_list = belle_sip_list_pop_front(file_list, (void **)&filename); while (filename != NULL) { belle_sip_certificates_chain_t *found_certificate = belle_sip_certificates_chain_parse_file(filename, format); if (found_certificate != NULL) { /* there is a certificate in this file */ char *subject_CNAME_begin, *subject_CNAME_end; belle_sip_signing_key_t *found_key; char name[500]; memset( name, 0, sizeof(name) ); if (bctbx_x509_certificate_get_subject_dn(found_certificate->cert, name, sizeof(name)) > 0) { /* parse subject to find the CN=xxx, field. There may be no , at the and but a \0 */ subject_CNAME_begin = strstr(name, "CN="); if (subject_CNAME_begin!=NULL) { subject_CNAME_begin+=3; subject_CNAME_end = strstr(subject_CNAME_begin, ","); if (subject_CNAME_end != NULL) { *subject_CNAME_end = '\0'; } if (strcmp(subject_CNAME_begin, subject)==0) { /* subject CNAME match the one we are looking for*/ /* do we have a key too ? */ found_key = belle_sip_signing_key_parse_file(filename, NULL); if (found_key!=NULL) { *certificate = found_certificate; *pkey = found_key; belle_sip_free(filename); belle_sip_list_free_with_data(file_list, belle_sip_free); /* free possible rest of list */ return 0; } } else { /* doesn't match, unref the created certificate */ belle_sip_object_unref(found_certificate); } } } else { /* no DN, just free it then */ belle_sip_object_unref(found_certificate); } } belle_sip_free(filename); file_list = belle_sip_list_pop_front(file_list, (void **)&filename); } return -1; } int belle_sip_generate_self_signed_certificate(const char* path, const char *subject, belle_sip_certificates_chain_t **certificate, belle_sip_signing_key_t **pkey) { char pem_buffer[8192]; int ret = 0; /* allocate certificate and key */ *pkey = belle_sip_signing_key_new(); *certificate = belle_sip_certificate_chain_new(); ret = bctbx_x509_certificate_generate_selfsigned(subject, (*certificate)->cert, (*pkey)->key, (path==NULL)?NULL:pem_buffer, (path==NULL)?0:8192); if ( ret != 0) { belle_sip_error("Unable to generate self signed certificate : -%x", -ret); belle_sip_object_unref(*pkey); belle_sip_object_unref(*certificate); *pkey = NULL; *certificate = NULL; return ret; } /* write the file if needed */ if (path!=NULL) { FILE *fd; char *name_with_path; size_t path_length; name_with_path = (char *)belle_sip_malloc(strlen(path)+257); /* max filename is 256 bytes in dirent structure, +1 for / */ path_length = strlen(path); memcpy(name_with_path, path, path_length); name_with_path[path_length] = '/'; path_length++; memcpy(name_with_path+path_length, subject, strlen(subject)); memcpy(name_with_path+path_length+strlen(subject), ".pem", 5); /* check if directory exists and if not, create it */ bctbx_mkdir(path); if ( (fd = fopen(name_with_path, "w") ) == NULL) { belle_sip_error("Certificate generation can't open/create file %s", name_with_path); belle_sip_object_unref(*pkey); belle_sip_object_unref(*certificate); *pkey = NULL; *certificate = NULL; belle_sip_free(name_with_path); return -1; } if ( fwrite(pem_buffer, 1, strlen(pem_buffer), fd) != strlen(pem_buffer) ) { belle_sip_error("Certificate generation can't write into file %s", name_with_path); fclose(fd); belle_sip_object_unref(*pkey); belle_sip_object_unref(*certificate); *pkey = NULL; *certificate = NULL; belle_sip_free(name_with_path); return -1; } fclose(fd); belle_sip_free(name_with_path); } return 0; } char *belle_sip_certificates_chain_get_fingerprint(belle_sip_certificates_chain_t *certificate) { int ret; char *fingerprint=belle_sip_malloc0(200); /* compute the certificate using the hash algorithm used in the certificate signature */ ret = bctbx_x509_certificate_get_fingerprint(certificate->cert, fingerprint, 200, BCTBX_MD_UNDEFINED); if ( ret <=0) { belle_sip_error("Unable to generate fingerprint from certificate [-0x%x]", -ret); belle_sip_free(fingerprint); return NULL; } return fingerprint; } /*****************************************************************************/ /*** end of certificate structure and methods ***/ /*****************************************************************************/ /*************tls********/ // SSL verification callback prototype // der - raw certificate data, in DER format // length - length of certificate DER data // depth - position of certificate in cert chain, ending at 0 = root or top // flags - verification state for CURRENT certificate only // deprecated typedef int (*verify_cb_error_cb_t)(unsigned char* der, int length, int depth, uint32_t* flags); static verify_cb_error_cb_t tls_verify_cb_error_cb = NULL; static int tls_process_data(belle_sip_channel_t *obj,unsigned int revents); struct belle_sip_tls_channel{ belle_sip_stream_channel_t base; bctbx_ssl_context_t *sslctx; bctbx_ssl_config_t *sslcfg; bctbx_x509_certificate_t *root_ca; bctbx_rng_context_t *rng; struct sockaddr_storage ss; socklen_t socklen; int socket_connected; char *cur_debug_msg; belle_sip_certificates_chain_t* client_cert_chain; belle_sip_signing_key_t* client_cert_key; belle_tls_crypto_config_t *crypto_config; int http_proxy_connected; belle_sip_resolver_context_t *http_proxy_resolver_ctx; }; static void tls_channel_close(belle_sip_tls_channel_t *obj){ belle_sip_socket_t sock = belle_sip_source_get_socket((belle_sip_source_t*)obj); if (sock!=-1 && belle_sip_channel_get_state((belle_sip_channel_t*)obj)!=BELLE_SIP_CHANNEL_ERROR && !obj->base.base.closed_by_remote) { if (obj->sslctx) bctbx_ssl_close_notify(obj->sslctx); } stream_channel_close((belle_sip_stream_channel_t*)obj); belle_sip_tls_channel_deinit_bctbx_ssl(obj); obj->socket_connected=0; } static void tls_channel_uninit(belle_sip_tls_channel_t *obj){ belle_sip_socket_t sock = belle_sip_source_get_socket((belle_sip_source_t*)obj); if (sock!=(belle_sip_socket_t)-1) tls_channel_close(obj); belle_sip_tls_channel_deinit_bctbx_ssl(obj); if (obj->rng) { bctbx_rng_context_free(obj->rng); obj->rng=NULL; } if (obj->cur_debug_msg) belle_sip_free(obj->cur_debug_msg); belle_sip_object_unref(obj->crypto_config); if (obj->client_cert_chain) belle_sip_object_unref(obj->client_cert_chain); if (obj->client_cert_key) belle_sip_object_unref(obj->client_cert_key); if (obj->http_proxy_resolver_ctx) belle_sip_object_unref(obj->http_proxy_resolver_ctx); } static int tls_channel_send(belle_sip_channel_t *obj, const void *buf, size_t buflen){ belle_sip_tls_channel_t* channel = (belle_sip_tls_channel_t*)obj; int err = bctbx_ssl_write(channel->sslctx,buf,buflen); if (err<0){ char tmp[256]={0}; if (err==BCTBX_ERROR_NET_WANT_WRITE) return -BELLESIP_EWOULDBLOCK; bctbx_strerror(err,tmp,sizeof(tmp)); belle_sip_error("Channel [%p]: ssl_write() error [%i]: %s",obj,err,tmp); } return err; } static int tls_channel_recv(belle_sip_channel_t *obj, void *buf, size_t buflen){ belle_sip_tls_channel_t* channel = (belle_sip_tls_channel_t*)obj; int err = bctbx_ssl_read(channel->sslctx,buf,buflen); if (err==BCTBX_ERROR_SSL_PEER_CLOSE_NOTIFY) return 0; if (err<0){ char tmp[256]={0}; if (err==BCTBX_ERROR_NET_WANT_READ) return -BELLESIP_EWOULDBLOCK; bctbx_strerror(err,tmp,sizeof(tmp)); belle_sip_error("Channel [%p]: ssl_read() error [%i]: %s",obj, err, tmp); } return err; } static int tls_channel_connect_to(belle_sip_channel_t *obj, const struct addrinfo *ai){ int err; if (belle_sip_tls_channel_init_bctbx_ssl((belle_sip_tls_channel_t*)obj)==-1) return -1; err= stream_channel_connect((belle_sip_stream_channel_t*)obj,ai); if (err==0){ belle_sip_source_set_notify((belle_sip_source_t *)obj, (belle_sip_source_func_t)tls_process_data); return 0; } return -1; } static void http_proxy_res_done(void *data, belle_sip_resolver_results_t *results){ belle_sip_tls_channel_t *obj=(belle_sip_tls_channel_t*)data; const struct addrinfo *ai_list; if (obj->http_proxy_resolver_ctx){ belle_sip_object_unref(obj->http_proxy_resolver_ctx); obj->http_proxy_resolver_ctx=NULL; } ai_list = belle_sip_resolver_results_get_addrinfos(results); if (ai_list){ tls_channel_connect_to((belle_sip_channel_t *)obj,ai_list); }else{ belle_sip_error("%s: DNS resolution failed for %s", __FUNCTION__, belle_sip_resolver_results_get_name(results)); channel_set_state((belle_sip_channel_t*)obj,BELLE_SIP_CHANNEL_ERROR); } } static int tls_channel_connect(belle_sip_channel_t *obj, const struct addrinfo *ai){ belle_sip_tls_channel_t *channel=(belle_sip_tls_channel_t*)obj; if (obj->stack->http_proxy_host) { belle_sip_message("Resolving http proxy addr [%s] for channel [%p]",obj->stack->http_proxy_host,obj); /*assume ai family is the same*/ channel->http_proxy_resolver_ctx = belle_sip_stack_resolve_a(obj->stack, obj->stack->http_proxy_host, obj->stack->http_proxy_port, obj->ai_family, http_proxy_res_done, obj); if (channel->http_proxy_resolver_ctx) belle_sip_object_ref(channel->http_proxy_resolver_ctx); return 0; } else { return tls_channel_connect_to(obj, ai); } } BELLE_SIP_DECLARE_CUSTOM_VPTR_BEGIN(belle_sip_tls_channel_t,belle_sip_stream_channel_t) BELLE_SIP_DECLARE_CUSTOM_VPTR_END BELLE_SIP_DECLARE_NO_IMPLEMENTED_INTERFACES(belle_sip_tls_channel_t); BELLE_SIP_INSTANCIATE_CUSTOM_VPTR_BEGIN(belle_sip_tls_channel_t) { { { BELLE_SIP_VPTR_INIT(belle_sip_tls_channel_t,belle_sip_stream_channel_t,FALSE), (belle_sip_object_destroy_t)tls_channel_uninit, NULL, NULL, (belle_sip_object_on_first_ref_t) NULL, (belle_sip_object_on_last_ref_t) NULL, BELLE_SIP_DEFAULT_BUFSIZE_HINT }, "TLS", 1, /*is_reliable*/ tls_channel_connect, tls_channel_send, tls_channel_recv, (void (*)(belle_sip_channel_t*))tls_channel_close } } BELLE_SIP_INSTANCIATE_CUSTOM_VPTR_END static int belle_sip_client_certificate_request_callback(void *data, bctbx_ssl_context_t *ssl_ctx, const bctbx_list_t *names) { belle_sip_tls_channel_t *channel = (belle_sip_tls_channel_t *)data; /* ask certificate */ BELLE_SIP_INVOKE_LISTENERS_ARG1_ARG2( channel->base.base.full_listeners ,belle_sip_channel_listener_t ,on_auth_requested ,&channel->base.base ,(names==NULL)?NULL:(char *)names->data); // forward only the first name of the list, this functionnality is not used for now anyway /* if we got one, set it in the ssl handshake context */ if (channel->client_cert_chain && channel->client_cert_key) { int err; char tmp[512]={0}; bctbx_x509_certificate_get_info_string(tmp,sizeof(tmp)-1,"",channel->client_cert_chain->cert); belle_sip_message("Channel [%p] found client certificate:\n%s",channel,tmp); if ((err=bctbx_ssl_set_hs_own_cert(channel->sslctx,channel->client_cert_chain->cert,channel->client_cert_key->key))) { bctbx_strerror(err,tmp,sizeof(tmp)-1); belle_sip_error("Channel [%p] cannot set retrieved ssl own certificate [%s]",channel,tmp); return -1; /* we were not able to set the client certificate, something is going wrong, this will abort the handshake*/ } return 0; } belle_sip_warning("Channel [%p] cannot get client certificate to answer server request", channel); return 0; /* we couldn't find any certificate, just keep on going, server may decide to abort the handshake */ } static int tls_handle_postcheck(belle_sip_tls_channel_t* channel){ if (channel->crypto_config && channel->crypto_config->postcheck_cb){ const bctbx_x509_certificate_t *cert = bctbx_ssl_get_peer_certificate(channel->sslctx); if (!cert){ belle_sip_error("tls_handle_postcheck(): no peer certificate, this should not happen"); return -1; } return channel->crypto_config->postcheck_cb(channel->crypto_config->postcheck_cb_data, cert); } return 0; } static int tls_process_handshake(belle_sip_channel_t *obj){ belle_sip_tls_channel_t* channel=(belle_sip_tls_channel_t*)obj; char tmp[128]; int err=bctbx_ssl_handshake(channel->sslctx); memset(tmp, '\0', sizeof(tmp)); if (err == 0){ belle_sip_message("Channel [%p]: SSL handshake finished, SSL version is [%s], selected ciphersuite is [%s]",obj, bctbx_ssl_get_version(channel->sslctx), bctbx_ssl_get_ciphersuite(channel->sslctx)); err = tls_handle_postcheck(channel); if (err != 0) { snprintf(tmp, sizeof(tmp)-1, "%s", "application level post-check failed."); } } if (err==0){ belle_sip_source_set_timeout_int64((belle_sip_source_t*)obj,-1); belle_sip_channel_set_ready(obj,(struct sockaddr*)&channel->ss,channel->socklen); }else if (err==BCTBX_ERROR_NET_WANT_READ || err==BCTBX_ERROR_NET_WANT_WRITE){ belle_sip_message("Channel [%p]: SSL handshake in progress...",obj); }else{ if (tmp[0] == '\0'){ bctbx_strerror(err,tmp,sizeof(tmp)); } belle_sip_error("Channel [%p]: SSL handshake failed : %s",obj,tmp); return -1; } return 0; } static int tls_process_http_connect(belle_sip_tls_channel_t *obj) { char* request; belle_sip_channel_t *channel = (belle_sip_channel_t *)obj; int err; char ip[64]; char *host_ip; char url_ipport[64]; int port; struct sockaddr_storage connect_addr; socklen_t connect_addr_len = sizeof(connect_addr); /* In case the connection address is a V4MAPPED, transform it as a pure v4 address. * Indeed, some old http proxy implementations don't support IPv6 targets, so don't attempt * to use it if it is not strictly necessary. */ bctbx_sockaddr_remove_v4_mapping(channel->current_peer->ai_addr, (struct sockaddr*) &connect_addr, &connect_addr_len); bctbx_sockaddr_to_printable_ip_address((struct sockaddr*)&connect_addr, connect_addr_len, url_ipport,sizeof(url_ipport)); bctbx_sockaddr_to_ip_address((struct sockaddr*)&connect_addr, connect_addr_len, ip, sizeof(ip), &port); if (connect_addr.ss_family == AF_INET6) { host_ip = belle_sip_strdup_printf("[%s]",ip); } else { host_ip = belle_sip_strdup_printf("%s",ip); /*just to simplify code*/ } request = belle_sip_strdup_printf("CONNECT %s HTTP/1.1\r\nProxy-Connection: keep-alive\r\nConnection: keep-alive\r\nHost: %s\r\nUser-Agent: Mozilla/5.0\r\n" ,url_ipport ,host_ip); belle_sip_message("HTTP request is\n%s", request); belle_sip_free(host_ip); if (channel->stack->http_proxy_username && channel->stack->http_proxy_passwd) { char *username_passwd = belle_sip_strdup_printf("%s:%s",channel->stack->http_proxy_username,channel->stack->http_proxy_passwd); size_t username_passwd_length = strlen(username_passwd); size_t encoded_username_paswd_length = username_passwd_length*2; unsigned char *encoded_username_paswd = belle_sip_malloc(2*username_passwd_length); bctbx_base64_encode(encoded_username_paswd,&encoded_username_paswd_length,(const unsigned char *)username_passwd,username_passwd_length); request = belle_sip_strcat_printf(request, "Proxy-Authorization: Basic %s\r\n",encoded_username_paswd); belle_sip_free(username_passwd); belle_sip_free(encoded_username_paswd); } request = belle_sip_strcat_printf(request,"\r\n"); err = bctbx_send(belle_sip_source_get_socket((belle_sip_source_t*)obj),request,strlen(request),0); belle_sip_free(request); if (err <= 0) { belle_sip_error("tls_process_http_connect: fail to send connect request to http proxy [%s:%i] status [%s]" ,channel->stack->http_proxy_host ,channel->stack->http_proxy_port ,strerror(errno)); return -1; } return 0; } static int tls_process_data(belle_sip_channel_t *obj,unsigned int revents){ belle_sip_tls_channel_t* channel=(belle_sip_tls_channel_t*)obj; int err; if (obj->state == BELLE_SIP_CHANNEL_CONNECTING ) { if (!channel->socket_connected) { channel->socklen=sizeof(channel->ss); if (finalize_stream_connection((belle_sip_stream_channel_t*)obj,revents,(struct sockaddr*)&channel->ss,&channel->socklen)) { goto process_error; } channel->socket_connected=1; belle_sip_source_set_events((belle_sip_source_t*)channel,BELLE_SIP_EVENT_READ|BELLE_SIP_EVENT_ERROR); belle_sip_source_set_timeout_int64((belle_sip_source_t*)obj,belle_sip_stack_get_transport_timeout(obj->stack)); if (obj->stack->http_proxy_host) { belle_sip_message("Channel [%p]: Connected at TCP level, now doing http proxy connect",obj); if (tls_process_http_connect(channel)) goto process_error; } else { belle_sip_message("Channel [%p]: Connected at TCP level, now doing TLS handshake with cname=%s",obj, obj->peer_cname ? obj->peer_cname : obj->peer_name); if (tls_process_handshake(obj)==-1) goto process_error; } } else if (obj->stack->http_proxy_host && !channel->http_proxy_connected) { char response[256]={0}; err = stream_channel_recv((belle_sip_stream_channel_t*)obj,response,sizeof(response)-1); if (err<0 ){ belle_sip_error("Channel [%p]: connection refused by http proxy [%s:%i] status [%s]" ,channel ,obj->stack->http_proxy_host ,obj->stack->http_proxy_port ,strerror(errno)); goto process_error; } else if (strstr(response,"407")) { belle_sip_error("Channel [%p]: auth requested, provide user/passwd for http proxy [%s:%i]" ,channel ,obj->stack->http_proxy_host ,obj->stack->http_proxy_port); goto process_error; } else if (strstr(response,"200")) { belle_sip_message("Channel [%p]: connected to http proxy, doing TLS handshake [%s:%i] " ,channel ,obj->stack->http_proxy_host ,obj->stack->http_proxy_port); channel->http_proxy_connected = 1; if (tls_process_handshake(obj)==-1) goto process_error; } else { belle_sip_error("Channel [%p]: connection refused by http proxy [%s:%i]" ,channel ,obj->stack->http_proxy_host ,obj->stack->http_proxy_port); goto process_error; } } else { if (revents & BELLE_SIP_EVENT_READ){ if (tls_process_handshake(obj)==-1) goto process_error; }else if (revents==BELLE_SIP_EVENT_TIMEOUT){ belle_sip_error("channel [%p]: SSL handshake took too much time.",obj); goto process_error; }else{ belle_sip_warning("channel [%p]: unexpected event [%i] during TLS handshake.",obj,revents); } } } else if (obj->state == BELLE_SIP_CHANNEL_READY || obj->state == BELLE_SIP_CHANNEL_RES_IN_PROGRESS) { /* Because of DNS TTL timeout, the channel may enter the RES_IN_PROGRESS state temporarily while being connected.*/ return belle_sip_channel_process_data(obj,revents); } else { belle_sip_error("Unexpected event [%i], for channel [%p] in state [%s]", revents, channel, belle_sip_channel_state_to_string(obj->state)); channel_set_state(obj,BELLE_SIP_CHANNEL_ERROR); return BELLE_SIP_STOP; } return BELLE_SIP_CONTINUE; process_error: belle_sip_error("Cannot connect to [%s://%s:%i]",belle_sip_channel_get_transport_name(obj),obj->peer_name,obj->peer_port); channel_set_state(obj,BELLE_SIP_CHANNEL_ERROR); return BELLE_SIP_STOP; } static int tls_callback_read(void * ctx, unsigned char *buf, size_t len ){ belle_sip_stream_channel_t *super=(belle_sip_stream_channel_t *)ctx; int ret = stream_channel_recv(super,buf,len); if (ret<0){ ret=-ret; if (ret==BELLESIP_EWOULDBLOCK || ret==BELLESIP_EINPROGRESS || ret == EINTR ) return BCTBX_ERROR_NET_WANT_READ; return BCTBX_ERROR_NET_CONN_RESET; } return ret; } static int tls_callback_write(void * ctx, const unsigned char *buf, size_t len ){ belle_sip_stream_channel_t *super=(belle_sip_stream_channel_t *)ctx; int ret = stream_channel_send(super, buf, len); if (ret<0){ ret=-ret; if (ret==BELLESIP_EWOULDBLOCK || ret==BELLESIP_EINPROGRESS || ret == EINTR ) return BCTBX_ERROR_NET_WANT_WRITE; return BCTBX_ERROR_NET_CONN_RESET; } return ret; } static int random_generator(void *ctx, unsigned char *ptr, size_t size){ bctbx_rng_context_t *rng = (bctbx_rng_context_t *)ctx; return bctbx_rng_get(rng, ptr, size); } // shim the default certificate handling by adding an external callback // see "verify_cb_error_cb_t" for the function signature /*deprecated*/ int belle_sip_tls_set_verify_error_cb(void * callback) { if (callback) { tls_verify_cb_error_cb = (verify_cb_error_cb_t)callback; belle_sip_message("belle_sip_tls_set_verify_error_cb: callback set"); } else { tls_verify_cb_error_cb = NULL; belle_sip_message("belle_sip_tls_set_verify_error_cb: callback cleared"); } return 0; } // // Augment certificate verification with certificates stored outside rootca.pem // PolarSSL calls the verify_cb with each cert in the chain; flags apply to the // current certificate until depth is 0; // // NOTES: // 1) rootca.pem *must* have at least one valid certificate, or PolarSSL // does not attempt to verify any certificates // 2) callback must return 0; non-zero indicates that the verification process failed // 3) flags should be saved off and cleared for each certificate where depth>0 // 4) return final verification result in *flags when depth == 0 // 5) callback must disable calls to linphone_core_iterate while running // int belle_sip_verify_cb_error_wrapper(bctbx_x509_certificate_t *cert, int depth, uint32_t *flags) { int rc = 0; unsigned char *der = NULL; int der_length = 0; // do nothing if the callback is not set if (!tls_verify_cb_error_cb) { return 0; } belle_sip_message("belle_sip_verify_cb_error_wrapper: depth=[%d], flags=[0x%x]:\n", depth, *flags); der_length = bctbx_x509_certificate_get_der_length(cert); der = belle_sip_malloc(der_length+1); // +1 for null termination char if (der == NULL) { // leave the flags alone and just return to the library belle_sip_error("belle_sip_verify_cb_error_wrapper: memory error\n"); return 0; } bctbx_x509_certificate_get_der(cert, der, der_length+1); rc = tls_verify_cb_error_cb(der, der_length, depth, flags); belle_sip_message("belle_sip_verify_cb_error_wrapper: callback return rc: %d, flags: 0x%x", rc, *flags); belle_sip_free(der); return rc; } static int belle_sip_ssl_verify(void *data , bctbx_x509_certificate_t *cert , int depth, uint32_t *flags){ belle_tls_crypto_config_t *crypto_config=(belle_tls_crypto_config_t*)data; const int tmp_size = 2048, flags_str_size = 256; char *tmp = belle_sip_malloc0(tmp_size); char *flags_str = belle_sip_malloc0(flags_str_size); int ret; bctbx_x509_certificate_get_info_string(tmp, tmp_size-1, "", cert); bctbx_x509_certificate_flags_to_string(flags_str, flags_str_size-1, *flags); belle_sip_message("Found certificate depth=[%i], flags=[%s]:\n%s", depth, flags_str, tmp); if (crypto_config->exception_flags==BELLE_TLS_VERIFY_ANY_REASON){ belle_sip_warning("Certificate verification bypassed (requested by application)."); /* verify context ask to ignore any exception: reset all flags */ bctbx_x509_certificate_unset_flag(flags, BCTBX_CERTIFICATE_VERIFY_ALL_FLAGS); }else if (crypto_config->exception_flags & BELLE_TLS_VERIFY_CN_MISMATCH){ /* verify context ask to ignore CN mismatch exception : reset this flag */ belle_sip_warning("Allowing CN-mistmatch exception."); bctbx_x509_certificate_unset_flag(flags, BCTBX_CERTIFICATE_VERIFY_BADCERT_CN_MISMATCH); } if (crypto_config->verify_cb){ crypto_config->verify_cb(crypto_config->verify_cb_data, cert, depth, flags); } ret = belle_sip_verify_cb_error_wrapper(cert, depth, flags); belle_sip_free(flags_str); belle_sip_free(tmp); return ret; } static int belle_sip_tls_channel_load_root_ca(belle_sip_tls_channel_t *obj, const char *path){ struct stat statbuf; if (stat(path,&statbuf)==0){ int error; if (obj->root_ca) { bctbx_x509_certificate_free(obj->root_ca); } obj->root_ca = bctbx_x509_certificate_new(); if (statbuf.st_mode & S_IFDIR){ error = bctbx_x509_certificate_parse_path(obj->root_ca,path); }else{ error = bctbx_x509_certificate_parse_file(obj->root_ca,path); } if (error<0){ char errorstr[512]; bctbx_strerror(error, errorstr, sizeof(errorstr)); belle_sip_error("Failed to load root ca from %s: %s",path,errorstr); return -1; } else { return 0; } } belle_sip_error("Could not load root ca from %s: %s",path,strerror(errno)); return -1; } static int belle_sip_tls_channel_load_root_ca_from_buffer(belle_sip_tls_channel_t *obj, const char *data) { int err = 0; if (data != NULL) { if (obj->root_ca) { bctbx_x509_certificate_free(obj->root_ca); } obj->root_ca = bctbx_x509_certificate_new(); //certificate data must to contain in size the NULL character err = bctbx_x509_certificate_parse(obj->root_ca, data, strlen(data) + 1); if (err) { belle_sip_error("Failed to load root ca from string data: 0x%x", err); return -1; } belle_sip_message("Root ca loaded from string data"); return 0; } belle_sip_error("Could not load root ca from null string"); return -1; } static void belle_sip_tls_channel_deinit_bctbx_ssl(belle_sip_tls_channel_t *obj){ if (obj->sslctx) { bctbx_ssl_context_free(obj->sslctx); obj->sslctx = NULL; } if (obj->sslcfg) { bctbx_ssl_config_free(obj->sslcfg); obj->sslcfg = NULL; } if (obj->root_ca) { bctbx_x509_certificate_free(obj->root_ca); obj->root_ca = NULL; } } static int belle_sip_tls_channel_init_bctbx_ssl(belle_sip_tls_channel_t *obj){ belle_sip_stream_channel_t* super=(belle_sip_stream_channel_t*)obj; belle_tls_crypto_config_t *crypto_config = obj->crypto_config; /* create and initialise ssl context and configuration */ obj->sslctx = bctbx_ssl_context_new(); obj->sslcfg = bctbx_ssl_config_new(); if (crypto_config->ssl_config == NULL) { bctbx_ssl_config_defaults(obj->sslcfg, BCTBX_SSL_IS_CLIENT, BCTBX_SSL_TRANSPORT_STREAM); bctbx_ssl_config_set_authmode(obj->sslcfg, BCTBX_SSL_VERIFY_REQUIRED); } else { /* an SSL config is provided, use it*/ int ret = bctbx_ssl_config_set_crypto_library_config(obj->sslcfg, crypto_config->ssl_config); if (ret<0) { belle_sip_error("Unable to set external config for SSL context at TLS channel creation ret [-0x%x]", -ret); belle_sip_object_unref(obj); return -1; } belle_sip_message("Use externally provided SSL configuration when creating TLS channel [%p]", obj); } bctbx_ssl_config_set_rng(obj->sslcfg, random_generator, obj->rng); bctbx_ssl_set_io_callbacks(obj->sslctx, obj, tls_callback_write, tls_callback_read); if ((crypto_config->root_ca_data && belle_sip_tls_channel_load_root_ca_from_buffer(obj, crypto_config->root_ca_data) == 0) || (crypto_config->root_ca && belle_sip_tls_channel_load_root_ca(obj, crypto_config->root_ca) == 0)){ bctbx_ssl_config_set_ca_chain(obj->sslcfg, obj->root_ca); } bctbx_ssl_config_set_callback_verify(obj->sslcfg, belle_sip_ssl_verify, crypto_config); bctbx_ssl_config_set_callback_cli_cert(obj->sslcfg, belle_sip_client_certificate_request_callback, obj); bctbx_ssl_context_setup(obj->sslctx, obj->sslcfg); bctbx_ssl_set_hostname(obj->sslctx, super->base.peer_cname ? super->base.peer_cname : super->base.peer_name); return 0; } belle_sip_channel_t * belle_sip_channel_new_tls(belle_sip_stack_t *stack, belle_tls_crypto_config_t *crypto_config, const char *bindip, int localport, const char *peer_cname, const char *dest, int port, int no_srv) { belle_sip_tls_channel_t *obj=belle_sip_object_new(belle_sip_tls_channel_t); belle_sip_stream_channel_t* super=(belle_sip_stream_channel_t*)obj; belle_sip_stream_channel_init_client(super ,stack ,bindip,localport,peer_cname,dest,port, no_srv); obj->crypto_config=(belle_tls_crypto_config_t*)belle_sip_object_ref(crypto_config); obj->rng = bctbx_rng_context_new(); return (belle_sip_channel_t*)obj; } void belle_sip_tls_channel_set_client_certificates_chain(belle_sip_tls_channel_t *channel, belle_sip_certificates_chain_t* cert_chain) { SET_OBJECT_PROPERTY(channel,client_cert_chain,cert_chain); } void belle_sip_tls_channel_set_client_certificate_key(belle_sip_tls_channel_t *channel, belle_sip_signing_key_t* key){ SET_OBJECT_PROPERTY(channel,client_cert_key,key); } belle-sip-5.2.0+dfsg/src/transports/tls_listeningpoint.c000066400000000000000000000077011434613136500234260ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "belle_sip_internal.h" static void belle_sip_tls_listening_point_uninit(belle_sip_tls_listening_point_t *lp){ belle_sip_object_unref(lp->crypto_config); } static belle_sip_channel_t *tls_create_channel(belle_sip_listening_point_t *lp, const belle_sip_hop_t *hop){ belle_sip_channel_t *chan=belle_sip_channel_new_tls(lp->stack, ((belle_sip_tls_listening_point_t*) lp)->crypto_config ,belle_sip_uri_get_host(lp->listening_uri) ,belle_sip_uri_get_port(lp->listening_uri) ,hop->cname ,hop->host,hop->port, hop->port_is_explicit); return chan; } BELLE_SIP_DECLARE_NO_IMPLEMENTED_INTERFACES(belle_sip_tls_listening_point_t); BELLE_SIP_INSTANCIATE_CUSTOM_VPTR_BEGIN(belle_sip_tls_listening_point_t) { { BELLE_SIP_VPTR_INIT(belle_sip_tls_listening_point_t, belle_sip_stream_listening_point_t,TRUE), (belle_sip_object_destroy_t)belle_sip_tls_listening_point_uninit, NULL, NULL, BELLE_SIP_DEFAULT_BUFSIZE_HINT }, "TLS", tls_create_channel } BELLE_SIP_INSTANCIATE_CUSTOM_VPTR_END static int on_new_connection(void *userdata, unsigned int revents){ belle_sip_socket_t child; struct sockaddr_storage addr; socklen_t slen=sizeof(addr); belle_sip_tls_listening_point_t *lp=(belle_sip_tls_listening_point_t*)userdata; belle_sip_stream_listening_point_t *super=(belle_sip_stream_listening_point_t*)lp; child=accept(super->server_sock,(struct sockaddr*)&addr,&slen); if (child==(belle_sip_socket_t)-1){ belle_sip_error("Listening point [%p] accept() failed on TLS server socket: %s",lp,belle_sip_get_socket_error_string()); belle_sip_stream_listening_point_destroy_server_socket(super); belle_sip_stream_listening_point_setup_server_socket(super,on_new_connection); return BELLE_SIP_STOP; } belle_sip_message("New connection arriving on TLS, not handled !"); belle_sip_close_socket(child); return BELLE_SIP_CONTINUE; } belle_sip_listening_point_t * belle_sip_tls_listening_point_new(belle_sip_stack_t *s, const char *ipaddress, int port){ belle_sip_tls_listening_point_t *lp=belle_sip_object_new(belle_sip_tls_listening_point_t); belle_sip_stream_listening_point_init((belle_sip_stream_listening_point_t*)lp,s,ipaddress,port,on_new_connection); lp->crypto_config=belle_tls_crypto_config_new(); return BELLE_SIP_LISTENING_POINT(lp); } int belle_sip_tls_listening_point_set_root_ca(belle_sip_tls_listening_point_t *lp, const char *path){ return belle_tls_crypto_config_set_root_ca(lp->crypto_config,path); } int belle_sip_tls_listening_point_set_verify_exceptions(belle_sip_tls_listening_point_t *lp, int flags){ belle_tls_crypto_config_set_verify_exceptions(lp->crypto_config,flags); return 0; } int belle_sip_tls_listening_point_set_verify_policy(belle_sip_tls_listening_point_t *s, belle_tls_verify_policy_t *pol){ SET_OBJECT_PROPERTY(s,crypto_config,(belle_tls_crypto_config_t *)pol); return 0; } int belle_sip_tls_listening_point_set_crypto_config(belle_sip_tls_listening_point_t *s, belle_tls_crypto_config_t *crypto_config){ SET_OBJECT_PROPERTY(s,crypto_config,crypto_config); return 0; } belle_tls_crypto_config_t *belle_sip_tls_listening_point_get_crypto_config(belle_sip_tls_listening_point_t *s){ return s->crypto_config; } int belle_sip_tls_listening_point_available(void){ return TRUE; } belle-sip-5.2.0+dfsg/src/transports/tunnel_channel.c000066400000000000000000000143501434613136500224710ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "belle_sip_internal.h" #include "channel.h" #define TUNNEL_POLLING_DURATION 20 /* in ms */ bool_t tunnel_client_is_dual(void *tunnelClient); void * tunnel_client_create_socket(void *tunnelclient, int minLocalPort, int maxLocalPort); void * tunnel_client_create_send_only_socket(void *tunnelclient, int minLocalPort, int maxLocalPort); void * tunnel_client_create_recv_only_socket(void *tunnelclient, int minLocalPort, int maxLocalPort); void tunnel_client_close_socket(void *tunnelclient, void *tunnelsocket); void tunnel_client_close_one_dir_socket(void *tunnelclient, void *tunnelsocket); int tunnel_socket_has_data(void *tunnelsocket); int tunnel_socket_sendto(void *tunnelsocket, const void *buffer, size_t bufsize, const struct sockaddr *dest, socklen_t socklen); int tunnel_socket_recvfrom(void *tunnelsocket, void *buffer, size_t bufsize, struct sockaddr *src, socklen_t socklen); BELLE_SIP_DECLARE_CUSTOM_VPTR_BEGIN(belle_sip_tunnel_channel_t, belle_sip_channel_t) BELLE_SIP_DECLARE_CUSTOM_VPTR_END struct belle_sip_tunnel_channel { belle_sip_channel_t base; belle_sip_source_t *pollingtimer; void *tunnelclient; void *tunnelsocket; void *tunnelsocket2; }; typedef struct belle_sip_tunnel_channel belle_sip_tunnel_channel_t; static void createTunnelSockets(belle_sip_tunnel_channel_t *chan) { if (!chan->tunnelsocket) { if (tunnel_client_is_dual(chan->tunnelclient)) { chan->tunnelsocket = tunnel_client_create_recv_only_socket(chan->tunnelclient, 5060, 6060); chan->tunnelsocket2 = tunnel_client_create_send_only_socket(chan->tunnelclient, 5060, 6060); } else { chan->tunnelsocket = tunnel_client_create_socket(chan->tunnelclient, 5060, 6060); chan->tunnelsocket2 = NULL; } } } static int tunnel_channel_send(belle_sip_channel_t *obj, const void *buf, size_t buflen) { belle_sip_tunnel_channel_t *chan = (belle_sip_tunnel_channel_t *)obj; createTunnelSockets(chan); if (chan->tunnelsocket2) { return tunnel_socket_sendto(chan->tunnelsocket2, buf, buflen, obj->current_peer->ai_addr,(socklen_t) obj->current_peer->ai_addrlen); } else if (chan->tunnelsocket) { return tunnel_socket_sendto(chan->tunnelsocket, buf, buflen, obj->current_peer->ai_addr, (socklen_t) obj->current_peer->ai_addrlen); } return 0; } static int tunnel_channel_recv(belle_sip_channel_t *obj, void *buf, size_t buflen) { belle_sip_tunnel_channel_t *chan = (belle_sip_tunnel_channel_t *)obj; struct sockaddr_storage addr; socklen_t addrlen = sizeof(addr); createTunnelSockets(chan); if (chan->tunnelsocket) { return tunnel_socket_recvfrom(chan->tunnelsocket, buf, buflen, (struct sockaddr *)&addr, addrlen); } return 0; } static int tunnel_channel_connect(belle_sip_channel_t *obj, const struct addrinfo *ai) { struct sockaddr_storage laddr; socklen_t lslen = sizeof(laddr); if (obj->local_ip == NULL) { belle_sip_get_src_addr_for(ai->ai_addr,(socklen_t) ai->ai_addrlen, (struct sockaddr *)&laddr, &lslen, obj->local_port); } belle_sip_channel_set_ready(obj, (struct sockaddr *)&laddr, lslen); return 0; } static void tunnel_channel_close(belle_sip_channel_t *obj) { belle_sip_tunnel_channel_t *chan = (belle_sip_tunnel_channel_t *)obj; if (chan->tunnelsocket2 != NULL) { tunnel_client_close_one_dir_socket(chan->tunnelclient, chan->tunnelsocket2); chan->tunnelsocket2 = NULL; if (chan->tunnelsocket != NULL) { tunnel_client_close_one_dir_socket(chan->tunnelclient, chan->tunnelsocket); chan->tunnelsocket = NULL; } } else { if (chan->tunnelsocket != NULL) { tunnel_client_close_socket(chan->tunnelclient, chan->tunnelsocket); chan->tunnelsocket = NULL; } } } static void tunnel_channel_uninit(belle_sip_channel_t *obj) { belle_sip_tunnel_channel_t *chan = (belle_sip_tunnel_channel_t *)obj; if (chan->tunnelsocket != NULL) { tunnel_channel_close(obj); } if (chan->pollingtimer != NULL) { belle_sip_main_loop_remove_source(obj->stack->ml, chan->pollingtimer); belle_sip_object_unref(chan->pollingtimer); chan->pollingtimer = NULL; } } static int tunnel_polling_timer(belle_sip_tunnel_channel_t *chan, unsigned int events) { if ((chan->tunnelsocket != NULL) && tunnel_socket_has_data(chan->tunnelsocket)) { belle_sip_channel_process_data((belle_sip_channel_t *)chan, BELLE_SIP_EVENT_READ); } return BELLE_SIP_CONTINUE; } BELLE_SIP_DECLARE_NO_IMPLEMENTED_INTERFACES(belle_sip_tunnel_channel_t); BELLE_SIP_INSTANCIATE_CUSTOM_VPTR_BEGIN(belle_sip_tunnel_channel_t) { { BELLE_SIP_VPTR_INIT(belle_sip_tunnel_channel_t,belle_sip_channel_t,FALSE), (belle_sip_object_destroy_t)tunnel_channel_uninit, NULL, NULL, (belle_sip_object_on_first_ref_t) NULL, (belle_sip_object_on_last_ref_t) NULL, 0 }, "UDP", 0, /*is_reliable*/ tunnel_channel_connect, tunnel_channel_send, tunnel_channel_recv, tunnel_channel_close } BELLE_SIP_INSTANCIATE_CUSTOM_VPTR_END belle_sip_channel_t * belle_sip_channel_new_tunnel(belle_sip_stack_t *stack, void *tunnelclient, const char *bindip, int localport, const char *dest, int port, int no_srv){ belle_sip_tunnel_channel_t *obj = belle_sip_object_new(belle_sip_tunnel_channel_t); belle_sip_channel_init((belle_sip_channel_t*)obj, stack, bindip, localport, NULL, dest, port, no_srv); obj->tunnelclient = tunnelclient; createTunnelSockets(obj); obj->pollingtimer = belle_sip_timeout_source_new((belle_sip_source_func_t)tunnel_polling_timer, obj, TUNNEL_POLLING_DURATION); belle_sip_object_set_name((belle_sip_object_t*)obj->pollingtimer, "tunnel_polling_timer"); belle_sip_main_loop_add_source(stack->ml, obj->pollingtimer); return (belle_sip_channel_t*)obj; } belle-sip-5.2.0+dfsg/src/transports/tunnel_listeningpoint.c000066400000000000000000000044101434613136500241230ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "belle_sip_internal.h" struct belle_sip_tunnel_listening_point{ belle_sip_listening_point_t base; void *tunnelclient; }; static belle_sip_channel_t *tunnel_create_channel(belle_sip_listening_point_t *lp, const belle_sip_hop_t *hop){ belle_sip_channel_t *chan=belle_sip_channel_new_tunnel(lp->stack, ((belle_sip_tunnel_listening_point_t*)lp)->tunnelclient, belle_sip_uri_get_host(lp->listening_uri), belle_sip_uri_get_port(lp->listening_uri), hop->host, hop->port, hop->port_is_explicit); return chan; } BELLE_SIP_DECLARE_NO_IMPLEMENTED_INTERFACES(belle_sip_tunnel_listening_point_t); BELLE_SIP_INSTANCIATE_CUSTOM_VPTR_BEGIN(belle_sip_tunnel_listening_point_t) { { BELLE_SIP_VPTR_INIT(belle_sip_tunnel_listening_point_t, belle_sip_listening_point_t,TRUE), NULL, NULL, NULL, (belle_sip_object_on_first_ref_t) NULL, (belle_sip_object_on_last_ref_t) NULL, 0 }, "UDP", tunnel_create_channel } BELLE_SIP_INSTANCIATE_CUSTOM_VPTR_END static void belle_sip_tunnel_listening_point_init(belle_sip_tunnel_listening_point_t *lp, belle_sip_stack_t *s, void *tunnelclient) { belle_sip_listening_point_init((belle_sip_listening_point_t*)lp,s,"0.0.0.0",5060); lp->tunnelclient = tunnelclient; } belle_sip_listening_point_t * belle_sip_tunnel_listening_point_new(belle_sip_stack_t *s, void *tunnelclient){ belle_sip_tunnel_listening_point_t *lp=belle_sip_object_new(belle_sip_tunnel_listening_point_t); belle_sip_tunnel_listening_point_init(lp,s,tunnelclient); return (belle_sip_listening_point_t*)lp; } belle-sip-5.2.0+dfsg/src/transports/tunnel_wrapper.cc000066400000000000000000000056221434613136500227060ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifdef HAVE_CONFIG_H #include "config.h" #endif #include using namespace belledonnecomm; extern "C" int tunnel_client_is_dual(void *tunnelClient) { TunnelClientI *tc = static_cast(tunnelClient); DualTunnelClient * dtc = dynamic_cast(tc); return dtc != NULL; } extern "C" void * tunnel_client_create_socket(void *tunnelclient, int minLocalPort, int maxLocalPort) { TunnelClient *tc = static_cast(tunnelclient); return tc->createSocket(minLocalPort, maxLocalPort); } extern "C" void * tunnel_client_create_send_only_socket(void *tunnelclient, int minLocalPort, int maxLocalPort) { DualTunnelClient *tc = static_cast(tunnelclient); return tc->createSocket(TunnelSendOnly, minLocalPort, maxLocalPort); } extern "C" void * tunnel_client_create_recv_only_socket(void *tunnelclient, int minLocalPort, int maxLocalPort) { DualTunnelClient *tc = static_cast(tunnelclient); return tc->createSocket(TunnelRecvOnly, minLocalPort, maxLocalPort); } extern "C" void tunnel_client_close_socket(void *tunnelclient, void *tunnelsocket) { TunnelClient *tc = static_cast(tunnelclient); TunnelSocket *ts = static_cast(tunnelsocket); tc->closeSocket(ts); } extern "C" void tunnel_client_close_one_dir_socket(void *tunnelclient, void *tunnelsocket) { DualTunnelClient *tc = static_cast(tunnelclient); TunnelSocket *ts = static_cast(tunnelsocket); tc->closeSocket(ts); } extern "C" int tunnel_socket_has_data(void *tunnelsocket) { TunnelSocket *ts = static_cast(tunnelsocket); return ts->hasData(); } extern "C" int tunnel_socket_sendto(void *tunnelsocket, const void *buffer, size_t bufsize, const struct sockaddr *dest, socklen_t socklen) { TunnelSocket *ts = static_cast(tunnelsocket); return ts->sendto(buffer, bufsize, dest, socklen); } extern "C" int tunnel_socket_recvfrom(void *tunnelsocket, void *buffer, size_t bufsize, struct sockaddr *src, socklen_t socklen) { TunnelSocket *ts = static_cast(tunnelsocket); return ts->recvfrom(buffer, bufsize, src, socklen); } belle-sip-5.2.0+dfsg/src/transports/udp_channel.c000066400000000000000000000150741434613136500217600ustar00rootroot00000000000000/* * Copyright (c) 2012-2021 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "belle_sip_internal.h" #include "channel.h" BELLE_SIP_DECLARE_CUSTOM_VPTR_BEGIN(belle_sip_udp_channel_t,belle_sip_channel_t) BELLE_SIP_DECLARE_CUSTOM_VPTR_END struct belle_sip_udp_channel{ belle_sip_channel_t base; belle_sip_socket_t shared_socket; /*the socket that belongs to the listening point. It is stored here because the channel parent class may erase its value in the belle_sip_source_t base class*/ }; typedef struct belle_sip_udp_channel belle_sip_udp_channel_t; static void udp_channel_uninit(belle_sip_udp_channel_t *obj){ belle_sip_socket_t sock=belle_sip_source_get_socket((belle_sip_source_t*)obj); if (obj->shared_socket == SOCKET_NOT_SET && sock != SOCKET_NOT_SET) { belle_sip_close_socket(belle_sip_source_get_socket((belle_sip_source_t*)obj)); } /*else no close of the socket, because it is owned by the listerning point and shared between all channels*/ } static int udp_channel_send(belle_sip_channel_t *obj, const void *buf, size_t buflen){ belle_sip_udp_channel_t *chan=(belle_sip_udp_channel_t *)obj; int err; belle_sip_socket_t sock=belle_sip_source_get_socket((belle_sip_source_t*)chan); if(sock){ if (chan->shared_socket != SOCKET_NOT_SET) { err=(int)bctbx_sendto(sock,buf,buflen,0,obj->current_peer->ai_addr,(socklen_t)obj->current_peer->ai_addrlen); } else { /*There is no serveur socket, so we are in connected mode*/ err=(int)bctbx_send(sock, buf, buflen, 0); } if (err==-1){ belle_sip_error("channel [%p]: could not send UDP packet because [%s]",obj,belle_sip_get_socket_error_string()); return -errno; } }else { belle_sip_error("channel [%p]: no socket are available to send UDP packet because [%s]",obj,belle_sip_get_socket_error_string()); err = -errno; } return err; } static int udp_channel_recv(belle_sip_channel_t *obj, void *buf, size_t buflen){ belle_sip_udp_channel_t *chan=(belle_sip_udp_channel_t *)obj; int err; int errnum; struct sockaddr_storage addr; socklen_t addrlen=sizeof(addr); belle_sip_socket_t sock=belle_sip_source_get_socket((belle_sip_source_t*)chan); err=(int)bctbx_recvfrom(sock,buf,buflen,0,(struct sockaddr*)&addr,&addrlen); errnum = get_socket_error(); if (err==-1 && errnum!=BELLESIP_EWOULDBLOCK){ if (errnum == BCTBX_ENOTCONN) { //Do NOT treat it as an error belle_sip_message("Socket is not connected because of IOS10 background policy"); obj->closed_by_remote = TRUE; return 0; } belle_sip_error("Could not receive UDP packet: %s",belle_sip_get_socket_error_string_from_code(errnum)); return -errnum; } return err; } int udp_channel_connect(belle_sip_channel_t *obj, const struct addrinfo *ai){ belle_sip_udp_channel_t *chan=(belle_sip_udp_channel_t *)obj; struct sockaddr_storage laddr; int err; memset(&laddr, 0, sizeof(laddr)); socklen_t lslen=sizeof(laddr); if (obj->local_port == BELLE_SIP_LISTENING_POINT_DONT_BIND) { //Creating socket for this channel here to be compatible with channel's retry mode int port = BELLE_SIP_LISTENING_POINT_RANDOM_PORT; int ai_family = obj->lp->ai_family; belle_sip_socket_t sock = udp_listening_point_create_udp_socket(belle_sip_uri_get_host(((belle_sip_listening_point_t*)obj->lp)->listening_uri) , &port, &ai_family); belle_sip_socket_set_nonblocking(sock); if (bctbx_connect(sock,ai->ai_addr,(socklen_t)ai->ai_addrlen)==-1){ err = -get_socket_error(); belle_sip_error("bctbx_connect() failed for socket [%i]: cause [%s]",(int)sock,belle_sip_get_socket_error_string_from_code(-err)); return -1; } err=bctbx_getsockname(sock,(struct sockaddr*)&laddr,&lslen); if (err<0){ belle_sip_error("Failed to retrieve sockname for socket [%i]: cause [%s]",(int)sock,belle_sip_get_socket_error_string()); return -1; } belle_sip_channel_set_socket(BELLE_SIP_CHANNEL(chan), sock, (belle_sip_source_func_t) belle_sip_channel_process_data); belle_sip_source_set_events((belle_sip_source_t*)chan,BELLE_SIP_EVENT_READ|BELLE_SIP_EVENT_ERROR); belle_sip_main_loop_add_source(obj->lp->stack->ml,(belle_sip_source_t*)chan); } else { belle_sip_channel_set_socket(obj, chan->shared_socket, NULL); err = belle_sip_get_src_addr_for(ai->ai_addr,(socklen_t)ai->ai_addrlen,(struct sockaddr*)&laddr,&lslen,obj->local_port); if (err == -BCTBX_ENETUNREACH || err == -BCTBX_EHOSTUNREACH){ return -1; } } belle_sip_channel_set_ready(obj, (struct sockaddr*)&laddr, lslen); return 0; } BELLE_SIP_DECLARE_NO_IMPLEMENTED_INTERFACES(belle_sip_udp_channel_t); BELLE_SIP_INSTANCIATE_CUSTOM_VPTR_BEGIN(belle_sip_udp_channel_t) { { BELLE_SIP_VPTR_INIT(belle_sip_udp_channel_t,belle_sip_channel_t,FALSE), (belle_sip_object_destroy_t)udp_channel_uninit, NULL, NULL, (belle_sip_object_on_first_ref_t) NULL, (belle_sip_object_on_last_ref_t) NULL, BELLE_SIP_DEFAULT_BUFSIZE_HINT }, "UDP", 0, /*is_reliable*/ udp_channel_connect, udp_channel_send, udp_channel_recv, NULL /*no close method*/ } BELLE_SIP_INSTANCIATE_CUSTOM_VPTR_END belle_sip_channel_t * belle_sip_channel_new_udp(belle_sip_stack_t *stack, int sock, const char *bindip, int localport, const char *dest, int port, int no_srv){ belle_sip_udp_channel_t *obj=belle_sip_object_new(belle_sip_udp_channel_t); belle_sip_channel_init((belle_sip_channel_t*)obj,stack,bindip,localport,NULL,dest,port, no_srv); obj->shared_socket = sock; return (belle_sip_channel_t*)obj; } belle_sip_channel_t * belle_sip_channel_new_udp_with_addr(belle_sip_stack_t *stack, int sock, const char *bindip, int localport, const struct addrinfo *peer){ belle_sip_udp_channel_t *obj=belle_sip_object_new(belle_sip_udp_channel_t); belle_sip_channel_init_with_addr((belle_sip_channel_t*)obj, stack, bindip, localport, peer->ai_addr, (socklen_t)peer->ai_addrlen); obj->base.local_port=localport; obj->shared_socket = sock; /*this lookups the local address*/ udp_channel_connect((belle_sip_channel_t*)obj,peer); return (belle_sip_channel_t*)obj; } belle-sip-5.2.0+dfsg/src/transports/udp_listeningpoint.c000066400000000000000000000206311434613136500234110ustar00rootroot00000000000000/* * Copyright (c) 2012-2021 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "belle_sip_internal.h" struct belle_sip_udp_listening_point{ belle_sip_listening_point_t base; belle_sip_socket_t sock; belle_sip_source_t *source; }; static void belle_sip_udp_listening_point_uninit(belle_sip_udp_listening_point_t *lp){ if (lp->source) { belle_sip_main_loop_remove_source(lp->base.stack->ml,lp->source); belle_sip_object_unref(lp->source); lp->source = NULL; } if (lp->sock!=-1) belle_sip_close_socket(lp->sock); } static belle_sip_channel_t *udp_create_channel(belle_sip_listening_point_t *lp, const belle_sip_hop_t *hop){ belle_sip_udp_listening_point_t *udp_lp = (belle_sip_udp_listening_point_t*)lp; belle_sip_socket_t sock = SOCKET_NOT_SET; if (belle_sip_listening_point_get_port(lp) != BELLE_SIP_LISTENING_POINT_DONT_BIND) sock=(int)udp_lp->sock; belle_sip_channel_t *chan=belle_sip_channel_new_udp(lp->stack ,(int)sock ,belle_sip_uri_get_host(lp->listening_uri) ,belle_sip_uri_get_port(lp->listening_uri) ,hop->host ,hop->port, hop->port_is_explicit); return chan; } BELLE_SIP_DECLARE_NO_IMPLEMENTED_INTERFACES(belle_sip_udp_listening_point_t); BELLE_SIP_INSTANCIATE_CUSTOM_VPTR_BEGIN(belle_sip_udp_listening_point_t) { { BELLE_SIP_VPTR_INIT(belle_sip_udp_listening_point_t, belle_sip_listening_point_t,TRUE), (belle_sip_object_destroy_t)belle_sip_udp_listening_point_uninit, NULL, NULL, (belle_sip_object_on_first_ref_t) NULL, (belle_sip_object_on_last_ref_t) NULL, BELLE_SIP_DEFAULT_BUFSIZE_HINT }, "UDP", udp_create_channel } BELLE_SIP_INSTANCIATE_CUSTOM_VPTR_END belle_sip_socket_t udp_listening_point_create_udp_socket(const char *addr, int *port, int *family){ struct addrinfo hints={0}; struct addrinfo *res=NULL; int err; belle_sip_socket_t sock; char portnum[10]; int optval=1; if (*port==BELLE_SIP_LISTENING_POINT_RANDOM_PORT || *port==BELLE_SIP_LISTENING_POINT_DONT_BIND) *port=0; /*random port for bind()*/ belle_sip_set_socket_api(NULL); snprintf(portnum,sizeof(portnum),"%i",*port); hints.ai_family=AF_UNSPEC; hints.ai_socktype=SOCK_DGRAM; hints.ai_protocol=IPPROTO_UDP; hints.ai_flags=AI_NUMERICSERV; err=getaddrinfo(addr,portnum,&hints,&res); if (err!=0){ belle_sip_error("getaddrinfo() failed for %s port %i: %s",addr,*port,gai_strerror(err)); return -1; } *family=res->ai_family; sock=bctbx_socket(res->ai_family,res->ai_socktype,res->ai_protocol); if (sock==-1){ belle_sip_error("Cannot create UDP socket: %s",belle_sip_get_socket_error_string()); freeaddrinfo(res); return -1; } err = bctbx_setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (char*)&optval, sizeof (optval)); if (err == -1){ belle_sip_warning ("Fail to set SIP/UDP address reusable: %s.", belle_sip_get_socket_error_string()); } if (res->ai_family==AF_INET6){ belle_sip_socket_enable_dual_stack(sock); } err=bctbx_bind(sock,res->ai_addr,(socklen_t)res->ai_addrlen); if (err==-1){ belle_sip_error("udp bind() failed for %s port %i: %s",addr,*port,belle_sip_get_socket_error_string()); belle_sip_close_socket(sock); freeaddrinfo(res); return -1; } freeaddrinfo(res); if (*port==0){ struct sockaddr_storage saddr; socklen_t saddr_len=sizeof(saddr); err=bctbx_getsockname(sock,(struct sockaddr*)&saddr,&saddr_len); if (err==0){ err=bctbx_getnameinfo((struct sockaddr*)&saddr,saddr_len,NULL,0,portnum,sizeof(portnum),NI_NUMERICSERV|NI_NUMERICHOST); if (err==0){ *port=atoi(portnum); }else belle_sip_error("udp bind failed, getnameinfo(): %s",gai_strerror(err)); }else belle_sip_error("udp bind failed, bctbx_getsockname(): %s",belle_sip_get_socket_error_string()); } return sock; } static int on_udp_data(belle_sip_udp_listening_point_t *lp, unsigned int events); static int belle_sip_udp_listening_point_init_socket(belle_sip_udp_listening_point_t *lp){ int port=belle_sip_uri_get_listening_port(((belle_sip_listening_point_t*)lp)->listening_uri); lp->sock=udp_listening_point_create_udp_socket(belle_sip_uri_get_host(((belle_sip_listening_point_t*)lp)->listening_uri) ,&port,&lp->base.ai_family); if (lp->sock==SOCKET_NOT_SET){ return -1; } if (belle_sip_uri_get_listening_port(((belle_sip_listening_point_t*)lp)->listening_uri) == BELLE_SIP_LISTENING_POINT_RANDOM_PORT) belle_sip_message("Random port for listening point [%p] is %i",lp , port); belle_sip_uri_set_port(((belle_sip_listening_point_t*)lp)->listening_uri,port); if (lp->base.stack->dscp) belle_sip_socket_set_dscp(lp->sock,lp->base.ai_family,lp->base.stack->dscp); lp->source=belle_sip_socket_source_new((belle_sip_source_func_t)on_udp_data,lp,lp->sock,BELLE_SIP_EVENT_READ,-1); belle_sip_main_loop_add_source(((belle_sip_listening_point_t*)lp)->stack->ml,lp->source); return 0; } static void belle_sip_udp_listening_point_init(belle_sip_udp_listening_point_t *lp, belle_sip_stack_t *s, const char *ipaddress, int port) { belle_sip_listening_point_init((belle_sip_listening_point_t*)lp,s,ipaddress,port); lp->sock = SOCKET_NOT_SET; if (port != BELLE_SIP_LISTENING_POINT_DONT_BIND) belle_sip_udp_listening_point_init_socket(lp); } /*peek data from the master socket to see where it comes from, and dispatch to matching channel. * If the channel does not exist, create it */ static int on_udp_data(belle_sip_udp_listening_point_t *lp, unsigned int events){ int err; unsigned char buf[4096]; struct sockaddr_storage addr; socklen_t addrlen=sizeof(addr); if (events & BELLE_SIP_EVENT_READ){ belle_sip_debug("udp_listening_point: data to read."); err=recvfrom(lp->sock,(char*)buf,sizeof(buf),MSG_PEEK,(struct sockaddr*)&addr,&addrlen); if (err==-1){ char *tmp=belle_sip_object_to_string((belle_sip_object_t*) ((belle_sip_listening_point_t*)lp)->listening_uri); belle_sip_error("udp_listening_point: recvfrom() failed on [%s], : [%s] reopening server socket" ,tmp ,belle_sip_get_socket_error_string()); belle_sip_free(tmp); belle_sip_udp_listening_point_uninit(lp); /*clean all udp channels that are actually sharing the server socket with the listening points*/ belle_sip_listening_point_clean_channels((belle_sip_listening_point_t*)lp); belle_sip_udp_listening_point_init_socket(lp); }else{ belle_sip_channel_t *chan; struct addrinfo ai={0}; /*preserve the V4 mapping*/ ai.ai_family=addr.ss_family; ai.ai_addr=(struct sockaddr*)&addr; ai.ai_addrlen=addrlen; chan=_belle_sip_listening_point_get_channel((belle_sip_listening_point_t*)lp,NULL,&ai); if (chan==NULL){ /*TODO: should rather create the channel with real local ip and port and not just 0.0.0.0"*/ chan=belle_sip_channel_new_udp_with_addr(lp->base.stack ,(int)lp->sock ,belle_sip_uri_get_host(lp->base.listening_uri) ,belle_sip_uri_get_port(lp->base.listening_uri) ,&ai); if (chan!=NULL){ belle_sip_message("udp_listening_point: new channel created to %s:%i",chan->peer_name,chan->peer_port); belle_sip_listening_point_add_channel((belle_sip_listening_point_t*)lp,chan); } } if (chan){ /*notify the channel*/ belle_sip_debug("Notifying udp channel, local [%s:%i] remote [%s:%i]" ,chan->local_ip ,chan->local_port ,chan->peer_name ,chan->peer_port); belle_sip_channel_process_data(chan,events); } } } return BELLE_SIP_CONTINUE; } belle_sip_listening_point_t * belle_sip_udp_listening_point_new(belle_sip_stack_t *s, const char *ipaddress, int port){ belle_sip_udp_listening_point_t *lp=belle_sip_object_new(belle_sip_udp_listening_point_t); belle_sip_udp_listening_point_init(lp,s,ipaddress, port); if (port != BELLE_SIP_LISTENING_POINT_DONT_BIND && lp->sock==SOCKET_NOT_SET){ belle_sip_object_unref(lp); return NULL; } return (belle_sip_listening_point_t*)lp; } belle-sip-5.2.0+dfsg/src/wakelock.c000066400000000000000000000165241434613136500170620ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "wakelock_internal.h" #include "belle-sip/utils.h" #include "bctoolbox/port.h" #include struct _WakeLock { JavaVM *jvm; jobject powerManager; pthread_key_t jniEnvKey; jint PARTIAL_WAKE_LOCK; jmethodID newWakeLockID; jmethodID acquireID; jmethodID releaseID; int numberOfWakelocks; int numberOfWakelocksAcquired; }; typedef struct _WakeLock WakeLock; static WakeLock ctx = { .jvm = NULL, .powerManager = NULL, .numberOfWakelocks = 0, .numberOfWakelocksAcquired = 0 }; bctbx_mutex_t wakeLockInitMutex = PTHREAD_MUTEX_INITIALIZER; bctbx_mutex_t wakeLockMutex = PTHREAD_MUTEX_INITIALIZER; static JNIEnv *get_jni_env(void); static void jni_key_cleanup(void *data); static void belle_sip_set_jvm(JNIEnv *env) { if (ctx.jvm == NULL) { (*env)->GetJavaVM(env, &ctx.jvm); pthread_key_create(&ctx.jniEnvKey, jni_key_cleanup); belle_sip_message("belle_sip_set_jvm(): initialization succeed"); } else { belle_sip_warning("belle_sip_set_jvm(): the JNIEnv has already been initialized"); } } void belle_sip_wake_lock_init(JNIEnv *env, jobject pm) { bctbx_mutex_lock(&wakeLockInitMutex); if (ctx.jvm == NULL) { belle_sip_set_jvm(env); } ctx.numberOfWakelocks++; belle_sip_debug("bellesip_wake_lock : Number of wake locks = %d", ctx.numberOfWakelocks); if (ctx.powerManager == NULL) { jclass powerManagerClass; jclass wakeLockClass; jfieldID fieldID; powerManagerClass = (*env)->FindClass(env, "android/os/PowerManager"); wakeLockClass = (*env)->FindClass(env, "android/os/PowerManager$WakeLock"); fieldID = (*env)->GetStaticFieldID(env, powerManagerClass, "PARTIAL_WAKE_LOCK", "I"); ctx.PARTIAL_WAKE_LOCK = (*env)->GetStaticIntField(env, powerManagerClass, fieldID); ctx.newWakeLockID = (*env)->GetMethodID(env, powerManagerClass, "newWakeLock", "(ILjava/lang/String;)Landroid/os/PowerManager$WakeLock;"); ctx.acquireID = (*env)->GetMethodID(env, wakeLockClass, "acquire", "()V"); ctx.releaseID = (*env)->GetMethodID(env, wakeLockClass, "release", "()V"); ctx.powerManager = (*env)->NewGlobalRef(env, pm); belle_sip_message("bellesip_wake_lock_init(): initialization succeed"); } else { belle_sip_warning("bellesip_wake_lock_init(): the wakelock system has already been initialized"); } bctbx_mutex_unlock(&wakeLockInitMutex); } void belle_sip_wake_lock_uninit(JNIEnv *env) { bctbx_mutex_lock(&wakeLockInitMutex); if (ctx.powerManager != NULL) { ctx.numberOfWakelocks--; belle_sip_debug("bellesip_wake_lock : Number of wake locks = %d", ctx.numberOfWakelocks); if(ctx.numberOfWakelocks == 0){ (*env)->DeleteGlobalRef(env, ctx.powerManager); ctx.powerManager = NULL; belle_sip_message("bellesip_wake_lock_uninit(): uninitialization succeed"); } else if(ctx.numberOfWakelocks < 0){ belle_sip_warning("bellesip_wake_lock_uninit(): There is atleast one extra uninit()"); } } else { belle_sip_warning("bellesip_wake_lock_uninit(): the wakelock system has already been uninitialized"); } bctbx_mutex_unlock(&wakeLockInitMutex); } /** * @brief Callback called when a thread terminates it-self. * It detaches the thread from the JVM. * @param data Unused. */ static void jni_key_cleanup(void *data) { JNIEnv *env = (JNIEnv*) data; belle_sip_message("Thread end. Cleanup wake lock jni environment"); if (env != NULL) { if (ctx.jvm != NULL) { (*ctx.jvm)->DetachCurrentThread(ctx.jvm); pthread_setspecific(ctx.jniEnvKey, NULL); } else { belle_sip_error("Wake lock cleanup. No JVM found"); } } } /** * @brief Get a JNI environment. * Get a JNI by attaching the current thread * to the internaly stored JVM. That function can be safely * called several times. * @return JNI environement pointer. NULL if the function fails. */ static JNIEnv *get_jni_env(void) { JNIEnv *jenv = NULL; if(ctx.jvm != NULL) { jenv = pthread_getspecific(ctx.jniEnvKey); if(jenv == NULL) { if((*ctx.jvm)->AttachCurrentThread(ctx.jvm, &jenv, NULL) == JNI_OK) { pthread_setspecific(ctx.jniEnvKey, jenv); belle_sip_message("get_jni_env(): thread successfuly attached"); } else { belle_sip_fatal("get_jni_env(): thread could not be attached to the JVM"); jenv = NULL; } } } else { belle_sip_error("get_jni_env(): no JVM found"); } return jenv; } unsigned long wake_lock_acquire(const char *tag) { bctbx_mutex_lock(&wakeLockMutex); if(ctx.jvm != NULL && ctx.powerManager != NULL) { JNIEnv *env; if((env = get_jni_env())) { jstring tagString = (*env)->NewStringUTF(env, tag); jobject lock = (*env)->CallObjectMethod(env, ctx.powerManager, ctx.newWakeLockID, ctx.PARTIAL_WAKE_LOCK, tagString); (*env)->DeleteLocalRef(env, tagString); if(lock != NULL) { (*env)->CallVoidMethod(env, lock, ctx.acquireID); jobject lock2 = (*env)->NewGlobalRef(env, lock); (*env)->DeleteLocalRef(env, lock); ctx.numberOfWakelocksAcquired++; belle_sip_debug("bellesip_wake_lock : Number of wake locks ACQUIRED = %d", ctx.numberOfWakelocksAcquired); belle_sip_message("bellesip_wake_lock_acquire(): Android wake lock [%s] acquired [ref=%p]", tag, (void *)lock2); unsigned long lock2value = (unsigned long)lock2; belle_sip_message("bellesip_wake_lock_acquire(): cast long of wakelock %lu", lock2value); bctbx_mutex_unlock(&wakeLockMutex); return (unsigned long)lock2; } else { belle_sip_message("bellesip_wake_lock_acquire(): wake lock creation failed"); } } else { belle_sip_error("bellesip_wake_lock_acquire(): cannot attach current thread to the JVM"); } } else { if (ctx.jvm == NULL) belle_sip_error("bellesip_wake_lock_acquire(): cannot acquire wake lock. No JVM found"); else belle_sip_error("bellesip_wake_lock_acquire(): cannot acquire wake lock. No PowerManager found"); } return 0; } void wake_lock_release(unsigned long id) { bctbx_mutex_lock(&wakeLockMutex); if(ctx.jvm != NULL && ctx.powerManager != NULL) { if(id != 0) { jobject lock = (jobject)id; JNIEnv *env; if((env = get_jni_env())) { (*env)->CallVoidMethod(env, lock, ctx.releaseID); belle_sip_message("bellesip_wake_lock_release(): Android wake lock released [ref=%p]", (void *)lock); ctx.numberOfWakelocksAcquired--; belle_sip_debug("bellesip_wake_lock : Number of wake locks ACQUIRED = %d", ctx.numberOfWakelocksAcquired); (*env)->DeleteGlobalRef(env, lock); } else { belle_sip_error("bellesip_wake_lock_release(): cannot attach current thread to the JVM"); } } } else { if(ctx.jvm == NULL) belle_sip_error("bellesip_wake_lock_release(): cannot release wake lock. No JVM found"); else belle_sip_error("bellesip_wake_lock_release(): cannot release wake lock. No PowerManager found"); } bctbx_mutex_unlock(&wakeLockMutex); } belle-sip-5.2.0+dfsg/src/wakelock_internal.h000066400000000000000000000025331434613136500207560ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "belle-sip/wakelock.h" /** * @brief Acquire a wake lock. * Ask to Android to prevent the system sleeping. That function * do nothing if the wake lock system has not been initialized * by the function bellesip_wake_lock_init(). * @param tag * @return An ID that anthentificates the taken wake lock. */ unsigned long wake_lock_acquire(const char *tag); /** * @brief Release a wake lock. * Ask to Android to release a prevously aquired * wake lock. After calling this function, the system * can sleep again. * @param id ID of the wake lock to release. */ void wake_lock_release(unsigned long id); belle-sip-5.2.0+dfsg/tester/000077500000000000000000000000001434613136500156255ustar00rootroot00000000000000belle-sip-5.2.0+dfsg/tester/CMakeLists.txt000066400000000000000000000151351434613136500203720ustar00rootroot00000000000000############################################################################ # CMakeLists.txt # Copyright (C) 2014 Belledonne Communications, Grenoble France # ############################################################################ # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # ############################################################################ if(ENABLE_STATIC) set(PROJECT_LIBS bellesip-static) else() set(PROJECT_LIBS bellesip) endif() list(APPEND PROJECT_LIBS bctoolbox) set(SOURCE_FILES_C auth_helper_tester.c belle_generic_uri_tester.c belle_http_tester.c belle_sdp_tester.c belle_sip_core_tester.c belle_sip_dialog_tester.c belle_sip_headers_tester.c belle_sip_message_tester.c belle_sip_refresher_tester.c belle_sip_register_tester.c belle_sip_resolver_tester.c belle_sip_tester.c belle_sip_tester.h belle_sip_uri_tester.c belle_sip_fast_uri_tester.c cast_test.c register_tester.h object_tester.cc ) set(OTHER_FILES tester_hosts ) add_definitions( -DBCTBX_LOG_DOMAIN="belle-sip" ) set(SOURCE_FILES_OBJC ) if (IOS) list(APPEND SOURCE_FILES_OBJC belle_sip_tester_ios.m) endif() string(REPLACE ";" " " LINK_FLAGS_STR "${LINK_FLAGS}") bc_apply_compile_flags(SOURCE_FILES_C STRICT_OPTIONS_CPP STRICT_OPTIONS_C) bc_apply_compile_flags(SOURCE_FILES_OBJC STRICT_OPTIONS_CPP STRICT_OPTIONS_OBJC) if(CMAKE_SYSTEM_NAME STREQUAL "WindowsStore") add_library(belle_sip_tester_static STATIC ${SOURCE_FILES_C}) # target_include_directories(belle_sip_tester_static PUBLIC ${BCTOOLBOX_TESTER_INCLUDE_DIRS}) target_link_libraries(belle_sip_tester_static bctoolbox bctoolbox-tester ${PROJECT_LIBS}) set(RUNTIME_COMPONENT_SOURCES belle_sip_tester_windows.cpp belle_sip_tester_windows.h ) add_library(belle_sip_tester_runtime MODULE ${RUNTIME_COMPONENT_SOURCES}) target_link_libraries(belle_sip_tester_runtime belle_sip_tester_static) set_target_properties(belle_sip_tester_runtime PROPERTIES VS_WINRT_COMPONENT TRUE) set_target_properties(belle_sip_tester_runtime PROPERTIES LIBRARY_OUTPUT_NAME "BelledonneCommunications.BelleSip.Tester") set_target_properties(belle_sip_tester_runtime PROPERTIES LINK_FLAGS "/WINMDFILE:BelledonneCommunications.BelleSip.Tester.winmd") set_target_properties(belle_sip_tester_runtime PROPERTIES CXX_STANDARD 11 CXX_STANDARD_REQUIRED ON) set_target_properties(belle_sip_tester_runtime PROPERTIES C_STANDARD 99) install(TARGETS belle_sip_tester_runtime RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE ) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/BelledonneCommunications.BelleSip.Tester.winmd" DESTINATION ${CMAKE_INSTALL_LIBDIR}) if(CMAKE_BUILD_TYPE STREQUAL "Debug") install(FILES ${CMAKE_CURRENT_BINARY_DIR}/Debug/BelledonneCommunications.BelleSip.Tester.pdb DESTINATION ${CMAKE_INSTALL_LIBDIR} PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE ) endif() else() set(USE_BUNDLE ) if (IOS) set(USE_BUNDLE MACOSX_BUNDLE) endif() add_executable(belle_sip_tester ${USE_BUNDLE} ${SOURCE_FILES_C} ${SOURCE_FILES_OBJC}) set_target_properties(belle_sip_tester PROPERTIES LINKER_LANGUAGE CXX) set_target_properties(belle_sip_tester PROPERTIES CXX_STANDARD 11 CXX_STANDARD_REQUIRED ON) set_target_properties(belle_sip_tester PROPERTIES C_STANDARD 99) if(NOT "${LINK_FLAGS_STR}" STREQUAL "") set_target_properties(belle_sip_tester PROPERTIES LINK_FLAGS "${LINK_FLAGS_STR}") endif() if(WIN32) target_link_libraries(belle_sip_tester PRIVATE "Ws2_32") endif() target_link_libraries(belle_sip_tester PRIVATE ${PROJECT_LIBS} bctoolbox-tester) add_test(NAME belle_sip_tester COMMAND belle_sip_tester --verbose) if(NOT IOS) install(TARGETS belle_sip_tester RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE ) endif() set(OBJECT_DESCRIBE_SOURCES describe.c) bc_apply_compile_flags(OBJECT_DESCRIBE_SOURCES STRICT_OPTIONS_CPP STRICT_OPTIONS_C) add_executable(belle_sip_object_describe ${USE_BUNDLE} ${OBJECT_DESCRIBE_SOURCES}) set_target_properties(belle_sip_object_describe PROPERTIES LINKER_LANGUAGE CXX) if(NOT "${LINK_FLAGS_STR}" STREQUAL "") set_target_properties(belle_sip_object_describe PROPERTIES LINK_FLAGS "${LINK_FLAGS_STR}") endif() target_link_libraries(belle_sip_object_describe ${PROJECT_LIBS}) set(OBJECT_RESOLVE_SOURCES resolve.c) bc_apply_compile_flags(OBJECT_DESCRIBE_SOURCES STRICT_OPTIONS_CPP STRICT_OPTIONS_C) add_executable(belle_sip_resolve ${USE_BUNDLE} ${OBJECT_RESOLVE_SOURCES}) set_target_properties(belle_sip_resolve PROPERTIES LINKER_LANGUAGE CXX) if(NOT "${LINK_FLAGS_STR}" STREQUAL "") set_target_properties(belle_sip_resolve PROPERTIES LINK_FLAGS "${LINK_FLAGS_STR}") endif() target_link_libraries(belle_sip_resolve ${PROJECT_LIBS}) set(PARSE_SOURCES parse.c) bc_apply_compile_flags(PARSE_SOURCES STRICT_OPTIONS_CPP STRICT_OPTIONS_C) add_executable(belle_sip_parse ${USE_BUNDLE} ${PARSE_SOURCES}) set_target_properties(belle_sip_parse PROPERTIES LINKER_LANGUAGE CXX) if(NOT "${LINK_FLAGS_STR}" STREQUAL "") set_target_properties(belle_sip_parse PROPERTIES LINK_FLAGS "${LINK_FLAGS_STR}") endif() target_link_libraries(belle_sip_parse ${PROJECT_LIBS}) set(GET_SOURCES get.c) bc_apply_compile_flags(GET_SOURCES STRICT_OPTIONS_CPP STRICT_OPTIONS_C) add_executable(belle_sip_http_get ${USE_BUNDLE} ${GET_SOURCES}) set_target_properties(belle_sip_http_get PROPERTIES LINKER_LANGUAGE CXX) if(NOT "${LINK_FLAGS_STR}" STREQUAL "") set_target_properties(belle_sip_http_get PROPERTIES LINK_FLAGS "${LINK_FLAGS_STR}") endif() target_link_libraries(belle_sip_http_get ${PROJECT_LIBS}) endif() install(FILES ${OTHER_FILES} DESTINATION "${CMAKE_INSTALL_DATADIR}/belle_sip_tester") belle-sip-5.2.0+dfsg/tester/Makefile.am000066400000000000000000000027501434613136500176650ustar00rootroot00000000000000 if ENABLE_TESTS noinst_PROGRAMS=belle_sip_tester belle_sip_object_describe belle_sip_parse belle_http_get belle_sip_resolve EXTRA_DIST= belle_sip_base_uri_tester.c belle_sip_tester_SOURCES= \ auth_helper_tester.c \ belle_generic_uri_tester.c \ belle_http_tester.c \ belle_sdp_tester.c \ belle_sip_core_tester.c \ belle_sip_dialog_tester.c \ belle_sip_headers_tester.c \ belle_sip_message_tester.c \ belle_sip_refresher_tester.c \ belle_sip_register_tester.c \ belle_sip_resolver_tester.c \ belle_sip_tester.c belle_sip_tester.h\ belle_sip_uri_tester.c \ belle_sip_fast_uri_tester.c \ cast_test.c \ register_tester.h belle_sip_tester_CFLAGS=\ -DBC_CONFIG_FILE=\"config.h\" \ $(BCTOOLBOXTESTER_CFLAGS) \ $(STRICT_OPTIONS) \ $(STRICT_OPTIONS_CC) \ $(TLS_CFLAGS) belle_sip_tester_LDADD=$(top_builddir)/src/libbellesip.la $(TLS_LIBS) $(BCTOOLBOXTESTER_LIBS) belle_sip_object_describe_SOURCES=describe.c belle_sip_parse_SOURCES=parse.c belle_http_get_SOURCES=get.c belle_sip_resolve_SOURCES=resolve.c belle_sip_resolve_CFLAGS=$(TLS_CFLAGS) AM_CPPFLAGS=-I$(top_srcdir)/include -I$(top_srcdir)/src LDADD=$(top_builddir)/src/libbellesip.la $(TLS_LIBS) AM_LDFLAGS=-no-undefined -export-dynamic #AM_LDFLAGS+=-Wl,-rpath -Wl,$(libdir) AM_CFLAGS=$(STRICT_OPTIONS) $(STRICT_OPTIONS_CC) test: belle_sip_tester ./belle_sip_tester $(TEST_OPTIONS) else test: @echo "bctoolbox-tester must be installed to be able to run the tests!" endif belle-sip-5.2.0+dfsg/tester/afl.md000066400000000000000000000033351434613136500167150ustar00rootroot00000000000000# Using the afl-fuzz to look for bugs in the belle-sip parser This guide expects that you have installed the afl-fuzz package for your distribution, or on Mac using Homebrew or port. Windows is not supported right now. Then follow these steps: 1. Configure belle-sip with the afl instrumentation tools as CC and OBJC, and with static linking: # Linux CC=`which afl-gcc` ./configure --disable-shared # Mac CC=`which afl-clang` OBJC=`which afl-clang` ./configure --disable-shared 2. Compile and make sure the testers are build. You should have an executable file named testers/belle_sip_parser make clean && make 3. You can now run the afl fuzzy tester in the tester/ directory to test the parser for SDP, HTTP or SIP. afl-fuzz -i afl/sip -o afl_sip_results -- ./belle_sip_parse --protocol sip @@ With this command: - It will show you a screen with informations on the current state of the fuzzing steps. - The `afl/sip` directory contains valid SIP messages that the fuzzer will use as a base for its investigations. You can add - The results of the investigations will be placed in a directory named `afl_sip_results/`. You will have access to the SIP messages that provoked a crash in the `crashes/` directory. # Notes The afl directory contains test messages that will be the base for mutation with the afl fuzzer. They are saved using the CRLF line endings. This is important since the parser expects two "\r\n\r\n" at the end of a message. The hangs usually occur when the message passed to belle_sip_parse is not correctly formed, and the underlying implementation fails at some point. These are not false positives, they are actual problems! ## TODO: 1. add HTTP and SDP fuzzy testsbelle-sip-5.2.0+dfsg/tester/afl/000077500000000000000000000000001434613136500163675ustar00rootroot00000000000000belle-sip-5.2.0+dfsg/tester/afl/generate_dictfiles.rb000066400000000000000000000011121434613136500225270ustar00rootroot00000000000000# this script just reads each line in the sip_dict.txt and creates a file with the line content in it. # this is foe AFL to get an idea of important lexemes to use to mutate SIP messages. lines = File.open("sip_dict.txt", "r").read # remove empty lines (this is bound to happen) lines = lines.split(/\n/).reject{ |l| l.chomp.empty? }.join("\n") lines.each_line { |line| line.gsub!(/\n/, "") file = "sip_dict/#{line}" file.gsub!(/[\=\:]/,"_") print "Create file #{file}\n" # comment this line for a dry run #File.open(file, "w") { |file| file.write(line) } }belle-sip-5.2.0+dfsg/tester/afl/sip/000077500000000000000000000000001434613136500171625ustar00rootroot00000000000000belle-sip-5.2.0+dfsg/tester/afl/sip/401Unauthorized.txt000066400000000000000000000007331434613136500226340ustar00rootroot00000000000000SIP/2.0 401 Unauthorized Via: SIP/2.0/TLS 192.168.0.109:49949;alias;branch=z9hG4bK.gWH~ix41h;rport=49949;received=82.216.250.246 From: ;tag=5exJTQayL To: ;tag=jv0pZ0cH8ejaF Call-ID: PkUb7A2nxg CSeq: 20 REGISTER Server: Flexisip/1.0.2 (sofia-sip-nta/2.0) WWW-Authenticate: Digest realm="sip.linphone.org", nonce="WR5i2QAAAAA9uY8IAADQ03f3p94AAAAA", opaque="+GNywA==", algorithm=MD5, qop="auth" Content-Length: 0 belle-sip-5.2.0+dfsg/tester/afl/sip/REGISTER.txt000066400000000000000000000014461434613136500211540ustar00rootroot00000000000000REGISTER sip:sip.linphone.org SIP/2.0 Via: SIP/2.0/TLS 192.168.0.109:49949;alias;branch=z9hG4bK.gdQJOpBN5;rport From: ;tag=5exJTQayL To: sip:gbi@sip.linphone.org CSeq: 21 REGISTER Call-ID: PkUb7A2nxg Max-Forwards: 70 Supported: outbound Accept: application/sdp, text/plain, application/vnd.gsma.rcs-ft-http+xml Contact: ;+sip.instance="" Expires: 3600 User-Agent: Linphone/3.8.5 (belle-sip/1.4.1) Content-Length: 0 Authorization: Digest realm="sip.linphone.org", nonce="WR5i2QAAAAA9uY8IAADQ03f3p94AAAAA", algorithm=MD5, opaque="+GNywA==", username="gbi", uri="sip:sip.linphone.org", response="124f0c0ea212786c9f8b5b6f1de92b43", cnonce="faaac8d5", nc=00000001, qop=auth belle-sip-5.2.0+dfsg/tester/afl/sip/SIP200RegSuccess.txt000066400000000000000000000012641434613136500225720ustar00rootroot00000000000000SIP/2.0 200 Registration successful Via: SIP/2.0/TLS 192.168.0.109:49949;alias;branch=z9hG4bK.gdQJOpBN5;rport=49949;received=82.216.250.246 From: ;tag=5exJTQayL To: ;tag=K5SF1UXm5Q8va Call-ID: PkUb7A2nxg CSeq: 21 REGISTER Contact: ;expires=3600;q=0.00 Contact: ;expires=604442;q=0.00 Server: Flexisip/1.0.2 (sofia-sip-nta/2.0) Content-Length: 0 belle-sip-5.2.0+dfsg/tester/afl/sip_dict.txt000066400000000000000000000020541434613136500207270ustar00rootroot00000000000000Accept-Encoding: Accept-Language: Accept: alert Alert-Info: algorithm= Allow: application Apr audio Aug auth auth-int Authentication-Info: Authorization: branch branch= c: Call-ID: Call-Info: card cnonce= Contact: Content-Disposition: Content-Encoding: Content-Language: Content-Length: Content-Type: CSeq: Date: Dec Digest: domain= duration= e: emergency Error-Info: Expires: expires= f: false Feb Fri From: GMT handling= i: icon image In-Reply-To: info ip Jan Jul Jun k: l: lr m: maddr= Mar Max-Forwards: May message MIME-Version: Min-Expires: Mon multipart nc= nextnonce= non-urgent nonce= normal Nov Oct opaque= optional Organization: phone Priority: Proxy-Authenticate: Proxy-Authorization: Proxy-Require: purpose= q= qop= realm= received= Record-Route: render Reply-To: Require: required response= Retry-After: Route: rspauth= s: Sat SCTP sctp Sep Server: session SIP stale= Subject: Sun Supported: t: tag= TCP tcp text Thu Timestamp: TLS tls To true ttl= Tue UDP udp Unsupported: urgent uri= User-Agent: username= v: Via: video Warning: Wed WWW-Authenticate: x-belle-sip-5.2.0+dfsg/tester/afl/sip_dict/000077500000000000000000000000001434613136500201655ustar00rootroot00000000000000belle-sip-5.2.0+dfsg/tester/afl/sip_dict/Accept-Encoding_000066400000000000000000000000201434613136500231620ustar00rootroot00000000000000Accept-Encoding:belle-sip-5.2.0+dfsg/tester/afl/sip_dict/Accept-Language_000066400000000000000000000000201434613136500231570ustar00rootroot00000000000000Accept-Language:belle-sip-5.2.0+dfsg/tester/afl/sip_dict/Accept_000066400000000000000000000000071434613136500214430ustar00rootroot00000000000000Accept:belle-sip-5.2.0+dfsg/tester/afl/sip_dict/Alert-Info_000066400000000000000000000000131434613136500222010ustar00rootroot00000000000000Alert-Info:belle-sip-5.2.0+dfsg/tester/afl/sip_dict/Allow_000066400000000000000000000000061434613136500213210ustar00rootroot00000000000000Allow:belle-sip-5.2.0+dfsg/tester/afl/sip_dict/Apr000066400000000000000000000000031434613136500206230ustar00rootroot00000000000000Aprbelle-sip-5.2.0+dfsg/tester/afl/sip_dict/Aug000066400000000000000000000000031434613136500206150ustar00rootroot00000000000000Augbelle-sip-5.2.0+dfsg/tester/afl/sip_dict/Authentication-Info_000066400000000000000000000000241434613136500241130ustar00rootroot00000000000000Authentication-Info:belle-sip-5.2.0+dfsg/tester/afl/sip_dict/Authorization_000066400000000000000000000000161434613136500231040ustar00rootroot00000000000000Authorization:belle-sip-5.2.0+dfsg/tester/afl/sip_dict/CSeq_000066400000000000000000000000051434613136500210750ustar00rootroot00000000000000CSeq:belle-sip-5.2.0+dfsg/tester/afl/sip_dict/Call-ID_000066400000000000000000000000101434613136500214030ustar00rootroot00000000000000Call-ID:belle-sip-5.2.0+dfsg/tester/afl/sip_dict/Call-Info_000066400000000000000000000000121434613136500220040ustar00rootroot00000000000000Call-Info:belle-sip-5.2.0+dfsg/tester/afl/sip_dict/Contact_000066400000000000000000000000101434613136500216310ustar00rootroot00000000000000Contact:belle-sip-5.2.0+dfsg/tester/afl/sip_dict/Content-Disposition_000066400000000000000000000000241434613136500241570ustar00rootroot00000000000000Content-Disposition:belle-sip-5.2.0+dfsg/tester/afl/sip_dict/Content-Encoding_000066400000000000000000000000211434613136500233760ustar00rootroot00000000000000Content-Encoding:belle-sip-5.2.0+dfsg/tester/afl/sip_dict/Content-Language_000066400000000000000000000000211434613136500233730ustar00rootroot00000000000000Content-Language:belle-sip-5.2.0+dfsg/tester/afl/sip_dict/Content-Length_000066400000000000000000000000171434613136500230760ustar00rootroot00000000000000Content-Length:belle-sip-5.2.0+dfsg/tester/afl/sip_dict/Content-Type_000066400000000000000000000000151434613136500225740ustar00rootroot00000000000000Content-Type:belle-sip-5.2.0+dfsg/tester/afl/sip_dict/Date_000066400000000000000000000000051434613136500211170ustar00rootroot00000000000000Date:belle-sip-5.2.0+dfsg/tester/afl/sip_dict/Dec000066400000000000000000000000031434613136500205740ustar00rootroot00000000000000Decbelle-sip-5.2.0+dfsg/tester/afl/sip_dict/Digest_000066400000000000000000000000071434613136500214630ustar00rootroot00000000000000Digest:belle-sip-5.2.0+dfsg/tester/afl/sip_dict/Error-Info_000066400000000000000000000000131434613136500222230ustar00rootroot00000000000000Error-Info:belle-sip-5.2.0+dfsg/tester/afl/sip_dict/Expires_000066400000000000000000000000101434613136500216550ustar00rootroot00000000000000expires=belle-sip-5.2.0+dfsg/tester/afl/sip_dict/Feb000066400000000000000000000000031434613136500205750ustar00rootroot00000000000000Febbelle-sip-5.2.0+dfsg/tester/afl/sip_dict/Fri000066400000000000000000000000031434613136500206210ustar00rootroot00000000000000Fribelle-sip-5.2.0+dfsg/tester/afl/sip_dict/From_000066400000000000000000000000051434613136500211450ustar00rootroot00000000000000From:belle-sip-5.2.0+dfsg/tester/afl/sip_dict/GMT000066400000000000000000000000031434613136500205300ustar00rootroot00000000000000GMTbelle-sip-5.2.0+dfsg/tester/afl/sip_dict/In-Reply-To_000066400000000000000000000000141434613136500222610ustar00rootroot00000000000000In-Reply-To:belle-sip-5.2.0+dfsg/tester/afl/sip_dict/Jan000066400000000000000000000000031434613136500206110ustar00rootroot00000000000000Janbelle-sip-5.2.0+dfsg/tester/afl/sip_dict/Jul000066400000000000000000000000031434613136500206330ustar00rootroot00000000000000Julbelle-sip-5.2.0+dfsg/tester/afl/sip_dict/Jun000066400000000000000000000000031434613136500206350ustar00rootroot00000000000000Junbelle-sip-5.2.0+dfsg/tester/afl/sip_dict/MIME-Version_000066400000000000000000000000151434613136500224150ustar00rootroot00000000000000MIME-Version:belle-sip-5.2.0+dfsg/tester/afl/sip_dict/Mar000066400000000000000000000000031434613136500206200ustar00rootroot00000000000000Marbelle-sip-5.2.0+dfsg/tester/afl/sip_dict/Max-Forwards_000066400000000000000000000000151434613136500225550ustar00rootroot00000000000000Max-Forwards:belle-sip-5.2.0+dfsg/tester/afl/sip_dict/May000066400000000000000000000000031434613136500206270ustar00rootroot00000000000000Maybelle-sip-5.2.0+dfsg/tester/afl/sip_dict/Min-Expires_000066400000000000000000000000141434613136500224020ustar00rootroot00000000000000Min-Expires:belle-sip-5.2.0+dfsg/tester/afl/sip_dict/Mon000066400000000000000000000000031434613136500206320ustar00rootroot00000000000000Monbelle-sip-5.2.0+dfsg/tester/afl/sip_dict/Nov000066400000000000000000000000031434613136500206430ustar00rootroot00000000000000Novbelle-sip-5.2.0+dfsg/tester/afl/sip_dict/Oct000066400000000000000000000000031434613136500206260ustar00rootroot00000000000000Octbelle-sip-5.2.0+dfsg/tester/afl/sip_dict/Organization_000066400000000000000000000000151434613136500227070ustar00rootroot00000000000000Organization:belle-sip-5.2.0+dfsg/tester/afl/sip_dict/Priority_000066400000000000000000000000111434613136500220600ustar00rootroot00000000000000Priority:belle-sip-5.2.0+dfsg/tester/afl/sip_dict/Proxy-Authenticate_000066400000000000000000000000231434613136500237770ustar00rootroot00000000000000Proxy-Authenticate:belle-sip-5.2.0+dfsg/tester/afl/sip_dict/Proxy-Authorization_000066400000000000000000000000241434613136500242220ustar00rootroot00000000000000Proxy-Authorization:belle-sip-5.2.0+dfsg/tester/afl/sip_dict/Proxy-Require_000066400000000000000000000000161434613136500227770ustar00rootroot00000000000000Proxy-Require:belle-sip-5.2.0+dfsg/tester/afl/sip_dict/Record-Route_000066400000000000000000000000151434613136500225550ustar00rootroot00000000000000Record-Route:belle-sip-5.2.0+dfsg/tester/afl/sip_dict/Reply-To_000066400000000000000000000000111434613136500217120ustar00rootroot00000000000000Reply-To:belle-sip-5.2.0+dfsg/tester/afl/sip_dict/Require_000066400000000000000000000000101434613136500216520ustar00rootroot00000000000000Require:belle-sip-5.2.0+dfsg/tester/afl/sip_dict/Retry-After_000066400000000000000000000000141434613136500224060ustar00rootroot00000000000000Retry-After:belle-sip-5.2.0+dfsg/tester/afl/sip_dict/Route_000066400000000000000000000000061434613136500213410ustar00rootroot00000000000000Route:belle-sip-5.2.0+dfsg/tester/afl/sip_dict/SCTP000066400000000000000000000000041434613136500206530ustar00rootroot00000000000000sctpbelle-sip-5.2.0+dfsg/tester/afl/sip_dict/SIP000066400000000000000000000000031434613136500205340ustar00rootroot00000000000000SIPbelle-sip-5.2.0+dfsg/tester/afl/sip_dict/Sat000066400000000000000000000000031434613136500206300ustar00rootroot00000000000000Satbelle-sip-5.2.0+dfsg/tester/afl/sip_dict/Sep000066400000000000000000000000031434613136500206300ustar00rootroot00000000000000Sepbelle-sip-5.2.0+dfsg/tester/afl/sip_dict/Server_000066400000000000000000000000071434613136500215120ustar00rootroot00000000000000Server:belle-sip-5.2.0+dfsg/tester/afl/sip_dict/Subject_000066400000000000000000000000101434613136500216350ustar00rootroot00000000000000Subject:belle-sip-5.2.0+dfsg/tester/afl/sip_dict/Sun000066400000000000000000000000031434613136500206460ustar00rootroot00000000000000Sunbelle-sip-5.2.0+dfsg/tester/afl/sip_dict/Supported_000066400000000000000000000000121434613136500222250ustar00rootroot00000000000000Supported:belle-sip-5.2.0+dfsg/tester/afl/sip_dict/TCP000066400000000000000000000000031434613136500205270ustar00rootroot00000000000000tcpbelle-sip-5.2.0+dfsg/tester/afl/sip_dict/TLS000066400000000000000000000000031434613136500205430ustar00rootroot00000000000000tlsbelle-sip-5.2.0+dfsg/tester/afl/sip_dict/Thu000066400000000000000000000000031434613136500206410ustar00rootroot00000000000000Thubelle-sip-5.2.0+dfsg/tester/afl/sip_dict/Timestamp_000066400000000000000000000000121434613136500222030ustar00rootroot00000000000000Timestamp:belle-sip-5.2.0+dfsg/tester/afl/sip_dict/To000066400000000000000000000000021434613136500204620ustar00rootroot00000000000000Tobelle-sip-5.2.0+dfsg/tester/afl/sip_dict/Tue000066400000000000000000000000031434613136500206360ustar00rootroot00000000000000Tuebelle-sip-5.2.0+dfsg/tester/afl/sip_dict/UDP000066400000000000000000000000031434613136500205310ustar00rootroot00000000000000udpbelle-sip-5.2.0+dfsg/tester/afl/sip_dict/Unsupported_000066400000000000000000000000141434613136500225720ustar00rootroot00000000000000Unsupported:belle-sip-5.2.0+dfsg/tester/afl/sip_dict/User-Agent_000066400000000000000000000000131434613136500222130ustar00rootroot00000000000000User-Agent:belle-sip-5.2.0+dfsg/tester/afl/sip_dict/Via_000066400000000000000000000000041434613136500207600ustar00rootroot00000000000000Via:belle-sip-5.2.0+dfsg/tester/afl/sip_dict/WWW-Authenticate_000066400000000000000000000000211434613136500233400ustar00rootroot00000000000000WWW-Authenticate:belle-sip-5.2.0+dfsg/tester/afl/sip_dict/Warning_000066400000000000000000000000101434613136500216430ustar00rootroot00000000000000Warning:belle-sip-5.2.0+dfsg/tester/afl/sip_dict/Wed000066400000000000000000000000031434613136500206200ustar00rootroot00000000000000Wedbelle-sip-5.2.0+dfsg/tester/afl/sip_dict/alert000066400000000000000000000000051434613136500212120ustar00rootroot00000000000000alertbelle-sip-5.2.0+dfsg/tester/afl/sip_dict/algorithm_000066400000000000000000000000121434613136500222260ustar00rootroot00000000000000algorithm=belle-sip-5.2.0+dfsg/tester/afl/sip_dict/application000066400000000000000000000000131434613136500224050ustar00rootroot00000000000000applicationbelle-sip-5.2.0+dfsg/tester/afl/sip_dict/audio000066400000000000000000000000051434613136500212040ustar00rootroot00000000000000audiobelle-sip-5.2.0+dfsg/tester/afl/sip_dict/auth000066400000000000000000000000041434613136500210430ustar00rootroot00000000000000authbelle-sip-5.2.0+dfsg/tester/afl/sip_dict/auth-int000066400000000000000000000000101434613136500216300ustar00rootroot00000000000000auth-intbelle-sip-5.2.0+dfsg/tester/afl/sip_dict/branch000066400000000000000000000000061434613136500213410ustar00rootroot00000000000000branchbelle-sip-5.2.0+dfsg/tester/afl/sip_dict/branch_000066400000000000000000000000071434613136500215010ustar00rootroot00000000000000branch=belle-sip-5.2.0+dfsg/tester/afl/sip_dict/c_000066400000000000000000000000021434613136500204610ustar00rootroot00000000000000c:belle-sip-5.2.0+dfsg/tester/afl/sip_dict/card000066400000000000000000000000041434613136500210130ustar00rootroot00000000000000cardbelle-sip-5.2.0+dfsg/tester/afl/sip_dict/cnonce_000066400000000000000000000000071434613136500215110ustar00rootroot00000000000000cnonce=belle-sip-5.2.0+dfsg/tester/afl/sip_dict/domain_000066400000000000000000000000071434613136500215130ustar00rootroot00000000000000domain=belle-sip-5.2.0+dfsg/tester/afl/sip_dict/duration_000066400000000000000000000000111434613136500220640ustar00rootroot00000000000000duration=belle-sip-5.2.0+dfsg/tester/afl/sip_dict/e_000066400000000000000000000000021434613136500204630ustar00rootroot00000000000000e:belle-sip-5.2.0+dfsg/tester/afl/sip_dict/emergency000066400000000000000000000000111434613136500220560ustar00rootroot00000000000000emergencybelle-sip-5.2.0+dfsg/tester/afl/sip_dict/f_000066400000000000000000000000021434613136500204640ustar00rootroot00000000000000f:belle-sip-5.2.0+dfsg/tester/afl/sip_dict/false000066400000000000000000000000051434613136500211750ustar00rootroot00000000000000falsebelle-sip-5.2.0+dfsg/tester/afl/sip_dict/handling_000066400000000000000000000000111434613136500220230ustar00rootroot00000000000000handling=belle-sip-5.2.0+dfsg/tester/afl/sip_dict/i_000066400000000000000000000000021434613136500204670ustar00rootroot00000000000000i:belle-sip-5.2.0+dfsg/tester/afl/sip_dict/icon000066400000000000000000000000041434613136500210320ustar00rootroot00000000000000iconbelle-sip-5.2.0+dfsg/tester/afl/sip_dict/image000066400000000000000000000000051434613136500211650ustar00rootroot00000000000000imagebelle-sip-5.2.0+dfsg/tester/afl/sip_dict/info000066400000000000000000000000041434613136500210350ustar00rootroot00000000000000infobelle-sip-5.2.0+dfsg/tester/afl/sip_dict/ip000066400000000000000000000000021434613136500205100ustar00rootroot00000000000000ipbelle-sip-5.2.0+dfsg/tester/afl/sip_dict/k_000066400000000000000000000000021434613136500204710ustar00rootroot00000000000000k:belle-sip-5.2.0+dfsg/tester/afl/sip_dict/l_000066400000000000000000000000021434613136500204720ustar00rootroot00000000000000l:belle-sip-5.2.0+dfsg/tester/afl/sip_dict/lr000066400000000000000000000000021434613136500205150ustar00rootroot00000000000000lrbelle-sip-5.2.0+dfsg/tester/afl/sip_dict/m_000066400000000000000000000000021434613136500204730ustar00rootroot00000000000000m:belle-sip-5.2.0+dfsg/tester/afl/sip_dict/maddr_000066400000000000000000000000061434613136500213320ustar00rootroot00000000000000maddr=belle-sip-5.2.0+dfsg/tester/afl/sip_dict/message000066400000000000000000000000071434613136500215310ustar00rootroot00000000000000messagebelle-sip-5.2.0+dfsg/tester/afl/sip_dict/multipart000066400000000000000000000000111434613136500221210ustar00rootroot00000000000000multipartbelle-sip-5.2.0+dfsg/tester/afl/sip_dict/nc_000066400000000000000000000000031434613136500206400ustar00rootroot00000000000000nc=belle-sip-5.2.0+dfsg/tester/afl/sip_dict/nextnonce_000066400000000000000000000000121434613136500222410ustar00rootroot00000000000000nextnonce=belle-sip-5.2.0+dfsg/tester/afl/sip_dict/non-urgent000066400000000000000000000000121434613136500221750ustar00rootroot00000000000000non-urgentbelle-sip-5.2.0+dfsg/tester/afl/sip_dict/nonce_000066400000000000000000000000061434613136500213450ustar00rootroot00000000000000nonce=belle-sip-5.2.0+dfsg/tester/afl/sip_dict/normal000066400000000000000000000000061434613136500213740ustar00rootroot00000000000000normalbelle-sip-5.2.0+dfsg/tester/afl/sip_dict/opaque_000066400000000000000000000000071434613136500215360ustar00rootroot00000000000000opaque=belle-sip-5.2.0+dfsg/tester/afl/sip_dict/optional000066400000000000000000000000101434613136500217240ustar00rootroot00000000000000optionalbelle-sip-5.2.0+dfsg/tester/afl/sip_dict/phone000066400000000000000000000000051434613136500212140ustar00rootroot00000000000000phonebelle-sip-5.2.0+dfsg/tester/afl/sip_dict/purpose_000066400000000000000000000000101434613136500217330ustar00rootroot00000000000000purpose=belle-sip-5.2.0+dfsg/tester/afl/sip_dict/q_000066400000000000000000000000021434613136500204770ustar00rootroot00000000000000q=belle-sip-5.2.0+dfsg/tester/afl/sip_dict/qop_000066400000000000000000000000041434613136500210400ustar00rootroot00000000000000qop=belle-sip-5.2.0+dfsg/tester/afl/sip_dict/realm_000066400000000000000000000000061434613136500213430ustar00rootroot00000000000000realm=belle-sip-5.2.0+dfsg/tester/afl/sip_dict/received_000066400000000000000000000000111434613136500220250ustar00rootroot00000000000000received=belle-sip-5.2.0+dfsg/tester/afl/sip_dict/render000066400000000000000000000000061434613136500213630ustar00rootroot00000000000000renderbelle-sip-5.2.0+dfsg/tester/afl/sip_dict/required000066400000000000000000000000101434613136500217170ustar00rootroot00000000000000requiredbelle-sip-5.2.0+dfsg/tester/afl/sip_dict/response_000066400000000000000000000000111434613136500220750ustar00rootroot00000000000000response=belle-sip-5.2.0+dfsg/tester/afl/sip_dict/rspauth_000066400000000000000000000000101434613136500217240ustar00rootroot00000000000000rspauth=belle-sip-5.2.0+dfsg/tester/afl/sip_dict/s_000066400000000000000000000000021434613136500205010ustar00rootroot00000000000000s:belle-sip-5.2.0+dfsg/tester/afl/sip_dict/session000066400000000000000000000000071434613136500215700ustar00rootroot00000000000000sessionbelle-sip-5.2.0+dfsg/tester/afl/sip_dict/stale_000066400000000000000000000000061434613136500213530ustar00rootroot00000000000000stale=belle-sip-5.2.0+dfsg/tester/afl/sip_dict/t_000066400000000000000000000000021434613136500205020ustar00rootroot00000000000000t:belle-sip-5.2.0+dfsg/tester/afl/sip_dict/tag_000066400000000000000000000000041434613136500210140ustar00rootroot00000000000000tag=belle-sip-5.2.0+dfsg/tester/afl/sip_dict/text000066400000000000000000000000041434613136500210660ustar00rootroot00000000000000textbelle-sip-5.2.0+dfsg/tester/afl/sip_dict/true000066400000000000000000000000041434613136500210610ustar00rootroot00000000000000truebelle-sip-5.2.0+dfsg/tester/afl/sip_dict/ttl_000066400000000000000000000000041434613136500210440ustar00rootroot00000000000000ttl=belle-sip-5.2.0+dfsg/tester/afl/sip_dict/urgent000066400000000000000000000000061434613136500214100ustar00rootroot00000000000000urgentbelle-sip-5.2.0+dfsg/tester/afl/sip_dict/uri_000066400000000000000000000000041434613136500210400ustar00rootroot00000000000000uri=belle-sip-5.2.0+dfsg/tester/afl/sip_dict/username_000066400000000000000000000000111434613136500220560ustar00rootroot00000000000000username=belle-sip-5.2.0+dfsg/tester/afl/sip_dict/v_000066400000000000000000000000021434613136500205040ustar00rootroot00000000000000v:belle-sip-5.2.0+dfsg/tester/afl/sip_dict/video000066400000000000000000000000051434613136500212110ustar00rootroot00000000000000videobelle-sip-5.2.0+dfsg/tester/afl/sip_dict/x-000066400000000000000000000000021434613136500204240ustar00rootroot00000000000000x-belle-sip-5.2.0+dfsg/tester/auth_helper_tester.c000066400000000000000000000405341434613136500216650ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifdef HAVE_CONFIG_H #include "config.h" #endif #include "belle-sip/auth-helper.h" #include "belle_sip_tester.h" #include static void test_authentication(void) { const char* l_raw_header = "WWW-Authenticate: Digest " "algorithm=MD5, realm=\"sip.linphone.org\", opaque=\"1bc7f9097684320\"," " nonce=\"cz3h0gAAAAC06TKKAABmTz1V9OcAAAAA\""; char ha1[33]; belle_sip_header_www_authenticate_t* www_authenticate=belle_sip_header_www_authenticate_parse(l_raw_header); belle_sip_header_authorization_t* authorization = belle_sip_auth_helper_create_authorization(www_authenticate); belle_sip_header_authorization_set_uri(authorization,belle_sip_uri_parse("sip:sip.linphone.org")); BC_ASSERT_EQUAL(0,belle_sip_auth_helper_compute_ha1("jehan-mac","sip.linphone.org","toto",ha1), int, "%d"); BC_ASSERT_EQUAL(0,belle_sip_auth_helper_fill_authorization(authorization,"REGISTER",ha1), int, "%d"); BC_ASSERT_STRING_EQUAL(belle_sip_header_authorization_get_response(authorization),"77ebf3de72e41934d806175586086508"); belle_sip_object_unref(www_authenticate); belle_sip_object_unref(authorization); } static void test_authentication_sha256(void) { const char *l_raw_header = "WWW-Authenticate: Digest " "algorithm=SHA-256, realm=\"http-auth@example.org\", opaque=\"FQhe/qaU925kfnzjCev0ciny7QMkPqMAFRtzCUYo5tdS\"," " qop=\"auth,auth-int\", nonce=\"7ypf/xlj9XXwfDPEoM4URrv/xwf94BcCAzFZH4GiTo0v\""; char ha1[65]; size_t size = sizeof(ha1) / sizeof(char); belle_sip_header_www_authenticate_t *www_authenticate = belle_sip_header_www_authenticate_parse(l_raw_header); belle_sip_header_authorization_t *authorization = belle_sip_auth_helper_create_authorization(www_authenticate); belle_sip_header_authorization_set_uri(authorization, belle_sip_uri_parse("sip:sip.linphone.org")); belle_sip_header_authorization_set_nonce_count(authorization, 1); belle_sip_header_authorization_set_qop(authorization, "auth"); belle_sip_header_authorization_set_cnonce(authorization, "8302210f"); /*for testing purpose*/ const char *algo = belle_sip_header_authorization_get_algorithm(authorization); BC_ASSERT_EQUAL(0, belle_sip_auth_helper_compute_ha1_for_algorithm("Mufasa", "http-auth@example.org", "Circle of Life", ha1, size, algo), int, "%d"); BC_ASSERT_EQUAL(0, belle_sip_auth_helper_fill_authorization(authorization, "REGISTER", ha1), int, "%d"); BC_ASSERT_STRING_EQUAL(belle_sip_header_authorization_get_qop(authorization), "auth"); BC_ASSERT_STRING_EQUAL(belle_sip_header_authorization_get_response(authorization), "91253bea2bbc3b34a5dac192c672fb7fff1ae6d657207b6719842827a509a501"); BC_ASSERT_EQUAL(belle_sip_header_authorization_get_nonce_count(authorization), 1, int, "%d"); belle_sip_object_unref(www_authenticate); belle_sip_object_unref(authorization); } /* test patterns from RFC7616 section 3.9.1 */ static void test_authentication_sha256_rfc7616(void) { const char *l_raw_header = "WWW-Authenticate: Digest " "algorithm=SHA-256, realm=\"http-auth@example.org\", opaque=\"FQhe/qaU925kfnzjCev0ciny7QMkPqMAFRtzCUYo5tdS\"," " qop=\"auth,auth-int\", nonce=\"7ypf/xlj9XXwfDPEoM4URrv/xwf94BcCAzFZH4GiTo0v\""; char ha1[65]; size_t size = sizeof(ha1) / sizeof(char); belle_sip_header_www_authenticate_t *www_authenticate = belle_sip_header_www_authenticate_parse(l_raw_header); belle_http_header_authorization_t *authorization = belle_http_auth_helper_create_authorization(www_authenticate); belle_http_header_authorization_set_uri(authorization, belle_generic_uri_parse("/dir/index.html")); belle_sip_header_authorization_set_nonce_count(BELLE_SIP_HEADER_AUTHORIZATION(authorization), 1); belle_sip_header_authorization_set_qop(BELLE_SIP_HEADER_AUTHORIZATION(authorization), "auth"); belle_sip_header_authorization_set_cnonce(BELLE_SIP_HEADER_AUTHORIZATION(authorization), "f2/wE4q74E6zIJEtWaHKaf5wv/H5QzzpXusqGemxURZJ"); const char *algo = belle_sip_header_authorization_get_algorithm(BELLE_SIP_HEADER_AUTHORIZATION(authorization)); BC_ASSERT_EQUAL(0, belle_sip_auth_helper_compute_ha1_for_algorithm("Mufasa", "http-auth@example.org", "Circle of Life", ha1, size, algo), int, "%d"); BC_ASSERT_EQUAL(0, belle_sip_auth_helper_fill_authorization(BELLE_SIP_HEADER_AUTHORIZATION(authorization), "GET", ha1), int, "%d"); BC_ASSERT_STRING_EQUAL(belle_sip_header_authorization_get_qop(BELLE_SIP_HEADER_AUTHORIZATION(authorization)), "auth"); BC_ASSERT_STRING_EQUAL(belle_sip_header_authorization_get_response(BELLE_SIP_HEADER_AUTHORIZATION(authorization)), "753927fa0e85d155564e2e272a28d1802ca10daf4496794697cf8db5856cb6c1"); BC_ASSERT_EQUAL(belle_sip_header_authorization_get_nonce_count(BELLE_SIP_HEADER_AUTHORIZATION(authorization)), 1, int, "%d"); belle_sip_object_unref(www_authenticate); belle_sip_object_unref(authorization); } static void test_authentication_md5_rfc7616(void) { const char *l_raw_header = "WWW-Authenticate: Digest " "algorithm=MD5, realm=\"http-auth@example.org\", opaque=\"FQhe/qaU925kfnzjCev0ciny7QMkPqMAFRtzCUYo5tdS\"," " qop=\"auth,auth-int\", nonce=\"7ypf/xlj9XXwfDPEoM4URrv/xwf94BcCAzFZH4GiTo0v\""; char ha1[33]; size_t size = sizeof(ha1) / sizeof(char); belle_sip_header_www_authenticate_t *www_authenticate = belle_sip_header_www_authenticate_parse(l_raw_header); belle_http_header_authorization_t *authorization = belle_http_auth_helper_create_authorization(www_authenticate); belle_http_header_authorization_set_uri(authorization, belle_generic_uri_parse("/dir/index.html")); belle_sip_header_authorization_set_nonce_count(BELLE_SIP_HEADER_AUTHORIZATION(authorization), 1); belle_sip_header_authorization_set_qop(BELLE_SIP_HEADER_AUTHORIZATION(authorization), "auth"); belle_sip_header_authorization_set_cnonce(BELLE_SIP_HEADER_AUTHORIZATION(authorization), "f2/wE4q74E6zIJEtWaHKaf5wv/H5QzzpXusqGemxURZJ"); const char *algo = belle_sip_header_authorization_get_algorithm(BELLE_SIP_HEADER_AUTHORIZATION(authorization)); BC_ASSERT_EQUAL(0, belle_sip_auth_helper_compute_ha1_for_algorithm("Mufasa", "http-auth@example.org", "Circle of Life", ha1, size, algo), int, "%d"); BC_ASSERT_EQUAL(0, belle_sip_auth_helper_fill_authorization(BELLE_SIP_HEADER_AUTHORIZATION(authorization), "GET", ha1), int, "%d"); BC_ASSERT_STRING_EQUAL(belle_sip_header_authorization_get_qop(BELLE_SIP_HEADER_AUTHORIZATION(authorization)), "auth"); BC_ASSERT_STRING_EQUAL(belle_sip_header_authorization_get_response(BELLE_SIP_HEADER_AUTHORIZATION(authorization)), "8ca523f5e9506fed4657c9700eebdbec"); BC_ASSERT_EQUAL(belle_sip_header_authorization_get_nonce_count(BELLE_SIP_HEADER_AUTHORIZATION(authorization)), 1, int, "%d"); belle_sip_object_unref(www_authenticate); belle_sip_object_unref(authorization); } static void test_authentication_qop_auth(void) { const char* l_raw_header = "WWW-Authenticate: Digest " "algorithm=MD5, realm=\"sip.linphone.org\", opaque=\"1bc7f9097684320\"," " qop=\"auth,auth-int\", nonce=\"cz3h0gAAAAC06TKKAABmTz1V9OcAAAAA\""; char ha1[33]; belle_sip_header_www_authenticate_t* www_authenticate=belle_sip_header_www_authenticate_parse(l_raw_header); belle_sip_header_authorization_t* authorization = belle_sip_auth_helper_create_authorization(www_authenticate); belle_sip_header_authorization_set_uri(authorization,belle_sip_uri_parse("sip:sip.linphone.org")); belle_sip_header_authorization_set_nonce_count(authorization,1); belle_sip_header_authorization_set_qop(authorization,"auth"); belle_sip_header_authorization_set_cnonce(authorization,"8302210f"); /*for testing purpose*/ BC_ASSERT_EQUAL(0,belle_sip_auth_helper_compute_ha1("jehan-mac","sip.linphone.org","toto",ha1), int, "%d"); BC_ASSERT_EQUAL(0,belle_sip_auth_helper_fill_authorization(authorization,"REGISTER",ha1), int, "%d"); BC_ASSERT_STRING_EQUAL(belle_sip_header_authorization_get_qop(authorization),"auth"); BC_ASSERT_STRING_EQUAL(belle_sip_header_authorization_get_response(authorization),"694dab8dfe7d50d28ba61e8c43e30666"); BC_ASSERT_EQUAL(belle_sip_header_authorization_get_nonce_count(authorization),1, int, "%d"); belle_sip_object_unref(www_authenticate); belle_sip_object_unref(authorization); } static void test_proxy_authentication(void) { const char* l_raw_header = "Proxy-Authenticate: Digest " "algorithm=MD5, realm=\"sip.linphone.org\", opaque=\"1bc7f9097684320\"," " qop=\"auth,auth-int\", nonce=\"cz3h0gAAAAC06TKKAABmTz1V9OcAAAAA\""; char ha1[33]; belle_sip_header_proxy_authenticate_t* proxy_authenticate=belle_sip_header_proxy_authenticate_parse(l_raw_header); belle_sip_header_proxy_authorization_t* proxy_authorization = belle_sip_auth_helper_create_proxy_authorization(proxy_authenticate); belle_sip_header_authorization_set_uri(BELLE_SIP_HEADER_AUTHORIZATION(proxy_authorization),belle_sip_uri_parse("sip:sip.linphone.org")); BC_ASSERT_EQUAL(0,belle_sip_auth_helper_compute_ha1("jehan-mac","sip.linphone.org","toto",ha1), int, "%d"); BC_ASSERT_EQUAL(0,belle_sip_auth_helper_fill_proxy_authorization(proxy_authorization,"REGISTER",ha1), int, "%d"); BC_ASSERT_STRING_EQUAL(belle_sip_header_authorization_get_response(BELLE_SIP_HEADER_AUTHORIZATION(proxy_authorization)) ,"77ebf3de72e41934d806175586086508"); belle_sip_object_unref(proxy_authenticate); belle_sip_object_unref(proxy_authorization); } #define TEMPORARY_CERTIFICATE_DIR "/belle_sip_tester_crt" static void test_generate_and_parse_certificates(void) { belle_sip_certificates_chain_t *certificate, *parsed_certificate; belle_sip_signing_key_t *key, *parsed_key; char *pem_certificate, *pem_parsed_certificate, *pem_key, *pem_parsed_key; int ret = 0; char *belle_sip_certificate_temporary_dir = bc_tester_file(TEMPORARY_CERTIFICATE_DIR); /* create 2 certificates in the temporary certificate directory (TODO : set the directory in a absolute path?? where?)*/ ret = belle_sip_generate_self_signed_certificate(belle_sip_certificate_temporary_dir, "test_certificate1", &certificate, &key); if (ret == BCTBX_ERROR_UNAVAILABLE_FUNCTION) { belle_sip_warning("Test skipped, self signed certificate generation not available."); return; } BC_ASSERT_EQUAL(0, ret, int, "%d"); if (ret == 0) { belle_sip_object_unref(certificate); belle_sip_object_unref(key); } ret = belle_sip_generate_self_signed_certificate(belle_sip_certificate_temporary_dir, "test_certificate2", &certificate, &key); BC_ASSERT_EQUAL(0, ret, int, "%d"); /* parse directory to get the certificate2 */ ret = belle_sip_get_certificate_and_pkey_in_dir(belle_sip_certificate_temporary_dir, "test_certificate2", &parsed_certificate, &parsed_key, BELLE_SIP_CERTIFICATE_RAW_FORMAT_PEM); free(belle_sip_certificate_temporary_dir); BC_ASSERT_EQUAL(0, ret, int, "%d"); /* get pem version of generated and parsed certificate and compare them */ pem_certificate = belle_sip_certificates_chain_get_pem(certificate); pem_parsed_certificate = belle_sip_certificates_chain_get_pem(parsed_certificate); if (BC_ASSERT_PTR_NOT_NULL(pem_certificate) && BC_ASSERT_PTR_NOT_NULL(pem_parsed_certificate)) { BC_ASSERT_STRING_EQUAL(pem_certificate, pem_parsed_certificate); } /* get pem version of generated and parsed key and compare them */ pem_key = belle_sip_signing_key_get_pem(key); pem_parsed_key = belle_sip_signing_key_get_pem(parsed_key); if (BC_ASSERT_PTR_NOT_NULL(pem_key) && BC_ASSERT_PTR_NOT_NULL(pem_parsed_key)) { BC_ASSERT_STRING_EQUAL(pem_key, pem_parsed_key); } belle_sip_free(pem_certificate); belle_sip_free(pem_parsed_certificate); belle_sip_free(pem_key); belle_sip_free(pem_parsed_key); belle_sip_object_unref(certificate); belle_sip_object_unref(parsed_certificate); belle_sip_object_unref(key); belle_sip_object_unref(parsed_key); } const char* belle_sip_tester_fingerprint256_cert = /*for URI:sip:tester@client.example.org*/ "-----BEGIN CERTIFICATE-----\n" "MIIDtTCCAh2gAwIBAgIBATANBgkqhkiG9w0BAQsFADAcMRowGAYDVQQDExF0ZXN0\n" "X2NlcnRpZmljYXRlMTAeFw0wMTAxMDEwMDAwMDBaFw0zMDAxMDEwMDAwMDBaMBwx\n" "GjAYBgNVBAMTEXRlc3RfY2VydGlmaWNhdGUxMIIBojANBgkqhkiG9w0BAQEFAAOC\n" "AY8AMIIBigKCAYEAoI6Dpdyc8ARM9KTIkuagImUgpybuWrKayPfrAeUE/gnyd8bO\n" "Bf7CkGdpHv82c1BdUxE5Z1j19TMR0MHCtFD5z0PWtW3erWQqUdxdFYIUknIi5ObU\n" "AlXgqAIYLCSMaGWzmavdsC95HfHiuPC+YTLwr1vhNC6IWCSKt9N7xek/InY73cBh\n" "pNw/kJOB/AzB9r40uxcye6+6Hp3dAd2YOGOiuKlAFBlAeq/T70VKBvdw/D8QFi5Z\n" "BJ2+xX9jQBshzHi9JdMS6ZhLdtjBHwi37k1l1KyRh+qVTbze5pN7YCRmj8Q4dS0S\n" "3ozV27AXM60kXbX4+PWQG9nuL/PO2NxTx0olIaTkzjM+roxWE6srhAEQ+aXn3tCq\n" "bHND6AN2Yjm/mzQI2ig143gHraLRaHx+uTtRonMeWMvTeUlX/BwUoffjppmWqICd\n" "OiBFNXOpp3hlzZDdoEhwKgIVMu3WbEsOTG7uphkUGZo/VaTVW0zvYAS2JXC/0s/S\n" "85dB5M3Y9l/8v0T7AgMBAAGjAjAAMA0GCSqGSIb3DQEBCwUAA4IBgQBm5N00W7+G\n" "ygF6OUM3143N5B/41vTk5FDZ/iU/UJaPSLBM/aZhA2FjoTswjpFfY8V6IkALrtUH\n" "20FVip3lguMc7md9L9qMRVYj/2H94A2Bg/zx+PlhJNI0bshITzS6pHgM2qKk+KRB\n" "yZaHQTa8DjRCYuAp1roh4NKNDa16WdY4Dk5ncRORqzcxczBJ2LSbq4b78pdEl/iL\n" "nHOoFOSmiQQ2ui7H89bSUxRmVJFiNfPlTeYUKjc753LJCuri30rQVnHE+HMBmE5y\n" "sM6FiGawJxUKAcS0zuKeroHNXLzL0qIGgeLkoPb267se0tCAcJZImiqyK0y1cuHw\n" "o9BZ5t/I6UvTJLE9+p+wG7nR8TdszaZ+bLzSdHWDRPS2Ux4J+Ux3dnIAH/ZcD5CD\n" "/mj4F12yW0ZNukFVkptneS6ab1lQb3PT7tzkuzKud00QNHswZLbORQrXnvuk5LrR\n" "V7PbeVUz1FxaOjFwHXkkvFqrbwRdBc7GVqQZDVV40WVvciGGcBhemqc=\n" "-----END CERTIFICATE-----"; /* fingerprint of certificate generated using openssl x509 -fingerprint -sha256 */ const char* belle_sip_tester_fingerprint256_cert_fingerprint = "SHA-256 A0:98:2D:3E:68:F3:14:8D:ED:50:40:DB:ED:A4:28:BC:1E:1A:6A:05:59:9E:69:3F:02:E2:F8:22:BF:4C:92:14"; static void test_certificate_fingerprint(void) { char *fingerprint; belle_sip_certificates_chain_t *cert; /* check underlying bctoolbox function availability */ if (bctbx_x509_certificate_get_fingerprint(NULL, NULL, 0, 0) == BCTBX_ERROR_UNAVAILABLE_FUNCTION) { belle_sip_warning("Test skipped, certificate fingerprint generation not available."); return; } /* parse certificate defined in belle_sip_register_tester.c */ cert = belle_sip_certificates_chain_parse(belle_sip_tester_client_cert,strlen(belle_sip_tester_client_cert),BELLE_SIP_CERTIFICATE_RAW_FORMAT_PEM); /* generate fingerprint */ fingerprint = belle_sip_certificates_chain_get_fingerprint(cert); BC_ASSERT_PTR_NOT_NULL(fingerprint); if (fingerprint) { BC_ASSERT_STRING_EQUAL(fingerprint, belle_sip_tester_client_cert_fingerprint); } belle_sip_free(fingerprint); belle_sip_object_unref(cert); /* parse certificate defined above, signing algo is sha256 */ cert = belle_sip_certificates_chain_parse(belle_sip_tester_fingerprint256_cert,strlen(belle_sip_tester_fingerprint256_cert),BELLE_SIP_CERTIFICATE_RAW_FORMAT_PEM); /* generate fingerprint */ fingerprint = belle_sip_certificates_chain_get_fingerprint(cert); BC_ASSERT_PTR_NOT_NULL(fingerprint); if (fingerprint) { BC_ASSERT_STRING_EQUAL(fingerprint, belle_sip_tester_fingerprint256_cert_fingerprint); } belle_sip_free(fingerprint); belle_sip_object_unref(cert); } test_t authentication_helper_tests[] = { TEST_NO_TAG("Proxy-Authenticate", test_proxy_authentication), TEST_NO_TAG("WWW-Authenticate", test_authentication), TEST_NO_TAG("WWW-Authenticate-sha", test_authentication_sha256), TEST_NO_TAG("WWW-Authenticate-sha256 RFC7616 patterns", test_authentication_sha256_rfc7616), TEST_NO_TAG("WWW-Authenticate-MD5 RFC7616 patterns", test_authentication_md5_rfc7616), TEST_NO_TAG("WWW-Authenticate (with qop)", test_authentication_qop_auth), TEST_NO_TAG("generate and parse self signed certificates", test_generate_and_parse_certificates), TEST_NO_TAG("generate certificate fingerprint", test_certificate_fingerprint) }; test_suite_t authentication_helper_test_suite = { "Authentication helper", NULL, NULL, belle_sip_tester_before_each, belle_sip_tester_after_each, sizeof(authentication_helper_tests) / sizeof(authentication_helper_tests[0]), authentication_helper_tests}; belle-sip-5.2.0+dfsg/tester/belle_generic_uri_tester.c000066400000000000000000000141611434613136500230200ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "belle-sip/belle-sip.h" #include "belle_sip_tester.h" static void test_basic_uri(void) { belle_generic_uri_t* source_uri = belle_generic_uri_parse("http://www.linphone.org/index.html"); char* source_uri_raw = belle_sip_object_to_string(source_uri); belle_generic_uri_t* first_uri = belle_generic_uri_parse(source_uri_raw); belle_generic_uri_t* uri=BELLE_GENERIC_URI(belle_sip_object_clone(BELLE_SIP_OBJECT(first_uri))); belle_sip_free(source_uri_raw); belle_sip_object_unref(source_uri); belle_sip_object_unref(first_uri); BC_ASSERT_STRING_EQUAL(belle_generic_uri_get_scheme(uri),"http"); BC_ASSERT_STRING_EQUAL(belle_generic_uri_get_host(uri),"www.linphone.org"); BC_ASSERT_STRING_EQUAL(belle_generic_uri_get_path(uri),"/index.html"); belle_sip_object_unref(uri); source_uri = belle_generic_uri_parse("http://www.linphone.org/"); BC_ASSERT_STRING_EQUAL(belle_generic_uri_get_path(source_uri),"/"); belle_sip_object_unref(source_uri); source_uri = belle_generic_uri_parse("http://www.linphone.org/a/b/c"); BC_ASSERT_STRING_EQUAL(belle_generic_uri_get_path(source_uri),"/a/b/c"); BC_ASSERT_STRING_EQUAL("http://www.linphone.org/a/b/c",source_uri_raw = belle_sip_object_to_string(source_uri)); belle_sip_free(source_uri_raw); belle_sip_object_unref(source_uri); } static void test_complex_uri(void) { belle_generic_uri_t* source_uri = belle_generic_uri_parse("ftp://toto:secret@ftp.linphone.fr:1234/url?sa=t&rct=j&url=http%3A%2F%2Ftranslate.google.fr"); char* source_uri_raw = belle_generic_uri_to_string(source_uri); belle_generic_uri_t* first_uri = belle_generic_uri_parse(source_uri_raw); belle_generic_uri_t* uri=BELLE_GENERIC_URI(belle_sip_object_clone(BELLE_SIP_OBJECT(first_uri))); belle_sip_free(source_uri_raw); belle_sip_object_unref(source_uri); belle_sip_object_unref(first_uri); BC_ASSERT_STRING_EQUAL(belle_generic_uri_get_scheme(uri),"ftp"); BC_ASSERT_STRING_EQUAL(belle_generic_uri_get_host(uri),"ftp.linphone.fr"); BC_ASSERT_STRING_EQUAL(belle_generic_uri_get_user(uri),"toto"); BC_ASSERT_STRING_EQUAL(belle_generic_uri_get_user_password(uri),"secret"); BC_ASSERT_STRING_EQUAL(belle_generic_uri_get_host(uri),"ftp.linphone.fr"); BC_ASSERT_STRING_EQUAL(belle_generic_uri_get_path(uri),"/url"); BC_ASSERT_EQUAL(belle_generic_uri_get_port(uri),1234,int,"%d"); BC_ASSERT_STRING_EQUAL(belle_generic_uri_get_query(uri),"sa=t&rct=j&url=http://translate.google.fr"); belle_sip_object_unref(uri); } static void test_file_path(void) { belle_generic_uri_t* source_uri = belle_generic_uri_parse("/index.html"); char* source_uri_raw = belle_sip_object_to_string(source_uri); belle_generic_uri_t* first_uri = belle_generic_uri_parse(source_uri_raw); belle_generic_uri_t* uri=BELLE_GENERIC_URI(belle_sip_object_clone(BELLE_SIP_OBJECT(first_uri))); belle_sip_free(source_uri_raw); belle_sip_object_unref(source_uri); belle_sip_object_unref(first_uri); BC_ASSERT_PTR_NULL(belle_generic_uri_get_scheme(uri)); BC_ASSERT_PTR_NULL(belle_generic_uri_get_host(uri)); BC_ASSERT_STRING_EQUAL(belle_generic_uri_get_path(uri),"/index.html"); belle_sip_object_unref(uri); source_uri = belle_generic_uri_parse("file:///tmp/absolute-file"); BC_ASSERT_PTR_NOT_NULL(source_uri); if (source_uri!=NULL){ BC_ASSERT_STRING_EQUAL(belle_generic_uri_get_scheme(source_uri),"file"); BC_ASSERT_PTR_NULL(belle_generic_uri_get_host(source_uri)); BC_ASSERT_STRING_EQUAL(belle_generic_uri_get_path(source_uri),"/tmp/absolute-file"); belle_sip_object_unref(source_uri); } /*this is INVALID*/ source_uri = belle_generic_uri_parse("file://./relative-file"); BC_ASSERT_PTR_NOT_NULL(source_uri); if (source_uri) belle_sip_object_unref(source_uri); /* PATH segment always start by / */ source_uri = belle_generic_uri_parse("./relative-file"); BC_ASSERT_PTR_NULL(source_uri); if (source_uri!=NULL){ belle_sip_object_unref(source_uri); } } static void test_absolute_uri(void) { belle_generic_uri_t* source_uri = belle_generic_uri_parse("tel:+33123457"); char* source_uri_raw = belle_generic_uri_to_string(source_uri); belle_generic_uri_t* first_uri = belle_generic_uri_parse(source_uri_raw); belle_generic_uri_t* uri=BELLE_GENERIC_URI(belle_sip_object_clone(BELLE_SIP_OBJECT(first_uri))); belle_sip_free(source_uri_raw); belle_sip_object_unref(source_uri); belle_sip_object_unref(first_uri); BC_ASSERT_STRING_EQUAL(belle_generic_uri_get_scheme(uri),"tel"); BC_ASSERT_STRING_EQUAL(belle_generic_uri_get_opaque_part(uri),"+33123457"); belle_sip_object_unref(uri); source_uri = belle_generic_uri_parse("tel:11234567888;phone-context=vzims.com"); source_uri_raw = belle_generic_uri_to_string(source_uri); first_uri = belle_generic_uri_parse(source_uri_raw); uri=BELLE_GENERIC_URI(belle_sip_object_clone(BELLE_SIP_OBJECT(first_uri))); belle_sip_free(source_uri_raw); belle_sip_object_unref(source_uri); belle_sip_object_unref(first_uri); BC_ASSERT_STRING_EQUAL(belle_generic_uri_get_scheme(uri),"tel"); BC_ASSERT_STRING_EQUAL(belle_generic_uri_get_opaque_part(uri),"11234567888;phone-context=vzims.com"); belle_sip_object_unref(uri); } static test_t tests[] = { TEST_NO_TAG("Simple uri", test_basic_uri), TEST_NO_TAG("Complex uri", test_complex_uri), TEST_NO_TAG("File path", test_file_path), TEST_NO_TAG("Absolute uri", test_absolute_uri) }; test_suite_t generic_uri_test_suite = {"Generic uri", NULL, NULL, belle_sip_tester_before_each, belle_sip_tester_after_each, sizeof(tests) / sizeof(tests[0]), tests}; belle-sip-5.2.0+dfsg/tester/belle_http_tester.c000066400000000000000000000356321434613136500215120ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "belle-sip/belle-sip.h" #include "belle_sip_tester.h" #include typedef struct http_counters{ int response_headers_count; int response_count; int io_error_count; int two_hundred; int three_hundred; int four_hundred; }http_counters_t; static int wait_for(belle_sip_stack_t*s1,int* counter,int value,int timeout) { int retry=0; #define SLEEP_TIME 100 while (*counter!=value && retry++ <(timeout/SLEEP_TIME)) { if (s1) belle_sip_stack_sleep(s1,SLEEP_TIME); } if (*counter!=value) return FALSE; else return TRUE; } static void process_response(void *data, const belle_http_response_event_t *event){ http_counters_t *counters=(http_counters_t*)data; counters->response_count++; BC_ASSERT_PTR_NOT_NULL(event->response); if (event->response){ int code=belle_http_response_get_status_code(event->response); belle_sip_body_handler_t *body=belle_sip_message_get_body_handler(BELLE_SIP_MESSAGE(event->response)); if (code>=200 && code <300) counters->two_hundred++; else if (code>=300 && code <400) counters->three_hundred++; else if (code>=400 && code <500) counters->four_hundred++; BC_ASSERT_PTR_NOT_NULL(body); } } static void process_io_error(void *data, const belle_sip_io_error_event_t *event){ http_counters_t *counters=(http_counters_t*)data; counters->io_error_count++; } static void process_auth_requested(void *data, belle_sip_auth_event_t *event){ if (belle_sip_auth_event_get_mode(event)==BELLE_SIP_AUTH_MODE_TLS){ belle_sip_certificates_chain_t* cert = belle_sip_certificates_chain_parse(belle_sip_tester_client_cert,strlen(belle_sip_tester_client_cert),BELLE_SIP_CERTIFICATE_RAW_FORMAT_PEM); belle_sip_signing_key_t* key = belle_sip_signing_key_parse(belle_sip_tester_private_key,strlen(belle_sip_tester_private_key),belle_sip_tester_private_key_passwd); belle_sip_auth_event_set_client_certificates_chain(event,cert); belle_sip_auth_event_set_signing_key(event,key); belle_sip_message("process_auth_requested requested for DN [%s]" ,belle_sip_auth_event_get_distinguished_name(event)); } } static belle_sip_stack_t *stack=NULL; static belle_http_provider_t *prov=NULL; static belle_http_provider_t *prov_https_only=NULL; static int http_before_all(void) { stack=belle_sip_stack_new(NULL); belle_sip_tester_set_dns_host_file(stack); prov=belle_sip_stack_create_http_provider(stack,"0.0.0.0"); prov_https_only=belle_sip_stack_create_http_provider_with_transports(stack,"0.0.0.0",BELLE_SIP_HTTP_TRANSPORT_TLS); // Enable TLS transport only if (belle_sip_tester_get_root_ca_path() != NULL) { belle_tls_crypto_config_t *crypto_config=belle_tls_crypto_config_new(); belle_tls_crypto_config_set_root_ca(crypto_config,belle_sip_tester_get_root_ca_path()); belle_http_provider_set_tls_crypto_config(prov,crypto_config); belle_http_provider_set_tls_crypto_config(prov_https_only,crypto_config); belle_sip_object_unref(crypto_config); } return 0; } static int http_after_all(void) { belle_sip_object_unref(prov); belle_sip_object_unref(prov_https_only); belle_sip_object_unref(stack); return 0; } static int url_supported(const char *url) { if (url && strstr(url,"https://")==url && !belle_sip_stack_tls_available(stack)) { belle_sip_error("No TLS support, test skipped."); return -1; } return 0; } static int one_get_prov(const char *url,http_counters_t* counters, int *counter, belle_http_provider_t *provider){ if (url_supported(url)==-1) { return -1; } else { belle_http_request_listener_callbacks_t cbs={0}; belle_http_request_listener_t *l; belle_generic_uri_t *uri; belle_http_request_t *req; uri=belle_generic_uri_parse(url); req=belle_http_request_create("GET", uri, belle_sip_header_create("User-Agent","belle-sip/"PACKAGE_VERSION), NULL); cbs.process_response=process_response; cbs.process_io_error=process_io_error; cbs.process_auth_requested=process_auth_requested; l=belle_http_request_listener_create_from_callbacks(&cbs,counters); if (belle_http_provider_send_request(provider,req,l) != 0) { belle_sip_object_unref(l); return -1; } wait_for(stack,counter,1,10000); belle_sip_object_unref(l); return 0; } } static int one_get(const char *url,http_counters_t* counters, int *counter){ return one_get_prov(url,counters,counter,prov); } static void one_http_get(void){ http_counters_t counters={0}; if (one_get("http://smtp.linphone.org",&counters,&counters.response_count) == 0) { BC_ASSERT_EQUAL(counters.response_count,1,int,"%d"); BC_ASSERT_EQUAL(counters.io_error_count,0,int,"%d"); BC_ASSERT_EQUAL(counters.two_hundred,1,int,"%d"); } } static void http_get_empty_body(void){ http_counters_t counters={0}; if (one_get("http://smtp.linphone.org/marie_invalid",&counters,&counters.response_count) == 0) { BC_ASSERT_EQUAL(counters.response_count,1,int,"%d"); BC_ASSERT_EQUAL(counters.io_error_count,0,int,"%d"); BC_ASSERT_EQUAL(counters.two_hundred,1,int,"%d"); } } static void http_get_io_error(void){ http_counters_t counters={0}; if (one_get("http://blablabla.fail",&counters,&counters.io_error_count) == 0) { BC_ASSERT_EQUAL(counters.response_count,0,int,"%d"); BC_ASSERT_EQUAL(counters.io_error_count,1,int,"%d"); } } static void one_https_get(void){ http_counters_t counters={0}; if (one_get("https://smtp.linphone.org",&counters,&counters.response_count) == 0) { BC_ASSERT_EQUAL(counters.response_count, 1, int, "%d"); BC_ASSERT_EQUAL(counters.io_error_count, 0, int, "%d"); BC_ASSERT_EQUAL(counters.two_hundred,1,int,"%d"); } } static void one_https_only_get(void){ http_counters_t counters={0}; // first perform one get on https using the https only provider, it shall work if (one_get_prov("https://smtp.linphone.org",&counters,&counters.response_count,prov_https_only) == 0) { BC_ASSERT_EQUAL(counters.response_count, 1, int, "%d"); BC_ASSERT_EQUAL(counters.io_error_count, 0, int, "%d"); BC_ASSERT_EQUAL(counters.two_hundred,1,int,"%d"); } // then try to perform a http request using the same provider, it shall fail BC_ASSERT_EQUAL(one_get_prov("http://smtp.linphone.org",&counters,&counters.response_count,prov_https_only), -1, int, "%d"); } static void one_https_get_with_maddr(void){ http_counters_t counters={0}; if (one_get("https://blabla.linphone.org;maddr=94.23.19.176/",&counters,&counters.response_count) == 0) { BC_ASSERT_EQUAL(counters.response_count, 1, int, "%d"); BC_ASSERT_EQUAL(counters.io_error_count, 0, int, "%d"); BC_ASSERT_EQUAL(counters.four_hundred,1,int,"%d"); } } static void https_get_long_body(void){ http_counters_t counters={0}; if (one_get("https://smtp.linphone.org/linphone.html",&counters, &counters.response_count) == 0) { BC_ASSERT_EQUAL(counters.response_count, 1, int, "%d"); BC_ASSERT_EQUAL(counters.io_error_count, 0, int, "%d"); BC_ASSERT_EQUAL(counters.two_hundred,1,int,"%d"); } } static void https_digest_get(void){ http_counters_t counters={0}; if (one_get("https://pauline:pouet@smtp.linphone.org/restricted",&counters,&counters.response_count) == 0) { BC_ASSERT_EQUAL(counters.response_count, 1, int, "%d"); BC_ASSERT_EQUAL(counters.io_error_count, 0, int, "%d"); BC_ASSERT_EQUAL(counters.three_hundred,1,int,"%d"); } } #if 0 static void https_client_cert_connection(void){ belle_tls_verify_policy_t *policy=belle_tls_verify_policy_new(); http_counters_t counters={0}; belle_tls_verify_policy_set_exceptions(policy,BELLE_TLS_VERIFY_ANY_REASON);/*ignore the server verification because we don't have a true certificate*/ belle_http_provider_set_tls_verify_policy(prov,policy); if (one_get("https://sip2.linphone.org:5063",&counters) == 0) { BC_ASSERT_EQUAL(counters.two_hundred,1,int,"%d"); } belle_tls_verify_policy_set_exceptions(policy,0); belle_sip_object_unref(policy); } #endif static void on_progress(belle_sip_body_handler_t *bh, belle_sip_message_t *msg, void *data, size_t offset, size_t total){ if (total!=0){ double frac=100.0*(double)offset/(double)total; belle_sip_message("transfer %g %% done",frac); }else belle_sip_message("%i bytes transfered",(int)offset); } #define MULTIPART_BEGIN "somehash.jpg\r\n" \ "--" MULTIPART_BOUNDARY "\r\n" \ "Content-Disposition: form-data; name=\"userfile\"; filename=\"belle_http_sip_tester.jpg\"\r\n" \ "Content-Type: application/octet-stream\r\n\r\n" #define MULTIPART_END "\r\n--" MULTIPART_BOUNDARY "--\r\n" const char *multipart_boudary=MULTIPART_BOUNDARY; const int image_size=250000; static int on_send_body(belle_sip_user_body_handler_t *bh, belle_sip_message_t *msg, void *data, size_t offset, uint8_t *buffer, size_t *size){ size_t end_of_img=sizeof(MULTIPART_BEGIN)+image_size; if (offset==0){ size_t partlen=sizeof(MULTIPART_BEGIN); BC_ASSERT_LOWER_STRICT((unsigned int)partlen,(unsigned int)*size,unsigned int,"%u"); memcpy(buffer,MULTIPART_BEGIN,partlen); *size=partlen; }else if (offsetresponse_headers_count++; BC_ASSERT_PTR_NOT_NULL(event->response); if (event->response){ /*we are receiving a response, set a specific body handler to acquire the response. * if not done, belle-sip will create a memory body handler, the default*/ FILE *file=belle_sip_object_data_get(BELLE_SIP_OBJECT(event->request),"file"); belle_sip_message_set_body_handler( (belle_sip_message_t*)event->response, (belle_sip_body_handler_t*)belle_sip_user_body_handler_new(0,on_progress, NULL,on_recv_body,NULL, NULL,file) ); } } static void http_get_long_user_body(void){ belle_http_request_listener_callbacks_t cbs={0}; belle_http_request_listener_t *l; belle_generic_uri_t *uri; belle_http_request_t *req; http_counters_t counters={0}; const char *url="http://download-mirror.savannah.gnu.org/releases/linphone/belle-sip/belle-sip-1.3.0.tar.gz"; belle_sip_body_handler_t *bh; belle_http_response_t *resp; FILE *outfile=fopen("download.tar.gz","w"); uri=belle_generic_uri_parse(url); req=belle_http_request_create("GET", uri, belle_sip_header_create("User-Agent","belle-sip/" PACKAGE_VERSION), NULL); cbs.process_response_headers=process_response_headers; cbs.process_response=process_response; cbs.process_io_error=process_io_error; cbs.process_auth_requested=process_auth_requested; l=belle_http_request_listener_create_from_callbacks(&cbs,&counters); belle_sip_object_ref(req); belle_sip_object_data_set(BELLE_SIP_OBJECT(req),"file",outfile,NULL); belle_http_provider_send_request(prov,req,l); BC_ASSERT_TRUE(wait_for(stack,&counters.two_hundred,1,20000)); BC_ASSERT_EQUAL(counters.response_headers_count,1,int,"%d"); resp=belle_http_request_get_response(req); BC_ASSERT_PTR_NOT_NULL(resp); if (resp){ bh=belle_sip_message_get_body_handler((belle_sip_message_t*)resp); BC_ASSERT_GREATER_STRICT((unsigned int)belle_sip_body_handler_get_size(bh),0,unsigned int,"%u"); } belle_sip_object_unref(req); belle_sip_object_unref(l); if (outfile) fclose(outfile); } extern const char *test_http_proxy_addr; extern int test_http_proxy_port; static void one_https_get_with_proxy(void){ http_counters_t counters={0}; belle_sip_stack_set_http_proxy_host(stack, test_http_proxy_addr); belle_sip_stack_set_http_proxy_port(stack, test_http_proxy_port); if (one_get("https://smtp.linphone.org",&counters,&counters.response_count) == 0) { BC_ASSERT_EQUAL(counters.response_count, 1, int, "%d"); BC_ASSERT_EQUAL(counters.io_error_count, 0, int, "%d"); BC_ASSERT_EQUAL(counters.two_hundred,1,int,"%d"); } belle_sip_stack_set_http_proxy_host(stack, NULL); belle_sip_stack_set_http_proxy_port(stack, 0); } test_t http_tests[] = { TEST_NO_TAG("One http GET", one_http_get), TEST_NO_TAG("http GET of empty body", http_get_empty_body), TEST_NO_TAG("One https GET", one_https_get), TEST_NO_TAG("One https GET with maddr", one_https_get_with_maddr), TEST_NO_TAG("One https GET with http proxy", one_https_get_with_proxy), TEST_NO_TAG("http request with io error", http_get_io_error), TEST_NO_TAG("https GET with long body", https_get_long_body), TEST_NO_TAG("https digest GET", https_digest_get),/*, FIXME, need a server for testing TEST_NO_TAG("https with client certificate", https_client_cert_connection),*/ TEST_NO_TAG("https POST with long body", https_post_long_body), TEST_NO_TAG("http GET with long user body", http_get_long_user_body), TEST_NO_TAG("https only", one_https_only_get), }; test_suite_t http_test_suite = {"HTTP stack", http_before_all, http_after_all, NULL, NULL, sizeof(http_tests) / sizeof(http_tests[0]), http_tests}; belle-sip-5.2.0+dfsg/tester/belle_sdp_tester.c000066400000000000000000001542641434613136500213240ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "belle-sip/belle-sip.h" #include "belle_sip_tester.h" #include "port.h" //v=0 //o=jehan-mac 1239 1239 IN IP4 192.168.0.19 //s=Talk //c=IN IP4 192.168.0.18 //t=0 0 //m=audio 7078 RTP/AVP 111 110 3 0 8 101 //a=rtpmap:111 speex/16000 //a=fmtp:111 vbr=on //a=rtpmap:110 speex/8000 //a=fmtp:110 vbr=on //a=rtpmap:101 telephone-event/8000 //a=fmtp:101 0-11 //m=video 8078 RTP/AVP 99 97 98 //a=rtpmap:99 MP4V-ES/90000 //a=fmtp:99 profile-level-id=3 //a=rtpmap:97 theora/90000 //a=rtpmap:98 H263-1998/90000 //a=fmtp:98 CIF=1;QCIF=1 static belle_sdp_attribute_t* attribute_parse_marshall_parse_clone(const char* raw_attribute) { belle_sdp_attribute_t* lTmp; belle_sdp_attribute_t* lAttribute = belle_sdp_attribute_parse(raw_attribute); char* l_raw_attribute = belle_sip_object_to_string(BELLE_SIP_OBJECT(lAttribute)); belle_sip_object_unref(BELLE_SIP_OBJECT(lAttribute)); lTmp = belle_sdp_attribute_parse(l_raw_attribute); belle_sip_free(l_raw_attribute); lAttribute = BELLE_SDP_ATTRIBUTE(belle_sip_object_clone(BELLE_SIP_OBJECT(lTmp))); belle_sip_object_unref(BELLE_SIP_OBJECT(lTmp)); return lAttribute; } static void test_attribute(void) { belle_sdp_attribute_t* lAttribute = attribute_parse_marshall_parse_clone("a=rtpmap:101 telephone-event/8000"); BC_ASSERT_STRING_EQUAL(belle_sdp_attribute_get_name(lAttribute), "rtpmap"); BC_ASSERT_STRING_EQUAL(belle_sdp_attribute_get_value(lAttribute), "101 telephone-event/8000"); BC_ASSERT_TRUE(belle_sdp_attribute_has_value(lAttribute)); belle_sip_object_unref(BELLE_SIP_OBJECT(lAttribute)); } static void test_attribute_2(void) { belle_sdp_attribute_t* lAttribute = attribute_parse_marshall_parse_clone("a=ice-pwd:31ec21eb38b2ec6d36e8dc7b"); BC_ASSERT_STRING_EQUAL(belle_sdp_attribute_get_name(lAttribute), "ice-pwd"); BC_ASSERT_STRING_EQUAL(belle_sdp_attribute_get_value(lAttribute), "31ec21eb38b2ec6d36e8dc7b"); BC_ASSERT_TRUE(belle_sdp_attribute_has_value(lAttribute)); belle_sip_object_unref(BELLE_SIP_OBJECT(lAttribute)); lAttribute = attribute_parse_marshall_parse_clone("a=alt:1 1 : e2br+9PL Eu1qGlQ9 10.211.55.3 8988"); BC_ASSERT_STRING_EQUAL(belle_sdp_attribute_get_name(lAttribute), "alt"); BC_ASSERT_STRING_EQUAL(belle_sdp_attribute_get_value(lAttribute), "1 1 : e2br+9PL Eu1qGlQ9 10.211.55.3 8988"); BC_ASSERT_TRUE(belle_sdp_attribute_has_value(lAttribute)); belle_sip_object_unref(BELLE_SIP_OBJECT(lAttribute)); } static void test_label_attribute(void) { const char* line = "a=label:2"; belle_sdp_label_attribute_t* lAttribute; lAttribute = belle_sdp_label_attribute_parse(line); BC_ASSERT_STRING_EQUAL(belle_sdp_attribute_get_name(BELLE_SDP_ATTRIBUTE(lAttribute)), "label"); char * obj_string = belle_sip_object_to_string(BELLE_SIP_OBJECT(lAttribute)); BC_ASSERT_STRING_EQUAL(obj_string, line); belle_sip_free(obj_string); belle_sdp_label_attribute_t* clone = BELLE_SDP_LABEL_ATTRIBUTE( belle_sip_object_clone(BELLE_SIP_OBJECT(lAttribute)) ); char * clone_obj_string = belle_sip_object_to_string(clone); BC_ASSERT_STRING_EQUAL(clone_obj_string, line); belle_sip_free(clone_obj_string); belle_sip_object_unref(BELLE_SIP_OBJECT(clone)); BC_ASSERT_STRING_EQUAL(belle_sdp_label_attribute_get_pointer(lAttribute), "2"); belle_sip_object_unref(BELLE_SIP_OBJECT(lAttribute)); } static void test_content_attribute(void) { belle_sdp_content_attribute_t* lAttribute; belle_sip_list_t* list; int i = 0; const char* fmt[] = {"slides","speaker","sl","main"}; const char* line = "a=content:slides,speaker,sl,main"; lAttribute = belle_sdp_content_attribute_parse(line); char * obj_string = belle_sip_object_to_string(BELLE_SIP_OBJECT(lAttribute)); BC_ASSERT_STRING_EQUAL(obj_string, line); belle_sip_free(obj_string); belle_sdp_content_attribute_t* clone = BELLE_SDP_CONTENT_ATTRIBUTE( belle_sip_object_clone(BELLE_SIP_OBJECT(lAttribute)) ); char * clone_obj_string = belle_sip_object_to_string(clone); BC_ASSERT_STRING_EQUAL(clone_obj_string, line); belle_sip_free(clone_obj_string); belle_sip_object_unref(BELLE_SIP_OBJECT(clone)); BC_ASSERT_STRING_EQUAL(belle_sdp_attribute_get_name(BELLE_SDP_ATTRIBUTE(lAttribute)), "content"); list = belle_sdp_content_attribute_get_media_tags(lAttribute); BC_ASSERT_PTR_NOT_NULL(list); for(; list!=NULL; list=list->next){ BC_ASSERT_STRING_EQUAL(list->data, fmt[i++]); } belle_sip_object_unref(BELLE_SIP_OBJECT(lAttribute)); } static void test_csup_attribute(void) { belle_sdp_csup_attribute_t* lAttribute; belle_sip_list_t* list; int i = 0; const char* fmt[] = {"cap-v0","foo","bar"}; const char* line = "a=csup:cap-v0,foo,bar"; lAttribute = belle_sdp_csup_attribute_parse(line); char * obj_string = belle_sip_object_to_string(BELLE_SIP_OBJECT(lAttribute)); BC_ASSERT_STRING_EQUAL(obj_string, line); belle_sip_free(obj_string); belle_sdp_csup_attribute_t* clone = BELLE_SDP_CSUP_ATTRIBUTE( belle_sip_object_clone(BELLE_SIP_OBJECT(lAttribute)) ); char * clone_obj_string = belle_sip_object_to_string(clone); BC_ASSERT_STRING_EQUAL(clone_obj_string, line); belle_sip_free(clone_obj_string); belle_sip_object_unref(BELLE_SIP_OBJECT(clone)); BC_ASSERT_STRING_EQUAL(belle_sdp_attribute_get_name(BELLE_SDP_ATTRIBUTE(lAttribute)), "csup"); list = belle_sdp_csup_attribute_get_option_tags(lAttribute); BC_ASSERT_PTR_NOT_NULL(list); for(; list!=NULL; list=list->next){ BC_ASSERT_STRING_EQUAL(list->data, fmt[i++]); } belle_sip_object_unref(BELLE_SIP_OBJECT(lAttribute)); } static void test_creq_attribute(void) { belle_sdp_creq_attribute_t* lAttribute; belle_sip_list_t* list; int i = 0; const char* fmt[] = {"cap-v0","foo","bar"}; const char* line = "a=creq:cap-v0,foo,bar"; lAttribute = belle_sdp_creq_attribute_parse(line); char * obj_string = belle_sip_object_to_string(BELLE_SIP_OBJECT(lAttribute)); BC_ASSERT_STRING_EQUAL(obj_string, line); belle_sip_free(obj_string); belle_sdp_creq_attribute_t* clone = BELLE_SDP_CREQ_ATTRIBUTE( belle_sip_object_clone(BELLE_SIP_OBJECT(lAttribute)) ); char * clone_obj_string = belle_sip_object_to_string(clone); BC_ASSERT_STRING_EQUAL(clone_obj_string, line); belle_sip_free(clone_obj_string); belle_sip_object_unref(BELLE_SIP_OBJECT(clone)); BC_ASSERT_STRING_EQUAL(belle_sdp_attribute_get_name(BELLE_SDP_ATTRIBUTE(lAttribute)), "creq"); list = belle_sdp_creq_attribute_get_option_tags(lAttribute); BC_ASSERT_PTR_NOT_NULL(list); for(; list!=NULL; list=list->next){ BC_ASSERT_STRING_EQUAL(list->data, fmt[i++]); } belle_sip_object_unref(BELLE_SIP_OBJECT(lAttribute)); } static void test_tcap_attribute(void) { belle_sdp_tcap_attribute_t* lAttribute; belle_sip_list_t* list; int i = 0; const char* protos[] = {"RTP/SAVP","RTP/SAVPF"}; const char* line = "a=tcap:5 RTP/SAVP RTP/SAVPF"; lAttribute = belle_sdp_tcap_attribute_parse(line); char * obj_string = belle_sip_object_to_string(BELLE_SIP_OBJECT(lAttribute)); BC_ASSERT_STRING_EQUAL(obj_string, line); belle_sip_free(obj_string); belle_sdp_tcap_attribute_t* clone = BELLE_SDP_TCAP_ATTRIBUTE( belle_sip_object_clone(BELLE_SIP_OBJECT(lAttribute)) ); char * clone_obj_string = belle_sip_object_to_string(clone); BC_ASSERT_STRING_EQUAL(clone_obj_string, line); belle_sip_free(clone_obj_string); belle_sip_object_unref(BELLE_SIP_OBJECT(clone)); BC_ASSERT_STRING_EQUAL(belle_sdp_attribute_get_name(BELLE_SDP_ATTRIBUTE(lAttribute)), "tcap"); BC_ASSERT_EQUAL(belle_sdp_tcap_attribute_get_id(lAttribute), 5, int, "%d"); list = belle_sdp_tcap_attribute_get_protos(lAttribute); BC_ASSERT_PTR_NOT_NULL(list); for(; list!=NULL; list=list->next){ BC_ASSERT_STRING_EQUAL(list->data, protos[i++]); } belle_sip_object_unref(BELLE_SIP_OBJECT(lAttribute)); } static void test_acap_attribute_base(const char* line, int id, const char * name, const char * value) { belle_sdp_acap_attribute_t* lAttribute; lAttribute = belle_sdp_acap_attribute_parse(line); BC_ASSERT_STRING_EQUAL(belle_sdp_attribute_get_name(BELLE_SDP_ATTRIBUTE(lAttribute)), "acap"); char * obj_string = belle_sip_object_to_string(BELLE_SIP_OBJECT(lAttribute)); BC_ASSERT_STRING_EQUAL(obj_string, line); belle_sip_free(obj_string); belle_sdp_acap_attribute_t* clone = BELLE_SDP_ACAP_ATTRIBUTE( belle_sip_object_clone(BELLE_SIP_OBJECT(lAttribute)) ); char * clone_obj_string = belle_sip_object_to_string(clone); BC_ASSERT_STRING_EQUAL(clone_obj_string, line); belle_sip_free(clone_obj_string); belle_sip_object_unref(BELLE_SIP_OBJECT(clone)); BC_ASSERT_EQUAL(belle_sdp_acap_attribute_get_id(lAttribute), id, int, "%d"); BC_ASSERT_STRING_EQUAL(belle_sdp_acap_attribute_get_name(lAttribute), name); BC_ASSERT_STRING_EQUAL(belle_sdp_acap_attribute_get_value(lAttribute), value); belle_sip_object_unref(BELLE_SIP_OBJECT(lAttribute)); } static void test_acap_attribute(void) { const char* line = "a=acap:3 key-mgmt:mikey AQAFgM"; test_acap_attribute_base(line, 3, "key-mgmt", "mikey AQAFgM"); } static void test_simple_acap_attribute(void) { const char* line = "a=acap:20 ptime:30"; test_acap_attribute_base(line, 20, "ptime", "30"); } static void test_long_acap_attribute(void) { const char* line = "a=acap:10021 crypto:1 AES_CM_256_HMAC_SHA1_80 inline:WVNfX19zZW1jdGwgKCkgewkyMjA7fQp9CnVubGVz|2^20|1:4"; test_acap_attribute_base(line, 10021, "crypto", "1 AES_CM_256_HMAC_SHA1_80 inline:WVNfX19zZW1jdGwgKCkgewkyMjA7fQp9CnVubGVz|2^20|1:4"); } static void test_acfg_attribute(void) { belle_sdp_acfg_attribute_t* lAttribute; belle_sip_list_t* list; int i = 0; const char* line = "a=acfg:1 t=3 a=[2]"; const char* configs[] = {"t=3","a=[2]"}; lAttribute = belle_sdp_acfg_attribute_parse(line); BC_ASSERT_STRING_EQUAL(belle_sdp_attribute_get_name(BELLE_SDP_ATTRIBUTE(lAttribute)), "acfg"); char * obj_string = belle_sip_object_to_string(BELLE_SIP_OBJECT(lAttribute)); BC_ASSERT_STRING_EQUAL(obj_string, line); belle_sip_free(obj_string); belle_sdp_acfg_attribute_t* clone = BELLE_SDP_ACFG_ATTRIBUTE( belle_sip_object_clone(BELLE_SIP_OBJECT(lAttribute)) ); char * clone_obj_string = belle_sip_object_to_string(clone); BC_ASSERT_STRING_EQUAL(clone_obj_string, line); belle_sip_free(clone_obj_string); belle_sip_object_unref(BELLE_SIP_OBJECT(clone)); BC_ASSERT_EQUAL(belle_sdp_acfg_attribute_get_id(lAttribute), 1, int, "%d"); list = belle_sdp_acfg_attribute_get_configs(lAttribute); BC_ASSERT_PTR_NOT_NULL(list); for(; list!=NULL; list=list->next){ BC_ASSERT_STRING_EQUAL(list->data, configs[i++]); } belle_sip_object_unref(BELLE_SIP_OBJECT(lAttribute)); } static void test_pcfg_attribute(void) { belle_sdp_pcfg_attribute_t* lAttribute; belle_sip_list_t* list; int i = 0; const char* line = "a=pcfg:1 a=-m:1,2,[3,4]|1,7,[5] a=[2]"; const char* configs[] = {"a=-m:1,2,[3,4]|1,7,[5]","a=[2]"}; lAttribute = belle_sdp_pcfg_attribute_parse(line); BC_ASSERT_STRING_EQUAL(belle_sdp_attribute_get_name(BELLE_SDP_ATTRIBUTE(lAttribute)), "pcfg"); char * obj_string = belle_sip_object_to_string(BELLE_SIP_OBJECT(lAttribute)); BC_ASSERT_STRING_EQUAL(obj_string, line); belle_sip_free(obj_string); belle_sdp_pcfg_attribute_t* clone = BELLE_SDP_PCFG_ATTRIBUTE( belle_sip_object_clone(BELLE_SIP_OBJECT(lAttribute)) ); char * clone_obj_string = belle_sip_object_to_string(clone); BC_ASSERT_STRING_EQUAL(clone_obj_string, line); belle_sip_free(clone_obj_string); belle_sip_object_unref(BELLE_SIP_OBJECT(clone)); BC_ASSERT_EQUAL(belle_sdp_pcfg_attribute_get_id(lAttribute), 1, int, "%d"); list = belle_sdp_pcfg_attribute_get_configs(lAttribute); BC_ASSERT_PTR_NOT_NULL(list); for(; list!=NULL; list=list->next){ BC_ASSERT_STRING_EQUAL(list->data, configs[i++]); } belle_sip_object_unref(BELLE_SIP_OBJECT(lAttribute)); } static void test_rtcp_fb_attribute(void) { belle_sdp_rtcp_fb_attribute_t* lAttribute; lAttribute = belle_sdp_rtcp_fb_attribute_parse("a=rtcp-fb:* ack"); BC_ASSERT_STRING_EQUAL(belle_sdp_attribute_get_name(BELLE_SDP_ATTRIBUTE(lAttribute)), "rtcp-fb"); BC_ASSERT_EQUAL(belle_sdp_rtcp_fb_attribute_get_id(lAttribute), -1, int, "%d"); BC_ASSERT_EQUAL(belle_sdp_rtcp_fb_attribute_get_type(lAttribute), BELLE_SDP_RTCP_FB_ACK, int, "%d"); BC_ASSERT_EQUAL(belle_sdp_rtcp_fb_attribute_get_param(lAttribute), BELLE_SDP_RTCP_FB_NONE, int, "%d"); belle_sip_object_unref(BELLE_SIP_OBJECT(lAttribute)); lAttribute = belle_sdp_rtcp_fb_attribute_parse("a=rtcp-fb:98 nack rpsi"); BC_ASSERT_STRING_EQUAL(belle_sdp_attribute_get_name(BELLE_SDP_ATTRIBUTE(lAttribute)), "rtcp-fb"); BC_ASSERT_EQUAL(belle_sdp_rtcp_fb_attribute_get_id(lAttribute), 98, int, "%d"); BC_ASSERT_EQUAL(belle_sdp_rtcp_fb_attribute_get_type(lAttribute), BELLE_SDP_RTCP_FB_NACK, int, "%d"); BC_ASSERT_EQUAL(belle_sdp_rtcp_fb_attribute_get_param(lAttribute), BELLE_SDP_RTCP_FB_RPSI, int, "%d"); belle_sip_object_unref(BELLE_SIP_OBJECT(lAttribute)); lAttribute = belle_sdp_rtcp_fb_attribute_parse("a=rtcp-fb:* trr-int 3"); BC_ASSERT_STRING_EQUAL(belle_sdp_attribute_get_name(BELLE_SDP_ATTRIBUTE(lAttribute)), "rtcp-fb"); BC_ASSERT_EQUAL(belle_sdp_rtcp_fb_attribute_get_id(lAttribute), -1, int, "%d"); BC_ASSERT_EQUAL(belle_sdp_rtcp_fb_attribute_get_type(lAttribute), BELLE_SDP_RTCP_FB_TRR_INT, int, "%d"); BC_ASSERT_EQUAL(belle_sdp_rtcp_fb_attribute_get_trr_int(lAttribute), 3, int, "%d"); belle_sip_object_unref(BELLE_SIP_OBJECT(lAttribute)); lAttribute = belle_sdp_rtcp_fb_attribute_parse("a=rtcp-fb:103 ccm fir"); BC_ASSERT_STRING_EQUAL(belle_sdp_attribute_get_name(BELLE_SDP_ATTRIBUTE(lAttribute)), "rtcp-fb"); BC_ASSERT_EQUAL(belle_sdp_rtcp_fb_attribute_get_id(lAttribute), 103, int, "%d"); BC_ASSERT_EQUAL(belle_sdp_rtcp_fb_attribute_get_type(lAttribute), BELLE_SDP_RTCP_FB_CCM, int, "%d"); BC_ASSERT_EQUAL(belle_sdp_rtcp_fb_attribute_get_param(lAttribute), BELLE_SDP_RTCP_FB_FIR, int, "%d"); belle_sip_object_unref(BELLE_SIP_OBJECT(lAttribute)); lAttribute = belle_sdp_rtcp_fb_attribute_parse("a=rtcp-fb:* ccm tmmbr smaxpr=120"); BC_ASSERT_STRING_EQUAL(belle_sdp_attribute_get_name(BELLE_SDP_ATTRIBUTE(lAttribute)), "rtcp-fb"); BC_ASSERT_EQUAL(belle_sdp_rtcp_fb_attribute_get_id(lAttribute), -1, int, "%d"); BC_ASSERT_EQUAL(belle_sdp_rtcp_fb_attribute_get_type(lAttribute), BELLE_SDP_RTCP_FB_CCM, int, "%d"); BC_ASSERT_EQUAL(belle_sdp_rtcp_fb_attribute_get_param(lAttribute), BELLE_SDP_RTCP_FB_TMMBR, int, "%d"); belle_sip_object_unref(BELLE_SIP_OBJECT(lAttribute)); } static void test_rtcp_xr_attribute(void) { belle_sdp_rtcp_xr_attribute_t* lAttribute; lAttribute = belle_sdp_rtcp_xr_attribute_parse("a=rtcp-xr"); BC_ASSERT_STRING_EQUAL(belle_sdp_attribute_get_name(BELLE_SDP_ATTRIBUTE(lAttribute)), "rtcp-xr"); BC_ASSERT_FALSE(belle_sdp_rtcp_xr_attribute_has_stat_summary(lAttribute)); BC_ASSERT_FALSE(belle_sdp_rtcp_xr_attribute_has_voip_metrics(lAttribute)); belle_sip_object_unref(BELLE_SIP_OBJECT(lAttribute)); lAttribute = belle_sdp_rtcp_xr_attribute_parse("a=rtcp-xr:rcvr-rtt=all:10"); BC_ASSERT_STRING_EQUAL(belle_sdp_attribute_get_name(BELLE_SDP_ATTRIBUTE(lAttribute)), "rtcp-xr"); BC_ASSERT_STRING_EQUAL(belle_sdp_rtcp_xr_attribute_get_rcvr_rtt_mode(lAttribute), "all"); BC_ASSERT_EQUAL(belle_sdp_rtcp_xr_attribute_get_rcvr_rtt_max_size(lAttribute), 10, int, "%d"); belle_sip_object_unref(BELLE_SIP_OBJECT(lAttribute)); lAttribute = belle_sdp_rtcp_xr_attribute_parse("a=rtcp-xr:stat-summary"); BC_ASSERT_STRING_EQUAL(belle_sdp_attribute_get_name(BELLE_SDP_ATTRIBUTE(lAttribute)), "rtcp-xr"); BC_ASSERT_PTR_NULL(belle_sdp_rtcp_xr_attribute_get_rcvr_rtt_mode(lAttribute)); BC_ASSERT_TRUE(belle_sdp_rtcp_xr_attribute_has_stat_summary(lAttribute)); BC_ASSERT_FALSE(belle_sdp_rtcp_xr_attribute_has_voip_metrics(lAttribute)); belle_sip_object_unref(BELLE_SIP_OBJECT(lAttribute)); lAttribute = belle_sdp_rtcp_xr_attribute_parse("a=rtcp-xr:stat-summary=loss,jitt"); BC_ASSERT_STRING_EQUAL(belle_sdp_attribute_get_name(BELLE_SDP_ATTRIBUTE(lAttribute)), "rtcp-xr"); BC_ASSERT_TRUE(belle_sdp_rtcp_xr_attribute_has_stat_summary(lAttribute)); BC_ASSERT_PTR_NOT_NULL(belle_sip_list_find_custom(belle_sdp_rtcp_xr_attribute_get_stat_summary_flags(lAttribute), (belle_sip_compare_func)strcasecmp, "loss")); BC_ASSERT_PTR_NOT_NULL(belle_sip_list_find_custom(belle_sdp_rtcp_xr_attribute_get_stat_summary_flags(lAttribute), (belle_sip_compare_func)strcasecmp, "jitt")); BC_ASSERT_PTR_NULL(belle_sip_list_find_custom(belle_sdp_rtcp_xr_attribute_get_stat_summary_flags(lAttribute), (belle_sip_compare_func)strcasecmp, "HL")); belle_sip_object_unref(BELLE_SIP_OBJECT(lAttribute)); lAttribute = belle_sdp_rtcp_xr_attribute_parse("a=rtcp-xr:voip-metrics"); BC_ASSERT_STRING_EQUAL(belle_sdp_attribute_get_name(BELLE_SDP_ATTRIBUTE(lAttribute)), "rtcp-xr"); BC_ASSERT_FALSE(belle_sdp_rtcp_xr_attribute_has_stat_summary(lAttribute)); BC_ASSERT_TRUE(belle_sdp_rtcp_xr_attribute_has_voip_metrics(lAttribute)); belle_sip_object_unref(BELLE_SIP_OBJECT(lAttribute)); lAttribute = belle_sdp_rtcp_xr_attribute_parse("a=rtcp-xr:rcvr-rtt=sender stat-summary=loss,dup,jitt,TTL voip-metrics"); BC_ASSERT_STRING_EQUAL(belle_sdp_attribute_get_name(BELLE_SDP_ATTRIBUTE(lAttribute)), "rtcp-xr"); BC_ASSERT_STRING_EQUAL(belle_sdp_rtcp_xr_attribute_get_rcvr_rtt_mode(lAttribute), "sender"); BC_ASSERT_TRUE(belle_sdp_rtcp_xr_attribute_has_stat_summary(lAttribute)); BC_ASSERT_PTR_NOT_NULL(belle_sip_list_find_custom(belle_sdp_rtcp_xr_attribute_get_stat_summary_flags(lAttribute), (belle_sip_compare_func)strcasecmp, "loss")); BC_ASSERT_PTR_NOT_NULL(belle_sip_list_find_custom(belle_sdp_rtcp_xr_attribute_get_stat_summary_flags(lAttribute), (belle_sip_compare_func)strcasecmp, "dup")); BC_ASSERT_PTR_NOT_NULL(belle_sip_list_find_custom(belle_sdp_rtcp_xr_attribute_get_stat_summary_flags(lAttribute), (belle_sip_compare_func)strcasecmp, "jitt")); BC_ASSERT_PTR_NOT_NULL(belle_sip_list_find_custom(belle_sdp_rtcp_xr_attribute_get_stat_summary_flags(lAttribute), (belle_sip_compare_func)strcasecmp, "TTL")); BC_ASSERT_TRUE(belle_sdp_rtcp_xr_attribute_has_voip_metrics(lAttribute)); belle_sip_object_unref(BELLE_SIP_OBJECT(lAttribute)); } static void test_bandwidth(void) { belle_sdp_bandwidth_t* lTmp; belle_sdp_bandwidth_t* l_bandwidth = belle_sdp_bandwidth_parse("b=AS:380"); char* l_raw_bandwidth = belle_sip_object_to_string(BELLE_SIP_OBJECT(l_bandwidth)); belle_sip_object_unref(BELLE_SIP_OBJECT(l_bandwidth)); lTmp = belle_sdp_bandwidth_parse(l_raw_bandwidth); l_bandwidth = BELLE_SDP_BANDWIDTH(belle_sip_object_clone(BELLE_SIP_OBJECT(lTmp))); belle_sip_object_unref(BELLE_SIP_OBJECT(lTmp)); BC_ASSERT_STRING_EQUAL(belle_sdp_bandwidth_get_type(l_bandwidth), "AS"); BC_ASSERT_EQUAL(belle_sdp_bandwidth_get_value(l_bandwidth),380, int, "%d"); belle_sip_object_unref(BELLE_SIP_OBJECT(l_bandwidth)); belle_sip_free(l_raw_bandwidth); } static void test_origin(void) { belle_sdp_origin_t* lTmp; belle_sdp_origin_t* lOrigin = belle_sdp_origin_parse("o=jehan-mac 3800 2558 IN IP4 192.168.0.165"); char* l_raw_origin = belle_sip_object_to_string(BELLE_SIP_OBJECT(lOrigin)); belle_sip_object_unref(BELLE_SIP_OBJECT(lOrigin)); lTmp = belle_sdp_origin_parse(l_raw_origin); lOrigin = BELLE_SDP_ORIGIN(belle_sip_object_clone(BELLE_SIP_OBJECT(lTmp))); belle_sip_object_unref(BELLE_SIP_OBJECT(lTmp)); BC_ASSERT_STRING_EQUAL(belle_sdp_origin_get_address(lOrigin), "192.168.0.165"); BC_ASSERT_STRING_EQUAL(belle_sdp_origin_get_address_type(lOrigin), "IP4"); BC_ASSERT_STRING_EQUAL(belle_sdp_origin_get_network_type(lOrigin), "IN"); belle_sip_object_unref(BELLE_SIP_OBJECT(lOrigin)); belle_sip_free(l_raw_origin); } static void test_malformed_origin(void) { belle_sdp_origin_t* lOrigin = belle_sdp_origin_parse("o=Jehan Monnier 3800 2558 IN IP4 192.168.0.165"); BC_ASSERT_PTR_NULL(lOrigin); } static void test_connection(void) { belle_sdp_connection_t* lTmp; belle_sdp_connection_t* lConnection = belle_sdp_connection_parse("c=IN IP4 192.168.0.18"); char* l_raw_connection = belle_sip_object_to_string(BELLE_SIP_OBJECT(lConnection)); belle_sip_object_unref(BELLE_SIP_OBJECT(lConnection)); lTmp = belle_sdp_connection_parse(l_raw_connection); lConnection = BELLE_SDP_CONNECTION(belle_sip_object_clone(BELLE_SIP_OBJECT(lTmp))); belle_sip_object_unref(BELLE_SIP_OBJECT(lTmp)); BC_ASSERT_STRING_EQUAL(belle_sdp_connection_get_address(lConnection), "192.168.0.18"); BC_ASSERT_STRING_EQUAL(belle_sdp_connection_get_address_type(lConnection), "IP4"); BC_ASSERT_STRING_EQUAL(belle_sdp_connection_get_network_type(lConnection), "IN"); BC_ASSERT_EQUAL(belle_sdp_connection_get_ttl(lConnection), 0, int, "%d"); BC_ASSERT_EQUAL(belle_sdp_connection_get_ttl(lConnection), 0, int, "%d"); belle_sip_object_unref(BELLE_SIP_OBJECT(lConnection)); belle_sip_free(l_raw_connection); } static void test_connection_6(void) { belle_sdp_connection_t* lTmp; belle_sdp_connection_t* lConnection = belle_sdp_connection_parse("c=IN IP6 2a01:e35:1387:1020:6233:4bff:fe0b:5663"); char* l_raw_connection = belle_sip_object_to_string(BELLE_SIP_OBJECT(lConnection)); belle_sip_object_unref(BELLE_SIP_OBJECT(lConnection)); lTmp = belle_sdp_connection_parse(l_raw_connection); lConnection = BELLE_SDP_CONNECTION(belle_sip_object_clone(BELLE_SIP_OBJECT(lTmp))); belle_sip_object_unref(BELLE_SIP_OBJECT(lTmp)); BC_ASSERT_STRING_EQUAL(belle_sdp_connection_get_address(lConnection), "2a01:e35:1387:1020:6233:4bff:fe0b:5663"); BC_ASSERT_STRING_EQUAL(belle_sdp_connection_get_address_type(lConnection), "IP6"); BC_ASSERT_STRING_EQUAL(belle_sdp_connection_get_network_type(lConnection), "IN"); belle_sip_object_unref(BELLE_SIP_OBJECT(lConnection)); belle_sip_free(l_raw_connection); } static void test_connection_multicast(void) { belle_sdp_connection_t* lTmp; belle_sdp_connection_t* lConnection = belle_sdp_connection_parse("c=IN IP4 224.2.1.1/127/3"); char* l_raw_connection = belle_sip_object_to_string(BELLE_SIP_OBJECT(lConnection)); belle_sip_object_unref(BELLE_SIP_OBJECT(lConnection)); lTmp = belle_sdp_connection_parse(l_raw_connection); lConnection = BELLE_SDP_CONNECTION(belle_sip_object_clone(BELLE_SIP_OBJECT(lTmp))); belle_sip_object_unref(BELLE_SIP_OBJECT(lTmp)); BC_ASSERT_STRING_EQUAL(belle_sdp_connection_get_address(lConnection), "224.2.1.1"); BC_ASSERT_STRING_EQUAL(belle_sdp_connection_get_address_type(lConnection), "IP4"); BC_ASSERT_STRING_EQUAL(belle_sdp_connection_get_network_type(lConnection), "IN"); BC_ASSERT_EQUAL(belle_sdp_connection_get_ttl(lConnection), 127, int, "%d"); BC_ASSERT_EQUAL(belle_sdp_connection_get_range(lConnection), 3, int, "%d"); belle_sip_object_unref(BELLE_SIP_OBJECT(lConnection)); belle_sip_free(l_raw_connection); lConnection = belle_sdp_connection_parse("c=IN IP4 224.2.1.1/127"); l_raw_connection = belle_sip_object_to_string(BELLE_SIP_OBJECT(lConnection)); belle_sip_object_unref(BELLE_SIP_OBJECT(lConnection)); lTmp = belle_sdp_connection_parse(l_raw_connection); lConnection = BELLE_SDP_CONNECTION(belle_sip_object_clone(BELLE_SIP_OBJECT(lTmp))); belle_sip_object_unref(BELLE_SIP_OBJECT(lTmp)); BC_ASSERT_STRING_EQUAL(belle_sdp_connection_get_address(lConnection), "224.2.1.1"); BC_ASSERT_STRING_EQUAL(belle_sdp_connection_get_address_type(lConnection), "IP4"); BC_ASSERT_STRING_EQUAL(belle_sdp_connection_get_network_type(lConnection), "IN"); BC_ASSERT_EQUAL(belle_sdp_connection_get_ttl(lConnection), 127, int, "%d"); BC_ASSERT_EQUAL(belle_sdp_connection_get_range(lConnection), 0, int, "%d"); belle_sip_object_unref(BELLE_SIP_OBJECT(lConnection)); belle_sip_free(l_raw_connection); lConnection = belle_sdp_connection_parse("c=IN IP6 ::1/3"); l_raw_connection = belle_sip_object_to_string(BELLE_SIP_OBJECT(lConnection)); belle_sip_object_unref(BELLE_SIP_OBJECT(lConnection)); lTmp = belle_sdp_connection_parse(l_raw_connection); lConnection = BELLE_SDP_CONNECTION(belle_sip_object_clone(BELLE_SIP_OBJECT(lTmp))); belle_sip_object_unref(BELLE_SIP_OBJECT(lTmp)); BC_ASSERT_STRING_EQUAL(belle_sdp_connection_get_address(lConnection), "::1"); BC_ASSERT_STRING_EQUAL(belle_sdp_connection_get_address_type(lConnection), "IP6"); BC_ASSERT_STRING_EQUAL(belle_sdp_connection_get_network_type(lConnection), "IN"); BC_ASSERT_EQUAL(belle_sdp_connection_get_ttl(lConnection), 0, int, "%d"); BC_ASSERT_EQUAL(belle_sdp_connection_get_range(lConnection), 3, int, "%d"); belle_sip_object_unref(BELLE_SIP_OBJECT(lConnection)); belle_sip_free(l_raw_connection); } static void test_email(void) { belle_sdp_email_t* lTmp; belle_sdp_email_t* l_email = belle_sdp_email_parse("e= jehan "); char* l_raw_email = belle_sip_object_to_string(BELLE_SIP_OBJECT(l_email)); belle_sip_object_unref(BELLE_SIP_OBJECT(l_email)); lTmp = belle_sdp_email_parse(l_raw_email); l_email = BELLE_SDP_EMAIL(belle_sip_object_clone(BELLE_SIP_OBJECT(lTmp))); belle_sip_object_unref(BELLE_SIP_OBJECT(lTmp)); BC_ASSERT_STRING_EQUAL(belle_sdp_email_get_value(l_email), " jehan "); belle_sip_object_unref(BELLE_SIP_OBJECT(l_email)); belle_sip_free(l_raw_email); } static void test_info(void) { belle_sdp_info_t* lTmp; belle_sdp_info_t* l_info = belle_sdp_info_parse("i=A Seminar on the session description protocol"); char* l_raw_info = belle_sip_object_to_string(BELLE_SIP_OBJECT(l_info)); belle_sip_object_unref(BELLE_SIP_OBJECT(l_info)); lTmp = belle_sdp_info_parse(l_raw_info); l_info = BELLE_SDP_INFO(belle_sip_object_clone(BELLE_SIP_OBJECT(lTmp))); belle_sip_object_unref(BELLE_SIP_OBJECT(lTmp)); BC_ASSERT_STRING_EQUAL(belle_sdp_info_get_value(l_info), "A Seminar on the session description protocol"); belle_sip_object_unref(BELLE_SIP_OBJECT(l_info)); belle_sip_free(l_raw_info); } static void test_media(void) { belle_sdp_media_t* lTmp; belle_sip_list_t* list; belle_sdp_media_t* l_media = belle_sdp_media_parse("m=audio 7078 RTP/AVP 111 110 3 0 8 101"); char* l_raw_media = belle_sip_object_to_string(BELLE_SIP_OBJECT(l_media)); int fmt[] ={111,110,3,0,8,101}; int i=0; belle_sip_object_unref(BELLE_SIP_OBJECT(l_media)); lTmp = belle_sdp_media_parse(l_raw_media); l_media = BELLE_SDP_MEDIA(belle_sip_object_clone(BELLE_SIP_OBJECT(lTmp))); belle_sip_object_unref(BELLE_SIP_OBJECT(lTmp)); BC_ASSERT_STRING_EQUAL(belle_sdp_media_get_media_type(l_media), "audio"); BC_ASSERT_EQUAL(belle_sdp_media_get_media_port(l_media), 7078, int, "%d"); BC_ASSERT_STRING_EQUAL(belle_sdp_media_get_protocol(l_media), "RTP/AVP"); list = belle_sdp_media_get_media_formats(l_media); BC_ASSERT_PTR_NOT_NULL(list); for(;list!=NULL;list=list->next){ BC_ASSERT_EQUAL(BELLE_SIP_POINTER_TO_INT(list->data),fmt[i++], int, "%d"); } belle_sip_object_unref(BELLE_SIP_OBJECT(l_media)); belle_sip_free(l_raw_media); } const char* media_description_attr[] ={"2" ,"speaker" ,"98 nack rpsi" ,"rcvr-rtt=all:10" ,"4 key-mgmt:mikey AQAFgM" ,"2147483647 key-mgmt:mikey YjKBgNn" ,"20 ptime:30" ,"10021 crypto:1 AES_CM_256_HMAC_SHA1_80 inline:WVNfX19zZW1jdGwgKCkgewkyMjA7fQp9CnVubGVz|2^20|1:4" ,"6 RTP/SAVP RTP/SAVPF" ,"99 RTP/AVP RTP/AVPF" ,"99 MP4V-ES/90000" ,"99 profile-level-id=3" ,"97 theora/90000" ,"98 H263-1998/90000" ,"1 t=99 a=[2]" ,"2 t=6 a=2147483647" ,"98 CIF=1;QCIF=1"}; const char* media_description_attr_2[] ={"2" ,"speaker" ,"98 nack rpsi" ,"2 t=6 a=2147483647" ,"rcvr-rtt=all:10" ,"4 key-mgmt:mikey AQAFgM" ,"2147483647 key-mgmt:mikey YjKBgNn" ,"20 ptime:30" ,"10021 crypto:1 AES_CM_256_HMAC_SHA1_80 inline:WVNfX19zZW1jdGwgKCkgewkyMjA7fQp9CnVubGVz|2^20|1:4" ,"6 RTP/SAVP RTP/SAVPF" ,"99 RTP/AVP RTP/AVPF" ,"99 MP4V-ES/90000" ,"99 profile-level-id=3" ,"97 theora/90000" ,"98 H263-1998/90000" ,"1 t=99 a=[2]" ,"98 CIF=1;QCIF=1"}; static void test_media_description_base(const char** attr, belle_sdp_media_description_t* media_description) { belle_sdp_connection_t* lConnection; belle_sdp_media_description_t* l_media_description=media_description; belle_sdp_media_t* l_media = belle_sdp_media_description_get_media(l_media_description); belle_sip_list_t* list; int fmt[] ={99,97,98}; int i=0; BC_ASSERT_PTR_NOT_NULL(l_media); BC_ASSERT_STRING_EQUAL(belle_sdp_media_get_media_type(l_media), "video"); BC_ASSERT_EQUAL(belle_sdp_media_get_media_port(l_media), 8078, int, "%d"); BC_ASSERT_STRING_EQUAL(belle_sdp_media_get_protocol(l_media), "RTP/AVP"); list = belle_sdp_media_get_media_formats(l_media); BC_ASSERT_PTR_NOT_NULL(list); for(;list!=NULL;list=list->next){ BC_ASSERT_EQUAL(BELLE_SIP_POINTER_TO_INT(list->data),fmt[i++], int, "%d"); } /*connection*/ lConnection = belle_sdp_media_description_get_connection(l_media_description); BC_ASSERT_STRING_EQUAL(belle_sdp_connection_get_address(lConnection), "192.168.0.18"); BC_ASSERT_STRING_EQUAL(belle_sdp_connection_get_address_type(lConnection), "IP4"); BC_ASSERT_STRING_EQUAL(belle_sdp_connection_get_network_type(lConnection), "IN"); /*bandwidth*/ BC_ASSERT_EQUAL(belle_sdp_media_description_get_bandwidth(l_media_description,"AS"),380, int, "%d"); /*attributes*/ list = belle_sdp_media_description_get_attributes(l_media_description); BC_ASSERT_PTR_NOT_NULL(list); i=0; for(;list!=NULL;list=list->next){ BC_ASSERT_STRING_EQUAL(belle_sdp_attribute_get_value((belle_sdp_attribute_t*)(list->data)),attr[i++]); } } static void test_media_description(void) { const char* l_src = "m=video 8078 RTP/AVP 99 97 98\r\n"\ "i=Hey\r\n"\ "c=IN IP4 192.168.0.18\r\n"\ "b=AS:380\r\n"\ "a=label:2\r\n"\ "a=content:speaker\r\n"\ "a=rtcp-fb:98 nack rpsi\r\n"\ "a=rtcp-xr:rcvr-rtt=all:10\r\n"\ "a=acap:4 key-mgmt:mikey AQAFgM\r\n"\ "a=acap:2147483647 key-mgmt:mikey YjKBgNn\r\n"\ "a=acap:20 ptime:30\r\n"\ "a=acap:10021 crypto:1 AES_CM_256_HMAC_SHA1_80 inline:WVNfX19zZW1jdGwgKCkgewkyMjA7fQp9CnVubGVz|2^20|1:4\r\n"\ "a=tcap:6 RTP/SAVP RTP/SAVPF\r\n"\ "a=tcap:99 RTP/AVP RTP/AVPF\r\n"\ "a=rtpmap:99 MP4V-ES/90000\r\n"\ "a=fmtp:99 profile-level-id=3\r\n"\ "a=rtpmap:97 theora/90000\r\n"\ "a=rtpmap:98 H263-1998/90000\r\n"\ "a=acfg:1 t=99 a=[2]\r\n"\ "a=acfg:2 t=6 a=2147483647\r\n"\ "a=fmtp:98 CIF=1;QCIF=1\r\n"; belle_sdp_media_description_t* lTmp; belle_sdp_media_description_t* l_media_description = belle_sdp_media_description_parse(l_src); char* l_raw_media_description = belle_sip_object_to_string(BELLE_SIP_OBJECT(l_media_description)); belle_sip_object_unref(BELLE_SIP_OBJECT(l_media_description)); lTmp = belle_sdp_media_description_parse(l_raw_media_description); l_media_description = BELLE_SDP_MEDIA_DESCRIPTION(belle_sip_object_clone(BELLE_SIP_OBJECT(lTmp))); belle_sip_object_unref(BELLE_SIP_OBJECT(lTmp)); test_media_description_base(media_description_attr, l_media_description); belle_sip_object_unref(BELLE_SIP_OBJECT(l_media_description)); belle_sip_free(l_raw_media_description); return; } static void test_simple_session_description(void) { const char* l_src = "v=0\r\n"\ "o=jehan-mac 2463217870 2463217870 IN IP4 192.168.0.18\r\n"\ "s=Talk\r\n"\ "c=IN IP4 192.168.0.18\r\n"\ "t=0 0\r\n"\ "a=acfg:1 t=3 a=[2]\r\n"\ "a=tcap:5 RTP/SAVP RTP/SAVPF\r\n"\ "m=audio 7078 RTP/AVP 111 110 3 0 8 101\r\n"\ "a=alt:1 1 : e2br+9PL Eu1qGlQ9 10.211.55.3 8988\r\n"\ "a=acap:3 key-mgmt:mikey AQAFgM\r\n"\ "a=tcap:2 RTP/SAVP RTP/SAVPF\r\n"\ "a=rtpmap:111 speex/16000\r\n"\ "a=fmtp:111 vbr=on\r\n"\ "a=rtpmap:110 speex/8000\r\n"\ "a=fmtp:110 vbr=on\r\n"\ "a=rtpmap:101 telephone-event/8000\r\n"\ "a=fmtp:101 0-11\r\n"\ "m=video 8078 RTP/AVP 99 97 98\r\n"\ "c=IN IP4 192.168.0.18\r\n"\ "b=AS:380\r\n"\ "a=label:2\r\n"\ "a=content:speaker\r\n"\ "a=rtcp-fb:98 nack rpsi\r\n"\ "a=rtcp-xr:rcvr-rtt=all:10\r\n"\ "a=acap:4 key-mgmt:mikey AQAFgM\r\n"\ "a=acap:2147483647 key-mgmt:mikey YjKBgNn\r\n"\ "a=acap:20 ptime:30\r\n"\ "a=acap:10021 crypto:1 AES_CM_256_HMAC_SHA1_80 inline:WVNfX19zZW1jdGwgKCkgewkyMjA7fQp9CnVubGVz|2^20|1:4\r\n"\ "a=tcap:6 RTP/SAVP RTP/SAVPF\r\n"\ "a=tcap:99 RTP/AVP RTP/AVPF\r\n"\ "a=rtpmap:99 MP4V-ES/90000\r\n"\ "a=fmtp:99 profile-level-id=3\r\n"\ "a=rtpmap:97 theora/90000\r\n"\ "a=rtpmap:98 H263-1998/90000\r\n"\ "a=acfg:1 t=99 a=[2]\r\n"\ "a=acfg:2 t=6 a=2147483647\r\n"\ "a=fmtp:98 CIF=1;QCIF=1\r\n"; belle_sdp_origin_t* l_origin; belle_sip_list_t* media_descriptions; belle_sdp_session_description_t* lTmp; belle_sdp_session_description_t* l_session_description = belle_sdp_session_description_parse(l_src); char* l_raw_session_description = belle_sip_object_to_string(BELLE_SIP_OBJECT(l_session_description)); belle_sip_object_unref(BELLE_SIP_OBJECT(l_session_description)); lTmp = belle_sdp_session_description_parse(l_raw_session_description); belle_sip_free(l_raw_session_description); l_session_description = BELLE_SDP_SESSION_DESCRIPTION(belle_sip_object_clone(BELLE_SIP_OBJECT(lTmp))); belle_sip_object_unref(BELLE_SIP_OBJECT(lTmp)); BC_ASSERT_PTR_NOT_NULL(belle_sdp_session_description_get_version(l_session_description)); BC_ASSERT_EQUAL(belle_sdp_version_get_version(belle_sdp_session_description_get_version(l_session_description)),0, int, "%d"); l_origin = belle_sdp_session_description_get_origin(l_session_description); BC_ASSERT_PTR_NOT_NULL(l_origin); BC_ASSERT_STRING_EQUAL(belle_sdp_origin_get_address(l_origin),"192.168.0.18"); BC_ASSERT_STRING_EQUAL(belle_sdp_origin_get_address_type(l_origin),"IP4"); BC_ASSERT_STRING_EQUAL(belle_sdp_origin_get_network_type(l_origin),"IN"); BC_ASSERT_EQUAL(belle_sdp_origin_get_session_id(l_origin), 2463217870U, unsigned, "%u"); BC_ASSERT_EQUAL(belle_sdp_origin_get_session_version(l_origin), 2463217870U, unsigned, "%u"); BC_ASSERT_PTR_NOT_NULL(belle_sdp_session_description_get_session_name(l_session_description)); BC_ASSERT_STRING_EQUAL(belle_sdp_session_name_get_value(belle_sdp_session_description_get_session_name(l_session_description)),"Talk"); BC_ASSERT_PTR_NOT_NULL(belle_sdp_session_description_get_connection(l_session_description)); BC_ASSERT_PTR_NOT_NULL(belle_sdp_session_description_get_time_descriptions(l_session_description)); BC_ASSERT_EQUAL(belle_sdp_time_get_start(belle_sdp_time_description_get_time((belle_sdp_time_description_t*)(belle_sdp_session_description_get_time_descriptions(l_session_description)->data))),0, long long, "%lld"); BC_ASSERT_EQUAL(belle_sdp_time_get_stop(belle_sdp_time_description_get_time((belle_sdp_time_description_t*)(belle_sdp_session_description_get_time_descriptions(l_session_description)->data))),0, long long, "%lld"); media_descriptions = belle_sdp_session_description_get_media_descriptions(l_session_description); BC_ASSERT_PTR_NOT_NULL(media_descriptions); if (media_descriptions) { BC_ASSERT_STRING_EQUAL (belle_sdp_media_get_media_type(belle_sdp_media_description_get_media((belle_sdp_media_description_t*)(media_descriptions->data))),"audio"); media_descriptions=media_descriptions->next; BC_ASSERT_PTR_NOT_NULL(media_descriptions); if (media_descriptions) { test_media_description_base(media_description_attr, (belle_sdp_media_description_t*)(media_descriptions->data)); } } belle_sip_object_unref(l_session_description); return; } static void test_session_description_with_capability_referenced_before_definition(void) { const char* l_src = "v=0\r\n"\ "o=jehan-mac 2463217870 2463217870 IN IP4 192.168.0.19\r\n"\ "s=Talk\r\n"\ "c=IN IP4 192.168.0.18\r\n"\ "t=0 0\r\n"\ "a=acfg:1 t=3 a=[2]\r\n"\ "a=tcap:5 RTP/SAVP RTP/SAVPF\r\n"\ "m=audio 7078 RTP/AVP 111 110 3 0 8 101\r\n"\ "a=alt:1 1 : e2br+9PL Eu1qGlQ9 10.211.55.3 8988\r\n"\ "a=acap:3 key-mgmt:mikey AQAFgM\r\n"\ "a=tcap:2 RTP/SAVP RTP/SAVPF\r\n"\ "a=rtpmap:111 speex/16000\r\n"\ "a=fmtp:111 vbr=on\r\n"\ "a=rtpmap:110 speex/8000\r\n"\ "a=fmtp:110 vbr=on\r\n"\ "a=rtpmap:101 telephone-event/8000\r\n"\ "a=fmtp:101 0-11\r\n"\ "m=video 8078 RTP/AVP 99 97 98\r\n"\ "c=IN IP4 192.168.0.18\r\n"\ "b=AS:380\r\n"\ "a=label:2\r\n"\ "a=content:speaker\r\n"\ "a=rtcp-fb:98 nack rpsi\r\n"\ "a=acfg:2 t=6 a=2147483647\r\n"\ "a=rtcp-xr:rcvr-rtt=all:10\r\n"\ "a=acap:4 key-mgmt:mikey AQAFgM\r\n"\ "a=acap:2147483647 key-mgmt:mikey YjKBgNn\r\n"\ "a=acap:20 ptime:30\r\n"\ "a=acap:10021 crypto:1 AES_CM_256_HMAC_SHA1_80 inline:WVNfX19zZW1jdGwgKCkgewkyMjA7fQp9CnVubGVz|2^20|1:4\r\n"\ "a=tcap:6 RTP/SAVP RTP/SAVPF\r\n"\ "a=tcap:99 RTP/AVP RTP/AVPF\r\n"\ "a=rtpmap:99 MP4V-ES/90000\r\n"\ "a=fmtp:99 profile-level-id=3\r\n"\ "a=rtpmap:97 theora/90000\r\n"\ "a=rtpmap:98 H263-1998/90000\r\n"\ "a=acfg:1 t=99 a=[2]\r\n"\ "a=fmtp:98 CIF=1;QCIF=1\r\n"; belle_sdp_origin_t* l_origin; belle_sip_list_t* media_descriptions; belle_sdp_session_description_t* lTmp; belle_sdp_session_description_t* l_session_description = belle_sdp_session_description_parse(l_src); char* l_raw_session_description = belle_sip_object_to_string(BELLE_SIP_OBJECT(l_session_description)); belle_sip_object_unref(BELLE_SIP_OBJECT(l_session_description)); lTmp = belle_sdp_session_description_parse(l_raw_session_description); belle_sip_free(l_raw_session_description); l_session_description = BELLE_SDP_SESSION_DESCRIPTION(belle_sip_object_clone(BELLE_SIP_OBJECT(lTmp))); belle_sip_object_unref(BELLE_SIP_OBJECT(lTmp)); BC_ASSERT_PTR_NOT_NULL(belle_sdp_session_description_get_version(l_session_description)); BC_ASSERT_EQUAL(belle_sdp_version_get_version(belle_sdp_session_description_get_version(l_session_description)),0, int, "%d"); l_origin = belle_sdp_session_description_get_origin(l_session_description); BC_ASSERT_PTR_NOT_NULL(l_origin); BC_ASSERT_STRING_EQUAL(belle_sdp_origin_get_address(l_origin),"192.168.0.19"); BC_ASSERT_STRING_EQUAL(belle_sdp_origin_get_address_type(l_origin),"IP4"); BC_ASSERT_STRING_EQUAL(belle_sdp_origin_get_network_type(l_origin),"IN"); BC_ASSERT_EQUAL(belle_sdp_origin_get_session_id(l_origin), 2463217870U, unsigned, "%u"); BC_ASSERT_EQUAL(belle_sdp_origin_get_session_version(l_origin), 2463217870U, unsigned, "%u"); BC_ASSERT_PTR_NOT_NULL(belle_sdp_session_description_get_session_name(l_session_description)); BC_ASSERT_STRING_EQUAL(belle_sdp_session_name_get_value(belle_sdp_session_description_get_session_name(l_session_description)),"Talk"); BC_ASSERT_PTR_NOT_NULL(belle_sdp_session_description_get_connection(l_session_description)); BC_ASSERT_PTR_NOT_NULL(belle_sdp_session_description_get_time_descriptions(l_session_description)); BC_ASSERT_EQUAL(belle_sdp_time_get_start(belle_sdp_time_description_get_time((belle_sdp_time_description_t*)(belle_sdp_session_description_get_time_descriptions(l_session_description)->data))),0, long long, "%lld"); BC_ASSERT_EQUAL(belle_sdp_time_get_stop(belle_sdp_time_description_get_time((belle_sdp_time_description_t*)(belle_sdp_session_description_get_time_descriptions(l_session_description)->data))),0, long long, "%lld"); media_descriptions = belle_sdp_session_description_get_media_descriptions(l_session_description); BC_ASSERT_PTR_NOT_NULL(media_descriptions); if (media_descriptions) { BC_ASSERT_STRING_EQUAL (belle_sdp_media_get_media_type(belle_sdp_media_description_get_media((belle_sdp_media_description_t*)(media_descriptions->data))),"audio"); media_descriptions=media_descriptions->next; BC_ASSERT_PTR_NOT_NULL(media_descriptions); if (media_descriptions) { test_media_description_base(media_description_attr_2, (belle_sdp_media_description_t*)(media_descriptions->data)); } } belle_sip_object_unref(l_session_description); return; } static void test_image_mline(void) { const char * sdp = "v=0\r\n" "o=cp10 138884701697 138884701699 IN IP4 10.7.1.133\r\n" "s=SIP Call\r\n" "c=IN IP4 91.121.128.144\r\n" "t=0 0\r\n" "m=image 33802 udptl t38\r\n" "a=sendrecv\r\n" "a=T38FaxVersion:0\r\n" "a=T38MaxBitRate:9600\r\n" "a=T38FaxRateManagement:transferredTCF\r\n" "a=T38FaxMaxBuffer:1000\r\n" "a=T38FaxMaxDatagram:200\r\n" "a=T38FaxUdpEC:t38UDPRedundancy\r\n"; belle_sdp_session_description_t* l_session_description = belle_sdp_session_description_parse(sdp); belle_sip_object_unref(l_session_description); } static const char* big_sdp = "v=0\r\n"\ "o=jehan-mac 1239 1239 IN IP6 2a01:e35:1387:1020:6233:4bff:fe0b:5663\r\n"\ "s=SIP Talk\r\n"\ "c=IN IP4 192.168.0.18\r\n"\ "b=AS:380\r\n"\ "t=0 0\r\n"\ "a=ice-pwd:31ec21eb38b2ec6d36e8dc7b\r\n"\ "a=acap:1 key-mgmt:mikey AQAFgM\r\n"\ "a=acap:2 key-mgmt:mikey YjKBgNn\r\n"\ "a=tcap:1 RTP/SAVP RTP/SAVPF\r\n"\ "a=tcap:2 RTP/AVP RTP/AVPF\r\n"\ "m=audio 7078 RTP/AVP 111 110 3 0 8 101\r\n"\ "a=rtpmap:111 speex/16000\r\n"\ "a=fmtp:111 vbr=on\r\n"\ "a=rtpmap:110 speex/8000\r\n"\ "a=fmtp:110 vbr=on\r\n"\ "a=rtpmap:101 telephone-event/8000\r\n"\ "a=fmtp:101 0-11\r\n"\ "m=video 8078 RTP/AVP 99 97 98\r\n"\ "c=IN IP4 192.168.0.18\r\n"\ "b=AS:380\r\n"\ "a=label:2\r\n"\ "a=content:speaker\r\n"\ "a=rtcp-fb:98 nack rpsi\r\n"\ "a=rtcp-xr:rcvr-rtt=all:10\r\n"\ "a=acap:4 key-mgmt:mikey AQAFgM\r\n"\ "a=acap:2147483647 key-mgmt:mikey YjKBgNn\r\n"\ "a=acap:20 ptime:30\r\n"\ "a=acap:10021 crypto:1 AES_CM_256_HMAC_SHA1_80 inline:WVNfX19zZW1jdGwgKCkgewkyMjA7fQp9CnVubGVz|2^20|1:4\r\n"\ "a=tcap:6 RTP/SAVP RTP/SAVPF\r\n"\ "a=tcap:99 RTP/AVP RTP/AVPF\r\n"\ "a=rtpmap:99 MP4V-ES/90000\r\n"\ "a=fmtp:99 profile-level-id=3\r\n"\ "a=rtpmap:97 theora/90000\r\n"\ "a=rtpmap:98 H263-1998/90000\r\n"\ "a=acfg:1 t=99 a=[2]\r\n"\ "a=acfg:2 t=6 a=2147483647\r\n"\ "a=fmtp:98 CIF=1;QCIF=1\r\n"; static void test_session_description(void) { const char* l_src = big_sdp; belle_sdp_origin_t* l_origin; belle_sdp_session_description_t* lTmp; belle_sip_list_t* media_descriptions; belle_sdp_session_description_t* l_session_description = belle_sdp_session_description_parse(l_src); char* l_raw_session_description = belle_sip_object_to_string(BELLE_SIP_OBJECT(l_session_description)); belle_sip_object_unref(BELLE_SIP_OBJECT(l_session_description)); lTmp = belle_sdp_session_description_parse(l_raw_session_description); belle_sip_free(l_raw_session_description); l_session_description = BELLE_SDP_SESSION_DESCRIPTION(belle_sip_object_clone(BELLE_SIP_OBJECT(lTmp))); belle_sip_object_unref(BELLE_SIP_OBJECT(lTmp)); BC_ASSERT_PTR_NOT_NULL(belle_sdp_session_description_get_version(l_session_description)); BC_ASSERT_EQUAL(belle_sdp_version_get_version(belle_sdp_session_description_get_version(l_session_description)),0, int, "%d"); l_origin = belle_sdp_session_description_get_origin(l_session_description); BC_ASSERT_PTR_NOT_NULL(l_origin); BC_ASSERT_STRING_EQUAL(belle_sdp_origin_get_address(l_origin),"2a01:e35:1387:1020:6233:4bff:fe0b:5663"); BC_ASSERT_STRING_EQUAL(belle_sdp_origin_get_address_type(l_origin),"IP6"); BC_ASSERT_STRING_EQUAL(belle_sdp_origin_get_network_type(l_origin),"IN"); BC_ASSERT_EQUAL(belle_sdp_origin_get_session_id(l_origin),1239, unsigned, "%u"); BC_ASSERT_EQUAL(belle_sdp_origin_get_session_version(l_origin),1239, unsigned, "%u"); BC_ASSERT_PTR_NOT_NULL(belle_sdp_session_description_get_session_name(l_session_description)); BC_ASSERT_STRING_EQUAL(belle_sdp_session_name_get_value(belle_sdp_session_description_get_session_name(l_session_description)),"SIP Talk"); BC_ASSERT_PTR_NOT_NULL(belle_sdp_session_description_get_connection(l_session_description)); BC_ASSERT_EQUAL(belle_sdp_session_description_get_bandwidth(l_session_description,"AS"), 380, int, "%d"); BC_ASSERT_PTR_NOT_NULL(belle_sdp_session_description_get_time_descriptions(l_session_description)); BC_ASSERT_EQUAL(belle_sdp_time_get_start(belle_sdp_time_description_get_time((belle_sdp_time_description_t*)(belle_sdp_session_description_get_time_descriptions(l_session_description)->data))),0, long long, "%lld"); BC_ASSERT_EQUAL(belle_sdp_time_get_stop(belle_sdp_time_description_get_time((belle_sdp_time_description_t*)(belle_sdp_session_description_get_time_descriptions(l_session_description)->data))),0, long long, "%lld"); media_descriptions = belle_sdp_session_description_get_media_descriptions(l_session_description); BC_ASSERT_PTR_NOT_NULL(media_descriptions); BC_ASSERT_STRING_EQUAL (belle_sdp_media_get_media_type(belle_sdp_media_description_get_media((belle_sdp_media_description_t*)(media_descriptions->data))),"audio"); media_descriptions=media_descriptions->next; BC_ASSERT_PTR_NOT_NULL(media_descriptions); test_media_description_base(media_description_attr, (belle_sdp_media_description_t*)(media_descriptions->data)); belle_sip_object_unref(l_session_description); return; } static const char* sdp_with_invalid_rtcp_fb = "v=0\r\n"\ "o=jehan-mac 1239 1239 IN IP6 2a01:e35:1387:1020:6233:4bff:fe0b:5663\r\n"\ "s=SIP Talk\r\n"\ "c=IN IP4 192.168.0.18\r\n"\ "b=AS:380\r\n"\ "t=0 0\r\n"\ "a=ice-pwd:31ec21eb38b2ec6d36e8dc7b\r\n"\ "m=audio 7078 RTP/AVP 111 110 3 0 8 101\r\n"\ "a=rtcp-fb\r\n"\ "a=rtpmap:111 speex/16000\r\n"; static void test_session_description_with_invalid_rtcp_fb(void) { const char* l_src = sdp_with_invalid_rtcp_fb; belle_sip_list_t* media_descriptions; belle_sdp_media_description_t *media_description; belle_sdp_session_description_t* l_session_description = belle_sdp_session_description_parse(l_src); /* make sure that the invalid rtcp-fb is not parsed as a raw attribute. */ media_descriptions = belle_sdp_session_description_get_media_descriptions(l_session_description); media_description = (belle_sdp_media_description_t*) media_descriptions->data; BC_ASSERT_PTR_NULL(belle_sdp_media_description_get_attribute(media_description, "rtcp-fb")); belle_sip_object_unref(l_session_description); } static void test_overflow(void){ belle_sdp_session_description_t* sdp; belle_sip_list_t *mds; belle_sdp_media_description_t *vmd; int i; const size_t orig_buffsize=1024; size_t buffsize=orig_buffsize; char *buffer=belle_sip_malloc0(buffsize); size_t offset=0; sdp=belle_sdp_session_description_parse(big_sdp); BC_ASSERT_PTR_NOT_NULL(sdp); mds=belle_sdp_session_description_get_media_descriptions(sdp); BC_ASSERT_PTR_NOT_NULL(mds); BC_ASSERT_PTR_NOT_NULL(mds->next); vmd=(belle_sdp_media_description_t*)mds->next->data; for(i=0;i<16;i++){ belle_sdp_media_description_add_attribute(vmd,belle_sdp_attribute_create("candidate","2 1 UDP 1694498815 82.65.223.97 9078 typ srflx raddr 192.168.0.2 rport 9078")); } BC_ASSERT_EQUAL(belle_sip_object_marshal(BELLE_SIP_OBJECT(sdp),buffer,buffsize,&offset),BELLE_SIP_BUFFER_OVERFLOW, int, "%d"); belle_sip_message("marshal size is %i",(int)offset); BC_ASSERT_EQUAL((unsigned int)offset,(unsigned int)buffsize,unsigned int,"%u"); belle_sip_object_unref(sdp); belle_sip_free(buffer); } static belle_sdp_mime_parameter_t* find_mime_parameter(belle_sip_list_t* list,const int format) { for(;list!=NULL;list=list->next){ if (belle_sdp_mime_parameter_get_media_format((belle_sdp_mime_parameter_t*)list->data) == format) { return (belle_sdp_mime_parameter_t*)list->data; } } return NULL; } static void check_mime_param (belle_sdp_mime_parameter_t* mime_param ,int rate ,int channel_count ,int ptime ,int max_ptime ,int media_format ,const char* type ,const char* parameters) { BC_ASSERT_PTR_NOT_NULL(mime_param); BC_ASSERT_EQUAL(belle_sdp_mime_parameter_get_rate(mime_param),rate, int, "%d"); BC_ASSERT_EQUAL(belle_sdp_mime_parameter_get_channel_count(mime_param),channel_count, int, "%d"); BC_ASSERT_EQUAL(belle_sdp_mime_parameter_get_ptime(mime_param),ptime, int, "%d"); BC_ASSERT_EQUAL(belle_sdp_mime_parameter_get_max_ptime(mime_param),max_ptime, int, "%d"); BC_ASSERT_EQUAL(belle_sdp_mime_parameter_get_media_format(mime_param),media_format, int, "%d"); if (type) BC_ASSERT_STRING_EQUAL(belle_sdp_mime_parameter_get_type(mime_param),type); if (parameters) BC_ASSERT_STRING_EQUAL(belle_sdp_mime_parameter_get_parameters(mime_param),parameters); } static int compare_attribute(belle_sdp_attribute_t* attr, const char* value) { return strcasecmp(belle_sdp_attribute_get_name(attr),"rtpmap")==0 || strcasecmp(belle_sdp_attribute_get_value(attr),value)==0; } static void test_mime_parameter(void) { const char* l_src = "m=audio 7078 RTP/AVP 111 110 0 8 9 3 18 101\r\n"\ "a=rtpmap:111 speex/16000\r\n"\ "a=fmtp:111 vbr=on\r\n"\ "a=rtpmap:110 speex/8000\r\n"\ "a=fmtp:110 vbr=on\r\n"\ "a=rtpmap:8 PCMA/8000\r\n"\ "a=rtpmap:101 telephone-event/8000\r\n"\ "a=fmtp:101 0-11\r\n"\ "a=ptime:40\r\n"; belle_sdp_mime_parameter_t* l_param; belle_sdp_mime_parameter_t* lTmp; belle_sdp_media_t* l_media; belle_sip_list_t* mime_parameter_list; belle_sip_list_t* mime_parameter_list_iterator; belle_sdp_media_description_t* l_media_description_tmp = belle_sdp_media_description_parse(l_src); char* sdp = belle_sip_object_to_string(l_media_description_tmp); belle_sdp_media_description_t* l_media_description = belle_sdp_media_description_parse(sdp); belle_sip_free(sdp); belle_sip_object_unref(l_media_description_tmp); mime_parameter_list = belle_sdp_media_description_build_mime_parameters(l_media_description); mime_parameter_list_iterator = mime_parameter_list; BC_ASSERT_PTR_NOT_NULL(mime_parameter_list); belle_sip_object_unref(BELLE_SIP_OBJECT(l_media_description)); l_media_description = belle_sdp_media_description_new(); belle_sdp_media_description_set_media(l_media_description,l_media=belle_sdp_media_parse("m=audio 7078 RTP/AVP 0")); belle_sdp_media_set_media_formats(l_media,belle_sip_list_free(belle_sdp_media_get_media_formats(l_media))); /*to remove 0*/ for (;mime_parameter_list_iterator!=NULL;mime_parameter_list_iterator=mime_parameter_list_iterator->next) { belle_sdp_media_description_append_values_from_mime_parameter(l_media_description,(belle_sdp_mime_parameter_t*)mime_parameter_list_iterator->data); } belle_sip_list_free_with_data(mime_parameter_list, (void (*)(void*))belle_sip_object_unref); /*marshal/unmarshal again*/ l_media_description_tmp = l_media_description; char* media_desc_string = belle_sip_object_to_string(l_media_description); l_media_description= belle_sdp_media_description_parse(media_desc_string); belle_sip_free(media_desc_string); belle_sip_object_unref(l_media_description_tmp); { belle_sip_list_t* attributes=belle_sdp_media_description_get_attributes(l_media_description); #ifdef BELLE_SDP_FORCE_RTP_MAP BC_ASSERT_PTR_NOT_NULL(belle_sip_list_find_custom(attributes,(belle_sip_compare_func)compare_attribute,"8 PCMA/8000")); BC_ASSERT_PTR_NOT_NULL(belle_sip_list_find_custom(attributes,(belle_sip_compare_func)compare_attribute,"18 G729/8000")); #else BC_ASSERT_PTR_NOT_NULL(belle_sip_list_find_custom(attributes,(belle_sip_compare_func)compare_attribute,"8 PCMA/8000")); BC_ASSERT_PTR_NOT_NULL(belle_sip_list_find_custom(attributes,(belle_sip_compare_func)compare_attribute,"18 G729/8000")); #endif } mime_parameter_list = belle_sdp_media_description_build_mime_parameters(l_media_description); belle_sip_object_unref(l_media_description); lTmp = find_mime_parameter(mime_parameter_list,111); l_param = BELLE_SDP_MIME_PARAMETER(belle_sip_object_clone(BELLE_SIP_OBJECT(lTmp))); BC_ASSERT_PTR_NOT_NULL(l_param); check_mime_param(l_param,16000,1,40,-1,111,"speex","vbr=on"); belle_sip_object_unref(l_param); l_param = find_mime_parameter(mime_parameter_list,110); BC_ASSERT_PTR_NOT_NULL(l_param); check_mime_param(l_param,8000,1,40,-1,110,"speex","vbr=on"); l_param = find_mime_parameter(mime_parameter_list,3); BC_ASSERT_PTR_NOT_NULL(l_param); check_mime_param(l_param,8000,1,40,-1,3,"GSM",NULL); l_param = find_mime_parameter(mime_parameter_list,0); BC_ASSERT_PTR_NOT_NULL(l_param); check_mime_param(l_param,8000,1,40,-1,0,"PCMU",NULL); l_param = find_mime_parameter(mime_parameter_list,8); BC_ASSERT_PTR_NOT_NULL(l_param); check_mime_param(l_param,8000,1,40,-1,8,"PCMA",NULL); l_param = find_mime_parameter(mime_parameter_list,9); BC_ASSERT_PTR_NOT_NULL(l_param); check_mime_param(l_param,8000,1,40,-1,9,"G722",NULL); l_param = find_mime_parameter(mime_parameter_list,101); BC_ASSERT_PTR_NOT_NULL(l_param); check_mime_param(l_param,8000,1,40,-1,101,"telephone-event","0-11"); belle_sip_list_free_with_data(mime_parameter_list, (void (*)(void*))belle_sip_object_unref); } test_t sdp_tests[] = { TEST_NO_TAG("a=rtcp-fb", test_rtcp_fb_attribute), TEST_NO_TAG("a= (attribute)", test_attribute), TEST_NO_TAG("a= (attribute) 2", test_attribute_2), TEST_NO_TAG("a=rtcp-xr", test_rtcp_xr_attribute), TEST_NO_TAG("a= (label)", test_label_attribute), TEST_NO_TAG("a= (content)", test_content_attribute), TEST_NO_TAG("a= (csup)", test_csup_attribute), TEST_NO_TAG("a= (creq)", test_creq_attribute), TEST_NO_TAG("a= (tcap)", test_tcap_attribute), TEST_NO_TAG("a= (acap)", test_acap_attribute), TEST_NO_TAG("a= (simple acap)", test_simple_acap_attribute), TEST_NO_TAG("a= (long acap)", test_long_acap_attribute), TEST_NO_TAG("a= (acfg)", test_acfg_attribute), TEST_NO_TAG("a= (pcfg)", test_pcfg_attribute), TEST_NO_TAG("b= (bandwidth)", test_bandwidth), TEST_NO_TAG("o= (IPv4 origin)", test_origin), TEST_NO_TAG("o= (malformed origin)", test_malformed_origin), TEST_NO_TAG("c= (IPv4 connection)", test_connection), TEST_NO_TAG("c= (IPv6 connection)", test_connection_6), TEST_NO_TAG("c= (multicast)", test_connection_multicast), TEST_NO_TAG("e= (email)", test_email), TEST_NO_TAG("i= (info)", test_info), TEST_NO_TAG("m= (media)", test_media), TEST_NO_TAG("mime parameter", test_mime_parameter), TEST_NO_TAG("Media description", test_media_description), TEST_NO_TAG("Simple session description", test_simple_session_description), TEST_NO_TAG("Session description with capability reference before definition", test_session_description_with_capability_referenced_before_definition), TEST_NO_TAG("Session description", test_session_description), TEST_NO_TAG("Session description for fax", test_image_mline), TEST_NO_TAG("Marshal buffer overflow", test_overflow), TEST_NO_TAG("Invalid specialized attribute not parsed as raw attribute", test_session_description_with_invalid_rtcp_fb) }; test_suite_t sdp_test_suite = {"SDP", NULL, NULL, belle_sip_tester_before_each, belle_sip_tester_after_each, sizeof(sdp_tests) / sizeof(sdp_tests[0]), sdp_tests}; belle-sip-5.2.0+dfsg/tester/belle_sip_base_uri_tester.c000066400000000000000000000542001434613136500231670ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "belle-sip/belle-sip.h" #include "belle_sip_tester.h" #include "belle_sip_internal.h" static void testSIMPLEURI(void) { belle_sip_uri_t* L_tmp; belle_sip_uri_t* L_uri = belle_sip_uri_parse("sip:sip.titi.com"); char* l_raw_uri = belle_sip_object_to_string(BELLE_SIP_OBJECT(L_uri)); belle_sip_object_unref(BELLE_SIP_OBJECT(L_uri)); L_tmp = belle_sip_uri_parse(l_raw_uri); L_uri = BELLE_SIP_URI(belle_sip_object_clone(BELLE_SIP_OBJECT(L_tmp))); belle_sip_object_unref(BELLE_SIP_OBJECT(L_tmp)); belle_sip_free(l_raw_uri); BC_ASSERT_PTR_NULL(belle_sip_uri_get_user(L_uri)); BC_ASSERT_STRING_EQUAL(belle_sip_uri_get_host(L_uri), "sip.titi.com"); BC_ASSERT_PTR_NULL(belle_sip_uri_get_transport_param(L_uri)); belle_sip_object_unref(BELLE_SIP_OBJECT(L_uri)); } static void testCOMPLEXURI(void) { belle_sip_uri_t* L_tmp; belle_sip_uri_t * L_uri = belle_sip_uri_parse("sip:toto@1titi.com:5060;transport=tcp"); char* l_raw_uri = belle_sip_object_to_string(BELLE_SIP_OBJECT(L_uri)); belle_sip_object_unref(BELLE_SIP_OBJECT(L_uri)); L_tmp = belle_sip_uri_parse(l_raw_uri); L_uri = BELLE_SIP_URI(belle_sip_object_clone(BELLE_SIP_OBJECT(L_tmp))); belle_sip_object_unref(BELLE_SIP_OBJECT(L_tmp)); belle_sip_free(l_raw_uri); BC_ASSERT_STRING_EQUAL(belle_sip_uri_get_user(L_uri), "toto"); BC_ASSERT_EQUAL(belle_sip_uri_get_port(L_uri), 5060, int, "%d"); BC_ASSERT_STRING_EQUAL(belle_sip_uri_get_host(L_uri), "1titi.com"); BC_ASSERT_STRING_EQUAL(belle_sip_uri_get_transport_param(L_uri), "tcp"); belle_sip_object_unref(BELLE_SIP_OBJECT(L_uri)); } static void testIPV6URI_base(const char* ip6) { belle_sip_uri_t* L_tmp; belle_sip_uri_t * L_uri; char* l_raw_uri; char uri[256]; snprintf(uri,sizeof(uri),"sip:toto@[%s]:5060;transport=tcp",ip6); L_uri = belle_sip_uri_parse(uri); l_raw_uri = belle_sip_object_to_string(BELLE_SIP_OBJECT(L_uri)); belle_sip_object_unref(BELLE_SIP_OBJECT(L_uri)); L_tmp = belle_sip_uri_parse(l_raw_uri); L_uri = BELLE_SIP_URI(belle_sip_object_clone(BELLE_SIP_OBJECT(L_tmp))); belle_sip_object_unref(BELLE_SIP_OBJECT(L_tmp)); belle_sip_free(l_raw_uri); BC_ASSERT_STRING_EQUAL(belle_sip_uri_get_user(L_uri), "toto"); BC_ASSERT_EQUAL(belle_sip_uri_get_port(L_uri), 5060, int, "%d"); BC_ASSERT_STRING_EQUAL(belle_sip_uri_get_host(L_uri),ip6); BC_ASSERT_STRING_EQUAL(belle_sip_uri_get_transport_param(L_uri), "tcp"); belle_sip_object_unref(BELLE_SIP_OBJECT(L_uri)); } static void testIPV6URI(void) { testIPV6URI_base("fe80::1"); testIPV6URI_base("2a01:e35:1387:1020:6233:4bff:fe0b:5663"); testIPV6URI_base("2a01:e35:1387:1020:6233::5663"); // Examples from RFC4291 (Keep for testing one digit '0' in address) testIPV6URI_base("2001:DB8:0:0:8:800:200C:417A");// a unicast address testIPV6URI_base("FF01:0:0:0:0:0:0:101");// a multicast address testIPV6URI_base("0:0:0:0:0:0:0:1"); // the loopback address testIPV6URI_base("0:0:0:0:0:0:0:0"); // the unspecified address // Alternative representations testIPV6URI_base("2001:DB8::8:800:200C:417A"); testIPV6URI_base("FF01::101"); testIPV6URI_base("::1"); testIPV6URI_base("::"); testIPV6URI_base("0:0:0:0:0:0:13.1.68.3"); testIPV6URI_base("0:0:0:0:0:FFFF:129.144.52.38"); // Compressed form with IPV4 testIPV6URI_base("::13.1.68.3"); testIPV6URI_base("::FFFF:129.144.52.38"); testIPV6URI_base("2a01:e35:1387:1020::192.168.1.1"); } static void testSIPSURI(void) { belle_sip_uri_t * L_uri = belle_sip_uri_parse("sips:linphone.org"); char* l_raw_uri = belle_sip_object_to_string(BELLE_SIP_OBJECT(L_uri)); belle_sip_object_unref(BELLE_SIP_OBJECT(L_uri)); L_uri = belle_sip_uri_parse(l_raw_uri); belle_sip_free(l_raw_uri); BC_ASSERT_EQUAL(belle_sip_uri_is_secure(L_uri), 1, int, "%d"); belle_sip_object_unref(BELLE_SIP_OBJECT(L_uri)); L_uri = belle_sip_uri_parse("sip:linphone.org"); BC_ASSERT_EQUAL(belle_sip_uri_is_secure(L_uri), 0, int, "%d"); belle_sip_object_unref(BELLE_SIP_OBJECT(L_uri)); } static void test_ip_host(void) { belle_sip_uri_t * L_uri = belle_sip_uri_parse("sip:192.168.0.1"); char* l_raw_uri = belle_sip_object_to_string(BELLE_SIP_OBJECT(L_uri)); belle_sip_object_unref(BELLE_SIP_OBJECT(L_uri)); L_uri = belle_sip_uri_parse(l_raw_uri); belle_sip_free(l_raw_uri); BC_ASSERT_STRING_EQUAL(belle_sip_uri_get_host(L_uri), "192.168.0.1"); belle_sip_object_unref(BELLE_SIP_OBJECT(L_uri)); } static void test_lr(void) { belle_sip_uri_t * L_uri = belle_sip_uri_parse("sip:192.168.0.1;lr"); char* l_raw_uri = belle_sip_object_to_string(BELLE_SIP_OBJECT(L_uri)); belle_sip_object_unref(BELLE_SIP_OBJECT(L_uri)); L_uri = belle_sip_uri_parse(l_raw_uri); belle_sip_free(l_raw_uri); BC_ASSERT_STRING_EQUAL(belle_sip_uri_get_host(L_uri), "192.168.0.1"); BC_ASSERT_EQUAL(belle_sip_uri_has_lr_param(L_uri), 1, int, "%d"); belle_sip_object_unref(BELLE_SIP_OBJECT(L_uri)); } static void test_maddr(void) { belle_sip_uri_t * L_uri = belle_sip_uri_parse("sip:192.168.0.1;lr;maddr=linphone.org"); char* l_raw_uri = belle_sip_object_to_string(BELLE_SIP_OBJECT(L_uri)); belle_sip_object_unref(BELLE_SIP_OBJECT(L_uri)); L_uri = belle_sip_uri_parse(l_raw_uri); belle_sip_free(l_raw_uri); BC_ASSERT_STRING_EQUAL(belle_sip_uri_get_maddr_param(L_uri), "linphone.org"); belle_sip_object_unref(BELLE_SIP_OBJECT(L_uri)); } static void test_user_passwd(void) { belle_sip_uri_t * L_uri = belle_sip_uri_parse("sip:toto:tata@bla;"); char* l_raw_uri = belle_sip_object_to_string(BELLE_SIP_OBJECT(L_uri)); belle_sip_object_unref(BELLE_SIP_OBJECT(L_uri)); L_uri = belle_sip_uri_parse(l_raw_uri); belle_sip_free(l_raw_uri); BC_ASSERT_STRING_EQUAL(belle_sip_uri_get_user_password(L_uri), "tata"); belle_sip_object_unref(BELLE_SIP_OBJECT(L_uri)); } static void test_uri_parameters (void) { char* l_raw_uri; belle_sip_uri_t* L_tmp; belle_sip_uri_t * L_uri = belle_sip_uri_parse("sip:192.168.0.1;ttl=12"); belle_sip_object_unref(BELLE_SIP_OBJECT(L_uri)); L_uri = belle_sip_uri_parse("sip:maddr=@192.168.0.1;lr;maddr=192.168.0.1;user=ip;ttl=140;transport=sctp;method=INVITE;rport=5060"); l_raw_uri = belle_sip_object_to_string(BELLE_SIP_OBJECT(L_uri)); belle_sip_object_unref(BELLE_SIP_OBJECT(L_uri)); L_tmp = belle_sip_uri_parse(l_raw_uri); L_uri = BELLE_SIP_URI(belle_sip_object_clone(BELLE_SIP_OBJECT(L_tmp))); belle_sip_object_unref(BELLE_SIP_OBJECT(L_tmp)); belle_sip_free(l_raw_uri); BC_ASSERT_STRING_EQUAL(belle_sip_uri_get_maddr_param(L_uri), "192.168.0.1"); BC_ASSERT_STRING_EQUAL(belle_sip_uri_get_user_param(L_uri), "ip"); BC_ASSERT_EQUAL(belle_sip_uri_get_ttl_param(L_uri),140, int, "%d"); BC_ASSERT_STRING_EQUAL(belle_sip_uri_get_transport_param(L_uri), "sctp"); BC_ASSERT_STRING_EQUAL(belle_sip_uri_get_method_param(L_uri), "INVITE"); belle_sip_object_unref(BELLE_SIP_OBJECT(L_uri)); } static void test_headers(void) { belle_sip_uri_t * L_uri = belle_sip_uri_parse("sip:192.168.0.1?toto=titi"); char* l_raw_uri = belle_sip_object_to_string(BELLE_SIP_OBJECT(L_uri)); belle_sip_object_unref(BELLE_SIP_OBJECT(L_uri)); L_uri = belle_sip_uri_parse(l_raw_uri); belle_sip_free(l_raw_uri); if (!BC_ASSERT_PTR_NOT_NULL(belle_sip_uri_get_header(L_uri,"toto"))) return; BC_ASSERT_STRING_EQUAL(belle_sip_uri_get_header(L_uri,"toto"), "titi"); BC_ASSERT_PTR_NULL(belle_sip_uri_get_header(L_uri,"bla")); belle_sip_object_unref(BELLE_SIP_OBJECT(L_uri)); L_uri = belle_sip_uri_parse("sip:192.168.0.1?toto=titi&header2=popo&header3="); l_raw_uri = belle_sip_object_to_string(BELLE_SIP_OBJECT(L_uri)); belle_sip_object_unref(BELLE_SIP_OBJECT(L_uri)); L_uri = belle_sip_uri_parse(l_raw_uri); belle_sip_free(l_raw_uri); if (!BC_ASSERT_PTR_NOT_NULL(belle_sip_uri_get_header(L_uri,"toto"))) return; BC_ASSERT_STRING_EQUAL(belle_sip_uri_get_header(L_uri,"header2"), "popo"); belle_sip_object_unref(L_uri); } static void test_escaped_headers(void) { const char* raw_uri_2= "sip:eNgwBpkNcH6EdTHlX0cq8@toto.com?" "P-Group-Id=Fu0hHIQ23H4hveVT:New%20Group" "&P-Expert-Profile-Id=zKQOBOB2jTmUOjkB:New%20Group" "&P-Reverse-Charging=0&P-Campaign-Id=none" "&P-Embed-Url=https://toto.com/caller/?1.4.0-dev-42-91bdf0c%26id%3DFu0hHIQ23H4hveVT%26CAMPAIGN_ID%3Dnone"; belle_sip_uri_t * L_uri = belle_sip_uri_parse("sip:toto@sip.linhone.org?User-to-User=323a313030363a3230385a48363039313941364b4342463845495936%3Bencoding%3Dhex"); char* l_raw_uri = belle_sip_object_to_string(BELLE_SIP_OBJECT(L_uri)); belle_sip_object_unref(BELLE_SIP_OBJECT(L_uri)); L_uri = belle_sip_uri_parse(l_raw_uri); belle_sip_free(l_raw_uri); if (!BC_ASSERT_PTR_NOT_NULL(belle_sip_uri_get_header(L_uri,"User-to-User"))) return; BC_ASSERT_STRING_EQUAL(belle_sip_uri_get_header(L_uri,"User-to-User"), "323a313030363a3230385a48363039313941364b4342463845495936;encoding=hex"); belle_sip_object_unref(L_uri); L_uri = belle_sip_uri_parse(raw_uri_2); l_raw_uri = belle_sip_object_to_string(BELLE_SIP_OBJECT(L_uri)); belle_sip_free(l_raw_uri); if (!BC_ASSERT_PTR_NOT_NULL(belle_sip_uri_get_header(L_uri,"P-Embed-Url"))) return; BC_ASSERT_STRING_EQUAL(belle_sip_uri_get_header(L_uri,"P-Embed-Url"), "https://toto.com/caller/?1.4.0-dev-42-91bdf0c&id=Fu0hHIQ23H4hveVT&CAMPAIGN_ID=none"); belle_sip_object_unref(L_uri); } static void testSIMPLEURI_error(void) { belle_sip_uri_t* L_uri = belle_sip_uri_parse("siptcom"); BC_ASSERT_PTR_NULL(L_uri); } static void test_escaped_username(void) { belle_sip_uri_t* L_tmp; belle_sip_uri_t * L_uri = belle_sip_uri_parse("sip:toto%40linphone.org@titi.com"); char* l_raw_uri = belle_sip_object_to_string(BELLE_SIP_OBJECT(L_uri)); belle_sip_object_unref(BELLE_SIP_OBJECT(L_uri)); L_tmp = belle_sip_uri_parse(l_raw_uri); L_uri = BELLE_SIP_URI(belle_sip_object_clone(BELLE_SIP_OBJECT(L_tmp))); belle_sip_object_unref(BELLE_SIP_OBJECT(L_tmp)); belle_sip_free(l_raw_uri); BC_ASSERT_STRING_EQUAL(belle_sip_uri_get_user(L_uri), "toto@linphone.org"); BC_ASSERT_STRING_EQUAL(belle_sip_uri_get_host(L_uri), "titi.com"); belle_sip_object_unref(BELLE_SIP_OBJECT(L_uri)); } static void test_escaped_passwd(void) { belle_sip_uri_t* L_tmp; belle_sip_uri_t * L_uri = belle_sip_uri_parse("sips:%22jehan%22%20%3cjehan%40sip2.linphone.org:544%3e@sip.linphone.org"); char* l_raw_uri = belle_sip_object_to_string(BELLE_SIP_OBJECT(L_uri)); belle_sip_object_unref(BELLE_SIP_OBJECT(L_uri)); L_tmp = belle_sip_uri_parse(l_raw_uri); L_uri = BELLE_SIP_URI(belle_sip_object_clone(BELLE_SIP_OBJECT(L_tmp))); belle_sip_object_unref(BELLE_SIP_OBJECT(L_tmp)); belle_sip_free(l_raw_uri); BC_ASSERT_STRING_EQUAL(belle_sip_uri_get_user(L_uri), "\"jehan\" "); belle_sip_object_unref(BELLE_SIP_OBJECT(L_uri)); } static void test_escaped_parameter(void) { belle_sip_uri_t* L_tmp; belle_sip_uri_t * L_uri = belle_sip_uri_parse("sip:toto@titi.com;pa%3Dram=aa%40bb:5060[];o%40"); char* l_raw_uri = belle_sip_object_to_string(BELLE_SIP_OBJECT(L_uri)); belle_sip_object_unref(BELLE_SIP_OBJECT(L_uri)); L_tmp = belle_sip_uri_parse(l_raw_uri); L_uri = BELLE_SIP_URI(belle_sip_object_clone(BELLE_SIP_OBJECT(L_tmp))); belle_sip_object_unref(BELLE_SIP_OBJECT(L_tmp)); belle_sip_free(l_raw_uri); BC_ASSERT_STRING_EQUAL(belle_sip_parameters_get_parameter(BELLE_SIP_PARAMETERS(L_uri), "pa=ram"), "aa@bb:5060[]"); BC_ASSERT_TRUE(belle_sip_parameters_has_parameter(BELLE_SIP_PARAMETERS(L_uri), "o@")); BC_ASSERT_STRING_EQUAL(belle_sip_uri_get_host(L_uri), "titi.com"); belle_sip_object_unref(BELLE_SIP_OBJECT(L_uri)); } static void test_uri_equals(void) { belle_sip_uri_t* a; belle_sip_uri_t* b; /* * The URIs within each of the following sets are equivalent: sip:%61lice@atlanta.com;transport=TCP sip:alice@AtLanTa.CoM;Transport=tcp */ a = belle_sip_uri_parse("sip:%61lice@atlanta.com;transport=TCP"); if (!BC_ASSERT_PTR_NOT_NULL(a)) return; b = belle_sip_uri_parse("sip:alice@AtLanTa.CoM;Transport=tcp"); if (!BC_ASSERT_PTR_NOT_NULL(b)) return; BC_ASSERT_TRUE(belle_sip_uri_equals(a,b)); belle_sip_object_unref(a); belle_sip_object_unref(b); /* sip:carol@chicago.com sip:carol@chicago.com;newparam=5 sip:carol@chicago.com;security=on */ a = belle_sip_uri_parse("sip:carol@chicago.com"); if (!BC_ASSERT_PTR_NOT_NULL(a)) return; b = belle_sip_uri_parse("sip:carol@chicago.com;newparam=5"); if (!BC_ASSERT_PTR_NOT_NULL(b)) return; BC_ASSERT_TRUE(belle_sip_uri_equals(a,b)); belle_sip_object_unref(a); belle_sip_object_unref(b); /* sip:biloxi.com;transport=tcp;method=REGISTER?to=sip:bob%40biloxi.com sip:biloxi.com;method=REGISTER;transport=tcp?to=sip:bob%40biloxi.com */ a = belle_sip_uri_parse("sip:biloxi.com;transport=tcp;method=REGISTER?to=sip:bob%40biloxi.com"); if (!BC_ASSERT_PTR_NOT_NULL(a)) return; b = belle_sip_uri_parse("sip:biloxi.com;method=REGISTER;transport=tcp?to=sip:bob%40biloxi.com"); if (!BC_ASSERT_PTR_NOT_NULL(b)) return; BC_ASSERT_TRUE(belle_sip_uri_equals(a,b)); belle_sip_object_unref(a); belle_sip_object_unref(b); /* sip:alice@atlanta.com?subject=project%20x&priority=urgent sip:alice@atlanta.com?priority=urgent&subject=project%20x The URIs within each of the following sets are not equivalent: SIP:ALICE@AtLanTa.CoM;Transport=udp (different usernames) sip:alice@AtLanTa.CoM;Transport=UDP */ a = belle_sip_uri_parse("sip:ALICE@AtLanTa.CoM;Transport=udp"); if (!BC_ASSERT_PTR_NOT_NULL(a)) return; b = belle_sip_uri_parse("sip:alice@AtLanTa.CoM;Transport=UDP"); if (!BC_ASSERT_PTR_NOT_NULL(b)) return; BC_ASSERT_FALSE(belle_sip_uri_equals(a,b)); belle_sip_object_unref(a); belle_sip_object_unref(b); /* sip:bob@biloxi.com (can resolve to different ports) sip:bob@biloxi.com:5060 */ a = belle_sip_uri_parse("sip:ALICE@AtLanTa.CoM;Transport=udp"); if (!BC_ASSERT_PTR_NOT_NULL(a)) return; b = belle_sip_uri_parse("sip:alice@AtLanTa.CoM;Transport=UDP"); if (!BC_ASSERT_PTR_NOT_NULL(b)) return; BC_ASSERT_FALSE(belle_sip_uri_equals(a,b)); belle_sip_object_unref(a); belle_sip_object_unref(b); /* sip:bob@biloxi.com (can resolve to different transports) sip:bob@biloxi.com;transport=udp */ a = belle_sip_uri_parse("sip:bob@biloxi.com"); if (!BC_ASSERT_PTR_NOT_NULL(a)) return; b = belle_sip_uri_parse("sip:bob@biloxi.com;transport=udp"); if (!BC_ASSERT_PTR_NOT_NULL(b)) return; BC_ASSERT_FALSE(belle_sip_uri_equals(a,b)); belle_sip_object_unref(a); belle_sip_object_unref(b); /* sip:bob@biloxi.com (can resolve to different port and transports) sip:bob@biloxi.com:6000;transport=tcp */ a = belle_sip_uri_parse("sip:bob@biloxi.com"); if (!BC_ASSERT_PTR_NOT_NULL(a)) return; b = belle_sip_uri_parse("sip:bob@biloxi.com:6000;transport=tcp"); if (!BC_ASSERT_PTR_NOT_NULL(b)) return; BC_ASSERT_FALSE(belle_sip_uri_equals(a,b)); belle_sip_object_unref(a); belle_sip_object_unref(b); a = belle_sip_uri_parse("sip:bob@biloxi.com"); if (!BC_ASSERT_PTR_NOT_NULL(a)) return; b = belle_sip_uri_parse("sip:boba@biloxi.com"); if (!BC_ASSERT_PTR_NOT_NULL(b)) return; BC_ASSERT_FALSE(belle_sip_uri_equals(a,b)); belle_sip_object_unref(a); belle_sip_object_unref(b); /* sip:carol@chicago.com (different header component) sip:carol@chicago.com?Subject=next%20meeting sip:bob@phone21.boxesbybob.com (even though that's what sip:bob@192.0.2.4 phone21.boxesbybob.com resolves to) Note that equality is not transitive: o sip:carol@chicago.com and sip:carol@chicago.com;security=on are equivalent o sip:carol@chicago.com and sip:carol@chicago.com;security=off are equivalent o sip:carol@chicago.com;security=on and sip:carol@chicago.com;security=off are not equivalent Rosenberg, et. al. Standards Track [Page 155] RFC 3261 SIP: Session Initiation Protocol June 2002 */ } /* * From 19.1.1 SIP and SIPS URI Components * dialog reg./redir. Contact/ default Req.-URI To From Contact R-R/Route external user -- o o o o o o password -- o o o o o o host -- m m m m m m port (1) o - - o o o user-param ip o o o o o o method INVITE - - - - - o maddr-param -- o - - o o o ttl-param 1 o - - o - o transp.-param (2) o - - o o o lr-param -- o - - - o o other-param -- o o o o o o headers -- - - - o - o*/ static void testUriComponentsChecker(void) { belle_sip_uri_t* uri = belle_sip_uri_parse("sip:hostonly"); BC_ASSERT_TRUE(belle_sip_uri_check_components_from_request_uri(uri)); belle_sip_object_unref(uri); { belle_sip_header_from_t* header = belle_sip_header_from_parse("From: sip:linphone.org:5061"); BC_ASSERT_FALSE(belle_sip_uri_check_components_from_context(belle_sip_header_address_get_uri(BELLE_SIP_HEADER_ADDRESS(header)),NULL,"From")); belle_sip_object_unref(header); } { belle_sip_header_to_t* header = belle_sip_header_to_parse("To: sip:linphone.org?header=interdit"); BC_ASSERT_FALSE(belle_sip_uri_check_components_from_context(belle_sip_header_address_get_uri(BELLE_SIP_HEADER_ADDRESS(header)),NULL,"To")); belle_sip_object_unref(header); } { belle_sip_header_contact_t* header = belle_sip_header_contact_parse("Contact: "); BC_ASSERT_FALSE(belle_sip_uri_check_components_from_context(belle_sip_header_address_get_uri(BELLE_SIP_HEADER_ADDRESS(header)),"REGISTER","Contact")); BC_ASSERT_TRUE(belle_sip_uri_check_components_from_context(belle_sip_header_address_get_uri(BELLE_SIP_HEADER_ADDRESS(header)),NULL,"Contact")); belle_sip_object_unref(header); } { belle_sip_header_record_route_t* header = belle_sip_header_record_route_parse("Record-Route: "); BC_ASSERT_FALSE(belle_sip_uri_check_components_from_context(belle_sip_header_address_get_uri(BELLE_SIP_HEADER_ADDRESS(header)),NULL,"Record-Route")); belle_sip_object_unref(header); } { belle_sip_uri_t* uri = belle_sip_uri_parse("sip:linphone.org:5061?header=toto"); BC_ASSERT_TRUE(belle_sip_uri_check_components_from_context(uri,NULL,"Any")); belle_sip_object_unref(uri); } } static void test_escaping_bad_chars(void){ char bad_uri[13] = { 'h', 'e', 'l', 'l', 'o', (char)0xa0, (char)0xc8, 'w', 'o', 'r', 'l', 'd', 0x0 }; char *escaped = belle_sip_uri_to_escaped_username(bad_uri); const char *expected="hello%a0%c8world"; BC_ASSERT_STRING_EQUAL(escaped, expected); belle_sip_free(escaped); char *bad_uri2 = "François"; escaped = belle_sip_uri_to_escaped_username(bad_uri2); const char *expected2="Fran%c3%a7ois"; BC_ASSERT_STRING_EQUAL(escaped, expected2); belle_sip_free(escaped); } static void test_unescaping_good_chars(void){ char phone_number[13] = { (char)0x2b, '3', '3', '6', '4', '5', '4', '9', '9', '9', '4', '3', 0x0 }; char *unescaped = belle_sip_username_unescape_unnecessary_characters(phone_number); // '+' can be unescaped const char *expected="+33645499943"; BC_ASSERT_STRING_EQUAL(unescaped, expected); belle_sip_free(unescaped); char username[10] = { 'F', 'r', 'a', 'n', (char)0xc3, (char)0xa7, 'o', 'i', 's', 0x0 }; unescaped = belle_sip_username_unescape_unnecessary_characters(username); // 'ç' needs to be kept escaped const char *expected2="Fran%c3%a7ois"; BC_ASSERT_STRING_EQUAL(unescaped, expected2); belle_sip_free(unescaped); } static belle_sip_header_address_t* test_header_address_parsing(const char* address, int expect_fail){ belle_sip_header_address_t* header_address = belle_sip_header_address_parse(address); if( expect_fail == TRUE ){ BC_ASSERT_PTR_NULL(header_address); } else { BC_ASSERT_PTR_NOT_NULL(header_address); } return header_address; } static void test_empty_password(void){ const char *address_fail = "sip:France:@+123456789"; const char *address_valid = "sip:France:@toto"; const char* passwd; belle_sip_header_address_t* headerAddr; belle_sip_uri_t* uri; (void)test_header_address_parsing(address_fail, TRUE); headerAddr = test_header_address_parsing(address_valid, FALSE); BC_ASSERT_PTR_NOT_NULL(headerAddr); uri = belle_sip_header_address_get_uri(headerAddr); BC_ASSERT_PTR_NOT_NULL(uri); passwd = belle_sip_uri_get_user_password(uri); BC_ASSERT_PTR_EQUAL(passwd, NULL); if (headerAddr) belle_sip_object_unref(headerAddr); } static test_t uri_tests[] = { TEST_NO_TAG("Simple URI", testSIMPLEURI), TEST_NO_TAG("Complex URI", testCOMPLEXURI), TEST_NO_TAG("Escaped username", test_escaped_username), TEST_NO_TAG("Escaped username with bad chars", test_escaping_bad_chars), TEST_NO_TAG("Unescape username", test_unescaping_good_chars), TEST_NO_TAG("Escaped parameter", test_escaped_parameter), TEST_NO_TAG("Escaped passwd", test_escaped_passwd), TEST_NO_TAG("User passwd", test_user_passwd), TEST_NO_TAG("IP host", test_ip_host), TEST_NO_TAG("lr", test_lr), TEST_NO_TAG("maddr", test_maddr), TEST_NO_TAG("headers", test_headers), TEST_NO_TAG("Escaped headers", test_escaped_headers), TEST_NO_TAG("URI parameters", test_uri_parameters), TEST_NO_TAG("SIPS URI", testSIPSURI), TEST_NO_TAG("URI equals", test_uri_equals), TEST_NO_TAG("Simple URI error", testSIMPLEURI_error), TEST_NO_TAG("IPv6 URI", testIPV6URI), TEST_NO_TAG("URI components", testUriComponentsChecker), TEST_NO_TAG("Empty password", test_empty_password), }; belle-sip-5.2.0+dfsg/tester/belle_sip_core_tester.c000066400000000000000000000322451434613136500223330ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "belle-sip/belle-sip.h" #include "belle-sip/object.h" #include "belle-sip/dict.h" #include "belle_sip_tester.h" #include "belle_sip_internal.h" #include "register_tester.h" #ifndef _WIN32 #include #include #endif #define INT_TO_VOIDPTR(i) ((void*)(intptr_t)(i)) #define VOIDPTR_TO_INT(p) ((int)(intptr_t)(p)) static int foreach_called = 0; static int destroy_called = 0; static int clone_called = 0; static void test_object_data_string_destroy(void* data){ belle_sip_free(data); destroy_called++; } static void* test_object_data_string_clone(const char*name, void* data){ clone_called++; if( strcmp(name, "test_str") == 0) return belle_sip_strdup(data); else return data; } static void test_object_data_foreach_cb(const char*name, void*data, void*udata) { (void)name; (void)data; (void)udata; foreach_called++; } static void test_object_data(void) { belle_sip_object_t* obj = belle_sip_object_new(belle_sip_object_t); belle_sip_object_t* cloned = belle_sip_object_new(belle_sip_object_t); int i = 123; const char* str = "toto", *str2 = "titi"; /* normal insertion with no destroy callback */ // should return 0 BC_ASSERT_EQUAL(belle_sip_object_data_set(obj, "test_i", INT_TO_VOIDPTR(i), NULL), 0, int, "%d"); // should return the value we put in it BC_ASSERT_EQUAL( VOIDPTR_TO_INT(belle_sip_object_data_get(obj, "test_i")), i, int, "%d"); /* * Overwriting insertion */ // overwrite data: should return 1 when set() i = 124; BC_ASSERT_EQUAL(belle_sip_object_data_set(obj, "test_i", INT_TO_VOIDPTR(i), NULL), 1 , int, "%d"); // should return the new value we put in it BC_ASSERT_EQUAL( VOIDPTR_TO_INT(belle_sip_object_data_get(obj, "test_i")), i, int, "%d"); /* * normal insertion with destroy callback */ BC_ASSERT_EQUAL(belle_sip_object_data_set(obj, "test_str", (void*)belle_sip_strdup(str), test_object_data_string_destroy), 0, int, "%d"); // we should get back the same string BC_ASSERT_STRING_EQUAL( (const char*)belle_sip_object_data_get(obj, "test_str"), str ); BC_ASSERT_EQUAL(belle_sip_object_data_remove(obj, "test_str"),0, int, "%d"); // we expect the destroy() function to be called on removal BC_ASSERT_EQUAL(destroy_called, 1, int, "%d"); destroy_called = 0; /* * string insertion and replace */ belle_sip_object_data_set(obj, "test_str", (void*)belle_sip_strdup(str), test_object_data_string_destroy); belle_sip_object_data_set(obj, "test_str", (void*)belle_sip_strdup(str2), test_object_data_string_destroy); BC_ASSERT_EQUAL(destroy_called, 1, int, "%d"); // we expect the dtor to have been called to free the first string /* * Get non-existent key */ BC_ASSERT_PTR_NULL(belle_sip_object_data_get(obj, "non-exist")); /* * test cloning the dictionary */ belle_sip_object_data_clone(obj, cloned, test_object_data_string_clone); BC_ASSERT_EQUAL(clone_called,2,int,"%d"); // we expect the clone function to be called for "test_i" and "test_st, int, "%d"r" // the values should be equal BC_ASSERT_EQUAL( VOIDPTR_TO_INT(belle_sip_object_data_get(obj, "test_i")), VOIDPTR_TO_INT(belle_sip_object_data_get(cloned, "test_i")) , int, "%d"); BC_ASSERT_STRING_EQUAL( (const char*)belle_sip_object_data_get(obj, "test_str"), (const char*)belle_sip_object_data_get(cloned, "test_str")); // but the pointers should be different BC_ASSERT_PTR_NOT_EQUAL( belle_sip_object_data_get(obj, "test_str"), belle_sip_object_data_get(cloned, "test_str")); /* * Foreach test */ belle_sip_object_data_foreach(obj, test_object_data_foreach_cb, NULL); BC_ASSERT_EQUAL( foreach_called, 2 , int, "%d"); belle_sip_object_unref(obj); belle_sip_object_unref(cloned); } static void test_dictionary(void) { belle_sip_dict_t* obj = belle_sip_object_new(belle_sip_dict_t); const char* str = ""; int i = 5; int64_t i64 = 0xF2345678 << 1; // gcc doesn't like 0x1234567890 as a 64 bit literal.. belle_sip_dict_set_int(obj, "test_i", i); BC_ASSERT_EQUAL(belle_sip_dict_get_int(obj,"test_i",-1),i, int, "%d"); // return default int value BC_ASSERT_EQUAL(belle_sip_dict_get_int(obj,"unexistent",-1),-1, int, "%d"); // remove existing entry BC_ASSERT_EQUAL(belle_sip_dict_remove(obj, "test_i"),0, int, "%d"); // test_i should't be present anymore BC_ASSERT_EQUAL(belle_sip_dict_get_int(obj,"test_i",-1),-1, int, "%d"); // remove unknown entry BC_ASSERT_NOT_EQUAL(belle_sip_dict_remove(obj, "unexistent"),0,int,"%d"); belle_sip_dict_set_string(obj, "test_str", str); BC_ASSERT_STRING_EQUAL( (const char*)belle_sip_dict_get_string(obj, "test_str", ""),str); // unknown string value BC_ASSERT_STRING_EQUAL( (const char*)belle_sip_dict_get_string(obj, "unexistent", "toto"),"toto"); belle_sip_dict_set_int64(obj, "test_i64", i64); BC_ASSERT_EQUAL(belle_sip_dict_get_int64(obj,"test_i64",-1),i64, long long, "%lld"); belle_sip_dict_clear(obj); // test_str shouldn't exist anymore BC_ASSERT_STRING_EQUAL(belle_sip_dict_get_string(obj,"test_str","toto"),"toto"); belle_sip_object_unref(obj); } static const char *parts_id[] = { "6h-Yqv3@sip.linphonecyberattack.fr", "Azgwg6Q@sip.linphonecyberattack.fr", "0NKY7am@sip.linphonecyberattack.fr", "p8AxOjL@sip.linphonecyberattack.fr", "HqquRnL@sip.linphonecyberattack.fr", "ftVeEXj@sip.linphonecyberattack.fr", "3OQQ~t4@sip.linphonecyberattack.fr" }; static const char *parts_content[] = { "\n" "\n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" " \n" "\n", "\n" "\n" " \n" " \n" " open\n" " \n" " sip:francois@sip.linphonecyberattack.fr\n" " 2016-06-13T16:12:48\n" " \n" "", "\n" "\n" " \n" " \n" " open\n" " \n" " sip:simon@sip.linphonecyberattack.fr\n" " 2016-06-13T16:12:48\n" " \n" "", "\n" "\n" " \n" " \n" " open\n" " \n" " sip:gautier@sip.linphonecyberattack.fr\n" " 2016-06-13T16:12:48\n" " \n" "", "\n" "\n" " \n" " \n" " open\n" " \n" " sip:margaux@sip.linphonecyberattack.fr\n" " 2016-06-13T16:12:48\n" " \n" "", "\n" "\n" " \n" " \n" " open\n" " \n" " sip:marielle@sip.linphonecyberattack.fr\n" " 2016-06-13T16:12:48\n" " \n" "", "\n" "\n" " \n" " \n" " open\n" " \n" " sip:sylvain@sip.linphonecyberattack.fr\n" " 2016-06-13T16:12:48\n" " \n" "" }; static void test_presence_marshal(void) { char *desc; unsigned int i; belle_sip_memory_body_handler_t *mbh; belle_sip_multipart_body_handler_t *mpbh = belle_sip_multipart_body_handler_new(NULL, NULL, NULL, MULTIPART_BOUNDARY); belle_sip_object_ref(mpbh); for (i = 0; i < 7; i++) { belle_sip_header_t *content_transfer_encoding = belle_sip_header_create("Content-Transfer-Encoding", "binary"); belle_sip_header_t *content_id = belle_sip_header_create("Content-Id", parts_id[i]); belle_sip_header_t *content_type; if (i == 0) { content_type = BELLE_SIP_HEADER(belle_sip_header_content_type_create("application", "rlmi+xml; charset=\"UTF-8\"")); } else { content_type = BELLE_SIP_HEADER(belle_sip_header_content_type_create("application", "pidf+xml; charset=\"UTF-8\"")); } mbh = belle_sip_memory_body_handler_new_copy_from_buffer((void *)parts_content[i], strlen(parts_content[i]), NULL, NULL); belle_sip_body_handler_add_header(BELLE_SIP_BODY_HANDLER(mbh), content_transfer_encoding); belle_sip_body_handler_add_header(BELLE_SIP_BODY_HANDLER(mbh), content_id); belle_sip_body_handler_add_header(BELLE_SIP_BODY_HANDLER(mbh), content_type); belle_sip_multipart_body_handler_add_part(mpbh, BELLE_SIP_BODY_HANDLER(mbh)); } desc = belle_sip_object_to_string(mpbh); BC_ASSERT_PTR_NOT_NULL(desc); if (desc != NULL) { BC_ASSERT_EQUAL((unsigned int)strlen(desc), 4688, unsigned int, "%u"); belle_sip_message("Body is [%s]",desc); } belle_sip_multipart_body_handler_t *memory_mpbh = belle_sip_multipart_body_handler_new_from_buffer(desc, strlen(desc), belle_sip_multipart_body_handler_get_boundary(mpbh)); const bctbx_list_t * parts = belle_sip_multipart_body_handler_get_parts(memory_mpbh); for (i = 0; i < 7 ; i++) { belle_sip_body_handler_t *part = (belle_sip_body_handler_t *)parts->data; BC_ASSERT_EQUAL((int)belle_sip_body_handler_get_size(part), (int)strlen(parts_content[i]), int, "%i"); parts = parts->next; } belle_sip_object_unref(mpbh); belle_sip_object_unref(memory_mpbh); } static void test_compressed_body(void) { belle_sip_memory_body_handler_t *mbh = belle_sip_memory_body_handler_new_copy_from_buffer((void *)parts_content[0], strlen(parts_content[0]), NULL, NULL); belle_sip_memory_body_handler_apply_encoding(mbh, "deflate"); BC_ASSERT_EQUAL(belle_sip_memory_body_handler_unapply_encoding(mbh, "deflate"), 0, int, "%i"); belle_sip_object_unref(mbh); } static void test_truncated_compressed_body(void) { belle_sip_memory_body_handler_t *mbh = belle_sip_memory_body_handler_new_copy_from_buffer((void *)parts_content[0], strlen(parts_content[0]), NULL, NULL); belle_sip_memory_body_handler_apply_encoding(mbh, "deflate"); /* Truncate the body */ belle_sip_body_handler_set_size(BELLE_SIP_BODY_HANDLER(mbh), belle_sip_body_handler_get_size(BELLE_SIP_BODY_HANDLER(mbh)) - 5); BC_ASSERT_EQUAL(belle_sip_memory_body_handler_unapply_encoding(mbh, "deflate"), -1, int, "%i"); belle_sip_object_unref(mbh); } test_t core_tests[] = { TEST_NO_TAG("Object Data", test_object_data), TEST_NO_TAG("Dictionary", test_dictionary), TEST_NO_TAG("Presence marshal", test_presence_marshal), TEST_NO_TAG("Compressed body", test_compressed_body), TEST_NO_TAG("Truncated compressed body", test_truncated_compressed_body) }; test_suite_t core_test_suite = {"Core", NULL, NULL, belle_sip_tester_before_each, belle_sip_tester_after_each, sizeof(core_tests) / sizeof(core_tests[0]), core_tests}; belle-sip-5.2.0+dfsg/tester/belle_sip_dialog_tester.c000066400000000000000000000511611434613136500226400ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "belle-sip/belle-sip.h" #include "belle_sip_tester.h" #include "register_tester.h" int call_endeed; static const char* sdp = "v=0\r\n"\ "o=jehan-mac 1239 1239 IN IP4 192.168.0.18\r\n"\ "s=Talk\r\n"\ "c=IN IP4 192.168.0.18\r\n"\ "t=0 0\r\n"\ "m=audio 7078 RTP/AVP 111 110 3 0 8 101\r\n"\ "a=rtpmap:111 speex/16000\r\n"\ "a=fmtp:111 vbr=on\r\n"\ "a=rtpmap:110 speex/8000\r\n"\ "a=fmtp:110 vbr=on\r\n"\ "a=rtpmap:101 telephone-event/8000\r\n"\ "a=fmtp:101 0-11\r\n"\ "m=video 8078 RTP/AVP 99 97 98\r\n"\ "c=IN IP4 192.168.0.18\r\n"\ "b=AS:380\r\n"\ "a=rtpmap:99 MP4V-ES/90000\r\n"\ "a=fmtp:99 profile-level-id=3\r\n"\ "a=rtpmap:97 theora/90000\r\n"\ "a=rtpmap:98 H263-1998/90000\r\n"\ "a=fmtp:98 CIF=1;QCIF=1\r\n"; static belle_sip_dialog_t* caller_dialog; static belle_sip_dialog_t* callee_dialog; static belle_sip_response_t* ok_response; static belle_sip_server_transaction_t* inserv_transaction; static belle_sip_client_transaction_t* pauline_reg_transaction; belle_sip_request_t* build_request(belle_sip_stack_t * stack , belle_sip_provider_t *prov ,belle_sip_header_address_t* from ,belle_sip_header_address_t* to ,belle_sip_header_address_t* route ,const char* method) { belle_sip_header_from_t* from_header; belle_sip_header_to_t* to_header; belle_sip_request_t *req; belle_sip_uri_t* req_uri; belle_sip_header_contact_t* contact_header; BELLESIP_UNUSED(stack); from_header = belle_sip_header_from_create(from,BELLE_SIP_RANDOM_TAG); to_header = belle_sip_header_to_create(to,NULL); req_uri = (belle_sip_uri_t*)belle_sip_object_clone((belle_sip_object_t*)belle_sip_header_address_get_uri((belle_sip_header_address_t*)to_header)); contact_header= belle_sip_header_contact_new(); belle_sip_header_address_set_uri((belle_sip_header_address_t*)contact_header,belle_sip_uri_new()); belle_sip_uri_set_user(belle_sip_header_address_get_uri((belle_sip_header_address_t*)contact_header), belle_sip_uri_get_user(belle_sip_header_address_get_uri((belle_sip_header_address_t*)from_header))); req=belle_sip_request_create( req_uri, method, belle_sip_provider_create_call_id(prov), belle_sip_header_cseq_create(20,method), from_header, to_header, belle_sip_header_via_new(), 70); belle_sip_message_add_header(BELLE_SIP_MESSAGE(req),BELLE_SIP_HEADER(contact_header)); if (route) { belle_sip_message_add_header(BELLE_SIP_MESSAGE(req),BELLE_SIP_HEADER(belle_sip_header_route_create(route))); } return req; } static void process_dialog_terminated(void *user_ctx, const belle_sip_dialog_terminated_event_t *event){ BELLESIP_UNUSED(user_ctx); BELLESIP_UNUSED(event); belle_sip_message("process_dialog_terminated not implemented yet"); } static void process_io_error(void *user_ctx, const belle_sip_io_error_event_t *event){ BELLESIP_UNUSED(user_ctx); BELLESIP_UNUSED(event); belle_sip_message("process_io_error not implemented yet"); } static void caller_process_request_event(void *user_ctx, const belle_sip_request_event_t *event) { belle_sip_server_transaction_t* server_transaction; belle_sip_response_t* resp; belle_sip_dialog_t* dialog; belle_sip_header_to_t* to=belle_sip_message_get_header_by_type(belle_sip_request_event_get_request(event),belle_sip_header_to_t); if (!belle_sip_uri_equals(BELLE_SIP_URI(user_ctx),belle_sip_header_address_get_uri(BELLE_SIP_HEADER_ADDRESS(to)))) { belle_sip_message("Message [%p] not for caller, skipping",belle_sip_request_event_get_request(event)); return; /*not for the caller*/ } belle_sip_message("caller_process_request_event received [%s] message",belle_sip_request_get_method(belle_sip_request_event_get_request(event))); server_transaction=belle_sip_provider_create_server_transaction(prov,belle_sip_request_event_get_request(event)); BC_ASSERT_STRING_EQUAL("BYE",belle_sip_request_get_method(belle_sip_request_event_get_request(event))); dialog = belle_sip_transaction_get_dialog(BELLE_SIP_TRANSACTION(server_transaction)); if (BC_ASSERT_PTR_NOT_NULL(dialog)) { BC_ASSERT_EQUAL(belle_sip_dialog_get_state(dialog) , BELLE_SIP_DIALOG_CONFIRMED, int, "%d"); } resp=belle_sip_response_create_from_request(belle_sip_request_event_get_request(event),200); belle_sip_server_transaction_send_response(server_transaction,resp); } static void callee_process_request_event(void *user_ctx, const belle_sip_request_event_t *event) { belle_sip_dialog_t* dialog; belle_sip_response_t* ringing_response; belle_sip_header_content_type_t* content_type ; belle_sip_header_content_length_t* content_length; belle_sip_server_transaction_t* server_transaction = belle_sip_request_event_get_server_transaction(event); belle_sip_header_to_t* to=belle_sip_message_get_header_by_type(belle_sip_request_event_get_request(event),belle_sip_header_to_t); const char* method; if (!belle_sip_uri_equals(BELLE_SIP_URI(user_ctx),belle_sip_header_address_get_uri(BELLE_SIP_HEADER_ADDRESS(to)))) { belle_sip_message("Message [%p] not for callee, skipping",belle_sip_request_event_get_request(event)); return; /*not for the callee*/ } method = belle_sip_request_get_method(belle_sip_request_event_get_request(event)); if (strcmp(method,"PRACK") == 0){ belle_sip_server_transaction_t* server_trans = belle_sip_provider_create_server_transaction(prov,belle_sip_request_event_get_request(event)); belle_sip_response_t* prack_resp_ok = belle_sip_response_create_from_request(belle_sip_request_event_get_request(event), 200); belle_sip_server_transaction_send_response(server_trans, prack_resp_ok); return; } if (!server_transaction && strcmp(method,"ACK")!=0) { server_transaction= belle_sip_provider_create_server_transaction(prov,belle_sip_request_event_get_request(event)); } belle_sip_message("callee_process_request_event received [%s] message",method); dialog = belle_sip_request_event_get_dialog(event); if (!dialog ) { BC_ASSERT_STRING_EQUAL("INVITE",method); dialog=belle_sip_provider_create_dialog(prov,BELLE_SIP_TRANSACTION(server_transaction)); callee_dialog=dialog; inserv_transaction=server_transaction; } if (belle_sip_dialog_get_state(dialog) == BELLE_SIP_DIALOG_NULL) { /*prepare 180*/ ringing_response = belle_sip_response_create_from_request(belle_sip_transaction_get_request(BELLE_SIP_TRANSACTION(server_transaction)),180); belle_sip_header_supported_t* header_supported = belle_sip_message_get_header_by_type(belle_sip_request_event_get_request(event),belle_sip_header_supported_t); if (header_supported){ belle_sip_list_t* list = belle_sip_header_supported_get_supported(header_supported); int supported_100rel = 0; while (list){ if (strcmp(list->data, "100rel") == 0){ supported_100rel = 1; break; } list=list->next; } if (supported_100rel){ belle_sip_message("Found supported 100rel in message [%p]. PRACK will be required in response 180.", belle_sip_request_event_get_request(event)); belle_sip_header_t* header_require = belle_sip_header_create("Require", "100rel"); belle_sip_header_t* header_rseq = belle_sip_header_create("RSeq", "1"); belle_sip_message_add_header(BELLE_SIP_MESSAGE(ringing_response), BELLE_SIP_HEADER(header_require)); belle_sip_message_add_header(BELLE_SIP_MESSAGE(ringing_response), BELLE_SIP_HEADER(header_rseq)); //workaround for PRACK message. Server will correct Contact header that will be used during create PRACK massege (dialog->remote_target) belle_sip_response_t* marie_reg_response = belle_sip_transaction_get_response((belle_sip_transaction_t*)pauline_reg_transaction); BC_ASSERT_PTR_NOT_NULL(marie_reg_response); belle_sip_header_contact_t* L_tmp = belle_sip_message_get_header_by_type(BELLE_SIP_MESSAGE(marie_reg_response), belle_sip_header_contact_t); belle_sip_header_contact_t* contact_header = BELLE_SIP_HEADER_CONTACT(belle_sip_object_clone(BELLE_SIP_OBJECT(L_tmp))); belle_sip_message_add_header(BELLE_SIP_MESSAGE(ringing_response),BELLE_SIP_HEADER(contact_header)); } } /*prepare 200ok*/ ok_response = belle_sip_response_create_from_request(belle_sip_transaction_get_request(BELLE_SIP_TRANSACTION(server_transaction)),200); content_length= belle_sip_header_content_length_create(strlen(sdp)); content_type = belle_sip_header_content_type_create("application","sdp"); belle_sip_message_add_header(BELLE_SIP_MESSAGE(ok_response),BELLE_SIP_HEADER(content_type)); belle_sip_message_add_header(BELLE_SIP_MESSAGE(ok_response),BELLE_SIP_HEADER(content_length)); belle_sip_message_set_body(BELLE_SIP_MESSAGE(ok_response),sdp,strlen(sdp)); belle_sip_object_ref(ok_response); /*only send ringing*/ belle_sip_server_transaction_send_response(server_transaction,ringing_response); } else if (belle_sip_dialog_get_state(dialog) == BELLE_SIP_DIALOG_CONFIRMED) { /*time to send bye*/ belle_sip_client_transaction_t* client_transaction = belle_sip_provider_create_client_transaction(prov,belle_sip_dialog_create_request(dialog,"BYE")); belle_sip_client_transaction_send_request(client_transaction); } else { belle_sip_warning("Unexpected state [%s] for dialog [%p]",belle_sip_dialog_state_to_string(belle_sip_dialog_get_state(dialog)),dialog ); } } static void caller_process_response_event(void *user_ctx, const belle_sip_response_event_t *event){ belle_sip_client_transaction_t* client_transaction = belle_sip_response_event_get_client_transaction(event); if (client_transaction == NULL) return; //fix for received 200 of PRACK belle_sip_header_from_t* from=belle_sip_message_get_header_by_type(belle_sip_response_event_get_response(event),belle_sip_header_from_t); belle_sip_header_cseq_t* invite_cseq=belle_sip_message_get_header_by_type(belle_sip_transaction_get_request(BELLE_SIP_TRANSACTION(client_transaction)),belle_sip_header_cseq_t); belle_sip_request_t* ack; belle_sip_dialog_t* dialog; int status; if (!belle_sip_uri_equals(BELLE_SIP_URI(user_ctx),belle_sip_header_address_get_uri(BELLE_SIP_HEADER_ADDRESS(from)))) { belle_sip_message("Message [%p] not for caller, skipping",belle_sip_response_event_get_response(event)); return; /*not for the caller*/ } status = belle_sip_response_get_status_code(belle_sip_response_event_get_response(event)); belle_sip_message("caller_process_response_event [%i]",status); if (BC_ASSERT_PTR_NOT_NULL(client_transaction)) { dialog = belle_sip_transaction_get_dialog(BELLE_SIP_TRANSACTION(client_transaction)); if (BC_ASSERT_PTR_NOT_NULL(dialog)) { BC_ASSERT_PTR_EQUAL(caller_dialog,dialog); if (belle_sip_dialog_get_state(dialog) == BELLE_SIP_DIALOG_NULL) { BC_ASSERT_EQUAL(status,100, int, "%d"); } else if (belle_sip_dialog_get_state(dialog) == BELLE_SIP_DIALOG_EARLY){ BC_ASSERT_EQUAL(status,180, int, "%d"); /*send 200ok from callee*/ belle_sip_server_transaction_send_response(inserv_transaction,ok_response); belle_sip_object_unref(ok_response); ok_response=NULL; } else if (belle_sip_dialog_get_state(dialog) == BELLE_SIP_DIALOG_CONFIRMED) { ack=belle_sip_dialog_create_ack(dialog,belle_sip_header_cseq_get_seq_number(invite_cseq)); belle_sip_dialog_send_ack(dialog,ack); } } } } static void callee_process_response_event(void *user_ctx, const belle_sip_response_event_t *event){ belle_sip_dialog_t* dialog; belle_sip_client_transaction_t* client_transaction = belle_sip_response_event_get_client_transaction(event); belle_sip_header_from_t* from=belle_sip_message_get_header_by_type(belle_sip_response_event_get_response(event),belle_sip_header_from_t); int status = belle_sip_response_get_status_code(belle_sip_response_event_get_response(event)); if (!belle_sip_uri_equals(BELLE_SIP_URI(user_ctx),belle_sip_header_address_get_uri(BELLE_SIP_HEADER_ADDRESS(from)))) { belle_sip_message("Message [%p] not for callee, skipping",belle_sip_response_event_get_response(event)); return; /*not for the callee*/ } if (BC_ASSERT_PTR_NOT_NULL(client_transaction)) { dialog = belle_sip_transaction_get_dialog(BELLE_SIP_TRANSACTION(client_transaction)); if (BC_ASSERT_PTR_NOT_NULL(dialog)) { BC_ASSERT_PTR_EQUAL(callee_dialog,dialog); if (belle_sip_dialog_get_state(dialog) == BELLE_SIP_DIALOG_TERMINATED) { call_endeed=1; belle_sip_main_loop_quit(belle_sip_stack_get_main_loop(stack)); } belle_sip_message("callee_process_response_event [%i] on dialog [%p] for state [%s]",status ,dialog ,belle_sip_dialog_state_to_string(belle_sip_dialog_get_state(dialog))); } } } static void process_timeout(void *user_ctx, const belle_sip_timeout_event_t *event) { BELLESIP_UNUSED(user_ctx); /* belle_sip_client_transaction_t* client_transaction = belle_sip_timeout_event_get_client_transaction(event); SalOp* op = (SalOp*)belle_sip_transaction_get_application_data(BELLE_SIP_TRANSACTION(client_transaction)); if (op->callbacks.process_timeout) { op->callbacks.process_timeout(op,event); } else*/ { belle_sip_message("Unhandled event timeout [%p]",event); } } static void process_transaction_terminated(void *user_ctx, const belle_sip_transaction_terminated_event_t *event) { BELLESIP_UNUSED(user_ctx); /* belle_sip_client_transaction_t* client_transaction = belle_sip_transaction_terminated_event_get_client_transaction(event); SalOp* op = (SalOp*)belle_sip_transaction_get_application_data(client_transaction); if (op->calbacks.process_transaction_terminated) { op->calbacks.process_transaction_terminated(op,event); } else */{ belle_sip_message("Unhandled transaction terminated [%p]",event); } } static void listener_destroyed(void *user_ctx){ belle_sip_object_unref(user_ctx); } static void do_simple_call(int enable_100rel) { #define CALLER "marie" #define CALLEE "pauline" belle_sip_request_t *pauline_register_req; belle_sip_request_t *marie_register_req; belle_sip_listener_callbacks_t caller_listener_callbacks; belle_sip_listener_t* caller_listener; belle_sip_listener_callbacks_t callee_listener_callbacks; belle_sip_listener_t* callee_listener; belle_sip_request_t* req; belle_sip_header_address_t* from; belle_sip_header_address_t* to; belle_sip_header_address_t* route; belle_sip_header_allow_t* header_allow; belle_sip_header_content_type_t* content_type ; belle_sip_header_content_length_t* content_length; belle_sip_client_transaction_t* client_transaction; char cookie[4]; caller_listener_callbacks.process_dialog_terminated=process_dialog_terminated; caller_listener_callbacks.process_io_error=process_io_error; caller_listener_callbacks.process_request_event=caller_process_request_event; caller_listener_callbacks.process_response_event=caller_process_response_event; caller_listener_callbacks.process_timeout=process_timeout; caller_listener_callbacks.process_transaction_terminated=process_transaction_terminated; caller_listener_callbacks.listener_destroyed=listener_destroyed; callee_listener_callbacks.process_dialog_terminated=process_dialog_terminated; callee_listener_callbacks.process_io_error=process_io_error; callee_listener_callbacks.process_request_event=callee_process_request_event; callee_listener_callbacks.process_response_event=callee_process_response_event; callee_listener_callbacks.process_timeout=process_timeout; callee_listener_callbacks.process_transaction_terminated=process_transaction_terminated; callee_listener_callbacks.listener_destroyed=listener_destroyed; pauline_reg_transaction = register_user_with_transaction(stack, prov, "TCP", CALLEE, NULL); pauline_register_req = belle_sip_transaction_get_request((belle_sip_transaction_t*)pauline_reg_transaction); if (belle_sip_provider_get_listening_point(prov, "tls")) { marie_register_req = register_user(stack, prov, "TLS", 1, CALLER, NULL); } else { marie_register_req = register_user(stack, prov, "TCP", 1, CALLER, NULL); } from = belle_sip_header_address_create(NULL,belle_sip_uri_create(CALLER,test_domain)); /*to make sure unexpected messages are ignored*/ belle_sip_parameters_set_parameter(BELLE_SIP_PARAMETERS(from),"cookie",belle_sip_random_token(cookie,sizeof(cookie))); /*to make sure unexpected messages are ignored*/ to = belle_sip_header_address_create(NULL,belle_sip_uri_create(CALLEE,test_domain)); belle_sip_parameters_set_parameter(BELLE_SIP_PARAMETERS(to),"cookie",belle_sip_random_token(cookie,sizeof(cookie))); belle_sip_provider_add_sip_listener(prov, caller_listener = belle_sip_listener_create_from_callbacks(&caller_listener_callbacks, belle_sip_object_ref(belle_sip_header_address_get_uri((belle_sip_header_address_t*)from)))); belle_sip_provider_add_sip_listener(prov, callee_listener = belle_sip_listener_create_from_callbacks(&callee_listener_callbacks, belle_sip_object_ref(belle_sip_header_address_get_uri((belle_sip_header_address_t*)to)))); route = belle_sip_header_address_create(NULL,belle_sip_uri_create(NULL,test_domain)); belle_sip_uri_set_transport_param(belle_sip_header_address_get_uri(route),"tcp"); req = build_request(stack,prov,from,to,route,"INVITE"); header_allow = belle_sip_header_allow_create("INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO, PRACK"); belle_sip_message_add_header(BELLE_SIP_MESSAGE(req),BELLE_SIP_HEADER(header_allow)); if (enable_100rel){ belle_sip_header_supported_t* header_supported = belle_sip_header_supported_create("100rel"); belle_sip_message_add_header(BELLE_SIP_MESSAGE(req), BELLE_SIP_HEADER(header_supported)); } content_length = belle_sip_header_content_length_create(strlen(sdp)); content_type = belle_sip_header_content_type_create("application","sdp"); belle_sip_message_add_header(BELLE_SIP_MESSAGE(req),BELLE_SIP_HEADER(content_type)); belle_sip_message_add_header(BELLE_SIP_MESSAGE(req),BELLE_SIP_HEADER(content_length)); belle_sip_message_set_body(BELLE_SIP_MESSAGE(req),sdp,strlen(sdp)); client_transaction = belle_sip_provider_create_client_transaction(prov,req); caller_dialog = belle_sip_provider_create_dialog(prov,BELLE_SIP_TRANSACTION(client_transaction)); BC_ASSERT_PTR_NOT_NULL(belle_sip_transaction_get_dialog(BELLE_SIP_TRANSACTION(client_transaction))); //belle_sip_transaction_set_application_data(BELLE_SIP_TRANSACTION(client_transaction),op); call_endeed = 0; belle_sip_client_transaction_send_request(client_transaction); //int i=0; //for(i=0;i<10 &&!call_endeed;i++) belle_sip_stack_sleep(stack,30000); BC_ASSERT_EQUAL(call_endeed,1, int, "%d"); belle_sip_provider_remove_sip_listener(prov,caller_listener); belle_sip_provider_remove_sip_listener(prov,callee_listener); belle_sip_object_unref(caller_listener); belle_sip_object_unref(callee_listener); unregister_user(stack, prov, pauline_register_req ,1); belle_sip_object_unref(pauline_register_req); unregister_user(stack, prov, marie_register_req ,1); belle_sip_object_unref(marie_register_req); } static void simple_call(void){ belle_sip_stack_set_tx_delay(stack,0); do_simple_call(0); } static void simple_call_with_delay(void){ belle_sip_stack_set_tx_delay(stack,2000); do_simple_call(0); belle_sip_stack_set_tx_delay(stack,0); } static void simple_call_with_prack(void){ belle_sip_stack_set_tx_delay(stack,0); do_simple_call(1); } /*static void simple_call_udp_tcp_with_delay(void){ belle_sip_listening_point_t* lp=belle_sip_provider_get_listening_point(prov,"tls"); belle_sip_object_ref(lp); belle_sip_stack_set_tx_delay(stack,2000); belle_sip_provider_remove_listening_point(prov,lp); do_simple_call(); belle_sip_stack_set_tx_delay(stack,0); belle_sip_provider_add_listening_point(prov,lp); belle_sip_object_unref(lp); }*/ test_t dialog_tests[] = { TEST_ONE_TAG("Simple call", simple_call, "LeaksMemory"), TEST_ONE_TAG("Simple call with delay", simple_call_with_delay, "LeaksMemory"), TEST_ONE_TAG("Simple call with prack", simple_call_with_prack, "LeaksMemory"), }; test_suite_t dialog_test_suite = {"Dialog", register_before_all, register_after_all, belle_sip_tester_before_each, belle_sip_tester_after_each, sizeof(dialog_tests) / sizeof(dialog_tests[0]), dialog_tests}; belle-sip-5.2.0+dfsg/tester/belle_sip_fast_uri_tester.c000066400000000000000000000043431434613136500232150ustar00rootroot00000000000000 /* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "belle-sip/belle-sip.h" #include "belle_sip_tester.h" #include "belle_sip_internal.h" #include #define belle_sip_uri_parse belle_sip_fast_uri_parse /*test body*/ #include "belle_sip_base_uri_tester.c" #undef belle_sip_uri_parse static void perf(void) { uint64_t t1, t2, start=bctbx_get_cur_time_ms(); int i=0; for (i=0;i<1000;i++) { belle_sip_uri_t * uri = belle_sip_uri_parse("sip:+331231231231@sip.exmaple.org;user=phone"); belle_sip_object_unref(uri); } t1 = bctbx_get_cur_time_ms() - start; start=bctbx_get_cur_time_ms(); belle_sip_message("t1 = %" PRIu64 "",t1); for (i=0;i<1000;i++) { belle_sip_uri_t * uri = belle_sip_fast_uri_parse("sip:+331231231231@sip.exmaple.org;user=phone"); belle_sip_object_unref(uri); } t2 = bctbx_get_cur_time_ms() - start; belle_sip_message("t2 = %" PRIu64 "",t2); #ifdef __APPLE__ /*antlr3.4 seems much more sensitive to belle_sip_fast_uri_parse optimisation than 3.2, so reserving this test to apple platform where antlr3.2 is unlikely to be found*/ BC_ASSERT_GREATER(((float)(t1-t2))/(float)(t1), 0.4, float, "%f"); #endif } static test_t tests[] ={TEST_NO_TAG("perf", perf)}; test_suite_t fast_sip_uri_test_suite = {"FAST SIP URI", NULL, NULL, belle_sip_tester_before_each, belle_sip_tester_after_each, sizeof(uri_tests) / sizeof(uri_tests[0]), uri_tests}; test_suite_t perf_sip_uri_test_suite = {"FAST SIP URI 2", NULL, NULL, belle_sip_tester_before_each, belle_sip_tester_after_each, sizeof(tests) / sizeof(tests[0]), tests}; belle-sip-5.2.0+dfsg/tester/belle_sip_headers_tester.c000066400000000000000000002260631434613136500230210ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "belle-sip/belle-sip.h" #include "belle_sip_internal.h" #include "belle_sip_tester.h" static void test_simple_contact_header(void) { belle_sip_header_contact_t* L_tmp; belle_sip_uri_t* L_uri; belle_sip_header_contact_t* L_contact = belle_sip_header_contact_parse("m:sip:titi.com"); char* l_raw_header = belle_sip_object_to_string(BELLE_SIP_OBJECT(L_contact)); belle_sip_object_unref(BELLE_SIP_OBJECT(L_contact)); L_tmp = belle_sip_header_contact_parse(l_raw_header); L_contact = BELLE_SIP_HEADER_CONTACT(belle_sip_object_clone(BELLE_SIP_OBJECT(L_tmp))); belle_sip_object_unref(BELLE_SIP_OBJECT(L_tmp)); belle_sip_free(l_raw_header); L_uri = belle_sip_header_address_get_uri((belle_sip_header_address_t*)L_contact); BC_ASSERT_PTR_NULL(belle_sip_uri_get_user(L_uri)); BC_ASSERT_STRING_EQUAL(belle_sip_uri_get_host(L_uri), "titi.com"); BC_ASSERT_PTR_NULL(belle_sip_uri_get_transport_param(L_uri)); belle_sip_object_unref(BELLE_SIP_OBJECT(L_contact)); BC_ASSERT_PTR_NULL(belle_sip_header_contact_parse("nimportequoi")); } static void test_complex_contact_header(void) { belle_sip_header_contact_t* L_contact; belle_sip_uri_t* L_uri; belle_sip_header_contact_t* L_tmp = belle_sip_header_contact_parse("Contact: \"j\x8eremis\" ;expires=3600;q=0.7, sip:titi.com"); belle_sip_header_t* l_next; belle_sip_header_contact_t* L_next_contact; char* l_raw_header; float l_qvalue; L_contact = BELLE_SIP_HEADER_CONTACT(belle_sip_object_clone(BELLE_SIP_OBJECT(L_tmp))); belle_sip_object_unref(BELLE_SIP_OBJECT(L_tmp)); L_uri = belle_sip_header_address_get_uri((belle_sip_header_address_t*)L_contact); BC_ASSERT_PTR_NOT_NULL(L_uri); BC_ASSERT_STRING_EQUAL(belle_sip_uri_get_host(L_uri), "sip.linphone.org"); BC_ASSERT_STRING_EQUAL(belle_sip_header_address_get_displayname((belle_sip_header_address_t*)L_contact), "j\x8eremis"); BC_ASSERT_EQUAL(belle_sip_header_contact_get_expires(L_contact),3600,int,"%d"); l_qvalue = belle_sip_header_contact_get_qvalue(L_contact); BC_ASSERT_EQUAL(l_qvalue,0.7f,float,"%f"); l_next = belle_sip_header_get_next(BELLE_SIP_HEADER(L_contact)); L_next_contact = BELLE_SIP_HEADER_CONTACT(l_next); BC_ASSERT_PTR_NOT_NULL(L_next_contact); BC_ASSERT_PTR_NOT_NULL( belle_sip_header_address_get_uri(BELLE_SIP_HEADER_ADDRESS(L_next_contact))); belle_sip_object_unref(BELLE_SIP_OBJECT(L_contact)); L_contact = belle_sip_header_contact_parse("Contact: super toto ;expires=3600; q=0.7"); l_raw_header = belle_sip_object_to_string(BELLE_SIP_OBJECT(L_contact)); belle_sip_object_unref(BELLE_SIP_OBJECT(L_contact)); L_contact = belle_sip_header_contact_parse(l_raw_header); belle_sip_free(l_raw_header); BC_ASSERT_STRING_EQUAL(belle_sip_header_address_get_displayname((belle_sip_header_address_t*)L_contact), "super toto"); belle_sip_object_unref(BELLE_SIP_OBJECT(L_contact)); BC_ASSERT_PTR_NULL(belle_sip_header_contact_parse("m:sip:titi.com, nimportequoi")); } static void test_from_header(void) { belle_sip_header_from_t* L_tmp; belle_sip_uri_t* L_uri; belle_generic_uri_t* L_absoluteUri; belle_sip_header_from_t* L_from = belle_sip_header_from_parse("f:;tag=dlfjklcn6545614XX"); char* l_raw_header = belle_sip_object_to_string(BELLE_SIP_OBJECT(L_from)); belle_sip_object_unref(BELLE_SIP_OBJECT(L_from)); L_tmp = belle_sip_header_from_parse(l_raw_header); L_from = BELLE_SIP_HEADER_FROM(belle_sip_object_clone(BELLE_SIP_OBJECT(L_tmp))); belle_sip_object_unref(BELLE_SIP_OBJECT(L_tmp)); belle_sip_free(l_raw_header); L_uri = belle_sip_header_address_get_uri(BELLE_SIP_HEADER_ADDRESS(L_from)); BC_ASSERT_PTR_NULL(belle_sip_uri_get_user(L_uri)); BC_ASSERT_STRING_EQUAL(belle_sip_uri_get_host(L_uri), "titi.com"); BC_ASSERT_STRING_EQUAL(belle_sip_header_from_get_tag(L_from),"dlfjklcn6545614XX"); belle_sip_object_unref(BELLE_SIP_OBJECT(L_from)); L_from = belle_sip_header_from_parse("From: ;tag=dlfjklcn6545614XX"); l_raw_header = belle_sip_object_to_string(BELLE_SIP_OBJECT(L_from)); belle_sip_object_unref(BELLE_SIP_OBJECT(L_from)); L_tmp = belle_sip_header_from_parse(l_raw_header); L_from = BELLE_SIP_HEADER_FROM(belle_sip_object_clone(BELLE_SIP_OBJECT(L_tmp))); belle_sip_object_unref(BELLE_SIP_OBJECT(L_tmp)); belle_sip_free(l_raw_header); L_absoluteUri = belle_sip_header_address_get_absolute_uri(BELLE_SIP_HEADER_ADDRESS(L_from)); BC_ASSERT_PTR_NULL(belle_sip_header_address_get_uri(BELLE_SIP_HEADER_ADDRESS(L_from))); BC_ASSERT_STRING_EQUAL(belle_generic_uri_get_opaque_part(L_absoluteUri), "+33124585454;toto=titi"); BC_ASSERT_STRING_EQUAL(belle_generic_uri_get_scheme(L_absoluteUri), "tel"); BC_ASSERT_STRING_EQUAL(belle_sip_header_from_get_tag(L_from),"dlfjklcn6545614XX"); belle_sip_object_unref(BELLE_SIP_OBJECT(L_from)); // Test Domain name RFC1123-2.1 L_from = belle_sip_header_from_parse("f:;tag=dlfjklcn6545614XX"); l_raw_header = belle_sip_object_to_string(BELLE_SIP_OBJECT(L_from)); belle_sip_object_unref(BELLE_SIP_OBJECT(L_from)); L_tmp = belle_sip_header_from_parse(l_raw_header); L_from = BELLE_SIP_HEADER_FROM(belle_sip_object_clone(BELLE_SIP_OBJECT(L_tmp))); belle_sip_object_unref(BELLE_SIP_OBJECT(L_tmp)); belle_sip_free(l_raw_header); L_uri = belle_sip_header_address_get_uri(BELLE_SIP_HEADER_ADDRESS(L_from)); BC_ASSERT_PTR_NULL(belle_sip_uri_get_user(L_uri)); BC_ASSERT_STRING_EQUAL(belle_sip_uri_get_host(L_uri), "123jeff"); BC_ASSERT_STRING_EQUAL(belle_sip_header_from_get_tag(L_from),"dlfjklcn6545614XX"); belle_sip_object_unref(BELLE_SIP_OBJECT(L_from)); L_from = belle_sip_header_from_parse("f:;tag=dlfjklcn6545614XX"); l_raw_header = belle_sip_object_to_string(BELLE_SIP_OBJECT(L_from)); belle_sip_object_unref(BELLE_SIP_OBJECT(L_from)); L_tmp = belle_sip_header_from_parse(l_raw_header); L_from = BELLE_SIP_HEADER_FROM(belle_sip_object_clone(BELLE_SIP_OBJECT(L_tmp))); belle_sip_object_unref(BELLE_SIP_OBJECT(L_tmp)); belle_sip_free(l_raw_header); L_uri = belle_sip_header_address_get_uri(BELLE_SIP_HEADER_ADDRESS(L_from)); BC_ASSERT_PTR_NULL(belle_sip_uri_get_user(L_uri)); BC_ASSERT_STRING_EQUAL(belle_sip_uri_get_host(L_uri), "12345678987"); BC_ASSERT_STRING_EQUAL(belle_sip_header_from_get_tag(L_from),"dlfjklcn6545614XX"); belle_sip_object_unref(BELLE_SIP_OBJECT(L_from)); // Test factory L_from = belle_sip_header_from_create2("super ","12345-abc"); if (!BC_ASSERT_PTR_NOT_NULL(L_from)) return; L_uri = belle_sip_header_address_get_uri(BELLE_SIP_HEADER_ADDRESS(L_from)); if (!BC_ASSERT_PTR_NOT_NULL(L_uri)) return; BC_ASSERT_FALSE(belle_sip_parameters_has_parameter(BELLE_SIP_PARAMETERS(L_uri),"lr")); BC_ASSERT_FALSE(belle_sip_parameters_has_parameter(BELLE_SIP_PARAMETERS(L_uri),"ttl")); BC_ASSERT_FALSE(belle_sip_parameters_has_parameter(BELLE_SIP_PARAMETERS(L_uri),"method")); BC_ASSERT_FALSE(belle_sip_parameters_has_parameter(BELLE_SIP_PARAMETERS(L_uri),"maddr")); BC_ASSERT_FALSE(belle_sip_parameters_has_parameter(BELLE_SIP_PARAMETERS(L_uri),"transport")); BC_ASSERT_FALSE(belle_sip_uri_get_port(L_uri)>0); BC_ASSERT_EQUAL((unsigned int)belle_sip_list_size(belle_sip_uri_get_header_names(L_uri)),0,unsigned int,"%u"); BC_ASSERT_STRING_EQUAL(belle_sip_uri_get_host(L_uri), "titi.com"); BC_ASSERT_STRING_EQUAL(belle_sip_header_from_get_tag(L_from),"12345-abc"); belle_sip_object_unref(L_from); BC_ASSERT_PTR_NULL(belle_sip_header_from_parse("nimportequoi")); } static void test_from_header_with_paramless_address_spec(void) { belle_generic_uri_t *L_absoluteUri; belle_sip_header_from_t* L_from = belle_sip_header_from_parse("From: sip:bob@titi.com;tag=dlfjklcn6545614XX"); if (!BC_ASSERT_PTR_NOT_NULL(belle_sip_header_from_get_tag(L_from))) return; BC_ASSERT_STRING_EQUAL(belle_sip_header_from_get_tag(L_from),"dlfjklcn6545614XX"); belle_sip_object_unref(L_from); L_from = belle_sip_header_from_parse("From: tel:1234567;tag=dlfjklcn6545614XX"); if (!BC_ASSERT_PTR_NOT_NULL(belle_sip_header_from_get_tag(L_from))) return; L_absoluteUri = belle_sip_header_address_get_absolute_uri(BELLE_SIP_HEADER_ADDRESS(L_from)); BC_ASSERT_PTR_NULL(belle_sip_header_address_get_uri(BELLE_SIP_HEADER_ADDRESS(L_from))); BC_ASSERT_STRING_EQUAL(belle_generic_uri_get_opaque_part(L_absoluteUri), "1234567"); BC_ASSERT_STRING_EQUAL(belle_generic_uri_get_scheme(L_absoluteUri), "tel"); BC_ASSERT_STRING_EQUAL(belle_sip_header_from_get_tag(L_from),"dlfjklcn6545614XX"); belle_sip_object_unref(L_from); BC_ASSERT_PTR_NULL(belle_sip_header_from_parse("F: x:xx%")); BC_ASSERT_PTR_NULL(belle_sip_header_from_parse("F\"\\")); } static void test_to_header_with_paramless_address_spec(void) { belle_generic_uri_t *L_absoluteUri; belle_sip_header_to_t* L_to = belle_sip_header_to_parse("To: sip:bob@titi.com;tag=dlfjklcn6545614XX"); belle_sip_uri_t *L_uri; if (!BC_ASSERT_PTR_NOT_NULL(belle_sip_header_to_get_tag(L_to))) return; BC_ASSERT_STRING_EQUAL(belle_sip_header_to_get_tag(L_to),"dlfjklcn6545614XX"); belle_sip_object_unref(L_to); L_to = belle_sip_header_to_parse("To:sip:1002@192.168.1.199;tag=as1f0a0817"); if (!BC_ASSERT_PTR_NOT_NULL(belle_sip_header_to_get_tag(L_to))) return; L_uri = belle_sip_header_address_get_uri(BELLE_SIP_HEADER_ADDRESS(L_to)); BC_ASSERT_STRING_EQUAL(belle_sip_uri_get_user(L_uri),"1002"); BC_ASSERT_STRING_EQUAL(belle_sip_uri_get_host(L_uri), "192.168.1.199"); BC_ASSERT_STRING_EQUAL(belle_sip_header_to_get_tag(L_to),"as1f0a0817"); belle_sip_object_unref(L_to); L_to = belle_sip_header_to_parse("To: tel:1234567;tag=dlfjklcn6545614XX"); if (!BC_ASSERT_PTR_NOT_NULL(belle_sip_header_to_get_tag(L_to))) return; L_absoluteUri = belle_sip_header_address_get_absolute_uri(BELLE_SIP_HEADER_ADDRESS(L_to)); BC_ASSERT_PTR_NULL(belle_sip_header_address_get_uri(BELLE_SIP_HEADER_ADDRESS(L_to))); BC_ASSERT_STRING_EQUAL(belle_generic_uri_get_opaque_part(L_absoluteUri), "1234567"); BC_ASSERT_STRING_EQUAL(belle_generic_uri_get_scheme(L_absoluteUri), "tel"); BC_ASSERT_STRING_EQUAL(belle_sip_header_to_get_tag(L_to),"dlfjklcn6545614XX"); belle_sip_object_unref(L_to); BC_ASSERT_PTR_NULL(belle_sip_header_to_parse("nimportequoi")); } static void test_contact_header_with_paramless_address_spec(void) { belle_sip_header_contact_t* L_contact = belle_sip_header_contact_parse("Contact: sip:bob@titi.com;expires=60"); BC_ASSERT_EQUAL(belle_sip_header_contact_get_expires(L_contact),60,int,"%d"); belle_sip_object_unref(L_contact); } static void test_to_header(void) { belle_sip_uri_t* L_uri; belle_generic_uri_t* L_absoluteUri; belle_sip_header_to_t *L_tmp, *L_to = belle_sip_header_to_parse("t : < sip:titi.com;transport=tcp> ; tag = dlfjklcn6545614XX"); char* l_raw_header = belle_sip_object_to_string(BELLE_SIP_OBJECT(L_to)); belle_sip_object_unref(BELLE_SIP_OBJECT(L_to)); L_to = belle_sip_header_to_parse(l_raw_header); belle_sip_free(l_raw_header); L_uri = belle_sip_header_address_get_uri(BELLE_SIP_HEADER_ADDRESS(L_to)); BC_ASSERT_PTR_NULL(belle_sip_uri_get_user(L_uri)); BC_ASSERT_STRING_EQUAL(belle_sip_uri_get_host(L_uri), "titi.com"); BC_ASSERT_STRING_EQUAL(belle_sip_header_to_get_tag(L_to),"dlfjklcn6545614XX"); belle_sip_object_unref(BELLE_SIP_OBJECT(L_to)); /*test factory*/ L_to = belle_sip_header_to_create2("\"super man\" ","12345-abc"); if (!BC_ASSERT_PTR_NOT_NULL(L_to)) return; L_uri = belle_sip_header_address_get_uri(BELLE_SIP_HEADER_ADDRESS(L_to)); BC_ASSERT_FALSE(belle_sip_parameters_has_parameter(BELLE_SIP_PARAMETERS(L_uri),"lr")); BC_ASSERT_FALSE(belle_sip_parameters_has_parameter(BELLE_SIP_PARAMETERS(L_uri),"ttl")); BC_ASSERT_FALSE(belle_sip_parameters_has_parameter(BELLE_SIP_PARAMETERS(L_uri),"method")); BC_ASSERT_FALSE(belle_sip_parameters_has_parameter(BELLE_SIP_PARAMETERS(L_uri),"maddr")); BC_ASSERT_FALSE(belle_sip_parameters_has_parameter(BELLE_SIP_PARAMETERS(L_uri),"transport")); BC_ASSERT_FALSE(belle_sip_uri_get_port(L_uri)>0); BC_ASSERT_EQUAL((unsigned int)belle_sip_list_size(belle_sip_uri_get_header_names(L_uri)),0,unsigned int,"%u"); if (!BC_ASSERT_PTR_NOT_NULL(L_uri)) return; BC_ASSERT_STRING_EQUAL(belle_sip_header_address_get_displayname(BELLE_SIP_HEADER_ADDRESS(L_to)), "super man"); BC_ASSERT_STRING_EQUAL(belle_sip_header_to_get_tag(L_to),"12345-abc"); belle_sip_object_unref(L_to); L_to = belle_sip_header_to_parse("To: ;tag=dlfjklcn6545614XX"); l_raw_header = belle_sip_object_to_string(BELLE_SIP_OBJECT(L_to)); belle_sip_object_unref(BELLE_SIP_OBJECT(L_to)); L_tmp = belle_sip_header_to_parse(l_raw_header); L_to = BELLE_SIP_HEADER_TO(belle_sip_object_clone(BELLE_SIP_OBJECT(L_tmp))); belle_sip_object_unref(BELLE_SIP_OBJECT(L_tmp)); belle_sip_free(l_raw_header); L_absoluteUri = belle_sip_header_address_get_absolute_uri(BELLE_SIP_HEADER_ADDRESS(L_to)); BC_ASSERT_PTR_NULL(belle_sip_header_address_get_uri(BELLE_SIP_HEADER_ADDRESS(L_to))); BC_ASSERT_STRING_EQUAL(belle_generic_uri_get_opaque_part(L_absoluteUri), "+33124585454;toto=titi"); BC_ASSERT_STRING_EQUAL(belle_generic_uri_get_scheme(L_absoluteUri), "tel"); BC_ASSERT_STRING_EQUAL(belle_sip_header_to_get_tag(L_to),"dlfjklcn6545614XX"); belle_sip_object_unref(BELLE_SIP_OBJECT(L_to)); } static void test_via_header(void) { belle_sip_header_via_t* L_tmp; belle_sip_header_t* l_next; belle_sip_header_via_t* L_next_via; belle_sip_header_via_t* L_via = belle_sip_header_via_parse("v: SIP/2.0/UDP [::1]:5062;rport;received=::1;branch=z9hG4bK368560724"); char* l_raw_header = belle_sip_object_to_string(BELLE_SIP_OBJECT(L_via)); belle_sip_object_unref(BELLE_SIP_OBJECT(L_via)); L_tmp = belle_sip_header_via_parse(l_raw_header); L_via = BELLE_SIP_HEADER_VIA(belle_sip_object_clone(BELLE_SIP_OBJECT(L_tmp))); belle_sip_object_unref(BELLE_SIP_OBJECT(L_tmp)); belle_sip_free(l_raw_header); BC_ASSERT_STRING_EQUAL(belle_sip_header_via_get_protocol(L_via), "SIP/2.0"); BC_ASSERT_STRING_EQUAL(belle_sip_header_via_get_transport(L_via), "UDP"); BC_ASSERT_STRING_EQUAL(belle_sip_header_via_get_host(L_via), "::1"); BC_ASSERT_EQUAL(belle_sip_header_via_get_port(L_via),5062,int,"%d"); BC_ASSERT_TRUE(belle_sip_parameters_has_parameter(BELLE_SIP_PARAMETERS(L_via),"rport")); BC_ASSERT_STRING_EQUAL(belle_sip_header_via_get_received(L_via),"::1"); BC_ASSERT_STRING_EQUAL(belle_sip_header_via_get_branch(L_via),"z9hG4bK368560724"); belle_sip_object_unref(BELLE_SIP_OBJECT(L_via)); // Test IPv6 with delimiter received in via. See: https://tools.ietf.org/html/rfc5118#section-4.5 L_via = belle_sip_header_via_parse("v: SIP/2.0/UDP [::1]:5062;rport;received=[::1];branch=z9hG4bK368560724"); BC_ASSERT_STRING_EQUAL(belle_sip_header_via_get_protocol(L_via), "SIP/2.0"); BC_ASSERT_STRING_EQUAL(belle_sip_header_via_get_transport(L_via), "UDP"); BC_ASSERT_STRING_EQUAL(belle_sip_header_via_get_host(L_via), "::1"); BC_ASSERT_EQUAL(belle_sip_header_via_get_port(L_via),5062,int,"%d"); BC_ASSERT_TRUE(belle_sip_parameters_has_parameter(BELLE_SIP_PARAMETERS(L_via),"rport")); BC_ASSERT_STRING_EQUAL(belle_sip_header_via_get_received(L_via),"::1"); BC_ASSERT_STRING_EQUAL(belle_sip_header_via_get_branch(L_via),"z9hG4bK368560724"); belle_sip_object_unref(BELLE_SIP_OBJECT(L_via)); L_via = belle_sip_header_via_parse("Via: SIP/2.0/UDP 192.168.0.19:5062;received=192.169.0.4;rport=1234;branch=z9hG4bK368560724, SIP/2.0/UDP 192.168.0.19:5062"); l_next = belle_sip_header_get_next(BELLE_SIP_HEADER(L_via)); L_next_via = BELLE_SIP_HEADER_VIA(l_next); BC_ASSERT_PTR_NOT_NULL(L_next_via); BC_ASSERT_STRING_EQUAL(belle_sip_header_via_get_host(L_next_via),"192.168.0.19"); BC_ASSERT_STRING_EQUAL(belle_sip_header_via_get_received(L_via),"192.169.0.4"); BC_ASSERT_EQUAL(belle_sip_header_via_get_rport(L_via),1234,int,"%d"); belle_sip_object_unref(BELLE_SIP_OBJECT(L_via)); BC_ASSERT_PTR_NULL(belle_sip_header_via_parse("nimportequoi")); BC_ASSERT_PTR_NULL(belle_sip_header_contact_parse("Via: SIP/2.0/UDP 192.168.0.19:5062;branch=z9hG4bK368560724, nimportequoi")); } static void test_call_id_header(void) { belle_sip_header_call_id_t* L_tmp; belle_sip_header_call_id_t* L_call_id = belle_sip_header_call_id_parse("i: 1665237789@titi.com"); char* l_raw_header = belle_sip_object_to_string(BELLE_SIP_OBJECT(L_call_id)); belle_sip_object_unref(BELLE_SIP_OBJECT(L_call_id)); L_tmp= belle_sip_header_call_id_parse(l_raw_header); L_call_id = BELLE_SIP_HEADER_CALL_ID(belle_sip_object_clone(BELLE_SIP_OBJECT(L_tmp))); belle_sip_object_unref(BELLE_SIP_OBJECT(L_tmp)); belle_sip_free(l_raw_header); BC_ASSERT_STRING_EQUAL(belle_sip_header_call_id_get_call_id(L_call_id), "1665237789@titi.com"); belle_sip_object_unref(BELLE_SIP_OBJECT(L_call_id)); BC_ASSERT_PTR_NULL(belle_sip_header_call_id_parse("nimportequoi")); } static void test_cseq_header(void) { belle_sip_header_cseq_t* L_tmp; belle_sip_header_cseq_t* L_cseq = belle_sip_header_cseq_parse("CSeq: 21 INVITE"); char* l_raw_header = belle_sip_object_to_string(BELLE_SIP_OBJECT(L_cseq)); belle_sip_object_unref(BELLE_SIP_OBJECT(L_cseq)); L_tmp = belle_sip_header_cseq_parse(l_raw_header); L_cseq = BELLE_SIP_HEADER_CSEQ(belle_sip_object_clone(BELLE_SIP_OBJECT(L_tmp))); belle_sip_object_unref(BELLE_SIP_OBJECT(L_tmp)); belle_sip_free(l_raw_header); BC_ASSERT_EQUAL(belle_sip_header_cseq_get_seq_number(L_cseq),21,int,"%d"); BC_ASSERT_STRING_EQUAL(belle_sip_header_cseq_get_method(L_cseq),"INVITE"); belle_sip_object_unref(BELLE_SIP_OBJECT(L_cseq)); /*test factory*/ L_cseq = belle_sip_header_cseq_create(1,"INFO"); BC_ASSERT_EQUAL(belle_sip_header_cseq_get_seq_number(L_cseq),1,int,"%d"); BC_ASSERT_STRING_EQUAL(belle_sip_header_cseq_get_method(L_cseq),"INFO"); belle_sip_object_unref(L_cseq); BC_ASSERT_PTR_NULL(belle_sip_header_cseq_parse("nimportequoi")); } static void test_content_type_header(void) { belle_sip_header_content_type_t* L_tmp; belle_sip_header_content_type_t* L_content_type = belle_sip_header_content_type_parse("c: text/html; charset=ISO-8859-4"); char* l_raw_header = belle_sip_object_to_string(BELLE_SIP_OBJECT(L_content_type)); belle_sip_object_unref(BELLE_SIP_OBJECT(L_content_type)); L_tmp = belle_sip_header_content_type_parse(l_raw_header); L_content_type = BELLE_SIP_HEADER_CONTENT_TYPE(belle_sip_object_clone(BELLE_SIP_OBJECT(L_tmp))); belle_sip_object_unref(BELLE_SIP_OBJECT(L_tmp)); belle_sip_free(l_raw_header); BC_ASSERT_STRING_EQUAL(belle_sip_header_content_type_get_type(L_content_type),"text"); BC_ASSERT_STRING_EQUAL(belle_sip_header_content_type_get_subtype(L_content_type),"html"); BC_ASSERT_STRING_EQUAL(belle_sip_parameters_get_parameter(BELLE_SIP_PARAMETERS(L_content_type),"charset"),"ISO-8859-4"); belle_sip_object_unref(BELLE_SIP_OBJECT(L_content_type)); L_content_type = belle_sip_header_content_type_parse("Content-Type: application/sdp"); l_raw_header = belle_sip_object_to_string(BELLE_SIP_OBJECT(L_content_type)); belle_sip_object_unref(BELLE_SIP_OBJECT(L_content_type)); L_content_type = belle_sip_header_content_type_parse(l_raw_header); belle_sip_free(l_raw_header); BC_ASSERT_STRING_EQUAL(belle_sip_header_content_type_get_type(L_content_type),"application"); BC_ASSERT_STRING_EQUAL(belle_sip_header_content_type_get_subtype(L_content_type),"sdp"); belle_sip_object_unref(BELLE_SIP_OBJECT(L_content_type)); L_content_type = belle_sip_header_content_type_parse("Content-Type: application/pkcs7-mime; smime-type=enveloped-data; \r\n name=smime.p7m"); l_raw_header = belle_sip_object_to_string(BELLE_SIP_OBJECT(L_content_type)); belle_sip_object_unref(BELLE_SIP_OBJECT(L_content_type)); L_content_type = belle_sip_header_content_type_parse(l_raw_header); belle_sip_free(l_raw_header); belle_sip_object_unref(BELLE_SIP_OBJECT(L_content_type)); L_content_type = belle_sip_header_content_type_parse("Content-Type: multipart/related; type=application/rlmi+xml"); l_raw_header = belle_sip_object_to_string(BELLE_SIP_OBJECT(L_content_type)); belle_sip_object_unref(BELLE_SIP_OBJECT(L_content_type)); L_tmp = belle_sip_header_content_type_parse(l_raw_header); L_content_type = BELLE_SIP_HEADER_CONTENT_TYPE(belle_sip_object_clone(BELLE_SIP_OBJECT(L_tmp))); belle_sip_object_unref(BELLE_SIP_OBJECT(L_tmp)); belle_sip_free(l_raw_header); BC_ASSERT_STRING_EQUAL(belle_sip_header_content_type_get_type(L_content_type),"multipart"); BC_ASSERT_STRING_EQUAL(belle_sip_header_content_type_get_subtype(L_content_type),"related"); BC_ASSERT_STRING_EQUAL(belle_sip_parameters_get_parameter(BELLE_SIP_PARAMETERS(L_content_type),"type"),"application/rlmi+xml"); belle_sip_object_unref(BELLE_SIP_OBJECT(L_content_type)); BC_ASSERT_PTR_NULL(belle_sip_header_content_type_parse("nimportequoi")); } static void test_record_route_header(void) { belle_sip_uri_t* L_uri; belle_sip_header_t* l_next; belle_sip_header_record_route_t* L_next_route; belle_sip_header_record_route_t* L_record_route = belle_sip_header_record_route_parse("Record-Route: ;charset=ISO-8859-4"); char* l_raw_header = belle_sip_object_to_string(BELLE_SIP_OBJECT(L_record_route)); belle_sip_object_unref(BELLE_SIP_OBJECT(L_record_route)); L_record_route = belle_sip_header_record_route_parse(l_raw_header); belle_sip_free(l_raw_header); L_uri = belle_sip_header_address_get_uri(BELLE_SIP_HEADER_ADDRESS(L_record_route)); BC_ASSERT_PTR_NULL(belle_sip_uri_get_user(L_uri)); BC_ASSERT_STRING_EQUAL(belle_sip_uri_get_host(L_uri), "212.27.52.5"); BC_ASSERT_STRING_EQUAL(belle_sip_parameters_get_parameter(BELLE_SIP_PARAMETERS(L_record_route),"charset"),"ISO-8859-4"); belle_sip_object_unref(BELLE_SIP_OBJECT(L_record_route)); L_record_route = belle_sip_header_record_route_parse("Record-Route: ;charset=ISO-8859-4, "); l_next = belle_sip_header_get_next(BELLE_SIP_HEADER(L_record_route)); L_next_route = BELLE_SIP_HEADER_RECORD_ROUTE(l_next); BC_ASSERT_PTR_NOT_NULL(L_next_route); BC_ASSERT_PTR_NOT_NULL( belle_sip_header_address_get_uri(BELLE_SIP_HEADER_ADDRESS(L_next_route))); belle_sip_object_unref(BELLE_SIP_OBJECT(L_record_route)); BC_ASSERT_PTR_NULL(belle_sip_header_record_route_parse("nimportequoi")); BC_ASSERT_PTR_NULL(belle_sip_header_record_route_parse("Record-Route: , nimportequoi")); L_record_route=belle_sip_header_record_route_parse("Record-route: "); l_raw_header=belle_sip_object_to_string(L_record_route); belle_sip_object_unref(L_record_route); L_record_route=belle_sip_header_record_route_parse(l_raw_header); BC_ASSERT_PTR_NOT_NULL(L_record_route); if (L_record_route) belle_sip_object_unref(L_record_route); belle_sip_free(l_raw_header); } static void test_route_header(void) { belle_sip_header_route_t* L_route; belle_sip_uri_t* L_uri; belle_sip_header_t* l_next; belle_sip_header_route_t* L_next_route; belle_sip_header_address_t* address = belle_sip_header_address_parse(""); char* l_raw_header; belle_sip_header_record_route_t* L_record_route; if (!BC_ASSERT_PTR_NOT_NULL(address)) return; L_route = belle_sip_header_route_create(address); belle_sip_object_unref(address); if (!BC_ASSERT_PTR_NOT_NULL(L_route)) return; l_raw_header = belle_sip_object_to_string(BELLE_SIP_OBJECT(L_route)); belle_sip_object_unref(BELLE_SIP_OBJECT(L_route)); L_route = belle_sip_header_route_parse(l_raw_header); belle_sip_free(l_raw_header); L_uri = belle_sip_header_address_get_uri(BELLE_SIP_HEADER_ADDRESS(L_route)); BC_ASSERT_PTR_NULL(belle_sip_uri_get_user(L_uri)); BC_ASSERT_EQUAL(belle_sip_uri_get_port(L_uri), 5060,int,"%d"); belle_sip_object_unref(BELLE_SIP_OBJECT(L_route)); L_route = belle_sip_header_route_parse("Route: ;charset=ISO-8859-4, "); l_next = belle_sip_header_get_next(BELLE_SIP_HEADER(L_route)); L_next_route = BELLE_SIP_HEADER_ROUTE(l_next); BC_ASSERT_PTR_NOT_NULL(L_next_route); BC_ASSERT_PTR_NOT_NULL( belle_sip_header_address_get_uri(BELLE_SIP_HEADER_ADDRESS(L_next_route))); belle_sip_object_unref(BELLE_SIP_OBJECT(L_route)); BC_ASSERT_PTR_NULL(belle_sip_header_route_parse("nimportequoi")); BC_ASSERT_PTR_NULL(belle_sip_header_contact_parse("Route: , nimportequoi")); L_route=belle_sip_header_route_parse("Route: "); l_raw_header=belle_sip_object_to_string(L_route); belle_sip_object_unref(L_route); L_route=belle_sip_header_route_parse(l_raw_header); BC_ASSERT_PTR_NOT_NULL(L_route); if (L_route) belle_sip_object_unref(L_route); L_record_route = belle_sip_header_record_route_parse("Record-Route: ;charset=ISO-8859-4, "); L_route = belle_sip_header_route_create(BELLE_SIP_HEADER_ADDRESS(L_record_route)); L_uri = belle_sip_header_address_get_uri(BELLE_SIP_HEADER_ADDRESS(L_route)); BC_ASSERT_PTR_NULL(belle_sip_header_get_next(BELLE_SIP_HEADER(L_route))); BC_ASSERT_PTR_NULL(belle_sip_uri_get_user(L_uri)); BC_ASSERT_EQUAL(belle_sip_uri_get_port(L_uri), 5060,int,"%d"); BC_ASSERT_STRING_EQUAL(belle_sip_uri_get_host(L_uri), "212.27.52.5"); belle_sip_object_unref(L_record_route); belle_sip_object_unref(L_route); belle_sip_free(l_raw_header); } static void test_rseq_header(void) { belle_sip_header_t* L_tmp; belle_sip_header_t* L_rseq; char* l_raw_header = NULL; L_rseq = belle_sip_header_parse("RSeq: 3344"); l_raw_header = belle_sip_object_to_string(BELLE_SIP_OBJECT(L_rseq)); belle_sip_object_unref(BELLE_SIP_OBJECT(L_rseq)); L_tmp = belle_sip_header_parse(l_raw_header); L_rseq = BELLE_SIP_HEADER(belle_sip_object_clone(BELLE_SIP_OBJECT(L_tmp))); belle_sip_object_unref(BELLE_SIP_OBJECT(L_tmp)); belle_sip_free(l_raw_header); BC_ASSERT_STRING_EQUAL(belle_sip_header_get_unparsed_value(L_rseq), "3344"); belle_sip_object_unref(L_rseq); } static void test_service_route_header(void) { belle_sip_header_service_route_t* L_service_route = belle_sip_header_service_route_parse("Service-Route: "); belle_sip_uri_t* L_uri; char* l_raw_header; if (!BC_ASSERT_PTR_NOT_NULL(L_service_route)) return; l_raw_header = belle_sip_object_to_string(BELLE_SIP_OBJECT(L_service_route)); belle_sip_object_unref(BELLE_SIP_OBJECT(L_service_route)); L_service_route = belle_sip_header_service_route_parse(l_raw_header); belle_sip_free(l_raw_header); L_uri = belle_sip_header_address_get_uri(BELLE_SIP_HEADER_ADDRESS(L_service_route)); BC_ASSERT_PTR_NOT_NULL(belle_sip_uri_get_user(L_uri)); BC_ASSERT_EQUAL(belle_sip_uri_get_port(L_uri), 6060,int,"%d"); belle_sip_object_unref(BELLE_SIP_OBJECT(L_service_route)); BC_ASSERT_PTR_NULL(belle_sip_header_service_route_parse("nimportequoi")); } static void test_content_length_header(void) { belle_sip_header_content_length_t* L_tmp; belle_sip_header_content_length_t* L_content_length = belle_sip_header_content_length_parse("Content-Length: 3495"); char* l_raw_header = belle_sip_object_to_string(BELLE_SIP_OBJECT(L_content_length)); belle_sip_object_unref(BELLE_SIP_OBJECT(L_content_length)); L_tmp = belle_sip_header_content_length_parse(l_raw_header); L_content_length = BELLE_SIP_HEADER_CONTENT_LENGTH(belle_sip_object_clone(BELLE_SIP_OBJECT(L_tmp))); belle_sip_object_unref(BELLE_SIP_OBJECT(L_tmp)); belle_sip_free(l_raw_header); BC_ASSERT_EQUAL((unsigned int)belle_sip_header_content_length_get_content_length(L_content_length), 3495, unsigned int, "%u"); belle_sip_object_unref(BELLE_SIP_OBJECT(L_content_length)); BC_ASSERT_PTR_NULL(belle_sip_header_content_length_parse("nimportequoi")); } static void test_retry_after_header(void) { belle_sip_header_retry_after_t* L_tmp; belle_sip_header_retry_after_t* L_retry_after = belle_sip_header_retry_after_parse("Retry-After: 120"); char* l_raw_header = belle_sip_object_to_string(BELLE_SIP_OBJECT(L_retry_after)); belle_sip_object_unref(BELLE_SIP_OBJECT(L_retry_after)); L_tmp = belle_sip_header_retry_after_parse(l_raw_header); L_retry_after = BELLE_SIP_HEADER_RETRY_AFTER(belle_sip_object_clone(BELLE_SIP_OBJECT(L_tmp))); belle_sip_object_unref(BELLE_SIP_OBJECT(L_tmp)); belle_sip_free(l_raw_header); BC_ASSERT_EQUAL((unsigned int)belle_sip_header_retry_after_get_retry_after(L_retry_after), 120, int, "%i"); belle_sip_object_unref(BELLE_SIP_OBJECT(L_retry_after)); BC_ASSERT_PTR_NULL(belle_sip_header_retry_after_parse("nimportequoi")); } static belle_sip_header_t* test_header_extension(const char* name,const char* value) { belle_sip_header_t* L_tmp; belle_sip_header_t* L_extension; char header[256]; char* l_raw_header=NULL; snprintf(header,sizeof(header),"%s:%s",name,value); L_extension = belle_sip_header_parse(header); l_raw_header = belle_sip_object_to_string(BELLE_SIP_OBJECT(L_extension)); belle_sip_object_unref(BELLE_SIP_OBJECT(L_extension)); L_tmp = belle_sip_header_parse(l_raw_header); L_extension = BELLE_SIP_HEADER(belle_sip_object_clone(BELLE_SIP_OBJECT(L_tmp))); belle_sip_object_unref(BELLE_SIP_OBJECT(L_tmp)); belle_sip_free(l_raw_header); BC_ASSERT_STRING_EQUAL(belle_sip_header_get_unparsed_value(L_extension), value); /*FIXME jehan check why missing colon does not lead an exception BC_ASSERT_PTR_NULL(belle_sip_header_extension_parse("nimportequoi"));*/ return L_extension; } static void test_header_extension_1(void) { belle_sip_object_unref(test_header_extension("toto","titi")); } static void test_header_extension_2(void) { belle_sip_header_t* header = test_header_extension("From","sip:localhost"); BC_ASSERT_TRUE(BELLE_SIP_OBJECT_IS_INSTANCE_OF(header,belle_sip_header_from_t)); belle_sip_object_unref(header); } static void test_authorization_header(void) { const char* l_header = "Authorization: Digest username=\"0033482532176\", "\ "realm=\"sip.ovh.net\", nonce=\"1bcdcb194b30df5f43973d4c69bdf54f\", uri=\"sip:sip.ovh.net\", response=\"eb36c8d5c8642c1c5f44ec3404613c81\","\ "algorithm=MD5, opaque=\"1bc7f9097684320\"," "\r\n qop=auth, nc=00000001,cnonce=\"0a4f113b\", blabla=\"toto\""; belle_sip_header_authorization_t* L_tmp; belle_sip_header_authorization_t* L_authorization = belle_sip_header_authorization_parse(l_header); char* l_raw_header = belle_sip_object_to_string(BELLE_SIP_OBJECT(L_authorization)); belle_sip_object_unref(BELLE_SIP_OBJECT(L_authorization)); L_tmp = belle_sip_header_authorization_parse(l_raw_header); L_authorization = BELLE_SIP_HEADER_AUTHORIZATION(belle_sip_object_clone(BELLE_SIP_OBJECT(L_tmp))); belle_sip_object_unref(BELLE_SIP_OBJECT(L_tmp)); belle_sip_free(l_raw_header); if (!BC_ASSERT_PTR_NOT_NULL(L_authorization)) return; BC_ASSERT_STRING_EQUAL(belle_sip_header_authorization_get_scheme(L_authorization), "Digest"); BC_ASSERT_STRING_EQUAL(belle_sip_header_authorization_get_username(L_authorization), "0033482532176"); BC_ASSERT_STRING_EQUAL(belle_sip_header_authorization_get_realm(L_authorization), "sip.ovh.net"); BC_ASSERT_STRING_EQUAL(belle_sip_header_authorization_get_nonce(L_authorization), "1bcdcb194b30df5f43973d4c69bdf54f"); BC_ASSERT_PTR_NOT_NULL(belle_sip_header_authorization_get_uri(L_authorization)); BC_ASSERT_STRING_EQUAL(belle_sip_header_authorization_get_response(L_authorization), "eb36c8d5c8642c1c5f44ec3404613c81"); BC_ASSERT_STRING_EQUAL(belle_sip_header_authorization_get_algorithm(L_authorization), "MD5"); BC_ASSERT_STRING_EQUAL(belle_sip_header_authorization_get_opaque(L_authorization), "1bc7f9097684320"); BC_ASSERT_STRING_EQUAL(belle_sip_header_authorization_get_qop(L_authorization), "auth"); BC_ASSERT_EQUAL(belle_sip_header_authorization_get_nonce_count(L_authorization), 1,int,"%d"); BC_ASSERT_STRING_EQUAL(belle_sip_header_authorization_get_cnonce(L_authorization), "0a4f113b"); BC_ASSERT_STRING_EQUAL(belle_sip_parameters_get_parameter(BELLE_SIP_PARAMETERS(L_authorization), "blabla"),"\"toto\""); belle_sip_object_unref(BELLE_SIP_OBJECT(L_authorization)); BC_ASSERT_PTR_NULL(belle_sip_header_authorization_parse("nimportequoi")); } static void test_proxy_authorization_header(void) { const char* l_header = "Proxy-Authorization: Digest username=\"Alice\"" ", realm=\"atlanta.com\", nonce=\"c60f3082ee1212b402a21831ae\"" ", response=\"245f23415f11432b3434341c022\""; belle_sip_header_proxy_authorization_t* L_authorization = belle_sip_header_proxy_authorization_parse(l_header); char* l_raw_header = belle_sip_object_to_string(BELLE_SIP_OBJECT(L_authorization)); belle_sip_object_unref(BELLE_SIP_OBJECT(L_authorization)); L_authorization = belle_sip_header_proxy_authorization_parse(l_raw_header); belle_sip_free(l_raw_header); BC_ASSERT_PTR_NOT_NULL(L_authorization); BC_ASSERT_STRING_EQUAL(belle_sip_header_authorization_get_username(BELLE_SIP_HEADER_AUTHORIZATION(L_authorization)), "Alice"); BC_ASSERT_STRING_EQUAL(belle_sip_header_authorization_get_realm(BELLE_SIP_HEADER_AUTHORIZATION(L_authorization)), "atlanta.com"); BC_ASSERT_STRING_EQUAL(belle_sip_header_authorization_get_nonce(BELLE_SIP_HEADER_AUTHORIZATION(L_authorization)), "c60f3082ee1212b402a21831ae"); belle_sip_object_unref(BELLE_SIP_OBJECT(L_authorization)); BC_ASSERT_PTR_NULL(belle_sip_header_proxy_authorization_parse("nimportequoi")); } static void test_rack_header(void ) { belle_sip_header_t* L_tmp; belle_sip_header_t* L_rseq; char* l_raw_header = NULL; L_rseq = belle_sip_header_parse("RAck: 3344 101 INVITE"); l_raw_header = belle_sip_object_to_string(BELLE_SIP_OBJECT(L_rseq)); belle_sip_object_unref(BELLE_SIP_OBJECT(L_rseq)); L_tmp = belle_sip_header_parse(l_raw_header); L_rseq = BELLE_SIP_HEADER(belle_sip_object_clone(BELLE_SIP_OBJECT(L_tmp))); belle_sip_object_unref(BELLE_SIP_OBJECT(L_tmp)); belle_sip_free(l_raw_header); BC_ASSERT_STRING_EQUAL(belle_sip_header_get_unparsed_value(L_rseq), "3344 101 INVITE"); belle_sip_object_unref(L_rseq); } static void check_header_authenticate(belle_sip_header_www_authenticate_t* authenticate) { belle_sip_list_t* qop; BC_ASSERT_PTR_NOT_NULL(authenticate); BC_ASSERT_STRING_EQUAL(belle_sip_header_www_authenticate_get_realm(authenticate), "atlanta.com"); BC_ASSERT_STRING_EQUAL(belle_sip_header_www_authenticate_get_domain(authenticate), "sip:boxesbybob.com"); BC_ASSERT_STRING_EQUAL(belle_sip_header_www_authenticate_get_nonce(authenticate), "c60f3082ee1212b402a21831ae"); BC_ASSERT_STRING_EQUAL(belle_sip_header_www_authenticate_get_algorithm(authenticate), "MD5"); BC_ASSERT_STRING_EQUAL(belle_sip_header_www_authenticate_get_opaque(authenticate), "1bc7f9097684320"); if (!BC_ASSERT_PTR_NOT_NULL(qop=belle_sip_header_www_authenticate_get_qop(authenticate))) return; BC_ASSERT_STRING_EQUAL((const char*)qop->data, "auth"); if (!BC_ASSERT_PTR_NOT_NULL(qop=qop->next)) return; BC_ASSERT_STRING_EQUAL((const char*)qop->data, "auth-int"); BC_ASSERT_STRING_EQUAL(belle_sip_header_www_authenticate_get_qop(authenticate)->data, "auth"); BC_ASSERT_STRING_EQUAL(belle_sip_header_www_authenticate_get_scheme(authenticate), "Digest"); BC_ASSERT_EQUAL(belle_sip_header_www_authenticate_is_stale(authenticate),1,int,"%d"); belle_sip_object_unref(BELLE_SIP_OBJECT(authenticate)); } static void test_www_authenticate_header(void) { const char* l_header = "WWW-Authenticate: Digest " "algorithm=MD5,\r\n realm=\"atlanta.com\",\r\n opaque=\"1bc7f9097684320\"," " qop=\"auth,auth-int\", nonce=\"c60f3082ee1212b402a21831ae\", stale=true, domain=\"sip:boxesbybob.com\""; const char* l_header_1 = "WWW-Authenticate: Digest realm=\"toto.com\",\r\n nonce=\"b543409177c9036dbf3054aea940e9703dc8f84c0108\"" ",\r\n opaque=\"ALU:QbkRBthOEgEQAkgVEwwHRAIBHgkdHwQCQ1lFRkRWEAkic203MSEzJCgoZS8iI3VlYWRj\",\r\n algorithm=MD5" ",\r\n qop=\"auth\""; const char* l_header_2 = "WWW-Authenticate: Basic realm=\"WallyWorld\""; const char* l_header_3 = "WWW-Authenticate: Digest " "algorithm=MD5, realm=\"atlanta.com\", opaque=\"1bc7f9097684320\"," "nonce=\"c60f3082ee1212b402a21831ae\" , Digest " "algorithm=SHA-256, realm=\"atlanta.com\", opaque=\"1bc7f9097684320\"," "nonce=\"c60f3082ee1212b402a21831ae\""; belle_sip_header_www_authenticate_t* L_tmp; belle_sip_header_www_authenticate_t *l_authenticate = belle_sip_header_www_authenticate_parse(l_header); char* l_raw_header = belle_sip_object_to_string(BELLE_SIP_OBJECT(l_authenticate)); belle_sip_object_unref(BELLE_SIP_OBJECT(l_authenticate)); L_tmp = belle_sip_header_www_authenticate_parse(l_raw_header); l_authenticate = BELLE_SIP_HEADER_WWW_AUTHENTICATE(belle_sip_object_clone(BELLE_SIP_OBJECT(L_tmp))); belle_sip_object_unref(BELLE_SIP_OBJECT(L_tmp)); belle_sip_free(l_raw_header); check_header_authenticate(l_authenticate); l_authenticate = belle_sip_header_www_authenticate_parse(l_header_1); l_raw_header = belle_sip_object_to_string(BELLE_SIP_OBJECT(l_authenticate)); belle_sip_object_unref(BELLE_SIP_OBJECT(l_authenticate)); L_tmp = belle_sip_header_www_authenticate_parse(l_raw_header); belle_sip_free(l_raw_header); l_authenticate = BELLE_SIP_HEADER_WWW_AUTHENTICATE(belle_sip_object_clone(BELLE_SIP_OBJECT(L_tmp))); belle_sip_object_unref(BELLE_SIP_OBJECT(L_tmp)); belle_sip_object_unref(BELLE_SIP_OBJECT(l_authenticate)); l_authenticate = belle_sip_header_www_authenticate_parse(l_header_2); l_raw_header = belle_sip_object_to_string(BELLE_SIP_OBJECT(l_authenticate)); belle_sip_object_unref(BELLE_SIP_OBJECT(l_authenticate)); L_tmp = belle_sip_header_www_authenticate_parse(l_raw_header); belle_sip_free(l_raw_header); l_authenticate = BELLE_SIP_HEADER_WWW_AUTHENTICATE(belle_sip_object_clone(BELLE_SIP_OBJECT(L_tmp))); belle_sip_object_unref(BELLE_SIP_OBJECT(L_tmp)); BC_ASSERT_STRING_EQUAL(belle_sip_parameters_get_parameter(BELLE_SIP_PARAMETERS(l_authenticate),"realm"),"\"WallyWorld\""); BC_ASSERT_STRING_EQUAL(belle_sip_header_www_authenticate_get_scheme(l_authenticate),"Basic"); belle_sip_object_unref(BELLE_SIP_OBJECT(l_authenticate)); BC_ASSERT_PTR_NOT_NULL(L_tmp = belle_sip_header_www_authenticate_parse(l_header_3)); BC_ASSERT_STRING_EQUAL(belle_sip_header_www_authenticate_get_algorithm(L_tmp),"MD5"); BC_ASSERT_PTR_NOT_NULL(l_authenticate = BELLE_SIP_HEADER_WWW_AUTHENTICATE(belle_sip_header_get_next(BELLE_SIP_HEADER(L_tmp)))); BC_ASSERT_STRING_EQUAL(belle_sip_header_www_authenticate_get_algorithm(l_authenticate),"SHA-256"); belle_sip_object_unref(BELLE_SIP_OBJECT(L_tmp)); BC_ASSERT_PTR_NULL(belle_sip_header_www_authenticate_parse("nimportequoi")); } static void test_proxy_authenticate_header(void) { const char* l_header = "Proxy-Authenticate: Digest " "algorithm=MD5, realm=\"atlanta.com\", opaque=\"1bc7f9097684320\"," " qop=\"auth,auth-int\", nonce=\"c60f3082ee1212b402a21831ae\", stale=true, domain=\"sip:boxesbybob.com\""; const char* l_header_2 = "Proxy-Authenticate: Digest " "algorithm=MD5, realm=\"atlanta.com\", opaque=\"1bc7f9097684320\"," " qop=\"auth,auth-int\", nonce=\"c60f3082ee1212b402a21831ae\", stale=true, domain=\"sip:boxesbybob.com\"" ",Digest algorithm=SHA-256, realm=\"atlanta.com\", opaque=\"1bc7f9097684320\"," "nonce=\"c60f3082ee1212b402a21831ae\""; belle_sip_header_proxy_authenticate_t* L_tmp; belle_sip_header_proxy_authenticate_t* L_proxy_authenticate = belle_sip_header_proxy_authenticate_parse(l_header); //belle_sip_list_t* qop; char* l_raw_header = belle_sip_object_to_string(BELLE_SIP_OBJECT(L_proxy_authenticate)); belle_sip_object_unref(BELLE_SIP_OBJECT(L_proxy_authenticate)); L_tmp = belle_sip_header_proxy_authenticate_parse(l_raw_header); L_proxy_authenticate = BELLE_SIP_HEADER_PROXY_AUTHENTICATE(belle_sip_object_clone(BELLE_SIP_OBJECT(L_tmp))); belle_sip_object_unref(BELLE_SIP_OBJECT(L_tmp)); belle_sip_free(l_raw_header); check_header_authenticate(BELLE_SIP_HEADER_WWW_AUTHENTICATE(L_proxy_authenticate)); BC_ASSERT_PTR_NOT_NULL(L_tmp = belle_sip_header_proxy_authenticate_parse(l_header_2)); BC_ASSERT_STRING_EQUAL(belle_sip_header_www_authenticate_get_algorithm(BELLE_SIP_HEADER_WWW_AUTHENTICATE(L_tmp)),"MD5"); BC_ASSERT_PTR_NOT_NULL(L_proxy_authenticate = BELLE_SIP_HEADER_PROXY_AUTHENTICATE(belle_sip_header_get_next(BELLE_SIP_HEADER(L_tmp)))); BC_ASSERT_STRING_EQUAL(belle_sip_header_www_authenticate_get_algorithm(BELLE_SIP_HEADER_WWW_AUTHENTICATE(L_proxy_authenticate)),"SHA-256"); belle_sip_object_unref(BELLE_SIP_OBJECT(L_tmp)); BC_ASSERT_PTR_NULL(belle_sip_header_proxy_authenticate_parse("nimportequoi")); } static void test_max_forwards_header(void) { const char* l_header = "Max-Forwards: 6"; belle_sip_header_max_forwards_t* L_tmp; belle_sip_header_max_forwards_t* L_max_forwards = belle_sip_header_max_forwards_parse(l_header); char* l_raw_header; belle_sip_header_max_forwards_decrement_max_forwards(L_max_forwards); l_raw_header = belle_sip_object_to_string(BELLE_SIP_OBJECT(L_max_forwards)); belle_sip_object_unref(BELLE_SIP_OBJECT(L_max_forwards)); L_tmp = belle_sip_header_max_forwards_parse(l_raw_header); L_max_forwards = BELLE_SIP_HEADER_MAX_FORWARDS(belle_sip_object_clone(BELLE_SIP_OBJECT(L_tmp))); belle_sip_object_unref(BELLE_SIP_OBJECT(L_tmp)); belle_sip_free(l_raw_header); BC_ASSERT_PTR_NOT_NULL(L_max_forwards); BC_ASSERT_EQUAL(belle_sip_header_max_forwards_get_max_forwards(L_max_forwards), 5,int,"%d"); belle_sip_object_unref(BELLE_SIP_OBJECT(L_max_forwards)); BC_ASSERT_PTR_NULL(belle_sip_header_max_forwards_parse("nimportequoi")); } static void test_user_agent_header(void) { const char* l_header = "User-Agent: Linphone/3.4.99.1 (eXosip2/3.3.0)"; const char* values[] ={"Linphone/3.4.99.1" ,"(eXosip2/3.3.0)"}; belle_sip_list_t* products; belle_sip_header_user_agent_t* L_tmp; belle_sip_header_user_agent_t* L_user_agent = belle_sip_header_user_agent_parse(l_header); char* l_raw_header = belle_sip_object_to_string(BELLE_SIP_OBJECT(L_user_agent)); int i=0; belle_sip_object_unref(BELLE_SIP_OBJECT(L_user_agent)); L_tmp = belle_sip_header_user_agent_parse(l_raw_header); L_user_agent = BELLE_SIP_HEADER_USER_AGENT(belle_sip_object_clone(BELLE_SIP_OBJECT(L_tmp))); belle_sip_object_unref(BELLE_SIP_OBJECT(L_tmp)); belle_sip_free(l_raw_header); products = belle_sip_header_user_agent_get_products(L_user_agent); for(i=0;i<2;i++){ BC_ASSERT_PTR_NOT_NULL(products); BC_ASSERT_STRING_EQUAL((const char *)(products->data),values[i]); products=products->next; } belle_sip_object_unref(BELLE_SIP_OBJECT(L_user_agent)); BC_ASSERT_PTR_NULL(belle_sip_header_user_agent_parse("nimportequoi")); } static void test_expires_header(void) { belle_sip_header_expires_t* L_tmp; belle_sip_header_expires_t* L_expires = belle_sip_header_expires_parse("Expires: 3600"); char* l_raw_header = belle_sip_object_to_string(BELLE_SIP_OBJECT(L_expires)); belle_sip_object_unref(BELLE_SIP_OBJECT(L_expires)); L_tmp= belle_sip_header_expires_parse(l_raw_header); L_expires = BELLE_SIP_HEADER_EXPIRES(belle_sip_object_clone(BELLE_SIP_OBJECT(L_tmp))); belle_sip_object_unref(BELLE_SIP_OBJECT(L_tmp)); belle_sip_free(l_raw_header); BC_ASSERT_EQUAL(belle_sip_header_expires_get_expires(L_expires), 3600,int,"%d"); belle_sip_object_unref(BELLE_SIP_OBJECT(L_expires)); /*test factory*/ L_expires = belle_sip_header_expires_create(600); BC_ASSERT_EQUAL(belle_sip_header_expires_get_expires(L_expires), 600,int,"%d"); belle_sip_object_unref(L_expires); BC_ASSERT_PTR_NULL(belle_sip_header_expires_parse("nimportequoi")); } static void test_allow_header(void) { belle_sip_header_allow_t* L_tmp; belle_sip_header_allow_t* L_allow = belle_sip_header_allow_parse("Allow:INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO, PRACK"); char* l_raw_header = belle_sip_object_to_string(BELLE_SIP_OBJECT(L_allow)); belle_sip_object_unref(BELLE_SIP_OBJECT(L_allow)); L_tmp = belle_sip_header_allow_parse(l_raw_header); L_allow = BELLE_SIP_HEADER_ALLOW(belle_sip_object_clone(BELLE_SIP_OBJECT(L_tmp))); belle_sip_object_unref(BELLE_SIP_OBJECT(L_tmp)); belle_sip_free(l_raw_header); BC_ASSERT_STRING_EQUAL(belle_sip_header_allow_get_method(L_allow), "INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO, PRACK"); belle_sip_object_unref(BELLE_SIP_OBJECT(L_allow)); BC_ASSERT_PTR_NULL(belle_sip_header_allow_parse("nimportequoi")); } static void test_address_with_error_header(void) { belle_sip_header_address_t* laddress = belle_sip_header_address_parse("sip:liblinphone_tester@=auth1.example.org"); BC_ASSERT_PTR_NULL(laddress); laddress = belle_sip_header_address_parse("liblinphone_tester"); BC_ASSERT_PTR_NULL(laddress); } static void test_address_header(void) { belle_sip_uri_t* L_uri; char* L_raw; belle_sip_header_address_t* lclonedaddr; belle_sip_header_address_t* laddress = belle_sip_header_address_fast_parse("\"toto\" "); BC_ASSERT_PTR_NOT_NULL(laddress); L_raw = belle_sip_object_to_string(BELLE_SIP_OBJECT(lclonedaddr=belle_sip_header_address_clone(laddress))); BC_ASSERT_PTR_NOT_NULL(L_raw); belle_sip_object_unref(BELLE_SIP_OBJECT(laddress)); belle_sip_object_unref(BELLE_SIP_OBJECT(lclonedaddr)); laddress = belle_sip_header_address_parse(L_raw); belle_sip_free(L_raw); BC_ASSERT_STRING_EQUAL("toto",belle_sip_header_address_get_displayname(laddress)); L_uri = belle_sip_header_address_get_uri(laddress); BC_ASSERT_PTR_NOT_NULL(belle_sip_uri_get_user(L_uri)); BC_ASSERT_STRING_EQUAL(belle_sip_uri_get_host(L_uri), "81.56.11.2"); BC_ASSERT_STRING_EQUAL(belle_sip_uri_get_user(L_uri), "liblinphone_tester"); BC_ASSERT_EQUAL(belle_sip_uri_get_port(L_uri), 5060,int,"%d"); belle_sip_object_unref(BELLE_SIP_OBJECT(laddress)); laddress = belle_sip_header_address_parse("\"\\\"to\\\\to\\\"\" "); BC_ASSERT_PTR_NOT_NULL(laddress); L_raw = belle_sip_object_to_string(BELLE_SIP_OBJECT(laddress)); BC_ASSERT_PTR_NOT_NULL(L_raw); belle_sip_object_unref(BELLE_SIP_OBJECT(laddress)); laddress = belle_sip_header_address_parse(L_raw); belle_sip_free(L_raw); BC_ASSERT_STRING_EQUAL("\"to\\to\"",belle_sip_header_address_get_displayname(laddress)); belle_sip_object_unref(BELLE_SIP_OBJECT(laddress)); laddress = belle_sip_header_address_parse("sips:example.com;transport=tls;maddr=sip1.example.com"); BC_ASSERT_PTR_NOT_NULL(laddress); L_raw = belle_sip_object_to_string(BELLE_SIP_OBJECT(laddress)); BC_ASSERT_PTR_NOT_NULL(L_raw); belle_sip_object_unref(BELLE_SIP_OBJECT(laddress)); laddress = belle_sip_header_address_parse(L_raw); belle_sip_free(L_raw); BC_ASSERT_STRING_EQUAL("sip1.example.com",belle_sip_uri_get_maddr_param(belle_sip_header_address_get_uri(laddress))); belle_sip_object_unref(BELLE_SIP_OBJECT(laddress)); } static void test_address_header_with_params(void) { belle_sip_uri_t* L_uri; char* L_raw; belle_sip_header_address_t* lclonedaddr; belle_sip_header_address_t* laddress = belle_sip_header_address_fast_parse("\"toto\" ; toto=\"titi\";tutu"); BC_ASSERT_PTR_NOT_NULL(laddress); L_raw = belle_sip_object_to_string(BELLE_SIP_OBJECT(lclonedaddr=belle_sip_header_address_clone(laddress))); BC_ASSERT_PTR_NOT_NULL(L_raw); belle_sip_object_unref(BELLE_SIP_OBJECT(laddress)); belle_sip_object_unref(BELLE_SIP_OBJECT(lclonedaddr)); laddress = belle_sip_header_address_parse(L_raw); belle_sip_free(L_raw); BC_ASSERT_STRING_EQUAL("toto",belle_sip_header_address_get_displayname(laddress)); L_uri = belle_sip_header_address_get_uri(laddress); BC_ASSERT_PTR_NOT_NULL(belle_sip_uri_get_user(L_uri)); BC_ASSERT_STRING_EQUAL(belle_sip_uri_get_host(L_uri), "81.56.11.2"); BC_ASSERT_STRING_EQUAL(belle_sip_uri_get_user(L_uri), "liblinphone_tester"); BC_ASSERT_EQUAL(belle_sip_uri_get_port(L_uri), 5060,int,"%d"); BC_ASSERT_STRING_EQUAL(belle_sip_parameters_get_parameter(BELLE_SIP_PARAMETERS(laddress), "toto"),"\"titi\""); BC_ASSERT_TRUE(belle_sip_parameters_has_parameter(BELLE_SIP_PARAMETERS(laddress), "toto")); belle_sip_object_unref(BELLE_SIP_OBJECT(laddress)); } static void test_address_header_with_tel_uri(void) { belle_generic_uri_t* L_uri; char* L_raw; belle_sip_header_address_t* laddress = belle_sip_header_address_fast_parse("\"toto\" "); BC_ASSERT_PTR_NOT_NULL(laddress); L_raw = belle_sip_object_to_string(BELLE_SIP_OBJECT(laddress)); BC_ASSERT_PTR_NOT_NULL(L_raw); belle_sip_object_unref(BELLE_SIP_OBJECT(laddress)); laddress = belle_sip_header_address_parse(L_raw); belle_sip_free(L_raw); BC_ASSERT_STRING_EQUAL("toto",belle_sip_header_address_get_displayname(laddress)); L_uri = belle_sip_header_address_get_absolute_uri(laddress); BC_ASSERT_PTR_NOT_NULL(belle_generic_uri_get_opaque_part(L_uri)); BC_ASSERT_STRING_EQUAL(belle_generic_uri_get_opaque_part(L_uri), "123456"); belle_sip_object_unref(BELLE_SIP_OBJECT(laddress)); } static void test_address_header_with_session_expires(void) { char* L_raw; belle_sip_header_session_expires_t* L_session_expires_tmp = belle_sip_header_session_expires_parse("Session-Expires: 4000;refresher=uac"); belle_sip_header_session_expires_t* L_session_expires = BELLE_SIP_HEADER_SESSION_EXPIRES(belle_sip_object_clone(BELLE_SIP_OBJECT(L_session_expires_tmp))); BC_ASSERT_EQUAL(belle_sip_header_session_expires_get_delta(L_session_expires), 4000, int, "%d"); BC_ASSERT_EQUAL(belle_sip_header_session_expires_get_refresher_value(L_session_expires), BELLE_SIP_HEADER_SESSION_EXPIRES_UAC, int,"%d"); L_raw = belle_sip_object_to_string(BELLE_SIP_OBJECT(L_session_expires)); BC_ASSERT_PTR_NOT_NULL(L_raw); belle_sip_object_unref(BELLE_SIP_OBJECT(L_session_expires)); L_session_expires = belle_sip_header_session_expires_parse(L_raw); BC_ASSERT_EQUAL(belle_sip_header_session_expires_get_delta(L_session_expires), 4000, int, "%d"); belle_sip_header_session_expires_set_delta(L_session_expires, 123); BC_ASSERT_EQUAL(belle_sip_header_session_expires_get_delta(L_session_expires), 123, int, "%d"); BC_ASSERT_EQUAL(belle_sip_header_session_expires_get_refresher_value(L_session_expires), BELLE_SIP_HEADER_SESSION_EXPIRES_UAC, int,"%d"); belle_sip_header_session_expires_set_refresher_value(L_session_expires, BELLE_SIP_HEADER_SESSION_EXPIRES_UAS); BC_ASSERT_EQUAL(belle_sip_header_session_expires_get_refresher_value(L_session_expires), BELLE_SIP_HEADER_SESSION_EXPIRES_UAS, int, "%d"); belle_sip_object_unref(BELLE_SIP_OBJECT(L_session_expires)); belle_sip_object_unref(BELLE_SIP_OBJECT(L_session_expires_tmp)); belle_sip_free(L_raw); } static void test_address_header_with_urn(void) { belle_generic_uri_t* L_uri; char* L_raw; belle_sip_header_address_t* laddress = belle_sip_header_address_fast_parse("urn:service:sos"); BC_ASSERT_PTR_NOT_NULL(laddress); L_raw = belle_sip_object_to_string(BELLE_SIP_OBJECT(laddress)); BC_ASSERT_PTR_NOT_NULL(L_raw); belle_sip_object_unref(BELLE_SIP_OBJECT(laddress)); laddress = belle_sip_header_address_parse(L_raw); belle_sip_free(L_raw); BC_ASSERT_PTR_NULL(belle_sip_header_address_get_displayname(laddress)); L_uri = belle_sip_header_address_get_absolute_uri(laddress); BC_ASSERT_PTR_NOT_NULL(belle_generic_uri_get_scheme(L_uri)); BC_ASSERT_STRING_EQUAL(belle_generic_uri_get_scheme(L_uri), "urn"); BC_ASSERT_PTR_NOT_NULL(belle_generic_uri_get_opaque_part(L_uri)); BC_ASSERT_STRING_EQUAL(belle_generic_uri_get_opaque_part(L_uri), "service:sos"); belle_sip_object_unref(BELLE_SIP_OBJECT(laddress)); } static void test_very_long_address_header(void) { belle_sip_uri_t* L_uri; const char* raw = ""; /*not compliant but*/ belle_sip_header_address_t* laddress = belle_sip_header_address_parse(raw); if (!BC_ASSERT_PTR_NOT_NULL(laddress)) return; L_uri = belle_sip_header_address_get_uri(laddress); BC_ASSERT_PTR_NOT_NULL(belle_sip_uri_get_user(L_uri)); BC_ASSERT_STRING_EQUAL(belle_sip_uri_get_host(L_uri), "sip.linphone.org"); BC_ASSERT_STRING_EQUAL(belle_sip_uri_get_user(L_uri), "jehan"); do { char format[512]; const char * cactual = (belle_sip_parameters_get_parameter(BELLE_SIP_PARAMETERS(L_uri),"pn-tok")); const char * cexpected = ("APA91bHPVa4PuKOMnr6ppWb3XYUL06QO-ND4eeiw7dG49q4o_Ywzal7BxVRgH-wvqH9iB9V7h6kfb-DCiVdSpnl6CeWO25FAkM4eh6DJyWcbP7SzhKdku_-r9936kJW7-4drI6-Om4qp"); sprintf(format, "name" "(" "#actual" ", " "#expected" ") - " "Expected %s but was %s.\n", cexpected, cactual); printf("%s\n", format); } while (0); BC_ASSERT_STRING_EQUAL(belle_sip_parameters_get_parameter(BELLE_SIP_PARAMETERS(L_uri),"pn-tok") ,"APA91bHPVa4PuKOMnr6ppWb3XYUL06QO-ND4eeiw7dG49q4o_Ywzal7BxVRgH-wvqH9iB9V7h6kfb-DCiVdSpnl6CeWO25FAkM4eh6DJyWcbP7SzhKdku_-r9936kJW7-4drI6-Om4qp"); belle_sip_object_unref(BELLE_SIP_OBJECT(laddress)); } static void test_subscription_state_header(void) { belle_sip_header_subscription_state_t* L_tmp; belle_sip_header_subscription_state_t* L_subscription_state = belle_sip_header_subscription_state_parse("Subscription-State: terminated;expires=600"); char* l_raw_header = belle_sip_object_to_string(BELLE_SIP_OBJECT(L_subscription_state)); belle_sip_object_unref(BELLE_SIP_OBJECT(L_subscription_state)); L_tmp = belle_sip_header_subscription_state_parse(l_raw_header); L_subscription_state = BELLE_SIP_HEADER_SUBSCRIPTION_STATE(belle_sip_object_clone(BELLE_SIP_OBJECT(L_tmp))); belle_sip_object_unref(BELLE_SIP_OBJECT(L_tmp)); belle_sip_free(l_raw_header); BC_ASSERT_STRING_EQUAL(belle_sip_header_subscription_state_get_state(L_subscription_state), "terminated"); BC_ASSERT_EQUAL(belle_sip_header_subscription_state_get_expires(L_subscription_state), 600,int,"%d"); belle_sip_object_unref(BELLE_SIP_OBJECT(L_subscription_state)); BC_ASSERT_PTR_NULL(belle_sip_header_subscription_state_parse("nimportequoi")); } static void test_refer_to_header(void) { belle_sip_uri_t* L_uri; belle_sip_header_address_t *ha; belle_sip_header_refer_to_t* L_refer_to = belle_sip_header_refer_to_parse("Refer-To: "); char* l_raw_header = belle_sip_object_to_string(BELLE_SIP_OBJECT(L_refer_to)); belle_sip_object_unref(BELLE_SIP_OBJECT(L_refer_to)); L_refer_to = belle_sip_header_refer_to_parse(l_raw_header); belle_sip_free(l_raw_header); L_uri = belle_sip_header_address_get_uri(BELLE_SIP_HEADER_ADDRESS(L_refer_to)); BC_ASSERT_STRING_EQUAL(belle_sip_uri_get_user(L_uri),"dave"); BC_ASSERT_STRING_EQUAL(belle_sip_uri_get_host(L_uri), "denver.example.org"); belle_sip_object_unref(BELLE_SIP_OBJECT(L_refer_to)); /*test factory*/ L_refer_to = belle_sip_header_refer_to_create((ha=belle_sip_header_address_parse("\"super man\" "))); belle_sip_object_unref(ha); if (!BC_ASSERT_PTR_NOT_NULL(L_refer_to)) return; L_uri = belle_sip_header_address_get_uri(BELLE_SIP_HEADER_ADDRESS(L_refer_to)); if (!BC_ASSERT_PTR_NOT_NULL(L_uri)) return; BC_ASSERT_STRING_EQUAL(belle_sip_header_address_get_displayname(BELLE_SIP_HEADER_ADDRESS(L_refer_to)), "super man"); belle_sip_object_unref(L_refer_to); BC_ASSERT_PTR_NULL(belle_sip_header_refer_to_parse("nimportequoi")); } static void test_referred_by_header(void) { belle_sip_uri_t* L_uri; belle_sip_header_referred_by_t* L_referred_by = belle_sip_header_referred_by_parse("Referred-By: sip:r@ref.example;cid=\"2UWQFN309shb3@ref.example\""); char* l_raw_header = belle_sip_object_to_string(BELLE_SIP_OBJECT(L_referred_by)); belle_sip_object_unref(BELLE_SIP_OBJECT(L_referred_by)); L_referred_by = belle_sip_header_referred_by_parse(l_raw_header); belle_sip_free(l_raw_header); L_uri = belle_sip_header_address_get_uri(BELLE_SIP_HEADER_ADDRESS(L_referred_by)); BC_ASSERT_STRING_EQUAL(belle_sip_uri_get_user(L_uri),"r"); BC_ASSERT_STRING_EQUAL(belle_sip_uri_get_host(L_uri), "ref.example"); belle_sip_object_unref(BELLE_SIP_OBJECT(L_referred_by)); BC_ASSERT_PTR_NULL(belle_sip_header_referred_by_parse("nimportequoi")); } static void test_replaces_header(void) { belle_sip_header_replaces_t* L_tmp; belle_sip_header_replaces_t* L_replaces = belle_sip_header_replaces_parse("Replaces: 12345@149.112.118.3;to-tag=12345;from-tag=54321"); char* l_raw_header = belle_sip_object_to_string(BELLE_SIP_OBJECT(L_replaces)); belle_sip_object_unref(BELLE_SIP_OBJECT(L_replaces)); L_tmp= belle_sip_header_replaces_parse(l_raw_header); L_replaces = BELLE_SIP_HEADER_REPLACES(belle_sip_object_clone(BELLE_SIP_OBJECT(L_tmp))); belle_sip_object_unref(BELLE_SIP_OBJECT(L_tmp)); belle_sip_free(l_raw_header); BC_ASSERT_STRING_EQUAL(belle_sip_header_replaces_get_call_id(L_replaces), "12345@149.112.118.3"); BC_ASSERT_STRING_EQUAL(belle_sip_header_replaces_get_from_tag(L_replaces), "54321"); BC_ASSERT_STRING_EQUAL(belle_sip_header_replaces_get_to_tag(L_replaces), "12345"); belle_sip_object_unref(BELLE_SIP_OBJECT(L_replaces)); BC_ASSERT_PTR_NULL(belle_sip_header_replaces_parse("nimportequoi")); } static void test_replaces_escaped_header(void) { belle_sip_header_replaces_t* L_replaces; char* escaped_to_string; char* l_raw_header; belle_sip_header_replaces_t* L_tmp = belle_sip_header_replaces_create("12345@192.168.118.3","5FFE-3994","12345"); escaped_to_string=belle_sip_header_replaces_value_to_escaped_string(L_tmp); L_replaces=belle_sip_header_replaces_create2(escaped_to_string); l_raw_header = belle_sip_object_to_string(BELLE_SIP_OBJECT(L_replaces)); belle_sip_object_unref(BELLE_SIP_OBJECT(L_replaces)); belle_sip_object_unref(L_tmp); L_tmp= belle_sip_header_replaces_parse(l_raw_header); L_replaces = BELLE_SIP_HEADER_REPLACES(belle_sip_object_clone(BELLE_SIP_OBJECT(L_tmp))); belle_sip_object_unref(BELLE_SIP_OBJECT(L_tmp)); belle_sip_free(l_raw_header); belle_sip_free(escaped_to_string); BC_ASSERT_STRING_EQUAL(belle_sip_header_replaces_get_call_id(L_replaces), "12345@192.168.118.3"); BC_ASSERT_STRING_EQUAL(belle_sip_header_replaces_get_from_tag(L_replaces), "5FFE-3994"); BC_ASSERT_STRING_EQUAL(belle_sip_header_replaces_get_to_tag(L_replaces), "12345"); belle_sip_object_unref(BELLE_SIP_OBJECT(L_replaces)); } static void test_require(const char* header_name, const char * header_value, const char* values[],size_t number_values){ belle_sip_list_t* list; belle_sip_header_require_t* L_tmp; belle_sip_header_require_t* L_require = BELLE_SIP_HEADER_REQUIRE(belle_sip_header_create(header_name,header_value)); char* l_raw_header = belle_sip_object_to_string(BELLE_SIP_OBJECT(L_require)); size_t i=0; belle_sip_object_unref(BELLE_SIP_OBJECT(L_require)); L_tmp = belle_sip_header_require_parse(l_raw_header); L_require = BELLE_SIP_HEADER_REQUIRE(belle_sip_object_clone(BELLE_SIP_OBJECT(L_tmp))); belle_sip_object_unref(BELLE_SIP_OBJECT(L_tmp)); belle_sip_free(l_raw_header); list = belle_sip_header_require_get_require(L_require); for(i=0;idata),values[i]); list=list->next; } } belle_sip_object_unref(BELLE_SIP_OBJECT(L_require)); BC_ASSERT_PTR_NULL(belle_sip_header_require_parse("nimportequoi")); } static void test_header_require(void) { const char* value1[] ={"user","critical"}; const char* value2[] ={"id"}; const char* value3[] ={"100rel"}; test_require("Require","user, critical",value1,2); test_require("Require", "id",value2,1); test_require("Require", "100rel", value3, 1); } #ifndef _WIN32 static void _test_date_header(void){ belle_sip_header_date_t *date,*date2; time_t utc; #define DATE_EXAMPLE "Thu, 21 Feb 2002 13:02:03 GMT" #define DATE_UTC_EXAMPLE 1014296523L /* the above date in UTC */ date=belle_sip_header_date_parse("Date: " DATE_EXAMPLE); BC_ASSERT_PTR_NOT_NULL(date); if (date){ utc=belle_sip_header_date_get_time(date); BC_ASSERT_EQUAL(utc,DATE_UTC_EXAMPLE,int,"%d"); belle_sip_object_unref(date); } date2=belle_sip_header_date_create_from_time(&utc); BC_ASSERT_PTR_NOT_NULL(date2); if (date2){ BC_ASSERT_STRING_EQUAL(belle_sip_header_date_get_date(date2),DATE_EXAMPLE); BC_ASSERT_PTR_NULL(belle_sip_header_date_parse("nimportequoi")); belle_sip_object_unref(date2); } } #endif static void test_date_header(void){ #ifdef _WIN32 // TODO: setenv and unsetenv are not available for Windows #else char *tz; /* test in our timezone */ _test_date_header(); /* test within another timezone */ tz = getenv("TZ"); setenv("TZ","Etc/GMT+4",1); tzset(); _test_date_header(); /* reset to original timezone */ if(tz) setenv("TZ", tz, 1); else unsetenv("TZ"); tzset(); #endif } static void test_p_preferred_identity_header(void) { belle_sip_uri_t* L_uri; belle_sip_header_p_preferred_identity_t* L_p_preferred_identity = belle_sip_header_p_preferred_identity_parse("P-Preferred-Identity: \"Cullen Jennings\" "); char* l_raw_header = belle_sip_object_to_string(BELLE_SIP_OBJECT(L_p_preferred_identity)); belle_sip_object_unref(BELLE_SIP_OBJECT(L_p_preferred_identity)); L_p_preferred_identity = belle_sip_header_p_preferred_identity_parse(l_raw_header); belle_sip_free(l_raw_header); L_uri = belle_sip_header_address_get_uri(BELLE_SIP_HEADER_ADDRESS(L_p_preferred_identity)); BC_ASSERT_STRING_EQUAL(belle_sip_header_address_get_displayname(BELLE_SIP_HEADER_ADDRESS(L_p_preferred_identity)),"Cullen Jennings"); BC_ASSERT_STRING_EQUAL(belle_sip_uri_get_user(L_uri),"fluffy"); BC_ASSERT_STRING_EQUAL(belle_sip_uri_get_host(L_uri), "cisco.com"); belle_sip_object_unref(BELLE_SIP_OBJECT(L_p_preferred_identity)); BC_ASSERT_PTR_NULL(belle_sip_header_p_preferred_identity_parse("nimportequoi")); } static void test_privacy(const char* raw_header,const char* values[],size_t number_values) { belle_sip_list_t* list; belle_sip_header_privacy_t* L_tmp; belle_sip_header_privacy_t* L_privacy = belle_sip_header_privacy_parse(raw_header); char* l_raw_header = belle_sip_object_to_string(BELLE_SIP_OBJECT(L_privacy)); size_t i=0; belle_sip_object_unref(BELLE_SIP_OBJECT(L_privacy)); L_tmp = belle_sip_header_privacy_parse(l_raw_header); L_privacy = BELLE_SIP_HEADER_PRIVACY(belle_sip_object_clone(BELLE_SIP_OBJECT(L_tmp))); belle_sip_object_unref(BELLE_SIP_OBJECT(L_tmp)); belle_sip_free(l_raw_header); list = belle_sip_header_privacy_get_privacy(L_privacy); for(i=0;idata),values[i]); list=list->next; } belle_sip_object_unref(BELLE_SIP_OBJECT(L_privacy)); BC_ASSERT_PTR_NULL(belle_sip_header_privacy_parse("nimportequoi")); } static void test_privacy_header(void) { const char* value1[] ={"user","critical"}; const char* value2[] ={"id"}; test_privacy("Privacy: user; critical",value1,2); test_privacy("Privacy: id",value2,1); } static void test_event_header(void) { belle_sip_header_event_t* L_tmp; belle_sip_header_event_t* L_event = belle_sip_header_event_parse("Event: presence;id=blabla1"); char* l_raw_header = belle_sip_object_to_string(BELLE_SIP_OBJECT(L_event)); belle_sip_object_unref(BELLE_SIP_OBJECT(L_event)); L_tmp = belle_sip_header_event_parse(l_raw_header); L_event = BELLE_SIP_HEADER_EVENT(belle_sip_object_clone(BELLE_SIP_OBJECT(L_tmp))); belle_sip_object_unref(BELLE_SIP_OBJECT(L_tmp)); belle_sip_free(l_raw_header); BC_ASSERT_STRING_EQUAL(belle_sip_header_event_get_package_name(L_event), "presence"); BC_ASSERT_STRING_EQUAL(belle_sip_header_event_get_id(L_event), "blabla1"); belle_sip_object_unref(BELLE_SIP_OBJECT(L_event)); L_event = belle_sip_header_event_parse("o: presence;id=blabla1"); BC_ASSERT_PTR_NOT_NULL(L_event); if (L_event) { BC_ASSERT_STRING_EQUAL(belle_sip_header_event_get_package_name(L_event), "presence"); BC_ASSERT_STRING_EQUAL(belle_sip_header_event_get_id(L_event), "blabla1"); belle_sip_object_unref(BELLE_SIP_OBJECT(L_event)); } BC_ASSERT_PTR_NULL(belle_sip_header_event_parse("nimportequoi")); } static void test_supported(const char* header_name, const char * header_value, const char* values[],size_t number_values) { belle_sip_list_t* list; belle_sip_header_supported_t* L_tmp; belle_sip_header_supported_t* L_supported = BELLE_SIP_HEADER_SUPPORTED(belle_sip_header_create(header_name,header_value)); char* l_raw_header = belle_sip_object_to_string(BELLE_SIP_OBJECT(L_supported)); size_t i=0; belle_sip_object_unref(BELLE_SIP_OBJECT(L_supported)); L_tmp = belle_sip_header_supported_parse(l_raw_header); L_supported = BELLE_SIP_HEADER_SUPPORTED(belle_sip_object_clone(BELLE_SIP_OBJECT(L_tmp))); belle_sip_object_unref(BELLE_SIP_OBJECT(L_tmp)); belle_sip_free(l_raw_header); list = belle_sip_header_supported_get_supported(L_supported); for(i=0;idata),values[i]); list=list->next; } } belle_sip_object_unref(BELLE_SIP_OBJECT(L_supported)); BC_ASSERT_PTR_NULL(belle_sip_header_supported_parse("nimportequoi")); } static void test_supported_header(void) { const char* value1[] ={"user","critical"}; const char* value2[] ={"id"}; const char* value3[] ={"100rel"}; test_supported("Supported","user, critical",value1,2); test_supported("Supported", "id",value2,1); test_supported("Supported", "100rel", value3, 1); } static void test_content_disposition_header(void) { belle_sip_header_content_disposition_t* L_tmp; belle_sip_header_content_disposition_t* L_content_disposition = BELLE_SIP_HEADER_CONTENT_DISPOSITION(belle_sip_header_create("Content-Disposition","form-data; name=\"File\"; filename=\"toto.jpeg\"")); char* l_raw_header = belle_sip_object_to_string(BELLE_SIP_OBJECT(L_content_disposition)); belle_sip_object_unref(BELLE_SIP_OBJECT(L_content_disposition)); L_tmp = belle_sip_header_content_disposition_parse(l_raw_header); L_content_disposition = BELLE_SIP_HEADER_CONTENT_DISPOSITION(belle_sip_object_clone(BELLE_SIP_OBJECT(L_tmp))); belle_sip_object_unref(BELLE_SIP_OBJECT(L_tmp)); belle_sip_free(l_raw_header); BC_ASSERT_STRING_EQUAL(belle_sip_header_content_disposition_get_content_disposition(L_content_disposition), "form-data"); BC_ASSERT_STRING_EQUAL(belle_sip_parameters_get_parameter(BELLE_SIP_PARAMETERS(L_content_disposition), "name"), "\"File\""); BC_ASSERT_STRING_EQUAL(belle_sip_parameters_get_parameter(BELLE_SIP_PARAMETERS(L_content_disposition), "filename"), "\"toto.jpeg\""); belle_sip_object_unref(BELLE_SIP_OBJECT(L_content_disposition)); BC_ASSERT_PTR_NULL(belle_sip_header_content_disposition_parse("nimportequoi")); } static void test_accept_header(void) { belle_sip_header_accept_t* L_tmp; belle_sip_header_accept_t* L_accept = BELLE_SIP_HEADER_ACCEPT(belle_sip_header_create("Accept", "text/html; charset=ISO-8859-4")); char* l_raw_header = belle_sip_object_to_string(BELLE_SIP_OBJECT(L_accept)); belle_sip_object_unref(BELLE_SIP_OBJECT(L_accept)); L_tmp = belle_sip_header_accept_parse(l_raw_header); L_accept = BELLE_SIP_HEADER_ACCEPT(belle_sip_object_clone(BELLE_SIP_OBJECT(L_tmp))); belle_sip_object_unref(BELLE_SIP_OBJECT(L_tmp)); belle_sip_free(l_raw_header); BC_ASSERT_STRING_EQUAL(belle_sip_header_accept_get_type(L_accept),"text"); BC_ASSERT_STRING_EQUAL(belle_sip_header_accept_get_subtype(L_accept),"html"); BC_ASSERT_STRING_EQUAL(belle_sip_parameters_get_parameter(BELLE_SIP_PARAMETERS(L_accept),"charset"),"ISO-8859-4"); belle_sip_object_unref(BELLE_SIP_OBJECT(L_accept)); L_accept = belle_sip_header_accept_parse("Accept: application/sdp"); l_raw_header = belle_sip_object_to_string(BELLE_SIP_OBJECT(L_accept)); belle_sip_object_unref(BELLE_SIP_OBJECT(L_accept)); L_accept = belle_sip_header_accept_parse(l_raw_header); belle_sip_free(l_raw_header); BC_ASSERT_STRING_EQUAL(belle_sip_header_accept_get_type(L_accept),"application"); BC_ASSERT_STRING_EQUAL(belle_sip_header_accept_get_subtype(L_accept),"sdp"); belle_sip_object_unref(BELLE_SIP_OBJECT(L_accept)); L_accept = belle_sip_header_accept_parse("Accept: application/pkcs7-mime; smime-type=enveloped-data; \r\n name=smime.p7m"); l_raw_header = belle_sip_object_to_string(BELLE_SIP_OBJECT(L_accept)); belle_sip_object_unref(BELLE_SIP_OBJECT(L_accept)); L_accept = belle_sip_header_accept_parse(l_raw_header); belle_sip_free(l_raw_header); belle_sip_object_unref(BELLE_SIP_OBJECT(L_accept)); L_accept = belle_sip_header_accept_parse("Accept: application/sdp, text/plain, application/vnd.gsma.rcs-ft-http+xml"); BC_ASSERT_STRING_EQUAL(belle_sip_header_accept_get_type(L_accept),"application"); BC_ASSERT_STRING_EQUAL(belle_sip_header_accept_get_subtype(L_accept),"sdp"); L_tmp = BELLE_SIP_HEADER_ACCEPT(belle_sip_header_get_next(BELLE_SIP_HEADER(L_accept))); BC_ASSERT_STRING_EQUAL(belle_sip_header_accept_get_type(L_tmp),"text"); BC_ASSERT_STRING_EQUAL(belle_sip_header_accept_get_subtype(L_tmp),"plain"); L_tmp = BELLE_SIP_HEADER_ACCEPT(belle_sip_header_get_next(BELLE_SIP_HEADER(L_tmp))); BC_ASSERT_STRING_EQUAL(belle_sip_header_accept_get_type(L_tmp),"application"); BC_ASSERT_STRING_EQUAL(belle_sip_header_accept_get_subtype(L_tmp),"vnd.gsma.rcs-ft-http+xml"); belle_sip_object_unref(BELLE_SIP_OBJECT(L_accept)); BC_ASSERT_PTR_NULL(belle_sip_header_accept_parse("nimportequoi")); } static void test_reason_header(void) { belle_sip_header_reason_t *L_tmp, *l_next; belle_sip_header_reason_t* L_reason = BELLE_SIP_HEADER_REASON(belle_sip_header_create("Reason", "Q.850 ;cause=16 ;text=\"Busy Everywhere\"")); char* l_raw_header; BC_ASSERT_STRING_EQUAL(belle_sip_header_reason_get_text(L_reason),"Busy Everywhere"); belle_sip_header_reason_set_text(L_reason, "Terminated"); l_raw_header = belle_sip_object_to_string(BELLE_SIP_OBJECT(L_reason)); belle_sip_object_unref(BELLE_SIP_OBJECT(L_reason)); L_tmp = belle_sip_header_reason_parse(l_raw_header); L_reason = BELLE_SIP_HEADER_REASON(belle_sip_object_clone(BELLE_SIP_OBJECT(L_tmp))); belle_sip_object_unref(BELLE_SIP_OBJECT(L_tmp)); BC_ASSERT_STRING_EQUAL(belle_sip_header_reason_get_text(L_reason),"Terminated"); BC_ASSERT_STRING_EQUAL(belle_sip_header_reason_get_protocol(L_reason),"Q.850"); BC_ASSERT_EQUAL(belle_sip_header_reason_get_cause(L_reason),16 , int,"%d"); belle_sip_object_unref(BELLE_SIP_OBJECT(L_reason)); belle_sip_free(l_raw_header); L_reason = belle_sip_header_reason_parse("Reason: SIP ;cause=600 ;text=\"Busy Everywhere\", SIP ;cause=580 ;text=\"Precondition Failure\""); l_next =BELLE_SIP_HEADER_REASON(belle_sip_header_get_next(BELLE_SIP_HEADER(L_reason))); BC_ASSERT_PTR_NOT_NULL(l_next); BC_ASSERT_EQUAL(belle_sip_header_reason_get_cause(l_next),580 , int,"%d"); belle_sip_object_unref(BELLE_SIP_OBJECT(L_reason)); BC_ASSERT_PTR_NULL(belle_sip_header_reason_parse("nimportequoi")); } static void test_authentication_info_header(void) { belle_sip_header_authentication_info_t *L_tmp; belle_sip_header_authentication_info_t* L_authentication_info = BELLE_SIP_HEADER_AUTHENTICATION_INFO(belle_sip_header_create("Authentication-Info" , "nextnonce=\"47364c23432d2e131a5fb210812c\"" ", qop=auth")); char* l_raw_header; BC_ASSERT_STRING_EQUAL(belle_sip_header_authentication_info_get_next_nonce(L_authentication_info),"47364c23432d2e131a5fb210812c"); belle_sip_header_authentication_info_set_next_nonce(L_authentication_info, "31a5fb210812c47364c23432d2e1"); l_raw_header = belle_sip_object_to_string(BELLE_SIP_OBJECT(L_authentication_info)); belle_sip_object_unref(BELLE_SIP_OBJECT(L_authentication_info)); L_tmp = belle_sip_header_authentication_info_parse(l_raw_header); L_authentication_info = BELLE_SIP_HEADER_AUTHENTICATION_INFO(belle_sip_object_clone(BELLE_SIP_OBJECT(L_tmp))); belle_sip_object_unref(BELLE_SIP_OBJECT(L_tmp)); BC_ASSERT_STRING_EQUAL(belle_sip_header_authentication_info_get_next_nonce(L_authentication_info),"31a5fb210812c47364c23432d2e1"); BC_ASSERT_STRING_EQUAL(belle_sip_header_authentication_info_get_qop(L_authentication_info),"auth"); belle_sip_object_unref(BELLE_SIP_OBJECT(L_authentication_info)); belle_sip_free(l_raw_header); L_authentication_info = belle_sip_header_authentication_info_parse("Authentication-Info:nextnonce=\"WRSE5VkUg7kOjnP5sBZZzsxrsOQ8Eyp6ZNttXIA=\", qop=auth , rspauth=\"5e8518291c1320989df6966405e0b3d1\", cnonce=\"05bc00e63a7794182f9425da9266d00d\", nc=00000001"); BC_ASSERT_EQUAL(belle_sip_header_authentication_info_get_nonce_count(L_authentication_info),1, int, "%i"); belle_sip_object_unref(BELLE_SIP_OBJECT(L_authentication_info)); BC_ASSERT_PTR_NULL(belle_sip_header_authentication_info_parse("nimportequoi")); } test_t headers_tests[] = { TEST_NO_TAG("Address", test_address_header), TEST_NO_TAG("Address with params",test_address_header_with_params), TEST_NO_TAG("Address tel uri", test_address_header_with_tel_uri), TEST_NO_TAG("Address urn", test_address_header_with_urn), TEST_NO_TAG("Header address (very long)", test_very_long_address_header), TEST_NO_TAG("Address with error", test_address_with_error_header), TEST_NO_TAG("Allow", test_allow_header), TEST_NO_TAG("Authorization", test_authorization_header), TEST_NO_TAG("Session-Expires", test_address_header_with_session_expires), TEST_NO_TAG("Call-ID", test_call_id_header), TEST_NO_TAG("Contact (Simple)", test_simple_contact_header), TEST_NO_TAG("Contact (Complex)", test_complex_contact_header), TEST_NO_TAG("Contact (Param-less address spec)", test_contact_header_with_paramless_address_spec), TEST_NO_TAG("Content-Length", test_content_length_header), TEST_NO_TAG("Retry-After", test_retry_after_header), TEST_NO_TAG("Content-Type", test_content_type_header), TEST_NO_TAG("CSeq", test_cseq_header), TEST_NO_TAG("Date", test_date_header), TEST_NO_TAG("Expires", test_expires_header), TEST_NO_TAG("From", test_from_header), TEST_NO_TAG("From (Param-less address spec)", test_from_header_with_paramless_address_spec), TEST_NO_TAG("Max-Forwards", test_max_forwards_header), TEST_NO_TAG("Privacy", test_privacy_header), TEST_NO_TAG("P-Preferred-Identity", test_p_preferred_identity_header), TEST_NO_TAG("Proxy-Authenticate", test_proxy_authenticate_header), TEST_NO_TAG("Proxy-Authorization", test_proxy_authorization_header), TEST_NO_TAG("RAck", test_rack_header), TEST_NO_TAG("Record-Route", test_record_route_header), TEST_NO_TAG("Refer-To", test_refer_to_header), TEST_NO_TAG("Referred-By", test_referred_by_header), TEST_NO_TAG("Replaces", test_replaces_header), TEST_NO_TAG("Replaces (Escaped)", test_replaces_escaped_header), TEST_NO_TAG("Require", test_header_require), TEST_NO_TAG("Route", test_route_header), TEST_NO_TAG("RSeq", test_rseq_header), TEST_NO_TAG("Service-Route", test_service_route_header), TEST_NO_TAG("Subscription-State", test_subscription_state_header), TEST_NO_TAG("To", test_to_header), TEST_NO_TAG("To (Param-less address spec)", test_to_header_with_paramless_address_spec), TEST_NO_TAG("User-Agent", test_user_agent_header), TEST_NO_TAG("Via", test_via_header), TEST_NO_TAG("WWW-Authenticate", test_www_authenticate_header), TEST_NO_TAG("Extension", test_header_extension_1), TEST_NO_TAG("Extension 2", test_header_extension_2), TEST_NO_TAG("Event", test_event_header), TEST_NO_TAG("Supported", test_supported_header), TEST_NO_TAG("Content-Disposition", test_content_disposition_header), TEST_NO_TAG("Accept", test_accept_header), TEST_NO_TAG("Reason", test_reason_header), TEST_NO_TAG("Authentication-Info", test_authentication_info_header) }; test_suite_t headers_test_suite = {"Headers", NULL, NULL, belle_sip_tester_before_each, belle_sip_tester_after_each, sizeof(headers_tests) / sizeof(headers_tests[0]), headers_tests}; belle-sip-5.2.0+dfsg/tester/belle_sip_message_tester.c000066400000000000000000001572231434613136500230330ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "belle-sip/belle-sip.h" #include "belle_sip_tester.h" #include "belle_sip_internal.h" static void check_uri_and_headers(belle_sip_message_t* message) { if (belle_sip_message_is_request(message)) { BC_ASSERT_TRUE(belle_sip_request_get_uri(BELLE_SIP_REQUEST(message))|| belle_sip_request_get_absolute_uri(BELLE_SIP_REQUEST(message)) ); BC_ASSERT_PTR_NOT_NULL(belle_sip_message_get_header(message,"Max-Forwards")); BC_ASSERT_PTR_NOT_NULL(BELLE_SIP_HEADER_MAX_FORWARDS(belle_sip_message_get_header(message,"Max-Forwards"))); BC_ASSERT_PTR_NOT_NULL(belle_sip_message_get_header(message,"User-Agent")); BC_ASSERT_PTR_NOT_NULL(BELLE_SIP_HEADER_USER_AGENT(belle_sip_message_get_header(message,"User-Agent"))); } BC_ASSERT_PTR_NOT_NULL(belle_sip_message_get_header(message,"From")); BC_ASSERT_PTR_NOT_NULL(BELLE_SIP_HEADER_FROM(belle_sip_message_get_header(message,"From"))); BC_ASSERT_PTR_NOT_NULL(belle_sip_message_get_header(message,"To")); BC_ASSERT_PTR_NOT_NULL(BELLE_SIP_HEADER_TO(belle_sip_message_get_header(message,"To"))); BC_ASSERT_PTR_NOT_NULL(belle_sip_message_get_header(message,"CSeq")); BC_ASSERT_PTR_NOT_NULL(BELLE_SIP_HEADER_CSEQ(belle_sip_message_get_header(message,"CSeq"))); BC_ASSERT_PTR_NOT_NULL(belle_sip_message_get_header(message,"Via")); BC_ASSERT_PTR_NOT_NULL(BELLE_SIP_HEADER_VIA(belle_sip_message_get_header(message,"Via"))); BC_ASSERT_PTR_NOT_NULL(belle_sip_message_get_header(message,"Call-ID")); BC_ASSERT_PTR_NOT_NULL(BELLE_SIP_HEADER_CALL_ID(belle_sip_message_get_header(message,"Call-ID"))); BC_ASSERT_PTR_NOT_NULL(belle_sip_message_get_header(message,"Content-Length")); BC_ASSERT_PTR_NOT_NULL(BELLE_SIP_HEADER_CONTENT_LENGTH(belle_sip_message_get_header(message,"Content-Length"))); } static void testRegisterMessage(void) { const char* raw_message = "REGISTER sip:192.168.0.20 SIP/2.0\r\n"\ "v: SIP/2.0/UDP 192.168.1.8:5062;rport;branch=z9hG4bK1439638806\r\n"\ "f: ;tag=465687829\r\n"\ "t: \r\n"\ "i: 1053183492\r\n"\ "CSeq: 1 REGISTER\r\n"\ "m: \r\n"\ "Max-Forwards: 70\r\n"\ "User-Agent: Linphone/3.3.99.10 (eXosip2/3.3.0)\r\n"\ "Expires: 3600\r\n"\ "Proxy-Authorization: Digest username=\"8117396\", realm=\"Realm\", nonce=\"MTMwNDAwMjIxMjA4NzVkODY4ZmZhODMzMzU4ZDJkOTA1NzM2NTQ2NDZlNmIz"\ ", uri=\"sip:linphone.net\", response=\"eed376ff7c963441255ec66594e470e7\", algorithm=MD5, cnonce=\"0a4f113b\", qop=auth, nc=00000001\r\n"\ "l: 0\r\n\r\n"; belle_sip_request_t* request; belle_sip_message_t* message = belle_sip_message_parse(raw_message); char* encoded_message = belle_sip_object_to_string(BELLE_SIP_OBJECT(message)); belle_sip_object_unref(BELLE_SIP_OBJECT(message)); message = belle_sip_message_parse(encoded_message); request = BELLE_SIP_REQUEST(message); BC_ASSERT_STRING_EQUAL(belle_sip_request_get_method(request),"REGISTER"); BC_ASSERT_PTR_NOT_NULL(belle_sip_message_get_header(message,"Expires")); BC_ASSERT_PTR_NOT_NULL(BELLE_SIP_HEADER_EXPIRES(belle_sip_message_get_header(message,"Expires"))); BC_ASSERT_PTR_NOT_NULL(belle_sip_message_get_header(message,"Proxy-Authorization")); BC_ASSERT_PTR_NOT_NULL(belle_sip_message_get_header(message,"Contact")); check_uri_and_headers(message); belle_sip_free(encoded_message); belle_sip_object_unref(message); } static void testInviteMessage(void) { const char* raw_message = "INVITE sip:becheong@sip.linphone.org SIP/2.0\r\n"\ "Via: SIP/2.0/UDP 10.23.17.117:22600;branch=z9hG4bK-d8754z-4d7620d2feccbfac-1---d8754z-;rport=4820;received=202.165.193.129\r\n"\ "Max-Forwards: 70\r\n"\ "Contact: \r\n"\ "To: \"becheong\" \r\n"\ "From: \"Benjamin Cheong\" ;tag=7326e5f6\r\n"\ "Call-ID: Y2NlNzg0ODc0ZGIxODU1MWI5MzhkNDVkNDZhOTQ4YWU.\r\n"\ "CSeq: 1 INVITE\r\n"\ "Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO, PRACK\r\n"\ "c: application/sdp\r\n"\ "Supported: replaces\r\n"\ "Supported: 100rel\r\n"\ "Authorization: Digest username=\"003332176\", realm=\"sip.ovh.net\", nonce=\"24212965507cde726e8bc37e04686459\", uri=\"sip:sip.ovh.net\", response=\"896e786e9c0525ca3085322c7f1bce7b\", algorithm=MD5, opaque=\"241b9fb347752f2\"\r\n"\ "User-Agent: X-Lite 4 release 4.0 stamp 58832\r\n"\ "Content-Length: 230\r\n\r\n"; belle_sip_request_t* request; belle_sip_message_t* message = belle_sip_message_parse(raw_message); char* encoded_message = belle_sip_object_to_string(BELLE_SIP_OBJECT(message)); belle_sip_object_unref(BELLE_SIP_OBJECT(message)); message = belle_sip_message_parse(encoded_message); request = BELLE_SIP_REQUEST(message); BC_ASSERT_STRING_EQUAL(belle_sip_request_get_method(request),"INVITE"); BC_ASSERT_PTR_NOT_NULL(belle_sip_message_get_header(message,"Contact")); BC_ASSERT_PTR_NOT_NULL(belle_sip_message_get_header(message,"Authorization")); BC_ASSERT_PTR_NOT_NULL(belle_sip_message_get_header(message,"Content-Type")); belle_sip_header_supported_t* header_support; BC_ASSERT_PTR_NOT_NULL(header_support=BELLE_SIP_HEADER_SUPPORTED(belle_sip_message_get_header(message,"Supported"))); if (header_support) { belle_sip_list_t* list; list = belle_sip_header_supported_get_supported(header_support); BC_ASSERT_PTR_NOT_NULL(list); const char* value[] = {"replaces", "100rel"}; int num_supported = 2; int i; for(i = 0; i < num_supported; i++){ if (list) { BC_ASSERT_STRING_EQUAL((const char *)(list->data), value[i]); list=list->next; } } } check_uri_and_headers(message); belle_sip_object_unref(message); belle_sip_free(encoded_message); } static void testInviteMessageWithTelUri(void) { const char* raw_message = "INVITE tel:11234567888;phone-context=vzims.fr SIP/2.0\r\n"\ "Via: SIP/2.0/UDP 10.23.17.117:22600;branch=z9hG4bK-d8754z-4d7620d2feccbfac-1---d8754z-;rport=4820;received=202.165.193.129\r\n"\ "Max-Forwards: 70\r\n"\ "Contact: \r\n"\ "To: \r\n"\ "From: tel:11234567888;tag=werwrw\r\n"\ "Call-ID: Y2NlNzg0ODc0ZGIxODU1MWI5MzhkNDVkNDZhOTQ4YWU.\r\n"\ "CSeq: 1 INVITE\r\n"\ "Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO\r\n"\ "c: application/sdp\r\n"\ "Supported: replaces\r\n"\ "Authorization: Digest username=\"003332176\", realm=\"sip.ovh.net\", nonce=\"24212965507cde726e8bc37e04686459\", uri=\"sip:sip.ovh.net\", response=\"896e786e9c0525ca3085322c7f1bce7b\", algorithm=MD5, opaque=\"241b9fb347752f2\"\r\n"\ "User-Agent: X-Lite 4 release 4.0 stamp 58832\r\n"\ "Content-Length: 230\r\n\r\n"; belle_sip_request_t* request; belle_sip_message_t* message = belle_sip_message_parse(raw_message); char* encoded_message = belle_sip_object_to_string(BELLE_SIP_OBJECT(message)); belle_sip_object_unref(BELLE_SIP_OBJECT(message)); message = belle_sip_message_parse(encoded_message); request = BELLE_SIP_REQUEST(message); BC_ASSERT_STRING_EQUAL(belle_sip_request_get_method(request),"INVITE"); BC_ASSERT_PTR_NOT_NULL(belle_sip_message_get_header(message,"Contact")); BC_ASSERT_PTR_NOT_NULL(belle_sip_message_get_header(message,"Authorization")); BC_ASSERT_PTR_NOT_NULL(belle_sip_message_get_header(message,"Content-Type")); check_uri_and_headers(message); BC_ASSERT_PTR_NOT_NULL(belle_sip_header_address_get_absolute_uri(BELLE_SIP_HEADER_ADDRESS(belle_sip_message_get_header_by_type(message,belle_sip_header_from_t)))); BC_ASSERT_PTR_NOT_NULL(belle_sip_header_address_get_absolute_uri(BELLE_SIP_HEADER_ADDRESS(belle_sip_message_get_header_by_type(message,belle_sip_header_to_t)))); BC_ASSERT_STRING_EQUAL(belle_generic_uri_get_opaque_part(belle_sip_request_get_absolute_uri(request)),"11234567888;phone-context=vzims.fr"); belle_sip_object_unref(message); belle_sip_free(encoded_message); } static void test401Response(void) { const char* raw_message = "SIP/2.0 401 Unauthorized\r\n" "Call-ID: 577586163\r\n" "CSeq: 21 REGISTER\r\n" "From: ;tag=1790643209\r\n" "Server: Cirpack/v4.42x (gw_sip)\r\n" "To: ;tag=00-08075-24212984-22e348d97\r\n" "Via: SIP/2.0/UDP 192.168.0.18:5062;received=81.56.113.2;rport=5062;branch=z9hG4bK1939354046\r\n" "WWW-Authenticate: Digest realm=\"sip.ovh.net\",nonce=\"24212965507cde726e8bc37e04686459\",opaque=\"241b9fb347752f2\",stale=false,algorithm=MD5\r\n" "Content-Length: 0\r\n\r\n"; belle_sip_response_t* response; belle_sip_message_t* message = belle_sip_message_parse(raw_message); char* encoded_message = belle_sip_object_to_string(BELLE_SIP_OBJECT(message)); belle_sip_object_unref(BELLE_SIP_OBJECT(message)); message = belle_sip_message_parse(encoded_message); response = BELLE_SIP_RESPONSE(message); BC_ASSERT_EQUAL(belle_sip_response_get_status_code(response),401,int,"%d"); BC_ASSERT_STRING_EQUAL(belle_sip_response_get_reason_phrase(response),"Unauthorized"); BC_ASSERT_PTR_NOT_NULL(belle_sip_message_get_header(message,"WWW-Authenticate")); check_uri_and_headers(message); belle_sip_object_unref(message); belle_sip_free(encoded_message); } static void test401ResponseWithoutResponsePhrase(void) { const char* raw_message = "SIP/2.0 401 \r\n" "Call-ID: 577586163\r\n" "CSeq: 21 REGISTER\r\n" "From: ;tag=1790643209\r\n" "Server: Cirpack/v4.42x (gw_sip)\r\n" "To: ;tag=00-08075-24212984-22e348d97\r\n" "Via: SIP/2.0/UDP 192.168.0.18:5062;received=81.56.113.2;rport=5062;branch=z9hG4bK1939354046\r\n" "WWW-Authenticate: Digest realm=\"sip.ovh.net\",\r\n nonce=\"24212965507cde726e8bc37e04686459\",opaque=\"241b9fb347752f2\",stale=false,algorithm=MD5\r\n" "Content-Length: 0\r\n\r\n"; belle_sip_response_t* response; belle_sip_message_t* message = belle_sip_message_parse(raw_message); char* encoded_message = belle_sip_object_to_string(BELLE_SIP_OBJECT(message)); belle_sip_object_unref(BELLE_SIP_OBJECT(message)); message = belle_sip_message_parse(encoded_message); response = BELLE_SIP_RESPONSE(message); BC_ASSERT_EQUAL(belle_sip_response_get_status_code(response),401,int,"%d"); BC_ASSERT_PTR_NULL(belle_sip_response_get_reason_phrase(response)); BC_ASSERT_PTR_NOT_NULL(belle_sip_message_get_header(message,"WWW-Authenticate")); check_uri_and_headers(message); belle_sip_object_unref(message); belle_sip_free(encoded_message); } static void testRegisterRaw(void) { const char* raw_message = "REGISTER sip:192.168.0.20 SIP/2.0\r\n"\ "Via: SIP/2.0/UDP 192.168.1.8:5062;rport;branch=z9hG4bK1439638806\r\n"\ "From: ;tag=465687829\r\n"\ "To: \r\n"\ "Call-ID: 1053183492\r\n"\ "CSeq: 1 REGISTER\r\n"\ "Contact: \r\n"\ "Max-Forwards: 70\r\n"\ "User-Agent: Linphone/3.3.99.10 (eXosip2/3.3.0)\r\n"\ "Expires: 3600\r\n"\ "Content-Length: 0\r\n\r\n123456789"; belle_sip_request_t* request; size_t size=0; size_t raw_message_size= strlen(raw_message); belle_sip_message_t* message = belle_sip_message_parse_raw(raw_message,raw_message_size,&size); BC_ASSERT_EQUAL((unsigned int)raw_message_size,(unsigned int)size+9,unsigned int,"%u"); request = BELLE_SIP_REQUEST(message); BC_ASSERT_STRING_EQUAL(belle_sip_request_get_method(request),"REGISTER"); BC_ASSERT_PTR_NOT_NULL(belle_sip_request_get_uri(request)); BC_ASSERT_STRING_EQUAL(&raw_message[size],"123456789"); belle_sip_object_unref(message); } static void testOptionMessage(void) { const char* raw_message = "REGISTER sip:192.168.0.20 SIP/2.0\r\n"\ "Via: SIP/2.0/UDP 192.168.1.8:5062;rport;branch=z9hG4bK1439638806\r\n"\ "From: ;tag=465687829\r\n"\ "To: \r\n"\ "Call-ID: 1053183492\r\n"\ "CSeq: 1 REGISTER\r\n"\ "Contact: \r\n"\ "Max-Forwards: 70\r\n"\ "User-Agent: Linphone/3.3.99.10 (eXosip2/3.3.0)\r\n"\ "Expires: 3600\r\n"\ "Content-Length: 0\r\n\r\n"; belle_sip_message_t* message = belle_sip_message_parse(raw_message); belle_sip_request_t* request = BELLE_SIP_REQUEST(message); BC_ASSERT_STRING_EQUAL(belle_sip_request_get_method(request),"REGISTER"); BC_ASSERT_PTR_NOT_NULL(belle_sip_request_get_uri(request)); belle_sip_object_unref(message); } static void test_extract_source(void) { const char * invite_1="INVITE sip:jehan@81.56.113.2:50343;transport=tcp;line=f18e0009dd6cc43 SIP/2.0\r\n" "Via: SIP/2.0/TCP 37.59.129.73;branch=z9hG4bK.SKvK9U327e8mU68XUv5rt144pg\r\n" "Via: SIP/2.0/UDP 192.168.1.12:15060;rport=15060;branch=z9hG4bK1596944937;received=81.56.113.2\r\n" "Record-Route: \r\n" "Record-Route: \r\n" "Max-Forwards: 70\r\n" "From: ;tag=711138653\r\n" "To: \r\n" "Call-ID: 977107319\r\n" "CSeq: 21 INVITE\r\n" "Contact: \r\n" "Subject: Phone call\r\n" "User-Agent: Linphone/3.5.2 (eXosip2/3.6.0)\r\n" "Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO\r\n" "Content-Type: application/sdp\r\n"\ "Content-Length: 230\r\n\r\n"; const char * invite_2="INVITE sip:jehan@81.56.113.2:50343;transport=tcp;line=f18e0009dd6cc43 SIP/2.0\r\n" "Via: SIP/2.0/UDP 192.168.1.12:15060;rport=15060;branch=z9hG4bK1596944937;received=81.56.113.2\r\n" "Via: SIP/2.0/TCP 37.59.129.73;branch=z9hG4bK.SKvK9U327e8mU68XUv5rt144pg\r\n" "Record-Route: \r\n" "Record-Route: \r\n" "Max-Forwards: 70\r\n" "From: ;tag=711138653\r\n" "To: \r\n" "Call-ID: 977107319\r\n" "CSeq: 21 INVITE\r\n" "Contact: \r\n" "Subject: Phone call\r\n" "User-Agent: Linphone/3.5.2 (eXosip2/3.6.0)\r\n" "Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO\r\n" "Content-Length: 0\r\n\r\n"; belle_sip_message_t* message = belle_sip_message_parse(invite_1); belle_sip_request_t* request = BELLE_SIP_REQUEST(message); belle_sip_uri_t* source =belle_sip_request_extract_origin(request); BC_ASSERT_PTR_NOT_NULL(belle_sip_message_get_header(message,"Content-type")); BC_ASSERT_PTR_NOT_NULL(source); BC_ASSERT_STRING_EQUAL(belle_sip_uri_get_host(source),"37.59.129.73"); BC_ASSERT_EQUAL(belle_sip_uri_get_port(source),0,int,"%d"); BC_ASSERT_STRING_EQUAL(belle_sip_uri_get_transport_param(source),"tcp"); belle_sip_object_unref(message); belle_sip_object_unref(source); message = belle_sip_message_parse(invite_2); request = BELLE_SIP_REQUEST(message); source =belle_sip_request_extract_origin(request); BC_ASSERT_PTR_NOT_NULL(source); BC_ASSERT_STRING_EQUAL(belle_sip_uri_get_host(source),"81.56.113.2"); BC_ASSERT_EQUAL(belle_sip_uri_get_port(source),15060,int,"%d"); BC_ASSERT_STRING_EQUAL(belle_sip_uri_get_transport_param(source),"udp"); belle_sip_object_unref(message); belle_sip_object_unref(source); } static void test_sipfrag(void) { const char* raw_message = "SIP/2.0 100 Trying\r\n"; belle_sip_response_t* response; belle_sip_message_t* message = belle_sip_message_parse(raw_message); response = BELLE_SIP_RESPONSE(message); BC_ASSERT_EQUAL(belle_sip_response_get_status_code(response),100,int,"%d"); BC_ASSERT_STRING_EQUAL(belle_sip_response_get_reason_phrase(response),"Trying"); belle_sip_object_unref(message); } /*static void test_fix_contact_with_received_rport() { }*/ static void testMalformedMessage(void) { const char * raw_message= "INVITE sip:jehan@81.56.113.2:50343;transport=tcp;line=f18e0009dd6cc43 SIP/2.0\r\n" "Via: SIP/2.0/UDP 192.168.1.12:15060;rport=15060;branch=z9hG4bK1596944937;received=81.56.113.2\r\n" "Via: SIP/2.0/TCP 37.59.129.73;branch=z9hG4bK.SKvK9U327e8mU68XUv5rt144pg\r\n" "Record-Route: \r\n" "Record-Route: \r\n" "Max-Forwards: 70\r\n" "From: ;tag=711138653\r\n" "To: \r\n" "Call-ID: 977107319\r\n" "CSeq: 21 INVITE\r\n" "Contact: ;pn-tok=/throttledthirdparty\r\n" /*Slash is not allowed for contact params*/\ "Subject: Phone call\r\n" "User-Agent: Linphone/3.5.2 (eXosip2/3.6.0)\r\n" "Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO\r\n" "Content-Length: 0\r\n\r\n"; belle_sip_message_t* message = belle_sip_message_parse(raw_message); BC_ASSERT_FALSE(belle_sip_message_check_headers(message)); belle_sip_object_unref(message); } static void testMalformedOptionnalHeaderInMessage(void) { const char* raw_message = "REGISTER sip:192.168.0.20 SIP/2.0\r\n"\ "Via: SIP/2.0/UDP 192.168.1.8:5062;rport;branch=z9hG4bK1439638806\r\n"\ "From: ;tag=465687829\r\n"\ "To: \r\n"\ "Call-ID: 1053183492\r\n"\ "CSeq: 1 REGISTER\r\n"\ "Contact: ;pn-tok=/throttledthirdparty\r\n" /*Slash is not allowed for contact params*/\ "Max-Forwards: 70\r\n"\ "User-Agent: Linphone/3.3.99.10 (eXosip2/3.3.0)\r\n"\ "Expires: 3600\r\n"\ "Proxy-Authorization: Digest username=\"8117396\", realm=\"Realm\", nonce=\"MTMwNDAwMjIxMjA4NzVkODY4ZmZhODMzMzU4ZDJkOTA1NzM2NTQ2NDZlNmIz"\ ", uri=\"sip:linphone.net\", response=\"eed376ff7c963441255ec66594e470e7\", algorithm=MD5, cnonce=\"0a4f113b\", qop=auth, nc=00000001\r\n"\ "Content-Length: 0\r\n\r\n"; belle_sip_request_t* request; belle_sip_message_t* message = belle_sip_message_parse(raw_message); char* encoded_message = belle_sip_object_to_string(BELLE_SIP_OBJECT(message)); belle_sip_object_unref(BELLE_SIP_OBJECT(message)); message = belle_sip_message_parse(encoded_message); request = BELLE_SIP_REQUEST(message); BC_ASSERT_STRING_EQUAL(belle_sip_request_get_method(request),"REGISTER"); BC_ASSERT_PTR_NOT_NULL(belle_sip_message_get_header(message,"Expires")); BC_ASSERT_PTR_NOT_NULL(BELLE_SIP_HEADER_EXPIRES(belle_sip_message_get_header(message,"Expires"))); BC_ASSERT_PTR_NOT_NULL(belle_sip_message_get_header(message,"Proxy-Authorization")); BC_ASSERT_PTR_NULL(belle_sip_message_get_header(message,"Contact")); /*contact is optionnal in register*/ check_uri_and_headers(message); belle_sip_free(encoded_message); belle_sip_object_unref(message); } static void testMalformedMessageWithWrongStart(void) { const char * raw_message= "\r\n" "INVITE sip:jehan@81.56.113.2:50343;transport=tcp;line=f18e0009dd6cc43 SIP/2.0\r\n" "Via: SIP/2.0/UDP 192.168.1.12:15060;rport=15060;branch=z9hG4bK1596944937;received=81.56.113.2\r\n" "Via: SIP/2.0/TCP 37.59.129.73;branch=z9hG4bK.SKvK9U327e8mU68XUv5rt144pg\r\n" "Record-Route: \r\n" "Record-Route: \r\n" "Max-Forwards: 70\r\n" "From: ;tag=711138653\r\n" "To: \r\n" "Call-ID: 977107319\r\n" "CSeq: 21 INVITE\r\n" "Contact: \r\n" "Subject: Phone call\r\n" "User-Agent: Linphone/3.5.2 (eXosip2/3.6.0)\r\n" "Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO\r\n" "Content-Length: 0\r\n\r\n"; belle_sip_message_t* message = belle_sip_message_parse(raw_message); BC_ASSERT_PTR_NULL(message); } void channel_parser_tester_recovery_from_error_base (const char* prelude,const char* raw_message) { belle_sip_stack_t* stack = belle_sip_stack_new(NULL); belle_sip_channel_t* channel = belle_sip_stream_channel_new_client(stack , NULL , 45421 , NULL , "127.0.0.1" , 45421, TRUE); belle_sip_request_t* request; belle_sip_message_t* message; if (prelude) { channel->input_stream.write_ptr = strcpy(channel->input_stream.write_ptr,prelude); channel->input_stream.write_ptr+=strlen(prelude); belle_sip_channel_parse_stream(channel,FALSE); } channel->input_stream.write_ptr = strcpy(channel->input_stream.write_ptr,raw_message); channel->input_stream.write_ptr+=strlen(raw_message); belle_sip_channel_parse_stream(channel,FALSE); BC_ASSERT_PTR_NOT_NULL(channel->incoming_messages); BC_ASSERT_PTR_NOT_NULL(channel->incoming_messages->data); message=BELLE_SIP_MESSAGE(channel->incoming_messages->data); BC_ASSERT_TRUE(BELLE_SIP_OBJECT_IS_INSTANCE_OF(message,belle_sip_request_t)); request = BELLE_SIP_REQUEST(message); BC_ASSERT_STRING_EQUAL(belle_sip_request_get_method(request),"REGISTER"); BC_ASSERT_PTR_NOT_NULL(belle_sip_message_get_header(message,"Expires")); BC_ASSERT_PTR_NOT_NULL(BELLE_SIP_HEADER_EXPIRES(belle_sip_message_get_header(message,"Expires"))); BC_ASSERT_PTR_NOT_NULL(belle_sip_message_get_header(message,"Proxy-Authorization")); check_uri_and_headers(message); belle_sip_object_unref(channel); belle_sip_object_unref(stack); } void channel_parser_tester_recovery_from_error(void) { const char * raw_message= "debut de stream tout pourri\r\n" "INVITE je_suis_une_fausse _request_uri_hihihi SIP/2.0\r\n" "Via: SIP/2.0/UDP 192.168.1.12:15060;rport=15060;branch=z9hG4bK1596944937;received=81.56.113.2\r\n" "Via: SIP/2.0/TCP 37.59.129.73;branch=z9hG4bK.SKvK9U327e8mU68XUv5rt144pg\r\n" "Record-Route: \r\n" "Record-Route: \r\n" "Max-Forwards: 70\r\n" "From: ;tag=711138653\r\n" "To: \r\n" "Call-ID: 977107319\r\n" "CSeq: 21 INVITE\r\n" "Contact: \r\n" "Subject: Phone call\r\n" "User-Agent: Linphone/3.5.2 (eXosip2/3.6.0)\r\n" "Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO\r\n" "Content-Length: 0\r\n" "\r\n" "REGISTER sip:192.168.0.20 SIP/2.0\r\n"\ "Via: SIP/2.0/UDP 192.168.1.8:5062;rport;branch=z9hG4bK1439638806\r\n"\ "From: ;tag=465687829\r\n"\ "To: \r\n"\ "Call-ID: 1053183492\r\n"\ "CSeq: 1 REGISTER\r\n"\ "Contact: \r\n" \ "Max-Forwards: 70\r\n"\ "User-Agent: Linphone/3.3.99.10 (eXosip2/3.3.0)\r\n"\ "Expires: 3600\r\n"\ "Proxy-Authorization: Digest username=\"8117396\", realm=\"Realm\", nonce=\"MTMwNDAwMjIxMjA4NzVkODY4ZmZhODMzMzU4ZDJkOTA1NzM2NTQ2NDZlNmIz"\ ", uri=\"sip:linphone.net\", response=\"eed376ff7c963441255ec66594e470e7\", algorithm=MD5, cnonce=\"0a4f113b\", qop=auth, nc=00000001\r\n"\ "Content-Length: 0\r\n" "\r\n"; channel_parser_tester_recovery_from_error_base (NULL, raw_message); } void channel_parser_malformed_start(void) { const char * raw_message= "debut de stream tout pourri\r\n" "REGISTER sip:192.168.0.20 SIP/2.0\r\n" "Via: SIP/2.0/UDP 192.168.1.8:5062;rport;branch=z9hG4bK1439638806\r\n" "From: ;tag=465687829\r\n" "To: \r\n" "Call-ID: 1053183492\r\n" "CSeq: 1 REGISTER\r\n" "Contact: \r\n" "Max-Forwards: 70\r\n" "User-Agent: Linphone/3.3.99.10 (eXosip2/3.3.0)\r\n" "Expires: 3600\r\n" "Proxy-Authorization: Digest username=\"8117396\", realm=\"Realm\", nonce=\"MTMwNDAwMjIxMjA4NzVkODY4ZmZhODMzMzU4ZDJkOTA1NzM2NTQ2NDZlNmIz" ", uri=\"sip:linphone.net\", response=\"eed376ff7c963441255ec66594e470e7\", algorithm=MD5, cnonce=\"0a4f113b\", qop=auth, nc=00000001\r\n" "Content-Length: 0\r\n" "\r\n"; channel_parser_tester_recovery_from_error_base (NULL, raw_message); } void channel_parser_truncated_start(void) { const char * prelude= "R"; const char * raw_message= "EGISTER sip:192.168.0.20 SIP/2.0\r\n" "Via: SIP/2.0/UDP 192.168.1.8:5062;rport;branch=z9hG4bK1439638806\r\n" "From: ;tag=465687829\r\n" "To: \r\n" "Call-ID: 1053183492\r\n" "CSeq: 1 REGISTER\r\n" "Contact: \r\n" "Max-Forwards: 70\r\n" "User-Agent: Linphone/3.3.99.10 (eXosip2/3.3.0)\r\n" "Expires: 3600\r\n" "Proxy-Authorization: Digest username=\"8117396\", realm=\"Realm\", nonce=\"MTMwNDAwMjIxMjA4NzVkODY4ZmZhODMzMzU4ZDJkOTA1NzM2NTQ2NDZlNmIz" ", uri=\"sip:linphone.net\", response=\"eed376ff7c963441255ec66594e470e7\", algorithm=MD5, cnonce=\"0a4f113b\", qop=auth, nc=00000001\r\n" "Content-Length: 0\r\n" "\r\n"; channel_parser_tester_recovery_from_error_base (prelude, raw_message); } void channel_parser_truncated_start_with_garbage(void) { const char * prelude= "truc tout pourit R"; const char * raw_message= "EGISTER sip:192.168.0.20 SIP/2.0\r\n" "Via: SIP/2.0/UDP 192.168.1.8:5062;rport;branch=z9hG4bK1439638806\r\n" "From: ;tag=465687829\r\n" "To: \r\n" "Call-ID: 1053183492\r\n" "CSeq: 1 REGISTER\r\n" "Contact: \r\n" "Max-Forwards: 70\r\n" "User-Agent: Linphone/3.3.99.10 (eXosip2/3.3.0)\r\n" "Expires: 3600\r\n" "Proxy-Authorization: Digest username=\"8117396\", realm=\"Realm\", nonce=\"MTMwNDAwMjIxMjA4NzVkODY4ZmZhODMzMzU4ZDJkOTA1NzM2NTQ2NDZlNmIz" ", uri=\"sip:linphone.net\", response=\"eed376ff7c963441255ec66594e470e7\", algorithm=MD5, cnonce=\"0a4f113b\", qop=auth, nc=00000001\r\n" "Content-Length: 0\r\n" "\r\n"; channel_parser_tester_recovery_from_error_base (prelude, raw_message); } static void testMalformedFrom_process_response_cb(void *user_ctx, const belle_sip_response_event_t *event){ int status = belle_sip_response_get_status_code(belle_sip_response_event_get_response(event)); belle_sip_message("testMalformedFrom_process_response_cb [%i]",status); (*(int*)user_ctx) += 1; // increment the call counter BC_ASSERT( status == 400 ); } #define LISTENING_POINT_PORT 45421 #define LISTENING_POINT_HOSTPORT "127.0.0.1:45421" /* need the same port as above */ static void testMalformedFrom(void){ belle_sip_stack_t* stack = belle_sip_stack_new(NULL); belle_sip_listening_point_t* lp = belle_sip_stack_create_listening_point(stack, "127.0.0.1", LISTENING_POINT_PORT, "tcp"); belle_sip_provider_t* provider = belle_sip_provider_new(stack,lp); belle_sip_listener_callbacks_t listener_cbs = {0}; const char* raw_message = "INVITE sip:us2@172.1.1.1 SIP/2.0\r\n" "Via: SIP/2.0/TCP " LISTENING_POINT_HOSTPORT ";branch=z9hG4bK-edx-U_1zoIkaq72GJPqpSmDpJQ-ouBelFuLODzf9oS5J9MeFUA;rport\r\n" "From: c\x8e test ;tag=klsk+kwDc\r\n" /** 'c? test' should be enclosed in double quotes */ "To: \r\n" "Contact: \r\n" "Call-ID: 2b6fb0320-1384-179494-426025-23b6b0-2e3303331@172.16.42.1\r\n" "Content-Type: application/sdp\r\n" "Content-Length: 389\r\n" "CSeq: 1 INVITE\r\n" "Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, INFO, UPDATE, REGISTER, MESSAGE, REFER, SUBSCRIBE, PRACK\r\n" "Accept: application/sdp, application/dtmf-relay\r\n" "Max-Forwards: 69\r\n" "\r\n" "v=0\r\n" "o=- 1826 1826 IN IP4 172.16.42.1\r\n" "s=VeriCall Edge\r\n" "c=IN IP4 172.16.42.1\r\n" "t=0 0\r\n" "m=audio 20506 RTP/AVP 0 8 13 101\r\n" "a=rtpmap:0 PCMU/8000\r\n" "a=rtpmap:8 PCMA/8000\r\n" "a=rtpmap:13 CN/8000\r\n" "a=rtpmap:101 telephone-event/8000\r\n" "a=fmtp:101 0-15\r\n" "m=video 24194 RTP/AVP 105 104\r\n" "a=sendonly\r\n" "a=rtpmap:105 H264/90000\r\n" "a=fmtp:105 packetization-mode=0\r\n" "a=rtpmap:104 H263-1998/90000\r\n" "a=fmtp:104 CIF=1;J=1\r\n"; belle_sip_message_t* message = belle_sip_message_parse(raw_message); belle_sip_listener_t* listener = NULL; int called_times = 0; belle_sip_provider_enable_response_integrity_checking(provider, FALSE); listener_cbs.process_response_event = testMalformedFrom_process_response_cb; listener = belle_sip_listener_create_from_callbacks(&listener_cbs, &called_times); belle_sip_provider_add_sip_listener(provider, listener); belle_sip_object_ref(message); belle_sip_object_ref(message); /* double ref: originally the message is created with 0 refcount, and dispatch_message will unref() it.*/ belle_sip_provider_dispatch_message(provider, message); // we expect the stack to send a 400 error belle_sip_stack_sleep(stack,1000); BC_ASSERT_EQUAL(called_times,1,int,"%d"); belle_sip_provider_remove_sip_listener(provider,listener); belle_sip_object_unref(listener); belle_sip_object_unref(provider); belle_sip_object_unref(stack); belle_sip_object_unref(message); } static void testMalformedFrom2(void){ belle_sip_stack_t* stack = belle_sip_stack_new(NULL); belle_sip_listening_point_t* lp = belle_sip_stack_create_listening_point(stack, "127.0.0.1", LISTENING_POINT_PORT, "tcp"); belle_sip_provider_t* provider = belle_sip_provider_new(stack,lp); belle_sip_listener_callbacks_t listener_cbs = {0}; const char* raw_message = "INVITE sip:us2@172.1.1.1 SIP/2.0\r\n" "Via: SIP/2.0/TCP " LISTENING_POINT_HOSTPORT ";branch=z9hG4bK-edx-U_1zoIkaq72GJPqpSmDpJQ-ouBelFuLODzf9oS5J9MeFUA;rport\r\n" "From: RottenFrom ;tag=klsk+kwDc\r\n" /** The userpart is empty before '@', this is not allowed */ "To: \r\n" "Contact: \r\n" "Call-ID: 2b6fb0320-1384-179494-426025-23b6b0-2e3303331@172.16.42.1\r\n" "Content-Type: application/sdp\r\n" "Content-Length: 389\r\n" "CSeq: 1 INVITE\r\n" "Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, INFO, UPDATE, REGISTER, MESSAGE, REFER, SUBSCRIBE, PRACK\r\n" "Accept: application/sdp, application/dtmf-relay\r\n" "Max-Forwards: 69\r\n" "\r\n" "v=0\r\n" "o=- 1826 1826 IN IP4 172.16.42.1\r\n" "s=Pouetpouet\r\n" "c=IN IP4 172.16.42.1\r\n" "t=0 0\r\n" "m=audio 20506 RTP/AVP 0 8 13 101\r\n" "a=rtpmap:0 PCMU/8000\r\n" "a=rtpmap:8 PCMA/8000\r\n" "a=rtpmap:13 CN/8000\r\n" "a=rtpmap:101 telephone-event/8000\r\n" "a=fmtp:101 0-15\r\n" "m=video 24194 RTP/AVP 105 104\r\n" "a=sendonly\r\n" "a=rtpmap:105 H264/90000\r\n" "a=fmtp:105 packetization-mode=0\r\n" "a=rtpmap:104 H263-1998/90000\r\n" "a=fmtp:104 CIF=1;J=1\r\n"; belle_sip_message_t* message = belle_sip_message_parse(raw_message); belle_sip_listener_t* listener = NULL; int called_times = 0; belle_sip_provider_enable_response_integrity_checking(provider, FALSE); listener_cbs.process_response_event = testMalformedFrom_process_response_cb; listener = belle_sip_listener_create_from_callbacks(&listener_cbs, &called_times); belle_sip_provider_add_sip_listener(provider, listener); belle_sip_object_ref(message); belle_sip_object_ref(message); /* double ref: originally the message is created with 0 refcount, and dispatch_message will unref() it.*/ belle_sip_provider_dispatch_message(provider, message); // we expect the stack to send a 400 error belle_sip_stack_sleep(stack,1000); BC_ASSERT_EQUAL(called_times,1,int,"%d"); belle_sip_provider_remove_sip_listener(provider,listener); belle_sip_object_unref(listener); belle_sip_object_unref(provider); belle_sip_object_unref(stack); belle_sip_object_unref(message); } static void testMalformedFrom3(void) { belle_sip_stack_t* stack = belle_sip_stack_new(NULL); belle_sip_listening_point_t* lp = belle_sip_stack_create_listening_point(stack, "127.0.0.1", LISTENING_POINT_PORT, "tcp"); belle_sip_provider_t* provider = belle_sip_provider_new(stack,lp); belle_sip_listener_callbacks_t listener_cbs = {0}; const char* raw_message = "INVITE sip:us2@172.1.1.1 SIP/2.0\r\n" "Via: SIP/2.0/TCP " LISTENING_POINT_HOSTPORT ";branch=z9hG4bK-edx-U_1zoIkaq72GJPqpSmDpJQ-ouBelFuLODzf9oS5J9MeFUA;rport\r\n" "From: \r\n" "To: \r\n" "Contact: \r\n" "Call-ID: 2b6fb0320-1384-179494-426025-23b6b0-2e3303331@172.16.42.1\r\n" "Content-Type: application/sdp\r\n" "Content-Length: 389\r\n" "CSeq: 1 INVITE\r\n" "Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, INFO, UPDATE, REGISTER, MESSAGE, REFER, SUBSCRIBE, PRACK\r\n" "Accept: application/sdp, application/dtmf-relay\r\n" "Max-Forwards: 69\r\n" "\r\n" "v=0\r\n" "o=- 1826 1826 IN IP4 172.16.42.1\r\n" "s=Pouetpouet\r\n" "c=IN IP4 172.16.42.1\r\n" "t=0 0\r\n" "m=audio 20506 RTP/AVP 0 8 13 101\r\n" "a=rtpmap:0 PCMU/8000\r\n" "a=rtpmap:8 PCMA/8000\r\n" "a=rtpmap:13 CN/8000\r\n" "a=rtpmap:101 telephone-event/8000\r\n" "a=fmtp:101 0-15\r\n" "m=video 24194 RTP/AVP 105 104\r\n" "a=sendonly\r\n" "a=rtpmap:105 H264/90000\r\n" "a=fmtp:105 packetization-mode=0\r\n" "a=rtpmap:104 H263-1998/90000\r\n" "a=fmtp:104 CIF=1;J=1\r\n"; belle_sip_message_t* message = belle_sip_message_parse(raw_message); belle_sip_listener_t* listener = NULL; int called_times = 0; belle_sip_provider_enable_response_integrity_checking(provider, FALSE); listener_cbs.process_response_event = testMalformedFrom_process_response_cb; listener = belle_sip_listener_create_from_callbacks(&listener_cbs, &called_times); belle_sip_provider_add_sip_listener(provider, listener); belle_sip_object_ref(message); belle_sip_object_ref(message); /* double ref: originally the message is created with 0 refcount, and dispatch_message will unref() it.*/ belle_sip_provider_dispatch_message(provider, message); // we expect the stack to send a 400 error belle_sip_stack_sleep(stack,1000); BC_ASSERT_EQUAL(called_times,1,int,"%d"); belle_sip_provider_remove_sip_listener(provider,listener); belle_sip_object_unref(listener); belle_sip_object_unref(provider); belle_sip_object_unref(stack); belle_sip_object_unref(message); } static void testFromWithoutTag(void) { belle_sip_stack_t* stack = belle_sip_stack_new(NULL); belle_sip_listening_point_t* lp = belle_sip_stack_create_listening_point(stack, "127.0.0.1", LISTENING_POINT_PORT, "tcp"); belle_sip_provider_t* provider = belle_sip_provider_new(stack,lp); belle_sip_listener_callbacks_t listener_cbs = {0}; const char* raw_message = "INVITE sip:100@192.168.122.168 SIP/2.0\r\n" "Via: SIP/2.0/TCP " LISTENING_POINT_HOSTPORT ";branch=z9hG4bK7pqwjtzswe\r\n" "Max-Forwards: 70\r\n" "To: \r\n" "From: \r\n" "Contact: \r\n" "Call-ID: 38tn4shategtc3i9gmspx38ds94qb2st\r\n" "CSeq: 1 INVITE\r\n" "User-Agent: WireBug\r\n" "Expires: 600\r\n" "Content-Length: 0\r\n\r\n"; belle_sip_message_t* message = belle_sip_message_parse(raw_message); belle_sip_listener_t* listener = NULL; int called_times = 0; belle_sip_provider_enable_response_integrity_checking(provider, FALSE); listener_cbs.process_response_event = testMalformedFrom_process_response_cb; listener = belle_sip_listener_create_from_callbacks(&listener_cbs, &called_times); belle_sip_provider_add_sip_listener(provider, listener); belle_sip_object_ref(message); belle_sip_object_ref(message); /* double ref: originally the message is created with 0 refcount, and dispatch_message will unref() it.*/ belle_sip_provider_dispatch_message(provider, message); // we expect the stack to send a 400 error belle_sip_stack_sleep(stack,1000); BC_ASSERT_EQUAL(called_times,1,int,"%d"); belle_sip_provider_remove_sip_listener(provider,listener); belle_sip_object_unref(listener); belle_sip_object_unref(provider); belle_sip_object_unref(stack); belle_sip_object_unref(message); } static void testMalformedMandatoryField(void){ belle_sip_stack_t* stack = belle_sip_stack_new(NULL); belle_sip_listening_point_t* lp = belle_sip_stack_create_listening_point(stack, "127.0.0.1", LISTENING_POINT_PORT, "tcp"); belle_sip_provider_t* provider = belle_sip_provider_new(stack,lp); belle_sip_listener_callbacks_t listener_cbs = {0}; /* the MESSAGE message has no definition on which fields are required, which means we'll go into * * * */ const char* raw_message = "MESSAGE sip:lollol.iphone@22.22.222.222:5861;transport=tcp SIP/2.0\r\n" "Via: SIP/2.0/TCP " LISTENING_POINT_HOSTPORT ";branch=z9hG4bK5eca096a;rport\r\n" "Max-Forwards: 70\r\n" "From: \"MS TFT\" ;tag=as2413a381\r\n" "To: ;tag=\r\n" "Call-ID: 4070383971a9674201f463af2de1f012@11.11.111.111:5060\r\n" "CSeq: 103 MESSAGE\r\n" "User-Agent: Sip Server On Host (20130523_12h10)\r\n" "Content-Type: text/plain;charset=UTF-8\r\n" "Content-Length: 276\r\n" "\r\n" "\r\n" "\r\n" "\r\n"; belle_sip_message_t* message = belle_sip_message_parse(raw_message); belle_sip_listener_t* listener = NULL; int called_times = 0; listener_cbs.process_response_event = testMalformedFrom_process_response_cb; listener = belle_sip_listener_create_from_callbacks(&listener_cbs, &called_times); belle_sip_provider_add_sip_listener(provider, listener); belle_sip_object_ref(message); belle_sip_object_ref(message); /* double ref: originally the message is created with 0 refcount, and dispatch_message will unref() it.*/ belle_sip_provider_dispatch_message(provider, message); // we expect the stack to send a 400 error belle_sip_stack_sleep(stack,1000); BC_ASSERT_EQUAL(called_times,1,int,"%d"); belle_sip_provider_remove_sip_listener(provider,listener); belle_sip_object_unref(listener); belle_sip_object_unref(provider); belle_sip_object_unref(stack); belle_sip_object_unref(message); } static void testRFC2543_base(char* branch) { belle_sip_server_transaction_t *tr; const char* raw_message_base = "INVITE sip:me@127.0.0.1 SIP/2.0\r\n" "Via: SIP/2.0/UDP 192.168.1.12:15060;%srport=15060;received=81.56.113.2\r\n" "Record-Route: \r\n" "Record-Route: \r\n" "Max-Forwards: 70\r\n" "From: ;tag=711138653\r\n" "To: \r\n" "Call-ID: 977107319\r\n" "CSeq: 21 INVITE\r\n" "Contact: \r\n" "Subject: Phone call\r\n" "User-Agent: Linphone/3.5.2 (eXosip2/3.6.0)\r\n" "Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, NOTIFY, MESSAGE, SUBSCRIBE, INFO\r\n" "Content-Length: 0\r\n" "Extended: \r\n" /*fixme lexer*/ "\r\n"; char raw_message[2048]; belle_sip_request_t* request; belle_sip_stack_t *stack=belle_sip_stack_new(NULL); belle_sip_provider_t *prov=belle_sip_provider_new(stack,NULL); belle_sip_message_t* message; snprintf(raw_message,sizeof(raw_message),raw_message_base,branch); message = belle_sip_message_parse(raw_message); belle_sip_object_ref(message); belle_sip_object_ref(message); /*yes double ref: originally the message is created with 0 refcount, and dispatch_message will unref() it.*/ belle_sip_provider_dispatch_message(prov,message); request = BELLE_SIP_REQUEST(message); BC_ASSERT_PTR_NOT_NULL(request); tr=belle_sip_provider_create_server_transaction(prov,request); BC_ASSERT_PTR_NOT_NULL(belle_sip_provider_find_matching_server_transaction(prov,request)); /*make sure branch id is properly set*/ BC_ASSERT_PTR_NOT_NULL(tr); belle_sip_object_unref(prov); belle_sip_object_unref(stack); belle_sip_object_unref(message); } static void testRFC2543Compat(void) { testRFC2543_base(""); } static void testRFC2543CompatWithBranch(void) { testRFC2543_base("branch=blablabla;"); } static void testUriHeadersInInvite(void) { belle_sip_request_t* request; belle_sip_stack_t *stack=belle_sip_stack_new(NULL); belle_sip_provider_t *prov=belle_sip_provider_new(stack,NULL); const char* raw_uri="sip:toto@titi.com" "?header1=blabla" "&header2=blue%3Bweftutu%3Dbla" "&From=toto" "&To=sip%3Atoto%40titi.com" "&Call-ID=asdads" "&CSeq=asdasd" "&Via=asdasd" "&Accept=adsad" "&Accept-Encoding=adsad" "&Accept-Language=adsad" "&Allow=adsad" "&Record-Route=adsad" "&Contact=adsad" "&Organization=adsad" "&Supported=adsad" "&User-Agent=adsad"; belle_sip_header_t* raw_header; request=belle_sip_request_create( belle_sip_uri_parse(raw_uri) ,"INVITE" ,belle_sip_provider_create_call_id(prov) ,belle_sip_header_cseq_create(20,"INVITE") ,belle_sip_header_from_create2("sip:toto@titi.com","4654") ,NULL ,belle_sip_header_via_new() ,70); BC_ASSERT_PTR_NOT_NULL(request); BC_ASSERT_PTR_NOT_NULL(raw_header=belle_sip_message_get_header(BELLE_SIP_MESSAGE(request),"header1")); if (raw_header) { BC_ASSERT_STRING_EQUAL(belle_sip_header_extension_get_value(BELLE_SIP_HEADER_EXTENSION(raw_header)),"blabla"); } BC_ASSERT_PTR_NOT_NULL(raw_header=belle_sip_message_get_header(BELLE_SIP_MESSAGE(request),"header2")); if (raw_header) { BC_ASSERT_STRING_EQUAL(belle_sip_header_extension_get_value(BELLE_SIP_HEADER_EXTENSION(raw_header)),"blue;weftutu=bla"); } BC_ASSERT_PTR_NOT_NULL(raw_header=belle_sip_message_get_header(BELLE_SIP_MESSAGE(request),"To")); if (raw_header) { BC_ASSERT_STRING_EQUAL(belle_sip_header_extension_get_value(BELLE_SIP_HEADER_EXTENSION(raw_header)),"sip:toto@titi.com"); } BC_ASSERT_STRING_NOT_EQUAL(belle_sip_header_get_unparsed_value(belle_sip_message_get_header(BELLE_SIP_MESSAGE(request),"From")),"toto"); BC_ASSERT_PTR_NULL(belle_sip_message_get_header(BELLE_SIP_MESSAGE(request),"Record-Route")); BC_ASSERT_PTR_NULL(belle_sip_message_get_header(BELLE_SIP_MESSAGE(request),"Accept")); BC_ASSERT_PTR_NULL(belle_sip_message_get_header(BELLE_SIP_MESSAGE(request),"Accept-Encoding")); BC_ASSERT_PTR_NULL(belle_sip_message_get_header(BELLE_SIP_MESSAGE(request),"Accept-Language")); BC_ASSERT_PTR_NULL(belle_sip_message_get_header(BELLE_SIP_MESSAGE(request),"Allow")); BC_ASSERT_PTR_NULL(belle_sip_message_get_header(BELLE_SIP_MESSAGE(request),"Contact")); BC_ASSERT_PTR_NULL(belle_sip_message_get_header(BELLE_SIP_MESSAGE(request),"Organization")); BC_ASSERT_PTR_NULL(belle_sip_message_get_header(BELLE_SIP_MESSAGE(request),"Supported")); BC_ASSERT_PTR_NULL(belle_sip_message_get_header(BELLE_SIP_MESSAGE(request),"User-Agent")); belle_sip_object_unref(request); belle_sip_object_unref(prov); belle_sip_object_unref(stack); } static void testUrisComponentsForRequest(void) { belle_sip_request_t* request; belle_sip_stack_t *stack=belle_sip_stack_new(NULL); belle_sip_provider_t *prov=belle_sip_provider_new(stack,NULL); belle_sip_client_transaction_t* t; const char* raw_uri="sip:toto@titi.com?header1=blabla"; request=belle_sip_request_create( belle_sip_uri_parse(raw_uri) ,"INVITE" ,belle_sip_provider_create_call_id(prov) ,belle_sip_header_cseq_create(20,"INVITE") ,belle_sip_header_from_create2("sip:toto@titi.com","4654") ,belle_sip_header_to_parse("To: sip:titi@titi.com:5061") ,belle_sip_header_via_new() ,70); BC_ASSERT_PTR_NOT_NULL(request); t=belle_sip_provider_create_client_transaction(prov,request); BC_ASSERT_NOT_EQUAL(belle_sip_client_transaction_send_request(t),0,int,"%d"); belle_sip_object_unref(prov); belle_sip_object_unref(stack); } static void testGenericMessage(void) { const char* raw_message = "SIP/2.0 180 Ringing\r\n" "Via: SIP/2.0/UDP 192.168.1.73:5060;branch=z9hG4bK.hhdJx4~kD;rport\r\n" "Record-Route: \r\n" "Record-Route: \r\n" "From: ;tag=5DuaoDRru\r\n" "To: ;tag=PelIhu0\r\n" "Call-ID: e-2Q~fxwNs\r\n" "CSeq: 21 INVITE\r\n" "user-agent: Linphone/3.6.99 (belle-sip/1.2.4)\r\n" "supported: replaces\r\n" "supported: outbound\r\n" "Content-Length: 0\r\n" "\r\n"; belle_sip_response_t* response; belle_sip_message_t* message = belle_sip_message_parse(raw_message); char* encoded_message = belle_sip_object_to_string(BELLE_SIP_OBJECT(message)); belle_sip_object_unref(BELLE_SIP_OBJECT(message)); message = belle_sip_message_parse(encoded_message); response = BELLE_SIP_RESPONSE(message); BC_ASSERT_EQUAL(belle_sip_response_get_status_code(response),180,int,"%d"); /* BC_ASSERT_STRING_EQUAL(belle_sip_response_get_reason_phrase(response),"Unauthorized"); BC_ASSERT_PTR_NOT_NULL(belle_sip_message_get_header(message,"WWW-Authenticate")); check_uri_and_headers(message);*/ belle_sip_object_unref(message); belle_sip_free(encoded_message); } static void testHttpGet(void) { const char* raw_message = "GET /index.php HTTP/1.1\r\n" "User-Agent: Wget/1.14 (darwin11.4.2)\r\n" "Accept: */*\r\n" "Host: www.linphone.org\r\n" "Connection: Keep-Alive\r\n" "\r\n"; char* marshaled_msg; belle_sip_message_t* msg = belle_sip_message_parse(raw_message); belle_http_request_t* http_request; belle_generic_uri_t* uri; belle_sip_header_extension_t* host_header; belle_sip_object_t* tmp; if (!BC_ASSERT_PTR_NOT_NULL(msg)) return; marshaled_msg=belle_sip_object_to_string(BELLE_SIP_OBJECT(msg)); belle_sip_object_unref(msg); msg = belle_sip_message_parse(marshaled_msg); belle_sip_free(marshaled_msg); tmp=belle_sip_object_clone(BELLE_SIP_OBJECT(msg)); belle_sip_object_unref(msg); msg=BELLE_SIP_MESSAGE(tmp); BC_ASSERT_TRUE(BELLE_SIP_IS_INSTANCE_OF(msg,belle_http_request_t)); http_request=BELLE_HTTP_REQUEST(msg); if (!BC_ASSERT_PTR_NOT_NULL(uri=belle_http_request_get_uri(http_request))) return; BC_ASSERT_STRING_EQUAL(belle_generic_uri_get_path(uri),"/index.php"); BC_ASSERT_PTR_NOT_NULL(belle_sip_message_get_header(msg,"User-Agent")); BC_ASSERT_PTR_NOT_NULL(belle_sip_message_get_header(msg,"Accept")); BC_ASSERT_PTR_NOT_NULL(belle_sip_message_get_header(msg,"Connection")); BC_ASSERT_PTR_NOT_NULL(host_header=BELLE_SIP_HEADER_EXTENSION(belle_sip_message_get_header(msg,"Host"))); BC_ASSERT_STRING_EQUAL(belle_sip_header_extension_get_value(host_header),"www.linphone.org"); belle_sip_object_unref(msg); } static void testHttp200Ok(void) { const char* raw_message = "HTTP/1.1 200 OK\r\n" "Date: Tue, 07 Jan 2014 09:28:43 GMT\r\n" "Server: Apache\r\n" "Last-Modified: Tue, 18 Aug 1998 20:19:11 GMT\r\n" "ETag: \"8982a60-14a17-335b3dcdcadc0\"\r\n" "Accept-Ranges: bytes\r\n" "Vary: Accept-Encoding\r\n" "Content-Encoding: gzip\r\n" "Content-Length: 6\r\n" "Keep-Alive: timeout=15, max=100\r\n" "Connection: Keep-Alive\r\n" "Content-Type: text/plain\r\n" "\r\n" "blabla"; char* marshaled_msg; belle_sip_message_t* msg = belle_sip_message_parse(raw_message); belle_http_response_t* http_response; belle_sip_header_extension_t* host_header; belle_sip_object_t* tmp; if (!BC_ASSERT_PTR_NOT_NULL(msg)) return; marshaled_msg=belle_sip_object_to_string(BELLE_SIP_OBJECT(msg)); belle_sip_object_unref(msg); msg = belle_sip_message_parse(marshaled_msg); belle_sip_free(marshaled_msg); tmp=belle_sip_object_clone(BELLE_SIP_OBJECT(msg)); belle_sip_object_unref(msg); msg=BELLE_SIP_MESSAGE(tmp); BC_ASSERT_TRUE(BELLE_SIP_IS_INSTANCE_OF(msg,belle_http_response_t)); http_response=BELLE_HTTP_RESPONSE(msg); BC_ASSERT_EQUAL(belle_http_response_get_status_code(http_response),200,int,"%d"); BC_ASSERT_STRING_EQUAL(belle_http_response_get_reason_phrase(http_response),"OK"); BC_ASSERT_PTR_NOT_NULL(belle_sip_message_get_header(msg,"Date")); BC_ASSERT_PTR_NOT_NULL(belle_sip_message_get_header(msg,"ETag")); BC_ASSERT_PTR_NOT_NULL(belle_sip_message_get_header(msg,"Connection")); BC_ASSERT_PTR_NOT_NULL(host_header=BELLE_SIP_HEADER_EXTENSION(belle_sip_message_get_header(msg,"Server"))); BC_ASSERT_STRING_EQUAL(belle_sip_header_extension_get_value(host_header),"Apache"); belle_sip_object_unref(msg); } void channel_parser_http_response(void) { belle_sip_stack_t* stack = belle_sip_stack_new(NULL); belle_sip_channel_t* channel = belle_sip_stream_channel_new_client(stack , NULL , 45421 , NULL , "127.0.0.1" , 45421, TRUE); const char * raw_message= "HTTP/1.1 200 OK\r\n" "Cache-Control: private\r\n" "Date: Tue, 07 Jan 2014 13:51:57 GMT\r\n" "Content-Type: text/html; charset=utf-8\r\n" "Server: Microsoft-IIS/6.0\r\n" "X-Powered-By: ASP.NET\r\n" "Content-Encoding: gzip\r\n" "Vary: Accept-Encoding\r\n" "Transfer-Encoding: chunked\r\n" "\r\n" "\r\n\r\n"; belle_http_response_t* response; belle_sip_message_t* message; channel->input_stream.write_ptr = strcpy(channel->input_stream.write_ptr,raw_message); channel->input_stream.write_ptr+=strlen(raw_message); belle_sip_channel_parse_stream(channel,TRUE); BC_ASSERT_PTR_NOT_NULL(channel->incoming_messages); BC_ASSERT_PTR_NOT_NULL(channel->incoming_messages->data); message=BELLE_SIP_MESSAGE(channel->incoming_messages->data); BC_ASSERT_TRUE(BELLE_SIP_OBJECT_IS_INSTANCE_OF(message,belle_http_response_t)); response = BELLE_HTTP_RESPONSE(message); BC_ASSERT_STRING_EQUAL(belle_http_response_get_reason_phrase(response),"OK"); BC_ASSERT_EQUAL(belle_http_response_get_status_code(response),200,int,"%d"); BC_ASSERT_PTR_NOT_NULL(belle_sip_message_get_header(message,"Cache-Control")); BC_ASSERT_PTR_NOT_NULL(belle_sip_message_get_header(message,"Vary")); belle_sip_object_unref(channel); belle_sip_object_unref(stack); } void testGetBody(void) { const char* raw_message = "INVITE sip:us2@172.1.1.1 SIP/2.0\r\n" "Via: SIP/2.0/TCP " LISTENING_POINT_HOSTPORT ";branch=z9hG4bK-edx-U_1zoIkaq72GJPqpSmDpJQ-ouBelFuLODzf9oS5J9MeFUA;rport\r\n" "From: test ;tag=klsk+kwDc\r\n" "To: \r\n" "Contact: \r\n" "Call-ID: 2b6fb0320-1384-179494-426025-23b6b0-2e3303331@172.16.42.1\r\n" "Content-Type: application/sdp\r\n" "Content-Length: 389\r\n" "CSeq: 1 INVITE\r\n" "Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, INFO, UPDATE, REGISTER, MESSAGE, REFER, SUBSCRIBE, PRACK\r\n" "Accept: application/sdp, application/dtmf-relay\r\n" "Max-Forwards: 69\r\n" "\r\n" "v=0\r\n" "o=- 1826 1826 IN IP4 172.16.42.1\r\n" "s=VeriCall Edge\r\n" "c=IN IP4 172.16.42.1\r\n" "t=0 0\r\n" "m=audio 20506 RTP/AVP 0 8 13 101\r\n" "a=rtpmap:0 PCMU/8000\r\n" "a=rtpmap:8 PCMA/8000\r\n" "a=rtpmap:13 CN/8000\r\n" "a=rtpmap:101 telephone-event/8000\r\n" "a=fmtp:101 0-15\r\n" "m=video 24194 RTP/AVP 105 104\r\n" "a=sendonly\r\n" "a=rtpmap:105 H264/90000\r\n" "a=fmtp:105 packetization-mode=0\r\n" "a=rtpmap:104 H263-1998/90000\r\n" "a=fmtp:104 CIF=1;J=1\r\n" "nimportequoi a la fin"; belle_sip_stack_t* stack = belle_sip_stack_new(NULL); belle_sip_channel_t* channel = belle_sip_stream_channel_new_client(stack , NULL , LISTENING_POINT_PORT , NULL , "127.0.0.1" , LISTENING_POINT_PORT, TRUE); belle_sip_message_t* message; belle_sip_header_content_length_t *ctlt; channel->input_stream.write_ptr = strcpy(channel->input_stream.write_ptr,raw_message); channel->input_stream.write_ptr+=strlen(raw_message); belle_sip_channel_parse_stream(channel,FALSE); BC_ASSERT_PTR_NOT_NULL(channel->incoming_messages); BC_ASSERT_PTR_NOT_NULL(channel->incoming_messages->data); message=BELLE_SIP_MESSAGE(channel->incoming_messages->data); ctlt = belle_sip_message_get_header_by_type(message,belle_sip_header_content_length_t); BC_ASSERT_PTR_NOT_NULL(ctlt); BC_ASSERT_EQUAL((unsigned int)belle_sip_header_content_length_get_content_length(ctlt),(unsigned int)strlen(belle_sip_message_get_body(message)),unsigned int,"%u"); BC_ASSERT_EQUAL((unsigned int)belle_sip_header_content_length_get_content_length(ctlt),(unsigned int)belle_sip_message_get_body_size(message),unsigned int,"%u"); belle_sip_object_unref(channel); belle_sip_object_unref(stack); } static void testHop(void){ belle_sip_uri_t * uri = belle_sip_uri_parse("sip:sip.linphone.org;maddr=[2001:41d0:8:6e48::]"); belle_sip_hop_t *hop = belle_sip_hop_new_from_uri(uri); BC_ASSERT_STRING_EQUAL(hop->host, "2001:41d0:8:6e48::"); belle_sip_object_unref(uri); belle_sip_object_unref(hop); } /* NOTE - ORDER IS IMPORTANT - MUST TEST fread() AFTER fprintf() */ test_t message_tests[] = { TEST_NO_TAG("REGISTER", testRegisterMessage), TEST_NO_TAG("INVITE", testInviteMessage), TEST_NO_TAG("INVITE with tel uri", testInviteMessageWithTelUri), TEST_NO_TAG("Option message", testOptionMessage), TEST_NO_TAG("REGISTER (Raw)", testRegisterRaw), TEST_NO_TAG("401 Response", test401Response), TEST_NO_TAG("Response without response phrase",test401ResponseWithoutResponsePhrase), TEST_NO_TAG("Origin extraction", test_extract_source), TEST_NO_TAG("SIP frag", test_sipfrag), TEST_NO_TAG("Malformed invite", testMalformedMessage), TEST_NO_TAG("Malformed from", testMalformedFrom), TEST_NO_TAG("Malformed from 2", testMalformedFrom2), TEST_NO_TAG("From without tag", testFromWithoutTag), TEST_NO_TAG("Malformed mandatory field", testMalformedMandatoryField), TEST_NO_TAG("Malformed invite with bad begin", testMalformedMessageWithWrongStart), TEST_NO_TAG("Malformed register", testMalformedOptionnalHeaderInMessage), TEST_NO_TAG("Malformed from 3", testMalformedFrom3), TEST_NO_TAG("Channel parser error recovery", channel_parser_tester_recovery_from_error), TEST_NO_TAG("Channel parser malformed start", channel_parser_malformed_start), TEST_NO_TAG("Channel parser truncated start", channel_parser_truncated_start), TEST_NO_TAG("Channel parser truncated start with garbage",channel_parser_truncated_start_with_garbage), TEST_ONE_TAG("RFC2543 compatibility", testRFC2543Compat, "LeaksMemory"), TEST_ONE_TAG("RFC2543 compatibility with branch id",testRFC2543CompatWithBranch, "LeaksMemory"), TEST_NO_TAG("Uri headers in sip INVITE",testUriHeadersInInvite), TEST_NO_TAG("Uris components in request",testUrisComponentsForRequest), TEST_NO_TAG("Generic message test",testGenericMessage), TEST_NO_TAG("HTTP get",testHttpGet), TEST_NO_TAG("HTTP 200 Ok",testHttp200Ok), TEST_NO_TAG("Channel parser for HTTP reponse",channel_parser_http_response), TEST_NO_TAG("Get body size",testGetBody), TEST_NO_TAG("Create hop from uri", testHop) }; test_suite_t message_test_suite = {"Message", NULL, NULL, belle_sip_tester_before_each, belle_sip_tester_after_each, sizeof(message_tests) / sizeof(message_tests[0]), message_tests}; belle-sip-5.2.0+dfsg/tester/belle_sip_refresher_tester.c000066400000000000000000001603351434613136500233720ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "belle-sip/belle-sip.h" #include "belle_sip_internal.h" #include "belle_sip_tester.h" #ifndef _MSC_VER #include #include "belle-sip/headers.h" #include "belle-sip/parameters.h" #include #endif #define USERNAME "toto" #define SIPDOMAIN "sip.linphone.org" #define PASSWD "secret" #define ALGOM "MD5" static char publish_body[]= "\n" "\n" " \n" " \n" " open\n" " \n" " tel:+09012345678\n" " \n" "\n"; typedef enum auth_mode { none ,digest ,digest_auth ,digest_with_next_nonce ,digest_auth_with_next_nonce }auth_mode_t; typedef struct _status { int twoHundredOk; int fourHundredOne; int fourHundredSeven; int fourHundredEightyOne; int refreshOk; int refreshKo; int dialogTerminated; int fiveHundredTree; }status_t; typedef struct endpoint { belle_sip_stack_t *stack; belle_sip_listener_callbacks_t *listener_callbacks; belle_sip_provider_t *provider; belle_sip_listening_point_t *lp; belle_sip_listener_t *listener; auth_mode_t auth; status_t stat; unsigned char expire_in_contact; char nonce[32]; unsigned int nonce_count; const char *received; int rport; int connection_family; int register_count; int transiant_network_failure; belle_sip_refresher_t *refresher; int early_refresher; int number_of_body_found; const char *realm; unsigned int max_nc_count; const char *algo; const char *ha1; int retry_after; unsigned char unreconizable_contact; unsigned char bad_next_nonce; unsigned char expect_failed_auth; } endpoint_t; static unsigned int wait_for(belle_sip_stack_t*s1, belle_sip_stack_t*s2,int* counter,int value,int timeout) { int retry=0; #define ITER 20 while (*counterprovider, belle_sip_request_event_get_request(event)); belle_sip_request_t *req = belle_sip_transaction_get_request(BELLE_SIP_TRANSACTION(server_transaction)); belle_sip_response_t *resp; belle_sip_header_contact_t *contact; belle_sip_header_expires_t *expires; belle_sip_header_authorization_t *authorization; belle_sip_header_via_t *via; const char *raw_authenticate_digest; const char *raw_proxy_authenticate_digest; if ((endpoint->algo == NULL) || (!strcmp(endpoint->algo, "MD5")) || (!strcmp(endpoint->algo, "MD_SHA"))) { raw_authenticate_digest = "WWW-Authenticate: Digest " "algorithm=MD5, realm=\"" SIPDOMAIN "\", opaque=\"1bc7f9097684320\""; raw_proxy_authenticate_digest = "Proxy-Authenticate: Digest " "algorithm=MD5, realm=\"" SIPDOMAIN "\", opaque=\"1bc7f9097684320\""; } else if (!strcmp(endpoint->algo, "SHA-256")) { raw_authenticate_digest = "WWW-Authenticate: Digest " "algorithm=SHA-256, realm=\"" SIPDOMAIN "\", opaque=\"1bc7f9097684320\""; raw_proxy_authenticate_digest = "Proxy-Authenticate: Digest " "algorithm=SHA-256, realm=\"" SIPDOMAIN "\", opaque=\"1bc7f9097684320\""; } else { belle_sip_error("Algorithm of server must be MD5, SHA-256 or MD_SHA, can not be %s", endpoint->algo); return; } belle_sip_header_www_authenticate_t *www_authenticate = NULL; belle_sip_header_www_authenticate_t *two_www_authenticate = NULL; belle_sip_header_retry_after_t *retry_after_header = NULL; const char *auth_uri; const char *qop; unsigned char auth_ok = 0; size_t size; const char *algo; const char *algo_ref = "SHA-256"; belle_sip_message("caller_process_request_event received [%s] message", belle_sip_request_get_method(belle_sip_request_event_get_request(event))); if (endpoint->retry_after) { unsigned int response_code; response_code = 404; resp = belle_sip_response_create_from_request(belle_sip_request_event_get_request(event), response_code); if (www_authenticate) { if ((endpoint->algo != NULL) && (!strcmp(endpoint->algo, "MD_SHA"))) { two_www_authenticate = BELLE_SIP_HEADER_WWW_AUTHENTICATE(belle_sip_object_clone(BELLE_SIP_OBJECT(www_authenticate))); belle_sip_header_www_authenticate_set_algorithm(two_www_authenticate, algo_ref); belle_sip_message_add_header(BELLE_SIP_MESSAGE(resp), BELLE_SIP_HEADER(two_www_authenticate)); } belle_sip_message_add_header(BELLE_SIP_MESSAGE(resp), BELLE_SIP_HEADER(www_authenticate)); } retry_after_header = BELLE_SIP_HEADER_RETRY_AFTER(belle_sip_header_retry_after_create(endpoint->retry_after)); belle_sip_message_add_header(BELLE_SIP_MESSAGE(resp), BELLE_SIP_HEADER(retry_after_header)); endpoint->retry_after = 0; } else { switch (endpoint->auth) { case none: { auth_ok = 1; break; } case digest_auth: case digest_with_next_nonce: case digest_auth_with_next_nonce: case digest: { if ((authorization = belle_sip_message_get_header_by_type(req, belle_sip_header_authorization_t)) != NULL || (authorization = BELLE_SIP_HEADER_AUTHORIZATION(belle_sip_message_get_header_by_type(req, belle_sip_header_proxy_authorization_t))) != NULL) { qop = belle_sip_header_authorization_get_qop(authorization); if (strcasecmp("REGISTER", belle_sip_request_get_method(req)) == 0) { BC_ASSERT_FALSE(BELLE_SIP_OBJECT_IS_INSTANCE_OF(authorization, belle_sip_header_proxy_authorization_t)); } else { BC_ASSERT_TRUE(BELLE_SIP_OBJECT_IS_INSTANCE_OF(authorization, belle_sip_header_proxy_authorization_t)); } algo = belle_sip_header_authorization_get_algorithm(authorization); size = belle_sip_auth_define_size(algo); if (!size) { belle_sip_error("Algorithm [%s] is not correct ", algo); return; } char local_resp[MAX_RESPONSE_SIZE]; if (qop && strcmp(qop, "auth") == 0) { compute_response_auth_qop(belle_sip_header_authorization_get_username(authorization) , belle_sip_header_authorization_get_realm(authorization) , PASSWD , endpoint->nonce , endpoint->nonce_count , belle_sip_header_authorization_get_cnonce(authorization) , belle_sip_header_authorization_get_qop(authorization) , belle_sip_request_get_method(req) , auth_uri = belle_sip_uri_to_string(belle_sip_header_authorization_get_uri(authorization)) , local_resp , size , algo); } else { /*digest*/ compute_response(belle_sip_header_authorization_get_username(authorization) , belle_sip_header_authorization_get_realm(authorization) , PASSWD , endpoint->nonce , belle_sip_request_get_method(req) , auth_uri = belle_sip_uri_to_string(belle_sip_header_authorization_get_uri(authorization)) , local_resp , size , algo); } belle_sip_free((void *)auth_uri); auth_ok = strcmp(belle_sip_header_authorization_get_response(authorization), local_resp) == 0; } if (auth_ok && endpoint->nonce_count < endpoint->max_nc_count) { /*revoke nonce after MAX_NC_COUNT uses*/ if (endpoint->auth == digest || endpoint->auth == digest_with_next_nonce || endpoint->auth == digest_auth_with_next_nonce) { sprintf(endpoint->nonce, "%p", authorization); //*change the nonce for next auth*/ } else { endpoint->nonce_count++; } } else { auth_ok = 0; if (strcasecmp("REGISTER", belle_sip_request_get_method(req)) == 0) { www_authenticate = belle_sip_header_www_authenticate_parse(raw_authenticate_digest); } else { www_authenticate = BELLE_SIP_HEADER_WWW_AUTHENTICATE(belle_sip_header_proxy_authenticate_parse(raw_proxy_authenticate_digest)); } sprintf(endpoint->nonce, "%p", www_authenticate); //*change the nonce for next auth*/ belle_sip_header_www_authenticate_set_nonce(www_authenticate, endpoint->nonce); if (endpoint->auth == digest_auth || endpoint->auth == digest_auth_with_next_nonce) { belle_sip_header_www_authenticate_add_qop(www_authenticate, "auth"); if (endpoint->nonce_count >= MAX_NC_COUNT) { belle_sip_header_www_authenticate_set_stale(www_authenticate, 1); } endpoint->nonce_count = 1; } } } break; default: break; } if (auth_ok) { resp = belle_sip_response_create_from_request(belle_sip_request_event_get_request(event), 200); if (!endpoint->expire_in_contact) { belle_sip_message_add_header(BELLE_SIP_MESSAGE(resp), BELLE_SIP_HEADER(expires = belle_sip_message_get_header_by_type(req, belle_sip_header_expires_t))); } if (strcmp(belle_sip_request_get_method(req), "REGISTER") == 0) { contact = belle_sip_message_get_header_by_type(req, belle_sip_header_contact_t); } else { contact = belle_sip_header_contact_new(); } if (endpoint->unreconizable_contact) { /*put an unexpected address*/ belle_sip_uri_set_host(belle_sip_header_address_get_uri(BELLE_SIP_HEADER_ADDRESS(contact)), "nimportequoi.com"); } if (endpoint->auth == digest_with_next_nonce || endpoint->auth == digest_auth_with_next_nonce) { belle_sip_header_t *authentication_info; if (!endpoint->bad_next_nonce) { authentication_info = BELLE_SIP_HEADER(belle_sip_header_authentication_info_new()); belle_sip_header_authentication_info_set_next_nonce(BELLE_SIP_HEADER_AUTHENTICATION_INFO(authentication_info), endpoint->nonce); } else { authentication_info = BELLE_SIP_HEADER(belle_sip_header_extension_create(BELLE_SIP_AUTHENTICATION_INFO, "nonce=\"nimporte quoi\" nc=")); } belle_sip_message_add_header(BELLE_SIP_MESSAGE(resp), BELLE_SIP_HEADER(authentication_info)); } belle_sip_message_add_header(BELLE_SIP_MESSAGE(resp), BELLE_SIP_HEADER(contact)); if (strcmp(belle_sip_request_get_method(req), "PUBLISH") == 0) { belle_sip_header_t *sip_if_match = belle_sip_message_get_header(BELLE_SIP_MESSAGE(resp), "SIP-If-Match"); if (sip_if_match) { BC_ASSERT_STRING_EQUAL(belle_sip_header_extension_get_value(BELLE_SIP_HEADER_EXTENSION(sip_if_match)), "blablietag"); } /*check for body*/ BC_ASSERT_PTR_NOT_NULL(belle_sip_message_get_body(BELLE_SIP_MESSAGE(req))); if (belle_sip_message_get_body(BELLE_SIP_MESSAGE(req))) { BC_ASSERT_STRING_EQUAL(belle_sip_message_get_body(BELLE_SIP_MESSAGE(req)), publish_body); } BC_ASSERT_PTR_NOT_NULL(belle_sip_message_get_header_by_type(req, belle_sip_header_content_type_t)); BC_ASSERT_PTR_NOT_NULL(belle_sip_message_get_header_by_type(req, belle_sip_header_content_length_t)); belle_sip_message_add_header(BELLE_SIP_MESSAGE(resp), belle_sip_header_create("SIP-ETag", "blablietag")); } if (strcmp(belle_sip_request_get_method(req), "SUBSCRIBE") == 0) { if (belle_sip_request_event_get_dialog(event) == NULL) { belle_sip_message("creating dialog for incoming SUBSCRIBE"); belle_sip_provider_create_dialog(endpoint->provider, BELLE_SIP_TRANSACTION(server_transaction)); } } } else { unsigned int response_code; if (strcasecmp("REGISTER", belle_sip_request_get_method(req)) == 0) { response_code = 401; } else { response_code = 407; } resp = belle_sip_response_create_from_request(belle_sip_request_event_get_request(event), response_code); if (www_authenticate) { if ((endpoint->algo != NULL) && (!strcmp(endpoint->algo, "MD_SHA"))) { two_www_authenticate = BELLE_SIP_HEADER_WWW_AUTHENTICATE(belle_sip_object_clone(BELLE_SIP_OBJECT(www_authenticate))); belle_sip_header_www_authenticate_set_algorithm(two_www_authenticate, algo_ref); belle_sip_message_add_header(BELLE_SIP_MESSAGE(resp), BELLE_SIP_HEADER(two_www_authenticate)); } belle_sip_message_add_header(BELLE_SIP_MESSAGE(resp), BELLE_SIP_HEADER(www_authenticate)); } } } if (endpoint->received) { via = belle_sip_message_get_header_by_type(req, belle_sip_header_via_t); belle_sip_header_via_set_received(via, endpoint->received); } if (belle_sip_message_get_body(BELLE_SIP_MESSAGE(req))) { endpoint->number_of_body_found++; } belle_sip_server_transaction_send_response(server_transaction, resp); } static void client_process_dialog_terminated(void *obj, const belle_sip_dialog_terminated_event_t *event){ endpoint_t* endpoint = (endpoint_t*)obj; endpoint->stat.dialogTerminated++; } static void server_process_dialog_terminated(void *obj, const belle_sip_dialog_terminated_event_t *event){ endpoint_t* endpoint = (endpoint_t*)obj; endpoint->stat.dialogTerminated++; } static void client_process_response_event(void *obj, const belle_sip_response_event_t *event){ //belle_sip_client_transaction_t* client_transaction = belle_sip_response_event_get_client_transaction(event); endpoint_t* endpoint = (endpoint_t*)obj; int status = belle_sip_response_get_status_code(belle_sip_response_event_get_response(event)); belle_sip_message("caller_process_response_event [%i]",status); switch (status) { case 200: endpoint->stat.twoHundredOk++; if (endpoint->connection_family!=AF_UNSPEC){ const char *host; int family_found; belle_sip_header_contact_t *ct=belle_sip_message_get_header_by_type( (belle_sip_message_t*)belle_sip_response_event_get_response(event),belle_sip_header_contact_t); if (BC_ASSERT_PTR_NOT_NULL(ct)) { host=belle_sip_uri_get_host(belle_sip_header_address_get_uri((belle_sip_header_address_t*)ct)); if (strchr(host,':')) family_found=AF_INET6; else family_found=AF_INET; BC_ASSERT_EQUAL(family_found,endpoint->connection_family,int,"%d"); } } break; case 401:endpoint->stat.fourHundredOne++; break; case 407:endpoint->stat.fourHundredSeven++; break; default: break; } } //static void process_timeout(void *obj, const belle_sip_timeout_event_t *event){ // belle_sip_message("process_timeout"); //} //static void process_transaction_terminated(void *obj, const belle_sip_transaction_terminated_event_t *event){ // belle_sip_message("process_transaction_terminated"); //} static void client_process_auth_requested(void *obj, belle_sip_auth_event_t *event) { endpoint_t *endpoint = (endpoint_t *)obj; if (endpoint->algo == NULL) endpoint->algo = "MD5"; belle_sip_message("process_auth_requested requested for [%s@%s]" , belle_sip_auth_event_get_username(event) , belle_sip_auth_event_get_realm(event)); if (((event->algorithm) && (!strcmp(endpoint->algo, event->algorithm)))) { if (endpoint->ha1) belle_sip_auth_event_set_ha1(event, endpoint->ha1); else belle_sip_auth_event_set_passwd(event, PASSWD); } } static void belle_sip_refresher_listener (belle_sip_refresher_t* refresher ,void* user_pointer ,unsigned int status_code ,const char* reason_phrase, int will_retry) { endpoint_t* endpoint = (endpoint_t*)user_pointer; BELLESIP_UNUSED(refresher); belle_sip_message("belle_sip_refresher_listener [%i] reason [%s]",status_code,reason_phrase); if (status_code >=300) endpoint->stat.refreshKo++; switch (status_code) { case 200:endpoint->stat.refreshOk++; break; case 481:endpoint->stat.fourHundredEightyOne++;break; case 503:endpoint->stat.fiveHundredTree++;break; case 401:endpoint->stat.fourHundredOne++;break; default: /*nop*/ break; } if (endpoint->stat.refreshKo==1 && endpoint->transiant_network_failure) { belle_sip_stack_set_send_error(endpoint->stack,0); } else if (endpoint->stat.refreshOk==1 && endpoint->stat.refreshKo==0 && endpoint->transiant_network_failure) { /*generate a network failure*/ belle_sip_refresher_set_retry_after(endpoint->refresher,100); belle_sip_stack_set_send_error(endpoint->stack,-1); } } static endpoint_t* create_endpoint(const char *ip, int port,const char* transport,belle_sip_listener_callbacks_t* listener_callbacks) { endpoint_t* endpoint = belle_sip_new0(endpoint_t); endpoint->stack=belle_sip_stack_new(NULL); endpoint->listener_callbacks=listener_callbacks; endpoint->lp=belle_sip_stack_create_listening_point(endpoint->stack,ip,port,transport); endpoint->connection_family=AF_INET; endpoint->max_nc_count=MAX_NC_COUNT; if (endpoint->lp) belle_sip_object_ref(endpoint->lp); endpoint->provider=belle_sip_stack_create_provider(endpoint->stack,endpoint->lp); belle_sip_provider_add_sip_listener(endpoint->provider,(endpoint->listener=belle_sip_listener_create_from_callbacks(endpoint->listener_callbacks,endpoint))); sprintf(endpoint->nonce,"%p",endpoint); /*initial nonce*/ endpoint->nonce_count=1; endpoint->register_count=3; endpoint->retry_after=0; endpoint->expect_failed_auth = FALSE; return endpoint; } static void destroy_endpoint(endpoint_t* endpoint) { belle_sip_object_unref(endpoint->lp); belle_sip_object_unref(endpoint->provider); belle_sip_object_unref(endpoint->stack); belle_sip_object_unref(endpoint->listener); belle_sip_free(endpoint); } static endpoint_t* create_udp_endpoint(int port,belle_sip_listener_callbacks_t* listener_callbacks) { endpoint_t *endpoint=create_endpoint("0.0.0.0",port,"udp",listener_callbacks); BC_ASSERT_PTR_NOT_NULL(endpoint->lp); return endpoint; } static belle_sip_refresher_t* refresher_base_with_body2( endpoint_t* client , endpoint_t *server , const char* method , belle_sip_header_content_type_t* content_type , const char* body , int number_active_refresher) { belle_sip_request_t* req; belle_sip_client_transaction_t* trans; belle_sip_header_route_t* destination_route; belle_sip_refresher_t* refresher = NULL; const char* identity = "sip:" USERNAME "@" SIPDOMAIN ; const char* domain="sip:" SIPDOMAIN ; belle_sip_header_contact_t* contact=belle_sip_header_contact_new(); belle_sip_uri_t *dest_uri; uint64_t begin; uint64_t end; if (client->expire_in_contact) belle_sip_header_contact_set_expires(contact,1); dest_uri=(belle_sip_uri_t*)belle_sip_object_clone((belle_sip_object_t*)belle_sip_listening_point_get_uri(server->lp)); if (client->connection_family==AF_INET6) belle_sip_uri_set_host(dest_uri,"::1"); else belle_sip_uri_set_host(dest_uri,"127.0.0.1"); destination_route=belle_sip_header_route_create(belle_sip_header_address_create(NULL,dest_uri)); req=belle_sip_request_create( belle_sip_uri_parse(domain), method, belle_sip_provider_create_call_id(client->provider), belle_sip_header_cseq_create(20,method), belle_sip_header_from_create2(identity,BELLE_SIP_RANDOM_TAG), belle_sip_header_to_create2(identity,NULL), belle_sip_header_via_new(), 70); belle_sip_message_add_header(BELLE_SIP_MESSAGE(req),BELLE_SIP_HEADER(contact)); if (!client->expire_in_contact) belle_sip_message_add_header(BELLE_SIP_MESSAGE(req),BELLE_SIP_HEADER(belle_sip_header_expires_create(1))); belle_sip_message_add_header(BELLE_SIP_MESSAGE(req),BELLE_SIP_HEADER(destination_route)); if (content_type && body) { size_t body_lenth=strlen(body); belle_sip_message_add_header(BELLE_SIP_MESSAGE(req),BELLE_SIP_HEADER(content_type)); belle_sip_message_add_header(BELLE_SIP_MESSAGE(req),BELLE_SIP_HEADER(belle_sip_header_content_length_create(body_lenth))); belle_sip_message_set_body(BELLE_SIP_MESSAGE(req),body,body_lenth); } if (client->realm && belle_sip_provider_add_authorization(client->provider, req, NULL, NULL,NULL, client->realm)) { } trans=belle_sip_provider_create_client_transaction(client->provider,req); belle_sip_object_ref(trans);/*to avoid trans from being deleted before refresher can use it*/ belle_sip_client_transaction_send_request(trans); if (client->early_refresher) { client->refresher = refresher = belle_sip_client_transaction_create_refresher(trans); if (client->realm) belle_sip_refresher_set_realm(client->refresher, client->realm); } else { if (server->auth == none) { BC_ASSERT_TRUE(wait_for(server->stack,client->stack,&client->stat.twoHundredOk,1,1000)); } else { if (strcasecmp("REGISTER",belle_sip_request_get_method(req))==0) { BC_ASSERT_TRUE(wait_for(server->stack,client->stack,&client->stat.fourHundredOne,1,1000)); } else { BC_ASSERT_TRUE(wait_for(server->stack,client->stack,&client->stat.fourHundredSeven,1,1000)); } /*update cseq*/ req=belle_sip_client_transaction_create_authenticated_request(trans,NULL,NULL); belle_sip_object_unref(trans); trans=belle_sip_provider_create_client_transaction(client->provider,req); belle_sip_object_ref(trans); belle_sip_client_transaction_send_request(trans); if (client->expect_failed_auth) { BC_ASSERT_TRUE(wait_for(server->stack,client->stack,&client->stat.fourHundredOne,1,1000)); }else{ BC_ASSERT_TRUE(wait_for(server->stack,client->stack,&client->stat.twoHundredOk,1,1000)); } } client->refresher= refresher = belle_sip_client_transaction_create_refresher(trans); } if (BC_ASSERT_PTR_NOT_NULL(refresher)) { belle_sip_object_unref(trans); belle_sip_refresher_set_listener(refresher,belle_sip_refresher_listener,client); int timeout = client->retry_after + client->register_count; if (!client->expect_failed_auth) { begin = belle_sip_time_ms(); BC_ASSERT_TRUE(wait_for(server->stack,client->stack,&client->stat.refreshOk,client->register_count+(client->early_refresher?1:0), timeout*1000 + 1000)); end = belle_sip_time_ms(); BC_ASSERT_GREATER((long double)(end-begin),(client->register_count/number_active_refresher)*1000*.9,long double,"%Lf"); /*because refresh is at 90% of expire*/ BC_ASSERT_LOWER_STRICT(end-begin,(timeout*1000 + 2000),unsigned long long,"%llu"); }else{ /* Will retry one more time before re-scheduling an attempt in 60 seconds */ BC_ASSERT_TRUE(wait_for(server->stack,client->stack,&client->stat.fourHundredOne,2,3000)); } } return refresher; } static void refresher_base_with_body(endpoint_t *client , endpoint_t *server , const char *method , belle_sip_header_content_type_t *content_type , const char *body) { belle_sip_refresher_t *refresher = refresher_base_with_body2(client, server, method, content_type, body, 1); int fourHundredOneResponses = client->stat.fourHundredOne; belle_sip_refresher_refresh(refresher, 0); if (!client->expect_failed_auth){ /*unregister twice to make sure refresh operation can be safely cascaded*/ belle_sip_refresher_refresh(refresher, 0); BC_ASSERT_TRUE(wait_for(server->stack, client->stack, &client->stat.refreshOk, client->register_count + 1, 1000)); BC_ASSERT_EQUAL(client->stat.refreshOk, client->register_count + 1, int, "%d"); }else{ BC_ASSERT_TRUE(wait_for(server->stack,client->stack,&client->stat.fourHundredOne,fourHundredOneResponses+1, 2000)); } belle_sip_refresher_stop(refresher); belle_sip_object_unref(refresher); } static void refresher_base(endpoint_t* client,endpoint_t *server, const char* method) { refresher_base_with_body(client,server,method,NULL,NULL); } static void register_base(endpoint_t* client,endpoint_t *server) { refresher_base(client,server,"REGISTER"); } static void refresher_base_with_param_and_body_for_ha1(const char* method , unsigned char expire_in_contact , auth_mode_t auth_mode , int early_refresher , belle_sip_header_content_type_t* content_type ,const char* body ,const char* client_algo ,const char* server_algo ,const char* ha1){ belle_sip_listener_callbacks_t client_callbacks; belle_sip_listener_callbacks_t server_callbacks; endpoint_t* client,*server; memset(&client_callbacks,0,sizeof(belle_sip_listener_callbacks_t)); memset(&server_callbacks,0,sizeof(belle_sip_listener_callbacks_t)); client_callbacks.process_response_event=client_process_response_event; client_callbacks.process_auth_requested=client_process_auth_requested; server_callbacks.process_request_event=server_process_request_event; client = create_udp_endpoint(3452,&client_callbacks); server = create_udp_endpoint(6788,&server_callbacks); server->expire_in_contact=client->expire_in_contact=expire_in_contact; server->auth=auth_mode; server->algo=server_algo; client->algo=client_algo; client->early_refresher=early_refresher; if(ha1){ client->ha1=ha1; } refresher_base_with_body(client,server,method,content_type,body); destroy_endpoint(client); destroy_endpoint(server); } static void refresher_base_with_param_and_body(const char* method , unsigned char expire_in_contact , auth_mode_t auth_mode , int early_refresher , belle_sip_header_content_type_t* content_type ,const char* body ,const char* client_algo ,const char* server_algo){ refresher_base_with_param_and_body_for_ha1(method,expire_in_contact,auth_mode,early_refresher,content_type,body,client_algo,server_algo,NULL); } static void refresher_base_with_param(const char* method, unsigned char expire_in_contact,auth_mode_t auth_mode,const char* client_algo,const char* server_algo,const char* ha1) { refresher_base_with_param_and_body_for_ha1(method,expire_in_contact,auth_mode,FALSE,NULL,NULL,client_algo,server_algo,ha1); } static void register_test_with_param_for_algorithm(unsigned char expire_in_contact,auth_mode_t auth_mode,const char* client_algo,const char* server_algo) { refresher_base_with_param("REGISTER",expire_in_contact,auth_mode,client_algo,server_algo,NULL); } static void register_test_with_param_for_algorithm_ha1(unsigned char expire_in_contact,auth_mode_t auth_mode,const char* client_algo,const char* server_algo,const char* ha1){ refresher_base_with_param("REGISTER",expire_in_contact,auth_mode,client_algo,server_algo,ha1); } static void register_test_with_param(unsigned char expire_in_contact,auth_mode_t auth_mode) { register_test_with_param_for_algorithm(expire_in_contact,auth_mode,NULL,NULL); } static char *list = "\n" "\n" "\n" "\t\n" "\t\n" "\n" "\n"; static void subscribe_base(int with_resource_lists) { belle_sip_listener_callbacks_t client_callbacks; belle_sip_listener_callbacks_t server_callbacks; belle_sip_request_t* req; belle_sip_client_transaction_t* trans; belle_sip_header_route_t* destination_route; const char* identity = "sip:" USERNAME "@" SIPDOMAIN ; const char* domain="sip:" SIPDOMAIN ; endpoint_t* client,*server; belle_sip_uri_t *dest_uri; belle_sip_refresher_t* refresher; belle_sip_header_contact_t* contact=belle_sip_header_contact_new(); belle_sip_dialog_t * client_dialog; char *call_id = NULL; int dummy = 0; uint64_t begin; uint64_t end; memset(&client_callbacks,0,sizeof(belle_sip_listener_callbacks_t)); memset(&server_callbacks,0,sizeof(belle_sip_listener_callbacks_t)); client_callbacks.process_dialog_terminated=client_process_dialog_terminated; client_callbacks.process_response_event=client_process_response_event; client_callbacks.process_auth_requested=client_process_auth_requested; server_callbacks.process_request_event=server_process_request_event; server_callbacks.process_dialog_terminated=server_process_dialog_terminated; client = create_udp_endpoint(3452,&client_callbacks); server = create_udp_endpoint(6788,&server_callbacks); server->expire_in_contact=0; server->auth=digest_auth; dest_uri=(belle_sip_uri_t*)belle_sip_object_clone((belle_sip_object_t*)belle_sip_listening_point_get_uri(server->lp)); belle_sip_uri_set_host(dest_uri,"127.0.0.1"); destination_route=belle_sip_header_route_create(belle_sip_header_address_create(NULL,dest_uri)); req=belle_sip_request_create( belle_sip_uri_parse(domain), "SUBSCRIBE", belle_sip_provider_create_call_id(client->provider), belle_sip_header_cseq_create(20,"SUBSCRIBE"), belle_sip_header_from_create2(identity,BELLE_SIP_RANDOM_TAG), belle_sip_header_to_create2(identity,NULL), belle_sip_header_via_new(), 70); belle_sip_message_add_header(BELLE_SIP_MESSAGE(req),BELLE_SIP_HEADER(contact)); belle_sip_message_add_header(BELLE_SIP_MESSAGE(req),BELLE_SIP_HEADER(belle_sip_header_expires_create(1))); belle_sip_message_add_header(BELLE_SIP_MESSAGE(req),BELLE_SIP_HEADER(belle_sip_header_create("Event","Presence"))); belle_sip_message_add_header(BELLE_SIP_MESSAGE(req),BELLE_SIP_HEADER(destination_route)); if (with_resource_lists) { belle_sip_message_add_header(BELLE_SIP_MESSAGE(req),BELLE_SIP_HEADER(belle_sip_header_content_type_create("application","resource-lists+xml"))); belle_sip_message_set_body(BELLE_SIP_MESSAGE(req), list, strlen(list)); } trans=belle_sip_provider_create_client_transaction(client->provider,req); belle_sip_object_ref(trans);/*to avoid trans from being deleted before refresher can use it*/ belle_sip_client_transaction_send_request(trans); BC_ASSERT_TRUE(wait_for(server->stack,client->stack,&client->stat.fourHundredSeven,1,1000)); req=belle_sip_client_transaction_create_authenticated_request(trans,NULL,NULL); belle_sip_object_unref(trans); trans=belle_sip_provider_create_client_transaction(client->provider,req); belle_sip_object_ref(trans); belle_sip_client_transaction_send_request(trans); BC_ASSERT_TRUE(wait_for(server->stack,client->stack,&client->stat.twoHundredOk,1,1000)); /*maybe dialog should be automatically created*/ BC_ASSERT_PTR_NOT_NULL(client_dialog = belle_sip_transaction_get_dialog(BELLE_SIP_TRANSACTION(trans))); call_id = belle_sip_strdup(belle_sip_header_call_id_get_call_id(belle_sip_dialog_get_call_id(client_dialog))); belle_sip_object_ref(client_dialog); refresher = belle_sip_client_transaction_create_refresher(trans); belle_sip_object_unref(trans); belle_sip_refresher_set_listener(refresher,belle_sip_refresher_listener,client); begin = belle_sip_time_ms(); BC_ASSERT_TRUE(wait_for(server->stack,client->stack,&client->stat.refreshOk,3,4000)); end = belle_sip_time_ms(); BC_ASSERT_GREATER((long double)(end-begin),3000*.9,long double,"%Lf"); BC_ASSERT_LOWER_STRICT(end-begin,5000,unsigned long long,"%llu"); belle_sip_message("simulating dialog error and recovery"); belle_sip_stack_set_send_error(client->stack, 1); BC_ASSERT_TRUE(wait_for(server->stack,client->stack,&client->stat.fourHundredEightyOne,1,4000)); /*let the transaction timeout*/ wait_for(server->stack,client->stack, &dummy, 1, 32000); belle_sip_stack_set_send_error(client->stack, 0); BC_ASSERT_TRUE(wait_for(server->stack,client->stack,&client->stat.refreshOk,4,4000)); BC_ASSERT_EQUAL(client->stat.dialogTerminated, 0, int, "%i"); /*make sure dialog has changed*/ BC_ASSERT_PTR_NOT_EQUAL(client_dialog, belle_sip_transaction_get_dialog(BELLE_SIP_TRANSACTION(belle_sip_refresher_get_transaction(refresher)))); BC_ASSERT_STRING_NOT_EQUAL(call_id, belle_sip_header_call_id_get_call_id(belle_sip_dialog_get_call_id(belle_sip_transaction_get_dialog(BELLE_SIP_TRANSACTION(belle_sip_refresher_get_transaction(refresher)))))); belle_sip_free(call_id); belle_sip_object_unref(client_dialog); belle_sip_message("simulating dialog terminated server side and recovery"); client_dialog = belle_sip_transaction_get_dialog(BELLE_SIP_TRANSACTION(belle_sip_refresher_get_transaction(refresher))); call_id = belle_sip_strdup(belle_sip_header_call_id_get_call_id(belle_sip_dialog_get_call_id(client_dialog))); belle_sip_object_ref(client_dialog); belle_sip_provider_enable_unconditional_answer(server->provider,TRUE); belle_sip_provider_set_unconditional_answer(server->provider,481); belle_sip_refresher_refresh(refresher, 10); BC_ASSERT_TRUE(wait_for(server->stack,client->stack,&client->stat.fourHundredEightyOne,2,4000)); belle_sip_provider_enable_unconditional_answer(server->provider,FALSE); BC_ASSERT_TRUE(wait_for(server->stack,client->stack,&client->stat.refreshOk,5,4000)); BC_ASSERT_EQUAL(client->stat.dialogTerminated, 0, int, "%i"); /*make sure dialog has changed*/ BC_ASSERT_PTR_NOT_EQUAL(client_dialog, belle_sip_transaction_get_dialog(BELLE_SIP_TRANSACTION(belle_sip_refresher_get_transaction(refresher)))); BC_ASSERT_STRING_NOT_EQUAL(call_id, belle_sip_header_call_id_get_call_id(belle_sip_dialog_get_call_id(belle_sip_transaction_get_dialog(BELLE_SIP_TRANSACTION(belle_sip_refresher_get_transaction(refresher)))))); belle_sip_free(call_id); belle_sip_object_unref(client_dialog); belle_sip_refresher_refresh(refresher, 0); belle_sip_refresher_refresh(refresher, 0); belle_sip_refresher_stop(refresher); BC_ASSERT_TRUE(wait_for(server->stack,client->stack,&server->stat.dialogTerminated,3,4000)); belle_sip_object_unref(refresher); if (with_resource_lists) { BC_ASSERT_EQUAL(server->number_of_body_found, (server->auth == none ?3:6), int, "%i"); } destroy_endpoint(client); destroy_endpoint(server); } static void subscribe_test(void) { subscribe_base(FALSE); } static void subscribe_list_test(void) { subscribe_base(TRUE); } static void register_expires_header(void) { register_test_with_param(0,none); } static void register_expires_in_contact(void) { register_test_with_param(1,none); } static void register_expires_header_digest(void) { register_test_with_param(0,digest); } static void register_expires_in_contact_header_digest_auth(void) { register_test_with_param(1,digest_auth); } static void register_expires_in_contact_header_digest_auth_sha256(void) { register_test_with_param_for_algorithm(1, digest_auth, "SHA-256", "SHA-256"); } static void register_expires_in_contact_header_digest_md_sha(void) { register_test_with_param_for_algorithm(1, digest_auth, "MD5", "MD_SHA"); } static void register_expires_in_contact_header_digest_md_sha_ha1(void) { register_test_with_param_for_algorithm_ha1(1, digest_auth, "MD5", "MD_SHA", "323897f425eb3f4c22efa4119c85b434"); } static void register_expires_in_contact_header_digest_md_sha256(void) { register_test_with_param_for_algorithm(1, digest_auth, "SHA-256", "MD_SHA"); } static void register_expires_in_contact_header_digest_md_sha256_ha1(void) { register_test_with_param_for_algorithm_ha1(1, digest_auth, "SHA-256", "MD_SHA", "ebf7a06f8211417d6735cd8bfcbecc30ef2045a80d1d6148a6b9d5d3c4f76911"); } static void register_with_failure(void) { belle_sip_listener_callbacks_t client_callbacks; belle_sip_listener_callbacks_t server_callbacks; endpoint_t* client,*server; memset(&client_callbacks,0,sizeof(belle_sip_listener_callbacks_t)); memset(&server_callbacks,0,sizeof(belle_sip_listener_callbacks_t)); client_callbacks.process_response_event=client_process_response_event; client_callbacks.process_auth_requested=client_process_auth_requested; server_callbacks.process_request_event=server_process_request_event; client = create_udp_endpoint(3452,&client_callbacks); server = create_udp_endpoint(6788,&server_callbacks); server->expire_in_contact=1; server->auth=digest; client->transiant_network_failure=1; register_base(client,server); BC_ASSERT_EQUAL(client->stat.refreshKo,1,int,"%d"); destroy_endpoint(client); destroy_endpoint(server); } static void register_with_failure_because_of_no_qop(void) { belle_sip_listener_callbacks_t client_callbacks; belle_sip_listener_callbacks_t server_callbacks; endpoint_t* client,*server; belle_sip_digest_authentication_policy_t * digest_policy = belle_sip_digest_authentication_policy_new(); memset(&client_callbacks,0,sizeof(belle_sip_listener_callbacks_t)); memset(&server_callbacks,0,sizeof(belle_sip_listener_callbacks_t)); client_callbacks.process_response_event=client_process_response_event; client_callbacks.process_auth_requested=client_process_auth_requested; server_callbacks.process_request_event=server_process_request_event; client = create_udp_endpoint(3452,&client_callbacks); server = create_udp_endpoint(6788,&server_callbacks); server->expire_in_contact=1; server->auth=digest; belle_sip_digest_authentication_policy_set_allow_md5(digest_policy, TRUE); belle_sip_digest_authentication_policy_set_allow_no_qop(digest_policy, FALSE); belle_sip_stack_set_digest_authentication_policy(client->stack, digest_policy); client->expect_failed_auth = TRUE; register_base(client,server); BC_ASSERT_EQUAL(client->stat.twoHundredOk,0,int,"%d"); destroy_endpoint(client); destroy_endpoint(server); } static void register_with_failure_because_of_md5(void) { belle_sip_listener_callbacks_t client_callbacks; belle_sip_listener_callbacks_t server_callbacks; endpoint_t* client,*server; belle_sip_digest_authentication_policy_t * digest_policy = belle_sip_digest_authentication_policy_new(); memset(&client_callbacks,0,sizeof(belle_sip_listener_callbacks_t)); memset(&server_callbacks,0,sizeof(belle_sip_listener_callbacks_t)); client_callbacks.process_response_event=client_process_response_event; client_callbacks.process_auth_requested=client_process_auth_requested; server_callbacks.process_request_event=server_process_request_event; client = create_udp_endpoint(3452,&client_callbacks); belle_sip_digest_authentication_policy_set_allow_md5(digest_policy, FALSE); belle_sip_digest_authentication_policy_set_allow_no_qop(digest_policy, TRUE); belle_sip_stack_set_digest_authentication_policy(client->stack, digest_policy); client->expect_failed_auth = TRUE; server = create_udp_endpoint(6788,&server_callbacks); server->expire_in_contact=1; server->auth=digest; register_base(client,server); BC_ASSERT_EQUAL(client->stat.twoHundredOk,0,int,"%d"); destroy_endpoint(client); destroy_endpoint(server); } static void refresher_sha256_with_md5_disabled(void){ belle_sip_listener_callbacks_t client_callbacks; belle_sip_listener_callbacks_t server_callbacks; endpoint_t* client,*server; belle_sip_digest_authentication_policy_t * digest_policy = belle_sip_digest_authentication_policy_new(); memset(&client_callbacks,0,sizeof(belle_sip_listener_callbacks_t)); memset(&server_callbacks,0,sizeof(belle_sip_listener_callbacks_t)); client_callbacks.process_response_event=client_process_response_event; client_callbacks.process_auth_requested=client_process_auth_requested; server_callbacks.process_request_event=server_process_request_event; client = create_udp_endpoint(3452,&client_callbacks); belle_sip_digest_authentication_policy_set_allow_md5(digest_policy, FALSE); belle_sip_digest_authentication_policy_set_allow_no_qop(digest_policy, TRUE); belle_sip_stack_set_digest_authentication_policy(client->stack, digest_policy); server = create_udp_endpoint(6788,&server_callbacks); server->auth=digest_auth; server->algo="SHA-256"; client->algo="SHA-256"; refresher_base_with_body(client,server,"REGISTER",NULL,NULL); destroy_endpoint(client); destroy_endpoint(server); } static void register_with_unrecognizable_contact(void) { belle_sip_listener_callbacks_t client_callbacks; belle_sip_listener_callbacks_t server_callbacks; endpoint_t* client,*server; memset(&client_callbacks,0,sizeof(belle_sip_listener_callbacks_t)); memset(&server_callbacks,0,sizeof(belle_sip_listener_callbacks_t)); client_callbacks.process_response_event=client_process_response_event; client_callbacks.process_auth_requested=client_process_auth_requested; server_callbacks.process_request_event=server_process_request_event; client = create_udp_endpoint(3452,&client_callbacks); server = create_udp_endpoint(6788,&server_callbacks); server->expire_in_contact=1; server->unreconizable_contact=1; server->auth=digest; register_base(client,server); destroy_endpoint(client); destroy_endpoint(server); } static void register_early_refresher(void) { belle_sip_listener_callbacks_t client_callbacks; belle_sip_listener_callbacks_t server_callbacks; endpoint_t* client,*server; memset(&client_callbacks,0,sizeof(belle_sip_listener_callbacks_t)); memset(&server_callbacks,0,sizeof(belle_sip_listener_callbacks_t)); client_callbacks.process_response_event=client_process_response_event; client_callbacks.process_auth_requested=client_process_auth_requested; server_callbacks.process_request_event=server_process_request_event; client = create_udp_endpoint(3452,&client_callbacks); server = create_udp_endpoint(6788,&server_callbacks); server->expire_in_contact=1; server->auth=digest; client->early_refresher=1; register_base(client,server); destroy_endpoint(client); destroy_endpoint(server); } static void register_retry_after(void) { belle_sip_listener_callbacks_t client_callbacks; belle_sip_listener_callbacks_t server_callbacks; endpoint_t* client,*server; memset(&client_callbacks,0,sizeof(belle_sip_listener_callbacks_t)); memset(&server_callbacks,0,sizeof(belle_sip_listener_callbacks_t)); client_callbacks.process_response_event=client_process_response_event; client_callbacks.process_auth_requested=client_process_auth_requested; server_callbacks.process_request_event=server_process_request_event; client = create_udp_endpoint(3452,&client_callbacks); server = create_udp_endpoint(6788,&server_callbacks); server->expire_in_contact=1; server->auth=digest; client->early_refresher=1; server->retry_after = 2; client->retry_after = 2; register_base(client,server); destroy_endpoint(client); destroy_endpoint(server); } static int register_test_with_interfaces(const char *transport, const char *client_ip, const char *server_ip, int connection_family) { int ret=0; belle_sip_listener_callbacks_t client_callbacks; belle_sip_listener_callbacks_t server_callbacks; endpoint_t* client,*server; memset(&client_callbacks,0,sizeof(belle_sip_listener_callbacks_t)); memset(&server_callbacks,0,sizeof(belle_sip_listener_callbacks_t)); client_callbacks.process_response_event=client_process_response_event; client_callbacks.process_auth_requested=client_process_auth_requested; server_callbacks.process_request_event=server_process_request_event; client = create_endpoint(client_ip,3452,transport,&client_callbacks); client->connection_family=connection_family; client->register_count=1; server = create_endpoint(server_ip,6788,transport,&server_callbacks); server->expire_in_contact=client->expire_in_contact=0; server->auth=none; if (client->lp==NULL || server->lp==NULL){ belle_sip_warning("Cannot check ipv6 because host has no ipv6 support."); ret=-1; }else register_base(client,server); destroy_endpoint(client); destroy_endpoint(server); return ret; } static int register_test_with_random_port(const char *transport, const char *client_ip, const char *server_ip, int connection_family) { int ret=0; belle_sip_listener_callbacks_t client_callbacks; belle_sip_listener_callbacks_t server_callbacks; endpoint_t* client,*server; memset(&client_callbacks,0,sizeof(belle_sip_listener_callbacks_t)); memset(&server_callbacks,0,sizeof(belle_sip_listener_callbacks_t)); client_callbacks.process_response_event=client_process_response_event; client_callbacks.process_auth_requested=client_process_auth_requested; server_callbacks.process_request_event=server_process_request_event; client = create_endpoint(client_ip,-1,transport,&client_callbacks); client->connection_family=connection_family; client->register_count=1; server = create_endpoint(server_ip,6788,transport,&server_callbacks); server->expire_in_contact=client->expire_in_contact=0; server->auth=none; if (client->lp==NULL || server->lp==NULL){ belle_sip_warning("Cannot check ipv6 because host has no ipv6 support."); ret=-1; }else register_base(client,server); destroy_endpoint(client); destroy_endpoint(server); return ret; } static void register_test_ipv6_to_ipv4(void){ if (!belle_sip_tester_ipv6_available()){ belle_sip_warning("Test skipped, IPv6 connectivity not available."); return; } register_test_with_interfaces("udp","::0","0.0.0.0",AF_INET); } static void register_test_ipv4_to_ipv6(void){ if (!belle_sip_tester_ipv6_available()){ belle_sip_warning("Test skipped, IPv6 connectivity not available."); return; } register_test_with_interfaces("udp","0.0.0.0","::0",AF_INET); } static void register_test_ipv6_to_ipv6_with_ipv4(void){ if (!belle_sip_tester_ipv6_available()){ belle_sip_warning("Test skipped, IPv6 connectivity not available."); return; } register_test_with_interfaces("udp","::0","::0",AF_INET); } static void register_test_ipv6_to_ipv6_with_ipv6(void){ if (!belle_sip_tester_ipv6_available()){ belle_sip_warning("Test skipped, IPv6 connectivity not available."); return; } register_test_with_interfaces("udp","::0","::0",AF_INET6); } static void register_tcp_test_ipv6_to_ipv4(void){ if (!belle_sip_tester_ipv6_available()){ belle_sip_warning("Test skipped, IPv6 connectivity not available."); return; } register_test_with_interfaces("tcp","::0","0.0.0.0",AF_INET); } static void register_tcp_test_ipv4_to_ipv6(void){ if (!belle_sip_tester_ipv6_available()){ belle_sip_warning("Test skipped, IPv6 connectivity not available."); return; } register_test_with_interfaces("tcp","0.0.0.0","::0",AF_INET); } static void register_tcp_test_ipv6_to_ipv6_with_ipv4(void){ if (!belle_sip_tester_ipv6_available()){ belle_sip_warning("Test skipped, IPv6 connectivity not available."); return; } register_test_with_interfaces("tcp","::0","::0",AF_INET); } static void register_tcp_test_ipv6_to_ipv6_with_ipv6(void){ if (!belle_sip_tester_ipv6_available()){ belle_sip_warning("Test skipped, IPv6 connectivity not available."); return; } register_test_with_interfaces("tcp","::0","::0",AF_INET6); } static void register_udp_test_ipv4_random_port(void){ register_test_with_random_port("udp","0.0.0.0","0.0.0.0",AF_INET); } static void register_udp_test_ipv6_random_port(void){ if (!belle_sip_tester_ipv6_available()){ belle_sip_warning("Test skipped, IPv6 connectivity not available."); return; } register_test_with_random_port("udp","::0","0.0.0.0",AF_INET); } static void register_tcp_test_ipv4_random_port(void){ register_test_with_random_port("tcp","0.0.0.0","0.0.0.0",AF_INET); } static void register_tcp_test_ipv6_random_port(void){ if (!belle_sip_tester_ipv6_available()){ belle_sip_warning("Test skipped, IPv6 connectivity not available."); return; } register_test_with_random_port("tcp","::0","0.0.0.0",AF_INET); } static void simple_publish(void) { belle_sip_header_content_type_t* content_type=belle_sip_header_content_type_create("application","pidf+xml"); refresher_base_with_param_and_body("PUBLISH",FALSE,TRUE,FALSE, content_type,publish_body,"MD5","MD5"); } static void simple_publish_with_early_refresher(void) { belle_sip_header_content_type_t* content_type=belle_sip_header_content_type_create("application","pidf+xml"); refresher_base_with_param_and_body("PUBLISH",FALSE,TRUE,TRUE, content_type,publish_body,"MD5","MD5"); } static void register_and_publish(void) { belle_sip_listener_callbacks_t client_callbacks; belle_sip_listener_callbacks_t server_callbacks; endpoint_t* client,*server; belle_sip_refresher_t *register_refresher; belle_sip_refresher_t *publish_refresher; belle_sip_header_content_type_t* content_type=belle_sip_header_content_type_create("application","pidf+xml"); memset(&client_callbacks,0,sizeof(belle_sip_listener_callbacks_t)); memset(&server_callbacks,0,sizeof(belle_sip_listener_callbacks_t)); client_callbacks.process_response_event=client_process_response_event; client_callbacks.process_auth_requested=client_process_auth_requested; server_callbacks.process_request_event=server_process_request_event; client = create_udp_endpoint(3452,&client_callbacks); server = create_udp_endpoint(6788,&server_callbacks); server->expire_in_contact=TRUE; server->auth=digest_auth; client->early_refresher=TRUE; client->realm = SIPDOMAIN; register_refresher = refresher_base_with_body2(client,server,"REGISTER",NULL,NULL,1); client->register_count = 2 * client->register_count; client->stat.refreshOk = 0; /*to make sure we can still use same nonce*/ client->nonce_count -=2; publish_refresher = refresher_base_with_body2(client,server,"PUBLISH",content_type,publish_body,2); belle_sip_refresher_refresh(register_refresher,0); BC_ASSERT_TRUE(wait_for(server->stack,client->stack,&client->stat.refreshOk,client->register_count+1,1000)); BC_ASSERT_EQUAL(client->stat.refreshOk,client->register_count+1,int,"%d"); belle_sip_refresher_stop(register_refresher); belle_sip_object_unref(register_refresher); belle_sip_refresher_refresh(publish_refresher,0); BC_ASSERT_TRUE(wait_for(server->stack,client->stack,&client->stat.refreshOk,client->register_count+1,1000)); BC_ASSERT_EQUAL(client->stat.refreshOk,client->register_count+1,int,"%d"); belle_sip_refresher_stop(publish_refresher); belle_sip_object_unref(publish_refresher); destroy_endpoint(client); destroy_endpoint(server); } static void register_digest_with_next_nonce(void) { register_test_with_param(0,digest_with_next_nonce); } static void register_digest_auth_with_next_nonce(void) { register_test_with_param(0,digest_auth_with_next_nonce); } static void register_digest_auth_with_bad_next_nonce(void) { belle_sip_listener_callbacks_t client_callbacks; belle_sip_listener_callbacks_t server_callbacks; endpoint_t* client,*server; memset(&client_callbacks,0,sizeof(belle_sip_listener_callbacks_t)); memset(&server_callbacks,0,sizeof(belle_sip_listener_callbacks_t)); client_callbacks.process_response_event=client_process_response_event; client_callbacks.process_auth_requested=client_process_auth_requested; server_callbacks.process_request_event=server_process_request_event; client = create_udp_endpoint(3452,&client_callbacks); server = create_udp_endpoint(6788,&server_callbacks); server->auth=digest_auth_with_next_nonce; server->bad_next_nonce = TRUE; register_base(client,server); destroy_endpoint(client); destroy_endpoint(server); } test_t refresher_tests[] = { TEST_NO_TAG("REGISTER Expires header", register_expires_header), TEST_NO_TAG("REGISTER Expires in Contact", register_expires_in_contact), TEST_NO_TAG("REGISTER Expires header digest", register_expires_header_digest), TEST_NO_TAG("REGISTER Expires in Contact digest auth", register_expires_in_contact_header_digest_auth), TEST_NO_TAG("REGISTER Expires in Contact digest auth SHA-256", register_expires_in_contact_header_digest_auth_sha256), TEST_NO_TAG("REGISTER Expires in Contact digest auth MD_SHA", register_expires_in_contact_header_digest_md_sha), TEST_NO_TAG("REGISTER Expires in Contact digest auth MD_SHA ha1", register_expires_in_contact_header_digest_md_sha_ha1), TEST_NO_TAG("REGISTER Expires in Contact digest auth MD_SHA-256", register_expires_in_contact_header_digest_md_sha256), TEST_NO_TAG("REGISTER Expires in Contact digest auth MD_SHA-256 ha1", register_expires_in_contact_header_digest_md_sha256_ha1), TEST_NO_TAG("REGISTER with failure", register_with_failure), TEST_NO_TAG("REGISTER failed because client does not allow MD5", register_with_failure_because_of_md5), TEST_NO_TAG("REGISTER failed because client requires qop=auth", register_with_failure_because_of_no_qop), TEST_NO_TAG("REGISTER successful with SHA-256 when MD5 is disabled.", refresher_sha256_with_md5_disabled), TEST_NO_TAG("REGISTER with early refresher", register_early_refresher), TEST_NO_TAG("REGISTER with retry after", register_retry_after), TEST_NO_TAG("SUBSCRIBE", subscribe_test), TEST_NO_TAG("SUBSCRIBE of list" , subscribe_list_test), TEST_NO_TAG("PUBLISH", simple_publish), TEST_NO_TAG("PUBLISH with early refresher", simple_publish_with_early_refresher), TEST_NO_TAG("REGISTER with unrecognizable Contact", register_with_unrecognizable_contact), TEST_NO_TAG("REGISTER UDP from ipv6 to ipv4", register_test_ipv6_to_ipv4), TEST_NO_TAG("REGISTER UDP from ipv4 to ipv6", register_test_ipv4_to_ipv6), TEST_NO_TAG("REGISTER UDP from ipv6 to ipv6 with ipv4", register_test_ipv6_to_ipv6_with_ipv4), TEST_NO_TAG("REGISTER UDP from ipv6 to ipv6 with ipv6", register_test_ipv6_to_ipv6_with_ipv6), TEST_NO_TAG("REGISTER TCP from ipv6 to ipv4", register_tcp_test_ipv6_to_ipv4), TEST_NO_TAG("REGISTER TCP from ipv4 to ipv6", register_tcp_test_ipv4_to_ipv6), TEST_NO_TAG("REGISTER TCP from ipv6 to ipv6 with ipv4", register_tcp_test_ipv6_to_ipv6_with_ipv4), TEST_NO_TAG("REGISTER TCP from ipv6 to ipv6 with ipv6", register_tcp_test_ipv6_to_ipv6_with_ipv6), TEST_NO_TAG("REGISTER UDP from random port using AF_INET", register_udp_test_ipv4_random_port), TEST_NO_TAG("REGISTER UDP from random port using AF_INET6", register_udp_test_ipv6_random_port), TEST_NO_TAG("REGISTER TCP from random port using AF_INET", register_tcp_test_ipv4_random_port), TEST_NO_TAG("REGISTER TCP from random port using AF_INET6", register_tcp_test_ipv6_random_port), TEST_NO_TAG("REGISTER AND PUBLISH", register_and_publish), TEST_NO_TAG("REGISTER, digest with next nonce", register_digest_with_next_nonce), TEST_NO_TAG("REGISTER, digest auth with next nonce", register_digest_auth_with_next_nonce), TEST_NO_TAG("REGISTER, digest auth with bad next nonce", register_digest_auth_with_bad_next_nonce) }; test_suite_t refresher_test_suite = {"Refresher", NULL, NULL, belle_sip_tester_before_each, belle_sip_tester_after_each, sizeof(refresher_tests) / sizeof(refresher_tests[0]), refresher_tests}; belle-sip-5.2.0+dfsg/tester/belle_sip_register_tester.c000066400000000000000000001657261434613136500232420ustar00rootroot00000000000000/* * Copyright (c) 2012-2021 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "belle-sip/belle-sip.h" #include "belle_sip_internal.h" #include "belle_sip_tester.h" #include "register_tester.h" const int RANDOM_PORT = -1; #define AUTH_DOMAIN "sip.example.org" const char *test_domain="sipopen.example.org"; const char *auth_domain=AUTH_DOMAIN; const char *client_auth_domain="client.example.org"; const char *client_auth_outbound_proxy="sips:sip.example.org:5063"; const char *no_server_running_here="sip:test.linphone.org:3;transport=tcp"; const char *no_response_here="sip:78.220.48.77:3;transport=%s"; const char *test_domain_tls_to_tcp="sip:sip2.linphone.org:5060;transport=tls"; const char *test_http_proxy_addr="sip.linphone.org"; const char *test_with_wrong_cname="sips:rototo.com;maddr=91.121.209.194"; int test_http_proxy_port = 3128; static int is_register_ok; static int number_of_challenge; static int using_transaction; static int io_error_count=0; belle_sip_stack_t * stack; belle_sip_provider_t *prov; static belle_sip_listener_t* l; belle_sip_request_t* authorized_request; belle_sip_listener_callbacks_t listener_callbacks; belle_sip_listener_t *listener; static void process_dialog_terminated(void *user_ctx, const belle_sip_dialog_terminated_event_t *event){ BELLESIP_UNUSED(user_ctx); BELLESIP_UNUSED(event); belle_sip_message("process_dialog_terminated called"); } static void process_io_error(void *user_ctx, const belle_sip_io_error_event_t *event){ BELLESIP_UNUSED(user_ctx); BELLESIP_UNUSED(event); belle_sip_message("process_io_error, exiting main loop"); belle_sip_main_loop_quit(belle_sip_stack_get_main_loop(stack)); io_error_count++; /*BC_ASSERT(CU_FALSE);*/ } static void process_request_event(void *user_ctx, const belle_sip_request_event_t *event){ BELLESIP_UNUSED(user_ctx); BELLESIP_UNUSED(event); belle_sip_message("process_request_event"); } static void process_response_event(void *user_ctx, const belle_sip_response_event_t *event){ int status; belle_sip_request_t* request; BELLESIP_UNUSED(user_ctx); if (!BC_ASSERT_PTR_NOT_NULL(belle_sip_response_event_get_response(event))) { return; } belle_sip_message("process_response_event [%i] [%s]" ,status=belle_sip_response_get_status_code(belle_sip_response_event_get_response(event)) ,belle_sip_response_get_reason_phrase(belle_sip_response_event_get_response(event))); if (status==401){ belle_sip_header_cseq_t* cseq; belle_sip_client_transaction_t *t; belle_sip_uri_t *dest; // BC_ASSERT_NOT_EQUAL(number_of_challenge,2); BC_ASSERT_PTR_NOT_NULL(belle_sip_response_event_get_client_transaction(event)); /*require transaction mode*/ dest=belle_sip_client_transaction_get_route(belle_sip_response_event_get_client_transaction(event)); request=belle_sip_transaction_get_request(BELLE_SIP_TRANSACTION(belle_sip_response_event_get_client_transaction(event))); cseq=(belle_sip_header_cseq_t*)belle_sip_message_get_header(BELLE_SIP_MESSAGE(request),BELLE_SIP_CSEQ); belle_sip_header_cseq_set_seq_number(cseq,belle_sip_header_cseq_get_seq_number(cseq)+1); belle_sip_message_remove_header(BELLE_SIP_MESSAGE(request),BELLE_SIP_AUTHORIZATION); belle_sip_message_remove_header(BELLE_SIP_MESSAGE(request),BELLE_SIP_PROXY_AUTHORIZATION); BC_ASSERT_TRUE(belle_sip_provider_add_authorization(prov,request,belle_sip_response_event_get_response(event),NULL,NULL,auth_domain)); t=belle_sip_provider_create_client_transaction(prov,request); belle_sip_client_transaction_send_request_to(t,dest); number_of_challenge++; authorized_request=request; belle_sip_object_ref(authorized_request); } else { BC_ASSERT_EQUAL(status,200,int,"%d"); is_register_ok=1; using_transaction=belle_sip_response_event_get_client_transaction(event)!=NULL; belle_sip_main_loop_quit(belle_sip_stack_get_main_loop(stack)); } } static void process_timeout(void *user_ctx, const belle_sip_timeout_event_t *event){ BELLESIP_UNUSED(user_ctx); BELLESIP_UNUSED(event); belle_sip_message("process_timeout"); } static void process_transaction_terminated(void *user_ctx, const belle_sip_transaction_terminated_event_t *event){ BELLESIP_UNUSED(user_ctx); BELLESIP_UNUSED(event); belle_sip_message("process_transaction_terminated"); } const char* belle_sip_tester_client_cert = /*for URI:sip:tester@client.example.org*/ "-----BEGIN CERTIFICATE-----\n" "MIIDYzCCAsygAwIBAgIBCDANBgkqhkiG9w0BAQUFADCBuzELMAkGA1UEBhMCRlIx\n" "EzARBgNVBAgMClNvbWUtU3RhdGUxETAPBgNVBAcMCEdyZW5vYmxlMSIwIAYDVQQK\n" "DBlCZWxsZWRvbm5lIENvbW11bmljYXRpb25zMQwwCgYDVQQLDANMQUIxFjAUBgNV\n" "BAMMDUplaGFuIE1vbm5pZXIxOjA4BgkqhkiG9w0BCQEWK2plaGFuLm1vbm5pZXJA\n" "YmVsbGVkb25uZS1jb21tdW5pY2F0aW9ucy5jb20wHhcNMTMxMDAzMTQ0MTEwWhcN\n" "MjMxMDAxMTQ0MTEwWjCBtTELMAkGA1UEBhMCRlIxDzANBgNVBAgMBkZyYW5jZTER\n" "MA8GA1UEBwwIR3Jlbm9ibGUxIjAgBgNVBAoMGUJlbGxlZG9ubmUgQ29tbXVuaWNh\n" "dGlvbnMxDDAKBgNVBAsMA0xBQjEUMBIGA1UEAwwLY2xpZW50IGNlcnQxOjA4Bgkq\n" "hkiG9w0BCQEWK2plaGFuLm1vbm5pZXJAYmVsbGVkb25uZS1jb21tdW5pY2F0aW9u\n" "cy5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALZxC/qBi/zB/4lgI7V7\n" "I5TsmMmOp0+R/TCyVnYvKQuaJXh9i+CobVM7wj/pQg8RgsY1x+4mVwH1QbhOdIN0\n" "ExYHKgLTPlo9FaN6oHPOcHxU/wt552aZhCHC+ushwUUyjy8+T09UOP+xK9V7y5uD\n" "ZY+vIOvi6QNwc5cqyy8TREwNAgMBAAGjezB5MAkGA1UdEwQCMAAwLAYJYIZIAYb4\n" "QgENBB8WHU9wZW5TU0wgR2VuZXJhdGVkIENlcnRpZmljYXRlMB0GA1UdDgQWBBTL\n" "eWEg7jewRbQbKXSdBvsyygGIFzAfBgNVHSMEGDAWgBQGX13HFq9i+C1ucQOIoNYd\n" "KwR/ujANBgkqhkiG9w0BAQUFAAOBgQBTbEoi94pVfevbK22Oj8PJFsuy+el1pJG+\n" "h0XGM9SQGfbcS7PsV/MhFXtmpnmj3vQB3u5QtMGtWcLA2uxXi79i82gw+oEpBKHR\n" "sLqsNCzWNCL9n1pjpNSdqqBFGUdB9pSpnYalujAbuzkqq1ZLyzsElvK7pCaLQcSs\n" "oEncRDdPOA==\n" "-----END CERTIFICATE-----"; /* fingerprint of certificate generated using openssl x509 -fingerprint */ const char* belle_sip_tester_client_cert_fingerprint = "SHA-1 79:2F:9E:8B:28:CC:38:53:90:1D:71:DC:8F:70:66:75:E5:34:CE:C4"; const char* belle_sip_tester_private_key = "-----BEGIN ENCRYPTED PRIVATE KEY-----\n" "MIICxjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIbEHnQwhgRwoCAggA\n" "MBQGCCqGSIb3DQMHBAgmrtCEBCP9kASCAoCq9EKInROalaBSLWY44U4RVAC+CKdx\n" "Q8ooT7Bz/grgZuCiaGf0UKINJeV4LYHoP+AWjCH8EeebIA8dldNy5rGcBTt7sXd1\n" "QOGmnkBplXTW/NTsb9maYRK56kNJhLE4DR5X5keziV1Tdy2KBmTlpllsCXWsSOBq\n" "iI63PTaakIvZxA0TEmie5QQWpH777e/LmW3vVHdH8hhp2zeDDjfSW2E290+ce4Yj\n" "SDW9oFXvauzhzhSYRkUdfoJSbpu5MYwyzhjAXQpmBJDauu7+jAU/rQw6TLmYjDNZ\n" "3PYHzyD4N7tCG9u4mPBo33dhUirP+8E1BftHB+i/VIn6pI3ypMyiFZ1ZCHqi4vhW\n" "z7aChRrUY/8XWCpln3azcfj4SW+Mz62sAChY8rn+yyxFgIno8d9rrx67jyAnYJ6Q\n" "sfIMwKp3Sz5oI7IDk8If5SuBVkpqlRV+eZFT6zRRFk65beYpq70BN2mYaKzSV8A7\n" "rnciho/dfa9wvyWmkqXciBgWh18UTACOM9HPLmQef3FGaUDLiTAGS1osyypGUEPt\n" "Ox3u51qpYkibwyQZo1+ujQkh9PiKfevIAXmty0nTFWMEED15G2SJKjunw5N1rEAh\n" "M9jlYpLnATcfigPfGo19QrIPQ1c0LB4BqdwAWN3ZLe0QqYdgwzdcwIoLQRp9iDcw\n" "Omc31+38cTc2yGQ2Y2XHZkL8GY/rkqkbhVt9Rnh+VJxFeB6FlsL66EycApe07ngx\n" "QimGP57yp4aBzpJyW+6GPf8A/Ogsv3ay1QBLUiGEJtUglRHnl9F6nm5Nxm7wubVx\n" "WEuSefVM4xgB+mfQauAJu2N9yKhzXOytslZflpa06qJedlLYFk9njvcv\n" "-----END ENCRYPTED PRIVATE KEY-----\n"; const char* belle_sip_tester_private_key_passwd="secret"; const char *belle_sip_tester_root_ca = "-----BEGIN CERTIFICATE-----\n" "MIIDRjCCAq+gAwIBAgIJAJ3nFcA7qFrOMA0GCSqGSIb3DQEBBQUAMIG7MQswCQYD\n" "VQQGEwJGUjETMBEGA1UECAwKU29tZS1TdGF0ZTERMA8GA1UEBwwIR3Jlbm9ibGUx\n" "IjAgBgNVBAoMGUJlbGxlZG9ubmUgQ29tbXVuaWNhdGlvbnMxDDAKBgNVBAsMA0xB\n" "QjEWMBQGA1UEAwwNSmVoYW4gTW9ubmllcjE6MDgGCSqGSIb3DQEJARYramVoYW4u\n" "bW9ubmllckBiZWxsZWRvbm5lLWNvbW11bmljYXRpb25zLmNvbTAeFw0xMzA0MzAx\n" "MzMwMThaFw0yMzA0MjgxMzMwMThaMIG7MQswCQYDVQQGEwJGUjETMBEGA1UECAwK\n" "U29tZS1TdGF0ZTERMA8GA1UEBwwIR3Jlbm9ibGUxIjAgBgNVBAoMGUJlbGxlZG9u\n" "bmUgQ29tbXVuaWNhdGlvbnMxDDAKBgNVBAsMA0xBQjEWMBQGA1UEAwwNSmVoYW4g\n" "TW9ubmllcjE6MDgGCSqGSIb3DQEJARYramVoYW4ubW9ubmllckBiZWxsZWRvbm5l\n" "LWNvbW11bmljYXRpb25zLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA\n" "z5F8mMh3SUr6NUd7tq2uW2Kdn22Zn3kNpLYb78AQK4IoQMOLGXbBdyoXvz1fublg\n" "bxtLYsiGhICd7Ul9zLGc3edn85LbD3Skb7ERx6MakRnYep3FzagZJhn14QEaZCx6\n" "3Qs0Ir4rSP7hmlpYt8VO/zqqNR3tsA59O0D9c7bpQ7UCAwEAAaNQME4wHQYDVR0O\n" "BBYEFAZfXccWr2L4LW5xA4ig1h0rBH+6MB8GA1UdIwQYMBaAFAZfXccWr2L4LW5x\n" "A4ig1h0rBH+6MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAKvmt2m1o\n" "axGKc0DjiJPypU/NsAf4Yu0nOnY8pHqJJCB0AWVoAPM7vGYPWpeH7LSdGZLuT9eK\n" "FUWGJhPnkrnklmBdVB0l7qXYjR5uf766HDkoDxuLhNifow3IYvsS+L2Y6puRQb9w\n" "HLMDE29mBDl0WyoX3h0yR0EiAO15V9A7I10=\n" "-----END CERTIFICATE-----\n" "\n" "AddTrust External Root used for *.linphone.org\n" "======================\n" "-----BEGIN CERTIFICATE-----\n" "MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEUMBIGA1UEChML\n" "QWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYD\n" "VQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEw\n" "NDgzOFowbzELMAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRU\n" "cnVzdCBFeHRlcm5hbCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0Eg\n" "Um9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvtH7xsD821\n" "+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9uMq/NzgtHj6RQa1wVsfw\n" "Tz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzXmk6vBbOmcZSccbNQYArHE504B4YCqOmo\n" "aSYYkKtMsE8jqzpPhNjfzp/haW+710LXa0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy\n" "2xSoRcRdKn23tNbE7qzNE0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv7\n" "7+ldU9U0WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYDVR0P\n" "BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0Jvf6xCZU7wO94CTL\n" "VBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEmMCQGA1UECxMdQWRk\n" "VHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsxIjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENB\n" "IFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZl\n" "j7DYd7usQWxHYINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5\n" "6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvCNr4TDea9Y355\n" "e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEXc4g/VhsxOBi0cQ+azcgOno4u\n" "G+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5amnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=\n" "-----END CERTIFICprocess_auth_requestedATE-----\n"; static void process_auth_requested(void *user_ctx, belle_sip_auth_event_t *event) { BELLESIP_UNUSED(user_ctx); if (belle_sip_auth_event_get_mode(event) == BELLE_SIP_AUTH_MODE_HTTP_DIGEST) { const char *username = belle_sip_auth_event_get_username(event); const char *realm = belle_sip_auth_event_get_realm(event); belle_sip_message("process_auth_requested requested for [%s@%s]" , username ? username : "" , realm ? realm : ""); belle_sip_auth_event_set_passwd(event, "secret"); } else if (belle_sip_auth_event_get_mode(event) == BELLE_SIP_AUTH_MODE_TLS) { const char *distinguished_name = NULL; belle_sip_certificates_chain_t *cert = belle_sip_certificates_chain_parse(belle_sip_tester_client_cert, strlen(belle_sip_tester_client_cert), BELLE_SIP_CERTIFICATE_RAW_FORMAT_PEM); belle_sip_signing_key_t *key = belle_sip_signing_key_parse(belle_sip_tester_private_key, strlen(belle_sip_tester_private_key), belle_sip_tester_private_key_passwd); belle_sip_auth_event_set_client_certificates_chain(event, cert); belle_sip_auth_event_set_signing_key(event, key); distinguished_name = belle_sip_auth_event_get_distinguished_name(event); belle_sip_message("process_auth_requested requested for DN[%s]", distinguished_name ? distinguished_name : ""); } else { belle_sip_error("Unexpected auth mode"); } } static void process_auth_requested_for_algorithm(void *user_ctx, belle_sip_auth_event_t *event) { const char **client; client = (const char **) user_ctx; //*client is algorithm of client, *(client+1) is password haché if (*client == NULL) *client = "MD5"; if (belle_sip_auth_event_get_mode(event) == BELLE_SIP_AUTH_MODE_HTTP_DIGEST) { const char *username = belle_sip_auth_event_get_username(event); const char *realm = belle_sip_auth_event_get_realm(event); belle_sip_message("process_auth_requested requested for [%s@%s]" , username ? username : "" , realm ? realm : ""); /* Default algorithm is MD5 if it's NULL. If algorithm of client = algorithm of server (event->algorithm), set ha1 or passwd. */ if (((event->algorithm) && (!strcmp(*client, event->algorithm))) || ((event->algorithm == NULL) && (!strcmp(*client, "MD5")))) { if (*(client + 1)) belle_sip_auth_event_set_ha1(event, *(client + 1)); else belle_sip_auth_event_set_passwd(event, "secret"); } } else if (belle_sip_auth_event_get_mode(event) == BELLE_SIP_AUTH_MODE_TLS) { const char *distinguished_name = NULL; belle_sip_certificates_chain_t *cert = belle_sip_certificates_chain_parse(belle_sip_tester_client_cert, strlen(belle_sip_tester_client_cert), BELLE_SIP_CERTIFICATE_RAW_FORMAT_PEM); belle_sip_signing_key_t *key = belle_sip_signing_key_parse(belle_sip_tester_private_key, strlen(belle_sip_tester_private_key), belle_sip_tester_private_key_passwd); belle_sip_auth_event_set_client_certificates_chain(event, cert); belle_sip_auth_event_set_signing_key(event, key); distinguished_name = belle_sip_auth_event_get_distinguished_name(event); belle_sip_message("process_auth_requested requested for DN[%s]", distinguished_name ? distinguished_name : ""); } else { belle_sip_error("Unexpected auth mode"); } } static const char *listener_user_data[2] = {NULL, NULL}; int register_before_all(void) { belle_sip_listening_point_t *lp; stack = belle_sip_stack_new(NULL); belle_sip_tester_set_dns_host_file(stack); lp = belle_sip_stack_create_listening_point(stack, "0.0.0.0", RANDOM_PORT, "UDP"); prov = belle_sip_stack_create_provider(stack, lp); lp = belle_sip_stack_create_listening_point(stack, "0.0.0.0", RANDOM_PORT, "TCP"); belle_sip_provider_add_listening_point(prov, lp); lp = belle_sip_stack_create_listening_point(stack, "0.0.0.0", RANDOM_PORT, "TLS"); if (lp) { belle_tls_crypto_config_t *crypto_config = belle_tls_crypto_config_new(); belle_tls_crypto_config_set_root_ca_data(crypto_config, belle_sip_tester_root_ca); belle_sip_tls_listening_point_set_crypto_config(BELLE_SIP_TLS_LISTENING_POINT(lp), crypto_config); belle_sip_provider_add_listening_point(prov, lp); belle_sip_object_unref(crypto_config); } listener_callbacks.process_dialog_terminated = process_dialog_terminated; listener_callbacks.process_io_error = process_io_error; listener_callbacks.process_request_event = process_request_event; listener_callbacks.process_response_event = process_response_event; listener_callbacks.process_timeout = process_timeout; listener_callbacks.process_transaction_terminated = process_transaction_terminated; listener_callbacks.process_auth_requested = process_auth_requested_for_algorithm; listener_callbacks.listener_destroyed = NULL; listener = belle_sip_listener_create_from_callbacks(&listener_callbacks, (void *)listener_user_data); return 0; } int register_after_all(void) { belle_sip_object_unref(prov); belle_sip_object_unref(stack); belle_sip_object_unref(listener); return 0; } void unregister_user(belle_sip_stack_t * stack ,belle_sip_provider_t *prov ,belle_sip_request_t* initial_request ,int use_transaction) { belle_sip_request_t *req; belle_sip_header_cseq_t* cseq; belle_sip_header_expires_t* expires_header; int i; belle_sip_provider_add_sip_listener(prov,l); is_register_ok=0; using_transaction=0; req=(belle_sip_request_t*)belle_sip_object_clone((belle_sip_object_t*)initial_request); belle_sip_object_ref(req); cseq=(belle_sip_header_cseq_t*)belle_sip_message_get_header((belle_sip_message_t*)req,BELLE_SIP_CSEQ); belle_sip_header_cseq_set_seq_number(cseq,belle_sip_header_cseq_get_seq_number(cseq)+2); /*+2 if initial reg was challenged*/ expires_header=(belle_sip_header_expires_t*)belle_sip_message_get_header(BELLE_SIP_MESSAGE(req),BELLE_SIP_EXPIRES); belle_sip_header_expires_set_expires(expires_header,0); if (use_transaction){ belle_sip_client_transaction_t *t; belle_sip_provider_add_authorization(prov,req,NULL,NULL,NULL,NULL); /*just in case*/ t=belle_sip_provider_create_client_transaction(prov,req); belle_sip_client_transaction_send_request(t); }else belle_sip_provider_send_request(prov,req); for(i=0;!is_register_ok && i<20 ;i++) { belle_sip_stack_sleep(stack,500); if (!use_transaction && !is_register_ok) { belle_sip_object_ref(req); belle_sip_provider_send_request(prov,req); /*manage retransmitions*/ } } BC_ASSERT_EQUAL(is_register_ok,1,int,"%d"); BC_ASSERT_EQUAL(using_transaction,use_transaction,int,"%d"); belle_sip_object_unref(req); belle_sip_provider_remove_sip_listener(prov,l); } static belle_sip_request_t* create_registration_request(belle_sip_stack_t * stack ,belle_sip_provider_t *prov ,const char *transport ,const char* username ,const char* domain) { belle_sip_request_t *req; char identity[256]; char uri[256]; number_of_challenge=0; if (transport) snprintf(uri,sizeof(uri),"sip:%s;transport=%s",domain,transport); else snprintf(uri,sizeof(uri),"sip:%s",domain); if (transport && strcasecmp("tls",transport)==0 && belle_sip_provider_get_listening_point(prov,"tls")==NULL){ belle_sip_error("No TLS support, test skipped."); return NULL; } snprintf(identity,sizeof(identity),"Tester ",username,domain); req=belle_sip_request_create( belle_sip_uri_parse(uri), "REGISTER", belle_sip_provider_create_call_id(prov), belle_sip_header_cseq_create(20,"REGISTER"), belle_sip_header_from_create2(identity,BELLE_SIP_RANDOM_TAG), belle_sip_header_to_create2(identity,NULL), belle_sip_header_via_new(), 70); belle_sip_object_ref(req); is_register_ok=0; io_error_count=0; using_transaction=0; belle_sip_message_add_header(BELLE_SIP_MESSAGE(req),BELLE_SIP_HEADER(belle_sip_header_expires_create(600))); belle_sip_message_add_header(BELLE_SIP_MESSAGE(req),BELLE_SIP_HEADER(belle_sip_header_contact_new())); return req; } static void execute_registration(belle_sip_stack_t * stack, belle_sip_provider_t *prov, belle_sip_client_transaction_t *trans, belle_sip_request_t *req, const char *transport, const char* outbound_proxy, int success_expected){ int do_manual_retransmissions = FALSE; int use_transaction = trans ? 1 : 0; int i; char *outbound=NULL; if (outbound_proxy){ if (strstr(outbound_proxy,"sip:")==NULL && strstr(outbound_proxy,"sips:")==NULL){ outbound=belle_sip_strdup_printf("sip:%s",outbound_proxy); }else outbound=belle_sip_strdup(outbound_proxy); } belle_sip_provider_add_sip_listener(prov,l=BELLE_SIP_LISTENER(listener)); if (trans){ belle_sip_client_transaction_send_request_to(trans,outbound?belle_sip_uri_parse(outbound):NULL); }else{ belle_sip_provider_send_request(prov,req); do_manual_retransmissions = (transport == NULL) || (strcasecmp(transport,"udp") == 0); } for(i=0;!is_register_ok && i<20 && io_error_count==0;i++) { belle_sip_stack_sleep(stack,500); if (do_manual_retransmissions && !is_register_ok) { belle_sip_object_ref(req); belle_sip_provider_send_request(prov,req); /*manage retransmitions*/ } } BC_ASSERT_EQUAL(is_register_ok,success_expected,int,"%d"); if (success_expected) BC_ASSERT_EQUAL(using_transaction,use_transaction,int,"%d"); belle_sip_provider_remove_sip_listener(prov,l); if (outbound) belle_sip_free(outbound); } belle_sip_request_t* try_register_user_at_domain(belle_sip_stack_t * stack ,belle_sip_provider_t *prov ,const char *transport ,int use_transaction ,const char* username ,const char* domain ,const char* outbound_proxy ,int success_expected) { belle_sip_request_t *req,*copy = NULL; req = create_registration_request(stack, prov, transport, username, domain); if (req) { copy = (belle_sip_request_t*)belle_sip_object_ref(belle_sip_object_clone((belle_sip_object_t*)req)); belle_sip_client_transaction_t *t = use_transaction ? belle_sip_provider_create_client_transaction(prov,req) : NULL; execute_registration(stack, prov, t, req, transport, outbound_proxy, success_expected); belle_sip_object_unref(req); } return copy; } belle_sip_request_t* register_user_at_domain(belle_sip_stack_t * stack ,belle_sip_provider_t *prov ,const char *transport ,int use_transaction ,const char* username ,const char* domain ,const char* outbound) { return try_register_user_at_domain(stack,prov,transport,use_transaction,username,domain,outbound,1); } belle_sip_request_t* register_user(belle_sip_stack_t * stack ,belle_sip_provider_t *prov ,const char *transport ,int use_transaction ,const char* username ,const char* outbound) { return register_user_at_domain(stack,prov,transport,use_transaction,username,test_domain,outbound); } belle_sip_client_transaction_t* register_user_with_transaction(belle_sip_stack_t * stack ,belle_sip_provider_t *prov ,const char *transport ,const char* username ,const char* outbound_proxy) { belle_sip_request_t *req; belle_sip_client_transaction_t *t = NULL; req = create_registration_request(stack, prov, transport, username, test_domain); if (req) { t = belle_sip_provider_create_client_transaction(prov, req); belle_sip_object_ref(t); execute_registration(stack, prov, t, req, transport, outbound_proxy, 1); } return t; } static void register_with_outbound(const char *transport, int use_transaction,const char* outbound ) { belle_sip_request_t *req; req=register_user(stack, prov, transport,use_transaction,"tester",outbound); if (req) { unregister_user(stack,prov,req,use_transaction); belle_sip_object_unref(req); } } static void register_test(const char *transport, int use_transaction) { register_with_outbound(transport,use_transaction,NULL); } static void stateless_register_udp(void){ register_test(NULL,0); } static void stateless_register_tls(void){ register_test("tls",0); } static void stateless_register_tcp(void){ register_test("tcp",0); } static void stateful_register_udp(void){ register_test(NULL,1); } static void stateful_register_udp_with_keep_alive(void) { belle_sip_listening_point_set_keep_alive(belle_sip_provider_get_listening_point(prov,"udp"),200); register_test(NULL,1); belle_sip_main_loop_sleep(belle_sip_stack_get_main_loop(stack),500); belle_sip_listening_point_set_keep_alive(belle_sip_provider_get_listening_point(prov,"udp"),-1); } static void stateful_register_udp_with_outbound_proxy(void){ register_with_outbound("udp",1,test_domain); } static void stateful_register_udp_delayed(void){ belle_sip_stack_set_tx_delay(stack,3000); register_test(NULL,1); belle_sip_stack_set_tx_delay(stack,0); } static void stateful_register_udp_with_send_error(void){ belle_sip_request_t *req; belle_sip_stack_set_send_error(stack,-1); req=try_register_user_at_domain(stack, prov, NULL,1,"tester",test_domain,NULL,0); belle_sip_stack_set_send_error(stack,0); if (req) belle_sip_object_unref(req); } static void stateful_register_tcp(void){ register_test("tcp",1); } static void stateful_register_tls(void){ register_test("tls",1); } static void stateful_register_tls_with_wrong_cname(void){ belle_sip_request_t *req; req = try_register_user_at_domain(stack, prov, "tls", 1, "tester",test_domain, test_with_wrong_cname, 0); if (req) belle_sip_object_unref(req); } static void stateful_register_tls_with_http_proxy(void) { belle_sip_tls_listening_point_t * lp = (belle_sip_tls_listening_point_t*)belle_sip_provider_get_listening_point(prov, "tls"); if (!lp) { belle_sip_error("No TLS support, test skipped."); return; } belle_sip_provider_clean_channels(prov); belle_sip_stack_set_http_proxy_host(stack, test_http_proxy_addr); belle_sip_stack_set_http_proxy_port(stack, test_http_proxy_port); register_test("tls",1); belle_sip_stack_set_http_proxy_host(stack, NULL); belle_sip_stack_set_http_proxy_port(stack, 0); } static void stateful_register_tls_with_wrong_http_proxy(void){ belle_sip_tls_listening_point_t * lp = (belle_sip_tls_listening_point_t*)belle_sip_provider_get_listening_point(prov, "tls"); if (!lp) { belle_sip_error("No TLS support, test skipped."); return; } belle_sip_provider_clean_channels(prov); belle_sip_stack_set_http_proxy_host(stack, "mauvaisproxy.linphone.org"); belle_sip_stack_set_http_proxy_port(stack, test_http_proxy_port); try_register_user_at_domain(stack,prov,"tls",1,"tester",test_domain,NULL,0); belle_sip_stack_set_http_proxy_host(stack, NULL); belle_sip_stack_set_http_proxy_port(stack, 0); } static void bad_req_process_io_error(void *user_ctx, const belle_sip_io_error_event_t *event){ BELLESIP_UNUSED(user_ctx); BELLESIP_UNUSED(event); belle_sip_message("bad_req_process_io_error not implemented yet"); } static void bad_req_process_response_event(void *user_ctx, const belle_sip_response_event_t *event){ belle_sip_response_t *resp=belle_sip_response_event_get_response(event); int *bad_request_response_received=(int*)user_ctx; if (belle_sip_response_event_get_client_transaction(event) != NULL) { BC_ASSERT_PTR_NOT_NULL(resp); BC_ASSERT_EQUAL(belle_sip_response_get_status_code(resp),400,int,"%d"); *bad_request_response_received=1; belle_sip_main_loop_quit(belle_sip_stack_get_main_loop(stack)); } } static void test_bad_request(void) { belle_sip_request_t *req; belle_sip_listener_t *bad_req_listener; belle_sip_client_transaction_t *t; belle_sip_header_address_t* route_address=belle_sip_header_address_create(NULL,belle_sip_uri_create(NULL,test_domain)); belle_sip_header_route_t* route; belle_sip_header_to_t* to = belle_sip_header_to_create2("sip:toto@titi.com",NULL); belle_sip_listener_callbacks_t cbs; belle_sip_listening_point_t *lp=belle_sip_provider_get_listening_point(prov,"TCP"); int bad_request_response_received=0; memset(&cbs,0,sizeof(cbs)); cbs.process_io_error=bad_req_process_io_error; cbs.process_response_event=bad_req_process_response_event; bad_req_listener = belle_sip_listener_create_from_callbacks(&cbs,&bad_request_response_received); req=belle_sip_request_create( BELLE_SIP_URI(belle_sip_object_clone(BELLE_SIP_OBJECT(belle_sip_header_address_get_uri(route_address)))), "REGISTER", belle_sip_provider_create_call_id(prov), belle_sip_header_cseq_create(20,"REGISTER"), belle_sip_header_from_create2("sip:toto@titi.com",BELLE_SIP_RANDOM_TAG), to, belle_sip_header_via_new(), 70); belle_sip_uri_set_transport_param(belle_sip_header_address_get_uri(route_address),"tcp"); route = belle_sip_header_route_create(route_address); belle_sip_header_set_name(BELLE_SIP_HEADER(to),"BrokenHeader"); belle_sip_message_add_header(BELLE_SIP_MESSAGE(req),BELLE_SIP_HEADER(belle_sip_header_expires_create(600))); belle_sip_message_add_header(BELLE_SIP_MESSAGE(req),BELLE_SIP_HEADER(route)); belle_sip_message_add_header(BELLE_SIP_MESSAGE(req),BELLE_SIP_HEADER(belle_sip_header_contact_new())); belle_sip_provider_add_sip_listener(prov,bad_req_listener); t=belle_sip_provider_create_client_transaction(prov,req); belle_sip_client_transaction_send_request(t); belle_sip_stack_sleep(stack,3000); BC_ASSERT_EQUAL(bad_request_response_received,1,int,"%d"); belle_sip_provider_remove_sip_listener(prov,bad_req_listener); belle_sip_object_unref(bad_req_listener); belle_sip_listening_point_clean_channels(lp); } static void test_register_authenticate(void) { belle_sip_request_t *reg; number_of_challenge=0; authorized_request=NULL; reg=register_user_at_domain(stack, prov, "udp",1,"bellesip",auth_domain,NULL); if (authorized_request) { unregister_user(stack,prov,authorized_request,1); belle_sip_object_unref(authorized_request); } belle_sip_object_unref(reg); } static void test_register_channel_inactive(void){ belle_sip_listening_point_t *lp=belle_sip_provider_get_listening_point(prov,"TCP"); BC_ASSERT_PTR_NOT_NULL(lp); if (lp) { belle_sip_stack_set_inactive_transport_timeout(stack,5); belle_sip_listening_point_clean_channels(lp); BC_ASSERT_EQUAL(belle_sip_listening_point_get_channel_count(lp),0,int,"%d"); register_test("tcp",1); BC_ASSERT_EQUAL(belle_sip_listening_point_get_channel_count(lp),1,int,"%d"); belle_sip_stack_sleep(stack, 3000); BC_ASSERT_EQUAL(belle_sip_listening_point_get_channel_count(lp),1,int,"%d"); register_test("tcp",1); belle_sip_stack_sleep(stack, 3000); BC_ASSERT_EQUAL(belle_sip_listening_point_get_channel_count(lp),1,int,"%d"); belle_sip_stack_sleep(stack,3000); BC_ASSERT_EQUAL(belle_sip_listening_point_get_channel_count(lp),0,int,"%d"); belle_sip_stack_set_inactive_transport_timeout(stack,3600); } } static void test_channel_moving_to_error_and_cleaned(void){ belle_sip_listening_point_t *lp=belle_sip_provider_get_listening_point(prov,"UDP"); BC_ASSERT_PTR_NOT_NULL(lp); if (lp) { belle_sip_request_t *req; belle_sip_client_transaction_t *tr; char identity[128]; char uri[128]; belle_sip_listening_point_clean_channels(lp); BC_ASSERT_EQUAL(belle_sip_listening_point_get_channel_count(lp),0,int,"%d"); snprintf(identity,sizeof(identity),"Tester ","bellesip",test_domain); snprintf(uri,sizeof(uri),"sip:%s",test_domain); req = belle_sip_request_create( belle_sip_uri_parse(uri), "REGISTER", belle_sip_provider_create_call_id(prov), belle_sip_header_cseq_create(20,"REGISTER"), belle_sip_header_from_create2(identity,BELLE_SIP_RANDOM_TAG), belle_sip_header_to_create2(identity,NULL), belle_sip_header_via_new(), 70); tr = belle_sip_provider_create_client_transaction(prov, req); belle_sip_client_transaction_send_request(tr); belle_sip_object_ref(tr); BC_ASSERT_EQUAL(belle_sip_listening_point_get_channel_count(lp),1,int,"%d"); /*calling notify_server_error() will make the channel enter the error state, which is what we want to test*/ belle_sip_channel_notify_server_error((belle_sip_channel_t*)lp->channels->data); /*immediately after, we clean the channel from the listening point*/ belle_sip_listening_point_clean_channels(lp); /*we just want to verify that it doesn't crash*/ belle_sip_stack_sleep(stack, 1000); belle_sip_object_unref(tr); } } static void test_register_client_authenticated(void) { belle_sip_request_t *reg; authorized_request=NULL; reg=register_user_at_domain(stack, prov, "tls",1,"tester",client_auth_domain,client_auth_outbound_proxy); if (authorized_request) { unregister_user(stack,prov,authorized_request,1); belle_sip_object_unref(authorized_request); } if (reg) belle_sip_object_unref(reg); } static void test_register_client_bad_ciphersuites(void) { /* If there is no mbedtls, this test will do nothing. */ if(bctbx_ssl_get_implementation_type()==BCTBX_MBEDTLS) { belle_sip_request_t *reg; authorized_request=NULL; belle_sip_tls_listening_point_t *s = BELLE_SIP_TLS_LISTENING_POINT(belle_sip_provider_get_listening_point(prov, "tls")); belle_tls_crypto_config_t *crypto_config = belle_sip_tls_listening_point_get_crypto_config(s); belle_sip_listening_point_clean_channels((belle_sip_listening_point_t*)s); void *config_ref = crypto_config->ssl_config; int ciphersuites[2] = {bctbx_ssl_get_ciphersuite_id("TLS-RSA-WITH-AES-128-GCM-SHA256"),0}; bctbx_ssl_config_t *sslcfg = bctbx_ssl_config_new(); bctbx_ssl_config_defaults( sslcfg, BCTBX_SSL_IS_CLIENT, BCTBX_SSL_TRANSPORT_STREAM); bctbx_ssl_config_set_authmode(sslcfg, BCTBX_SSL_VERIFY_REQUIRED); bctbx_ssl_config_set_ciphersuites(sslcfg,ciphersuites); crypto_config->ssl_config = bctbx_ssl_config_get_private_config(sslcfg); /* This ciphersuite will be rejected by flexisip, so success_expected=0. See tls-ciphers in flexisip. */ reg=try_register_user_at_domain(stack, prov, "tls",1,"tester",client_auth_domain,client_auth_outbound_proxy,0); if (authorized_request) { unregister_user(stack,prov,authorized_request,1); belle_sip_object_unref(authorized_request); } if (reg) belle_sip_object_unref(reg); bctbx_ssl_config_free(sslcfg); crypto_config->ssl_config = config_ref; } } static void test_connection_failure(void){ belle_sip_request_t *req; io_error_count=0; req=try_register_user_at_domain(stack, prov, "TCP",1,"tester","sip.linphone.org",no_server_running_here,0); BC_ASSERT_GREATER(io_error_count,1,int,"%d"); if (req) belle_sip_object_unref(req); } static void test_connection_too_long(const char *transport){ belle_sip_request_t *req; int orig=belle_sip_stack_get_transport_timeout(stack); char *no_response_here_with_transport = belle_sip_strdup_printf(no_response_here, transport); io_error_count=0; if (transport && strcasecmp("tls",transport)==0 && belle_sip_provider_get_listening_point(prov,"tls")==NULL){ belle_sip_error("No TLS support, test skipped."); return; } belle_sip_stack_set_transport_timeout(stack,2000); req=try_register_user_at_domain(stack, prov, transport,1,"tester","sip.linphone.org",no_response_here_with_transport,0); BC_ASSERT_GREATER(io_error_count, 1, int, "%d"); belle_sip_stack_set_transport_timeout(stack,orig); belle_sip_free(no_response_here_with_transport); if (req) belle_sip_object_unref(req); } static void test_connection_too_long_tcp(void){ test_connection_too_long("tcp"); } static void test_connection_too_long_tls(void){ test_connection_too_long("tls"); } static void test_tls_to_tcp(void){ belle_sip_request_t *req; int orig=belle_sip_stack_get_transport_timeout(stack); io_error_count=0; belle_sip_stack_set_transport_timeout(stack,2000); req=try_register_user_at_domain(stack, prov, "TLS",1,"tester",test_domain,test_domain_tls_to_tcp,0); if (req){ BC_ASSERT_GREATER(io_error_count,1,int,"%d"); belle_sip_object_unref(req); } belle_sip_stack_set_transport_timeout(stack,orig); } static void register_dns_srv_tcp(void){ belle_sip_request_t *req; io_error_count=0; req=try_register_user_at_domain(stack, prov, "TCP",1,"tester",client_auth_domain,"sip:linphone.net;transport=tcp",1); BC_ASSERT_EQUAL(io_error_count,0,int,"%d"); if (req) belle_sip_object_unref(req); } static void enable_cn_mismatch(int enable){ belle_sip_listening_point_t *lp = belle_sip_provider_get_listening_point(prov, "TLS"); belle_sip_provider_clean_channels(prov); if (lp) { belle_tls_crypto_config_t *cfg = belle_sip_tls_listening_point_get_crypto_config(BELLE_SIP_TLS_LISTENING_POINT(lp)); belle_tls_crypto_config_set_verify_exceptions(cfg, enable ? BELLE_TLS_VERIFY_CN_MISMATCH : 0); } } static void register_dns_srv_tls(void){ belle_sip_request_t *req; io_error_count=0; enable_cn_mismatch(TRUE); req=try_register_user_at_domain(stack, prov, "TLS",1,"tester",client_auth_domain,"sip:linphone.net;transport=tls",1); BC_ASSERT_EQUAL(io_error_count, 0, int, "%d"); if (req) belle_sip_object_unref(req); enable_cn_mismatch(FALSE); } static void register_dns_srv_tls_with_http_proxy(void){ belle_sip_request_t *req; belle_sip_tls_listening_point_t * lp = (belle_sip_tls_listening_point_t*)belle_sip_provider_get_listening_point(prov, "tls"); if (!lp) { belle_sip_error("No TLS support, test skipped."); return; } io_error_count=0; enable_cn_mismatch(TRUE); belle_sip_stack_set_http_proxy_host(stack, test_http_proxy_addr); belle_sip_stack_set_http_proxy_port(stack, test_http_proxy_port); req=try_register_user_at_domain(stack, prov, "TLS",1,"tester",client_auth_domain,"sip:linphone.net;transport=tls",1); belle_sip_stack_set_http_proxy_host(stack, NULL); belle_sip_stack_set_http_proxy_port(stack, 0); BC_ASSERT_EQUAL(io_error_count, 0, int, "%d"); if (req) belle_sip_object_unref(req); enable_cn_mismatch(FALSE); } static void register_dns_load_balancing(void) { belle_sip_request_t *req; io_error_count = 0; req = try_register_user_at_domain(stack, prov, "TCP", 1, "tester", client_auth_domain, "sip:belle-sip.net;transport=tcp", 1); BC_ASSERT_EQUAL(io_error_count, 0, int, "%d"); if (req) belle_sip_object_unref(req); } static void process_message_response_event(void *user_ctx, const belle_sip_response_event_t *event){ int status; BELLESIP_UNUSED(user_ctx); if (BC_ASSERT_PTR_NOT_NULL(belle_sip_response_event_get_response(event))) { belle_sip_message("process_response_event [%i] [%s]" ,status=belle_sip_response_get_status_code(belle_sip_response_event_get_response(event)) ,belle_sip_response_get_reason_phrase(belle_sip_response_event_get_response(event))); if (status >= 200){ is_register_ok=status; belle_sip_main_loop_quit(belle_sip_stack_get_main_loop(stack)); } } } static belle_sip_request_t* send_message_to(belle_sip_request_t *initial_request, const char* realm, belle_sip_uri_t *outbound){ int i; int io_error_count=0; belle_sip_request_t *message_request=NULL; belle_sip_request_t *clone_request=NULL; // belle_sip_header_authorization_t * h=NULL; is_register_ok = 0; message_request=belle_sip_request_create( belle_sip_uri_parse("sip:"AUTH_DOMAIN";transport=tcp") ,"MESSAGE" ,belle_sip_provider_create_call_id(prov) ,belle_sip_header_cseq_create(22,"MESSAGE") ,belle_sip_message_get_header_by_type(BELLE_SIP_MESSAGE(initial_request), belle_sip_header_from_t) ,belle_sip_header_to_parse("To: sip:marie@"AUTH_DOMAIN) ,belle_sip_header_via_new() ,70); belle_sip_message_add_header(BELLE_SIP_MESSAGE(message_request),BELLE_SIP_HEADER(belle_sip_header_expires_create(600))); belle_sip_message_add_header(BELLE_SIP_MESSAGE(message_request),BELLE_SIP_HEADER(belle_sip_header_contact_new())); belle_sip_provider_add_authorization(prov,message_request,NULL,NULL,NULL,realm); // h = belle_sip_message_get_header_by_type(BELLE_SIP_MESSAGE(message_request), belle_sip_header_authorization_t); /*if a matching authorization was found, use it as a proxy authorization*/ // if (h != NULL){ // belle_sip_header_set_name(BELLE_SIP_HEADER(h), BELLE_SIP_PROXY_AUTHORIZATION); // } clone_request = (belle_sip_request_t*)belle_sip_object_ref(belle_sip_object_clone((belle_sip_object_t*)message_request)); belle_sip_client_transaction_send_request_to(belle_sip_provider_create_client_transaction(prov,message_request),outbound); for(i=0; i<2 && io_error_count==0 &&is_register_ok==0;i++) belle_sip_stack_sleep(stack,5000); return clone_request; } static void reuse_nonce_base(const char* outbound) { belle_sip_request_t *register_request; char outbound_uri[256]; /*reset auth context*/ prov->auth_contexts = belle_sip_list_free_with_data(prov->auth_contexts,(void(*)(void*))belle_sip_authorization_destroy); if (outbound) snprintf(outbound_uri, sizeof(outbound_uri),"sip:%s",outbound); register_request=register_user_at_domain(stack, prov, "tcp",1,"marie",auth_domain, outbound); if (register_request) { belle_sip_header_authorization_t * h = NULL; belle_sip_request_t *message_request; belle_sip_listener_callbacks_t cbs; belle_sip_listener_t *reuse_nonce_listener; cbs.process_dialog_terminated=process_dialog_terminated; cbs.process_io_error=process_io_error; cbs.process_request_event=process_request_event; cbs.process_response_event=process_message_response_event; cbs.process_timeout=process_timeout; cbs.process_transaction_terminated=process_transaction_terminated; cbs.process_auth_requested=process_auth_requested; cbs.listener_destroyed=NULL; reuse_nonce_listener=belle_sip_listener_create_from_callbacks(&cbs,NULL); belle_sip_provider_add_sip_listener(prov,BELLE_SIP_LISTENER(reuse_nonce_listener)); unsigned int number_of_md5_auth_context = 0; unsigned int number_of_sha256_auth_context = 0; for (belle_sip_list_t *it = prov->auth_contexts ;it!=NULL ; it=it->next) { belle_sip_authorization_t *auth_context=(authorization_context_t*)it->data; if (!belle_sip_authorization_get_algorithm(auth_context) || strcasecmp(belle_sip_authorization_get_algorithm(auth_context),"MD5")) number_of_md5_auth_context++; else if (strcasecmp(belle_sip_authorization_get_algorithm(auth_context),"SHA256")) number_of_sha256_auth_context++; else belle_sip_error("This test does not support algo [%s]",belle_sip_authorization_get_algorithm(auth_context) ); } /*currently only one nonce by algo should have been used (the one for the REGISTER)*/ BC_ASSERT_LOWER(number_of_md5_auth_context, 1 ,unsigned int,"%u"); BC_ASSERT_LOWER(number_of_sha256_auth_context, 1 ,unsigned int,"%u"); BC_ASSERT_GREATER((number_of_sha256_auth_context + number_of_md5_auth_context), 1 ,unsigned int,"%u"); /*this should reuse previous nonce*/ message_request=send_message_to(register_request, auth_domain,outbound?belle_sip_uri_parse(outbound_uri):NULL); BC_ASSERT_EQUAL(is_register_ok, 404,int,"%d"); h = BELLE_SIP_HEADER_AUTHORIZATION(belle_sip_message_get_header_by_type( BELLE_SIP_MESSAGE(message_request), belle_sip_header_proxy_authorization_t )); if (BC_ASSERT_PTR_NOT_NULL(h) && belle_sip_header_authorization_get_qop(h) && strcmp(belle_sip_header_authorization_get_qop(h),"auth")==0) { char * first_nonce_used; BC_ASSERT_EQUAL(2, belle_sip_header_authorization_get_nonce_count(h),int,"%d"); first_nonce_used = belle_sip_strdup(belle_sip_header_authorization_get_nonce(h)); belle_sip_free(first_nonce_used); } belle_sip_object_unref(message_request); /*new nonce should be created when not using outbound proxy realm*/ message_request=send_message_to(register_request, NULL,outbound?belle_sip_uri_parse(outbound_uri):NULL); BC_ASSERT_EQUAL(is_register_ok, 407,int,"%d"); h = BELLE_SIP_HEADER_AUTHORIZATION(belle_sip_message_get_header_by_type( BELLE_SIP_MESSAGE(message_request), belle_sip_header_proxy_authorization_t )); BC_ASSERT_PTR_NULL(h); belle_sip_object_unref(message_request); /*new nonce should be created here too*/ message_request=send_message_to(register_request, "wrongrealm",outbound?belle_sip_uri_parse(outbound_uri):NULL); BC_ASSERT_EQUAL(is_register_ok, 407,int,"%d"); h = BELLE_SIP_HEADER_AUTHORIZATION(belle_sip_message_get_header_by_type( BELLE_SIP_MESSAGE(message_request), belle_sip_header_proxy_authorization_t )); BC_ASSERT_PTR_NULL(h); belle_sip_object_unref(message_request); /*first nonce created should be reused. this test is only for qop = auth*/ message_request=send_message_to(register_request, auth_domain,outbound?belle_sip_uri_parse(outbound_uri):NULL); h = BELLE_SIP_HEADER_AUTHORIZATION(belle_sip_message_get_header_by_type( BELLE_SIP_MESSAGE(message_request), belle_sip_header_proxy_authorization_t )); if (BC_ASSERT_PTR_NOT_NULL(h) && belle_sip_header_authorization_get_qop(h) && strcmp(belle_sip_header_authorization_get_qop(h),"auth")==0) { BC_ASSERT_EQUAL(is_register_ok, 404,int,"%d"); BC_ASSERT_EQUAL(3, belle_sip_header_authorization_get_nonce_count(h),int,"%d"); } belle_sip_object_unref(message_request); belle_sip_provider_remove_sip_listener(prov,BELLE_SIP_LISTENER(reuse_nonce_listener)); unregister_user(stack,prov,register_request,1); belle_sip_object_unref(register_request); } } static void reuse_nonce(void) { reuse_nonce_base(auth_domain); } #define NONCE_SIZE 32 void register_process_request_event(char *nonce, const belle_sip_request_event_t *event) { belle_sip_request_t *req = belle_sip_request_event_get_request(event); belle_sip_header_authorization_t *authorization; int response_code = 407; char *uri_as_string= belle_sip_uri_to_string(belle_sip_request_get_uri(req)); belle_sip_response_t * response_msg; belle_sip_server_transaction_t *trans=belle_sip_provider_create_server_transaction(prov, req); if (strcasecmp(belle_sip_request_get_method(req), "REGISTER") == 0) { response_code=401; } if ( (authorization = belle_sip_message_get_header_by_type(req,belle_sip_header_authorization_t)) || (authorization = BELLE_SIP_HEADER_AUTHORIZATION(belle_sip_message_get_header_by_type(req,belle_sip_header_proxy_authorization_t)))) { char ha1[33], ha2[33], response[33]; belle_sip_auth_helper_compute_ha1(belle_sip_header_authorization_get_username(authorization) , belle_sip_header_authorization_get_realm(authorization) ,"secret", ha1); belle_sip_auth_helper_compute_ha2(belle_sip_request_get_method(req) , uri_as_string, ha2); belle_sip_auth_helper_compute_response(ha1,nonce, ha2, response); if (strcmp(response, belle_sip_header_authorization_get_response(authorization)) == 0) { belle_sip_message("Auth sucessfull"); if (strcasecmp(belle_sip_request_get_method(req), "MESSAGE") == 0) { response_code = 404; } else { response_code = 200; } } } belle_sip_random_token((nonce), NONCE_SIZE); response_msg = belle_sip_response_create_from_request(req, response_code); if (response_code == 407 || response_code == 401 ) { belle_sip_header_www_authenticate_t *www_authenticate = 401?belle_sip_header_www_authenticate_new():BELLE_SIP_HEADER_WWW_AUTHENTICATE(belle_sip_header_proxy_authenticate_new()); belle_sip_header_www_authenticate_set_realm(www_authenticate, AUTH_DOMAIN); belle_sip_header_www_authenticate_set_domain(www_authenticate, "sip:"AUTH_DOMAIN); belle_sip_header_www_authenticate_set_scheme(www_authenticate, "Digest"); belle_sip_header_www_authenticate_set_nonce(www_authenticate,nonce); belle_sip_message_add_header(BELLE_SIP_MESSAGE(response_msg), BELLE_SIP_HEADER(www_authenticate)); } else { belle_sip_header_authentication_info_t* authentication_info = belle_sip_header_authentication_info_new(); belle_sip_header_authentication_info_set_next_nonce(authentication_info, nonce); belle_sip_message_add_header(BELLE_SIP_MESSAGE(response_msg), BELLE_SIP_HEADER(authentication_info)); } belle_sip_server_transaction_send_response(trans,response_msg); } static void test_register_with_next_nonce(void) { belle_sip_listening_point_t *server_lp = belle_sip_stack_create_listening_point(stack,"0.0.0.0",bctbx_random()%20000 +1024,"TCP"); char nonce [NONCE_SIZE]; belle_sip_listener_t *server_listener; char listening_uri[256]; belle_sip_listener_callbacks_t cbs; belle_sip_random_token((nonce), sizeof(nonce)); cbs.process_dialog_terminated=NULL; cbs.process_io_error=NULL; cbs.process_request_event=(void (*)(void *user_ctx, const belle_sip_request_event_t *event))register_process_request_event; cbs.process_response_event=NULL; cbs.process_timeout=NULL; cbs.process_transaction_terminated=NULL; cbs.process_auth_requested=NULL; cbs.listener_destroyed=NULL; server_listener=belle_sip_listener_create_from_callbacks(&cbs,nonce); belle_sip_provider_add_sip_listener(prov,server_listener); belle_sip_provider_add_listening_point(prov,server_lp); snprintf(listening_uri,sizeof(listening_uri), "127.0.0.1:%i;transport=tcp",belle_sip_listening_point_get_port(server_lp)); reuse_nonce_base(listening_uri); belle_sip_provider_remove_sip_listener(prov, server_listener); belle_sip_provider_remove_listening_point(prov, server_lp); } static void test_channel_load_process_response_event(void* user_ctx, const belle_sip_response_event_t *event){ if (!BC_ASSERT_PTR_NOT_NULL(belle_sip_response_event_get_response(event))) { return; } belle_sip_message("process_response_event [%i] [%s] number [%i]" ,belle_sip_response_get_status_code(belle_sip_response_event_get_response(event)) ,belle_sip_response_get_reason_phrase(belle_sip_response_event_get_response(event)) ,*(int*)user_ctx); (*(int*)user_ctx) ++; return; } #define NUMBER_OF_TRANS 20 static void test_channel_load(void){ belle_sip_listening_point_t *lp=belle_sip_provider_get_listening_point(prov,"TCP"); BC_ASSERT_PTR_NOT_NULL(lp); if (lp) { belle_sip_request_t *req; belle_sip_client_transaction_t *tr[NUMBER_OF_TRANS]; char identity[128]; char uri[128]; char tmp[4]; snprintf(identity,sizeof(identity),"Tester ",belle_sip_random_token(tmp, sizeof(tmp)),auth_domain); snprintf(uri,sizeof(uri),"sip:%s;transport=tcp",auth_domain); belle_sip_listener_callbacks_t listener_callbacks; listener_callbacks.process_dialog_terminated = NULL; listener_callbacks.process_io_error = NULL; listener_callbacks.process_request_event = NULL; listener_callbacks.process_response_event = test_channel_load_process_response_event; listener_callbacks.process_timeout = NULL; listener_callbacks.process_transaction_terminated = NULL; listener_callbacks.process_auth_requested = NULL; listener_callbacks.listener_destroyed = NULL; int number_of_response=0; int i; belle_sip_listener_t *listener = belle_sip_listener_create_from_callbacks(&listener_callbacks, (void *)&number_of_response); belle_sip_provider_add_sip_listener(prov,listener); for (i = 0; i next_hop); belle_sip_socket_t sock = belle_sip_source_get_socket((belle_sip_source_t*)chan); size_t sendbuff = 50; int err = bctbx_setsockopt((bctbx_socket_t)sock, SOL_SOCKET, SO_SNDBUF, &sendbuff, sizeof(sendbuff)); if (err != 0){ belle_sip_error("bctbx_setsockopt SOL_SOCKET failed: [%s]",belle_sip_get_socket_error_string()); } for (i = 1; i ",belle_sip_random_token(tmp, sizeof(tmp)),test_domain); snprintf(uri,sizeof(uri),"sip:%s",auth_domain); req1 = belle_sip_request_create( belle_sip_uri_parse(uri), "REGISTER", belle_sip_provider_create_call_id(prov), belle_sip_header_cseq_create(20,"REGISTER"), belle_sip_header_from_create2(identity,BELLE_SIP_RANDOM_TAG), belle_sip_header_to_create2(identity,NULL), belle_sip_header_via_new(), 70); belle_sip_message_add_header(BELLE_SIP_MESSAGE(req1),BELLE_SIP_HEADER(belle_sip_header_expires_create(60))); belle_sip_message_add_header(BELLE_SIP_MESSAGE(req1),BELLE_SIP_HEADER(belle_sip_header_contact_new())); tr1 = belle_sip_provider_create_client_transaction(prov, req1); belle_sip_object_ref(tr1); belle_sip_client_transaction_send_request(tr1); snprintf(uri,sizeof(uri),"sip:%s",test_domain); req2 = belle_sip_request_create( belle_sip_uri_parse(uri), "REGISTER", belle_sip_provider_create_call_id(prov), belle_sip_header_cseq_create(20,"REGISTER"), belle_sip_header_from_create2(identity,BELLE_SIP_RANDOM_TAG), belle_sip_header_to_create2(identity,NULL), belle_sip_header_via_new(), 70); belle_sip_message_add_header(BELLE_SIP_MESSAGE(req2),BELLE_SIP_HEADER(belle_sip_header_expires_create(60))); belle_sip_message_add_header(BELLE_SIP_MESSAGE(req2),BELLE_SIP_HEADER(belle_sip_header_contact_new())); tr2 = belle_sip_provider_create_client_transaction(prov, req2); belle_sip_object_ref(tr2); belle_sip_client_transaction_send_request(tr2); for (int j=0; j < 10 && number_of_response < 1; j++) { belle_sip_stack_sleep(stack, 500); } belle_sip_channel_t *chan1 = belle_sip_provider_get_channel(prov,tr1->next_hop); belle_sip_object_ref(chan1); belle_sip_channel_t *chan2 = belle_sip_provider_get_channel(prov,tr2->next_hop); belle_sip_object_ref(chan2); BC_ASSERT_PTR_NOT_EQUAL(chan1, chan2); belle_sip_socket_t sock1 = belle_sip_source_get_socket((belle_sip_source_t*)chan1); belle_sip_socket_t sock2 = belle_sip_source_get_socket((belle_sip_source_t*)chan2); if (port_mode == BELLE_SIP_LISTENING_POINT_DONT_BIND) { BC_ASSERT_NOT_EQUAL((int)sock1, (int)sock2,int,"%d"); BC_ASSERT_EQUAL(belle_sip_listening_point_get_port(new_lp),BELLE_SIP_LISTENING_POINT_DONT_BIND, int, "%d"); int chan1_local_port, chan2_local_port; char socket_local_port[8]; struct sockaddr_storage laddr; memset(&laddr, 0, sizeof(laddr)); socklen_t lslen=sizeof(laddr); bctbx_getsockname(sock1,(struct sockaddr*)&laddr,&lslen); bctbx_getnameinfo((struct sockaddr*)&laddr,lslen,NULL,0,socket_local_port,sizeof(socket_local_port),NI_NUMERICSERV); BC_ASSERT_PTR_NOT_NULL(belle_sip_channel_get_local_address(chan1, &chan1_local_port)); BC_ASSERT_EQUAL(chan1_local_port, atoi(socket_local_port), int, "%d"); BC_ASSERT_PTR_NOT_NULL(belle_sip_channel_get_local_address(chan2, &chan2_local_port)); BC_ASSERT_NOT_EQUAL(chan1_local_port, chan2_local_port, int, "%d"); } else if (port_mode > 0 || port_mode == BELLE_SIP_LISTENING_POINT_RANDOM_PORT ) { BC_ASSERT_EQUAL((int)sock1, (int)sock2,int,"%d"); } else BC_FAIL("Unsupported port mode"); BC_ASSERT_EQUAL(number_of_response,2,int,"%d"); belle_sip_stack_set_tx_delay(stack,500); tr3 = belle_sip_provider_create_client_transaction(prov, req1); belle_sip_object_ref(tr3); belle_sip_client_transaction_send_request(tr3); tr4 = belle_sip_provider_create_client_transaction(prov, req2); belle_sip_object_ref(tr4); belle_sip_client_transaction_send_request(tr4); belle_sip_channel_t *chan3 = belle_sip_provider_get_channel(prov,tr3->next_hop); belle_sip_channel_t *chan4 = belle_sip_provider_get_channel(prov,tr4->next_hop); BC_ASSERT_PTR_EQUAL(chan1, chan3); BC_ASSERT_PTR_EQUAL(chan2, chan4); BC_ASSERT_EQUAL((int)sock1, (int)belle_sip_source_get_socket((belle_sip_source_t*)chan3),int,"%d"); BC_ASSERT_EQUAL((int)sock2, (int)belle_sip_source_get_socket((belle_sip_source_t*)chan4),int,"%d"); bctbx_socket_close(sock1); belle_sip_stack_sleep(stack, 2000); if (port_mode == BELLE_SIP_LISTENING_POINT_DONT_BIND) { //only channel 1 is affected BC_ASSERT_EQUAL(belle_sip_channel_get_state(chan1), BELLE_SIP_CHANNEL_ERROR, belle_sip_channel_state_t, "%d"); BC_ASSERT_EQUAL(belle_sip_channel_get_state(chan2), BELLE_SIP_CHANNEL_READY, belle_sip_channel_state_t, "%d"); BC_ASSERT_EQUAL(number_of_response,2+1,int,"%d"); } else if (port_mode > 0 || port_mode == BELLE_SIP_LISTENING_POINT_RANDOM_PORT ) { BC_ASSERT_EQUAL(belle_sip_channel_get_state(chan1), BELLE_SIP_CHANNEL_ERROR, belle_sip_channel_state_t, "%d"); BC_ASSERT_EQUAL(belle_sip_channel_get_state(chan2), BELLE_SIP_CHANNEL_ERROR, belle_sip_channel_state_t, "%d"); BC_ASSERT_EQUAL(number_of_response,2,int,"%d"); } else BC_FAIL("Unsupported port mode"); belle_sip_object_unref(chan1); belle_sip_object_unref(chan2); belle_sip_provider_remove_sip_listener(prov,listener); belle_sip_provider_remove_listening_point(prov, new_lp); belle_sip_provider_add_listening_point(prov, old_lp); } } static void udp_single_socket(void) { udp_socket(BELLE_SIP_LISTENING_POINT_RANDOM_PORT); } static void udp_multiple_socket(void) { udp_socket(BELLE_SIP_LISTENING_POINT_DONT_BIND); } test_t register_tests[] = { TEST_NO_TAG("Stateful UDP", stateful_register_udp), TEST_NO_TAG("Stateful UDP with keep-alive", stateful_register_udp_with_keep_alive), TEST_NO_TAG("Stateful UDP with network delay", stateful_register_udp_delayed), TEST_NO_TAG("Stateful UDP with send error", stateful_register_udp_with_send_error), TEST_NO_TAG("Stateful UDP with outbound proxy", stateful_register_udp_with_outbound_proxy), TEST_NO_TAG("Stateful TCP", stateful_register_tcp), TEST_NO_TAG("Stateful TLS", stateful_register_tls), TEST_NO_TAG("Stateful TLS with wrong cname", stateful_register_tls_with_wrong_cname), TEST_NO_TAG("Stateful TLS with http proxy", stateful_register_tls_with_http_proxy), TEST_NO_TAG("Stateful TLS with wrong http proxy", stateful_register_tls_with_wrong_http_proxy), TEST_NO_TAG("Stateless UDP", stateless_register_udp), TEST_NO_TAG("Stateless TCP", stateless_register_tcp), TEST_NO_TAG("Stateless TLS", stateless_register_tls), TEST_NO_TAG("Bad TCP request", test_bad_request), TEST_NO_TAG("Authenticate", test_register_authenticate), TEST_NO_TAG("TLS client cert authentication", test_register_client_authenticated), TEST_NO_TAG("TLS client cert bad ciphersuites", test_register_client_bad_ciphersuites), TEST_NO_TAG("Channel inactive", test_register_channel_inactive), TEST_NO_TAG("Channel moving to error test and cleaned", test_channel_moving_to_error_and_cleaned), TEST_NO_TAG("TCP connection failure", test_connection_failure), TEST_NO_TAG("TCP connection too long", test_connection_too_long_tcp), TEST_NO_TAG("TLS connection too long", test_connection_too_long_tls), TEST_NO_TAG("TLS connection to TCP server", test_tls_to_tcp), TEST_NO_TAG("Register with DNS SRV failover TCP", register_dns_srv_tcp), TEST_NO_TAG("Register with DNS SRV failover TLS", register_dns_srv_tls), TEST_NO_TAG("Register with DNS SRV failover TLS with http proxy", register_dns_srv_tls_with_http_proxy), TEST_NO_TAG("Register with DNS load-balancing", register_dns_load_balancing), TEST_NO_TAG("Nonce reutilization", reuse_nonce), TEST_NO_TAG("Next Nonce", test_register_with_next_nonce), TEST_NO_TAG("Channel load", test_channel_load), TEST_NO_TAG("UDP multiple channels single socket", udp_single_socket), TEST_NO_TAG("UDP multiple channels multiple sockets", udp_multiple_socket) }; test_suite_t register_test_suite = {"Register", register_before_all, register_after_all, NULL, NULL, sizeof(register_tests) / sizeof(register_tests[0]), register_tests}; belle-sip-5.2.0+dfsg/tester/belle_sip_resolver_tester.c000066400000000000000000001307361434613136500232500ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "belle-sip/belle-sip.h" #include "belle_sip_internal.h" #include "belle_sip_tester.h" #define IPV4_SIP_DOMAIN "sip.linphone.org" #define IPV4_SIP_IP "91.121.209.194" #define IPV4_CNAME "stun.linphone.org" #define IPV4_CNAME_IP "54.37.202.229" #define IPV4_SIP_BAD_DOMAIN "dummy.linphone.org" #define IPV4_MULTIRES_DOMAIN "yahoo.fr" /* sip2.linphone.org has an IPv6 and an IPv4 IP*/ #define IPV6_SIP_DOMAIN "sip2.linphone.org" #define IPV6_SIP_IP "2001:41d0:2:14b0::1" #define IPV6_SIP_IPV4 "88.191.250.2" #define SRV_DOMAIN "linphone.org" #define SIP_PORT 5060 typedef struct endpoint { belle_sip_stack_t* stack; belle_sip_resolver_context_t *resolver_ctx; int resolve_done; int resolve_ko; bctbx_list_t *srv_list; belle_sip_resolver_results_t *results; const struct addrinfo *ai_list; } endpoint_t; static unsigned int wait_for(belle_sip_stack_t *stack, int *current_value, int expected_value, int timeout) { #define ITER 1 uint64_t begin, end; begin = belle_sip_time_ms(); end = begin + timeout; while ((*current_value != expected_value) && (belle_sip_time_ms() < end)) { if (stack) belle_sip_stack_sleep(stack, ITER); } if (*current_value != expected_value) return FALSE; else return TRUE; } static void destroy_endpoint_stack(endpoint_t *endpoint) { if (endpoint->stack != NULL) { belle_sip_stack_sleep(endpoint->stack, 1); belle_sip_object_unref(endpoint->stack); endpoint->stack=NULL; } } static void init_endpoint_stack(endpoint_t *endpoint) { destroy_endpoint_stack(endpoint); endpoint->stack = belle_sip_stack_new(NULL); } static endpoint_t* create_endpoint(void) { endpoint_t* endpoint; endpoint = belle_sip_new0(endpoint_t); init_endpoint_stack(endpoint); return endpoint; } static void reset_endpoint(endpoint_t *endpoint) { endpoint->resolver_ctx = 0; endpoint->resolve_done = 0; endpoint->resolve_ko = 0; if (endpoint->results) { belle_sip_object_unref(endpoint->results); endpoint->results = NULL; } endpoint->ai_list = NULL; if (endpoint->srv_list){ bctbx_list_free_with_data(endpoint->srv_list, belle_sip_object_unref); endpoint->srv_list = NULL; } } static void destroy_endpoint(endpoint_t *endpoint) { reset_endpoint(endpoint); destroy_endpoint_stack(endpoint); belle_sip_free(endpoint); belle_sip_uninit_sockets(); } static void a_resolve_done(void *data, belle_sip_resolver_results_t *results) { endpoint_t *client = (endpoint_t *)data; client->resolve_done = 1; belle_sip_object_ref(results); client->results = results; if (belle_sip_resolver_results_get_addrinfos(results)) { client->ai_list = belle_sip_resolver_results_get_addrinfos(results); client->resolve_done = 1; } else { client->resolve_ko = 1; } } static void srv_resolve_done(void *data, const char *name, belle_sip_list_t *srv_list, uint32_t ttl) { endpoint_t *client = (endpoint_t *)data; BELLESIP_UNUSED(name); client->resolve_done = 1; if (srv_list) { client->srv_list = srv_list; client->resolve_done = 1; } else client->resolve_ko = 1; } /* Successful IPv4 A query */ static void ipv4_a_query_engine(unsigned char dns_engine) { struct addrinfo *ai; int timeout; endpoint_t *client = create_endpoint(); if (!BC_ASSERT_PTR_NOT_NULL(client)) return; belle_sip_stack_set_dns_engine(client->stack, dns_engine); timeout = belle_sip_stack_get_dns_timeout(client->stack); client->resolver_ctx = belle_sip_stack_resolve_a(client->stack, IPV4_SIP_DOMAIN, SIP_PORT, AF_INET, a_resolve_done, client); BC_ASSERT_PTR_NOT_NULL(client->resolver_ctx); BC_ASSERT_TRUE(wait_for(client->stack, &client->resolve_done, 1, timeout)); BC_ASSERT_PTR_NOT_NULL(client->ai_list); if (client->ai_list) { struct sockaddr_in *sock_in = (struct sockaddr_in *)client->ai_list->ai_addr; int ntohsi = (int)ntohs(sock_in->sin_port); BC_ASSERT_EQUAL(ntohsi, SIP_PORT, int, "%d"); ai = bctbx_ip_address_to_addrinfo(AF_INET, SOCK_STREAM, IPV4_SIP_IP, SIP_PORT); if (ai) { BC_ASSERT_EQUAL(sock_in->sin_addr.s_addr, ((struct sockaddr_in *)ai->ai_addr)->sin_addr.s_addr, int, "%d"); bctbx_freeaddrinfo(ai); } } destroy_endpoint(client); } static void ipv4_a_query(void) { ipv4_a_query_engine(BELLE_SIP_DNS_DNS_C); #ifdef HAVE_DNS_SERVICE ipv4_a_query_engine(BELLE_SIP_DNS_APPLE_DNS_SERVICE); #endif /* HAVE_DNS_SERVICE */ } /* Cancel A query */ static void a_query_cancelled_engine(unsigned char dns_engine, bool_t destroy_stack) { int timeout; endpoint_t *client = create_endpoint(); int i,dummy=0; /* First run a successfull query, to the result is in the system cache */ if (!BC_ASSERT_PTR_NOT_NULL(client)) return; belle_sip_stack_set_dns_engine(client->stack, dns_engine); timeout = belle_sip_stack_get_dns_timeout(client->stack); client->resolver_ctx = belle_sip_stack_resolve_a(client->stack, IPV4_SIP_DOMAIN, SIP_PORT, AF_INET, a_resolve_done, client); BC_ASSERT_PTR_NOT_NULL(client->resolver_ctx); BC_ASSERT_TRUE(wait_for(client->stack, &client->resolve_done, 1, timeout)); BC_ASSERT_PTR_NOT_NULL(client->ai_list); /* Then run 50 times a query and cancel it(just to try some race conditions) */ for (i=0; i<50; i++) { reset_endpoint(client); client->resolver_ctx = belle_sip_stack_resolve_a(client->stack, IPV4_SIP_DOMAIN, SIP_PORT, AF_INET, a_resolve_done, client); BC_ASSERT_PTR_NOT_NULL(client->resolver_ctx); /* cancel the query (do it immediately otherwise the result might arrive before the cancel) */ belle_sip_resolver_context_cancel(client->resolver_ctx); BC_ASSERT_PTR_NULL(client->ai_list); if (destroy_stack == TRUE) { destroy_endpoint_stack(client); bctbx_sleep_ms(50); init_endpoint_stack(client); belle_sip_stack_set_dns_engine(client->stack, dns_engine); } else { /* wait a little (query result is already in the system cache so it shall be fast) to give the time a to potential answer to reach cancelled request */ wait_for(client->stack, &dummy, 1, 50); } BC_ASSERT_TRUE(client->resolve_done==0); BC_ASSERT_PTR_NULL(client->ai_list); } destroy_endpoint(client); } static void a_query_cancelled(void) { a_query_cancelled_engine(BELLE_SIP_DNS_DNS_C, FALSE); a_query_cancelled_engine(BELLE_SIP_DNS_DNS_C, TRUE); #ifdef HAVE_DNS_SERVICE belle_sip_object_inhibit_leak_detector(TRUE); // leak detector is not thread safe a_query_cancelled_engine(BELLE_SIP_DNS_APPLE_DNS_SERVICE, FALSE); a_query_cancelled_engine(BELLE_SIP_DNS_APPLE_DNS_SERVICE, TRUE); belle_sip_object_inhibit_leak_detector(FALSE); #endif /* HAVE_DNS_SERVICE */ } /* Cancel a SRV query */ static void srv_query_cancelled_engine(unsigned char dns_engine, bool_t destroy_stack) { int timeout; endpoint_t *client = create_endpoint(); int i,dummy=0; /* First run a successfull query, to the result is in the system cache */ if (!BC_ASSERT_PTR_NOT_NULL(client)) return; belle_sip_stack_set_dns_engine(client->stack, dns_engine); timeout = belle_sip_stack_get_dns_timeout(client->stack); client->resolver_ctx = belle_sip_stack_resolve_srv(client->stack, "sip", "udp", SRV_DOMAIN, srv_resolve_done, client); BC_ASSERT_PTR_NOT_NULL(client->resolver_ctx); BC_ASSERT_TRUE(wait_for(client->stack, &client->resolve_done, 1, timeout)); BC_ASSERT_PTR_NOT_NULL(client->srv_list); BC_ASSERT_NOT_EQUAL((unsigned int)belle_sip_list_size(client->srv_list), 0,unsigned int,"%u"); if (client->srv_list && (belle_sip_list_size(client->srv_list) > 0)) { belle_sip_dns_srv_t *result_srv = belle_sip_list_nth_data(client->srv_list, 0); BC_ASSERT_EQUAL(belle_sip_dns_srv_get_port(result_srv), SIP_PORT, int, "%d"); } /* Then run 50 times a query and cancel it(just to try some race conditions) */ for (i=0; i<50; i++) { reset_endpoint(client); client->resolver_ctx = belle_sip_stack_resolve_srv(client->stack, "sip", "udp", SRV_DOMAIN, srv_resolve_done, client); BC_ASSERT_PTR_NOT_NULL(client->resolver_ctx); /* cancel the query (do it immediately otherwise the result might arrive before the cancel) */ belle_sip_resolver_context_cancel(client->resolver_ctx); BC_ASSERT_TRUE(client->resolve_done==0); BC_ASSERT_PTR_NULL(client->srv_list); if (destroy_stack == TRUE) { destroy_endpoint_stack(client); bctbx_sleep_ms(50); init_endpoint_stack(client); belle_sip_stack_set_dns_engine(client->stack, dns_engine); } else { /* wait a little (query result is already in the system cache so it shall be fast) to give the time a to potential answer to reach cancelled request */ wait_for(client->stack, &dummy, 1, 50); } BC_ASSERT_EQUAL((unsigned int)belle_sip_list_size(client->srv_list), 0,unsigned int,"%u"); } destroy_endpoint(client); } static void srv_query_cancelled(void) { srv_query_cancelled_engine(BELLE_SIP_DNS_DNS_C, FALSE); srv_query_cancelled_engine(BELLE_SIP_DNS_DNS_C, TRUE); #ifdef HAVE_DNS_SERVICE belle_sip_object_inhibit_leak_detector(TRUE); // leak detector is not thread safe srv_query_cancelled_engine(BELLE_SIP_DNS_APPLE_DNS_SERVICE, FALSE); srv_query_cancelled_engine(BELLE_SIP_DNS_APPLE_DNS_SERVICE, TRUE); belle_sip_object_inhibit_leak_detector(FALSE); #endif /* HAVE_DNS_SERVICE */ } /* Cancel a SRV + A or AAAA query */ static void srv_a_query_cancelled_engine(unsigned char dns_engine, bool_t destroy_stack) { int timeout; endpoint_t *client = create_endpoint(); int i,dummy=0; /* First run a successfull query, to the result is in the system cache */ if (!BC_ASSERT_PTR_NOT_NULL(client)) return; belle_sip_stack_set_dns_engine(client->stack, dns_engine); timeout = belle_sip_stack_get_dns_timeout(client->stack); client->resolver_ctx = belle_sip_stack_resolve(client->stack, "sip", "udp", SRV_DOMAIN, SIP_PORT, AF_INET, a_resolve_done, client); BC_ASSERT_PTR_NOT_NULL(client->resolver_ctx); BC_ASSERT_TRUE(wait_for(client->stack, &client->resolve_done, 1, timeout)); BC_ASSERT_PTR_NOT_NULL(client->ai_list); /* Then run 50 times a query and cancel it(just to try some race conditions) */ for (i=0; i<50; i++) { reset_endpoint(client); client->resolver_ctx = belle_sip_stack_resolve(client->stack, "sip", "udp", SRV_DOMAIN, SIP_PORT, AF_INET, a_resolve_done, client); BC_ASSERT_PTR_NOT_NULL(client->resolver_ctx); /* cancel the query (do it immediately otherwise the result might arrive before the cancel) */ belle_sip_resolver_context_cancel(client->resolver_ctx); BC_ASSERT_TRUE(client->resolve_done==0); BC_ASSERT_PTR_NULL(client->ai_list); /* wait a little (query result is already in the system cache so it shall be fast) to give the time a to potential answer to reach cancelled request */ if (destroy_stack == TRUE) { destroy_endpoint_stack(client); bctbx_sleep_ms(50); init_endpoint_stack(client); belle_sip_stack_set_dns_engine(client->stack, dns_engine); } else { /* wait a little (query result is already in the system cache so it shall be fast) to give the time a to potential answer to reach cancelled request */ wait_for(client->stack, &dummy, 1, 50); } BC_ASSERT_PTR_NULL(client->ai_list); } destroy_endpoint(client); } static void srv_a_query_cancelled(void) { srv_a_query_cancelled_engine(BELLE_SIP_DNS_DNS_C, FALSE); srv_a_query_cancelled_engine(BELLE_SIP_DNS_DNS_C, TRUE); #ifdef HAVE_DNS_SERVICE belle_sip_object_inhibit_leak_detector(TRUE); // leak detector is not thread safe srv_a_query_cancelled_engine(BELLE_SIP_DNS_APPLE_DNS_SERVICE, FALSE); srv_a_query_cancelled_engine(BELLE_SIP_DNS_APPLE_DNS_SERVICE, TRUE); belle_sip_object_inhibit_leak_detector(FALSE); #endif /* HAVE_DNS_SERVICE */ } /* Cancel A+AAAA query */ static void aaaa_query_cancelled_engine(unsigned char dns_engine, bool_t destroy_stack) { int timeout; endpoint_t *client; int i,dummy=0; if (!belle_sip_tester_ipv6_available()){ belle_sip_warning("Test skipped, IPv6 connectivity not available."); return; } client = create_endpoint(); /* First run a successfull query, to the result is in the system cache */ if (!BC_ASSERT_PTR_NOT_NULL(client)) return; belle_sip_stack_set_dns_engine(client->stack, dns_engine); timeout = belle_sip_stack_get_dns_timeout(client->stack); client->resolver_ctx = belle_sip_stack_resolve_a(client->stack, IPV6_SIP_DOMAIN, SIP_PORT, AF_INET6, a_resolve_done, client); BC_ASSERT_PTR_NOT_NULL(client->resolver_ctx); BC_ASSERT_TRUE(wait_for(client->stack, &client->resolve_done, 1, timeout)); BC_ASSERT_PTR_NOT_NULL(client->ai_list); /* Then run 50 times a query and cancel it(just to try some race conditions) */ for (i=0; i<50; i++) { reset_endpoint(client); client->resolver_ctx = belle_sip_stack_resolve_a(client->stack, IPV6_SIP_DOMAIN, SIP_PORT, AF_INET6, a_resolve_done, client); BC_ASSERT_PTR_NOT_NULL(client->resolver_ctx); /* cancel the query (do it immediately otherwise the result might arrive before the cancel) */ belle_sip_resolver_context_cancel(client->resolver_ctx); BC_ASSERT_TRUE(client->resolve_done==0); BC_ASSERT_PTR_NULL(client->ai_list); if (destroy_stack == TRUE) { destroy_endpoint_stack(client); bctbx_sleep_ms(50); init_endpoint_stack(client); belle_sip_stack_set_dns_engine(client->stack, dns_engine); } else { /* wait a little (query result is already in the system cache so it shall be fast) to give the time a to potential answer to reach cancelled request */ wait_for(client->stack, &dummy, 1, 50); } BC_ASSERT_PTR_NULL(client->ai_list); } destroy_endpoint(client); } static void aaaa_query_cancelled(void) { aaaa_query_cancelled_engine(BELLE_SIP_DNS_DNS_C, FALSE); aaaa_query_cancelled_engine(BELLE_SIP_DNS_DNS_C, TRUE); #ifdef HAVE_DNS_SERVICE belle_sip_object_inhibit_leak_detector(TRUE); // leak detector is not thread safe aaaa_query_cancelled_engine(BELLE_SIP_DNS_APPLE_DNS_SERVICE, FALSE); aaaa_query_cancelled_engine(BELLE_SIP_DNS_APPLE_DNS_SERVICE, TRUE); belle_sip_object_inhibit_leak_detector(FALSE); #endif /* HAVE_DNS_SERVICE */ } /* Cancel A query during timeout*/ static void timeout_query_cancelled_engine(unsigned char dns_engine, bool_t destroy_stack) { endpoint_t *client = create_endpoint(); int i,dummy=0; if (!BC_ASSERT_PTR_NOT_NULL(client)) return; belle_sip_stack_set_dns_engine(client->stack, dns_engine); belle_sip_stack_set_dns_timeout(client->stack, 0); /* Then run 50 times a query and cancel it(just to try some race conditions) */ for (i=0; i<50; i++) { client->resolver_ctx = belle_sip_stack_resolve_a(client->stack, "toto.com", SIP_PORT, AF_INET, a_resolve_done, client); BC_ASSERT_PTR_NOT_NULL(client->resolver_ctx); /* cancel the query (do it immediately otherwise the result might arrive before the cancel) */ belle_sip_resolver_context_cancel(client->resolver_ctx); BC_ASSERT_TRUE(client->resolve_done==0); BC_ASSERT_PTR_NULL(client->ai_list); if (destroy_stack == TRUE) { destroy_endpoint_stack(client); bctbx_sleep_ms(50); init_endpoint_stack(client); belle_sip_stack_set_dns_engine(client->stack, dns_engine); } else { /* wait a little (query result is already in the system cache so it shall be fast) to give the time a to potential answer to reach cancelled request */ wait_for(client->stack, &dummy, 1, 50); } BC_ASSERT_PTR_NULL(client->ai_list); reset_endpoint(client); } destroy_endpoint(client); } static void timeout_query_cancelled(void) { timeout_query_cancelled_engine(BELLE_SIP_DNS_DNS_C, FALSE); timeout_query_cancelled_engine(BELLE_SIP_DNS_DNS_C, TRUE); #ifdef HAVE_DNS_SERVICE belle_sip_object_inhibit_leak_detector(TRUE); // leak detector is not thread safe timeout_query_cancelled_engine(BELLE_SIP_DNS_APPLE_DNS_SERVICE, FALSE); timeout_query_cancelled_engine(BELLE_SIP_DNS_APPLE_DNS_SERVICE, TRUE); belle_sip_object_inhibit_leak_detector(FALSE); #endif /* HAVE_DNS_SERVICE */ } /* Successful IPv4 A query to a CNAME*/ /*This tests the recursion of dns.c*/ static void ipv4_cname_a_query_engine(unsigned char dns_engine) { struct addrinfo *ai; int timeout; endpoint_t *client = create_endpoint(); if (!BC_ASSERT_PTR_NOT_NULL(client)) return; belle_sip_stack_set_dns_engine(client->stack, dns_engine); timeout = belle_sip_stack_get_dns_timeout(client->stack); client->resolver_ctx = belle_sip_stack_resolve_a(client->stack, IPV4_CNAME, SIP_PORT, AF_INET, a_resolve_done, client); BC_ASSERT_PTR_NOT_NULL(client->resolver_ctx); BC_ASSERT_TRUE(wait_for(client->stack, &client->resolve_done, 1, timeout)); BC_ASSERT_PTR_NOT_EQUAL(client->ai_list, NULL); if (client->ai_list) { struct sockaddr_in *sock_in = (struct sockaddr_in *)client->ai_list->ai_addr; int ntohsi = (int)ntohs(sock_in->sin_port); BC_ASSERT_EQUAL(ntohsi, SIP_PORT, int, "%d"); ai = bctbx_ip_address_to_addrinfo(AF_INET, SOCK_STREAM, IPV4_SIP_IP, SIP_PORT); if (ai) { BC_ASSERT_EQUAL(sock_in->sin_addr.s_addr, ((struct sockaddr_in *)ai->ai_addr)->sin_addr.s_addr, int, "%d"); bctbx_freeaddrinfo(ai); } } destroy_endpoint(client); } static void ipv4_cname_a_query(void) { ipv4_cname_a_query_engine(BELLE_SIP_DNS_DNS_C); #ifdef HAVE_DNS_SERVICE ipv4_cname_a_query_engine(BELLE_SIP_DNS_APPLE_DNS_SERVICE); #endif /* HAVE_DNS_SERVICE */ } static void local_query_engine(unsigned char dns_engine) { int timeout; endpoint_t *client = create_endpoint(); if (!BC_ASSERT_PTR_NOT_NULL(client)) return; belle_sip_stack_set_dns_engine(client->stack, dns_engine); timeout = belle_sip_stack_get_dns_timeout(client->stack); client->resolver_ctx = belle_sip_stack_resolve_a(client->stack, "localhost", SIP_PORT, AF_INET, a_resolve_done, client); BC_ASSERT_TRUE(wait_for(client->stack, &client->resolve_done, 1, timeout)); BC_ASSERT_PTR_NOT_EQUAL(client->ai_list, NULL); if (client->ai_list) { struct sockaddr_in *sock_in = (struct sockaddr_in *)client->ai_list->ai_addr; int ntohsi = (int)ntohs(sock_in->sin_port); BC_ASSERT_EQUAL(ntohsi, SIP_PORT, int, "%d"); } destroy_endpoint(client); } static void local_query(void) { local_query_engine(BELLE_SIP_DNS_DNS_C); #ifdef HAVE_DNS_SERVICE local_query_engine(BELLE_SIP_DNS_APPLE_DNS_SERVICE); #endif /* HAVE_DNS_SERVICE */ } /* Successful IPv4 A query with no result */ static void ipv4_a_query_no_result_engine(unsigned char dns_engine) { int timeout; endpoint_t *client = create_endpoint(); if (!BC_ASSERT_PTR_NOT_NULL(client)) return; belle_sip_stack_set_dns_engine(client->stack, dns_engine); timeout = belle_sip_stack_get_dns_timeout(client->stack); client->resolver_ctx = belle_sip_stack_resolve_a(client->stack, IPV4_SIP_BAD_DOMAIN, SIP_PORT, AF_INET, a_resolve_done, client); BC_ASSERT_PTR_NOT_NULL(client->resolver_ctx); BC_ASSERT_TRUE(wait_for(client->stack, &client->resolve_done, 1, timeout)); BC_ASSERT_PTR_EQUAL(client->ai_list, NULL); destroy_endpoint(client); } static void ipv4_a_query_no_result(void) { ipv4_a_query_no_result_engine(BELLE_SIP_DNS_DNS_C); #ifdef HAVE_DNS_SERVICE ipv4_a_query_no_result_engine(BELLE_SIP_DNS_APPLE_DNS_SERVICE); #endif /* HAVE_DNS_SERVICE */ } /* IPv4 A query send failure */ static void ipv4_a_query_send_failure_engine(unsigned char dns_engine) { endpoint_t *client = create_endpoint(); if (!BC_ASSERT_PTR_NOT_NULL(client)) return; belle_sip_stack_set_dns_engine(client->stack, dns_engine); belle_sip_stack_set_resolver_send_error(client->stack, -1); client->resolver_ctx = belle_sip_stack_resolve_a(client->stack, IPV4_SIP_DOMAIN, SIP_PORT, AF_INET, a_resolve_done, client); BC_ASSERT_PTR_NULL(client->resolver_ctx); belle_sip_stack_set_resolver_send_error(client->stack, 0); destroy_endpoint(client); } static void ipv4_a_query_send_failure(void) { ipv4_a_query_send_failure_engine(BELLE_SIP_DNS_DNS_C); #ifdef HAVE_DNS_SERVICE ipv4_a_query_send_failure_engine(BELLE_SIP_DNS_APPLE_DNS_SERVICE); #endif /* HAVE_DNS_SERVICE */ } /* IPv4 A query timeout */ static void ipv4_a_query_timeout_engine(unsigned char dns_engine) { endpoint_t *client = create_endpoint(); if (!BC_ASSERT_PTR_NOT_NULL(client)) return; belle_sip_stack_set_dns_engine(client->stack, dns_engine); belle_sip_stack_set_dns_timeout(client->stack, 0); client->resolver_ctx = belle_sip_stack_resolve_a(client->stack, "toto.com", SIP_PORT, AF_INET, a_resolve_done, client); BC_ASSERT_PTR_NOT_NULL(client->resolver_ctx); BC_ASSERT_TRUE(wait_for(client->stack, &client->resolve_done, 1, 2000)); BC_ASSERT_PTR_EQUAL(client->ai_list, NULL); BC_ASSERT_EQUAL(client->resolve_ko,1, int, "%d"); destroy_endpoint(client); } static void ipv4_a_query_timeout(void) { ipv4_a_query_timeout_engine(BELLE_SIP_DNS_DNS_C); #ifdef HAVE_DNS_SERVICE ipv4_a_query_timeout_engine(BELLE_SIP_DNS_APPLE_DNS_SERVICE); #endif /* HAVE_DNS_SERVICE */ } /* Successful IPv4 A query with multiple results */ static void ipv4_a_query_multiple_results_engine(unsigned char dns_engine) { int timeout; endpoint_t *client = create_endpoint(); if (!BC_ASSERT_PTR_NOT_NULL(client)) return; belle_sip_stack_set_dns_engine(client->stack, dns_engine); timeout = belle_sip_stack_get_dns_timeout(client->stack); client->resolver_ctx = belle_sip_stack_resolve_a(client->stack, IPV4_MULTIRES_DOMAIN, SIP_PORT, AF_INET, a_resolve_done, client); BC_ASSERT_PTR_NOT_NULL(client->resolver_ctx); BC_ASSERT_TRUE(wait_for(client->stack, &client->resolve_done, 1, timeout)); BC_ASSERT_PTR_NOT_EQUAL(client->ai_list, NULL); if (client->ai_list) { BC_ASSERT_PTR_NOT_NULL(client->ai_list->ai_next); } destroy_endpoint(client); } static void ipv4_a_query_multiple_results(void) { ipv4_a_query_multiple_results_engine(BELLE_SIP_DNS_DNS_C); #ifdef HAVE_DNS_SERVICE ipv4_a_query_multiple_results_engine(BELLE_SIP_DNS_APPLE_DNS_SERVICE); #endif /* HAVE_DNS_SERVICE */ } static void ipv4_a_query_with_v4mapped_results_engine(unsigned char dns_engine) { int timeout; endpoint_t *client; if (!belle_sip_tester_ipv6_available()){ belle_sip_warning("Test skipped, IPv6 connectivity not available."); return; } client = create_endpoint(); if (!BC_ASSERT_PTR_NOT_NULL(client)) return; belle_sip_stack_set_dns_engine(client->stack, dns_engine); timeout = belle_sip_stack_get_dns_timeout(client->stack); client->resolver_ctx = belle_sip_stack_resolve_a(client->stack, IPV4_SIP_DOMAIN, SIP_PORT, AF_INET6, a_resolve_done, client); BC_ASSERT_PTR_NOT_NULL(client->resolver_ctx); BC_ASSERT_TRUE(wait_for(client->stack, &client->resolve_done, 1, timeout)); BC_ASSERT_PTR_NOT_NULL(client->ai_list); destroy_endpoint(client); } static void ipv4_a_query_with_v4mapped_results(void) { ipv4_a_query_with_v4mapped_results_engine(BELLE_SIP_DNS_DNS_C); #ifdef HAVE_DNS_SERVICE ipv4_a_query_with_v4mapped_results_engine(BELLE_SIP_DNS_APPLE_DNS_SERVICE); #endif /* HAVE_DNS_SERVICE */ } /* Successful IPv6 AAAA query */ static void ipv6_aaaa_query_engine(unsigned char dns_engine) { struct addrinfo *ai; int timeout; endpoint_t *client; if (!belle_sip_tester_ipv6_available()){ belle_sip_warning("Test skipped, IPv6 connectivity not available."); return; } client = create_endpoint(); if (!BC_ASSERT_PTR_NOT_NULL(client)) return; belle_sip_stack_set_dns_engine(client->stack, dns_engine); timeout = belle_sip_stack_get_dns_timeout(client->stack); client->resolver_ctx = belle_sip_stack_resolve_a(client->stack, IPV6_SIP_DOMAIN, SIP_PORT, AF_INET6, a_resolve_done, client); BC_ASSERT_PTR_NOT_NULL(client->resolver_ctx); BC_ASSERT_TRUE(wait_for(client->stack, &client->resolve_done, 1, timeout)); BC_ASSERT_PTR_NOT_EQUAL(client->ai_list, NULL); if (client->ai_list) { struct addrinfo *next; struct sockaddr_in6 *sock_in6 = (struct sockaddr_in6 *)client->ai_list->ai_addr; int ntohsi = ntohs(sock_in6->sin6_port); BC_ASSERT_EQUAL(ntohsi, SIP_PORT, int, "%d"); /*the IPv6 address shall return first, and must be a real ipv6 address*/ BC_ASSERT_EQUAL(client->ai_list->ai_family,AF_INET6,int,"%d"); BC_ASSERT_FALSE(IN6_IS_ADDR_V4MAPPED(&sock_in6->sin6_addr)); ai = bctbx_ip_address_to_addrinfo(AF_INET6, SOCK_STREAM, IPV6_SIP_IP, SIP_PORT); BC_ASSERT_PTR_NOT_NULL(ai); if (ai) { struct in6_addr *ipv6_address = &((struct sockaddr_in6 *)ai->ai_addr)->sin6_addr; int i; for (i = 0; i < 8; i++) { BC_ASSERT_EQUAL(sock_in6->sin6_addr.s6_addr[i], ipv6_address->s6_addr[i], int, "%d"); } bctbx_freeaddrinfo(ai); } next=client->ai_list->ai_next; BC_ASSERT_PTR_NOT_NULL(next); if (next){ int ntohsi = ntohs(sock_in6->sin6_port); sock_in6 = (struct sockaddr_in6 *)next->ai_addr; BC_ASSERT_EQUAL(next->ai_family,AF_INET6,int,"%d"); BC_ASSERT_TRUE(IN6_IS_ADDR_V4MAPPED(&sock_in6->sin6_addr)); BC_ASSERT_EQUAL(ntohsi, SIP_PORT, int, "%d"); ai = bctbx_ip_address_to_addrinfo(AF_INET6, SOCK_STREAM, IPV6_SIP_IPV4, SIP_PORT); BC_ASSERT_PTR_NOT_NULL(ai); if (ai) { struct in6_addr *ipv6_address = &((struct sockaddr_in6 *)ai->ai_addr)->sin6_addr; int i; for (i = 0; i < 8; i++) { BC_ASSERT_EQUAL(sock_in6->sin6_addr.s6_addr[i], ipv6_address->s6_addr[i], int, "%d"); } bctbx_freeaddrinfo(ai); } } } destroy_endpoint(client); } static void ipv6_aaaa_query(void) { ipv6_aaaa_query_engine(BELLE_SIP_DNS_DNS_C); #ifdef HAVE_DNS_SERVICE ipv6_aaaa_query_engine(BELLE_SIP_DNS_APPLE_DNS_SERVICE); #endif /* HAVE_DNS_SERVICE */ } /* Successful SRV query */ static void srv_query_engine(unsigned char dns_engine) { int timeout; endpoint_t *client = create_endpoint(); if (!BC_ASSERT_PTR_NOT_NULL(client)) return; belle_sip_stack_set_dns_engine(client->stack, dns_engine); timeout = belle_sip_stack_get_dns_timeout(client->stack); client->resolver_ctx = belle_sip_stack_resolve_srv(client->stack, "sip", "udp", SRV_DOMAIN, srv_resolve_done, client); BC_ASSERT_PTR_NOT_NULL(client->resolver_ctx); BC_ASSERT_TRUE(wait_for(client->stack, &client->resolve_done, 1, timeout)); BC_ASSERT_PTR_NOT_NULL(client->srv_list); BC_ASSERT_NOT_EQUAL((unsigned int)belle_sip_list_size(client->srv_list), 0,unsigned int,"%u"); if (client->srv_list && (belle_sip_list_size(client->srv_list) > 0)) { belle_sip_dns_srv_t *result_srv = belle_sip_list_nth_data(client->srv_list, 0); BC_ASSERT_EQUAL(belle_sip_dns_srv_get_port(result_srv), SIP_PORT, int, "%d"); } destroy_endpoint(client); } static void srv_query(void) { srv_query_engine(BELLE_SIP_DNS_DNS_C); #ifdef HAVE_DNS_SERVICE srv_query_engine(BELLE_SIP_DNS_APPLE_DNS_SERVICE); #endif /* HAVE_DNS_SERVICE */ } /* Successful SRV + A or AAAA queries */ static void srv_a_query_engine(unsigned char dns_engine) { int timeout; endpoint_t *client = create_endpoint(); if (!BC_ASSERT_PTR_NOT_NULL(client)) return; belle_sip_stack_set_dns_engine(client->stack, dns_engine); timeout = belle_sip_stack_get_dns_timeout(client->stack); client->resolver_ctx = belle_sip_stack_resolve(client->stack, "sip", "udp", SRV_DOMAIN, SIP_PORT, AF_INET, a_resolve_done, client); BC_ASSERT_PTR_NOT_NULL(client->resolver_ctx); BC_ASSERT_TRUE(wait_for(client->stack, &client->resolve_done, 1, timeout)); BC_ASSERT_PTR_NOT_EQUAL(client->ai_list, NULL); destroy_endpoint(client); } static void srv_a_query(void) { srv_a_query_engine(BELLE_SIP_DNS_DNS_C); #ifdef HAVE_DNS_SERVICE srv_a_query_engine(BELLE_SIP_DNS_APPLE_DNS_SERVICE); #endif /* HAVE_DNS_SERVICE */ } /* Successful SRV query with no result + A query */ static void srv_a_query_no_srv_result_engine(unsigned char dns_engine) { struct addrinfo *ai; int timeout; endpoint_t *client = create_endpoint(); if (!BC_ASSERT_PTR_NOT_NULL(client)) return; belle_sip_stack_set_dns_engine(client->stack, dns_engine); timeout = belle_sip_stack_get_dns_timeout(client->stack); client->resolver_ctx = belle_sip_stack_resolve(client->stack, "sip", "udp", IPV4_CNAME, SIP_PORT, AF_INET, a_resolve_done, client); BC_ASSERT_PTR_NOT_NULL(client->resolver_ctx); BC_ASSERT_TRUE(wait_for(client->stack, &client->resolve_done, 1, timeout)); BC_ASSERT_PTR_NOT_NULL(client->ai_list); if (client->ai_list) { struct sockaddr_in *sock_in = (struct sockaddr_in *)client->ai_list->ai_addr; int ntohsi = (int)ntohs(sock_in->sin_port); BC_ASSERT_EQUAL(ntohsi, SIP_PORT, int, "%d"); ai = bctbx_ip_address_to_addrinfo(AF_INET, SOCK_STREAM, IPV4_SIP_IP, SIP_PORT); if (ai) { BC_ASSERT_EQUAL(sock_in->sin_addr.s_addr, ((struct sockaddr_in *)ai->ai_addr)->sin_addr.s_addr, int, "%d"); bctbx_freeaddrinfo(ai); } } destroy_endpoint(client); } static void srv_a_query_no_srv_result(void) { srv_a_query_no_srv_result_engine(BELLE_SIP_DNS_DNS_C); #ifdef HAVE_DNS_SERVICE srv_a_query_no_srv_result_engine(BELLE_SIP_DNS_APPLE_DNS_SERVICE); #endif /* HAVE_DNS_SERVICE */ } static void non_working_srv_a_query_engine(unsigned char dns_engine) { endpoint_t *client = create_endpoint(); if (!BC_ASSERT_PTR_NOT_NULL(client)) return; belle_sip_stack_set_dns_engine(client->stack, dns_engine); belle_sip_stack_simulate_non_working_srv(client->stack, TRUE); client->resolver_ctx = belle_sip_stack_resolve(client->stack, "sip", "udp", SRV_DOMAIN, SIP_PORT, AF_INET, a_resolve_done, client); BC_ASSERT_PTR_NOT_NULL(client->resolver_ctx); /* the results should arrive before the normal timeout (10s).*/ BC_ASSERT_TRUE(wait_for(client->stack, &client->resolve_done, 1, 5000)); BC_ASSERT_PTR_NOT_EQUAL(client->ai_list, NULL); destroy_endpoint(client); } static void non_working_srv_a_query(void) { non_working_srv_a_query_engine(BELLE_SIP_DNS_DNS_C); #ifdef HAVE_DNS_SERVICE non_working_srv_a_query_engine(BELLE_SIP_DNS_APPLE_DNS_SERVICE); #endif /* HAVE_DNS_SERVICE */ } static void local_full_query_engine(unsigned char dns_engine) { int timeout; endpoint_t *client = create_endpoint(); if (!BC_ASSERT_PTR_NOT_NULL(client)) return; belle_sip_stack_set_dns_engine(client->stack, dns_engine); timeout = belle_sip_stack_get_dns_timeout(client->stack); client->resolver_ctx = belle_sip_stack_resolve(client->stack, "sip", "tcp", "localhost", SIP_PORT, AF_INET, a_resolve_done, client); BC_ASSERT_PTR_NOT_NULL(client->resolver_ctx); BC_ASSERT_TRUE(wait_for(client->stack, &client->resolve_done, 1, timeout)); BC_ASSERT_PTR_NOT_EQUAL(client->ai_list, NULL); if (client->ai_list) { struct sockaddr_in *sock_in = (struct sockaddr_in *)client->ai_list->ai_addr; int ntohsi = (int)ntohs(sock_in->sin_port); BC_ASSERT_EQUAL(ntohsi, SIP_PORT, int, "%d"); } destroy_endpoint(client); } static void local_full_query(void) { local_full_query_engine(BELLE_SIP_DNS_DNS_C); #ifdef HAVE_DNS_SERVICE local_full_query_engine(BELLE_SIP_DNS_APPLE_DNS_SERVICE); #endif /* HAVE_DNS_SERVICE */ } /* No query needed because already resolved */ static void no_query_needed_engine(unsigned char dns_engine) { struct addrinfo *ai; endpoint_t *client = create_endpoint(); if (!BC_ASSERT_PTR_NOT_NULL(client)) return; belle_sip_stack_set_dns_engine(client->stack, dns_engine); client->resolver_ctx = belle_sip_stack_resolve(client->stack, "sip", "udp", IPV4_SIP_IP, SIP_PORT, AF_INET, a_resolve_done, client); BC_ASSERT_PTR_NULL(client->resolver_ctx); BC_ASSERT_TRUE(client->resolve_done); BC_ASSERT_PTR_NOT_EQUAL(client->ai_list, NULL); if (client->ai_list) { struct sockaddr_in *sock_in = (struct sockaddr_in *)client->ai_list->ai_addr; int ntohsi = (int)ntohs(sock_in->sin_port); BC_ASSERT_EQUAL(ntohsi, SIP_PORT, int, "%d"); ai = bctbx_ip_address_to_addrinfo(AF_INET, SOCK_STREAM, IPV4_SIP_IP, SIP_PORT); if (ai) { BC_ASSERT_EQUAL(sock_in->sin_addr.s_addr, ((struct sockaddr_in *)ai->ai_addr)->sin_addr.s_addr, int, "%d"); bctbx_freeaddrinfo(ai); } } destroy_endpoint(client); } static void no_query_needed(void) { no_query_needed_engine(BELLE_SIP_DNS_DNS_C); #ifdef HAVE_DNS_SERVICE no_query_needed_engine(BELLE_SIP_DNS_APPLE_DNS_SERVICE); #endif /* HAVE_DNS_SERVICE */ } static void set_custom_resolv_conf(belle_sip_stack_t *stack, const char *ns[]){ char *resolv_file = bc_tester_file("tmp_resolv.conf"); FILE *f=fopen(resolv_file,"w"); BC_ASSERT_PTR_NOT_NULL(f); if (f){ int i; for (i=0; i<3; ++i){ if (ns[i]!=NULL){ fprintf(f,"nameserver %s\n",ns[i]); }else break; } fclose(f); } belle_sip_stack_set_dns_resolv_conf_file(stack, resolv_file); free(resolv_file); } static void _dns_fallback(const char *nameservers[], unsigned char dns_engine) { struct addrinfo *ai; int timeout; endpoint_t *client = create_endpoint(); if (!BC_ASSERT_PTR_NOT_NULL(client)) return; belle_sip_stack_set_dns_engine(client->stack, dns_engine); timeout = belle_sip_stack_get_dns_timeout(client->stack); set_custom_resolv_conf(client->stack,nameservers); client->resolver_ctx = belle_sip_stack_resolve_a(client->stack, IPV4_SIP_DOMAIN, SIP_PORT, AF_INET, a_resolve_done, client); BC_ASSERT_PTR_NOT_NULL(client->resolver_ctx); BC_ASSERT_TRUE(wait_for(client->stack, &client->resolve_done, 1, timeout)); BC_ASSERT_PTR_NOT_EQUAL(client->ai_list, NULL); if (client->ai_list) { struct sockaddr_in *sock_in = (struct sockaddr_in *)client->ai_list->ai_addr; int ntohsi = (int)ntohs(sock_in->sin_port); BC_ASSERT_EQUAL(ntohsi, SIP_PORT, int, "%d"); ai = bctbx_ip_address_to_addrinfo(AF_INET, SOCK_STREAM, IPV4_SIP_IP, SIP_PORT); if (ai) { BC_ASSERT_EQUAL(sock_in->sin_addr.s_addr, ((struct sockaddr_in *)ai->ai_addr)->sin_addr.s_addr, int, "%d"); bctbx_freeaddrinfo(ai); } } destroy_endpoint(client); } static void dns_fallback(void) { const char *nameservers[]={ "94.23.19.176", /*linphone.org ; this is not a name server, it will not respond*/ "8.8.8.8", /* public nameserver, should work*/ NULL }; _dns_fallback(nameservers,BELLE_SIP_DNS_DNS_C); #ifdef HAVE_DNS_SERVICE _dns_fallback(nameservers,BELLE_SIP_DNS_APPLE_DNS_SERVICE); #endif /* HAVE_DNS_SERVICE */ } static void dns_fallback_because_of_server_refused(void) { const char *nameservers[]={ "212.245.255.2", "8.8.8.8", /* public nameserver, should work*/ NULL }; _dns_fallback(nameservers,BELLE_SIP_DNS_DNS_C); #ifdef HAVE_DNS_SERVICE _dns_fallback(nameservers,BELLE_SIP_DNS_APPLE_DNS_SERVICE); #endif /* HAVE_DNS_SERVICE */ } static void dns_fallback_because_of_scope_link_ipv6(void) { const char *nameservers[]={ "fe80::fdc5:99ef:ac05:5c55%enp0s25", /* Scope link IPv6 name server that will not respond */ "8.8.8.8", /* public nameserver, should work*/ NULL }; _dns_fallback(nameservers,BELLE_SIP_DNS_DNS_C); #ifdef HAVE_DNS_SERVICE _dns_fallback(nameservers,BELLE_SIP_DNS_APPLE_DNS_SERVICE); #endif /* HAVE_DNS_SERVICE */ } static void dns_fallback_because_of_invalid_ipv6(void) { const char *nameservers[]={ "fe80::ba26:6cff:feb9:145c", /* Invalid IPv6 name server */ "8.8.8.8", /* public nameserver, should work*/ NULL }; _dns_fallback(nameservers,BELLE_SIP_DNS_DNS_C); #ifdef HAVE_DNS_SERVICE _dns_fallback(nameservers,BELLE_SIP_DNS_APPLE_DNS_SERVICE); #endif /* HAVE_DNS_SERVICE */ } static void ipv6_dns_server_engine(unsigned char dns_engine) { struct addrinfo *ai; int timeout; endpoint_t *client; const char *nameservers[]={ "2001:4860:4860::8888", NULL }; if (!belle_sip_tester_ipv6_available()){ belle_sip_warning("Test skipped, IPv6 connectivity not available."); return; } client = create_endpoint(); if (!BC_ASSERT_PTR_NOT_NULL(client)) return; belle_sip_stack_set_dns_engine(client->stack, dns_engine); timeout = belle_sip_stack_get_dns_timeout(client->stack); set_custom_resolv_conf(client->stack,nameservers); client->resolver_ctx = belle_sip_stack_resolve_a(client->stack, IPV4_SIP_DOMAIN, SIP_PORT, AF_INET, a_resolve_done, client); BC_ASSERT_PTR_NOT_NULL(client->resolver_ctx); BC_ASSERT_TRUE(wait_for(client->stack, &client->resolve_done, 1, timeout)); BC_ASSERT_PTR_NOT_NULL(client->ai_list); if (client->ai_list) { struct sockaddr_in *sock_in = (struct sockaddr_in *)client->ai_list->ai_addr; int ntohsi = (int)ntohs(sock_in->sin_port); BC_ASSERT_EQUAL(ntohsi, SIP_PORT, int, "%d"); ai = bctbx_ip_address_to_addrinfo(AF_INET, SOCK_STREAM, IPV4_SIP_IP, SIP_PORT); if (ai) { BC_ASSERT_EQUAL(sock_in->sin_addr.s_addr, ((struct sockaddr_in *)ai->ai_addr)->sin_addr.s_addr, int, "%d"); bctbx_freeaddrinfo(ai); } } destroy_endpoint(client); } static void ipv6_dns_server(void) { ipv6_dns_server_engine(BELLE_SIP_DNS_DNS_C); #ifdef HAVE_DNS_SERVICE ipv6_dns_server_engine(BELLE_SIP_DNS_APPLE_DNS_SERVICE); #endif /* HAVE_DNS_SERVICE */ } static void ipv4_and_ipv6_dns_server_engine(unsigned char dns_engine) { struct addrinfo *ai; int timeout; endpoint_t *client; const char *nameservers[]={ "8.8.8.8", "2a01:e00::2", NULL }; if (!belle_sip_tester_ipv6_available()){ belle_sip_warning("Test skipped, IPv6 connectivity not available."); return; } client = create_endpoint(); if (!BC_ASSERT_PTR_NOT_NULL(client)) return; belle_sip_stack_set_dns_engine(client->stack, dns_engine); timeout = belle_sip_stack_get_dns_timeout(client->stack); set_custom_resolv_conf(client->stack,nameservers); client->resolver_ctx = belle_sip_stack_resolve_a(client->stack, IPV4_SIP_DOMAIN, SIP_PORT, AF_INET, a_resolve_done, client); BC_ASSERT_PTR_NOT_NULL(client->resolver_ctx); BC_ASSERT_TRUE(wait_for(client->stack, &client->resolve_done, 1, timeout)); BC_ASSERT_PTR_NOT_EQUAL(client->ai_list, NULL); if (client->ai_list) { struct sockaddr_in *sock_in = (struct sockaddr_in *)client->ai_list->ai_addr; int ntohsi = (int)ntohs(sock_in->sin_port); BC_ASSERT_EQUAL(ntohsi, SIP_PORT, int, "%d"); ai = bctbx_ip_address_to_addrinfo(AF_INET, SOCK_STREAM, IPV4_SIP_IP, SIP_PORT); if (ai) { BC_ASSERT_EQUAL(sock_in->sin_addr.s_addr, ((struct sockaddr_in *)ai->ai_addr)->sin_addr.s_addr, int, "%d"); bctbx_freeaddrinfo(ai); } } destroy_endpoint(client); } static void ipv4_and_ipv6_dns_server(void) { ipv4_and_ipv6_dns_server_engine(BELLE_SIP_DNS_DNS_C); #ifdef HAVE_DNS_SERVICE ipv4_and_ipv6_dns_server_engine(BELLE_SIP_DNS_APPLE_DNS_SERVICE); #endif /* HAVE_DNS_SERVICE */ } #ifdef HAVE_MDNS static void mdns_register_callback(void *data, int error) { int *register_error = (int *)data; *register_error = error; } static void mdns_query_ipv4_or_ipv6(int family) { belle_sip_mdns_register_t *reg; endpoint_t *client; int register_error = -1; client = create_endpoint(); reg = belle_sip_mdns_register("sip", "tcp", "test.linphone.local", NULL, 5060, 10, 100, 3600, mdns_register_callback, ®ister_error); BC_ASSERT_PTR_NOT_NULL(reg); BC_ASSERT_TRUE(wait_for(client->stack, ®ister_error, 0, 5000)); client->resolver_ctx = belle_sip_stack_resolve(client->stack, "sip", "tcp", "test.linphone.local", 5060, family, a_resolve_done, client); BC_ASSERT_PTR_NOT_NULL(client->resolver_ctx); BC_ASSERT_TRUE(wait_for(client->stack, &client->resolve_done, 1, 10000)); BC_ASSERT_PTR_NOT_NULL(client->ai_list); belle_sip_mdns_unregister(reg); destroy_endpoint(client); } static void mdns_query(void) { mdns_query_ipv4_or_ipv6(AF_INET); } static void mdns_query_ipv6(void) { if (!belle_sip_tester_ipv6_available()){ belle_sip_warning("Test skipped, IPv6 connectivity not available."); return; } mdns_query_ipv4_or_ipv6(AF_INET6); } static void mdns_query_no_result(void) { endpoint_t *client; client = create_endpoint(); /* Wait some time to be sure that the services from last test are stopped */ wait_for(client->stack, &client->resolve_done, 1, 1000); client->resolver_ctx = belle_sip_stack_resolve(client->stack, "sip", "tcp", "test.linphone.local", 5060, AF_INET, a_resolve_done, client); BC_ASSERT_PTR_NOT_NULL(client->resolver_ctx); BC_ASSERT_TRUE(wait_for(client->stack, &client->resolve_done, 1, 10000)); BC_ASSERT_PTR_NULL(client->ai_list); destroy_endpoint(client); } static void mdns_query_multiple_result(void) { belle_sip_mdns_register_t *reg1, *reg2; endpoint_t *client; int register_error = -1; client = create_endpoint(); reg1 = belle_sip_mdns_register("sip", "tcp", "test.linphone.local", "Register1", 5060, 20, 100, 3600, mdns_register_callback, ®ister_error); BC_ASSERT_PTR_NOT_NULL(reg1); BC_ASSERT_TRUE(wait_for(client->stack, ®ister_error, 0, 5000)); register_error = -1; reg2 = belle_sip_mdns_register("sip", "tcp", "test.linphone.local", "Register2", 5070, 10, 100, 3600, mdns_register_callback, ®ister_error); BC_ASSERT_PTR_NOT_NULL(reg2); BC_ASSERT_TRUE(wait_for(client->stack, ®ister_error, 0, 5000)); client->resolver_ctx = belle_sip_stack_resolve(client->stack, "sip", "tcp", "test.linphone.local", 5060, AF_INET, a_resolve_done, client); BC_ASSERT_PTR_NOT_NULL(client->resolver_ctx); BC_ASSERT_TRUE(wait_for(client->stack, &client->resolve_done, 1, 10000)); BC_ASSERT_PTR_NOT_NULL(client->ai_list); if (client->ai_list) { /* We need to know if we have two results, if ai_list is != NULL then we have one so we check ai_next */ BC_ASSERT_PTR_NOT_NULL(client->ai_list->ai_next); /* The first adress should be the one registered on port 5070 since it has higher priority */ if (client->ai_list->ai_addr->sa_family == AF_INET) { struct sockaddr_in *sock_in = (struct sockaddr_in *)client->ai_list->ai_addr; int ntohsi = (int)ntohs(sock_in->sin_port); BC_ASSERT_EQUAL(ntohsi, 5070, int, "%d"); } else { struct sockaddr_in6 *sock_in = (struct sockaddr_in6 *)client->ai_list->ai_addr; int ntohsi = (int)ntohs(sock_in->sin6_port); BC_ASSERT_EQUAL(ntohsi, 5070, int, "%d"); } } belle_sip_mdns_unregister(reg1); belle_sip_mdns_unregister(reg2); destroy_endpoint(client); } static void mdns_queries(void) { belle_sip_mdns_register_t *reg; endpoint_t *client; int register_error = -1; client = create_endpoint(); /* Wait some time to be sure that the services from last test are stopped */ wait_for(client->stack, &client->resolve_done, 1, 1000); reg = belle_sip_mdns_register("sip", "tcp", "test.linphone.local", NULL, 5060, 10, 100, 3600, mdns_register_callback, ®ister_error); BC_ASSERT_PTR_NOT_NULL(reg); BC_ASSERT_TRUE(wait_for(client->stack, ®ister_error, 0, 5000)); client->resolver_ctx = belle_sip_stack_resolve(client->stack, "sip", "tcp", "test.linphone.local", 5060, AF_INET, a_resolve_done, client); BC_ASSERT_PTR_NOT_NULL(client->resolver_ctx); BC_ASSERT_TRUE(wait_for(client->stack, &client->resolve_done, 1, 10000)); BC_ASSERT_PTR_NOT_NULL(client->ai_list); reset_endpoint(client); wait_for(client->stack, &client->resolve_done, 1, 5000); // Wait 5 seconds client->resolver_ctx = belle_sip_stack_resolve(client->stack, "sip", "tcp", "test.linphone.local", 5060, AF_INET, a_resolve_done, client); BC_ASSERT_PTR_NOT_NULL(client->resolver_ctx); BC_ASSERT_TRUE(wait_for(client->stack, &client->resolve_done, 1, 10000)); BC_ASSERT_PTR_NOT_NULL(client->ai_list); belle_sip_mdns_unregister(reg); destroy_endpoint(client); } #endif test_t resolver_tests[] = { TEST_NO_TAG("A query (IPv4)", ipv4_a_query), TEST_NO_TAG("A query (IPv4) with CNAME", ipv4_cname_a_query), TEST_NO_TAG("A query (IPv4) with no result", ipv4_a_query_no_result), TEST_NO_TAG("A query (IPv4) with send failure", ipv4_a_query_send_failure), TEST_NO_TAG("A query (IPv4) with timeout", ipv4_a_query_timeout), TEST_NO_TAG("A query (IPv4) with multiple results", ipv4_a_query_multiple_results), TEST_NO_TAG("A query (IPv4) with AI_V4MAPPED results", ipv4_a_query_with_v4mapped_results), TEST_NO_TAG("Local query", local_query), TEST_NO_TAG("AAAA query (IPv6)", ipv6_aaaa_query), TEST_NO_TAG("SRV query", srv_query), TEST_NO_TAG("SRV + A query", srv_a_query), TEST_NO_TAG("SRV + A query with no SRV result", srv_a_query_no_srv_result), TEST_NO_TAG("Non working SRV + A query", non_working_srv_a_query), TEST_NO_TAG("Local SRV+A query", local_full_query), TEST_NO_TAG("No query needed", no_query_needed), TEST_NO_TAG("DNS fallback", dns_fallback), TEST_NO_TAG("DNS fallback because of server refused", dns_fallback_because_of_server_refused), TEST_NO_TAG("DNS fallback because of scope link IPv6", dns_fallback_because_of_scope_link_ipv6), TEST_NO_TAG("DNS fallback because of invalid IPv6", dns_fallback_because_of_invalid_ipv6), TEST_NO_TAG("IPv6 DNS server", ipv6_dns_server), TEST_NO_TAG("IPv4 and v6 DNS servers", ipv4_and_ipv6_dns_server), TEST_NO_TAG("A query (IPv4) cancelled", a_query_cancelled), TEST_NO_TAG("SRV query cancelled", srv_query_cancelled), TEST_NO_TAG("SRV + A query cancelled", srv_a_query_cancelled), TEST_NO_TAG("AAAA query cancelled", aaaa_query_cancelled), TEST_NO_TAG("A query in time out cancelled", timeout_query_cancelled), #ifdef HAVE_MDNS TEST_NO_TAG("MDNS query", mdns_query), TEST_NO_TAG("MDNS query with ipv6", mdns_query_ipv6), TEST_NO_TAG("MDNS query with no result", mdns_query_no_result), TEST_NO_TAG("MDNS query with multiple result", mdns_query_multiple_result), TEST_NO_TAG("MDNS multiple queries", mdns_queries) #endif }; test_suite_t resolver_test_suite = {"Resolver", NULL, NULL, belle_sip_tester_before_each, belle_sip_tester_after_each, sizeof(resolver_tests) / sizeof(resolver_tests[0]), resolver_tests}; belle-sip-5.2.0+dfsg/tester/belle_sip_tester.c000066400000000000000000000214071434613136500213210ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifdef HAVE_CONFIG_H #include "config.h" #endif #include "belle_sip_tester.h" #include #include #include "port.h" extern const char *test_domain; extern const char *auth_domain; static char* all_leaks_buffer = NULL; static const char *belle_sip_tester_root_ca_path = NULL; static belle_sip_object_pool_t *pool; static int leaked_objects_count; const char *userhostsfile = NULL; static int _belle_sip_tester_ipv6_available(void){ struct addrinfo *ai=bctbx_ip_address_to_addrinfo(AF_INET6,SOCK_STREAM,"2a01:e00::2",53); if (ai){ struct sockaddr_storage ss; struct addrinfo src; socklen_t slen=sizeof(ss); char localip[128]; int port=0; belle_sip_get_src_addr_for(ai->ai_addr,(socklen_t)ai->ai_addrlen,(struct sockaddr*) &ss,&slen,4444); src.ai_addr=(struct sockaddr*) &ss; src.ai_addrlen=slen; bctbx_addrinfo_to_ip_address(&src,localip, sizeof(localip),&port); bctbx_freeaddrinfo(ai); return strcmp(localip,"::1")!=0; } return FALSE; } static int ipv6_available=0; int belle_sip_tester_ipv6_available(void){ return ipv6_available; } const char * belle_sip_tester_get_root_ca_path(void) { return belle_sip_tester_root_ca_path; } void belle_sip_tester_set_root_ca_path(const char *root_ca_path) { belle_sip_tester_root_ca_path = root_ca_path; } static void log_handler(int lev, const char *fmt, va_list args) { #ifdef _WIN32 /* We must use stdio to avoid log formatting (for autocompletion etc.) */ vfprintf(lev == BELLE_SIP_LOG_ERROR ? stderr : stdout, fmt, args); fprintf(lev == BELLE_SIP_LOG_ERROR ? stderr : stdout, "\n"); #else va_list cap; va_copy(cap,args); vfprintf(lev == BELLE_SIP_LOG_ERROR ? stderr : stdout, fmt, cap); fprintf(lev == BELLE_SIP_LOG_ERROR ? stderr : stdout, "\n"); va_end(cap); #endif belle_sip_logv(BELLE_SIP_LOG_DOMAIN,lev, fmt, args); } int belle_sip_tester_set_log_file(const char *filename) { int res = 0; char *dir = bctbx_dirname(filename); char *base = bctbx_basename(filename); belle_sip_message("Redirecting traces to file [%s]", filename); bctbx_log_handler_t *filehandler = bctbx_create_file_log_handler(0, dir, base); if (filehandler == NULL) { res = -1; goto end; } bctbx_add_log_handler(filehandler); end: bctbx_free(dir); bctbx_free(base); return res; } int silent_arg_func(const char *arg) { belle_sip_set_log_level(BELLE_SIP_LOG_FATAL); bctbx_set_log_level(BCTBX_LOG_DOMAIN, BCTBX_LOG_FATAL); return 0; } int verbose_arg_func(const char *arg) { belle_sip_set_log_level(BELLE_SIP_LOG_DEBUG); bctbx_set_log_level(BCTBX_LOG_DOMAIN, BCTBX_LOG_DEBUG); return 0; } int logfile_arg_func(const char *arg) { bctbx_set_log_handler(NULL);/*remove default log handler*/ if (belle_sip_tester_set_log_file(arg) < 0) return -2; return 0; } void belle_sip_tester_init(void(*ftester_printf)(int level, const char *fmt, va_list args)) { bc_tester_set_silent_func(silent_arg_func); bc_tester_set_verbose_func(verbose_arg_func); bc_tester_set_logfile_func(logfile_arg_func); if (ftester_printf == NULL) ftester_printf = log_handler; bc_tester_init(ftester_printf, BELLE_SIP_LOG_MESSAGE, BELLE_SIP_LOG_ERROR, "tester_hosts"); belle_sip_init_sockets(); belle_sip_object_enable_marshal_check(TRUE); ipv6_available=_belle_sip_tester_ipv6_available(); bc_tester_add_suite(&cast_test_suite); bc_tester_add_suite(&sip_uri_test_suite); bc_tester_add_suite(&fast_sip_uri_test_suite); bc_tester_add_suite(&perf_sip_uri_test_suite); bc_tester_add_suite(&generic_uri_test_suite); bc_tester_add_suite(&headers_test_suite); bc_tester_add_suite(&core_test_suite); bc_tester_add_suite(&sdp_test_suite); bc_tester_add_suite(&resolver_test_suite); bc_tester_add_suite(&message_test_suite); bc_tester_add_suite(&authentication_helper_test_suite); bc_tester_add_suite(®ister_test_suite); bc_tester_add_suite(&dialog_test_suite); bc_tester_add_suite(&refresher_test_suite); bc_tester_add_suite(&http_test_suite); bc_tester_add_suite(&object_test_suite); } void belle_sip_tester_uninit(void) { belle_sip_object_unref(pool); belle_sip_uninit_sockets(); // show all leaks that happened during the test if (all_leaks_buffer) { bc_tester_printf(BELLE_SIP_LOG_MESSAGE, all_leaks_buffer); belle_sip_free(all_leaks_buffer); } bc_tester_uninit(); } void belle_sip_tester_before_each(void) { belle_sip_object_enable_leak_detector(TRUE); leaked_objects_count = belle_sip_object_get_object_count(); } void belle_sip_tester_after_each(void) { int leaked_objects = belle_sip_object_get_object_count() - leaked_objects_count; if (leaked_objects > 0) { char* format = belle_sip_strdup_printf("%d object%s leaked in suite [%s] test [%s], please fix that!", leaked_objects, leaked_objects>1?"s were":"was", bc_tester_current_suite_name(), bc_tester_current_test_name()); belle_sip_object_dump_active_objects(); belle_sip_object_flush_active_objects(); bc_tester_printf(BELLE_SIP_LOG_MESSAGE, format); belle_sip_error("%s", format); belle_sip_free(format); all_leaks_buffer = all_leaks_buffer ? belle_sip_strcat_printf(all_leaks_buffer, "\n%s", format) : belle_sip_strdup_printf("\n%s", format); } // prevent any future leaks { const char **tags = bc_tester_current_test_tags(); int leaks_expected = (tags && ((tags[0] && !strcmp(tags[0], "LeaksMemory")) || (tags[1] && !strcmp(tags[1], "LeaksMemory")))); // if the test is NOT marked as leaking memory and it actually is, we should make it fail if (!leaks_expected && leaked_objects > 0) { BC_FAIL("This test is leaking memory!"); // and reciprocally } else if (leaks_expected && leaked_objects == 0) { BC_FAIL("This test is not leaking anymore, please remove LeaksMemory tag!"); } } } void belle_sip_tester_set_dns_host_file(belle_sip_stack_t *stack){ if (userhostsfile){ belle_sip_stack_set_dns_user_hosts_file(stack, userhostsfile); }else{ char *default_hosts = bc_tester_res("tester_hosts"); if (default_hosts){ belle_sip_stack_set_dns_user_hosts_file(stack, default_hosts); bc_free(default_hosts); } } } #if !defined(__ANDROID__) && !defined(TARGET_OS_IPHONE) && !(defined(BELLE_SIP_WINDOWS_PHONE) || defined(BELLE_SIP_WINDOWS_UNIVERSAL)) static const char* belle_sip_helper = "\t\t\t--domain \n" "\t\t\t--auth-domain \n" "\t\t\t--root-ca \n" "\t\t\t--dns-hosts \n"; int main (int argc, char *argv[]) { int i; int ret; const char *root_ca_path = NULL; const char *env_domain=getenv("TEST_DOMAIN"); char *default_hosts = NULL; belle_sip_tester_init(NULL); #ifndef _WIN32 /*this hack doesn't work for argv[0]="c:\blablab\"*/ // this allows to launch liblinphone_tester from outside of tester directory if (strstr(argv[0], ".libs")) { int prefix_length = strstr(argv[0], ".libs") - argv[0] + 1; char *prefix = belle_sip_strdup_printf("%s%.*s", argv[0][0] == '/' ? "" : "./", prefix_length, argv[0]); // printf("Resource prefix set to %s\n", prefix); bc_tester_set_resource_dir_prefix(prefix); bc_tester_set_writable_dir_prefix(prefix); belle_sip_free(prefix); } #endif if (env_domain) { test_domain=env_domain; } bctbx_init_logger(TRUE); for(i=1;i0) { i += ret - 1; continue; } else if (ret<0) { bc_tester_helper(argv[0], belle_sip_helper); } return ret; } } belle_sip_tester_set_root_ca_path(root_ca_path); pool=belle_sip_object_pool_push(); ret = bc_tester_start(argv[0]); belle_sip_tester_uninit(); bctbx_uninit_logger(); if (default_hosts) bc_free(default_hosts); return ret; } #endif belle-sip-5.2.0+dfsg/tester/belle_sip_tester.h000066400000000000000000000046611434613136500213310ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef _BELLE_SIP_TESTER_H #define _BELLE_SIP_TESTER_H #include #include "belle-sip/belle-sip.h" #define MULTIPART_BOUNDARY "---------------------------14737809831466499882746641449" #ifdef __cplusplus extern "C" { #endif extern test_suite_t cast_test_suite; extern test_suite_t generic_uri_test_suite; extern test_suite_t sip_uri_test_suite; extern test_suite_t fast_sip_uri_test_suite; extern test_suite_t perf_sip_uri_test_suite; extern test_suite_t headers_test_suite; extern test_suite_t core_test_suite; extern test_suite_t sdp_test_suite; extern test_suite_t sdp_belr_test_suite; extern test_suite_t resolver_test_suite; extern test_suite_t message_test_suite; extern test_suite_t authentication_helper_test_suite; extern test_suite_t register_test_suite; extern test_suite_t dialog_test_suite; extern test_suite_t refresher_test_suite; extern test_suite_t http_test_suite; extern test_suite_t object_test_suite; extern const char* belle_sip_tester_client_cert; extern const char* belle_sip_tester_client_cert_fingerprint; extern const char* belle_sip_tester_private_key; extern const char* belle_sip_tester_private_key_passwd; int belle_sip_tester_ipv6_available(void); const char * belle_sip_tester_get_root_ca_path(void); void belle_sip_tester_set_root_ca_path(const char *root_ca_path); void belle_sip_tester_init(void(*ftester_printf)(int level, const char *fmt, va_list args)); void belle_sip_tester_uninit(void); void belle_sip_tester_before_each(void); void belle_sip_tester_after_each(void); int belle_sip_tester_set_log_file(const char *filename); void belle_sip_tester_set_dns_host_file(belle_sip_stack_t *stack); #ifdef __cplusplus }; #endif #endif /* _BELLE_SIP_TESTER_H */ belle-sip-5.2.0+dfsg/tester/belle_sip_tester_ios.m000066400000000000000000000040461434613136500222050ustar00rootroot00000000000000/* linphone library - modular sound and video processing and streaming Copyright (C) 2006-2014 Belledonne Communications, Grenoble This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #if TARGET_OS_IPHONE #import #import #include #include "belle_sip_tester.h" int g_argc; char** g_argv; void stop_handler(int sig) { return; } static void* _apple_main(void* data) { NSString *bundlePath = [[[NSBundle mainBundle] bundlePath] retain]; NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentPath = [[paths objectAtIndex:0] retain]; NSLog(@"Bundle path: %@", bundlePath); NSLog(@"Document path: %@", documentPath); bc_tester_set_resource_dir_prefix(bundlePath.UTF8String); bc_tester_set_writable_dir_prefix(documentPath.UTF8String); belle_sip_tester_init(NULL); bc_tester_start(NULL); belle_sip_tester_uninit(); [bundlePath release]; [documentPath release]; return NULL; } int main(int argc, char * argv[]) { pthread_t main_thread; g_argc=argc; g_argv=argv; pthread_create(&main_thread,NULL,_apple_main,NULL); NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; int value = UIApplicationMain(0, nil, nil, nil); [pool release]; return value; pthread_join(main_thread,NULL); return 0; } #endif // target IPHONE belle-sip-5.2.0+dfsg/tester/belle_sip_tester_windows.cpp000066400000000000000000000122231434613136500234270ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include #include "belle_sip_tester_windows.h" using namespace BelledonneCommunications::BelleSip::Tester; using namespace Platform; using namespace Windows::Foundation; using namespace Windows::Storage; using namespace Windows::System::Threading; #define MAX_TRACE_SIZE 2048 #define MAX_SUITE_NAME_SIZE 128 #define MAX_WRITABLE_DIR_SIZE 1024 static OutputTraceListener^ sTraceListener; static belle_sip_object_pool_t *pool; NativeTester^ NativeTester::_instance = ref new NativeTester(); static void nativeOutputTraceHandler(int lev, const char *fmt, va_list args) { if (sTraceListener) { wchar_t wstr[MAX_TRACE_SIZE]; std::string str; str.resize(MAX_TRACE_SIZE); vsnprintf((char *)str.c_str(), MAX_TRACE_SIZE, fmt, args); mbstowcs(wstr, str.c_str(), MAX_TRACE_SIZE - 1); String^ msg = ref new String(wstr); String^ l; switch (lev) { case BELLE_SIP_LOG_FATAL: case BELLE_SIP_LOG_ERROR: l = ref new String(L"Error"); break; case BELLE_SIP_LOG_WARNING: l = ref new String(L"Warning"); break; case BELLE_SIP_LOG_MESSAGE: l = ref new String(L"Message"); break; default: l = ref new String(L"Debug"); break; } sTraceListener->outputTrace(l, msg); } } static void belleSipNativeOutputTraceHandler(void *info, const char *domain, BctbxLogLevel lev, const char *fmt, va_list args) { nativeOutputTraceHandler((int)lev, fmt, args); } NativeTester::NativeTester() { } NativeTester::~NativeTester() { belle_sip_tester_uninit(); } void NativeTester::setOutputTraceListener(OutputTraceListener^ traceListener) { sTraceListener = traceListener; } void NativeTester::initialize(StorageFolder^ writableDirectory, Platform::Boolean ui) { if (ui) { belle_sip_tester_init(nativeOutputTraceHandler); } else { belle_sip_tester_init(NULL); belle_sip_set_log_level(BELLE_SIP_LOG_DEBUG); } belle_sip_tester_set_root_ca_path("Assets/rootca.pem"); pool = belle_sip_object_pool_push(); char writable_dir[MAX_WRITABLE_DIR_SIZE] = { 0 }; const wchar_t *wwritable_dir = writableDirectory->Path->Data(); wcstombs(writable_dir, wwritable_dir, sizeof(writable_dir)); bc_tester_set_writable_dir_prefix(writable_dir); bc_tester_set_resource_dir_prefix("Assets"); if (!ui) { char *xmlFile = bc_tester_file("BelleSipWindows10.xml"); char *args[] = { "--xml-file", xmlFile }; bc_tester_parse_args(2, args, 0); char *logFile = bc_tester_file("BelleSipWindows10.log"); belle_sip_tester_set_log_file(logFile); free(logFile); } } bool NativeTester::run(Platform::String^ suiteName, Platform::String^ caseName, Platform::Boolean verbose) { std::wstring all(L"ALL"); std::wstring wssuitename = suiteName->Data(); std::wstring wscasename = caseName->Data(); char csuitename[MAX_SUITE_NAME_SIZE] = { 0 }; char ccasename[MAX_SUITE_NAME_SIZE] = { 0 }; bctbx_log_handler_t *log_handler = bctbx_create_log_handler(belleSipNativeOutputTraceHandler, NULL, NULL); wcstombs(csuitename, wssuitename.c_str(), sizeof(csuitename)); wcstombs(ccasename, wscasename.c_str(), sizeof(ccasename)); if (verbose) { belle_sip_set_log_level(BELLE_SIP_LOG_DEBUG); } else { belle_sip_set_log_level(BELLE_SIP_LOG_ERROR); } bctbx_add_log_handler(log_handler); return bc_tester_run_tests(wssuitename == all ? 0 : csuitename, wscasename == all ? 0 : ccasename, NULL) != 0; } void NativeTester::runAllToXml() { auto workItem = ref new WorkItemHandler([this](IAsyncAction ^workItem) { bc_tester_start(NULL); bc_tester_uninit(); }); _asyncAction = ThreadPool::RunAsync(workItem); } unsigned int NativeTester::nbTestSuites() { return bc_tester_nb_suites(); } unsigned int NativeTester::nbTests(Platform::String^ suiteName) { std::wstring suitename = suiteName->Data(); char cname[MAX_SUITE_NAME_SIZE] = { 0 }; wcstombs(cname, suitename.c_str(), sizeof(cname)); return bc_tester_nb_tests(cname); } Platform::String^ NativeTester::testSuiteName(int index) { const char *cname = bc_tester_suite_name(index); wchar_t wcname[MAX_SUITE_NAME_SIZE]; mbstowcs(wcname, cname, sizeof(wcname)); return ref new String(wcname); } Platform::String^ NativeTester::testName(Platform::String^ suiteName, int testIndex) { std::wstring suitename = suiteName->Data(); char csuitename[MAX_SUITE_NAME_SIZE] = { 0 }; wcstombs(csuitename, suitename.c_str(), sizeof(csuitename)); const char *cname = bc_tester_test_name(csuitename, testIndex); wchar_t wcname[MAX_SUITE_NAME_SIZE]; mbstowcs(wcname, cname, sizeof(wcname)); return ref new String(wcname); } belle-sip-5.2.0+dfsg/tester/belle_sip_tester_windows.h000066400000000000000000000037301434613136500230770ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #pragma once #include "belle-sip/belle-sip.h" #include "belle_sip_tester.h" namespace BelledonneCommunications { namespace BelleSip { namespace Tester { public interface class OutputTraceListener { public: void outputTrace(Platform::String^ lev, Platform::String^ msg); }; public ref class NativeTester sealed { public: void setOutputTraceListener(OutputTraceListener^ traceListener); unsigned int nbTestSuites(); unsigned int nbTests(Platform::String^ suiteName); Platform::String^ testSuiteName(int index); Platform::String^ testName(Platform::String^ suiteName, int testIndex); void initialize(Windows::Storage::StorageFolder^ writableDirectory, Platform::Boolean ui); bool run(Platform::String^ suiteName, Platform::String^ caseName, Platform::Boolean verbose); void runAllToXml(); static property NativeTester^ Instance { NativeTester^ get() { return _instance; } } property Windows::Foundation::IAsyncAction^ AsyncAction { Windows::Foundation::IAsyncAction^ get() { return _asyncAction; } } private: NativeTester(); ~NativeTester(); static NativeTester^ _instance; Windows::Foundation::IAsyncAction^ _asyncAction; }; } } } belle-sip-5.2.0+dfsg/tester/belle_sip_uri_tester.c000066400000000000000000000020651434613136500221770ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "belle-sip/belle-sip.h" #include "belle_sip_tester.h" #include "belle_sip_internal.h" /*test body*/ #include "belle_sip_base_uri_tester.c" test_suite_t sip_uri_test_suite = {"SIP URI", NULL, NULL, belle_sip_tester_before_each, belle_sip_tester_after_each, sizeof(uri_tests) / sizeof(uri_tests[0]), uri_tests}; belle-sip-5.2.0+dfsg/tester/cast_test.c000066400000000000000000000043231434613136500177640ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "belle-sip/belle-sip.h" #include "belle_sip_tester.h" static void cast_test(void){ belle_sip_stack_t *stack=belle_sip_stack_new(NULL); belle_sip_listening_point_t *lp=belle_sip_stack_create_listening_point(stack,"0.0.0.0",7060,"UDP"); belle_sip_provider_t *provider; belle_sip_request_t *req=belle_sip_request_new(); belle_sip_response_t *resp=belle_sip_response_new(); belle_sip_message_t *msg; int tmp; BC_ASSERT_PTR_NOT_NULL(stack); BC_ASSERT_PTR_NOT_NULL(lp); provider=belle_sip_stack_create_provider(stack,lp); BC_ASSERT_PTR_NOT_NULL(provider); BC_ASSERT_PTR_NOT_NULL(req); BC_ASSERT_PTR_NOT_NULL(resp); belle_sip_message("Casting belle_sip_request_t to belle_sip_message_t"); msg=BELLE_SIP_MESSAGE(req); BC_ASSERT_PTR_NOT_NULL(msg); belle_sip_message("Ok."); belle_sip_message("Casting belle_sip_response_t to belle_sip_message_t"); msg=BELLE_SIP_MESSAGE(resp); BC_ASSERT_PTR_NOT_NULL(msg); belle_sip_message("Ok."); tmp=BELLE_SIP_IS_INSTANCE_OF(req,belle_sip_response_t); belle_sip_message("Casting belle_sip_request_t to belle_sip_response_t: %s",tmp ? "yes" : "no"); BC_ASSERT_EQUAL(tmp,0,int,"%d"); belle_sip_object_unref(req); belle_sip_object_unref(resp); belle_sip_object_unref(provider); belle_sip_object_unref(stack); } test_t cast_tests[] = { TEST_NO_TAG("Casting requests and responses", cast_test) }; test_suite_t cast_test_suite = {"Object inheritance", NULL, NULL, NULL, NULL, sizeof(cast_tests) / sizeof(cast_tests[0]), cast_tests}; belle-sip-5.2.0+dfsg/tester/certificates/000077500000000000000000000000001434613136500202725ustar00rootroot00000000000000belle-sip-5.2.0+dfsg/tester/certificates/openssl-client-cert.cnf000066400000000000000000000255271434613136500246670ustar00rootroot00000000000000# # OpenSSL example configuration file. # This is mostly being used for generation of certificate requests. # # This definition stops the following lines choking if HOME isn't # defined. HOME = . RANDFILE = $ENV::HOME/.rnd # Extra OBJECT IDENTIFIER info: #oid_file = $ENV::HOME/.oid oid_section = new_oids # To use this configuration file with the "-extfile" option of the # "openssl x509" utility, name here the section containing the # X.509v3 extensions to use: # extensions = # (Alternatively, use a configuration file that has only # X.509v3 extensions in its main [= default] section.) [ new_oids ] # We can add new OIDs in here for use by 'ca', 'req' and 'ts'. # Add a simple OID like this: # testoid1=1.2.3.4 # Or use config file substitution like this: # testoid2=${testoid1}.5.6 # Policies used by the TSA examples. tsa_policy1 = 1.2.3.4.1 tsa_policy2 = 1.2.3.4.5.6 tsa_policy3 = 1.2.3.4.5.7 #################################################################### [ ca ] default_ca = CA_default # The default ca section #################################################################### [ CA_default ] dir = ./root-ca # Where everything is kept certs = $dir/certs # Where the issued certs are kept crl_dir = $dir/crl # Where the issued crl are kept database = $dir/index.txt # database index file. #unique_subject = no # Set to 'no' to allow creation of # several ctificates with same subject. new_certs_dir = $dir/newcerts # default place for new certs. certificate = $dir/cacert.pem # The CA certificate serial = $dir/serial # The current serial number crlnumber = $dir/crlnumber # the current crl number # must be commented out to leave a V1 CRL crl = $dir/crl.pem # The current CRL private_key = $dir/private/cakey.pem# The private key RANDFILE = $dir/private/.rand # private random number file x509_extensions = usr_cert # The extentions to add to the cert # Comment out the following two lines for the "traditional" # (and highly broken) format. name_opt = ca_default # Subject Name options cert_opt = ca_default # Certificate field options # Extension copying option: use with caution. # copy_extensions = copy # Extensions to add to a CRL. Note: Netscape communicator chokes on V2 CRLs # so this is commented out by default to leave a V1 CRL. # crlnumber must also be commented out to leave a V1 CRL. # crl_extensions = crl_ext default_days = 365 # how long to certify for default_crl_days= 30 # how long before next CRL default_md = default # use public key default MD preserve = no # keep passed DN ordering # A few difference way of specifying how similar the request should look # For type CA, the listed attributes must be the same, and the optional # and supplied fields are just that :-) policy = policy_match # For the CA policy [ policy_match ] countryName = match stateOrProvinceName = match organizationName = match organizationalUnitName = optional commonName = supplied emailAddress = optional # For the 'anything' policy # At this point in time, you must list all acceptable 'object' # types. [ policy_anything ] countryName = optional stateOrProvinceName = optional localityName = optional organizationName = optional organizationalUnitName = optional commonName = supplied emailAddress = optional #################################################################### [ req ] default_bits = 1024 default_keyfile = privkey.pem distinguished_name = req_distinguished_name attributes = req_attributes x509_extensions = v3_ca # The extentions to add to the self signed cert # Passwords for private keys if not present they will be prompted for # input_password = secret # output_password = secret # This sets a mask for permitted string types. There are several options. # default: PrintableString, T61String, BMPString. # pkix : PrintableString, BMPString (PKIX recommendation before 2004) # utf8only: only UTF8Strings (PKIX recommendation after 2004). # nombstr : PrintableString, T61String (no BMPStrings or UTF8Strings). # MASK:XXXX a literal mask value. # WARNING: ancient versions of Netscape crash on BMPStrings or UTF8Strings. string_mask = utf8only req_extensions = v3_req # The extensions to add to a certificate request [ req_distinguished_name ] countryName = Country Name (2 letter code) countryName_default = FR countryName_min = 2 countryName_max = 2 stateOrProvinceName = State or Province Name (full name) stateOrProvinceName_default = France localityName = Locality Name (eg, city) localityName_default = Grenoble 0.organizationName = Organization Name (eg, company) 0.organizationName_default = Belledonne Communications # we can do this but it is not needed normally :-) #1.organizationName = Second Organization Name (eg, company) #1.organizationName_default = World Wide Web Pty Ltd organizationalUnitName = Organizational Unit Name (eg, section) organizationalUnitName_default = LAB #organizationalUnitName_default = commonName = Common Name (e.g. server FQDN or YOUR name) commonName_max = 64 commonName_default = See altname for DNS name emailAddress = Email Address emailAddress_max = 64 emailAddress_default = jehan.monnier@belledonne-communications.com # SET-ex3 = SET extension number 3 [ req_attributes ] challengePassword = A challenge password challengePassword_min = 4 challengePassword_max = 20 unstructuredName = An optional company name [ usr_cert ] # These extensions are added when 'ca' signs a request. # This goes against PKIX guidelines but some CAs do it and some software # requires this to avoid interpreting an end user certificate as a CA. basicConstraints=CA:FALSE # Here are some examples of the usage of nsCertType. If it is omitted # the certificate can be used for anything *except* object signing. # This is OK for an SSL server. # nsCertType = server # For an object signing certificate this would be used. # nsCertType = objsign # For normal client use this is typical # nsCertType = client, email # and for everything including object signing: # nsCertType = client, email, objsign # This is typical in keyUsage for a client certificate. # keyUsage = nonRepudiation, digitalSignature, keyEncipherment # This will be displayed in Netscape's comment listbox. nsComment = "OpenSSL Generated Certificate" # PKIX recommendations harmless if included in all certificates. subjectKeyIdentifier=hash authorityKeyIdentifier=keyid,issuer # This stuff is for subjectAltName and issuerAltname. # Import the email address. # subjectAltName=email:copy # An alternative to produce certificates that aren't # deprecated according to PKIX. # subjectAltName=email:move # Copy subject details # issuerAltName=issuer:copy #nsCaRevocationUrl = http://www.domain.dom/ca-crl.pem #nsBaseUrl #nsRevocationUrl #nsRenewalUrl #nsCaPolicyUrl #nsSslServerName # This is required for TSA certificates. # extendedKeyUsage = critical,timeStamping [ v3_req ] # Extensions to add to a certificate request basicConstraints = CA:FALSE keyUsage = nonRepudiation, digitalSignature, keyEncipherment subjectAltName = @alt_names [alt_names] URI = sip:tester@client.example.org [ v3_ca ] # Extensions for a typical CA # PKIX recommendation. subjectKeyIdentifier=hash authorityKeyIdentifier=keyid:always,issuer # This is what PKIX recommends but some broken software chokes on critical # extensions. #basicConstraints = critical,CA:true # So we do this instead. basicConstraints = CA:true # Key usage: this is typical for a CA certificate. However since it will # prevent it being used as an test self-signed certificate it is best # left out by default. # keyUsage = cRLSign, keyCertSign # Some might want this also # nsCertType = sslCA, emailCA # Include email address in subject alt name: another PKIX recommendation # subjectAltName=email:copy # Copy issuer details # issuerAltName=issuer:copy # DER hex encoding of an extension: beware experts only! # obj=DER:02:03 # Where 'obj' is a standard or added object # You can even override a supported extension: # basicConstraints= critical, DER:30:03:01:01:FF [ crl_ext ] # CRL extensions. # Only issuerAltName and authorityKeyIdentifier make any sense in a CRL. # issuerAltName=issuer:copy authorityKeyIdentifier=keyid:always [ proxy_cert_ext ] # These extensions should be added when creating a proxy certificate # This goes against PKIX guidelines but some CAs do it and some software # requires this to avoid interpreting an end user certificate as a CA. basicConstraints=CA:FALSE # Here are some examples of the usage of nsCertType. If it is omitted # the certificate can be used for anything *except* object signing. # This is OK for an SSL server. # nsCertType = server # For an object signing certificate this would be used. # nsCertType = objsign # For normal client use this is typical # nsCertType = client, email # and for everything including object signing: # nsCertType = client, email, objsign # This is typical in keyUsage for a client certificate. # keyUsage = nonRepudiation, digitalSignature, keyEncipherment # This will be displayed in Netscape's comment listbox. nsComment = "OpenSSL Generated Certificate" # PKIX recommendations harmless if included in all certificates. subjectKeyIdentifier=hash authorityKeyIdentifier=keyid,issuer # This stuff is for subjectAltName and issuerAltname. # Import the email address. # subjectAltName=email:copy # An alternative to produce certificates that aren't # deprecated according to PKIX. # subjectAltName=email:move # Copy subject details # issuerAltName=issuer:copy #nsCaRevocationUrl = http://www.domain.dom/ca-crl.pem #nsBaseUrl #nsRevocationUrl #nsRenewalUrl #nsCaPolicyUrl #nsSslServerName # This really needs to be in place for it to be a proxy certificate. proxyCertInfo=critical,language:id-ppl-anyLanguage,pathlen:3,policy:foo #################################################################### [ tsa ] default_tsa = tsa_config1 # the default TSA section [ tsa_config1 ] # These are used by the TSA reply generation only. dir = ./root-ca # TSA root directory serial = $dir/tsaserial # The current serial number (mandatory) crypto_device = builtin # OpenSSL engine to use for signing signer_cert = $dir/tsacert.pem # The TSA signing certificate # (optional) certs = $dir/cacert.pem # Certificate chain to include in reply # (optional) signer_key = $dir/private/tsakey.pem # The TSA private key (optional) default_policy = tsa_policy1 # Policy if request did not specify it # (optional) other_policies = tsa_policy2, tsa_policy3 # acceptable policies (optional) digests = md5, sha1 # Acceptable message digests (mandatory) accuracy = secs:1, millisecs:500, microsecs:100 # (optional) clock_precision_digits = 0 # number of digits after dot. (optional) ordering = yes # Is ordering defined for timestamps? # (optional, default: no) tsa_name = yes # Must the TSA name be included in the reply? # (optional, default: no) ess_cert_id_chain = no # Must the ESS cert id chain be included? # (optional, default: no) belle-sip-5.2.0+dfsg/tester/describe.c000066400000000000000000000021561434613136500175550ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include #include "belle-sip/belle-sip.h" int main(int argc, char *argv[]){ char *str; if (argc!=2){ fprintf(stderr,"Usage:\n%s \n",argv[0]); return -1; } str=belle_sip_object_describe_type_from_name(argv[1]); if (str){ printf("%s\n",str); belle_sip_free(str); }else{ fprintf(stderr,"Unknown type %s\n",argv[1]); return -1; } return 0; } belle-sip-5.2.0+dfsg/tester/get.c000066400000000000000000000062501434613136500165530ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include #include #include "belle-sip/belle-sip.h" static belle_sip_stack_t *stack=NULL; static void process_response(void *data, const belle_http_response_event_t *event){ belle_http_response_t *resp=event->response; const char *body=belle_sip_message_get_body(BELLE_SIP_MESSAGE(resp)); fprintf(stdout,"Got response:\n"); if (body){ fprintf(stdout,"%s",body); } belle_sip_main_loop_quit(belle_sip_stack_get_main_loop(stack)); } static void process_io_error(void *data, const belle_sip_io_error_event_t *event){ fprintf(stderr,"IO error\n"); belle_sip_main_loop_quit(belle_sip_stack_get_main_loop(stack)); } static void process_timeout(void *data, const belle_sip_timeout_event_t *event){ fprintf(stderr,"Timeout\n"); belle_sip_main_loop_quit(belle_sip_stack_get_main_loop(stack)); } static void usage(const char *argv0){ fprintf(stderr,"Usage:\n%s [--ca-path ] [--debug] [--no-tls-check]\n",argv0); exit(-1); } int main(int argc, char *argv[]){ belle_http_provider_t *prov; belle_http_request_t *req; belle_generic_uri_t *uri; belle_http_request_listener_callbacks_t cbs={0}; const char *ca_path = NULL; belle_tls_crypto_config_t *cfg; int i; int check_tls = 1; if (argc<2){ usage(argv[0]); } bctbx_init_logger(1); for (i = 2; i < argc; ++i){ if (strcmp(argv[i], "--ca-path") == 0){ i++; ca_path = argv[i]; }else if (strcmp(argv[i], "--debug")==0){ fprintf(stderr, "Logs are enabled.\n"); bctbx_set_log_level(BCTBX_LOG_DOMAIN,BCTBX_LOG_DEBUG); }else if (strcmp(argv[i], "--no-tls-check")==0){ check_tls = 0; }else{ usage(argv[0]); } } stack=belle_sip_stack_new(NULL); prov=belle_sip_stack_create_http_provider(stack,"::0"); cfg = belle_tls_crypto_config_new(); if (ca_path){ belle_tls_crypto_config_set_root_ca(cfg, ca_path); } if (!check_tls) belle_tls_crypto_config_set_verify_exceptions(cfg, BELLE_TLS_VERIFY_ANY_REASON); belle_http_provider_set_tls_crypto_config(prov, cfg); uri=belle_generic_uri_parse(argv[1]); if (!uri){ fprintf(stderr,"Bad uri %s\n",argv[1]); return -1; } cbs.process_response=process_response; cbs.process_io_error=process_io_error; cbs.process_timeout=process_timeout; req=belle_http_request_create("GET",uri,NULL); belle_http_provider_send_request(prov,req,belle_http_request_listener_create_from_callbacks(&cbs,NULL)); belle_sip_stack_main(stack); belle_sip_object_unref(prov); belle_sip_object_unref(stack); return 0; } belle-sip-5.2.0+dfsg/tester/local_tester_hosts000066400000000000000000000012051434613136500214460ustar00rootroot00000000000000127.0.0.1 sip2.linphone.org sip.example.org sipopen.example.org auth.example.org auth1.example.org auth2.example.org altname.linphone.org sip.wildcard1.linphone.org altname.wildcard2.linphone.org sipv4.example.org conf.example.org subscribe.example.org lime.wildcard1.linphone.org http-proxy.example.org cn.example.org ::1 lime.wildcard1.linphone.org sip2.linphone.org sip.example.org sipopen.example.org auth.example.org auth1.example.org auth2.example.org altname.linphone.org sip.wildcard1.linphone.org altname.wildcard2.linphone.org cn.example.org 188.165.46.90 tunnel.wildcard2.linphone.org 64:ff9b::94.23.19.176 sipv4-nat64.example.org belle-sip-5.2.0+dfsg/tester/object_tester.cc000066400000000000000000000215211434613136500207710ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "belle-sip/belle-sip.h" #include "belle_sip_tester.h" #include "belle-sip/object++.hh" #include "bctoolbox/exception.hh" using namespace bellesip; static void on_object_destroyed(void *userpointer, belle_sip_object_t *obj_being_destroyed){ int *value = static_cast(userpointer); *value = TRUE; } static void basic_test(void){ int object_destroyed = FALSE; Object *obj = new Object(); belle_sip_object_t *c_obj = obj->getCObject(); BC_ASSERT_PTR_NOT_NULL(c_obj); if (c_obj){ belle_sip_object_weak_ref(c_obj, on_object_destroyed, &object_destroyed); } /*we put a weak ref to this object in order to know when it is destroyed*/ obj->ref(); Object *clone = obj->clone(); obj->unref(); BC_ASSERT_FALSE(object_destroyed); obj->unref(); /*this unref will destroy the object*/ BC_ASSERT_TRUE(object_destroyed); object_destroyed = false; c_obj = clone->getCObject(); BC_ASSERT_PTR_NOT_NULL(c_obj); if (c_obj){ belle_sip_object_weak_ref(c_obj, on_object_destroyed, &object_destroyed); } clone->unref(); BC_ASSERT_TRUE(object_destroyed); }; typedef struct _LinphoneEvent LinphoneEvent; typedef enum _LinphoneEventState{ LinphoneEventIdle, LinphoneEventSubscribed }LinphoneEventState; namespace Linphone{ class Event : public HybridObject { public: enum State { Idle, Subscribed }; Event() : mState(Idle){ } void sendSubscribe(const std::string& dest){ mState = Subscribed; } State getState()const{ return mState; } void doSomething(){ throw BctbxException("Unimplemented"); } Event *clone()const{ return new Event(*this); } protected: Event(const Event& orig) : HybridObject(orig){ mState = orig.mState; } //~Event() = default; //we shouls have the destructor private but in order to test the delete exception //we'll make it public. private: State mState; }; }//end of namespace extern "C"{ using namespace Linphone; LinphoneEvent *linphone_event_new(void){ return (new Event())->toC(); } void linphone_event_send_subscribe(LinphoneEvent *obj, const char *dest){ Event::toCpp(obj)->sendSubscribe(dest); } LinphoneEventState linphone_event_get_state(const LinphoneEvent *obj){ return (LinphoneEventState)Event::toCpp(obj)->getState(); /*enum conversion should be performed better*/ } void linphone_event_ref(LinphoneEvent *obj){ Event::toCpp(obj)->ref(); } void linphone_event_unref(LinphoneEvent *obj){ Event::toCpp(obj)->unref(); } }//end of extern "C" static void dual_object(void){ int object_destroyed = 0; /*in this test we use the C Api */ LinphoneEvent *ev = linphone_event_new(); BC_ASSERT_TRUE(linphone_event_get_state(ev) == LinphoneEventIdle); linphone_event_send_subscribe(ev, "sip:1234@sip.linphone.org"); BC_ASSERT_TRUE(linphone_event_get_state(ev) == LinphoneEventSubscribed); belle_sip_object_t *c_obj = Linphone::Event::toCpp(ev)->getCObject(); BC_ASSERT_PTR_NOT_NULL(c_obj); if (c_obj){ belle_sip_object_weak_ref(c_obj, on_object_destroyed, &object_destroyed); } linphone_event_unref(ev); BC_ASSERT_TRUE(object_destroyed); } static void dual_object_clone(void){ int object_destroyed = 0; std::shared_ptr ev = Event::create(); std::shared_ptr cloned_ev = ev->clone()->toSharedPtr(); belle_sip_object_t *c_obj = cloned_ev->getCObject(); BC_ASSERT_PTR_NOT_NULL(c_obj); if (c_obj){ belle_sip_object_weak_ref(c_obj, on_object_destroyed, &object_destroyed); } ev.reset(); BC_ASSERT_FALSE(object_destroyed); // the reset() shall not cause the cloned object to be destroyed of course. cloned_ev.reset(); BC_ASSERT_TRUE(object_destroyed); // Now the object should be destroyed. } static void dual_object_shared_ptr(void){ int object_destroyed = 0; std::shared_ptr ev = Event::create(); belle_sip_object_t *c_obj = ev->getCObject(); BC_ASSERT_PTR_NOT_NULL(c_obj); if (c_obj){ belle_sip_object_weak_ref(c_obj, on_object_destroyed, &object_destroyed); } //Here we mix manual reference from C and shared_ptr. belle_sip_object_ref(c_obj); ev.reset(); BC_ASSERT_FALSE(object_destroyed); // the reset() shall not cause the object to be destroyed. ev = Event::toCpp((LinphoneEvent*)c_obj)->getSharedFromThis(); // we get again a shared_ptr. belle_sip_object_unref(c_obj); BC_ASSERT_FALSE(object_destroyed); // the unref() shall not cause the object to be destroyed, since the shared_ptr has a reference to it. // Get a manual reference again: belle_sip_object_ref(c_obj); // Drop the shared_ptr: ev.reset(); BC_ASSERT_FALSE(object_destroyed); // Get again a shared_ptr, this will test the re-instanciation of the internal weak_ptr (as std::enable_shared_from_this) ev = Event::getSharedFromThis((LinphoneEvent*)c_obj); // Drop the C reference: belle_sip_object_unref(c_obj); BC_ASSERT_FALSE(object_destroyed); ev.reset(); BC_ASSERT_TRUE(object_destroyed); // Now the object should be destroyed. } static void dual_object_shared_from_this(void){ int object_destroyed = 0; std::shared_ptr ev = Event::create(); std::shared_ptr otherptr; belle_sip_object_t *c_obj = ev->getCObject(); BC_ASSERT_PTR_NOT_NULL(c_obj); if (c_obj){ belle_sip_object_weak_ref(c_obj, on_object_destroyed, &object_destroyed); } otherptr = ev->getSharedFromThis(); ev.reset(); BC_ASSERT_FALSE(object_destroyed); otherptr.reset(); BC_ASSERT_TRUE(object_destroyed); } static void dual_object_shared_from_this_from_c(void){ int object_destroyed = 0; LinphoneEvent *event = Event::createCObject(); std::shared_ptr otherptr; BC_ASSERT_PTR_NOT_NULL(event); if (event){ belle_sip_object_weak_ref(event, on_object_destroyed, &object_destroyed); } otherptr = Event::getSharedFromThis(event); otherptr.reset(); // the reset() of the shared_ptr shall not cause the object to be destroyed, because we still have the C ref obtained from createCObject(). BC_ASSERT_FALSE(object_destroyed); belle_sip_object_unref(event); BC_ASSERT_TRUE(object_destroyed); } static void dual_object_in_weak_ptr(void){ int object_destroyed = 0; std::shared_ptr ev = Event::create(); belle_sip_object_t *c_obj = ev->getCObject(); BC_ASSERT_PTR_NOT_NULL(c_obj); if (c_obj){ belle_sip_object_weak_ref(c_obj, on_object_destroyed, &object_destroyed); } //Here we mix manual reference from C and shared_ptr. belle_sip_object_ref(c_obj); ev.reset(); BC_ASSERT_FALSE(object_destroyed); // the reset() shall not cause the object to be destroyed. ev = Event::toCpp((LinphoneEvent*)c_obj)->getSharedFromThis(); // we get again a shared_ptr. std::weak_ptr ev_weak = Event::toCpp((LinphoneEvent*)c_obj)->getSharedFromThis(); /* get another shared_ptr to make the weak one */ BC_ASSERT_TRUE(ev_weak.lock() != nullptr); belle_sip_object_unref(c_obj); BC_ASSERT_FALSE(object_destroyed); // the unref() shall not cause the object to be destroyed, since the shared_ptr has a reference to it. ev.reset(); BC_ASSERT_TRUE(object_destroyed); // Now the object should be destroyed. /* the weak_ptr shall be reset too. */ BC_ASSERT_TRUE(ev_weak.lock() == nullptr); } static void main_loop_cpp_do_later(void){ int test = 0; belle_sip_main_loop_t *ml = belle_sip_main_loop_new(); belle_sip_main_loop_cpp_do_later(ml, [&test](){ test = 44; }); BC_ASSERT_TRUE(test == 0); belle_sip_main_loop_sleep(ml, 10); BC_ASSERT_TRUE(test == 44); belle_sip_object_unref(ml); } static test_t object_tests[] = { TEST_NO_TAG("Basic test", basic_test), TEST_NO_TAG("Hybrid C/C++ object", dual_object), TEST_NO_TAG("Hybrid C/C++ object clone", dual_object_clone), TEST_NO_TAG("Hybrid C/C++ object with shared_ptr", dual_object_shared_ptr), TEST_NO_TAG("Hybrid C/C++ object with sharedFromThis()", dual_object_shared_from_this), TEST_NO_TAG("Hybrid C/C++ object with sharedFromThis() from C object", dual_object_shared_from_this_from_c), TEST_NO_TAG("Hybrid C/C++ object with in a weak_ptr", dual_object_in_weak_ptr), TEST_NO_TAG("Mainloop's do_later in c++", main_loop_cpp_do_later) }; test_suite_t object_test_suite = {"Object", NULL, NULL, belle_sip_tester_before_each, belle_sip_tester_after_each, sizeof(object_tests) / sizeof(object_tests[0]), object_tests}; belle-sip-5.2.0+dfsg/tester/parse.c000066400000000000000000000056171434613136500171140ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include #include #include #include #ifdef _WIN32 #define strcasecmp _stricmp #else #include #endif #include #include "belle-sip/belle-sip.h" #include "belle-sip/belle-sdp.h" #include int main(int argc, char *argv[]){ char *str; struct stat st; int fd; int i; const char *filename=NULL; const char *protocol="sip"; if (argc<2){ fprintf(stderr,"Usage:\n%s [--protocol sip|http|sdp] \n",argv[0]); return -1; } for(i=1;i. */ extern belle_sip_stack_t * stack; extern belle_sip_provider_t *prov; extern const char *test_domain; extern int register_before_all(void); extern int register_after_all(void); extern belle_sip_request_t* register_user(belle_sip_stack_t * stack ,belle_sip_provider_t *prov ,const char *transport ,int use_transaction ,const char* username,const char* outbound) ; extern belle_sip_client_transaction_t* register_user_with_transaction(belle_sip_stack_t * stack ,belle_sip_provider_t *prov ,const char *transport ,const char* username ,const char* outbound_proxy); extern void unregister_user(belle_sip_stack_t * stack ,belle_sip_provider_t *prov ,belle_sip_request_t* initial_request ,int use_transaction); belle-sip-5.2.0+dfsg/tester/resolve.c000066400000000000000000000053541434613136500174570ustar00rootroot00000000000000/* * Copyright (c) 2012-2019 Belledonne Communications SARL. * * This file is part of belle-sip. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include #include "belle-sip/belle-sip.h" static belle_sip_stack_t *stack; static void resolver_callback(void *data, belle_sip_resolver_results_t *results){ int err; const struct addrinfo *ai_it; char name[NI_MAXHOST]; char port[NI_MAXSERV]; const struct addrinfo *ai_list = belle_sip_resolver_results_get_addrinfos(results); for(ai_it=ai_list;ai_it!=NULL;ai_it=ai_it->ai_next){ err=bctbx_getnameinfo(ai_it->ai_addr,ai_list->ai_addrlen,name,sizeof(name),port,sizeof(port),NI_NUMERICSERV|NI_NUMERICHOST); if (err!=0){ fprintf(stderr,"getnameinfo error: %s",gai_strerror(err)); }else{ printf("\t%s %s (ttl:%u)\n",name,port,belle_sip_resolver_results_get_ttl(results)); } } belle_sip_main_loop_quit(belle_sip_stack_get_main_loop(stack)); } int main(int argc, char *argv[]){ int i; const char *domain=NULL; const char *transport="udp"; int use_srv = 1; const char *dns_server = NULL; if (argc<2){ fprintf(stderr,"Usage:\n%s [@dns-server-ip] [transport] [--no-srv] [--debug]\n",argv[0]); return -1; } domain=argv[1]; for (i=2;i. */ #include #include #include "belle-sip/belle-sip.h" #include "belle-sip/object.h" #include "belle-sip/types.h" #include "belle-sip/sipstack.h" #include "belle-sip/http-listener.h" #include "belle-sip/http-provider.h" #include "belle-sip/http-message.h" typedef struct _CardDavRequest { const char *url; const char *method; const char *body; const char *depth; const char *digest_auth_username; const char *digest_auth_password; int request_in_progress; } CardDavRequest; static void process_response_from_post_xml_rpc_request(void *data, const belle_http_response_event_t *event) { CardDavRequest *request = (CardDavRequest *)data; if (event->response) { int code = belle_http_response_get_status_code(event->response); belle_sip_message("HTTP code: %i", code); if (code == 207 || code == 200) { /*const char *body = belle_sip_message_get_body((belle_sip_message_t *)event->response); belle_sip_message("%s", body);*/ request->request_in_progress = 0; } } } static void process_io_error_from_post_xml_rpc_request(void *data, const belle_sip_io_error_event_t *event) { CardDavRequest *request = (CardDavRequest *)data; belle_sip_error("I/O Error during request sending"); request->request_in_progress = 0; } static void process_auth_requested_from_post_xml_rpc_request(void *data, belle_sip_auth_event_t *event) { CardDavRequest *request = (CardDavRequest *)data; if (request->digest_auth_username && request->digest_auth_password) { belle_sip_auth_event_set_username(event, request->digest_auth_username); belle_sip_auth_event_set_passwd(event, request->digest_auth_password); } else { belle_sip_error("Authentication error during request sending"); request->request_in_progress = 0; } } static void prepare_query(CardDavRequest *request) { belle_http_request_listener_callbacks_t cbs = { 0 }; belle_http_request_listener_t *l = NULL; belle_generic_uri_t *uri = NULL; belle_http_request_t *req = NULL; belle_sip_memory_body_handler_t *bh = NULL; belle_sip_stack_t *stack = NULL; belle_http_provider_t *http_provider = NULL; belle_sip_set_log_level(BELLE_SIP_LOG_MESSAGE); uri = belle_generic_uri_parse(request->url); if (!uri) { belle_sip_error("Could not send request, URL %s is invalid", request->url); return; } req = belle_http_request_create(request->method, uri, belle_sip_header_content_type_create("application", "xml; charset=utf-8"), belle_sip_header_create("Depth", request->depth), NULL); if (!req) { belle_sip_object_unref(uri); belle_sip_error("Could not create request"); return; } bh = belle_sip_memory_body_handler_new_copy_from_buffer(request->body, strlen(request->body), NULL, NULL); belle_sip_message_set_body_handler(BELLE_SIP_MESSAGE(req), BELLE_SIP_BODY_HANDLER(bh)); cbs.process_response = process_response_from_post_xml_rpc_request; cbs.process_io_error = process_io_error_from_post_xml_rpc_request; cbs.process_auth_requested = process_auth_requested_from_post_xml_rpc_request; l = belle_http_request_listener_create_from_callbacks(&cbs, request); stack = belle_sip_stack_new(NULL); http_provider = belle_sip_stack_create_http_provider(stack, "0.0.0.0"); request->request_in_progress = 1; belle_http_provider_send_request(http_provider, req, l); while (request->request_in_progress) { belle_sip_stack_sleep(stack, 0); } } int main(int argc, char *argv[]) { CardDavRequest *request = (CardDavRequest *)malloc(sizeof(CardDavRequest)); if (argc >= 5) { request->url = argv[1]; request->method = argv[2]; request->body = argv[3]; request->depth = argv[4]; if (argc >= 7) { request->digest_auth_username = argv[5]; request->digest_auth_password = argv[6]; } } else { belle_sip_error("Usage: carddav_http_query [username password]"); return 0; } /* Examples: "http://192.168.0.230/sabredav/addressbookserver.php/addressbooks/sylvain/default"; request->method = "PROPFIND"; request->body = ""; request->depth = "0"; request->url = "http://192.168.0.230/sabredav/addressbookserver.php/addressbooks/sylvain/default"; request->method = "REPORT"; request->body = ""; request->depth = "1"; request->url = "http://192.168.0.230/sabredav/addressbookserver.php/addressbooks/sylvain/default"; request->method = "REPORT"; request->body = "/sabredav/addressbookserver.php/addressbooks/sylvain/default/me.vcf" request->depth = "1"; */ prepare_query(request); }belle-sip-5.2.0+dfsg/tools/digest-response.py000077500000000000000000000070111434613136500211460ustar00rootroot00000000000000#!/usr/bin/env python # # Copyright (c) 2012-2019 Belledonne Communications SARL. # # This file is part of belle-sip. # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # import hashlib import sys import argparse def int16(x): return int(x, 16) def main(argv=None): parser = argparse.ArgumentParser(description='Compute response parameter for a digest authentication. ex %(prog)s --qop-auth --cnonce f1b8598a --nonce-count 2b --userid toto --realm sip.linphone.org --password secret REGISTER sip:sip.linphone.org QPUC2gAAAABufvQmAABDq5AKuv4AAAAA') parser.add_argument('--userid',help='User identifier') parser.add_argument('--realm',help='realm as defined by the server in 401/407') parser.add_argument('--password',help='clear text password') parser.add_argument('method',help='sip method of the challenged request line') parser.add_argument('uri',help='sip uri of the challenged request uri') parser.add_argument('nonce',help='Nonce param as defined by the server in 401/407') parser.add_argument('--ha1',help='ha1 MD5(username:realm:password)') parser.add_argument('--qop-auth', help='Indicate if auth mode has to reuse nonce (I.E qop=auth',action='store_true') parser.add_argument('--cnonce', help='client nonce') parser.add_argument('--nonce-count',type=int16, help='nonce count in hexa: ex 2b') parser.add_argument('--algorithm', help='choose algorithm from MD5 and SHA256') args = parser.parse_args(argv) if not args.ha1 : if not args.algorithm: #HA1=MD5(username:realm:password) ha1 = hashlib.md5() else: #HA1=SHA256(username:realm:password) ha1 = hashlib.sha256() ha1.update((args.userid+":"+args.realm+":"+args.password).encode()) ha1_value = ha1.hexdigest() else: ha1_value = args.ha1 if not args.algorithm: #HA2=MD5(method:digestURI) ha2 = hashlib.md5() else: #HA2=SHA256(method:digestURI) ha2 = hashlib.sha256() ha2.update((args.method+":"+args.uri).encode()) print ("ha1 = "+ha1_value); print ("ha2 = "+ha2.hexdigest()); if args.qop_auth : if not args.cnonce and not args.nonce_count : print ("--qop-auth requires both --cnonce and --nonce-count") sys.exit(-1) if not args.algorithm: #response=MD5(HA1:nonce:nonceCount:clientNonce:qop:HA2) response = hashlib.md5() else: #response=SHA256(HA1:nonce:nonceCount:clientNonce:qop:HA2) response = hashlib.sha256() response.update( (ha1_value +":"+args.nonce +":" + '{:08x}'.format(args.nonce_count) +":" + args.cnonce +":auth" +":" + ha2.hexdigest()).encode()) print ("response = "+response.hexdigest()); else: if not args.algorithm: #response=MD5(HA1:nonce:HA2) response = hashlib.md5() else: #response=SHA256(HA1:nonce:HA2) response = hashlib.sha256() response.update((ha1_value+":"+args.nonce+":"+ha2.hexdigest()).encode()) print ("response = "+response.hexdigest()); if __name__ == "__main__": sys.exit(main())